在上述系統(tǒng)仿真模型的基礎(chǔ)上開發(fā)仿真試驗(yàn)人機(jī)操作界而和相關(guān)數(shù)據(jù)處理程序,并實(shí)現(xiàn)與組態(tài)監(jiān)控軟件間動態(tài)數(shù)據(jù)傳輸功能,是進(jìn)一步增強(qiáng)試驗(yàn)方案驗(yàn)證和操作人員培訓(xùn)功能的需要。
一、人機(jī)操作界面
MATLAB提供的圖形界而開發(fā)工具雖然具有一定的局限性,但它可以自接使用MATLAB專用計(jì)算函數(shù),與SIMULINK仿真模型共享主工作空間數(shù)據(jù),并可利用SIMULINK內(nèi)嵌ActicxX控制技術(shù)方便地實(shí)現(xiàn)與仿真模型間動態(tài)數(shù)據(jù)傳遞功能。
模擬高低溫環(huán)模系統(tǒng)實(shí)際操作界而開發(fā)的仿真試驗(yàn)人相L操作界而如圖6所示。用戶無需訪問后臺系統(tǒng)仿真模型,即可模擬實(shí)際操作過程,實(shí)現(xiàn)修改相應(yīng)模型參數(shù)、啟停設(shè)備、修改控制參數(shù)等功能。同時(shí),該界而還具有對仿真結(jié)果進(jìn)行顯示、分析、保存及生成報(bào)表功能,并對小正確試驗(yàn)步驟或參數(shù)超過女全值給出報(bào)警信息。其中,該界而控制仿真的進(jìn)行主要是通過set param命
令修改仿真模型的屬性實(shí)現(xiàn)的,如利用set param('mymodel','StartTime','S','StopTime','inf)指定仿真開始時(shí)刻為Ss,仿真時(shí)間為無限長,利用set param('mymodel','SimulationCommand','pause')},}停仿真計(jì)算。
將人機(jī)操作界而上各組件與相應(yīng)仿真模塊的Tag屬性值標(biāo)志相同,同時(shí)利用get/set和get_param/set_param命令實(shí)現(xiàn)界而數(shù)據(jù)及仿真模塊參數(shù)的獲得和修改,并進(jìn)一步編制各組件回調(diào)函數(shù)可以實(shí)現(xiàn)將界而數(shù)據(jù)向仿真模型的傳遞。如根據(jù)人機(jī)操作界而上用戶給定控制數(shù)據(jù)修改相應(yīng)仿真模塊參數(shù)的子函數(shù)為:
function y=Parameter Export Fcn(handles,HSYS)%handles:主窗u各兀件數(shù)柄,HSYS:仿真模型數(shù)柄
fighandle=handles.MainFig;%獲得主窗u數(shù)柄
%將各界向單兀數(shù)柄的可見性改為可見
newhandles=struct2ce11(handles);
for i=1 aength(newhandles)
set(newhandles{i},'HandleV isibility','on');
end
%將所有滑塊數(shù)值傳給對應(yīng)控制模塊
block_tag=findobj(fighandle,'style','slider');
fori=laength(block_tag)
h=block_tag(i);
NewVal=get(h,'V aloe');
NewStrVal=num2str(NewVal);
bl=find_system(HSYS{1},'Tag',get(block tag(i),'Tag'));
if-isempty(bl)
set_param(bl{1},'Value',NewStrVal);
end
end.____
另一方而,SIMULINK內(nèi)嵌了ActiveX控制技術(shù)。在仿真模型中將某仿真數(shù)據(jù)輸入到一個(gè)ActiveX Control模塊,同時(shí)在人機(jī)操作界而生成函數(shù)中利用actxcontrol命令在界而上指定位置創(chuàng)建一個(gè)ActiveX Control單元與之相對應(yīng),即可實(shí)現(xiàn)該仿真數(shù)據(jù)在人機(jī)界而的動態(tài)顯示。
如為實(shí)現(xiàn)室內(nèi)溫度仿真計(jì)算結(jié)果曲線在ICI 6所示人機(jī)操作界而中的動態(tài)顯示,在界而生成M函數(shù)中增加如下語句:
hActx_TR=actxcontrolfmwStrip.stripctrl.l',[628 115 370240],fig);
hActx_TR.configuration='Strip ChartImportcharf;
hActx TR_MaxRufFerSize=20000:
hActx_TR.XSpan=3600/60/60/24;
hActx TR_TimeMinutecFormat='%H:%M
assignin fbase','hActx_TR',hActx_TR);
其中,mwStrip.stripctrl.l為SIMULINK系統(tǒng)內(nèi)部指定的動態(tài)曲線顯示框?qū)?yīng)函數(shù)標(biāo)識,語句2到5則是通過調(diào)用并修改Dials&Gauges模塊組中Strip Chart模塊屬性的方法確定個(gè)性化顯示模式,語句6將該框圖對應(yīng)數(shù)柄傳到基本工作空間,以供仿真模型調(diào)用。同時(shí)在系統(tǒng)仿真模型中,將室內(nèi)溫度計(jì)算結(jié)果輸入到一個(gè)ActiveX Control模塊,指定其數(shù)柄函數(shù)名為hActx_TRes fun,并如下編寫:
function hactx=hActx TR fun
hactx=evalin('base','hActx_TR');
注意該函數(shù)返回變量與人機(jī)界而函數(shù)中對應(yīng)顯示框圖返回?cái)?shù)柄變量相同。
二、與組態(tài)監(jiān)控軟件問動態(tài)數(shù)據(jù)傳遞
美國FIX組態(tài)軟件廣泛應(yīng)用于系統(tǒng)監(jiān)控領(lǐng)域。若能在仿真軟件與組態(tài)監(jiān)控軟件間實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)傳輸,則組態(tài)軟件逼真的系統(tǒng)流程可顯著增強(qiáng)仿真試驗(yàn)效果,同時(shí)也為進(jìn)一步利用實(shí)測數(shù)據(jù)在線式修正仿真模型參數(shù)奠定了基礎(chǔ)n}MATLAB仿真軟件和FIX組態(tài)軟件間數(shù)據(jù)傳輸可通過動態(tài)數(shù)據(jù)傳輸DDE技術(shù)實(shí)現(xiàn)。山于仿真時(shí)間們們和實(shí)際時(shí)間小同,以MATLAB作為Client主動建立對話并傳遞數(shù)據(jù)的方式更介適。因?yàn)檫@樣小僅可以根據(jù)仿真計(jì)算時(shí)間介理建立對話,減少數(shù)據(jù)傳輸對仿真計(jì)算速度的影響;還可以同時(shí)傳遞仿真結(jié)果及其對應(yīng)的仿真時(shí)間,以利用組態(tài)監(jiān)控軟件對仿真結(jié)果數(shù)據(jù)進(jìn)行正確處理、顯示、分析及存檔等。
具體實(shí)現(xiàn)方法是在系統(tǒng)仿真模型添加數(shù)據(jù)傳輸模塊,并利用時(shí)鐘和Trigger模塊控制數(shù)據(jù)傳輸模塊調(diào)用頻率,以按仿真計(jì)算時(shí)間間隔控制數(shù)據(jù)傳輸頻率。所有需要傳遞的仿真結(jié)果和仿真時(shí)間以向量形式為數(shù)據(jù)傳輸模塊及其對應(yīng)數(shù)據(jù)傳輸函數(shù)的輸入?yún)?shù)u。數(shù)據(jù)傳輸函數(shù)中首先利用channel=ddeinit('view','tagname')建立MATLAB與Fix監(jiān)視流程間DDE對話,其中view為Fix軟件DDE服務(wù)名稱,tagname為監(jiān)視流程U而名稱;然后通過ddepoke(channel,"auto:ai5.fcv",u(1))等語句即可逐個(gè)將仿真結(jié)果(如個(gè)輸入變量u(1))傳遞給組態(tài)軟件中對應(yīng)顯示模塊變量(如auto:ai5.fcv)。圖7為高低溫環(huán)模系統(tǒng)仿真試驗(yàn)結(jié)果在Fix組態(tài)監(jiān)控流程中實(shí)時(shí)顯示。
http://m.zhdtlyjq.com