如需构建NI实时系统,必须同时选择开发软件和硬件平台。下文详细介绍了每个选项的内容。在阅读本文之前,建议您事先了解实时系统以及如何构建实时系统使项目获益。请参阅我是否需要实时系统?,了解相关信息
构建实时系统时,务必选择可支持实时功能的操作系统。NI实时开发工具随附所有必要的实时操作系统(RTOS)软件,这意味着用户无需单独选择该组件。根据硬件平台的不同,NI使用NI Linux Real-Time操作系统或Phar Lap ETS操作系统。
如需开发实时程序,可使用LabVIEW图形化编程、LabWindows™/CVI ANSI C环境(适用于Phar Lap)、或选择Linux兼容的C/C++开发环境(适用于NI Linux Real-Time)。
图1.使用LabVIEW进行图形化编程。
如需对NI支持的实时硬件进行图形化编程,必须配合使用LabVIEW与LabVIEW Real-Time模块。用户通过LabVIEW Real-Time能创建可靠的硬实时应用程序,再将其下载至硬件,并使用工具进行调试和运行。
用户可在实时应用程序中使用LabVIEW自带的大部分数学和信号处理算法,包括许多PID控制函数。 此外,您还可以使用MATLAB节点在实时系统上运行文本数学脚本,也可将The MathWorks, Inc. Simulink®软件或其他建模环境中创建的模型通过LabVIEW Model Interface工具包集成至实时系统。
在LabVIEW中开发实时应用程序时,可使用LabVIEW项目浏览器来整理程序(VI)并为其分配将运行的硬件。用户将在通用Windows主机上开发代码,然后通过以太网或USB连接将代码部署至实时硬件。
图2.使用LabVIEW项目浏览器管理LabVIEW程序(VI)并将其分配至实时终端。
在LabVIEW中开发实时程序与面向PC开发标准LabVIEW应用基本相同。Real-Time VI选板包含多个实时系统专用的附加函数,包括:
如需在硬件上测试LabVIEW Real-Time代码,仅需点击运行箭头,应用程序就会部署至实时硬件并开始运行。即使实时程序实际上是在实时终端上运行,用户也可在开发计算机上使用标准NI调试工具,例如高亮显示执行过程、单步执行和断点。
完成实时程序后,可在LabVIEW中生成可执行文件,并将其作为启动应用程序下载至实时硬件。重新启动实时硬件后,程序将自动以可靠地独立运行。
借助LabVIEW的数据流编程模式,用户无需使用文本编程语言的顺序架构。由于执行顺序由节点之间的数据流决定,用户可轻松创建能并行执行多个操作的应用程序。此外,LabVIEW还可通过定时循环结构轻松分配线程优先级。如下所示,每个循环都有一个可配置的定时源、周期、优先级等。
图3.使用LabVIEW定时循环结构指定不同代码段的优先级和处理器分配。
LabVIEW Real-Time支持多核处理,并自动将代码的并行部分映射至单独的操作系统线程,而无需手动创建和管理。默认情况下,这些线程也会在实时硬件上可用的CPU之间进行自动平衡。
为进一步提高实时系统的性能和可靠性,如有需要,可选择手动将定时循环分配给特定的处理器内核。例如,用户可将处理器的一个核心专用于执行一个关键时间循环,并将其与运行在不同核心上的次要任务隔离开来。
对于高级多核调试,可使用Real-Time Trace Viewer来验证LabVIEW或LabWindows/CVI实时程序的性能,而无需停止或暂停代码执行。仅需少量修改实时代码,即可将应用程序性能记录至文件,并将其发送至主机进行查看和分析。 跟踪工具查看器以图形化方式显示多线程代码执行过程,同时高亮显示线程交换、互斥锁及内存分配。用户可使用Real-Time Trace Viewer,通过识别不需要的执行特征和难以发现的竞争状态来优化应用程序性能。
如果用户组织以C或C++为标准编程语言,可使用LabWindows/CVI开发环境或其他开发环境。请注意,LabWindows/CVI Real-Time仅支持实时PXI控制器,而使用NI Linux Real-time的终端(如CompactRIO控制器)为开源设备,因此用户可自选开发工具。 有关使用C/C++ Development Tools开发Linux-Real Time的详细信息,请访问NI Linux Real-Time C/C++开发入门。
所有NI实时硬件平台均基于通用架构,这意味着使用LabVIEW Real-Time编写的程序仅需稍作修改或无需修改即可在不同的NI硬件上运行。具体来说,每个硬件平台均配备了现成即用的计算组件,包括处理器、RAM、非易失性存储和I/O总线接口。部分硬件平台配备用户可编程的FPGA,便于用户使用LabVIEW FPGA模块进行编程。
业界标准的PXI平台由坚固耐用的机箱、集成式定时和触发线路、嵌入式控制器和插件式I/O模块组成。控制器还内置串行、USB、千兆以太网和GPIB端口。PXI实时硬件可使用LabVIEW Real-Time或LabWindows/CVI Real-Time进行编程。
如用户想要将现有PXI控制器(运行Windows)更换为实时控制器,可购买LabVIEW Real-Time部署许可证来转换控制器,甚至设置一个双启动系统。
用户可使用在线PXI Advisor组装自己的PXI实时系统,包括控制器、机箱、I/O模块和软件。
图4.PXI硬件为用户的实时项目提供坚固耐用的高性能选择。
NI PXI硬件常用于电子控制单元的硬件在环测试、机器状态监测应用的振动分析等高性能实时系统。使用实时PXI系统时,用户的应用程序可获得高级定时和同步硬件功能,从而简化精确I/O触发和多模块同步。
CompactRIO结合了实时处理器、FPGA和C系列I/O模块,具有封装级和板卡级两种外形尺寸。此外,控制器内置有串行、USB和以太网端口。
用户可使用在线CompactRIO Advisor组装自己的CompactRIO系统,包括控制器、I/O模块和软件。
图5.封装级CompactRIO控制器为实时应用提供了灵活、坚固和便携的选择。
用户可使用LabVIEW Real-Time或自选的C/C++开发工具对CompactRIO控制器的处理器进行编程。也可使用LabVIEW FPGA开发FPGA代码。如需访问处理器上的I/O数据,可使用NI-DAQmx API(NI测量类最佳编程API)或NI扫描引擎。也可通过LabVIEW FPGA直接访问FPGA中的数据。
图6.CompactRIO的异构架构具有实时处理器、可重配置FPGA和I/O。
CompactRIO硬件通常用于状态监测、硬件在环测试、物理系统测试和机器控制等工业应用。
CompactRIO板卡级控制器(如CompactRIO单板控制器(sbRIO)),与封装级CompactRIO控制器具有相同的架构,但包装不够坚固耐用,且外形尺寸更小。
图7.CompactRIO板卡级控制器具有与封装式CompactRIO控制器相同的架构,但外形尺寸更小。
对灵活性、可靠性和高性能有需求的批量应用程序可通过使用CompactRIO单板控制器或模块上系统获益。