劉鐵良, 杜冬梅, 章郁泱, 秦飛龍, 袁景淇
(1. 上海交通大學 自動化系, 上海 200240;2. 中國船舶及海洋工程設計研究院 噴水推進技術重點實驗室, 上海 200011)
Matlab_GUI是用戶與計算機之間的交流工具,能使操作更人性化,減輕用戶的認知負擔,使其更適合用戶的操作需求[1]。Matlab將所有GUI支持的用戶控件都集成在這個環境中并提供界面外觀、屬性和行為響應方式的設置方法,而且具有強大的繪圖功能,可以輕松獲得高質量的曲線圖。同時Matlab具有串口操作的功能,可以利用計算機與實際硬件連接進行半物理仿真實驗。GUI可以內嵌Matlab支持的所有圖形處理函數,包括二維繪圖和三維繪圖函數。通過Matlab_GUI開發工具的使用,將仿真結果以生動明了的形式展現給用戶,提高用戶對算法或數據處理效果的認識。除此之外,Matlab_GUI與Simulink仿真模型在連接時直接使用較為方便簡單的M文件進行編寫,沒有接口連接的問題,大大降低了工作難度,更有利于系統軟件平臺的開發[2]。設計程序前,首先考慮設計對象的結構和開發流程,不同的要求設計出來的也不同。GUI界面制作包括界面設計和程序實現,具體步驟如下[3]:① 明確設計任務,繪出界面草圖;② 按草圖制作(靜態)界面;③ 編寫界面動態功能的程序;④ 調試界面與程序之間的變量傳遞。
本文的主要工作為:① 基于Matlab搭建噴水推進船舶矢量控制模型;② 基于Matlab_GUI搭建實驗平臺,能實時仿真并傳遞相關計算數據;③ 通過實物仿真需要將計算機與船舶模型連接,并通過串口通信完成數據交互。
為使界面使用方便,設計了主控制界面,將仿真所需的功能集成到一個界面中的菜單,主控制界面中用到的組件為Static Text、Axes控件。圖1為主控制界面[4]。圖2為雙泵噴水推進船舶仿真平臺總體設計框架圖。

圖1 主控界面設計示意圖

圖2 雙泵噴水推進船舶仿真平臺總體設計框架圖
船舶模型驗證界面中用到的組件為Push Button、Static Text、Edit Text、Radio Button、Axes控件。通過輸入的船體參數建立船舶運動控制模型與矢量推力模型,并進行Z型試驗和回轉試驗仿真,將計算結果動態顯示到仿真平臺上[5]。
回轉試驗主要包括縱距、回轉初徑、回轉直徑、回轉時間參數的計算,以及船舶橫向速度、縱向速度的實時顯示[6],如圖3~5所示。

圖3 船舶模型驗證及操縱性試驗動態仿真界面示意圖

圖4 回轉試驗詳細參數計算界面示意圖

圖5 Z型試驗詳細參數計算界面示意圖
根據野本方程[7]:
可求取Z型試驗操縱性指數K、T。其中:ψ為船舶艏向角;δ為船舶舵角輸入;K為船舶Z型試驗回轉性指數;T為船舶Z型試驗應舵指數[8]。將計算結果實時顯示在仿真界面中。
船舶控制器仿真主要包括三類控制器選擇:模糊PID控制器、滑模控制器、預測控制器,其中模糊PID控制器用來實現船舶橫移任務[9];滑模控制器[10]、預測控制器[11]用來實現船舶保持航向任務。
對于橫移試驗,需建立模糊PID控制器。在Matlab命令窗口運行Fuzzy函數進入模糊編輯器,并建立FIS文件,選擇模糊模型為mamdani模型,即模糊系統的標準模型,根據分析分別增加出2個輸入e,ec,3個輸出kp、ki、kd,采用模糊邏輯對PID控制增益kp、ki、kd進行在線整定,具體做法是根據系統誤差e與誤差變化率ec動態調整控制器參數,以提高系統動態響應性能和抗干擾性能[12]。
橫移試驗是通過調節噴水角度提供可變方向的矢量推力達到船舶橫移控制效果。當船舶裝配有兩臺及以上數量的噴水推進器時,可通過各臺噴水推進裝置的異步操作為船體提供任意方向合力,實現更多形式的運動[13]。本文考慮船舶固定船艏方向的橫向和斜向水平移動以及固定船首指向的橫向移動,兩臺推進器的安裝位置關于船體中縱剖面對稱,通過調節主機轉速與噴水角度可實現船舶橫移運動控制。通過GUI嵌入Simulink控制器和模型,并結合Push Button、Static Text、Edit Text、Radio Button、Axes等控件實現仿真界面搭建,具體仿真界面見圖6。滑模控制器、預測控制器的仿真界面搭建方法與上述方法類似。

圖6 船舶固定艏向橫移軌跡及姿態動態圖
實物仿真需要將計算機與船舶模型連接,它們之間的連接是通過串口通信完成的。因此需要在Matlab下進行串口編程。
在Matlab中用serial函數來創建串口對象,并設置串口波特率、奇偶校驗類型、數據位等屬性。用fprintf或fwrite函數寫數據到設備中,用fgets、fread或readasync函數讀取數據到串口。實物仿真界面中用到的組件為:Push Button、Static Text、Edit Text、Radio Button、Axes控件,主要實現航速測試、航向測試、聯動測試3個功能,并通過串口返回以模擬動畫顯示。具體界面如圖7所示。
噴水推進船舶航行在海域執行任務中,為保證實驗平臺能夠便捷、正常地運行,需要將已經編寫的平臺代碼封裝成脫離Matlab環境的exe文件。
運用Matlab自帶的LCC編譯器,將實驗平臺源代碼及相關函數封裝成exe文件;MCR是Matlab的運行環境,對于用不同Matlab版本生成的exe文件,MCR版本也會有不同,因此在程序打包時,將相應版本的MCR一起打包,確保噴水推進船舶航行在海域執行任務中,實驗平臺能便捷、正常地運行。

圖7 實物仿真界面示意圖
利用Matlab_GUI技術建立雙泵噴水推進船舶仿真平臺,實現通過人機界面控制仿真模型,并能進行后處理等功能,形成了一套完整的泵噴水推進船舶仿真軟件。通過實驗平臺的長期運行,可知本文所設計的雙泵噴水推進船舶實驗平臺具有設計簡單、可開發性強、操作人性化等優點。