第3章

myRIO模拟信号采集与输出





主要内容

■模拟信号数据采集技术概述;

■myRIO模拟信号采集与输出有关引脚分布;

■myRIO工具包中模拟信号采集ExpressVI、底层VI配置和使用方法;

■模拟信号采集技术相关工程项目开发实战;

■myRIO工具包中模拟信号输出ExpressVI、底层VI配置和使用方法;

■模拟信号输出技术相关工程项目开发实战。


3.1模拟信号采集技术及应用 

本节在模拟信号数据采集基本原理介绍的基础上,给出myRIO模拟输入端口资源配置,模拟信号采集的ExpressVI及其调用方法,模拟信号采集相关的若干底层VI及其应用的一般流程,并结合电压采集实例介绍实现模拟信号数据采集程序编写的基本方法。

3.1.1模拟信号采集概述

模拟信号采集(Analog Input,AI)是指对于连续变化的物理量所表示的信号进行数据采集。这里所谓的连续,既指时间上的连续性,也指数值上的连续性。模拟信号一般指的是连续的电信号。常见的模拟信号采集多为电压信号的采集,当然模拟信号还包括温度、压力、流量、位移、电阻、频率、位置、声音、加速度等物理信号经传感器变换所得的电信号。一般情况下,物理信号经传感器变换所得的电信号需要经过信号调理才能进行数据采集。


根据传感器输出信号的特征不同,测量系统接入模拟信号有单端接入和差分接入两种方式。

单端接入方式是指传感器信号线连接测量系统有关AI端口,传感器地线与测量系统共地连线。这种连接方式简单易用,但是存在容易引入共模干扰的问题。单端接入方式适合传感器输出信号电平比较高、信号传输线比较短且存在屏蔽或信号可以共享公共参考点的场景。


差分接入方式是指传感器信号的+、-两极分别连接测量系统的两个不同的通道。差分接入是一种比较理想的接线方式,可以有效抑制接地回路产生的误差,还可以在一定程度上抑制传输线拾取的环境噪声,特别适合传感器输出电平比较低(如小于1V)、信号传输线路长、环境噪声比较大的场景。但是差分接入方式占用的I/O通道数量是单端接入方式的2倍,这是其无法克服的缺点。

模拟信号采集除了上述连接模式需要考虑,还必须在项目实施前考虑信号输入范围(输入信号的最大值和最小值)、采样速率(数据采集的时间间隔,需满足Nyquist定理要求)、精度(AD转换的位数决定)等因素。

myRIO提供了8个单端模拟输入通道、2个差分模拟输入通道,总计10个模拟信号输入通道,其中A口提供4个单端模拟输入通道,分别是AI0、AI1、AI2、AI3,对应Pin3、Pin5、Pin7、Pin9; B口同样提供4个单端模拟输入通道,其引脚编号与A口一致。A、B口提供的模拟输入通道引脚分布如图31所示。



图31A、B口提供的模拟输入通道引脚分布


C口提供2个模拟输入通道,属于差分输入通道,为AI0+(Pin7)、AI0-(Pin8)、AI1+(Pin9)、AI1-(Pin10),C口提供的模拟输入通道引脚分布如图32所示。



图32C口提供的模拟输入通道引脚分布


myRIO中的模拟输入一般为0~5V单端电压类型数据,连接传感器时需要注意传感器输出电压范围,必要时设计针对连接传感器输出特性的调理变换电路,使之适应myRIO模拟输入的要求。

3.1.2主要函数节点

myRIO中模拟信号采集的实现有两种方法。第一种方法是使用myRIO工具包中提供的模拟输入ExpressVI,如图33所示。



图33myRIO工具包中提供的模拟输入ExpressVI


将该节点拖曳至程序框图,即可弹出模拟输入Express VI 配置窗口,如图34所示。



图34模拟输入Express VI 配置窗口


配置操作完成后,程序框图中的模拟输入Express VI节点图标如图35所示。


按照当前配置,该节点每次调用可以读取A口AI0模拟输入通道一个数据。配置多个模拟输入通道,则可以同时读取多个模拟信号数值。

第二种方法是基于myRIO提供的底层函数(myRIO→Low Level→Analog Input 1 Sample)实现模拟信号采集,底层函数子选板中的模拟输入相关VI如图36所示。



图35模拟输入Express VI节点图标




图36底层函数子选板中的模拟输入VI




基于底层函数进行模拟信号采集时,基本流程为“打开AI通道(Open)→AI通道读取(Read)→关闭AI通道(Close)”。如果需要连续读取AI通道数据,则将AI通道读取操作(Read)置于While循环结构之中即可。



微课视频


3.1.3模拟信号采集技术应用实例

模拟信号采集技术是电子系统感知外部世界连续变化数据或者状态的重要技术手段,具有极其重要的实践价值。

旋转电位器是一种阻值可调的电子元件,由一个电阻体和一个转动或滑动系统组成。当电阻体的两个固定触点之间外加一个电压时,通过转动系统改变触点在电阻体上的位置,在动触点与固定触点之间便可得到一个与动触点位置成一定关系的电压。旋转电位器主要用于通信产品、对讲机、汽车功放、多媒体音响、智能家居、计算机周边等,其功能主要为音量调节、光线强弱调节、速度调节、温度调节等。

1) 设计目标

本节案例使用旋转电位器形成分压电路,产生跟随电位器旋转角度变化的模拟电压值,进而通过myRIO模拟信号采集端口获取对应的电压值,并根据电压值范围驱动板载不同LED灯显示。

2) 硬件连线

旋转电位器A、B、C三个接线端分别连接myRIO开发平台A口Pin1(+5V)、Pin3(AI0)、Pin6(AGND),实现旋转电位器分压电路信号采集功能,基于旋转电位器的分压信号采集硬件连线如图37所示。



图37基于旋转电位器的分压信号采集硬件连线


3) 设计思路

利用myRIO新建项目的程序模板,在While循环结构内,采集A口AI0(Pin3)数据,即旋转电位器分压所产生的模拟电压值。由于旋转电位器从一个极端转至另一个极端时,电压值相应地从0V连续变化至5V,所以可以将采集的电压值设置为4个电压值区间,当采集的电压值处于[0,1.25)时,驱动LED0显示; 当采集的电压值处于[1.25,2.5)时,驱动LED1显示,当采集的电压值处于[2.5,3.75)时,驱动LED2显示,当采集的电压值处于[3.75,5]时,驱动LED3显示。

4) 程序实现

程序实现可分解为程序总体结构设计、旋转电位器电压检测、板载LED驱动显示、myRIO重置等功能设计。

(1) 程序总体结构设计。利用myRIO项目模板自动生成的3帧程序结构,删除三轴加速度计数据采集相关函数节点。第一帧保持不变; 第二帧While循环中采集旋转电位器电压值,借助条件结构进行采集数据所在区间判断,并驱动板载LED显示; 第三帧重置myRIO。

(2) 旋转电位器电压检测。调用ExpressVI Analog In(函数→myRIO→Analog In),错误输入连接第一帧簇常量; 由于A口Pin3(AI0)连接外部信号,所以配置模拟信号采集通道如图38所示。



图38配置模拟信号采集通道


配置完毕后,右击ExpressVI Analog In图标,选择“图标样式→显示为子VI”,完成模拟信号采集函数节点配置和调用,实现旋转电位器分压值的检测。

(3) 板载LED驱动显示。由于旋转电位器分压结果为0~5V,根据检测值将其进行四分段处理,即分压值处于[0,1.25)、[1.25,2.5)、[2.5,3.75)、[3.75,5]某个区间时,驱动对应的板载LED0、LED1、LED2、LED3分别显示。

调用函数节点“判定范围并强制转换”(函数→编程→比较→判定范围并强制转换)。其输入参数x连接模拟信号采集结果; 其输入参数“上限”设置为常量1.25,其输入参数“下限”设置为常量0,完成采集结果是否属于区间[0,1.25)的判断。同样方法,完成采集数据是否属于另外三个区间的判断。

调用条件结构判断上一步采集数据区间判定结果。当判定结果为真时,对应的条件结构“真分支”内调用ExpressVI“LED”(函数→myRIO→LED),配置板载LED控制对象为LED0,如图39所示。



图39配置板载LED控制对象为LED0


为了进一步验证程序功能,程序前面板中添加4个布尔类型显示控件“圆形指示灯”(函数→编程→布尔→圆形指示灯),与板载LED功能对应一致。当板载LED0亮时,前面板对应的“圆形指示灯”同时取值为真。

条件结构“假分支”内调用ExpressVI LED,设置常量“逻辑假”熄灭板载LED0,同时驱动前面板对应的“圆形指示灯”取值为假。

其他3种情况处置办法与此相同,这里不再赘述。

(4) myRIO重置。调用函数节点Reset myRIO(函数→myRIO→Device management→Reset)实现程序结束后的myRIO设备复位功能。

最终完成的程序中,当检测到的分压值满足某一区间判定条件时,驱动对应的板载LED发光,对应的模拟信号采集与LED发光驱动程序实现如图310所示。



图310模拟信号采集与LED发光驱动程序实现


当检测到的分压值不满足某一区间判定条件时,驱动板载LED熄灭,对应的模拟信号采集与LED熄灭驱动程序实现如图311所示。



图311模拟信号采集与LED熄灭驱动程序实现


同样功能,亦可采用底层函数实现,基于底层VI的模拟信号采集与板载LED驱动程序实现如图312所示。



图312基于底层VI的模拟信号采集与板载LED驱动程序实现


3.2模拟信号输出技术及应用

本节在模拟信号输出概念介绍的基础上,介绍myRIO模拟信号输出通道资源配置情况,模拟信号输出的ExpressVI及其调用方法,模拟信号输出相关的若干底层VI及其应用一般流程,并结合LED发光亮度连续调节实例介绍实现模拟信号输出程序编写的基本方法。

3.2.1模拟信号输出技术概述

模拟信号输出(Analog Output,AO)可视为模拟信号采集的逆过程。模拟信号采集是获取外部模拟量数据,经采集装置A/D模块转换为计算机/嵌入式可识别的数字信号。而模拟信号输出则是指由计算机/嵌入式产生的数字信号经D/A转换成为模拟信号,经由模拟输出通道向外输出。

myRIO提供了4个单端模拟输出通道和2个对地参考模拟输出通道。其中A口提供2个单端模拟输出通道,分别是AO0(Pin2)、AO1(Pin4); B口同样提供2个单端模拟输出通道,其引脚编号与A口一致。A、B口模拟输出通道引脚分布如图313所示。



图313A、B口模拟输出通道引脚分布


C口提供2个对地参考模拟输出通道,为AO0(Pin4)、AO1(Pin5),C口模拟输出通道引脚分布如图314所示。



图314C口模拟输出通道引脚分布


3.2.2主要函数节点

myRIO中模拟信号输出的实现有2种方法。第一种方法是使用myRIO工具包中的模拟输出Express VI,如图315所示。



图315myRIO工具包中的模拟输出Express VI



将该节点拖曳至程序框图,即可弹出模拟输出ExpressVI参数配置窗口,如图316所示。



图316模拟输出ExpressVI参数配置窗口


配置操作完成后,程序框图中的模拟输出ExpressVI节点图标如图317所示。


按照当前配置,该节点每次调用可以向A口AO0输出一个数据。配置多个端口,则可以同时写出多个模拟量数值。

第二种方法是基于myRIO提供的底层函数(myRIO→Low Level→Analog Output 1 Sample)实现模拟信号输出,底层函数子选板中的模拟输出相关节点如图318所示。



图317模拟输出ExpressVI节点图标




图318底层函数子选板中的模拟输出节点




基于底层函数进行模拟信号输出时,基本流程为“打开AO通道(Open)→AO通道写入(Write)→关闭AO通道(Close)”。如果需要连续输出AO通道,则将AO通道写入操作(Write)置于While循环结构中即可。



微课视频


3.2.3模拟信号输出技术应用实例

模拟输出通道提供的信号经常作为电子系统提供激励信号,或者为自动化系统提供控制信号,具有很重要的实践价值。

1) 设计目标

本节案例使用旋转电位器形成分压电路,产生跟随电位计旋转角度变化的模拟电压值,进而通过myRIO中AI通道采集对应的电压值,并将采集的电压值通过AO通道输出,用以实现人工可控的模拟电压调节LED发光亮度。

2) 硬件连线

旋转电位器A、B、C三个接线端分别连接myRIO开发平台A口Pin1(+5V)、Pin3(AI0)、Pin6(AGND)。LED阳极连接B口Pin2(AO0),阴极连接B口Pin6(AGND)。模拟输出驱动LED显示的硬件连线如图319所示。



图319模拟输出驱动LED显示的硬件连线


3) 设计思路

利用myRIO新建项目的程序模板,在While循环结构内,采集A口AI0(Pin3)连接的旋转电位器分压所产生数据。由于旋转电位器从一个极端转至另一个极端时,电压值相应地从0V连续变化至5V,所以将采集的模拟电压值通过AO0端口输出,作为LED显示驱动电压,实现基于调节电位器产生连续变化的驱动电压,达到连续调节LED发光亮度的目的。

4) 程序实现

程序实现可分解为程序总体结构设计、旋转电位器电压检测、LED驱动电压输出控制等步骤。

(1) 程序总体结构设计。利用myRIO项目模板自动生成的3帧程序结构,删除三轴加速度计数据采集相关函数节点。第一帧保持不变,传递初始状态无错误信息; 第二帧While循环中采集旋转电位器电压值,向AO0通道输出采集结果实现LED亮度控制; 第三帧重置myRIO。

(2) 旋转电位器电压检测。调用ExpressVI Analog In(函数→myRIO→Analog In),错误输入连接第一帧簇常量; 配置旋转电位器分压电路信号采集通道为A口Pin3(AI0),如图320所示。



图320配置旋转电位器分压电路信号采集通道


(3) LED驱动电压输出控制。LED连接B口AO0,将采集的旋转电位器分压结果通过ExpressVI Analog Out(函数→myRIO→Analog Out)输出,控制B口AO0通道电压值,达到调控LED发光亮度的目的。对应的LED发光亮度调控信号输出通道配置如图321所示。



图321LED发光亮度调控信号输出通道配置


基于模拟输出Express VI实现LED发光亮度调控的完整程序如图322所示。



图322基于模拟输出Express VI实现LED发光亮度调控的完整程序



同样功能亦可采用底层函数实现,基于模拟输出底层VI实现LED发光亮度调控的完整程序如图323所示。



图323基于模拟输出底层VI实现LED发光亮度调控的完整程序