LabVIEW与MATLAB混合编程


>>ActiveX模
板中提供了一组与ActiveX操作相关的子VI,其中Automation Open.vi打开引用,启动MATLAB自动化服务器,并将
引用传递给其它节点,如属性节点(Property Node)、调用方法节点(Invoke Node)。程序中LabVIEW调用
PutFullMatrix方法,将二维组A通过参数pr传到MATLAB的“base”工作空间。虽然A为双精度浮点型数组,pr和pi
的数据类型为变体(Variant),数据类型不同,但LabVIEW会自动将输入数据的类型转换为变化,以满足输入要
求。程序中A为实数数组,无虚部,所以给pi赋空值。接着LabVIEW调用MLApp.DIMLApp提供的Execute方法,向
MATLAB传送一条命令“B=A.*3”,于是MATLAB将数组A的每个元素与3相乘,计算后的结果保存在数组B中。

    再调用GetFullMatrix方法,从“base”工作空间中获取数组B的实部。这里必须使用Variant to Data.vi,
将变体类型的输出转化为LabVIEW中的二维数组。最后用Quit方法退出MATLAB,Automation Close.vi随即断开引
用。运行程序,可以看到MATLAB一经启动,任何标上底图标例立即消失,计算结果返回到LabVIEW的前面板上。这
里仅介绍了ActiveX函数模板的基本使用以及调用MATLAB过程的总体框架,读者可以根据需要进行扩充。


    2.3 两种调用方法的比较

    (1)MATLAB Script节点具有多输入、多输出的特点,一次处理的信息量要以很大。MATLAB脚本可以先在
MATLAB下调试。无误后再导入到MATLABSeript节点中。MATLAB Script节点对输入、输出数据的类型有明确的要
求。只有LabVIEW中的数据类型与MATLAB中的数据型相匹配,才能进行数据传输。使用MATLAB Script节点的方
法,快捷方便,但不利于较大的应用程序开发。当需要使用时,可将其模块化,采用主程序动态加载。

    (2)使用ActiveX函数模的方法,具有对MATLAB更强的控制能力。如随时打开和关闭MATLAB,隐藏在务栏中
的MATLAB图标,与MATLAB进行字符数组传输,这些都是MATLAB Script节点都不具有的。使用ActiveX函数模板
时,经常 会遇到数据类型的转换,尤其是变体(Variant)与其他类型的转换。当高用大型算法时,必须明确输
入、输出数据的具体类型,而且要尽量减少数据传输量和启动MATLAB自动化服务器的次数ActiveX函数模板,适于
较大的应用程序开发。在LabVIEW顺序结构中,不提供使用。原因是顺序结构妨碍了作为LabVIEW优点之一的程序
并行运行机制,而且MATLAB自动化服务器启动也需要一定时间,这会使整个程序不能及时处理其它的用户操作。
总之,两种调用方法其自身的优势和不足。在开发一个大的复杂应用程序时,综合不同的应用要求,合理选择可
以显著提高开发效率。

    采用虚拟仪器技术,通过LabVIEW构建测试仪器开发效率高、可维护性强、测试精度、稳定性和可靠性能够得
到充保证;具有很高的性价比,节省投资,但于设备更新和功能扩充。如果能利用MATLAB功能强大的算法库,可
望开发出更具智能化的虚拟仪器,将会在诸如故障诊断、专家系统、复杂过程控制等方面大有用武之地。

COPYRIGHT(C) 2011 厦门永宏亚得机电科技有限公司版权所有(闽ICP备05025945号) ALL RIGHTS RESERVED?

电话: 0592-5190891 传真: 0592-5190720 E-Mail: E-mail:yade8895@163.com
地址: 厦门市海沧区兴港六里17号2607室 邮编:361009 联系人:翟先生