悠扬随风 发表于 2024-8-8 13:36:41

Codesys—标准库ModbusTCP Slave(服务器)的通讯示例

简述:此文中,PLC/控制器作为Modbus TCP从站(服务器),PC端通过Modbus Poll软件创建Modbus TCP主站(客户端)毗连到PLC/控制器,双方可相互读写定义好的保持寄存区和离散点位区;
主要描述了以下几个要点:
1.设备的添加。
2.通讯参数的设置。
3.IO映射。
4.Modbus Poll 创建客户端。
5.简单通讯测试。
1.设备的添加。

ModbusTCP从站设备的添加如下图所示,起首添加【Ethernet】,然后添加设备【ModbusTCP_Slave_Device】。
https://i-blog.csdnimg.cn/blog_migrate/c481d8c4b46e5e21d8d608a33bcca8e1.png
https://i-blog.csdnimg.cn/blog_migrate/cdc69bda18d03ea511a3bbb3d8d0be31.png
https://i-blog.csdnimg.cn/blog_migrate/1cb2e7c56641cbc1e243b94565f83017.png
2. 通讯参数的设置

在已经搜刮到设备的状态下,点击【Ethernet】设备->【通用】->【Browse...】,此时将自动在网络上搜刮可用的网络设备,选择想要毗连的PLC/控制器的【IP地址】(本例子为192.168.1.101)地点行,点击确认。https://i-blog.csdnimg.cn/blog_migrate/c888815f99bcccb8b06c3d0450bf58c6.jpeg
 选择【ModbusTCP_Slave_Device】设备->【通用】,如下图所示,保持寄存器后侧勾选【可写入】,此时允许客户端对保持寄存器进行写入,若不勾选则客户端仅能进行只读访问。
保持寄存器区的数量允许自定义,按需定义;
需要勾选离散位区域后,才能进行线圈读写的通讯;线圈的个数也是自定义,注意1体现1个bit,此处设置64bit,共8个字节。
数据模型,起始地址为Modbus地址,默认为0,可按需设置;
https://i-blog.csdnimg.cn/blog_migrate/4ef9fd4a1fc77c5decb91aa757343618.png
 3.IO映射

在步伐的全局变量表中,定义了两个数组分别用来存储通讯变量;
第1个是数组巨细为20,数据类型为16位的数组,前10个数据为控制器写PC端读,后10个数据为PC端写控制器读。
第2个是数组巨细为8,数据类型为8位的数组,前4个字节为控制器写PC端读,后4个字节为PC端写控制器读。
https://i-blog.csdnimg.cn/blog_migrate/fc1c527908d5b157d6daa6f899d1d6a1.png
然后在【Modbus TCP Slave Device IO映射】选择全局变量表中定义好的变量,如下图所示
https://i-blog.csdnimg.cn/blog_migrate/a32c5197429e2547c24c6cc2da987898.png
 4.Modbus Poll创建客户端

打开PC端的Modbus Poll软件,创建客户端毗连到控制器的服务器。
菜单栏选择【Connection】,点击【Connnect】
https://i-blog.csdnimg.cn/blog_migrate/3bdd951a83686302cf6d9c9e777118b0.png
弹出窗口【Connection Setup】中选择【TCP/IP】,在【Remote Server】中填入控制器端服务器设置的IP地址和端口号,如下图所示,
https://i-blog.csdnimg.cn/blog_migrate/abfb0826f94b08fd4d024fe0d007dfe1.png
5.简单通讯测试 

 起首测试16位数据的读写通讯,在Modbus Poll软件中设置,使用03功能码,地址为0,数据长度为20,如下图设置。
https://i-blog.csdnimg.cn/blog_migrate/7e37230b27dde5dfa7ed26ffdd8d5674.jpeg

控制器步伐中,给【TCP_通讯字】的前10个分别赋值1~10,此时观察右侧Modbus Poll软件中的显示,ALias体现地址偏移,在地址0~9对应显示1~10,则控制器写,Modbus Poll读的16位数据测试通过,参考下图。 
https://i-blog.csdnimg.cn/blog_migrate/f66651f6c0b445e69eaa91d43e4578a0.jpeg
起首在Modbus Poll中通过双击数据,直接修改数据,此处在地址为10处开始,依次赋值111、222、333到1010,共10个数据;此时观察左侧,在全局变量表中监控控制器读取到相应的数据,至此,则Modbus Poll写,控制器读的16位数据测试通过,参考下图。 https://i-blog.csdnimg.cn/blog_migrate/da9caa9525254c6e764912beb3ad2e35.jpeg
在Modbus Poll软件中设置,使用01功能码,地址为0,数据长度为64,如下图设置。 
https://i-blog.csdnimg.cn/blog_migrate/cf479ef2e6958fc9791248329afc2f50.jpeg
控制器步伐中,给【TCP_通讯字节0】的前8个位分别按如下图赋值,此时观察左侧Modbus Poll界面中,其中1为TRUE,0为FALSE;至此,控制器写,Modbus Poll读的1位数据测试通过.
https://i-blog.csdnimg.cn/blog_migrate/e600ac75a80a896be5cfab2f70f011d9.jpeg

在左侧Modbus Poll软件上,向地址32开始,依次写入差别顺序的ON,OFF,如下图左侧所示,此时在右侧Modbus TCP Slave IO映射画面中,找到第5个字节(线圈) ,可看到逐一对应,此时Modbus Poll写,控制器读的1位数据测试通过。
https://i-blog.csdnimg.cn/blog_migrate/83389c5ce66ac60f713b86f2b1b0cbf9.jpeg

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Codesys—标准库ModbusTCP Slave(服务器)的通讯示例