打印
[AVR单片机]

关于485通讯多主机冲裁的问题

[复制链接]
2147|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
le7524316|  楼主 | 2015-6-5 09:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
485通信采用单片机自动Uart驱动外部芯片Max485 够成485多主机通讯,485标志通讯是单主机,假设多主机同时发送必定会出现总线问题,能不能用单片机另外的引脚加个电路去采集485总线上的电平判断有没有站再发,有的话就延迟发送,但是单片机TTL电平通过什么电路去检测485总线的,本人硬件小白呀,只会看不会设计,我的这个想法可行不多主站?

相关帖子

沙发
ccxlslr| | 2015-6-5 12:42 | 只看该作者
首先,没定义协议,不知道一帧数据发完没有。其次,如果检测过慢,有可能检测的时候没有设备占用总线。过一会儿,就占用了。
如果定义好帧尾。在总线占用率不是很高的情况下。把校验做好,可靠性还是很高的。 也就是单片机随时都在分析总线上的数据。如果别的单片机一帧没发完,就等。可以参考CAN的方式。你可以通过电路,来硬件实现。不过要做好。
就是总线正常情况下为1,也就是不发送时。有0是就发送。将总线上的数据与自已发送的比较。如果不同,马上通过电路关断发送,同时告知单片机,有人几乎和你同时发信息。但它的优先级高。你发送失败。其实大家都发0,都检测到0,如果有人发1,或有人先发一会儿,由0变1,此时它检测到总线上的数据就与自己发送的不同,就关断发送,是关断,不是退出发送。单片机串口要把一个字节发完,所以必须硬件关断。当然这个做起来比较复杂。所以在要求不高,还是通过软件来实现最好、

使用特权

评论回复
板凳
airwill| | 2015-6-7 20:32 | 只看该作者
楼主虽然新人一个, 但提出了一个很深的问题, 鼓励一下楼主的深入思考.
楼上提出了一个方案, 想在底层 (物理层) 上参考 CAN 总线提出了一个思路, 但里面有个缺陷,  485 之于 CAN 的物理层定义是不同的, CAN 可以由显性电平0覆盖隐性电平1, 但 485 的1和0信号都是强输出, 0 不能覆盖1 (这也是 485 的通信能力强于 CAN 的原因), 所以物理层不能够实现仲裁机制.
所以 485 的仲裁机制是实现不了的. 楼主可以考虑令牌协议来实现多主机系统. 要了解详细的过程和方法可以网上去搜一下相关资料. 这里就不细述了

使用特权

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

本版积分规则

5

主题

9

帖子

0

粉丝