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

?

RTW 技術(shù)在輪機(jī)模擬器中的應(yīng)用

2014-01-16 05:57高德基盧森微
電子設(shè)計(jì)工程 2014年14期
關(guān)鍵詞:駕駛臺(tái)編譯器輪機(jī)

高德基 , 歐 鎮(zhèn),盧森微

(1. 江蘇科技大學(xué) 電子信息學(xué)院, 江蘇 鎮(zhèn)江 212003 ; 2. 江蘇科技大學(xué) 經(jīng)濟(jì)管理學(xué)院, 江蘇 鎮(zhèn)江 212003)

RTW(Real Time Workshop)技術(shù)是一種將Simulink模型自動(dòng)轉(zhuǎn)化為代碼的技術(shù)。目前,在開(kāi)發(fā)輪機(jī)模擬器的過(guò)程中,需要搭建船舶主機(jī)的數(shù)學(xué)模型。船舶主機(jī)的數(shù)學(xué)模型非常繁瑣,而市場(chǎng)對(duì)產(chǎn)品的需求呈現(xiàn)多樣性、快速性的趨勢(shì), 這使產(chǎn)品開(kāi)發(fā)面臨著多樣性需求與快速開(kāi)發(fā)之間的矛盾。其中系統(tǒng)設(shè)計(jì)軟件( Simulink軟件)是用MATLAB語(yǔ)言建立的一種新型的圖形建模工具,它免去了程序代碼編程帶來(lái)的低效與繁瑣,可以方便地建立系統(tǒng)的模型(例如系統(tǒng)被控對(duì)象的模型、控制器的模型),通過(guò)仿真可以觀察到模型的各種性能,而且,如果模型搭建的不理想,還可以很快地進(jìn)行反復(fù)設(shè)計(jì)和反復(fù)實(shí)驗(yàn),直到找到比較好的解決方法[1]。但是Simulink運(yùn)算較慢,不能滿(mǎn)足輪機(jī)模擬器實(shí)時(shí)仿真的要求。應(yīng)該將所建立的模型轉(zhuǎn)變?yōu)镃++程序。具體實(shí)現(xiàn)時(shí),不需要將設(shè)計(jì)數(shù)學(xué)模型進(jìn)行編程,可直接將建立的simulink模型通過(guò)code generation 工具轉(zhuǎn)換為可執(zhí)行代碼,下載到存儲(chǔ)器中,這樣大大減輕了軟件工程師的編碼工作量,并且將Simulink模型轉(zhuǎn)換成的C/C++代碼能脫離MATLAB環(huán)境獨(dú)立運(yùn)行。需要注意的是,要想成功地運(yùn)行code generation并生成C++代碼,需要在電腦上安裝Microsoft Visual C++ 5.0以上版本的編譯器。

1 Simulink轉(zhuǎn)化為代碼的過(guò)程

RTW轉(zhuǎn)換代碼的過(guò)程包括:

1)分析模型

RTW的程序創(chuàng)建過(guò)程首先從對(duì)Simulink模塊方框圖的分析開(kāi)始,包括如下過(guò)程:

① 計(jì)算仿真和模塊參數(shù)

② 遞推信號(hào)寬度和采樣時(shí)間

③ 確定模型中各模塊的執(zhí)行次序

④ 計(jì)算工作向量的大小(例如S函數(shù)使用的工作向量)

在本階段,RTW首先讀取模型文件(mdoel.mdl)并對(duì)其進(jìn)行編譯,形成模型的中間描述文件"該中間描述文件以ASCll碼的形式進(jìn)行存儲(chǔ),其文件名為model.rtw,該文件是下一步驟的輸入信息。mdoel.rtw文件在格式上與simulink模型.mdl文件類(lèi)似。

2)目標(biāo)語(yǔ)言編譯器(TLC)生成代碼

在程序創(chuàng)建的第二階段,目標(biāo)語(yǔ)言編譯器將中間描述文件(mdoel.nw)轉(zhuǎn)換為目標(biāo)指定代碼。目標(biāo)語(yǔ)言編譯器(TagrctLnaguageComnlier)是一種可將上述模型描述文件轉(zhuǎn)換為指定目標(biāo)代碼的解釋性編程語(yǔ)言"目標(biāo)語(yǔ)言編譯器執(zhí)行一個(gè)由幾個(gè)TLC文件組成的TLC程序,該程序指明了如何根據(jù)mdoel.rtw文件,從模型中生成所需代碼[2]。

TLC程序包括如下文件:

a.系統(tǒng)目標(biāo)文件(SystemTagrctFile)系統(tǒng)目標(biāo)文件是主文件或入口點(diǎn)。

b.模塊目標(biāo)文件(BlockTagretflie)。

c.目標(biāo)語(yǔ)言編譯器函數(shù)庫(kù)。

3)生成自定義的聯(lián)編文件(makeflie)

4)生成可執(zhí)行程序[3]

本文以輪機(jī)模擬器的仿真對(duì)象——MAN B&W 6L80MC大型低速二沖程渦輪增壓柴油主機(jī)為對(duì)象來(lái)建立了其Simulink模型[4]。其模型如圖1所示。

假定已經(jīng)安裝好了Matlab支持的一個(gè)編譯器(如VC),首先需要進(jìn)行編譯器的配制。在Windows控制臺(tái)的窗口下鍵入mex-setup。系統(tǒng)會(huì)顯示一個(gè)提示選擇編譯器的菜單,選擇當(dāng)前安裝的編譯器。

圖1 MANB&W6L80MC柴油機(jī)Simulink模型Fig.1 MANB&W6L80MC diesel engine’s Simulink model

對(duì)于建立好的Simulink模型,首先要在Simulink窗口中打開(kāi)此模型,為了將該模型通過(guò)code generation生成C++代碼,實(shí)時(shí)仿真需要選擇定步長(zhǎng)的仿真算法,所以在轉(zhuǎn)換之前應(yīng)進(jìn)行相應(yīng)的設(shè)置。仿真的控制參數(shù)由Toolscode generationoptions菜單項(xiàng)來(lái)選擇。定步長(zhǎng)的仿真算法在該對(duì)話(huà)框下的Solver options下選擇。

Simulink模型中輸出參數(shù)的設(shè)置是在該信號(hào)線的signal propety對(duì)話(huà)框中設(shè)置,要將所有在VC中用的信號(hào)屬性均設(shè)置為 ExportedGlobal。

此外,應(yīng)將code generationoption對(duì)話(huà)框下的Code Generation中的language選擇目標(biāo)代碼的生成類(lèi)型。完成之后,在單擊System target file欄對(duì)應(yīng)的Browse按鈕,來(lái)選擇目標(biāo)代碼生成方式。這里選擇Generic Real-Time Target 下的grt.tlc。以上參數(shù)設(shè)置如表1所示。

配置好各項(xiàng)參數(shù)后,就可以轉(zhuǎn)換為C++代碼了。系統(tǒng)會(huì)自動(dòng)產(chǎn)生一個(gè)名為caiyouji_grt_rtw的文件夾,里面包含生成的所有文件。其中caiyouji.cpp為實(shí)現(xiàn)模型功能的c++代碼,caiyouji_data.cpp為模型所用到的初始參數(shù)值,caiyouji.h為包含參數(shù)和狀態(tài)變量定義的頭文件,caiyouji_types.h為代碼中所用數(shù)據(jù)類(lèi)型的聲明,caiyouji_private.h為模型中定義的本地常量和本地變量頭文件。其他相關(guān)生成文件:rt_nonfinite.cpp,rt_nonfinite.h, rtwtypes.h, rtmodel.h,rtGetNaN.cpp, rtGetNaN.h,rtGetInf.h等為定義RTW所需的必要參數(shù)。

表1 代碼轉(zhuǎn)換參數(shù)設(shè)置Tab.1 Code transformation parameters settings

2 驗(yàn)證代碼的正確性

將轉(zhuǎn)換完的可執(zhí)行C++代碼加入到新建的MFC的對(duì)話(huà)框的程序中,運(yùn)行該程序,將模型仿真所產(chǎn)生的柴油機(jī)升速曲線數(shù)據(jù)存入.txt文本中,再將該數(shù)據(jù)導(dǎo)入MATLAB中,繪出的圖形與Simulink自身所產(chǎn)生的圖形對(duì)比如圖2所示。

圖2 Simulink和代碼繪制的升速曲線對(duì)比Fig.2 The contrast of the curve drawed by Simulink and the code

由圖2兩圖中曲線可以看出轉(zhuǎn)換的代碼是正確的,能夠得出正確的數(shù)據(jù)。

3 C++代碼在虛擬操作系統(tǒng)上的應(yīng)用

下面以基于virtools的船舶主機(jī)虛擬操作系統(tǒng)的駕駛臺(tái)操作為例來(lái)說(shuō)明。對(duì)于生成的C++代碼, caiyouji_initialize()為系統(tǒng)的初始化函數(shù),caiyouji_step()為系統(tǒng)仿真運(yùn)行的函數(shù),caiyouji_derivatives()為計(jì)算連續(xù)模型的導(dǎo)數(shù)的函數(shù),caiyouji_terminate()為模型中止函數(shù)[5]。生成代碼的模型執(zhí)行流程如圖3所示。

圖3 代碼的執(zhí)行流程Fig.3 Code execution process

其中仿真運(yùn)算函數(shù)中的一部分如下:

caiyouji_step()

{zhuanshu=caiyouji_X.Integrator_CSTATE; (轉(zhuǎn)速輸出)

youci=caiyouji_P.Gain4_Gain*caiyouji_B.Gain3;(油尺刻度)

gongyouliang=(0.043* rt_powd_snf(zhuanshu, 0.335) +0.06353 * youci) -0.095255;

(每循環(huán)供油量)

……}

設(shè)定各模塊的參數(shù)。本文采用edit box輸入,代碼如下[6]:

UpdateData(TRUE);

caiyouji_P.Gain_Gain=m_edit1;(更新P參數(shù))

caiyouji_P.Gain1_Gain=m_edit2;(更新I參數(shù))

caiyouji_P.Gain2_Gain=m_edit3;(更新D參數(shù))

caiyoujizhuanshu1_P.Integrator_IC=shedingzs; (在線調(diào)整積分初值)

將產(chǎn)生的代碼加入到創(chuàng)建好的MFC工程里,做進(jìn)一步的編程。這里采用ADO的方式訪問(wèn)數(shù)據(jù)庫(kù)。

將各模塊的參數(shù)設(shè)定好以后,就可以將代碼所產(chǎn)生的數(shù)據(jù)根據(jù)駕駛臺(tái)發(fā)出的信號(hào)實(shí)時(shí)的存入SQL數(shù)據(jù)庫(kù)中。例如當(dāng)程序檢測(cè)到數(shù)據(jù)庫(kù)表 x3d_output中第3行的數(shù)據(jù)為1時(shí)(代表駕駛臺(tái)臺(tái)的啟動(dòng)主機(jī)按鈕按下),將向數(shù)據(jù)庫(kù)表x3d_input第17、18、19行實(shí)時(shí)存入數(shù)據(jù)(分別代表啟動(dòng)空氣壓力,柴油機(jī)轉(zhuǎn)速,油門(mén)刻度)。以供駕駛臺(tái)操作界面調(diào)用。存入SQL數(shù)據(jù)庫(kù)表x3d_input中的數(shù)據(jù)如圖4所示。

駕駛臺(tái)的操作界面讀取數(shù)據(jù)并顯示如圖5所示。

圖4 數(shù)據(jù)庫(kù)表x3d_inputFig.4 Database table x3d_input

圖5 啟動(dòng)空氣壓力表Fig.5 Starting air pressure gauge

另外,柴油機(jī)排氣溫度,轉(zhuǎn)速等均可駕駛臺(tái)操作界面讀取SQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)來(lái)顯示。駕駛臺(tái)操作界面上的燈也可根據(jù)SQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)亮滅。

4 結(jié) 論

文中通過(guò)將simulink模型轉(zhuǎn)變?yōu)镃++程序,并驗(yàn)證了結(jié)果的正確性,實(shí)現(xiàn)了對(duì)模塊參數(shù)的實(shí)時(shí)修改,且將Simulink模型所產(chǎn)生的數(shù)據(jù)輸入到了數(shù)據(jù)庫(kù)中,以供輪機(jī)模擬器中的操作界面調(diào)用。這樣既減輕了編寫(xiě)程序的繁瑣,又滿(mǎn)足了輪機(jī)模擬器仿真實(shí)時(shí)性的要求[7]。與傳統(tǒng)設(shè)計(jì)方法相比,具有開(kāi)發(fā)周期短、費(fèi)用低、效率高的特點(diǎn)。

[1 ] 邱曉林,李天柁,弟宇鳴等.基于MATLAB的動(dòng)態(tài)模型與系統(tǒng)仿真工具——Simulink3.0/4.x[M].西安:西安交通大學(xué)出版社,2003.

[2]蔡毅.基于Matalab/RTW實(shí)時(shí)仿真系統(tǒng)的設(shè)計(jì)與研究[D].天津:天津大學(xué),2005.

[3]王振波. 基于Matlab RTW/Engine的建模仿真實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告[R] .北京航空航天大學(xué),2010.

[4]甘霏斐. 輪機(jī)模擬器柴油主機(jī)系統(tǒng)動(dòng)態(tài)過(guò)程實(shí)時(shí)仿真研究[D] 鎮(zhèn)江:江蘇科技大學(xué), 2005.

[5]常青,邢超,李言俊.基于Matlab/Simulink的交互式實(shí)時(shí)仿真[J] . 計(jì)算機(jī)工程與應(yīng)用, 2003(24):131-132.CHANG Qing, XING Chao, Li Yanjun.An interactive real time simulation based on Matlab/Simulink[J]. Computer Engineering and Application,2003.24:131-132.

[6]王春民,安海忠,王豐貴.基于VC和Simulink的電力電子仿真實(shí)驗(yàn)平臺(tái)設(shè)計(jì)[J].吉林大學(xué)學(xué)報(bào):信息科學(xué)版,2008,26(3):264-268.WANG Chun-min, AN Hai-zhong,WANG Feng-gui. Design of simulation experimental platform for power electronics based on VC and Simulink[J].Journal of Jilin University Information Science Edition,2008,26(3):264-268 .

[7]李長(zhǎng)文,趙長(zhǎng)祿,張付軍,等.基于Matlab/Simulink及RTW的柴油機(jī)瞬態(tài)建模與仿真[J]. 北京理工大學(xué)學(xué)報(bào), 2004,24(7):579-582.LI Chang-wen, ZHAO Chang-lu, ZHANG Fu-jun, et al.Modeling and simulation of diesel engine under transient conditions based on Matlab/Simulink and RTW[J]. Transactions of Beijing Institute of Technology,2004,24(7): 579-582.

猜你喜歡
駕駛臺(tái)編譯器輪機(jī)
基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
論駕駛臺(tái)資源管理之下的船舶航行安全研究
基于駕駛臺(tái)資源管理下的船舶航行安全分析
航海新技術(shù)在駕駛臺(tái)資源管理中的運(yùn)用
Microchip為MPLAB XC系列專(zhuān)業(yè)版編譯器推出低成本可續(xù)訂包月許可證
高職輪機(jī)專(zhuān)業(yè)高中職銜接專(zhuān)業(yè)英語(yǔ)課程體系的構(gòu)建
船舶輪機(jī)常見(jiàn)的故障
引航員在船舶駕駛臺(tái)資源管理中的作用
面向?qū)嵅僭u(píng)估的輪機(jī)虛擬拆裝考試系統(tǒng)開(kāi)發(fā)
通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)