常書平,李昆鵬,姚丁元,羅東宏
(1.中國人民解放軍63983部隊,江蘇無錫214035;2.廣州船舶及海洋工程設(shè)計研究院,廣東廣州510250)
噴水推進在船舶推進領(lǐng)域應(yīng)用日益廣泛,但在一些復(fù)雜機動操縱時,噴泵易進入氣蝕異常工作區(qū),導(dǎo)致推力下降、葉片剝蝕、船體和泵體振動加劇等[1]。如何合理控制噴水推進船的操縱,使在加速、減速、回轉(zhuǎn)、倒車等復(fù)雜工況下,有效避免噴泵長時間在空化異常區(qū)運行,是需解決的關(guān)鍵問題。國內(nèi)已有文獻對該問題進行了研究,得到了許多有用的結(jié)論[2–5],但較少闡述在操縱運動時防止噴泵空化的控制方法。本文將Simulink與MFC(Microsoft Foundation Class)混合編程的方法應(yīng)用于解決該問題,取得了較好效果。
以某“四機-四泵”噴水推進船為研究對象,其仿真模型主要分為調(diào)速器、柴油機、噴水推進器、船體動力學(xué)模型等4部分,如圖1所示。由于4套推進器是相同的,故圖中只列出1套,其他3套推進器的仿真模型與第1套相似。
以柴油機的設(shè)定轉(zhuǎn)速和柴油機反饋的實際轉(zhuǎn)速作為調(diào)速器模型輸入,通過一個PID控制器輸出供油齒桿的位置[6]。PID控制器的數(shù)學(xué)描述為:
式中:U(t)為柴油機供油齒桿位置;e(t)為柴油機設(shè)定轉(zhuǎn)速與實際轉(zhuǎn)速之間的誤差。
通過柴油機外特性數(shù)據(jù)建模,采用BP神經(jīng)網(wǎng)絡(luò)對輸入輸出進行訓(xùn)練[7–8],以柴油機轉(zhuǎn)速和供油齒桿位置作為輸入,以柴油機功率、力矩作為輸出。
該模塊基于噴泵試驗數(shù)據(jù)建立,采用BP神經(jīng)網(wǎng)絡(luò)對輸入輸出進行訓(xùn)練而得到,以噴泵轉(zhuǎn)速和船體航速作為輸入,以噴水推進器產(chǎn)生的推力作為輸出。
圖1 噴水推進系統(tǒng)模型第1層Fig. 1 The first layer of waterjet propulsion
該模塊包括船體直航模型和船體回轉(zhuǎn)模型。其中回轉(zhuǎn)運動模型采用MMG分離模型[3],將船體的水動力特性與噴水推進器的推力特性獨自表達,相互干擾由干擾系數(shù)決定。噴泵噴出水流的反作用力產(chǎn)生使船前進的推力,操縱噴口的噴射角度可改變推力方向,實現(xiàn)船體回轉(zhuǎn)[9],噴水推進器模塊將噴泵推力傳遞給船體動力學(xué)模塊。
若噴射角為θ,則船體所受的縱向力Xj為:
船體所受的縱向力Yj為:
回轉(zhuǎn)力矩Nj為:
式中:ρ為水密度;Q為水體積流量;LjG為作用點到船重心的縱向距離。
基于船體水動力和噴泵回轉(zhuǎn)力的分析,建立噴水推進船的回轉(zhuǎn)性模型如下:
式中:m為船質(zhì)量;R(V)i為直航阻力;Izz為船對Z軸的轉(zhuǎn)動慣量;Xvv,Xvr,Xrr為縱向水動力系數(shù);Yv,Yr,Yv2r,Yvr2,Y|v|v,Y|r|r為 橫 向 水 動 力 系 數(shù);Nv,Nv2r,Nvr2,N|v|v,N|r|r為回轉(zhuǎn)水動力系數(shù)。
Simulink雖有著強大的仿真功能,但在許多控制程序的設(shè)計方面要靠Matlab的用戶自定義函數(shù)來完成,然而程序設(shè)計卻并不是M a t l a b的長處,用MFC對Simulink進行二次開發(fā)有助于更好的發(fā)揮其仿真的功能。MFC對Simulink作二次開發(fā)的方法有很多[10],本研究選用RTW工具生成實時代碼的方法實現(xiàn)Simulink仿真程序與MFC的集成,主要步驟如圖2所示。
圖2 Simulink與MFC集成的主要步驟Fig.2 Theapproach of Simulink and MFCintegration
1)在仿真參數(shù)中對RTW選項進行相關(guān)的配置;
2)設(shè)定Simulink模型中需要觀測的量(柴油機轉(zhuǎn)速、軸轉(zhuǎn)速和航速),這可以在各條信號線的信號參數(shù)設(shè)定中配置RTW選項;
3)在RTW中的Generate Code選項中產(chǎn)生模型的C++程序代碼;
4)將產(chǎn)生的代碼加入到一個空的MFC工程中,在MFC中根據(jù)需要編寫相應(yīng)的程序?qū)ι傻拇a進行驅(qū)動和控制,并對計算結(jié)果進行實時的監(jiān)測。
基于RTW(Real Time Workshop)工具,把Simulink模型中的某些變量設(shè)置為全局變量,使模型實時代碼實現(xiàn)在線參數(shù)調(diào)整和信號通信,由此可將模型中需要調(diào)整、檢測的參數(shù)或者信號設(shè)置為全局變量,主要有柴油機轉(zhuǎn)速、軸轉(zhuǎn)速和航速等,該些變量構(gòu)成了整個仿真程序中模塊間相互交互的橋梁。
模型代碼中的Initialize、Terminate和rt_OneStep三個函數(shù)分別用于實現(xiàn)模型的初始化、停止和單步運算。在程序設(shè)計過程中,Initialize和Terminate函數(shù)可以用WM_COMMAND類型的消息驅(qū)動;OneStep函數(shù)則用WM_TIMER消息驅(qū)動。每次在程序中調(diào)用一次WM_TIMER消息,計算出一組結(jié)果,并且可以在WM_TIMER消息相應(yīng)函數(shù)中對計算結(jié)果進行實時的提取。在第4步中有大量的程序設(shè)計工作要做,包括人機交互界面的設(shè)計、實時仿真數(shù)據(jù)的提取與顯示、運行步長和時間的控制等。
在噴水推進系統(tǒng)中,觀測軸轉(zhuǎn)速隨航速的變化關(guān)系是判斷噴泵是否空化的一個重要標準。噴泵的工作區(qū)域劃分為3個區(qū),如圖4所示。區(qū)域1是正常區(qū),噴泵可在該區(qū)長時間穩(wěn)定工作;區(qū)域2和區(qū)域3為異常區(qū),噴泵性能會受空化影響而降低,噴泵在其中的工作時間也受限。將3條區(qū)域限制線編譯到程序中,將程序計算所得到的航速與軸轉(zhuǎn)速的值與3條限制線數(shù)據(jù)相比較,由此就可以確定出噴泵的運行狀態(tài)。
圖4 噴泵工作區(qū)域圖Fig.4 Working area of waterjet propulsion system
WM_TIMER消息響應(yīng)函數(shù)OnTimer的編寫是控制程序的主要部分,它可以看作一個定時器,MFC程序每隔特定的時間間隔就會調(diào)用該函數(shù)。即每隔一定的時間間隔,該函數(shù)內(nèi)部就會進行計算并產(chǎn)生一組計算結(jié)果。利用這些結(jié)果,可以實時判斷,若仿真結(jié)果顯示噴泵工作在異常工作區(qū),則修改程序設(shè)定的初始參數(shù)。控制程序的編制步驟如下,控制程序流程如圖3所示。
圖3 OnTimer函數(shù)內(nèi)部的控制流程Fig.3 The control process of OnTimer function
1)在OnTimer函數(shù)中調(diào)用Initialize進行參數(shù)的初始化;
2)設(shè)置相關(guān)的初始參數(shù)并調(diào)用rt_OneStep函數(shù)進行計算;
3)提取計算結(jié)果中的航速和轉(zhuǎn)速值,判斷其是否在給定的區(qū)域內(nèi),如果不是則返回第1步,并在第2步中改變初始參數(shù)繼續(xù)計算,若果計算結(jié)果在給定的區(qū)域內(nèi),轉(zhuǎn)到第4步;
4)繼續(xù)循環(huán)并輸出計算結(jié)果。
根據(jù)上述集成方法與控制策略,編制噴水推進系統(tǒng)仿真計算軟件。該軟件有多項功能,此處簡要介紹回轉(zhuǎn)運動最大舵角(噴泵的噴射角度)計算和直航最大加速速率計算。
該計算模塊的功能是根據(jù)輸入的初始參數(shù)來計算對應(yīng)工況下回轉(zhuǎn)運動允許的最大舵角。
初始參數(shù)包括主機轉(zhuǎn)速、工作的噴泵、船體的負荷、回轉(zhuǎn)泵以及工作區(qū)域限制。在計算時為了使舵角的調(diào)整朝著一個方向變化,一般將舵角初始值設(shè)為最大舵角30°,然后通過控制程序進行實時的調(diào)整。這里,模塊用于計算四機四泵操作的舵角,該處設(shè)定船體負荷為標準負荷,回轉(zhuǎn)運動限制在噴泵工作區(qū)域的一區(qū)。
表1 給出了四機四泵運行,四泵回轉(zhuǎn)工況下,主機轉(zhuǎn)速由0.73 Nmax(Nmax為柴油機的額定轉(zhuǎn)速)變化到最高轉(zhuǎn)速Nmax對應(yīng)的最大舵角,實際上主機最低轉(zhuǎn)速還小于0.73 Nmax,但是圖中所給泵的工況限制線并沒有覆蓋整個工作區(qū),故此處最小轉(zhuǎn)速取為0.73 Nmax,標中V表示柴油機轉(zhuǎn)速為0.73 Nmax時的直航穩(wěn)定航速。
表1 四泵回轉(zhuǎn)條件下最大舵角計算結(jié)果Tab.1 The maximal rudder angle of 4-waterjets turning process
為了驗證計算結(jié)果的準確性,在仿真軟件中加入了工況曲線顯示模塊,并把噴泵工作區(qū)域限制線編譯到工況曲線中,此處僅對上表計算所得到的第一個結(jié)果(轉(zhuǎn)速為Nmax、舵角為8°)進行驗證,結(jié)果如圖5所示。圖中的數(shù)據(jù)已經(jīng)經(jīng)過等比例變化,可見圖中所示的回轉(zhuǎn)運動穩(wěn)定點正好在第1區(qū)和第2區(qū)限制線上,這說明計算出的舵角即為把回轉(zhuǎn)運動限制在噴泵工作區(qū)域的一區(qū)對應(yīng)的最大舵角。應(yīng)用該模塊還可以計算多種不同初始工況、不同回轉(zhuǎn)泵、不同運行區(qū)域下的最大舵角。
圖5 回轉(zhuǎn)運動工況Fig.5 Results of turning process
該計算模塊的功能是根據(jù)初始設(shè)定的參數(shù)計算加速過程中,對應(yīng)噴泵工作區(qū)限制條件下的最大主機加速速率。初始參數(shù)包括初始主機轉(zhuǎn)速、目標主機轉(zhuǎn)速、工作的噴泵、船體的負荷以及工作區(qū)域限制。在計算時為了使加速速率的調(diào)整朝著一個方向變化,一般將加速速率的初始值設(shè)為目標轉(zhuǎn)速和初始轉(zhuǎn)速之差,即將初始加速速率設(shè)定為最快的速率,然后通過控制程序進行實時的調(diào)整。利用該模塊對四機四泵工作情況下最大加速速率進行計算,該處設(shè)定船體負荷為標準負荷,加速運動限制在噴泵工作區(qū)域的一區(qū)。
設(shè)定初始主機轉(zhuǎn)速為0.73 Nmax,目標轉(zhuǎn)速由0.78 Nmax變化至Nmax,計算結(jié)果如表2所示。
表2 直航加速條件最大加速速率計算結(jié)果Tab.2 The maximal acceleration of 4-waterjets accelerating process
同上,僅對表2計算所得到的最后一個結(jié)果(初始轉(zhuǎn)速為0.73 Nmax,目標轉(zhuǎn)速為Nmax,加速速率為0.01 Nmax/s)進行工況曲線驗證,結(jié)果如圖6所示。圖中的數(shù)據(jù)已經(jīng)經(jīng)過等比例變化,可見加速過程由加速起始點到加速結(jié)束點的工況曲線在初始設(shè)定的區(qū)域即區(qū)域一中,而且加速曲線末端緊貼一區(qū)和二區(qū)分界線。這說明如果加速速率大于此加速速率0.0 1 Nmax/s,則加速工況曲線必然會越過分界線到達二區(qū)。此外,利用該模塊還可以計算任意初始轉(zhuǎn)速和目標轉(zhuǎn)速對應(yīng)的最大加速速率。
本文基于對噴水推進系統(tǒng)組成部件和船體運動學(xué)模型的分析,建立了噴水推進系統(tǒng)的Simulink仿真模型,并考慮到MFC在控制程序編制以及在人機交互界面設(shè)計方面的優(yōu)越性,利用Matlab的RTW工具箱將Simulink仿真程序轉(zhuǎn)換為實時C++代碼,并與MFC集成開發(fā)出了噴水推進系統(tǒng)仿真軟件。仿真計算程序可用于在加速、減速、回轉(zhuǎn)、倒車等工況下,制定噴水推進系統(tǒng)合理工作制,避免噴泵進入空化區(qū)運行。
主要得到如下結(jié)論:
圖6 加速運動工況Fig.6 Results of accelerating process
四機四泵全速運行四泵回轉(zhuǎn)時,如要將噴泵控制在一區(qū)運行,舵角不能大于8°;四機四泵運行主機轉(zhuǎn)速由0.73 Nmax分別加速至0.92 Nmax和Nmax,如要將噴泵控制在一區(qū)運行,加速速率不能大于0.02 Nmax/s和0.01 Nmax/s。