你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
yklstudent-1794 发表于 2019-12-31 11:43 从机数量少时效果还行,从机数量多了很慢的
奏奏奏 发表于 2020-1-4 11:57 我做的是CAN总线的,但是485总线有共性。我简单说一下我的解决方案: (1)默认485地址是STM32的UID的12字 ...
qiangtech 发表于 2020-1-4 12:23 第2点,怎么分时让子设备在总线上发送数据是关键。子设备的先后顺序怎么确定? ...
tanic 发表于 2020-1-6 11:27 稳定方案: 1.地址配置:安装时给每台终端手动配好地址(可用红外遥控配置),配完一个+1配置下一个,如此地址 ...
maxtch 发表于 2020-1-6 11:44 RS485 可以做 CSMA/CD,也就是说可以通过协议保证数据完整。有 CSMA/CD 为基础就可以跑 DHCP,用其中一台 ...
tanic 发表于 2020-1-6 11:53 确实可以,一次DHCP成功后,固化结果,以后就可以高速通讯了
从机接收到这个随机数和自己当前的 MCUID 做个与算法或其他算法,然后按着这个延迟时间给主机回信息,
这个时间也可以是地址,不就解决了吗
1.如果从机当前分配的ID有冲突怎么办
可以通过主机多发几次,比方说发3次,每次给定随机值都不一样,在第一次发了广播命令,已经有分配的从机就不作应答,暂时想到就这么多了,
对,开机后几分钟内都会是在确认和分配地址上。
(1)默认485地址是STM32的UID的12字节中最后一个字节;
(2)每个485子设备往485总线发送一条查询地址是否重复的指令;
(3)如果有回复数据证明有子设备是有地址重复的情况的话,就将当前地址加上UID的12字节中倒数第二个字节地址作为新地址,隔一段时间后执行步骤(2)(如此类推,下一次是加上倒数第三个字节……)直到不出现重复地址为止(因为地址更新后可能会与另外一个或几个设备地址重复)。当然如果子设备接近200个的话时间就比较长了而且不一定成功。485总线一般挂的子设备不超过60个。
第2点,怎么分时让子设备在总线上发送数据是关键。子设备的先后顺序怎么确定?
参考我之前回复的帖子中说的,开机后每隔50毫秒从485地址是1的顺序开始发。
例如有个485子设备,它的STM32的UID的12字节中最后一个字节是03,它就在开机后150毫秒发。
1.地址配置:安装时给每台终端手动配好地址(可用红外遥控配置),配完一个+1配置下一个,如此地址连续,操作也很快。
2.终端搜索:主机上添加搜索功能,从刚才配置的地址逐一轮询,记录响应情况,安装人员根据响应和实际配置确认一一对应后,把终端地址固化,每次开机按照之前的固化结果和终端通讯。这才是工业稳妥方案。
无地址RS485那就很不稳定了
CAN 是可以做 CSMA/CD 的。只要可以 CSMA/CD,就可以用 DHCP 来分配地址。
RS485 可以做 CSMA/CD,也就是说可以通过协议保证数据完整。有 CSMA/CD 为基础就可以跑 DHCP,用其中一台设备给其余设备分配地址。(再进一步甚至可以在带 CSMA/CD 的 RS485 上跑 SLIP 和完整的 TCP/IPv4。)
确实可以,一次DHCP成功后,固化结果,以后就可以高速通讯了
最好是每隔一段时间 DHCP 一次,这样的话节点可增可减。