一种在can协议中实现消极错帧的方法及其装置的制作方法

文档序号:7685642阅读:175来源:国知局
专利名称:一种在can协议中实现消极错帧的方法及其装置的制作方法
技术领域
本发明涉及一种在CAN协议中实现消极错帧的方法及其装置,属于CAN 总线通信的技术领域。
背景技术
CAN是应用最广泛的现场总线,它主要用在汽车内各控制器间的通信。仅 2006年一年全世界就销售了 5亿个CAN控制器。在CAN近十六年的研究与应 用的历史中发表了大量文献,关注的中心是CAN能否提供有保障的通信服务, 因为汽车的安全与人的安全密切相关,没有可靠的通信服务,安全便无保障。 CAN是事件触发型通信协议,很多研究关心的是最坏响应时间的分析,已经有 了以理论分析为基础的应用工具软件,但对出错工况的假设很有限。另一些研究 关注出错工况与应对办法。例如在CAN协议规定的EOF域倒数一位发生错误时, 有可能引起接收节点间的不一致。还有就是有些节点由于故障而不停发送,阻碍 了正常通信。由于误码率不大,这些问题虽未完善解决,但CAN仍提供了比其 他协议更好的性能。
随着对汽车安全,环保,节能要求的进一步提高,汽车内与安全有关的应用 不断增多,对CAN能否提供安全攸关的通信服务须进一步研究。然而此时却发 现了以前未分析过的、植根于CAN协议本身的安全漏洞,不解决这个问题,已 有的应用可靠性也成了问题。本发明是第一个提出与解决这个问题的发明。

发明内容
在CAN协议中规定每一个检测出通信过程中出现错误的节点都要发报错帧 通知系统中的其它节点,以保证节点间数据的一致性。但是由于节点可能有误检 的可能,为了减少误检而造成的不良后果,根据出错状况以一种规则统计收发的 错误记分,再根据记分将节点分为主动报错型(Error active)(以下简称为主 动报错)、消极报错型(Error passive)(以下简称为消极报错)和离线型(Bus off) 三种状态。主动报错节点检测到错之后将主动通知其它接点,使所有节点都丢弃 这个出了错的帧,保证数据的一致性。处于消极报错的节点检到错后只是使自己丢弃该帧,它不影响其它节点的收发,其它节点该不该丢弃,由主动报错节点负 责决定。消极报错的节点检到错后将在下一Bit时发出消极报错帧(Passive error frame)。消极报错帧由二部分构成标志位与分界符。消极标志位(Passive error flag)由6个连续的隐位构成的,如果它从总线上读到6个连续的相同极性(显位 或隐位)的位,那么认为标志已发成功。然后它要发隐位来测试消极报错帧分界 符(errordelimiter)的开始处,如果它读回是隐位,那么它就再发7个隐位后认 为分界符结束。在分界符中如果有显位,将被视为新的错误。由于这个规定不能 保证所有节点收发开始时间的同步,有可能使消极报错节点丧失收发的机会,事 实上处于离线状态,从而丢失通信功能。本发明所要解决的技术问题是通过对消 极报错帧的修正,解决这一故障成为可能。
本发明的技术方案是 一种在CAN协议中实现消极报错帧的方法,其特 征在于,所述方法包括
由CAN协议中检错机构取得检得错误的类型、在帧中离开帧起始位的位置 {曰息;
由CAN协议中错误管理机构取得节点的状态信息;
由CAN协议中读入缓冲器取得从总线上读得的比特流(bit stream)以及 当前位离开帧内已知有关域的位置信息;
由CAN协议中状态自动机取得节点的当前收发状态信息,根据出错以后在 当前数据位前由总线上读得的比特流以及上述各信息对CAN协议中bit错、位 填充错、ACK错、CRC错和格式错的全局错与局部错的发生情景作逻辑推定, 选择输出8 bit到l bit不同的消极报错帧分界符长度消息,送到CAN协议中 状态自动机中控制消极报错帧分界符的部分;或在未被破坏的原数据帧或远程帧 的EOF域结束处输出令CAN协议中状态自动机复位到新帧收发前服务间隔将开 始状态的消息,从而控制CAN协议中消极报错帧的实现。
根据上述方法中所述的消极报错帧分界符长度至少为8 bit和2 bit二种。 为实现在CAN协议中实现消极报错帧的方法的装置,其特征在于,它包括 以下部件
由AN协议中检错机构取得检得错误的类型、在帧中离开帧起始位的位置信 息的输入部件;
5由CAN协议中错误管理机构取得节点的状态信息的输入部件;
由CAN协议中读入缓冲器取得从总线上读得的比特流(bit stream)以及 当前位离开帧内已知有关域的位置信息的输入部件; 由CAN协议中状态自动机取得的节点的当前收发状态信息的输入部件; 根据出错以后在当前数据位前由总线上读得的比特流及各输入部件内的输入 信息经逻辑处理部件推定CAN协议中bit错、位填充错、ACK错、CRC错 和格式错的全局错与局部错的发生情景,选择输出8 bit到1 bit的不同的 消极报错帧分界符长度消息,到CAN协议中状态自动机中控制消极报错帧分 界符的部分;或在未被破坏的原数据帧或远程帧的EOF域结束处处,输出令 CAN协议中状态自动机复位到新帧收发前服务间隔将开始状态的消息的部 分;从而实现CAN协议中消极报错帧。
根据上述一种在CAN协议中实现消极报错帧的方法的装置,其特征在于,所 述的逻辑处理部件输出的不同的消极报错帧分界符长度至少为8 bit、 2 bit 二种。
本发明的有益效果是本发明通过对消极报错帧的修正,或对CAN协议状 态自动机的复位,保证所有节点收发开始时间的同步,解决了消极报错节点可能 处于事实上离线的故障,改进了CAN协议通信的可靠性与带宽的利用率,提高 了应用CAN协议的汽车的安全性,并使目前广泛使用的网络设计工具软件有可 靠的理论依据,保证工业生产的延续性。


在在以下各图中使用了縮写A.E.Flag表示主动报错错误标志;A.E.Del表 示主动报错帧的分界符;I.M.表示服务间隔;SOF表示新帧开始位;P.E.Flag表 示消极报错错误标志;P.E.Del表示消极报错帧的分界符;EOF表示数据帧或远 程帧的帧结束域;ACK为认可域;CRC为循环容余校验域;D表示显位;R表 示隐位;B表示显位或隐位。
图1为CAN协议中的数据帧和报错帧,其中
图la)为CAN的数据帧;
图lb)为主动报错帧; 图lc)为消极报错帧;图2为消极报错接收节点检测到位填充错的情况示意图,其中
图2a)为由主动报错节点的引起消极报错帧的示意图2b)为全局性填充位错示意图2C)为全局性填充位错时消极报错接收节点有漏判的示意图; 图2d)为消极报错接收节点有误判的示意图3为消极报错接收节点在CRC分界符处检测到格式错的情况的示意图,
其中-
图3a)为由CRC-4与CRC之间开始的主动报错帧;
图3b)为总线上的显位或CRC处由主动报错节点发现BIT错的示意图3c)为消极报错接收节点误判的示意图3d)为消极报错接收节点误判同时有主动报错节点发现有CRC错的示意 图4为消极报错接收节点在ACK分界符处检测到格式错的情况的示意图,
其中
图4a)为由CRC-2与CRC之间开始的主动报错帧引起格式错的示意图; 图4b)为总线上有一全局性的ACK分界符错,所有节点同时发现错的示意 图4C)为消极报错接收节点误判的示意图4d)为消极报错接收节点误判同时有主动报错节点发现有CRC错的示意 图5为消极报错接收节点在EOF域第l、 2、或3位有格式错的情况的示意 图,其中
图5a)为由CRC-1与CRC之间开始的主动报错错误标志引起格式错的示意 图5b)为总线上有一全局性的EOF域格式符错,所有节点同时发现错的示意 图5c)为消极报错接收节点误判的示意图5d)为消极报错接收节点漏判CRC错的示意图6为消极报错接收节点在EOF域第4、 5、或6位有格式错的情况的示意图,其中 图6a)为总线上的显位错的示意图6b)为消极报错接收节点误判的示意图5c)为主动报错接收节点误判的示意图6d)为消极报错接收节点漏判总线上显位的示意图7为消极报错发送节点检测到位填充错的情况的示意图,其中
图7a)为消极报错发送节点误判的示意图7b)为全局性位填充错的示意图;;
图7C)为主动报错接收节点误判的示意图7d)为全局性位填充错而消极报错发送节点漏判的的示意图8为消极报错发送节点和消极报错接收节点检测到Bit错的情况示意图,
其中
图8a)为由一个主动报错节点误发报错帧引起的Bit错示意图; 图8b)为由一个主动报错节点误发报错帧引起的Bit错示意图; 图8C)为消极报错发送节点误判的示意图8d)为消极报错发送节点误判ACK Bit错的示意图9为消极报错发送节点在CRC分界符处检测到格式错的情况示意图,其
中--
图9a)为由CRC-4与到CRC之间开始的主动报错帧示意图9b)为总线上的全局性错的示意图9c)为消极报错发送节点误判的示意图9d)为消极报错发送节点误判且主动报错节点有CRC错的示意图10为消极报错发送节点检测到ACK错与消极报错接收节点CRC错的情
况示意图,其中
图10a)为消极报错发送节点误判示意图10b)为因主动报错接收节点有CRC错而无ACK响应的示意图; 图10c)为消极报错接收节点误判CRC的示意图; 图10d)为全局性CRC错的示意图11为消极报错发送节点在ACK分界符处检测到格式错的情况示意图,
8其中
图lla)为由CRC-2与到CRC之间开始的主动报错帧示意图llb)为总线上的显位错示意图IIC)为消极报错发送节点误判的示意图lld)为消极报错发送节点检到ACK分界符错且有主动报错接点有CRC 错示意图12为消极报错发送节点在EOF域第1、 2、或3位有格式错的情况示意 图,其中
图12a)为由CRC-1与到CRC之间开始的主动报错帧示意图12b)为总线上的显位错示意图12c)为消极报错发送节点误判的示意图12d)为消极报错发送节点误判ACK位示意图13为消极报错发送节点在EOF第4、 5、或6位有格式错的情况示意图, 其中
图13a)为总线上的显位错示意图13b)为消极报错发送节点误判的示意图;;
图13c)为主动报错接收节点误判的示意图13d)为消极报错发送节点漏判总线上显位示意图14为消极报错节点在需要发送消极报错报错帧时根据出错后比特流的变 化情况确定消极报错帧分界符长度的一种实现方案示意图15为消极报错节点在需要发送消极报错报错帧时根据出错后比特流的变 化情况确定消极报错帧分界符长度的又一种实现方案示意图。
在图14、 15中W—错发生时离SOF的位置,P—当前位离SOF的位置, EOF—初值为最大,以后由数据长度更新。
具体实施例方式
CAN是一种通信协议,它有多种物理实现,例如IS011898或IS011592,
但它的数据链路层规定是一样的。CAN有多种错误检测机制和错误约束机制。 根据出错情况,每一个节点的发送错计数器或接受错计数器按一定的规则增减, 节点依出错计数器的数值划归三种状态之一主动报错、消极报错或离线型。查到错的主动型的节点将在下一Bit时发出主动报错帧(Active error frame)。消极 报错节点检到错后将在下一Bit时发出消极报错帧(Passive error frame)。 CAN 协议采用不归零的信号编码,它有隐位和显位二种状态,当总线上发生这二种信 号的冲突时,总线的最终状态为显位。CAN协议有以下各种错误检测机制Bit 错、填充位错、CRC错、ACK错和格式错。在数据帧或远程帧中,发送节点发 出的位值与读回的位值不同时视为BIT错,它有二个例外在仲裁域发隐位而 读回显位;发消极报错标志而读到显位,接收节点发隐位ACK位而读回显位也 不是BIT错。CAN协议规定从帧开始到CRC分界符前的传送要满足位填充规贝IJ。 若发送帧的比特流有5个连续的相同信号时,发送节点应自动在其后插入一个相 反极性的位填充位,接收节点在收到的比特流中发现有6个连续的相同极性的信 号时就认为发生了填充位错,如无填充位错,它就将5个连续相同极性信号后的 填充位自动丢弃,以恢复原发送帧的比特流。CAN规定了数据帧,远程帧,报 错帧和过载帧等四种帧类型。发送数据帧或远程帧前必须有帧间空间,它的长度 为3Bit隐位的服务间隔(INTERMISSION)再加总线空闲时间。消极报错节点 在一次发送之后必须经过服务间隔和7Bit的禁止发送时间后才能进行新的发送。 关于CAN协议的详细描述参见标准ISO -11898-1, 2003,"Road Vehicles-Controller Area Network (CAN) -partl: Data link layer and physical signaling",并可参考Robert Bosch Gmbh, CAN specification 2.0, 1991 。 CAN协议 的格式错包括CRC分界符应为隐位,ACK分界符应为隐位,帧结束域(EOF)应 为隐位,出错帧分界符应为隐位。它们在CAN协议一致性测试国际标准IS016845 中有规定,详见ISO/DIS-16845, 2004,,,Road Vehicles-Controller Area Network (CAN) -Conformance Test Plan"。其中7.5.6款和8.5.13款是针对消极报错接收节 点和发送节点在发送消极报错帧时对消极报错帧分界符检査错误的测试方法。
图1为CAN协议中的数据帧和报错帧。图la)为CAN的数据帧。当总线为突 闲时,任一个节点发送的一个显位被视为帧开始(SOF)。在SOF之后是数据帧 的各个域仲裁域、控制域、数据域、CRC域、ACK域和帧结束域(EOF)。仲 裁域用于决定哪个帧将赢得总线上的发送权以及接收时帧的识别。控制域含有数 据域长度与其它一些信息。这二个域对CAN2.0A和CAN2.0B而言有不同的长 度与格式,有些位为协议的保留位,有些位有不同的定义,这些位并无专门的查错要求。数据域用于应用数据的传送。CRC域为存放由SOF到数据域结束处CRC 校验结果。ACK域用于发送节点校验帧的传送是否成功,如果至少有一个接收 节点正确接收到帧(CRC校验通过),它就会在ACK位处发一个显位。在CRC 域或ACK域的末尾位有相应的分界符,可供格式检查。EOF由7个隐位构成。 按CAN的规定,数据帧必须由称为帧间空间的部份分隔开。帧间空间由3bit的 服务间隔(Intermisskm)与任意长的总线空闲时间构成。远程帧除了没有数据域以 及RTR位(远程请求)的规定不同以外,与数据的构成相同,它也要求帧间空 间。
每种报错帧都由错误标志和报错帧分界符二部分构成。图lb)为主动报错帧, 其错误标志由6个连续的显位构成,该标志破坏了CAN的填充位规则,因此在 CRC分界符以前会被其它节点用填充位错检查机制检测出来,在CRC分界符以 后由格式错检査机制检测出来,其它节点就开始自己的报错帧。由于出错位置或 出错前比特流的的变化,其它节点开始报错帧的时间会有变化,这样就会形成长 度为6到12Bit的显位。报错帧分界符为8个隐位,为了节点间的同步,每个发 报错帧的主动型节点在发完错误标志后就发隐位,如果读回的是显位,它就继续 发隐位试探,如果读回的是隐位,就表示所有节点的主动型错误标志都发完了, 它就再发7个隐位结束报错帧。图lc)是消极报错帧。消极报错节点发6个连续 的隐位作为错误标志,但要读回6个连续的相同极性的位后才算被确认,否则顺 延,因此在读回的比特流中可能有a、 b、 c三部分构成的错误标志。其中a为显 位与隐位交织的部分,它的连续相同极性位数不足6位。b为6个连续相同极性 位部分,是对错误标志的确认。c为报错帧分界符开始前试探部分,是其它主动 报错节点的主动错误标志的部分。消极报错帧分界符的长度也是8个隐位。 一与本发明关系密切的还有一些标准条款为
*服务间隔(简写为I.M.)的第1,2位如出现显位,将视为请求过载帧(7.4.1 款与8.4.1款);
*服务间隔的第3位如出现显位,将视为新帧的开始位(SOF) (7.3.2款,
8.3.2款,8.4.3款和8.5.9款); *报错帧分界符或过载帧分界符的最后1位如出现显位,将视为请求过载
帧(7.4.3款和8.4.2款);*数据帧帧结束域(EOF)最后1位如出现显位,将视为请求过载帧(7.4.2 款)。
在Bosch CAN标准中有如下描述"为了使报错帧正确结束,消极报错节点 需要至少3Bit的总线空闲时间(若消极报错接收节点有本节点的局部错时),因 此总线不能负载到100%" (CAN specification 2.0 A section 3.1.3, CAN specification 2.0 B section 3.2.3)。然而它又说"在其它消息传送过程待发的消息 将在服务间隔后的第1位开始发送"(CAN specification 2.0 A section 3丄5, CAN specification 2.0 B section 3.2.5)。在IS011898-1中虽然没有提到第一段话,但fe 于在技术上的规定是一样的,本发明要提出的问题不因未提这段话而消失。由于 消息的发送时刻不存在协调机制,总线的空闲时间无法人为分配,消极报错节点 的报错帧难以保证正确结束。在下面描述的各种出错的情况下,可以说明不仅 消极报错接收节点有本节点的局部错时会出现报错帧难以保证正确结束,而且消 极报错发送节点有本节点的局部错时报错帧也难以保证正确结束;为保证报错帧 正确结束,有时3Bit的总线空闲时间是不够的;有时主动型极型接收节点有本 节点的局部错时也可能引起消极报错帧难以保证正确结束。
在以下各图中使用了縮写A.E.Flag表示主动报错错误标志;A.E.Del表示 主动报错帧的分界符;I.M.表示服务间隔;SOF表示新帧开始位;P.E.Flag表示 消极报错错误标志;RE.Dd表示消极报错帧的分界符;EOF表示数据帧或远程 帧的帧结束域;ACK为认可域;CRC为循环容余校验域;D表示显位;R表示 隐位;B表示显位或隐位。在所有节点均同时发现错的情况称为全局错,节点因
本地故障漏判或误判称为局部错。
图2是消极报错接收节点检测到位填充错的情况。在图2a)中一个主动报错接 收节点可能误判而发现错,发了主动报错错误标志,其它节点包括消极报错接收 节点对此主动报错错误标志作位填充错检测出来,所有节点(包括第一个误判的 主动报错接收节点)的报错帧同步结束,工作正常。在图2b)中所有节点同时发 现总线上的位填充错,它们的报错帧同步结束,工作正常。图2c)中消极报错 接收节点由于存在本地故障(例如千扰)第一次漏判了总线上的错,但是它对其 它节点的主动报错错误标志还是检测出了。它的消极错误标志在其它主动报错帧 的分界符中被确认,然而它的消极报错帧分界符要在其它节点的服务间隔之后三位才结束。如果其它节点有挂起待发的帧,这些帧就会在服务间隔之后立即开始 发送,新帧的SOF会被该消极报错接收节点视为格式错,它就开始一个新的消 极报错帧。由于它的消极报错帧比别人结束迟,它就没机会参预竞争发送,由于 在别人的新帧开始时就处于出错状态,它就无法正确接收新帧,这就是一个事实 上的离线状态。该消极报错接收节点要等待同步的机会。有二种可能可以让它再 与其它节点同步甲)再出类似图2a)、图2b)的错;乙)总线上有足够的空闲
时间。何时能满足这种条件是不确定的。在图2d)中消极报错接收节点由于本地
故障误判了错,而其它节点没发现有错,此时消极报错接收节点的消极报错帧直
到EOF部分才被确认,它的表示消极报错帧分界符超出了其它节点新帧开始部 分,与图2c)的情况一样出现了不同步问题。将图2c)与图2d)连起来,或将图 2d)与图2d)连起来,我们就得到一种结果在一次本地故障之后,其它节点越是 正常工作,该消极报错接收节点不能正常收发的时间就越长。该消极报错接收节 点要等到所有挂起的消息都发送完,总线上有了足够的空闲时间才会恢复与其它 节点的同步。所有挂起的消息要发送完的条件等效于CAN系统中最大的消息最 坏传送时间, 一般是系统中优先级最低的消息的最坏传送时间。当总线上的空闲 时间不够长时,例如为5Bit时,其它节点的SOF将处于该消极报错节点服务间 隔的第2位,从而使该消极报错节点开始一个过载帧,这个过载帧虽然提供了节 点间同步的机会,但是它浪费了通信带宽。这种带宽浪费以及节点事实上的离线 并没有为以前的CAN系统中消息最坏传送时间分析方法考虑进去,使得以这些 分析方法为基础的工具软件提供的判定结果不准确,后果是CAN系统提供的服 务的不准确性,车辆的安全没有保证。
下面分析其它错误情况,只要产生了节点的不同步,就可能产生相同的后果。
在有些规模很小的系统里,如果只留下一个主动报错接收节点,而它又由于 本地故障误判了错,发一个主动报错错误标志,这个主动报错错误标志被所有其 它消极报错节点所响应,其比特流的解读与图2c)相同,会造成所有消极报错节 点失去同步。它们无法对主动型节点新发的帧作出ACK,对这种额外的出错, 主动报错节点将发新的主动报错帧,所有节点在这个报错帧结束时达到同步,但 这一过程使主动报错节点的发送错计数器加8,'向消极报错状态进了一步。
图2及以下图3到图13各图提供了消极报错节点在CAN帧收发过程中可能
13出现的各种出错情况,从而可以推出数据流变化的因果关系,以及为消极报错节
点与其它节点正确同步所需的消极报错分界符长度。
图3是消极报错接收节点在CRC分界符处检测到格式错的情况。在图3a)中
由一个主动报错节点在CRC-4与CRC之间开始的主动报错错误标志破坏了 CRC 分界符,这个主动报错帧可能是主动报错接收节点的误判造成,也可能是主动报 错发送节点发现了 Bit错。由于主动报错错误标志出现在检出CRC分界符格式 错前,CRC错可能一般已存在,其它节点因CRC分界符错而开始的主动报错错 误标志将与CRC错主动报错错误标志重叠。在此种情况下报错帧同步结束,工 作正常。图3b)是总线上有一个全局性的CRC分界符错,所有节点同时发现错, 它们的报错帧同步结束,工作正常。图3c)是消极报错接收节点由于本地故障(桐 如干扰)误读了CRC分界符,其它节点未发现错,此时消极报错接收节点就失 去了同步。图3d)是有节点存在CRC错,且消极报错接收节点有CRC分界符误 读的情况,此时所有节点又是同步的。
图4是消极报错接收节点在ACK分界符处检测到格式错的情况。在图4a)中 由 一个主动报错节点在CRC-2与CRC之间开始的主动报错错误标志破坏了 ACK 分界符,所有其它节点响应的主动报错错误标志相重叠,报错帧的结束处是同步 的。这种情况出现概率很小,因为出现时必然有CRC分界符处的格式错,在那 里消极报错接收节点的报错帧已经开始了,消极报错接收节点不再认为这一段比 特流是原来的数据帧或远程帧,而是把它看作消极错误标志确认过程的一部分。 图4b)是总线上有一个全局性的ACK分界符错,所有节点同时发现错,它们的 报错帧同步结束,工作正常。图4c)是消极报错接收节点由于本地故障(例如干 扰)误读了ACK分界符,其它节点未发现错,此时消极报错接收节点就失去了 同歩。图4d)是有节点存在CRC错,且消极报错接收节点有ACK分界符误读的 情况,此时所有节点又是同步的。
图5是消极报错接收节点在EOF第l、 2、或3位有格式错的情况。在图5a) 中由一个主动报错节点在CRC-1与CRC之间开始的主动报错错误标志破坏了 EOF第1、 2、或3位,所有其它节点响应的主动报错错误标志相重叠,而消极 报错接收节点的报错帧的结束处是不同步的。这种情况出现概率更小,因为出现 时必然有CRC分界符处或ACK分界符的格式错,在那里消极报错接收节点的
14报错帧已经开始了,消极报错接收节点不再认为这一段比特流是原来的数据帧或 远程帧,而是把它看作消极错误标志确认过程的一部分。图5b)是总线上有一个 全局性的EOF格式符错,所有节点同时发现错,它们的报错帧同步结束,工作 正常。图5c)是消极报错接收节点由于本地故障(例如干扰)误读了 EOF内的 信号,其它节点未发现错,此时消极报错接收节点就失去了同步。图5d)是有节 点存在CRC错,且消极报错接收节点漏判CRC错的情况,此时它是不同步的。 图6是消极报错接收节点在EOF第4、 5、或6位有格式错的情况。在图6a) 中总线上有全局性的错并为所有节点同时发现错,它们的报错帧同步结束,工作 正常。图6b)是消极报错接收节点由于本地故障(例如干扰)误读了 EOF内的信 号,其它节点未发现错,此时消极报错接收节点就失去了同步。在这种情况下要 使该消极报错接收节点同步,总线空闲时间在最坏情况时需IO位时间,而不是 Bosch CAN标准所说的3位。图6c)是有一个主动报错接收节点因本地故障误判 开始一个报错帧,这个帧被其它主动报错接收节点和消极报错接收节点同时检测 出,它们的报错帧同步结束,工作正常。图6d)是消极报错接收节点第一次漏检 了总线上的显位,但其它主动报错接收节点的报错帧它查到了,此时该消极报错 接收节点是不同步的。
图7是消极报错发送节点检测到位填充错的情况。图7a)是消极报错发送节点 误判而发的消极错误标志为其它主动报错节点所响应,消极报错帧与其它报错帧 最后是同步的。在图7b)中所有节点同时发现总线上的位填充错,它们的报错帧 同步结束,工作正常。在图7c)中一个主动报错接收节点可能误判而发现错,发 了主动报错错误标志,其它节点对此主动报错错误标志作位填充错检测出来,消 极报错发送节点可能以位填充错或Bit错检测出来,所有节点(包括第一个误判 的主动型接收节点)的报错帧同步结束,工作正常。图7d)中消极报错发送节 点由于存在本地故障(例如干扰)第一次漏判了总线上的错,但是它对其它节点 的主动报错错误标志还是检测出了。此种情况下它失去了同步。
图8是消极报错发送节点和消极报错接收节点检测到Bit错的情况。在图8a) 中由一个主动报错接收节点误判位填充错,发的主动报错错误标志造成消极报错 发送节点的Bit错,其它节点在主动报错错误标志作位填充错检出而继发主动报 错错误标志,在这种情况下最后所有节点是同步的。图8b)与图8a)仅有微小的差别,它也是同步的。图8c)是消极报错发送节点发现Bit错后发了消极报错错 误标志,引起其它节点响应的情况,所有节点是同步的。图8d)是消极报错接收 节点正确接收,发了 ACK,但回读时由于本地故障(例如干扰)而误读产生的 Bit错。此时它的消极错误标志在EOF域中确认,它的消极报错帧分界符要在其 它节点的服务间隔之后三位才结束,因此失去了与其它节点的同步。在总线有硬 件故障,信号搭接在隐位电平时,ACK位的Bit错将是全局性的,但其后主动报 错接收节点也无法发出主动报错错误标志,所以其后的比特流也都是隐位。此时 所有节点是否同步不再有意义,需要借助于硬件的容错能力。
图9是消极报错发送节点在CRC分界符处检测到格式错的情况。在图9a)中 由一个主动报错节点在CRC-4与CRC之间开始的主动报错错误标志破坏了 CRC 分界符,这个主动型报错帧可能是主动报错接收节点的误判造成。由于主动报错 错误标志出现在检出CRC分界符格式错前,CRC错可能一般已存在,其它节点 因CRC分界符错而开始的主动报错错误标志将与CRC错主动报错错误标志重 叠。在此种情况下报错帧同步结束,工作正常。图9b)是总线上有一个全局性的 CRC分界符错,所有节点同时发现错,它们的报错帧同步结束,工作正常。图 9c)是消极报错发送节点由于本地故障(例如干扰)误读了CRC分界符,其它节 点未发现错,二者对以后的比特流有了不同的理解,此时消极报错接收节点就失 去了同步。图9d)是有节点存在CRC错,且消极报错发送节点有CRC分界符误 读的情况,此时所有节点又是同步的。
图10是消极报错发送节点检测到缺ACK错与消极报错接收节点CRC错的 情况。在图10a)中消极报错发送节点的误判ACK位,造成对以后比特流的解读 不一致,消极报错发送节点与其它节点不同步。图10b)是总线上有一个全局性的 CRC错,而所以没有ACK,此时报错帧同步结束,工作正常。图10c)是消极报 错接收节点由于本地故障(例如干扰)误判了 CRC,其它节点未发现错,此时 消极报错接收节点就失去了同步。图10d)是有消极报错发送节点节点存在CRC 错,且消极报错接收节点也有CRC错的情况,此时所有节点又是同步的。
图11是消极报错发送节点在ACK分界符处检测到格式错的情况。在图lla) 中由一个主动报错节点在CRC-2与CRC之间开始的主动型错误标志破坏了 ACK 分界符,所有其它节点响应的主动报错错误标志相重叠,报错帧的结束处是同步
16的。这种情况出现概率很小,因为出现时必然有CRC分界符处的格式错,在那 里消极报错接收节点的报错帧已经开始了,消极报错接收节点不再认为这一段比 特流是原来的数据帧或远程帧,而是把它看作消极错误标志确认过程的一部分。 图lib)是总线上有一个全局性的ACK分界符错,所有节点同时发现错,它们 的报错帧同步结束,工作正常。图llc)是消极报错发送节点由于本地故障(例 如干扰)误读了ACK分界符,其它节点未发现错,此时消极报错接收节点就失 去了同步。图4d)是有节点存在CRC错,且消极报错发送节点有ACK分界符误 读的情况,此时所有节点又是同步的。
图12是消极报错发送节点在EOF第l、 2、或3位有格式错的情况。在图12a) 中由一个主动报错节点在CRC-1与CRC之间开始的主动报错错误标志破坏了 EOF第1、 2、或3位,所有其它节点响应的主动报错错误标志相重叠,而消极 报错接收节点的报错帧的结束处是不同步的。这种情况出现概率更小,因为出现 时必然有CRC分界符处或ACK分界符的格式错,在那里消极报错发送节点的 报错帧已经开始了,消极报错发送节点不再认为这一段比特流是原来的数据帧或 远程帧,而是把它看作消极错误标志确认过程的一部分。图12b)是总线上有一个 全局性的EOF格式错,所有节点同时发现错,它们的报错帧同步结束,工作正 常。图12c)是消极报错发送节点由于本地故障(例如干扰)误读了 EOF内的信 号,其它节点未发现错,此时消极报错接收节点就失去了同步。图12d)是有节点 存在CRC错,有的没有,且消极报错发送节点在前面没发现错的情况,或者存 在全局性CRC错,消极报错发送节点又误判了 ACK位。此时它是不同步的。
图13是消极报错发送节点在EOF第4、 5、或6位有格式错的情况。在图13a) 中总线上有全局性的错并为所有节点同时发现错,它们的报错帧同步结束,工作 正常。图13b)是消极报错发送节点由于本地故障(例如干扰)误读了 EOF内的 信号,其它节点未发现错,此时消极报错发送节点就失去了同步。在这种情况下 要使该消极报错发送节点同步,总线空闲时间在最坏情况时需IO位时间,而不 是Bosch CAN标准所说的3位。图13c)是有一个主动报错接收节点因本地故障 误判开始一个报错帧,这个帧被其它主动报错接收节点和消极报错发送节点同时 检测出,它们的报错帧同步结束,工作正常。图13d)是消极报错发送节点第一次 漏检了总线上的显位,但其它主动报错接收节点的报错帧它查到了,此时该消极
17报错发送节点是不同步的。
根据上述出错的各种情况,为使消极报错节点出错后能够自动地达到与其它 节点的同步,应该改变原CAN协议固定消极报错报错帧分界符长度为8的规定。 比较精确的同步是消极报错帧结束时也是其它节点主动型报错帧或正常数据或 远程帧结束的时候。为此,消极报错帧分界符的长度可以在8Bit,2Bit, 1Bit中根 据出错情景调整,或在正常数据或远程帧结束时的CAN通信协议状态自动机的 复位信号来完成同步。选用不同的帧分界符的长度也意味着修改CAN通信协议 状态自动机的复位时间。也存在其它调整的办法,但是有可能引起性能或总线效 率的下降。例如将消极报错帧分界符的长度可以在8Bit, 1Bit中间调整,此时消 极报错节点的消极报错帧可能比其它节点早一位结束,于是它发新帧的SOF时 间将是其它节点复务间隔的第3位处,按CAN协议的规定,其它节点将接收该 SOF以及其后的帧。但是这样做虽然不出现消极报错节点事实上离线状态的故 障,但是等效于将该消极报错节点的优先级提高了,使原优先级高的消息得不到 及时发送,出现了与CAN协议按优先级取得总线控制权的基本原则相背离的行 为。
又如,若为简化软硬件而将消极报错帧分界符的长度统一为2Bit,消极报错节 点提前于其它节点的同步时刻时(应为8 Bit时),它发的新帧的SOF将在其它
节点主动报错帧分界符或帧结束域内,成为它们的格式错,它们的主动报错帧标 志反过来成为该消极报错节点的填充错,新的消极报错帧标志将在其它节点主动 报错帧分界符内确认,主动报错帧分界符余下的2 Bit正好与统一为消极报错帧 分界符一致,从而实现所有节点的同步。这虽然是可行的同步办法,但是它使不 同出错情况下恢复正常同步工作的时间有了不确定性,无效地占用带宽,特别是 对发生在帧结束域内的误判,仍要延长到下一帧的结束之后才能有恢复同步的机 会,这使下一帧的正确接收也不可能。CAN协议产品是一个成熟的竞争性非常 强的市场,因此这种以牺牲性能求取结构简单的办法是市场难以接受的。其它固 定长度消极报错帧分界符的选择比该选择更差,它们会带来优先级倒置,同步恢 复时间与出错情况相关,下一帧的正确接收也不可能,或者与原来一样处与bus off状态等缺点或问题。因此,修改为统一的消极报错帧分界符长度不能达到满 足出错后消极报错节点立即实现同步的性能要求。
18图14是为消极报错节点在需要发送消极报错报错帧时根据出错后比特流的 变化情况,调整消极报错帧分界符长度或给出状态自动^l复位信号,使出错的消 极报错节点能与系统中的其它节点在新帧收发开始时达到同步的方法及或装置, 它可以由硬件与/或软件构成。它从CAN通信控制器的检错机构得到第一次检出 错的消息及其位置(w),从总线回读机构得到读回的比特流,从执行收发位流控 制的状态自动机里得到当前位(p)所处的域的消息,以及帧结束域的预计位置 (EOF)。本设计的输出是消极报错帧分界符长(Dd),它被送到CAN执行收发 位流控制的状态自动机中有关消极报错帧分界符位流控制部分,当消极报错帧分 界符长度到后,状态自动机自动进入新帧收发前服务间隔将开始的状态。本设计 的另一个输出是一复位信号(Reset),它被送到CAN执行收发位流控制的状态自 动机中,当Reset^时,CAN执行收发位流控制的状态自动机就复位到新帧收 发前服务间隔将开始的状态。当节点在总线上收到有效的符合CAN协议要求的 帧开始信号(SOF)后,就对本设计进行初始化p=l; EOF=255 (或一个比CAN 可能的最大帧长还要大的任意数);标识位Reseti;erro产O(未发现错);Delset=0 (消极报错帧分界符长度设定未完)。在每次读回1Bit后,就执行p,+l更新当 前比特流位置并按本设计流程运行一次。当错误发生在CAN协议控制域的数据 长度(DLC)后,CAN就能确定DLC之后未加填充位的帧结束位的位置EOF=p+ 数据长度+CRC域长度+ACK域长度+EOF域长度,对EOF更新。在DLC到CRC 分界符之间,CAN还要执行位填充,每发现一次合法的位填充,就执行一次 EOF+l。当CAN检错机构得到第一次检出错的消息后就使erroFl。
本设计流程运行时,如无错(error=0)或消极报错帧分界符长度已设好时 (Delset=l),就实际上是空循环。否则就按总线上的比特流进行判断。如果p〈EOF 且在w与p之间检测到6个连续的显位,取消极报错帧分界符长度Del=8bits, 这符合情景图2a), 2b), 3a), 3b), 3d), 4a), 4b), 4d), 7b), 7c), 8a), 8b), 9a), 9b), 9(i), 10b), 10d), 11a), llb), lld)时消极报错节点同步的要求。如果p<EOF-l且在w与 p之间检测到6个连续的隐位,取消极报错帧分界符长度Del=2bits,这适用于情 景图2c), 2d), 3c), 7a), 7d), 8c), 8d), 9c), 10a)。其中图7a), 8c)不理想,它应该是 Del=8bits而这里用了 Del=2bits,但是这里不会引起问题,因为图7a), 8c)是消极 报错发送节点出错,虽然它的消极报错帧分界符短了,会使它的服务间隔早于其它节点,但按CAN规定,消极报错发送节点在服务间隔之后应有8bits的挂起发 送(suspend transmission)时间,现在的做法相当于縮短了挂起发送的时间,其它 节点有待发送的消息仍可优先于该节点发送。当错误发生在EOF域而(EOF-l) (EOF) 二位的信号为"RR"时,代表消极报错节点有本地故障造成错而其它主 动型节点未发现错的情况,即图4c), 5c), 6b), 10c), llc), 12c)和13b),此时已有 p-EOF,对消极报错节点状态自动机的复位可保证消极报错节点的同步。当这二 位为"RD"时有二种可能1)在EOF处有全局性故障,此时所有节点开始过载 帧,本设计取在EOF处复位,消极报错节点就在其服务间隔的第一位发现显位, 它就随后也发过载帧,这些过载帧重叠,最后大家是同步的;2)在EOF处仅有 消极报错节点的本地故障,其它节点没发现错,所以它们接下去是服务间隔,本 设计对消极报错节点在EOF处进行了复位,所以接下去也是服务间隔,所以节 点间是同步的。当这二位为""DR"时,即图5a), 5d), 12a)和12d)时取Del-2bits 可使节点同步。当这二位为"DD"时,有二种可能性,若从w到p有6个连续的 D时,像图5b), 6a), 6c), 8a), 8b), 12b), 13c)和13a)时,取Del-8bits可使节点同 步。否则,如图6d)和13d)时取Del-2bits可使节点同步。 .
图15是消极报错节点根据出错情况以及后继的比特流调整消极报错帧分界符 长度或给出状态自动机复位信号,使出错的消极报错节点能与系统中的其它节点 在新帧收发开始时达到同步的方法及或装置的另一种实现,它可以由硬件与/或 软件构成。它从CAN通信控制器的检错机构得到第一次检出错的消息及其位置 (w)和错误的类型(如无直接的详细错误分类消息,就由另加的环节根据错误类 别与位置进行推导),已从总线回读机构得到读回的比特流,从执行收发位流控 制的状态自动机里得到当前位(p)所处的域的消息以及本节点收发状态,以及帧 结束域的预计位置(EOF)。本设计的输出是消极报错帧分界符长(Del),它被送 到CAN执行收发位流控制的状态自动机中有关消极报错帧分界符位流控制部 分,当消极报错帧分界符长度到后,状态自动机自动进入新帧收发前服务间隔将 开始的状态。本设计的另一个输出是一复位信号(Reset),它被送到CAN执行收 发位流控制的状态自动机中,当Reset-l时,CAN执行收发位流控制的状态自 动机就复位到新帧收发前服务间隔将开始的状态。当节点在总线上收到有效的符 合CAN协议要求的帧开始信号(SOF)后,就对本设计进行初始化p=l;EOF=255(或一个比CAN可能的最大帧长还要大的任意数);标识位ReseM);erroFO(未 发现错);Delset-O (消极报错帧分界符长度设定未完)。在每次读回lBit后,就 执行p=p+l更新当前比特流位置并按本设计流程运行一次。当错误发生在CAN 协议控制域的数据长度(DLC)后,CAN就能确定DLC之后未加填充位的各域 的位置,例如CRC域,ACK域,EOF域并加以填充位的修正。例如帧结束位的位 置EOF-p+数据长度+CRC域长度+ACK域长度+EOF域长度,对EOF更新。在 DLC到CRC分界符之间,CAN还要执行位填充,每发现一次合法的位填充; 就执行一次EOF+l。在需要另加环节推出出错详细分类的场合,要对CRC域, ACK域位置像EOF—样设初值,并根据填充位加以修正。当CAN检错机构得 到第一次检出错的消息后就使errors 。
本设计流程运行时,如无错(erro产0)或消极报错帧分界符长度已设好时 (Delset=l),就实际上是空循环。否则就按总线上的比特流进行判断。CAN的错 误类型不是互斥的,当同时发生几种类型的错时,本设计用判断的先后加以处理。 当发生Bit错,且消极报错节点为发送节点时,取De^8bits,满足图8a),8b),8c) 情况时同步的要求。如为接收节点,取De—2bits,满足图8d)时同步的要求。发 现填充位错时,只要根据w之后是否有紧接的连续6个D,若有,则取Del=8bits, 满足图2a), 2b), 7b), 7c)情况时同步的要求。若无,则取Del=2bits,满足图2c), 2d), 7a), 7d)情况时同步的要求。发现CRC错时,只要根据w之后第4位是否为D判 定,若是,则取Del-8bits,满足图10d)时同步的要求。若不是,则取DeI-lbits, 满足图10c)时同步的要求。发现ACK错时,只要根据w之后第2位是否为D判 定,若是,则取De—8bits,满足图102b),时同步的要求。若不是,则取Del-2bits, 满足图10a)时同步的要求。发现CRC分界符错时,只要根据w之后第3位是否 为D判定,若有,则取Del-8bits,满足图3a), 3b), 3d),9a), 9b), 9d)情况时同步的 要求。若不是,则取Del=2bits,满足图3c), 9c)情况时同步的要求。发现ACK 分界符错时,只要根据w之后第l位是否为D判定,若是,则取De卜8bits,满 足图4a),4b), 4d), lla), llb), lld)情况时同步的要求。若不是,则取Del=lbits, 满足图4c), llc)情况时同步的要求。发生在EOF域内的格式错在p-EOF及其后 时处理。当(EOF-l)(EOF)二位为RR或RD时输出对消极报错节点壮态自动机的 复位信号,满足图5c), 6b), 12c), 13b)情况时同步的要求。当(EOF-l)(EOF)二位为
21DR时取Del=2bits,满足图5a), 5d), 12a), 12d)情况时同步的要求。当(EOF-l)(EOF) 二位为DD时要区别对待,当w到p间为连续6D时取Del=8bits,满足图5b), 6a), 6c),12b), 13a)情况时同步的要求,否则取De—2bits,满足图6d), 13d)情况时同步 的要求。
本领域的一般技术人员不难根据上述出错情景与出错后总线上比特流因果 关系的描述以及本发明的特征设计出各种变种软硬件方案,来解决消极报错节点 在各种出错情况下,恢复该节点与其它节点收发时刻的同步。
权利要求
1.一种在CAN协议中实现消极报错帧的方法,其特征在于,所述方法包括由CAN协议中检错机构取得检得错误的类型、在帧中离开帧起始位的位置信息;由CAN协议中错误管理机构取得节点的状态信息;由CAN协议中读入缓冲器取得从总线上读得的比特流(bit stream)以及当前位离开帧内已知有关域的位置信息;由CAN协议中状态自动机取得节点的当前收发状态信息;根据出错以后在当前数据位前由总线上读得的比特流以及上述各信息对CAN协议中bit错、位填充错、ACK错、CRC错和格式错的全局错与局部错的发生情景作逻辑推定,选择输出8bit到1bit不同的消极报错帧分界符长度消息,送到CAN协议中状态自动机中控制消极报错帧分界符的部分;或在未被破坏的原数据帧或远程帧的EOF域结束处输出令CAN协议中状态自动机复位到新帧收发前服务间隔将开始状态的消息,从而控制CAN协议中消极报错帧的实现。
2. 根据权利要求1所述的一种在CAN协议中实现消极报错帧的方法,其特征 在于,所述的消极报错帧分界符长度至少为8 bit和2 bit 二种。
3. 为实现在CAN协议中实现消极报错帧的方法的装置,其特征在于,它包括 以下部件-由AN协议中检错机构取得检得错误的类型、在帧中离开帧起始位的位置信 息的输入部件;由CAN协议中错误管理机构取得节点的状态信息的输入部件; 由CAN协议中读入缓冲器取得从总线上读得的比特流(bit stream)以及 当前位离开帧内已知有关域的位置信息的输入部件; 由CAN协议中状态自动机取得的节点的当前收发状态信息的输入部件; 根据出错以后在当前数据位前由总线上读得的比特流及各输入部件内的输入 信息经逻辑处理部件推定CAN协议中bit错、位填充错、ACK错、CRC错 和格式错的全局错与局部错的发生情景,选择输出8 bit到1 bit的不同的 消极报错帧分界符长度消息,到CAN协议中状态自动机中控制消极报错帧分界符的部分;或在未被破坏的原数据帧或远程帧的EOF域结束处处,输出令 CAN协议中状态自动机复位到新帧收发前服务间隔将开始状态的消息的部 分;从而实现CAN协议中消极报错帧。
4.根据权利要求3所述一种在CAN协议中实现消极报错帧的方法的装置,其 特征在于,所述的逻辑处理部件输出的不同的消极报错帧分界符长度至少为 8 bit、 2 bit 二种。
全文摘要
本发明公开了一种在CAN协议中实现消极错帧的方法及其装置,本发明通过对出错后数据流的变化情况,确定消极报错帧分界符长度,作消极报错帧的修正,或对CAN协议状态自动机的复位,保证消极报错节点与所有节点收发开始时间的同步,解决了消极报错节点可能处于事实上离线的故障,改进了CAN协议通信的可靠性与带宽的利用率,提高了应用CAN协议的汽车的安全性,并使目前广泛使用的网络设计工具软件有可靠的理论依据,保证工业生产的延续性。
文档编号H04L1/00GK101494519SQ20081003873
公开日2009年7月29日 申请日期2008年6月10日 优先权日2008年6月10日
发明者杨福宇 申请人:杨福宇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1