烟雨003■基于西门子PLC的Socket通信深度剖析( 二 )
本文插图
二、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通信作了较为详细地阐述 , 由于篇幅有限 , 无法将上位机部分的具体编程代码进行展示分析 。
推荐阅读
- ■基于ATT&CK框架的Kubernetes攻击威胁矩阵
- 「」基于Open WebRTC Toolkit(OWT)的8K全景视频低延时直播系统
- 『GK_茵』基于移动端平台的证件识别技术
- 【香港新天域互联】微软基于Chromium的Edge浏览器稳定版81推送
- cnBetaTB:饭制Windows 10任务栏:基于Project Acrylic概念打造
- 机型:华为emui10.1/magic ui3.1开启内侧,基于安卓10.0,有你的机型吗?
- [蓝牙]基于BlueCore2External芯片的蓝牙主机模型方案
- ■第四范式完成2.3亿美元C+轮融资,助力构建基于AI的服务生态体系
- 「全身」基于Vive Trcaker,Manus推全身VR追踪方案
- 「绷带」Grapheal研发基于石墨烯的绷带 设计用于远程监测伤口