文獻(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.
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ù)采集,。
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,。
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,。
系統(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,。
命令交互時(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)