打印
[CAN-bus/DeviceNet]

请教:CAN总线节点ID冲突的识别

[复制链接]
5354|7
手机看帖
扫描二维码
随时随地手机跟帖
沙发
zlgCAN| | 2007-7-28 09:08 | 只看该作者

有应用层协议支持,比如DeviceNet、CANopen协议,

或ZLG自定的iCAN协议等。

使用特权

评论回复
板凳
太阳之母| | 2007-7-29 03:58 | 只看该作者

嘿嘿

LZ说法值得商榷。
1、不同节点有相同的ID不一定出现冲突,但一般会导致接受方无法判断报文来自于何处(但可以用数据域协议部分解决这个问题)。
2、是否出现冲突取决于是否不同的节点几乎同时发送报文,不管ID是否相同,如果几乎同时发送肯定会有冲突,冲突的结果是:有可能只有一个节点能成功发送(不同节点完全同时发送)或者谁也不能成功发送(不同节点不完全同时发送但发送持续的时间有重叠)。

使用特权

评论回复
地板
太阳之母| | 2007-7-29 04:05 | 只看该作者

嘿嘿

“判别ID是否相同(并处理之)”可能的解决方案:
开机后各节点发送特殊的身份识别报文,在数据域表明各自的身份,接收方(指定某个节点担当临时主机)通过报文数据域识别这些节点,并判定:不同数据域的节点是否有相同的报文ID?如果有,再采取进一步的处理措施,比如,由临时主机发送报文到某个(些)节点,令其使用指定的新的ID。基本上说,这属于高层的协议了。

使用特权

评论回复
5
wxj1952| | 2007-7-30 18:45 | 只看该作者

忽略了一个开机方式过程

DN是这样做的:
系统内各节点的开机通电是独立顺序进行的,就好像有一个人顺着总线走一遍,走到哪个节点位置,就开哪个设备。这样,在系统通电时间内,只可能有一个节点与已经上电的节点重复ID。节点开机时,第一个状态就是呼叫“谁与我同ID?”相同者——只可能有一个——响应,没有相同者,等待超时,本节点上电完成。一个一个来,最简协议。
    如果认为系统是几十个节点同时上电,协议就复杂了。

    我这里有此协议C51程序。非常规范的有限状态转换图。
     

使用特权

评论回复
6
wxj1952| | 2007-8-24 22:06 | 只看该作者

书上有

参考《基于现场总线DeviceNet的智能设备开发指南》张戟,谢剑英等编著。
西安电子科技大学出版社

使用特权

评论回复
7
qcpqlx| | 2007-12-18 10:01 | 只看该作者

求助

  我刚开始学习canopen

  烦请wxj1952给小弟mail一份canopen协议程序和资料

  qcpqlx@tom.com

  谢!

使用特权

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

本版积分规则

5

主题

7

帖子

0

粉丝