《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > XBT自動投放測量系統(tǒng)電機控制單元設計與故障分析
XBT自動投放測量系統(tǒng)電機控制單元設計與故障分析
2019年電子技術應用第1期
王心鵬,門雅彬,張東亮,董 濤,孔佑迪
國家海洋技術中心,天津300112
摘要: XBT自動投放測量系統(tǒng)能夠在惡劣海況下完成探頭的自動投放,電機控制單元是系統(tǒng)投放機構的控制核心。該單元由主控芯片、電源管理、通信及電機控制接口等部分組成,可實現(xiàn)對投放系統(tǒng)中步進電機、伺服電機和直流電機運動狀態(tài)的實時控制。在提出了軟硬件設計實現(xiàn)方案后,對電機控制單元在測試中發(fā)現(xiàn)的各種故障進行了機理分析,改進后的試驗結果表明:電機控制單元能夠?qū)崟r響應上位機的控制命令,保證各電機運動狀態(tài)穩(wěn)定,使自動投放系統(tǒng)具有實用性好、投放效率高與自動化程度高的特點。
中圖分類號: TP27
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.181686
中文引用格式: 王心鵬,門雅彬,張東亮,等. XBT自動投放測量系統(tǒng)電機控制單元設計與故障分析[J].電子技術應用,2019,45(1):92-96.
英文引用格式: Wang Xinpeng,Men Yabin,Zhang Dongliang,et al. Design and fault analysis of motor control unit in XBT automatic launch and measurement system[J]. Application of Electronic Technique,2019,45(1):92-96.
Design and fault analysis of motor control unit in XBT automatic launch and measurement system
Wang Xinpeng,Men Yabin,Zhang Dongliang,Dong Tao,Kong Youdi
National Ocean Technology Center,Tianjin 300112,China
Abstract: The XBT automatic launch and measurement system can automatically launch probes in severe sea conditions, and the motor control unit is the control core of the launch mechanism. The unit consists of a power management module, communication and motor control interface module, main control chip and etc, the stepping motor, servo motor and DC motor in the launch system can be controlled in real time. After putting forward the design scheme of hardware and software, the various faults found in the test for motor control unit are analyzed from mechanism. The test result after improved shows that the motor control unit can respond to the control commands of the host computer in real time, ensuring the stable motion of each motor, and the automatic launch and measurement system has the characteristics of good practicability, high efficiency and automation.
Key words : real time motor control;XBT automatic launch;program compilation mode;microchip serial communication

0 引言

    海水溫度剖面數(shù)據(jù)是重要的海洋環(huán)境要素之一,該數(shù)據(jù)的獲取對水下聲波傳播速度和路徑變化研究具有重要意義,能夠為海洋科學研究和軍事應用提供重要幫助。投棄式溫度剖面測量儀(Expendable bathythermograph,XBT)是一種是能夠測量和感應海水溫度剖面的投棄式設備,是調(diào)查海洋溫度剖面時重要的測量手段[1-2]。

    XBT自動投放測量系統(tǒng)可實現(xiàn)12枚探頭自動投放,完成對海水溫度剖面數(shù)據(jù)的快速獲取。它能夠在惡劣海況下完成投放測量任務,具有投放效率與自動化程度高、操作簡便等特點,彌補了傳統(tǒng)人工投放的不足之處。系統(tǒng)的投放過程主要靠步進電機、直流電機和伺服電機等多種裝置的組合運動完成,電機控制單元是系統(tǒng)電子控制的核心,在自動投放過程中發(fā)揮了重要的作用。

1 電機控制單元總體設計

    電機控制單元主要由主控芯片、電源模塊、串口擴展芯片、伺服、步進、直流電機驅(qū)動器接口電路等部分組成,其硬件原理框圖如圖1所示。系統(tǒng)投放過程包含以下運動模式:投放桶旋轉(zhuǎn)、釋放裝置運動、數(shù)據(jù)采集裝置運動,通過對上述運動模式的合理設計完成探頭投放與測量數(shù)據(jù)采集。

qrs2-t1.gif

2 硬件設計

2.1 主控芯片選型

    考慮到開發(fā)難度及研發(fā)周期,對比選型后選用Silicon Laboratories公司的C8051F020微控制器作為主控芯片。它是完整的混合信號片上系統(tǒng)SoC芯片,具有64 KB可在系統(tǒng)編程Flash和4 532 B SRAM,70%的指令執(zhí)行時間為1-2個時鐘周期,具有22個中斷源等特點,以上性能滿足電機控制單元的設計需求。

2.2 電源管理模塊

    控制單元的電源輸入為12 V和24 V,選用National Semiconductor公司生產(chǎn)的LM2575和LM2937電源芯片,分別產(chǎn)生5 V和3.3 V電壓。前者用于步進電機控制信號及直流電機驅(qū)動芯片供電,后者用于主控芯片及數(shù)字器件供電,24 V電源用于步進電機驅(qū)動器及伺服驅(qū)動器剎車裝置供電。

2.3 通信接口模塊

    為實現(xiàn)對系統(tǒng)中各類電機的控制,電機控制單元需要與伺服驅(qū)動器[3]、上位機及手動控制終端進行數(shù)據(jù)通信,其通信接口均使用RS232方式。由于單片機只有兩個UART串口,需要對其數(shù)量進行擴展。常用的擴展方法可通過軟件設計實現(xiàn)[4],也可由硬件芯片[5]完成。由于軟件虛擬串口的方法具有可靠性和穩(wěn)定性方面的不足,因此采用專用硬件芯片的方式。選用EXAR公司生產(chǎn)的XR16L784專用串口擴展芯片,通過合理搭建外圍電路并編寫配置程序,實現(xiàn)多路串口擴展功能。

2.4 電機驅(qū)動接口

2.4.1 伺服電機驅(qū)動器接口

    接口電路主要由RS232電平轉(zhuǎn)換和投放筒位置反饋輸入兩部分組成。電機控制單元與伺服驅(qū)動器的通信方式為RS232通信,波特率為9 600 b/s。選用MAXIM公司生產(chǎn)的MAX3232芯片完成單片機TTL電平與RS232電平轉(zhuǎn)換。伺服驅(qū)動器采用Modbus通信[6]協(xié)議,使用RTU模式進行數(shù)據(jù)傳輸。通信格式中每幀數(shù)據(jù)包含1個起始位,8個數(shù)據(jù)位,2個停止位。為與該格式匹配,將單片機UART0串口設置為模式2,每幀數(shù)據(jù)包含11 bit,其第9數(shù)據(jù)位可通過編程進行設定,設計時將其設定為與停止位相同的數(shù)值。每開始一輪投放任務前,投放桶都需要進行位置歸零,以保證投放點位置的精確性。使用光電開關作為檢測傳感器,通過檢測安裝在投放桶固定位置處的遮光板實現(xiàn)歸零操作。

2.4.2 步進電機驅(qū)動器接口

    步進電機驅(qū)動器具有多種細分模式,根據(jù)系統(tǒng)需求將其設定為3 200。驅(qū)動器的控制信號包括電機使能、旋轉(zhuǎn)方向及步數(shù),其中旋轉(zhuǎn)步數(shù)由輸入脈沖個數(shù)決定,使用單片機可編程計數(shù)器陣列(PCA)功能實現(xiàn)脈沖的精確輸出。單片機的控制信號經(jīng)光電隔離器件與步進電機驅(qū)動器相連。為滿足系統(tǒng)對步進電機數(shù)量的擴展需求,在硬件實現(xiàn)時采用了2個步進電機驅(qū)動器接口的設計方案。

2.4.3 直流電機驅(qū)動接口

    對XBT探頭數(shù)據(jù)的獲取通過測量裝置來完成,該裝置通過直流電機實現(xiàn)與探頭的連接和斷開。選用ST公司的L298P芯片[7]作為驅(qū)動芯片,該芯片供電電壓為5 V,引腳Vs為待驅(qū)動設備工作電壓,根據(jù)選用的直流電機工作參數(shù)將其設定為24 V??刂菩盘枮闃藴蔜TL電平,芯片最大驅(qū)動電流為2 A。使用單片機兩個IO口輸出控制信號,同時使用或邏輯門的輸出作為L298P使能信號,當控制信號1為高電平、控制信號2為低電平時,芯片驅(qū)動直流電機正轉(zhuǎn)。反之,則直流電機反轉(zhuǎn)。其原理圖見圖2。

qrs2-t2.gif

3 軟件設計

    在程序編寫時采用模塊化編程思想進行設計,選用Keil μVision4作為編程開發(fā)環(huán)境,編程語言以C語言為主,使用少量匯編語言完成MCU寄存器初始化。程序執(zhí)行后首先對時鐘、UART、PCA等相應寄存器進行初始化,串口通信采用中斷方式[8]以提高效率。使用單片機片上外設PCA以一定頻率向步進電機驅(qū)動器發(fā)送脈沖,由于步進電機行程固定,因此采用定時器控制其運動時間。軟件流程圖見圖3。

qrs2-t3.gif

    系統(tǒng)初始化完畢后,通過位置傳感器確認各電機是否處于原點,若不在則自動完成位置歸零。在確認伺服驅(qū)動器工作狀態(tài)正常后進入自動投放模式,過程如下:伺服電機帶動投放桶旋轉(zhuǎn)30°,直流電機前進至與探頭相連,步進電機通過往復運動完成XBT釋放過程,探頭落入海水后對溫度剖面數(shù)據(jù)進行測量,待數(shù)據(jù)采集完成后直流電機后退至原點,完成一次投放過程。當12枚探頭均投放成功后,即可裝入新探頭以備下一輪次投放。為在電機出現(xiàn)異常時能對其人工調(diào)整,在程序設計時加入了手動控制模式,該功能不對用戶開放,僅在調(diào)試時使用。

    電機控制單元與上位機的通信采用問詢、應答方式,問詢由上位機發(fā)起,控制單元收到后將相應動作的命令和子函數(shù)標志位賦相應值,通過在主函數(shù)中查詢標志位執(zhí)行對應電機動作,執(zhí)行完成后清除標志位,當查詢到子函數(shù)標志位清零后向上位機回復。其命令交互流程見圖4。

qrs2-t4.gif

    命令交互時采用的通信格式為:

    上位機:$XX,AA*KK\r\n

    電機控制單元:$XX,AA,BB*KK\r\n

    其中,XX表示命令種類,AA表示控制字標號,BB表示電機控制單元執(zhí)行結果,KK表示累加和校驗。例如,需要投放筒逆時針旋轉(zhuǎn)30°,則上位機發(fā)出指令$05,02*F3\r\n,電機控制單元通過串口收到該命令后,對命令進行分類,主函數(shù)中檢測到該命令對應的標志位后將控制電機執(zhí)行相應動作,完成后則返回$05,02,00*7F\r\n。

4 電機控制單元測試結果及故障分析

    在海上投放過程中,由于每枚XBT探頭的投放是由以上三種電機按照一定邏輯順序運動完成的,如果某個電機動作出現(xiàn)異常將直接導致投放失敗,因此對電機控制單元的功能、性能從多種角度進行測試十分必要。為保證其工作的可靠性,分別從功能、拷機和批量測試三方面進行測試。其中,前兩項試驗是對單一電路板的測試,批量測試則是對隨機抽取的10塊電路板進行驗證。

4.1 功能性測試

    為測試電機控制單元的功能,將其與工控計算機通過RS232方式相連,同時將電機控制單元與伺服驅(qū)動器的串口發(fā)送引腳與地線分別引出并連接到工控計算機的兩個串口上,實時監(jiān)測兩者間通信狀態(tài)??刂茊卧谧詣油斗拍J较聲凑赵O定的步驟依次完成投放12枚探頭的動作。

4.1.1 伺服電機故障及分析

    在監(jiān)測電機控制單元與伺服驅(qū)動器間通信數(shù)據(jù)時,發(fā)現(xiàn)伺服驅(qū)動器存在數(shù)據(jù)丟幀、出錯、寄存器值未更新等情況,直接導致投放桶不轉(zhuǎn)動或轉(zhuǎn)動次數(shù)少于設定值。其原因可能是驅(qū)動器內(nèi)DSP對串行數(shù)據(jù)的處理響應速度及可靠性不足、外部電磁干擾等,這些異常情況會導致伺服電機無法對電機控制單元的指令及時做出響應。

    為保證系統(tǒng)工作穩(wěn)定可靠,單片機在每次發(fā)送控制指令后再發(fā)送一條讀取指令,檢查伺服驅(qū)動器內(nèi)相關寄存器中的數(shù)據(jù)是否被成功寫入,若未成功更新則重新發(fā)送控制指令。同時,建立誤碼識別機制并記錄誤碼出現(xiàn)次數(shù),當累計次數(shù)超過設定閾值時啟動報警,人為排查故障。

4.1.2 步進電機故障及分析

    在測試過程中,步進電機出現(xiàn)了行程不到位的情況,導致投放裝置無法成功取下探頭銷,其原因是外部脈沖頻率設置過高導致步進驅(qū)動器無法及時響應從而造成失步[9],在設計時將PCA產(chǎn)生的脈沖頻率降低至2.4 kHz,該頻率下步進電機無失步現(xiàn)象,運動行程穩(wěn)定。

4.1.3 直流電機故障及分析

    在測試直流電機工作時使用外部穩(wěn)壓源提供24 V直流電壓,當電機連續(xù)工作一段時間后發(fā)現(xiàn)其會出現(xiàn)異常停止現(xiàn)象,同時驅(qū)動芯片L298P異常發(fā)熱,穩(wěn)壓源過流保護。經(jīng)分析可知,由于直流電機在啟動和停止瞬間會產(chǎn)生較高的感應電動勢,若該電壓直接作用在OUT1和OUT2引腳將直接導致芯片燒毀。因此,在這兩個引腳上加入截止電壓為24 V的雙向TVS管,將直流電機啟停時產(chǎn)生的瞬間高電壓以電流形式直接釋放到電路的地平面,保證L298P芯片不會受到電機瞬時較高的感應電動勢影響。

4.2 拷機測試

    為驗證電機控制單元對上位機命令響應的可靠性,使用串口調(diào)試助手周期性發(fā)送控制指令,通過觀察電機運動執(zhí)行情況來判斷其響應結果。測試時間為24個小時,發(fā)送周期為4 s一次。測試中發(fā)現(xiàn),直流電機在工作一段時間后停止運動,無法對外部命令做出響應,但每組試驗中電機停止運動的時間卻不相同。在確認驅(qū)動芯片L298P工作正常后,從程序設計角度對故障進行分析。

    由于控制單元在輸出電機動作的指令后,需保證該動作執(zhí)行期間其他電機無運動,因此在主程序中使用了while循環(huán)方式進行等待。但控制單元需要實時響應來自上位機的串口命令,因此將查詢串口緩存及命令狀態(tài)判斷等語句放在了每10 ms執(zhí)行一次的定時器0中斷函數(shù)中。UART波特率為9 600 b/s,當單片機串口通信數(shù)據(jù)幀格式設置為1位起始位、8位數(shù)據(jù)位、1位停止位時,每幀數(shù)據(jù)傳輸時間為1.04 ms。程序中使用了定時器0和UART0中斷,前者中斷優(yōu)先級高于后者,由于并未對中斷優(yōu)先級(IP)寄存器進行設置,因此當定時器0和UART0中斷同時到來時,單片機優(yōu)先執(zhí)行定時器0中斷服務程序;而當UART0中斷程序執(zhí)行過程中定時器0中斷到來時,不會發(fā)生中斷嵌套。

    電機控制單元的晶振頻率是3.686 4 MHz,在1.04 ms的時間內(nèi)包含3 837個時鐘周期。C8051F系列單片機一條匯編指令的執(zhí)行時間為1~2個時鐘周期,而一條C語言語句對應多條匯編語句。上位機發(fā)送的控制命令包含11個字節(jié),由于原設計中在定時器0中斷函數(shù)中添加了大量查詢串口緩存及狀態(tài)判斷語句,導致要執(zhí)行的語句過多,在某些條件下執(zhí)行時間超過了1.04 ms,造成保存在SBUF0中的串口接收數(shù)據(jù)還沒被讀入單片機內(nèi)存就被下一個數(shù)據(jù)覆蓋,導致控制字丟失。

    將主程序中使用while的程序部分用switch-case結構改寫,使程序不會停在某一位置持續(xù)等待,這樣可以將查詢串口緩存及狀態(tài)判斷的語句寫入主函數(shù)中,使其對外部命令的響應不依賴于定時器。改寫后的定時器中斷函數(shù)中的語句數(shù)量大幅減少,其執(zhí)行時間遠小于1.04 ms,可保證SBUF0中的數(shù)據(jù)均能被及時讀入內(nèi)存。調(diào)整后的電機控制單元在拷機實驗中對上位機命令均及時響應,無數(shù)據(jù)丟失。

4.3 批量測試

    在該項測試中發(fā)現(xiàn)有2塊電機控制單元出現(xiàn)了投放筒旋轉(zhuǎn)次數(shù)明顯多于設定值的情況。在程序設計時,為保證伺服電機能可靠執(zhí)行轉(zhuǎn)動指令,在每次運動前后由上位機分別讀取伺服驅(qū)動器中字長為4字節(jié)的軸位置信息并比較,若其差值小于設定閾值則判定電機未轉(zhuǎn)動,上位機會再次發(fā)送旋轉(zhuǎn)指令。由于旋轉(zhuǎn)30°對應的軸位置數(shù)據(jù)偏移量已知,經(jīng)對返回數(shù)據(jù)核查得知,該故障是因軸位置數(shù)據(jù)出現(xiàn)異常所致。

    在對程序設計核查確認無誤后,將導致該故障的原因定位在程序的編譯模式上。系統(tǒng)開發(fā)使用的Keil μVision4軟件,其變量編譯包括Small、Compact、Large三種模式[10]。在Small模式下,未指明存儲類型的變量,均將分配在單片機的內(nèi)部存儲器上,其存儲空間較小,如果變量數(shù)量超過其范圍將會編譯報錯。由于電機控制單元需要使用變量較多,超過了內(nèi)部存儲器的范圍,軟件編譯不能通過,因此不選擇該模式。在Compact模式下,未強制使用_at_指定地址的變量被分配在分頁尋址的片外內(nèi)存中,每頁大小為256 B,變量的高8位地址由P2口數(shù)據(jù)決定,如果使用的變量總數(shù)超過1頁時,編譯器不會自動更新P2數(shù)據(jù)進行頁切換,也不會編譯報錯;在程序執(zhí)行時,會造成變量的跨頁錯誤,即訪問變量跨頁時,由于未對高8位地址進行切換,仍然訪問以前的頁,造成變量訪問混亂。在Large模式下,未指明存儲類型的變量和XDATA變量都分配到片外數(shù)據(jù)存儲器中,最大可達64 KB,使用指針DPTR間接訪問。

    電機控制單元程序編譯時使用了Compact模式,由于變量數(shù)量多,占用空間超過256 B,造成變量的訪問混亂,所以造成軸位置變量異常。將編譯模式改為Large后對程序重新編譯,將執(zhí)行代碼寫入單片機測試,軸位置數(shù)據(jù)和電機旋轉(zhuǎn)次數(shù)均正常。此外,不修改變量編譯模式,通過修改程序,將部分變量通過_at_指定地址,使開發(fā)工具軟件自動分配的變量限定到256 B之內(nèi),也能解決該問題,同樣印證了軸位置的異常是由在Compact編譯模式下變量數(shù)量超過頁范圍引起的。

    軸位置變量出錯現(xiàn)象只在兩個電機控制單元上出現(xiàn),而其他單元并未出現(xiàn)。經(jīng)分析其原因如下:每個單片機程序的執(zhí)行與其時鐘頻率有關,同一函數(shù)的調(diào)用執(zhí)行時刻在不同電機控制單元上有細微差別,導致了函數(shù)的內(nèi)部變量臨時分配的區(qū)域不同,軸位置數(shù)據(jù)異常的控制單元在執(zhí)行該函數(shù)時,內(nèi)部變量跨頁,輸出數(shù)據(jù)異常,而其他單元執(zhí)行該函數(shù)時,內(nèi)部變量不跨頁,輸出數(shù)據(jù)正常,因此導致了相同函數(shù)在同一外部條件下,在不同電機控制單元上出現(xiàn)了不同的結果。為驗證該推斷,在不改變變量編譯模式的情況下,在函數(shù)定義前定義一定字節(jié)的空數(shù)組,該數(shù)組用于占用外部數(shù)據(jù)存儲器空間,調(diào)整該數(shù)組的大小使函數(shù)內(nèi)部變量跨頁,在某些條件下,應該是所有電機控制單元都會出現(xiàn)故障,數(shù)據(jù)異常的位置也應不限定在電機軸位置上。通過逐步修改空數(shù)組的大小,在無故障的單元上也出現(xiàn)了電機異常轉(zhuǎn)動現(xiàn)象,數(shù)據(jù)異常也不僅限于電機軸位置一處問題,該實驗結果與推斷一致。將編譯模式設置為Large模式,不修改源程序,故障消失。該結果也驗證了電機軸位置數(shù)據(jù)異常是由于在Compact模式下變量數(shù)量超過頁范圍引起的。

    通過對以上異常情況的處理,電機控制單元能夠?qū)崿F(xiàn)對上述三類電機的可靠控制。在投放裝置海上試驗測試中系統(tǒng)工作正常,電機控制單元能夠有效控制投放裝置完成多枚XBT探頭的自動連續(xù)投放,保證系統(tǒng)正常運行。

5 結論

    本文提出了XBT自動投放測量系統(tǒng)電機控制單元的設計思想,詳細給出了硬件和軟件實現(xiàn)方案。設計了三種測試方法,查找出了控制單元在對上位機命令實時響應過程中出現(xiàn)的各類故障,通過全面的機理分析進行了故障定位并改進驗證。實驗室和海上試驗的測試結果表明:電機控制單元能夠通過對伺服電機、步進電機、直流電機的運動控制完成多枚XBT自動投放,保證系統(tǒng)順利完成對海水溫度剖面數(shù)據(jù)的可靠獲取。本設計對使用單片機對多種電機進行實時組合控制的方法上具有一定借鑒作用。

參考文獻

[1] 黃興輝,宋海斌,PINHEIR L M等.利用反射地震數(shù)據(jù)和XBT數(shù)據(jù)聯(lián)合反演海水的溫鹽分布[J].地球物理學報,2011,54(5):1293-1300.

[2] 任強,魏傳杰.國產(chǎn)拋棄式溫度剖面儀(XBT)資料質(zhì)量分析[J].海洋技術學報,2016,35(1):102-105.

[3] 中達電通股份有限公司.臺達高機能通訊型伺服驅(qū)動器ASDA-A2系列應用技術手冊[Z].2014.

[4] 鄭志雄,胡愛蘭.LPC1768的全雙工UART的軟件模擬實現(xiàn)[J].單片機與嵌入式系統(tǒng)應用,2013,13(6):25-28.

[5] 李家寶,鄭曉紅,王團部.單片機外中斷擴展及其多優(yōu)先級軟件實現(xiàn)方法[J].現(xiàn)代電子技術,2006(17):140-143.

[6] 孟慶浩,周清清,禹東川.基于GSM/GPRS的海上導航燈器遠程監(jiān)測系統(tǒng)[J].儀器儀表學報,2006(2):195-198.

[7] 孟英紅,齊婉玉,段學鋒.用L297,L298組成步進電機驅(qū)動電路[J].儀器儀表學報,2003,24(2):573-574.

[8] 周術誠,蔣萌輝,寧正元.微機與單片機串行通信中斷方式的實現(xiàn)[J].福州大學學報(自然科學版),2001,29:79-82.

[9] 李茂軍,劉鼎邦,張春光,等.步進電機細分驅(qū)動電磁轉(zhuǎn)矩分析[J].控制工程,2013,30(2):243-245.

[10] Eefocus. Keil Cx51編譯器編譯模式[EB/OL].(2015-09-29)[2016-09-19].http://www.eeworld.com.cn/mcu/2015/0929/article_22621.html.



作者信息:

王心鵬,門雅彬,張東亮,董  濤,孔佑迪

(國家海洋技術中心,天津300112)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。