,,,,
(海軍工程大學(xué) 動力工程學(xué)院,武漢 430033)
艦船動力裝置訓(xùn)練模擬器是模擬實船動力設(shè)備操作、培養(yǎng)艦員專業(yè)技能的有效器材。目前岸基動力裝置訓(xùn)練模擬器普遍采用工控機(jī)、大量信號I/O卡及專用仿真軟件平臺的基本架構(gòu)[1-3],其復(fù)雜的仿真模型及信號傳輸有賴于微機(jī)及復(fù)雜的信號采集系統(tǒng)。該類動力裝置訓(xùn)練模擬器存在開發(fā)周期長、成本高、占用場地大、靈活性差以及不便大規(guī)模推廣應(yīng)用等缺陷,不適合構(gòu)建實船訓(xùn)練系統(tǒng)。國外實船訓(xùn)練系統(tǒng)研究較早,已有相關(guān)產(chǎn)品裝備艦上,而國內(nèi)研究起步較晚,目前只有一些方案構(gòu)想,來實現(xiàn)實船驗證。
為此,引入基于模型的代碼生成技術(shù)和分布式仿真技術(shù),提出艦船柴油機(jī)推進(jìn)系統(tǒng)分布式嵌入仿真技術(shù)方案,以噴水推進(jìn)系統(tǒng)為對象,設(shè)計仿真樣機(jī),驗證方案的可行性和通用性。其關(guān)鍵技術(shù)問題在于系統(tǒng)模塊化分解建模、嵌入式代碼生成與集成、分布式嵌入實現(xiàn)以及各MCU單元的通訊設(shè)計。
噴水推進(jìn)系統(tǒng)的整體模型見圖1。根據(jù)圖中的船體-柴油機(jī)-噴泵系統(tǒng)間的相互作用關(guān)系,通過2個積分環(huán)節(jié)分別計算柴油機(jī)轉(zhuǎn)速ne和船速Vs。
圖1 噴水推進(jìn)系統(tǒng)模型
根據(jù)剛體繞定軸轉(zhuǎn)動的動量矩定理,有:
(1)
式中:Me和Mp分別為柴油機(jī)輸出轉(zhuǎn)矩和推進(jìn)器負(fù)載轉(zhuǎn)矩;Ie、Ip和Iew分別為柴油機(jī)、推進(jìn)器和推進(jìn)器附連水的轉(zhuǎn)動慣量。
實際船體模型由三自由度運(yùn)動方程組成,由于橫向和垂直方向的運(yùn)動對本研究內(nèi)容影響不大,為簡化模型,這里僅考慮船體縱向運(yùn)動。
(2)
式中:Tp、Ts分別為噴泵產(chǎn)生的推力和有效推力;Rs為船體阻力,可簡化為航速Vs的函數(shù)或由實船試驗數(shù)據(jù)得出;t為推力減額系數(shù);Ms、Mew分別為船體質(zhì)量和附連水質(zhì)量。
柴油機(jī)推進(jìn)系統(tǒng)動力參數(shù)的仿真計算參見文獻(xiàn)[4]和[5]。對于噴水推進(jìn)裝置而言,根據(jù)其結(jié)構(gòu)和工作機(jī)理[6],由流體力學(xué)原理可得泵的揚(yáng)程H、流量Q、轉(zhuǎn)矩Mp的計算式。
(3)
Q=AjVj
(4)
(5)
式中:kj為噴口損失系數(shù);k為管道損失系數(shù);Δh為噴泵內(nèi)水位差值;g為重力加速度;Aj為噴口面
積;Vj為噴嘴截面積噴射速度;ρ為進(jìn)水密度;np為噴泵的轉(zhuǎn)速;η為有效效率。
推力T為:
T=ρQ(Vj-Vs)
(6)
調(diào)速環(huán)節(jié)采用PID算法框圖,見圖2。在閉環(huán)調(diào)速控制環(huán)節(jié)增加了一個轉(zhuǎn)速設(shè)定的前饋環(huán)節(jié),設(shè)經(jīng)過PID調(diào)節(jié)后的輸出柴油機(jī)油量為G,則閉環(huán)轉(zhuǎn)速控制環(huán)節(jié)油量調(diào)節(jié)的PID 算法如下。
(7)
e(t)=kf(net-net-1)
(8)
式中:G(t)為當(dāng)前采樣時刻油量控制輸出;kf為前饋增益系數(shù);net和net-1為轉(zhuǎn)速設(shè)定值和當(dāng)前轉(zhuǎn)速反饋值;kp為比例增益系數(shù);Ti、Td是積分時間常數(shù)和微分時間常數(shù);e(t)為本次采樣的偏差值。
采用Simulink仿真工具建立噴水推進(jìn)系統(tǒng)整體仿真模型見圖2,用作下文代碼生成模型。該模型控制系統(tǒng)包括機(jī)旁、集控室和駕駛室控制3個子系統(tǒng),推進(jìn)系統(tǒng)包括柴油機(jī)、齒輪箱、噴水推進(jìn)器和船體等幾個模塊。
對噴水推進(jìn)系統(tǒng)模型進(jìn)行仿真驗證,利用建立的模型進(jìn)行雙機(jī)雙泵加速工況仿真計算,結(jié)果見圖3。圖中所有穩(wěn)態(tài)數(shù)據(jù)與試驗數(shù)據(jù)之間的平均誤差均在6%以內(nèi),說明建立的模型能夠模擬推進(jìn)系統(tǒng)總體工作情況,可用做下文代碼生成模型。
圖3 雙機(jī)雙泵加速工況仿真結(jié)果
動力裝置控制系統(tǒng)一般包括駕駛室控制、集控控制和機(jī)旁控制。操作部位轉(zhuǎn)換設(shè)計時必須具有一定的優(yōu)先級,其轉(zhuǎn)換的優(yōu)先原則是:(1)機(jī)旁優(yōu)于遙控操縱;(2)遙控操作時,集控優(yōu)于駕駛室操縱。機(jī)旁、遙控轉(zhuǎn)換(R_L_Control),用于切換遙控和機(jī)旁控制的控制單元信號;駕駛室、集控室的轉(zhuǎn)換(B_E_Control),用于切換駕駛室操縱器(或集控室遙控操縱器)輸向遙控控制單元的信號,任何時候只能有一個操縱器輸入信號有效[7]??刂茩?quán)限邏輯轉(zhuǎn)換Simulink模型見圖4。
圖4 控制權(quán)限轉(zhuǎn)換Simulink模型
對于建立的Simulink仿真模型,利用RTW(實時工作間)工具分2步將其轉(zhuǎn)化為純C代碼:①配置RTW參數(shù);②設(shè)置Simulink模型中的某些參數(shù)或變量為全局變量。
模型相關(guān)參數(shù)設(shè)置見表1。為匹配目標(biāo)機(jī)運(yùn)行環(huán)境,設(shè)置定步長采樣頻率,設(shè)置步長0.01 s,采用Ode3解算算法,選擇嵌入式目標(biāo)代碼類型的ert.tlc,將Simulink模型的輸入輸出參數(shù)信號屬性設(shè)置為全局變量[8-10]。
表1 參數(shù)設(shè)置
將Simulink模型的某些參數(shù)或變量設(shè)置為全局變量,使模型自動生成的代碼在目標(biāo)中運(yùn)行時,可以方便與Simulink模型交互,實現(xiàn)在線參數(shù)和信號通信。該噴水推進(jìn)系統(tǒng)仿真模型需要交互的參數(shù)很多,如機(jī)旁控制信號、集控室控制信號、駕駛室控制信號、柴油機(jī)轉(zhuǎn)速、航速等??刂葡到y(tǒng)相關(guān)全局變量設(shè)置見表2。
在Matlab中預(yù)先安裝好支持的編譯器VC++2012,在命令窗口輸入mex -setup,選擇當(dāng)前安裝的編譯器。配置好相關(guān)參數(shù)后,點擊build按鈕可以生成模型代碼,系統(tǒng)自動產(chǎn)生一個DiselJetHull_ert_tlc文件夾,包含模型的源文件、頭文件和其他代碼說明文件。其中DiselJetHull.c是實現(xiàn)模型功能的代碼,DiselJetHull_data.c為模型的初始代碼。
參數(shù)數(shù)據(jù),DiselJetHull.h是包含參數(shù)和狀態(tài)變量定義的頭文件,其他文件rt_look.h、rtwtypes.h、rtGetInf.h等為RTW所需的必要配置文件。
VC++2012/MDK與Simulink的集成是通過VC++2012/MDK編程驅(qū)動C++模型代碼
表2 控制系統(tǒng)全局變量
中的initialize、terminate和rt_OneStep3個函數(shù)來實現(xiàn)的,分別實現(xiàn)了模型的初始化、停止和單步運(yùn)算[11]。在程序設(shè)計過程中,可以通過MDK ARM編寫接口函數(shù),實現(xiàn)模型代碼與已有的軟件代碼的集成。主程序原理見圖5,在中斷未發(fā)生時,主程序循環(huán)調(diào)用rt_OneStep函數(shù),并實時提取輸出結(jié)果;中斷發(fā)生時,進(jìn)行中斷處理并刷新全局變量輸入。
圖5 主程序原理
系統(tǒng)總體結(jié)構(gòu)如6所示,從上到下分為人機(jī)交互層、控制系統(tǒng)層和推進(jìn)系統(tǒng)嵌入層。人機(jī)交互層以觸摸屏作為系統(tǒng)人機(jī)接口,分為駕駛臺、集控室和機(jī)旁交互單元,主要包括一些控制面板和指示面板[12-13]??刂葡到y(tǒng)層是以STM32作為嵌入式硬件平臺的邏輯控制單元,主要包括駕控、集控和機(jī)旁控制。推進(jìn)系統(tǒng)層是以STM32為嵌入式硬件平臺的系統(tǒng)功能單元,將噴水推進(jìn)系統(tǒng)模塊化分解為柴油機(jī)模塊、齒輪箱模塊、噴水推進(jìn)器模塊和船體模塊,并將這些模塊嵌入到不同的STM32硬件平臺中,組成模塊化功能單元。
圖6 系統(tǒng)總體結(jié)構(gòu)
人機(jī)交互層與控制系統(tǒng)層間通過串行通信的方式實現(xiàn)觸摸屏指令的發(fā)送與系統(tǒng)參數(shù)的讀取??刂葡到y(tǒng)層與推進(jìn)系統(tǒng)層通過CAN網(wǎng)絡(luò)實現(xiàn)數(shù)據(jù)交互。本設(shè)計中,人機(jī)交互采用的觸摸屏僅具有串口通信功能,為了便于實現(xiàn)與上位PC機(jī)等其他監(jiān)控系統(tǒng)的信息交互,在設(shè)計時通過以太網(wǎng)和交換機(jī)預(yù)留了網(wǎng)絡(luò)接口。
觸摸屏與控制系統(tǒng)間采用串口通信方式實現(xiàn)數(shù)據(jù)交互,根據(jù)觸摸屏熱區(qū)事件數(shù)據(jù)返回格式,在STM32處理器中采用中斷方式接收觸摸屏指令。觸摸屏發(fā)送指令:65 00 00 01 ff ff ff,第1個字節(jié)表示觸摸熱區(qū)事件,第2個字節(jié)表示界面id,第3個字節(jié)為控件id號,第4個字節(jié)表示按鍵按下事件,后面3個字節(jié)為結(jié)束符。根據(jù)單片機(jī)處理結(jié)果,將航速、轉(zhuǎn)速等信號通過串口發(fā)送給觸摸屏顯示。
嵌入式仿真平臺硬件選用基于ARMCortex-M3內(nèi)核的STM32控制器+7in觸摸屏(分辨率800×480)的方案。電路板采用核心板+底板的形式,核心板搭載了STM32F103ZET處理器,提供了RS232、RS485、CAN接口、以太網(wǎng)接口和串口USART等硬件接口資源。
設(shè)計中選用7in觸摸屏作為推進(jìn)系統(tǒng)人機(jī)接口,設(shè)計虛擬按鈕用于操作,集成虛擬指示儀表對相關(guān)參數(shù)進(jìn)行指示。軟件交互界面采用上位機(jī)軟件usart hmi進(jìn)行設(shè)計,并利用分布式開發(fā)方式與下位機(jī)各功能模塊進(jìn)行通訊。
通過噴水推進(jìn)系統(tǒng)仿真樣機(jī)試驗,驗證了分布式嵌入仿真方案的正確性與可行性,解決了岸基訓(xùn)練模擬器無法大規(guī)模推廣應(yīng)用的缺陷,為構(gòu)建實船訓(xùn)練系統(tǒng)做了進(jìn)一步探索。對于其他大型復(fù)雜系統(tǒng),分布式嵌入方案同樣適用,具有一定的通用性。限于時間和能力等因素,本文存在一定的不足:試驗樣機(jī)設(shè)計時對模型做了一定簡化,僅對轉(zhuǎn)速、航速等動力特性參數(shù)進(jìn)行了仿真驗證,未能對系統(tǒng)溫度、壓力等參數(shù)進(jìn)行仿真驗證;未能對各分布式MCU單元數(shù)據(jù)傳輸實時性進(jìn)行探索;未能就具體實船訓(xùn)練系統(tǒng)給出實船嵌入方案。這些缺點和不足,有待在下一步工作中改進(jìn)和優(yōu)化。