一、硬件架构
NI CompactRIO 嵌入式开发系统硬件部分包括机箱和C系列或其他系列热插拔模块,热插拔模块也可以是自定义的带有相关处理功能的I/O模块。机箱包括RT实时控制器和内嵌于机箱的可重配置FPGA芯片(如图1和图2),对于可重配置FPGA芯片其功能是提供众多的I/O口以便于编程控制热插拔模块提供相应的I/O模块实现系统功能,同时该FPGA芯片由机箱的RT实时控制器控制,数据在FPGA中经过简单的处理后被传输到RT系统中进一步处理。有时候我们自定义开发的I/O口模块也用的FPGA,因此对于初学者而言,对I/O模块进行相应的FPGA驱动程序编写通常易与机箱背板的FPGA编程功能实现混淆。
图1 内置FPGA芯片的机箱背板
图2 内置机箱背板FPGA引脚示意
二、开发软件
NI cRIO嵌入式开发系统所需基本软件程序:Labview、Labview Real-Time、Labview FPGA、NI-RIO驱动程序、集成到Labview FPGA中的Xilinx编译器,这些软件都要求是同一版本,一般按这种顺序安装。相关软件都可以到NI官网上下载。如果要进行自定义I/O模块开发则需安装CompactRIO MDK软件。
三、软件架构
图5 完整的NI cRIO架构
在谈创建NI cRIO项目之前先来缕缕几个概念或说作用对象。
Labview Real-Time代码编译之后是下载至Real-Time系统中,运行在嵌入式实时控制系统平台上,实现与机箱内嵌的FPGA或上位机通信,实现实时操作系统开发,如图6。
图6
Labview FPGA代码编译完成之后下载到机箱背板FPGA中,控制I/O模块实现系统功能,实现FPGA的可重配置,如图7。
图7
RT系统、背板FPGA、主机(上位机)、I/O模块之间的通信桥梁。FIFO是FPGA与Real-Time之间的桥梁,FPGA与物理接口I/O模块之间通过可重配置引脚连接。RT和主机之间的通信有两种方法:网络共享变量和TCP/IP。除了这些连接方式,两两之间没有其他方式通信。如图8。
图8
完整的开发流程:在Labview开发平台上完成上位机、Labview RT和Labview FPGA的VI编程,运行编译完成后将相应的编译文件通过网络通信下载到机箱的实时系统和FPGA终端,这个过程是自动完成的,然后发布。注意:扫描模式下无FPGA编程,只有主机和Labview RT编程。整个流程如图9和图10所示,图11为FPGA接口模式下的各个模块一一与项目浏览器中模块对应。
图9
图10
图11项目浏览器中对应部分
四、具体的项目编程创建开发流程
具备以上基础知识后,下面我们开始具体的项目编程创建流程。
NI cRIO创建项目编程有三种方式:扫描模式、FPGA接口编程模式和混合模式,通常使用前两种模式。
在具体创建项目之前我们需要先设置硬件和在NI MAX中进行控制器配置和相关软件安装,注意与通常意义上的软件安装区别开。步骤如下:
设置硬件:
1. 使用非集成式控制器和机箱时,需安装控制器至机箱。这一步可以不用管;
2. 将相关热插拔I/0模块安装到机箱卡槽中;
3. 为控制器上电,并将控制器连接至与开发计算机同一子网的以太网网络。
在NI MAX中进行控制器配置和相关软件安装:
1. 在开发计算机中启动 Measurement & Automation Explorer (MAX)。
2. 在配置面板,选择远程系统下的控制器。如未找到该控制器,可能需要禁用开发计算机上的防火墙。
3. 确保识别中的***与设备上的***一致。(识别NI cRIO机箱***)
4. 如不希望格式化控制器上的磁盘,从而清除所有已安装的软件和文件,为控制器上电,然后跳至步骤 9。(是指控制机箱上的RT操作系控制器)
5. 将控制器上的 Safe Mode 开关置为 On 位置;
6. 为控制器上电。如控制器已通电,可按下控制器上的Reset按钮重新启动;
7. 在配置栏中右键单击远程系统下的控制器,选择格式化磁盘。单击弹出对话框中的是;
8. MAX 完成磁盘格式化后,设置控制Safe Mode开关为Off,并按下Reset按钮重启控制器;
9. 在 IP 设置栏中,选择自动获取 IP 地址单选按钮自动获取 IP 址,或选择使用以下IP 地址单选按钮手动指定静态 IP 地址;
10. 在名称栏输入系统的描述性名称;
11. 点击网络设置选项卡上方的应用, MAX 将重启系统;
12. 新系统名称出现在远程系统下后,请展开目录树中的控制器项,右键单击软件并选择添加 / 删除软件;
13. 如控制器支持扫描接口编程模式,选择包含 NI 扫描引擎支持的推荐软件集并安装。如控制器不支持扫描接口模式,选择标准推荐软件集并安装。如需安装推荐软件集的详细信息,请单击帮助;
14. 完成软件安装后关闭 MAX。
创建相应的编程模式(只讲扫描模式和FPGA接口模式):
概述:
在扫描接口模式中,可通过 LabVIEW Real-Time 直接使用 C 系列或自定义模块。扫描接口模式中使用的模块直接出现在项目浏览器窗口的机箱项中,I/O 通道以 I/O 变量出现在模块中。欲使用 I/O 变量,请将它们拖放至 LabVIEW Real-Time VI 中。扫描接口模式下,无需进行任何 LabVIEW FPGA 开发,也无需编程实现 FPGA 和主机 VI 之间的通信。此外,用户无需等待VI在FPGA编译完成,即可部署和运行VI。在扫描接口模式中,LabVIEW对CompactRIO终端的FPGA编程,并通过变量使用。下图为项目浏览器窗口,其中添加了一个数字输入模块及其他模块,并处于扫描接口模式。图12
图12已添加模块的项目浏览器窗口,扫描接口模式
在LabVIEW FPGA接口模式下,可通过LabVIEW FPGA VI直接使用C系列模块。LabVIEW FPGA接口模式下的模块直接出现在项目浏览器窗口的FPGA终端项中I/O通道以FPGA I/O项出现在FPGA终端下。欲访问I/O通道,请在FPGA VI中配置FPGA I/O节点。在LabVIEW FPGA接口模式中,可通过LabVIEW FPGA编程增强应用程序的灵活性、自定制功能和精确定时。欲在LabVIEW FPGA接口模式中使用CompactRIO系统,必须在主机安装LabVIEW FPGA模块,或者具有对可下载至FPGA的已编译比特文件的访问权限。任意一种情况下,需使用主机VI的打开FPGA VI引用句柄函数访问FPGA VI或比特文件。下图为在 FPGA 接口模式下添加相同模块后的项目浏览器窗口。图13
图13已添加模块的项目浏览器窗口,FPGA 接口模式
有了上面这些知识后现在我们开始创建项目。
在扫描接口模式中创建项目
使用LabVIEW项目在开发计算机上管理VI、终端以及I/O模块。按照下列步骤,新建一个项目。
1. 启动 LabVIEW;
2. 在启动窗口,单击创建项目打开项目浏览器窗口。或选择文件»创建项目打开项目浏览器窗口;
3. 选择帮助,确保显示即时帮助为勾选。关于程序框图上项的详细信息,请参考即时帮助;(可不要)
4. 右键单击项目浏览器窗口中的顶层项目项,从快捷菜单中选择新建»终端和设备显示添加终端和设备对话框;
5. 确保选中现有终端或设备单选按钮;如未安装硬件,可选择新建终端或设备单选按钮,显示在没有物理终端或设备的情况下,可创建的终端和设备列表,进行离线操作;
6. 展开Real-Time CompactRIO;
7. 选择要添加至项目的 CompactRIO 控制器,然后单击确定;
8. 如已安装 LabVIEW FPGA,将出现选择编程模式对话框。选择扫描接口,将系统置为扫描接口模式;
9. 单击继续。LabVIEW将控制器、机箱和所有模块添加至项目;
10. 如出现是否检测C系列模块? 对话框,请单击检测。项目浏览器窗口应类似于图12;
11. 选择文件»保存项目,保存项目为XXX.lvproj。
完成以上步骤后就可以在项目中创建添加在扫描模式下相关VI编程了。
在FPGA接口模式中创建项目
本节创建项目的方法与在扫描接口模式中创建项目类似,只是编程模式选择LabVIEW FPGA 接口模式。
1. 启动 LabVIEW;
2. 在启动窗口的终端栏选择FPGA项目;
3. 单击完成;
4. 在弹出的新建LabVIEW FPGA项目对话框中选择CompactRIO可重配置嵌入式系统并单击下一步;
5. 确认检测现有系统处于选中状态,单击下一步。如未安装所需硬件,用户可勾选创建新系统,执行离线的后续操作;
6. 选择正在使用的控制器,单击下一步;
7. 取消勾选完成时启动 FPGA 向导,单击完成。LabVIEW将控制器、机箱、FPGA终端和所有模块添加至项目。展开项目项后的项目浏览器窗口与下图类似。图14
图14新建 FPGA 项目的项目浏览器窗口
8. 选择帮助,确保显示即时帮助为勾选。关于程序框图上项的详细信息,请参考即时帮助;
9. 单击文件»保存项目,保存项目为Getting Started.lvproj。
完成以上步骤就可以进行后续的VI编程开发了。
以上是本人的一点学习总结,是一个完整的NI CompactRIO嵌入式开发系统的说明和开发流程,希望对有需要的人起到一定的帮助,以便能快速构建出完整的轮廓进行后续的编程开发。