《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于FreeRTOS的嵌入式云臺控制系統(tǒng)設(shè)計
基于FreeRTOS的嵌入式云臺控制系統(tǒng)設(shè)計
2015年電子技術(shù)應(yīng)用第5期
朱耀麟,樊 佩
西安工程大學(xué) 電子信息學(xué)院,陜西 西安710048
摘要: 由于視頻監(jiān)控技術(shù)的快速發(fā)展,云臺控制系統(tǒng)的實時性定位成了需要解決的問題,因此選用高性能的微處理器和實時操作系統(tǒng)可以提高系統(tǒng)性能,解決實時性和互通性問題。設(shè)計基于FreeRTOS的云臺控制系統(tǒng),STM32作為云臺解碼板的主控器,通過解析云臺控制命令驅(qū)動步進電機的轉(zhuǎn)動,利用FreeRTOS將應(yīng)用程序劃分為多個重要性不同的任務(wù),在各個任務(wù)之間合理地分配CPU時間和系統(tǒng)資源。
中圖分類號: TP273
文獻標(biāo)識碼: A
文章編號: 0258-7998(2015)05-0025-03
Design of embedded PTZ control system based on FreeRTOS
Zhu Yaolin,F(xiàn)an Pei
School of Electronics and Information,Xi′an Polytechnic University,Xi′an 710048,China
Abstract: Due to rapid development of video monitoring technology,the real-time positioning of PTZ control system has become the problem need to be solved,this paper chooses high-performance microprocessors and real-time operating system,which can improve the performance of the system,and solves the problem of real-time and intercommunity. PTZ control system is designed based on FreeRTOS,the STM32 is chosen as the master controller of PTZ decoder board,by parsing PTZ control command drive stepper motor rotation, FreeRTOS applications are divided into a number of different tasks, in order to optimize the allocation of the CPU time and the system resource. The debugging results show that system realizes real-time all-round precise positioning and automatic identification of PELCO-D, PELCO-P and SAMSUNG communications protocols.
Key words : real-time operating system;STM32;FreeRTOS;porting;PTZ control

   

0 引言

    隨著視頻監(jiān)控系統(tǒng)中智能高速球型攝像機的廣泛應(yīng)用,云臺控制系統(tǒng)的穩(wěn)定性對其性能起著主導(dǎo)作用。但大部分云臺控制系統(tǒng)不能實現(xiàn)快速實時性定位,不同品牌攝像機和云臺解碼板存在通信協(xié)議互通問題。文獻[1]采用低功耗直流電機,配合旋轉(zhuǎn)編碼器實現(xiàn)云臺精確定位。文獻[2]基于ARM和Linux設(shè)計系統(tǒng),實現(xiàn)步進電機的控制。文獻[3]以LPC2132為主控制器,μC/OS-II為軟件平臺實現(xiàn)球機控制。文獻[4]介紹了PELCO-D協(xié)議,基于Windows下的VC++,實現(xiàn)對云臺和鏡頭的控制。這些研究實現(xiàn)了監(jiān)控定位功能,但是,采用Linux開發(fā)難度大,采用μC/OS-II又要考慮版權(quán)成本問題,系統(tǒng)實時性需要改進,支持多種標(biāo)準(zhǔn)通信協(xié)議的云臺控制系統(tǒng)還有待研究。

    FreeRTOS是源碼公開的實時操作系統(tǒng)[5],能移植于各種微處理器,提高實時性;ARM Cortex-M3處理器具有低功耗、高性能、外設(shè)完善的優(yōu)點。因此,本文設(shè)計基于FreeRTOS和STM32F103的云臺控制系統(tǒng),通過STM32處理云臺控制命令驅(qū)動步進電機的轉(zhuǎn)動,F(xiàn)reeRTOS作為云臺控制系統(tǒng)軟件平臺,實現(xiàn)水平垂直方向準(zhǔn)確定位、預(yù)置點巡航、花樣掃描、定時掃描的功能,支持并自動識別多種通信協(xié)議,確保系統(tǒng)的可靠性和實時性[6]。

1 基于STM32F103的云臺控制系統(tǒng)

    高速球機監(jiān)控系統(tǒng)主要由一體化攝像機、云臺驅(qū)動解碼裝置組成。云臺控制系統(tǒng)是高速球機的核心,兼容PELCO-D、PECLO-P、SAMSUNG、DAHUA、YAAN等云臺協(xié)議,通信方式為RS485,將控制器發(fā)送過來的碼源信號解碼處理,完成碼源信號中定義的操作,包括電機、機芯控制以及大量數(shù)據(jù)存儲、調(diào)用。STM32F103基于ARM Cortex-M3內(nèi)核,主頻高達 72 MHz,通過定時器產(chǎn)生PWM輸出控制電機轉(zhuǎn)動[7]。主控板硬件電路包括以下部分:步進電機控制驅(qū)動、數(shù)據(jù)存儲、球機參數(shù)配置模塊、OSD字符顯示及電源模塊電路等,如圖1所示。

qrs1-t1.gif

    STM32F103控制其他模塊電路完成各自的功能。由于STM32的GPIO口數(shù)量有限,采用兩片74HC165AD對GPIO口擴展,將撥碼開關(guān)等并行數(shù)據(jù)轉(zhuǎn)成串行數(shù)據(jù)送給STM32;STM32自帶獨立看門狗IWDG和窗口看門狗WWDG模塊,檢測和解決由系統(tǒng)軟件錯誤引起的故障,保證系統(tǒng)可靠性;PWM脈沖信號和L6219電機驅(qū)動芯片構(gòu)成電機控制模塊主要電路,控制器發(fā)出PWM脈沖信號,脈沖個數(shù)決定電機角度位移量,脈沖頻率決定電機轉(zhuǎn)動速度;L6219驅(qū)動兩相步進電機繞組,內(nèi)部具有二極管及PWM電流控制,實現(xiàn)球機在水平360°和垂直180°的旋轉(zhuǎn);N2553和25Q80 Flash芯片實現(xiàn)字庫存儲OSD菜單功能,使球機配置更靈活簡便;數(shù)據(jù)存儲電路使用EEPROM實現(xiàn)預(yù)置位、參數(shù)、運行狀態(tài)等數(shù)據(jù)的掉電存儲。

2 FreeRTOS在STM32上的移植

    FreeRTOS提供任務(wù)、時間和內(nèi)存管理以及信號量、消息隊列等功能,具有多任務(wù)調(diào)度策略、占用空間和內(nèi)存小、可移植裁剪的特點; FreeRTOS的移植主要包含編譯器相關(guān)的數(shù)據(jù)類型和堆棧類型定義、任務(wù)調(diào)度器啟動函數(shù)、臨界區(qū)進入與退出、時鐘中斷嵌套服務(wù)程序等。

2.1 FreeRTOS移植原理

    云臺控制系統(tǒng)軟件在STM32上移植,需要修改startup_stm32f10x_ha.s啟動文件,F(xiàn)reeRTOS采用中斷完成任務(wù)處理[8],修改STM32固件庫默認(rèn)的中斷服務(wù)函數(shù)名稱,這樣中斷發(fā)生后跳轉(zhuǎn)到FreeRTOS代碼里定義的中斷服務(wù)函數(shù),改SVC_Handler、PendSV_Handler、SysTick_Handler為vPortSVHandle、xPortPendSVHandler、xPortSysTickHandler。為了保證系統(tǒng)軟件可移植性,F(xiàn)reeRTOS中代碼不直接使用和編譯器相關(guān)的C語言 long、short、int等數(shù)據(jù)類型,所以在portmacro.h中根據(jù)使用編譯器IAR的字節(jié)長度定義對這些數(shù)據(jù)類型進行定義。

2.2 移植的關(guān)鍵點

    任務(wù)切換是FreeRTOS移植的關(guān)鍵點,任務(wù)切換指中止當(dāng)前運行任務(wù),轉(zhuǎn)而運行就緒任務(wù)中優(yōu)先級最高的任務(wù)或優(yōu)先級相同的就緒任務(wù)中等待時間最長的。云臺控制系統(tǒng)利用STM32的PendSV軟中斷完成任務(wù)切換部分?jǐn)帱c數(shù)據(jù)保存,提高了云臺控制系統(tǒng)實時性。

    系統(tǒng)時鐘是移植的主要部分,時鐘節(jié)拍是系統(tǒng)調(diào)度運行的關(guān)鍵。STM32主頻最高72 MHz,操作系統(tǒng)心跳定義為1 000 Hz,足以掃描系統(tǒng)任務(wù)指令的實時性要求。FreeRTOS在STM32中的移植與中斷處理有關(guān),當(dāng)時鐘中斷發(fā)生時,處理器引起一次PendSV中斷,判斷是否有任務(wù)需要切換,然后關(guān)閉中斷,通過中斷向量表跳轉(zhuǎn)至相應(yīng)的中斷服務(wù)程序vTaskIncrementTick()中將增加時鐘節(jié)拍計數(shù)值,延時任務(wù)處理,使能全部中斷。

3 云臺控制系統(tǒng)軟件設(shè)計

    云臺控制系統(tǒng)中控制命令解析及狀態(tài)顯示由STM32完成,軟件環(huán)境選用IAR,代碼編輯工具選用Source Insight3.5。軟件結(jié)構(gòu)總體分為通信協(xié)議處理、攝像機機芯控制、電機控制、數(shù)據(jù)存儲等模塊;在移植過程中,需要進行FreeRTOS內(nèi)存分配、中斷事件處理等。

3.1 系統(tǒng)軟件

    云臺解碼板軟件在FreeRTOS下劃分為五個任務(wù):系統(tǒng)控制、菜單、輔助功能、數(shù)據(jù)轉(zhuǎn)發(fā)和老化測試任務(wù)。FreeRTOS操作系統(tǒng)實現(xiàn)實時多任務(wù)操作,對于單核微控制器STM32來說,任意時刻只有一個任務(wù)被執(zhí)行,其他任務(wù)處于非運行狀態(tài),F(xiàn)reeRTOS采用xTaskCreate()API函數(shù)的參數(shù)uxPriority為創(chuàng)建的任務(wù)賦予初始優(yōu)先級,保證調(diào)度器按順序有效地進入運行狀態(tài)。啟功調(diào)度器之前,初始化系統(tǒng)平臺,包括LED、EEPROM、I2C、SPI、電機驅(qū)動、485通信接口、球機波特率、地址碼、協(xié)議撥碼配置信息等的初始化,系統(tǒng)的啟動流程如圖2所示。

qrs1-t2.gif

    云臺控制系統(tǒng)軟件集成固件升級功能,首先進入升級模式,通過串口把升級程序?qū)胄酒現(xiàn)lash的備用區(qū)域,然后重啟系統(tǒng),進入維護模式將備用區(qū)域的升級程序拷貝到系統(tǒng)真實區(qū)域。

3.2 系統(tǒng)內(nèi)存管理模塊

    為了解決STM32內(nèi)部RAM資源緊張問題,將若干小功能任務(wù)合并成一個復(fù)合任務(wù),這些任務(wù)的特點是在運行時間上不重合,共用一塊內(nèi)存從而達到節(jié)省內(nèi)存的目的。通過創(chuàng)建消息隊列xQueueCreate()的方式在復(fù)合任務(wù)每次運行時判斷執(zhí)行哪一項操作,其他系統(tǒng)任務(wù)要調(diào)用復(fù)合任務(wù)的功能,就向該任務(wù)發(fā)送消息,消息中含有需要執(zhí)行操作的編碼,復(fù)合任務(wù)收到消息后通過判斷操作編碼執(zhí)行相應(yīng)任務(wù)。通過創(chuàng)建組合任務(wù)來實現(xiàn)內(nèi)存管理,將云臺控制系統(tǒng)中的線掃、巡航、預(yù)置點掃描、花樣掃描定位等任務(wù)組合起來。

3.3 機芯控制模塊

    云臺控制系統(tǒng)集成PELCO-D\P、SAMSUNG、DAHUA、YANAN等控制協(xié)議與攝像機機芯進行通信,通過軟件實現(xiàn)自動識別控制協(xié)議,解決不同品牌攝像機和云臺解碼板互通問題。通過STM32的串口接收上位機控制命令,系統(tǒng)收到指令后進行解析,通信處理模塊服務(wù)程序根據(jù)協(xié)議轉(zhuǎn)換標(biāo)準(zhǔn)、數(shù)據(jù)格式、包頭信息、特征字符等分析識別機芯控制協(xié)議,最后通過STM32的串口向機芯的串口發(fā)送控制協(xié)議指令,并等待機芯的處理。自動識別協(xié)議流程圖如圖3所示。

qrs1-t3.gif

3.4 電機控制模塊

    電機控制模塊實現(xiàn)云臺穩(wěn)定旋轉(zhuǎn)和精確定位,STM32定時器0提供步進電機不同速度運行所需脈沖頻率,定時器2和4分別用于水平垂直電機定時改變速度,保證電機運行速度與預(yù)置速度保持一致。云臺控制系統(tǒng)上電的瞬間進行自檢,驅(qū)動解碼板采用光電開關(guān)中斷的方式記錄電機轉(zhuǎn)一圈的步數(shù),把步數(shù)保存在STM32內(nèi)存中作為將來設(shè)置預(yù)置位和調(diào)用預(yù)置位的原始數(shù)據(jù)。

    為了減小電機機械震蕩,系統(tǒng)采用電流細分查表法驅(qū)動步進電機,電流引起磁場決定電機角度,其中細分表采用128倍細分,A相=255cosα,B相=255sinα,通過STM32通用定時器產(chǎn)生PWM輸出,控制方波占空比模擬電流信號電平進行編碼,用控制電機電流方式代替電壓,既保證了電機平滑轉(zhuǎn)動,又降低系統(tǒng)功耗。電機運行是通過串口中斷服務(wù)程序解析云臺控制命令后,調(diào)用步進電機運行處理函數(shù)實現(xiàn),這些函數(shù)可以實現(xiàn)水平垂直電機自檢、根據(jù)控制命令正常轉(zhuǎn)動或按照預(yù)置位巡航功能。電機控制模塊流程如圖4所示。

qrs1-t4.gif

4 云臺控制系統(tǒng)的測試

4.1 FreeRTOS系統(tǒng)實時性測試

    任務(wù)切換時間評估:使用定時器和多次任務(wù)切換求平均數(shù)完成測試,創(chuàng)建測試程序,n個任務(wù)連續(xù)切換,最后統(tǒng)計n個任務(wù)切換總時間求出平均切換時間。經(jīng)測試,F(xiàn)reeRTOS約510個時鐘周期,7 μs完成一次任務(wù)切換,滿足系統(tǒng)實時性要求。

    處理器負(fù)載情況統(tǒng)計:該統(tǒng)計類似于Linux的top命令、Windows的任務(wù)管理器,F(xiàn)reeRTOS需要統(tǒng)計空閑任務(wù)運行時間,通過該時間計算出處理器負(fù)載情況,一個穩(wěn)定的云臺系統(tǒng)要求及時響應(yīng)事件,也要有充足的空閑時間用來快速響應(yīng)特殊任務(wù)。經(jīng)測試,處理器負(fù)載25%,滿足系統(tǒng)穩(wěn)定性要求。

4.2 云臺控制系統(tǒng)測試

    云臺控制系統(tǒng)采用上位機軟件進行測試,該軟件在vs2008集成環(huán)境下編寫,使用mscomm控件完成串口通信編程,主要包括電機方向控制、電機轉(zhuǎn)速設(shè)置、攝像機機芯控制、球機通信參數(shù)設(shè)置、預(yù)置點巡航設(shè)置等。

    云臺控制系統(tǒng)采用RS485方式與上位機進行通信。處理器將預(yù)置位信息通過串口發(fā)送給上位機進行存儲,上位機通過串口發(fā)送命令給云臺解碼板,驅(qū)動步進電機的轉(zhuǎn)動,讓云臺執(zhí)行不同操作,測試預(yù)置位巡航、線掃、花樣掃描、定時掃描等功能。系統(tǒng)各項功能滿足設(shè)計要求,電機運行穩(wěn)定,加減速過程處理平滑,保證了云臺監(jiān)控系統(tǒng)的實時性。

5 結(jié)論

    本文研究設(shè)計了基于FreeRTOS的云臺控制系統(tǒng),支持并自動識別不同攝像機云臺控制協(xié)議。采用先進的ARM Cortex-M3處理器完成水平垂直步進電機的細分控制,實現(xiàn)低功耗的同時簡化硬件電路設(shè)計;嵌入式系統(tǒng)軟件采用FreeRTOS實時操作系統(tǒng),實現(xiàn)實時多任務(wù)操作的同時縮短開發(fā)周期,保證了系統(tǒng)實時定位、迅速掃描監(jiān)控的功能。經(jīng)測試,云臺控制系統(tǒng)運行穩(wěn)定,控制精度高,響應(yīng)速度快,系統(tǒng)穩(wěn)定性、擴展性和可維護性得到顯著提高,具有較好的應(yīng)用前景。

參考文獻

[1] 周官喜.基于STM32低功耗云臺控制系統(tǒng)設(shè)計[D].青島:青島理工大學(xué),2012.

[2] 秦鐘凱.基于ARM的云臺控制網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)[D].太原:太原科技大學(xué),2012.

[3] 莊志紅,伍峰.基于ARM微控制器LPC213嵌入式球機控制系統(tǒng)設(shè)計[J].制造業(yè)自動化,2010,10(32):92-95.

[4] 魏崇毓,韓永亮.云臺控制系統(tǒng)的研究與設(shè)計[J].科技信息,2011(3):503-504.

[5] MISTRY J,NAYLOR M,WOODOCOCK J.Adapting FreeRTOS for multicores:an experience report[J].Softw.Pract.Exper,2014,44(9):1129-1154.

[6] Richard Barry.Using the FreeRTOS real time kernel[M].Washington State.USA:Amazo,2010:10-50.

[7] 鐘銳,徐宇拓,陸生禮.基于Cortex M3處理器的開關(guān)磁阻電機控制器設(shè)計[J].電子技術(shù)應(yīng)用,2011,37(3):32-34.

[8] 張龍彪,張果,王劍平.嵌入式操作系統(tǒng)FreeRTOS的原理與移植實現(xiàn)[J].信息技術(shù),2012(12):31-34.

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