文档库 最新最全的文档下载
当前位置:文档库 › PC数据采集卡说明书

PC数据采集卡说明书

PC数据采集卡说明书
PC数据采集卡说明书

PC-6311D模入模出接口卡技术说明书

1.概述:

PC-6311D 模入模出接口卡适用于具有ISA 总线的PC系列微机,具有很好的兼容性,CPU从目前广泛使用的64位处理器直到早期的16位处理器均可适用,操作系统可选用经典的MS-DOS,目前流行的Windows系列,高稳定性的Unix等多种操作系统以及专业数据采集分析系统 LabVIEW 等软件环境。在硬件的安装上也非常简单,使用时只需将接口卡插入机内任何一个ISA总线插槽中,信号电缆从机箱外部直接接入。也可插入我所研制的PC扩展箱内使用。

PC-6311D模入模出接口卡安装使用方便,程序编制简单。其模入模出及I/O信号均由卡上37芯D型插头及另配的转换插头与外部信号源和设备连接。对于模入部分,用户可根据实际需要选择单端或双端输入方式。对于模出部分,用户可根据控制对象的需要选择电压或电流输出方式以及不同的量程。

2. 主要技术参数:

2.1 模入部分

2.1.1输入通道数:(标*为出厂标准状态,下同)

单端32路;* / 双端16路

2.1.2输入信号范围:

0V~10V*;/ ±5V

2.1.3输入阻抗:≥10MΩ

2.1.4A/D转换分辨率:12位

2.1.5A/D转换速度:10μS

2.1.6A/D启动方式:

程序启动/外触发启动

2.1.7A/D转换结束识别:

程序查询/中断方式

2.1.8A/D转换非线性误差:±1LSB

2.1.9A/D转换输出码制:

单极性原码*/双极性偏移码

2.2.10系统综合误差:≤0.2% FSR

2.2 模出部分:

2.2.1输出通道数:

2路 (互相独立,可同时或分别输出,具有上电自动清零功能。)

2.2.2输出范围:

电压方式:0~5V;0~10V*;±5V;±2.5V

电流方式:0~10mA;4~20mA

2.2.3输出阻抗:≤2Ω (电压方式)

2.2.4D/A转换器件:DAC1210

2.2.5D/A转换分辨率:12位

2.2.6D/A转换输入码制:

二进制原码(单极性输出方式时)*;

二进制偏移码(双极性电压输出方式时)

2.2.7D/A转换综合建立时间:≤2μS

2.2.8D/A转换综合误差:

电压方式:≤0.2% FSR

电流方式:≤ 1% FSR

2.2.9电流输出方式负载电阻范围:

使用机内+12V电源时:0~250Ω

外加+24V电源时:0~750Ω

2.3 数字量输入输出部分:

2.3.1DI:8路;TTL标准电平

2.3.2 DO:8路;TTL标准电平;有输出锁存功能

2.4 电源功耗:

+5V(±10%)≤400mA;

+12V(±10%)≤100mA;

-5V(±10%)≤10mA

2.5 使用环境要求:

工作温度:10℃~40℃;

相对湿度:40%~80%;

存贮温度:-55℃~+85℃

2.6 外型尺寸:(不含档板)

长×高=182.6mm×106.7 mm (7.2英寸×4.2英寸)

3. 工作原理:

PC-6311D模入模出接口卡主要由模数转换电路、数模转换电路、数字量输入输出电路、接口控制逻辑电路构成。

3.1 工作原理框图:PC-6311D模入模出接口卡工作原理框图见图1。

图1 工作原理框图

3.2 模入部分:

外部模拟信号经多路转换开关选择后送入放大器处理。放大器前后设有单/双端输入选择跨接器KJ1、KJ2 和转换码制选择跨接器KJ3。处理后的信号送入模数转换器进行转换,其转换状态和结果可用程序查询和读出。模数转换器的启动也可用外部触发方式启动。转换结束信号也可用中断方式通知CPU进行处理。

3.3 模出部分:

模拟量输出部分由DAC1210 D/A转换器件和有关的基准源、运放、阻容件和跨接选择器组成。依靠改变跨接套的连接方式,可分别选择电压或电流输出方式。当采用电流输出方式时,本卡可直接外接Ⅱ、Ⅲ型执行器。D/A 部分的各个通道可分别按不同的输出方式和范围由用户自行选择,并具有加电自动清零功能。

3.4 数字量输入输出部分:

数字量输入输出电路由输入缓冲器和输出锁存器及相关电路组成,可分别输入输出8位TTL电平信号。

4. 安装及使用注意:

本卡的安装十分简便,只要将主机机壳打开,在关电情况下,将本卡插入主机的任何一个空余扩展槽中,同时CZ2也需要占用一个空余扩展槽,再将档板固定螺丝压紧即可。

本卡采用的模拟开关是COMS 电路,容易因静电击穿或过流造成损坏,所以在安装或用手触摸本卡时,应事先将人体所带静电荷对地放掉,同时应避免直接用手接触器件管脚,以免损坏器件。

禁止带电插拔本接口卡。本卡跨接选择器较多,使用中应严格按照说明书进行设置操作。设置接口卡开关、跨接套和安装接口带缆时均应在关电状态下进行。

当模入通道不全部使用时,应将不使用的通道就近对地短接,不要使其悬空,以避免造成通道间串扰和损坏通道。

为保证安全及采集精度,应确保系统地线(计算机及外接仪器机壳)接地良好。特别是使用双端输入方式时,为防止外界较大的共模干扰,应注意对信号线进行屏蔽处理。

5. 使用与操作:

5.1 主要可调整元件位置见图2。

图2 主要可调整元件位置图

5.2 I/O基地址选择:

I/O 基地址的选择是通过开关K 进行的,开关拨至“ON”处为0,反之为1。初始地址的选择范围一般为100H~1EFH;210H~2EFH以及300H~36FH之间。用户应根据主机硬件手册给出的可用范围以及是否插入其它功能卡来决定本卡的I/O基地址。出厂时本卡的基地址设为100H,并从基地址开始占用连续8个地址。现举例说明见图3。 ON 1 2 3 4 5 6 7 ON 1 2 3 4 5 6 7

A3 A4 A5 A6 A7 A8 A9 A3 A4 A5 A6 A7 A8 A9

(a) 100H (b) 318H

图3 I/O基地址选择举例

5.3 输入输出插座接口定义:

输入输出插座接口定义(括号内表示双端输入方式时通道组成)CZ1见表1,CZ2见表2。( 注:CZ2需要占用一个PC插槽位。)

插座引脚号信号定义插座引脚号信号定义

1 模拟地20 模拟地

2 CH1 (CH1+) 21 CH17(CH1-)

3 CH2 (CH2+) 22 CH18(CH2-)

4 CH3 (CH3+) 23 CH19(CH3-)

5 CH4 (CH4+) 24 CH20(CH4-)

6 CH5 (CH5+) 25 CH21(CH5-)

7 CH6 (CH6+) 26 CH22(CH6-)

8 CH7 (CH7+) 27 CH23(CH7-)

9 CH8 (CH8+) 28 CH24(CH8-)

10 CH9 (CH9+) 29 CH25(CH9-)

11 CH10(CH10+) 30 CH26(CH10-)

12 CH11(CH11+) 31 CH27(CH11-)

13 CH12(CH12+) 32 CH28(CH12-)

14 CH13(CH13+) 33 CH29(CH13-)

15 CH14(CH14+) 34 CH30(CH14-)

16 CH15(CH15+) 35 CH31(CH15-)

17 CH16(CH16+) 36 CH32(CH16-)

18 +5V输出37 外触发 E.T

19 模拟地

表2 输入输出插座CZ2接口定义(NC为空脚)

插座引脚号信号定义插座引脚号信号定义

1 D/A1电压端20 模拟地

2 D/A2电压端21 模拟地

3 NC 22 NC

4 D/A1电流端23 +12V输出

5 D/A2电流端24 +12V输出

6 NC 25 NC

7 +5V输出26 +5V输出

8 DI0 27 DI1

9 DI2 28 DI3

10 DI4 29 DI5

11 DI6 30 DI7

12 NC 31 NC

13 DO0 32 DO1

14 DO2 33 DO3

15 DO4 34 DO5

16 DO6 35 DO7

17 数字地36 数字地

18 NC 37 NC

19 NC

5.4 跨接插座的用法:

5.4.1 输入单/双端方式选择:

KJ1、KJ2为单/双端输入方式选择,其使用方法见图4

KJ1 KJ2 KJ1 KJ2

a. 单端输入方式

b. 双端输入方式

图4 单/双端输入方式选择

5.4.2 转换码制选择:

KJ3为转换码制选择插座。码制的定义参见5.6节。用户应根据输入信号的极性进行选择,选择方法见图5。 S D S D

a. 单极性原码

b. 双极性偏移码

图5 转换码制选择

5.4.3 D/A输出方式及范围选择:

KJ5、KJ6为D/A输出量程选择插座,其中KJ5对应D/A1,KJ6对应D/A2。2路D/A 可以选择相同或不同的输出方式和范围,互不影响。各组插座的使用方法见图6。

图6 D/A输出方式及范围选择

5.4.4 中断方式及中断源选择:

KJ4为中断有效及中断源选择插座。该插座全部开路时为非中断方式,中断源的选择见图7。

KJ4 KJ4 KJ4

a. IRQ3中断

b. IRQ7中断

c. 非中断方式

图7 中断源的选择

5.5 控制端口地址与有关数据格式:

5.5.1 各个控制端的操作地址与功能见表3:

端口操作地址操作命令功能

基地址+0 写写通道代码, 选通道

基地址+0 读启动D/A转换

基地址+1 写启动A/D转换

基地址+1 读查询A/D转换状态,读高4位转换结果

基地址+2 读读低8位转换结果,清除转换状态及中断标志

基地址+3 写写I/O 输出数据

基地址+3 读读I/O 输入数据

基地址+4 写写D/A1高8位数据

基地址+5 写写D/A1低4位数据

基地址+6 写写D/A2高8位数据

基地址+7 写写D/A2低4位数据

5.5.2

通道号十进制

代码十六进

制代码

输入方式通道号十进制

代码

十六进

制代码

输入方式

1 0 00H 单/双17 16 10H 单

2 1 01H 单/双18 17 11H 单

3 2 02H 单/双19 18 12H 单

4 3 03H 单/双20 19 13H 单

5 4 04H 单/双21 20 14H 单

6 5 05H 单/双22 21 15H 单

7 6 06H 单/双23 22 16H 单

8 7 07H 单/双24 23 17H 单

9 8 08H 单/双25 24 18H 单

10 9 09H 单/双26 25 19H 单

11 10 0AH 单/双27 26 1AH 单

12 11 0BH 单/双28 27 1BH 单

13 12 OCH 单/双29 28 1CH 单

14 13 ODH 单/双30 29 1DH 单

15 14 0EH 单/双31 30 1EH 单

16 15 0FH 单/双32 31 1FH 单

查询A/D转换状态时的数据格式及意义见表5(端口地址为基地址+1):

操作命令D7D6D5D4D3D2D1D0A/D转换状态

读 1 x x x x x x x 正在转换中

读0 x x x x x x x 转换结束

A/D转换结果数据格式见表6:

端口地址操作命令D7D6D5D4D3D2D1D0意义

基地址+1 读0 0 0 0 DB11 DB10 DB9DB8高4位数据

基地址+2 读DB7DB6DB5DB4DB3DB2DB1DB0低8位数据

D/A1转换数据格式见表7,D/A2转换数据格式类同。

端口地址操作命令D7D6D5D4D3D2D1D0意义

基地址+4 写DB11 DB10 DB9DB8DB7DB6DB5DB4高8位数据

基地址+5 写DB3DB2DB1DB0x x x x 低4位数据

5.6 模入模出码制以及数据与模拟量的对应关系:

5.6.1 本接口卡在单极性方式工作时,即模入模出的模拟量为0~10V时,转换后和写出的12位数码为二进制原码。此12 位数码表示一个正数码,其数码与模拟电压值的对应关系为:

模拟电压值=数码(12位)×10(V)/4096 (V)

即: 1LSB=2.44mV

5.6.2 本接口卡在双极性方式工作时,转换后和写出的12 位数码为二进制偏移码。此时12位数码的最高位(DB11)为符号位,“0”表示负,“1”表

示正。偏移码与补码仅在符号位上定义不同,可以先求出补码再将符号位取反就可得到偏移码。此时数码与模拟电压值的对应关系为:

模入模出信号为-5~+5V时:

模拟电压值=数码(12位)×10(V)/4096-5 (V)

即:1LSB=2.44mV

5.7 外触发信号E.T的要求:

本卡的模入部分可以在外触发方式下工作。每当E.T有一个低电平时,A/D就启动转换一次。使用该方式时,应注意E.T信号必须符合TTL电平标准,其波形参见图8。

其中: T1> 100nS T2 > 10uS

图8 E.T信号波形图

5.8 中断工作方式:

本卡的A/D 转换结束信号可以采用中断方式通知CPU 进行处理。改变KJ4的位置可以选用IRQ3中断或IRQ7

中断。用户在使用中断方式时,应对主机系统的 8259 中断管理器进行初始化并编制中断处理程序。并在8259中断允许之前,先清除本卡的中断标志。当A/D转换结束时,本卡会向8259 中断管理器发出一个高电平的中断申请,CPU 接到中断请求后转向中断处理程序运行读数操作。当读取低8位转换结果时,会自动清除中断标志。

5.9 电流输出方式的使用与扩展:

本卡模出部分可选择0~10mA或4~20mA电流输出方式以直接驱动Ⅱ、Ⅲ型执行仪表。采用电流输出方式时,供电电源可以使用本卡提供的+12V。也可扩展使用机外+24V 电源。其连接使用方法见图9。

CZ2 CZ2

a. 使用机内+12V电源

b. 扩展机外+24V电源

图9 电流输出方式使用方法

5.10 调整与校准:

5.10.1 产品出厂前,本卡的模入模出部分均已按照单极性0~10V调整好,一般情况下用户不需进行调节,如果用户改变了工作模式及范围,可按本节所述方法进行调整。调整时应开机预热20 分钟以上后进行,并准备一块4位半以上的数字万用表。

5.10.2 各电位器功能说明:

W1为输入放大器零点调节。

W2为A/D转换器满度调节。

W3为A/D转换器双极性偏移调节。

W4为D/A1零点调节。

W5为D/A1满度调节。

W6为D/A2零点调节。

W7为D/A2满度调节。

5.10.3 模入部分调整:

凡改变模入工作方式,如果采样结果偏差大于20mV以上的,需要对模入部分进行调整。

①零点调整:使任一通道与模拟地短接,并按实际需要设置好通道代码运行程序对该通道采样。用电压表测量OP-37 运放的第6 脚,调整W1使电压表读数小于100μV。

② A/D转换满度调整:在任一通道接入一接近正满度的电压信号,运行程序对该通道采样。调整W2使A/D 转换读数值等于或接近外信号电压。

③ A/D转换双极性偏移调整:在单极性方式时,W3可用于零点辅助调整。在双极性方式时,如果误差较大,可在外端口分别加上正负电压信号,调整W3使其对称。

5.10.4 模出部分调整:

凡改变模出部分的方式和量程后,如果输出结果误差较大,需要对模出部分进行调整。

①零点调整:在单极性方式时调整W4(D/A1)或W6(D/A2)使其偏差最小。

②满度调整:在零点调整正常情况下,如果满度偏差较大,可通过调整W5(D/A1)或W7(D/A2)使满度符合要求。

6.驱动程序简介∶

PC-6000 系列演示程序及驱动程序是为PC-6000 系列多功能工控采集板配制的工作在中西文Windows 95/ 98/ NT环境下的一组驱动程序以及使用该驱动程序组建的一个演示程序,可以方便地使用户在中西文 Windows 环境下检测硬件的工作状态以及帮助软件开发人员在常用的 C\C++, Visual Basic, Delphi, Borland C++ Builder, Borland Pascal for windows 等开发环境中使用 PC-6000 系列工控采集板进行数据采集和过程控制等工作.驱动程序是一个标准动态链接库 (DLL文件)。它的输出函数可以被其它应用程序在运行时直接调用。用户的应用程序可以用任何一种可以使用 DLL 链接库的编程工具来编写。每种板卡依据其自身功能的不同具有不同的输出函数和参数定义。

驱动程序输出函数定义∶

所列函数的说明格式为 VC++6.0环境下PC6000.Dll库函数的原函数格式,无论使用哪一种开发工具,务必请注意数据格式的匹配及函数的返回类型,本说明中所使用的数据类型定义如下:

short~ 16位带符号数

unsigned char~ 8位无符号数

模拟量输入部分:

* 函数: short APIENTRY AI6311Single(short nAdd,short nCha,short AIMode)

功能: 进行某一通道的模拟量数据采集。

参数: nAdd 基地址

nCha 通道号: 0 – 31(单端), 0 – 15(双端)

AIMode 输入方式: 0 -- 原码值

1 -- 0,10v

2 -- -5v,+5v

* 函数: void APIENTRY AI6311AllSingle(short nAdd,short AIMode,short *p)

功能: 单端输入方式下,全部32通道的模拟量数据采集。

参数: nAdd 基地址

AIMode 输入方式: 0 -- 原码值

1 -- 0,10v

2 -- -5v,+5v

p 指向32个通道的采集结果的起始地址

* 函数: void APIENTRY AI6311AllDouble(short nAdd,short AIMode,short *p)

功能: 双端输入方式下,全部16通道的模拟量数据采集。

参数: nAdd 基地址

AIMode 输入方式: 0 -- 原码值

1 -- 0,10v

2 -- -5v,+5v

p 指向16个通道的采集结果的起始地址

模拟量输出部分:

* 函数: void APIENTRY AO6311Single(short nAdd,short nCha,short nValue,short DAMode) 功能: 进行某一通道的模拟量数据输出操作。

参数: nAdd 基地址

nCha 通道号: 0 – 1

nValue 输出数据∶单位为毫伏(电压方式) 或微安(电流方式)。

DAMode 输出方式: 0 -- 原码值

1 -- 0,10v

2 -- 0,5v

3 -- -5,5v

4 -- -2.5,2.5v

5 -- 0,10mA

6 -- 4,20mA

返回: 无返回值。

数字量输入/输出部分∶

* 函数: unsigned char APIENTRY DI6311Bit(short nAdd,short nBit)

功能: 采集某一位数字量输入信号的状态。

参数: nAdd 基地址

nBit 通道号:0-7

* 函数: unsigned char APIENTRY DI6311All(short nAdd)

功能: 采集全部通道(8路)数字量输入信号的状态。

参数: nAdd 基地址

返回: 返回值为8个输入信号的状态

* 函数: void APIENTRY DO6311Bit(short nAdd,short nBit,unsigned char nState) 功能: 进行某一个通道的数字量数据输出操作。

参数: nAdd 基地址

nBit 通道号: 0-7

nState 1表示将输出高电平,0表示将输出低电平。

返回: 无返回值

* 函数: void APIENTRY DO6311All(short nAdd,unsigned char nState)

功能: 同时进行所有8个通道的数字量数据输出操作。

参数: nAdd 基地址

nState各位输出状态, nState的D0代表Bit0, D3代表Bit3。

返回: 无返回值

如有需要使用 Windows 系列及 LabVIEW 驱动程序的用户可向本公司索取, 请注明所使用的操作系统和开发软件。

7. 编程举例:

7.1 对通道1连续采样100次,程序启动和查询。本程序可用于A/D部分调校。

7.1.1BASIC语言:

10 CLS ;清屏

20 ADD=&H300 ;板基地址设为0300H

30 A=INP(ADD+2) ;清转换及中断标志

40 CH=0 ;对通道1采样

50 OUT(ADD+0),CH ;送通道代码

60 FOR T=0 TO 99 ;设采样次数

70 OUT (ADD+1),0 ;启动A/D,所送数值无关

80 IF INP(ADD+1)>=128 THEN 80 ;查询A/D转换状态

90 H=INP(ADD+1) ;转换结束,读高4位结果

100 L=INP(ADD+2) ;读低8位结果

110 V=(H×256+L)×10000/4096 ;将结果转换为十进制数据

120 PRINT V;“mV”;显示结果,用“mV”表示

130 NEXT T ;循环100次

140 END

注:如果是双极性信号,则110句改为:V=(H×256+L)×10000/4096-5000

7.1.2 C语言:

#include "stdio.h"

#include "dos.h"

#include "conio.h"

main()

{

int ch; /* 定义通道变量 */

float value[100]; /* 定义数组变量 */

int dl,dh,i,j,base; /* 定义过程变量 */

clrscr(); /* 清屏 */

base=0x300; /* 设板基地址=300H */

dl=inportb(base+2) /* 清转换及中断标志 */

printf("Input channle number:"); /* 输入通道号 */

scanf("%d",&ch);

outportb(base,ch); /* 送通道代码 */

for(j=0;j<100;j++){ /* 设采样次数 */

for(i=0;i<100;i++); /* 延时,常数由机型决定 */

outportb(base+1,0); /*启动A/D,所送数值无关*/

do{ /* 查询A/D转换状态 */

;

}while(inportb(base+1)>=128);

dh=inportb(base+1); /*转换结束,读高4位结果 */

dl=inportb(base+2); /* 读低8位结果 */

value[j]=(dh*256+dl)*10.0/4096.0-5.0; /* 将结果转换为电压值*/

}

for(j=0;j<100;j++) /* 显示结果 */

printf("%f ",value[j]);

}

7.2 循环采集A/D 32通道,程序启动和查询。

C语言程序:

#include "stdio.h"

#include "dos.h"

#include "conio.h"

main()

{

int ch; /* 定义通道变量 */

float value[32]; /* 定义数组变量 */

int dl,dh,i,base; /* 定义过程变量 */

clrscr(); /* 清屏 */

for(ch=0;ch<=31;ch++){ /* 定义循环通道数 */

base=0x300; /* 设板基地址=300H */

dl=inportb(base+2) /* 清转换及中断标志 */

outportb(base,ch); /* 送通道代码 */

for(i=0;i<100;i++); /* 延时,常数由机型决定*/

outportb(base+1,0); /* 启动A/D,所送数值无关*/ do{ /* 查询A/D转换状态 */

;

}while(inportb(base+1)>=128);

dh=inportb(base+1); /* 转换结束,读高4位结果 */ dl=inportb(base+2); /* 读低8位结果 */

value[ch]=(dh*256+dl)*10.0/4096.0-5.0; /* 转换结果*/

} /* 下一个通道 */

for(ch=0;ch<=31;ch++) /* 显示结果 */

printf("%f ",value[ch]);

}

7.3 对通道1外触发启动,程序查询取数,采样100组。

10 CLS ;清屏

20 ADD=&H280 ;设板基地址为0280H

30 A=INP(ADD+2) ;清转换及中断标志

40 CH=0 ;对通道1采样,

50 DIM A1(100) ;定义数组长度

60 FOR T=0 TO 99 ;定义循环次数

70 OUT (ADD+0),CH ;送通道代码

80 IF INP(ADD+1)<128 THEN 80 ;等待外触发信号

90 IF INP(ADD+1)>=128 THEN 90 ;等待转换结束

100 H=INP(ADD+1) ;取高4位结果

110 L=INP(ADD+2) ;取低8位结果

120 A1(T)=(H×256+L)×10000/4096 ;处理后存入数组

130 NEXT T ;循环

7.4读写数字量:

10 ADD=&H300 ;板基地址设为的0300H

20 DO=XX ;设数据输出为XX

30 OUT(ADD+3),DO ;写出并锁存

40 DI=INP(ADD+3) ;读入数字量状态

50 PRINT DI ;显示

60 END

7.5 使D/A1、D/A2分别输出0V;10V;3.333V;6.666V;2.000V;8.000V。D/A工作方式为单极性0~10V。本程序可用于D/A部分的调校。

10 CLS ;清屏

20 ADD=&H110 ;板基地址设为0110H

30 DAH=(ADD+4);设D/A1高、低字节

35 DAL=(ADD+5);端口地址

40 FOR DA=1 TO 2 ;2路D/A

50 FOR I=1 TO 6 ;设数据指针长度

60 READ A ;取高字节数据

70 OUT DAH,A ;送出

80 READ A ;取低字节数据

90 OUT DAL,A ;送出

100 READ B ;取显示用数据

110 A=INP(ADD+0) ;启动D/A转换,数据无关

120 PRINT "TEST D/A";DA;;

"OUT";B;"V" ;显示

130 IF INKEY $ =" " THEN 130 ;等待,按任一键继续

140 NEXT I ;循环送6组数据

150 DAH=DAH+2:DAL=DAL+2 ;设下一路D/A高、低字节

;端口地址

160 RESTORE ;恢复数据指针

170 NEXT DA ;循环送完2路D/A

180 DATA 0,0,0,255,240,10.000,

85,80,3.333,170,160,6.666,

51,48,2.000,204,192,8.000

190 END

7.6 在 Windows 95/98/NT 环境下,使用 MicroSoft Visual Basic 6.0 开发环境,采取调用驱动程序的输出函数的方法定时循环采集多个 A/D通道, 并对 D/A 及数字I/O进行操作。

注意: 在VB 6.0 中, 数据类型 Integer 为 16 位带符号整数;Byte为 8 位无符号整数。

首先创建一个窗口,名为 Form1。设置一个定时器,名为Timer1;一个Text1;一个Text3;一个Text2数组,Text2[]。

'模入部分

Private Declare Function AI6311Single Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nCha As Integer, ByVal _

AIMode As Integer) As Integer

Private Declare Sub AI6311AllSingle Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal AIMode As Integer, ByRef p _ As Integer)

Private Declare Sub AI6311AllDouble Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal AIMode As Integer, ByRef p _ As Integer)

'模出部分

Private Declare Sub AO6311Single Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nCha As Integer, ByVal nValue _

As Integer, ByVal DAMode As Integer) '数字量

Private Declare Function DI6311Bit Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nBit As Integer) As Byte Private Declare Function DI6311All Lib "pc6000.dll" (ByVal nAdd As Integer) As Byte

Private Declare Sub DO6311Bit Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nBit As Integer, ByVal nState As Byte) Private Declare Sub DO6311All Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nGroup As Byte)

Dim a(32) As Integer '数组元素个数应>=32

Private Sub Timer1_Timer()

Dim i as integer

'多通道采集32通道,0-31通道采集结果分别存放在a(0)-a(31)中

Call AI6311AllSingle(256, 1, a(0))

For i = 0 To 31

Text2(i) = a(i) '界面显示32通道数据

Next i

'单通道采集第0通道

Text1 = AI6311Single(256, 0, 1)

'D/A输出

For i = 0 To 1

Call AO6311Single(256, i, AoOutValue, 1)

Next i

If AoOutValue = 10000 Then

AoOutValue = 0

Else

AoOutValue = AoOutValue + 100 '改变 D/A 输出电压值

End If

'I/O输出

Call DO6311All(256, DoOutValue)

If DoOutValue = 0 Then

AoOutValue = 255

Else

AoOutValue = 0 '改变数字量输出状态.

End If

'I/O输入

Text3 = DI6311All(256) 'text3用于显示所有通道状态

End Sub

附A. 名词注释∶

1.单端输入方式∶

各路输入信号共用一个参考电位,即各路输入信号共地,这是最常用的接线方式。使用单端输入方式时,地线比较稳定,抗干扰能力较强,建议用户尽可能使用此种方式。

2.双端输入方式∶

各路输入信号各自使用自己的参考电位,即各路输入信号不共地。如果输入信号来自不同的信号源,而这些信号源的参考电位(地线)略有差异,可考虑使用这种接线方式。使用双端输入方式时,输入信号易受干扰,所以,应加强信号线的抗干扰处理,同时还应确保模拟地以及外接仪器机壳接地良好。而且特别注意的是,所有接入的信号,不论是高电位还是低电位,其电平相对于模拟地电位应不超过 +12V 及 -5V, 以避免电压过高造成器件损坏。3.单极性信号∶

输入信号相对于模拟地电位来讲,只偏向一侧,如输入电压为 0 ~ 10V.

4.双极性信号∶

输入信号相对于模拟地电位来讲,可高可低,如输入电压为–5V ~ +5V.

5. 码制:

模拟量信号转换为数字量后,形成一组由 0 开始的连续数字,每一个数字对应着一个特定的模拟量值, 这种对应关系称为编码方法或码制。依据输入信号的不同分为单极性原码与双极性偏移码。单极性输入信号对应着单极性原码,双极性信号对应着双极性偏移码.

6. 单极性原码∶

以 12 位A/D 为例, 输入单极性信号 0~10V。转换后得到 0 ~ 4095 的数字量,数字量 0 对应的模拟量为0V,数字量 4095 对应的模拟量为 10V,这种编码方法称为单极性原码,其数字量值与模拟电压值的对应关系可描述为:

模拟电压值=数码(12位)×10(V)/4096 ( V )

即:1LSB(1个数码位)=2.44mV

7. 双极性偏移码∶

以 12 位A/D 为例, 输入双极性信号 -5~+5V。转换后得到 0 ~ 4095 的数字量,数字量 0 对应的模拟量

为 -5V,数字量 4095 对应的模拟量为 +5V,这种编码方法称为双极性偏移码,其数字量值与模拟电压值的对应关系可描述为:

模拟电压值=数码(12位)×10(V)/4096-5 ( V )

即:1LSB(1个数码位)=2.44mV

此时12位数码的最高位(DB11)为符号位,此位为0表示负,1表示正。偏移码与补码仅在符号位上定义不同,如果反向运算,可以先求出补码再将符号位取反就可得到偏移码。

8. A/D转换速率∶

表明A/D转换芯片的工作速度。如对 BB774 来讲,完成一次转换所需要的时间是 10 微秒,则它的转换速率为100 KHz。

9. 通过率∶

指 A/D 采集卡对某一路信号连续采集时的最高采集速率。

10. 初始地址∶

使用板卡时,需要对卡上的一组寄存器进行操作,这组寄存器占用数个连续的地址,一般将其中最低的地址值定为此卡的初始地址,这个地址值需要使用卡上的拨码开关来设置。

附B. 产品清单及保修:

产品清单:

1.PC-6311D模入模出接口卡壹块。

2.37芯D型插头两套及40芯至37芯D型插头转换线壹套。

本产品自售出之日起两年内,凡用户遵守贮存、运输及使用要求,而产品质量低于技术指标的,凭保修单免费维修。因违反操作规定和要求而造成损坏的,需交纳器件和维修费。

相关文档