LABVIEW 第八章 数字io

上传人:正仁 文档编号:188650174 上传时间:2021-08-01 格式:DOC 页数:28 大小:830KB
返回 下载 相关 举报
LABVIEW 第八章 数字io_第1页
第1页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《LABVIEW 第八章 数字io》由会员分享,可在线阅读,更多相关《LABVIEW 第八章 数字io(28页珍藏版)》请在金锄头文库上搜索。

1、第七章数字I/O DI/O的基本知识一般数据采集卡上都有DI/O功能,用来实现数据采集的触发、控制及计数等功能。DI/O 按TTL逻辑电平设计,其逻辑低电平在0到0.7V之间,高电平在3.4到5.0V之间。 数采板上多路(Line)数字 I/O 组成一组后被称为端口(Port)。一个端口由多少路数字 I/O 组成是依据其数采板而定的,在大多数情况下4或8路数字 I/O 组成一个端口。当读写端口时,你可以在同一时刻设置或获取多路DI/O的状态。MIO E 系列板卡有路数字 I/O组成了一个端口,实际使用时这路可以部分是输入,部分是输出。数字量输入输出的应用分为以下两类:立即型(非锁存型)和定时型

2、(锁存型)。在立即型情况下,当你调用数字 I/O函数后立即更新或读取数字量某一路或端口的状态。在定时型情况下,你可以使用外部信号来控制数字量数据的传输。LabVIEW 中关于DI/O的VI也分为低、中、高三个等级。在以下几个不同的子模板中:Data Acquisition Digital I/O, 顶层 用于较简单应用中的Easy I/O VI。第二部分将讨论如何使用这些VI。LabVIEW基础教程中也将会详细讲述这些 VI。Data Acquisition Digital I/O, 底层 是一些属于中级水平应用的VI,主要用于需要时间或握手线方面的数字信号应用。这些VI可用于单字节数据的传输

3、。第三部分将详细讨论关于这方面数字量信号的操作。图5-2 显示的是Data Acquisition Digital I/O 子模板。Data Acquisition Digital I/O Advanced Digital I/O 高级水平DI/O VI 可用于作为创建其他数字VI的基本模块。这些高级数字量VI可用于立即型DI/O和定时型DI/O 。图5-3显示的是 Data Acquisition Digital I/O Advanced Digital I/O 子模板。图 5-2. Data Acquisition DI/O 子模板图 5-3. Data Acquisition Digit

4、al I/O Advanced Digital I/O 子模板 立即型 DI/O 立即型DI/O 是最简单而且也是较经常使用的关于数字量方面的应用。它也叫非锁存型的DI/O,所有带有 DI/O 接口的数采板都支持这种DI/O 模式。在这种模式下,当LabVIEW 调用函数后即可立即设置或获取某路DI/O的状态。当某路DI/O被设定为某一状态后,那么该路DI/O 将一直保持这种状态直到其状态被重新设定为止。你可以通过软件改变某路DI/O 是输入或是输出方式。下面将讨论LabVIEW DAQ VI中的立即型 DI/O。Easy I/O VI 使用Easy I/O digital VI 你可以立刻输

5、入或输出某一路(某一端口)的数字量。当你设置DI/O VI iteration端为缺省参数时,每当你调用一次DI/O 函数时系统将会按需要自动设置一次数采板。当你在一个循环中重复调用某个DI/O 函数时,为了避免系统重复设置数采板,你可以设置DI/O VI iteration 端为正数。这些VI 可用于所有带有数字量输入输出的NI数采板。Write to Digital Line 设置某一端口中某一路 DI/O为逻辑高或者逻辑低状态 Device 是数采板的设备号(device number);Port number 是该路DI/O 所在的端口号;Line 准备要写的该路DI/O 的通道号;L

6、ine state 是指准备要写的该路DI/O 的状态:高(true) 或低(false)。图5-4. Write to Digital LineRead from Digital Line 读取某路 DI/O 的状态。Device 是数采板的设备号(device number);Port number 是该路DI/O 所在的端口号;Line 准备要读取的该路DI/O 的通道号;Linestate 返回要读取的该路DI/O 的状态:高(true) 或低(false)。图 5-5. Read From Digital LineWrite to Digital Port 向某一指定的端口写一数字量

7、,从而同时设定某一端口所有路DI/O通道的状态。Device 是数采板的设备号(device number);Port number 是准备要写的端口号;Pattern 是该端口要写的二进制或等同的十进制数字量。图 5-6. Write to Digital PortRead from Digital Port 读取某一指定端口所有路的DI/O 通道的状态。Device 是数采板的设备号(device number);Port number 是准备要读取的端口号;Pattern 是返回从该端口读取的数字量(十进制形式)。图 5-7. Read From Digital Port 如果在调用Ea

8、sy I/O digital VI 时发生错误,系统将会弹出一对话框显示出错代码,这时你可以终止或继续执行VI。注意:当你只调用一个Easy I/O digital VI实例读或写某个通道或端口时,程序是不会出错的。但是当再次调用函数时会通过改变移位寄存器的状态来重新改变DI/O的设置,故你不能调用多个VI实例来控制多个端口。在这种情况下你可以通过使用下面将讨论的高级VI来达到该目的。高级 VI (Advanced Vis) 使用高级 DI/O VI 也可以执行立即型 DI/O。(实际上,Easy I/O VI 是由多个高级VI所组成的)。使用高级 VI你可以更高效的执行数字I/O的读写工作,

9、因为当你调用高级VI 时,它不会象使用Easy I/O VI 那样每次运行时都需要去改变数采板的设置。高级VI允许你使用通道屏蔽技术更新某一端口中数个DI/O通道,而无须更新整个端口。根据高级VI提供的错误信息你可以用来开发出自己错误处理程序。这些高级VI 可用于所有带有数字量输入输出的NI 数采板。DIO Port Config 设置某个端口为写或读状态。Device 和 port number设置板卡的设备号与端口号;Line direction map 设置端口为输入或输出状态;除了 TIO-10 与 MIO E 系列板卡外,其余板卡同一端口中所有各路DI/O必须是同向的,即:同是输入或

10、者同是输出。task ID out 的输出将用于下一VI函数做为创建了一任务的唯一标识。图5-8. DIO Port Config VDIO Port Write 根据已创建任务的标识taskID立即更新端口的DI/O通道状态。pattern 输入的是一十进制数,当其换算为二进制时代表的是要更新的各路DI/O通道的状态。举个例子来说:若设pattern为1(二进制0001)那么将仅只设通道0为高电位,若设pattern为15(二进制1111)那将设通道0,1,2,3为高电位。图 5-9. DIO Port Write VI使用line mask 输入, 你可以仅只改变你指定的D /IO通道状态

11、。line mask 输入的是一十进制数字,该数字的值决定了那一个DI/O通道的状态被更新。举个例子来说:若line mask设为1(二进制0001)那么只有通道0被更新,若line mask设为15(二进制1111)那么通道0,1,2,3状态将被更新。未被包含在line mask中的通道其状态将不会被改变。图5-10 显示的两个例子就是使用line mask来控制端口中那路DI/O通道状态会被更新。你可以使用Scale By Power of 2 函数来选择单路通道或输入一十进制数直接选择多路通道。在图5-10a中,pattern值设为8(二进制1000)时,通道3将会被更新。在图5-10b

12、中,pattern值设为6(二进制0110)时,通道1,2将会被更新。假如你已设定该端口为输入状态,那么error out 将会返回一个错误代码。图 5-10. 利用通道屏蔽技术来更新一个或多个通道的状态DIO Port Read 根据已创建任务的标识taskID来获得端口的DI/O通道状态。pattern 返回的是一十进制数,当其换算为二进制时代表的是各路DI/O通道的状态。使用通道屏蔽技术你可以返回指定的通道状态,未被包含在line mask中的通道其状态将在pattern的返回值中被设为逻辑低(也就是0)。图 5-11. DIO Port Read VI立即型DI/O 的应用 立即型DI

13、/O主要应用于:控制或监测继电器,作为计数器Gate口的输入或者用于其他TTL设备。例如可用立即型DI/O控制National Instruments SC-2062, SCXI-1160和SCXI-1161继电器开关。例1监测开关状态 本例演示如何使用Easy I/O VI Read from Digital Line 来监测一外部开关的状态,关闭该开关后即初始化LabVIEW测试程序。其硬件配置如图5-12所示。图5-12. 使用DI/O监测开关的状态在如图5-13所示的程序框图中,Read from Digital Line连续不停的读取端口0的第0路通道的状态直到该通道状态为TTL逻辑

14、低(当开关关闭时),该VI退出While循环,然后运行下一测试子VI。Read from Digital Line设置端口为输入状态。图5-13. 监测开关状态程序框图例 2继电器控制阀门 假如你想通过调节阀门来控制流入某个罐子中水的流量:当罐中液位低于某个位置时,你想要打开阀门让水流入;当罐中液位高于某个位置时,你想要关闭阀门。通常情况下阀门是关闭的,所以你必须通过提供外部电力(如:120VAC)来打开阀门。图5-14显示了如何使用SCXI-1161继电器模块来控制这样一个系统。SCXI-1161有8个继电器(图5-14仅显示了一个),每个继电器有一COM位置,一NC位置和一NO位置。当通电

15、完成后或处于歇息状态时,SCXI-1161即从COM位置连接到NC位置。图 5-14. SCXI-1161控制阀门在本例中,数采板上的某路数字量 I/O被设为输出模式后与继电器0相连。当向该路DI/O写1时,与之相连的继电器会切换到NO位置即连通电路从而打开阀门。下面图5-15所示的LabVIEW程序框图就是用高级DI/O VI来控制该系统的。首先把SCXI-1161模块的端口0设为输出状态;用Scale By Power Of 2函数创建一通道屏蔽仅控制通道0;Get Tank Level 子VI返回罐子的液位。当液位低于设定的最低液位(LowLevel)时,程序即会向控制继电器的DI/O通

16、道写入1从而打开阀门让水流入。与之相似,当罐子的液位高于设定的最高液位(HighLevel)时,程序即会向控制继电器的DI/O通道写入0从而关闭阀门停止水的流入。图5-15. 阀门控制的程序框图 继电器接触保护 我们经常连接电动机,阀门,螺线管以及白炽灯这些具有感应性质的负载到继电器上,当继电器切换状态时就会产生巨大的反方向感生电动势。因为这些感应负载存储了大量的能量,所以常常在这种情况下会毁坏继电器或者缩短其寿命。最好的方法就是使用一接触保护电路来限制在这种情况附加的感生电动势。你可以设置保护电路直接通过负载(在小型直流情况应用时,你可以把保护电路直接安装通过继电器接触段)。假如你直接使用继电器,开启计算机时数采板会设置DI/O 线的输入为高阻抗,你需要

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > Labview

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号