VB与MATLAB混合编程实现控制系统分析--控制网



VB与MATLAB混合编程实现控制系统分析
企业:控制网 日期:2009-11-27
领域:仪器仪表 点击数:1795
    摘  要: 分析控制系统的性能可以采用Visual Basic与MATLAB的混合编程实现,用Visual Basic编写图形化界面进行参数输入和初步处理并应用ActiveX自动化技术发送给MATLAB服务器,由MATLAB在后台完成对控制系统的分析与计算任务并将计算结果传回Visual Basic图形化界面显示。

    关键词:
  ActiveX自动化;MATLAB服务器;控制系统;Visual Basic
    Abstract:Control system analysis can be realized by merging Visual Basic and MATLAB.Visual Basic is supposed to provide the interface of control system parameters which is roughly dealt and and passed to MATLAB Server using ActiveX automation technology. MATLAB then does the relevant calculation and analysis in the background and returns the results to Visual Basic interface.

    Keywords
ActiveX Automation;MATLAB Server; Control System;Visual Basic

    引言

    正确的分析控制系统的性能无论是在研究领域还是在工业生产过程中都有重要的意义,而一个好的分析工具自然可以简化分析过程,提高效率,节约时间。MATLAB是现在比较常用的控制系统分析工具,其功能虽然强大,但是命令复杂难记,对数据的输入格式有严格要求,不适合初学者,尤其是英语和编程语言基础薄弱的用户。解决此问题的办法之一是设计图形化界面的分析软件包供用户输入参数和显示对应结果。Visual Basic是由微软公司开发的,以 “所见即所得”效果著称的图形化编程语言,无需编辑大量代码就可以轻松实现比较复杂的图形界面。因此如果将上述两种软件结合,用Visual Basic开发前台界面,MATLAB进行后台数据处理,通过简单编程就可以初步实现控制系统的计算机辅助分析,降低了分析复杂控制系统的编程难度,缩短了编程周期,提高工作效率。

     1 Visual Basic与MATLAB混合编程

    1.1 Visual Basic与MATLAB的结合

    Visual Basic是MicroSoft公司推出的应用程序开发工具,虽然它简单易学而又功能强大,尤其在开发图形用户界面(GUI)方面表现卓越,但是提供的数学函数却及其有限,在数值计算和图形处理方面显得力不从心。MATLAB是MathWorks公司开发的一种科学计算语言。用这种语言可以解决很多工程计算问题,主要功能包括数学计算、数据分析与可视化等。将二者结合,在Visual Basic可视化界面下凭借MATLAB强大的数据计算和图形显示功能,势必可以简化编程步骤,轻松实现控制系统的计算机辅助分析。

    1.2 ActiveX自动化技术

    Microsoft把所有以COM(小型快速可重用组件Component Object Model)为基础的技术统称为ActiveX技术。ActiveX自动化(Automation)是ActiveX的一个协议,它允许应用程序活组件控制另一个应用程序或组件运行。由于Visual Basic支持ActiveX自动化控制协议,MATLAB支持自动化服务器端协议,因此如果建立一个Visual Basic应用程序和MATLAB之间的ActiveX自动化连接,那么在Visual Basic应用程序中就可以调用MATLAB的命令了。

    1.3 Visual Basic创建ActiveX对象

     Visual Basic能通过不同的方式实现对自动化对象的使用和操作。要创建一个ActiveX对象,只要将CreateObject函数方法返回的对象赋给一个对象变量,并在声明对象变量时使用As Object子句。

        Dim MATLAB As Object

        Set MATLAB =CreateObject(“MATLAB.application”)

    MATLAB.application是MATLAB提供的一个自动化对象的外部名称,是机器安装好MATLAB 7.01后默认的类库名称。创建好一个ActiveX对象后,就可对此对象进行操作,如同在Visual Basic中对其它对象的操作一样。

    1.4 ActiveX对象的操作

      MATLAB.application对象提供的常用方法有一下几种:

       Execute 

       [out] BSTR result = Execute([in] BSTR "command")

    本方法将调用MATLAB执行字符串变量Command中的MATLAB命令,同时返回一个字符串表示命令的执行情况。任何能在MATLAB命令行窗口执行的命令均可被包括在Command字符串中。同时命令所产生的任何图形窗口都将被直接显示在屏幕上。

      GetFullMatrix

      ([in] BSTR varname,[in] BSTR workspace,

      [in,out] SAFEARRAY(double)* xreal,

      [in, out] SAFEARRAY(double)* ximag)

   GetFullMatrix 方法将MATLAB中的一个矩阵变量传送到Visual Basic指定的数组中。varname为MATLAB中的矩阵变量名,workspace指定了该矩阵所在的MATLAB工作区,xreal是Visual Basic程序中的实部数组,ximag是指Visual Basic程序中的虚部数组。

PutFullMatrix     
    
([in] BSTR name,    
    
[in] BSTR workspace,

[in] SAFEARRAY(double) xreal,

[in] SAFEARRAY(double) ximag);

PutFullMatrix方法用来将Visual Basic程序中的一个一维或二位数组传送到MATLAB的矩阵变量中。

PutCharArray          

([in] BSTR name,

[in] BSTR workspace,
[in] BSTR string)
     PutCharArray  方法将Visual Basic程序中一个字符串变量string的值传到MATLAB命令空间的变量name中。

     1.5 Visual Basic与MATLAB数据传递关系如下:

                    
 
     2  数据处理与传递

      图1 是根据控制系统的参数绘制BODE图的界面:

                     
                                           
                                         图 1

    用户根据提示信息在在文本框中输入对应参数并按确定按钮之后,Visual Basic先对文本框中的数据进行合法性的检查和处理,再将其传到MATLAB的工作空间中进行绘制BODE图有关的处理计算,再向MATLAB发出绘图命令绘制系统的BODE图,最后将MATLAB的数据计算结果(图中为增益裕度、相位裕度等)显示在文本框中,将图像显示在图形框中。

     2.1 矩阵数据的传递与处理

    用户在软件包的界面输入的矩阵数据在传递到MATLAB的命令空间之前首先要经过Visual Basic环境下编写的矩阵处理函数进行初步的处理,包括非法字符的过滤与有效性检查等,如果数据不符合要求的数据输入格式,则给用户发出警告。在检查无误后,Visual Basic通过ActiveX对象的putfullmatrix命令将矩阵数据传递到MATLAB的命令空间,同时对MATLAB发出数据分析与绘图命令,MATLAB响应该请求并进行运算,最后把计算结果的实部和虚部通过GetFullMatrix函数传至Visual Basic中。
     2.2图像数据的传递与处理

     MATLAB绘制完图形以后并没有直接传递给Visual Basic,而是将图像保存在本地磁盘的某一路径下面,保存完以后通知Visual Basic图形的保存路径。Visual Basic根据该路径调用LoadPicture(picpathname)函数将图形导入图形框,picpathname是该图形存储的路径的字符串。

    3 结束语

    研究控制系统的计算机辅助分析有重要意义,将Visual Basic和MATLAB结合开发分析工具可以综合Visual Basic和MATLAB的优势,可简化编程步骤,提高控制程序的开发效率。
 
    参考文献
    [1] 龚沛曾、陆慰民、杨志强.Visual Basic 程序设计教程(6.0)[M],北京:高等教育出版社,2000年7月,P231~P250(书籍类)。

    [2] 李国勇、谢克明.控制系统数字仿真与CAD[M],北京:电子工业出版社,2005年7月,P6~P87(书籍类)。

    [3] (美) 克里斯 H. 帕帕斯、 威廉 H. 默里.Visual Basic进阶Windows API编程,   西安-西安交通大学出版社,2001年04月,P100-P150(书籍类)。


         
  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: