朱衍明,林九根,宋家平,王天昊
(中國船舶工業系統工程研究院,北京 100094)
海洋面積約占地球總面積的百分之七十一,并且在廣闊的海洋里蘊含著豐富的生物和礦物資源[1]。隨著人類工業化和城市化的進程加劇,以及全球航海運輸的進一步發展,陸上資源日益枯竭,世界各國的能源開發正在由陸地轉向海洋,對海洋資源的爭奪和開發在21世紀將逐漸成為海洋大國的最重要研究方向之一[2]。
受海洋水下條件以及人類自身條件的約束,在對海洋的探索和開發過程中,無論在民用還是軍用產品上,人們通常選擇使用無人裝備,即水下機器人。無人水下航行器( UUV, unmanned underwater vehicle)正是這樣一種優秀的水下無人裝備平臺,其運行方式為半自主式或智能自主式。能夠通過自身攜帶的能源和各種傳感器設備,完成對任務區域的探測和任務執行并順利返航[3]。
近十幾年,隨著微電子技術的發展以及人工智能技術的突破,無人水下航行器得到了長足發展,UUV的控制系統也隨之越來越強大和復雜。傳統的集中式計算控制系統架構已經難以滿足復雜的任務控制需求,基于分布式分層理論的控制系統架構已越來越多地被各科研機構和開發商所采用[4-6]。本文正是在分層式UUV控制系統架構的基礎上,提出了一種基于嵌入式系統STM32的UUV運動控制層設計方案,艇體采用X型舵加推進器進行運動執行,能夠很好地緩解決策層的運算壓力,提高控制系統的整體可靠性。
UUV的系統架構會直接影響控制系統的設計和實現難度,并影響航行器的穩定性、可靠性以及航行器的運動能力。合理的系統架構能夠使UUV通過自身的各種傳感器獲得自身的運動信息和周圍環境的相關信息,能夠使UUV的決策系統做出合理的決策,并準確合理地驅動實體層的具體執行機構,同時還具有一定的與其他系統相兼容的特點,并且更容易進行系統能力擴展,例如增添其他傳感器設備等。目前業界廣泛使用的系統架構如圖1所示,其系統結構分為4層,這4層既包含了硬件系統架構,也包含了軟件系統架構[7-9]。

圖1 分層式系統架構
任務層是整個UUV控制系統的最高層,主要負責接收岸基端發來的任務指令,之后將要執行的復雜任務解析成若干個子任務后傳遞給下一層,同時還要負責電池剩余電量的推算等相關系統管理任務。
決策規劃層主要涉及到UUV各種算法的實現,包括導航定位、地圖構建、障礙檢測、狀態監視,并據此進行路徑規劃,實時確定出下一步的運行動作,如航行方向和航行速度。
運動控制層的作用是根據決策和規劃層得到的運行動作指令,采用一定的運動控制算法來解算出UUV各運動部件的具體運行參數,然后傳遞命令給實體層的各運動執行部件,從而使UUV完成上層系統所規劃的運動路徑。
實體層指安裝在UUV上的推進器、航向控制舵機等運動執行設備以及其他傳感器等設備,所涉及的傳感器通常有深度計、高度計、多普勒測速儀、光纖陀螺儀、三軸加速度計、北斗、攝像頭、前視聲吶和側掃聲吶等。
UUV控制系統中的各層之間的通信以及傳感器的通信通常選用工業控制領域成熟的總線,如RS232總線、RS485總線、CAN總線和EtherCAT總線。其中CAN總線因相較RS232、RS485總線有更高的可靠性;相較EtherCAT總線具有低成本和易用性,因而在工業控制領域中得到了更廣泛的應用,常被用在工業自動化、汽車、船舶、醫療設備、工業設備等領域[10]。
CAN(controller area network)總線是由德國Bosch公司研制開發的一種串行數據通信協議,應用在汽車內部在各部件之間進行數據交互。CAN總線已被ISO國際標準組織制定為國際標準,并且廣泛應用于嵌入式系統和分布式控制領域。CAN總線由OSI模型發展而來,但是CAN總線只有物理層、數據鏈路層和應用層協議,較簡練的協議使得CAN總線具有較高的實時性[11]。CAN總線是對等總線,總線上每個節點都可以主動發起總線訪問,每個節點都有優先級設定,并支持點對點、點對多和廣播等通信模式。CAN總線的傳輸介質通常是傳統的雙絞非屏蔽線,總線通信速率會影響總線通信長度,在最高速率1 Mbps下的通信距離可達40 m。CAN總線節點在檢測出錯誤后會自動退出總線,使得其傳輸可靠性很高[12]。
UUV的控制系統具有分布式節點數量大的特點,因為UUV為獲得豐富的外界環境信息,通常會掛載眾多的各種傳感器設備。眾多傳感器使UUV具備更好的任務執行能力,智能UUV則更是如此。CAN總線最高1 Mbps的傳輸速率對于UUV控制系統的運動控制信號和相關傳感器數據信號足以滿足需求。UUV所攜帶的水下傳感器一般比較昂貴,且UUV所在的水下工作環境相對比較惡劣,因而對控制系統通信鏈路的可靠性要求相對較高,因為一旦通信環節出現故障,將很可能會對UUV造成難以挽回的損失。而CAN總線協議的傳輸層和數據鏈路層具有完善的錯誤檢測和數據重發功能,保障了數據通信的高靠性,很好地滿足了工作環境要求。
因此本文設計的運動控制層選擇CAN總線完成與決策規劃層的控制指令數據交互,并通過CAN總線實現推進器的運動控制通信和其他傳感器的讀取。
意法半導體的STM32系列處理器是專為要求高性能、低成本、低功耗的嵌入式應用而設計的基于ARM公司Cortex-M的32位Flash微控制器。它為用戶提供了很高的開發自由度,既可以使用底層寄存器進行編程,也可以很方便地使用官方提供的庫文件進行編程,兩種編程方式都可以很方便地移植到同系列的32位產品中。STM32系列處理器具有高性能、實時性好、低功耗和低電壓操作等特性,同時還具有易于開發和集成度高的特點。按內核架構分為主流產品、超低功耗產品和高性能產品。
本文選用STM32F407ZGT6型高性能微控制器作為UUV運動控制層的核心計算機,它采用Cortex M4內核,帶FPU和DSP指令集,最高運行頻率可達168 Mhz,并且擁有2個CAN、3個12位ADC、3個SPI、2個全雙工I2S、3個IIC、6個串口、1個10/100 M以太網MAC控制器、12個16位定時器、2個32位定時器、1個RTC等眾多接口和資源,完全能夠滿足運動控制層的接口需求和算力需求。
一般分布式控制系統從縱向看具有分層的特點,且層與層之間通過網絡總線通信,從橫向看則具有模塊化分散的特點,每個模塊之間也是通過各種工業總線進行數據通信的。本文設計的UUV運動控制層通過CAN總線與決策規劃層通信,接收其下發的運控控制指令,通過另外一條CAN總線與實體層的推進器以及其他傳感器進行通信,進行推進器驅動和傳感器數據采集。一些傳感器設備亦可通過RS232或者其他工業總線與更高的其他層進行數據交互。具體的運動控制層總線網絡架構如圖2所示。

圖2 運動控制層總線網絡架構
以STM32F407ZGT6為運動控制層核心控制器,設計兩路CAN總線、2路RS232總線和1路485總線、4路PWM輸出,并利用IIC接口外接一片2 Kbit存儲空間的EEPROM,用以保存舵機的初始偏差等掉電不丟失的參數。其中EEPROM實際電路如圖3所示。

圖3 EEPROM存儲電路
所謂舵機,其本質就是自帶簡易反饋系統的伺服電機,常見的舵機主要指的直流伺服電機,通過調節電機輸入信號的PWM占空比可以實現電機較精準的舵機轉動角度控制。PWM(pulse width modulation)就是脈沖寬度調制,也就是占空比可變的脈沖波形。PWM的占空比,就是指高電平保持的時間,與該PWM時鐘周期時間之比。
舵機的控制一般需要一個20 ms左右的時基脈沖,該脈沖的高電平部分一般為0.5~2.5 ms內的角度控制脈沖部分,總間隔為2 ms的時間長度。
本文使用D30型水下舵機,該舵機是一種空心杯直流電機,耐壓深度可達水下300 m,額定工作電壓為7.4 V,額定扭矩為15 kg·cm,轉動角度范圍為270°,信號范圍為0.5~2.5 ms,信號頻率為50~300 Hz。
該舵機的接線定義為紅色線為電源正極,黑色線為電源負極,白色線為控制信號輸入線即PWM信號線。STM32通過輸出PWM波即可完成舵機轉動角度的控制。
STM32F407ZGT6通過定時器產生PWM波形,其定時器除了TIM6和TIM7,其他的定時器都可以用來產生PWM輸出。其中高級定時器TIM1和TIM8可以同時產生多達7路的PWM輸出。而通用定時器也能同時產生4路的PWM輸出。本文設計的UUV運動控制層需要輸出4路獨立的PWM波形來分別控制4個舵機。因此STM32F407ZGT6有足夠的定時器資源來輸出4個獨立的PWM波。
STM32F407ZGT6通過定時器產生PWM波形的原理如圖4所示。圖中,我們假定定時器工作在向上計數PWM模式,且當CNT 圖4 定時器產生PWM波形的原理 ISO 國際標準組織先后制定了ISO11898和ISO11519-2兩種CAN 總線協議標準,其中CAN 總線的高速通信標準為ISO11898 標準,其通信速度范圍為125 kbps~1 Mbps,CAN 總線的低速通信標準為ISO11519 標準,其通信速度范圍為 125 kbps 以下。兩種標準的數據鏈路層的定義是相同的,但是物理層定義不同。本文采用通信速率較高的ISO11898 標準設計,其物理層特征如圖5所示。 圖5 ISO11898標準CAN總線物理層特性 從圖5的ISO11898 標準物理層特性可以看出,顯性電平是CAN_H和CAN_L兩根信號線電壓之差2.5 V左右,對應邏輯為0;而隱性電平是CAN_H和CAN_L兩根信號線電壓之差為0 V,對應邏輯為1。CAN總線具有線與邏輯的特點,當總線上某一個CAN節點輸出顯性電平,即邏輯0時,那么總線上的線與邏輯就總為邏輯0,即總為顯性電平,因而CAN總線上顯性電平具有優先權。同理隱性電平則需要總線上所有節點都輸出隱性電平。另外,ISO11898 標準CAN總線協議的物理層要求在總線的兩端各加一個120 Ω的終端阻抗匹配電阻,以減少傳輸線上的回波反射,從而提高信號的完整性。因此本文的CAN收發電路設計如圖6所示。 圖6 CAN收發電路 如圖6所示,STM32F407ZGT6的兩個CAN口都被利用起來,一個CAN口用于與決策規劃層通信,另一個CAN口用于與實體層的推進器或者其他傳感器通信。CAN物理層接口芯片采用TJA1050,它是控制器區域網絡(CAN)協議控制器和物理總線之間的接口,該器件完全兼容ISO11898標準,為總線提供差分發射能力并為CAN控制器提供差分接收能力。 當代UUV的日益關注水下機動性能,除了追求高航速之外,航行器的機動靈活性也成為衡量航行器戰術性能的重要指標,而航行器尾舵作為航行的關鍵裝置,經過近幾十年的演化和發展,逐漸形成“十字型”和“X型”兩種流派,尤其是近年X型尾舵日漸獲得新一代航行器的青睞,逐漸成為先進UUV的標配[13-14]。 隨著科技的發展,X型尾舵的操控性復雜性、可靠性和安全性不可同日而語,在克服控制方式復雜度等固有缺點之后,X型舵操控的優勢愈加突出。X型尾舵的舵效要高于十字型尾舵,因為X型舵4個舵面可以同時參加航行器單一方向的機動,會提供更大的能量,而且每個舵面都可以單獨動作,即便出現其中一兩個舵面損壞的極端情況,航行器仍然能夠正常工作,這便大大提高了控制系統的冗余性和安全性[15]。 X型舵的4個舵面都能在水平面和垂直面產生操縱力,且4個舵面布置在航行器尾部的對角線上,因此在不突出筒體艇身筒體尺寸的情況下,舵面可以更好地讓航行器完成坐底海床的動作,不會撞壞底部舵面。因此更適合在淺海海域活動,靠岸也更安全,同時十分有利于UUV的布放和回收操作。因此本文的UUV運動控制層針對X型舵設計完成打舵控制。 X舵布局方式如圖7(a)所示,從尾部按順時針方向看,4個獨立舵舵角分別標記為δ1、δ2、δ3、δ4,且規定向右打舵為正,向左打舵為負。圖7(b)為十字舵布局方式,其中δs、δr分別表示尾升降舵角和方向舵角[16-18]。 圖7 X舵與十字舵布局方式 任意一個舵面偏轉后都會產生一個空間力F,該力可以分解為公式(1): (1) 其中,X、Y、Z為X舵舵力在艇體坐標軸上的分量,K、M、N為坐標軸上的舵力矩分量。艇體只做潛浮運動時,十字舵表達為δr=0、δs≠0,X舵表達如公式(2)所示: (2) 艇體只做轉向運動時,十字舵表達為δr≠0、δs=0,X舵表達如公式(3)所示: (3) X型舵由于其空間布局方式,不存在直接的方向舵和升降舵,每個舵面的偏轉都會引起航行器的潛浮與轉向,因此需要多個(4個或者2個)舵面的協同控制來實現單一方向的航向或者深度控制。以向左轉向運動為例,同時打下舵(δ1=δ2<0)或者同時打上舵(δ3=δ4<0)或者同時打左舵(δ2=δ3<0)或者同時打右舵(δ1=δ4<0)在理論上都能實現艇體向左轉,但考慮到艇體尾部對水流的影響,以及為避免艇體橫傾,同時打左舵(δ2=δ3<0)是最佳方案[19-20]。同理向右轉向運動最好同時打右舵(δ1=δ4>0),上浮運動最好同時打上舵(δ3=(-δ4)>0),下潛運動最好同時打下舵((-δ1)=δ2>0)。 將通用運動控制層控制器作為下位機與UUV尾段參照圖2進行電氣連接,其中上層通訊CAN總線通過仿真器與上位機電腦相連,下層CAN總線進行推進器控制,PWM輸出用于舵機控制。之后將UUV尾段置于水箱中進行運動控制測試,實測圖如圖8所示。 圖8 UUV尾段實測圖 主要測試項目和測試方法如表1所示,測試目的在于完成運動控制層的核心能力驗證,即對上層通信和對下層運動控制。 表1 測試項和測試方法 下位機通過上層通訊CAN總線與上位機通信時需要自定義控制命令格式,此處CAN通信采用1 Mbps的通信速率,并通過標準數據幀格式進行通信,且其數據字段長度為8個字節,數據字段格式直接采用推進器通信協議里的定義,如圖9所示。這樣下位機在收到CAN總線數據幀后進行解析,如果是推進器的控制指令則直接轉發給推進器控制器,從而完成推進器的控制測試。 圖9 數據字段格式 同樣,如果下位機在收到CAN總線數據幀后解析為打舵控制命令,則其攜帶數據被轉換為X舵的4個舵機舵角的PWM控制量輸出,從而完成舵機的控制測試。 按照以上方法進行實驗測試。測試結果表明本,采用該設計方案完成的通用運動控制層控制器能夠實現X型舵的上下左右打舵操作,以及推進器的正推、反推控制,并且完成與上層通信的1 Mbps速率的CAN總線數據交互。達到了UUV運動控制層的設計目標。 以嵌入式系統STM32為核心構建的UUV運動控制層設計方案,符合分布式計算和模塊化設計的原則,能夠實現UUV實體層X型舵的打舵控制和推進器的推力控制以及同上層的通信,并能提供富裕的接口和算力進行各類傳感器的數據交互。該設計方案具有較強通用性,提供了比較完整的UUV運動實體層和運動控制層解決方案。 本設計方案需要進一步完善X型舵的控制策略,解決例如單舵卡舵情況下的航行器運動控制問題[21]。
2.4 CAN總線設計


3 X型舵的控制
3.1 X舵的優點
3.2 X舵到十字舵的等效控制

4 實驗與測試



5 結束語