CAN总线系统中的一种安全隐患
时间:04-24
来源:互联网
点击:
3 后果
当消极报错节点出现上述分析的情景时,就没有机会收发消息。直到总线空闲或者有一个主动报错节点发主动报错帧时,才可能恢复正常。由于错误的发生是随机事件,在正常应用环境中其间隔会相当长。消极报错节点逸出这种等效离线状态的最坏情况是,它要等到总线成为空闲。此段时间为系统中所有消息的最坏响应时间中最大的那个。以Tindell改造过的SAE典型试验数据集为例,最大最坏响应时间在总线速率为125 kbps时为49.192ms,250kbps时为14.404ms。总线的利用率相应为94.2%和47.1%。如果故障发生在收发制动压力的消息(其周期为5 ms)的节点,则汽车可能在125 kbps时丢失10次数据,250 kbps时丢失3次数据。在此期间作用在轮子上的制动力不是所期望的,汽车将有难以预计的风险。以每小时100 km行驶的汽车将在1.4 m或O.4 m的距离上失去控制。
消极报错节点状态同步的丢失可能比上述最坏情况早些结束,但这完全取决于错误的统计学特性,超出了CAN调度分析的假设,使CAN设计工具不精确。当消极报错节点丢失同步后,即使有一些未确知的总线空闲时间,它们可能引入超载帧,这也是调度分析时未加考虑的。因此设计工具难以给出有足够精度的真实结果。这会危害到所设计系统的安全性。另外,超载帧也降低了总线的吞吐率。
4 解决方案
经仔细分析所有可能的全局错和本地错以后,各种情景和合适的消极报错帧分界符长度间的关系就建立起来了。所谓“合适”是指消极报错节点能在出错后依然与其他节点的状态保持同步。在有些场合中消极报错帧分界符应为原来的8位长,在有些场合中它应是2位长,在另外一些场合中它应是1位长。若本地错发生在数据帧或远程帧的EOF域,那么为了实现正确的同步,最好的选择是在EOF的最后一位处对CAN协议状态自动机进行复位。需要根据总线上的数据流以及错误发生的位置加以判断,该消极报错节点是发生了全局错还是本地错,从而确定应有的消极报错帧分界符长度,或者启动协议状态机的复位信号,完整的解决方案已申请了专利。
将消极报错帧分界符长度简单地改为另一个固定的长度,可能简化实现的复杂性,在某些场合它可以避免在消极报错节点有本地错时产生长时间的等效离线状态的失效,但是这一解决方案无法应对所有可能丢失同步的情景。同时它还残留有其他的一些缺点:例如增加了消极报错节点不能接收的机会;因重复出错或超载帧造成调度结果确定性的下降;本节点或其他节点所发消息优先级的逆转;因超载帧造成带宽的无效占用。所以这种简化造成的性能下降是得不偿失的。
按修改后实现的消极报错帧不能通过现有标准ISO16845第7.5.6款和8.5.13款的全部测试设置,因为消极报错帧分界符的长度不再是固定的8 位。CAN标准ISO11898及ISO16845应依据应用中对安全的要求作相应的修改。
5 小结
在消极报错帧分界符内格式错的后果长期以来被忽视了。即使在一般应用中等效离线状态和优先级逆转也是不能容忍的,因为一次电磁干扰造成的1位错所要承受的惩罚太大了。为了将CAN用于更为严格的安全攸关的应用中,这个问题是非解决不可的。
参考文献
1. CAN in Automation celebrates first 15 years 2007
2. GmbH Robert Bosch CAN Specification Version 2.0 1991
3. ISO/TC 22/SC3 ISO16845-2004.Road VehiclesController Area Network (CAN)Conformance Test Plan
4. Tindell K W.Burns A Guaranteed Message Latencies for Distributed Safety-Critical Hard Real-Time Control Networks.[Technical Report YCS229] 1994
作者:重庆工业自动化仪表研究所 杨福宇
来源:单片机与嵌入式系统应用 2009 (1)
当消极报错节点出现上述分析的情景时,就没有机会收发消息。直到总线空闲或者有一个主动报错节点发主动报错帧时,才可能恢复正常。由于错误的发生是随机事件,在正常应用环境中其间隔会相当长。消极报错节点逸出这种等效离线状态的最坏情况是,它要等到总线成为空闲。此段时间为系统中所有消息的最坏响应时间中最大的那个。以Tindell改造过的SAE典型试验数据集为例,最大最坏响应时间在总线速率为125 kbps时为49.192ms,250kbps时为14.404ms。总线的利用率相应为94.2%和47.1%。如果故障发生在收发制动压力的消息(其周期为5 ms)的节点,则汽车可能在125 kbps时丢失10次数据,250 kbps时丢失3次数据。在此期间作用在轮子上的制动力不是所期望的,汽车将有难以预计的风险。以每小时100 km行驶的汽车将在1.4 m或O.4 m的距离上失去控制。
消极报错节点状态同步的丢失可能比上述最坏情况早些结束,但这完全取决于错误的统计学特性,超出了CAN调度分析的假设,使CAN设计工具不精确。当消极报错节点丢失同步后,即使有一些未确知的总线空闲时间,它们可能引入超载帧,这也是调度分析时未加考虑的。因此设计工具难以给出有足够精度的真实结果。这会危害到所设计系统的安全性。另外,超载帧也降低了总线的吞吐率。
4 解决方案
经仔细分析所有可能的全局错和本地错以后,各种情景和合适的消极报错帧分界符长度间的关系就建立起来了。所谓“合适”是指消极报错节点能在出错后依然与其他节点的状态保持同步。在有些场合中消极报错帧分界符应为原来的8位长,在有些场合中它应是2位长,在另外一些场合中它应是1位长。若本地错发生在数据帧或远程帧的EOF域,那么为了实现正确的同步,最好的选择是在EOF的最后一位处对CAN协议状态自动机进行复位。需要根据总线上的数据流以及错误发生的位置加以判断,该消极报错节点是发生了全局错还是本地错,从而确定应有的消极报错帧分界符长度,或者启动协议状态机的复位信号,完整的解决方案已申请了专利。
将消极报错帧分界符长度简单地改为另一个固定的长度,可能简化实现的复杂性,在某些场合它可以避免在消极报错节点有本地错时产生长时间的等效离线状态的失效,但是这一解决方案无法应对所有可能丢失同步的情景。同时它还残留有其他的一些缺点:例如增加了消极报错节点不能接收的机会;因重复出错或超载帧造成调度结果确定性的下降;本节点或其他节点所发消息优先级的逆转;因超载帧造成带宽的无效占用。所以这种简化造成的性能下降是得不偿失的。
按修改后实现的消极报错帧不能通过现有标准ISO16845第7.5.6款和8.5.13款的全部测试设置,因为消极报错帧分界符的长度不再是固定的8 位。CAN标准ISO11898及ISO16845应依据应用中对安全的要求作相应的修改。
5 小结
在消极报错帧分界符内格式错的后果长期以来被忽视了。即使在一般应用中等效离线状态和优先级逆转也是不能容忍的,因为一次电磁干扰造成的1位错所要承受的惩罚太大了。为了将CAN用于更为严格的安全攸关的应用中,这个问题是非解决不可的。
参考文献
1. CAN in Automation celebrates first 15 years 2007
2. GmbH Robert Bosch CAN Specification Version 2.0 1991
3. ISO/TC 22/SC3 ISO16845-2004.Road VehiclesController Area Network (CAN)Conformance Test Plan
4. Tindell K W.Burns A Guaranteed Message Latencies for Distributed Safety-Critical Hard Real-Time Control Networks.[Technical Report YCS229] 1994
作者:重庆工业自动化仪表研究所 杨福宇
来源:单片机与嵌入式系统应用 2009 (1)
- 热插拔和缓冲I2C总线 (04-14)
- PCIe总线何时突破Unix服务器坚冰(02-03)
- TMS320VC5402 HPI接口与PCI总线接口设计(04-12)
- 基于Nios II的I2C总线接口的实现(04-09)
- 双口RAM CY7C026在高速数据采集系统中的应用(04-12)
- 计算机在新型多电机同步系统中的应用(07-08)