欧姆龙CP1H-E和松下FP0H实现Modbus TCP以太网通信
一、必备软件和硬件:
1、欧姆龙CX-Programmer编程软件
2、松下FPWIN GR7编程软件
3、Modbus Poll调试软件
4、Modbus Slave调试软件
5、以太网调试助手
6、欧姆龙CP1H-E系列PLC
7、松下FP0H系列PLC
8、无线路由器
9、网线
二、通信实现目的:
1、欧姆龙CP1H-E读松下FP0H共计4路保持寄存器DT0~DT3,读取的4路保持寄存器数据保存至D0~D3中,使用Modbus之03功能码实现;
2、欧姆龙CP1H-E写松下FP0H共计4路保持寄存器DT4~DT7,写出的4路保持寄存器数据暂存至D4~D7中,使用Modbus之16功能码实现。
三、通信连接说明:
1、欧姆龙CP1H-E本体自带以太网口通过网线连接至无线路由器LAN接口;
2、松下FP0H本体自带以太网口通过网线连接至无线路由器LAN接口。
四、Modbus TCP服务器通信参数:
1、Modbus TCP服务器:松下FP0H
2、Modbus TCP服务器IP地址:192.168.1.164
3、Modbus TPC服务器子网掩码:255.255.255.0
4、Modbus TCP服务器默认网关:192.168.1.1
5、Modbus TCP服务器端口号:502
五、Modbus TCP客户端通信参数:
1、Modbus TCP客户端:欧姆龙CP1H-E
2、Modbus TCP客户端IP地址:192.168.1.163
3、Modbus TPC客户端子网掩码:255.255.255.0
4、Modbus TCP客户端默认网关:192.168.1.1
5、Modbus TCP客户端端口号:502
六、松下FP0H通信参数设置:
1、松下FP0H通信参数设置如下所示:
2、松下FP0H设备编号和Modbus寄存器编号、地址对应表如下所示:
七、松下FP0H系列PLC逻辑编程:
1、初始化时,分别给保持寄存器DT0~DT3赋值0~3,如下所示:
2、初始化时,分别对保持寄存器DT4~DT7进行清零,如下所示:
3、每1分钟,对DT0~DT3做加1操作,方便客户端读取数据观察变化,如下所示:
4、判断DT0~DT3中的数据是否大于6000,如果大于6000,进行清零操作,如下所示:
八、使用以太网调试助手测试松下FP0H之Modbus TCP服务器程序:
1、Modbus之03功能码测试,读取欧姆龙CP1H-E保持寄存器D0~D3的值:
以太网调试助手发送:44 44 00 00 00 06 01 01 00 00 00 04
欧姆龙CP1H-E返回:44 44 00 00 00 0B 01 03 08 00 06 00 07 00 08 00 09
则此时松下FP0H保持寄存器DT0、DT1、DT2、DT3的数据依次为16#0006、16#0007、16#0008、16#0009,以太网调试助手测试截图如下所示:
2、测试总结:
以上Modbus之03功能码测试通过,亦表明松下FP0H之Modbus TCP服务器程序正确无误。此时可以断开以太网调试助手和松下FP0H的通信连接。
九、欧姆龙CP1H-E通信参数设置:
欧姆龙CP1H-E通信参数设置如下图所示:
十、欧姆龙CP1H-E实现Modbus TCP客户端相关指令:
1、CP1H_Modbus_TCP_Client_Link_S1功能块:
功能块参数说明如下所示:
(1)、EN:功能块激活
(2)、Connect:建立连接开关,为1建立连接、为0断开连接;
(3)、IPaddr1:远程IP地址第1段;
(4)、IPaddr2:远程IP地址第2段;
(5)、IPaddr3:远程IP地址第3段;
(6)、IPaddr4:远程IP地址第4段;
(7)、RemPort:远程端口号;
(8)、LocPort:本地端口号;
(9)、ENO:为1,已经连接上服务器;
(10)、LinkCount:以太网链路断开计数器;
(11)、ErrorCode:错误代码;
(12)、ErroMark:错误标志位;
(13)、LinkMark:为1,以太网链路断开;
(14)、WaitMark:为1,等待服务器同步确认。
2、CP1H_Modbus_TCP_Client_Fn03_S1功能块:
功能块参数说明如下所示:
(1)、CommandWSwitch:命令开关,为1开始执行功能块、为0停止执行功能块;
(2)、UnitIdentifier:单元ID,范围0~255;
(3)、RegisterAddres:预读寄存器地址,范围为0~65535;
(4)、RegisterNumber:预读寄存器数量,范围为1~125;
(5)、RegisterDataDW:预读操作数据暂存,指定DM区保存;
(6)、BusyMark:忙线标志位,为1表明功能块正在执行、为0表明功能块执行完成;
(7)、MTCPMark:Modbus通信错误标志位;
(8)、FinsMark:Fins通信错误标志位;
(9)、TimeMark:通信超时标志位;
(10)、ErrorCode:错误代码;
(11)、RecvCount:接收帧计数;
(12)、TimeoutSetting:超时时间设置,单位为0.1秒。
3、CP1H_Modbus_TCP_Client_Fn10_S1功能块:
功能块参数说明如下所示:
(1)、CommandWSwitch:命令开关,为1开始执行功能块、为0停止执行功能块;
(2)、UnitIdentifier:单元ID,范围0~255;
(3)、RegisterAddres:预写寄存器地址,范围为0~65535;
(4)、RegisterNumber:预写寄存器数量,范围为1~123;
(5)、RegisterDataDW:预写操作数据暂存,指定DM区保存;
(6)、BusyMark:忙线标志位,为1表明功能块正在执行、为0表明功能块执行完成;
(7)、MTCPMark:Modbus通信错误标志位;
(8)、FinsMark:Fins通信错误标志位;
(9)、TimeMark:通信超时标志位;
(10)、ErrorCode:错误代码;
(11)、RecvCount:接收帧计数;
(12)、TimeoutSetting:超时时间设置,单位为0.1秒。
以上功能块使用欧姆龙CP1H-E之Socket功能编写而成,欧姆龙CP1H-E支持3个Socket。
十一、欧姆龙CP1H-E实现Modbus TCP客户端编程
1、建立连接:
W0.00为1时,建立与Modbus TCP服务器的链接、W0.00为0时,断开与Modbus TCP服务器的链接,这里的Modbus TCP服务器指的就是松下FP0H;
IPaddr1~IPaddr4分别赋值192、168、1、164,则是指定了服务器的IP地址;
RemPort指定的是服务器端口号,这里为502;
LocPort指定的是客户端端口号,这里为0;
连接建立成功后,W0.01会接通,则此时可以使用W0.01去驱动其他Modbus功能码功能块。
2、读取松下4路保持寄存器程序命令段:
连接建立成功后,W0.01接通,此时可以用来驱动03功能码功能块;
W3.00为1时,欧姆龙CP1H-E作为Modbus TCP客户端即会发送读取多路保持寄存器之命令;
UnitIdentifier参数设置为1,表明单元ID设置为1,此参数亦可根据服务器进行调整;
RegisterAddres参数设置为0,表明从服务器松下FP0H的DT0寄存器开始读取;
RegisterNumber参数设置为4,表明读取服务器松下FP0H共计4路保持寄存器;
RegisterDataDW参数设置为0,表明读取到的4路保持寄存器保存到D0开始的寄存器中;
TimeoutSetting参数设置为100,表明超时时间为10秒。
W3.02为忙线标志位,该功能块正在执行中W3.02为1,功能块执行完成后W3.02为0,利用W3.02下降沿复位功能块命令开关W3.00,完成一次读取操作。
3、写出松下4路保持寄存器程序命令段:
连接建立成功后,W0.01接通,此时可以用来驱动10功能码功能块;
W8.00为1时,欧姆龙CP1H-E作为Modbus TCP客户端即会发送写出多路保持寄存器之命令;
UnitIdentifier参数设置为1,表明单元ID设置为1,此参数亦可根据服务器进行调整;
RegisterAddres参数设置为4,表明从服务器松下FP0H的DT4寄存器开始写出;
RegisterNumber参数设置为4,表明写取服务器松下FP0H共计4路保持寄存器;
RegisterDataDW参数设置为4,表明写出到的4路保持寄存器数据保存到D4开始的寄存器中;
TimeoutSetting参数设置为100,表明超时时间为10秒。
W8.02为忙线标志位,该功能块正在执行中W8.02为1,功能块执行完成后W8.02为0,利用W8.02下降沿复位功能块命令开关W8.00,完成一次写出操作。
欧姆龙CP1H-E作为Modbus TCP客户端程序总貌如下所示:
十二、欧姆龙CP1H-E之Modbus TCP客户端程序的监视
欧姆龙CP1H-E和以太网调试助手建立连接成功后,以太网调试助手即可观察到来自欧姆龙CP1H-E发出的Modbus TCP命令,如下所示:
十三、欧姆龙CP1H和松下FP0H实现Modbus TCP以太网通信测试:
1、使用网线将欧姆龙CP1H-E连接至无线路由器LAN口、使用网线将松下FP0H连接至无线路由器LAN口,完成硬件连接;
2、下载松下FP0H之Modbus TCP服务器通信程序;
3、下载欧姆龙CP1H-E之Modbus TCP客户端通信程序;
4、监控松下FP0H之Modbus TCP服务器是否初始化完成;
5、监控欧姆龙CP1H-E程序,并置位W0.00,建立与松下FP0H的Modbus连接。
6、按照既定要求观察欧姆龙CP1H-E和松下FP0H保持寄存器D0~D7、DT0~DT7,完成Modbus TCP以太网通信。
十四、总结:
至此,欧姆龙CP1H-E(Modbus TCP客户端)和松下FP0H(Modbus TCP服务器)完美实现了Modbus TCP以太网通信。