国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MATLAB GUI/SIMULINK 的軟件設(shè)計及在工程實際中的應(yīng)用

2016-07-23 20:59崔翔鮑克勤邵明強胡旭波
電腦知識與技術(shù) 2016年17期

崔翔++鮑克勤++邵明強++胡旭波++張磊++陳炯

摘要: 對于GUI和SIMULINK聯(lián)合編程問題,本文介紹了一種通過MATLAB的GUI模塊建立的人機交互圖形界面來實時控制Simulink的參數(shù)并運行Simulink仿真的方法。根據(jù)工程實際中的變壓器熱點溫度分析模型,論文介紹了相應(yīng)的溫度計算仿真,并且將GUI和Simulink組合模塊轉(zhuǎn)換成EXE可執(zhí)行文件。通過上述對MATLAB GUI/SIMULINK的應(yīng)用可知,聯(lián)合編程和可執(zhí)行文件的生成提高了研究人員的仿真效率,同時為該模塊在工程中的應(yīng)用提供了一種方案。

關(guān)鍵詞: 人機交互圖形界面;SIMULINK;可執(zhí)行程序;熱點溫度分析

中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2016)17-0220-04

Abstract: For the problem of mixed programming with GUI and SIMULINK, this article introduce a method to establish the graphical user interface to control SIMULINK with GUI in MATLAB. According to the analyzing model of transformer hot-spot temperature, this article introduce relevant temperature calculating program, and transfer the combine model of GUI and SIMULINK to EXE executive program. By the using of MATLAB GUI/SIMULINK , mixed programming and executive program generating improve the efficiency of researcher, and it can provide a valid way to apply the SIMULINK model in the engineering.

Key words: GUI; SIMULINK; Executive program; hot-spot temperature analyzing

Simulink是MATLAB中的一種可視化仿真工具,是一種基于MATLAB的框圖設(shè)計仿真環(huán)境,是實現(xiàn)動態(tài)系統(tǒng)建模、仿真和分析的一個軟件包,為了方便地創(chuàng)建動態(tài)系統(tǒng)模型,Simulink提供了一個建立窗口化的人機交互接口(GUI) ,這個創(chuàng)建過程只需單擊和拖動鼠標(biāo)操作就能完成,它提供了一種更簡潔明了的方式,并且用戶可以立即看到系統(tǒng)的仿真結(jié)果[1]。

從目前應(yīng)用類軟件發(fā)展趨勢來看,友好的圖形用戶界面(Graphical User Interface,GUI)已成為應(yīng)用軟件的基本交互入口[3]。相比于VC、VB等軟件的GUI功能,MATLAB的GUI的優(yōu)勢在于可以方便得控制并修改Simulink中的參數(shù),并可以實時得將所需要的結(jié)構(gòu)顯示在GUI中,而不再需要將Simulink轉(zhuǎn)換成C/C++代碼再利用VC、VB等軟件編制對應(yīng)的GUI界面。

1 SIMULINK仿真模型的搭建和GUI界面的建立

根據(jù)上述對MATLAB中的Simulink/GUI的介紹,結(jié)合工程實際中的基于對實際變壓器運行狀態(tài)的變壓器熱點溫度計算模型,對其的仿真界面進行了編程和分析。

1.1 變壓器熱點溫度分析模型

變壓器熱點溫度監(jiān)測和溫度預(yù)估一直是變壓器實際運行的難點和重點,能夠?qū)ψ儔浩髟诓煌摵杉安煌h(huán)境下的熱點溫度計算,對變壓器實際安全穩(wěn)定運行具有重要意義。本實驗室通過對實際運行的變壓器采集的熱點溫度的分析,我們利用Simulink模型搭建了能夠很好擬合實際熱點溫度的仿真模型。在該模型中,通過輸入環(huán)境溫度、變壓器銘牌參數(shù)、變壓器各部分油溫等溫度參數(shù),可以計算出24小時內(nèi)各個時刻變壓器的運行溫度[2]。

根據(jù)熱電類比理論,變壓器內(nèi)部的熱量傳遞路徑可以等效為電路模型,其中物理量的對應(yīng)關(guān)系為:熱流量對應(yīng)電流、熱阻對應(yīng)電阻、溫度差對應(yīng)電壓、熱容對應(yīng)電容[2]。傳統(tǒng)的基于底層油溫的熱點溫度模型的計算公式為:

溫度差,為熱點與頂層油溫的溫度差。

由于熱點一般在繞組縱向高度85%左右,傳統(tǒng)模型中用頂層油溫作為計算熱點的參考節(jié)點存在較大誤差,本模型用熱點附近油溫替代頂層油溫[2]。改進模型的方程為:[θhs=θamb+θtank+Δθmoil-tank+Δθwoil-moil+Δθhs-woil]

經(jīng)研究表明,該模型在過負荷以及動態(tài)負荷的情況下更接近于實測值,具有較高的熱點溫度預(yù)測精度[2]。

1.2 Simulink仿真模型的搭建

在MATLAB的command window中輸入Simulink,即可進入Simulink Library Browser,在Simulink Library Browser中拖動所需要的模塊,將模塊用連接線進行連接,并對模塊參數(shù)進行調(diào)整即可??梢酝ㄟ^Scope模塊進行仿真數(shù)據(jù)監(jiān)測,可以通過out模塊將數(shù)據(jù)輸出至out.m文件,可以通過To Workspace模塊將數(shù)據(jù)輸出至工作空間。變壓器熱點溫度分析模型如圖1所示。

1.3 GUI界面的建立

1.3.1 使用GUIDE快速生成GUI界面

MATLAB的GUIDE工具為使用者提供了組建布局編輯器、排列工具、屬性編輯器、對象瀏覽器、菜單編輯器這幾種組建布局工具,通過使用布局工具,用戶可以添加所需的用戶控件對象并設(shè)置所需的屬性[3]。設(shè)計完成并保存就完成了對GUI的快速布局,其中所有的圖形界面信息就保存在相應(yīng)的FIG文件中,圖形界面的回調(diào)程序代碼就保存在相應(yīng)的.m文件中。

1.3.2 通過.M文件動態(tài)生成GUI界面

MATLAB圖形界面程序是基于消息驅(qū)動的,但它與其他可視化編程語言的不同之處也決定了其運行流程的不同[3]。運行流程如下。

① 初始化圖形界面。這一過程是通過函數(shù)Openfig實現(xiàn)的,Openfig函數(shù)的調(diào)用與M文件對應(yīng)的FIG文件來初始化圖形界面[3]。在這一過程中,還在回調(diào)函數(shù)中存在CreatFcn函數(shù),除了設(shè)置圖形界面外需要用輸入?yún)?shù),還利用初始化函數(shù)對相應(yīng)的參數(shù)進行初始化設(shè)置。

② 創(chuàng)建用于回調(diào)函數(shù),存儲該圖形界面所有的對象內(nèi)容。這一過程是通過句柄函數(shù)guihandles和guidata來實現(xiàn)的。只有獲得了圖形界面所有對象的句柄,才能順利編程,因為對句柄的應(yīng)用是MATLAB圖形界面程序的基礎(chǔ)。

③ 在后臺人機交互驅(qū)動機制,等待用戶通過圖形界面對計算機進行的操作,并等待計算機做出相應(yīng)的回應(yīng)。

④ 初始化完畢,給出輸出參數(shù)。

2 SIMULINK與GUI中參數(shù)的傳遞

由于Simulink使用的數(shù)據(jù)均來自基本工作空間,因此在仿真之前必須對Simulink中的參數(shù)進行定義,如輸入常數(shù)(Constant)、系統(tǒng)增益(Gain)等,否則將出錯。在Simulink中,可以直接雙擊模塊的圖形對仿真模塊進行參數(shù)的修改,同樣的,在GUI中可以使用set_param()函數(shù)設(shè)置Simulink中的參數(shù)。另外,由于函數(shù)有自己的狀態(tài)空間,因此需要在GUI中使用sim()函數(shù)對Simulink進行模型仿真控制。雖然在函數(shù)中定義了仿真中的的參數(shù),但是這些函數(shù)只存在于函數(shù)的基本狀態(tài)空間中,模型在仿真時無法獲取。因此,由于函數(shù)狀態(tài)空間和基本狀態(tài)空間的變量和數(shù)據(jù)不兼容,這就增加了在GUI中調(diào)用SIMULINK的難度。具體的參數(shù)傳遞步驟如下:

① 在利用GUI控制Simulink時,首先需要在GUI中加載所需要控制的Simulink仿真。利用load_system(‘model)函數(shù)加載需要控制的仿真模塊,其中model即為所需要控制的仿真模塊。

② 在GUI中加載了相應(yīng)的Simulink模型后,即可對模型中的函數(shù)進行控制。利用set_param(‘model/Constant,Value,str)函數(shù)可以將str所對應(yīng)的參數(shù)賦值給model模型中Constant模塊的Value值。同樣的,也可以利用set_param(‘model/Gain,Value,str)函數(shù)將str所對應(yīng)的參數(shù)賦值給model中Gain模塊的Value值。

③ 在配置完相應(yīng)的仿真參數(shù)后,利用sim函數(shù)在GUI中運行仿真,具體的語句為:sim(‘model,str2num(str1)),str1為運行時間,如果不設(shè)置此運行時間,模型的運行時間為Simulink的默認值。運行之后,必須對仿真系統(tǒng)進行保存,否則MATLAB會報錯,保存語句為:save_system('model')。

④ 在仿真結(jié)束之后,研究人員經(jīng)常會需要利用仿真的結(jié)果來進行數(shù)據(jù)分析。Simulink中提供了兩種方法來讓我們利用這些數(shù)據(jù)。第一種是Simulink中的To Workspace模塊,利用這個模塊可以直接將數(shù)據(jù)導(dǎo)入到MATLAB的工作空間(Workspace)中,再在GUI中利用plot或axe等函數(shù)將數(shù)據(jù)繪制在坐標(biāo)系中。第二種是利用Simulink中的Out模塊,可以將仿真的結(jié)果直接輸出到基本工作空間中,如仿真的自變量為時間t、因變量為長度y,在工作空間中就會分別存儲為tout和yout,在GUI中利用plot(tout,yout)函數(shù)即可繪制圖線。另外,也可以在GUI中利用open_system('model/Scope')函數(shù)直接打開Simulink中的Scope進行圖像觀察,這樣還可以利用Scope中內(nèi)置的多種工具來分析圖像,但是這條語句不能在封裝之后的文件中執(zhí)行,即單獨的可執(zhí)行文件不能運行Simulink中的Scope模塊。

3 可執(zhí)行文件EXE的生成

3.1 單獨GUI的可執(zhí)行文件的生成

由于Matlab軟件本身占用較大的存儲空間,不利于在工程實際中方便、直接地使用。為了使編制好的人機交互界面在脫離MATLAB環(huán)境下運行,可以利用MATLAB強大的編譯功能將GUI程序編譯成可執(zhí)行文件(exe)進行發(fā)布和應(yīng)用。但是在編譯之前,需要對MATLAB的編譯環(huán)境進行設(shè)置。在MATLAB的Command Window中輸入”mbuild –setup”,可以選擇不同的編譯器進行編譯,由于Visual C++編譯器對各種系統(tǒng)平臺的兼容性好并且編譯的效率非常高,因此一般選用Visual C++系列的編譯器。設(shè)置好編譯器后,有兩種方法可以將GUI編譯成可執(zhí)行文件。

方法一:直接在命令窗口輸入”mcc –m example.m”或”mcc –e example.m”,其中”example.m”即GUI界面所對應(yīng)的m文件。對于第一條語句,在編譯生成exe文件時,會額外生成一個DOS窗口,這個DOS窗口顯示的內(nèi)容就是Matlab Command Window里的內(nèi)容,這樣會便于程序調(diào)試。在程序調(diào)試安全無誤之后,就可以利用第二條語句,直接生成不含有DOS窗口的exe程序,進行發(fā)布。

方法二:利用Matlab的Deploytool生成exe程序。在命令窗口輸入”deploytool”會提示新建一個”new deployment project”,在Matlab的編譯器一欄中選擇建立”Standalone Application”,然后將所需要轉(zhuǎn)換的GUI主程序放置在”Main Function”中,其他子程序(如子m文件、表格、圖片等)放置在”O(jiān)ther Files”中,并在設(shè)置-打包中勾選”Include MATLAB Compiler Runtime(MCR)”,MCR是在沒有Matlab環(huán)境下運行這種exe程序的環(huán)境。設(shè)置好變量之后就可以點擊”Build the Project”完成編譯,然后點擊”Package the Project”就可以對編譯好的程序與MCR一并打包,這樣在其他電腦上安裝程序時即可以自動安裝程序與環(huán)境。

3.2 單獨SIMULINK的可執(zhí)行文件的生成

Real-Time Workshop(以下簡稱RTW)是Simulink中用于生成C或C++源代碼的工具。它可以將Simulink仿真模塊轉(zhuǎn)換成C或C++代碼與其他語言(如VB、VC、JAVA等)進行混合編程Simulink模型可以,也就是說RTW為Simulink和其他語言提供了一個“接口”。在生成C或C++代碼后即可以將代碼轉(zhuǎn)換成exe程序,如圖2所示,具體步驟如下:

① 編譯模型。RTW會分析仿真中的各個仿真模塊并且編譯成一個中繼文件“model.rtw”。

② 產(chǎn)生C代碼。目標(biāo)語言編譯器會讀取”model.rtw”并將它翻譯為C語言,然后將這個C文件放在一個新建的目錄里,而非工作目錄。

③ 生成一個自定義的makefile。RTW軟件會從一個合適的目標(biāo)makefile樣板里建立一個makefile并將它寫入新建的目錄。

④ 生成可執(zhí)行程序(exe)。

3.3 GUI與SIMULINK進行聯(lián)合編程時的可執(zhí)行文件的生成

由于Matlab的編譯器不支持如”sim”函數(shù)和”set_param”函數(shù)等可以控制Simulink的函數(shù),當(dāng)利用GUI和SIMULINK聯(lián)合編程時,需要對這些函數(shù)進行處理。因此在GUI與Simulink聯(lián)合編程時生成可執(zhí)行文件的做法為:先使用實時工作工具RTW把Simulink編譯成exe文件,然后與GUI一起編譯,這時在GUI中就不能使用控制Simulink相關(guān)的函數(shù),當(dāng)需要給Simulink模塊賦值時,先在GUI里將參數(shù)寫入一個mat文件中,如將x寫入Input.mat為:”save Input.mat x”,然后在Simulink模型中對模型進行修改,讓Simulink從mat文件中讀取參數(shù),而不是直接由Constant模塊或者Gain模塊給仿真賦值。同樣的,在Simulink輸出時,將輸出參數(shù)也寫入到mat文件(如Output.mat)中,Output文件也會存儲在Workspace中,就可以在GUI中從Output.mat文件讀取數(shù)據(jù)并作圖。

4 變壓器熱點溫度仿真計算及分析

如圖3所示為本實驗室開發(fā)的變壓器熱點溫度分析軟件,該軟件可以設(shè)置不同變壓器參數(shù)并進行保存,通過輸入不同的環(huán)境參數(shù)以及溫度限制,可以計算出變壓器熱點溫度曲線以及當(dāng)前條件下的變壓器運行參數(shù)。此外,該軟件還具有對變壓器過載能力分析的能力,輸入期望的目標(biāo)運行電流或者目標(biāo)運行負載可以得到相應(yīng)的過載分析結(jié)果。

如圖4,所示為本實驗室研制的改進模型熱點溫度、實測熱點溫度與其他模型熱點溫度對比圖,其中實測熱點溫度數(shù)據(jù)為四川省資陽電力公司的變壓器實際運行數(shù)據(jù)。通過與實際運行數(shù)據(jù)進行比對發(fā)現(xiàn),該仿真結(jié)果能夠很好地擬合實際運行曲線,并且利用本論文中的方法編制的軟件能夠穩(wěn)定、高效地運行在變電站中,對變電站的實際生產(chǎn)提供有力的數(shù)據(jù)支持。

其他模型熱點溫度對比[2]

當(dāng)環(huán)境溫度為25℃,變壓器額定功率為120MVA,變壓器額定電壓為250KV,負載電流為250A時,變壓器的額定電流為277.13A,電流裕度為46.49A,當(dāng)前運行溫度為83.35℃,熱點溫度曲線如圖5所示。

由MATLAB軟件中的Simulink/GUI在變壓器熱點溫度計算中的應(yīng)用可知,該系統(tǒng)通過輸入相應(yīng)的參數(shù),可實現(xiàn)對變壓器熱點溫度、電流裕度和過載能力分析,這大大減少了研究人員在常規(guī)方法基礎(chǔ)上的工作量,提高了效率,同時為今后MATLAB軟件中的Simulink/GUI在工程應(yīng)用中提供了一種新的解決問題方法。

5 結(jié)論

① 在Matlab中可以利用Simulink與GUI的混合編程來實現(xiàn)仿真與界面的融合,避免了先將Simulink轉(zhuǎn)換為C代碼在其他界面軟件上二次編程的繁瑣,并且還可以在GUI中實時地修改各類參數(shù),這種方法高效而又穩(wěn)定。

② Simulink與GUI混合編程可以編譯成可執(zhí)行文件exe,而且這種方法要比利用外部接口來實現(xiàn)exe程序的設(shè)計要簡便。

③ 通過該方法編制的軟件可以脫離matlab環(huán)境運行,易于在工程實際工作中使用。

參考文獻:

[1] 劉浩, 韓晶.MATLAB R2012a完全自學(xué)一本通[M].北京:電子工業(yè)出版社,2003:136-137.

Liu H, Han J. Self-Study of MATLAB R2012a;Bei Jing: Publishing House of Electronics Industry,2003:136-137.

[2] 陳炯,薛飛,周健聰,等.動態(tài)負載下改進的變壓器熱點溫度計算方法[J].華東電力,2014,42(12).

Chen J,Xue F,Zhou J C, etc. Improved Calculation Method for Transformer Hot Spot Temperature with Dynamic Load. East China Of Electric Power, 2014;Vol42,No.12

[3] 陳垚光,毛濤濤,王正林,等.精通MATLAB GUI設(shè)計[M].北京:電子工業(yè)出版社,2011:236-237.

Chen Y G, Mao T T, Wang Z L, etc. Master In MATLAB GUI Design, ublishing House of Electronics Industry,2011:236-237

[4] MathWorks.MATLAB SIMULINK Real-Time Workshop 7 Getting Started Guide; Mathworks,13-15.

富蕴县| 磐安县| 曲水县| 堆龙德庆县| 察雅县| 新建县| 吴江市| 临潭县| 汕头市| 承德市| 杨浦区| 绥芬河市| 巴青县| 乌拉特前旗| 宜宾县| 靖远县| 新绛县| 酉阳| 金川县| 灌阳县| 揭阳市| 溧阳市| 台中县| 凯里市| 桓台县| 宝清县| 敖汉旗| 巴塘县| 休宁县| 隆子县| 四子王旗| 红河县| 容城县| 万年县| 凤翔县| 西丰县| 高唐县| 岳西县| 固镇县| 高碑店市| 深水埗区|