【VC++开源代码栏目提醒】:网学会员在VC++开源代码频道为大家收集整理了“LabVIEW外部代码接口技术的研究与应用 - 讲义教程“提供大家参考,希望对大家有所帮助!
LabVIEW外部
代码接口技术的研究与应用StudyandApplicationofExternalCodeInterfaceTechnologyinLabVIEW白国花 王文玺中北大学仪器科学与动态测试教育部重点实验室山西太原030051摘 要:LabVIEW是一种功能强大的图形化虚拟仪器编程软件广泛应用于仿真、数据采集、仪器控制、测量分析等嵌入式应用系统的开发。
然而在需要进行大量数据运算处理和数据采集时LabVIEW显得有些力不从心。
为此本文研究了LabVIEW外部接口技术提出了LabVIEW与其他软件之间接口的方法并且通过举例验证了各种方法的可行性从而有效的解决了问题。
关键词:LabVIEW虚拟仪器外部接口数据运算处理数据采集1 LabVIEW与Matlab的接口方法在测试
系统设计和软件开发过程中数学分析与信号处理是两个不可缺少的重要内容。
LabVIEW对于一些需要进行大量数据运算处理的复杂应用以及某些复杂的控制算法如神经
网络、模糊理论等的实现
问题上没有现成的函数库。
而MATLAB拥有上述函数强大的科学计算功能和友好易用的开发环境使之成为计算机辅助设计与分析的首选工具但实时监控和控制界面设计相对薄弱。
所以在实际工程应用中将二者结合起来取长补短具有非常实用的价值。
LabVIEW将数据采集和测试分析中
常用的数学和信号分析算法程序集成在一起所有的数学分析节点都集中在AllFunction-Analyze-Mathematics子模板中。
在此模板中有一MatlabScript节点利用此节点就可以实现在LabVIEW中对Matlab语言的调用。
需要注意的是使用MATLAB脚本节点的必要条件是计算机上同时安装了MATLAB软件。
MATLAB脚本节点的外形是一个大小可缩放的框使用时将脚本节点放置到框图程序中大小可调。
放置好节点后有两种方法向节点中输入MATLAB脚本。
一种方法是直接在脚本节点框内输入MATLAB脚本。
另一种方法是导入已经写好的M文件即Matlab脚本可以先在Matlab下调试无误后再导入到MatlabScript节点中这可通过在节点框的边界上或节点框内右击后的菜单中选择Import…打开一个名为“chooseascript”的文件选择对话框从中选取要导入的M文件。
右击其边界在菜单中选择AddInput或AddOutput可为脚本节点创建输入、输出变量的端口端口的小方块内用于输入变量名。
接口方法举例如下:构建一个使用Matlab脚本节点的VirtualInstrument简称VI程序目标是在Matlab中产生并绘图显示给定数量的随机数同时脚本还将计算随机数的平均值用于输出。
为脚本节点添加输入和输出。
输入变量是要产生的随机数数量而输出变量是随机数的平均值。
Matlab脚本节点将使用Matlab图形功能绘制随机数图形。
该程序的LabVIEW前面板和框图设计及运行结果如图1图2MATLAB运行结果如图3所示:图1 前面板运行结果图 图2 框图设计图图3 MATLAB运行结果图 图4 子函数WriteToSpreadsheetFile1vi图标图以上方法实现它们的混合编程简单实用但是没有脱离Matlab的环境因此为了开发独立的应用程序实现LabVIEW和Matlab的无缝集成文献1详细介绍了三种方法即COM组件法、中间文件传递法以及
VC参数类型转化法。
以上方法各有优缺点读者可根据实际情况选择适合自己的方法。
2 LabVIEW与Word、Excel的接口方法考虑到用户经常使用Labview之外的表单应用程序如Word、Excel等访问数据这里我们讨论了将数据写入表单的方法。
利用子函数WriteToSpreadsheetFile 38 《计量与测试技术》2008年第35卷第5期?? 1994-2011 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net1vi可以很好解决这个问题。
这样保存的数据信息可以使用表单应用软件Excel或文本编辑器Word等打开并查看。
子函数WriteToSpreadsheetFile.vi的调用可以在Function选项板的AllFunction中的FileI/O中找到。
图标如图所示。
实现的功能是:将一维或二维单精度数组转换为文本字符串并将这个字符串写入一个新的文本字节流文件中或将其添加到现存文件中。
如果用户没有指定路径名称将会出现一个文件对话框来提示用户输入文件名称。
在这个子VI中可以在数据之间使用诸如制表符或逗号等表单定界符。
接口方法举例如下:做一个曲线拟合。
要求实现如下功能:①随机采集10个点②使用多项式拟合GeneralPolynomialFit方式③可显示实验数据和拟合后数据④可显示拟合系数均方差⑤可以设计多项式阶数⑥可以保存实验数据和拟合数据即写入表单文件。
该程序的前面板和框图
设计及运行结果如图56所示。
其中将数据写入表单应用程序的设计通过将实验数据和拟合数据两类数据构成的二维数组连接到子函数WriteToSpreadsheetFile1vi图标上即可实现如图7所示。
运行完该程序后在Word、Excel等表单应用
软件中就可以查看到实验数据和拟合数据如图89所示。
图5 前面板运行结果图 图6 框图设计图图7 将数据写入表单的方法图 图8 Word界面数据显示图3 LabVIEW访问Access数据库的方法面对大量的数据信息采用数据库技术能够有效地管理和组织数据是现代测试测量系统的发展趋势。
但是现有的LabVIEW版本本身并不具备数据库访问功能因此LabVIEW需要用其它辅助的方法来进行数据库访问。
文献2指出在LabVIEW中访问数据库有多种方式论文作者推荐第一种方法。
即:利用NI公司的附加工具包中的数据库接口工具包LabVIEWSQLToolkit进行数据库访问。
该工具包集成了一系列的高级功能模块这些模块封装了大多数的数据库操作和一些高级的数据库访问功能。
它的优点是易于理解操作简单用户可以不使用SQL语句就可以实现数据库记录的
查询、添加、修改以及删除等操作使用SQL语句能够实现复杂的数据库操作功能强大。
缺点是价格昂贵。
这也限制了它的推广应用。
在实际应用中用户究竟采用哪种方法要从项目难易程度、自身编程水平和
经济因素等方面综合考虑。
图9 Excel界面数据显示图 图10 判断两数相等的程序框图4 LabVIEW调用C的方法当前虚拟仪器技术已广泛应用到各种自动化测试领域中虚拟化已经成为仪器领域的发展方向。
但是在进行一些数据处理和开发数据采集卡驱动
程序时Lab2VIEW的图形化编程语言就难以实现。
而这正是C语言的优势所在。
C语言是目前公认的功能非常强大的程序语言。
现在大多数厂商生产的数据采集DataAcqui2sition简称DAQ设备的驱动程序都是用C语言开发的因此我们通过使用CINCodeInterfaceNode节点技术调用这些C语言开发的驱动程序就可以在Lab2VIEW中使用多种DAQ设备。
通过CIN节点技术可以在LabVIEW中调用C语言源
代码。
CIN是一个位于LabVIEW框图程序窗口的带有输入输出的图标。
将需要调用的外部
代码编译成LabVIEW所能识别的格式后与此节点相连当此节点执行时LabVIEW将自动调用与此节点相连的外部
代码并向CIN传递特定数据结构。
使用CIN技术用户可向CIN传递任意复合的数据结构并且通常情况下使用CIN技术可获得较高的程序效率因为LabVIEW中数据的存储格式遵循了C语言中数据的存储格式二者完全相同。
CIN节点调用路径为:FunctionAdvancedCIN。
用“所见即所得”的设计方式从图形库中直接“拖出”所需的模块设置路径及结果显示前面板共分为五步:①创建空CIN节点②确定CIN节点的输入、输出端口和参数类型。
CIN输入输出口参数的数据类型由连白国花等:LabVIEW外部
代码接口技术的研究与应用 39 ?? 1994-2011 China A
cademic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net2012-05-182012-05-182012-05-182012-05-182012-05-182012-05-18接在输入输出口上的控件的数据类型决定③创建与编译c源文件④创建lsb文件⑤加载lsb文件。
注意:在实际使用中必须将CIN源
代码编译成LabVIEW所能识别的格式即后缀名为1lsb的目标
代码文件。
编译的过程比较复杂编译方法参见文献3。
LabVIEW调用C的方法举例如下:设计一个判断两数相等的程序当两数相等时指示灯亮反之指示灯不亮。
设计步骤如下:1在BlockDiagram上建立CodeInterfaceNode并且加入AB两个输入一个Compare的Boolean的输出如图10所示。
2在CodeInterfaceNode上点击鼠标右键选中Create1cFile...在C编译环境中会看到在LabVIEW的BlockDiagram上所建立的AB及Compare元件的数据类型的定义。
3在/3Insertcodehere3/里编辑一个if111else的简单判断程序当AB的时候CompareTrue反之为False。
程序段如下:include”extcode1h”MgErrCINRunfloat643Afloat643BLV2Boolean3CompareMgErrCINRunfloat643Afloat643BLV2Boolean3Compareif3A3B3CompareLVTRUEelse3CompareLVFALSEreturnnoErr4编辑完成进行存档并且利用
VC环境程序编译成ABC1lsb文件存档。
5返回到LabVIEW的BlockDiagram中在CodeInterfaceNode上点击鼠标右键选择LoadCodeRe2source11选项。
然后开启ABC1lsb即完成设计。
5 结论本文详细分析了以上各种软件如LabVIEWWordExcelAccessmatlabC语言的优势和不足将几种语言有机结合优势互补提出了LabVIEW与其他软件之间的多种接口方法。
这样充分利用了其他软件的功能弥补了Lab2VIEW自身的不足编写出功能更加强大的LabVIEW应用程序从而增强了LabVIEW的整体功能。
通过以上具体实例证明了LabVIEW各种外部
代码接口技术的可行性。
当然本文介绍的LabVIEW与其他软件之间的接口方法出发点是介绍简单实用的方法在此归纳的方法不一定全面发表此文以期和读者继续探讨。
本文作者的创新点是:①明确LabVIEW语言存在的弊端探讨了多种接口方法并予以验证证明了其可行性②本研究涉及到多种语言并实现了几种语言的优势互补有一定新颖性。
将几种语言有机结合、优势互补是一个有意义的研究方向。
参考文献1王禹林熊振华丁汉1LabVIEW与Matlab的无缝集成1
计算机应用200626卷第3期:69570212贾海朋彭 张正平贺松1LabVIEW访问Access数据库的研究.微计算机信息200723卷第11期:10210413陈金平王生泽吴文英1LabVIEW与C语言接口的方法1自动化仪表200526卷第7期:21231作者简介:白国花女在读博士。
工作单位:中北大学仪器科学与动态测试教育部重点实验室。
通讯地址:030051山西省太原市。
王文玺中北大学新缘高科技中心太原030051。
收稿时间:2008-03-21上接第36页参考文献1黄廷茂彭志霞1JJG512-2002白度计检定规程1北京:中国计量出版社200212李慎安刘风1JJF1059-1999测量不确定度评定与表示1北京:中国计量出版社19991作者简介:宋雨男工程师。
工作单位:哈尔滨市计量检定测试所。
通讯地址:150036哈尔滨市香坊区珠江路5号。
收稿时间:2007-11-06上接第37页扩展不确定度为U95t9550??ucΔX2101×01961193mmol/L5 测量不确定度的
报告与表示尿液分析仪GLU示值测量结果的扩展不确定度为U951193mmol/L veff50参考文献1《JJF1129—2005》尿液分析仪校准规范.2《JJF1059—1999》测量不确定度评定与表示.作者简介:张新军男助理工程师。
工作单位:新疆伊犁州计量检定所。
通讯地址:835000新疆伊定市新伊犁河路怡安房产三楼。
张月梅伊犁师范学院化学系伊犁835000。
收稿时间:2008-03-07 40 《计量与测试技术》2008年第35卷第5期?? 1994-2011 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net2012-05-182012-05-182012-05-182012-05-182012-05-182012-05-18file:///C/Users/Administrator/Desktop/新建文本
文档.txt
通信/电子电脑、 杂志、 会议、 劳动合同、 生活休闲、 考试、 股票 file:///C/Users/Administrator/Desktop/新建文本
文档.txt2012/7/5 12:11:23