通讯丢失检测CAN

时间:2017-03-30 08:51:27

标签: embedded can-bus

我一直在实施电机控制 软件。该控制软件运行于 一个通信的微控制器 与CAN上的不同微控制器 总线。我需要有关CAN“失败”的信息 (通信丢失)在控制软件中。 我不确定什么是合适的 CAN“失败”的症状。我有一个想法 我会检查CAN外围是否在 巴士关闭状态。如果是这样,我会触发一些计时器 并且在例如1秒到期之后我会 把交流丢失了。一旦到了 CAN外围设备转换为错误活动状态 我会再次接受通信。 有可能或任何人以不同方式解决这个问题 方式?谢谢你的任何想法。

1 个答案:

答案 0 :(得分:2)

有两个完全不同的事情需要考虑:

  1. 在应用程序级别,您与之通信的人是否及时响应并发送有效数据?
  2. CAN总线上是否有硬件错误?
  3. 关于2),总线关闭和CAN错误帧是硬件错误,通常由相当严重的事情引起,例如安装不正确,CAN高/低之间短路,电线/连接器坏,EMI噪声,坏/无终止,蹩脚信号接地和/或屏蔽等。这些大多是不可恢复的错误,软件无法做很多事情。您唯一能做的就是显示一些诊断信息。

    应该设计这种坚固的固件(假设是工业/汽车),而不是乱搞和检查各种CAN总线错误,以便只检查您是否按时收到了正确的数据,如1)所要求的那样。因为这是唯一与你相关的事情。如果公共汽车感觉不舒服,如果有错误帧,但你仍然在接收数据 - 很好,只要你能够继续运行。

    所以唯一感兴趣的是使用具有合理超时的定时器 - 取决于受控机器的移动速度(500ms是一般行业标准,但更快的机器可能需要更短的超时)。每次收到有效(系列)CAN软件包时,都会刷新此计时器。当计时器过去时,恢复到安全状态。

    何时/如何从安全状态恢复是高度特定于应用程序的。许多安全关键应用程序禁止在没有操作员明确命令的情况下从严重错误中恢复。