硬汉嵌入式论坛

 找回密码
 立即注册
查看: 509|回复: 10
收起左侧

[技术讨论] modbus通信,从机的数量达到30台左右后,主机偶尔会接收不到某一台从机的某条回复,如何排查问题?

[复制链接]

12

主题

54

回帖

90

积分

初级会员

专业做地暖控制器

积分
90
发表于 2026-3-5 11:41:05 | 显示全部楼层 |阅读模式
我们最近挂载30台从机,进行modbus通信测试时,主机偶尔会收不到某条回复(随机某个从机的温度数据的应答,或者其他参数应答),挂载数量低于30台时,主机都能正常接收到数据;原来从机的modbus数据处理是放在while循环里面的,这时单独2台从机,主机有时也接收不到某个应答;后来我把modbus接收数据处理放在定时器里每5ms处理一次,从机接到30多台才出问题;

1.我修改在定时器中断里这样处理5ms一次

if(++time_5ms_conter >= 5)
{
                time_5ms_conter = 0;
               
                if(modbus.receive_flag == 1)  //接收数据完成标志
                {
                        modbus_slave_handle();
                }
                               
}


1.我第二次在定时器中断里这样处理的,1s就轮询一次       

if(modbus.receive_flag == 1)//接收数据完成标志
{
        modbus_slave_handle();
}

请问软件还需要朝什么方向改进,能改善通信效果


回复

使用道具 举报

7

主题

418

回帖

439

积分

高级会员

积分
439
发表于 2026-3-5 12:14:04 | 显示全部楼层
1。modbus超时通常设在50mS以上,所以你以上两个代码没啥区别
2。从设备比较多时,硬件要求要严格,比如屏蔽双绞线,终端电阻,
3。环境复杂时,适当降低波特率,示波器看一下波形,
4。如果距离较远,必须确保这些设备都用的是同一相220V电源
5。软件做处理,失败重发,连续多次失败则认为有错误,允许偶发性接收不到。
回复

使用道具 举报

7

主题

418

回帖

439

积分

高级会员

积分
439
发表于 2026-3-5 12:14:10 | 显示全部楼层
1。modbus超时通常设在50mS以上,所以你以上两个代码没啥区别
2。从设备比较多时,硬件要求要严格,比如屏蔽双绞线,终端电阻,
3。环境复杂时,适当降低波特率,示波器看一下波形,
4。如果距离较远,必须确保这些设备都用的是同一相220V电源
5。软件做处理,失败重发,连续多次失败则认为有错误,允许偶发性接收不到。
回复

使用道具 举报

12

主题

54

回帖

90

积分

初级会员

专业做地暖控制器

积分
90
 楼主| 发表于 2026-3-5 12:57:25 | 显示全部楼层
fxyc87 发表于 2026-3-5 12:14
1。modbus超时通常设在50mS以上,所以你以上两个代码没啥区别
2。从设备比较多时,硬件要求要严格,比如屏 ...

我在同样的环境下,把我们自己的设备拿掉,换上竞品的设备,他们30台以上通信正常,上位机控制设备和竞品的从机设备是配套的,5.失败重发,这里怎么知道自己回复主机失败了
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2026-3-5 14:24:08 | 显示全部楼层
RS485通信吧,有两个优化的方向;1.硬件,看看RS485多节点通信,负载能力,桥接芯片,电路设计,线缆,等,,。2. 软件,支持无应答重发机制;
回复

使用道具 举报

2

主题

125

回帖

131

积分

初级会员

积分
131
发表于 2026-3-5 14:53:53 | 显示全部楼层
chen84992805 发表于 2026-3-5 12:57
我在同样的环境下,把我们自己的设备拿掉,换上竞品的设备,他们30台以上通信正常,上位机控制设备和竞品的从 ...

5.失败重发,这里怎么知道自己回复主机失败了

主机发送完采集指令后,在一定时间内(比如9600下5ms)没有收到从机的回复,就认为失败了。
回复

使用道具 举报

0

主题

45

回帖

45

积分

新手上路

积分
45
发表于 2026-3-5 15:10:44 | 显示全部楼层
换上竞品的可以,,可以说是很悲惨的情况了。。。

回复

使用道具 举报

12

主题

54

回帖

90

积分

初级会员

专业做地暖控制器

积分
90
 楼主| 发表于 2026-3-5 15:52:55 | 显示全部楼层
西点钟灵毓秀 发表于 2026-3-5 14:53
5.失败重发,这里怎么知道自己回复主机失败了

主机发送完采集指令后,在一定时间内(比如9600下5ms)没 ...

主机是别人做好的,我现在是做从机适配主机,主机有没收到我从机的数据,我从机怎么知道这个结果
回复

使用道具 举报

3

主题

17

回帖

26

积分

新手上路

积分
26
发表于 2026-3-6 08:37:15 | 显示全部楼层
主机是别人的话 1.先确定从机是否正确接受数据 2.确定正确接收后确定从机是否正确发送 估计这种情况更多是硬件问题
回复

使用道具 举报

41

主题

244

回帖

367

积分

高级会员

积分
367
发表于 2026-3-6 10:14:40 | 显示全部楼层
1.从机收不到主机指令
2.从机收到了指令但是收到的指令不准确
3.从机收到了正确的指令,没有正常返回数据(这个看你意思应该是没问题的)
4.从机收到了正确的指令,也正常返回数据了,但是主机没收到

先排查属于哪种情况吧
回复

使用道具 举报

12

主题

54

回帖

90

积分

初级会员

专业做地暖控制器

积分
90
 楼主| 发表于 7 天前 | 显示全部楼层
查到问题了,竞品设备会发送一条和功能无关的命令帧,上位机软件通过这个帧数据来识别是不是他原厂的设备,你如果不发送个一摸一样的命令帧,上位机收到数据也会主动显示断讯,让你以为你的设备通信有问题;实际上我的设备通信是没问题的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-4-10 13:06 , Processed in 1.178608 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表