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