Veristand介绍

 Veristand是一款NI推出的仿真工具,通过整合设备和模型实现半实物仿真,用于测试带逻辑功能的产品行为。

用Veristand最大的目的就是,将模型的输入输出和硬件接口(卡、总线、串口、网口)直接映射对应,把计算过程放在模型里面,不用在通过上位机Windows计算后配合板卡驱动操作,降低了时效性。使用单独的计算机作为仿真机,目的是要保证模型单独运行,不收其他干扰。仿真机上RT是因为时效性要求,这个所谓“实时”,一方面是时间精度,另一方面是数据的时标对齐。
 

 1.半实物仿真(HIL)

NI VeriStand 中,模型、硬件接口、仿真机、时效性共同构成了半实物仿真(HIL)系统的核心框架

1.1模型

定义:模型是仿真系统的逻辑核心,用于模拟真实产品的内部行为(如控制算法、物理动态)。

形式:通常由 Simulink、LabVIEW 或 C 代码生成,包含输入/输出端口(软接口)。

作用:将计算过程封装在模型中,避免通过上位机计算,直接与硬件接口映射,提升时效性。

在VeriStand中的角色:

  • 通过 Model Framework 集成到 VeriStand 工程中,作为仿真逻辑的载体;
  • 输入/输出端口通过映射与硬件通道绑定,实现信号交互。

1.2硬件接口

定义:连接物理设备(如 DAQ 板卡、CAN 总线)的通道,负责信号采集与输出。

类型:

  • NI 标准设备(如 PXI 采集卡);
  • 自定义设备(Custom Device):封装非 NI 硬件的驱动,仅暴露输入/输出接口。

在VeriStand中的角色:

  • 硬件接口的输入输出通道与模型的软接口直接映射,形成“硬信号输入→模型计算→硬信号输出”闭环;
  • 支持故障注入(如短路信号)、反射内存(跨系统数据共享)等高级功能。

1.3仿真机

定义:独立运行的实时计算机(如 PXI 控制器),部署并执行模型和硬件接口逻辑。

核心要求:

  • 实时系统(RT):运行 NI Linux Real-Time 操作系统,确保任务调度满足微秒级精度;
  • 隔离性:专用硬件避免其他进程干扰模型执行。

在VeriStand中的角色:

  • 作为 VeriStand 引擎的载体,通过 System Explorer 配置并部署模型与硬件接口;
  • 支持分布式系统,多仿真机协同处理复杂场景(如飞机多子系统仿真)。

1.4时效性

定义:系统响应速度和同步精度的综合指标,核心包括:

  • 时间精度:控制循环周期(如 1ms);
  • 时标对齐:数据产生与处理的严格时序同步。

保障机制:

  • 主控制环(PCL)
    • 并行模式:模型异步执行,数据延迟一个周期;
    • 低延迟模式:模型同步执行,减少响应延迟(牺牲速度);
  • 时钟同步
    • 通过 PXI-6683 等模块同步多机时钟,避免信号漂移;
    • 反射内存(如 cPCI-5565)实现跨系统亚微秒级数据同步。

1.5四者本质关系

硬件接口是躯干(信号通路),模型是大脑(逻辑计算),仿真机是心脏(实时引擎),时效性是血液(同步与调度)——四者通过 VeriStand 整合为高保真半实物仿真系统。

2.CD(Custom Device)

CD是Custom Device的简称,自定义设备,是用于扩展 VeriStand 功能的核心模块,允许用户将非 NI 标准硬件(如串口设备、总线卡、第三方控制器)或定制化算法集成到 VeriStand 的仿真环境中。

  • CD 通过封装硬件驱动和通信协议,将外部设备转化为 VeriStand 可识别的 输入/输出通道(如电压、数字信号、CAN 报文等),实现硬件信号与仿真模型的直接映射。
  • CD 可嵌入自定义算法(如公式计算、数据预处理),替代需通过上位机软件(如 LabVIEW)处理的逻辑,提升时效性

2.1Custom Device的开发

Custom Device 是 VeriStand 的“功能扩展卡”,它让你能够将 VeriStand 原本不支持的硬件、协议或复杂算法,无缝地、专业化地集成到你的实时测试与仿真系统中。

在本文中主要用到了modbus slave来与VersiStand的CD进行演示,还会用到labview的modbus TCP。

CD开发需要遵照NI提供的模板进行。安装完Veristand之后,会在LabVIEW 安装目录下的vi.lib文件下生成【NI Veristand】目录。

输入名字点击运行会生成以下:

自定义设备通常由一个XML文件和两个VI库组成。下图显示了自定义设备LabVIEW项目的组织结构。

Initialization VI.vi 实现的功能是当 Veristand 中创建该 Custom Device 时,为Custom Device 创建相对应的属性和输入/输出通道

Main Page.vi 实现的功能是在Veristand 中显示 Custom Device 相对应的通道和属性信息

RTDriver.vi 实现的是当Veristand 将 Custom Device 部署到 Real-Time 系统之后, Custom Device Loop 中 Custom Device如何执行自己的工作

因此可以看出,前两者(Initialization和main page)运行的环境是上位机(Windows开发程序平台),可以加入“弹出对话框”等调试方式,后者的主要操作环境是 Real-Time

2.2Initialization VI.vi

点击打开Initialization VI.vi文件

维持此模板VI的连接器面板。
此VI在新的自定义设备创建后被调用。系统资源管理器将设备创建为指定的自定义设备类型(异步、内联等),并根据自定义设备XML定义文件中的规定设置其依赖项。XML文件中的版本信息也已被应用。
请在此处,使用“设备项引用”和自定义XML中指定的内容,来填充初始的自定义设备状态。

控件位置如上图所示,可按Ctrl+H然后鼠标悬停在想要了解的控件上进行了解。

这个文件弄完就相当于搭建出了如上图一样的一个文件结构。

2.3Main Page.vi

添加如上图所示的两个控件

整体情况如上图所示

上面三图为具体情况。

2.4RT Driver VI.vi

整体情况如上图。

刚创建时,可以将Data Loop中的各种乱七八糟的东西删除,然后再循环外左侧获取ip和端口号

主要就是对Data Loop进行处理。

断线重连上图。

左侧子vi如下图所示

右侧子vi如下图所示

这里的起始地址全部用的2052,随便输入,都一样就行。

完成后右键点击,之后选择build all。

然后新建Veristand文件,进入SDF配置,右键点击Custom Device,如下图,就出现了刚刚编写好的CD。

点击添加后

填写完记得保存。

这里就算部署好了。接下来去modbus slave。

进入后右击,如下图所示点击进入

完毕后点击ok,点击上方的connection的connect

返回verstand,开始部署

3.VeriStand项目

打开VeriStand软件,创建LEARNING中的Engine Demo默认工程

进入后如图所示,根据介绍运行一次体验体验

 可以打开工作区文件,再根据提示打开日志规范文档


 

运行后点开日志文档规范点击开始

然后设置转速并启动发动机

SystemDefineFile就是SDF文件,其定义了系统一些参数。

这是创建项目后,项目中的各个文件

项目文件(.nivsproj):这是VeriStand项目文件,用于组织和管理整个测试项目相关的配置、设置、引用的资源等。它类似于一个项目容器,记录了项目的整体结构和各项参数设置,打开该文件可加载整个项目的配置信息到VeriStand环境中进行测试执行、参数调整等操作 。

序列文件(.nivsscr):这是VeriStand序列文件,用于定义测试执行的逻辑顺序和流程。可以在其中设置一系列的测试步骤,比如先加载特定的刺激信号、然后进行数据采集、再执行某些控制操作等,类似于一个测试脚本,控制着测试过程的先后次序和具体动作。

工作区文件(.nivswd):工作区文件存储了VeriStand工作区的相关配置,包括用户界面布局、数据显示设置、监测变量的选择等信息。它保存了用户在VeriStand界面上的个性化设置和工作环境状态,再次打开时可恢复到之前的工作布局和参数显示状态 。

系统定义文件(.nivssdf):系统定义文件用于描述测试系统的硬件和软件组件及其相互连接关系。在该文件中可以定义输入输出通道、硬件设备(如数据采集卡、控制器等)的配置、模型接口等信息,是构建测试系统架构的关键配置文件。

Stimulus Profiles文件夹:用于存放刺激配置相关的文件,刺激配置定义了施加到被测系统的输入信号。

  • UpdateParameter.txt:可能用于定义在测试过程中需要更新的参数信息,例如在不同测试阶段修改刺激信号的参数(如幅值、频率等)。
  • Step Profile文件夹:可能用于存放与阶跃信号刺激相关的配置文件,阶跃信号是一种常见的测试激励信号,此文件夹内可能包含针对阶跃刺激的具体参数设置、触发条件等内容。
  • Table Profile:可能用于存放基于表格形式定义的刺激配置文件,通过表格可以精确地定义不同时间点的刺激信号值,适用于复杂的信号变化场景。

对nivssdf文件右键进入System Explorer

3.1Target下Controller参数设置

Target指的是仿真模型运行的平台。Controller中设置了运行平台的系统,是普通的Windows还是实时的Pharlap(PXI机箱实时系统)、Vxworks或者Linux。此时需注意,不同的平台或者叫操作系统下面的设备驱动是不一样的。

Maximum streamed channels(最大流通道数):指的是系统能同时向主机(如PC)实时传输数据的通道数量上限

3.1.1 PCL Execution

两种模式:并行模式和低延迟模式

PCL像是一个交通指挥官

  • 核心任务:它要按照严格的时刻表,指挥所有硬件、模型、数据等"车辆"在实时系统的"道路"上有序通行。
  • 两种指挥策略决定了数据"到站"的及时性

并行模式(parallel mode)(高效率,但结果延迟)

在并行模式下,PCL会启动模型的执行,并持续进行下一轮的选代,而不需要等待模型执行完毕。这导致模型执行和其产生的数据可供系统使用之间存在一个周期延迟

低延迟模式(low latency mode)(即时性,但效率低)

在低延迟模式下,PCL会等待模型执行循环完成向模型写入数据的过程,然后才开始读取数据并将模型值发布到系统中。这个过程会发生在系统的每一次迭代中。当模型执行完成时,PCL会在模型生成数据的同一选代中,将模型提供的数据提供给其他循环。

3.1.2 Data sharing

暂时不知道干啥用。

3.1.3 SLSC

SLSC(Switch, Load, and Signal Conditioning)是美国国家仪器(NI)为测试测量系统设计的模块化扩展架构,主要用于增强PXI和CompactRIO等平台的信号调理、负载模拟和开关控制能力。

  1. 信号调理(Signal Conditioning)对传感器原始信号进行放大、滤波、隔离或电平转换,确保其能被DAQ设备精确采集(例如将汽车ECU的24V电池信号转换为5V逻辑电平)。
  2. 负载模拟(Load Simulation)为被测设备(如电机控制器)提供虚拟负载,模拟真实工况(如突加/突减负载),验证系统稳定性。
  3. 开关控制(Switching)通过继电器模块实现信号路径的动态切换,支持故障注入(如模拟线缆断路)以测试系统的容错能力。
3.1.4 FPGA

 FPGA全称Field-Programmable Gate Array,即现场可编程门阵列。 FPGA 是在 PAL、 GAL、 CPLD 等可编程器件的基础上进一步发展的产物, 是作为专用集成电路( ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 简而言之, FPGA 就是一个可以通过编程来改变内部结构的芯片。

3.1.5 NI-XNET接口

NI-XNET是一个NI仪器驱动程序,具有一组易用的常见功能,用于读写PXI、PCI、NI CompactDAQ和NI CompactRIO等不同平台的汽车以太网、CANI、LIN和FlexRay帧和信号。NI-XNET CAN、LIN和FlexRay接口经优化,适合需要对数百个CAN帧和信号进行高速实时操作的应用,如硬件在环仿真、快速控制原型验证、总线监控和自动化控制等。

在VeriStand环境中集成NI-XNET接口,主要解决了汽车、航空航天等领域对高精度车载总线通信仿真与测试的核心需求。其核心价值在于将复杂的底层通信协议(如CAN、LIN、FlexRay)抽象化、标准化,并与VeriStand的实时测试框架深度整合。

3.2仿真模型(Simulation Models)

在 NI VeriStand 中,Simulation Models 是一个容器或框架,是 VeriStand 环境中的一个配置项,你可以在 System Explorer 中找到它。它本身不是模型,而是模型的载体和管理者。用于集成和管理那些定义了被测系统动态行为的数学模型。而这些被管理的具体文件,就是 Models

Simulation Models 是连接抽象的数学模型和具体的实时测试系统的桥梁。它让你能够将一个用数学公式描述的“虚拟产品”,无缝地融入到由真实硬件、数据和界面构成的测试环境中,从而实现对真实控制器的全面、安全、高效的测试。

3.3User Channels(用户通道)

3.4Alarms(警报)

3.5Procedures(处理)

4.如何用User Channels、Alarms、Procedures?

User Channels是由用户创建的可在VeriStand中使用的变量。使用Alarms、Procedures两个功能来监控User Channels的值,超过指定范围时执行预设的处理程序。

4.1创建User Channels

User Channels是由用户创建的变量,存储单个值,可以在Procedures、Stimulus Profile等中使用,或者作为模型和Alarms的触发。

如上图,点击Add User Channels添加一个用户变量。

4.2创建Alarms

Alarms警报用于监控指定通道的数值是否在范围内,并根据该通道的数值执行预设的程序操作。

Alarms面板如上图所示。

Alarms列表:显示已有Alarms的列表。Priority(优先级)是指Alarms调用的Procedure的执行优先级,优先级列的数值在【0,31】之间,数值越小则对应警报程序优先级越高优先级的警报可以中断执行中的较低优先级警报程序。

Alarms Groups:

a、不同Group的Alarms并行执行,不受优先级影响。

b、同一Group的Alarms:优先级高的Alarms优先执行(中断程序插队),同一优先级的Alarms根据触发时间排队执行。

Procedure Priority:该Alarm指定Procedure程序的执行优先级,数值在【0,31】之间。

Default State:默认启用或不启用Alarm。

Delay Duration(sec):触发Alarm到开始执行对应Procedure的延迟时间。

Mod:Normal模式正常调起Procedure执行,Indicate Only模式指仅弹出消息,不执行对应Procedure。

4.3创建Procedure

Procedure是程序启动或触发警报时执行的程序。

上图是Procedure面板布局以及各个执行步骤说明。

Procedure中没有else语句和if语句搭配,只能通过跳转执行不同步骤。

Procedure执行功能:User Chunnel变量小于5时,延迟3秒后置0,;User Chunnel大于5时先置为2,延迟3秒后再置0。

Alarm Command的Re-Arm Alarm用于重置Alarm,若无该指令,则后续无法再次触发Alarm,最后记得添加End步骤,否则Alarm Command的Re-Arm Alarm指令无效。

为什么要添加End步骤?

想象一下,你正在通过电话向一个执行人员下达指令:

  • 你(测试序列) 在电话里说:“现在,去把一号警报器重置一下。”

  • 说完这句话后,你立刻挂断了电话(这就相当于序列执行到了 End 步骤)。

  • 执行人员听到“嘟...嘟...”的忙音后,知道你的指令说完了,于是开始执行“重置一号警报器”的任务。

现在,想象另一种情况:

  • 你说:“现在,去把一号警报器重置一下。”

  • 但说完后,你没有挂电话,紧接着又说:“然后再去检查一下二号设备...”(后面还有一堆其他指令)。

  • 执行人员会怎么做?他会等着,直到你把所有指令都说完(即整个序列执行完毕)。因为他不知道你后面是否还有更重要的补充。在这个过程中,他不会去执行重置警报器的操作。

4.4部署运行

在部署运行之前可以将SDF中弄好的User Channel,Alarm拖出来。拖出来后点击部署运行,再在输入中修改数值就可以实现之前设计好的Alarm和Procedure。如下图所示。


在工作区添加控件需要先部署运行,然后打开工作区文件,点击Screen中的Edit Mode。

然后点击屏幕左侧就可以挑选合适的控件啦

附(小记):

1.输入/出(英文:Input/Output,简写为 I/O)

是信息处理系统(例如计算器)与外部世界(可能是人类或另一信息处理系统)之间的通信。输入是系统接收的信号或数据,输出则是从其发送的信号或数据。

2.模拟(Simulation)

模拟是模拟出原系统的一个抽象模型,而不需要真的去做真实系统要做的事情。因此它其实不具备真实系统的功能,只是当某一功能执行时,通常不必输出功能执行的结果,只是在 simulator 中记录下由此引发的状态变化。因此它通常用于设计初期的模型验证。

3.仿真(Emulation)

仿真是什么意思?仿真是指利用模型模仿实际系统进行实验研究。仿真是以功能为基础的效仿。

与模拟相比,仿真则更进一步。仿真意味着使用硬件来模拟芯片如何近乎实时地运行速度。 该硬件使设计人员能够加快仿真过程的速度传统仿真软件的功能。 对于非常高性能的芯片,尤其是在关键任务应用中,这一点非常重要。

仿真Emulation 要涉及到硬件实现的部分。

4.LabVIEW和VeriStand分别是什么?

LabVIEW 是一个图形化的编程软件,用来快速搭建和设计各种“游乐设施”和“表演项目”。

  • 它是给谁用的? 主要是给工程师和科学家用的。

  • 它做什么用?

    • 你可以在电脑上画一个流程图,LabVIEW 就能帮你创建一个真实的程序。比如,你想做一个“过山车”,你可以用LabVIEW来编程控制它的启动、加速、刹车、灯光和音效。

    • 它也是一个强大的数据采集和分析工具。比如,你可以用它连接温度传感器,实时监测并记录过山车发动机的温度,或者分析采集到的振动数据,看看运行是否平稳。

  • 核心特点: 灵活性高,创造性强。你可以用它从零开始建造任何你想要的“游乐设施”。

简单说:LabVIEW 是用于【创造和测量】的软件,你把想法用图形化的方式搭出来,它就能在电脑和硬件上运行。

VeriStand - 就像【主题公园的中央控制室】

VeriStand 是一个现成的实时测试和仿真平台,用来管理和运行整个“公园”的日常运营和压力测试。

  • 它是给谁用的? 主要是给测试工程师用的。

  • 它做什么用?

    • 假设“过山车”已经用LabVIEW设计好了。现在你需要对它进行严格的测试:比如,连续运行1000次,模拟各种极端天气,或者突然断电的情况,看看它会不会出问题。

    • VeriStand 就是一个现成的“控制室”,你不需要从零开始搭建控制界面。你可以轻松地把过山车的控制器、传感器、故障注入装置等都连接到VeriStand里。

    • 然后,你可以在这个“控制室”里一键启动复杂的测试流程,实时监控所有数据(速度、温度、电压等),并自动记录所有测试结果。

  • 核心特点: 开箱即用,专注于实时测试。它提供了一个强大的框架,让你能快速配置和执行自动化测试,而不用花大量时间去编写底层控制程序。

简单说:VeriStand 是用于【测试和验证】的软件,你把已有的东西(硬件、模型)接进来,它帮你高效地完成各种测试任务。

总结一下:

  • LabVIEW 问你:“你想做什么?” —— 然后帮你把它做出来。

  • VeriStand 问你:“你做好了东西,想怎么系统地测试它?” —— 然后提供一个专业的测试环境。

两者都是美国国家仪器(NI)公司的产品,在工业自动化、汽车、航空航天等测试测量领域被广泛应用

5.DAQ

DAQ(Data Acquisition)采集卡是一种用于从传感器或其他设备中采集数据并将其转换为数字信号的硬件设备。它通常与计算机连接,用于实时数据采集、处理和分析。DAQ采集卡广泛应用于工业自动化、实验室研究、医疗设备、环境监测等领域。

6.通道(Channel)

在 NI VeriStand 这个实时测试与硬件在环仿真平台上,通道 是最基本、最核心的数据单元。你可以把它理解为一个具有特定属性、存储单个数据值的变量

7.LabView中的VISA

VISA 的全称是 Virtual Instrument Software Architecture,即虚拟仪器软件架构

它是测量测试行业的一个标准 I/O API,是 LabVIEW 乃至整个 NI 生态系统与外部仪器通信的基石

VISA 的核心作用:

  1. 接口无关性
    这是 VISA 最大的价值。无论你的仪器是通过哪种物理总线连接的,你都可以使用相同的 VISA 函数(VISA WriteVISA ReadVISA Configure 等)来进行操作。

    • 支持的接口类型包括

      • GPIB (IEEE-488)

      • 串口 (RS-232)

      • USB

      • 以太网 (TCP/IP, LXI)

      • PXI / CompactPCI
        你不需要为每种接口学习一套新的编程方法。

  2. 资源抽象与管理
    VISA 使用一个统一的资源名称来标识每个仪器。这个名称通常看起来像 GPIB0::1::INSTRASRL1::INSTR 或 TCPIP::192.168.0.10::INSTR

    • 在 LabVIEW 中,你只需要将这个资源名称传递给 VISA 函数,它就会自动找到对应的硬件并完成所有底层的配置和通信。

  3. 标准化编程模型
    VISA 提供了一套标准化的函数来处理仪器通信的完整生命周期:

    • VISA Open:与仪器建立连接会话。

    • VISA Write:向仪器发送命令(字符串或二进制)。

    • VISA Read:从仪器读取返回的数据或测量结果。

    • VISA Clear:清空仪器的输入/输出缓冲区。

    • VISA Close:结束会话,释放资源。

总结来说:VISA 让你无需关心仪器具体的连接方式和底层协议,用一种标准化的方法就能与绝大多数测量仪器“对话”。

8.上位机和下位机

上位机(Host Computer)通常是指具有强大计算能力和数据处理能力的计算机系统。它负责整个控制系统的监控、指令下发、数据采集、处理分析以及用户交互。上位机作为系统的“大脑”,能够处理复杂算法,进行长期数据存储,并提供图形化界面供用户操作。

下位机(Slave Device)是指在控制系统中直接与传感器、执行器等硬件相连的设备或控制器。它负责执行上位机发出的具体控制指令,如开关信号的输出、模拟量的调节、数据的采集等。下位机通常执行简单的逻辑判断和实时控制任务。

核心比喻:餐厅厨房

你可以把整个系统想象成一家餐厅的运作:

  • 下位机 = 后厨的厨师和学徒

    • 干什么? 他们在第一线,负责具体的、重复性的体力活。比如:切菜、炒菜、控制火候、看管烤箱。他们只管执行命令,把菜做出来。

    • 特点: 专注、专业、反应快。你让他大火炒菜,他立刻就能把火开到最大。但他们不关心今天来了多少客人,也不管哪道菜最受欢迎。

  • 上位机 = 餐厅前台的经理/收银台

    • 干什么? 他面对顾客,负责管理和决策。比如:接收顾客的点单(指令),然后把“做一份宫保鸡丁”的命令下达给后厨。同时,他还会看今天的销售报表(数据),分析哪道菜卖得好,库存还够不够。

    • 特点: 宏观、管理、界面友好。他通过电脑或纸笔(人机界面)来工作,能看到全局,但不直接去碰锅碗瓢盆。

  • 通信 = 传菜员/对讲机

    • 经理(上位机)和厨师(下位机)之间需要沟通。经理通过对讲机(通信线路,如网线、串口)喊话:“5号桌,宫保鸡丁一份!” 这就是下达指令

    • 厨师做完后,也可能通过对讲机回复:“宫保鸡丁好了!” 或者报告:“经理,盐快用完了!” 这就是上传状态和数据

总结一下:

角色 下位机 上位机
身份 一线员工、执行者 管理者、决策者
工作 控制设备、采集数据、执行具体动作 发送指令、监控状态、显示数据、存储分析
特点 实时性强、专注底层、结构简单、通常不配备豪华屏幕 界面友好、功能丰富、处理复杂信息、通常是电脑/触摸屏
思考方式 “我该怎么把这件事做到最好?” “我该让他去做什么事?现在情况怎么样?”

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐