485多机通信问题

2019-07-20 10:40发布

   各位,请教一个问题,现在我用三个485设备 设备A 设备B 设备C 连接在一起,使用串口调试助手发送数据,三个设备都可以接收。
   现在我调试助手发送一条指令,让设备A,B,C分别把自己的地址发给上位机。设备在进行回复的时候,打开了串口IDLE(空闲中断),用来判断当前总线是否有其他通信,确保总线只被一个设备使用
   但是这么做还是只能收到一个设备的回复,有时候俩,都是随机的。。。。
  (前提:不知道总线上挂了多少设备,更不知设备地址。)

    请路过的大神给个思路



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
jermy_z
1楼-- · 2019-07-21 08:06
 精彩回答 2  元偷偷看……
hi我歌月徘徊
2楼-- · 2019-07-21 09:17
jermy_z 发表于 2017-11-28 11:04
换can吧 呵呵

can是抢占式的 倒是没有这个问题
但是can一帧只能8个字节 这数据量太小了,那要发送大量的话,就要分包发,收到之后再组装,也好麻烦啊~~~
我没用过,只是了解一下,can有没有像modbus那样的协议呢?
orta
3楼-- · 2019-07-21 12:23
可否考虑   主机呼叫A -> A发主机 -> 主机呼叫B -> B发主机 -> 主机呼叫C -> C发主机。
这样分时操作,会不会稳定性好?
jermy_z
4楼-- · 2019-07-21 18:16
 精彩回答 2  元偷偷看……
八度空间
5楼-- · 2019-07-21 21:36
jermy_z 发表于 2017-11-28 13:27
他都不知道地址了  呼叫个毛。。。

可以地址从1开始,一直不停的尝试
qjp1988113
6楼-- · 2019-07-22 00:55
个人觉得这个题目本身就有问题。每台子设备如果程序都一样,都仅判断总线为空的话,就发送自己的ID的话。那几乎永远是距离最近,第一个接收到命令的子设备回复的ID。

一周热门 更多>