基于LabVIEW的万用表设计.docx

上传人:b****5 文档编号:6916165 上传时间:2023-01-12 格式:DOCX 页数:22 大小:232.59KB
下载 相关 举报
基于LabVIEW的万用表设计.docx_第1页
第1页 / 共22页
基于LabVIEW的万用表设计.docx_第2页
第2页 / 共22页
基于LabVIEW的万用表设计.docx_第3页
第3页 / 共22页
基于LabVIEW的万用表设计.docx_第4页
第4页 / 共22页
基于LabVIEW的万用表设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于LabVIEW的万用表设计.docx

《基于LabVIEW的万用表设计.docx》由会员分享,可在线阅读,更多相关《基于LabVIEW的万用表设计.docx(22页珍藏版)》请在冰豆网上搜索。

基于LabVIEW的万用表设计.docx

基于LabVIEW的万用表设计

基于LabVIEW的万用表设计

LabVIEW在数据采集与仪器控制中有着十分广泛的应用,本章将通过几个典型实例来介绍

LabVIEW在数据采集与仪器控制领域的编程方法。

10.1

万用表是一种电子测量工具,它能对电压、电流、电阻等进行度量。

它在现实中应用相当广

泛,是电子测试不可缺少的工具。

用LabVIEW中编写的万用表使用起来方便、灵活,改变了传统观念上万用表的外形,增强了其测量功能。

这种方式现在越来越多地被人们应用。

节将以板卡作数据采集硬件进行编程,实现虚拟数字万用表。

10.1.1

板卡在工业中应用相当广泛,尤其近年来在数据采集行业中被人们认可。

它最大的好处是安

装方便,操作简单,编程容易。

本节中将利用PCI8335接口板卡作为数据采集卡,对信号进行采集并处理,开发一款虚拟DT9205万用表。

DT9205型数字万用表是一个功能强大的工具。

本例中将以它为实物参考,用LabVIEW实

现一款虚拟的万用表,基本功能与DT9205一样,同时还增加了数据分析、在计算机上存储数据等功能。

1

PCI8335接口板卡是一种基于32bitPCI总线的多功能数据采集卡,它可以应用于现场数据采集、控制、小型实验和教学等多种场合。

它在硬件安装上也非常简单,使用时只需将接口

卡插入机内任何一个PCI总线插槽,并用螺丝固定,将信号电缆从机箱外部直接接入。

它的

详细功能参数如下:

—32bitPCI总线,即插即用

—输入范围:

0~10V,-5~+5V

—分辨率:

12bit

—32路单端/16路差分模拟量输入

—12bitA/D转换

—4路12bitD/A输出

—2倍、10倍、100倍硬件增益选择

—8路TTL开入(其中4路可中断)、8路TTL开出

—A/D单通道采样速率100KHz,N个通道时,每一个通道的采样率为100/NKHz

—3路8bit计数器输入,可级联为1路24bit计数器

—A/D工作方式为:

软件触发、定时启动、FIFO半满中断

—8KBFIFO

—自动通道切换和单通道设置—通过率:

单通道100KHz

—超压范围:

-12~+12V

—输入阻抗:

10MΩ

—A/D触发方式:

定时

—8通道输入输出

—提供DLL作为用户程序的接口

PCI8335板卡的功能如图10-1所示。

图10-1PCI8335板卡功能图2DT9205

DT9205数字万用表具有多精度、多范围的优点。

它可以直接把测量得到的数据显示出来,

并按要求保存。

它的具体参数如下:

—直流电压:

200mV~1000V

—交流电压:

200mV~750V

—直流电流:

2mA~10A

—交流电流:

2mA~20A

—电阻:

200Ω~200MΩ

—电容:

2nF~200μF

—二极管测试

—导通蜂鸣

—数据保存

—精度调节

—工作指示灯10.1.2

在LabVIEW中开发虚拟仪器,必须先配置好硬件电路。

这里先介绍PCI8335板卡的安装,这是整个工作的前期准备,再从PCI数据采集开始详细讲解说明,最后阐述信号在计算机中

的分析、运算、显示等的编程。

10.1.3

板卡开发过程就是以相应板卡为硬件进行编程的过程。

这里先用PCI8335板卡进行数据采集,然后对其调试,并在LabVIEW中编程,完成一个虚拟万用表。

编程是本例的重点,也

是本例的难点,尤其是整个程序的组合编程,涉及许多数据的融合和控件的配合。

下面分步

进行介绍。

1

板卡的安装是整个工作的第一步,PCI8335在硬件安装完成后还需要进行软件安装,软件安

装是非常重要的一个环节,它关系到采集板能否正常使用。

具体安装步骤如下:

(1)检查硬件安装是否正确,然后通电正常启动计算机,在系统启动完成后,会自动检测

新安装的硬件,如图10-2所示。

图10-2发现PCI硬件

(2)等到检测完毕后,弹出“找到新的硬件向导”对话框,如图10-3所示。

(3)单击“下一步”按钮,进入硬件连接向导界面,如图10-4所示。

图10-3硬件安装向导图10-4PCI桥连接(4)单击“下一步”按钮,进入硬件类型选择界面,如图10-5所示。

(5)单击“下一步”按钮,进入驱动选择界面,如图10-6所示。

图10-5硬件类型选择图10-6选择驱动程序(6)单击“从磁盘安装”按钮,将出现选择驱动程序地址的对话框,如图10-7所示。

图10-7选择驱动程序地址

(7)单击“浏览”按钮,选择“PCI8335.inf”所在的目录(光盘:

\ZTPCI8KA),单击“确定”按钮。

系统将会按要求自动安装驱动。

安装完成后重启计算机即可使用。

你也可以继续安装第

二块PCI卡。

安装第二块PCI8335卡时,系统会自动检测安装,不再经过上述步骤,只是卡的索引值不同。

索引值是使用PCI板卡时非常重要的参数,相同的ISA卡是靠地址拨号区分的,而相同的PCI卡是靠索引值来区分的。

一般情况下,第一块安装的PCI8335卡的索引值为0,以后安装的PCI8335卡索引值自动依次加1。

调用动态链接库(ZTPCI8KA.dll)中的OpenDevice函数,将PCI卡的索引值赋给此函数,即可操作相应的PCI卡。

2

在板卡安装好后,必须进行测试,这样才能保证以后的正常使用。

测试是利用PCI8335数据采集卡驱动光盘自带的测试程序进行的。

它一般位于光盘:

\ZTPCI8KA\8335\测试程序\8335test_vb\8335test.exe中。

此程序给硬件测试带来方便,也给后面的工作提供保障。

下面将对

测试程序的使用方法进行讲解,测试程序的整体界面如图10-8所示。

图10-8测试界面

运行“PCI8335数据采集卡测试程序,从菜单栏中单击”“选择板卡”命令,弹出“选择板卡”

对话框,如图10-9所示。

先输入所要操作的板卡的索引值,即可在程序的界面中对选中的

PCI8335卡进行测试。

若计算机中只安装了一块PCI8335卡,可略过这一步操作(本程序默

认对索引值为0的板卡进行测试)。

设置完后,就可以进行各项测试操作。

此测试程序根据PCI8335的各种功能,分为以下几个部分:

(1)开关量测试

该部分程序既可测试开关量输出,也可以测试开关量输入,界面如图10-10所示。

在测试界面的左上角“开关量测试”功能块中,单击“输出测试”后面的灯,可进行开关量的输出测试。

这8个灯,从左至右依次对应着通道1至通道8,8个开关量输出通道。

单击某个灯,其状

态就会在亮灭之间切换,同时输出到对应的开关量输出通道,进行相应的输出通断状态的切

换。

“输入状态”后面的8个灯,从左至右依次为通道1至通道8,分别指示了开关量输入通道的通断状态。

该功能是自动的,无须手动操作。

(2)模拟量输出测试

此部分程序用于测试模拟量输出,界面如图10-11所示。

其中4个文本下拉框对应着4个通

道模拟量输出。

在某一文本框中输入的值会输出到对应的通道。

这几个文本下拉框的值一般

是固定的。

可以通过旁边的下拉按钮选择,也可以输入任意值。

图10-9选择板卡图10-10开关量测试图10-11模拟量输出测试

(3)模拟量输入测试

此部分程序用于模拟量输入测试,界面如图10-12所示,32个文本框对应着32个通道的模拟量输入。

单击“模拟量输入”按钮,32个模拟输入电压值就会通过相应的文本框显示出来。

在“采集方式”单选框中,可选择模拟信号采集方式。

—单路:

用来对模拟量进行实时采集。

—单路滤波:

用来对采集到的模拟量进行滤波处理,这也是程序默认方式。

—多路循环:

用来对32路模拟信号通道同时采集。

它的采集速度较前两者快,多用于快速

变化量的测量过程测试中。

在“显示设置”单选框中,可进行输入模拟量的显示设置。

—原码值(十六进制):

文本框中显示模拟量的十六进制原码值(000~FFF)。

—0-10000mV:

显示0到10000mV的单极性输入信号的电压值。

—-5000~+5000mV:

显示-5000mV到+5000mV的双极性输入信号的电压值。

以上设置都可在单击“模拟量输入”按钮后进行动态地进行。

这样方便在系统测试过程中对参

数进行设置。

(4)计数器测试

计数器测试主要是测试脉冲输入,对脉冲计数,如图10-13所示。

它可进行PCI8335的三个计数器的测试,分为三组,分别对三个计数器进行测试。

在每组中的第一个文本框显示计数

器寄存器中的当前值,第二个文本框显示计数累加值。

单击“累加清零”按钮,将清空第二列文本框中的值,重新进行累加计数。

测试程序运行后,软件就自动读取计数器寄存器中的当前值,并进行累加,无须手动操作。

图10-12模拟量输入测试图10-13计数器测试

(5)中断测试中断测试就是对采集卡的中断进行一定的测试。

它能对PCI8335采集卡上的三种中断进行测

试。

单击“打开中断总允许”按钮,可打开PCI8335中断功能,其界面如图10-14所示。

—“FIFO半满中断”区域:

可对FIFO半满产生的中断进行测试。

单击“FIFO中断测试”按钮,打开FIFO中断允许,并启动A/D转换。

当中断到来时,“中断次数”文本框显示由于FIFO半满产生的中断次数,“中断个数”文本框显示本次中断把FIFO中的数据读空,所读取的数

据个数。

—“计数器中断”区域:

对计数器产生的中断进行测试。

单击“计数器中断测试”按钮,即打开计数器中断允许。

“中断次数”文本框中显示计数中断的累计次数。

—“开关量中断”区域:

可对开关量中断进行测试。

单击“开关量中断测试”按钮,打开开关量中断允许。

“中断次数”文本框中显示开关量中断的累计次数。

单击“关闭所有中断”按钮,将关闭所有中断,禁止中断进入。

图10-14中断测试

3

在PCI8335数据采集板卡中,为了简化操作。

动态链接库(PCI8KA.dll)中几乎所有的函数的参数均通过一个结构体(ZT_PCIBOARD)来传递。

该结构体及PCI8000的有关函数说明如下:

structZT_PCIBOARD

{

longlIndex;/*PCI卡索引值,该值在安装时被系统分配*/

HANDLEhHandle;/*PCI卡的操作句柄(只有涉及中断时才用)*/

shortnCh;/*通道号*/

longlData;/*输入输出数据变量*/

long*plData;/*输入输出数据指针*/

longlCode;/*设备控制字,具体含义见函数说明*/

};

下面对各函数功能进行说明。

(1)打开设备函数longAPIENTRYOpenDeviceAmcc(ZT_PCIBOARD*bs)功能打开某一块卡PCI8335

入口有效参数:

卡索引值lIndexPCI

出口返回参数:

卡的操作句柄(只有涉及中断时,返回才有意义)hHandlePCI

打开设备成功0返回值:

打开设备失败1

(2)关闭设备

函数longAPIENTRYCloseDeviceAmcc(ZT_PCIBOARD*bs)功能关闭某一块卡PCI8335

入口有效参数:

卡索引值lIndexPCI

出口返回参数无

关闭设备成功0返回值:

关闭设备失败1

(3)开关量输入

函数longAPIENTRYZT8335DI(ZT_PCIBOARD*bs)功能采集某一通道开关量输入信号的状态PCI8335

卡索引值lIndexPCI

入口有效参数:

设备控制码。

表示单通道操作;表示多通道操作lCode01

通道号,(单通道模式使用)nCh1~8

某一通道读取值。

或(单通道操作)lData01出口返回参数该卡所有开关量输入状态值(多通道操作)

采集成功0返回值:

采集失败1

(4)开关量输出

函数longAPIENTRYZT8335DO(ZT_PCIBOARD*bs)功能进行某一个通道的开关量数据输出操作

卡索引值lIndexPCI入口有效参数:

设备控制码。

表示单通道操作;表示多通道操作lCode01

通道号,(单通道模式使用)nCh1~8

某一通道输出设定值。

或(单通道操作);该卡所有开关量输入设定值(多通道操作)lData01

出口返回参数无

开关量数据输出成功0返回值:

开关量数据输出失败1

(5)模拟量输出

函数longAPIENTRYZT8335AO(ZT_PCIBOARD*bs)功能进行某一个通道的模拟量数据输出操作

卡索引值lIndexPCI

入口有效参数:

通道号,(单通道模式使用)nCh1~4

某一通道输出原码值()lData0~4095出口返回参数无

模拟量数据输出成功0返回值:

模拟量数据输出失败1

(6)初始化模拟量采集

函数longAPIENTRYZT8335AIInt(ZT_PCIBOARD*bs)

功能初始化模拟量数据采集

卡索引值lIndexPCI

通道号nCh

单路采集通道号:

1~32

多路循环采集终止通道号:

1~32

设备控制字。

lCode

入口有效参数停止:

0

启动:

1

多路循环:

(默认单路采集)2

单端:

(默认差分方式)4

单极性():

(默认原码值)0~10V256

双极性():

(默认原码值)-5~+5V512出口返回参数无

初始化成功0返回值:

初始化失败1

(7)单通道采集

函数longAPIENTRYZT8335AI(ZT_PCIBOARD*bs)功能采集某一通道模拟量数据

卡索引值lIndexPCI入口有效参数:

通道号,nCh1~32

出口返回参数:

某一通道模拟量的数值lData

采集成功0返回值:

采集失败1

注:

该函数无须调用ZT8335AIInit初始化。

(8)单通道采集(滤波)

函数longAPIENTRYZT8335AIA(ZT_PCIBOARD*bs)功能采集一组某一通道模拟量数据数据,并进行滤波处理

卡索引值lIndexPCI入口有效参数:

通道号,nCh1~32

出口返回参数:

某一通道模拟量的数值lData

采集成功0返回值:

采集失败1

注:

该函数无须调用ZT8335AIInit初始化。

(9)设置FIFO数据地址

函数longAPIENTRYGetAddress(shortnIndex,long*lAdd)功能获取用户存放数据的地址FIFO

卡索引值nIndexPCI参数:

存放数据的地址(建议用户开个位的长整型数据缓冲区,接收中的数据)lAddFIFO819232FIFO

设置成功0返回值:

设置失败1

(10)FIFO数据批量采集

函数longAPIENTRYZT8335AIFifo(ZT_PCIBOARD*bs)功能采集某一通道或多路循环通道的一批模拟量数据

卡索引值lIndexPCI入口有效参数:

存放数据的指针plDataFIFO

出口返回参数:

从中读取的数据个数lDataFIFO

采集成功0返回值:

采集失败1

注:

1.使用前,需调用ZT8335AIInit初始化。

2.初始化后,用户需调用GetAddress设置存放数据的数组地址(该函数是为不支

持指针的计算机语言设置的,比如:

VisualBasic)。

3.使用支持指针的计算机语言,可不用GetAddress函数,直接将存放FIFO数据的

地址赋给plData即可。

(11)脉冲输入

函数longAPIENTRYZT8335CT(ZT_PCIBOARD*bs)功能读取某个计数器的寄存器值

卡索引值lIndexPCI入口有效参数:

通道号(计数器编号),nCh1~3

出口返回参数:

某一计数器的寄存器值lData

返回值:

读取成功0

读取失败1

(12)打开中断

函数longAPIENTRYOpenIRQ(HANDLE*hList,ULONGhDeviceNum,voidCALLBACKIrqCallBack(ZT_PCIBOARD*bs))

功能开一组卡的中断总允许,等待中断到来PCI

开中断允许列表hList

入口有效参数:

开中断允许数量hDeviceNum

这是一个回调函数的入口指针IrqCallBack

出口返回参数无

打开中断成功0

返回值:

打开中断失败1

没有要打开的中断2

回调函数voidCALLBACKIrqCallBack(ZT_PCIBOARD*bs)

当调用后,产生中断时,系统会唤醒此函数,用户自己编写函数进行中断处理,系统会提供以下参数,供用户使用:

OpenIRQPCI8335IrqCallBack功能(引起中断的索引值)。

用户可调用板卡操作函数,对板卡进行相应的操作。

nIndex(13)关闭中断

函数longAPIENTRYCloseIRQ()

功能禁止本机上所有已开的卡的中断总允许PCI8335

禁止中断成功0返回值:

禁止中断失败1

(14)设置中断允许寄存器

函数longAPIENTRYSetIE(ZT_PCIBOARD*bs)功能设置中断允许寄存器值

卡索引值lIndexPCI入口有效参数:

设备控制字(中断类型:

半满中断、计数器半满中断、开关量中断)lCodeFIFO

设置成功0返回值:

设置失败1

(15)读中断状态寄存器

函数longAPIENTRYReadIS(ZT_PCIBOARD*bs)功能读取中断状态寄存器值

入口有效参数:

卡索引值lIndexPCI

出口返回参数:

设备控制字(产生中断的类型:

半满中断、计数器半满中断、开关量中断)lCodeFIFO

读取成功0返回值:

读取失败1

(16)DLL编译

在LabVIEW中利用PCI8335数据采集卡编程时,直接利用DLL文件,对其进行数据采集

处理,所以先要进行DLL程序的编译。

在VC++中编写程序,并生成DLL文件即可。

C源

程序如下:

#include"stdafx.h"

#include

#include

#include"PCI8KA.h"

ZT_PCIBOARD*bs;

ZT_PCIBOARDztbs;

voidmain()

{

longi;

ULONGsData[4096*16];

ULONGmOutput=0;

bs=&ztbs;

//打开一个PCI8335卡

ztbs.lIndex=0;

OpenDeviceAmcc(bs);

ztbs.lCode=7;//多路循环(4+2+1)

ztbs.nCh=4;//终止通道为4,即4个通道循环采集!

ZT8335AIInit(bs);

/*以下用两种方法实现FIFo的读取!

*/

//********函数ReadFifo示例********

ReadFifo((short)bs->lIndex,sData,&mOutput);

for(i=0;i<25;i++)

{

printf("%x\n",sData[i]);

}

printf("%u\n",mOutput/4);//mOutput/4为FIFO被读空所返回的数据*

}

10.1.4用LabVIEW编写虚拟万用表的界面是本例重点要讲解的内容,下面具体讲解此部分内容。

1

(1)采集设置界面主要用来对采集卡参数进行调节。

这里先要在前面板放置几个数值输入

控件,并依次按要求为其命名,如图10-15所示。

图10-15采集设置界面

(2)创建一个簇控件,并重命名为BS,并把图10-15中下面一排控件放入其中,如图10-

16所示。

图10-16“簇”的创建

簇控件可以通过“控件”|“新式”|“数组、矩阵、簇”|“簇”命令调用。

设置簇时,只要把想设置

为簇的元素全选中,拖动到簇框中就可以了。

(3)在后面板中放置一个“层叠式顺序结构”图标,可通过“函数”|“编程”|“结构”|“层叠式顺序结构”命令调用,如图10-17所示。

(4)在“层叠式顺序结构”的边框上右键单击,选择“在后面添加帧”就会在结构体上出现两个帧。

在帧下拉列表上单击,可两个帧之间转换。

在第0帧中,要把簇和索引号捆绑到一起,

这样才便于后面的采集过程处理。

捆绑函数可用“函数”|“编程”|“簇、变体、类”|“按名称捆绑”命令来调用。

图10-17层叠式顺序结构

将捆绑后的数据通过调用库函数来处理。

调用库函数可通过“函数”|“互连接口”|“库与可执行文件”命令来调用。

处理完后要对捆绑的数据解除捆绑,以方便下次处理。

解除捆绑函数通

过“函数”|“编程”|“簇、变体、类”|“按名称解除捆绑”命令来调用。

具体程序如图10-18所示。

图10-18第0帧程序框图

(5)对第1帧进行编程时,只需要调用库函数操作即可。

这里实现的操作是读数据采集卡

的数据,并将其数据输出,输出端口的函数名为Noutput,把此端口连接到顺序结构的外面

用于数据输出,如图10-19所示。

图10-19第1帧程序框图

2

虚拟万用表的旋钮是按照现实中的DT9205模式进行设计的,下面将分步进行介绍。

(1)通过“控件”|“新式”|“数值”|“转盘”命令,在前面板放置一个转盘控件。

对其选中后,在

边角处拖动,放大控件,并在右键菜单中选择“文本标签”命令,再进行设置属性,其界面如

图10-20所示。

把数据类型设置为“无符号长整型”。

在“文本标签”选项卡双击“文本标签”栏的选项,写入旋钮对应的名称,再单击“插入”按钮,重复多次,写入每一个项的名称。

注意这

些名称的先后顺序不能乱。

旋钮标签设置完以后前面板界面如图10-21所示。

图10-20旋钮标签设置图10-21旋钮界面

(2)在前面板放一个字符串,用于显示测量结果。

如果结果只是一个数值的话,可以用数

值控件显示。

这里为了在更加直观、完美地显示数值的同时,还显示测量种类和单位等一些

信息,因此选择了字符串控件。

前面板界面如图10-22所示。

图10-22结果显示屏

(3)放置一个数值输入控件,用于控制测量精度。

同时放置一个工作指示灯,用于指示仪

器工作状态。

这些操作比较简单,这里不再详细说明。

3

在后面板中,先要放置一个条件结构,用于指示万用表对旋钮不同刻度执行不同动作。

条件

结构通过“函数”|“编程”|“结构”|“条件结构”命令调用。

在条件结构上,右键单击下拉框,选

择“在后面添加分支”命令,添加条件分支,如图10-23所示。

(1)在条件结构中添加到32个分支,这样每一个分支都对应一个条件结构,执行不同的动

作,并把旋钮和条件结构的“分支选择器”连接起来。

0~31分支与旋钮的文本标签值是对应的,如图10-24所示。

图10-23添加分支图10-24条件结构设置

(2)对每一个分支进行设置

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1