LabVIEW与myRIO嵌入式开发入门指南

在高校工程教学和原型系统开发中,如何快速搭建一个兼具实时控制能力与灵活I/O扩展的嵌入式平台?NI myRIO正是为此而生。它将双核ARM处理器与FPGA集成于一块紧凑的开发板上,配合LabVIEW图形化编程环境,让开发者无需深入寄存器配置或底层驱动编写,即可实现复杂的数据采集、控制逻辑与通信功能。

尤其对于自动化、测控、机器人等专业的学生和工程师而言,myRIO提供了一条从理论到实践的高效路径。本文将以NI myRIO-1900为例,带你一步步完成从零开始的完整开发流程——从软件安装、硬件连接,到程序部署与自启动设置,全程基于真实操作经验总结,避免“照搬文档”式的空洞讲解。


环境准备:不只是装软件

要让myRIO真正“跑起来”,第一步是确保主机电脑具备完整的开发环境。这不仅仅是安装LabVIEW这么简单,更关键的是各组件之间的版本兼容性。

核心软件清单与作用解析

软件名称 实际用途
LabVIEW 主编程环境,所有VI(虚拟仪器)都在这里创建和调试
NI-RIO驱动 桥梁角色,使PC能识别并访问myRIO的I/O资源
Real-Time Module 让代码运行在确定性的实时操作系统上,适合控制任务
FPGA Module 编译并下载逻辑到Zynq中的Artix-7 FPGA部分
myRIO Toolkit 提供专用API,如加速度计读取、LED控制等Express VI

📌 建议使用 NI Package Manager (NIPM) 进行统一安装。相比手动逐个安装,NIPM会自动处理依赖关系,极大降低因版本错配导致的“找不到设备”或“固件不匹配”问题。

⚠️ 特别提醒:LabVIEW 2020及以后版本已逐步淘汰对32位系统的支持,建议使用64位Windows 10/11系统,并关闭杀毒软件临时防护,防止安装过程中被误拦截。


硬件初识:别小看这块“教学板”

虽然myRIO常用于教学场景,但其硬件规格不容小觑。以myRIO-1900为例:

  • Xilinx Zynq-7000 SoC:集成了双核ARM Cortex-A9 @ 667 MHz 和 Artix-7 FPGA
  • 板载传感器:三轴数字加速度计(LIS3DH),可用于姿态检测
  • I/O接口丰富
  • MXP A/B/C 和 MSA 共4组接头
  • 支持GPIO、PWM、SPI、I²C、UART、ADC/DAC等多种协议
  • 音频输入输出:立体声Line-in/Mic-in + Headphone-out
  • 无线连接:内置Wi-Fi,支持STA/AP模式切换

这些资源意味着你可以用它做很多事情:比如构建一个带振动监测的小型工业网关,或者做一个可通过手机远程控制的智能小车。

📎 实践提示:首次使用前,建议先用万用表确认MXP引脚电压是否正常(3.3V/5V),避免后续外接模块时烧毁IO。


设备连接与初始化:打通第一道关卡

接线步骤

  1. 使用原装电源适配器供电(推荐,稳定性高)
  2. 或通过Micro-B USB线由PC供电(适用于轻负载测试)
  3. 用另一根Micro-B USB线连接PC与myRIO的“USB Host”口(用于通信)

通电后,观察设备指示灯:
- PWR灯常亮 → 电源正常
- STATUS灯闪烁 → 系统正在启动
- 如果Wi-Fi灯亮起 → 已进入AP模式(默认出厂设置)

首次连接配置

打开 NI Measurement & Automation Explorer (MAX)

  1. 在左侧导航栏展开 “远程系统”
  2. 找到名为 NI-myRIO-1900 的设备
  3. 查看右侧信息面板:
    - IP地址(通常为 172.22.11.2,若未改过)
    - 固件版本(如 17.0
    - 已安装软件列表

如果出现“Mismatched Software”警告,说明LabVIEW版本与设备固件不一致,需重新部署。

🔧 解决方案:
- 右键设备 → “Reformat and reinstall software”
- 系统将自动下载对应版本的RT镜像和FPGA支持文件
- 此过程约需5–8分钟,请保持网络畅通

✅ 成功标志:状态变为“Ready”,且可在“Devices and Interfaces”下看到所有可用I/O通道。


创建你的第一个项目:不只是点几下鼠标

在LabVIEW中新建项目时,选择模板非常关键。直接创建空白项目会导致目标设备无法正确部署。

正确操作流程

  1. 启动LabVIEW → 【创建新项目】→【Project】
  2. 在模板类别中选择 Templates > Embedded > myRIO Project Template
  3. 输入项目名称(如“My_First_myRIO_Project”)和保存路径
  4. 在Target Selection页面选择已识别的myRIO设备

项目结构生成如下:

My Project
├── My Computer
│   └── My Project.lvproj
└── Targets
    └── NI-myRIO-1900
        ├── Dependencies
        ├── Build Specifications
        └── Main.vi

📌 关键理解:
- My Computer 下的VI仅在PC端运行,适合做上位机监控界面
- NI-myRIO-1900 下的VI会被编译成可在Linux RT上运行的可执行文件
- Main.vi 是默认主程序入口,修改后可作为自启动应用


运行示例程序:验证系统是否就绪

打开 Main.vi,你会发现前面板有三个波形图,分别显示X/Y/Z轴加速度值。

程序框图为典型的采集循环结构:

[While Loop]
    ↓
[Accelerometer Express VI] → 输出XYZ三轴加速度(g)
    ↓
[Bundle] → 构造簇
    ↓
[Waveform Graphs] 显示在前面板

点击运行按钮 ▶️,LabVIEW会自动完成以下动作:
1. 检测目标设备连接状态
2. 编译程序(包括必要FPGA资源分配)
3. 部署至myRIO并启动远程执行

部署期间会弹出进度窗口,显示“Building”、“Transferring”、“Launching”状态。

💡 观察现象:
- 平放时,Z轴应接近1.0g(重力方向)
- 轻微晃动,数值随之波动
- 若数据无变化或全为零,检查:
- 是否选择了正确的设备
- 加速度计Express VI是否配置了正确量程(±2g)

📌 技术细节补充:
- Accelerometer VI位于函数面板 → Express > Input > Accelerometer
- 双击可设置采样率(建议调试阶段设为100Hz以内)
- 数据通过TCP回传至PC显示,适合调试;正式运行建议关闭图形界面


快速开发技巧:用Express VI代替写代码

LabVIEW的一大优势在于其丰富的Express VI库,尤其在myRIO Toolkit加持下,常见外设几乎“拖拽即用”。

常用Express VI一览

功能 对应VI 应用举例
模拟输入AI DAQ Assistant → Analog Input 接NTC热敏电阻测温
数字输出DO Digital Write 控制LED或继电器
PWM输出 Pulse Width Modulation 驱动直流电机调速
UART通信 Serial Port 连接GPS模块获取经纬度
I²C通信 I2C Configure/Read/Write 驱动OLED屏显示信息
用户按键 User Button 手动触发采集事件
用户LED User LED 状态指示灯

🎯 实战示例:按键控制LED

需求:按下用户按键,点亮绿色LED;松开则熄灭。

实现步骤
1. 新建VI,放置两个布尔控件:
- 前面板:一个圆形LED指示灯(属性设为“Green On-Black Off”)
- 一个布尔显示控件用于查看按键状态
2. 程序框图添加While循环
3. 从函数面板拖入 User Button?Set User LED On/Off
4. 连线逻辑如下:

[While Loop]
    ↓
[User Button?] 
    ↙         ↘
[True?]     [False?]
  ↓           ↓
[LED On]   [LED Off]
  1. 将该VI替换原Main.vi,部署后即可实现物理交互

🔧 经验分享:
- While循环中建议加入10–50ms延时,避免CPU占用过高
- 若需多路I/O协同工作,考虑使用状态机结构提升可维护性


自启动设置:脱离PC独立运行的关键一步

当系统调试完毕,下一步就是让它像真正的嵌入式设备一样——上电即运行。

如何打包为实时应用程序?

  1. 在项目浏览器中右键 Build SpecificationsNew > Real-Time Application
  2. 在【Information】页填写:
    - 名称:如 AutoRun_Accelerometer
    - 版本号:1.0.0.0
    - 作者:自定义
  3. 切换至【Source Files】页:
    - 将主VI(如Main.vi)拖入“Startup VIs”
    - 子VI拖入“Included VIs”,选择“Always Included”
  4. 点击【Build】开始构建(耗时约2–5分钟)

构建成功后,会在项目中生成一个 .exe 文件(实际为Linux ELF格式可执行文件)。

部署与设为启动项

右键该应用文件:
- Deploy:上传至myRIO并安装
- Set as Startup Application:下次重启时自动运行

断开PC连接,重新上电,观察设备行为:
- STATUS灯规律闪烁 → 程序正在运行
- LED随按键响应 → 功能正常

✅ 至此,设备已完全脱离PC独立工作。

🔧 注意事项:
- 每台myRIO只能设置一个启动应用
- 更换应用前务必先取消当前启动项
- 若程序崩溃导致无法连接,可按住用户按钮再上电,进入安全模式清除启动项


开发进阶建议:少走弯路的经验之谈

✅ 推荐做法

场景 最佳实践
调试阶段 使用PC端前面板实时监控,便于发现问题
正式部署 移除所有图形控件,减少内存与CPU消耗
多任务处理 使用Queued State Machine管理不同操作模式
数据记录 采用TDMS格式存储,支持高速写入与后期分析
网络通信 使用TCP/UDP协议实现远程命令下发或数据上报
高速采集 将定时任务移至FPGA层,提高精度与可靠性

❌ 常见陷阱

  • 主循环无延时:导致CPU占用率达100%,影响其他任务响应
  • 频繁打开/关闭文件引用:增加系统调用开销,易引发资源泄漏
  • 忽略错误处理链:一旦出错整个程序挂起,难以定位原因
  • 未测试无界面运行:依赖前端显示的程序在自启动时可能失败

📌 经验法则:在部署前,先在LabVIEW中禁用前面板,运行程序10分钟以上,确认无异常后再进行构建。


写在最后:为什么这套组合依然值得学习?

尽管近年来Python+树莓派的组合在教育领域风头正劲,但LabVIEW + myRIO在工程级应用中仍有不可替代的优势:

  • 确定性实时性能:Linux RT保证任务按时执行,适合闭环控制
  • 软硬协同设计:FPGA部分可实现纳秒级定时、高速并行采集
  • 图形化调试直观:波形、图表、探针一目了然,特别适合初学者理解数据流
  • 工业生态成熟:与DAQmx、CompactDAQ等设备无缝对接

更重要的是,这种“可视化编程+模块化硬件”的理念,正在被越来越多的现代工具所借鉴。掌握它,不仅是学会一种技术,更是培养一种系统级思维。

希望这份指南能帮你顺利迈出嵌入式开发的第一步。当你亲手做出第一个能独立运行的myRIO应用时,那种“我造出了一个小系统”的成就感,远比任何教程文字都来得真实。

📌 延伸学习资源
- NI官方myRIO用户手册
- LabVIEW帮助文档
- NI学术社区

📧 如有疑问,欢迎联系:LabVIEW_Zh@163.com

图片来源:部分示意图源自NI公开资料,特此致谢!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐