野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13245|回复: 12

485组网通讯时有时主机询问后,从机没有返回数据

[复制链接]
发表于 2019-6-27 11:42:04 | 显示全部楼层 |阅读模式
测试环境是一个485主机负责连续循环地向7个从机发送指令,主机发送指令后,收到从机的正确回复后,向下一个从机发送指令,依次循环,
如果从机不返回数据,或收到的数据不正常,主机则会等上60s左右,才会发下一条指令。所有的数据都通过串口调试助手观察。

485节点间用的是类似杜邦线的软线,长度不越过100cm.

现在的问题是主机询问从机,过一段时间就会有某个从机不返回数据的情况,每个节点都有这样的情况。

后来给其中一个节点断电了(有点半蒙式的给他断电,因为检查数据时总觉得是发送数据的间隔太频繁才会这样),这样主机就会有1分钟左右的间隔不向从机发询问指令,然后我就发现在除断电的从机没有数据外,其他从机的数据都正常返回。

难道真的让我蒙对了吗,但还是不了解真相啊。所以请各位前辈指点下我测试的这种情况的原因,及解决方法
回复

使用道具 举报

发表于 2019-6-27 17:49:52 | 显示全部楼层
是断了任意一个节点就好了还是断确定某一个才能好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-28 08:57:59 | 显示全部楼层
WishWish 发表于 2019-6-27 17:49
是断了任意一个节点就好了还是断确定某一个才能好

这样有什么区别吗,
我断的一址是挨着主机的那个设备,不过后来又换了从机接上,还是不行,又断了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-28 10:50:56 | 显示全部楼层
WishWish 发表于 2019-6-27 17:49
是断了任意一个节点就好了还是断确定某一个才能好

我刚才把主机发送指令的频率改到24s,测了一个小时,发现有一条没返回的数据。这应该还是有问题吧。
回复 支持 反对

使用道具 举报

发表于 2019-6-28 11:32:20 | 显示全部楼层
han20140806 发表于 2019-6-28 10:50
我刚才把主机发送指令的频率改到24s,测了一个小时,发现有一条没返回的数据。这应该还是有问题吧。

要么你试试就单独对一个先测得能一直稳定收发先
回复 支持 反对

使用道具 举报

发表于 2019-9-1 21:21:07 | 显示全部楼层
本帖最后由 zml515192147 于 2019-10-5 10:32 编辑

见附件:
STM32F10x_RS485Modbus从站源程序说明191002.zip (275.4 KB, 下载次数: 8)
STM32F10x_RS485源程序说明191002.zip (241.45 KB, 下载次数: 7)

也可建议 改成 CAN
CANWeb接口成本低(PCA82C251_3元一个),和增加一个RS485接口(MAX13485_3元一个)成本一样;
带CAN接口的芯片价格也非常实惠:LPC11C14_5元一个,STM32F103C8T6_5元一个,
                         STM32F103RCT6_6元一个,双CAN的STM32F105RBT6芯片仅8元左右!


看参考连接:
http://www.firebbs.cn/forum.php?mod=viewthread&tid=27985&extra=
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-24 09:53:01 | 显示全部楼层
问题依旧在,哪位大神有好方法的,多多发言,谢谢大家
回复 支持 反对

使用道具 举报

发表于 2020-7-1 00:52:27 | 显示全部楼层
一般来说:主机发送命令后,如果超时,应该重发两次,都超时才算从机节点故障!发一次就算问题,那就别调试了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-1 09:12:44 | 显示全部楼层
ruxz@263.net 发表于 2020-7-1 00:52
一般来说:主机发送命令后,如果超时,应该重发两次,都超时才算从机节点故障!发一次就算问题,那就别调试 ...

发了三次
回复 支持 反对

使用道具 举报

发表于 2020-7-1 17:29:43 | 显示全部楼层
先查下你的485硬件网络有没有问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 15:01:51 | 显示全部楼层
一心2013 发表于 2020-7-1 17:29
先查下你的485硬件网络有没有问题。

可能是MODBUS协议部分的代码写的有问题,我有三个板子跟这个485的硬件电路是一样的,协议是自己编的,没用modbus,那个传输没出来问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 15:05:21 | 显示全部楼层
一心2013 发表于 2020-7-1 17:29
先查下你的485硬件网络有没有问题。

前几天,给设备加了一个硬件看门狗,如果设备死机的话,硬件狗应该复位才对。但是加了狗之后,还是出了问题,而且不复位,所以应该是软件的问题,而且就是modbus代码的问题,系统应该是没有死机,我是用的定时器喂狗,单片机不复位,表示系统没有死机,也就是单片机的定时器工作是正常的。我这么想是对的吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-5 15:08:44 | 显示全部楼层
ruxz@263.net 发表于 2020-7-1 00:52
一般来说:主机发送命令后,如果超时,应该重发两次,都超时才算从机节点故障!发一次就算问题,那就别调试 ...

最早的时候的程序,没有这么严重,可能偶尔有时需发两次才回复,印象里是出过一次这种情况,后来改成这样了。现在超悲剧。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-7 20:10 , Processed in 0.034060 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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