实例5 PCI-1710HG数据采集卡数字量输出
一、设计任务
采用LabVIEW语言编写程序实现PC与PCI-1710HG数据采集卡数字量输出。
任务要求如下:在程序界面中执行“打开”/“关闭”命令,界面中信号指示灯变换颜色,同时,线路中数字量输出端口输出高/低电平。
二、线路连接
PC与PCI-1710HG数据采集卡组成的数字量输出线路如图3-20所示。
图3-20 PC与PCI-1710HG数据采集卡组成的数字量输出线路
图3-20中,PCI-1710HG数据采集卡数字量输出1通道(端口13和39)接三极管基极,当计算机输出控制信号置13端口为高电平时,三极管导通,继电器常开开关KM1闭合,指示灯L亮;当置13端口为低电平时,三极管截止,继电器常开开关KM1打开,指示灯L灭。
也可使用万用表直接测量各数字量输出通道与数字地(如DO1与DGND)之间的输出电压(高电平或低电平)来判断数字量输出状态。
本实例用到的硬件包括PCI-1710HG数据采集卡,PCL-10168数据线缆,ADAM-3968接线端子(使用数字量输出DO通道),继电器(DC 24V),指示灯(DC 24V),直流电源(输出DC 24V),电阻(10kΩ),三极管等。
三、任务实现
1.设计程序前面板
(1)为了输出数字信号,添加1个垂直滑动杆开关控件:控件→新式→布尔→垂直滑动杆开关,将标签改为“开关”。
(2)为了显示数字输出信号状态,添加1个指示灯控件:控件→新式→布尔→圆形指示灯,将标签改为“指示灯”。
(3)为了关闭程序,添加1个停止按钮控件:控件→新式→布尔→停止按钮。
用画线工具将指示灯控件、开关控件等连接起来。
设计的程序前面板如图3-21所示。
图3-21 程序前面板
2.框图程序设计
在进行LabVIEW编程之前,必须首先安装研华设备管理程序(Device Manager)、32bit DLL驱动程序及研华板卡LabVIEW驱动程序。
(1)添加选择设备函数:函数→用户库→Advantech DA&C(研华公司的LabVIEW函数库)→EASYIO→SelectPOP→SelectDevicePop.vi。
(2)添加打开设备函数:函数→用户库→Advantech DA&C→ADVANCE→DeviceManager→DeviceOpen.vi。
(3)添加关闭设备函数:函数→用户库→ADVANCE→DeviceManager→DeviceClose.vi。
(4)添加While循环结构:函数→编程→结构→While 循环。
以下添加的函数或结构放置在While循环结构框架中。
图3-22 SlowDIO函数库
(5)添加写端口位函数:函数→用户库→Advantech DA&C→ADVANCE→SlowDIO→DIOWriteBit.vi,如图3-22所示。
(6)添加4个数值常量:函数→编程→数值→数值常量,值分别为设备号0、DO通道号1、比较量0、时钟周期200。
(7)添加1个布尔值至(0,1)转换函数:函数→编程→布尔→布尔值至(0,1)转换。
(8)添加1个“等于?”函数:函数→编程→比较→等于。
(9)添加1个时钟函数:函数→编程→定时→等待下一个整数倍毫秒。
(10)添加非函数:函数→编程→布尔→非,并从外拖入控件While 循环中。
(11)添加1个条件结构:函数→编程→结构→条件结构。
(12)在条件结构的真(True)选项中,添加1个数值常量(值为0):函数→编程→数值→数值常量。
(13)在条件结构的真选项中,添加1个“不等于0?”函数:函数→编程→比较→不等于0?。
(14)在条件结构的假(False)选项中,添加1个数值常量(值为1):函数→编程→数值→数值常量。
(15)在条件结构的假选项中,添加1个“不等于0?”函数:函数→编程→比较→不等于0?。
(16)在条件结构的假(False)选项中,添加1个局部变量:函数→编程→结构→局部变量。
选择局部变量,单击鼠标右键,在弹出菜单的选项下,为局部变量选择控件“指示灯”,设置为“写”属性。
(17)分别将垂直滑动杆开关控件(标签为“开关”)、停止按钮控件(标签为“Stop”)等从外拖入循环结构中;将指示灯控件(标签为“指示灯”)放入条件结构的真(True)选项中。
(18)将函数SelectDevicePop.vi的输出端口“DevNum”与函数DeviceOpen.vi的输入端口“DevNum”相连。
(19)将函数DeviceOpen.vi的输出端口“DevHandle”与函数DIOWriteBit.vi的输入端口“DevHandle”相连。
(20)将数值常量(值为0,设备号)与函数DIOWriteBit.vi的输入端口“Port”相连。
(21)将数值常量(值为1,通道号)与函数DIOWriteBit.vi的输入端口“BitPos”相连。
(22)将函数 DIOWriteBit.vi 的输出端口 DevHandle 与函数 DeviceClose.vi 的输入端口“DevHandle”相连。
(23)将开关控件(标签为“开关”)与布尔值至(0,1)转换函数的输入端口“布尔”相连。
(24)将布尔值至(0,1)转换函数的输出端口(0,1)与函数DIOWriteBit.vi的输入端口“State”相连。
将布尔值至(0,1)转换函数的输出端口(0,1)与比较函数“等于?”的输入端口“x”相连。
(25)将数值常量(值为0)与“等于?”函数的输入端口“y”相连。
(26)将“等于?”函数的输出端口“x = y?”与条件结构上的选择端口相连。
(27)在条件结构的真(True)选项中,将数值常量(值为0)与“不等于0?”函数的输入端口x相连;将“不等于0?”函数的输出端口“x != 0?”与指示灯控件相连。
(28)在条件结构的假(False)选项中,将数值常量(值为1)与“不等于0?”函数的输入端口x相连;将“不等于0?”函数的输出端口“x != 0?”与局部变量“指示灯”相连。
(29)将数值常量(值为200,时钟周期)与等待下一个整数倍毫秒函数的输入端口“毫秒倍数”相连。
(30)将停止按钮控件与非函数的输入端口“x”相连。
(31)将非函数的输出端口“非x ?”与循环结构的条件端子相连。
设计的框图程序如图3-23所示。
3.运行程序
单击快捷工具栏“运行”按钮,运行程序。
运行“SelectDevicePop.vi”子程序,选择研华板卡设备PCI-1710HG。
用鼠标推动程序界面中开关,界面中指示灯亮/灭(颜色改变),同时,线路中数字量输出通道输出高/低电平。
程序运行界面如图3-24所示。
图3-23 框图程序
图3-24 程序运行界面