数据采集模块使用说明.docx
《数据采集模块使用说明.docx》由会员分享,可在线阅读,更多相关《数据采集模块使用说明.docx(20页珍藏版)》请在冰豆网上搜索。
![数据采集模块使用说明.docx](https://file1.bdocx.com/fileroot1/2022-12/7/a2f52f3e-ac11-4a77-9e3a-98ccda66fb36/a2f52f3e-ac11-4a77-9e3a-98ccda66fb361.gif)
数据采集模块使用说明
1.概述1
2.主要技术指标1
3.工作原理2
4.模入码制以及数据与模拟量的对应关系2
5.软件3
数据采集模块使用说明书
1•概述
多功能数据采集模块适用于带USB接口的PC系列微机,具有即插即用(PnP)功能。
其操作系统可选用目前最普遍的Windows系列、高稳定性的Unix等多种操作系统以及专业
数据采集分析系统LabVIEW/LabWindowsCVI等软件环境。
在硬件的安装上非常简单,使用时只需将模块的USB接口插入计算机任何一个USB接口插座中。
2.主要技术指标
2.1USB指标:
2.1.1
处理器及
USB接口芯片:
CY7C68013
2.1.2
通讯方式:
USB接口
2.1.3
通讯距离:
小于5米
2.1.4
通讯协议:
USB2.0
2.2模入部分:
2.2.1输入通道数:
6;
2.2.2输入信号范围:
土5V;
2.2.3输入阻抗:
》10MQ;
2.2.4程控增益:
X1;X2;X10;X100;X500;
2.2.5输入通道选择方式:
单通道程序指定/多通道自动扫描;
2.2.6A/D转换精度/最高采样速率:
12位AD/500K;
2.2.7A/D采样程控频率:
1KHz/10KHz/25KHz/50KHz/100KHz/250KHz/500KHz;
2.2.8A/D启动方式:
程控触发
2.2.9FIFO存储器容量:
8KX16bit(全满)/4KX16bit(半满);
2.2.10通道切换时间:
(模拟开关导通时间+放大器建立时间)<2卩S;
2.2.11A/D转换非线性误差:
土1LSB(A/B型),土2LSB(C型);
2.3模出部分:
2.3.1输出通道数:
2路
2.3.2输出范围:
电压方式:
0〜+10V
2.3.3输出阻抗:
W2Q(电压方式)
2.3.4D/A转换分辨率:
12位
2.3.5
电压输出方式负载电流:
w
10mA
2.4
开关量部分
2.4.1
输入路数:
2路TTL电平/2
路光隔,5V*/12V/24V开关量输入电平可选。
2.4.2
输出路数:
2路TTL电平/2
路光隔。
2.5电源功耗:
+5V(±10%)<500mA(自供电,不建议长期使用)
+9V(±10%)<500mA(外供电)
2.6使用环境要求:
工作温度:
相对湿度:
存贮温度:
10C〜40C
40%〜80%
-55C〜+85C
3.工作原理
多功能数据采集模块主要由多路模拟开关选通电路、高精度放大电路、模数转换电路、DC/DC电路、先进先出(FIFO)缓冲存储器电路、模数转换电路、供电电路等部分组成。
3.1模入部分
3.1.1高速多路模拟开关选通电路
本电路由6片CD4501(或同类产品)及跨接选择器组成。
3.1.2高速高精度、差分、可编程增益放大器电路
该电路由片高速高精度放大器If347、Im351组成,用以对通道开关选中的模拟信号进
行变换处理,以提供模数转换电路所需要的信号。
3.1.3高速模数转换电路
本模块选用B-B公司的A/D器件ADS7822(12bit)、ADS7818(12bit)或ADS8325(16bit)作为本卡的模数转换器件。
采用外部精密基准电源。
3.1.4先进先出(FIFO)缓冲存储器电路
本电路用于将A/D转换的数据结果及通道代码进行缓冲存储。
并相应的给出“空”,“半
满”和“全满”的标志信号。
用户在使用过程中可以随时根据这些标志信号的状态以单次或批量的方式读出A/D转换的结果。
3.2开关量输入输出电路
本模块提供了2路非隔离/隔离的开关量输入、2路非隔离/隔离的开关量输出信号通道。
使用中需注意对这些信号的电平要求,选合适的驱动。
3.3接口控制逻辑电路
接口控制逻辑电路用来将USB总线控制逻辑转换成与各种操作相关的控制信号。
3.4供电电路
供电电路由DC/DC芯片LM340及其外围电路组成外供电电路,以满足USB总线自供电功
率的不足。
外供电需输入8-15V的直流电源,插座中心为正极。
4.模入码制以及数据与模拟量的对应关系
本接口卡在双极性方式工作时,转换后的12位数码为二进制偏移码。
此时12位数码
的最高位(DB11)为符号位,“0”表示负,1”表示正。
偏移码与补码仅在符号位上定义不同,此时数码与模拟电压值的对应关系为:
输入信号为—5〜+5V时:
模拟电压值=数码X10(V)/4096—5(V)
即:
1LSB=2.44mV
5.软件
5.1驱动安装:
多功能数据采集模块在硬件安装完成后还需进行驱动安装,其具体安装步骤如下:
1.将模块USB接口插入计算机USB插座。
2.启动计算机,操作系统将自行检测新安装的硬件,并弹出”添加新硬件向导”对话框,
在“添加新硬件向导”对话框出现时,点击“下一步”按钮。
3.选中“显示指定位置的所有驱动程序的列表...”单选钮,点击“下一步”按钮。
4.点击“下一步”。
5.点击“从软盘安装”按钮,弹出“从磁盘安装”对话框。
6.点击“浏览”按钮,选择“Usb7kC.inf”所在的目录(光盘数据采集模块驱动),点击“确定”按钮。
7.回到“添加新硬件向导”,点击“下一步”按钮。
8.点击“完成”按钮,第一块模块安装完成。
5.2函数介绍:
usb7KChelper.dll是为数据采集模块配制的工作在中英文Windows95/98/2000/XP/NT环境下的一个动态链接库,它所封装的函数可以被其它应用程序在运行时直接调用。
用户可以用任何一种可以使用DLL链接库的编程工具来编写。
所列函数的说明格式
为C++应用程序中调用DLL库函数时的常用格式,无论使用哪一种开发工具,务必请注意
数据格式的匹配及函数的返回类型。
动态链接库(usb7KChelper.dll所有函数说明如下:
#ifndefUSB7360_H
#defineUSB7360_H
#ifdefUSB7KCTRANS_EXPORTS
#defineZT_API__declspec(dllexport)
#else
#defineZT_API__declspec(dllimport)
#endif
//定义错误号
#defineZT_SUCCESS0//无错误
#defineERR_PARAMETER11//参数1错
#defineERR_PARAMETER22//参数2错
#defineERR_PARAMETER33//参数3错
#defineERR_PARAMETER44//参数4错
#defineERR_PARAMETER55//参数5错
#defineERR_PARAMETER66//参数6错
#defineERR_PARAMETER77//参数7错
#defineERR_PARAMETER88//参数8错
#defineERR_PARAMETER99//参数9错
#defineERR_PARAMETER1010//参数10错
#defineERR_PARAMETER1111//参数11错
#defineERR_PARAMETER1212//参数12错
#defineERR_PARAMETER1313//参数13错
#defineERR_PARAMETER1414//参数14错
#defineERR_PARAMETER1515//参数15错
#defineERR_PARAMETER1616//参数16错
#defineERR_PARAMETER1717//参数17错
#defineERR_PARAMETER1818//参数18错
#defineERR_PARAMETER1919//参数19错
#defineERR_PARAMETER2020//参数20错
#defineERR_PARAMETER_BASEADDR21//针对ISA卡,板卡基地址超出范围,基地址应该为0x100至0x3F0之间未被系统占用的地址
#defineERR_PARAMETER_CARDNO22//针对PCI卡,板卡索引号超出范围,这版驱动中板卡索引号默认从1开始
#defineERR_PARAMETER_CHMODE23II通道方式参数错误,通道方式超出范围,一般只有0--3共4种方式
#defineERR_PARAMETER_CH24II通道号参数错误,通道号超出范围
#defineERR_PARAMETER_CHIP25II芯片号参数错误,芯片号超出范围
#defineERR_PARAMETER_PORT26II口号参数错误,口号超出范围
#defineERR_PARAMETER_AI_RANGE27IIAD量程参数错,此卡不支持这种AD输入量程
#defineERR_PARAMETER_AI_AMP28IIAD增益参数错
#defineERR_PARAMETER_AI_STARTMODE29IIAD启动方式参数错
#defineERR_PARAMETER_AO_RANGE30IIDA量程参数错,不支持这种DA输出量程
#defineERR_PARAMETER_ADFREQ31IIAD采集频率(或AD分频系数)参数错
#defineERR_PARAMETER_IRQ32II与中断相关参数错,可能是此卡不支持这种中断方式或中断号
#defineERR_PARAMETER_NULL_POINTER33II空指针错。
原因:
缓冲区首地址为空或者用户传入的参数导致引用到空指针
#defineERR_AD_OVERTIME34IIAD超时。
对于ISA卡,出错原因可能是:
未插卡或IO地址与板卡上设置不匹配。
当用定时启动AD或外触发启动AD时,一般不应检查AD是否超时
#defineERR_OPEN_DEVICE35II打开设备失败,对于PCI卡,出错原因可能是:
未插卡或未装驱动,或dll与sys版本不一致
#defineERR_CLOSE_DEVICE36II关闭设备失败
#defineERR_TIMING37II定时未到或外触发脉冲未到
#defineERR_IOADDR_DA_OVERTIME38II带光隔DA写过程超时
#defineERR_OPEN_IRQ39II打开中断出错
#defineERR_FUNC_CANNT_RUN40II此函数不能在这台计算机上运行
#defineERR_ASYNC_FUNC_FAILED41II异步函数调用失败
#defineERR_FUNC_OPERATE42II在当前的卡的设置状态下,不应该调用此函数
#defineERR_EXCHANGE_DATA43II与底层驱动之间交换数据出错
extern"C"
ZT_APIlong_stdcallZT7360_OpenDevice(unsignedlongcardNO);
II函数名称:
ZT7360_OpenDevice
II函数功能:
打开设备。
必须在调用其他函数之前调用。
II放在程序初始化时调用比较恰当,只调用一次即可
II入口参数:
IIcardNO:
模块号,默认从1开始
II
如果系统中只用了一个USB模块,令这个参数为1就行了
//返回值:
0表成功
//-1表失败,应该进一步调用ZT7360_GetLastErr判断出错原因
ZT_APIlong_stdcallZT7360_CloseDevice(unsignedlongcardNO);
//函数名称:
ZT7360_CloseDevice
//函数功能:
关闭指定的设备
//入口参数:
//cardN0:
模块号,默认从1开始
//如果系统中只用了一个USB模块,令这个参数为1就行了
//返回值:
0表成功
//-1表失败,应该进一步调用ZT7360_GetLastErr判断出错原因
ZT_APIunsignedlong_stdcallZT7360_GetLastErr();
//函数名称:
ZT7360_GetLastErr
//函数功能:
得到当前错误号。
如果错误号为0表示无错误
//返回值:
错误代码,错误代码含义请看宏定义
ZT_APIvoid_stdcallZT7360_ClearLastErr();
//函数名称:
ZT7360_ClearLastErr
//函数功能:
清除错误号。
//注意:
一旦产生错误,为了使函数重新正常执行,必须清除错误号
//返回值:
无
ZT_APIvoid_stdcallZT7360_SetBaseNO(unsignedlongbaseNO);
//函数名称:
ZT7360_SetBaseNO
//函数功能:
设置板卡索引号(cardNO),芯片号(chipNO),口号(portNO)和通道号(chNO),
//总之带“NO”后缀的参数是从0开始还是从1开始。
默认为从1开始
//建议不要调用这个函数
//入口参数:
//baseNO:
只能设为0或1
//返回值:
无
ZT_APIlong_stdcallZT7360_GetBaseNO();
//函数名称:
ZT7360_GetBaseNO
//函数功能:
返回当前板卡索引号(cardNO),芯片号(chipNO),口号(portNO)和通道号(chNO),
//总之带“NO”后缀的参数是从0开始还是从1开始。
默认为从1开始
//返回值:
返回0表从0开始
//返回1表从1开始
ZT_APIlong_stdcallZT7360_AIonce(unsignedlongcardNO,unsignedlongchMode,unsignedlongchNO,unsignedlongAIrange,unsignedlongAIAmp,unsignedlongADstartMode,
//
unsignedlongADfreq,unsignedlongABflag,unsignedlongchlFlag,unsignedlongADctrlWord,unsignedlongADoverTime);
//
对于12位的卡返回0~4095之间的值
//
对于16位的卡返回
0~65535之间的值
II
chMode:
:
通道方式
II
0=表示单端,固疋单通道方式
II
2=表示双端,固疋单通道方式
II
chNO
:
通道号
II
当chMode=0时,为通道号(1--48)
II
当chMode=2时,为通道号(1--24)
II
Alrange:
选择对采集到的AD原码值做何种变换,应该与AD采集量程(一般:
//函数名称:
ZT7360_Alonee
II函数功能:
对指定通道进行单次数据采集。
不需要先调用ZT7360_AIinit
//入口参数:
IIcardNO:
模块号,默认从1开始。
有关这个参数的详细说明,请参考
ZT7360_OpenDevice函数
跳线)相匹配:
AIrange=0,表示返回原码值,所有卡都有这种方式。
0--5000mV之间的值,如果此
0--10000mV之间的值,如果此
-5000--5000mV之间的值,如
IIAlrange=1,表示把原码值转化为
卡没有这种量程,不应选这种方式
IIAlrange=2,表示把原码值转化为
卡没有这种量程,不应选这种方式
IIAlrange=5,表示把原码值转化为
果此卡没有这种量程,不应选这种方式
IIAlAmp:
程控增益系数(0〜2)。
II0=1倍增益(无增益);1=10倍增益;2=100倍增益
IIADstartMode:
保留。
保持此参数为0
IIADfreq:
保留。
保持此参数为0
IIABflag:
设置模块为A型(12bit)还是B型(16bit)
II0=A型;1=B型
IIch1Flag:
保留。
保持此参数为0
IIADetrlWord:
一般保持此参数为0。
II若此参数不为0,函数将直接用这个参数的值初始化AD,而对其他
影响AD方式的参数,
II例如chMode、Alrange、AlAmp、ABflag、ch仆lag的值不予考虑。
II此参数的说明请参考说明书中对usb7360Al函数的lCode参数的
说明。
II
ADoverTime:
保留。
保持这个参数为0
〃返回值:
不等于-1,表采集到的AD结果
II-1,当ZT7360_GetLastErr返回值等于0时,表AD结果
II
当ZT7360_GetLastErr返回值小于0时,表失败
ZT_APIlong_stdcallZT7360_Alinit(unsignedlongcardNO,
unsignedlongchMode,unsignedlongchNO,unsignedlongAIrange,unsignedlongAIAmp,unsignedlongADstartMode,unsignedlongADfreq,unsignedlongABflag,unsignedlongch1Flag,unsignedlongADctrlWord,unsignedlongADoverTime);
//函数名称:
ZT7360_Alinit
//函数功能:
初始化AD
//入口参数:
//cardNO:
模块号,默认从1开始。
有关这个参数的详细说明,请参考
ZT7360_OpenDevice函数
//
chMode:
通道方式
//
0=表示单端,固疋单通道方式
//
1=表示单端,多通道扫描方式
//
2=表示双端,固疋单通道方式
//
3=表示双端,多通道扫描方式
//chNO:
通道号或多通道循环输出中止通道号
//当chMode=0时,为通道号(1--48)
//当chMode=1时,为多通道循环采集中止通道号(1--48),例如设为
2表示,采集的顺序为:
通道1,通道2,通道1,通道2……
〃当chMode=2时,为通道号(1--24)
//当chMode=3时,为多通道循环采集中止通道号(1--24),例如设为
2表示,采集的顺序为:
通道1,通道2,通道1,通道2……
//
AIrange=0,表示返回原码值,所有卡都有这种方式。
//
对于12位的卡返回
0~4095之间的值
//
对于16位的卡返回
0~65535之间的值
//
Alrange=1,表示把原码值转化为
0--5000mV之间的值,如果此
卡没有这种量程,不应选这种方式
//
Alrange=2,表示把原码值转化为
0--10000mV之间的值,如果此
卡没有这种量程,不应选这种方式
//
Alrange=5,表示把原码值转化为
-5000--5000mV之间的值,如
果此卡没有这种量程,
不应选这种方式
//
Alrange=10,表示把原码值转化为
0--20000uA之间的值,如果
此卡没有这种量程,不应选这种方式
//
Alrange=11,表示把原码值转化为
4000--20000uA之间的值,如
果此卡没有这种量程,
不应选这种方式
//AIAmp
:
程控增益系数(0〜2)。
AD原码值做何种变换,应该与AD采集量程(一般需
//AIrange:
选择对采集到的
跳线)相匹配:
//0=1倍增益(无增益);1=10倍增益;2=100倍增益
//ADstartMode:
保留。
保持此参数为0
//ADfreq:
指定AD总采样频率
//对于USB-7360型,共有0~4档可供选择:
//0=1KHz;1=10KHZ;2=25KHZ;3=50KHz;4=75KHz
//对于USB-7360A型,共有0~6档可供选择:
//
250KHz;6=500KHz
//
//
100KHz
//
//
//
//
//
0=1KHz;1=10KHz;2=25KHz;3=50KHz;4=100KHz;5=
对于USB-7360B型,共有0~5档可供选择:
0=1KHz;1=5KHz;2=10KHz;3=25KHz;4=50KHz;5=
注:
这里所设置的是AD总采样频率,如果设置频率为100KHZ,
对于1个通道来说,这个通道的采样频率确实为100KHZ;
对于2个通道来说,每个通道的采样频率变为50KHz;
对于4个通道来说,每个通道的采样频率变为25KHz;
注意:
用户可以通过所选的总采样频率与通道数搭配,得到
更接近自己需要的采样频率
//ABflag:
设置模块为A型(12bit)还是B型(16bit)
//0=A型;1=B型
//ch1Flag:
对于B型(16bit)模块,设置是否返回通道1标志
//ADctrlWord:
一般保持此参数为0。
//若此参数不为0,函数将直接用这个参数的值初始化AD,而对其他
影响AD方式的参数,
//例如chMode、AIAmp、ADstartMode、ADfreq、ABflag、ch1Flag
的值不予考虑。
//此参数的说明请参考说明书中对usb7360AIInit函数的ICode参数
的说明。
//ADoverTime:
保留。
保持这个参数为0
//返回值:
0表成功
//-1表失败,应该进一步调用ZT7360_GetLastErr判断出错原因
ZT_APIlong_stdcallZT7360_FifoStatus(unsignedlongcardNO);
//函数名称:
//函数功能:
读取采集模块上硬件缓冲区
//入口参数:
//
cardN0:
模块号,默认从
ZT7360_OpenDevice函数
//
//返回值:
0表空
//
1有