关于多个MODBUS-RTU子设备挂接在一个父串口问题 点击:528 | 回复:11



香果娱柚

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 0回
  • 年度积分:26
  • 历史总积分:26
  • 注册:2024年6月06日
发表于:2024-06-06 15:43:04
楼主
求助帖30分-未结帖

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

设备总数()

正常通讯设备数()

故障设备()

离线设备()

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


image.png

image.png





空不异色

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 632回
  • 年度积分:89
  • 历史总积分:26847
  • 注册:2020年3月27日
发表于:2024-06-06 16:21:09
1楼

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

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

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

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

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

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


  • 示例流程(伪代码):

    • 初始化串口参数。

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

    • 监听并接收响应。

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

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

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

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


回复本条

    

jzl070521

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 228回
  • 年度积分:2
  • 历史总积分:231
  • 注册:2021年8月12日
发表于:2024-06-06 17:39:49
2楼

了解一下

回复本条

    

schgr

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 30回
  • 年度积分:15
  • 历史总积分:40
  • 注册:2012年8月05日
发表于:2024-06-06 18:07:43
3楼

感谢楼主的分享

回复本条

    

臻豪

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:101
  • 历史总积分:101
  • 注册:2024年6月06日
发表于:2024-06-06 18:34:14
4楼

专业,非常有用

回复本条

    

玉皇盖金殿

  • 精华:0帖
  • 求助:9帖
  • 帖子:15帖 | 20回
  • 年度积分:25
  • 历史总积分:1172
  • 注册:2020年10月12日
发表于:2024-06-06 20:47:54
5楼

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

回复本条

    

JSdanzi

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 576回
  • 年度积分:82
  • 历史总积分:9622
  • 注册:2012年9月22日
发表于:2024-06-07 08:20:40
6楼

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

回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:754帖 | 5743回
  • 年度积分:91
  • 历史总积分:92876
  • 注册:2004年5月28日
发表于:2024-06-07 13:20:53
7楼

每个从站都有运行状态吧,根据这个可以判断哪个站目前是通信正常还是异常的。

回复本条

    

大蓝鲸的杆子

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:108
  • 历史总积分:108
  • 注册:2024年5月30日
发表于:2024-06-15 16:11:01
8楼

学习一下

回复本条

    

ozoner

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 869回
  • 年度积分:6
  • 历史总积分:8794
  • 注册:2017年1月12日
发表于:2024-06-19 17:11:14
9楼

给每个设备设置个状态指示灯就足够了,哪个正常哪个有故障一目了然,没必要搞那么复杂吧。

回复本条

    

Smile-lyc

  • [管理员]
  • 精华:136帖
  • 求助:53帖
  • 帖子:3592帖 | 22895回
  • 年度积分:1241
  • 历史总积分:159632
  • 注册:2006年8月04日
发表于:2024-07-23 12:44:55
10楼

感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。

对于求助者要求:

1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;

2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。

3、求助答疑板块版主结贴时间一般滞后30~45天,以方便大家对求助问题答疑足够时间,也为了每一个优秀答疑人员都可以获取到自己的积分和MP奖励。

4、2024龙年加油!龙年棒棒!



回复本条

    

sadadasdasd

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 8回
  • 年度积分:60
  • 历史总积分:60
  • 注册:2024年9月02日
发表于:2024-09-03 14:36:05
11楼

每个设备第一个通道都是通讯状态 按照通讯状态就可以解决  但是判断不了故障  你的故障仔细描述一下 是什么故障

回复本条

    

热门招聘
相关主题

官方公众号

智造工程师