发新帖我要提问
123
返回列表
打印

请教485总线多主控制

[复制链接]
楼主: machunshui
手机看帖
扫描二维码
随时随地手机跟帖
41
machunshui|  楼主 | 2009-5-4 21:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览

话痞子的发生

话痞子的发生:

假设十个站,主站发时间基准,

十个站以此为基准,从一到十依次检查自己是否有数据发送,

有的话,就在自己的时隙内占用信道,

如果每次第三个站,每次都要讲话,

那三号站以后的站没机会讲。


如果发送的基准信号带有第一个可以开始讲话的站地址,和子站总数目,

那么就可避免“话痞子”。

例如,第一次发送基准信号,告诉各个站一号站拥有第一个时隙,
第二次发送基准信号,告诉各个站二号站拥有第一个时隙,
第三次发送基准信号,告诉各个站三号站拥有第一个时隙,

各个站依据子站总数目,按照循环队列占有时隙。

这样每个站都有说话机会。

使用特权

评论回复
42
machunshui|  楼主 | 2009-5-4 21:37 | 只看该作者

这么办

“关键是主站怎么知道第一个开始讲话的站点“有数据要发送”?如果它无话可讲怎么办?”

如果没话讲,下一个时隙,下一个子站就有机会讲话啊

使用特权

评论回复
43
machunshui|  楼主 | 2009-5-4 21:43 | 只看该作者

通信协议,大略上讲起来容易,具体实现很难

通信协议,大略上讲起来容易,具体实现很难。

因为通信,把各个站点联系起来,

程序实现就要考虑到各种通信失败情形,做实际能用的不容易

使用特权

评论回复
44
学生D| | 2009-5-5 09:26 | 只看该作者

LonWorks这样解决话痞子

41楼避免话痞子的发生,是方法之一。

有个小问题:假设我原来排第3,那么现在按照41楼的方法,我要不断地计算修改我的队列位置?

LonWorks是这样解决:在一次大的循环中每个站点只允许发言一次。

每个发言的站点发送完后,不是由监控站发送时统同步帧,而是由每个站点自己侦听发言者结束信号。然后自己仲裁重新同步,当然在它前面发过言的站点这一轮不会再发第二次了,前面几个时隙肯定空跳过,但由于时隙很小——几个us,因此不会浪费带宽。

直到主站检测出这一轮的结束,(最后一个站点已经放弃了令牌。)主站才发出第二次轮询启动,话痞子才又有了一次发言机会。

这样,各节点源程序不变。只多了一个条件:一次监控时统帧,只能发言一次。

使用特权

评论回复
45
牛牛特工| | 2009-11-20 17:35 | 只看该作者
书生对于多主通信的认识貌似有错误所谓
所谓多主并非是指所有设备在同一时点均处在发送状态
每次只有一个设备在发送而已,我认为的同时只是宏观上的。就象windows任务的同时一般。
我最近才想到把RXD接到INT上这个方法,看来落后太多了 上网看下有没有相同想法的人 果然验证咯

使用特权

评论回复
46
牛牛特工| | 2009-11-20 17:39 | 只看该作者
靠 都没注意到 已经开始讨论 更高级的问题了~~
看了学生D 关于Lonworks的话痞子解决方法 颇受启发

使用特权

评论回复
47
casino| | 2009-12-2 10:02 | 只看该作者
7楼方案,我10年前写的方案论证。现留有“实验装置及程序”。 4节点多主,当然谈不上退避协议。没有实际需求激励。现在早已摒弃不用了。现在实际需求我们都用Intel通信控制器8044组网。美曰称“现场总线”。每 ...
学生D 发表于 2009-4-30 09:45

8044芯片资料有吗?

使用特权

评论回复
48
efen| | 2012-1-31 20:43 | 只看该作者
mark,学习^

使用特权

评论回复
49
mengjicheng| | 2012-11-18 21:08 | 只看该作者
前面好懂,后面越看越迷糊,看来功底不够,但也长了见识

使用特权

评论回复
50
chuming666| | 2012-11-18 21:53 | 只看该作者
.................................RS485坚决不做多主应用,  否则后犯无穷

使用特权

评论回复
51
LG2012GG| | 2012-11-18 23:02 | 只看该作者
过去做过,好久没用又忘了

使用特权

评论回复
52
zhhbncwu| | 2012-11-19 10:01 | 只看该作者
还是不要给RS485那么大的压力了

使用特权

评论回复
53
dukedz| | 2017-6-2 17:18 | 只看该作者
本帖最后由 dukedz 于 2017-6-2 17:40 编辑

我使用 侦听 + 冲突检测 的方式設計了一款名爲 CD485 的通訊協議,基於 RS485 硬件(也兼容傳統 RS485 通訊),同時結合了 CAN 總線的仲裁和 RS485 的高速(雙波特率),加上硬件封包和校驗,不會頻繁中斷用戶 CPU, 具體時序和文檔可以看這裏:blog.dukelec.com/archive/cd485-cn
目前穩定用於工業機械臂內外通訊。




使用特权

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

本版积分规则