USB4711A使用手册Word格式文档下载.docx
- 文档编号:17247031
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:33
- 大小:704.26KB
USB4711A使用手册Word格式文档下载.docx
《USB4711A使用手册Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《USB4711A使用手册Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。
4.4.1DRV_CounterEventStart24
4.4.2DRV_CounterEventRead25
4.4.3DRV_CounterReset26
5.VC中使用研华设备驱动编程指南27
5.1添加必要文件29
5.2编写代码30
5.3测试程序31
1.介绍
1.1概述
USB-4711A系列包括即插即用数据采集模块,因此无需再打开您的计算机机箱来安装板卡。
仅需插上模块,便可以采集到数据,简单高效。
USB-4711A是给任何带有USB端口的计算机增加测量和控制能力的最佳途径。
它通过USB端口获得所有所需的电源,因此无需连接外部的电源。
USB-4711A在一块卡上包含了所有的数据采集功能,如:
16路AI,2路AO,8路DI,8路DO,1路32位计数器,其中A/D数据采集为12位。
USB-4711A板卡如图1.1所示。
图1.1USB-4711A板卡
1.2I/O接口
USB-4711A配有插入式螺丝端子接口,因此连接模块时无需另外准备端子板或电缆。
1.3针脚定义
图1.2为USB-4711A上五个10针I/O接口的针脚定义。
两个接地参考AGND和DGND的用途不同,因此应分开使用。
不要将两者进行连接。
表1.1为I/O接口信号的描述。
图1.2I/O接口针脚定义
表1.1I/O接口信号描述
信号名
参考
方向
描述
AI<
0…15>
AGND
输入
模拟量输入通道0~15。
AO0/AO1
输出
模拟量输出通道0/1。
-
模拟量输入输出接地
DI<
0…7>
DGND
数字量输入通道。
DO<
数字量输出通道。
数字量接地。
GATE
A/D外部触发门。
将GATE连接至+5V将禁用外部触发信号的输入。
EXT_TRG
A/D外部触发。
此针脚为A/D转换的外部触发信号。
低-高沿将触发A/D转换。
EVT_IN
外部事件输入通道。
P_OUT
脉冲输出通道
1.4模拟量输入连接
USB-4711A支持16路单端/8路差分输入。
每个输入通道都可通过软件方式进行选择。
1.4.1单端通道连接
单端输入配置只为每个通道提供1根信号线,且被测电压(Vm)是以公共地为参考的线缆电压。
没有接地端的信号源称为“浮动信号源”。
将单端通道连接至浮动信号源尤为简单。
在这种模式下,USB-4711A为外部浮动信号源提供一个参考地。
图1.3为浮动信号源与USB-4711A的1个输入通道的单端通道连接。
图1.3单端输入通道连接
1.4.2差分输入连接
差分输入为每个通道提供两根信号线,两根信号线之间的电压差是可测量的。
在USB-4711A中,当所有通道都配置为差分输入,最多可有8个模拟通道。
如果信号源的一侧连接到地面,信号源作为参考地。
因此,信号源的地与板卡地将形成不完全相同的电压。
地面之间的电压差异,形成了一个共模电压(Vcm)。
为了避免共模电压引起的接地回路噪声的影响,您可以连接到低输入信号地面。
注:
在差分输入模式,输入通道n应使用通道n+1。
(N=0,2,4...14)
图1.4为USB-4711A的1个输入通道的差分输入通道连接。
图1.4差分输入通道连接
1.5模拟量输出连接(电压)
USB-4711A提供了2个模拟量输出通道,即AO0和AO1。
图1.5为USB-4711A的模拟量输出通道连接。
图1.5模拟量输出通道连接
1.6触发源连接
1.6.1内部脉冲触发连接
USB-4711A提供了2个16-bit计数器,可以连接至1个10MHz时钟。
计数器0负责输入通道的事件计数。
计数器1是1个16-bit定时器,用于脉冲触发。
计数器1输出的上升沿信号(低—高)将触发USB-4711A的A/D转换。
1.6.2外部触发源连接
除脉冲触发以外,USB-4711A还为A/D转换提供了外部触发。
将GATE信号连接至+5VDC源时,外部触发功能即被禁用。
断开与+5VDC源的连接即可启用外部触发功能。
2.研华设备驱动应用
研华Windows设备驱动是动态链接的。
以下列出了开发应用时必需的文件:
3.函数参考
3.1USB系列函数支持列表
3.1.1Device函数组
DRV_DeviceOpen
DRV_DeviceClose
DRV_DeviceGetFeatures
DRV_DeviceGetProperty
DRV_DeviceSetProperty
3.1.2模拟量输入函数组
DRV_AIConfig
DRV_AIGetConfig
DRV_AIBinaryIn
DRV_AIScale
DRV_AIVoltageIn
DRV_AIVoltageInExp
DRV_MAIConfig
DRV_MAIVoltageIn
DRV_MAIVoltageInExp
DRV_MAIBinaryIn
3.1.3模拟量输出函数组
DRV_AOConfig
DRV_AOScale
DRV_AOBinaryOut
DRV_AOVoltageOut
3.1.4数字量输入/输出函数组
AdxDioGetCurrentDoPortsState
AdxDioReadDiPorts
AdxDioWriteDoPorts
DRV_DioReadBit
DRV_DioWriteBit
DRV_DioReadPortByte
DRV_DioWritePortByte
DRV_DioReadPortWord
DRV_DioWritePortWord
DRV_DioReadPortDword
DRV_DioWritePortDword
DRV_DioGetCurrentDOBit
DRV_DioGetCurrentDOByte
DRV_DioGetCurrentDOWord
3.1.5Counter函数组
DRV_CounterEventStart
DRV_CounterEventRead
DRV_CounterReset
4.使用函数
函数描述
函数部分包括模拟量输入函数,模拟量输出函数,数字量输入函数,数字量输出函数等等。
研华的每个函数都将以如下形式出现:
status=FUNCTION_Name(parameter1,parameter2,...,parametern)(n>
0),
每个函数都会返回一个状态,表明函数执行成功还是失败(保存在status变量中)。
Status(Value)
结果
UNSUCCESS(>
0)
遇到错误,函数执行失败
SUCCESS(=0)
函数执行成功
Status是一个4字节的整型变量,在DRIVER.H里被定义。
4.1设备函数组
进行所有I/O操作时,必须首先调用DRV_DeviceOpen,通过设备号(DeviceNumber)打开设备得到设备句柄,以使用户访问该设备,然后调用一系列函数执行相应的功能。
结束操作时,调用DRV_DeviceClose关闭设备,释放由DRV_DeviceOpen分配的资源,基本流程如图4.1所示。
图4.1设备函数组应用流程
DeviceNumber(Type:
UnsignedLong,Size:
4bytes)
指定要进行I/O操作的设备,即要打开的设备的设备号。
设备号在AdvantechDeviceManager中初始化设备的时候分配。
比如“000:
AdvantechDEMOI/O=1H”,这个设备的设备号就为000,用户可以直接在DRV_DeviceOpen函数中指定要打开的设备号,也可以通过调用DRV_SelectDevice函数打开一个对话框选择需要的设备,从而取得相应的设备号。
DRV_DeviceOpen和DRV_DeviceClose函数
DRV_DeviceOpen打开设备号(DeviceNumber)指定的设备。
在I/O操作中,其它函数执行前必须先调用此函数。
与之对应,DRV_DeviceClose函数用来关闭设备。
DriverHandle(Type:
Long,Size:
4bytes)
指向的缓存保存了设备的设置信息。
函数DRV_DeviceOpen返回句柄(DriverHandle),其它进行I/O相关操作的函数使用该句柄来指定设备。
ErrorCode(Type:
驱动函数返回错误代码(ErrorCode)来表明函数执行是否成功。
当返回代码非零时,函数执行失败。
DRV_GetErrorMessage函数
DRV_GetErrorMessage函数通过错误代码获取出错信息。
4.1.1DRV_DeviceOpen
LRESULTDRV_DeviceOpen(ULONGDeviceNum,LONG*DriverHandle);
用途:
通过指定的设备号(DeviceNum)来打开一个已经安装的设备,返回设备句柄DriverHandle以备后续操作。
与指定设备相关的所有操作都必须使用指向该设备的句柄(DriverHandle),所以用户在使用与设备所分配资源相关的任何一项操作,如DIO、AO、AI等之前,必须先调用此函数。
参数:
返回值:
1.SUCCESS:
执行成功。
2.LoadLibraryFailed:
动态链接库装载失败,请尝试重新安装驱动程序。
3.MemoryAllocateFailed:
驱动程序内部内存分配失败。
4.ConfigDataLost:
从注册表获取设备配置信息失败,这些信息可能已经丢失,请尝试重新安装驱动程序。
5.GetProcAddressFailed:
无法获得驱动程序函数地址,请尝试更新驱动程序。
注意事项:
与设备所分配资源相关的任何一项操作,如DIO、AO、AI等,执行完毕后,用户必须调用DRV_DeviceClose函数来释放由该设备通过DRV_DeviceOpen分配的资源,为设备再次操作做好准备。
4.1.2DRV_DeviceClose
LRESULTDRV_DeviceClose(LONG*DriverHandle);
关闭由设备句柄DriverHandle指向的设备,释放为该设备分配的资源。
所有与设备分配资源相关的操作,如:
DIO、AO、AI等完成后需要关闭该设备,以释放由函数DRV_DeviceOpen为该设备分配的资源。
2.InvalidDriverHandle:
设备句柄DriverHandle为NULL。
4.2模拟量输入函数组
软件方式:
该组函数通过软件命令触发数据转换。
设备驱动为单通道和多通道数据采集分别提供了不同的函数,两种数据采集都是一次完成。
可以使用软件定时器来周期性地调用这些函数,对单通道或多通道周期性地进行采样。
对于大块数据的连续高速采样,可以采用中断或DMA传输方式。
单通道采样:
DRV_AIConfig函数为指定通道设置输入值范围。
如果在运行期需要改变输入值范围,则需要再次调用DRV_AIConfig函数。
DRV_AIVoltageIn函数读取输入通道当前电压值。
设备驱动通过函数DRV_AIBinaryIn读取输入通道的当前二进制值,DRV_AIScale函数可以把它转化成电压值。
4.2.1DRV_AIConfig
LRESULTDRV_AIConfig(LONGDriverHandle,LPT_AIConfiglpAIConfig);
在设备句柄DriverHandle指向的设备上,通过设置GainCode来配置指定AI(AnalogInput)通道(Channel)的电压输入范围。
在lpAIConfig指向的结构PT_AIConfig中保存的参数包括:
所要设置的通道(DasChan)和GainCode(DasGain)。
3.InvalidChannel:
指定的通道(chanoflpAIConfig)超出有效范围。
4.InvalidGain:
GainCode(DasGainoflpAIConfig)超出有效范围。
5.CardTypeIDNotSupported:
驱动无法识别DriverHandle指向的设备,请更新驱动程序。
PT_AIConfig
TypedefstructtagPT_AIConfig
{
USHORTDasChan;
USHORTDasGain;
}PT_AIConfig,*LPT_AIConfig;
函数DRV_AIConfig使用到PT_AIConfig。
成员描述:
gaincode列表
GainCode
输入电压范围
4
10V
5V
1
2.5V
2
1.25V
3
0.625V
4.2.2DRV_AIVoltageIn
LRESULTDRV_AIVoltageIn(LONGDriverHandle,LPT_AIVoltageInlpAIVoltageIn);
在设备句柄DriverHandle指向的设备上,读取指定AI(AnalogInput)通道的电压值。
此函数等同于依序调用DRV_AIBinaryIn与DRV_AIScale。
在lpAIVoltageIn指向的结构PT_AIVoltageIn中保存的参数包括:
采样通道(chan)、GainCode(gain)、触发模式(TrigMode)和返回电压值(voltage)。
3.DataNotReady:
使用外部触发模式时(TrigMode为1),在特定时间内,驱动没有检测到外部触发信号。
4.AIConversionFailed:
使用内部触发模式时(TrigMode为0),在特定时间内,设备未准备好数据。
5.InvalidChannel:
指定的通道(chanoflpAIVoltageIn)超出有效范围。
6.CardTypeIDNotSupported:
PT_AIVoltageIn
typedefstructtagPT_AIVoltageIn
USHORTchan;
USHORTgain;
USHORTTrigMode;
FLOAT*voltage;
}PT_AIVoltageIn,*LPT_AIVoltageIn;
函数DRV_AIVoltageIn使用到PT_AIVoltageIn。
成员描述:
4.2.3DRV_AIBinaryIn
LRESULTDRV_AIBinaryIn(LONGDriverHandle,LPT_AIBinaryInlpAIBinaryIn);
在设备句柄DriverHandle指定的设备上,读取指定AI(AnalogInput)通道的当前二进制值,函数DRV_AIScale可用来将原始数据换为相应的电压值。
在lpAIBinaryIn指向的结构PT_AIBinaryIn中保存的参数包括:
所要设置的通道(chan)、触发模式(TrigMode)和返回的原始数据(reading)。
使用内部触发模式时(TrigMode为0),在特定时间内,驱动检测到数据没有做好准备。
指定的通道(chanoflpAIBinaryIn)超出有效范围。
PT_AIBinaryIn
typedefstructtagPT_AIBinaryIn
USHORT*reading;
}PT_AIBinaryIn,*LPT_AIBinaryIn;
函数DRV_AIBinaryIn使用到PT_AIBinaryIn。
4.2.4DRV_AIScale
LRESULTDRV_AIScale(LONGDriverHandle,LPT_AIScalelpAIScale);
把二进制原始数据(通常得自函数DRV_AIBinaryIn)转换为相应的电压值,或用户需要的其它模拟量值。
在lpAIScale指向的结构PT_AIScale中保存的参数包括:
最大输入模拟量值(MaxVolt)、最大计数值(MaxCount)、零点偏移量(offset)、输入数字量值(reading)和返回模拟量值(voltage)。
1.SUCCESS:
2.AIScaleFailed:
输入参数有误,致转换无法进行。
PT_AIScale
TypedefstructtagPT_AIScale
USHORTreading;
FLOATMaxVolt;
USHORTMaxCount;
USHORToffset;
}PT_AIScale,*LPT_AIScale;
函数DRV_AIScale使用到PT_AIScale。
4.3模拟量输出函数组
该组函数实现模拟量输出的功能。
采样方式分为单通道,多通道同步输出,及DMA方式的波形输出等。
单通道单次转换
DRV_AOVoltageOut函数用于电压输出:
DRV_AOVoltageOut函数接收到一个浮点电压值,并把它转化成二进制数写入模拟量输出通道来改变电压输出值。
电压输出范围取决于AdvantechDeviceManager中DA参考电压的设置。
在运行态可以调用DRV_AOConfig函数改变电压范围的设置。
设备驱动也提供了二进制数据输出函数DRV_AOBinaryOut,函数接收到二进制数值并把它写入模拟量输出通道。
先通过DRV_AOScale函数可以把想得到的模拟量输出值转换成二进制数,再通过函数DRV_AOBinaryOut输出。
4.3.1DRV_AOConfig
LRESULTDRV_AOConfig(
LONGDriverHandle,
LPT_AOConfiglpAOConfig);
在设备句柄DriverHandle指向的设备上,改变所指定AO(AnalogOutput)通道的输出范围默认配置(未调用本函数前,AO通道的输出范围默认参考的是用户在研华设备管理器AdvantechDeviceManager的设置数据,这个数据保存在注册表Registry中)。
本函数改变的配置数据只是执行时的暂存信息,保存在注册表的配置数据并没有被改变。
在lpAOConfig指向的结构(PT_AOConfig)中保存的参数包括指定通道(chan),指定参考源(RefSrc),参考电压上限(MaxValue)和参考电压下限(MinValue)。
1.SUCCESS:
2.InvalidDriverHandle:
3.InvalidChannel:
指定的通道号(chanoflpAOConfig)超出有效范围。
4.CardTypeIDNotSupported:
5.FunctionNotSupported:
DriverHandle指向的设备不支持本功能,请参阅相关硬件手册。
PT_AOConfig
typedefstructtagPT_AOConfig
USHORTRefSrc;
FLOATMaxValue;
FLOATMinValue;
}PT_AOConfig,*LPT_AOConfig;
函数DRV_AOConfig使用到PT_AOConfig。
4.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USB4711A 使用手册
![提示](https://static.bdocx.com/images/bang_tan.gif)