陳宣成 ,郭 威,周 悅,張有波
(1.上海海洋大學(xué) 工程學(xué)院,上海 201306;2.上海海洋大學(xué) 海洋科學(xué)學(xué)院,上海 201306;3.上海深淵科學(xué)工程技術(shù)研究中心,上海 201306)
深海探測技術(shù)是我國發(fā)展深海裝備著力點,其中作業(yè)型全海深載人深潛器的研發(fā)是深海工程學(xué)科的核心課題之一[1]。全海深水下運動云臺(Deepsea Pan and tilt)作為載人潛水器的主要搭載部件,主要功能是在搭載水下攝像頭及輔助設(shè)備以擴大攝像頭的觀測范圍,是深潛器獲取圖像和體現(xiàn)作業(yè)能力的其中一項關(guān)鍵技術(shù)。鑒于美國Remote Ocean System(ROS)公司P系列的云臺常應(yīng)用于3000m至6000m深海,適用全海深云臺還未見報。而國內(nèi)超過6000米級水下深潛器大多使用國外云臺產(chǎn)品[2,3]。隨著深海工程裝備朝著萬米級深度的研發(fā),目前水下云臺裝備難以匹配全海深載人深潛器的作業(yè)需求,在面向載人深潛器功能需求上,水下云臺控制系統(tǒng)從硬件設(shè)計到控制方法上有許多值得完善的地方。例如:傳統(tǒng)云臺操縱桿在狹小的載人艙內(nèi)不利于多名潛航員控制,且占用較多通信接口[4,5];深潛器通常搭載多臺云臺,控制系統(tǒng)需滿足良好的通信實時性和錯誤自檢機制;密封的載人艙內(nèi)不能直觀的觀察云臺運動姿態(tài),使用傳統(tǒng)的云臺控制方法不易控制。
本文以上海海洋大學(xué)深淵中心“彩虹魚”號全海深載人深潛器搭載云臺的研發(fā)需求出發(fā),研究設(shè)計一種高可靠性全海深云臺控制系統(tǒng),便于潛航員能在艙內(nèi)使用手持式移動控制端完成操作、獲取、存儲和管理云臺系統(tǒng)信息。
本文設(shè)計的全海深水下云臺整體采用模塊化設(shè)計,由潛航員在載人艙內(nèi)通過手持終端調(diào)節(jié)云臺在俯仰方向0~180°和回轉(zhuǎn)方向0~360°旋轉(zhuǎn)。由于潛航員在密封的載人艙內(nèi)控制云臺并不能通過視覺直觀的觀察云臺轉(zhuǎn)動的方位角度,因此設(shè)計位置控制和手動微調(diào)兩種控制模式,并著重設(shè)計以下三個部分:
手持控制終端:為盡可能的節(jié)約載人艙空間在艙內(nèi)采用零布線的通信方案,本設(shè)計在艙內(nèi)選用藍(lán)牙無線傳輸代替現(xiàn)場總線以節(jié)約載人通信接口的使用[6]。系統(tǒng)使用基于Android操作系統(tǒng)手持移動終端作為控制端,利用移動終端內(nèi)置藍(lán)牙與艙內(nèi)云臺通信轉(zhuǎn)化板中的藍(lán)牙模塊完成配對,以藍(lán)牙信號為媒介在艙內(nèi)實現(xiàn)云臺指令與艙外反饋的信息交互[7,8]。
云臺通信轉(zhuǎn)化板:控制系統(tǒng)為實現(xiàn)多臺云臺的靈活組網(wǎng)以及實時控制,在載人艙外使用CAN現(xiàn)場總線組網(wǎng)。此方案充分利用了CAN總線的通信的實時性與組網(wǎng)的靈活性[9,10],在總線上掛有云臺通信轉(zhuǎn)化板、伺服控制器和多個伺服驅(qū)動器,能準(zhǔn)確控制總線上任意節(jié)點[11],實現(xiàn)多個云臺實時網(wǎng)絡(luò)化控制。
伺服控制子系統(tǒng):云臺水平和俯仰方向的運動執(zhí)行機構(gòu)選用兩臺直流無刷電機[12],鑒于無刷電機霍爾元件精度低無法滿足高精度位置控制的要求。因此本文提出在各電機的輸出軸處安裝回轉(zhuǎn)式直流減速機傳遞輸出扭矩以帶動云臺安裝支架運動,即伺服控制子系統(tǒng)將控制電機轉(zhuǎn)動圈數(shù)達(dá)到云臺安裝支架轉(zhuǎn)動位置的精確控制。
云臺控制系統(tǒng)硬件平臺由Android移動控制終端、云臺通信轉(zhuǎn)化板、云臺伺服控制子系統(tǒng)三個部分構(gòu)成。鑒于市面上Android智能移動終端已經(jīng)廣泛普及故不在本文的討論范圍,本文的著重解決的問題在通信系統(tǒng)的搭建、云臺通信協(xié)議轉(zhuǎn)化板和伺服控制子系統(tǒng)的硬件設(shè)計。
云臺通信系統(tǒng)包括艙內(nèi)藍(lán)牙無線通信部分和艙外CAN通信總線兩部分。云臺伺服控制子系統(tǒng)與通信轉(zhuǎn)化板連接基于CAN總線式拓?fù)浣Y(jié)構(gòu)[13],云臺通信轉(zhuǎn)化板為通信節(jié)點1,外部云臺電子艙內(nèi)伺服控制器為節(jié)點2,在總線上的每個伺服驅(qū)動也作為單獨的控制節(jié)點。當(dāng)控制系統(tǒng)上電初始化后,通信轉(zhuǎn)化板先與手持控制終端完成藍(lán)牙配對并將控制端傳來的控制命令在CAN總線上廣播,直至接收到對應(yīng)節(jié)點的應(yīng)答信號。被控節(jié)點執(zhí)行對應(yīng)控制指令后反饋應(yīng)發(fā)信號。
通信轉(zhuǎn)化板實現(xiàn)了載人艙內(nèi)無線通信與艙外CAN節(jié)點通信協(xié)議的轉(zhuǎn)換,該模塊由微處理器、藍(lán)牙串口模塊、CAN收發(fā)器和外圍供電電路組成,其主要硬件模塊與接口如圖1左半部分所示:模塊主控芯片采用STM32F103ZET6為主控芯片,芯片內(nèi)部集成有14個標(biāo)識符過濾器組的基本CAN控制器,兼容CAN 2.0B的主動模式,數(shù)據(jù)總線波特率最高可達(dá)1MB/S[14]。藍(lán)牙串口模塊選用微型主從一體工業(yè)級HC-05芯片,該芯片兼容3.3V和5V的單片機系統(tǒng),支持4800~138240范圍的波特率??刂茊卧ㄟ^串口實時讀寫該模塊,完成與手持控制終端的配對以及數(shù)據(jù)透傳。CAN收發(fā)器選用TJA1050與CAN控制器構(gòu)成基本的CAN節(jié)點,收發(fā)器的CAN_H、CAN_L兩個輸出端與載人艙外的云臺電子艙CAN接口通過水密電纜進行連接,從而實現(xiàn)艙內(nèi)外通信協(xié)議轉(zhuǎn)化。
云臺伺服控制子系統(tǒng)實現(xiàn)云臺在俯仰和回轉(zhuǎn)方向上高精度的位置控制。如圖1右側(cè)所示,該模塊由伺服控制器與多個Elmo伺服驅(qū)動器組成,被安裝云臺耐壓電子艙內(nèi),由載人深潛器電源單元進過濾波降壓供電。為盡可能的縮小云臺電子艙的體積,電機驅(qū)動器選型為Elmo公司產(chǎn)品中體積最小的Gold Twitter,尺寸為12.6(cm3),卻可持續(xù)提供超過4000W的功率。該驅(qū)動器內(nèi)置DSP處理器和CAN接口,可迅速響應(yīng)來自CAN總線的控制指令。適用于分布式實時網(wǎng)絡(luò)的多軸運動控制。伺服控制器選用STM32微處理器,通過GPIO讀寫控制所有Elmo驅(qū)動器的運行,并通過CAN單元實時發(fā)送應(yīng)答信號至上位CAN節(jié)點。
Elmo Gold Twitter驅(qū)動器僅支持CAN與RS-232協(xié)議指令進行訪問,因而艙內(nèi)的手持控制終端不能直接訪問伺服控制子系統(tǒng),為更好的實現(xiàn)系統(tǒng)的控制功能,本文在手持控制終端與通信轉(zhuǎn)化板間制定一套通信協(xié)議以直接訪問底層節(jié)點功能。通信雙方采取應(yīng)答機制進行交互,移動終端觸發(fā)按鈕發(fā)送命令,通信板解析后在CAN總線上廣播命令并等待伺服節(jié)點應(yīng)答幀,接收到應(yīng)答幀后給與手持終端應(yīng)答,最后手持移動終端提示此次操作成功。當(dāng)移動終端切換其他功能請求時,必須等待上次任務(wù)執(zhí)行完畢。
圖1 系統(tǒng)硬件組成及其接口圖
協(xié)議幀采用十六進制編碼,幀長度為固定的4字節(jié),其中幀頭為同步字節(jié),標(biāo)志著協(xié)議的開頭;地址位與功能位占一個字節(jié),地址位包含總線上被控節(jié)點地址信息,供控制端識別總線上所有云臺。功能位前兩位用以區(qū)分命令幀或應(yīng)答幀,后兩位對云臺功能進行編碼;協(xié)議幀中數(shù)據(jù)位占1字節(jié),包含位置模式下電機位置信息以及手動模式控制標(biāo)志位;數(shù)據(jù)幀最后為校驗字節(jié)。協(xié)議編碼表如表1所示。
該模塊控制器主程序用Keil uVision5進行開發(fā),在基于STM32微控制器硬件平臺上采用庫函數(shù)方式進行編寫。通信板程序的主要功能如下:1)通過串口讀寫藍(lán)牙模塊指令集,完成與手持控制終端的藍(lán)牙配對,并實時解析云臺命令;2)根據(jù)協(xié)議解析命令并改寫CAN數(shù)據(jù)幀中的仲裁段與數(shù)據(jù)段,實現(xiàn)控制節(jié)點選擇與驅(qū)動器CANopen指令集的位置控制;3)監(jiān)聽CAN總線上的應(yīng)答幀與其他CAN節(jié)點反饋報文判斷電機是否觸碰到軟件限位,并執(zhí)行云臺復(fù)位。主程序由初始化程序、主函數(shù)和功能子函數(shù)構(gòu)成,程序執(zhí)行流程如圖2(a)所示。
圖2 控制系統(tǒng)流程圖
表1 通信協(xié)議編碼表
Elmo可編程驅(qū)動器自帶32K閃存和10個可編程IO且使用伺服運動控制語言在Composer Elmo Studio IDE上對70余個內(nèi)置參數(shù)完成控制及預(yù)編譯。硬件平臺搭建后,在Composer調(diào)試器上配置比例(KP)積分(KI)以及濾波器的值以獲取伺服系統(tǒng)最佳的階躍響應(yīng)。Elmo驅(qū)動器程序流程圖如圖2(b)所示,手動微調(diào)模式下伺服控制器與Elmo驅(qū)動器協(xié)同工作。首先在初始化向?qū)е性O(shè)置驅(qū)動器GPIO為外部TTL電平觸發(fā),伺服控制器接收上位指令控制GPIO輸出電平。位置模式下,預(yù)先配置CAN節(jié)點ID和相應(yīng)位置環(huán)控制參數(shù),Elmo直接接收上位端的CANopen指令控制電機輸出軸位置。
手持控制端人機界面設(shè)計的核心在于控制界面布局和實現(xiàn)藍(lán)牙通信,應(yīng)用程序使用Android Studio進行開發(fā)[15],為實現(xiàn)藍(lán)牙通信,應(yīng)用程序首先調(diào)用BluetoothAdapter類中的StartActivity()方法和startLeScan()方法,完成控制端藍(lán)牙開啟以及云臺通信轉(zhuǎn)化板BLE設(shè)備搜索,然后重寫B(tài)luetoothDevice類中connectGatt()方法實現(xiàn)設(shè)備的握手,最后等待更改事件發(fā)生后在重載函數(shù)中回調(diào)只有一個參數(shù)intend的broadcastUpdate()函數(shù)實現(xiàn)數(shù)據(jù)的傳輸。應(yīng)用程序的控制界面如圖3所示。
圖3 手持控制端界面
為驗證云臺控制系統(tǒng)水平位置控制準(zhǔn)確性與穩(wěn)定性設(shè)計如下測試實驗:在Composer通過預(yù)編程設(shè)置云臺俯仰位置限制之后,打開應(yīng)用程序如圖3(a)所示,界面完成云臺通信連接轉(zhuǎn)化板藍(lán)牙配對、被控云臺選擇以及電機轉(zhuǎn)速設(shè)置。進入圖3(b)位置控制界面選擇被控電機,發(fā)送位置指令并使用Elmo公司Motion Monitor Recorder生成電機輸出軸位置曲線與驅(qū)動器輸出電流曲線。監(jiān)控窗口如圖4所示。
圖4 控制端界面與監(jiān)控曲線
由圖4可看出控制端發(fā)出命令后,電機在0.03秒左右初次到達(dá)目標(biāo)位置900轉(zhuǎn),隨后出現(xiàn)正向偏差,隨著反向制動電流趨于峰值,電機調(diào)整至目標(biāo)位置,考慮到電機輸出軸的摩擦與慣性因素影響,本設(shè)計符合預(yù)期設(shè)計目標(biāo)。
綜上所述,本文為全海深云臺控制系統(tǒng)設(shè)計提供一種新思路,實現(xiàn)全海深水下云臺較為精確的位置控制,云臺位置控制與手動控制功能能滿足全海深云臺快速獲取水下位置與攝像頭微調(diào)的功能需求,解決了傳統(tǒng)云臺控制系統(tǒng)在在載人深潛器應(yīng)用上的諸多不足。除此之外,控制系統(tǒng)采用模塊化設(shè)計以及應(yīng)用CAN總線通信組網(wǎng),便于系統(tǒng)升級維護以及功能拓展。但系統(tǒng)控制功能較為單一、上位機設(shè)計還較為簡單,將在以后的研究工作中繼續(xù)完善。