《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > XBT自動(dòng)投放測(cè)量系統(tǒng)電機(jī)控制單元設(shè)計(jì)與故障分析
XBT自動(dòng)投放測(cè)量系統(tǒng)電機(jī)控制單元設(shè)計(jì)與故障分析
2019年電子技術(shù)應(yīng)用第1期
王心鵬,,門(mén)雅彬,張東亮,,董 濤,,孔佑迪
國(guó)家海洋技術(shù)中心,天津300112
摘要: XBT自動(dòng)投放測(cè)量系統(tǒng)能夠在惡劣海況下完成探頭的自動(dòng)投放,,電機(jī)控制單元是系統(tǒng)投放機(jī)構(gòu)的控制核心,。該單元由主控芯片、電源管理,、通信及電機(jī)控制接口等部分組成,,可實(shí)現(xiàn)對(duì)投放系統(tǒng)中步進(jìn)電機(jī),、伺服電機(jī)和直流電機(jī)運(yùn)動(dòng)狀態(tài)的實(shí)時(shí)控制。在提出了軟硬件設(shè)計(jì)實(shí)現(xiàn)方案后,,對(duì)電機(jī)控制單元在測(cè)試中發(fā)現(xiàn)的各種故障進(jìn)行了機(jī)理分析,,改進(jìn)后的試驗(yàn)結(jié)果表明:電機(jī)控制單元能夠?qū)崟r(shí)響應(yīng)上位機(jī)的控制命令,保證各電機(jī)運(yùn)動(dòng)狀態(tài)穩(wěn)定,,使自動(dòng)投放系統(tǒng)具有實(shí)用性好,、投放效率高與自動(dòng)化程度高的特點(diǎn)。
中圖分類(lèi)號(hào): TP27
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.181686
中文引用格式: 王心鵬,,門(mén)雅彬,張東亮,,等. XBT自動(dòng)投放測(cè)量系統(tǒng)電機(jī)控制單元設(shè)計(jì)與故障分析[J].電子技術(shù)應(yīng)用,,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ù)的獲取對(duì)水下聲波傳播速度和路徑變化研究具有重要意義,,能夠?yàn)楹Q罂茖W(xué)研究和軍事應(yīng)用提供重要幫助,。投棄式溫度剖面測(cè)量?jī)x(Expendable bathythermograph,XBT)是一種是能夠測(cè)量和感應(yīng)海水溫度剖面的投棄式設(shè)備,,是調(diào)查海洋溫度剖面時(shí)重要的測(cè)量手段[1-2],。

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

1 電機(jī)控制單元總體設(shè)計(jì)

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

qrs2-t1.gif

2 硬件設(shè)計(jì)

2.1 主控芯片選型

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

2.2 電源管理模塊

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

2.3 通信接口模塊

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

2.4 電機(jī)驅(qū)動(dòng)接口

2.4.1 伺服電機(jī)驅(qū)動(dòng)器接口

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

2.4.2 步進(jìn)電機(jī)驅(qū)動(dòng)器接口

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

2.4.3 直流電機(jī)驅(qū)動(dòng)接口

    對(duì)XBT探頭數(shù)據(jù)的獲取通過(guò)測(cè)量裝置來(lái)完成,,該裝置通過(guò)直流電機(jī)實(shí)現(xiàn)與探頭的連接和斷開(kāi)。選用ST公司的L298P芯片[7]作為驅(qū)動(dòng)芯片,,該芯片供電電壓為5 V,,引腳Vs為待驅(qū)動(dòng)設(shè)備工作電壓,根據(jù)選用的直流電機(jī)工作參數(shù)將其設(shè)定為24 V,??刂菩盘?hào)為標(biāo)準(zhǔn)TTL電平,芯片最大驅(qū)動(dòng)電流為2 A,。使用單片機(jī)兩個(gè)IO口輸出控制信號(hào),,同時(shí)使用或邏輯門(mén)的輸出作為L(zhǎng)298P使能信號(hào),,當(dāng)控制信號(hào)1為高電平、控制信號(hào)2為低電平時(shí),,芯片驅(qū)動(dòng)直流電機(jī)正轉(zhuǎn),。反之,則直流電機(jī)反轉(zhuǎn),。其原理圖見(jiàn)圖2,。

qrs2-t2.gif

3 軟件設(shè)計(jì)

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

qrs2-t3.gif

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

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

qrs2-t4.gif

    命令交互時(shí)采用的通信格式為:

    上位機(jī):$XX,AA*KK\r\n

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

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

4 電機(jī)控制單元測(cè)試結(jié)果及故障分析

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

4.1 功能性測(cè)試

    為測(cè)試電機(jī)控制單元的功能,,將其與工控計(jì)算機(jī)通過(guò)RS232方式相連,同時(shí)將電機(jī)控制單元與伺服驅(qū)動(dòng)器的串口發(fā)送引腳與地線分別引出并連接到工控計(jì)算機(jī)的兩個(gè)串口上,,實(shí)時(shí)監(jiān)測(cè)兩者間通信狀態(tài),。控制單元在自動(dòng)投放模式下會(huì)按照設(shè)定的步驟依次完成投放12枚探頭的動(dòng)作,。

4.1.1 伺服電機(jī)故障及分析

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

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

4.1.2 步進(jìn)電機(jī)故障及分析

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

4.1.3 直流電機(jī)故障及分析

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

4.2 拷機(jī)測(cè)試

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

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

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

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

4.3 批量測(cè)試

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

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

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

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

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

5 結(jié)論

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

參考文獻(xiàn)

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

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

[3] 中達(dá)電通股份有限公司.臺(tái)達(dá)高機(jī)能通訊型伺服驅(qū)動(dòng)器ASDA-A2系列應(yīng)用技術(shù)手冊(cè)[Z].2014.

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

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

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

[7] 孟英紅,齊婉玉,,段學(xué)鋒.用L297,,L298組成步進(jìn)電機(jī)驅(qū)動(dòng)電路[J].儀器儀表學(xué)報(bào),,2003,24(2):573-574.

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

[9] 李茂軍,,劉鼎邦,張春光,,等.步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)電磁轉(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.



作者信息:

王心鵬,,門(mén)雅彬,,張東亮,董  濤,,孔佑迪

(國(guó)家海洋技術(shù)中心,,天津300112)

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