学习
实践
活动
工具
TVP
写文章

欧姆龙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以太网通信。

分享、在看与点赞,至少我要拥有一个吧

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201129A0096Z00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券