LabVIEW与Matlab的无缝集成_王禹林
- 格式:pdf
- 大小:761.67 KB
- 文档页数:5
LabVIEW与PLC通信实现LabVIEW与工业自动化设备的集成实验室虚拟仪器工作环境(LabVIEW)是一种广泛应用于工程领域的集成开发环境。
它提供了一套强大的工具和函数库,用于开发、调试和控制各种自动化系统。
而工业自动化设备控制的核心组件之一是可编程逻辑控制器(PLC)。
本文将探讨如何利用LabVIEW与PLC进行通信,实现LabVIEW与工业自动化设备的集成。
首先,LabVIEW与PLC通信的基本原理是通过采用适当的通信协议,实现两者之间的数据交换。
常见的通信协议包括Modbus、Profibus、CAN等。
具体选择哪种协议取决于PLC的型号和通信需求。
其次,实现LabVIEW与PLC通信的步骤如下:1. 设定通信参数:首先,需要在LabVIEW中设置与PLC通信的参数,包括通信端口、波特率、校验位等。
这些参数需要与PLC的设置保持一致,以确保通信的正常进行。
2. 建立通信连接:LabVIEW提供了各种通信协议的工具包,可以简化通信连接的建立。
通过配置通信端口和地址,LabVIEW可以与PLC建立连接,并获取或发送数据。
3. 读取PLC数据:一旦建立了通信连接,就可以使用LabVIEW的读取函数来获取PLC中存储的各种数据。
这些数据可以用于监测PLC的状态,或作为LabVIEW控制算法的输入。
4. 控制PLC操作:除了读取数据,LabVIEW还可以通过写入函数来控制PLC的操作。
通过向PLC发送指令,LabVIEW可以实现对PLC的远程控制,例如开关某个设备、改变参数设置等。
5. 设定时序与触发机制:为了实现LabVIEW与PLC的同步操作,需要设定适当的时序和触发机制。
LabVIEW提供了定时器和触发器等工具,可以根据需要来设定数据采集或控制操作的时间间隔和条件。
除了以上的基本步骤,还可以结合LabVIEW的图形化编程特点,进行数据处理和界面设计。
LabVIEW可以对PLC传感器采集的数据进行实时分析和处理,通过图表、曲线等形式直观地展示数据。
MATLAB与外部软件集成中常见问题与解决方法在科学和工程领域,MATLAB(Matrix Laboratory)是一种常用的高级计算软件,被广泛用于数学建模、数据分析和可视化等方面。
虽然MATLAB自身已经拥有强大的功能,但有时需要集成外部软件以满足更复杂的需求。
这篇文章将讨论在MATLAB与外部软件集成过程中常见的问题,并提供解决方法。
1. 软件版本兼容性问题在集成外部软件时,最常见的问题是软件版本不兼容。
MATLAB本身每年都会推出新版,而其他软件可能也在不断更新。
因此,当使用较旧版本的MATLAB 时,与新版外部软件的兼容性可能会出现问题。
解决方法:- 首先,确保使用最新版本的MATLAB。
MATLAB和外部软件供应商通常会为用户提供最新版本,以解决之前版本的兼容性问题。
- 如果无法升级MATLAB,可以尝试通过更新外部软件来解决。
大多数外部软件供应商也会提供与较旧MATLAB版本的兼容性。
- 如果以上方法不起作用,可以考虑使用兼容性更好的外部软件,或者寻求其他集成方案,例如自行编写代码以替代外部软件。
2. 接口调用问题集成外部软件的关键是正确调用其接口,以实现数据传递和功能调用。
在这一过程中,可能会遇到一些问题。
解决方法:- 首先,要仔细阅读外部软件的文档,以了解正确的接口调用方式。
文档通常会提供示例代码和详细说明,帮助用户正确地调用接口。
- 如果继续遇到问题,可以在MATLAB官方论坛或外部软件的支持平台上寻求帮助。
在这些社区中,有许多经验丰富的用户和开发人员,可以提供有关接口调用问题的解决方案。
- 此外,还可以使用调试工具,例如MATLAB的调试器。
调试器可以帮助用户找到接口调用中的错误,并提供详细的错误信息。
3. 数据格式转换问题MATLAB和外部软件可能使用不同的数据格式来表示和处理数据。
在集成过程中,可能需要将数据从一种格式转换为另一种格式。
解决方法:- 首先,需要了解MATLAB和外部软件支持的数据格式。
Labview调用C语言、Matlab脚本节点以及库函数节点的方法Labview调用C语言的方法CIN(Code InterfaceNode)节点是LabVIEW中用来调用C/C++代码的功能节点。
它与动态链接库的不同之处在于,它能够将代码集成在VI中作为单独的一个VI发布,而不需要多余的文件。
另外,它提供了函数入口,它可以根据用户提供的输入输出自动生成函数入口代码,从而使用户专心关注代码功能而不用为函数声明、定义等语句费心。
因此CIN节点与DLL在不同的场合有不同的优势,但是CIN节点的使用比调用DLL要复杂得多。
由于LabVIEW中数据的存储格式遵循了C语言中数据的存储格式,并且二者完全相同,所以用户可以向CIN传递任意复合的数据结构。
另外,CIN比图形化语言可获得更高的执行效率。
注意:对于完全相同的代码,CIN和DLL的执行效率是完全一样的。
如果要使用CIN节点,你必须安装了C编译器。
在Windows下,CIN支持以下编译器:Microsoft Visual C++Symantec CCIN节点必须调用.lsb文件。
.lsb文件是通过外部编译器与CINTools工具结合将C代码编译生成的。
下面我们通过一个Step byStep的实例来看如何在LabVIEW中实现CIN节点调用,本例所用外部编译器为MicrosoftVisual C++6.0。
第一步:在程序框图放置一个空CIN节点;CIN节点位于FunctionsPalette的Connectivity->Libraries& Executables->Code InterfaceNode。
第二步:创建CIN节点的输入输出端口;初始情况下,CIN只有一对端口:一个输入端口和一个输出端口。
向下拉大节点边框或右击节点端口选择AddParameter,可以为节点增加输入输出端口。
CIN 节点的端口都是成对出现的,因为CIN节点端口传递的是指针,所以该参数既可以作为输入又可以作为输出。
如何在LabVIEW中进行自动化测试集成LabVIEW是一款强大的图形化编程环境,可以用于各种编程任务,包括自动化测试集成。
本文将介绍如何在LabVIEW中进行自动化测试集成,并提供相关的操作步骤和技巧。
I. 简介自动化测试集成是指利用计算机程序对待测系统进行自动化测试的过程。
LabVIEW提供了丰富的工具和功能,可以方便地进行自动化测试集成。
II. 准备工作在开始使用LabVIEW进行自动化测试集成之前,需要准备以下几项工作:1. 安装LabVIEW软件并激活许可证。
2. 确保待测系统已连接到计算机,并且具备适配LabVIEW的接口。
3. 提前了解待测系统的测试需求和相关文档。
III. 创建测试程序1. 打开LabVIEW软件并创建一个新的VI(Virtual Instrument)文件。
2. 根据测试需求,选择适当的控件和函数,并将其拖放到VI面板上。
3. 根据需要,配置控件的属性和参数。
IV. 数据采集与分析1. 在VI面板上添加适当的数据采集控件,如示波器、函数发生器等。
2. 设置数据采集控件的参数,并通过连接线将其与测试程序的输入和输出终端相连。
3. 运行测试程序,并对采集到的数据进行分析和处理。
V. 结果显示与输出1. 在VI面板上添加适当的结果显示控件,如LED指示灯、数字显示等。
2. 将测试程序的输出与结果显示控件相连。
3. 运行测试程序,并观察结果显示控件的输出。
VI. 自动化控制与调度1. 在VI面板上添加适当的自动化控制控件,如定时器、触发器等。
2. 设置自动化控制控件的参数,配置测试程序的自动化调度。
3. 运行测试程序,并观察自动化控制控件的效果。
VII. 脚本编写与执行1. 在LabVIEW中,可以使用G语言编写脚本,用于批量执行测试程序。
2. 根据需要,编写脚本并保存为相应的文件。
3. 执行脚本,批量运行测试程序,并自动化生成测试报告。
VIII. 调试与优化1. 在运行测试程序之前,可以使用LabVIEW提供的调试工具对其进行调试。
LabVIEW与Matlab混合编程的实现
梁晓刚;张永昌;翟弘泰
【期刊名称】《电脑开发与应用》
【年(卷),期】2009(022)009
【摘要】针对LabVIEW在数值分析和处理方面的不足,提出了实现LabVIEW与Matlab混合编程的几种方法.通过LabVIEW专有程序接口调用Matlab,LabVIEW 设计用户图像界面,负责数据采集;Matlab在后台提供大型算法供LabVIEW调用,其程序的调用方法,可使用MatlabScript节点或ActiveX函数模板.
【总页数】2页(P71-72)
【作者】梁晓刚;张永昌;翟弘泰
【作者单位】北方自动控制技术研究所,太原,030006;北方自动控制技术研究所,太原,030006;北方自动控制技术研究所,太原,030006
【正文语种】中文
【中图分类】TP391
【相关文献】
1.Matlab和LabVIEW混合编程的实现 [J], 李霄燕;杨俊宇;赵佳
bVIEW与MATLAB混合编程的实现 [J], 张晖;郑炜
3.基于LabVIEW与MATLAB混合编程实现频谱细化分析 [J], 苏宝定;王奉涛;王亮
4.基于DLL技术和COM组件技术实现LabVIEW和MATLAB混合编程 [J], 宋广
东;王昌;王金玉;路璐;魏玉宾
bview和Matlab混合编程方法的研究与实现 [J], 柴敬安;廖克俭;潘德辉;李淼因版权原因,仅展示原文概要,查看原文内容请购买。
LabVIEW与Matlab接口的方法The Method of Interfacing Between LabVIEW and Matlab陈金平(新疆大学,乌鲁木齐 830008)0 引言虚拟仪器技术是计算机技术、现代测控技术和电子仪器技术相互结合、渗透的产物。
在虚拟仪器系统中,数据的分析处理、控制、结果输出和用户界面等功能都由软件完成,硬件仅仅是为了解决信号的输入输出,因此,软件是整个仪器系统的核心,从某种意义上可以说:“软件即仪器”。
虚拟仪器系统的软件设计可以采用通用的可视化编程语言,如Visual C++、Visual Basic、Delphi等,但更为方便高效的还是专用的虚拟仪器软件开发平台,如美国国家仪器公司(National Instruments,NI)的Lab2 VIEW、LabW indows/C VI,惠普公司的VEE等,而其中首推NI公司的图形化编程语言LabVIEW。
1 LabVIEW的功能及特点LabVIEW是NI公司推出的一种虚拟仪器软件开发平台,自1986年正式推出,经过短短不到15年的时间,已经发展到以最新板本LabVIEW611为核心,包括控制与仿真、高级数字信号处理、统计过程控制、模糊控制和PID控制等众多附加软件包,运行于W indows NT/98、Linux、M acintosh、Sun和HP-UX等多种平台的工业标准软件开发环境。
LabVIEW在包括航空航天、通信、汽车、半导体和生物医学等众多领域内得到了广泛的应用。
其最大的特色是采用编译型图形化编程语言———G语言(G raph2 Pro gramm ing),即用户设计好程序的大体框架后,如同画流程图一般,只需将系统提供的各种图形化功能模块连接起来,就可得到所需的应用软件。
LabVIEW中的程序称为VI(virtual instruments),每个VI都由前面板和框图程序以及图标/连接端口三部分组成。
用LabVIEW的节点实现MATLAB脚本运算已有416次阅读2011-2—2623:41|个人分类:LabVIEW文章|LabVIEW是LaboratoryVirtualInstrumentEngineeringWorkbench(实验室虚拟仪器集成环境)的简称,是由美国国家仪器公司(NationalInstruments,NI)推出的一个功能强大而又灵活的仪器和分析软件应用开发工具。
LabVIEW程序称为虚拟仪器或简称为VI,每个VI都由前面板和框图程序以及图标/连接端口三部分组成。
LabVIEW不同于基于文本的编程语言(Fortran和C),它是一种图形编程语言——通常称为G编程语言,其编程过程就是通过图形符号描述程序的行为。
LabVIEW使用的是科学家和工程师们所熟悉的术语,还使用了易于识别的构造G语言的图形符号。
即使具有很少编程经验的人也能学会使用LabVIEW,并能够发现和了解一些有用的基本编程原则。
LabVIEW是工程人员开发虚拟仪器常用的一种软件工具。
它有以下特点:(1)图形化的编程方式,设计者无需写任何文本格式的代码,是真正的工程师的语言;(2)提供丰富的数据采集、分析及存储的库函数;(3)既提供了传统的程序调试手段,如设置断点,单步运行,同时提供独到的高亮执行工具,使程序动画式运行,利于设计者观察到程序运行的细节,使程序的调试和开发更为便捷;(4)32bit的编译器编译成32bit的编译程序,保证用户数据采集,测试和测量方案的高速执行;(5)囊括了PCI、GPIB、PXI、VXI、RS232/485在内的各种仪器通信总线标准的所有功能函数,使得不懂得总线标准的开发者也能够驱动不同总线标准的接口设备与仪器;(6)提供大量与外部代码或软件进行连接的机制,诸如DLL(动态连接库)、DDE(共享库),ActiveX等;(7)强大的Internet功能,支持常用的网络协议,方便网络、远程测控仪器的开发。
labview调用matlab函数的实现一、用matlab生成dll1 、mcc编译环境设置在桌面上右键单击“我的电脑”图标出现以下菜单,单击“属性”菜单项,出现“系统特性”对话框,单击“高级”选项卡,如下图所示在上图中,单击“环境变量”按钮,出现“环境变量”对话框,添加系统变量matlab 值为F:\Matlab\R2012b 即matlab2012 的安装路径,如下图所示在环境变量path 中添加f:\MATLAB\R2012b\bin\win32:f:\MATLAB\R2012b\runtime\win32;如下图所示按“确定”完成设置后,重启计算机或注销当前用户,即可应用新设置。
2 、Matlab2012 编译器设置(1) mex 命令设置(a) 运行Matlab ,在Matlab 的命令窗口(Command Window) 键入“ mex -setup ”命令后,按回车键,安装Matlab 编译器;(b) 命令窗口出现如下提示:Welcome to mex -setup. This utility will help you set upa default compiler. For a list of supported compilers, see/support/compilers/R2012b/win32.htmlPlease choose your compiler for building MEX-files:Would you like mex to locate installed compilers [y]/n?此时键入”y” ,按回车;(c) 命令窗口出现如下提示:Select a compiler:[1] Lcc-win32 C 2.4.1 in F:\Matlab\R2012b\sys\lcc[2] Microsoft Visual C++ 2005 SP1 in D:\Program Files\Microsoft Visual Studio 8[0] None此时键入” 2” ,按回车;选择Microsoft Visual C++ 2005的编译器(d) 命令窗口出现如下提示:Please verify your choices:Compiler: Microsoft Visual C++ 2005 SP1Location: D:\Program Files\Microsoft Visual Studio 8Are these correct [y]/n?此时键入”y” ,按回车;确认选择Microsoft Visual C++ 2005 的编译器(2) mbuild 命令设置(a) 运行Matlab ,在Matlab 的命令窗口(Command Window) 键入“ mbuild -setup ”命令后,按回车键,安装Matlab 编译器;(b) 命令窗口出现如下提示:Welcome to mbuild -setup. This utility will help you set upa default compiler. For a list of supported compilers, see/support/compilers/R2012b/win32.htmlPlease choose your compiler for building shared libraries or COM components:Would you like mbuild to locate installed compilers [y]/n?此时键入”y” ,按回车;(c) 命令窗口出现如下提示:Select a compiler:[1] Lcc-win32 C 2.4.1 in F:\Matlab\R2012b\sys\lcc[2] Microsoft Visual C++ 2005 SP1 in D:\Program Files\Microsoft Visual Studio 8[0] NoneCompiler:此时键入” 2” ,按回车;选择Microsoft Visual C++ 2005 的编译器(d) 命令窗口出现如下提示:Please verify your choices:Compiler: Microsoft Visual C++ 2005 SP1Location: D:\Program Files\Microsoft Visual Studio 8Are these correct [y]/n?此时键入”y” ,按回车,确认选择Microsoft Visual C++ 2005 的编译器,编译器设置完成。
基于labview和matlab的联合仿真之二混合动力汽车模拟运行在实现了官方例程之后,今天来一个实际的例子吧。
需要联合仿真环境搭建的同学可以去看上一篇帖子。
今天这个混合动力汽车模拟仿真是之前和同事一起搞的一个最初版本。
仅仅是能跑而已,现在对我们基本没啥用了,或许有的同学需要,分享给大家。
把vi放在了附件里,模型就不放了,不是我搞的。
Matlab部分不太懂,少说。
Labview部分主要涉及到变量连接,tdms数据存储回放以及diadem 报表的编辑打印。
一、准备工作,软件的安装Win8.1专业版32位Labview 2012SIT 2012Matlab 2010a除了上篇帖子中提到的以上软件,这次用到了diadem,一个做报表和数据分析的东东。
很好很强大,就是不太懂,现在我仅仅是用一个PDF报表而已。
700多M的安装包,就做个PDF报表,屈才了。
diadem_2012.0.1f5361_sp1a_english_dac.exe软件的安装包都在我的百度网盘里了,需要的同学可以去down 一下。
链接:/s/1dD11CWx密码:zkw8二、 matlab程序架构不懂这个东东,一堆公式一堆数据,给我讲了好几遍也没太明白,一堆机械上的东西。
总之一句话,这个东西可以用来模拟运行状态。
不太深究这东西了。
我只关心哪个是我要的输入哪个是我要的输出。
少说几句,大致思路流程是:1.整车上电启动后,踩油门踏板,主电机工作,然后整车开始加速。
2.当车速增加到设定值之后,驱动电机工作,带动发动机曲轴转动。
3.当发动机被带到设定的转速之后,给发动机上电然后发动机工作。
4.驱动电机停止工作,主电机维持一个低转速。
动力由电驱动切换到了油驱动。
我们的这个模型是借鉴ADVISOR的,美国佬在simulink里可以把界面做的这么牛气。
不服不行。
额,额,额,机械不是我的菜。
我只管你的牛犇模型要啥变量,输出啥变量。
管你是汽车还是火箭。
有一个问题,没搞明白。
本栏目责任编辑:谢媛媛系统软件与软件工程Computer Knowledge and Technology 电脑知识与技术第6卷第15期(2010年5月)LabVIEW 与MATLAB 混合编程的实现张晖,郑炜(空军航空大学电工电子教研室,吉林长春130022)摘要:LabVIEW 和MATLAB 的混合编程,通过LabVIEW 专有程序接口调用MATLAB 实现。
LabVIEW 设计用户图像界面,负责数据采集;MATLAB 在后台提供大型算法供LabVIEW 调用,其程序的调用方法,可使用MATLAB Script 节点或ActiveX 函数模板。
关键词:LabVIEW ,MATLAB ,混合编程,MATLAB Script 节点,ActiveX 函数中图分类号:TP391文献标识码:A 文章编号:1009-3044(2010)15-4322-02Method of Hybird Programming with LabVIEW and MATLABZHANG Hui,ZHENG Wei(Department of Electrician and Electron,Aviation University of Air Force,Changchun 130022,China)Abstract:For hybrid programming of LabVIEW and MATLAB,the hybrid programming is achieved by using calling MATLAB through proprietary program interface of LabVIEW.The user graphical interfaces was designed with LabVIEW and acquire the data.The large al -gorithm in background was provided by MATLAB for LabVIEW calling.The program wascalled by using the MATLAB node and Ac -tiveX function template.Key words:LabVIEW;MATLAB;Hybrid programme;MATLAB script node;ActiveX functionLabVIEW 自身功能强大,在测试与测量、过程控制与处理、科学研究和分析等方面有广泛的应用。
第10卷第33期2010年11月1671—1815(2010)33-8267-05科学技术与工程Science Technology and EngineeringVol. 10No. 33Nov. 2010 2010Sci. Tech. Engng.Matlab 与LabVIEW 混合编程方法应用研究徐何李滔李勇(西北工业大学电子信息学院,西安710129)摘要对Matlab 和LabVIEW 混合编程技术进行了讨论。
主要研究Matlab Script 节点法、动态链接库(DLL )技术和COM 组件技术,详细介绍了各自的技术优点以及实现方法。
并在此基础上,结合Matlab 强大的矩阵运算能力和LabVIEW 丰富的面板设计工具,完成了对雷达显示界面的混合编程仿真设计。
关键词组件对象模型节点动态链接库混合编程雷达界面仿真中图法分类号TN955;文献标志码A2010年9月13日收到第一作者简介:徐何(1985—),男,羌族,四川省成都市人,硕士研究生,研究方向:雷达信号仿真。
E-mail :prophetxu@hotmail.com 计算机和仪器的密切结合是目前仪器发展的一个重要方向。
这种结合有两种方式,一是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。
另一种方式是将仪器装入计算机,以通用的计算机硬件及操作系统作为依托,实现各种仪器功能,虚拟仪器主要是指这种方式。
LabVIEW 是美国NI 公司研发的功能强大而且灵活的仪器分析开发软件,是目前应用最为广泛的虚拟仪器开发软件。
其拥有强大的界面开发能力和良好的软硬件接口,但是在对各种算法的支持方面,LabVIEW 的工具箱有限,这限制了使用Lab-VIEW 对大型应用程序的快速开发。
Matlab 拥有强大的矩阵运算、图形处理能力和内容丰富且可扩展的工具箱,但其界面开发能力较差,并且在数据输入、网络通信、硬件控制等方面都比较繁琐。
针对LabVIEW 和Matlab 两种软件的优势和不足,使用混合编程的方法,可以很好的结合两者的优势,互补不足,开发出更具智能化的虚拟仪器。
LabVIEW与嵌入式系统的开发和集成LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器(National Instruments)公司开发的一种可视化编程语言和开发环境。
它被广泛应用于工程科学、自动化控制、数据采集分析等领域。
本文将探讨LabVIEW与嵌入式系统的开发和集成,介绍如何将LabVIEW应用于嵌入式系统的开发,并分析其在实践中的应用价值。
一、LabVIEW介绍LabVIEW是一种基于图形化编程的软件工具,其主要特点是使用可视化的方式表示程序结构和算法。
它提供了大量的内置函数和工具箱,可以方便地进行各种信号处理、数据采集、控制算法等操作。
LabVIEW具有易于学习和使用的特点,使得工程师和科研人员能够快速地开发各种应用程序。
二、嵌入式系统的开发和集成嵌入式系统是指集成了处理器、内存、输入输出接口等硬件组件的特定用途的计算机系统。
相比于通用计算机,嵌入式系统更具有便携性、实时性和低功耗的要求。
开发和集成嵌入式系统需要设计硬件和软件,并将它们紧密结合起来,以实现系统的功能。
在嵌入式系统的开发过程中,LabVIEW可以作为一个强大的工具来进行系统建模和仿真。
通过组合LabVIEW提供的各种工具箱和模块,开发人员可以方便地搭建系统模型,并在模型内进行验证和调试。
LabVIEW还可以与其他编程语言(如C、C++、Python等)进行无缝集成,以满足系统开发的需求。
三、LabVIEW在嵌入式系统中的应用1. 嵌入式系统的原型验证在嵌入式系统的开发初期,为了验证设计方案和算法的正确性,通常需要进行原型验证。
LabVIEW提供了丰富的硬件接口和设备驱动程序,可以方便地与各种传感器和执行器进行连接,实时采集和处理数据。
开发人员可以使用LabVIEW搭建系统原型,并通过实验验证系统的性能和功能。
2. 嵌入式系统的算法开发嵌入式系统的核心是算法的开发和实现。
在Labview中调用M文件(Matlab文件)使用NI LabVIEW,不论您是在开发算法、分析结果、处理信号,还是在探索DSP 概念,您都可以自由选择用于工程计算的语法规则。
您可以将直观的LabVIEW 图形化数据流编程与MathScript 相结合,MathScript 是一款面向数学、基于文本的编程语言,包括600 多种常用的数学、信号处理和分析函数。
什么是 MathScriptLabVIEW MathScript 将面向数学的文本编程加入到了LabVIEW 中。
MathScript 提供了除图形化数据流编程以外的另一种自定义开发应用系统的方法。
现在使用LabVIEW,您可以选择文本编程方式、图形化方式或是两者的组合。
不论您是在开发算法、探索信号处理概念或是分析结果,您都可以选择用于工程计算最有效的语法规则。
该技术白皮书为我们阐述了LabVIEW 和MathScript 的重要性就在于两者的结合为用户提供的最佳方案。
MathScript 的核心是一种高级文本编程语言,它包含用于信号处理、分析和数学相关任务复杂性的语法和功能。
MathScript 为这些功能提供了600 多种内置函数,您也可以自己创建新的自定义函数。
MathScript 与m 文件脚本语法基本兼容——这种语法被广泛用于其他工程计算软件,例如MathWorks公司的MA TLAB砑、Comsol 公司的COMSOL Script 软件和其他。
这种兼容性意味着您可以使用大量以前开发的m 文件脚本,例如在工程教科书中现成的或是在因特网站点上发布的开源m 文件脚本。
MathScript 如何工作您可以通过交互式界面或编程界面使用LabVIEW MathScript。
如果您需要在一个交互式的界面中加载、保存、设计和执行m 文件脚本,您可以使用MathScript 交互式窗口;如要把您的m 文件脚本作为LabVIEW 应用程序的一部分发布,并结合图形和文本编程,您可以使用MathScript 节点。
收稿日期:2005-07-01;修订日期:2005-09-07 基金项目:国家自然科学基金重大、面上资助项目(50390063;50305019);上海市科委国际合作项目(045007027) 作者简介:王禹林(1981-),男,江苏南京人,博士研究生,主要研究方向:虚拟仪器、先进电子制造、机器视觉; 熊振华(1974-),男,江西南昌人,副教授,主要研究方向:先进电子制造、计算机集成优化; 丁汉(1963-),男,安徽安庆人,教授,主要研究方向:先进电子制造、机器人学.文章编号:1001-9081(2006)03-0695-04Lab V I E W 与Matlab 的无缝集成王禹林,熊振华,丁 汉(上海交通大学机械与动力工程学院,上海200030)(wyl_sjtu@sjtu .edu .cn )摘 要:结合实例详细介绍了LabV I E W 与Matlab 无缝集成的三种常用方法,即COM 组件法、中间文件传递参数法和VC ++参数类型转化法。
利用这些方法可将两种软件取长补短,且便于软件的发布。
关键词:LabV I E W ;Matlab;COM;DLL;接口技术;无缝集成中图分类号:TP311 文献标识码:ASeam less i n tegra ti on between LabV I E W and M a tl abWANG Yu 2lin,X I O NG Zhen 2hua,D I N G Han(School of M echanical Engineering,Shanghai J iaotong U niversity,Shanghai 200030,China )Abstract:Three methods were intr oduced with a typ ical exa mp le t o show how t o integrate Lab V I E W and Matlab seam lessly,which were COM object method,trans m itting para meter method with te mporary file and the method of encap sulating the well devel oped algorith m t o the dyna m ic link library (DLL )and transfor m ing the para meter type thr ough using VC ++.These methods hel ped t o release the s oft w are easily .Key words:Lab V I E W ;Matlab;C OM;DLL;interface technol ogy;sea m less integrati on0 引言在工程领域中,Lab V I E W 和Matlab 是倍受程序开发人员青睐的两种语言。
Lab V I E W 对于一些需要进行大量数据运算处理的复杂应用以及某些复杂的控制算法显得有些力不从心。
而Matlab 不能实现端口操作和实时控制,在界面方面也稍逊一筹。
在实际工程应用中将二者结合起来取长补短,具有非常实用的价值。
Lab V I E W 已提供了M atlab Scri p t 节点来调用Matlab 语言开发的算法,这实际上就是通过ActiveX 控件与M atlab Server 进行通信。
用该方法实现它们的混合编程简单实用,但是不能脱离Matlab 的环境,而只是将它在后台执行,因此十分不利于独立应用程序的开发,为了实现Lab V I E W 和Matlab 的无缝集成,本文以“基于蒙特卡洛法模拟求解可靠度”为例详细介绍了如下三种方法,即C OM 组件法、中间文件传递法,以及VC ++参数类型转化法。
其中文献[1]已介绍了C OM 组件法,本文将对这种方法进行深入探讨和补充,并与另两种方法进行比较。
(上述各方法所用的编程环境为Matlab 6.5,Lab V I E W 7.1,VC ++6.0)1 无缝集成的三种方法不管使用上述哪种方法,均要先进行M atlab 编译环境的设置。
因为无论是用Matlab C OM Builder 把M 文件编译成COM 组件,还是用M atlab Comp lier 把M 文件编译成DLL 文件,都需借助外部的编译器。
要设置外部编译器,可在M atlab 中调用mbuild 2setup 和mex 2setup 命令。
这里选择M icr os oftV isual Studi o 6.0。
1.1 COM 组件法Lab V I E W 5.0及以上的版本都提供了对C O M 的支持。
Matlab C O M Builder 是Matlab 6.5新包含的产品,帮助用户将用M 语言开发的算法自动快速地转变为独立的C O M 组件对象,以供其他支持C O M 的编程语言调用,实现Matlab 和其他编程语言的整合。
通过C O M 组件,可以同其他用户共享已经开发的算法,并且可以免费地随同C O M 应用程序发布Matlab 算法。
设已编写好myp r oject .m 函数如下(已简化):functi on num =myp r oject (x,y,tuhao,i,A,B ,C,D )s =nor m rnd (A,B,i,1);cdfp l ot (s );num =0;该函数有8个输入参数和1个输出参数,参数类型包括整型和浮点型,函数中使用了M atlab 数学库和图形库中的函数(如nor m rnd ()和cdfp l ot ()),生成了数据量非常大的(由参数i 控制,比如10000)符合某种数学分布的两组随机数组,然后对数据进行了分析处理并绘图显示结果,具有典型性。
然后即可用Matlab Builder f or COM 创建COM 组件。
过程非常简单,只需4个步骤,即创建工程、管理M 文件和M EX文件、编译生成组件、打包和发布组件[2],说明如下:1)在Component name 中输入要生成的C OM 组件的名字myp r oject 。
2)在Comp iler Code in 里面推荐选择C,因为C 代码性能较好,C ++代码可读性好,而最后不需要看中间的代码。
3)因为要使用Matlab 的图形库,所以选中U se Handle Graphics library 。
4)把myp r oject .m 加入要对其进行操作的类中,即为该类添加了一个简单的方法。
第26卷第3期2006年3月计算机应用Computer App licati onsVol .26No .3Mar .20065)编译完毕后在distrib 文件夹中将生成相应的myp r oject_1_0.dll 文件并自动注册到系统中。
6)将C OM 组件打包并发布后在distrib 文件夹下生成一个自解压文件myp r oject .exe,运行它可实现必要的动态链接库的安装和COM 组件的注册。
需要注意的是打包时输入的文件夹目录不能包含中文,否则将注册失败。
注册好后亦不能改变其存放路径或删除,否则将找不到注册组件。
为了在没有安装Matlab 的目标机上能够使用Matlab Comp iler 生成的组件,需要一同发布MCR (Matlab Component Runti m e ),可通过MCR I nstaller .exe 进行安装。
7)Matlab7增强了M atlab Comp iler 模块功能,简化了COM 组件的开发过程,6.5版本中的Matlab COM Builder 很多设置项都不再出现。
接下来需在Lab V I E W 中调用上面生成的COM 对象。
图1描述了调用过程[1],这里仅作以下说明:1)首先必须引用C OM 对象,为此在进入循环前调用“Aut omati on Open ”函数生成Refnu m,按右键点击“Select ActiveX class ”的B r owse,在列表中选择myp r oject 1.0Type L ibrary Versi on 1.0,这样myp r oject_1_0.dll 的引用就添加到Lab V I E W 程序中,其对应的图标为myp r oject 。
同时生成的Refnu m能够传递给模板中的其他相关函数节点,实现具体的COM 对象操作。
2)Lab V I E W 程序中调用C OM 对象的myp r oject 方法,当方法有输出变量时,第1个变量总是nargout,它的数据类型为Long 。
这个输入参数传递Matlab nargout 参数给编译函数,并且指定要求有多少个输出变量。
没有输出变量的方法不传递nargout 变量。
这里因为有一个输出变量nu m,故给nargout 变量赋值为1。
3)虽然输入参数分别为整型和浮点型,而myp r oject 中与其对应的数据类型为变体型,数据类型不同,但Lab V I E W 会自动将输入数据的类型转换为变体型,以满足COM 对象的输入要求。
然而当C OM 对象的输出为变体型数据时,必须清楚C OM 对象所返回数据的类型,如果选择了错误的数据类型,Lab V I E W 将反馈错误信息。
通过Variant t o Data 节点可以将变体型数据转换为Lab V I E W 能处理和显示的数据类型。
要使用该节点,只要连接需要转换的变体型数据,并标识转换后的数据类型即可。
由于调用myp r oject_1_0.dll 返回的是一个整型变量,所以把整数1连接到Variant t o Data 节点的Type 输入端口和myp r oject 方法的nu m 参数的输入端口(这里并不是赋值,而是指定数据类型)。
4)当退出循环后用Cl ose Aut omati on 函数关闭Refnu m 。
图1 LabV I E W 调用COM 对象程序图 最后的工作就是将Lab V I E W 程序以及所调用的C OM 组件打包,使其能够脱离Lab V I E W 和M atlab 的环境下运行[3],这里作以下说明:1)打包时有时需在App licati on Settings 标签中选中Enable ActiveX 选项(比如使用M atlab Scri p t 节点时),否则执行程序将没有响应。
2)运行Lab V I E W 生成的程序时,必须确保已安装Lab V I E W runti m e engine (25M ),当用高版本的Lab V I E W 生成的可执行程序,在装有低版本的Lab V I E W 的计算机上运行,也需先安装Lab V I E W runti m e engine 。