本系列第 2 篇。上一篇讲三层架构(见主页/专栏)。本文解决:给 cRIO 编程,走扫描模式、FPGA 接口模式,还是混合模式?
往 LabVIEW 项目添加 cRIO 控制器时会弹框选编程模式。指南的答案很干脆:按应用对性能、可靠性、自定义程度和 I/O 的需求来选,不是按难度选。

三种编程模式:扫描 / FPGA 接口 / 混合,500 Hz 分水岭
扫描模式:NI 替你写好了 FPGA
扫描模式下只编实时处理器,不碰 FPGA------NI 预置了一套 FPGA 特性,定期扫描所有 I/O 模块,放进内存映射的当前值表。I/O 变量拖到框图上就能读写缩放、校准后的数据,零 FPGA 代码、零编译。
适用:单点 I/O、循环速率几百赫兹以内(设定值监控、过程量显示、低速联锁)。
指南里一个值得背下来的基准数据:一个模拟输入 + 一个模拟输出的 PID 回路,速率超过 100 Hz 且通道数一多,CPU 占用率显著上升。结论:需要比 500 Hz 更快的循环速率时,别用扫描模式。
扫描模式的加分项容易被忽略:
- 插入模块自动检测,不必预先在项目里配置
- NI 扫描引擎内置故障引擎,确定性地抛出错误
- 分布式系统管理器可在线看当前值/故障,甚至覆盖 I/O 值调试
FPGA 接口模式:解锁真正实力
命中任何一条就上 FPGA:
- 高速波形采集/生成(>500 Hz)
- 自定义触发、定时、同步(过阈触发、外部时钟沿采值、重触发......)
- 基于硬件的分析与协处理(FFT、滤波、数据简化)
- 数字协议与传感器仿真(编码器、凸轮/曲柄、LVDT、硬件在环)
- 最高性能控制:FPGA 控制环路可超 1 MHz,指南中 FPGA 版 PID 执行时间 300 ns
FPGA 与 RT 之间传数据:单点小数据用控件/指示器,高吞吐量用 DMA FIFO(第 3 篇展开)。
混合模式:各取所长,但有个坑
同一台目标上,需要定制的模块交给 FPGA,其余走扫描。指南的涡轮机测试系统就是混合实现:加速度计、转速计走 FPGA 高速采集,温度监测走 RIO 扫描接口 10 Hz 读一次。
坑:RIO 扫描接口占用 FPGA 三个 DMA 通道中的两个。自己的代码计划用 DMA FIFO 高速传数据时,只剩一个通道------先算清这笔账。
决策表
| 判断项 | 结论 |
|---|---|
| 循环速率 < 几百 Hz,只读当前值 | 扫描模式,开发最快 |
| >500 Hz 采集 / 自定义触发 / 硬件分析 | FPGA 接口模式 |
| 一部分高速、其余低速 | 混合模式,注意 DMA 通道余量 |
| 目标是 1M 门 FPGA | 扫描接口不完全支持,基本只能 FPGA |
记住 500 Hz 分水岭,再看一遍表,90% 的项目 30 秒内定模式。
系列索引:01 架构 · 02 编程模式(本文)· 03 实时程序设计 · 04 FPGA 编程 · 05 I/O 同步与扩展