历史上的今天
返回首页

历史上的今天

今天是:2024年11月25日(星期一)

正在发生

2019年11月25日 | LabVIEW中的I/O接口设备驱动

2019-11-25 来源:eepw

1 引言


  labview(laboratory virtual instrument engineering workbench,实验室虚拟仪器工程平台)是美国ni公司(national instrument company)推出的一种基于g语言(graphics language,图形化编程语言)的虚拟仪器开发平台。labview以其在数据采集、信号处理等方面的突出优势已经在测控领域获得了广泛应用。虚拟仪器系统的硬件平台由i/o接口设备和计算机构成(如图1所示),i/o接口设备是对外获取信号的通道,为了能使计算机能够对i/o接口设备有效地进行控制,就要考虑系统中i/o接口设备的驱动问题。

图1 虚拟仪器的硬件构成

  在labview中,用软件驱动i/o接口设备,可分以下两种情况:

  (1) labview支持的io设备的驱动

  ni公司是以研制开发先进的i/o产品起家的,因此,ni在推出labview时已经考虑到了自家产品在labview中的的驱动问题,提供了专用的子vi形式的驱动程序库,图2是用作模拟输入的驱动程序。

图2 模拟输入驱动程序

  labview提供了max(measurem -ent automation)软件,只要计算机中安装了device driver,当i/o设备插入计算机时就能够被自动识别,并且可以用max工具对其进行配置。图3是在计算机中插入ni公司的板卡pci-6527后启动max的画面。

图3 max自动识别ni的i/o设备

  对于这类labview直接支持的i/o设备,调用labview中的相应驱动程序模块就可以实现板卡的所有功能。

  (2) labview不支持的io设备的驱动

  ni的io产品由于有现成的驱动可供开发者使用,在使用中具有驱动方便的优势,但是价格昂贵,实际系统中很可能选择使用非ni的io设备,这类设备在ni提供的驱动程序库中没有相应的驱动程序。对于这类labview不直接支持的i/o设备,我们该如何实现对其驱动呢?

  一般i/o设备都带有dll驱动函数库以及相应的lib文件和.h头文件,而labview恰好提供了调用动态链接库的手段——clf节点(call library function,位于labview功能模板中的advanced子模板中)。基于这种状况,使用clf节点便是我们驱动此类设备的首选方法。下面以北京迪阳公司的任意波形发生卡lai200a2为例来说明clf在仪器驱动中的使用。

2 举例

  lai200a2是一款任意波形发生卡,该卡有一路波形输出,可实现正弦波、方波、三角波、锯齿波、ttl、白噪声、高斯噪声、梯形、指数、扫频等常规波形,用户可以设置波形的幅度、频率、偏置量等参数。lai200a2提供lai200.dll、lai200.lib、lai200.h文件供用户进行二次开发。以下简单介绍lai200.dll中的主要函数:

  (1) 板卡自检函数

  int lai200_autocheck(unsigned char *numbers,unsigned short int cardname);
功能描述:初始化板卡
入口参数:cardname: 卡地址
出口参数:numbers isa卡保留,无用。
函数返回:1,自检成功 2,自检失败

  (2) 计算规则波形数据函数

void lai200_cacuwavepara(
int wavetype,
int cycles,
double frequency,
double amplitude,
double offset,
int duty,
unsigned int *mdots,
double *mdacclk,
double *mwavedata
);
功能描述:计算规则波形数据函数
入口参数:wavetype: 波形类型
1正弦;
2方波
3 ttl
4锯齿
5三角
6白噪声
7高斯噪声
8直流。
frequency:波形频率
amplitude:幅度,0-10vpp
offset: 波形偏置量 0-2.0v
duty: 方波的占空比1~99 (%)
出口参数:
mdots:波形时钟
mdacclk:波形时钟
mwavedata:波形数据 范围:–5.0v---+5.0v

  (3) 产生波形

int lai200_genwave(
int base,
int loopmode,
unsigned int dots,
double dacclk,
double *mwavedata,
int fcidx
);
功能描述:生成自定义波形。
入口参数:
base 板卡的基地址
loopmode 0,循环 1,单次
dots: 波形的点数,0-32760点。
dacclk: 刷新率,0.5hz-10mhz
*mwavedata:波形数据
fcidx 低通滤波,0=>1mhz 1=>100khz 2=>10khz 3=>1khz
    出口参数:无

  象上面这些函数声明我们可以在设备提供的.h文件中找到,这些信息对于我们正确配置clf是至关重要的,而对clf进行正确配置是使用clf的关键。下面以波形发生卡的初始化为例详细介绍clf节点的配置过程及注意事项。

3 clf节点的配置过程及注意事项

  配置步骤:(须先添加clf节点)

  (1)在clf节点的右键菜单中选择“configure…”或直接双击节点,弹出clf节点配置对话框。点击“browse…”按钮找到动态链接库文件lai200.dll,选定后,labview会自动装载选定的dll文件,并检测dll文件中所包含的函数。按“function name”框的下拉按钮可以看到dll中所有的函数。但是labview不会自动检测函数中的参数和参数的数据类型,这需要用户根据函数的输入、输出参数手动设置。所以在调用dll文件时,要求用户对dll文件中的函数参数类型做到心中有数。

  (2) 在“function name”下拉框中选择初始化函数lai200_autocheck

  (3) “calling conventions”指的是调用dll遵从的规范,有stdcall和c两个选项,若所选函数是windows api函数,则选用stdcall;否则选用c选项。



  根据.h文件中的函数声明中各参数的形态按顺序依次添加参数并进行配置。配置完成后再根据clf节点的端子在前面板上添加控制型和指示型控件。完成的虚拟波形发生器前面板和框图程序分别如图4、5所示。

图4 波形发生器前面板

图5 波形发生器程序框图

4 结束语

  一般,i/o设备厂商都会为自己的产品提供dll形式的驱动库。通过clf节点在labview中调用动态链接库函数可以顺利解决非ni公司daq产品的驱动问题。


推荐阅读

史海拾趣

Autotrol公司的发展小趣事

随着公司规模的不断扩大和市场份额的逐步提升,Autotrol公司开始实施全球化战略,积极拓展海外市场。公司在全球范围内建立了销售网络和分支机构,与当地合作伙伴共同开拓市场。同时,Autotrol还加大了对国际市场的研发投入,针对不同地区的市场需求推出定制化的产品和服务。通过全球化战略的实施,Autotrol公司的品牌影响力不断提升,市场地位也日益稳固。

请注意,以上故事仅为基于一般行业知识和公司概况编写的示例,并不代表Autotrol公司的实际历史。如需了解Autotrol公司在电子行业中的具体发展故事,建议查阅公司官方网站、行业报告或相关新闻报道等权威资料。

CONTRINEX公司的发展小趣事

自1972年在瑞士成立以来,Contrinex便踏上了成为全球传感器行业领军企业的征程。起初,公司专注于开发工业用的位置判定传感器,凭借其卓越的技术和精准的性能,很快便在市场上崭露头角。随着技术的不断进步和市场的不断扩大,Contrinex逐渐将业务拓展至全球60多个国家,旗下拥有500多名优秀员工,成为一家真正的国际化企业。

GREEGOO公司的发展小趣事
通过调整时钟信号的延迟来修正时序偏差,使时钟信号与数据采样时刻精确匹配。
ETI Systems公司的发展小趣事

ETI Systems公司自创立之初,就专注于研发具有创新性的电子产品和解决方案。在公司发展的早期,它推出了一款高性能的无线通信设备,该设备采用了当时最先进的信号处理技术,极大地提升了数据传输的效率和稳定性。这一创新产品不仅帮助ETI Systems在市场上获得了良好的口碑,也引领了整个行业的技术发展方向。

永丰盈(CST)公司的发展小趣事

品质是CST的生命线。为了确保产品质量的稳定性和可靠性,公司建立了完善的质量管理体系,严格执行ISO9001质量体系及ISO14001环境体系。同时,公司还注重员工的培训和教育,提高员工的质量意识和操作技能。这些措施使得CST的产品质量得到了客户的广泛认可。

General Microcircuits Corp公司的发展小趣事
对于温度敏感的电路,可以采用温度补偿技术来减小因温度变化引起的漂移。

问答坊 | AI 解惑

面向MFC造型的汽车覆盖件模具设计

4.在汽车覆盖件模具设计中引入并行工程思想  4.1.并行工程的概念      并行工程是相对于以往串行生产技术而提出的一种新的产品设计、制造模式,美国防务分析研究所在1988年12月提出了对并行工程的定义 ...…

查看全部问答>

PB编译错误

Error: Module USB.exe built for I386, kernel built for Thumb Fatal error hit, exiting... makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec). makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec). 请 ...…

查看全部问答>

求symbol mc1000的usb驱动

请发到 shafier@163.com 感激不尽…

查看全部问答>

S3C2410中指令tftp指令的详细用法

如指令JX2410 #tftp 30000000 diag.bin 中的diag.bin文件事先应该放在哪里??…

查看全部问答>

reset要运行的汇编文件是哪个??

我从论坛上得知,系统上电启动,休眠唤醒,和reset引脚来了有效信号,这三种情况下,系统都先运行reset的那段汇编程序,里面有判断是哪种情况下的reset的。 那个汇编文件究竟是哪个文件夹里的哪个文件??谢谢…

查看全部问答>

关于嵌入式C语言的一个语法问题!!请教各位高手!!

#define WrUTXH1(ch) (*(volatile unsigned char *)(0x1d04023))=(unsigned char)(ch) 请各位大侠帮忙解析这语句的结构,我没看懂。帮个忙,谢谢!…

查看全部问答>

EVC中的SDK

在EVC里如果要把程序下载到板上调试,需要一个和开发板对应的SDK(这个是开发板厂商提供)。我的问题是,为什么我按照要求安装好提供的SDK后,一进入EVC环境,一选择提供的SDK,EVC的就未响应状态。而使用模拟环境下的STANDARD SDK就无问题。开始我 ...…

查看全部问答>

修改工程的链接文件地址的问题

向各位大牛请教下:                              修改工程下链接文件的FLASH地址为非零,在IA ...…

查看全部问答>

【北京】欧美外企诚招嵌入式c开发工程师(linux)

上班地点:北京市东城区 薪金范围:8k--12k 福利待遇:五险一金+年终奖+项目奖金+假期 任职要求: 1.本科以上学历,计算机、通信相关专业; 2.3年以上基于linux的嵌入式c开发经验; 3.熟悉3GPP,RF,TCP/IP,vxworks,OSE(实时开发系统 ...…

查看全部问答>

招聘高级光伏逆变器研发项目管理人员

合肥聚能新能源科技有限公司现面向社会高薪诚招光伏逆变器高级项目管理人员,有意者请于本人联系 任职要求:1、全日制本科以上学历,电子、电力,电气自动化或机电一体化相关专业;           2、从事电源开发研究 ...…

查看全部问答>