您的位置:控制工程论坛网论坛 » 自动化软件 » 关于多个MODBUS-RTU子设备挂接在一个父串口问题

jlccpw

jlccpw   |   当前状态:在线

总积分:640  2024年可用积分:449

注册时间: 2006-10-06

最后登录时间: 2024-09-13

空间 发短消息加为好友

关于多个MODBUS-RTU子设备挂接在一个父串口问题

jlccpw  发表于 2024/6/12 20:06:53      606 查看 3 回复  [上一主题]  [下一主题]

手机阅读

如何去实现对在同一个通用串口父设备下的子设备的数量进行统计,

设备总数()

正常通讯设备数()

故障设备()

离线设备()

可以同过那些方式去实现这个功能呢?


1楼 0 0 回复
  • lxbogr

    lxbogr   |   当前状态:在线

    总积分:371  2024年可用积分:190

    注册时间: 2007-03-28

    最后登录时间: 2024-09-06

    空间 发短消息加为好友

    lxbogr   发表于 2024/6/12 20:18:11

    每个Modbus-RTU设备在通讯时都有一个唯一的地址(Unit Identifier),这个地址用于在通讯时区分不同的设备。

    父串口的基本参数(如波特率、数据位、停止位、校验位等)需要正确配置,以确保所有子设备都能正常通讯。

    通过编写一个程序或脚本,向父串口发送广播消息(通常是一个带有功能码03或04的读请求,但Unit Identifier设置为0或255,这取决于具体实现),然后监听来自子设备的响应。

    响应中的Unit Identifier字段将指示是哪个子设备发送的响应。

    记录并统计响应中的不同Unit Identifier数量,即可得到子设备的数量。

    在扫描过程中,需要设置合理的超时时间,以避免等待无响应的设备过长时间。

    示例流程(伪代码):

    初始化串口参数。

    循环发送广播消息(例如,使用功能码03或04)。

    监听并接收响应。

    解析响应数据,提取Unit Identifier。

    统计并记录不同的Unit Identifier数量。

    如果在指定时间内未收到响应或遇到错误,则进行超时或错误处理。

    循环结束,输出子设备数量。


    2楼 回复本楼

    引用 lxbogr 2024/6/12 20:18:11 发表于2楼的内容

  • xzr2004xzr

    xzr2004xzr   |   当前状态:在线

    总积分:370  2024年可用积分:226

    注册时间: 2005-01-27

    最后登录时间: 2024-09-06

    空间 发短消息加为好友

    xzr2004xzr   发表于 2024/6/12 20:21:59

    总数肯定是你一个一个添加上去的,自己写个常量。添加的子设备通道里有个HMI默认通道是连接状态,BOOL量的,你给连接个实时变量。循环策略里写脚本判断算一下数量。(这方法不能区分故障和离线,当广播的方式也区分不了)

    3楼 回复本楼

    引用 xzr2004xzr 2024/6/12 20:21:59 发表于3楼的内容

  • zpjames1127

    zpjames1127   |   当前状态:在线

    总积分:465  2024年可用积分:273

    注册时间: 2006-08-15

    最后登录时间: 2024-09-04

    空间 发短消息加为好友

    zpjames1127   发表于 2024/6/12 20:22:31

    可以通过你的图片方式进行配置,总数就是你简历的设备数,有几个就分配几个,但是要注意MODBUS最大从站数,以及轮询通讯速度的问题,对于说通讯故障以及实际设备情况可以参考 通讯的返回数据进行判断, 比如返回值一直不变或者一直为0,多久之后就可以认为该设备通讯故障,设备通讯数-1    供参考!

    4楼 回复本楼

    引用 zpjames1127 2024/6/12 20:22:31 发表于4楼的内容

总共 , 当前 /