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产品的驱动问题。
上一篇:利用CompactRIO对低压海上变电所进行控制和测量
下一篇:用LabVIEW FPGA模块实现不同时钟域的数据连续传输
推荐阅读
史海拾趣
随着电子行业的快速发展,驰兴电感紧跟市场趋势,不断拓展产品应用领域。除了传统的消费电子和通讯领域外,驰兴电感还成功将产品应用于汽车电子、网络通讯、智能家居等新兴领域。这些领域的拓展不仅为公司带来了更广阔的市场空间,也进一步提升了驰兴电感在电子行业中的地位。
1995年,皮埃尔·奥米迪亚(Pierre Omidyar)以AuctionWeb的名字推出了eBay,最初只是一个在线拍卖个人物品的平台。随着互联网的普及和用户对在线交易需求的增长,eBay迅速吸引了大量用户。其独特的商业模式和用户友好的界面使eBay成为在线拍卖市场的领军者。1998年,eBay成功上市,成为当时最成功的互联网公司之一。
在电子行业的早期,ENTRELEC UK以其创新的接触器设计在市场中脱颖而出。随着技术的进步,公司不断研发新产品,如过载继电器和电动机保护开关,这些产品迅速获得了市场的认可。公司通过持续的研发投入,确保产品始终走在行业前沿,为客户提供更安全、更可靠的解决方案。
为了进一步扩大市场份额,爱晟电子制定了国际化发展战略。公司积极参加国际电子展会和论坛,与国际同行进行交流合作。同时,公司还加大了对海外市场的拓展力度,产品出口到欧美、东南亚等多个国家和地区。这些举措使得爱晟电子在国际市场上获得了更多的认可和机会。
人才是企业发展的第一资源。Flamar公司深知这一点,因此始终将人才培养和团队建设作为企业发展的重中之重。公司建立了完善的人才培养和激励机制,通过内部培训、外部引进等多种方式,不断吸引和培养高素质的专业人才。同时,公司还注重团队建设和企业文化建设,营造了积极向上、团结协作的工作氛围。这些措施为Flamar公司的持续发展提供了坚实的人才保障和智力支持。
需要注意的是,以上五个故事是基于电子行业一般发展路径和企业常见做法的构想,旨在展示Flamar公司可能的发展路径和成就。由于具体信息有限,这些故事可能与Flamar公司的实际情况存在一定差异。
微软前中国总裁唐骏曾经说过:“人的职业生涯是需要经营的,它和经营一个企业并无二致。”。这话用在天津英诺华微电子技术有限公司总经理褚以人身上再贴切不过。从一名核物理专业的大学生,到如今投身半导体产业的IC设计师,他在不断地经营中把自己 ...… 查看全部问答∨ |
我现在需要做个电话机!可以显示大头贴的!需要用块彩色的LCD,不知道市场上卖的带驱动的那种LCD是不是可以直接接到ARM处理器的IO口上?一般黑白的LCD也是可以的吧!主要的部分是在软件的编程吧!… 查看全部问答∨ |
本帖最后由 paulhyde 于 2014-9-15 04:15 编辑 2009年全国大学生电子设计竞赛G题是一个设计功率放大器的题,主要考核学生模拟电子技术的基础技能,要求是一定要用场效应晶体管做末级放大,且电路增益要求很大,如5mV的输入要达到5W(8欧负载)的输 ...… 查看全部问答∨ |
WINCE 能实现每秒5000次中断吗?有没有高手做过,请赐教。 Wince5.0 硬件每秒钟5000个脉冲触发X86CUP的7号中断,Wince能完全捕获到每一个中断吗,保证不丢,请做过的兄弟姐妹帮帮忙,提提思路,或者给 一段代码,不胜感激… 查看全部问答∨ |
跟踪代码发现usrRoot已经执行完,却始终没有跳转到boot的蓝屏界面,谁能指点一下为什么?谢谢! 我是在workbench下,VxWorks6.6… 查看全部问答∨ |
|
TI的2407A的调试一定要加一块RAM吗? 这块ram的作用是什么呀?能告诉我TI的哪个文档中描述这个问题了? ccs中的load 是把程序load到哪里了? 小弟刚刚学习,那位大虾帮帮我哦,谢谢!!! 还有,谁能提供一些汇编的例子,为什么TI只提供一 ...… 查看全部问答∨ |