完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如题,大家知道485总线是主从式结构,靠主机轮询每个节点通讯。CAN总线则因为有防冲突仲裁机制,每个节点都可以主动和主机通讯。那么485能不能模拟CAN也搞个总线仲裁呢?
|
|
相关推荐
7个回答
|
|
用协议当然可以模拟,485、232之类的没有规定协议只规定了电平规范,而CAN则是从物理层到协议层都有规定的。
|
|
|
|
节点在无回应时延时重新请求就是,请求之前务必先侦听总线的空闲情况。
|
|
|
|
前述叫作突发模式协议,不是轮询。
|
|
|
|
你的目的是和主机进行通讯,而不是差出那个节点和你冲突。冲突检测协议中以太网算是最成功的例子了。
用485实现对等网络我们已前做过。也就是实现任何两点间的直接通讯。 4楼阳春兄弟的的方法大致可以,但有一点,等待节点回应的超时时间一般都会设得比较长,如果用这种超时来重发,那效率太低了。这个超时,我们当时也有,而且肯定也有,叫业务超时,一到了,就给上层回发送失败了。 我说说我们以产的方法吧,我们当前实现的是载波侦听多点接入/冲突检测(CSMA/CD): 节点空闲时,其实一直在帧听信道(485线)上有没有数据。(有些时候为了节能可以不做) 一个节点要发送数据时,判断信道是否空闲了一定的时间(如果之前没做帧听,那要现在做,如果之前做了,现在就可以直接判断,以减少判断时间)。如果是,则可以转入发送流程。 在发送每一字节时,同时也把相应的字节收回来,判断是否和发的一样(冲突检测),一但发现冲突。就会随机退避一定的延时槽(引入随机数和延时槽,以减少冲突风暴),现后再次进行帧听,发送。 说得比较粗,其实现是有几个参数比较重要的, 帧长、侦听时间、退避算法等。退避算法我们当时就是采用以太网的CSMA/CD。 在波特率比较高时,测试效果相当的好。但不适用用波特率低的情况,因为这样发送时间比较长,效果不好。 |
|
|
|
楼上,节点少时可能问题不大,节点多是不就乱套了。我要求是100个节点。好比100个人要和领导说话,如果同时只有几个人要说话到好说,如果人多呢,比如几十个人都同时要和领导讲话,每个人都发现乱了,怎么延时啊,每个人该怎么做?
|
|
|
|
参考一下以太网的仲裁机制就可以了,6L说的基本上就是。
|
|
|
|
把485的前端做得和CAN一样,就可以模拟了,基本思想就是反馈,只是速度会慢一些.
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-24 00:44 , Processed in 0.703696 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号