[CAN-bus/DeviceNet] 请教:CAN总线节点ID冲突的识别

[复制链接]
 楼主| 5185119 发表于 2007-7-27 12:54 | 显示全部楼层 |阅读模式
<br />&nbsp;&nbsp;&nbsp;在一个CAN总线系统中,如果出现两个节点的ID设置相同,肯定会出现冲突<br /><br />系统将无法正常运行,那么怎样在上电时就能马上识别出来并做出报警?
zlgCAN 发表于 2007-7-28 09:08 | 显示全部楼层

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

或ZLG自定的iCAN协议等。
太阳之母 发表于 2007-7-29 03:58 | 显示全部楼层

嘿嘿

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

嘿嘿

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

忽略了一个开机方式过程

DN是这样做的:<br />系统内各节点的开机通电是独立顺序进行的,就好像有一个人顺着总线走一遍,走到哪个节点位置,就开哪个设备。这样,在系统通电时间内,只可能有一个节点与已经上电的节点重复ID。节点开机时,第一个状态就是呼叫“谁与我同ID?”相同者——只可能有一个——响应,没有相同者,等待超时,本节点上电完成。一个一个来,最简协议。<br />&nbsp;&nbsp;&nbsp;&nbsp;如果认为系统是几十个节点同时上电,协议就复杂了。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;我这里有此协议C51程序。非常规范的有限状态转换图。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
wxj1952 发表于 2007-8-24 22:06 | 显示全部楼层

书上有

参考《基于现场总线DeviceNet的智能设备开发指南》张戟,谢剑英等编著。<br />西安电子科技大学出版社
qcpqlx 发表于 2007-12-18 10:01 | 显示全部楼层

求助

&nbsp;&nbsp;我刚开始学习canopen<br /><br />&nbsp;&nbsp;烦请wxj1952给小弟mail一份canopen协议程序和资料<br /><br />&nbsp;&nbsp;qcpqlx@tom.com<br /><br />&nbsp;&nbsp;谢!<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

5

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部