您的位置:首页 > 游戏 > 游戏 > Modbus rtu的通信(做主站)

Modbus rtu的通信(做主站)

2024/10/6 9:21:59 来源:https://blog.csdn.net/weixin_40704392/article/details/141607670  浏览:    关键词:Modbus rtu的通信(做主站)

Modbus rtu的通信(做主站)
首先进入“设备视图”添加通讯模块RS422/RS485通讯模块,点击通讯接口,配置modbus的参数,常规→端口组态,选择“半双工(RS-485)2线制模式”,波特率、奇偶校验、数据位、以及设置停止位, 但是该模块用于 Modbus 通信时,此设置的停止位无效, 需要在 “Modbus_Comm_Load” 指令的背景 DB 的静态变量中修改 “STOP_BITS” 数值为 2。如图 1-1所示:
在这里插入图片描述

图1-1
最后需要在“硬件标识符”里确认一下 CM PtP 模块硬件标识符,该参数在程序编程中会被使用。
在这里插入图片描述

创建一个FB块,点击进入,在通信项目数中点开“MODBUS (RTU)”把“Modbus_Comm_Load”和“Modbus_Master”拉出去,以为这个案列是plc做主站,所以不用从站的功能块 。

在这里插入图片描述

使用FB块的块接口:Static(静态变量)中建立“Modbus端口”的静态参数,数据类型用“Modbus_Comm_Load”,以及建立“Modbus主站”的静态参数。如下图1-2
在这里插入图片描述

图1-2
Modbus RTU 主站编程需要调用 Modbus_Comm_Load 指令和 Modbus_Master 指令,其中 Modbus_Comm_Load 指令通过 Modbus RTU 协议对通信模块进行组态,Modbus_Master 指令可通过由 Modbus_Comm_Load 指令组态的端口作为 Modbus 主站进行通信, Modbus_Comm_Load 指令的 MB_DB 参数必须连接到 Modbus_Master 指令的(静态)MB_DB 参数。如图1-3
在这里插入图片描述

图1-3

注意:
① Modbus_Comm_Load 指令不建议在启动组织块 OB100 中调用,建议在 OB1 中调用。
Modbus_Comm_Load 指令在 OB1 中调用时,其输入位“REQ”需使用上升沿触发,本例中该输入位采用 “FirstScan” 系统存储器位。
② Modbus_Comm_Load 指令背景数据块中的静态变量 “MODE” 用于描述点对点模块的工作模式,有效的工作模式包括:
0 = 全双工 (RS232)
1 = 全双工 (RS422) 四线制模式(点对点)
2 = 全双工 (RS422) 四线制模式(多点主站)
3 = 全双工 (RS422) 四线制模式(多点从站)
4 = 半双工 (RS485) 二线制模式
该静态变量 “MODE” 默认数据为 0(RS232 全双工模式),需要根据点对点模块实际组态修改该数值,本例中 CM PtP 模块工作在 RS485 半双工模式需要将该数值修改为 4,如图 1-4所示。
在这里插入图片描述

图1-4
或在程序段传输,用move指令把4传给“#Modbus_Comm_Load_Instance_1.MODE”
在数据块的属性中取消“优化的块访问”即可将数据块修改为非优化访问的数据块(鼠标右键数据块,选择“属性”,取消“优化的块访问”)
当 Modbus RTU 网络中存在多个 modbus RTU 从站或一个 modbus RTU 从站同时需要多个作业,例如需要读和写或者读多个区域等,则需要调用多个 Modbus_Master 指令,Modbus_Master 指令之间需要采用轮询方式调用,并且使用相同背景数据块。用“Done”完成位来触发下一个轮询。如图1-5、
图1-6
在这里插入图片描述

图1-5
在这里插入图片描述
在这里插入图片描述

图1-6所示
Modbus rtu的通信(做从站)
Modbus RTU 从站编程需要调用 Modbus_Comm_Load 指令和 Modbus_Slave 指令
Modbus的参数设置以及Modbus_Comm_Load 指令块的编写就和主站一样,Modbus_Comm_Load 指令的 MB_DB 参数必须连接到 Modbus_Master 指令的(静态)MB_DB 参数。 Modbus_Slave 指令的 “MB_HOLD_REG” 用于定义 CPU 的 Modbus 保持寄存器的数据区域地址,该数据区域在 V3.0 支持非优化(标准的)数据块。一般建议使用指针方式填写,例如程序中的 P#DB6.DBX0.0 WORD 100,此外也可以使用基本数据类型数组方式填写,如图1-7

在这里插入图片描述

图1-7
调试时注意的问题
①检查硬件标识符是否正确
②检查通信模块是否与软件上的相对应
③RS485 半双工模式需要将该数值修改为 4
④Modbus_Comm_Load 指令的 MB_DB 引脚不能填错
⑤轮询用Done完成位来触发
⑥Modbus_Comm_Load 指令块的“REQ”引脚用“FirstScan” 系统存储器位

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com