890 likes | 1.12k Views
第 5 章 DAQ 虚拟仪器软件编程. 5.1 DAQ 软件的组成 5.2 LabVIEW 的 DAQ 软件概述 5.3 模拟输入 5.4 模拟输出 5.5 数字 I/O 和计数器 5.6 DAQmx 5.7 DAQ 驱动程序的开发 5.7 数据采集卡驱动程序设计及动态链接库开发. 5.1 DAQ 软件的组成. DAQ 软件包括 DAQ 驱动软件和 DAQ 仪器应用软件两大部分 1. 数据采集卡的驱动软件 2. PC-DAQ 仪器的应用软件编程. 数据采集卡的驱动软件.
E N D
第5章 DAQ虚拟仪器软件编程 5.1 DAQ软件的组成 5.2 LabVIEW的DAQ软件概述 5.3 模拟输入 5.4 模拟输出 5.5 数字I/O和计数器 5.6 DAQmx 5.7 DAQ驱动程序的开发 5.7 数据采集卡驱动程序设计及动态链接库开发
5.1 DAQ软件的组成 DAQ软件包括DAQ驱动软件和DAQ仪器应用软件两大部分 1.数据采集卡的驱动软件 2. PC-DAQ仪器的应用软件编程
数据采集卡的驱动软件 • 1)驱动软件的作用 在基于DAQ插卡的虚拟仪器系统中,驱动软件起着非常重要的作用,它将DAQ插卡和计算机组合成为一个DAQ仪器系统,进行完整的数据采集、分析和显示。 • 2)驱动软件的基本要求 用户在选择或开发通用驱动软件时,应注意以下问题。 (1)驱动软件支持的编程语言和软件开发环境 (2)驱动函数的可用性
PC-DAQ仪器的应用软件编程 在设计DAQ仪器的时候,用户必须根据选择DAQ数据采集卡的情况,分以下两种情况进行考虑。 • (1)NI公司生产的数据采集卡 可利用编程语言驱动程序函数来驱动数据采集卡。用户只需正确设置输入参数,就可实现数据采集的任务,而不需编写代码程序。 • (2)非NI公司生产的数据采集卡 可利用变成直接驱动的方法来实现采集卡的软件驱动,此时,用户需要自己编写DAQ卡的驱动软件。
下面介绍在驱动软件的基础上,如何来进行PC-DAQ仪器的应用软件设计。下面介绍在驱动软件的基础上,如何来进行PC-DAQ仪器的应用软件设计。 1)数据采集卡驱动程序的安装 2)数据采集卡的参数设置 (1)模拟信号输入部分的设置 : (2)A/D转换部分的设置 (3)D/A转换部分的设置
5.2 LabVIEW的DAQ软件概述 • 1、引言 • 数据采集(DAQ)是虚拟仪器获取信息的必不可少的基本功能,DAQ软件是LabVIEW的核心,使用LabVIEW,必须要掌握如何使用DAQ软件。 • 本节讨论的DAQ软件主要指DAQ硬件的驱动程序。NI推出了LabVIEW 7.0后,使得原本十分强大的DAQ功能变得更加完善。它包含有很多DAQ卡的驱动,分别有各自的API函数。 • 本章将分两部分讲述如何使用DAQ。第一部分讲述LabVIEW老版本的DAQ,第二部分将简单讲述LabVIEW新版本的DAQ的新特性。重点介绍DAQ章VI的应用,从初级VI入手,再结合一些非常有用的高级VI的用法。
1)在某些情况下,是必须要用到传统DAQ的,这些情况有:1)在某些情况下,是必须要用到传统DAQ的,这些情况有: • NI-DAQmx不支持的装置, • 使用了带有加速计、线性电压差分变换(LVDT)或者旋转可变差分变换(RVDT)虚拟通道的SCXI-1530、SCXI-1531、SCXI-1540装置 • 使用了LabVIEW实时(RT)模块。 • 已从NI-DAQ6.9升级,但是应用程序没有完全升级。 • 使用7.0版本以前的LabVIEW、LabWindows/CVI、Measurement Studio。 • 使用Visual Basic 6.0。 2)在NI-DAQ6.9版中支持,但是NI-DAQ7.0版中不再支持的包括: • LabVIEW、LabWindows/CVI、Measurement Studio应用软件6.0以前的版本;Windows 95操作系统;一些较老的设备
2、传统DAQ库VI 所有功能模块内的VI可以分为三个层次,这三个层次也体现了用户对DAQ不同层次的操作 DAQ子模块 第三层次 DAQ子模块 第一层次 DAQ子模块 第二层次
1.初级 • 入门级的VI,功能相当有限,是对DAQ底层操作的简化,位于最高层。用户在这个层面上操作DAQ,不管是获得模拟数据还是模拟输出,或者是数字I/O以及计数器和定时器的使用,几乎不需要知道DAQ库VI的细节。初级VI是对开发者工作的最大简化。但是某些操作,甚至非常常用的操作不能够用初级VI来实现。这些包括连续缓冲输入输出、触发等。
2.中级 • 当用户对DAQ驱动库有一定的了解后,中级VI是用得最多的,因为它们可以提供相对于初级VI多得多的功能,并且可以完成大部分的工作。中级VI的重要功能包括: ①高级缓冲管理,如循环缓冲; ②外部时钟和触发选择; ③暂停限制; ④校准以及硬件配置控制; ⑤具有RTSI总线互连函数访问权; ⑥直接访问状态信息。
3.高级 • 高级VI和它的名字正相反,是对DAQ最底层的操作。它通过CIN节点直接访问DAQ驱动,一般只有在很少的特殊功能中用到,包括: ①多个缓存; ②可访问所有的状态信息; ③直接控制极性和增益; ④通过采样时钟周期和时钟因子确定采样频率; ⑤无缩放输出数据规范。
5.3 模拟输入 1.模入模块分类 2.简易模入设计 3.中级模入设计 4. 设计示例——连续信号采集与显示仪
模入模块分类 模拟输入用于采集模拟信号 ,分为: (1)简单模入VI (2)中级模入VI (3)通用模入VI (4)高级模入VI
简易模入设计 简易模入是LabVIEW提供的一组标准的、简单易用的采集VI ,主要有: AI Sample Channel:完成通道的单点采集 AI Sample Channels:完成多通道的单点采集 AI Acquire Waveform:完成通道的波形采集 AI Acquire Waveforms:完成多通道的波形采集
1)AI Acquire Waveform.vi图标 (1)AI Acquire Waveform.vi的调用路径 选择Functions>>Data Acquisition>> Analog Input>>AI Acquire Waveform.vi>>create.后,出现该图标及其端口图,如图所示。 AI Acquire Waveform.vi图标及其端口
(2)AI Acquire Waveform.vi图标输入端口参数设置 • device:设置DAQ的设备号 • channel:设置待采集的模拟信号所在通道号 • number of samples:设置采样点数 • sample rate:设置采集速率 • high limit(0.0):设置模拟信号的最大输入值 • low limit(0.0):设置模拟输入量的最小值
(3)AI Acquire Waveform.vi图标输出端口参数设置 • waveform:1D数组,存放采集得到的数据,数据类型为double型。 • actual sample period(sec):采集卡返回的实际采样率,有时相对于设定值有一定误差,是double型的变量。
2)AI Acquire Waveforms.vi图标 (1)AI Acquire Waveforms.vi的调用路径 选择Funcations>>Data Acquisition>> Analog Input>>AI Acquire Waveforms.vi>>create., 完成上述步骤后,出现该图标及其端口图,如图所示。 AI Acquire Waveforms.vi图标及其端口
(2)AI Acquire Waveforms.vi图标输入端口参数设置 • 这里的输入端口参数设置含义同AI Acquire Waveform.vi的输入端口设置。 (3)AI Acquire Waveforms.vi图标输出端口参数设置 • waveforms:2D数组,存放采集得到的数据和信号所在的通道。数据类型为double型。 • actual sample period(sec):含义同上述的AI Acquire Waveform.vi图标。
3)AI Sample Channel.vi图标 (1)AI Sample Channel.vi图标的调用路径 选择Functions>>Data Acquisition>>Analog Input>>AI Sample Channel.vi>>create,完成上述步骤后,出现该图标及其端口图,如图所示。 AI Sample Channel.vi图标及其端口
(2)AI Sample Channel.vi图标输入端口参数设置 这里的输入端口参数设置含义同AI Acquire Waveform.vi的输入端口设置。 (3)AI Sample Channel.vi图标输出端口参数设置 sample:模拟信号采集结果,是一个double型数值。因输出值只有一个,因此对该模块调用一次只能得到一个采集数据。
4)AI Sample Channels.vi图标 (1)AI Sample Channels.vi图标的调用路径 选择Functions>>Data Acquisition>>Analog Input>>AI Sample Channel.vi>>create,完成上述步骤后,出现该图标及其端口图,如图所示。 AI Sample Channel.vi图标及其端口
(2)AI Sample Channels.vi图标输入端口参数设置 这里的输入端口参数设置含义同AI Acquire Waveform.vi的输入端口设置。 (3)AI Sample Channels.vi图标输出端口参数设置 sample:模拟信号采集结果,是一个1D数组,由使用者自己设定采样频率和采样点数。
【例5.1】单点采集练习 打开一个新的VI,切换到Block Diagram面板,添加一个 AI Sample Channel,并且添加Channel控件。Channel控件的添加方式有两种:一种简便的方式是在AI Sample Channel的Channel端子单击鼠标右键,选择Create Control命令选项;另一种方式是切换到前面板,选择I/O子面板的Traditional DAQ Channel控件。设置输入信号的上下限为10V和-10V。
I/O子面板及Traditional DAQ Channel函数 切换到前面板,添加合适的指示器。这里用的是Numeric里的Meter指示器。 单点采集系统的流程图程序及前面板设计
【例5.2】波形采集练习 YB1634函数发生器输出频率为305Hz,幅度(峰值)约4V的正弦波信号,送给PC1200采集卡的模拟输入0通道。使用数据采集模板的模拟输入子模板中的”AI Acquire Waveform”进行采集,采样率设为100kHz,采样点数为1000。采集结果用波形图形和波形数组显示。 波形采集系统前面板和框图程序设计
【例5.2】波形采集练习 (1)准备一个方波信号源和一个正弦波信号源,分别连接到模入通道0和1。 (2)设置前面板和框图如图所示。 (3)设置scan速率、通道号、每通道样本数,如前面板所示。 (4)运行该程序。 (5)保存为Acquire Multiple Channels.vi。 (6)该程序是无缓冲、软件触发的 双通道采样的前面板与流程图
中级模入设计 中级模入有更好的功能与灵活性,可以更有效地开发用户应用。它的特点包括控制内部采样率、使用外部触发、执行连续外部触发等。下面将描述它的各种VI,应该注意其大量输入、输出端子中的部分内容一般是不必理会的。有效地使用这些VI只需要关注需要的例子。如图所示。 中级模入VI
1)AI Config.vi图标 AI Config对指定的通道设置模入操作,包括硬件、计算机内buffer的分配。 (1)AI Config.vi图标的调用路径 选择Functions>>Data Acquisition>>Analog Input>>AI Config.vi>>create.,完成上述步骤后,出现该图标及其端口图,如图所示。 AI Lonfig.vi图标及其端口
(2)AI Config.vi图标输入端口参数设置 • device:DAQ设备的编号,默认值为1。 • channels:待采集的模拟信号所在通道号。 • buffer size:存储采集数据的缓冲区大小(Int32),默认值为1000。 • error in:前级输入的错误代码和信息。如果已经发生了错误,则VI不执行任何操作,将error in由error out传送给后面的VI。 (3)AI Config.vi图标输出端口参数设置 • TaskID:任务标识符,用来指示当前任务的无符号整型量。 • error out:给出错误代码和信息。如果error in已经输入错误代码和信息,则error out原封不动地传给后面的VI,或者输出错误代码和信息。
2)AI Start.vi图标 AI Start.vi启动带缓冲的模入操作。它控制数据采集速率、采集点的数目及使用任何硬件触发的选择。 (1)AI Start.vi图标调用路径 选择选择Functions>>Data Acquisition>>Analog Input>>AI Start.vi>>create.,完成上述步骤后,出现该图标及其端口如图所示。 AI Start.vi图标及其端口
(2)AI Start.vi图标的输入端口参数设置 • taskID in:采集任务的标识符,标识该项采集任务。等于前面VI的输出taskID out的值。 • number of scans to acquire:设置需采集的采样点数。默认值为-1,表示采集了一个缓冲区数据。 • scan rate:采样速率,单位为点数/秒,默认值为1000个/秒; • error in:错误描述符,与AI Config.vi模块中的相同; (3)AI Start.vi图标的输出端口参数设置 • task ID out:该值与taskID in相同,把该标识符传给下一个采集VI的taskID in输入端。 • error out:输出错误,与AI Config.vi模块中的相同;
3)AI Read.vi图标 选择Functions>>Data Acquisition>>Analog Input>>AI Read.vi>>create., 完成上述步骤后,出现该图标及其端口如图所示。 AI Read.vi图标及其端口
(2)AI Read.vi图标输入端口参数设置 • taskID in:同AI Start.vi。 • number of scans to read:要读取的数据总数(Int32),默认值是-1,表示读取和numberofscansto acquire相同个数的数据。 • error in:同AI Start.vi。 (3)AI Read.vi图标的输出端口参数设置 • taskID out:同AI Start.vi。 • scaled data:double型2D数组,存放采集结果。 • error out:同AI Start.vi。
4)AI Clear.vi图标 AI Clear的功能是清除模入操作、计算机中分配的缓冲、释放所有数据采集卡的资源,例如计数器。 (1)AI Clear.vi图标的调用路径 选择Functions>>Data Acquisition>>Analog Input>>AI Clear.vi>>create., 完成上述步骤后,出现该图标及其端口图,如图5-18(a)和(b)所示。 AI Clear.vi图标及其端口
(2)AI Clear.vi图标输入端口参数设置 • taskID in:同AI Read.vi。 • error in:同AI Read.vi。 (3)AI Clear.vi图标的输出端口参数设置 • task ID out:同AI Read.vi。 • error out:同AI Read.vi。
5)AI Read One Scan.vi图标 AI Single Scan(S-Scan)的功能是返回一个扫描数据。它的电压数据输出是由通道列表中的每个通道读出的电压数据。使用这个VI仅与AI Config有关联,不需要AI Start 和AI Read。 (1)AI Read One Scan.vi图标的调用路径 (2)AI Read One Scan.vi图标输入端口参数设置 (3)AI Read One Scan.vi图标输出口参数设置 AI Read One Scan.vi图标及其端口
4. 设计示例——连续信号采集与显示仪 1)功能描述 2)设计步骤 (1)参数设置 (2)前面板设计 (3)流程图设计 AI Acquire Waveform.vi图标及其端口
5.4 模拟输出 Analog output子模板的调用路径为Functions>>Data Acquisition>>Analog Output。鼠标单击后,出现Analog Output子模板,如图所示。 Analog Output对话框
1.初级(简易)模出设计(Easy Analog Output) 这个模块的初级VI有以下几种: AO Generate Waveform AO Generate Waveforms AO Update Channel AO Update Channels
与模拟输入VI类似,输入端有以下几个。 • Device:DAQ的设备号。 • Channel:要测的模拟输入通道名称,缺省值是0。 • Value:写入模拟输出通道的数据。 • Waveform:写入模拟输出通道的波形数据。 • Update rate:写入数据速率。缺省值为每秒1000次。 AO Update Channel函数及端口 AO Generate Waveform函数及端口
【例5.4】生成单点数据练习 使用 AO Update Channel,实现单个模拟输出通道的单点数据更新,一般用于产生激励信号。流程图程序如下图所示。 利用AO Update Channel函数实现单个模拟输出通道的单点数据更新
【例5.5】生成波形数据练习 使用AO Generate Waveform生成模拟输出。在本例中,需要产生连续的波形数据,这可以用LabVIEW自带的波形发生器来实现。在Function面板的Analyze子面板的Waveform generation子面板内,有各种波形数据发生器。用户也可用Analyze子面板的Signal Processing子面板内的Signal Generation子面板内的Signal Generation by Duration。如下图所示 Analyze子面板及所需函数
生成波形数据流程图程序设计 系统前面板设计
【例5.6】产生一个模出电平。 面板及框图如图5-28所示。运行该程序,可以看到表的输出将指示3。这个指示并非模出,为了看到模出,可以使用一块数字万用表直接测量DAC0 OUT。你会发现万用表的指示一直维持在3V,尽管程序早已执行完了。 面板及框图
【例5.7】产生一个模出波形 面板及框图
2.中级模出(Analog Output) 中级模出VI下图所示 1)AO Config对指定的通道设置模出操作,包括硬件、计算机内buffer的分配。常用的端子有: (1)Device——采集卡的设备号。 (2)Channel——指定模出通道号的串数组。 (3)Limit settings——指定输出信号的范围。 (4)taskID——用于所有后来的模出VI以规定操作的设备和通道。
2)AO Write以电压数据的方式写数据到模出数据缓冲区。 3)AO Start启动带缓冲的模出操作。 4)AO Wait在返回之前一直等待直到波形发生任务完成。 5)AO Clear的功能为清除模出操作、计算机中分配的缓冲、释放所有数据采集卡的资源。
【例5.8】产生一个连续的正弦信号。 面板及框图
说明以下几点 • (1)由于AO Write要求输入数据的要示,这里正弦波发生器的输出是一个waveform数据类型,首先将其中的Y数据提出,然后将它扩充为一个二维数组,再经转置后才可连接到AO Write上。 • (2)在AO Config中主要是设置了Buffer,这对于连续输出是必须的,其他都选默认值。 • (3)Buffer的大小有时需要经过调试,过大或过小都可能导致不能正常工作。