于NI KB摘录
所有CompactRIO设备都可以访问CompactRIO扫描引擎和LabVIEW FPGA。 CompactRIO 904x 系列是第一个引入 DAQmx 功能的产品线。
使用 CompactRIO 扫描模式,您可以选择直接在 LabVIEW Real-Time 和主机应用程序中访问每个 I/O 模块(无需 FPGA 编程)或在 LabVIEW FPGA 中访问,以获得最大的灵活性和性能。您还可以使用新的测试面板和 I/O 强制功能来快速启动和运行、执行高级调试并监控系统性能。
CompactRIO 扫描模式专为需要高达 1 kHz 速率的同步 I/O 更新的应用而设计1。使用扫描模式的主要好处是易于开发,因为它不需要 FPGA 编程。借助系统管理器的 I/O 强制和测试面板功能,您还可以使用扫描模式进行初始设置、系统性能监控和高级故障排除。
扫描模式允许用户无需对 FPGA 进行编程即可读取/写入数据。这可以减少不需要板载 FPGA 功率和循环速率的应用的开发时间和复杂性。
CompactRIO扫描模式会自动检测CompactRIO机箱中的I/O模块并将它们添加到LabVIEW项目中。然后,您可以将 I/O 变量拖放到 LabVIEW Real-Time 和主机 VI 程序框图上。这些 I/O 变量允许您立即读取和写入缩放的、校准的 I/O 数据,而无需任何 FPGA 编程或编译。您可以创建 I/O 变量的别名,以提供物理 I/O 通道的附加抽象层。 I/O 变量和别名可使用线性和平方根缩放。
NI 扫描引擎是 LabVIEW Real-Time 的一个组件,它以您指定的速率(最高 1 kHz)更新 I/O 变量值1< a i=2>)。所有通道扫描均通过模块间同步进行硬件定时。您可以通过 LabVIEW 项目或以编程方式配置扫描引擎。扫描引擎还提供定时循环定时源,因此您可以将代码与 I/O 更新同步,以实现低抖动控制应用。
CompactRIO 扫描模式还可以向任何现有的八通道数字 NI C 系列模块添加计数器、正交编码器和脉宽调制 (PWM) 功能,而无需任何 FPGA 编程。您可以通过 LabVIEW 项目配置这些专用数字函数,但它们在 FPGA 上运行以提高准确性和速度。现在,无需编译,您就可以执行高达 1 MHz 的边沿计数、脉冲宽度和频率测量、正交解码和 PWM 控制。
计数器功能包括:
正交编码器功能包括:
PWM 特定功能
使用 CompactRIO 扫描模式时需要权衡一些性能。例如,专用数字功能支持高达 1 MHz 的计数器,而 LabVIEW FPGA 可支持 20 MHz 的计数器。扫描引擎使用系统资源,其中包括 FPGA 空间、两个 DMA 通道、内存以及随扫描速率变化的 CPU 时间量。 FPGA 上 RSI 占用的空间随着使用扫描模式的模块数量而变化。
NI 分布式系统管理器为监控网络上的系统和管理发布的数据提供了一个中心位置。分布式系统管理器为使用 CompactRIO 扫描模式的 C 系列模块提供测试面板。一旦您的系统在网络上可用,您就可以访问实时和历史趋势 I/O 值,以便您可以快速验证连接和信号完整性。除了测试面板之外,系统管理器还可以查看 CompactRIO 控制器的内存使用情况和处理器负载。
将NI分布式系统管理器与CompactRIO扫描模式结合使用可提供I/O强制,这是一种调试工具,您可以使用它来覆盖I/O变量的值,而无需停止或更改实时应用程序。您可以强制输入以在没有物理刺激的情况下测试应用程序的响应,也可以强制输出覆盖程序输出值。您可以使用系统管理器或新的I/O强制VI强制通道值。
当在一个或多个模块上使用 LabVIEW FPGA 模式时,FPGA 上的 CompactRIO 扫描模式逻辑(称为 RIO 扫描接口)将与 LabVIEW FPGA VI 一起编译到单个 FPGA 应用程序中。这种逻辑组合会对编译时间和可用于数据传输的 DMA FIFO 产生影响。如果没有模块配置为使用扫描模式,则 RIO 扫描接口不会包含在编译中。
您可以创建用户定义的I/O变量以提供实时VI和FPGA VI之间的通信。这提供了一种将来自 FPGA VI 的数据插入扫描引擎并在 LabVIEW Real-Time 中读出的方法,使用与扫描模式 I/O 相同的 I/O 变量 API。这些I/O变量还可以将数据从实时VI传递到FPGA;然而,每个 I/O 变量都是单向的。还提供了将 LabVIEW FPGA 代码与 RIO 扫描接口 I/O 更新同步的方法。
例如,假设 CompactRIO 系统使用 LabVIEW FPGA 监控 50kHz 的加速度计并实时计算 RMS,FPGA 上的 RMS 计算可以同步到 FPGA 扫描模式逻辑并写入用户定义的 I/O变量,然后在 LabVIEW Real-Time VI 中访问该变量。
CompactRIO 扫描模式由 RIO 扫描接口和 NI 扫描引擎这两种技术提供支持,它们协同工作以提供对 CompactRIO 上物理 I/O 的访问。 RIO扫描接口是NI开发的一套FPGA知识产权(IP),下载到CompactRIO FPGA中,负责I/O模块检测、定时、同步和通信。 RIO 扫描接口运行硬件定时扫描循环,更新物理 I/O 值。两个 DMA 通道用于在 FPGA 和实时操作系统 (RTOS) 之间传输 I/O 数据。该实现在引脚处提供硬件定时 I/O 更新,抖动小于 500ns。
NI 扫描引擎和 RIO 扫描接口的同步可在引脚处保持低于 500ns 的抖动。
RIO 扫描接口包含多个组件,可实现其灵活性和性能。每个 I/O 模块直接与盒控制器通信,盒控制器负责检测模块类型并向模块传送 I/O 数据。墨盒控制器是一个“软核”八位微控制器,在 FPGA 中实例化,允许您使用任何支持的 I/O 模块而无需编译。 RIO 扫描接口中还有两个预构建的专用数字模块,可为任何八通道(或更少)数字 C 系列模块提供高速计数器、脉宽调制 (PWM) 和正交编码器输入功能。专用数字模块可以路由到 CompactRIO 机箱中的任意两个插槽。可以使用 LabVIEW FPGA 模块添加其他专用数字模块。每个卡盒控制器与一个卡盒管理器通信,该管理器控制硬件扫描定时、I/O 模块同步以及与 NI 扫描引擎的同步。 DMA 引擎还与盒控制器和盒管理器通信,以将数据传输至实时控制器或从实时控制器传输数据。
RIO 扫描接口包含多个组件,所有这些组件均在 FPGA 中实例化。
NI 扫描引擎是 LabVIEW Real-Time 的一个组件,其运行优先级高于时间关键型或介于时间关键型和定时结构之间(您可以对其进行配置)。每次RIO扫描接口完成最新的I/O扫描时,LabVIEW将I/O变量添加到全局扫描引擎内存映射中,并同时更新所有I/O变量的值。但是,您可以将每个 I/O 变量节点配置为使用扫描访问或直接访问。默认情况下,LabVIEW将I/O变量节点配置为使用扫描I/O,即使用扫描引擎内存映射来执行非阻塞I/O读取和写入(见图5)。直接 I/O 访问绕过扫描引擎内存映射并直接与 I/O 设备驱动程序通信以执行阻塞 I/O 读取和写入(参见图 5)。 NI 扫描引擎还将 I/O 变量发布到网络,使它们可在主机应用程序、测试面板和 I/O 强制中进行读写。扫描引擎(而不是LabVIEW共享变量引擎)处理I/O变量的网络发布,您可以从I/O变量属性页面禁用它。
当硬件忙于从 I/O 模块获取数据时,FPGA 内的定时信号被置位。此硬件扫描的周期由您在扫描引擎属性中指定的扫描速率决定。每次硬件扫描结束时,扫描引擎都会在控制器和 FPGA 之间传输 I/O 数据。
FPGA 内的时序信号决定 I/O 数据何时从 FPGA 传输到实时控制器。
CompactRIO 扫描模式最强大的功能之一是能够选择单个模块直接使用 LabVIEW FPGA 模块进行编程。使用这种方法,您选择直接使用 LabVIEW FPGA 进行编程的模块将从 I/O 扫描中删除,其余模块则与 RIO 扫描接口进行通信。
CompactRIO 混合模式底层。
当您编译LabVIEW FPGA VI时,如果任何I/O模块配置为使用扫描模式,则RIO扫描接口的必要组件将包含在编译中。结果是一个单位文件,支持配置为使用扫描模式的模块的扫描模式功能,以及直接与其余 I/O 模块通信的自定义 FPGA 逻辑。 LabVIEW 具有智能编译功能,仅包含给定配置所需的 RIO 扫描接口组件。例如,如果您编译的FPGA VI在扫描模式下仅使用一个模块,则RIO扫描接口中将仅包含一个盒式控制器。如果未配置,专用数字块也会被删除。因此,在编译 FPGA VI 时,RIO 扫描接口消耗的 FPGA 空间量与使用扫描模式的模块数量成比例。
在扫描模式和 LabVIEW FPGA 中访问 I/O 模块时,仅编译所需的 RIO 扫描接口组件。
当硬件扫描信号有效时,所有 I/O 模块上的转换时钟自由运行。每个 I/O 模块类型都有单独的转换时序,相同类型的模块具有同步转换。当 FPGA 上的硬件定时信号未置位时,最新的 I/O 转换值将传输至 NI 扫描引擎。每个模块执行尽可能多的转换,以向配置为直接 I/O 访问的 I/O 变量提供最新的 I/O 值,从而绕过扫描并直接从硬件读取。
输入模块时序。
慢速输入模块可能需要几个硬件扫描周期来转换单个通道。在这种情况下,硬件扫描会触发所有通道上的一系列转换。在所有通道完成转换之前,不会将通道值复制到扫描引擎,然后将所有通道值一起传输。
慢速模块的输入时序。
输出模块时序与输入模块时序类似,但转换是左对齐的,以便在扫描开始时立即写入输出值。每个模块在硬件扫描期间执行尽可能多的更新,以便写入配置为直接 I/O 访问的 I/O 变量的值将尽快更新。
C Series Module and CompactDAQ or CompactRIO Hardware Compatibility with LabVIEW - NI