查字典论文网 >> LabVIEW调用WinIO编程调节放大器增益

LabVIEW调用WinIO编程调节放大器增益

小编:

摘 要: 在此详细介绍了如何使用LabVIEW调用WinIO来控制博来科技股份有限公司的单片机主板2I260A的DIO(数字输入/输出),以及通过控制2I260A 的DO来实现控制放大器电路模块中继电器的切换,从而达到编程调节放大器增益的目的。试验结果表明,这是一种比基于底层I/O端口控制更直接更高效的控制方法,完全可以满足放大器增益档位控制的要求,不仅提高设备整体的利用率、降低开发周期,而且效果良好且运行稳定。

关键词: LabVIEW; WinIO; 2I260A; DIO

WinIO is called by LabVIEW to adjust amplifier’s gain

Abstract: The method how to use LabVIEW to call WinIO to control DIO (digital input output) of microcontroller mainboard 2I260A made by LEX Computech Co., Ltd is described in detail. The switching of relay in control amplifier circuit module is realized by controlling DO of 2I260A to achieve the purpose of the amplifier gain adjustment. The experimental results show that this control method is more direct and more efficient than the control method based on the underlying I/O port, and can fully meet the requirements of the amplifier gain control. It improved the overall equipment utilization and reduced the development cycle.

Keywords: LabVIEW; WinIO; 2I260A; DIO

0 引 言

由于文章所讨论的系统的下位机采用了博来科技股份有限公司单片机主板2I260A,所以如果需要使用上述第一种方法来实现放大器增益的控制,需要额外购买硬件,成本太高,不划算;而且2I260A自带了8个DI和DO接口,如果将其利用,将提高设备的利用率。所以选择第二种方式性价比较高,但2I260A自带的资料全部都是调用WinIO.DLL来实现DIO的控制[3],使得使用I/O端口实现控制难度较大,所以急需使用一种新的方法来完成所需的I/O控制。

本文详细介绍了使用LabVIEW调用WinIO.DLL来快速实现2I260A上DO的控制,从而来控制放大器中继电器的切换,从而实现编程控制放大器增益[4]调节的目的。试验结果表明,这是一种比基于I/O端口控制更直接更高效的控制方法,完全可以满足放大器档位控制的要求,不仅提高了设备整体的利用率,而且效果良好且运行稳定。

1 概 述

博来科技股份有限公司于1990年在台北正式成立。该公司专门研发生产工业电脑应用的嵌入式系统。目前已在中国大陆、欧洲和美洲设有多个分支机构。该公司致力于主机板、平板电脑及各类标准系统产品的设计及制造,主打嵌入式系统的各项应用,以满足客户在网络、数字监控、网络存储设备、网路应用、多媒体查询终端、POS机和精简型电脑等方面应用需求。此外,该公司可根据客户需求提供OEM或ODM服务。

WinIO是由 Yariv Kaplan编写的动态链接库,它有如下特点:WinIO函数库通过使用内核模式下的设备驱动程序和其他一些底层编程技巧绕过 Windows安全保护机制,允许Windows 程序直接对 I/O口进行操作;最新版本是3.0,支持32位和64位平台,并可供多个应用程序同时使用。WinIO允许在Windows NT/2000/XP/2003/Vista/7和2008上直接访问I/O端口和物理内存[4]。

2 LabVIEW调用WinIO实现放大器增益控制

2.1 为什么使用WinIO

其实LabVIEW中已经存在对I/O进行操作的函数,如图1所示。

E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\17t1.tif

图1 LabVIEW I/O端口函数

但是,以下几个因素必须考虑:

由于获得的资料(以及demo程序)都是用C或VB编写的,关于I/O具体的地址定义及地址的含义不一定非常清楚,所以使用该I/O端口函数的难度有些大,这方面的资料获取比较难[5]。

LabVIEW毕竟和其他文本语言(比如C语言)还是有所区别,直接对底层程序的开发还存在一定的限制,比如对内存和指针操作就没有C语言那么灵活。而且由于操作系统的某些限制,直接编程来进行底层操作可能会遇到很多困难,而使用前人编写的一些现成的模块来绕过这些底层细节则会轻松很多,而且程序复杂度大大降低。基于上述几点,考虑使用WinIO库来代替I/O端口操作,以减轻工作量。

2.2 LabVIEW对WinIO的调用

这部分涉及到LabVIEW对DLL的操作[6],属于LabVIEW的高级应用。下面以InitializeWinIo函数为例介绍如何调用:

第一步:将下载的WinIO.dll放置到和将要调用的VI相同的目录下;

第二步:新建一个VI,保存VI到上一步的目录中并打开该VI的程序框图,在其中添加调用库函数节点;

第三步:双击调用库函数节点,打开调用库函数对话框,如图2所示。

图2 LabVIEW调用库函数对话框

因为函数原型为bool _stdcall InitializeWinIo(),所以接下来配置该对话框,如图3和图4所示。

E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\17t3.tif

图3 函数选项卡设置

E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\17t4.tif

图4 参数选项卡设置

单击确定按钮,然后完成如图5所示[6]程序框图。

E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\17t5.tif

图5 测试InitializeWinIo函数调用是否成功

执行该VI,如果返回值是0,则表示调用成功。其他函数的设置根据函数原型同理设置即可。至此,WinIO函数的调用测试已经完成。

2.3 使用LabVIEW调用WinIO控制2I260A的DIO

WinIO中的函数调用是有顺序的:InstallWinIoDriver函数→InitializeWinIo函数→DIO操作函数→ShutdownWinIo函数[7]。必须按照上面的顺序来调用,不然会出现意想不到的结果。

根据博来科技股份有限公司官方网站(http://www.lex.com.tw)提供的2I260A的DIO 操作demo程序的VB版本[8],可以很轻松地知道图6中的SetDOValue即是操作2I260A的DIO的函数。

E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\17t6.tif

图6 VB代码截图(设置DO)

这里只是把VB中WinIO.dll中函数的调用换成LabVIEW库函数调用,其他语句用LabVIEW标准语句来实现即可[9],如图7~图9所示。

E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\17t7.tif

图7 WriteI2CByte函数的LabVIEW实现

经过测试和验证,该方法确实可以控制2I260A的DO,效果良好,运行稳定。如需控制DI,方法类似。

2.4 使用2I260A的DO控制放大器增益

完成对2I260A的DO的控制后,将放大器电路板的继电器控制端连接到这些DO上,即可控制放大器电路中继电器的输出,最多可以控制4个继电器,在档位不多的情况下均可满足,从而达到控制放大器增益的目的。

E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\17t8.tif

图8 SetDOValue函数的LabVIEW实现 E:\王芳\现代电子技术201506\现代电子技术15年38卷第6期\Image\17t9.tif

图9 LabVIEW实现DO的操作

放大器部分的电路是由OPA820放大器构成的增益可调节放大器电路。

3 结 语

与LabVIEW自带的I/O端口函数相比,通过使用LabVIEW调用WinIO实现DIO的控制确实大大减少了工作量,并且没有碰到任何关于底层I/O相关的操作系统权限问题。这种方法完全可以满足放大器档位控制的要求,不仅提高了设备整体的利用率和节省了大量的时间,而且效果良好且运行稳定。

将WinIO的每个函数进行LabVIEW封装后,下次使用时只需直接调用所需功能的VI,比如,设置DO封装完成后就是一个SetDO.vi,这样以后每次调用就直接调用该VI即可,就能很方便地实现了模块化程序的编写,可谓是一劳永逸,大大提高了工作效率。

参考文献

[2] 王玉伟,裴东兴,祖静.LabVIEW下基于并口的数据通信[J].电子测量与仪器学报,2008(z2):22?24.

[3] 袁军,谭永东,任俊.利用WinIO实现并口数据通信[J].计算机与现代化,2009(8):49?53.

[4] 张剑平.程控放大器及其精度研究[J].仪器仪表学报,2006(z2):27?29.

[6] Anon. WinIO [DB/OL]. [2014?04?15]. http://baike.baidu.com.

[7] 阮奇桢.我和LabVIEW:一个NI工程师的十年编程经验[M].北京:北京航空航天大学出版社,2009.

[8] 陈学树,刘萱.LabVIEW宝典[M].北京:电子工业出版社,2011.

热点推荐

上一篇:Node.js:一种新的Web应用构建技术

下一篇:如何对幼儿进行德育教育论文 幼儿园关于德育教育之类的论文