小弟刚学CAN总线有个问题一直没有想通,希望大家给与解答,小弟不甚感激。问题如下:
有A、B两个CAN节点,B节点控制的是电机。正常情况下A每发送一个命令B响应后,B就控制电机旋转一圈。如果A发送一个帧紧接着B在应答间隙期间发送显性位予以应答,但这时出现了像雷击一样的强大干扰,就在B发送显性位这个周期内线路上出现了隐性位脉冲,而A恰好就采样了这个隐性脉冲。A这时认为B没有收到刚才发的命令,接着立刻就发送一个同样的命令,这都是CAN硬件自动执行的。那不是在这种情况下A那边的一条C语言指令就让B那边的电机旋转了两圈。这怎么行?
标称位时间的组成
$
采样点位于‘$’位置处,也就是相位缓冲段1与相位缓冲段2之间。A、B两节点肯定存在相位误差。 |