劉鐵良, 杜冬梅, 章郁泱, 秦飛龍, 袁景淇
(1. 上海交通大學(xué) 自動(dòng)化系, 上海 200240;2. 中國(guó)船舶及海洋工程設(shè)計(jì)研究院 噴水推進(jìn)技術(shù)重點(diǎn)實(shí)驗(yàn)室, 上海 200011)
Matlab_GUI是用戶(hù)與計(jì)算機(jī)之間的交流工具,能使操作更人性化,減輕用戶(hù)的認(rèn)知負(fù)擔(dān),使其更適合用戶(hù)的操作需求[1]。Matlab將所有GUI支持的用戶(hù)控件都集成在這個(gè)環(huán)境中并提供界面外觀(guān)、屬性和行為響應(yīng)方式的設(shè)置方法,而且具有強(qiáng)大的繪圖功能,可以輕松獲得高質(zhì)量的曲線(xiàn)圖。同時(shí)Matlab具有串口操作的功能,可以利用計(jì)算機(jī)與實(shí)際硬件連接進(jìn)行半物理仿真實(shí)驗(yàn)。GUI可以?xún)?nèi)嵌Matlab支持的所有圖形處理函數(shù),包括二維繪圖和三維繪圖函數(shù)。通過(guò)Matlab_GUI開(kāi)發(fā)工具的使用,將仿真結(jié)果以生動(dòng)明了的形式展現(xiàn)給用戶(hù),提高用戶(hù)對(duì)算法或數(shù)據(jù)處理效果的認(rèn)識(shí)。除此之外,Matlab_GUI與Simulink仿真模型在連接時(shí)直接使用較為方便簡(jiǎn)單的M文件進(jìn)行編寫(xiě),沒(méi)有接口連接的問(wèn)題,大大降低了工作難度,更有利于系統(tǒng)軟件平臺(tái)的開(kāi)發(fā)[2]。設(shè)計(jì)程序前,首先考慮設(shè)計(jì)對(duì)象的結(jié)構(gòu)和開(kāi)發(fā)流程,不同的要求設(shè)計(jì)出來(lái)的也不同。GUI界面制作包括界面設(shè)計(jì)和程序?qū)崿F(xiàn),具體步驟如下[3]:① 明確設(shè)計(jì)任務(wù),繪出界面草圖;② 按草圖制作(靜態(tài))界面;③ 編寫(xiě)界面動(dòng)態(tài)功能的程序;④ 調(diào)試界面與程序之間的變量傳遞。
本文的主要工作為:① 基于Matlab搭建噴水推進(jìn)船舶矢量控制模型;② 基于Matlab_GUI搭建實(shí)驗(yàn)平臺(tái),能實(shí)時(shí)仿真并傳遞相關(guān)計(jì)算數(shù)據(jù);③ 通過(guò)實(shí)物仿真需要將計(jì)算機(jī)與船舶模型連接,并通過(guò)串口通信完成數(shù)據(jù)交互。
為使界面使用方便,設(shè)計(jì)了主控制界面,將仿真所需的功能集成到一個(gè)界面中的菜單,主控制界面中用到的組件為Static Text、Axes控件。圖1為主控制界面[4]。圖2為雙泵噴水推進(jìn)船舶仿真平臺(tái)總體設(shè)計(jì)框架圖。
圖1 主控界面設(shè)計(jì)示意圖
圖2 雙泵噴水推進(jìn)船舶仿真平臺(tái)總體設(shè)計(jì)框架圖
船舶模型驗(yàn)證界面中用到的組件為Push Button、Static Text、Edit Text、Radio Button、Axes控件。通過(guò)輸入的船體參數(shù)建立船舶運(yùn)動(dòng)控制模型與矢量推力模型,并進(jìn)行Z型試驗(yàn)和回轉(zhuǎn)試驗(yàn)仿真,將計(jì)算結(jié)果動(dòng)態(tài)顯示到仿真平臺(tái)上[5]。
回轉(zhuǎn)試驗(yàn)主要包括縱距、回轉(zhuǎn)初徑、回轉(zhuǎn)直徑、回轉(zhuǎn)時(shí)間參數(shù)的計(jì)算,以及船舶橫向速度、縱向速度的實(shí)時(shí)顯示[6],如圖3~5所示。
圖3 船舶模型驗(yàn)證及操縱性試驗(yàn)動(dòng)態(tài)仿真界面示意圖
圖4 回轉(zhuǎn)試驗(yàn)詳細(xì)參數(shù)計(jì)算界面示意圖
圖5 Z型試驗(yàn)詳細(xì)參數(shù)計(jì)算界面示意圖
根據(jù)野本方程[7]:
可求取Z型試驗(yàn)操縱性指數(shù)K、T。其中:ψ為船舶艏向角;δ為船舶舵角輸入;K為船舶Z型試驗(yàn)回轉(zhuǎn)性指數(shù);T為船舶Z型試驗(yàn)應(yīng)舵指數(shù)[8]。將計(jì)算結(jié)果實(shí)時(shí)顯示在仿真界面中。
船舶控制器仿真主要包括三類(lèi)控制器選擇:模糊PID控制器、滑??刂破?、預(yù)測(cè)控制器,其中模糊PID控制器用來(lái)實(shí)現(xiàn)船舶橫移任務(wù)[9];滑??刂破鱗10]、預(yù)測(cè)控制器[11]用來(lái)實(shí)現(xiàn)船舶保持航向任務(wù)。
對(duì)于橫移試驗(yàn),需建立模糊PID控制器。在Matlab命令窗口運(yùn)行Fuzzy函數(shù)進(jìn)入模糊編輯器,并建立FIS文件,選擇模糊模型為mamdani模型,即模糊系統(tǒng)的標(biāo)準(zhǔn)模型,根據(jù)分析分別增加出2個(gè)輸入e,ec,3個(gè)輸出kp、ki、kd,采用模糊邏輯對(duì)PID控制增益kp、ki、kd進(jìn)行在線(xiàn)整定,具體做法是根據(jù)系統(tǒng)誤差e與誤差變化率ec動(dòng)態(tài)調(diào)整控制器參數(shù),以提高系統(tǒng)動(dòng)態(tài)響應(yīng)性能和抗干擾性能[12]。
橫移試驗(yàn)是通過(guò)調(diào)節(jié)噴水角度提供可變方向的矢量推力達(dá)到船舶橫移控制效果。當(dāng)船舶裝配有兩臺(tái)及以上數(shù)量的噴水推進(jìn)器時(shí),可通過(guò)各臺(tái)噴水推進(jìn)裝置的異步操作為船體提供任意方向合力,實(shí)現(xiàn)更多形式的運(yùn)動(dòng)[13]。本文考慮船舶固定船艏方向的橫向和斜向水平移動(dòng)以及固定船首指向的橫向移動(dòng),兩臺(tái)推進(jìn)器的安裝位置關(guān)于船體中縱剖面對(duì)稱(chēng),通過(guò)調(diào)節(jié)主機(jī)轉(zhuǎn)速與噴水角度可實(shí)現(xiàn)船舶橫移運(yùn)動(dòng)控制。通過(guò)GUI嵌入Simulink控制器和模型,并結(jié)合Push Button、Static Text、Edit Text、Radio Button、Axes等控件實(shí)現(xiàn)仿真界面搭建,具體仿真界面見(jiàn)圖6。滑??刂破?、預(yù)測(cè)控制器的仿真界面搭建方法與上述方法類(lèi)似。
圖6 船舶固定艏向橫移軌跡及姿態(tài)動(dòng)態(tài)圖
實(shí)物仿真需要將計(jì)算機(jī)與船舶模型連接,它們之間的連接是通過(guò)串口通信完成的。因此需要在Matlab下進(jìn)行串口編程。
在Matlab中用serial函數(shù)來(lái)創(chuàng)建串口對(duì)象,并設(shè)置串口波特率、奇偶校驗(yàn)類(lèi)型、數(shù)據(jù)位等屬性。用fprintf或fwrite函數(shù)寫(xiě)數(shù)據(jù)到設(shè)備中,用fgets、fread或readasync函數(shù)讀取數(shù)據(jù)到串口。實(shí)物仿真界面中用到的組件為:Push Button、Static Text、Edit Text、Radio Button、Axes控件,主要實(shí)現(xiàn)航速測(cè)試、航向測(cè)試、聯(lián)動(dòng)測(cè)試3個(gè)功能,并通過(guò)串口返回以模擬動(dòng)畫(huà)顯示。具體界面如圖7所示。
噴水推進(jìn)船舶航行在海域執(zhí)行任務(wù)中,為保證實(shí)驗(yàn)平臺(tái)能夠便捷、正常地運(yùn)行,需要將已經(jīng)編寫(xiě)的平臺(tái)代碼封裝成脫離Matlab環(huán)境的exe文件。
運(yùn)用Matlab自帶的LCC編譯器,將實(shí)驗(yàn)平臺(tái)源代碼及相關(guān)函數(shù)封裝成exe文件;MCR是Matlab的運(yùn)行環(huán)境,對(duì)于用不同Matlab版本生成的exe文件,MCR版本也會(huì)有不同,因此在程序打包時(shí),將相應(yīng)版本的MCR一起打包,確保噴水推進(jìn)船舶航行在海域執(zhí)行任務(wù)中,實(shí)驗(yàn)平臺(tái)能便捷、正常地運(yùn)行。
圖7 實(shí)物仿真界面示意圖
利用Matlab_GUI技術(shù)建立雙泵噴水推進(jìn)船舶仿真平臺(tái),實(shí)現(xiàn)通過(guò)人機(jī)界面控制仿真模型,并能進(jìn)行后處理等功能,形成了一套完整的泵噴水推進(jìn)船舶仿真軟件。通過(guò)實(shí)驗(yàn)平臺(tái)的長(zhǎng)期運(yùn)行,可知本文所設(shè)計(jì)的雙泵噴水推進(jìn)船舶實(shí)驗(yàn)平臺(tái)具有設(shè)計(jì)簡(jiǎn)單、可開(kāi)發(fā)性強(qiáng)、操作人性化等優(yōu)點(diǎn)。