王睿朝,陈思嘉,徐成竹,卫 威,方伟家
(北京福田戴姆勒汽车有限公司,北京 101400)
随着汽车电子电气技术的不断发展,车载总线上的电子控制单元不断增加,而各电控单元间的信息交互也更加频繁,这也导致总线错误的发生几率大大提升。为保证整个网络的稳定运行,主机厂会对所有电控单元的网络行为作出统一的定义。当检测到总线错误时,所有电控单元都应依据主机厂既定的策略作后续处理。
应答:所有接收方应检查接收数据帧的一致性,并应对一致的帧进行应答,对不一致的帧进行标记。未被应答的帧已损坏并应被发送节点标记。图1为CAN数据帧格式。
应答场:应答场为2位,包括应答间隙和应答分隔符。在应答场中,发送节点应发送2个隐性位。如图2所示。
应答间隙:所有接收到匹配的CRC序列的节点,在应答间隙发送应答 (发送1个显性位覆盖发送节点发送的隐性位)。应答间隙电平变化如图3所示。
图1 CAN数据帧格式
图2 应答场
应答分隔符:作为应答场的第2个位,应答分隔符应该是1个隐性位。因此,应答间隙应被2个隐性位包围 (CRC分隔符,应答分隔符)。
应答错误:无论何时只要发送方在应答间隙检测不到显性位 (发送方发送的报文没有被其他任何节点正确接收)都应检测到应答错误。应答错误可被任何节点检测出。
图3 应答间隙电平变化
只要检测到一个错误,LLC子层都应得知。因此,MAC子层应发起错误标志的传输。CAN的层结构如图4所示。
错误帧由2个不同的场组成,第1个场为来自2个不同节点的错误标志的叠加,后面第2个场为错误分隔符。
错误标志分为主动错误标志和被动错误标志。主动错误标志由6个连续的显性位组成,被动错误标志由6个连续的隐性位组成,其中的部分或全部可被其他节点的显性位覆盖。被动错误标志又为由发送方发起的和由接收方发起的。
图4 CAN的层结构
应答错误的错误标志是由发送方发起的被动错误标志,如图5所示。
图5 应答错误的错误标志
应答错误的错误计数:当发送方在发送错误标志时,发送错误计数器应+8。
例外:发送方处于被动错误状态,因没有检测到显性应答且当发送它的被动错误标志时没有检测到显性位从而产生应答错误。
出现此例外的正常原因:系统启动期间只有一个节点在线,此节点发送一些报文,无法得到应答,从而检测到一个错误并重复发送这些报文。根据ISO 11898-1,13.1.4.2,c),1),它将进入被动错误状态,但是不会总线关闭。
例外情况下,发送错误计数器保持不变。节点状态转换如图6所示。
任何节点在发送主动错误标志、被动错误标志或过载标志后应能容许多达7个连续显性位。在主动错误标志或过载标志情况之后检测到第14个连续显性位或在被动错误标志之后检测到第8个连续的显性位之后,且在每增加8个连续显性位之后,每个发送方的发送错误计数器+8,每个接收方的接收错误计数器+8。帧传输成功后 (得到应答,在帧结束完成传输前没有检测到任何错误),发送错误计数器-1,除非它已为0。
图6 节点状态转换图
产生应答错误的原因如下。
1)正常原因:系统启动期间只有1个节点在线,此节点发送一些报文,无法得到应答,从而检测到一个错误并重复发送这些报文。根据ISO 11898-1,13.1.4.2,c),1),它将进入被动错误状态,但是不会总线关闭。
2)硬件错误:发送方正确发送置位的ACK Slot,接收方在线,正确接收从SOF至ACK Slot所有信息,但未对发送方进行置位回复;或发送方正确发送置位的ACK Slot,接收方将位置信息误读。电控单元通信示意图如图7所示。
图7 电控单元通信示意图
应答错误的检测:应答错误会导致发送错误计数器值大于127(错误计数功能由CAN芯片内部寄存器实现),从而进入并一直保持被动错误状态,而不会导致总线关闭。这点是应答错误区别于其他错误的显著标志,其他几种错误会进一步导致发送方进入总线关闭状态。目前,CAN芯片无法单独检测应答错误,而是采用排除法,检测到发送方持续保持被动错误状态而不进入总线关闭状态,即认为检测到应答错误。Bosch是通过20ms验证时间记录被动错误状态诊断故障代码来认为发送方持续保持被动错误状态的。
应答错误的处理策略 (图8):CAN相关诊断未开启时,当发送节点检测到所发送报文的应答错误后,会尝试重新发送该报文直到发送成功。重复发送该报文过程中,若CAN相关诊断开启,则从CAN相关诊断开启时开始计时。若该报文继续发送TTx_TimeOut时间后,仍处于应答错误状态,则要求发送节点停止发送报文,并等待TTx_Recovery超时 (发送节点在等待TTx_Recovery期间应进行CAN芯片的重新初始化),时间参数见表1。超时后发送节点再次开始发送报文。发送节点处于应答错误状态期间,需保证以下行为。
图8 应答错误处理策略示意图
表1 时间参数
1)在TTx_Recovery期间,发送节点应做好接收报文的准备。
2)发送节点不会因应答错误而进入总线关闭状态。
3)报文超时监控不受应答错误影响。
4)应答错误的处理行为只在CAN相关诊断开启状态下激活。
应答错误的处理行为的实现:应答错误的处理行为是通过检测被动错误状态后触发中断实现的。中断是通过设置中断使能寄存器 (图9)、中断标志寄存器 (图10)实现的。以MC9S12XE-Family Controller Area Network为例。
图11为电控单元检测到应答错误后,按照上述策略处理应答错误的测试验证。
图9 中断使能寄存器
图10 中断标志寄存器
图11 应答错误处理策略的测试验证