485通信中,多个从机如何通过竞争选出一个主机
我现在做的一个产品是用485通信的,要实现自组网,大概的要求是:多台控制器联网使用时,自动生成一个网络,
其中地址码最小的一个为主机,其余为从机,构成自动控制系统;
如果个别从机故障,自动退出,不影响其余工作,
如果主机故障,自动退出,在其余从机中产生一个新的主机,
组成一个新的系统;
那位兄弟做过这样的网络,谢谢了! 这套协议还是有点复杂了.
如果主机故障,自动退出,在其余从机中产生一个新的主机,组成一个新的系统;
这一条, 由于涉及竞争主机的问题, 实现起来有点困难哦 是比较复杂,但是市面上确实有,应该有实际需求 用主备切换的概念去做,也就是说新产生的主机是预先设计好的,不是随机选一台。 jlass的想法不错,这是一个折中的方案,不过我现在试验一下,完全的竞争也是可行的,只是程序比较复杂,连自己都没信心 今天上午写了3个装置的联机程序,还是容易竞争出主机的 由于 485 不具有竞争和仲裁机制. 完全的竞争必然存在缺陷. 只能在要求不高的场合试试.
在正式工业应用, 小于 1‰ 的差错和数据缺陷, 也可能导致系统瘫痪.
所以做协议一定要非常严谨! 谁主发谁做主机呗 本帖最后由 flyinginred 于 2013-2-25 13:15 编辑
地址码当时间槽
主机定时发主机广播命令,其它从机收到命令后,作为时间同步。
主机挂掉后,其它从机在约定的时间内,就收不到约定的主机广播命令,然后,开始竞争主机。根据地址码对应的时间槽发送,无人反对即为主机!
flyinginred,水平高,我就是这么写了,确实没问题 这样的应用建议用CAN总线之类的,成本也高不了多少 CAN总线可以用下 同意楼上 大家还有个问题没注意,系统用的是485总线,一般的485总线都是各系统并联在一起的。如果有一台机器的485芯片有问题了,整个系统就不能通讯了。 nanjijufeng 发表于 2013-2-25 16:16
flyinginred,水平高,我就是这么写了,确实没问题
楼主,目前在编写485项目,遇到的问题是,刚上电时,会同时出现多个主机,而项目的要求是一主多从,不知楼主有什么好的解决办法么?分配地址时,也是按照地址码来当时间槽的,但初始的地址码是随机的,会导致产生重复的随机数。 你好你们说的地址码当时间槽是什么意思呢 nanjijufeng 发表于 2013-2-25 16:16
flyinginred,水平高,我就是这么写了,确实没问题
你好,我现在遇到同样问题,这个要怎么实现呢 有一些标准定义了Rs485的令牌协议 fristbear 发表于 2013-3-13 14:03
大家还有个问题没注意,系统用的是485总线,一般的485总线都是各系统并联在一起的。如果有一台机器的485芯 ...
这个问题是因为你单片机初始化时,或者复位时,单片机的管脚都是高电平导致你所有并联在上面的RS485都处于发送的状态,所以会出现很多主机,建议管脚在RS485前取非门,那么就可以避免这个问题。
页:
[1]
2