通信丢失检测CAN

communication lost detection CAN

我一直在实施电机控制 软件。该控制软件运行于 一个进行通信的微控制器 通过 CAN 使用不同的微控制器 公共汽车。我需要有关 CAN 的信息 "failure" (通信丢失)在控制软件中。 我不确定什么是合适的 CAN "failure" 的症状。我有一个想法 我会检查 CAN 外围设备是否在 总线关闭状态。如果是这样,我会触发一些计时器 在例如 1 s 到期后,我会 认为通信丢失了。一旦 CAN 外设转入错误激活状态 我会再次确保通信安全。 是否有可能或任何人以不同的方式解决这个问题 方式?感谢您的任何想法。

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

  1. 在应用层面,与你通信的人是否及时响应,是否发送有效数据?
  2. CAN总线上是否存在硬件错误?

关于2), bus-off和CAN error frames是硬件错误,通常是由比较严重的事情引起的,例如安装不正确,CAN之间短路high/low,坏wires/connectors,EMI噪声, bad/no 终止、糟糕的信号接地 and/or 屏蔽等。这些大多是不可恢复的错误,软件无能为力。您唯一能做的就是显示一些诊断信息。

与其胡乱检查各种 CAN 总线错误,不如将这种坚固的固件(假设 industry/automotive)设计为只检查您是否及时收到正确的数据,如 1 所要求的).因为那是唯一与你相关的东西。如果总线感觉不舒服,如果有错误帧,但您仍在接收数据 - 没关系,只要能保持 运行 就可以了。

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

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