烟雨003■基于西门子PLC的Socket通信深度剖析( 二 )



烟雨003■基于西门子PLC的Socket通信深度剖析
本文插图

二、PLC作为TCP客户端的实战应用
(1)PLC编程
1.1:创建一个TCPClient的子程序 , 拖拽一个TCP_CONNECT的库指令 , 与服务器程序不同的是 , 这里需要把Active设置为ON , 同时IP地址和端口号需要根据上位机实际情况填写 , 程序段1编写如下图所示:

烟雨003■基于西门子PLC的Socket通信深度剖析
本文插图

1.2:拖拽一个TCP_SEND的库指令 , 对于该指令的每个引脚填写 , ConnID为2 , Req为触发条件 , 必须为沿信号 , 这里为了方便 , 直接使用1秒的脉冲信号 , DataLen及DataPtr为发送的起始字节指针及发送的字节长度 , 程序段2如下图所示:

烟雨003■基于西门子PLC的Socket通信深度剖析
本文插图

1.3:拖拽一个TCP_RECV的库指令 , 对于该指令的每个引脚填写 , ConnID统一为2 , MaxLen为接收的最大程度 , DataPtr表示接收字节存放的起始位置 , 程序段3如下图所示:

烟雨003■基于西门子PLC的Socket通信深度剖析
本文插图

1.4:最后需要编译 , 如果已经编写过服务器程序 , 这里就不需要分配地址了 , 直接在MAIN主程序中调用TCPClient这个子程序 , 并下载到PLC中 , PLC编程部分结束 。
(2)TCP调试助手测试
如果PLC程序编写没问题 , 打开一个网络调试助手 , 设置模式为TCP Server , 输入端口号为2000 , 即可开启服务器 。
服务器开启后 , PLC端会自动连接服务器 , 并且每隔一秒发送100个字节数据过来 , 这100个字节即对应VB500-VB599的值 。

烟雨003■基于西门子PLC的Socket通信深度剖析
本文插图

(3)上位机服务器软件开发

烟雨003■基于西门子PLC的Socket通信深度剖析
本文插图

通过与状态图表进行对比 , 验证可以正常读取和写入PLC数据 。

烟雨003■基于西门子PLC的Socket通信深度剖析
本文插图

三、整体总结
后续通过进一步测试 , 验证PLC可以同时作为服务器和客户端与上位机进行通信 。 本次主要针对西门子PLC的开放式TCP通信作了较为详细地阐述 , 由于篇幅有限 , 无法将上位机部分的具体编程代码进行展示分析 。


推荐阅读