在VeriStand中使用RDMA组件进行数据共享

更新 Jul 23, 2025

环境

硬件

  • PXIe-8285
  • PXIe-8280

软件

  • VeriStand

驱动

  • NI-RDMA

由于反射内存卡已过时,RDMA模块是最新推出的,推荐用于数据共享。Data Sharing Framework custom device的RDMA插件组件实现了点对点通信机制,可在并行运行的HIL目标之间实现高吞吐量、低延迟的数据传输。该机制允许实时测量和控制系统中的节点共享VeriStand通道数据。

使用本文档作为指导,创建一个新的Data Sharing Framework custom device,利用RDMA插件组件在HIL目标之间传输数据。

软件要求

硬件要求

  • NI-RDMA支持的硬件(NI PXIe-8280或NI PXIe-8285)。

先决条件

在阅读本文之前,请确保您具有RDMA技术的一般知识,并且熟悉NI软件,例如NI-MAX和NI-VeriStand。

在继续本文档的任何操作之前,请确保RDMA接口的物理连接是正常的。查看您将使用的每个目标的“系统设置”选项卡。如果您已正确连接硬件,“IP地址”部分下应该会列出多个IP地址。在列表中找到分配给RDMA模块的IP地址。请记下这些地址,因为我们将需要它们来配置RDMA Data Sharing Framework plugin。

在新添加的Data Sharing Framework custom device页面上,单击“New” ,弹出对话框,通过设置DSF配置中的值来配置custom device。配置如下:

  1. 配置插件级别设置

目的:配置每个插件的顶层设置(具体来说,是时间设置)。就本教程而言,仅需配置一个插件:RDMA。请按如下方式配置plugins数组的第一个元素:

  • name :设置此值以指定插件在System Explorer中的显示方式。此字段的值不限,只要不为空即可。
  • components :将第一个元素设置为“RDMA”
  • cycle timing:将抽取设置为 0,以确保插件与PCL同步运行。
  • component settings:将此字段留空,因为没有RDMA插件的组件设置。

  1. 线程

RDMA插件目前不支持多线程配置。请编辑插件配置,使单个线程包含所需的会话数。

  1. 配置传输组

目的:传输组负责对应以相同cycle timing值执行的传输进行分组,同时添加有关传输方向(TX 或 RX)的信息。

我们需要创建两个传输组:一个用于发送,另一个用于接收。每个传输组将由transfer groups数组中的一个元素表示。

按如下方式配置每个传输组:

  • core.name :使用它来指定传输组在System Explorer中的显示方式。
  • core.direction :指定此组中的传输是TX还是RX。
  • core.cycle timing:根据您的需要进行配置,或使用以下所示值。请记住,decimation为0时,传输组将与PCL保持一致,活动引擎缓冲区将为内联缓冲区。任何其他decimation都将使传输异步,活动缓冲区将为异步缓冲区。
  • core.timeout 行为:选择您喜欢的任何值。
  • core.enable conversion :选择您喜欢的任何值。
  • component setting:留空,因为没有RDMA传输组的组件设置。

注意:为了确保数据传输的确定性,每次数据传输结束的有效时序必须相等。有效时序可以按如下方式计算:

 [Effective Timing] = [Target PCL Rate] / ([DSF Custom Device Decimation] * [DSF Plugin Decimation] * [DSF Transfer Group Decimation])

如果TX和RX端点配置了不同的有效时序,则有效运行速度更快的端点上的传输组late count监控通道(位于每个传输组下)将在部署时开始上升。

  1. 配置每个传输组中的传输

用途:传输表示要传输或接收的单个通道数据。传输由一个或多个通道组成。对于RDMA而言,单次传输包含使用单个RDMA缓冲区更新的所有通道的数据。

按如下方式配置每个传输:

  • core.name :用于指定如何在System Explorer中显示。
  • component setting
    • component:“RDMA”
    • values
      • 元素 0
        • key:“本地地址”
        • value :输入之前指定的RDMA模块的IP地址(“本地”表示用于此传输的模块的IP地址)
      • 元素 1
        • key:“本地端口”
        • value :选择一个可用的本地端口
      • 元素 2(仅TX传输组中的传输需要)
        • key:“目标地址”
        • value:输入用作RX端点的RDMA模块的IP地址
      • 元素 3(仅TX传输组中的传输需要)
        • key:“目标端口”
        • value:在“目标地址”指定的地址处选择一个可用的目标端口(RX 传输组内的传输不需要)

  1. 配置通道

通道无需特殊配置。您可以根据需要进行配置,但有一些限制:

  • 您可以根据需要在每次传输中添加任意数量的通道。但请记住,给定连接的每个端点必须具有相同数量的通道。就本教程而言,我们建议每次传输使用单个通道。注意: RX传输中的channels [n]是从相应TX传输中的channels [n]发送的。
  • 确保每个端点之间的engine data typestring data type匹配。

RDMA通道没有component settings ,因此将该字段留空。

  1. 完成配置
  • 仔细检查您输入的所有值是否正确,因为一旦应用设置,您将无法返回到界面来修改配置。
  • 单击“Apply”将此配置添加到VeriStand System Definition,然后关闭对话框。注意:虽然传输组、传输、通道等的数量是固定的,但您仍然可以使用VeriStand System Definition修改系统定义中每个节点的配置。
  1. 导出配置(可选,但强烈推荐)

点击Data Sharing Framework custom device页面上的Export...按钮,导出您刚刚创建的JSON格式的配置。这将使您能够快速配置类似的DSF custom device,或者通过编辑JSON格式的配置文件并使用“ Import...功能快速修改现有配置。

注意:如果您想快速配置插件而不与DSF配置界面交互,附件中有一个TX和RX示例配置文件。请修改字段以匹配您的设置,并使用Import...功能。

  1. 对系统定义中的每个目标重复Data Sharing Framework custom device配置
  2. 将想要与对端目标共享数据的通道映射到My TX Transfer下的通道。将My RX Transfer下的通道映射到想要使用对端目标共享的数据的通道。

  1. 保存并关闭VeriStand System Explorer窗口