在CAN FD+BRS通讯中使用NI-XNET出现错误或不正确的帧

更新 Apr 3, 2023

适用于

硬件

  • NI-9862
  • PXI-8512
  • PXI-8513/2
  • PXI-8512/2
  • PXI-8513
  • PCI-8513/2
  • PCI-8513
  • PCI-8512/2
  • PCI-8512

驱动

  • NI-XNET

其他

这篇文章主要针对使用了CAN FD (CAN Flexible Data-Rate)+BRS (Bit Rate Switching) 协议的CAN网络。关于I/O Mode:CAN、CAN FD 以及CAN FD+BRS的更多信息,请参考Interface:CAN:I/O Mode - NI-XNET 18.0 Help

问题详述

我在总线中使用的是CAN FD+BRS协议,系统中包含了NI-XNET的设备。在运行过程中,其他的所有设备都能够正常工作,但是NI-XNET设备会出现错误帧或者不正确的状态,需要指出的是,该设备使用的是默认的NI-XNET位速率设置。

解决方案

这种现象通常是由不同设备的采样点之间不匹配造成的。
  • 可以通过XNET Session的属性节点进行配置,改变XNET Interface: Baud Rate 以及 XNET Interface: 64bit FD Baud Rate 值去匹配节点中其他设备的位速率。您可以在NI-XNET Hardware and Software Manual 中找到更多信息。
  • 在NI-XNET 16.1及更高版本中,提供了一个简单的图形化设置界面来确定特定采样点所需配置的十六进制值。这将在下面进行更详细地解释。

相关信息

BRS在CAN数据帧中表示位速率从标准位速率(用于仲裁段和帧头)切换到数据速率。发送器将BRS作为隐性位发送,直到立即切换至数据位速率的采样点。

所有节点的采样点必须匹配,因为数据位速率通常远高于标准位速率。如果标准位速率采样点与另一个节点不匹配,则在发射机的采样点和接收机的采样点之间的重叠期间,许多数据位可能会提前发送或者错误地传输。

例如:发送器和接收器配置的数据位速率是标准位速率的4倍。发送器将具有60%标准位速率采样点的帧发送到采样点为80%的接收器。在采样点,发射器将切换到更快的位速率,而接收器仍在等待采样信号。然后发射器继续发送帧的其余部分,接收器就可能会读取不确定值或不正确的值(如下图中A处所表示)。数据剩余的采样点将继续偏移,并且随后将出现错误。

CAN in Automation(CiA)是制定并发布CAN FD协议的国际用户与制造商联合组织。在位速率值中使用默认的XNET波特率是基于了CiA的推荐、可靠性测试以及测试结果的。一些设备制造商可能选择使用与XNET默认设置不同的配置进行操作。为避免BRS与其他设备不匹配,必须注意确保所有设备都使用相同的位速率设置进行操作。

NI-XNET 16.1及更高版本在Bus Monitor中包括一个简单的图形化设置界面,以帮助确定特定采样点所需的十六进制值。可以通过打开NI-XNET Bus Monitor ,导航到Settings » Interface and Database...来打开Interface and Database Settings来访问该设置界面。然后从Baud Rate下拉菜单中选择<<Custom>选项。然后将弹出下面的对话框,从中可以使用Sample Point slider调整采样点,同时保持预先选择的位速率。选择正确的采样点后,您可以复制使用Custom Baudrate的十六进制数据,该值与上面讨论的属性节点使用的值相同。