• 
    <ul id="auswy"><sup id="auswy"></sup></ul>
  • <ul id="auswy"></ul>
    ABB
    關(guān)注中國自動化產(chǎn)業(yè)發(fā)展的先行者!
    CAIAC 2025
    2025工業(yè)安全大會
    OICT公益講堂
    當(dāng)前位置:首頁 >> 案例 >> 案例首頁

    案例頻道

    VB與MATLAB混合編程實現(xiàn)控制系統(tǒng)分析
    • 企業(yè):控制網(wǎng)     領(lǐng)域:儀器儀表     行業(yè):綜合    
    • 點擊數(shù):3032     發(fā)布時間:2009-11-27 12:01:43
    • 分享到:
        摘  要: 分析控制系統(tǒng)的性能可以采用Visual Basic與MATLAB的混合編程實現(xiàn),用Visual Basic編寫圖形化界面進行參數(shù)輸入和初步處理并應(yīng)用ActiveX自動化技術(shù)發(fā)送給MATLAB服務(wù)器,由MATLAB在后臺完成對控制系統(tǒng)的分析與計算任務(wù)并將計算結(jié)果傳回Visual Basic圖形化界面顯示。

        關(guān)鍵詞:
      ActiveX自動化;MATLAB服務(wù)器;控制系統(tǒng);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

        引言

        正確的分析控制系統(tǒng)的性能無論是在研究領(lǐng)域還是在工業(yè)生產(chǎn)過程中都有重要的意義,而一個好的分析工具自然可以簡化分析過程,提高效率,節(jié)約時間。MATLAB是現(xiàn)在比較常用的控制系統(tǒng)分析工具,其功能雖然強大,但是命令復(fù)雜難記,對數(shù)據(jù)的輸入格式有嚴(yán)格要求,不適合初學(xué)者,尤其是英語和編程語言基礎(chǔ)薄弱的用戶。解決此問題的辦法之一是設(shè)計圖形化界面的分析軟件包供用戶輸入?yún)?shù)和顯示對應(yīng)結(jié)果。Visual Basic是由微軟公司開發(fā)的,以 “所見即所得”效果著稱的圖形化編程語言,無需編輯大量代碼就可以輕松實現(xiàn)比較復(fù)雜的圖形界面。因此如果將上述兩種軟件結(jié)合,用Visual Basic開發(fā)前臺界面,MATLAB進行后臺數(shù)據(jù)處理,通過簡單編程就可以初步實現(xiàn)控制系統(tǒng)的計算機輔助分析,降低了分析復(fù)雜控制系統(tǒng)的編程難度,縮短了編程周期,提高工作效率。

         1 Visual Basic與MATLAB混合編程

        1.1 Visual Basic與MATLAB的結(jié)合

        Visual Basic是MicroSoft公司推出的應(yīng)用程序開發(fā)工具,雖然它簡單易學(xué)而又功能強大,尤其在開發(fā)圖形用戶界面(GUI)方面表現(xiàn)卓越,但是提供的數(shù)學(xué)函數(shù)卻及其有限,在數(shù)值計算和圖形處理方面顯得力不從心。MATLAB是MathWorks公司開發(fā)的一種科學(xué)計算語言。用這種語言可以解決很多工程計算問題,主要功能包括數(shù)學(xué)計算、數(shù)據(jù)分析與可視化等。將二者結(jié)合,在Visual Basic可視化界面下憑借MATLAB強大的數(shù)據(jù)計算和圖形顯示功能,勢必可以簡化編程步驟,輕松實現(xiàn)控制系統(tǒng)的計算機輔助分析。

        1.2 ActiveX自動化技術(shù)

        Microsoft把所有以COM(小型快速可重用組件Component Object Model)為基礎(chǔ)的技術(shù)統(tǒng)稱為ActiveX技術(shù)。ActiveX自動化(Automation)是ActiveX的一個協(xié)議,它允許應(yīng)用程序活組件控制另一個應(yīng)用程序或組件運行。由于Visual Basic支持ActiveX自動化控制協(xié)議,MATLAB支持自動化服務(wù)器端協(xié)議,因此如果建立一個Visual Basic應(yīng)用程序和MATLAB之間的ActiveX自動化連接,那么在Visual Basic應(yīng)用程序中就可以調(diào)用MATLAB的命令了。

        1.3 Visual Basic創(chuàng)建ActiveX對象

         Visual Basic能通過不同的方式實現(xiàn)對自動化對象的使用和操作。要創(chuàng)建一個ActiveX對象,只要將CreateObject函數(shù)方法返回的對象賦給一個對象變量,并在聲明對象變量時使用As Object子句。

            Dim MATLAB As Object

            Set MATLAB =CreateObject(“MATLAB.application”)

        MATLAB.application是MATLAB提供的一個自動化對象的外部名稱,是機器安裝好MATLAB 7.01后默認(rèn)的類庫名稱。創(chuàng)建好一個ActiveX對象后,就可對此對象進行操作,如同在Visual Basic中對其它對象的操作一樣。

        1.4 ActiveX對象的操作

          MATLAB.application對象提供的常用方法有一下幾種:

           Execute 

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

        本方法將調(diào)用MATLAB執(zhí)行字符串變量Command中的MATLAB命令,同時返回一個字符串表示命令的執(zhí)行情況。任何能在MATLAB命令行窗口執(zhí)行的命令均可被包括在Command字符串中。同時命令所產(chǎn)生的任何圖形窗口都將被直接顯示在屏幕上。

          GetFullMatrix

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

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

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

       GetFullMatrix 方法將MATLAB中的一個矩陣變量傳送到Visual Basic指定的數(shù)組中。varname為MATLAB中的矩陣變量名,workspace指定了該矩陣所在的MATLAB工作區(qū),xreal是Visual Basic程序中的實部數(shù)組,ximag是指Visual Basic程序中的虛部數(shù)組。

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

    [in] SAFEARRAY(double) xreal,

    [in] SAFEARRAY(double) ximag);

    PutFullMatrix方法用來將Visual Basic程序中的一個一維或二位數(shù)組傳送到MATLAB的矩陣變量中。

    PutCharArray          

    ([in] BSTR name,

    [in] BSTR workspace,
    [in] BSTR string)
         PutCharArray  方法將Visual Basic程序中一個字符串變量string的值傳到MATLAB命令空間的變量name中。

         1.5 Visual Basic與MATLAB數(shù)據(jù)傳遞關(guān)系如下:

                        
     
         2  數(shù)據(jù)處理與傳遞

          圖1 是根據(jù)控制系統(tǒng)的參數(shù)繪制BODE圖的界面:

                         
                                               
                                             圖 1

        用戶根據(jù)提示信息在在文本框中輸入對應(yīng)參數(shù)并按確定按鈕之后,Visual Basic先對文本框中的數(shù)據(jù)進行合法性的檢查和處理,再將其傳到MATLAB的工作空間中進行繪制BODE圖有關(guān)的處理計算,再向MATLAB發(fā)出繪圖命令繪制系統(tǒng)的BODE圖,最后將MATLAB的數(shù)據(jù)計算結(jié)果(圖中為增益裕度、相位裕度等)顯示在文本框中,將圖像顯示在圖形框中。

         2.1 矩陣數(shù)據(jù)的傳遞與處理

        用戶在軟件包的界面輸入的矩陣數(shù)據(jù)在傳遞到MATLAB的命令空間之前首先要經(jīng)過Visual Basic環(huán)境下編寫的矩陣處理函數(shù)進行初步的處理,包括非法字符的過濾與有效性檢查等,如果數(shù)據(jù)不符合要求的數(shù)據(jù)輸入格式,則給用戶發(fā)出警告。在檢查無誤后,Visual Basic通過ActiveX對象的putfullmatrix命令將矩陣數(shù)據(jù)傳遞到MATLAB的命令空間,同時對MATLAB發(fā)出數(shù)據(jù)分析與繪圖命令,MATLAB響應(yīng)該請求并進行運算,最后把計算結(jié)果的實部和虛部通過GetFullMatrix函數(shù)傳至Visual Basic中。
         2.2圖像數(shù)據(jù)的傳遞與處理

         MATLAB繪制完圖形以后并沒有直接傳遞給Visual Basic,而是將圖像保存在本地磁盤的某一路徑下面,保存完以后通知Visual Basic圖形的保存路徑。Visual Basic根據(jù)該路徑調(diào)用LoadPicture(picpathname)函數(shù)將圖形導(dǎo)入圖形框,picpathname是該圖形存儲的路徑的字符串。

        3 結(jié)束語

        研究控制系統(tǒng)的計算機輔助分析有重要意義,將Visual Basic和MATLAB結(jié)合開發(fā)分析工具可以綜合Visual Basic和MATLAB的優(yōu)勢,可簡化編程步驟,提高控制程序的開發(fā)效率。
     
        參考文獻(xiàn)
        [1] 龔沛曾、陸慰民、楊志強.Visual Basic 程序設(shè)計教程(6.0)[M],北京:高等教育出版社,2000年7月,P231~P250(書籍類)。

        [2] 李國勇、謝克明.控制系統(tǒng)數(shù)字仿真與CAD[M],北京:電子工業(yè)出版社,2005年7月,P6~P87(書籍類)。

        [3] (美) 克里斯 H. 帕帕斯、 威廉 H. 默里.Visual Basic進階Windows API編程,   西安-西安交通大學(xué)出版社,2001年04月,P100-P150(書籍類)。


             

    熱點新聞

    推薦產(chǎn)品

    x
    • 在線反饋
    1.我有以下需求:



    2.詳細(xì)的需求:
    姓名:
    單位:
    電話:
    郵件: