打印

请教485总线多主控制

[复制链接]
11974|52
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
machunshui|  楼主 | 2009-4-29 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
mohanwei| | 2009-4-29 13:21 | 只看该作者

不要这样搞……如果好搞就不会有全双工485或者422了

即使能搞,协议会比较复杂,驱动器也要串电阻,节点数也要降低……

使用特权

评论回复
板凳
machunshui|  楼主 | 2009-4-29 13:26 | 只看该作者

与全双工无关

多主要求每个节点随时能发起会话.

与全双工没有关系.

使用特权

评论回复
地板
红心j| | 2009-4-29 13:55 | 只看该作者

多主协议很麻烦,关键是协议要很好的处理竞争

使用特权

评论回复
5
machunshui|  楼主 | 2009-4-29 14:25 | 只看该作者

哪位大侠给点建设性意见和经验之谈?

哪位大侠给点建设性意见和经验之谈?

使用特权

评论回复
6
lhj200304| | 2009-4-29 15:21 | 只看该作者

周立功好像有篇文档有说

周立功好像有篇文档有说,就是很经典的那个

使用特权

评论回复
7
学生D| | 2009-4-29 18:13 | 只看该作者

挺简单的。

1、侦听实现:把RXD管脚和INT0/INT1管脚并接,设定下降沿中断。要发送之前,打开中断,如若没有中断发生,即说明网络空闲,可以发送。
   有人说这样不能防止2个节点同时侦听、发送,可能吗?你的网络有那么忙吗?99%不可能撞车。如果真撞上了,纯属偶然,再根据自己的节点号大小,决定绅士谦让度,再侦听几ms,重发吧。

2、如若把RXD管脚与T0/T1脚短接,可以不用中断。还能实现预侦听。注意T0/T1计数器是内部可控的。要发送时,可提前打开计数器,预测侦听。
3、如若RXD管脚经过一个单稳触发器接到INT0/T0/任意IO口,则可实现预(测)侦听了。

4、搜索一下ALOHA协议,没有CSMA/CD时,最早的网络就是这么干的。

使用特权

评论回复
8
学生D| | 2009-4-29 20:02 | 只看该作者

还有更简单的。

上篇是俺的原创。这一篇是别人抢先发表了,郁闷!

RS485接口芯片不用75176之类半双工驱动,而采用CAN总线驱动器82C250。

82C250的特点是:RX管脚不受控,网络上任何数据都能被单片机RXD收到。
这样,节点想发送就发送吧,由TXD经驱动器到达网络的数据都将回馈到单片机RDX接收缓冲器;如果接收字节与发送字节一致,说明该次发送未发生碰撞,顺利到达,否则,采用退避协议重发。

如能和上篇结合使用,多主发送协议就更简单、可靠了。

使用特权

评论回复
9
machunshui|  楼主 | 2009-4-29 21:20 | 只看该作者

谢谢

学生D在7楼提出的方案,网络上早已有之。

不知实际效果如何,怕这个网络上的方案是论文类方案,非工程实践方案。

学生D在8楼说的,还不太了解,查查看,

在此谢过

使用特权

评论回复
10
呆板书生| | 2009-4-29 21:59 | 只看该作者

原来谬种也就是这样流传的

使用特权

评论回复
11
machunshui|  楼主 | 2009-4-29 23:16 | 只看该作者

呆板书生,啥意思?

呆板书生,啥意思?

阴阳怪气的!

论坛里,好好说话,还是值得提倡的!

使用特权

评论回复
12
学生D| | 2009-4-30 09:45 | 只看该作者

如果不在乎经费的话,用SDLC通信控制器。

7楼方案,我10年前写的方案论证。现留有“实验装置及程序”。 4节点多主,当然谈不上退避协议。没有实际需求激励。现在早已摒弃不用了。

现在实际需求我们都用Intel通信控制器8044组网。美曰称“现场总线”。每次竞标均轻取。

SDLC通信控制器IX8x44功能完善,真正的RS-485网络。不需要任何“技巧”电路。

仍然用75176,8x44内部SIU状态寄存器自动记录网络N个状态,——好像是8个状态,当然包括“空闲”状态。

欲发送前,读取SIU_STATE,便可知网络状态。


使用特权

评论回复
13
学生D| | 2009-4-30 09:50 | 只看该作者

需要8044通信控制器驱动程序可以发给你。

KEIL环境下支持,C51编写的RTX任务。

使用特权

评论回复
14
cooperate| | 2009-4-30 10:06 | 只看该作者

听讲

    8044/8344太大了点,呵呵 
    学生D能否推荐几款 封装小一些、便于采购的SDLC通信控制器 先谢了

使用特权

评论回复
15
呆板书生| | 2009-4-30 11:20 | 只看该作者

根本就是不行

从硬件角度来看,一句话,就是不可能的。

对于挂在同一条485的总线上器件来说,不允许有两个器件同时处于发送状态,否则接口会烧坏!所以根本就不可能有多主这种情况。

离开了硬件,不知道还能怎么样能侦听。

这不就是谬种吗?

使用特权

评论回复
16
machunshui|  楼主 | 2009-4-30 11:30 | 只看该作者

好好说话,没人反对

对热心探讨,帮助的人,不论对错,我向来都是感谢.

好好说话,没人反对.

要是阴阳怪气,姑且不论说得对错,

一句话,懒得听!

使用特权

评论回复
17
焊锡丝| | 2009-4-30 12:35 | 只看该作者

用CAN吧。

不要怨书生,这是常识。

使用特权

评论回复
18
machunshui|  楼主 | 2009-4-30 13:47 | 只看该作者

怨书生了吗?

怨书生了吗?

讨厌有些人不好好说话.

使用特权

评论回复
19
machunshui|  楼主 | 2009-4-30 13:51 | 只看该作者

常识?

常识?

啥常识?

485总线冲突,数据发送会失败,

但是485几个字节的总线冲突,就会损坏总线上器件???

使用特权

评论回复
20
学生D| | 2009-4-30 14:08 | 只看该作者

修正一下常识。

看看俺老师发表在《单片机与嵌入式系统应用》2002年第1期上的这篇**:《关于...稳定性的探讨》

“MAX485芯片损坏的原因有2个:
 ①  通信线路上所有主、分机共用1个电源;
 ②  系统上电复位阶段,所有MAX485都处于输出状态。 

 2个条件共同作用才会造成MAX485损坏,只要消除任何一个条件,芯片就不会损坏。”

像75176这类RS485接口芯片,节点之间只要不共电源,即使多个75176/MAX485互相“顶牛”,也不会烧毁芯片。设计接口芯片的人没那么“笨”,这一点保护都考虑不到。
一个RS485上的多个节点之间,不可能保证任何时刻不发生顶牛状态。没那么容易烧坏。我们公司设计的多少套RS485系统,快10年了也没听客户反映过接口芯片(75176)损坏。

也许书生您会说:2个发送器短时间顶牛不会烧毁,时间长了不行。
我做的实验证明:把4个75176相应端并在一起,同时设置在发送输出状态,2个输出“1”,2个输出“0”。10分钟过后怎么样?恒温,一个也没坏。

理论上早就计算过了,datasheet上表明了,不会超过极限功率。有人设计在每个75176上串接限流电阻!一个100个节点的RS485网络需要另加200个限流电阻?!难道设计芯片的人不知道把限流电路做在芯片内部?要用户外加限流电阻?手册上没这样规定,这是我们自己的“创意技巧发现”?

注意:我的实验前提:4个75176各自独立电源。——“2个条件共同作用才会造成MAX485损坏,只要消除任何一个条件,芯片就不会损坏。”

独立电源的4个负载——75176驱动接口芯片,何处来额外的功率?仔细分析一下RS485驱动器内部电路。层层防护,或许还需要什么“戴维南定理”?如若您设计的系统,动不动烧片子,还是注意分析一下自己有什么不合规范的设计吧。别动不动先埋怨别人的芯片设计差劲。

先证实一下自己的问题:接上几个MAX485之类到总线上做做实验试试,(别忘记用若干不共地独立电源。)证明我那篇**的理论和实验是错的,是常识性错误,然后书生也论证一篇《关于...探讨的探讨的探讨》,投稿《单片机与嵌入式系统应用》编辑部,岂不更好。


多节点供电源怎么办?所以出现了82C250,怎么碰撞都不怕了。

使用特权

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

本版积分规则

153

主题

3224

帖子

4

粉丝