如何在内存里创建 CAN FD 动态数据库

更新 Aug 24, 2026

环境

硬件

  • NI-9862
  • USB-8502
  • PXI-8513
  • PCI-8513
  • PCI-8512
  • PXI-8512
  • NI-9860
  • PXIe-8510
  • PCIe-8510
  • Transceiver Cable

驱动

  • NI-XNET

我正在开发没有数据库文件( *.xml ,*.dbc )的 CAN FD 应用程序,因此我想为Frame Output Stream 会话制作 CAN FD 的内存数据库。我知道“ :memory ”主要用于在 VI 的内存中创建一个动态数据库,但这个方式在CAN FD、CAN FD+BRS模式下起不了作用。

请问我该如何在内存中创建CAN FD的动态数据库?

若要动态创建参考数据库,请分别在用于 CAN FD 或 CAN FD + BRS 会话的 XNET Create Session.vi的 cluster(:memory)终端输入: can_fd::can_fd_brs:别名。关于 CAN I/O 模式类型的信息,见CAN:I/O Mode - NI-XNET Help

您必须从XNET Session Property Node 指定64位波特率和 64位FD波特率的值。

  • 请单击 XNET Session Property Node并选择Interface » 64bit Baud Rate。
  • 请单击 XNET Session Property Node并选择Interface » CAN » 64bit FD Baud Rate。


请参考以下代码片段。此代码基于CAN Frame Output Stream.vi示例。


附加信息

如果出现帧错误,请参考此链接在 CAN FD 和 BRS 中使用 NI-XNET 时出现错误或不正确的帧以检查其他ECU的采样点或您的CAN总线中的第三方接口。

当您使用 CAN FD 或 CAN FD + BRS 模式时,负载长度可以长达 64 字节,但只有以下选项可用作有效负载长度。

  • 0字节
  • 1字节
  • 2个字节
  • 3个字节
  • 4个字节
  • 5个字节
  • 6个字节
  • 7个字节
  • 8个字节
  • 12个字节
  • 16个字节
  • 20个字节
  • 24个字节
  • 32个字节
  • 48个字节
  • 64个字节

例如,如果您尝试写入 9 个字节的数据,则必须选择 12 个字节进行写入。如果写入不支持的有效负载长度的数据,例如 9 字节、11 字节等,通信将无法正常进行。使用数据库文件和动态数据库的情况都会出现此问题。在动态数据库中,您不必为有效负载长度设置任何其他属性,例如数据库文件中的帧设置。您可以只编写该数量数据数组,然后隐式地使用有效负载长度。