打印

485通信中,多个从机如何通过竞争选出一个主机

[复制链接]
8164|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nanjijufeng|  楼主 | 2013-2-19 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在做的一个产品是用485通信的,要实现自组网,
大概的要求是:多台控制器联网使用时,自动生成一个网络,
其中地址码最小的一个为主机,其余为从机,构成自动控制系统;
如果个别从机故障,自动退出,不影响其余工作,
如果主机故障,自动退出,在其余从机中产生一个新的主机,
组成一个新的系统;
那位兄弟做过这样的网络,谢谢了!

相关帖子

沙发
airwill| | 2013-2-19 22:34 | 只看该作者
这套协议还是有点复杂了.

如果主机故障,自动退出,在其余从机中产生一个新的主机,组成一个新的系统;
这一条, 由于涉及竞争主机的问题, 实现起来有点困难哦

使用特权

评论回复
板凳
nanjijufeng|  楼主 | 2013-2-19 22:41 | 只看该作者
是比较复杂,但是市面上确实有,应该有实际需求

使用特权

评论回复
地板
jlass| | 2013-2-20 09:33 | 只看该作者
用主备切换的概念去做,也就是说新产生的主机是预先设计好的,不是随机选一台。

使用特权

评论回复
5
nanjijufeng|  楼主 | 2013-2-20 10:37 | 只看该作者
jlass的想法不错,这是一个折中的方案,不过我现在试验一下,完全的竞争也是可行的,只是程序比较复杂,连自己都没信心

使用特权

评论回复
6
nanjijufeng|  楼主 | 2013-2-20 10:38 | 只看该作者
今天上午写了3个装置的联机程序,还是容易竞争出主机的

使用特权

评论回复
7
airwill| | 2013-2-20 11:31 | 只看该作者
由于 485 不具有竞争和仲裁机制. 完全的竞争必然存在缺陷. 只能在要求不高的场合试试.
在正式工业应用, 小于 1‰ 的差错和数据缺陷, 也可能导致系统瘫痪.
所以做协议一定要非常严谨!

使用特权

评论回复
8
千里风123| | 2013-2-20 13:48 | 只看该作者
谁主发谁做主机呗

使用特权

评论回复
9
flyinginred| | 2013-2-25 13:10 | 只看该作者
本帖最后由 flyinginred 于 2013-2-25 13:15 编辑

地址码当时间槽
主机定时发主机广播命令,其它从机收到命令后,作为时间同步。
主机挂掉后,其它从机在约定的时间内,就收不到约定的主机广播命令,然后,开始竞争主机。根据地址码对应的时间槽发送,无人反对即为主机!

使用特权

评论回复
10
nanjijufeng|  楼主 | 2013-2-25 16:16 | 只看该作者
flyinginred,水平高,我就是这么写了,确实没问题

使用特权

评论回复
11
flyinginred| | 2013-2-25 23:05 | 只看该作者

使用特权

评论回复
12
rwdxty| | 2013-3-5 19:49 | 只看该作者
这样的应用建议用CAN总线之类的,成本也高不了多少

使用特权

评论回复
13
zf_015820| | 2013-3-7 19:23 | 只看该作者
CAN总线可以用下

使用特权

评论回复
14
加油吧小鱼儿| | 2013-3-8 00:20 | 只看该作者
同意楼上

使用特权

评论回复
15
fristbear| | 2013-3-13 14:03 | 只看该作者
大家还有个问题没注意,系统用的是485总线,一般的485总线都是各系统并联在一起的。如果有一台机器的485芯片有问题了,整个系统就不能通讯了。

使用特权

评论回复
16
wfarlen| | 2015-3-19 11:05 | 只看该作者
nanjijufeng 发表于 2013-2-25 16:16
flyinginred,水平高,我就是这么写了,确实没问题

楼主,目前在编写485项目,遇到的问题是,刚上电时,会同时出现多个主机,而项目的要求是一主多从,不知楼主有什么好的解决办法么?分配地址时,也是按照地址码来当时间槽的,但初始的地址码是随机的,会导致产生重复的随机数。

使用特权

评论回复
17
细风| | 2015-7-14 14:52 | 只看该作者
你好  你们说的地址码当时间槽是什么意思呢

使用特权

评论回复
18
细风| | 2015-7-14 16:18 | 只看该作者
nanjijufeng 发表于 2013-2-25 16:16
flyinginred,水平高,我就是这么写了,确实没问题

你好,我现在遇到同样问题,这个要怎么实现呢

使用特权

评论回复
19
acguy| | 2015-7-15 20:51 | 只看该作者
有一些标准定义了Rs485的令牌协议

使用特权

评论回复
20
DYQR| | 2015-12-2 10:17 | 只看该作者
fristbear 发表于 2013-3-13 14:03
大家还有个问题没注意,系统用的是485总线,一般的485总线都是各系统并联在一起的。如果有一台机器的485芯 ...

这个问题是因为你单片机初始化时,或者复位时,单片机的管脚都是高电平导致你所有并联在上面的RS485都处于发送的状态,所以会出现很多主机,建议管脚在RS485前取非门,那么就可以避免这个问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝