[技术讨论] 485总线通信问题

[复制链接]
2811|35
 楼主| cainiao518 发表于 2022-3-29 15:13 | 显示全部楼层 |阅读模式
485总线,一主多从模式,波特率2400。刚开始主机不知道有多少从机(从机有不同的编号)在线,需要一个一个(问答式通信)查询,比较慢。有没一种策略,可以使主机快速查到总线上连了多少从机且知道从机的编号?
oufuqiang 发表于 2022-3-29 15:57 来自手机 | 显示全部楼层
自己定一个广播包,从机收到后按编号延时排队发回应包可以省一半时间。
cctv19881023 发表于 2022-3-29 15:58 | 显示全部楼层
广播啊

评论

主机可以广播  发表于 2022-3-29 17:03
elife 发表于 2022-3-29 16:55 | 显示全部楼层
本帖最后由 elife 于 2022-3-29 16:58 编辑

如果主机和分机都能IO方式控制485的输出,可以上电由主机发送同步低电平,在分机编号对应的时隙内,回复1表示有分机,不回复表示没有。可以分段,主机一次8个或16个读取,再发同步低电平,再读取。超过总分机数,分机退出该状态,进入正常工作状态。 编号位数不能太多,也可以采用不同时隙表格对应不同编码。
 楼主| cainiao518 发表于 2022-3-29 17:02 | 显示全部楼层
oufuqiang 发表于 2022-3-29 15:57
自己定一个广播包,从机收到后按编号延时排队发回应包可以省一半时间。

编号可能到几十万,延时几十万毫秒有点太长,这个好像不行
xch 发表于 2022-3-29 18:55 | 显示全部楼层
重新开发软硬件有办法。按照2400bps ,差不多也能做到每秒发现 2400 个设备。

dog_xin 发表于 2022-3-30 07:49 | 显示全部楼层
用了广播,有一千个设备同时应答,总线也会有冲突的,谁也发不了,就是堵塞了,我也没有找到更好的办法

评论

谢谢,确实不好解决  发表于 2022-3-30 11:42
lfc315 发表于 2022-3-30 09:08 | 显示全部楼层
cainiao518 发表于 2022-3-29 17:02
编号可能到几十万,延时几十万毫秒有点太长,这个好像不行

这是编号方法的问题了吧,你实际总线上总不能接了几十万个从机
gaobq 发表于 2022-3-30 10:00 | 显示全部楼层
485无解,换CAN吧,也是两根线
nbsmaps 发表于 2022-3-30 10:46 | 显示全部楼层
第一什么485,可以接几十万的从机?要是分级的结构,那到主机也没多少时间,是并行的。要是全部是一级的,我还没听说过能有几十万从机的485,网络也得分级了。

》》gaobq: CAN有什么好办法解决,只不过多了冲突控制,时间还是一样的啊

评论

没有分级  发表于 2022-3-30 11:45
 楼主| cainiao518 发表于 2022-3-30 11:43 | 显示全部楼层
lfc315 发表于 2022-3-30 09:08
这是编号方法的问题了吧,你实际总线上总不能接了几十万个从机

总线不会接几十万个设备,只有最多250个,但编号范围很大
 楼主| cainiao518 发表于 2022-3-30 11:44 | 显示全部楼层
gaobq 发表于 2022-3-30 10:00
485无解,换CAN吧,也是两根线

成本限制,硬件也固定了
 楼主| cainiao518 发表于 2022-3-30 11:45 | 显示全部楼层
xch 发表于 2022-3-29 18:55
重新开发软硬件有办法。按照2400bps ,差不多也能做到每秒发现 2400 个设备。

...

软硬件如何改进呢
海洋无限 发表于 2022-3-30 12:13 | 显示全部楼层
实际设备应该不多吧,485也接不了这么多设备吧

评论

确实接不了这么多,只是编号范围很大  发表于 2023-3-25 11:42
zyj9490 发表于 2022-3-30 13:14 | 显示全部楼层
从协议上看,应可以完成,485只规定了硬件层的信号类型。可以加一个DHCP的通信协议,参考以太网BASE2.
 楼主| cainiao518 发表于 2022-3-30 14:20 | 显示全部楼层
海洋无限 发表于 2022-3-30 12:13
实际设备应该不多吧,485也接不了这么多设备吧

接不了很多,最多250个,但编号范围很大
xch 发表于 2022-3-30 17:26 | 显示全部楼层
cainiao518 发表于 2022-3-30 11:45
软硬件如何改进呢

原理:主站发出查询节点广播帧,帧结束后主站 RS585 转入接收状态,并启动定时器捕获RXD 下降沿信号 。节点收到帧结束后启动同步本地时钟,在 (本地编码值 * 标准间隔)位置应答一个脉冲。主站根据捕获定时器捕获值和捕获数量算出节点编码和数量。   一次可查询的节点数量取决于软硬件定时精度。如果一次查询精度不够可以将节点编号按照顺序分组,分组查询,效率略微下降。
 楼主| cainiao518 发表于 2022-3-30 21:09 | 显示全部楼层
zyj9490 发表于 2022-3-30 13:14
从协议上看,应可以完成,485只规定了硬件层的信号类型。可以加一个DHCP的通信协议,参考以太网BASE2. ...

好像有点复杂
oufuqiang 发表于 2022-3-30 21:54 | 显示全部楼层
要不你把单线总线的搜索算法移植一下好了,基于二叉树的。美信有一个笔记详细说了搜索过程。onewire search
dalarang 发表于 2022-3-31 09:13 | 显示全部楼层
参考CAN仲裁域的思路,不过前提条件是从机ID不能重复,且要自己做接收时序控制,不能依赖USART
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

1431

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部