《3.2数据采集2ppt课件》由会员分享,可在线阅读,更多相关《3.2数据采集2ppt课件(42页珍藏版)》请在金锄头文库上搜索。
1、数据采集下)数据采集下)上节课内容小结1.1.测试系统简介:基于虚拟仪器技术构成的测量系统的基本组测试系统简介:基于虚拟仪器技术构成的测量系统的基本组成及相应功能;信号采集的基本概念;测量信号的差分式成及相应功能;信号采集的基本概念;测量信号的差分式输入方式;采样率;分辨率;输入范围。输入方式;采样率;分辨率;输入范围。 2.2.测量及自动化浏览器测量及自动化浏览器测量系统硬件即数据采集卡的配置测量系统硬件即数据采集卡的配置软件软件MAXMAX。利用。利用MAXMAX,能完成驱动数据采集卡;确立数据采,能完成驱动数据采集卡;确立数据采集任务的名称;并对数据采集卡、具体数据采集通道以及集任务的名
2、称;并对数据采集卡、具体数据采集通道以及采样的相应参数、换算比例等进行配置。采样的相应参数、换算比例等进行配置。3.3.在本实验室环境下,建立一个实际数据采集任务,包含要确在本实验室环境下,建立一个实际数据采集任务,包含要确认一个或多个虚拟通道;且除每个虚拟通道的属性设置以认一个或多个虚拟通道;且除每个虚拟通道的属性设置以外,该任务涉及的参数还包含这些虚拟通道共用的采样和外,该任务涉及的参数还包含这些虚拟通道共用的采样和触发模式等属性参数的配置可选用默认,也可调整)。触发模式等属性参数的配置可选用默认,也可调整)。 虚拟通道:一个由测量采集任务名称、采集硬件物理通虚拟通道:一个由测量采集任务名
3、称、采集硬件物理通道、模拟信号输入接线方式、测量或发生的信号类型、换道、模拟信号输入接线方式、测量或发生的信号类型、换算缩放比例等虚拟仪器通过数据采集卡实现测量数据算缩放比例等虚拟仪器通过数据采集卡实现测量数据采集所需要配置的属性的集合。采集所需要配置的属性的集合。4.在在LabVIEW环境下,为运行经测量及自动化浏览器即环境下,为运行经测量及自动化浏览器即MAX新建立的数据采集任务,需要借助新建立的数据采集任务,需要借助 “DAQmx 任务名任务名控件或控件或“DAQmx 任务名任务名” 常量。常量。5.“NI-DAQmx实际意味着一系列数据采集软件。它包实际意味着一系列数据采集软件。它包括
4、数据采集卡驱动程序,以及括数据采集卡驱动程序,以及LabVIEW环境下可建立数环境下可建立数据采集任务、实现测量数据采集功能经数据采集卡读据采集任务、实现测量数据采集功能经数据采集卡读取数据或由其生成数据的相应功能函数及取数据或由其生成数据的相应功能函数及Express VI。6.确立一个数据采集任务,还可用确立一个数据采集任务,还可用DAQ助手助手Express VI来完成来完成整合了整合了MAX的功能,直接在框图面板实现的功能,直接在框图面板实现数据采集任务建立。但用数据采集任务建立。但用DAQ助手建立的任务无名称,助手建立的任务无名称,属临时任务,不会保存在属临时任务,不会保存在MAX中
5、被其他程序使用。中被其他程序使用。7.7. 在框图面板,直接使用在框图面板,直接使用“DAQmx 创建虚拟通道亦创建虚拟通道亦即即“DAQmx 创建通道创建通道AI-电压电压-根本)根本)”函数,通过编函数,通过编程的方法,也可以建立数据采集的临时任务。程的方法,也可以建立数据采集的临时任务。 本次课的内容本次课的内容一、一、NI-DAQmxNI-DAQmx数据采集的属性节点数据采集的属性节点二、二、NI-DAQmxNI-DAQmx数据采集的任务状态逻辑)数据采集的任务状态逻辑)三、数据采集程序三、数据采集程序(VI)(VI)的编制例如)的编制例如) 1. 1. 模拟输入单个、一段、延续)模拟
6、输入单个、一段、延续) 2. 2. 模拟输出单个、一段、延续)模拟输出单个、一段、延续) ( (其中每个均包括利用其中每个均包括利用NI-DAQmx VINI-DAQmx VI和借助和借助DAQDAQ助助手两种手两种编程途径编程途径) )一、一、DAQmxDAQmx数据采集的属性节点数据采集的属性节点 DAQmx属性节点的功能:用于指定数据采集操作的各种属属性节点的功能:用于指定数据采集操作的各种属性。这些属性中,某些可利用性。这些属性中,某些可利用DAQmx VI数据采集相关的功数据采集相关的功能函数能函数8种进行设置;而另一些无法则由种进行设置;而另一些无法则由DAQmx VI设设置。置。
7、时间属性时间属性通道属性通道属性触发属性触发属性读取属性读取属性写入属性写入属性途径:途径:“函数选板函数选板 “测量测量I/O” DAQmx- 数据采集数据采集 二、二、DAQmxDAQmx数据采集的任务状态逻辑)数据采集的任务状态逻辑)配置任务配置任务- - 开始任务开始任务- - 采集数据操作采集数据操作- - 结束结束任务任务- - 清除任务清除任务 显式和隐式任务状态的转换:通过调用显式和隐式任务状态的转换:通过调用函数的方法明确实施任务状态的转换,称为显函数的方法明确实施任务状态的转换,称为显式状态转换;而某些式状态转换;而某些DAQmx VIDAQmx VI在执行时,若未在执行时
8、,若未处于其所需的状态,将会引起状态的自动转换,处于其所需的状态,将会引起状态的自动转换,这种自动转换被称为隐式状态转换。这种自动转换被称为隐式状态转换。(1显式转换举例:在显式转换举例:在“读取读取采样数据采样数据前,明确地执行前,明确地执行“开始任务开始任务”;且在;且在“清清除任务除任务前,明确地执行前,明确地执行“结束任务结束任务”。 (2隐式转换举例:在隐式转换举例:在“读取读取函数执行前,自函数执行前,自动执行动执行“开始任务开始任务”;在;在“清除任务清除任务执行前,执行前,自动执行自动执行“结束任务结束任务”。三、数据采集程序三、数据采集程序VIVI例如例如1. 模拟输入模拟输
9、入(a) (a) 采集采集5V5V的直流电压电平),并由表盘式显示器显示的直流电压电平),并由表盘式显示器显示 找到表盘式显示器路径:找到表盘式显示器路径:“控件选板控件选板 - -“新式新式” “数值数值” “仪表仪表”该程序该程序VI建立的步骤:建立的步骤:将需测的直流电压经差分模式接至实验箱的模拟输入将需测的直流电压经差分模式接至实验箱的模拟输入0号与号与8号通号通道之间;道之间;b) 用用MAX建立此采集测量任务:我的系统建立此采集测量任务:我的系统数据邻居数据邻居NI-DAQmx任务,右击弹出任务,右击弹出“创建新创建新NI-DAQmx任务任务”-采集信采集信号号-模拟输入模拟输入-
10、 电压电压-选择选择0号物理通道号物理通道ai0) -采用默认采用默认的任务名的任务名“我的电压任务我的电压任务” ,点击,点击“完成完成”。将虚拟通道。将虚拟通道“电电压的压的“信号输入范围设置为信号输入范围设置为010V,任务的,任务的“定时设置定时设置参数区域的参数区域的“采集模式选择采集模式选择“1 采样采样 (按要求按要求)”;随后,按;随后,按参数配置栏左上角参数配置栏左上角“保管按钮,对参数设置的调整做确认。保管按钮,对参数设置的调整做确认。c) 构建数据采集构建数据采集VI:往框图面板调用多态函数:往框图面板调用多态函数“DAQmx 读取读取”,选择选择“模拟模拟 DBL 1通
11、道通道 1采样功能;在该函数的采样功能;在该函数的“义务义务/通通道输入输入端子弹出快捷菜单选道输入输入端子弹出快捷菜单选“创建创建”-“输入控件输入控件”,建立同名的建立同名的DAQmx 任务名控件,并选中任务名控件,并选中“我的电压任务我的电压任务”。在前面板添加标签为在前面板添加标签为“仪表的表盘式显示器。回到框图面板,仪表的表盘式显示器。回到框图面板,完成左上图所示的连线。完成左上图所示的连线。调节为调节为5V打开开关打开开关(b) 对对(a)例,改用例,改用DAQ助手建立程序助手建立程序VI)建立该程序建立该程序(VI)(VI)的步骤:的步骤:经经 “函数选板函数选板-测量测量I/O
12、-DAQmx-I/O-DAQmx-数据采集途径向框图面板添加数据采集途径向框图面板添加并启动并启动“DAQ DAQ 助手助手” Express VI Express VI,在其打开的,在其打开的“新建新建ExpressExpress任务任务” 对话框里,选择对话框里,选择“采集信号采集信号”-“模拟输入模拟输入”-“电压电压”;再选择模入物理通道;再选择模入物理通道ai0ai0,并将,并将“信号输入范围设置为信号输入范围设置为010V010V,在,在“采集模式中选择采集模式中选择“1 1 采样采样 ( (按要求按要求表示立即表示立即采集数据采集数据) )” 。关闭关闭DAQ DAQ 助手新建任
13、务对话框后可看到,在该助手新建任务对话框后可看到,在该Express VIExpress VI图标下方图标下方多出了多出了“数据输出端子,将该输出端子连至数据输出端子,将该输出端子连至“仪表控件,仪表控件,即可完成对采集到的单点数据的输出。即可完成对采集到的单点数据的输出。 举例:软件定时举例:软件定时Software Timed的多点采集的多点采集:协助协助-查找范例查找范例-硬件输入与输出硬件输入与输出-DAQmx -模拟测量模拟测量 - 低速变压信号低速变压信号 - Acq&Chart Mult Samples-SW Timed.vi 利用循环结构,不断进行单点数据采集,直到利用循环结构
14、,不断进行单点数据采集,直到“DAQmx 读取函数出错读取函数出错错误簇的错误簇的“status参数为参数为True),或采集到了),或采集到了“Samples per Channel参数指定的点数,或按下参数指定的点数,或按下“abort按钮为止。每次采样之间的时间间隔按钮为止。每次采样之间的时间间隔由由“等待等待ms)”函数的输入值决定。但是,这种采样模式下,不同采样点函数的输入值决定。但是,这种采样模式下,不同采样点之间的时间间隔无法精确控制和指定;故一般用于采集、测量缓变信号。之间的时间间隔无法精确控制和指定;故一般用于采集、测量缓变信号。(c) 如何实现对多个数据点的采集如何实现对多
15、个数据点的采集?去掉去掉“Samples per Channel的的限制,就可变为连续采集限制,就可变为连续采集 多数据点采集,包含采集若干个一段有限长数据点和连多数据点采集,包含采集若干个一段有限长数据点和连续不断采集数据点两种情况。续不断采集数据点两种情况。 若要求严格等间隔采样,就不能采用若要求严格等间隔采样,就不能采用“重复单点采集重复单点采集的方的方法法无法确保采样点之间具有精确相等的时间间隔。无法确保采样点之间具有精确相等的时间间隔。 LabVIEW中采用设置缓冲区技术来实现等间隔采样。缓冲中采用设置缓冲区技术来实现等间隔采样。缓冲区是在计算机内存中开辟的一段连续区域。使用缓冲区采
16、集数区是在计算机内存中开辟的一段连续区域。使用缓冲区采集数据时,应先将一段采样数据从数据采集卡送到缓冲区中这一据时,应先将一段采样数据从数据采集卡送到缓冲区中这一过程可以确保等间隔采样),然后再过程可以确保等间隔采样),然后再“读取读取到程序到程序VI中。中。当任务的采样模式设置为当任务的采样模式设置为“N 采样采样”(采集一段数据或(采集一段数据或“连续连续采样采样时,就是在使用缓冲区进行数据采集。时,就是在使用缓冲区进行数据采集。 “N 采样采样时,使用简单缓冲;时,使用简单缓冲;“连续采样连续采样时,则使用的时,则使用的是循环缓冲是循环缓冲Circular-Buffered)。)。(d)
17、 如何实现严格的等间隔多数据点采集如何实现严格的等间隔多数据点采集? 简单缓冲:用于等间隔一次读取有限个采样点,即在经简单缓冲:用于等间隔一次读取有限个采样点,即在经MAX途径建立新途径建立新DAQmx数据采集任务时,从其数据采集任务时,从其“定时设定时设置置选项页的选项页的“采集模式采集模式选择栏选定选择栏选定“N 采样采样”;或是在框;或是在框图面板选用图面板选用“DAQmx 定时采样时钟)定时采样时钟)”函数时,在其函数时,在其“采样采样模式模式参数选择表里选中参数选择表里选中“有限采样有限采样”。 在简单缓冲模式下,在简单缓冲模式下,DAQmx任务会首先据每个通道所要任务会首先据每个通
18、道所要读取样本数多少及任务需要的采集通道数建立合适的缓冲区读取样本数多少及任务需要的采集通道数建立合适的缓冲区(= 每通道样本数每通道样本数通道数)。在进行数据采集时,通道数)。在进行数据采集时,DAQmx任任务从数据采集卡读取数据,并将它们填充到缓冲区中,直到其务从数据采集卡读取数据,并将它们填充到缓冲区中,直到其被完全填满即读取到了全部数据为止,才将该缓冲区中的数据被完全填满即读取到了全部数据为止,才将该缓冲区中的数据经经“DAQmx 读取读取函数输出前往到框图面板的函数输出前往到框图面板的VI中。中。 回答:不能,因为在每次循环获得的采样数据段之间,需回答:不能,因为在每次循环获得的采样
19、数据段之间,需等待多少时间是无法严格确定的。等待多少时间是无法严格确定的。 问题:若希望实现连续不断的等间隔采样,能否采用不问题:若希望实现连续不断的等间隔采样,能否采用不断循环重复等间隔一次读取若干个采集数据的方法实现?断循环重复等间隔一次读取若干个采集数据的方法实现? 而循环缓冲,则可用于等间隔连续数据采集。其原理说明如下:而循环缓冲,则可用于等间隔连续数据采集。其原理说明如下: 循环缓冲模式下,被采到的数据不断送入缓冲区,最新送入数据的位置循环缓冲模式下,被采到的数据不断送入缓冲区,最新送入数据的位置随之不断后移;与此同时,随之不断后移;与此同时,“DAQmx 读取读取函数每次读取一定大
20、小的数据块函数每次读取一定大小的数据块返回到程序框图。当缓冲区写满后,返回到程序框图。当缓冲区写满后,DAQmx改从该缓冲区的头部重新开始改从该缓冲区的头部重新开始写入数据;写入数据;“DAQmx 读取读取函数一直连续读取数据块,读到缓冲区的末端后,函数一直连续读取数据块,读到缓冲区的末端后,同样也再改从缓冲区的头部继续读取数据。同样也再改从缓冲区的头部继续读取数据。 故,只要写缓冲与读缓冲配合得当,就可实现连续数据采集。故,只要写缓冲与读缓冲配合得当,就可实现连续数据采集。 可能出现的问题有:可能出现的问题有:(1) 从缓冲区读取数据比向其中写入数据快;从缓冲区读取数据比向其中写入数据快;(
21、2)从缓冲区读取数据过慢,再写入新数据时覆盖掉了还未读取走的从缓冲区读取数据过慢,再写入新数据时覆盖掉了还未读取走的数据。数据。 第一个问题容易解决,第一个问题容易解决,“DAQmx 读取读取函数会自动等待,直到读函数会自动等待,直到读到所要求多的新数据后才返回。第二个问题则需要特别注意,因为到所要求多的新数据后才返回。第二个问题则需要特别注意,因为如果覆盖掉还未读取的数据,将会引起数据丢失,使数据采集不再如果覆盖掉还未读取的数据,将会引起数据丢失,使数据采集不再连续。出现这种情况,连续。出现这种情况,DAQmx会返回错误信息。会返回错误信息。 解决数据丢失的办法:调整缓冲区大小、调整采样率和
22、调整每解决数据丢失的办法:调整缓冲区大小、调整采样率和调整每次读取数据的数目。次读取数据的数目。 一般情况下,一般情况下,DAQmx可自动设置循环缓冲可自动设置循环缓冲区大小;区大小; 降低采样率,以降低向缓冲区写入数据的速度;降低采样率,以降低向缓冲区写入数据的速度; 增增加每次从缓冲区读取数据量,从而提高从缓冲区读取数据的速度。加每次从缓冲区读取数据量,从而提高从缓冲区读取数据的速度。(e) 采集多通道数据一次采集多个若干个等间隔采集多通道数据一次采集多个若干个等间隔 数据点数据点简单缓冲)简单缓冲) 该程序该程序VI建立的步骤:建立的步骤:将正弦信号和方波信号按差分模式分别接在将正弦信号
23、和方波信号按差分模式分别接在0号与号与8号通道以及号通道以及1号与号与9号通道号通道之间;之间;调用调用“DAQmx 创建虚拟通道函数,建立虚拟通道和任务:物理通道输入参数创建虚拟通道函数,建立虚拟通道和任务:物理通道输入参数 physical channels写入物理通道列表写入物理通道列表“Dev1/ai0,Dev1/ai1”,并且,并且name to assign字符串控制器写入字符串控制器写入 “Ch0,Ch1”,即所建立的临时任务,即所建立的临时任务将包含两个虚拟通道将包含两个虚拟通道Ch0和和Ch1,且分别对应于设备,且分别对应于设备1Dev1的物理通道的物理通道ai0和和ai1。
24、“最大值和最大值和“最小值设置输入电压范围的最小值(最小值设置输入电压范围的最小值(-5V和和最大值最大值5V),在),在“输入接线端配置枚举参数中,指定采用差分模式;输入接线端配置枚举参数中,指定采用差分模式;调用调用“DAQmx定时函数并选择其定时函数并选择其“采样时钟功能,设定任务的具体时间参采样时钟功能,设定任务的具体时间参数如下:采样率数如下:采样率1000Hz,每通道采样,每通道采样100个点,采样模式选择采集个点,采样模式选择采集“有限有限个点个点”;调用调用“DAQmx 读取函数,选择其读取函数,选择其“模拟模拟2D DBL N通道通道N采样功能。其输采样功能。其输入参数每通道
25、采样数设置为入参数每通道采样数设置为100,即每通道采集,即每通道采集100个点;采集到的数据输个点;采集到的数据输出前往)出前往)“给波形图显示控件。给波形图显示控件。留意:留意:“DAQmx定时函数的定时函数的“每通道采样参数决定了从采集卡输出并写入每通道采样参数决定了从采集卡输出并写入到缓冲区的数据点数;到缓冲区的数据点数;“DAQmx读取函数的读取函数的“每通道采样数参数,决定每通道采样数参数,决定了从缓冲区读到程序了从缓冲区读到程序VI中的数据点数。可以认为,采集数据时以两者中的数据点数。可以认为,采集数据时以两者中的较小值为准。中的较小值为准。如果接入如果接入-1或不或不接入任何数
26、据,接入任何数据,则读取缓冲区中则读取缓冲区中的全部数据点。的全部数据点。选择正弦波选择正弦波打开开关打开开关打开开关打开开关(f) 对对(e)例,借助例,借助“DAQ助手建立程序助手建立程序该示例程序该示例程序VI的建立步骤:的建立步骤:经经“函数选板函数选板-测量测量I/O -DAQmx-数据采集向框图面板添加并数据采集向框图面板添加并启动启动“DAQ助手助手”,在打开的,在打开的“新建新建Express任务任务” 对话框里,对话框里,选择选择“采集信号采集信号”-“模拟输入模拟输入”-“电压电压” ,选择模入物理通,选择模入物理通道道ai0和和ai1,输入范围采用默认的,输入范围采用默认
27、的-5至至5V,在,在“采集模式中采集模式中选择选择“N采样采样”,“待读取采样采用默认值待读取采样采用默认值100,“采样率采样率(Hz)”采用默认值采用默认值1000。封锁封锁“DAQ助手对话框后可看到,该助手对话框后可看到,该Express VI图标下方多出了图标下方多出了“数据输出端子,将该输出端子连到数据输出端子,将该输出端子连到“波形图显示控件,波形图显示控件,即可完成对所采集的一段数据的波形输出。即可完成对所采集的一段数据的波形输出。(g) 采集多通道数据等间隔连续采集数据采集多通道数据等间隔连续采集数据循循 环缓冲)环缓冲) 该程序该程序VI的建立步骤:的建立步骤:将正弦信号和
28、方波信号分别接在实验箱将正弦信号和方波信号分别接在实验箱0号与号与8号通道以及号通道以及1号与号与9号通道之间;号通道之间;使用使用MAX建立新的建立新的DAQmx任务:指定模拟输入、测量电压,任务:指定模拟输入、测量电压,选择选择0号和号和1号物理通道号物理通道ai0和和ai1),任务名为),任务名为“我的电压我的电压任务任务”,输入范围使用默认的,输入范围使用默认的-55V,端子配置使用默认的,端子配置使用默认的差分方式,采集模式使用默认的差分方式,采集模式使用默认的“N 采样采样”,“待读取采样待读取采样采用默认值采用默认值100,“采样率采样率 (Hz)”采用默认值采用默认值1000;
29、3) 来到框图面板,调用来到框图面板,调用“DAQmx 定时定时函数并选择其函数并选择其“采样时采样时钟钟功能,将采样模式选定为功能,将采样模式选定为“连续采样连续采样”,“采样率采样率设设置为置为1000Hz。留意:在实施连续采集时,由留意:在实施连续采集时,由MAX建立的建立的 DAQmx任务的任务的Samples To Read参数(参数(“DAQmx 定时函数的定时函数的samples per channel),参与确定),参与确定循环缓冲区大小。循环缓冲区大小。4) 调用调用“DAQmx 开始任务开始任务函数,即显式地开始任务;函数,即显式地开始任务;5) 在在While循环中调用循
30、环中调用“DAQmx 读取读取函数,选择函数,选择“模拟模拟 2D DBL N通道通道 N采样采样功能。该函数的功能。该函数的“每通道采样数每通道采样数输入参数定义每个通道从缓冲输入参数定义每个通道从缓冲区读取的采样数据点数,本例中为区读取的采样数据点数,本例中为1000。采集到的数据分别送入。采集到的数据分别送入“波形波形图图和和“波形图表波形图表显示控件,显示控件,“波形图表波形图表的的“图表历史长度图表历史长度”参参数设置为数设置为3000,这样,在,这样,在“波形图表波形图表上将显示连续上将显示连续3次读取操作得到的次读取操作得到的数据;数据; “DAQmx 读取读取函数的错误簇输出参
31、数的函数的错误簇输出参数的“status元素与元素与“停停顿顿按钮取按钮取“逻辑或逻辑或后,送给循环结束端子,作为循环结束条件;后,送给循环结束端子,作为循环结束条件;在循环之外,采用在循环之外,采用“DAQmx 结束任务结束任务函数结束任务;然后以函数结束任务;然后以“DAQmx 清除清除任务任务函数清除任务。函数清除任务。选择正弦波选择正弦波打开开关打开开关打开开关打开开关应该搞清楚的问题:(应该搞清楚的问题:(1在连续采集示例中同时使用在连续采集示例中同时使用“波波 形图和形图和“波形图表显示控件的原因。波形图表显示控件的原因。 运用运用“波形图波形图只能显示每次从循环缓冲区读取出的数据
32、,只能显示每次从循环缓冲区读取出的数据,而对各次读取出的数据波形之间是否连续却难以确认。而而对各次读取出的数据波形之间是否连续却难以确认。而“波波形图表形图表可保存前面若干次采集的数据,故利用它,通过观察可保存前面若干次采集的数据,故利用它,通过观察多次采集数据间的过渡波形,便可确认是否的确实现了连续采多次采集数据间的过渡波形,便可确认是否的确实现了连续采集。集。 留意:进行连续数据采集时,最好用上述方法仔细观察采集留意:进行连续数据采集时,最好用上述方法仔细观察采集到的数据是否真的连续,因为存在到的数据是否真的连续,因为存在DAQmx数据采集对实际数据采集对实际上不完全连续的情况未报出错的现
33、象。上不完全连续的情况未报出错的现象。应该搞清楚的问题:(应该搞清楚的问题:(2在循环外使用在循环外使用“DAQmx开始任开始任 务务 ”函数和函数和“DAQmx 结束任务函数的道理。结束任务函数的道理。 这是显式任务状态转换的典型案例。若不使用这是显式任务状态转换的典型案例。若不使用“DAQmx 开始任务开始任务函数,函数,则在调用则在调用“DAQmx读取读取函数时就要使用默认的隐式状态转换,具体地,函数时就要使用默认的隐式状态转换,具体地,“DAQmx读取读取函数首先开始任务,然后才采集数据,最后还要结束任务。函数首先开始任务,然后才采集数据,最后还要结束任务。如此,每次循环都将进行开始任
34、务、采集数据、结束任务的操作。这一来没如此,每次循环都将进行开始任务、采集数据、结束任务的操作。这一来没有必要,二来会降低程序执行效率和性能。把函数有必要,二来会降低程序执行效率和性能。把函数“DAQmx开始任务开始任务” 和和 “DAQmx 结束任务结束任务置于循环之外,使置于循环之外,使“开始任务开始任务和和“结束任务结束任务的操作的操作只进行一次,无疑可改善程序的运行性能。只进行一次,无疑可改善程序的运行性能。(h) 对对(g)例,借助例,借助 “DAQ助手建立程助手建立程序序该程序该程序VIVI的建立步骤:的建立步骤:经经“函数选板函数选板 测量测量I/O I/O DAQmx- DAQ
35、mx-数据采集数据采集 ”途径向框图面板添途径向框图面板添加加“ DAQ DAQ 助手助手”,在打开的,在打开的“新建新建ExpressExpress任务任务” 对话框里,对话框里,选择选择“采集信号采集信号” “模拟输入模拟输入” “电压电压”,选择模入物,选择模入物理通道理通道ai0ai0和和ai1ai1,输入范围设置为,输入范围设置为-55V-55V,在,在“采集模式中选采集模式中选择择“连续采样连续采样”。“待读取采样设置为待读取采样设置为10001000,“采样率采样率 (Hz)(Hz)”设置为设置为10000Hz10000Hz。封锁封锁“DAQDAQ助手对话框后,将助手对话框后,将
36、“DAQDAQ助手图标下方出现的助手图标下方出现的“数据数据输出端接至输出端接至“波形图之同时,经波形图之同时,经“从动态数据转换函数从动态数据转换函数选择选择“二维标量数组二维标量数组行是通道行是通道”)转化为二维数组,送)转化为二维数组,送至至“波形图表波形图表”(历史纪录长度设置为(历史纪录长度设置为30003000,取消,取消“转置数组转置数组选项,修改选项,修改X X坐标范围为坐标范围为0299902999显示控件;再把它们都放入显示控件;再把它们都放入WhileWhile循环中。循环是否结束,由循环中。循环是否结束,由“停顿按钮控制。停顿按钮控制。Samples To Read参数
37、在代码内部接入了参数在代码内部接入了DAQmx Read函数函数number of samples per channel参数,用以决定每个通道每次从循环参数,用以决定每个通道每次从循环缓冲区读取的数据点数。缓冲区读取的数据点数。DAQ助手输入参数助手输入参数“停顿停顿” 的作用:的作用: 在各次循环之间,在各次循环之间,“DAQ助手的调用状态处于被监控之中。助手的调用状态处于被监控之中。假设假设“停顿参数采用默认值停顿参数采用默认值“False”,第一次调用,第一次调用“DAQ助助手时,进行任务的各种配置和读取操作,而此后的每次调用手时,进行任务的各种配置和读取操作,而此后的每次调用均不再进
38、行任务配置,只进行数据读取操作;但如果均不再进行任务配置,只进行数据读取操作;但如果“停顿停顿参数选为参数选为“True”,那每次调用,那每次调用“DAQ助手都将进行重新配置助手都将进行重新配置降低程序执行性能,甚至无法保证实现连续采集操作。降低程序执行性能,甚至无法保证实现连续采集操作。DAQ助手的助手的“停停顿输入参数,顿输入参数,默认值为默认值为False2. 模拟输出模拟输出Analog Output)(1) 输出直流电压单点输出)输出直流电压单点输出)该程序该程序VI的建立步骤:的建立步骤: 调用调用“DAQmx 创建通道函数,选择创建通道函数,选择“AO 电压电压”,物理通道输,物
39、理通道输 “Dev1/ao0”,其他参数使用默认值;,其他参数使用默认值;b) 调用调用“DAQmx 写入函数,选择写入函数,选择“模拟模拟 DBL 1通道通道 1采样功采样功能能 ,输出数值控制器,输出数值控制器 “data中的值。中的值。留意:使用示波器或万用表观测模出通道留意:使用示波器或万用表观测模出通道ao0接在实验箱上的接在实验箱上的“DAC 0 OUT和和“AOGND引脚之间可发现,刚刚输出的电引脚之间可发现,刚刚输出的电压值在输出引脚上保持不变,即使输出单点数据的程序已经运压值在输出引脚上保持不变,即使输出单点数据的程序已经运行完毕。重新运行程序并输出新值,才可以改变引脚电压值
40、。行完毕。重新运行程序并输出新值,才可以改变引脚电压值。接至万用表或示波器,或接至万用表或示波器,或送至模入通道直接测量送至模入通道直接测量该程序该程序VIVI的建立步骤:的建立步骤:经经“函数选板函数选板 测量测量I/O I/O DAQmx- DAQmx-数据采集数据采集 ”途径途径向框图面板添加并启动向框图面板添加并启动“DAQ DAQ 助手助手”,在其,在其“新建新建ExpressExpress任务对话框,选择任务对话框,选择“生成信号生成信号” “模拟模拟输出输出” “电压电压”,选择模出物理通道,选择模出物理通道ao0ao0,在,在“生成模式中选择生成模式中选择“1 1 采样采样 (
41、 (按要求按要求表示立即表示立即发生数据发生数据) )” 。“信号输出范围采用默认值信号输出范围采用默认值 -10 -10至至10V10V。封锁封锁“DAQDAQ助手对话框后可看到,该助手对话框后可看到,该Express VIExpress VI图标图标下方多出了下方多出了“数据数据” 输入端子。直接向该端子输入输入端子。直接向该端子输入一个数值,即可完成单点数据的模拟输出。一个数值,即可完成单点数据的模拟输出。(2对对1例,借助例,借助DAQ助手建立程序助手建立程序(3输出一段波形数据等间隔,简单缓冲)输出一段波形数据等间隔,简单缓冲) 经经“函数选板函数选板 信号处理信号处理 波形生成波形
42、生成途径选用途径选用 “基本函数发生器基本函数发生器”,用以产生仿真波形数据。这个,用以产生仿真波形数据。这个VI的功能,近似于的功能,近似于“仿真信号仿真信号” Express VI。其中,该函数的枚举参数其中,该函数的枚举参数“信号类型用于设置仿真信号类型用于设置仿真发生信号的类型,可以是正弦波、三角波、方波和锯发生信号的类型,可以是正弦波、三角波、方波和锯齿波;齿波;“幅值设定信号幅值;幅值设定信号幅值;“相位设定初相位;相位设定初相位;“方波占空比()方波占空比()”则专用于设定方波的占空比。则专用于设定方波的占空比。 需要特别注意:需要特别注意:“频率频率和和“采样信息采样信息这两个
43、输入参数。这两个输入参数。 簇类型参数簇类型参数“采样信息采样信息的元素的元素Fs定义定义“采样率采样率”(默认值(默认值1000),),元素元素“采样数采样数定义采样点数默认定义采样点数默认1000););“频率频率给出信号自身频率给出信号自身频率默认默认10)。)。 以默认值做说明:以默认值做说明:“采样数采样数决定了仿真生成信号数据总点数为决定了仿真生成信号数据总点数为1000;Fs的值表示每秒生成的值表示每秒生成1000个数据;即个数据;即“采样数采样数和和Fs的默认值配合生成的默认值配合生成1“秒秒的数据。而的数据。而“频率频率值为值为10,表示,表示1“秒秒中生成中生成10个周期的
44、波形。这样,个周期的波形。这样,调用调用“基本函数发生器基本函数发生器函数产生的波形数据为:产生函数产生的波形数据为:产生10个周期的波形;每个周期的波形;每周期以周期以100个数据点描述,且波形数据的个数据点描述,且波形数据的dt参数为参数为0.001。 秒字带引号,是因为它只是仿真生成的数据;且秒字带引号,是因为它只是仿真生成的数据;且dt=0.001,也仅表示希望,也仅表示希望以以1毫秒作为时间间隔产生数据。而真正发生数据的时间间隔,要由毫秒作为时间间隔产生数据。而真正发生数据的时间间隔,要由DAQmx函数决定。在后面给出的例子中,将看到如何对这种情况做出处理。函数决定。在后面给出的例子
45、中,将看到如何对这种情况做出处理。 (等间隔,简单缓冲例如:输出一段锯齿波形数据(等间隔,简单缓冲例如:输出一段锯齿波形数据该程序该程序VI的建立步骤:的建立步骤:使用使用MAX,建立模拟输出,建立模拟输出DAQmx新任务:选择新任务:选择“生成信号生成信号” -“模拟输出模拟输出” -“电压电压” ,选择物理通道,选择物理通道ao0,接受默认任务名,接受默认任务名“我的电压输出任务我的电压输出任务”,其他,其他任务参数均接受默认值采集模式默认为任务参数均接受默认值采集模式默认为“N 采样采样”)。)。在框图面板,调用在框图面板,调用“基本函数发生器生成仿真波形数据:基本函数发生器生成仿真波形
46、数据:“信号类型选择信号类型选择“锯齿波锯齿波”,“幅值幅值” 输入输入5V,“频率选频率选2Hz,“采样信息采用默认值。采样信息采用默认值。生成的波形特点:生成的波形特点:2个周期的锯齿波,每周期个周期的锯齿波,每周期500点,且波形数据的点,且波形数据的dt参数为参数为0.001。仿真波形数据送至。仿真波形数据送至“波形图显示。波形图显示。调用调用“DAQmx 定时函数,修改任务定时函数,修改任务“我的电压输出任务的默认数据发生速率我的电压输出任务的默认数据发生速率采样率采样率rate参数决定了每秒钟产生的样本数。对参数决定了每秒钟产生的样本数。对“基本函数发生器的簇基本函数发生器的簇参数
47、参数“采样信息采用采样信息采用“按名称解除捆绑函数提取出其采样率按名称解除捆绑函数提取出其采样率Fs参数,参数,输入作为输入作为“DAQmx 定时函数的定时函数的“采样率采样率”(rate参数,即明确接受参数,即明确接受“基本基本函数发生器函数输出的波形数据的函数发生器函数输出的波形数据的dt元素作为发生数据的真正的时间间隔。元素作为发生数据的真正的时间间隔。调用调用“DAQmx 写入函数,向缓冲区写入数据,此时,还没有真正地输出波形;写入函数,向缓冲区写入数据,此时,还没有真正地输出波形;调用调用“DAQmx 开始任务函数真正开始数据发生;调用开始任务函数真正开始数据发生;调用“DAQmx
48、结束前等待结束前等待函数,等待数据全部被生成;调用函数,等待数据全部被生成;调用“DAQmx 清除任务函数停止并清除任务。清除任务函数停止并清除任务。留意:必须调用留意:必须调用“DAQmx 结束前等待函数,否则将在产生完数据前就结束了结束前等待函数,否则将在产生完数据前就结束了任务。任务。 这里,使用这里,使用LabVIEW自带的示例程序来观察该波形发生自带的示例程序来观察该波形发生VI的输出效果。的输出效果。 将调理箱上将调理箱上ao0端输出的仿真数据接至端输出的仿真数据接至ai0与与ai8模入端子之间差分输入。模入端子之间差分输入。 选择选择“协助协助” - “查找范例查找范例打开示例程
49、序浏览器,按打开示例程序浏览器,按“义务义务进行浏览操进行浏览操作,翻开作,翻开“硬件输入与输出硬件输入与输出” - DAQmx- “模拟测量模拟测量”- “电压电压”- Acq&Graph Voltage-Int Clk-Analog Start.vi,修改,修改Sample Rate (Hz)参数为参数为1000,Trigger Source参数为参数为Dev1/ai0,Trigger Level (Volt)参数为参数为1V,如下图。,如下图。先运行该示例程序,然后尽快运行本课上建立的波形发生程序。可以在示例程序中先运行该示例程序,然后尽快运行本课上建立的波形发生程序。可以在示例程序中看
50、到波形正确发生,且是使用上升沿触发的方式采集到的。看到波形正确发生,且是使用上升沿触发的方式采集到的。 该程序该程序VI的建立步骤:的建立步骤:经经“函数选板函数选板-测量测量I/O -DAQmx-数据采集数据采集 -”途径途径向框图面板添加并启动向框图面板添加并启动“DAQ 助手助手”,在在其,在在其“新建新建Express任务对话框,选择任务对话框,选择“生成信号生成信号”-“模拟模拟输出输出”-“电压电压”,选择模出物理通道,选择模出物理通道ao0,从,从“生生成模式中选择成模式中选择“N 采样采样”,取消其后面的,取消其后面的“使用波使用波形定时复选框的选中状态,并将形定时复选框的选中
51、状态,并将“待写入采样和待写入采样和“采样率采样率 (Hz)”都设为都设为1000;封锁封锁“DAQ助手设置窗口,将仿真波形输入至助手设置窗口,将仿真波形输入至“DAQ 助手助手” 的的“数据的输入端子,完成两个周期锯齿数据的输入端子,完成两个周期锯齿波的模拟输出。波的模拟输出。(4) 对对(3)例,借助例,借助“DAQ助手建立该程序助手建立该程序(5) 产生周期性连续波形数据产生周期性连续波形数据 连续发生周期数据并不复杂:只需向所建立的缓冲区写入连续发生周期数据并不复杂:只需向所建立的缓冲区写入一个周期的数据,一个周期的数据,DAQmx将自动不断地重复该段数据,以生将自动不断地重复该段数据
52、,以生成周期性的输出信号。成周期性的输出信号。该程序该程序VI的建立步骤:的建立步骤:a) 调用调用“基本函数发生器生成仿真数据:基本函数发生器生成仿真数据:“信号类型选正弦波,信号类型选正弦波,“频率设频率设为为1.5,“采样信息使用默认值。波形特点:产生采样信息使用默认值。波形特点:产生1.5周期正弦波,每周期采周期正弦波,每周期采2000/3个点,且波形数据的个点,且波形数据的dt参数设置为参数设置为0.001。1.5周期的波形由周期的波形由“波形图波形图控件显示。控件显示。b) 调用调用“DAQmx 创建虚拟通道函数,生成虚拟通道和任务,选择创建虚拟通道函数,生成虚拟通道和任务,选择“
53、AO 电压这电压这个实例,输入物理通道个实例,输入物理通道“Dev1/ao0”。c) 调用调用“DAQmx 定时函数设置时间参数,这里采用与前例不同的采样率设置方定时函数设置时间参数,这里采用与前例不同的采样率设置方法:选择法:选择“DAQmx 定时函数的定时函数的“使用波形实例,该实例直接根据使用波形实例,该实例直接根据“波形波形参数输入端的波形数据设置发生数据的时间间隔。参数输入端的波形数据设置发生数据的时间间隔。“采样模式参数设置为采样模式参数设置为“连续采样连续采样”。d) 调用调用“DAQmx 写入函数,将写入函数,将1.5个周期的正弦波数据写入缓冲区。为该个周期的正弦波数据写入缓冲
54、区。为该VI选择选择“模拟波形模拟波形 1通道通道N采样采样”。e) 调用调用“DAQmx开始任务函数,开始数据发生;在循环中调用开始任务函数,开始数据发生;在循环中调用“DAQmx 任务完任务完成函数查询任务状态,实际上,任务是否结束的信息并未使用,只利用该函成函数查询任务状态,实际上,任务是否结束的信息并未使用,只利用该函数输出的错误簇以检查数据发生操作是否出错,如出错或者按下数输出的错误簇以检查数据发生操作是否出错,如出错或者按下“停顿按钮,停顿按钮,都将退出循环、结束程序;可在循环中调用都将退出循环、结束程序;可在循环中调用“时间延迟时间延迟” Express VI以设置以设置查询延时
55、。在循环外调用查询延时。在循环外调用“DAQmx清除任务函数,结束和清除任务。清除任务函数,结束和清除任务。 将调理箱上将调理箱上ao0输出的数据接至输出的数据接至ai0与与ai8模入端子之间差分输入,使用模入端子之间差分输入,使用LabVIEW自带的例程序察看连续输出的波形:自带的例程序察看连续输出的波形:“协助协助” - “查找范例查找范例” - “硬件输入与输出硬件输入与输出”- DAQmx -“模拟测量模拟测量”-“电压电压”- Cont Acq&Graph Voltage-Int Clk-Analog Start.vi。 参数的设置情况下如图中左侧所示。参数的设置情况下如图中左侧所示
56、。 该程序的建立步骤:该程序的建立步骤:经经“函数选板函数选板-测量测量I/O -DAQmx-数据采集数据采集 -”添加并启动添加并启动“ DAQ 助手助手”;在打开的;在打开的“新建新建Express 义务对话框,选择义务对话框,选择“生成信号生成信号”- “模拟输模拟输出出”-“电压电压”,选择模出物理通道,选择模出物理通道ao0,在,在“生成模式中选择生成模式中选择“连续采连续采样样” ,选中其后的,选中其后的“使用波形定时复选框,即使用输入波形中包含的时使用波形定时复选框,即使用输入波形中包含的时间信息,将这部分代码放入平铺顺序结构的第间信息,将这部分代码放入平铺顺序结构的第0帧;帧;封锁封锁“DAQ助手对话框,将仿真波形送至助手对话框,将仿真波形送至“DAQ助手的助手的“数据输入端子;数据输入端子; 在顺序结构的第在顺序结构的第1帧中放入循环结构进行延时,帧中放入循环结构进行延时,“时间延迟时间延迟” Express VI设置延时为设置延时为0.1秒,按下秒,按下“停顿按钮,程序退出;停顿按钮,程序退出;C) 仿前生成仿前生成1.5个周期的正弦波,参数与前例完全相同。个周期的正弦波,参数与前例完全相同。(6) 对对(5)例,借助例,借助“DAQ助手建立助手建立 该程序该程序