一、需求描述
1、设备作为服务端时,需要给出对应的测试方法,即要求 PLC 作为客户端,设备作为服务端,因此要求编写 PLC 的ModBusTCP客户端
2、先了解一下设备作为服务端的ModBusTCP网络触发业务逻辑
(1)设备需要设置网络触发,并设置触发指令(假如为TR),以及ModBusTCP服务端设置如图
(2)PLC通过如图信息连接设备
(3)PLC发送指令 TR 到设备
(4)设备收到 TR 指令,与网络触发设置的TR指令比对
(5)指令一致则进行触发
(6)触发的结果写到设备端的传输地址上,需要PLC主动去访问和获取
二、官方文档与解释
1、通过上位机软件查看官方文档
如下,这里涉及到主站和从站的概念,与服务端和客户端的描述有些差异,解释如下:这个用英语比较好解释,主站MASTER还有“主管”的意思,从站SLAVE还有“奴隶”的意思。从通讯过程上来说,主站发出通讯命令,从站应答。
因此,PLC为主站,设备为从站。这个概念不要和“服务端、客户端”的概念混淆,不是一回事,只是为了利于编程的理解,在这里需要明确一下。
2、理解主站和从站的概念后,我们应该找到PLC作为主站功能的实现文档,如下图
三、根据官方文档进行编程
1、连接设置
2、协议设置
操作路径:[工具] [通信协议支持功能] [文件] [新建] “协议设置”画面 [编辑] [协议添加]
本次实例使用2个协议: 03:RD Holding Registers + WR Multi Registers
四、编程
1、上述代码解释与实验
(1)改变D403的长度为20,接收到最大的长度为20,程序设置为:
(2)改变D402的赋值为10,即设备的取值地址为10到20的区域(11个数据),程序设置为:
(3)连接编号的对应关系
(5)协议号的对应关系
(6)设备站号为1,程序设置为:
(7)基于上述操作,我们实现了PLC对设备的读操作
(8)增加WR Multi Registers协议,并下发到PLC中
(9)代码