This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SN65HVD256:当系统中有两个以上的节点时、CANbus 崩溃

Guru**** 1513510 points
Other Parts Discussed in Thread: SN65HVD256, MOTORWARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/686613/sn65hvd256-canbus-crashes-when-more-than-two-nodes-are-in-the-system

器件型号:SN65HVD256
主题中讨论的其他器件: MOTORWARE

您好!

我有一个 CAN 网络、此网络由三个节点组成-来自矢量的 VN1630接口、然后是另外两个具有 SN65HVD256收发器的节点。 我可以单独与每个节点(SN65HVD256的矢量)进行通信、但没有错误、但当我尝试在系统中添加全部三个节点时、一条消息会通过、然后 CANbus 会崩溃。

仅与一个节点通信时的总线负载为5%。 当所有三个节点都处于系统中时、总线负载将上升至72%、如所附的图像所示。

所有电缆均为双绞线、总线端接在矢量连接器和节点中的一个 PCB 上(带电容的分裂端接)。 下面是每个节点上的 CAN 接口电路

我测量了 CANL 和 CANH 之间的差分信号并捕获了该信号。 我不确定这两个尖峰为什么存在以及它们是否与问题相关。 我认为在显性状态下应该有2V 的差分电压、而不是~2.8V、因此他们对我来说有点奇怪。 有什么想法吗?

我认为这是一个与仲裁有关的问题、但是设置 CAN 架构的人员已经确保了我所有 ID 都是不同的。

如果能对可能发生的情况有任何了解,将会受到极大的赞赏。 谢谢!

Jason

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jason、

    感谢您的提问。
    观察您的示波器脉冲、高 VOD 尖峰可能归因于 CAN 确认位(ACK)。 对于该位、所有节点都驱动显性状态以传达 ACK、因此在总线上看到该位的 VOD 较高是很常见的。 当多个节点在仲裁阶段驱动显性时、当节点为总线优先级通信其 ID 时、也可能会出现高 VOD。

    您是否想提供更多信息以帮助我更好地理解问题?
    当您说 CAN 总线崩溃时、具体意味着什么? 您是否观察到故障情况、或某种类型的 CAN 错误? 很难清晰地阅读屏幕截图。 连接三个节点时、您希望网络的行为如何?
    当您拍摄此范围镜头时、网络条件是什么? 是否只有一个节点在整个时间内进行通信、还是多个节点? 您是否希望发送更多信息包?或者当总线在第三个数据包之后仍然隐性时、通信是否会在预期中停止?

    此致、
    Max Megee
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Max:

    我曾帮助 Jason 调试这个问题。 我们无法在示波器上捕获"故障时刻"、上面的迹线是一个示例、也是有关高层的问题。 下面是我从总线器件角度介绍发生了什么情况的笔记。

    我们设置了独木舟来读取 CAN 总线。 当我们有一个微供电时、可以正常运行并从3%的总线负载中流出。 当插入第二个微控制器(以相同的速率发送相同的数据、但具有完全不同的 CAN ID)时、总线负载会峰值达到70%、并显示恒定的错误消息。 这是屏幕截图中显示的状态。 预期状态是总线负载为6%。
    此外、我们使用哪种微控制器组合无关紧要(实际上总共使用了四个微控制器、但一次使用2个微控制器进行调试)、它们都会产生与上述相同的行为(在为任何一个微控制器供电时发送正确的 ID 和正常的总线负载、 但是、一旦打开第二个通道、总线负载就会达到非常高的电平、然后所有通信都会停止。
    最后、发送的消息都是严格定期发送的–没有一个消息是为了响应另一条消息而发送的、因此我们可以判断这不是我们的高级代码的问题、 但是、如果 Motorware 驱动程序库尝试重新发送出现故障的消息、则可能是该驱动程序库中的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    今晚测试更新:我们能够以500kbps 成功运行并且没有发现错误。 因此、我认为它是端接电阻器放置的问题。

    我们在更多的树配置中实现了 CANbus 的物理实现、而不是"Caterpillar 配置"。 下图显示了这种情况。 请注意、此处未显示第二个端接电阻器。 这位于矢量接口连接器上、该连接器插入图像左下角的连接器。

    您认为这是布局有问题还是其他问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jason、

    是的、星形/树网络拓扑可能会向 RS-485总线引入显著的反射、这会影响信号完整性。 这可能会导致需要降低比特率以便进行功能通信、因此您能够以较慢的500kbps 速度运行似乎是相关的。 但是、由于网络中的存根长度非常短、因此很难完全确定这是根本原因、除非您能够更改拓扑并看到改进。
    您是否可以灵活地更改网络拓扑?

    此致、
    最大