基于虚拟仪器开发软件平台如何实现普通数据采集卡的设计

在参数配置菜单下设置函数的返回值类型和输入参数。对话框右侧对应每一个参数的参数名称、类型、数据类型、参数传递方式。其中,需要注意的是数据类型选项,在不同的编译平台下,数据类型的定义名称是不一样的。为了将数据类型一一对应,在LabVIEW中必须对数据类型名称定义进行转换。

3 普通数据采集卡在LabVIEW平台下的应用实例

以北京优采公司的UA301A型A/D数据采集卡为例,该采集卡在LabVIEW平台下不能直接被驱动。该采集卡提供了一个动态链接库ua300a.dll,此动态链接库中提供了许多简洁高效的采集和控制函数,支持UA301A采集器的各种功能。

UA301A为12位的A/D卡,系统中采用的是双极性输入信号和双极性原码的编码方法。转换的结果为二进制数,转换后得到0~4 095的数字量。为了直观表示被测物理量,需将转换后的数字量变换为具有实际工程意义的数值。当单极性信号输入时,模拟电压值V与数字量D的对应关系可描述为:V=D/4 095×10;当输入信号为双极性时,两者的对应关系为:V=(D-2 048)/4 095×10。这个转换过程在驱动设计中可采用Case结构来完成,把选择输入信号为单极性还是双极性作为这个Case结构的布尔值输入。数据采集驱动程序框图如图2所示。

图2中4个CLF节点分别用来调用OpenUA300,minitz,readdataz,CloseUA300这四个函数。

对于LabVIEW与DLL函数之间传递数组类型数据,无论采用何种数组格式进行传递,都需要在Lab-VIEW中为数组预先分配空间,也就是给该数组开辟缓存,不然会导致程序崩溃。该程序在采集数据前预先为其初始化一个二维数组空间,为了使采集到的数据在数组中的位置始终对应于采样的每一通道,初始化数组空间时设置每通道采样点数为行,采集通道数为列,这样数据从采集卡FIFO存入缓存时,每一列对应每一通道的数据,省去了后续通过循环索引出各通道数据的繁琐。