楊斐文,張 達(dá),楊小聰,崔 昊
(1.北京礦冶研究總院,北京100160;2.金屬礦山智能開采技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100160)
基于Cortex-M4和FreeRTOS的礦用三維激光掃描測量系統(tǒng)設(shè)計(jì)
楊斐文1,2,張 達(dá)1,2,楊小聰1,崔 昊1,2
(1.北京礦冶研究總院,北京100160;2.金屬礦山智能開采技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100160)
為了滿足礦用三維激光掃描系統(tǒng)的需求,設(shè)計(jì)了基于Cortex-M4內(nèi)核和嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS的運(yùn)動控制和數(shù)據(jù)采集系統(tǒng)。采用Cortex-M4為內(nèi)核的STM32F407ZGT微控制器和APM電機(jī)控制器等進(jìn)行相關(guān)的硬件電路設(shè)計(jì),通過移植FreeRTOS內(nèi)核實(shí)現(xiàn)對運(yùn)動控制、激光傳感器數(shù)據(jù)采集、攝像頭視頻傳輸?shù)热蝿?wù)的調(diào)度和對其他硬件資源的管理,簡化了硬件設(shè)計(jì)的復(fù)雜度,優(yōu)化了軟件編程,提高了系統(tǒng)的實(shí)時(shí)性和可靠性,降低了成本。
礦用三維激光掃描測量系統(tǒng);FreeRTOS;Cortex-M4
礦用三維激光掃描系統(tǒng)具有測量精度高、距離遠(yuǎn)、觀測效率高、非接觸等優(yōu)點(diǎn),已經(jīng)成為礦山井下空區(qū)變形安全監(jiān)測、采場爆破前與爆破后形態(tài)探測的重要手段[1]。由于本系統(tǒng)涉及伺服電機(jī)的運(yùn)動控制、激光測距傳感器的數(shù)據(jù)采集、傾角傳感器的數(shù)據(jù)采集、攝像頭的視頻圖像傳輸、設(shè)備與終端之間的通信等多重任務(wù),必須保證各任務(wù)的實(shí)時(shí)性,同時(shí)簡化硬件電路的設(shè)計(jì)方案,降低軟件開發(fā)的難度,保證系統(tǒng)的可靠性和穩(wěn)定性。綜合以上多種因素,最終選用內(nèi)核是Cortex-M4的處理器,同時(shí)移植源碼公開的免費(fèi)的嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS[2]。
礦用三維激光掃描系統(tǒng)通過電機(jī)控制器控制一臺橫向動力電機(jī)和一臺縱向動力電機(jī),帶動激光測距模塊在空間中旋轉(zhuǎn),激光測距模塊返回被測點(diǎn)的距離值,并通過2臺電機(jī)的編碼器獲取的角度值,確定出被測點(diǎn)在空間中的位置。電機(jī)旋轉(zhuǎn)的時(shí)候,激光測距模塊測量不同方位的點(diǎn)的距離值,形成三維空間的點(diǎn)云數(shù)據(jù),進(jìn)而形成被測物體的三維模型。2只傾角傳感器可以確定礦用三維激光掃描系統(tǒng)的初始位置;攝像頭用來輔助測量人員安裝設(shè)備,避免激光頭磕碰到被測物體;以太網(wǎng)實(shí)現(xiàn)本系統(tǒng)與手持終端之間的數(shù)據(jù)通信。該系統(tǒng)的整體方案見圖1。
圖1 礦用三維激光掃描系統(tǒng)整體方案
本系統(tǒng)選擇高性能、低成本的采用Cortex-M4內(nèi)核的STM32F407芯片,主頻168 MHz,帶有2個(gè)CAN接口和1個(gè)攝像頭接口,能夠支持以太網(wǎng),帶4路高速串口,內(nèi)嵌1MB的Flash,硬件資源非常豐富[3]。同時(shí),采用小型化的APM集成運(yùn)動控制器,通過CAN通信的方式,實(shí)現(xiàn)對2臺電機(jī)的控制,降低運(yùn)動控制的復(fù)雜度。
本系統(tǒng)采用的STM32F407ZGT芯片,內(nèi)嵌2個(gè)支持CAN2.0B協(xié)議的CAN控制器,只需在每個(gè)CAN口外接1個(gè)CAN收發(fā)器,即可實(shí)現(xiàn)與電機(jī)控制器APM的CAN通信。同時(shí),由于本系統(tǒng)的各個(gè)CAN設(shè)備之間的通信距離非常短,不需要做CAN隔離,直接將NXP公司的CAN收發(fā)器TJA1050接在STM32F407ZGT的CAN控制器上即可。
本系統(tǒng)選用的激光測距模塊的輸出信號是標(biāo)準(zhǔn)232信號,但STM32F407ZGT的高速串口是TTL信號,需用1片SP3232E將2種不同電平信號進(jìn)行轉(zhuǎn)換。
本系統(tǒng)選用的攝像頭是OV7670模塊,它有八根數(shù)據(jù)線,其接口見圖2。它可以直接與STM32F407ZGT的攝像頭接口DCMI連接[4]。
圖2 OV7670攝像頭接口
本系統(tǒng)采用的傾角傳感器模塊輸出的是標(biāo)準(zhǔn)485信號,只需要使用一片SN65HVD06D高速收發(fā)器,即可實(shí)現(xiàn)傾角傳感器和STM32F407ZGT的高速串口之間的電平轉(zhuǎn)換。同時(shí),2只傾角傳感器并接入485總線,共同使用1個(gè)SN65HVD06D高速收發(fā)器。
主控制器STM32F407ZGT內(nèi)嵌以太網(wǎng)控制器,只需在外部接一片低功耗、高性能的DP83848C芯片作為10M/100M以太網(wǎng)PHY芯片,采用RMII接口與處理器STM32F407連接即可實(shí)現(xiàn)以太網(wǎng)的通信[4]。
FreeRTOS作為開源的輕量級實(shí)時(shí)性操作系統(tǒng),不僅實(shí)現(xiàn)了基本的實(shí)時(shí)調(diào)度、信號量、隊(duì)列和存儲管理,而且在商業(yè)應(yīng)用上不需要授權(quán)費(fèi),它的主要功能包括以下幾點(diǎn):①優(yōu)先級調(diào)度、相同優(yōu)先級任務(wù)的輪轉(zhuǎn)調(diào)度,同時(shí)可設(shè)成可剝奪內(nèi)核或不可剝奪內(nèi)核;②任務(wù)可選擇是否共享堆棧,并且沒有任務(wù)數(shù)限制;③ 消息隊(duì)列,二值信號量,計(jì)數(shù)信號量,遞歸互斥體;④時(shí)間管理;⑤內(nèi)存管理[5]。
FreeRTOS 的 實(shí) 現(xiàn) 主 要 由 list.c、queue.c、croutine.c和tasks.c4 個(gè)文件組成[6]。list.c是一個(gè)鏈表的實(shí)現(xiàn),主要供給內(nèi)核調(diào)度器使用;queue.c是一個(gè)隊(duì)列的實(shí)現(xiàn),支持中斷環(huán)境和信號量控制;croutine.c和task.c是兩種任務(wù)的組織實(shí)現(xiàn)。對于croutine,各任務(wù)共享同一個(gè)堆棧,使RAM 的需求進(jìn)一步縮小,但也正因如此,他的使用受到相對嚴(yán)格的限制。而task則是傳統(tǒng)的實(shí)現(xiàn),各任務(wù)使用各自的堆棧,支持完全的搶占式調(diào)度。
由于FreeRTOS支持ST公司的Cortex-M4芯片平臺,所以STM32F407ZGT移植FreeRTOS時(shí),可以基于ST官方函數(shù)庫,再做少許修改即可。本系統(tǒng)采用官網(wǎng)下載的FreeRTOS7.6版本,主要修改以下3個(gè)文件:①portmacro.h,根據(jù)使用的編譯器Real View MDK 對數(shù)據(jù)類型進(jìn)行定義[7];②FreeRTOSConfig.h,設(shè)置與架構(gòu)相關(guān)的定義,如處理器頻率、心跳次數(shù)、遞歸互斥功能、計(jì)數(shù)器型信號量功能、改變?nèi)蝿?wù)優(yōu)先級、協(xié)程公用堆棧等;③list.c,增加包含 Cortex-M4內(nèi)核文件的頭文件core_cmInstr.h。
圖3是本系統(tǒng)主程序流程圖,主要用來在FreeRTOS的任務(wù)調(diào)度器啟用之完成初始化工作,主要包括以下幾點(diǎn):①芯片各硬件端口的的初始化,包括GPIO、2個(gè)CAN控制器、DCMI攝像頭接口、485端口、以太網(wǎng)控制器、高速 UART等;②在FreeRTOS中創(chuàng)建程序所用到的隊(duì)列;③在FreeRTOS中創(chuàng)建程序所用到的各個(gè)任務(wù);④在FreeRTOS中啟動任務(wù)調(diào)度器。
根據(jù)FreeRTOS的任務(wù)的設(shè)計(jì)原則,在設(shè)計(jì)任務(wù)函數(shù)時(shí)需要將重要性高、實(shí)時(shí)性要求高的任務(wù)設(shè)為高優(yōu)先級,執(zhí)行時(shí)間長的任務(wù)設(shè)置為優(yōu)先級低[8]。同時(shí),任務(wù)之間的通信必須通過隊(duì)列來實(shí)現(xiàn),且同一時(shí)刻只能有1個(gè)任務(wù)訪問硬件資源。
本系統(tǒng)的軟件采用C語言編寫,模塊化設(shè)計(jì)方法使每一個(gè)任務(wù)都獨(dú)立開來,方便后期的程序開發(fā)、調(diào)試、維護(hù)。本系統(tǒng)設(shè)計(jì)的主要任務(wù)包括:①CAN1電機(jī)控制任務(wù),實(shí)現(xiàn)對大電機(jī)的運(yùn)動控制、編碼器數(shù)據(jù)采集;②CAN2電機(jī)控制任務(wù),實(shí)現(xiàn)對小電機(jī)的運(yùn)動控制、編碼器數(shù)據(jù)采集;③UART4控制任務(wù),實(shí)現(xiàn)對激光測距傳感器的數(shù)據(jù)采集;④DCMI控制任務(wù),實(shí)現(xiàn)對攝像頭的控制;⑤485控制任務(wù),實(shí)現(xiàn)對2路傾角傳感器的數(shù)據(jù)采集;⑥以太網(wǎng)通信任務(wù),實(shí)現(xiàn)對攝像頭采集的視頻數(shù)據(jù)的傳輸。
圖3 主函數(shù)程序流程圖
本文設(shè)計(jì)的基于Cortex-M4內(nèi)核和嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS的礦用三維激光掃描系統(tǒng)的掃描頭已完成樣機(jī)的設(shè)計(jì)。它通過8芯線纜與外置電源箱相連,電源箱內(nèi)置WiFi模塊,用戶通過手持PDA給設(shè)備發(fā)送命令,使其開始掃描,掃描完成后通過上位機(jī)對采集的點(diǎn)云數(shù)據(jù)進(jìn)行處理。通過測試過程中不斷修改完善程序,目前該系統(tǒng)已基本實(shí)現(xiàn)全部功能。
本文詳細(xì)介紹了采用Cortex-M4為內(nèi)核的STM32F407ZGT控制器,搭配FreeRTOS嵌入式實(shí)時(shí)操作系統(tǒng)的礦用三維激光掃描系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。利用STM32F407ZGT豐富的硬件資源和ST公司完善的函數(shù)庫,簡化了系統(tǒng)的硬件設(shè)計(jì),且便于提高系統(tǒng)的性能和外設(shè)的擴(kuò)展。同時(shí),在STM32F407ZGT平臺上移植了嵌入式實(shí)時(shí)操作系統(tǒng)FreeRTOS,使系統(tǒng)運(yùn)行更加穩(wěn)定,實(shí)時(shí)性更強(qiáng)。
礦用三維激光掃描測量系統(tǒng)可應(yīng)用于采空區(qū)充填輔助設(shè)計(jì)、采礦量計(jì)量、采礦超挖欠挖分析、輔助應(yīng)急救援、采空區(qū)頂板及巷道安全分析、礦柱回采輔助設(shè)計(jì)等,在礦山行業(yè)具有廣泛應(yīng)用前景[9]。
[1]楊斐文,陸得盛,張達(dá),等.基于礦用三維激光掃描系統(tǒng)的CAN總線傳輸協(xié)議研究[J].有色金屬:礦山部分,2013,65(5):4-6.
[2]BARRY R.Using the FreeRTOS real time kernel[M/OL].[2011-01-08]http://www.FreeRTOS.org/Documenttation.
[3]STM32F4芯片手冊[R/OL].http://www.st.com.
[4]神州王STM32F407FZGT用戶手冊[R/OL].http://www.armjishu.com
[5]宋華魯,閆銀發(fā),張世福,等.基于STM32和FreeRTOS的嵌入式太陽能干燥實(shí)時(shí)監(jiān)測和控制系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(23):105-106.
[6]呂成興,劉軍禮,劉波,等.基于Contex-M3和FreeRTOS的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].中國水運(yùn),2011,11(12):86-87.
[7]孫偉,陳楊,張明偉,等.基于ARM CM3和RTOS的礦用電磁調(diào)速電機(jī)控制器軟件設(shè)計(jì)[J].煤礦機(jī)械,2014,35(9):236-237.
[8]謝鵬程.基于STM32和FreeRTOS的獨(dú)立式運(yùn)動控制器設(shè)計(jì)與研究[D].廣州:華南理工大學(xué),2012.
[9]余樂文,張達(dá),余斌,等.礦用三維激光掃描測量系統(tǒng)的研制[J].金屬礦山,2012(10):106-107.
Design of the 3D laser scanning and measuring system for mining based on Cortex-M4 and FreeRTOS
YANG Fei-wen1,2,ZHANG Da1,2,YANG Xiao-cong1,CUI Hao1,2
(1.Beijing General Research Institute of Mining and Metallurgy,Beijing 100160,China;2.Beijing Metal mine mining Key Laboratory of Intelligent Technology,Beijing 100160,China)
We designed a system of motion controlling and data acquisition based on Cortex-M4 kernel and embedded FreeRTOS,in order to meet the needs of 3D Laser Scanning System for Mining.The related hardware circuits were designed by using STM32F407ZGT micro-controller which consist of Cortex-M4 core and APM motor controllers.It achieved management of hardware resources and schedule of some tasks through transplant FreeRTOS,such as motion control,data acquisition of a laser sensor,video transmission of a camera,etc.This system simplified the complexity of hardware design,optimized software performance,improved reliability of the system and reduced costs.
3D laser scanning and measuring system for mining;FreeRTOS;Cortex-M4
楊斐文(1983-),男,工程師,碩士,檢測技術(shù)與自動化裝置專業(yè),主要從事礦山領(lǐng)域智能化儀器的硬件、軟件的研發(fā)工作。
TD17
A
1004-4051(2014)S2-0316-03
2014-07-20
國家高技術(shù)研究發(fā)展計(jì)劃(863計(jì)劃)項(xiàng)目“地下金屬礦智能采礦爆破技術(shù)與裝備”資助(編號:2011AA060405);國際合作項(xiàng)目“金屬礦深井開采安全智能化監(jiān)控技術(shù)合作研究”資助(編號:2011DFA71990)。