阿尔泰USB5630数据采集卡
阿尔泰USB5630数据采集卡
通过以太网接口实现数据采集
硬件连接
9v~24v直流电源接通电源
剩下根据产品使用手册查看各个接口,包括模拟量输入输出、数字量输入输出、计数器等功能。根据需要连接接口,注意接入电压值范围。
软件开发
安装提供的软件,在安装目录下包含了帮助文档和测试示例。安装目录
- Help文件下包含使用手册和API文档;
- Samples文件下包含开发测试示例,包括c++、c#等开发语言示例,根据开发语言选择USB/NET开发示例。这里选择NET文件示例,完成以太网接口开发采集数据。
使用板子提供的API,通过qt开发,Qt5.5 mingw 32
- 将板子提供的库复制到工程目录/bin,包括USB5630E.h, USB5630E.lib, USB5630E.dll
- .pro配置
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/bin/ -lUSB5630E
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/bin/ -lUSB5630E
INCLUDEPATH += $$PWD/bin
DEPENDPATH += $$PWD/bin
- 引入头文件 #include “bin/USB5630E.h”
- 根据官网提供的实例进行开发,提供的api文档也挺详细
AD模拟量输入实现代码:
USB5630E_AI_PARAM AIParam;
U32 nReadSampsPerChan = 0, nSampsPerChanRead = 0;
F64 fTimeout = 1.0; // 10秒钟超时
U32 nReadableSamps = 0;
HANDLE hDevice = INVALID_HANDLE_VALUE;
U16 nBinArray[USB5630E_AI_MAX_CHANNELS];// 第一步 创建设备对象
hDevice = USB5630E_DEV_Create("192.168.1.4");
if(hDevice == INVALID_HANDLE_VALUE)
{qDebug() << "DEV_Create Error";return 0;
}USB5630E_PORT_PARAM PortParam;
memset(&PortParam, 0, sizeof(PortParam));
for (int nIdx=0; nIdx<8; nIdx++) // 端口0
{PortParam.CHParam[0].nFunction[nIdx] = USB5630E_PORT_FUN_DIO; // 端口0只能为DIOPortParam.CHParam[0].nDIODir[nIdx] = USB5630E_PORT_DIR_DI; // 置为DI输入PortParam.CHParam[0].nDIOVal[nIdx] = 0; // nDIODir为输出时有效
}
for (int nIdx=0; nIdx<8; nIdx++) // 端口1(PFI0~7)
{PortParam.CHParam[1].nFunction[nIdx] = USB5630E_PORT_FUN_CTR; // 端口1设为CTR功能
}
for (int nIdx=0; nIdx<4; nIdx++) // 端口2(PFI8~15)
{PortParam.CHParam[2].nFunction[nIdx*2] = USB5630E_PORT_FUN_PFIIN;// 端口2(0 2 4 6设为PFI输入)PortParam.CHParam[2].nFunction[nIdx*2+1] = USB5630E_PORT_FUN_PFIOUT;// 端口2(1 3 5 7设为PFI输出)
}if (!USB5630E_Port_Config(hDevice, &PortParam))
{qDebug() << "Port_Config Error,请参考sys.log";USB5630E_DEV_Release(hDevice);return 0;
}
memset(&AIParam, 0, sizeof(USB5630E_AI_PARAM));// 通道参数
AIParam.nSampChanCount = 64; //64通道全打开
for(int nChannel=0; nChannel<USB5630E_AI_MAX_CHANNELS; nChannel++)
{AIParam.CHParam[nChannel].nChannel = nChannel;AIParam.CHParam[nChannel].nSampleGain = USB5630E_AI_SAMPGAIN_1MULT;AIParam.CHParam[nChannel].nRefGround = USB5630E_AI_REFGND_RSE;AIParam.CHParam[nChannel].nReserved0 = 0;AIParam.CHParam[nChannel].nReserved1 = 0;AIParam.CHParam[nChannel].nReserved2 = 0;
}
AIParam.nChanScanMode = USB5630E_AI_CHAN_SCANMODE_CONTINUOUS;
AIParam.nGroupLoops = 1;
AIParam.nGroupInterval = 1;
AIParam.nSampleSignal = USB5630E_AI_SAMPSIGNAL_AI;
AIParam.nSampleRange = USB5630E_AI_SAMPRANGE_N10_P10V;
AIParam.nClockSource = USB5630E_AIO_CLKSRC_LOCAL;
AIParam.nClockOutput = USB5630E_AIO_CLKOUT_DISABLE;// 时钟参数
AIParam.fSampleRate = 10000.0;
AIParam.nSampleMode = USB5630E_AI_SAMPMODE_ONE_DEMAND;
AIParam.nSampsPerChan = 1024;// 触发参数
AIParam.bDTriggerEn = TRUE;
AIParam.nDTriggerDir = USB5630E_AI_TRIGDIR_FALLING;
AIParam.nDTrigChannel = USB5630E_AIO_DTRIG_PFI08;AIParam.bATriggerEn = TRUE;
AIParam.nATriggerDir = USB5630E_AI_TRIGDIR_FALLING;
AIParam.fTriggerLevel = 0.0;
AIParam.nTriggerSens = 5;// 其他参数
AIParam.nReserved1 = 0;
AIParam.nReserved2 = 0;
AIParam.nReserved3 = 0;if(!USB5630E_AI_VerifyParam(hDevice, &AIParam))
{qDebug() << "参数有错,已被调整为合法值,请注意查看日志文件USB5630E.log, 按任意键继续...";
}// 第二步 初始化AI采样任务
if(!USB5630E_AI_InitTask(hDevice, &AIParam, NULL))
{qDebug() << "AI_InitTask Error,请参考sys.log";USB5630E_DEV_Release(hDevice);return 0;
}// 第三步 启动AI采样任务
if(!USB5630E_AI_StartTask(hDevice))
{qDebug() << "AI_StartTask Error";
}//nReadSampsPerChan = AIParam.nSampChanCount;
nReadSampsPerChan = 1;
// 第四步 发送软件触发事件(硬件外触发时不需要)
if(!USB5630E_AI_SendSoftTrig(hDevice))
{qDebug() << "AI_SendSoftTrig Error\n";
}
printf("Wait...\n");
if(!USB5630E_AI_ReadBinary(hDevice, nBinArray, nReadSampsPerChan, &nSampsPerChanRead, &nReadableSamps, fTimeout))
{qDebug() << "Timeout nSampsPerChanRead= " << nSampsPerChanRead;
}for(U32 nChannel=0; nChannel<AIParam.nSampChanCount; nChannel++)
{//qDebug 64 dateqDebug() << nChannel << (20.00/65536)*(nBinArray[nChannel]&0xFFFF)-10.00;
}double v0 = (20.00/65536)*(nBinArray[0]&0xFFFF)-10.00;
double v1 = (20.00/65536)*(nBinArray[1]&0xFFFF)-10.00;
double v3 = (20.00/65536)*(nBinArray[2]&0xFFFF)-10.00;
ui->lineEdit_AI0->setText(QString::number(v0, 'f', 2)+"V");
ui->lineEdit_AI1->setText(QString::number(v1, 'f', 2)+"V");
ui->lineEdit_AI2->setText(QString::number(v2, 'f', 2)+"V");// 第六步 停止AI采样
if(!USB5630E_AI_StopTask(hDevice))
{qDebug() << "AI_StopTask Error\n" ;
}// 第七步 释放AI采集任务
if(!USB5630E_AI_ReleaseTask(hDevice))
{qDebug() << "AI_ReleaseTask Error\n" ;
}// 第八步 释放设备对象
if(!USB5630E_DEV_Release(hDevice))
{qDebug() << "DEV_Release Error\n" ;
}return 0;
DA模拟量输出实现代码:
USB5630E_AO_PARAM AOParam;
U32 nWriteSampsPerChan = 0, nSampsPerChanWritten = 0;
U32 nAvailSampsPerChan = 0;
U16 nBinArray[USB5630E_AO_MAX_CHANNELS];
double fTimeout = 10.0;
HANDLE hDevice = INVALID_HANDLE_VALUE;// 第一步 创建设备对象
hDevice = USB5630E_DEV_CreateA("192.168.1.4");
if(hDevice == INVALID_HANDLE_VALUE)
{qDebug() << "DEV_Create Error";return 0;
}USB5630E_PORT_PARAM PortParam;
memset(&PortParam, 0, sizeof(PortParam));
for (int nIdx=0; nIdx<8; nIdx++) // 端口0
{PortParam.CHParam[0].nFunction[nIdx] = USB5630E_PORT_FUN_DIO; // 端口0只能为DIOPortParam.CHParam[0].nDIODir[nIdx] = USB5630E_PORT_DIR_DI; // 置为DI输入PortParam.CHParam[0].nDIOVal[nIdx] = 0; // nDIODir为输出时有效
}
for (int nIdx=0; nIdx<8; nIdx++) // 端口1(PFI0~7)
{PortParam.CHParam[1].nFunction[nIdx] = USB5630E_PORT_FUN_CTR; // 端口1设为CTR功能
}
for (int nIdx=0; nIdx<4; nIdx++) // 端口2(PFI8~15)
{PortParam.CHParam[2].nFunction[nIdx*2] = USB5630E_PORT_FUN_PFIIN;// 端口2(0 2 4 6设为PFI输入)PortParam.CHParam[2].nFunction[nIdx*2+1] = USB5630E_PORT_FUN_PFIOUT;// 端口2(1 3 5 7设为PFI输出)
}if (!USB5630E_Port_Config(hDevice, &PortParam))
{qDebug() << "Port_Config Error,请参考sys.log";USB5630E_DEV_Release(hDevice);return 0;
}
memset(&AOParam, 0, sizeof(USB5630E_AO_PARAM));// 通道参数
for(int nChannel=0; nChannel<USB5630E_AO_MAX_CHANNELS; nChannel++)
{AOParam.CHParam[nChannel].bChannelEn = TRUE;AOParam.CHParam[nChannel].nSampleRange = USB5630E_AO_SAMPRANGE_N10_P10V;AOParam.CHParam[nChannel].nReserved0 = 0;AOParam.CHParam[nChannel].nReserved1 = 0;AOParam.CHParam[nChannel].nReserved2 = 0;
}// 时钟参数
AOParam.fSampleRate = 100000.0;
AOParam.nSampleMode = USB5630E_AO_SAMPMODE_ONE_DEMAND;
AOParam.nSampsPerChan = 1024;
AOParam.nDelaySamps = 0;
AOParam.nClockSource = USB5630E_AIO_CLKSRC_LOCAL;
AOParam.nClockOutput = USB5630E_AIO_CLKOUT_DISABLE;// 触发参数
AOParam.bDTriggerEn = TRUE;
AOParam.nDTriggerDir = USB5630E_AO_TRIGDIR_FALLING;
AOParam.nDTrigChannel = USB5630E_AIO_DTRIG_PFI08;AOParam.bATriggerEn = TRUE;
AOParam.nATriggerDir = USB5630E_AO_TRIGDIR_FALLING;
AOParam.fTriggerLevel = 0.0;
AOParam.nTriggerSens = 5;// 其他参数
AOParam.nReserved0 = 0;
AOParam.nReserved1 = 0;
AOParam.nReserved2 = 0;// 事先校验工作参数的合法性
if(!USB5630E_AO_VerifyParam(hDevice, &AOParam))
{qDebug() << "参数有错,已被调整为合法值,请注意查看日志文件USB5630E.log, 按任意键继续...";
}// 第二步 初始化AO生成任务
if(!USB5630E_AO_InitTask(hDevice, &AOParam, NULL))
{qDebug() << "AI_InitTask Error,请参考sys.log";
}// 第三步 开始AO生成任务
if(!USB5630E_AO_StartTask(hDevice))
{qDebug() << "AO_StartTask Error\n";
}double data0 = 36044.8; //1v
double data1 = 36044.8; //1v
double data2 = 49152; //5v
double data3 = 49152; //5v
nBinArray[0] = data0;
nBinArray[1] = data1;
nBinArray[2] = data2;
nBinArray[3] = data3;
double v0 = (data0-32768)*20.00/65536.00; //+=10V
double v1 = (data1-32768)*20.00/65536.00;
double v2 = (data2-32768)*20.00/65536.00;
double v3 = (data3-32768)*20.00/65536.00;
ui->lineEdit_AO0->setText(QString::number(v0, 'f', 2)+"V");
ui->lineEdit_AO1->setText(QString::number(v1, 'f', 2)+"V");
ui->lineEdit_AO2->setText(QString::number(v2, 'f', 2)+"V");
ui->lineEdit_AO3->setText(QString::number(v2, 'f', 2)+"V");// 第三步:往生成任务中写入二进制原码波形数据
nWriteSampsPerChan = 1;
if(!USB5630E_AO_WriteBinary(hDevice, nBinArray, nWriteSampsPerChan, &nSampsPerChanWritten, &nAvailSampsPerChan, fTimeout))
{qDebug() << "AO_WriteBinary Error...\n";
}
memset(nBinArray, 0, sizeof(nBinArray));// 第四步 停止AO生成任务
if(!USB5630E_AO_StopTask(hDevice))
{qDebug() << "AO_StopTask Error\n";
}// 第五步 释放AO生成任务
if(!USB5630E_AO_ReleaseTask(hDevice))
{qDebug() << "AO_ReleaseTask Error\n";
}// 第六步 释放设备对象
if(!USB5630E_DEV_Release(hDevice))
{qDebug() << "DEV_Release Error\n";
}return 0;
DO数字信号量输出实现代码:
U32 nPort = 0, nPortData = 0;
HANDLE hDevice = INVALID_HANDLE_VALUE;
// 第一步 创建设备对象
hDevice = USB5630E_DEV_CreateA("192.168.1.4");
if(hDevice == INVALID_HANDLE_VALUE)
{qDebug() << "DEV_Create Error\n";return 0;
}USB5630E_PORT_PARAM PortParam;
memset(&PortParam, 0, sizeof(PortParam));
for (int nIdx=0; nIdx<8; nIdx++) // 端口0
{PortParam.CHParam[0].nFunction[nIdx] = USB5630E_PORT_FUN_DIO; // 端口0只能为DIOPortParam.CHParam[0].nDIODir[nIdx] = USB5630E_PORT_DIR_DO; // 置为DOPortParam.CHParam[0].nDIOVal[nIdx] = 0; // nDIODir为输出时有效
}
for (int nIdx=0; nIdx<8; nIdx++) // 端口1(PFI0~7)
{PortParam.CHParam[1].nFunction[nIdx] = USB5630E_PORT_FUN_DIO; // 端口0只能为DIOPortParam.CHParam[1].nDIODir[nIdx] = USB5630E_PORT_DIR_DO; // 置为DOPortParam.CHParam[1].nDIOVal[nIdx] = 0; // nDIODir为输出时有效}
for (int nIdx=0; nIdx<8; nIdx++) // 端口2(PFI8~15)
{PortParam.CHParam[2].nFunction[nIdx] = USB5630E_PORT_FUN_DIO; // 端口0只能为DIOPortParam.CHParam[2].nDIODir[nIdx] = USB5630E_PORT_DIR_DO; // 置为DOPortParam.CHParam[2].nDIOVal[nIdx] = 0; // nDIODir为输出时有效}
if (!USB5630E_Port_Config(hDevice, &PortParam))
{qDebug() << "Port_Config Error,请参考sys.log";USB5630E_DEV_Release(hDevice);return 0;
}// 第三步(1):写DIO端口,置数量字输出状态
nPortData = 127; //0111 1111
nPortData = 64; //0100 0000
nPort = 0;
if(!USB5630E_DIO_WritePort(hDevice, nPort, nPortData))
{qDebug() << "DIO_WritePort Error";
}
nPortData = 0;
if(!USB5630E_DIO_ReadPort(hDevice, nPort, &nPortData))
{qDebug() << "USB5630E_DO_ReadPort Error";
}
qDebug() << "Read back DO Port0 Data = " << nPortData;nPortData = 2; //0000 0010
nPort = 1;
if(!USB5630E_DIO_WritePort(hDevice, nPort, nPortData))
{qDebug() << "DIO_WritePort Error";
}
nPortData = 0;
if(!USB5630E_DIO_ReadPort(hDevice, nPort, &nPortData))
{qDebug() << "USB5630E_DO_ReadPort Error";
}
qDebug() << "Read back DO Port1 Data = " << nPortData;// 第四步 释放设备对象
if(!USB5630E_DEV_Release(hDevice))
{qDebug() << "DEV_Release Error\n";
}return 0;
阿尔泰USB5630数据采集卡相关推荐
- 音频振动数据采集卡的技术参数-阿尔泰科技
阿尔泰科技PXI8811数据采集板卡是一款为测试音频和振动信号而设计的高精度数据采集卡.提供8路同步模拟输入通道,24bit分辨率,单通道采样速率高达102.4kSPS.每通道集成独立的IEPE激励源 ...
- PXI8720桥信号数据采集卡-阿尔泰科技
阿尔泰科技PXI8720数据采集卡是- - 款基于惠斯通电桥而设计的应变/桥输入采集模块.该板卡提供8路同步模拟输入通.道,24bit 分辨率,单通道采样速率最高102.4 kS/s,支持四分之一.半 ...
- 模拟usb设备_高速USB数据采集卡
高速USB数据采集卡 同步.高速 USB-1602HS&1604HS 系列 该系列设备提供了最高4路模拟输入通道,采样率最高可达2MS/s/Ch,外加最高2路模拟输出,4路计数器和3路编码器测 ...
- 16位灰度数据成像_16位 250M双通道PCI数据采集卡 FCFR-PCI9808
FCFR-PCI9808 16位 250M双通道PCI数据采集卡FCFR-PCI9808(简称PCI9808)是PCI接口高速高精度数字化仪,双通道同步采集,PCI9808A指标:16位,双通道采样率 ...
- 嵌入式linux pcie网卡配置,嵌入式Linux下PCIE数据采集卡驱动开发
目录 5.4 中断 (34) 5.4.1 Linux中断处理架构 (34) 5.4.2 Linux中断编程 (34) 5.5 本章小结 (35) 第六章PCIE高速数据采集卡驱动程序开发 (36) 6 ...
- qt 二次开发 研华daq_研华DAQ数据采集卡编程
DAQ数据采集卡软件编程-只支持一个程序来访问设备 1.安装软件开发包(SDK)---DAQNAVI_SDK. 2.可识别到数据采集卡片. 3.加载C#编程的动态链接库-dll文件.(Automati ...
- python数据采集仪_数据采集卡支持python么深入理解Python生成器(Generator)
我们可以通过列表生成式简单直接地创建一个列表,但是受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,而且如果我们仅仅需要访问前面几个元素,那后面绝大多 ...
- 4通道并行同步模拟输入,1MSps、16Bit数据采集卡
简 介 PCI-1616数据采集卡是4通道同步并行数据采集卡,采用16Bit高精度A/D,每通道最高采样率可同时达到1MSps,高精度DDS 数字频率合成:配有最高512M字节DDR板载缓存及16K ...
- 一些数据采集卡使用过程中常见问题
关于USB数据采集卡的常见问题,当使用USB数据采集卡的时候,对传感器数据进行采集,通常我们是需要接变送器,来将传感器信号转换为标准的电压或者电流信号,而在接线时使用者或多或少都会出现这样那样的问题. ...
- PCI8524 并行8Ch24Bits100Ksps高精度数据采集卡
仪器概述: 高精度数据采集卡PCI8524完成8路电压/ICP速度传感器.加速度传感器.力传感器.扭矩传感器等信号采集,8个通道并行数据采集,内外触发.内外时钟. 应用领域 实时振动噪声分析及数据记录 ...
最新文章
- 一个Java程序员应该掌握的10项技能
- socket与文件描述符
- 【SPOJ - QTREE2】Query on a tree II(LCA,倍增)
- 颜宁:给实验室博士的一些忠告
- 首尔最高旋转餐厅后厨一探究竟
- android x86 uc,android x86 固件定制
- 安装及创建python虚拟环境
- 操作系统 - 调度算法(高响应比优先算法)
- mysql类目树关系的保存和全排列查询
- 高德 设置marker zoom_ZOOM云会议下载安装-ZOOM云视频会议最新版v5.3.53292
- win7备份工具_调解 win7系统一键还原精灵使用的具体方法 -win7系统使用教程
- 进入加密的QQ空间方法
- Java -- 每日一问:谈谈常用的分布式ID的设计方案?Snowflake是否受冬令时切换影响?
- 苹果电脑上不错的几款计时软件
- 小心啦!水上有“天眼”,查你没商量!
- 阿里云短信功能网址链接
- violate,synchronized
- 推荐 2 个 Spring Boot 工作流项目,轻松搞定工作流!
- 数据库作业:第七章: 数据库设计
- 图说三极管,太容易懂了!(史上最详细版本)