技術頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 基于ActiveX協(xié)議的組態(tài)軟件RSView32與matlab的通信

基于ActiveX協(xié)議的組態(tài)軟件RSView32與matlab的通信

時間:2008-08-05 11:25:00來源:ronggang

導語:?在工業(yè)控制領域,組態(tài)軟件用于現(xiàn)場監(jiān)控時計算能力不強,難以實現(xiàn)復雜的控制策略,而數(shù)學軟件Matlab可完成復雜的運算。在組態(tài)軟件與matlab二者間建立通信可實現(xiàn)優(yōu)勢互補
摘 要:在工業(yè)控制領域,組態(tài)軟件用于現(xiàn)場監(jiān)控時計算能力不強,難以實現(xiàn)復雜的控制策略,而數(shù)學軟件Matlab可完成復雜的運算。在組態(tài)軟件與matlab二者間建立通信可實現(xiàn)優(yōu)勢互補。該文基于ActiveX技術,詳細介紹了組態(tài)軟件RSView32與matlab間進行通信的步驟。該文的研究工作為在工業(yè)控制領域中使用組態(tài)軟件來完成復雜的控制算法開辟了新的途徑,為測控系統(tǒng)與仿真系統(tǒng)的集成提供了新的技術支持。 關鍵詞:工業(yè)控制 組態(tài)軟件RSView32 數(shù)學軟件matlab 通信 1、前言   在工業(yè)控制領域,如何更有效地實現(xiàn)控制算法一直是人們普遍關心的問題。目前,工控組態(tài)軟件具有豐富的圖形功能,強大的與硬件通信的能力,但是它的計算能力不強,難以實現(xiàn)復雜的控制策略。MATLAB語言具有強大的科學運算能力,借助其自帶的工具箱可實現(xiàn)各種復雜算法的運算[1]。同時,在工業(yè)測控系統(tǒng)開發(fā)過程中,實現(xiàn)測控系統(tǒng)與仿真系統(tǒng)的集成是當前的一個發(fā)展方向[2]。因此,在工業(yè)控制中將工控組態(tài)軟件與MATLAB相結合,實現(xiàn)優(yōu)勢互補一直是自動控制領域研究的熱點。   RSView32是Rockwell公司開發(fā)的一種組態(tài)軟件包,它是第一個在圖形顯示中利用ActiveX、VisualBasic Applications、OPC(面向過程控制的OLE)的MMI產品,提供了監(jiān)視、控制和數(shù)據(jù)采集功能。在RSView32與matlab間建立通信的方式目前有DDE動態(tài)數(shù)據(jù)交換技術和ActiveX技術二種方式。ActiveX技術是在DDE的基礎上發(fā)展起來的,但它們之間還是有區(qū)別的,ActiveX在調用時不需要服務者事先已經運行,它實際上是在調用一種部件,而無須要求該部件對應的程序正在運行,這會使得其功能更加強大,語句結構更簡單,它的唯一要求就是MATLAB在程序運行的機器上已經安裝并可以成功運行[3]。采用DDE方式進行通信已在一些論文中多次提到,但采用ActiveX技術在RSView32與matlab間通信鮮見有詳細的描述,本文詳細地介紹了二者間進行ActiveX技術通信的步驟[4]。 2、實現(xiàn)通信的過程   首先在RSView32的主界面中輸入所需的參數(shù),通過通信將數(shù)據(jù)傳送給Matlab進行控制運算,然后將結果傳送回RSView32,并通過其主界面演示出相應的結果。其通信流程見下圖1。 3、使用ActiveX控件建立通信的步驟:   3.1 ActiveX對象的創(chuàng)建   在VBA中定義MATLAB對象前,必須在Windows [align=center] 圖1 RSView32與MATLAB通信步驟框圖[/align]   下安裝RSView32和MATLAB6.1軟件,并在RSView32的VBA中引用MATLAB程序。MATALB的ActiveX對象名固定為”Matlab.application”,其具體程序如下:   ‘將MATLAB實例對象定義為公共變量   Public objMATLAB As Object   Private Sub form_initialize()   ‘創(chuàng)建matlab的實例   Set objMATLAB =   CreateObject("matlab.application")   End Sub   3.2在RSView32的人機界面中向tag中讀入一變量值   為了能接收輸入值,在界面上設置Solid Animation ,并讓其對應一個標簽tag,在VBA中讓該標簽名與一變量相關聯(lián):   Set tAvalve7 = gTagDb("inoil\Avalve7")   這里Avalve7是與Solid Animation相對應的一個標簽名,tAvalve7是在VBA中定義的一個變量,在人機界面中通過Solid Animation滑動動畫拖動滾動條即可輸入數(shù)據(jù),該數(shù)據(jù)并儲存在VBA中的tAvalve7.value中。   3.3在VBA中用PutFullMarix命令將該數(shù)寫入MATLAB中   用PutFullMarix命令向MATLAB中寫入數(shù)據(jù)格式為:   Call matlab.putfullMatrix(“a”, “base”,   Mreal,Mimag)   其中 a 為Matlab中的矩陣變量名,base 為變量類型,Mreal 為VBA程序中的實部矩陣,Mimag為VBA中的虛部矩陣。   為了測試PutFullMarix命令,在RSView32的VBA中設計一窗體,其中有一CommandButton3,對CommandButton3_Click()事件編程序如下,運行時在窗體中點擊CommandButton3,則會通過命令PutFullMatrix()實現(xiàn)數(shù)據(jù)從VBA傳送到MATLAB中,并通過getfullmatrix()命令又傳送回VBA中。最后在Text1中顯示結果”90”。   Private Sub CommandButton3_Click()   Dim matlab As Object   Dim result As String   Set matlab =   CreateObject("matlab.application")   Dim sita(1 To 6) As Double   sita(1) = 0: sita(2) = 90: sita(3) = 0   sita(4) = -90: sita(5) = 0: sita(6) = 0   Dim Mreal(1 To 6, 1 To 1) As Double   Dim Mimag() As Double   Dim sitam() As Double   Dim I As Integer   Dim mreal2(1 To 6, 1 To 1) As Double   Dim mimag2() As Double   For I = 1 To 6   Mreal(I, 1) = sita(I)   Next I   Call matlab.PutFullMatrix("sitam", "base", Mreal, Mimag)   Call matlab.getfullmatrix("sitam", "base", mreal2, mimag2)   Text1 = mreal2(2, 1)   End Sub   3.4在VBA中用Execute命令執(zhí)行一條MATLAB命令例如,下面的程序將完成打開Matlab的Command   Windows 窗口以及在Figure No.1窗口中顯示一個三   維著色表面圖形。   ‘將MATLAB實例對象定義為公共變量   Public objMATLAB As Object   Private Sub form_initialize()   ‘創(chuàng)建matlab的實例   Set objMATLAB =   CreateObject("matlab.application")   result = objMATLAB.execute("surf(peaks)")   End Sub   在RSView32中的界面上可設置命令按鈕,如”測試”,在該按鈕的右鍵菜單中打開”Edit Button1”,在如下圖2所示界面中,用Vbaexec begin來調用在VBA程序中的begin函數(shù),該函數(shù)的程序為 :   Private Sub CommandButton1_Click()   Dim matlab As Object   Dim result As String   Set matlab =   CreateObject("matlab.application")   result = matlab.Execute("surf(peaks)")   End Sub   Public Sub begin()   UserForm6.Show   End Sub [align=center] 圖2 RSView32中的按鈕設置界面[/align]   這樣,在RSView32的界面中,就可用”測試”按鈕來調用Matlab中的Command Windows 窗口以及在Figure No.1窗口中顯示一個三維著色表面圖形。   3.5在VBA中用GetFullMarix命令讀取結果   執(zhí)行本命令將matlab中的一個矩陣變量傳送到VBA程序的1維或2維數(shù)組中,其格式為:   Call matlab.getfullmatrix(“a”,”base”,   MReal,Mimag)   例如下面的程序將完成從Matlab中的b數(shù)組中傳送數(shù)據(jù)到VB中的Mreal1數(shù)組中。   MATLAB.execute "b=[1,2;4,7]"   Dim mreal1(1 To 2, 1 To 2) As Double   Dim mimag1() As Double   Call MATLAB.getfullmatrix("b", "base", mreal1, mimag1)   Text1 = mreal1(2, 2) 4、結論   本文采用上述步驟成功地在RSView32與matlab二者間建立了通信,從而利用各自的優(yōu)勢,將復雜的運算由matlab完成,由RSView32實現(xiàn)良好的人機界面和豐富的圖形顯示。本文的工作為在工業(yè)控制領域中使用組態(tài)軟件來完成復雜的控制算法開辟了新的途徑,為測試系統(tǒng)與仿真系統(tǒng)的集成提供了新的技術支持。 參考文獻   [1]石瑩,洪銳,錢曉龍.MATLAB與組態(tài)軟件的數(shù)據(jù)交換技術.儀器儀表學報.2003,24(4):337-340   [2]吳躍斌,謝樹俊,徐立等.液壓仿真技術的現(xiàn)在和未來.液壓與氣動,2002(11):1-3   [3]王穎,胡宗軍,鄒介棠等.ActiveX:從Visual Basic6.0調用MATLAB的實現(xiàn)方法.機電工程.1999(5)   [4] 徐江華,孫榮,邵惠鶴.博士論文:基于組態(tài)王、Excel和Matlab的PID自整定仿真軟件.計算機工程.2003,29(3):27-29

標簽:

點贊

分享到:

上一篇:帶反并聯(lián)二極管IGBT中的二極...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(m.u63ivq3.com)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯(lián)網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯(lián)系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業(yè)自動化與智能制造的全媒體“互聯(lián)網+”創(chuàng)新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號