使 用 手 册
☐PCI总线AD采集板
☐32路12位 100KHz AD
☐工作模式:软件查询、定时器采集
☐2路12位DA
☐开关量:16DI/16DO
☐两路24位计数器
☐两路24位脉冲发生器
wwlab
2008/12
在开始使用前请仔细阅读下面说明
检查
打开包装请查验如下:
✧AC6613采集卡
✧手册及光盘。
✧DB37插头,40线电缆各一套。
安装
关掉PC机电源,将AC6613插入主机的任何一个PCI插槽中并将外部的输入、输出线连好。如果主机有多套卡,请每次只安装一个卡并记下PCI插槽的序号,小序号的为第一个卡。软件启动安装请查看第3章说明。
保修
本产品自售出之日起一年内,用户遵守储存、运输和使用要求,而产品质量不合要求,凭保修单免费维修。因违反操作规定和要求而造成损坏的,需缴纳器件费和维修费及相应的运输费用,如果板卡有明显烧毁、烧糊情况不予维修。如果板卡开箱测试有问题,可以免费维修(限购买板卡10天内)。
目录
一、AC6613说明 4
1.1 AC6613板简介 4
相关产品: 4
配套端子板 4
1.2 主要特点 、性能: 4
AD部分: 5
AD工作模式: 5
DA输出 5
开关量输入输出及计数器 6
软件支持: 7
其他 7
二、原理说明: 8
2.1简介: 8
2.2模拟输入及AD数据计算 8
模拟输入 8
AD输入校正 9
AD转换数据格式与计算 9
2.3 AD采样的连续采样模式 11
AD转换模式 11
定时器 12
2.4:开关量部分的原理: 12
2.5:计数器 13
2.6:冲输出原理 14
PWM方波输出 14
单次脉冲输出(SP模式,软件触发单稳态输出) 15
2.7:DA 16
三、安装与连接 18
3.1 安装 18
信号连接注意事项 18
3.2 连接器插座定义 18
P1定义: 19
P2定义: 20
开关量复合用脚 20
3.3 配套端子板 21
P6654转接板定义: 21
3.4 常用信号的连接、处理。 22
四、软件 24
4.1 软件安装与说明 24
软件说明 24
驱动安装 25
4.2 接口函数说明 26
函数简介 26
设备操作函数 27
AD操作函数-查询模式 27
AD操作函数-连续采样模式 28
DA操作函数 31
开关量操作函数 32
计数器操作函数 33
脉冲发生操作函数 34
EEPROM读写操作函数 35
4.3 VC程序编程说明 37
4.4 VB程序编程说明 38
4.5 Delphi程序编程说明 38
4.6 LabVIEW程序编程说明 39
五、附录 42
AC6613示意图 42
一、AC6613说明
1.1 AC6613板简介
AC6613是一款PCI总线12位采集模块,具有32路模拟输入、2路静态输出DA、开关量16路输入/16路输出、2路24位计数器及2路24位脉冲输出(计数器、脉冲输出引脚与开关量共用)。AD支持软件启动或定时器启动(连续采集)。采用PCI总线,支持即插即用。AC6613内置2K Byte FIFO,AD在定时器模式支持实时不间断采集。
相关产品:
⏹AC6610:12位查询 PCI总线采集卡。
⏹AC6613:12位查询AD DA PCI总线采集卡。
⏹MP411/MP411L:12位查询 USB采集模块。
⏹MP412:12位查询AD DA USB总线采集卡。
配套端子板
⏹ACS601 模拟输入、输出螺丝端子接线板,提供32路滤波、I/V变换电阻安装位置;DA输出连接。
⏹AC142 40路通用接线板(开关量连接应用)。
⏹P6654 PC档片转接卡,32路开关量转接DB37插座
⏹AC145A/AC145N 隔离16入/16出。AC145A OC输出共阳,AC145N 共地输出。
⏹AC140:隔离8入,8路继电器板。
⏹AC110 4路mV级小信号放大板。
1.2 主要特点 、性能:
AD部分:
⏹32路单端输入。输入电压:5伏/10伏/±5/±10伏,软件控制。
⏹AD转换器:12位AD,速度100KHz (10uS转换时间)。注:软件查询模式速度为10-30KHz / 连续采集模式为100KHz。
⏹通道输入阻抗:1兆欧姆。
⏹输入插座:DB37孔插座
⏹定时器模式:输入通道支持任意起始到任意结束通道的自动扫描。
⏹系统精度:±0.1% FSR。
⏹分辨率:12位。
⏹噪音(峰值):小于±1LSB(典型,1000个采样点)
AD工作模式:
⏹启动模式:软件、定时器。
⏹软件查询模式:对设置的任意一个通道进行一次采样
⏹连续采集模式模式:按照用户设置的AD定时器速度,对设置的通道(起始到结束通道)自动顺序、连续采样,采样数据顺序存放在计算机内部缓冲中,用户可以从缓冲中不断读入数据,直到用户软件停止AD采样。
⏹AD定时器:内部16位定时器,基准时钟10MHZ(0.1uS周期)。16位可编程定时器(范围:100-65535),可以按照100nS一步的精度设置AD转换周期。
DA输出
2路12位DA转换器。性能如下:
⏹12位DA,分辨率1LSB。
⏹每路输出可以单独软件设置为:0-5伏、0-10V或±5V。
⏹输出信号上升速率:大于0.5V/uS。
⏹输出电流:最大±5毫安。
⏹精度:0.3% FSR。
⏹零点误差:5V档:±10毫伏/10V档:±20毫伏 / ±10V档:±50毫伏。
⏹输出上电为0。
开关量输入输出及计数器
⏹16路输入通道,性能:
1.输入电压:TTL电平,兼容3伏电平。
2.高电平:大于2伏。
3.低电平:小于0.8伏。
4.输入电压范围:0-5伏
5.输入端口内部通过10K电阻上拉到3伏。因此悬空时,输入=1。
⏹16路输出通道,性能:
1.输出电压:5伏电平,兼容TTL电平。
2.高电平:大于2.5伏。
3.低电平:小于0.5伏。
4.最大输出电流:10毫安/路。
5.开关量输出上电自动清零。
⏹二路24位计数器:
二路24位减法计数器通道0及1号(CNT0、CNT1),范围0-1677213。计数器同时具有测量任意个脉冲间的时间间隔功能。
1.输入电平:与开关量输入相同。
2.最大计数频率:10MHz。
3.计数器输入时钟上升边沿有效。
4.硬件锁存计数器溢出标志(计数器归零),并可以软件读出。
5.可以测量N个脉冲上升边沿之间的时间间隔(N=2-1677213)。可以快速测量信号的频率。注1
6.计数器输入通道0号与开关量输入DI14共用。
7.计数器输入通道1号与开关量输入DI15共用。
注:1 对于慢速信号,采用常规的频率测量方法,需要至少100-1000个脉冲计数,而AC6613只要设置N=2,可以准确测量2个脉冲边沿间的时间间隔,即:等效一个脉冲的时间宽度,从而计算出信号频率。
⏹2路24位脉冲输出
1.基准时钟:10MHz。
2.24位计时器。
3.支持PWM方波(占空比可编程方波)及单次正脉冲输出。Pwm模式,定时器为双24位,一路决定输出脉冲周期、一路决定脉冲宽度。
4.脉冲输出与开关量输出6、7号共用(用户可以软件选择输出通道:开关量输出或脉冲输出)。
5.输出提醒与开关量输出相同。
软件支持:
1.操作系统支持win98/win2000/winXP
2.开发包:驱动程序、DLL库函数
3.例子:MFC、VB
4.测试程序(MFC)
5.LABVIEW驱动模块。
位置:光盘的\\PCI\\AC6613目录。
其他
⏹总线:符合5伏 PCI标准
⏹内部板卡尺寸:12.5cm x 9cm (宽x高)
二、原理说明:
2.1简介:
AC6613采用PCI接口,支持即插即用,用户不需要跳线设置。AD在定时器模式时,采用FIFO缓冲及硬件中断,支持100KHz全速不间断实时采集。同时AC6613具有2路静态输出DA、开关量16路输入/16路输出、2路24位计数器及2路24位脉冲输出(计数器、脉冲输出引脚与开关量共用)。
原理框图:
模拟输入
16DI 数据、地址
总线
16DO
DA输出
2.2模拟输入及AD数据计算
模拟输入
AC6613具有32路模拟输入,输入阻抗1兆欧姆。输入具有过压保护,可以承受瞬时±20伏的电压。
AD输入有4档量程,由软件控制(详细见编程部分说明,分别对应增益选择:0、1、2 、3号)。输入范围:
单极性:0-5伏
单极性:0-10伏
双极性:-5伏 - +5伏
双极性:-10伏 - +10伏
注:单极性指输入电压相对地线为大于0的信号。双极性指输入电压相对地线为±输入的信号。
在定时器模式,AC6613的32路模拟输入,用户可以任意设置起始通道(STCH)及停止通道(ENDCH)。停止通道的数值必须大于或等于起始通道数值。
以上的功能:
在查询模式由AC6613_AD()函数中的参数控制,如下:
1.ch:控制AD采样的通道号(=0-31)
2.gain:=0、1、2、3,对应选择输入范围为:0-5伏、0-10伏、±5伏、±10伏。
在连续采样模式由AC6613_TAD()函数设置。
1.stch:控制AD采样的起始通道号(=0-31)
2.endch:控制AD采样的结束通道号(=0-31)
3.gain:=0-3。对应选择输入范围为:0-5伏、0-10伏、±5伏、±10伏
AD输入校正
AD采用自动软件校正,能够有效的减小温度偏移带来的误差。用户在开始采样工作之前必须调用一次AC6613_CAL()函数,对AD进行一次校正操作,否则采样误差将极大!如果连续工作,建议每60分钟(在AD不采样时)进行一次CAL()操作,这样能够有效的自动消除温度变化带来的误差。
AD转换数据格式与计算
在查询模式,函数直接返回AD采样数据.
在连续采样模式,AD采样的数据按从stch开始到endch结束的通道扫描顺序,循环存放,如下:
stch, stch+1 ,…., endch…….stch,..,endch,……结束
AC6613函数在将数据发送给客户时已经按照顺序将数据存放到客户指定的数组中了(32位长整形,其中低16位为AD采样结果)。
AC6613采用FIFO接口,容量为2K byte,具有空(EF)、半满(HF)、溢出(FF)标志,标志为“0”时有效。采样数据不断的写入FIFO中,AC6613定时产生一个中断,驱动程序接受到中断后,自动读入FIFO数据并暂存在PC机内存缓冲中,等待用户读走数据。 AC6613的驱动程序在内存中提供了大于2秒的缓冲时间,如果用户没有及时读出数据,FIFO将溢出,数据队列顺序会打乱(新进入的数据将冲掉最先写入的数据)。如果出现FIFO溢出,只能靠提高计算机速度或降低采样速度或减少用户的其他程序占用时间来弥补。
数据格式:16位读出数据(D15-D0)定义如下:
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 |
0 | 0 | 0 | 0 | AD11 | AD10 | AD9 | AD8 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
AD7 | AD6 | AD5 | AD4 | AD3 | Ad2 | AD1 | AD0 |
-AD11-AD0:12位采样数据,(MSB - LSB)。
12位转换数据范围为0-4095,对应电压计算:
设:data为12位转换结果 。
0-5伏:
电压=data*5000.0/4095.0 (mV)
0-10伏:
电压=data*10000.0/4095.0 (mV)
±5伏:
电压=(data-2048)*5000.0/2048.0 (mV)
±10伏:
电压=(data-2048)*10000.0/2048.0 (mV)
2.3 AD采样的连续采样模式
AC6613连续采样的启动模式为:软件启动。采样模式由AC6613_AD()函数控制。
AD转换模式
AC6613由于采用一个AD转换器+输入转换开关的工作模式,因此采集是工作在对输入通道进行顺序扫描、分时采样的模式,所有通道的转换速度之和为AD的采样速度。原理:当一个定时器脉冲到来时,AD开始一次转换,采样通道为当前通道,并在启动AD后自动将输入通道设置为下一个转换通道。通道转换顺序为:从第N通道开始顺序转换到第M通道结束,然后又重新从N到M通道,如此循环直到用户结束转换,(N、M定义同上)。转换数据顺序写入FIFO中。此模式下各个通道之间的时间间隔相等,大小为转换时钟的周期。
每个通道的采样速度F如下:
F=定时器频率/转换通道的个数
相同通道号之间的采样数据的时间间隔:
T=转换通道的个数 * 定时器设定的时间周期
图示(用户设置转换由通道1到3号):
启动时钟
通道号 1 2 3 1 2 3
AD数据 D1 D2 D3 D1 D2 D3
tad
1.D1 D2 D3为通道1、2、3的AD转换结果。
2.tad:用户设置的定时器时间,tad=tdata*0.1uS
定时器
AC6613的AD转换时钟启动由板上时钟控制。
定时器输入基准时钟为10MHz,周期为0.1uS)。定时器数据由AC6613_AD()函数的tdata变量设置。定时器为减法计数器,当由用户设置数值tdata减到1时,发出启动脉冲并自动将定时器数据重新设置为tdata。
16位数据取值(tdata):1-65535,对应:
转换周期 T=0.1*N(uS),N:设置的16位定时器数据tdata。
AD的总转换频率 F=10000/tdata (KHz)
最小转换周期为10uS(tdata=100,100KHz),由此转换周期为:10uS ~ 6553uS。
小结:连续采样模式
1.转换触发启动:软件。
2.采样通道控制:起始通道/结束通道 (stch/endch)。
3.定时器设置:tdata控制转换速度
2.4:开关量部分的原理:
AC6613开关量提供16个输入及16个输出接口。所有的输出口在上电初始时为“0”或低电平。输入接口内部上拉到+电源,如果没有外部输入,读入数据为1。
16位输入DI0-DI15由函数AC6613_DI()读入。
16位输出DO0-DO15由函数AC6613_DO()设置。
输入或输出的32位数据的低16位(D15-D0)有效,分别对应输入或输出通道15-0号。
AC6613的DIO兼容5伏TTL电平,输入可以承受8伏电压,输出高电平通常为2.8伏-5伏(5伏TTL逻辑通常大于2.3伏,就认为为逻辑1)。
开关量输入DI14 DI15 分别与计数器0、计数器1等特殊输入共用,不用为特殊输入时,可以作为正常开关量输入使用。
2.5:计数器
AC6613具有2路24位计数器cnt0、cnt1。 工作模式:减法计数模式,同时支持测频或N个脉冲上升边沿间的间隔时间测量。计数器0及1号输入时钟与开关量输入DI14、DI15共用。
当用户利用函数AC6613_CNT_Run设置计数器初始化数值、工作模式后,溢出标志位自动清零并开始减法计数,同时内部24位定时器开始清零并在第一个有效输入脉冲边沿到来时开始加法计数(计数时钟为10MHz)。用户可以通过调用AC6613_CNT_Read()函数,随时读入24位计数器数值cdata及定时器数值tdata,如果计数器溢出(从0减到FFFFFFH),返回数值=1,硬件会自动保留溢出状态及此时的定时器数据直到用户重新设置计数器。
因此用户可以在计数的同时,测量信号的频率或脉冲间隔。例如:如果初始化计数器数值=2,那末定时器的时间表示两个上升脉冲之间的宽度或一个波形的宽度,通过宽度,用户可以方便的计算出信号的频率,当然,用户也可以将计数器初始化数值设置为如何大于2的24位数据,来测量N个边沿之间的时间。但需要注意,定时器的最大定时长度为1600mS,数值=FFFFFFH(即:16777215),如果读出数据等于FFFFFFH,表示定时器已经超量程。
脉冲宽度=tdata*0.1uS tdata:定时器数值
计数器的波形示意图:
TGate ……
CLK ……
OVER
N 10 9 8 7 1 0 FFFFFFH
定时器测量完毕
设置计数器初始化数据=10
Tgate=1时,定时器工作;=0 完毕
注:
1.TGate: 定时器开始工作标志
2.CLK: 计数时钟或脉冲输入
3.OVER: 溢出标志
4.N: 计数器数值
2.6:冲输出原理
AC6613具有2路24位脉冲输出发生器tout0、tout1,时钟频率为10MHz,分辨率100nS。可以精确发生PWM方波及单次正脉冲,脉冲周期为200nS – 1600mS。PWM模式可以输出方波频率信号或作为调宽控制信号。
脉冲调到0、1号输出与开关量输出DO14、DO15共用。当用户启动脉冲输出时,对应通道的开关量输出自动转换到相应通道的脉冲输出;当用户利用AC6613_Pend结束输出操作时,对应的输出口自动转换到相应开关量输出通道。
工作模式:
模式0:PWM模式。宽度可编程方波输出。用户可以定义输出方波的周期及占空比。
模式1:SP模式。单次正脉冲输出。
PWM方波输出
用户通过AC6613_PRUN(HANDLE hDevice,long pch, long pmode, long pdata0, long pdata1)函数设置模式pmode=0,并初始化数据pdata0、pdata1后,板卡开始连续输出方波。方波的周期由pdata0控制,方波的高电平宽度由pdata1控制。Pdata0为24位数据,范围:2 – FFFFFFH,控制方波的周期,周期=pdata0 * 0.1uS。Pdata1 24位数据,范围:1 – FFFFFFH,控制方波的正脉冲宽度,宽度=pdata1 * 0.1uS,pdata1必须小于或等于pdata0。例:pdata0=100,pdata1=30则输出一个周期=10uS,正脉冲宽度=3uS的方波。
如果用户中途需要改变输出频率,可以通过函数:AC6613_PsetData()完成。脉冲输出将在下一个输出开始时装入用户设置的数据。
提示:
1.方波输出的频率 = 10MHz / pdata0。
2.如果pdata1/pdata0=1/2则输出标准方波。
AC6613的方波输出频率范围为:5MHz – 0.6Hz。
输出示意图:
输出
波形
宽度=pdata1*0.1uS
重复周期=pdata0*0.1uS
PWM输出可以应用于:
1.方波输出。
2.灯光或电机控制,通过输出固定频率的信号(pdata0固定),并设置占空比(调节pdata1)来控制亮度或转速。
3.电压信号的远程传输,因为数字信号通过隔离或差分发送器(RS485或422发送器)可以传输很远,可以通过固定周期而调节脉冲的宽度来表示电压信号的幅度,最大分辨率可以到24位。
单次脉冲输出(SP模式,软件触发单稳态输出)
用户通过AC6613_PSRun(HANDLE hDevice,long pch, long pmode, long pdata0, long pdata1)函数设置模式pmode=1,在内部时钟(频率为10MHz)的第一个上升边沿输出由0变为1,直到pdata0个脉冲后,输出变为0。Pdata0为用户设置的24位数据,范围1-FFFFFFH。输出脉冲的时间宽度为:pdata0*0.1uS。用户可以以100nS为单位设置输出脉冲的宽度,输出脉冲宽度范围:100nS – 1.6S。pdata1在sp模式中无效。用户可以通过AC6613_PState(HANDLE hDevice, long pch)函数的返回值判断输出是否结束,返回0表示输出结束。
输出脉冲
内部10MHz时钟
N=pdata N=0
W
W=pdata * 0.1 (uS)
注:N:内部计数器数值。
单次输出可以应用于:
1.控制电磁阀门、快门的一次性开启时间。
2.输出单脉冲。
3.输出触发信号。
2.7:DA
AC6613具有两路静态DA转换器,可以通过函数AC6613_DA_Mode设置输出范围:5/10/±5伏。
模拟输出部分原理示意:
DA输出信号到缓冲放大器,同时将DA输出的信号变换为5、10伏、±5伏信号。由于运算放大器输出无法驱动电容、电感负载,因此应用时如果驱动类似负载,请在输出与被驱动设备中间串接一个100欧姆到500欧姆的电阻。DA输出为静态低速信号,适合作为控制信号,不适合输出波形信号。
电压计算:
0-5伏:输出电压=data*5000/4095.0 (mV)
data(范围0-4095)为12位DA数据。
0-10伏:输出电压=data*10000/4095.0 (mV)
data(范围0-4095)为12位DA数据。
±5伏:输出电压=(data-2048)*5000/2048.0 (mV)
data(范围0-4095)为12位DA数据。
DA输出通过函数AC6613_DA()设置。
三、安装与连接
3.1 安装
用户必须完全关闭计算机后才能安装或取出AC6613卡。同时应该注意:绝对不能带电插拔AC6613卡及外部接口!在PCI插槽旁边标记了插槽地序号,如果插入多个AC6613,序号最小的是第一个AC6613。通常最多只支持4个AC6613同时工作,如果更多,每个卡的采样速度将降低!
信号连接注意事项
⏹模拟输入:
1.输入连接电缆必须用屏蔽电缆,电缆的屏蔽外层最好只在一端连接到地线上。
2.模拟信号的地线应该连接到前端的模拟输出的地线上,不能与数字地线混合。如果需要混合数字、模拟地线,可以将数字地线连接到前端的电源地线上。
3.如果前端信号干扰较大,如电力信号采集应用时,最好将PC机的外壳与前端的地线单独连接。这样可以避免干扰、高压烧毁AC6613。
4.对于高精度采样,要求前端设备输出有尽量低的输出阻抗及电流驱动能力。
5.前端输出缓冲放大器应该具有高转换速度及带宽。
⏹开关量:
1.开关量输入电平不能低于-0.3V 或高于+5V。
2.输出不要对地线、电源短路。
3.输出如果需要驱动大功率设备,为防止干扰应该选用AC145端子板,将输出与设备隔离。
3.2 连接器插座定义
AC6613有二个电缆连接器:P1、P2。
●P1:37脚DB37插座对应32路模拟输入、DA输出。
●P2:40脚扁平电缆插座对应32路开关量、脉冲计数、脉冲输出。
P1定义:
说明:
❑AIN0-AIN31对应32路单端模拟输入通道0-31号。
❑脚17模拟输入AD的地线。
❑脚36:DA输出地线。
❑脚18,19 DAOUT0 DAOUT1对应DA输出0,1号通道。
P2定义:
说明:
❑DI0-DI15对应16路开关量输入0-15号。
❑DO0-DO15对应16路开关量输出0-15号。
❑脚9、10、19、20、29、30、39、40地线。
❑DI14:同时作为计数器通道0的计数时钟输入。不用时为DI14。
❑DI15:同时作为计数器通道1的计数时钟输入。不用时为DI15。
❑DO14:同时作为脉冲通道0输出。不用时为DO14。
❑DO15:同时作为脉冲通道1输出。不用时为DO15。
开关量复合用脚
脉冲功能输入、输出交与开关量的输入、输出共用连接,因此如果使用相应的脉冲计数或脉冲输出,对应占用的引脚不能做为开关量使用。
⏹计数器
计数器输入与开关量输入对应管脚:
通道 | 时钟输入 |
0 | DI14 |
1 | DI15 |
脉冲输出与开关量输出对应管脚:
通道 | 脉冲输出 |
0 | DO14 |
1 | DO15 |
AC6613可以配接如下端子板:
⏹ACS601 模拟输入、输出螺丝端子接线板,提供32路滤波、I/V变换电阻安装位置;DA输出连接。
⏹AC142 40路通用接线板(开关量连接应用)。
⏹P6654 PC档片转接卡,32路开关量转接DB37插座
⏹AC145N:隔离16入/16出端子板。输入电压0-24伏/输出:共阴输出,驱动电流100毫安,可以直接输出共地电压。需要配接外部电源,输出电压=外部电源电压。
⏹AC140:隔离8入/8路继电器端子板。输入电压0-24伏。输出:8路继电器,12伏供电,触点电流3安。
⏹AC110 4路mV级小信号放大板。
P6654转接板定义:
DI0-DI15对应AC6613的DI0-DI15
DI16-DI31对应AC6613的DO0-DO15
IGNDA IGNDB IGNDC IGNDD 对应地线。
DB37插座为针座。
3.4 常用信号的连接、处理。
⏹加入隔离电容采集交流信号
⏹利用开关量输出驱动继电器
四、软件
本章介绍驱动的安装、动态链接库函数使用方法以及针对AC6613的软件开发指导。请用户在编程前,仔细阅读本手册,了解相关信息。
由于软件可能不断更新,请用户查看光盘中的提示。测试软件及其他软件的说明见光盘目录:\\PCI\\AC6613
4.1 软件安装与说明
软件说明
AC6613附带光盘中,提供如下内容:
1.说明书。
2.驱动程序,支持win98/win2000/winXP操作系统。
3.Visaul C++、MFC、Visaul Basic、Labview、Delphi编程实例。
4.AC6613测试程序。
注:由于win98、winNT微软已经不提供支持,不建议使用。AC6613板卡的驱动不支持winNT。
☐在光盘的\\PCI\\AC6613\\DRIVER目录中包含:AC6613.inf、 AC6613.sys 、AC6613.dll、AC6613.LIB、AC6613.h、AC6613.BAS 几个文件。
✧AC6613.inf 驱动安装文件。
✧AC6613.sys 驱动程序。
✧AC6613.dll 动态链接库。
✧AC6613.LIB MS VC的库文件。
✧AC6613.h C的头文件。
✧AC6613.BAS VB的模块文件
☐在光盘的\\PCI\\AC6613\\MFC目录中包含:
✧MFC的编程例子
✧编程需要的include、lib文件(AC6613.h AC6613.LIB)。
☐在光盘的\\PCI\\AC6613\\VB目录中包含:
✧VB的编程例子
✧VB编程需要的声明模块程序AC6613.bas。
☐在光盘的\\PCI\\AC6612\\Delphi目录中包含:
✧Delphi的编程例子
☐在光盘的\\PCI\\AC6612\\Labview目录中包含:
✧Labview的编程例子
☐TS6621.EXE:测试程序。
驱动安装
安装方法:
1.将AC6613插入一个PCI插槽,如果有多个AC6613,请每一次安装一个AC6613。PCI插槽序号最低的卡的设备号为“0”,依次类推设备号为“1、2”。因为速度的原因,不建议同时在一台PC上安装多片AC6613。
2.Windows将会显示找到新硬件,可按找到新硬件向导进行下一步
3.选择手动安装或自己搜索适用我的设备的驱动程序,下一步;
4.选择驱动所在目录,进行安装。(目录:\\PCI\\AC6613\\driver)
5.按找到新硬件向导的提示进行下一步;
6.Windows将显示完成添加/删除硬件向导,单击完成即可完成安装过程。
7.完成后如果安装第二个AC6613,插入第二块AC6613模块,重复上述安装过程。
安装后,程序自动将AC6613.dll动态链接库程序拷贝到windows系统的system32目录中,用户也可以自己将DLL拷贝到当前工作目录中。
驱动安装完毕后在\控制面板\系统\设备管理中\多功能卡项目中可以找到AC6613卡,察看属性-〉资源,如果出现AC6613的IO地址,表明驱动安装正确。
1.安装完毕后将在设备管理器中出现一个多功能卡项目,如下图。
2.如果需要更新设备驱动,请在硬件设备管理目录下选择AC6613卡 -〉按鼠标右键选择属性 –〉选择驱动程序 –〉选择重新安装驱动程序。
3.当Visaul C++/Visaul Basic例程从CD-ROM复制到硬盘时,属性仍将保持为只读属性 ,这将影响用户调试程序。请将属性改为文档属性,这样就可以进行正常的编译、调试工作了。
4.2 接口函数说明
本卡以DLL-动态链接库的方式封装了用户在win98/win2000/winXP环境下编程需要的函数。动态链接库可以被windows环境下的多数编程语言调用,用户只要正确使用调用格式就能正确调用函数。本手册只提供了VC、VB的调用例子,有关其他语言调用的方法,用户可以参考其他书籍或直接在网上查找。
函数简介
函数分为:
1.设备操作函数。用于初始化打开一个有效设备并获得操作句柄;关闭一个设备。
2.查询模式AD函数。查询模式控制采集及校正。
3.连续采样AD函数。连续采样控制采集及校正。
4.开关量函数:控制开关量输入、输出。
5.计数器函数:操作计数器启动、读数。
6.脉冲函数:控制脉冲输出启动、查询、关闭。
7.DA函数:控制DA模式及输出。
8.EEPROM函数:用户可以在硬件的内部“非易失存储器”中记录32byte的数据,并且数据不会因为断电丢失。
AC6613通过不同的句柄来区分多个AC6613或其他设备,应用AC6613_OpenDevice可以得到一个唯一的句柄。
设备操作函数
❑打开一个AC6613设备
函数:HANDLE AC6613_OpenDevice(long dev_num)
参数:
✧dev_num:入口参数,AC6613设备号,=0、1、2….,表示第一个、第二个AC6613模块。设备号的定义参考驱动安装部分。
✧函数返回值:卡的操作句柄。
注:VC中如果句柄不等于INVALID_HANDLE_VALUE,表示正确。VB中如果句柄不等于&HFFFFFFFF,正确。
❑关闭一个AC6613设备
函数:long AC6613_CloseDevice(HANDLE hDevice)
功能:关闭以hDevice打开的AC6613卡。
参数:
✧hDevice:入口参数,卡的操作句柄。
✧函数返回数值:0:成功 / -1:失败。
AD操作函数-查询模式
注:在连续采样过程中不能进行查询模式AD转换
❑AD校正操作。
功能:启动AD自动校正操作。在开机时,至少要进行一次此操作。
函数:long AC6613_CAL(HANDLE hDevice)
✧hDevice:入口参数,卡的操作句柄。
✧函数返回:出口参数:=0操作成功/其他失败。
在上电后第一次采样之前必须调用一次cal操作,否则采样误差极大,长时间工作后,请调用一次AD校正操作。
❑对AD一个通道采样
函数:long AC6613_AD(HANDLE hDevice,long channel,long gain)
功能:对通道号为channel的通道采样,并且设置输入范围为gain。
参数:
✧hDevice:入口参数,卡的操作句柄。
✧channel:入口参数,=0-15对应AD输入通道0-15号
✧gain:入口参数,=0、1、2、3对应设置AD输入范围:5伏/10伏/±5/±10伏。
✧函数返回数值:12位采样数据,范围0-4095。
转换电压计算:
AD输入可以软件选择三个量程,为:5/10/±5/±10伏。对应电压转换为:
0-5伏: 电压=data * 5000 / 4095.0 (mV)
data:12位采样数据(范围:0-4095)。
0-10伏: 电压=data * 10000 / 4095.0 (mV)
data:12位采样数据(范围:0-4095)。
±5伏: 电压=(data-2048) * 5000 / 2048.0 (mV)
data:12位采样数据(范围:0-4095)。
±10伏: 电压=(data-2048) * 10000 / 2048.0 (mV)
data:12位采样数据(范围:0-4095)。
AD操作函数-连续采样模式
连续采样模式总共包含以下函数:
函数 | 功能 |
AC6613_CAL() | 校正操作 |
AC6613_TAD() | 启动AD采样,设置采样参数 |
AC6613_TAD_Poll() | 查询已经得到的采样数据长度 |
AC6613_TAD_Read() | 读入数据(长度必须小于已经得到的采样数据长度) |
AC6613_TAD_Stop() | 停止AD连续采样 |
AC6613采样支持连续采样,用户利用AC6613_TAD()设置参数并启动转换后,利用AC6613_TAD_Poll()函数查询已经得到的采样数据长度,同时利用AC6613_TAD_ReadAD()函数不断回读采样数据直到完成采样任务,任务结束后调用AC6613_TAD_Stop()关闭内部采样过程及停止AC6613连续采样功能。
❑AD校正操作。
功能:启动AD自动校正操作。在开机时,至少要进行一次此操作。
函数:long AC6613_CAL(HANDLE hDevice)
✧hDevice:入口参数,卡的操作句柄。
✧函数返回:出口参数:=0操作成功/其他失败。
在上电后第一次采样之前必须调用一次cal操作,否则采样误差极大,长时间工作后,请调用一次AD校正操作。
❑AC6613_TAD()设置采样参数并启动AD采样
功能:设置所有与采样相关的参数并启动采样过程。
函数:long AC6613_TAD (HANDLE hDevice,
long stch,long endch,long gain,
long tdata )
✧hDevice:入口参数,卡的操作句柄。
✧stch:入口参数,=0-31设置采样的起始通道号码。
✧endch:入口参数,=0-31设置采样的停止通道号码。
✧gain:设置AD的输入量程。=0、1、2、3对应选择所有的输入范围为:0-5伏、0-10伏、±5伏、±10伏。
✧tdata:设置采样频率(100~65535)。采样频率=10000/tdata(KHz)
✧函数返回:出口参数:=0操作成功/其他失败。
❑AC6613_TAD_Poll()
❑功能:查询AD已经转换完毕的数据长度。
函数:AC6613_TAD_Poll(HANDLE hDevice)
✧hDevice:入口参数,卡的操作句柄。
✧函数返回:出口参数:小于0,表示AD缓冲溢出。>=0,表示内部缓冲中可以读出数据的长度。
❑AC6613_TAD_ReadAD()回读采样数据
功能:读入采样数据。采样数据的排列按用户设置的起始与停止通道顺序循环排列,例如:起始通道=0,结束通道=2,读出数据排列按如下顺序:
ch0 ch1 ch2 ch0 ch1 ch2 …….ch0 ch1 ch2
详细的说明请参考第二章说明。
用户在编程时,最好将函数放置在定时器中,每隔一段时间进行一次读入操作,定时器间隔最好小于100毫秒。
函数:AC6613_TAD_Read(HANDLE hDevice, long rdlen, long *addata)
✧hDevice:入口参数,卡的操作句柄。
✧rdlen:用户设置的回读数据长度。(注意:长度不能大于利用AC6613_TAD_POLL()函数返回的长度,同时长度不能大于512K)
✧*data:指向存储回读数据数组的指针,要求数组容量大于rdlen。用户获取数据后,必须在下次调用前将数据存储到另外的数组或硬盘中,以免下次调用覆盖了以前的数据。
✧函数返回:如果小于0表示AC6613的硬件或软件缓冲溢出错误(此时以后的采样点均无效)。其他表示用户实际读入数据的长度,请注意,函数每次返回的读入长度不定,但最大为512K。
❑AC6613_TAD_Stop停止采样
功能:强行停止采样过程并复位硬件采样电路。用于用户已经完成本次采样任务。
函数:long AC6613_TAD_Stop(HANDLE hDevice)
✧hDevice:入口参数,卡的操作句柄。
✧函数返回:=0表示操作有效。
附注:AD采样数值到电压的转换。32位数据data的低16位有效。
转换电压计算:
AD输入可以软件选择三个量程,为:5/10/±5/±10伏。对应电压转换为:
0-5伏: 电压=data * 5000 / 4095.0 (mV)
data:12位采样数据(范围:0-4095)。
0-10伏: 电压=data * 10000 / 4095.0 (mV)
data:12位采样数据(范围:0-4095)。
±5伏: 电压=(data-2048) * 5000 / 2048.0 (mV)
data:12位采样数据(范围:0-4095)。
±10伏: 电压=(data-2048) * 10000 / 2048.0 (mV)
data:12位采样数据(范围:0-4095)。
连续采样模式操作操作
主程序
1.AC6613_CAL()
2.利用AC6613_TAD()启动AD
3.启动定时器
定时器:
1.利用AC6613_TAD_Poll()查询缓冲中的数据长度,如果长度小于希望读出长度,跳转到4。
2.在定时器中读出数据到data[]数组,长度为rdlen,并将数据data存放在用户处理内存中
3.是否结束采样,是:AC6613_TAD_Stop 停止AD并停止定时器
4.等待进入下次定时器操作
DA操作函数
AC6613有2个12位DA转换器。说明见第二章:2.7:DA部分。
DA操作:在板卡初始化时,用户需要首先调用AC6613_DA_Mode函数设置两个DA输出通道的输出范围,然后调用AC6613_DA函数设置输出电压。由于DA输出上电自动清零,因此设置完输出范围后请立即应用AC6613_DA函数将输出设置为电压“0”输出(单极性设置数据=0,双极性设置数据=2048)。
DA的电压计算:
单极性模式,输出0-5伏(dag=0):
电压=(data)*5000.0/4095.0 (mV)
单极性模式,输出0-10伏(dag=1):
电压=(data)*10000.0/4095.0 (mV)
双极性模式,输出±5伏(dag=2):
电压=(data-2048)*5000.0/2048.0 (mV)
注:
1.data:12位DA数据
2.dag:(0、1、2)设置的对应DA通道的输出模式。
❑AC6613_DA_Data设置输出数据
功能:设置0或1通道的输出数据。
函数:long AC6613_DA(HANDLE hDevice,long dach,long dadata)
✧hDevice:人口参数,卡的操作句柄。
✧dach=0、1选择设置DA通道0、1号通道。
✧dadata=0-4095控制或设置对应通道的电压。
✧返回:0成功,-1:失败
❑AC6613_DA_Mode设置DA输出电压范围
功能:设置对应DA通道的输出电压范围。
函数:long AC6613_DA_Mode(HANDLE hDevice,long gs0,long gs1)
✧hDevice:人口参数,卡的操作句柄。
✧dag0、dag1:分别对应选择输出通道0、1号的输出范围。gs=0
输出为0-5伏/ =1:设置输出为0-10伏 / =2:设置输出为±5伏。
✧返回:0成功,-1:失败
开关量操作函数
❑开关量输入
功能:读入16位开关量输入。
函数:long AC6613_DI(HANDLE hDevice)
✧hDevice:入口参数,卡的操作句柄。
✧函数返回:出口参数,返回读入的数据。低16位数据(D15-D0)对应输入端口15-0号。
❑开关量输出
功能:设置16位输出数据。
函数:long AC6613_DO(HANDLE hDevice,long DO_Data)
✧hDevice:入口参数,卡的操作句柄。
✧DO_Data:入口函数,输出的数据。数据的低16位有效。16位数据(D15-D0)分别对应端口的16个IO输出口15-0号
✧函数返回:出口参数,=0操作成功,其他失败。
注:关于开关量的位操作
⏹输入:如果需要判断16位输入的某一个位的状态,可以利用“与”逻辑操作完成。例:判断第DI7位的状态,DI7对应二进制0000 0000 1000 0000(第7位=1) 即:16进制0080H,只需将读入数据didata进行以下操作:
VC: long I;
I=didata & 0x0080;
VB: dim I as long
I=didata AND &H0080
判断如果I=0,表示DI7=0,否则为1。
⏹输出操作:如果希望对16位输出端口的某一个输出置位,可以通过与逻辑操作置0,或逻辑操作置1。例:输出数据存放在变量I中。
✧输出DO7置0操作:同样第7位的二进制码=1111 1111 0111 1111(第7位=0),对应16进制码FF7FH,输出数据dodata:
VC: dodata=I & 0xff7f;
VB: dodata=I AND &Hff7F
✧输出DO7置1操作:同样第7位的二进制码=0000 0000 1000 0000(第7位=1),对应16进制码00800,输出数据dodata:
VC: dodata=I | 0x0080;
VB: dodata=I OR &H0080
计数器操作函数
AC6613有2个24位计数器,通道0、1。说明见:”2.5:计数器”部分。
❑启动并初始化计数器
功能:复位、设置模式、设置计数器数据并启动计数器开始工作。
函数:long AC6613_CNT_Run (HANDLE hDevice,long cntch, long cdata)
✧hDevice:入口参数,卡的操作句柄。
✧cntch: =0-1:选择通道0-1号。
✧cdata:24位计数器初始化数据,=0-FFFFFFH。
✧函数返回:0正常/其它失败
❑读出计数器数值及状态
功能:读出24位计数器数据、判断计数器溢出、测频或测宽模式时判断操作是否完成。
函数:long AC6613_CNT_Read (HANDLE hDevice,long cntch, long *cdata, long *tdata)
✧hDevice:入口参数,卡的操作句柄。
✧cntch: =0-1:选择通道0-1号。
✧*cdata:long指针,出口数据。读出计数器数据。
✧*tdata:long指针,出口数据。读出定时器数据。
✧函数返回:出口参数,=1计数器溢出。
注:计数器原理请参照计数器一章。
说明:
1.24位计数器的数据范围:0-FFFFFFH,从0减法计数到FFFFFFH,认为计数器溢出。
2.宽度测量时(模式2):输入正脉冲宽度=24位计数器数据*0.1 (uS)
3.频率测量及宽度测量操作的读出数据必须在Cread返回=1后才有效。
脉冲发生操作函数
AC6613有2个24位多功能脉冲发生器,每路分别可以工作在2个工作模式:
工作模式:
模式0:PWM模式。宽度可编程方波输出。用户可以定义输出方波的周期及占空比。
模式1:SP模式。单次正脉冲输出。
各个模式说明,详细见硬件原理部分 “2.6:冲输出原理 ”
❑设置脉冲输出模式、数据、输出端口允许。
功能:设置并启动输出。
函数:long AC6613_PRun(HANDLE hDevice,long pch, long pmode, long pdata0, long pdata1)
✧hDevice:入口参数,卡的操作句柄。
✧pch: =0-1:选择通道0-1号。
✧pmode:工作模式,=0,1.
✧Pdata0: =0 – FFFFFFH, 设置0号数据。对应PWM模式的周期、SP模式的宽度。
✧Pdata1: =0 – FFFFFFH, 设置1号数据。对应PWM模式的正脉冲宽度。
✧函数返回:0正常/其它失败
❑查询工作状态。
函数:long AC6613_PState(HANDLE hDevice,long pch)
✧hDevice:入口参数,卡的操作句柄。
✧pch: =0,1:选择通道0、1号。
✧函数返回:-1:失败 。 =0 输出为0 / =1 输出=1。在软件触发单脉冲输出模式下,查询输出是否结束(=0)。
❑设置脉冲输出数据。
功能:中途改变脉冲输出数据。数据改变后,脉冲输出将在下一个脉冲起始位置装入新数据。
函数:long AC6613_PSetData(HANDLE hDevice,long pch,long pdata0, long pdata1)
✧hDevice:入口参数,卡的操作句柄。
✧pch: =0-1:选择通道0-1号。
✧Pdata0: =0 – FFFFFFH, 设置0号数据。对应PWM模式的周期、SP模式的宽度。
✧Pdata1: =0 – FFFFFFH, 设置1号数据。对应PWM模式的正脉冲宽度。
✧函数返回:0正常/其它失败
❑结束脉冲输出并将对应输出端口恢复到开关量输出。
函数:long AC6613_PEnd(HANDLE hDevice,long pch)
✧hDevice:入口参数,卡的操作句柄。
✧pch: =0,1:选择通道0、1号。
✧函数返回:-1:失败 。 =0 正常。
EEPROM读写操作函数
用户可以利用EEPROM函数向AC6613板卡内部的flash rom纪录1个32byte长的数据,作为:软件序号、用户板卡使用纪录或信号调整参数等应用。保存数据掉电后不会消失,并且可以保存10年有效!
❑写EEPROM
函数:long AC6613_EEPROM_Write(HANDLE hDevice, unsigned char *wbuf)
✧hDevice:入口参数,卡的操作句柄。
✧*wbuf:char指针,指向一个至少32byte的数组,数组中存放需要写入EEPROM的数据。
✧函数返回:-1:失败 。 =0 正常。
❑读EEPROM
函数:long AC6613_EEPROM_Read(HANDLE hDevice,unsigned char *rbuf)
✧hDevice:入口参数,卡的操作句柄。
✧* rbuf:char指针,指向一个至少32byte的数组,数组中存放从EEPROM读出的数据。
✧函数返回:-1:失败 。 =0 正常。
4.3 VC程序编程说明
编程前,将AC6613.lib及AC6613.h程序拷贝到用户当前目录中。(需要的文件在VC目录中)
VC编程的基本流程:
1.利用显式调用加载函数。AC6613.lib、AC6613_lib.h文件必须在当前工作目录中。方法,程序的开始处加入如下语句:
#pragma comment(lib,”AC6613.lib”)
#include”AC6613.h”
详细可以参考VC目录中的程序,AC6613_LIB.H文件包含了需要的函数的声明过程。
2.利用AC6613_OpenDevice函数获得板卡的操作句柄。
3.在退出程序时必须执行如下操作:利用AC6613_CloseDevice函数关闭句柄
例:
//获得所有AC6613的操作函数
#pragma comment(lib,"AC6613.lib")
#include"AC6613.h"
HANDLE hDevice=INVALID_HANDLE_VALUE; //硬件操作句柄
Main()
{
//获得AC6613硬件操作句柄
hDevice=AC6613_OpenDevice(0); //创建设备驱动句柄,设备号为0
……………………… //用户程序
//退出
AC6613_CloseDevice(hDevice); //关闭操作句柄
}
详细可以参考光盘上的AC6613的MFC目录下的例子。
在编程时必须注意,硬件操作句柄HANDLE必须为全局变量或必须传递给有相应硬件操作的函数。硬件句柄只要在程序启动时打开一次即可,不需要每次打开或关闭。
4.4 VB程序编程说明
编程前,请将AC6613.dll动态链接库程序拷贝到用户当前目录中或windows系统的system32目录中
VB编程的基本流程:
1.在工程菜单中选择添加模块,将AC6613.bas模块添加进来(该模块在光盘中\\PCI\\AC6613\\vb目录中,应用时将文件拷贝到当前工作目录),此文件为所有函数的声明文件。
2.在模块中定义一个硬件操作句柄,为一个long属性的全局变量,这样可以被用户程序中的所有form调用(例:AC6613.bas中声明的句柄hd6621)。
3.利用AC6613_OpenDevice函数获得板卡的操作句柄。
在退出程序时必须执行如下操作:
利用AC6613_CloseDevice函数关闭句柄
注:AC6613.bas模块已经包含了所有必要的AC6613函数的声明语句。
例:
DIM hd6613 as long
Private Sub Form_Load()
DIM I as long
hd6613 = AC6613_OpenDevice(0) ‘打开设备0号,获得驱动句柄
………………….. ‘其他操作
End Sub
……………………………………….
Private Sub Form_Unload(Cancel As Integer)
AC6613_CloseDriver hd6613 ‘关闭驱动
End Sub
有关用户其他方面的应用请参考光盘中的例程。
注:VB中如果设备操作句柄不等于&HFFFFFFFF为有效句柄。
4.5 Delphi程序编程说明
在Delphi中调用动态链接库的方式分为静态调用和动态调用,本公司所提供的例程均采用静态调用方式(有关动态调用方式请参见光盘中的《双诺公司采集卡Delphi开发说明》)。
编程前,请将AC6613.dll动态链接库程序拷贝到用户当前目录中或windows系统的system32目录中
Delphi编程的基本流程:
1.在.pas文件中的implementation处声明动态连接库中的函数。
2.定义一个硬件操作句柄,为一个ulong属性的全局变量。
3.利用AC6613_OpenDevice函数获得板卡的操作句柄。
在退出程序时必须执行如下操作:
利用AC6613_CloseDrive函数关闭句柄
例:
var
hd6613:ulong;//句柄
…………………
procedure TForm1.FormCreate(Sender: TObject);
var
i:ulong;
begin
hd6613:= AC6613_OpenDevice(0);
end;
…………………………
……………………//其他操作
procedure TForm1.Formdestroy(Sender: TObject);
begin
AC6613_CloseDrive(hd6613);
end;
end.
注:Delphi中如果设备操作句柄不等于$FFFFFFFF为有效句柄。
4.6 LabVIEW程序编程说明
本公司生产的所有采集卡的相关接口函数,均以动态链接库的形式提供给用户。在使用LabVIEW对本公司采集卡进行开发时,只需通过LabVIEW中的Call Library Function Node节点来调用我们所提供的动态链接库函数即可对硬件进行相关操作。
目前,本公司已将客户在LabVIEW中通过Call Library Function Node节点调用DLL函数的过程全部编译为Sub VI的形式,用户只需在LabVIEW的Block Diagram中点击右键,选择ALL Functions->Select a VI,找到\\AC6613(Sub VI)目录,将所需Sub VI添加到LabVIEW的Block Diagram中,即可完成对DLL函数的调用。
详见光盘中的LabVIEW例程及《双诺公司采集卡LabVIEW开发手册》。
五、附录
AC6613示意图
2008/12 V1.1