历史上的今天

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

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

发布者:Qinghua2022 来源: eepw关键字:LabVIEW  I  O接口  设备驱动 手机看文章 扫描二维码
随时随地手机看文章

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产品的驱动问题。


关键字:LabVIEW  I  O接口  设备驱动 引用地址:LabVIEW中的I/O接口设备驱动

上一篇:利用CompactRIO对低压海上变电所进行控制和测量
下一篇:用LabVIEW FPGA模块实现不同时钟域的数据连续传输

推荐阅读

机器人系统以功能及系统实现为载体,通过自主或半自主的感知、移动、操作或人机交互,体现类似于人或是生物的智能水平;它能够扩展人在尺度、时间、空间、环境、情感、智能以及精度、速度、动力等方面所受到的约束和限制,并为人服务。 中国作为世界最大的机器人消费国,除了工业机器人连续 5 年成为世界最大的市场外,服务机器人的需求也增长显著。...
负面新闻缠身,形象跌落 一个企业的口碑与形象好比是一把剑,正所谓十年磨一剑,断剑一瞬间。而目前的联想就处在负面新闻的泥沼里,想要爬出来要的不仅是努力,还需要时间的累积。似乎已经很久没有人再提到那个“如果没有联想,世界将会怎样”的联想了,联想是从何时开始进入“人人喊打”模式的?这还要追溯到 2016 年5G 标准投票事件,当时华为以一票之...
今年早些时候推出的摩托罗拉Edge Plus,标志着该品牌在中断几年后重返旗舰市场。现在,根据TechnikNews与Adam Conway报道,该公司似乎很快就会推出又一款高端手机。据悉,即将推出的摩托罗拉高端手机型号为XT2125,代号为 “Nio”。这款手机将搭载与摩托罗拉Edge Plus类似的高通骁龙865 SoC。现在,摩托罗拉Nio其他主要规格,包括显示屏尺寸...
一、仪器型号:R&S(罗德施瓦茨)FSV40频谱分析仪。二、检测过程:仪器开机进行自检操作,自检自校无法正常通过,整个频段测量电平低。三、检修过程:拆机检测后发现前端板损坏,微波板损坏。更换前端板损坏组件,更换微波板损坏组件四、修复后检测:开机进行自检,此故障完美修复。在使用频谱仪时要注意细节,首先对说明书要详细阅读,再照着操作。使用前...

史海拾趣

问答坊 | AI 解惑

一位用激情经营人生的本土IC创业者(上)

微软前中国总裁唐骏曾经说过:“人的职业生涯是需要经营的,它和经营一个企业并无二致。”。这话用在天津英诺华微电子技术有限公司总经理褚以人身上再贴切不过。从一名核物理专业的大学生,到如今投身半导体产业的IC设计师,他在不断地经营中把自己 ...…

查看全部问答∨

谁用过LCD近进来帮我一下吧!

我现在需要做个电话机!可以显示大头贴的!需要用块彩色的LCD,不知道市场上卖的带驱动的那种LCD是不是可以直接接到ARM处理器的IO口上?一般黑白的LCD也是可以的吧!主要的部分是在软件的编程吧!…

查看全部问答∨

精巧实用的震感报警器

精巧实用的震感报警器…

查看全部问答∨

usbavrjtag cp210x_driver

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 usbavrjtag cp210x_driver  …

查看全部问答∨

2009年全国大学生电子设计竞赛G题低频功率放大器题解分享

本帖最后由 paulhyde 于 2014-9-15 04:15 编辑 2009年全国大学生电子设计竞赛G题是一个设计功率放大器的题,主要考核学生模拟电子技术的基础技能,要求是一定要用场效应晶体管做末级放大,且电路增益要求很大,如5mV的输入要达到5W(8欧负载)的输 ...…

查看全部问答∨

WINCE 能实现每秒5000次中断吗?有没有高手做过,请赐教。

Wince5.0 硬件每秒钟5000个脉冲触发X86CUP的7号中断,Wince能完全捕获到每一个中断吗,保证不丢,请做过的兄弟姐妹帮帮忙,提提思路,或者给 一段代码,不胜感激…

查看全部问答∨

求助:usrRoot已经执行完,看不到蓝屏的boot界面?

跟踪代码发现usrRoot已经执行完,却始终没有跳转到boot的蓝屏界面,谁能指点一下为什么?谢谢! 我是在workbench下,VxWorks6.6…

查看全部问答∨

小菜求教

我想学习windows ce方面的开发,我以前学C++的,没有学过C#,我经常用的是vs2005。 我想问一下,用vs2005进行windows ce方面的开发,是否要学些C#? 学习C#又什么好的教材吗? 谢谢了…

查看全部问答∨

侃侃我的成果

本人长期从事单片机开发应用,积累了一定的经验。本人将毕生研究心得集成了文字,放在我的博客里,希望大家光临指导,并给点意见。我的博客地址;http://blog.mcuol.com/user/Article/500.html…

查看全部问答∨

2407A的调试???

TI的2407A的调试一定要加一块RAM吗? 这块ram的作用是什么呀?能告诉我TI的哪个文档中描述这个问题了? ccs中的load 是把程序load到哪里了? 小弟刚刚学习,那位大虾帮帮我哦,谢谢!!! 还有,谁能提供一些汇编的例子,为什么TI只提供一 ...…

查看全部问答∨
小广播
最新测试测量文章

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved