王心鵬,劉 寧,門雅彬,孔佑迪,張東亮
(國家海洋技術中心,天津 300112)
海水溫度和電導率是重要的海洋環境要素,測量這兩類數據對水下溫度、鹽度、密度的分布情況以及聲波傳播速度的研究具有重要意義,可為海洋科學研究提供重要的數據支撐。投棄式溫度剖面測量儀(XBT)和投棄式溫鹽深剖面測量儀(XCTD)是能夠測量海水溫度剖面和電導率剖面的兩種投棄式儀器,是海洋調查領域重要的測量手段[1]。
通常,XBT和XCTD在使用時由專業測量人員使用手持式投放裝置進行人工投放,該方式受人為、天氣和海況因素影響較大。近年來,隨著電子和自動化技術的不斷發展,自動投放裝置的研制受到了國內外海洋領域的關注,取得了一定的進展。美國的洛克希德·馬丁·斯皮坎公司(Lockheed Maritin Sippican,LMS)、日本的鶴見精機公司(TSK)均已研制出相關產品[2]并已安裝到測量船上進行使用。在國內,國家海洋技術中心[3-4]、山東省科學院海洋儀器儀表研究所[5]、西安天和防務技術股份有限公司[6]等單位對探頭自動投放技術進行了深入研究,設計了不同類型的自動投放裝置。但目前這些投放裝置的探頭一次性裝載數量有限,當遇到惡劣海況或進行密集化、網格化的海洋調查時,頻繁的探頭人工裝填為現場操作帶來諸多不便。因此,自動投放裝置一次性容納較多數量探頭的能力就變得尤為重要。
本文提出的XBT/XCTD自動投放與測量控制系統由投放控制前端、通信控制與數據采集中端、供電單元后端和上位機軟件4部分組成,每組投放控制前端具有6個投放單元,前端具有擴展功能,可根據使用需求進行數量增減,通信控制與數據采集中端最多可同時連接8組前端,實現48枚探頭的一次性裝填和自動投放。系統的中端接收來自控制室上位機的投放指令后,分配給對應編號的前端,探頭投放后采集并實時處理測量數據,通過網線回傳上位機。供電單元后端位于控制室內,為系統提供所需的直流供電,在保證系統正常運行的同時,其直流供電的特點也保證了甲板操作人員的安全。上位機軟件可根據XBT和XCTD測量原理的不同,對兩種探頭進行自動區分,完成測量數據的實時計算和剖面測量曲線顯示。系統能夠在測量船停航或走航條件下完成對海水溫度和電導率剖面數據的快速獲取,在惡劣海況下完成投放測量任務,具有探頭裝填數量多、自動化程度高、便于操作等特點,對傳統人工投放方式起到良好的補充作用。
系統的硬件部分主要由投放控制前端、通信控制與數據采集中端、供電單元后端3部分組成,其硬件組成框圖如圖1所示。前端的硬件部分包括主控芯片、電源模塊、直流電機驅動電路等部分,中端包括探頭數據采集模塊、GNSS定位模塊、通信控制模塊、RS232轉網絡模塊、供電和數據采集接口等,供電單元后端主要由開關電源、上電開關、過流保護器等模塊組成,為系統提供穩定的直流供電。系統的投放控制前端電路板尺寸小巧,可直接安裝在投放架內部,具有節省空間、走線規整等特點。中端最多可同時連接8組前端,通過控制前端相應的直流電機帶動每枚探頭前部的擋板運動,可實現多枚探頭的依次投放與測量數據采集處理。

圖1 系統組成框圖
經對不同型號的單片機參數性能進行對比,項目組選用Silicon Laboratories公司的C8051F020微控制器作為通信控制與數據采集中端的控制芯片,具有64kB可編程FLASH和4 532字節SRAM,是完整的混合信號SoC芯片,70%的指令執行時間為1~2個時鐘周期,片上外設充足,具有豐富的IO資源,其性能能夠滿足設計需求。由于投放控制前端的主控芯片只負責電機動作機構的控制和通信任務,因此選用資源相對簡單的C8051F021芯片,以節省研制成本。
2.2.1 供電單元后端 由于前端和中端均安裝在甲板船舷處,為保證系統工作時設備及人員的安全,使用直流電源為甲板設備供電,該設計方案能夠有效地避免甲板操作人員因意外或設備短路導致的觸電風險。前端和中端的工作電壓為12 V,考慮到長距離供電傳輸時直流電壓在線纜上的損耗,將后端的輸出電壓設定為24 V。在供電單元后端內,使用兩臺交流220 V轉直流24 V的開關電源,為控制電路和直流電機分別供電。
2.2.2 硬件電路電源模塊 投放控制前端、通信控制與數據采集中端使用的電源芯片根據其電路上其他元器件的工作電壓范圍確定。在設計時,以上兩個單元使用相同的電壓變換結構:首先將來自供電單元后端的24 V電壓通過芯片LM1085IS-12降低至12 V,然后使用LM2575S-5.0芯片將電壓降至5 V,再使用LM2937ES-3.3芯片將電壓降低至3.3 V,供單片機及其他數字器件使用。對于電機驅動芯片,使用獨立的12 V電壓為其供電,避免電機啟動停止時產生的干擾對其他數字器件的邏輯電平產生影響。
通信控制與數據采集中端能夠和多組前端進行通信,由于前端和中端均安裝在夾板船舷處且間距較近,因此采用RS232全雙工通信方式。單片機的UART串口資源有限,為使系統具備同時連接多組前端的能力,需要對串口數量進行擴展。選用EXAR公司的XR16L784串口擴展專用芯片,合理搭建外圍電路并編寫配置程序,實現多路串口擴展功能[7]。
每片XR16L784芯片可擴展4個UART串口,該設計使系統能同時連接8組前端。在程序配置時使用單片機的EMIF功能[8]使其工作在非復用模式下,其中P5和P6口分別與兩片XR16L784芯片的地址總線連接,P7口及讀寫控制線(WR、RD)與兩片芯片的數據線和控制引腳同時連接。由于在同一時刻只有一組前端處于工作狀態,因此通過合理配置,該數據總線連接方式不會產生沖突。基于C8051F020單片機豐富的IO資源,設計時沒有采用鎖存器芯片和單片機端口復用的模式,減少額外元器件的引入以提高系統可靠性。串口擴展電路原理圖如圖2所示。

圖2 通信接口模塊原理圖
投放控制前端的6枚探頭安裝槽外形尺寸一致,但由于XBT和XCTD測量機理不同,導致兩者在長度、重量上有所差異。在實際使用時,兩種探頭均裝入投放筒中進行投放,由于其直徑相同但長度不同,在投放前端結構設計時將投放筒尾部連接觸點鎖緊裝置設計為可前后滑動的形式,當兩種不同類型的探頭筒裝入安裝槽后其前端由擋板固定,后端通過調整鎖緊裝置至適當位置進行固定,該設計可保證投放前端對兩種不同類型探頭的兼容。
每枚探頭的投放是由直流電機帶動探頭前端的擋板運動來實現。選用TI公司的DRV8823[9]作為驅動芯片,其供電電壓為12 V,具有SPI通信接口,控制信號為標準TTL電平,芯片內部具有4個H橋驅動電路,最大驅動電流為1.5 A。在每組前端內部使用兩片DRV8823芯片,實現對前端6臺探頭釋放電機的控制。
為便于每個投放單元的調試,設計了電機手動控制驅動電路接口,將電機供電接插件連接該接口后可通過手動按鍵的方式對電機獨立控制。使用TI公司的DRV8870芯片作為電機驅動備用芯片,該芯片具有1個H橋驅動電路,通過控制芯片兩個輸入引腳的電平實現電機的正轉和反轉。該功能在對投放單元進行現場調試和故障排除時具有重要的實用價值。
由于每次投放時只有一個投放單元處于工作狀態,為節省系統線路開銷,采用總線的形式進行測量數據傳輸。每組投放控制前端具有總線輸入輸出接口,當系統接入多組前端時,它們之間采用串連的方式連接,前端的總線輸入與通信控制與數據采集中端相連,由中端內部的探頭數據采集模塊完成對海洋剖面數據的采集和處理。
在設計時,使用繼電器實現每個探頭投放單元測量點接入總線的功能,當投放單元不工作時,繼電器觸點處于與總線斷開的常閉狀態,當需要投放該單元的探頭時,通過單片機控制信號實現繼電器開關與常開觸點的連接,從而使該單元連入測量總線。由于探頭測量數據線有兩路,因此采用雙刀雙路繼電器,其工作電壓為12 V,為保證繼電器在工作時能夠穩定持續地處于吸合狀態,應提供充足的供電電流。使用ULN2803集成芯片[10-11],它由8路NPN型達林頓管組成,可作為單片機輸出的TTL電平與需要較高工作電壓和電流的繼電器之間的接口。該芯片的達林頓管輸出為集電極開路,當基極為高電平時,達林頓管導通,繼電器工作。設計中選用的12 V繼電器的額定功率為400 mW,額定電流約為33 mA,經查閱芯片數據手冊可知,在該電流下達林頓管的發射極和集電極間的飽和電壓約為0.6 V,繼電器可在該條件下處于穩定的吸合狀態。繼電器內部通過線圈的通斷電實現開關功能,通斷電的瞬間在達林頓管的集電極輸出端會形成較高的反向電動勢[12],ULN2803芯片在該輸出端內置了二極管,實現了對集電極輸出端的保護。該芯片的性能特點能夠滿足設計需求。測量數據總線接口原理圖如圖3所示。

圖3 測量數據總線接口模塊原理圖
系統在使用前,需要將探頭裝填至投放單元中,由于投放控制前端安裝在船體的側舷或尾舷處,操作人員在安裝完畢后需要及時對探頭能否接入系統進行檢驗,以確保安裝成功。因此,在前端上安裝4個功能開關并設計相應接口電路,分別實現探頭通道切換、直流電機擋板正轉、反轉和當前通道自檢4項功能。開關接口電路設計時,在單片機IO口和開關之間加入光電轉換器件實現隔離,對單片機起到保護作用。
探頭入水后開始水下參數測量并將數據實時傳輸,在其工作過程中,一旦通信控制與數據采集中端和控制室上位機間出現通訊異常,將會導致測量數據的缺失,影響后續剖面數據處理,對海洋調查研究產生較大影響。針對該問題,在中端設計時使用了RAMTRON公司的FM25V10數據存儲芯片,它可以存儲128 kB數據,具有標準的SPI接口,工作溫度為-40~85 ℃,通過高可靠性的鐵電處理技術實現數據存儲,存儲期限長達10年。探頭原始數據經過處理后,每幀數據包含編號、水溫、電導率3個參數共6個字節,進行水下1 000 m剖面測量時最多需要7 500幀數據,總數據量為44 kB,小于芯片的存儲容量,因此該芯片能夠滿足設計和使用要求。
當中端內部的探頭數據采集模塊完成測量數據處理后,通過SPI接口將數據存入存儲芯片,然后再將其送入串口轉網絡的通信模塊發送至上位機。基于該項設計,探頭測量過程中即使出現因干擾、人為等因素導致的中端與上位機間通訊異常,測量數據也能完整地保存在存儲芯片中,待通訊恢復后再從存儲芯片中提取相應數據,保證了系統的可靠性。
系統在軟件設計時采用了模塊化的編程思想,基于Keil uVision4作為編程開發環境,編程語言使用C語言[13-14],在MCU寄存器初始化及需要高效率運行的代碼部分使用匯編語言。
前端的單片機程序執行后,首先對UART、時鐘、IO等相應寄存器進行初始化,采用中斷方式[15-16]的串口通信模式以提高效率。
投放控制前端寄存器初始化完畢后,通過位置傳感器確認直流電機是否處于原點位置,若不在則自動完成位置歸零。然后系統進行狀態判斷,若為探頭裝填或自檢狀態,則在操作人員完成每枚探頭的裝填后,通過點擊自檢按鈕,上位機會對該枚探頭是否連接成功進行檢測。當6枚探頭均裝填完畢后,程序則進入自動投放模式以等待投放指令。當收到來自通信控制與數據采集中端的控制指令后,前端通過控制每枚探頭前方擋板的打開與閉合,以及相應測量點與總線的連接,實現探頭的依次投放和測量數據傳輸。當所有探頭均完成投放后,即可裝入新探頭準備下一輪次投放,程序流程圖如圖4所示。

圖4 投放控制前端軟件流程圖
通信控制與數據采集中端用于接收來自上位機的控制指令,并按指令所含內容發送給對應前端,在上位機與多組前端之間起數據分配、處理和轉發的作用。中端開機后,接收來自上位機的前端在位檢測指令,檢測當前連入中端的前端數量。隨后判斷當前是否為探頭裝填和自檢模式,如果處于該模式則根據前端的接口按鍵操作依次完成裝填探頭的自檢,并將自檢結果報送至上位機。當收到來自上位機的自動投放指令時,中端首先對該指令進行解析,然后按照其內部包含的編號發送至相應前端,實現前端中各個投放單元與上位機的精準對接,其軟件設計流程如圖5所示。

圖5 通信控制與數據采集中端軟件流程圖
上位機程序主要包含自動投放控制、參數設置、測量數據接收、計算解析和剖面測量數據曲線繪制等功能模塊,使用Python語言編程設計。由于XBT和XCTD測量機理不同,對探頭類型的區分在中端內部的數據采集單元中完成,上位機通過識別探頭類型代碼自動完成XBT和XCTD顯示界面的切換,該設計可使探頭安裝時無需針對探頭類型和安裝次序進行區分,提高了使用時的靈活性。軟件主要功能模塊如圖6所示。

圖6 上位機功能模塊結構圖
投放控制前端、通信控制與數據采集中端與上位機間采用問詢、應答的通信方式,問詢由上位機發起,中端收到后提取前端編號,通過通信接口模塊將指令發送給相應前端,前端收到控制指令后將相應動作的命令標志位賦值,通過在主函數中查詢標志位執行對應的電機動作,完成后清除該標志位,并通過中端向上位機回復應答指令。其數據通信格式為:
上位機:$XX,AA,BB*KK
通信控制與數據采集中端:$XX,AA,BB*KK
投放控制前端:$XX,AA,BB,CC*KK
其中,XX表示投放控制前端編號(范圍:1~8),AA表示投放單元編號(范圍:1~6),BB表示控制字標號,CC表示投放控制前端應答及執行情況,KK表示累加和校驗。例如,需要第3組投放控制前端的第5個投放單元進行投放,則上位機發出指令$03,05,01*39 ,中端接收該指令后向第3組前端轉發該指令,相應前端通過串口收到該命令后進行命令分類,主函數中檢測到該命令對應的標志位后將控制直流電機執行相應動作,完成后則返回$03,05,01,00*39 。
系統在海上使用過程中,由于每枚探頭的投放均依賴于系統通信鏈路的穩定性及動作機構執行的可靠性,若某個電機動作異常將直接導致投放失敗,因此對系統的功能、性能驗證具有重要意義。系統試驗分別從供電、自檢、投放與數據采集、數據存儲、探頭類型切換和多組前端接入測試等方面展開,檢驗系統的功能和可靠性。
由于系統的前端與中端安裝在船體側舷或尾舷處,供電單元后端安裝在控制室內,為保證供電線纜順利走線至甲板單元處,將其長度設定為100 m。供電線纜的電阻為6 Ω/km,前端與中端工作時的峰值電流為2 A,因此供電纜傳輸直流電的壓降為2.4 V。前端與中端正常工作的最小輸入電壓為12 V,供電單元后端輸出的24 V直流電滿足使用要求。
向投放控制前端內分別裝入XBT和XCTD,分別調節連接觸點鎖緊裝置,保證系統與探頭的可靠連接。使用探頭通道切換和當前通道自檢兩個按鍵,分別對每個通道的探頭進行自檢。自檢結果顯示所有通道均連接正常,具備投放條件。
通過上位機軟件,選擇待投放的通道編號,點擊“單枚自動投放”按鈕,前端在指令控制下完成擋板的開啟,探頭順利落入水中,測量數據實時傳輸至數據采集中端,經解算后傳輸至上位機,完成曲線繪制。
為驗證數據存儲功能,再次投放一枚探頭,但在發送“單枚自動投放”命令后,人為將連接上位機與中端的網線斷開,待探頭測量完畢后重現連接。點擊上位機軟件界面上的“數據重傳”按鈕,測量數據能夠從中端的數據存儲芯片中提取至上位機,滿足設計需求。
為驗證XBT和XCTD的自動切換功能,在前端的各投放單元分別裝入兩種類型的探頭。測試結果發現,當待投放XBT或XCTD兩者間發生類型轉換時,上位機顯示界面無法自動更新。
經分析可知,系統中端每次接收來自上位機的指令后完成相應動作,隨后將進入待機狀態至下一條命令的到來。上位機通過接收來自中端的查詢返回指令更新探頭類型狀態。在中端程序設計時,UART 采用串口中斷的方式發送字符數組。每個待寫入的字節存入單片機發送緩沖寄存器SBUF后,程序將返回主函數繼續執行下一條指令,當SBUF中的字節最后一個比特位發送完成后,單片機將SCON寄存器的TI位置1,使程序再次進入中斷發送程序。當波特率設置為9 600 bps時,發送一個字節所占用的時間為1.145 ms,而單片機執行一次中斷發送函數的時間為微秒級,因此當一幀字符還沒發送完成時,程序便直接執行主函數中的下一條語句,當該語句為使單片機進入停止模式的語句時,便會導致發送緩存中的數據無法繼續送入SBUF,從而導致上位機無法接收完整的查詢返回指令。為保證數據幀的完整發送,應在發送子函數的后面加入延時語句,或者將單片機功耗管理模式設定為空閑模式。經程序優化,上位機能夠對每枚探頭在投放前完成顯示界面自動更新。
在接入單組前端測試通過后,對系統進行同時接入8組前端的處理能力測試。在試驗中發現,某些前端存在對上位機的控制指令不響應的情況。經對故障現象分析定位可知,通信控制與數據采集中端的通信接口模塊對應程序部分需要調整:由于程序在執行期間不間斷的掃描并識別來自上位機控制指令的幀頭字節,根據不同的關鍵字進行識別,當中端串口接收緩存只接收完幀頭字節后,程序便進入識別狀態,而控制指令中的控制字此時還沒有完整傳輸至串口緩存中,因此程序會因未識別到具體的控制字而不與前端進行通信,導致前端與中端連接異常。將原程序修改為,當串口收到控制指令幀的第一個字節后便開始計時,計時到10 ms后才允許讀接收緩存中的內容,這種方式從時間上保證了控制指令接收的完整性。經調整后的系統,能夠實現中端同時對8組前端穩定的通信與控制。
通過從上述方面進行試驗驗證及對異常情況的處理,系統能夠實現對多組投放控制前端的可靠控制和測量數據接收處理。在投放裝置的海上試驗測試中系統工作正常,能夠有效完成多枚XBT/XCTD探頭的自動連續投放,保證系統正常運行。
本文提出了多枚 XBT/XCTD 自動投放與測量控制系統的設計思想并給出了詳細的硬件和軟件實現方案,通過對系統各項功能的測試驗證了系統硬件設計的可靠性,同時也查找出了控制系統在對上位機的命令進行響應時出現的故障,通過軟件層面的機理分析進行了故障定位,對程序完善優化后解決了故障問題。實驗室和海上試驗的測試結果表明:供電單元后端能夠為系統進行穩定的供電輸出,通信控制與數據采集中端能夠同時連接8組投放控制前端,通過對直流電機和測量數據接入總線的控制實現多枚探頭的依次自動投放,上位機軟件能夠自動識別XBT和XCTD探頭類型,完成對海水溫度和電導率剖面測量數據的解算和曲線繪制。系統具有投放效率與自動化程度高、工作穩定等特點。
本文提出了多枚XBT/XCTD自動投放與測量控制系統,通過投放控制前端數量可擴展的設計思路,實現了系統具備一次性裝載大量探頭的能力,彌補了現有設備中裝載探頭數量不足的缺陷。系統能夠兼容XBT和XCTD兩種不同類型的探頭,投放前對探頭類型自動識別,在不同海況條件下實現密集化、網格化的海洋水文自動剖面觀測,具有重要的應用價值。