基于西门子PLC的Socket通信深度剖析
对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌;而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式。西门子的200Smart PLC,可以利用它来跟大家聊聊Socket通信的那些事儿。
相比较而言,西门子PLC对Socket通信的支持性是很不错的。如果你在使用西门子软件或者逛西门子论坛时,发现一个词叫做Open User Communication或开放式通信,没错,那其实就是我们说的Socket通信方式。关于这一点,我们可以从以下两张图中看出,分别为S7-200Smart编程软件Micro/Win Smart V2.5及博途TIA V15.1编程软件中关于通信库的部分截图:
我们可以看到无论是西门子的中高端PLC还是低端PLC,都是支持开放式TCP/UDP通信的,既然都支持,我们来看下如何实现。
众所周知,对于Socket通信来说,是可以支持TCP、UDP等多种通信方式,但是今天在这里,我们主要针对TCP这种通信方式。除此以外,大家都知道,Socket会存在服务器和客户端的说法,也就意味着,同样是使用Socket通信,我们仍然需要确定到底PLC是作为服务器还是作为客户端,因为不管对于PLC编程或者上位机开发来说,这两种方式都是完全不同的,下面做具体介绍。
一、PLC作为TCP服务器的实战应用
(1)PLC编程
1.1:创建一个TCPServer的子程序,拖拽一个TCP_CONNECT的库指令,对于该指令的每个引脚对应的含义,大家可以按下F1直接获取在线帮助,程序段1编写如下图所示:
1.2:拖拽一个TCP_SEND的库指令,对于该指令的每个引脚填写,ConnID为1,Req为触发条件,必须为沿信号,这里为了方便,直接使用1秒的脉冲信号,DataLen及DataPtr为发送的起始字节指针及发送的字节长度,程序段2如下图所示:
1.3:拖拽一个TCP_RECV的库指令,对于该指令的每个引脚填写,ConnID统一为1,MaxLen为接收的最大程度,DataPtr表示接收字节存放的起始位置,程序段3如下图所示:
1.4:最后需要编译,编译会提示需要给库分配地址,点击文件下的存储器,给该库分配地址即可,然后在MAIN主程序中调用TCPServer这个子程序,并下载到PLC中,PLC编程部分结束。
(2)TCP调试助手测试
如果PLC程序编写没问题,打开一个网络调试助手,输入对应的IP地址及端口号,即可连接上服务器。
连接服务器后,PLC端会自动每隔一秒发送200个字节数据过来,这200个字节即对应VB100-VB299的值。
(3)上位机客户端软件开发
通过与编程软件的状态图表进行对照,可以实时读取PLC数据,并随时设置相应的数值。
二、PLC作为TCP客户端的实战应用
(1)PLC编程
1.1:创建一个TCPClient的子程序,拖拽一个TCP_CONNECT的库指令,与服务器程序不同的是,这里需要把Active设置为ON,同时IP地址和端口号需要根据上位机实际情况填写, 程序段1编写如下图所示:
1.2:拖拽一个TCP_SEND的库指令,对于该指令的每个引脚填写,ConnID为2,Req为触发条件,必须为沿信号,这里为了方便,直接使用1秒的脉冲信号,DataLen及DataPtr为发送的起始字节指针及发送的字节长度,程序段2如下图所示:
1.3:拖拽一个TCP_RECV的库指令,对于该指令的每个引脚填写,ConnID统一为2,MaxLen为接收的最大程度,DataPtr表示接收字节存放的起始位置,程序段3如下图所示:
1.4:最后需要编译,如果已经编写过服务器程序,这里就不需要分配地址了,直接在MAIN主程序中调用TCPClient这个子程序,并下载到PLC中,PLC编程部分结束。
(2)TCP调试助手测试
如果PLC程序编写没问题,打开一个网络调试助手,设置模式为TCP Server,输入端口号为2000,即可开启服务器。
服务器开启后,PLC端会自动连接服务器,并且每隔一秒发送100个字节数据过来,这100个字节即对应VB500-VB599的值。
(3)上位机服务器软件开发
通过与状态图表进行对比,验证可以正常读取和写入PLC数据。
三、整体总结
后续通过进一步测试,验证PLC可以同时作为服务器和客户端与上位机进行通信。本次主要针对西门子PLC的开放式TCP通信作了较为详细地阐述,由于篇幅有限,无法将上位机部分的具体编程代码进行展示分析。
基于西门子PLC的Socket通信深度剖析(内含福利)
对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌;而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式。西门子的200Smart PLC,可以利用它来跟大家聊聊Socket通信的那些事儿。
相比较而言,西门子PLC对Socket通信的支持性是很不错的。如果你在使用西门子软件或者逛西门子论坛时,发现一个词叫做Open User Communication或开放式通信,没错,那其实就是我们说的Socket通信方式。关于这一点,我们可以从以下两张图中看出,分别为S7-200Smart编程软件Micro/Win Smart V2.5及博途TIA V15.1编程软件中关于通信库的部分截图:
我们可以看到无论是西门子的中高端PLC还是低端PLC,都是支持开放式TCP/UDP通信的,既然都支持,我们来看下如何实现。
众所周知,对于Socket通信来说,是可以支持TCP、UDP等多种通信方式,但是今天在这里,我们主要针对TCP这种通信方式。除此以外,大家都知道,Socket会存在服务器和客户端的说法,也就意味着,同样是使用Socket通信,我们仍然需要确定到底PLC是作为服务器还是作为客户端,因为不管对于PLC编程或者上位机开发来说,这两种方式都是完全不同的,下面做具体介绍。
一、PLC作为TCP服务器的实战应用
(1)PLC编程
1.1:创建一个TCPServer的子程序,拖拽一个TCP_CONNECT的库指令,对于该指令的每个引脚对应的含义,大家可以按下F1直接获取在线帮助,程序段1编写如下图所示:
1.2:拖拽一个TCP_SEND的库指令,对于该指令的每个引脚填写,ConnID为1,Req为触发条件,必须为沿信号,这里为了方便,直接使用1秒的脉冲信号,DataLen及DataPtr为发送的起始字节指针及发送的字节长度,程序段2如下图所示:
1.3:拖拽一个TCP_RECV的库指令,对于该指令的每个引脚填写,ConnID统一为1,MaxLen为接收的最大程度,DataPtr表示接收字节存放的起始位置,程序段3如下图所示:
1.4:最后需要编译,编译会提示需要给库分配地址,点击文件下的存储器,给该库分配地址即可,然后在MAIN主程序中调用TCPServer这个子程序,并下载到PLC中,PLC编程部分结束。
(2)TCP调试助手测试
如果PLC程序编写没问题,打开一个网络调试助手,输入对应的IP地址及端口号,即可连接上服务器。
连接服务器后,PLC端会自动每隔一秒发送200个字节数据过来,这200个字节即对应VB100-VB299的值。
(3)上位机客户端软件开发
通过与编程软件的状态图表进行对照,可以实时读取PLC数据,并随时设置相应的数值。
二、PLC作为TCP客户端的实战应用
(1)PLC编程
1.1:创建一个TCPClient的子程序,拖拽一个TCP_CONNECT的库指令,与服务器程序不同的是,这里需要把Active设置为ON,同时IP地址和端口号需要根据上位机实际情况填写, 程序段1编写如下图所示:
1.2:拖拽一个TCP_SEND的库指令,对于该指令的每个引脚填写,ConnID为2,Req为触发条件,必须为沿信号,这里为了方便,直接使用1秒的脉冲信号,DataLen及DataPtr为发送的起始字节指针及发送的字节长度,程序段2如下图所示:
1.3:拖拽一个TCP_RECV的库指令,对于该指令的每个引脚填写,ConnID统一为2,MaxLen为接收的最大程度,DataPtr表示接收字节存放的起始位置,程序段3如下图所示:
1.4:最后需要编译,如果已经编写过服务器程序,这里就不需要分配地址了,直接在MAIN主程序中调用TCPClient这个子程序,并下载到PLC中,PLC编程部分结束。
(2)TCP调试助手测试
如果PLC程序编写没问题,打开一个网络调试助手,设置模式为TCP Server,输入端口号为2000,即可开启服务器。
服务器开启后,PLC端会自动连接服务器,并且每隔一秒发送100个字节数据过来,这100个字节即对应VB500-VB599的值。
(3)上位机服务器软件开发
通过与状态图表进行对比,验证可以正常读取和写入PLC数据。
三、整体总结
后续通过进一步测试,验证PLC可以同时作为服务器和客户端与上位机进行通信。本次主要针对西门子PLC的开放式TCP通信作了较为详细地阐述,由于篇幅有限,无法将上位机部分的具体编程代码进行展示分析。
之前小编给大家分享了三菱相关的全套资料,后台就收到很多朋友咨询有没有西门子的资料。小编把收集整整一年的干货,一次送出来,赶紧动手收藏好!先来看看具有都包含哪些?
领取方式:关注并私信【西门子】
西门子1500资料
西门子1200资料
西门子200smart资料
(以上仅为部分资料展示)
如何获取更多 电气热门资料?
操作指引如下!
相关问答
新时达机器人怎么与外部PLC通讯?
最简单的是数字IO,复杂的有总线,总线协议比较多,最后使用比较少的Socket和串口最简单的是数字IO,复杂的有总线,总线协议比较多,最后使用比较少的Socket和串口
VB.net与三菱PLC通讯使用TCP/IP协议,怎么读写地址位-ZOL问答
是的,是socket套接字编程。不知道你用什么协议,矩形PLC是用Modbus-tcp协议,附件是矩形PLC基于Modbus-TCP的编程参考文档,可以看看。三菱哪个系列的?是串口还...
如何实现S7-300通过TCP\IP与上位机直接通讯?
实现S7-300通过TCP\IP与上位机直接通讯的步骤:1、先在netpro里面建立一个connection,组态一个plc与unspecificed(就是你的pc机)的连接,填上plc和plc的i...
s7-300怎么和上位机通讯?
实现S7-300通过TCP\IP与上位机直接通讯的步骤:1、先在netpro里面建立一个connection,组态一个plc与unspecificed(就是你的pc机)的连接,填上plc和plc的i...
abb机器人网口IP配置?
14、设置station名字,这个名字要和PLC端对机器人的station设置一样15、添加signal,device选择profinetInternaldevice13、配置界面下,进入Ind...
三菱plc怎么下载驱动?
找到你的安装路径,如:GPPW/Easysocket/USBDrivers/,就能找到你要装的驱动了。1、三菱三菱集团(MitsubishiGroup)是由原先日本三菱财阀解体后的公司共同组成....
欧姆龙PLCUSB需要安装驱动吗?-ZOL问答
此时在你GXDeveloper的安装目录下的Easysocket目录下的USBDrivers下有驱动文件,定位该目录继续安装即可。安装完成后,打开GXDeveloper软件,并新建与你的PLC机...
好基友们 有谁知道在线等:中山华为光通讯模块,光通讯模块...
[回答]你的是pcDuino那个版本?V2V3都有wifi模块;没有wifi也可以用网线,然后网络连接上,在电脑上下载个socket通讯软件建立一个server或cilen,然后对应的在...
对于不会编程的人来说,自学Pythone难吗?
Python是一门比较适合零基础人员学习的编程语言,只要你想学,愿意学,并选择一个好的学习途径,就一定能学会,我发你一份比较全面的Python课程大纲,对你学习会...阶...
怎么安装三菱plc黑色电缆线驱动带的磁盘-ZOL问答
此时在你GXDeveloper的安装目录下的Easysocket目录下的USBDrivers下有驱动文件,定位该目录继续安装即可。安装完成后,打开GXDeveloper软件,并新建与你的PLC机...