Dinamic SingleAD(简写DSAD)用于单个AD10000卡在Windows下的编程开发,接口是标准的Windows动态连接库(DLL),可以支持C/C++、Delphi、VB等主流开发语言。应用程序透过DSAD接口可以高速获取放大器采样值、编码器计数值、并且产生控制输出(可选)。
硬件清单
普通商用计算机系统
AD10000高速采集试验卡,用于数据高速采样和控制输出
最多4个传感器(应变式传感器,光电编码器),测量4个通道数据
示波器等检测设备,检测控制输出
硬件结构示意图
AD10000试验卡
AD10000试验卡标准型支持10kHZ高速采样,增强型支持100kHZ高速采样。
文件清单
AD10000P目录:Windows98/Me/2000/XP/VISTA驱动安装
Pciad.dll:底层输入输出
Vac.dll:通用测控驱动
DSAD.dll:DSAD接口动态连接库
DSAD.lib:DSAD编译连接库
DSAD.h:DSAD声明文件(C语言)
调用层次
编程基本流程
DsadOpen(0);
启动:窗口创建代码段
int[] blockA = new int[10000];
int[] blockB = new int[10000];
int[] blockC = new int[10000];
int[] blockD = new int[10000];
int length = DsadSetBlockMode(1); //设置读取块模式为true,返回块中点的个数
for(int i=0; i<length; i++)
{
blockA[i] = DsadInputA(); //逐个读取块中A通道的数据
blockB[i] = DsadInputB(); //逐个读取块中B通道的数据
blockC[i] = DsadInputC(); //逐个读取块中C通道的数据
blockD[i] = DsadInputCount(); //逐个读取块中D通道的数据
}
int DIState = DsadInputDigit(int DIChnl); //读取DI端口状态(DIChnl(DI端口):0,1,2,3)
DsadSetBlockMode(0); //设置读取块模式为false
刷新:定时器代码段(定时读取当前测量值并且显示和记录)
(界面处理)
DsadSetT(double T);
设置输出波形周期
DsadSetStdType(int wType, double vmin, double vmax);
设置输出波形类型,信号范围
DsadOutputWave(void);
控制输出一定频率的波形信号
DsadClose();
退出:窗口退出代码段
AD1M试验卡
AD1M试验卡在实现AD10000试验卡所有功能的基础上增加支持高达1MHZ的高速采样,采样数据的硬件记录缓冲区长度为50KB,可满足冲击试验等的一次性高速数据采集要求。
高速采集编程
读取:返回冲击数据采集频率
int freq = DsadGetFreq(); //返回的数值为冲击数据采集频率实际值,如果为0,卡不支持冲击采集
启动:冲击高速数据采集
ImpStart();
监控:冲击采集数据的长度
int transLength = ImpCheckTransfered();
读取:冲击高速采集数据
short[] blockImp = new short[transLength];
int readLength = ImpGetBlock(blockImp);
(界面处理)
函数说明
extern "C" DSAD_API int __stdcall DsadOpen(int key);
打开测控设备,然后可以作后面的调用
(key是VAC格式的软件注册号,一般DSAD硬件级开发用不上。返回值参见VAC说明,正常的话等于100;如果<0则出错。)
extern "C" DSAD_API void __stdcall DsadClose(void);
关闭测控设备
extern "C" DSAD_API int __stdcall DsadGetType(void);
返回产品类型
extern "C" DSAD_API int __stdcall DsadGetSn(void);
返回产品序号
extern "C" DSAD_API int __stdcall DsadGetId(void);
返回产品ID
extern "C" DSAD_API int __stdcall DsadGetFreq(void);
返回产品数据采集频率
extern "C" DSAD_API int __stdcall DsadGetBits(void);
返回产品数据采集位数
extern "C" DSAD_API int __stdcall DsadInputA(void);
读取块中通道A的数据
extern "C" DSAD_API int __stdcall DsadInputB(void);
读取块中通道B的数据
extern "C" DSAD_API int __stdcall DsadInputC(void);
读取块中通道C的数据
extern "C" DSAD_API int __stdcall DsadInputCount(void);
读取块中通道D的数据(计数)
(AD10000卡能够对输入AB脉冲进行4倍频采样,对于高精度旋转编码器3600码/转,可以得到14400的计数/转。)
extern "C" DSAD_API int __stdcall DsadGetBlock(int chnl, int *blockBuf);
按块读取某通道中的数据
chnl:通道编号,0-3;blcokBuf:读取的块数据保存到的数组;返回读取的块数据长度
extern "C" DSAD_API int __stdcall DsadInputDigit(int diChnl);
读取数字端口状态,端口号diChnl取值0-3
extern "C" DSAD_API void __stdcall DsadOutputDigit(int doChnl, int state);
输出数字开关量,端口号diChnl取值0-3
extern "C" DSAD_API void __stdcall DsadOutputPwm(int width);
控制输出脉宽占空比,参数范围0-1000,分辨率0.1%,1000代表100.0%
extern "C" DSAD_API void __stdcall DsadOutputSwp(int npm);
控制输出脉数频率,单位是每分钟,参数范围60-60M,换算到赫兹范围是1Hz~1MHz
extern "C" DSAD_API void __stdcall DsadOutput(int da);
控制输出DA,参数范围+-2047,模拟信号0~4V,da=0输出中位2V
(AD10000的模拟输出建议采用UTB-SI的隔离伺服功放进行控制,驱动端可以变换为±5V,或者±10V,或者±10mA。)
extern "C" DSAD_API void __stdcall DsadOutputWave(void);
控制输出一定频率的DA波形信号
extern "C" DSAD_API void __stdcall DsadSetT(double T);
设置输出波形的周期,T取值区间0.001-0.5,对应频率2-1000Hz
extern "C" DSAD_API void __stdcall DsadSetStdType(int wType, double vmin, double vmax);
设置输出波的类型,信号范围
(wType波类型:
wType为0:正弦波
wType为1:余弦波
wType为2:方形波
wType为3:三角波
wType为4:正锯齿波
wType为5:反锯齿波
vmin,vmax取值区间-1,1,对应DA输出信号最小{zd0})
extern “C” DSAD_API void __stdcall DsadAddArbi(double ut, double v);
自定义波形输出波形点,ut波形点位置(0.0到1.0,必须有首尾两点),v波形点信号大小(-1到1)。
(冲击专用)
extern "C" DSAD_API int __stdcall ImpGetFreq(void);
返回产品冲击采集频率
extern "C" DSAD_API int __stdcall ImpGetBits(void);
返回产品冲击采集位数
extern "C" DSAD_API void __stdcall ImpStart(void);
启动冲击高速数据采集
extern "C" DSAD_API int __stdcall ImpCheckTransfered (void);
返回冲击采集数据长度,0未采集
extern "C" DSAD_API int __stdcall ImpGetBlock (short *impBlock);
按块读取冲击采集数据,返回数据块长度