C# / VB / LabView /VC 上位机使用S7-TCP协议与西门子PLC进行网口通信的教程
2018-01-29 13:59
555 查看
现在越来越多的项目开始使用上位机了,在上位机实现数据存储、曲线绘制时,使用高级语言自行开发程序,比诸如组态王、inTouch等更加自由,更加强大。在进行上位机软件开发时,第一步就是要跟PLC取得通信,能够读写PLC内各数据区的变量值。
通常有两种办法来读写PLC内的变量:
1. OPC
OPC可以同时兼容不同品牌的PLC,但OPC的缺点也是显而易见的:由于使用了COM技术,开发难度加大,通信速率低;另外由于OPC架构的设计,上位机无法实现整块区域的读写,通信效率低;另外就是在部署上位机软件时,需要事先安装并配置OPC服务器,这是一个非常繁琐的工作,且项目投入运行后,如果OPC服务器的配置出现问题,维护起来也很麻烦。最重要的一点是,OPC服务器需要一笔授权的费用,增加了项目成本。
2. TCP/IP
既然PLC可以支持网口通信,那有没有办法不用OPC直接和PLC通信呢?答案当然是可以的。用TCP/IP协议通信,不需要在工控机部署任何第三方软件,仅需要一根网线即可通信,不论是从开发维护难度、通信速率和效率等角度看,都比OPC方式有了一个质的提升。
那么对于软件开发人员该怎么做呢?首先的工作就是要弄清楚PLC的通信协议。西门子的PLC使用的是S7-TCP协议,这个协议是西门子公司基于ISO/TCP修改而来的通信协议栈,且不对外公开。程序猿想要搞清楚这个协议,需要进行抓包,然后进行破解,这是一个难度很高的任务。
对于基础不太好的同学,不建议自己进行抓包和破解,可以通过调用现有的通信库实现功能。这里给大家推荐一个很好的库:ButterflyS7。
这是一款标准DLL库,支持C# 、 VB 、VC、 LabView、Delphi、.... 只要开发平台有调用DLL功能的,都可以使用。通信库封装了西门子的S7-TCP协议,支持全系列的西门子PLC,链接:点击打开链接
工控的小伙伴们赶紧get起来吧,享受通信成功那一刻的快感!
通常有两种办法来读写PLC内的变量:
1. OPC
OPC可以同时兼容不同品牌的PLC,但OPC的缺点也是显而易见的:由于使用了COM技术,开发难度加大,通信速率低;另外由于OPC架构的设计,上位机无法实现整块区域的读写,通信效率低;另外就是在部署上位机软件时,需要事先安装并配置OPC服务器,这是一个非常繁琐的工作,且项目投入运行后,如果OPC服务器的配置出现问题,维护起来也很麻烦。最重要的一点是,OPC服务器需要一笔授权的费用,增加了项目成本。
2. TCP/IP
既然PLC可以支持网口通信,那有没有办法不用OPC直接和PLC通信呢?答案当然是可以的。用TCP/IP协议通信,不需要在工控机部署任何第三方软件,仅需要一根网线即可通信,不论是从开发维护难度、通信速率和效率等角度看,都比OPC方式有了一个质的提升。
那么对于软件开发人员该怎么做呢?首先的工作就是要弄清楚PLC的通信协议。西门子的PLC使用的是S7-TCP协议,这个协议是西门子公司基于ISO/TCP修改而来的通信协议栈,且不对外公开。程序猿想要搞清楚这个协议,需要进行抓包,然后进行破解,这是一个难度很高的任务。
对于基础不太好的同学,不建议自己进行抓包和破解,可以通过调用现有的通信库实现功能。这里给大家推荐一个很好的库:ButterflyS7。
这是一款标准DLL库,支持C# 、 VB 、VC、 LabView、Delphi、.... 只要开发平台有调用DLL功能的,都可以使用。通信库封装了西门子的S7-TCP协议,支持全系列的西门子PLC,链接:点击打开链接
工控的小伙伴们赶紧get起来吧,享受通信成功那一刻的快感!
相关文章推荐
- C# / VB / LabView /VC 上位机使用OPC方式与PLC进行通信的教程
- C#中使用命名管道进行进程通信的实例
- 如何:使用匿名管道在本地进程之间进行通信(C#)
- C#中使用命名管道进行进程通信的实例
- Asp.net C# 使用Newtonsoft.Json 进行通信
- C#中使用SendMessage进行进程通信的实例
- C#中使用SendMessage进行进程通信,可以发送字符串。
- C#使用命名管道通过网络在进程之间进行通信
- 使用ActiveMQ进行C++与C#的通信5 - 实现C++和C#的通信
- VC++使用socket进行TCP、UDP通信实例总结
- C#基于TCP协议的服务器端和客户端通信编程的基础教程
- 使用ActiveMQ进行C++与C#的通信6 - 相关资源(终)
- [C#源代码]使用SCPI指令对通信端口(RS232/USB/GPIB/LAN)进行仪器编程
- DirectUI Skin++界面解决方案 界面设计 界面开发 软件UI界面开发 软件UI界面美术设计 界面编程 界面教程 Skin VC VB C# .net pb delphi c builder GUI
- C#使用ListJson通过php和平台进行通信
- 使用ActiveMQ进行C++与C#的通信1 - ActiveMQ入门
- C#使用匿名管道在本地进程之间进行通信
- 使用ActiveMQ进行C++与C#的通信2 - 使用C#连接ActiveMQ
- C#中使用SendMessage进行进程通信的实例
- .NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧