[CAN-bus/DeviceNet] CAN2.0技术规范学习之后,积累问题向各位请教

[复制链接]
5682|8
 楼主| jlsong1983 发表于 2008-10-29 18:15 | 显示全部楼层 |阅读模式
本人这几天较认真的学习了CAN技术规范2.0,但仍有些问题没有理解透彻,在此向各位提问:<br />1.错误被动从计数值128开始,那么错误主动从0开始吗?<br />2.如果错误主动状态从错误计数器为0开始便是,那么是不是错误主动状态下只要检测到5种错误中的一种就发送主动错误标志?<br />3.是不是主动错误标志发送出去以后,将破坏CAN总线的位填充规则,从而使其它站检测到位填充错误,从而根据自身是错误主动还是错误被动状态发送相应的主动错误标志或被动错误标志,从而使错误标志出现连续和叠加的局面,最长能出现12个位,这么理解对吗?<br />4.如果某站在发送数据帧过程中出现了错误,其它的节点就有可能发送主动错误标志,这时主动错误标志是不是就中断了原来数据帧的发送?控制器是如何让主动错误标志取得优先权,也是按照逐位的显隐性对比确定优先级吗?<br />5.如果某站发送的是被动错误标志,这时会不会中断数据帧的发送,被动错误标志的优先级是不是最低?即使发生了错误,是不是被中断的数据帧会自动重新传送,而没被中断的数据帧就不用自动重新传送?<br />6.假设两个站同时发送信息,优先级竞争使优先级低的信息不发送,这时该站发送的位与检测到的总线位不同,是否发生位错误?如果错误计数器为0,或者该站处于错误主动模式,该站是否发送主动错误标志?<br />7.&nbsp;”过载标志的形式破坏了间歇场的固定形式。因此,所有其他的站都检测到过载条件并与此同时发出过载标志”手册上的这句话怎么理解。还有在主动错误标志处“所有其他的站由此检测到错误条件并与此同时开始发送错误标志”。其它站如何区分是过载标志还是主动错误标志?是根据二者的传送时间段不同吗?<br />8.过载帧是不是用于数据帧和数据帧之间,以及远程帧和远程帧之间,还是数据帧与远程帧之间也可以交叉?<br />&nbsp;<br /><br />&nbsp;<br />
xhtxzxw 发表于 2008-12-5 10:31 | 显示全部楼层

嘿嘿

首先建议把广泛使用的&quot;主动错误&quot;和&quot;被动错误&quot;概念换成&quot;主动报错&quot;和&quot;被动报错&quot;,<br /><br />1.主动报错站点:只要检查到错误,它立即&quot;主动地&quot;发出错标识.&nbsp;<br />&nbsp;&nbsp;所谓&quot;出错标识&quot;,它本身就是一个&quot;错误的位序列&quot;(连续的6个显性位,不满足&nbsp;<br />&nbsp;&nbsp;CAN协议的&quot;最多5个连续的同性位&quot;要求),目的是&quot;主动地&quot;告诉大家:即使你们<br />&nbsp;&nbsp;没有发现&quot;刚才我已发现&quot;的错误,现在我&quot;以身作则&quot;出错啦!你们该看到这个<br />&nbsp;&nbsp;错误了吧!<br />2.被动报错站点:如果检查到错误,它只能干瞪眼&quot;被动地&quot;等别人(主动报错站<br />&nbsp;&nbsp;点)报错,等待的时候它可不能去动总线,直到识别出由主动报错站点发出<br />&nbsp;&nbsp;的&quot;错误的位序列&quot;,它才松了一口气:有人正式报错了!然后他就可以去竞争<br />&nbsp;&nbsp;总线,该干啥干啥<br />3.出错标识本身没有什么优先级的问题.<br />4.对于通过竞争得到总线使用权的发送站点来说,它在一边发一边听,有可能<br />&nbsp;&nbsp;(a).它自己就发现错误,它就干脆哗啦哗啦,乱发一气(连续的发六个同性位).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;就象你小时候在幼儿园练习写字,写错一个笔画你自己就不耐烦了,在纸<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上哗啦哗啦,乱画一气.目的就是告诉别人(别的站点),出错了!<br />&nbsp;&nbsp;(b).它自己没有发现错误,但作为主动报错的接收站点发现了错误(比如因为<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;线路长,干扰大引起的错误),这个发现错误的站点就会立即哗啦哗啦往总<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;线上乱发一气(连续的发六个显性位),就象你小时候在幼儿园练习写字,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;写错一个笔画你自己没发现,可老师(主动报错站点)发现了就不耐烦了,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在你的纸上哗啦哗啦,乱画一气.目的就是你自己以及告诉别人(发送站点<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;和别的站点),出错了!<br />&nbsp;&nbsp;(c).它自己没有发现错误,但作为被动报错的接收站点发现了错误(比如因为<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;线路长,干扰大引起的错误),这个发现错误的站点只能慢慢的等待,等待<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别的主动报错站点报错,如果别的主动报错站点没发现错误,那就继续等,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一直等到该发ACK的时候不给发送站发这个显性的ACK信号,当然了其他站<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;点可能会发这个ACK,那说明其他站点没有发生错误,没办法,别人能通信,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你不能!然后积攒到一定的时候,你就脱离总线吧!再继续等待一段时间,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;脱胎换骨,重新回到总线上(这个时候错误记录都清0了,你肯定是主动报<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;错站了).就象你小时候在幼儿园练习写字,写错一个笔画你自己没发现,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别的同学(被动报错站点)发现了但他不能说,嘿嘿(乱说话,老师要打屁股<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的),他就只能等,等老师来发现你的错误(等待主动报错站点报错),或者<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;老师没眼力,那就等到收作业的时候,不收你的(不发ACK),不过老师可能&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;主动来收的(给你发ACK),那你可没办法,继续等吧,等到你也当老师了(脱<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;胎换骨了),.........<br /><br />
松鼠的大树 发表于 2009-1-15 17:25 | 显示全部楼层

ls的比喻太牛了

一听就懂
fjhcpu 发表于 2009-3-21 15:07 | 显示全部楼层

很形象。。。。顶

  
lvyisu123 发表于 2013-1-22 14:47 | 显示全部楼层
你好,我想向你请教下can总线的相关知识。
1.消极错误节点在消极报错后是如何工作的,他接收到什么信号后进入间歇场,从而开始下一帧的发送或接收?
2.在间歇场的第一位和第二位如果出现显性,则总线进入超载,我想问这两个为是哪个节点发送到总线上来的?如果第三位出现显性位,总线又会以他为帧起始,这个为又是谁决定的?
wudexin521 发表于 2013-3-7 20:51 | 显示全部楼层
一楼很强大!
pallee 发表于 2013-3-12 20:06 | 显示全部楼层
呵呵,很形象的比喻。
wujitagongli 发表于 2013-3-28 22:13 | 显示全部楼层
回复很强大,但是我感觉最后一个还是有点不明白
zfggdxy3 发表于 2016-9-9 20:35 | 显示全部楼层
xhtxzxw 发表于 2008-12-5 10:31
**** 作者被禁止或删除 内容自动屏蔽 ****

学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

90

帖子

1

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