CAN中错误产生的原因,可能是操作环境中的电磁干扰(EMI)、不同采样点或不同的节点上的开关阈值,或由于信号在传播过程中的散射。为了处理这些情况,CAN协议提供了精心设计的错误检测和自我检查机制[18],并在ISO11898[1]数据链层中进行了规定。错误检测是通过基于发射器的监控、位填充、循环冗余校验(CRC)和帧校验来完成的。
为了确保所有节点有一致的看法,一个节点所检测到的错误必须全局化。这是通过让检测节点发送一个包含6个相同的极性位的错误标志来实现的。一旦接收到错误帧后,每个节点将丢弃这个错误帧,然后会由发送节点自动重新传输。需要注意的是,被重发的帧可能在重新传输过程中受到仲裁。这意味着,在当前帧的传输过程和发错误信号过程中,如果有更高优先级的帧排队,则这些帧将在错误帧被重新发送之前发出。
CAN技术文件[19]声称误差检测机制可以检测、全局化所有发送的误差。这可以保证在接收器一侧检测到一个长度多到15的脉冲串[这等于按CRC序列排列函数f(x)的自由度]。大多数较长的突发错误也能被检测出来。检测不到错误的概率小到可以忽略不计,按照CAN技术信息[19]所介绍的:“如果每年365天,每天进行8h工作,误差率为每0.7s一次,那么检测不到的错误就是每千年才会出现一次(统计平均值)。”近来已经有研究指出CAN对于超高可靠性要求的应用局限性,此局限性尤其在检测不到的多位误差导致的严重漏洞[20]以及对CRC基本假设的有效性上[21](见第6章)。即使检测不到的误差确有一定的出现概率,但为了简化叙述,我们仍然假定所有的误差都可被检测到。
(www.daowen.com)
图13.5 CAN中误差帧的格式
图13.5显示了CAN误差帧的格式(详情见参考文献[19])。由此可以看出,发送误差信号和恢复时间通常介于17位和23位时间。由于我们感兴趣的是最坏情况下的行为,所以在我们的模型中我们将用23位时间作为发送误差信号和恢复时间。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。