王 健,曹園山,陳 偉
(中國船舶科學研究中心 水動力學國家重點實驗室,江蘇 無錫 214082)
隨著海洋監測手段和技術的不斷發展,水下滑翔器作為一種低功耗,長續航的新型水下無人潛航器逐漸成為海洋監測領域的利器[1]。目前世界最高水平續航時間長達4個月,續航里程遠達7千公里,潛深可至海底8千米[2]。水下滑翔器主要包括控制系統、動力系統、通訊系統、測量系統等,作為整個潛航器的大腦,水下滑翔器中央控制系統在復雜的海洋環境中保持正常運轉的能力直接關系到整個潛航器的安全性。面對復雜的控制邏輯,目前只能通過長期的半實物仿真測試來發現設計中的問題,再根據問題實現軟件和硬件的優化工作,通過上述方式的循環迭代來保證滑翔器控制系統的可靠性[3]。然而水下滑翔器的航行控制系統長期運行在冷熱交變的環境下,不可避免會出現控制系統CPU宕機或損壞等情況。雖然可以通過建立看門狗電路的方式進行控制系統宕機處置,但是這種機械的復位系統的方式不僅無法解決CPU損壞問題,而且其重新復位存儲區的粗暴方式并不適宜應用在實時控制的無人設備上。
本文提出一種基于分布式系統主從互轉式雙冗余控制裝置及方法,利用主從互換式CPU,以可剝奪主控制權作為設計方法來預防單個中央控制器出現故障的情況,防止滑翔器失控;通過建立公共存儲區,解決了切換時的數據丟失問題,避免了算法上因為數據丟失而產生的邏輯錯誤。

圖1 水下滑翔器航行控制器控制結構圖
傳統的水下滑翔器是通過自身浮力變化產生的動力進行水下運動的,其結構簡單,運動部件少,控制系統的組成和結構相對單一,僅僅只能在水下作鋸齒形的運動。相比于傳統的水下滑翔器,混合驅動水下滑翔器增加了尾推進器以及尾舵。這種改變使其同時具備了水下滑翔器大范圍滑翔探測與AUV精細搜索的雙重作業功能,但是控制系統復雜性大大增加。混合驅動水下滑翔器航行控制系統需控制的設備有:剩余浮力系統、姿態調節系統、航姿系統、無線/衛星通信系統、推進系統、垂直/水平舵系統,同時需要搭載多種任務傳感器如深度計、溫鹽深傳感器、葉綠素傳感器、測高聲吶等,在保證滑翔器正常運轉的前提下,需要對任務傳感器進行數據采集、分析、存儲[4-5]。混合驅動水下滑翔器又具備多種作業模式:連續滑翔作業模式、定深直航作業模式、路徑搜索作業模式、滑翔直航混合型作業模式等。不同的作業模式對應不同的控制邏輯,滑翔器的中央控制器需要預存儲一系列的控制方案并根據上位機的指令即時更換控制模式。如果采用單一CPU進行集中式控制,一方面硬件系統設計的復雜性急劇提升,設計時需綜合考慮整個系統硬件系統的兼容性,抗干擾性等,否則會因為某一系統引入的干擾導致整個CPU的崩潰;另一方面運行程序功能性臃腫,設計程序時既需要根據不同的作業模式進行邏輯運算,又需要依據邏輯運算的指令進行底層控制,增加了CPU的負擔,降低整個系統的可靠性。[6-7]
水下滑翔器的作業特點就是低功耗、長航程,因此水下的滑翔器在作業過程中難免會遇到冷熱交變、波浪晃蕩、外界干擾等環境因素的影響,滑翔器控制系統極易出現可靠性的問題。通常軟件上會出現程序跑飛死機的狀況,硬件上會出現CPU過熱或者硬件損壞的情況。出現硬件損壞滑翔器幾乎無法通過任何的措施恢復,而出現程序跑飛死機時,雖然可通過軟件看門狗進行監測后進行軟件重啟,但是重啟軟件導致的數據丟失和程控邏輯失序現象卻對自主運行的滑翔器來說有著極大的控制風險。
為了進一步減小控制器故障給滑翔器帶來的運行風險,采用主從分布式設計的方式進行系統設計,分別對水下滑翔器控制系統中的控制結構、控制方法上進行了針對性的優化設計。
控制結構上,將原單一CPU的航行控制器功能一分為二,分為邏輯運算控制器和底層驅動控制器。在正常情況下,兩個控制器并行運行,互有分工。邏輯運算控制器主要進行信息接收、處理與運算——經由通訊系統傳輸的控制命令首先到達邏輯運算控制器,通過命令解析獲取當前任務的作業模式、運動參數和約定通訊節點;控制器根據任務傳感器、航姿系統發送的滑翔器當前狀態信息以及不同的作業模式和運動參數調用滑翔器多種作業模式的程序信息,生成相關的執行命令傳輸給底層驅動控制器。底層驅動控制器主要是進行動作部件的操控——一旦接收邏輯運算控制器傳輸過來的指令控制,底層驅動控制器就會利用內置的外設驅動指令對滑翔器的舵角、推進器轉速、剩余浮力以及姿態調節進行相應的控制。
控制方法上采用主從式CPU、互控電源、建立公共存儲區等方式來規避單CPU模式下可能出現的CPU宕機或者損壞的現象。其結構如圖2所示。

圖2 水下滑翔器主從互轉式控制系統架構圖
主從式CPU也即航行控制器中的邏輯運算控制器和底層驅動控制器在正常情況下是互有分工的,但是當一個控制器出現故障時其中一個正常控制器可以直接接管另外一個控制器的所有功能。設計中,對關乎潛航器航行安全的基礎運動系統(浮力系統、通信系統、姿態系統)做到雙CPU同時可控,以降低單CPU所帶來的控制風險。依據各個系統的控制特點通信系統、姿態系統利用CAN總線與主從CPU相連;剩余浮力系統通過電源IO控制實現。為了達到雙CPU控制的目的以滿足主控CPU互換的要求,設計了門雙信號決策電路,任意一路信號有效則生成高電平觸發信號控制電源開關繼電器,從而保證任一CPU都能控制剩余浮力裝置的動作。
為了使得主從式CPU能夠互相監控對方CPU的運行狀態,采用為“心跳”信號互監控方式。也即在每個CPU上分別設置專用的PWM脈沖輸出腳和PWM脈沖讀取管腳,通過實時監控脈沖輸出情況來實時監測CPU的運轉情況,當CPU出現死機或者硬件損壞時,相應管腳的PWM脈沖必然停止輸出,以此來監測CPU的狀態。一旦一個CPU出現異常,另一個CPU隨即進行部分功能的接管。

圖3 控制系統電路圖
為保證應急控制中的電量供應要求,設計了互控電源電路。互控電源也即邏輯電路中的受控獨立電源。為保證雙CPU的受控獨立控制,使用雙CPU互控電源裝置來對雙CPU進行供電,系統電路圖如圖3所示。該電源裝置輸入為主供電電源,輸出為兩個獨立控制的互轉CPU供電電源。供電電源采用互鎖的控制結構,即主從CPU的供電鏈路是由對方進行單獨控制。實際使用當中,利用對方CPU產生的控制信號通過三極管9013在基極進行下拉進行信號自鎖,只有當收到信號時才會動作一次,即使發生信號中斷等情況也不影響裝置的供電狀態。這種互鎖的結構既能夠保證主CPU根據控制指令進行斷電重啟,重新恢復控制能力,又不會夠影響從CPU的正常工作,從而確保控制器邏輯的順利實施。
考慮到獨立存儲區在CPU宕機時的信息更新脫檔以及斷電重啟的復位情況,使用E2PROM-AT24C04建立了雙CPU可以同時訪問的公共存儲區。該存儲區能夠被主從CPU訪問與寫入,具備掉電保持功能,其中存儲了滑翔器滑翔所必備的關鍵程序和參數如:通訊指令解析程序、多作業模式控制程序、滑翔周期、滑翔深度、滑翔時間等,同時替代了主CPU部分堆棧功能,暫存主CPU運行階段的關鍵參數如:滑翔運動階段,當前時刻等。在主CPU死機后,從CPU能夠從中獲取死機前的關鍵參數使得滑翔器控制器邏輯運算不斷檔,同時在宕機的主CPU復位后能夠獲得最新的滑翔器關鍵參數,使得滑翔器的控制器恢復初始的冗余功能。
水下滑翔器的軟件系統中采用的是UCOS操作系統進行編程。UCOS是一個可移植、可固話、可剪裁的、占先式多任務實時系統。在進行軟件編程時,每個控制任務都可以在系統中設置獨立任務,每個獨立的任務都能夠并行運行,保證整個控制系統的實時性。在進行水下滑翔器應急軟件設計時分為邏輯運算控制器軟件以及底層驅動控制器軟件。其中邏輯運算控制器軟件承擔了主要的運算工作,需要進行滑翔器上壓力、CTD、葉綠素等各個傳感器報文的讀取和解析,通過壓力傳感器測量的深度數據對當前是否需要進行浮力裝置的出油或者進油,或者航向的情況判斷舵機的打舵角度;而底層驅動控制器則是接收到邏輯運算控制器的指令對底層的電機、舵機進行驅動控制。軟件運行步驟邏輯分別如圖4和圖5所示。軟件主要的作業流程為:
1)主控系統進行相關寄存器以及控制引腳的初始化。初始化完成后從外置公共存儲器內讀取相關狀態參數包括:當前作業任務類型,當前作業階段,當前滑翔狀態,滑翔周期數、滑翔深度、滑翔時間等。
2)讀入相關參數后,程序進行自動切換,切換到滑翔器程序運行點,繼續進行滑翔器滑翔運動。
3)主控CPU在程序運行后會每個500 ms發送一次脈沖電平,該電平被發送到底層輔控CPU,用于判斷主控CPU是否死機。
4)底層輔控CPU開始進行相關功能初始化,然后進行相關控制權的判斷。輔控CPU有兩種運行模式一種是主控制權獲得模式,當獲得主控制權后會接管主控CPU的任務,對滑翔器進行運動控制。另一種是主控制權未獲得模式,在未獲得模式下控制器只執行底層的命令執行任務。
5)底層輔控CPU在獲得控制權后,會接管滑翔器控制滑翔器進行相關的潛浮任務作業,同時會對主控CPU脈沖口進行監控,當連續收到主控CPU發來的脈沖后,表示主控CPU已重啟完成,CPU釋放相關控制權。
6)底層輔控CPU如未獲得控制權,每50 ms會進行底層任務的掃描,同時會實時監控收到的脈沖電平信號,如發現未收到脈沖信號則獲得控制權,讀取外置存儲器的參數,重啟主控CPU。

圖4 邏輯運算控制器控制流程

圖5 底層驅動控制器控制流程
在正常情況下,邏輯運算控制器執行了滑翔器控制器中大部分的運算任務,滑翔器的主要的任務計算都是由邏輯運算控制器進行,而底層驅動控制器作為從控制器主要進行控制邏輯的底層分配和邏輯運算控制器的監控作用。出現緊急情況后,從控制器監控到主控制器的PWM輸出引腳沒有輸出PWM信號,軟件立即控制從控制器進行主控制器的控制權剝奪,并通過斷電和重新上電的方式同步進行主控制器的重啟動作。在主控制器的重啟過程中,從控制器會根據公共存儲區的算法進行滑翔等工況的運算和邏輯判斷工作,等待主控制器重啟完成,從控制器立即釋放主控制權,繼而整個系統回歸正常工作狀態。這種主從的功能分配方式盡可能保證了每個控制器的軟件功能相對單一,正常工作時每個控制器的運算負荷也較小,保證了滑翔器控制系統的運行安全。
為了進一步驗證主從互轉技術的實用性,以中船重工第七〇二研究所研發的USE-Ⅲ型混合驅動水下滑翔器為控制對象,將主從互轉式應急控制技術應用于該型水下滑翔器的控制系統中,于中國南海海域進行了海上測試。
本次海試的試驗區域海水的平均深度約1 000 m,且不處于主要的海上航道和捕魚區域,水面和水下的障礙物比較少,非常適合進行水下滑翔器大深度的滑翔試驗。
本次海試的部分工況包含連續滑翔的過程,項目組根據任務要求對滑翔器進行了連續工作能力的測試,利用滑翔器上搭載的剩余浮力驅動裝置進行了反復多次的下潛上浮作業,滑翔器上搭載的深度傳感器數據圖6所示。經過連續3天72小時共計103次的下潛測試,水下滑翔器的各項功能運行正常,控制系統中保存的時間、溫鹽深等數據連續,未出現任何由于CPU宕機而產生的數據丟失、滑翔器失控等問題。

圖6 滑翔深度數據
傳統的水下滑翔器因其低功耗、長續航以及低噪音的特點,是海洋調查作業的有力工具,然而這種優勢導致的功能單一問題也成了限制其發展的一個短板。為了進一步擴展水下滑翔器的應用范圍和應用功能,使其能夠應對更多的水下環境以及水下作業任務,混合驅動型水下滑翔器應運而生。隨著使用功能和范圍的增加,水下滑翔器丟失的案例屢見不鮮,其海上運行的安全性成為了該學科一個永恒的話題,水下滑翔器的應急控制技術也成為水下滑翔器應用關鍵技術之一。在普遍使用應急拋載的現狀下,實時解決因控制器問題導致的滑翔器失控具有非常重大的現實意義。根據水下滑翔器長期運行中普遍存在的CPU宕機現象,利用邏輯電路方面的優化,使用雙CPU主從互轉代替單CPU的冗余方式,進一步增加了滑翔器中控制核心安全穩定運行的時間,減少了單一CPU由于宕機造成的滑翔器失控風險。雖然主從互轉的控制方法在海試中的成功應用是水下滑翔器應急控制方面的一次成功嘗試,然而對于這類潛航器的控制器來說,使用單片機為核心的控制器還需要進一步進行長期的測試才能發現其中存在的時序或者邏輯問題。