LabVIEW与myRIO嵌入式开发入门指南
介绍基于NI myRIO-1900和LabVIEW的嵌入式系统开发流程,涵盖环境搭建、设备连接、项目创建及加速度数据采集实例,并详解如何部署上电自启动程序,实现脱离计算机独立运行,适用于教学与创新应用开发。
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。
设备连接与初始化:打通第一道关卡
接线步骤
- 使用原装电源适配器供电(推荐,稳定性高)
- 或通过Micro-B USB线由PC供电(适用于轻负载测试)
- 用另一根Micro-B USB线连接PC与myRIO的“USB Host”口(用于通信)
通电后,观察设备指示灯:
- PWR灯常亮 → 电源正常
- STATUS灯闪烁 → 系统正在启动
- 如果Wi-Fi灯亮起 → 已进入AP模式(默认出厂设置)
首次连接配置
打开 NI Measurement & Automation Explorer (MAX):
- 在左侧导航栏展开 “远程系统”
- 找到名为
NI-myRIO-1900的设备 - 查看右侧信息面板:
- 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中新建项目时,选择模板非常关键。直接创建空白项目会导致目标设备无法正确部署。
正确操作流程
- 启动LabVIEW → 【创建新项目】→【Project】
- 在模板类别中选择
Templates > Embedded > myRIO Project Template - 输入项目名称(如“My_First_myRIO_Project”)和保存路径
- 在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]
- 将该VI替换原
Main.vi,部署后即可实现物理交互
🔧 经验分享:
- While循环中建议加入10–50ms延时,避免CPU占用过高
- 若需多路I/O协同工作,考虑使用状态机结构提升可维护性
自启动设置:脱离PC独立运行的关键一步
当系统调试完毕,下一步就是让它像真正的嵌入式设备一样——上电即运行。
如何打包为实时应用程序?
- 在项目浏览器中右键 Build Specifications → New > Real-Time Application
- 在【Information】页填写:
- 名称:如AutoRun_Accelerometer
- 版本号:1.0.0.0
- 作者:自定义 - 切换至【Source Files】页:
- 将主VI(如Main.vi)拖入“Startup VIs”
- 子VI拖入“Included VIs”,选择“Always Included” - 点击【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公开资料,特此致谢!
更多推荐



所有评论(0)