1、掌握虚拟仪器数字 IO 和计数器概念,了解数字 IO 和计数器子程序的用法。知识点 立即型 DI/O 定时型 DI/O 计数器 VI 重点和难点 数字 IO 子程序的用法 计数器子程序的用法一般数据采集卡上都有 DI/O 功能,用来实现数据采集的触发、控制及计数等功能。DI/O 按 TTL 逻辑电平设计,其逻辑低电平在 0 到 0.7V 之间,高电平在 3.4 到 5.0V 之间。 数据采集卡上多路(Line)数字 I/O 组成一组后被称为端口(Port)。一个端口由多少路数字 I/O 组成是依据其采集卡而定的,在大多数情况下 4 或 8 路数字 I/O 组成一个端口。当读写端口时,你可以在同
2、一时刻设置或获取多路 DI/O的状态。MIO E 系列板卡有 8 路数字 I/O 组成了一个端口,实际使用时这 8 路可以部分是输入,部分是输出。第 1 节 数字量输入输出数字量输入输出的应用分为以下两类:立即型(非锁存型)和定时型(锁存型)。在立即型情况下,当你调用数字 I/O 函数后立即更新或读取数字量某一路或端口的状态。在定时型情况下,你可以使用外部信号来控制数字量数据的传输。LabVIEW 中关于 DI/O 的 VI 也分为低、中、高三个等级。在以下几个不同的子模板中:Data Acquisition / Digital I/O 顶层 :用于较简单应用中的 Easy I/O VI。Da
3、ta Acquisition / Digital I/O 底层:是一些属于中级水平应用的 VI,主要用于需要时间或握手线方面的数字信号应用。这些 VI 可用于单字节数据的传输。如图 9-1 所示的是 Data Acquisition /Digital I/O 子模板。图 9-1 DI/O 子模板Data Acquisition / Digital I/O/ Advanced Digital I/O 高级水平 DI/O VI:可用于作为创建其他数字 VI 的基本模块。这些高级数字量 VI 可用于立即型 DI/O和定时型 DI/O 。如图 9-2 所示是Data Acquisition/ Digi
4、tal I/O/ Advanced Digital I/O 子模板。图 9-2 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 中的立
5、即型 DI/O。1.Easy I/O VI 使用 Easy I/O digital VI 你可以立刻输入或输出某一路(某一端口)的数字量。当你设置 DI/O VI iteration 端为缺省参数时,每当你调用一次 DI/O 函数时系统将会按需要自动设置一次数采板。当你在一个循环中重复调用某个 DI/O 函数时,为了避免系统重复设置数采板,你可以设置 DI/O VI iteration 端为正数。这些 VI 可用于所有带有数字量输入输出的 NI 数采板。Write to Digital Line 设置某一端口中某一路 DI/O 为逻辑高或者逻辑低状态,如图 9-3 所示。 Device 是数采
6、板的设备号(device number );Port number 是该路 DI/O 所在的端口号;Line 准备要写的该路 DI/O 的通道号; Line state 是指准备要写的该路 DI/O 的状态:高(true) 或低(false)。图 9-3 Write to Digital LineRead from Digital Line 读取某路 DI/O 的状态,如图 9-4 所示。Device 是数采板的设备号(device number );Port number 是该路 DI/O 所在的端口号;Line 准备要读取的该路 DI/O 的通道号; Line state 返回要读取的该路
7、 DI/O 的状态:高(true) 或低(false)。图 9-4 Read From Digital LineWrite to Digital Port 向某一指定的端口写一数字量,从而同时设定某一端口所有路 DI/O 通道的状态。Device 是数采板的设备号(device number);Port number 是准备要写的端口号;Pattern 是该端口要写的二进制或等同的十进制数字量。图 9-5 Write to Digital PortRead from Digital Port 读取某一指定端口所有路的 DI/O 通道的状态。Device是数采板的设备号(device numbe
8、r );Port number 是准备要读取的端口号;Pattern 是返回从该端口读取的数字量(十进制形式)。图 9-6 Read From Digital Port如果在调用 Easy I/O digital VI 时发生错误,系统将会弹出一对话框显示出错代码,这时你可以终止或继续执行 VI。注意:当你只调用一个 Easy I/O digital VI 实例读或写某个通道或端口时,程序是不会出错的。但是当再次调用函数时会通过改变移位寄存器的状态来重新改变 DI/O 的设置,故你不能调用多个 VI 实例来控制多个端口。在这种情况下你可以通过使用下面将讨论的高级 VI 来达到该目的。2.高级
9、VI (Advanced Vis)使用高级 DI/O VI 也可以执行立即型 DI/O 。(实际上,Easy I/O VI 是由多个高级 VI 所组成的)。使用高级 VI 你可以更高效的执行数字 I/O 的读写工作,因为当你调用高级 VI 时,它不会象使用 Easy I/O VI 那样每次运行时都需要去改变数采板的设置。高级 VI 允许你使用通道屏蔽技术更新某一端口中数个DI/O 通道,而无须更新整个端口。根据高级 VI 提供的错误信息你可以用来开发出自己错误处理程序。这些高级 VI 可用于所有带有数字量输入输出的 NI 数采板。DIO Port Config 设置某个端口为写或读状态,如图
10、9-7 所示。图 9-7 DIO Port ConfigDIO Port Write 数字端口写,根据已创建任务的标识 taskID 立即更新端口的DI/O 通道状态,如图 9-8 所示。图 9-8 DIO Port Write DIO Port Read 数字端口读,根据已创建任务的标识 taskID 来获得端口的DI/O 通道状态,如图 9-10 所示。图 9-10 DIO Port Read VI立即型 DI/O 主要应用于:控制或监测继电器,作为计数器 Gate 口的输入或者用于其他 TTL 设备。二、定时型 DI/O定时型 DI/O 也叫做锁存型 I/O 是第二种类型的数字量通信,它
11、用来使用外部信号控制或作为握手信号的数据传输。握手信号确保了在你初始化操作之前数采板或仪器已准备好了传输数据。1.定时型 DI/O VIDigital Group Config 设置使用的 device 和 端口,如图 9-11 所示。图 9-11 数字组设置Digital Single Write 根据 task ID 任务标识执行数字量的输出,如图 9-12 所示。图 9-12 数字写 VIDigital Single Read 根据 task ID 任务标识执行组内端口的数字量读取,如图9-13 所示。图 9-13 数字写 VI2.缓冲型 DI/O VI假如需要大数量的数据传输,你也许希
12、望使用非同步中断驱动式传输。这样不至于在传输数据时占用计算机的资源。使用这种方式传输数据时,计算机内存缓冲被分配为后台线程输入或输出缓冲中。DIO Config 设置的一组端口为输入或输出模式;创立数据缓冲,产生了任务唯一标识符,它将会被下面的 DIO 函数使用。DIO Start 启动缓冲式 DIO 操作。设定更新或读取的点数,当你输入 0 时将连续操作。指定握手信号源:内部时钟用于信号发生,IO 连接端口,或 RSTI连接端口。当执行信号发生时,你也可以输入握手线信号的频率。DIO Read 返回从数字量缓冲中扫描的数据;返回缓冲中的数据剩余量;返回在一定时限中操作的初始化是否成功信息。D
13、IO Write 用于输出操作中更新缓冲中的数据。当等侯的握手信号发生时,端口将被新的缓冲数据更新。假如在一定时限内握手信号没有出现,将返回一错误信息。DIO Wait 等待与任务标识符 task ID.相关任务的数字量输入或输出操作的完成。DIO Clear s 停止操作,同时清除与 task ID 任务相关的缓冲。注意:当你使用这些 VI 时,你的数采板必须支持握手信号。第 2 节 计数器一、计数器的基本知识1. 计数器信号计数器可以接收或输出 TTL 兼容信号,一个 TTL 高电位信号是被定义为其电位在 2.0 和 5V 之间的信号,TTL 低电位是指其电位在 0 到 0.8 伏之间。一
14、个能被计数器测得的信号,至少其特征不低于能被该计数器识别的最小的脉冲宽度,上升时间和下降时间。2.计数器操作计数器是一能测量信号的变化过程或产生不同类型时间信号的设备。如图 9-14 所示的计数器的简化模型:一个 SOURCE 信号源输入口,一个 GATE门信号输入口, 一个 OUT 计数输出口, 以及一个计数寄存器。数采板上分别对应的端口为:SOURCE n, GATE n,以及 OUT n(n 是指计数器的序号)。图 9-14 计数器的简化模型通过设置计数器对 SOURCE 输入端口由高到低或由低到高的信号状态进行计数;并可以设置内部计数寄存器的计数方式为递增或递减方式;当你想知道信号状态
15、改变的次数时,可通过读取内部计数寄存器的值即可知道。GATE 口的输入端控制了计数器的计数操作。可以将计数器设置为以下的几种门限工作方式:高电位时计数、低电位时计数、上升沿触发计数、下降沿触发计数及无门限方式。高电位或低电位计数方式:只有当 GATE 口的输入信号为高电位或低电位时,计数器才计数。上升沿触发计数或下降沿触发计数方:当 GATE 口接收到一由高到低或由低到高的状态变化信号后即开始计数。无门限方式:通过软件来初始化开始计数操作。通过使用计数器的 OUT 输出端口可产生多种类型的波形,或者用于计数器的串连使用中,从而增加计数器的容量。在一般模式下你可以设置计数器的端口输出一个脉冲或当计数寄存器已达到它的最大值时,输出一个切换状态作为一个终结计数。当接上一个时钟后你可以让计数器发出特定的频率和占空比的脉冲信号(一个占空比定义为:Phase 2 /Phase 1 + Phase 2)如图 9-15 所示。输出的极性设置决定了初始化的 OUT 端口信号是低电平(正极性)或高电平(负极性)。