LabVIEW和MATLAB混合编程

时间:2022-04-13 02:10:49

【摘要】鉴于labview和matlab的优点,本文介绍了通过activex技术,在labview(ver6.1)中调用和操作matlab(ver6.5)的方法,实现labview和matlab的混合编程,充分发挥两者的优势。 图1 1 基本原理 ...

LabVIEW和MATLAB混合编程

摘要:结合实例详细介绍了labview通过actviex自动化技术与matlab进行混合编程,达到了利用matlab优化算法库的目的。将labview与matlab有机结合,是一条开发智能虚拟仪器的有效途径。

关键词:labview语言 matlab activex自动化 虚拟仪器

labview建立在易于使用的图形数据流编程语言——g语言上,大大简化了过程控制和测试软件的开发。matlab以其强大的计算功能、大量稳定可靠的算法库,已在为计算工具方面事实上的标准。但才者各有欠缺,利用混合编程可以相互补充。

matlab是mathworks公司开发的“演算纸”式的程序设计语言。它提供了强大的矩阵运算和图形处理功能,编程效率高,几乎在所有的工程计算领域都提供了准确、高效的工具箱。但matlab也有不足之处,例如界面开发能力较差,并且数据输入、网络通信、硬件控制等方面都比较繁琐。

美国ni公司推出的labview语言是一种非常优秀的面向对象的图形化编程语言。labview是实验室虚拟仪器集成环境(laboratory virtual instrument engineering workbench)的简称,是一个开放型的开发环境,使用图标代替文本代码创建应用程序,拥有大量与其它应用程序通信的vi库。例如labview使用自动化activex、dde和sql,可与其它windows应用程序集成;使用datasocket技术、web server、tcp/ip和udp网络vis,与远程应用程序通信。在对硬件的支持方面,labview集成了与gpib、vxi、pxi、rs-232/485、plc和插入式数字采集设备等进行数据通信的全部功能。在labview下开发的程序称为虚拟仪器vi(virtual instrument),因为其外形和操作可以模拟实际的仪器。在对各种算法的支持方面,labview的工具箱非常有限,这就限制了大型应用程序的快速开发。

鉴于labview和matlab的优点,本文介绍了通过activex技术,在labview(ver6.1)中调用和操作matlab(ver6.5)的方法,实现labview和matlab的混合编程,充分发挥两者的优势。

图1

1 基本原理

activex自动化是基于组件对象模型com(component object model)的技术,允许应用程序或组件控制另一个应用程序或组件的运行,它包括自动化服务器和自动化控制器。matlab支持activex自动化技术。通过使用matlab自动化服务器功能,可以在其它应用程序中执行matlab命令,并与matlab的工作空间进行数据交换。因此可以借助这一特性,把labview与matlab结合,充分利用matlab提供的大量高效可靠的算法和labview的图形化编程能力,混合开发出功能强大的应用软件。

2 应用举例

在混合编程中,通常用labview设计用户图形界面,负责数据采集和网络通信;matlab在后台提供大型算法供labview调用。

2.1 方法一:使用matlab script节点

为了简化调用过程,labview提供了matlab script节点。labview使用activex技术执行该节点,启动一个matlab进程。这样用户就可以很方便地在自己的labview应用程序中使用matlab,包括执行matlab命令、使用功能丰富的各种工具箱,如神经网络工具箱(neural network toolbox)、优化工具箱(optimization toolbox)。值得注意的是:labviewgn matlab之间的数据通信仅支持real、realvector、realmatrix、complex、vectorcomplex、matrix六种格式的数据,且必须根据具体情况进行选择。

当开发涉及工业控制的应用程序时,常常由于控制参数的非线性变化,而无法建立合适的模型。由于此类问题,神经网络提供了一条有效的解决途径。

在labview开发环境下新建一个三层bp神经网络的vi程序,程序框图见图1。网络结构部分主要设置隐层(hidelay)神经元的个数、传递函数(transfer function)以及网络训练算法(algorithm)。经过样本数据(training data)训练过的网络,即可进行仿真测试了。matlab脚本程序可以在matlab环境下调试,再使用matlab script节点导入matlab脚本;也可以直接在matlab script节点中编写。位于function>>mathematics>>formula模板中的matlab script节点可以导入matlab脚本。图1中的脚本程序使用case语句进行传递函数和训练算法的选择。matlab script节点中神经网络的输入层和隐层之间的权值矩阵inweight应指定为realmatrix,在labview中对应的数据类型是二维实数据组net.i-weight。各变量数据类型见表1。

上一篇:关于新课程教学目标设计的四个提醒 下一篇:LabVIEW和MATLAB混合的编程