熊斯年,王海軍,吳小濤
(中國船舶重工集團有限公司第七一〇研究所,湖北 宜昌 443003)
海洋里蘊含豐富的資源,發展海洋經濟、海洋科研一直以來都是我國推動強國戰略的一個重要方面[1]。海洋環境錯綜復雜,波浪滑翔器作為一種新型的無人自主航行器,能夠利用海洋中源源不斷的波浪能實現超遠距離航行[2-3]。其續航時間長、能耗低、生存能力強等特點能夠很好地執行觀測及獲取海洋環境數據的任務[4-5]。
影響波浪滑翔器航行性能的因素很多,如系統的總體流體動力參數配置、結構強度、防污防腐等[6],其中控制系統作為波浪滑翔器的大腦,其準確性和可靠性直接決定了波浪滑翔器的航行性能。為實現波浪滑翔器長期、有效的航行控制,需要采用可靠、穩定、實時數據傳輸的控制系統,而目前很多自主航行浮標采用無操作系統嵌入式系統設計,無法滿足上述要求。本文設計的基于RT-Thread實時操作系統[7]的控制系統是以 STM32單片機為載體,具有實時協調控制能力強、可靠性高等優點[8],能夠很好地滿足波浪滑翔器對控制系統的需求。
作為波浪滑翔器諸多系統的核心,控制系統的可靠性與穩定性是波浪滑翔器長期、安全、有效運行的前提。控制系統主要由2個部分組成,包括運動控制和通信控制,其中通信控制又包括內部通信與外部通信控制。
海水由很多個海水質點組成,在風力的作用下,這些質點在其平衡位置附近作周期性運動,這種運動產生了波浪能。作為海洋中蘊含豐富、清潔環保的波浪能構成了波浪滑翔器前進的推力,但這種推力受到海洋環境變化的影響,導致波浪滑翔器航速和航向難以保持穩定。因此需要對波浪滑翔器舵機的舵角進行控制,使其能夠在預先規劃好的航路上航行。其控制方法如圖1所示。

圖1 運動控制流程圖Fig. 1 Flow chart of motion control

式中,X1、Y1與X2、Y2分別表示當前位置與目標位置的經緯度,假設波浪滑翔器試驗地點位于北半球,即緯度為北緯。其中R表示地球半徑,為了計算方便,取其值為地球的平均半徑6 371.004 km。方位角為目標位置之于當前位置的方向角,是以正北為0°起點,順時針方向旋轉的角度。
通過解算出的距離與誤差允許范圍進行比較,判斷是否到達目標航路點位置,若未到達目標航路點位置,則通過磁羅盤讀取的姿態角與目標方位角進行計算,并通過PID控制對舵機進行操舵,修正航向。若已到達目標航路點位置,則選擇前往下一個航路點或保持原地,若為保持原地,則將目標航路點位置的經緯度保持不變。
通信控制是波浪滑翔器控制系統的重要組成部分之一,包括外部通信控制與內部通信控制。外部通信是指波浪滑翔器與岸站之間的通信,是參數預置、航路規劃、設備狀態監測、外設控制等指令傳輸的途徑,是遠程控制波浪滑翔器唯一、有效的途徑;外部通信控制由無線通信與衛星通信實現,其中無線通信距離近、速度快,用于波浪滑翔器布放之前的功能檢查、參數預置、航路規劃;衛星通信距離遠、速度慢,用于周期性地傳輸心率報文,檢測設備狀態以及緊急情況下的系統控制。
內部通信是指主控芯片與各個外設之間的通信,是外設控制、數據采集等指令傳輸的途徑,是波浪滑翔器穩定工作的前提。外設通過串口與主控芯片進行數據交換,傳輸外設控制報文以及任務數據如海洋環境觀測數據等。
波浪滑翔器通信控制數據流如圖2所示。

圖2 通信控制數據流Fig. 2 Data flow of communication control
波浪滑翔器控制系統硬件部分主要由主控芯片 STM32F407、時鐘輸入模塊、存儲模塊、電源模塊以及各個外設組成。
STM32F407是由意法半導體開發的一種高性能32位微控制器,該嵌入式處理器集成了DSP和FPU指令,其主頻達到了 168 MHz,具有外設豐富、低功耗、控制算法執行速度快、代碼效率高等優點,被廣泛應用于各個領域[8]。波浪滑翔器控制系統是一個復雜龐大的系統,選取STM32F407作為主控芯片能夠很好地實現波浪滑翔器控制系統的基本需求。
具體的訴訟程序與普通民事訴訟相同,此處不再贅述。但需要提示的是,具體管轄法院可以參照《最高人民法院關于專利侵權糾紛案件地域管轄問題的通知》以及地方關于專利侵權管轄的具體規定確定。
在波浪滑翔器的控制板上,作為數據存儲器的SD卡通過SDIO接口與主控芯片進行連接與數據交換,保存通過各個外設傳感器獲取的數據。主控芯片通過串口分別與衛星通信模塊和無線通信模塊進行連接,這種通信接口的特點是信號線少、波特率選擇靈活、采用負邏輯傳輸、傳送距離遠等,能夠很好地滿足波浪滑翔器控制系統對通信的需求。另外一條串口上連接著波浪滑翔器的所有外設,包括任務載荷如用于檢測海洋環境或自身設備狀態的各類傳感器:波浪傳感器、氣象站、流速儀、ADCP(聲學多普勒流速剖面儀)、磁羅盤、CTD(溫鹽深儀),以及用于系統輔助推進的推進器與舵機。通過串口上傳輸的內部控制報文將所有外設與主控芯片進行聯系。控制板電路框圖如圖3所示。

圖3 控制板電路框圖Fig. 3 Diagram of control board circuit
波浪滑翔器控制系統的軟件是基于RT-Thread實現的,RT-Thread是一款由國內專業人員開發的開源嵌入式實時操作系統,遵循GPLv2許可協議,包含了實時嵌入式操作系統相關的各個組件:實時操作系統內核、TCP/IP協議棧、虛擬文件系統、Libc接口、圖形界面、CAN框架、動態模塊等。由于其系統的穩定性,被廣泛應用工業控制和物聯網應用等領域[9]。
軟件總體主要包括初始化模塊、通信功能模塊、指令處理模塊、導航控制模塊,每個模塊由多個線程組成,線程之間相互獨立,通過信號量與郵箱進行通訊。
系統上電后,完成對系統時鐘、中斷、串口的設置以及對內核對象、系統定時器、系統調度器的初始化,還包括對波浪傳感器、氣象站、流速儀、舵機、CTD、磁羅盤、ADCP、推進器等外接設備的初始化工作,工作指示燈線程、CPU監控線程、報文接收發送線程、報文指令處理線程、衛星組件線程、航行線程的初始化。
通信模塊主要包含以下線程:無線通信報文接收發送線程、衛星通信報文接收發送線程,各個線程之間相互獨立。
完成系統、外設、線程初始化工作后,進入通信模塊,等待接收通信報文,根據報文傳遞的途徑分別進入不同的線程,這些線程功能為簡單處理報文,將岸站發送給控制器的報文歸類為控制器接收報文或控制器發送報文并發送給不同的郵箱進行處理。這些報文所包含的控制指令主要包含4個方面內容:系統指令、外設指令、文件控制指令、航行指令。系統指令主要的功能是讀取或設置系統參數、軟件復位、開始或停止發送心率報文等。外設指令主要的功能是讀取或者設置外設屬性及狀態,獲取外設數據,打開或關閉外設等。文件控制指令主要的功能是讀取、發送、刪除文件。航行指令主要的功能是添加刪除或讀取航路點,添加刪除或讀取航路,讀取或設置有效航路和航路點,開始或停止航行。接收報文前需將串口接收設備狀態、系統接收數據狀態置為有效,當獲取控制系統接收數據信號量后,從串口中獲取報文數據,通過通信協議將數據整理成數組發送至報文處理線程進行處理。
指令處理模塊是控制系統的重要組成之一,根據岸站發送給控制系統的報文解析結果,執行相應的控制功能。
在報文指令處理線程喚醒后,首先查詢控制系統報文接收設備工作狀態,如果設備處于未工作狀態,則將設備以讀寫方式、DMA接收模式開啟,當控制系統報文接收設備處于工作狀態時,掛起該線程直到等待接收報文信號量狀態改變。當接收報文信號量改變后,將岸站發送給控制系統的指令碼放于數組中進行處理,并使控制器執行對應操作。
控制系統在執行除重啟指令外的功能后,組織回送報文,并等待獲取報文發送信號量,將回送報文放入數組并寫入串口設備中,最后釋放信號量與分配給數組的動態內存。
所有指令函數的定義集成在指令處理函數中,在這個函數中申明了一個函數指針數組,數組里面的每一個元素都對應著一個指令函數,當岸站發送報文給控制系統時,控制系統便會根據指令選擇執行不同的函數。每個函數里面包含對指令的響應以及回送報文的組織,通過這種方式使得軟件代碼清晰明了,減輕后期軟件修改和維護的工作量。
當有航行指令時會喚醒導航控制線程,為航行做準備工作。線程先讀取舵機與磁羅盤數據并記錄,同時將衛星與舵機外設工作狀態置為有效。判斷心率報文狀態是否為開啟以決定是否發送心率報文,通過衛星設備讀取到的當前位置信息與目標位置信息進行計算,判斷目標位置的距離與方位,再通過PID控制算法,將操舵指令發送給舵機,從而實現航行控制。
基于RT-Thread實現的控制系統應用于由七一〇所自主研發的“海鰩-6000”型波浪滑翔器上。2019年5-8月,“海鰩-6000”型波浪滑翔器執行國家重點研發計劃“無人無纜潛水器組網作業技術與應用示范”項目“海洋滑翔機改造與協作觀測技術”課題,在南海中東部海域進行了走航觀測、位置保持觀測等試驗,在經歷了 4號臺風“木恩”、5號臺風“丹娜絲”、7號臺風“韋帕”及9號臺風“利奇馬”的考驗過后,產品完成了連續48 d的走航試驗和連續46 d的定點觀測試驗,連續在位工作94 d,航行里程3 069.3 km,其中連續12 h定點位置保持精度小于100 m,自走航行試驗在3級海況下,連續 12 h航行精度小于 500 m。“海鰩-6000”型波浪滑翔器定點觀測與走航試驗軌跡如圖4所示。

圖4 定點觀測位置保持軌跡與誤差Fig.4 Location trajectory and deviation of fix-point observation

圖5 試驗運動軌跡Fig.5 Movement trajectory in trial
本文針對波浪滑翔器的控制系統,主要完成了以下工作:
1)通過分析波浪滑翔器的控制需求,提出了一種舵機控制方法與通信控制策略,形成了波浪滑翔器控制系統的設計方案。
2)基于控制需求,設計了采用以STM32F407單片機作為主控芯片的波浪滑翔器控制系統硬件電路。
3)設計實現了基于 RT-Thread實時操作系統的波浪滑翔器控制系統軟件功能,并通過長時間海上試驗驗證了該控制系統的可行性與穩定性。
然而由于波浪滑翔器的弱機動性和海洋環境復雜多變導致的大擾動性,使得其航行精度難以保持穩定,盡管波浪滑翔器的走航和定點性能整體表現良好,但從工程應用上航行精度還有進一步提升的空間,除了進一步優化波浪滑翔器平臺系統外,在后續的研究中,要加大研究環境因素如風速、溫度、浪高對航行控制的影響,進而優化波浪滑翔器控制系統,提高航行控制的精度。