《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于FreeRTOS的嵌入式云臺(tái)控制系統(tǒng)設(shè)計(jì)
基于FreeRTOS的嵌入式云臺(tái)控制系統(tǒng)設(shè)計(jì)
2015年電子技術(shù)應(yīng)用第5期
朱耀麟,樊 佩
西安工程大學(xué) 電子信息學(xué)院,陜西 西安710048
摘要: 由于視頻監(jiān)控技術(shù)的快速發(fā)展,云臺(tái)控制系統(tǒng)的實(shí)時(shí)性定位成了需要解決的問題,因此選用高性能的微處理器和實(shí)時(shí)操作系統(tǒng)可以提高系統(tǒng)性能,解決實(shí)時(shí)性和互通性問題。設(shè)計(jì)基于FreeRTOS的云臺(tái)控制系統(tǒng),STM32作為云臺(tái)解碼板的主控器,通過解析云臺(tái)控制命令驅(qū)動(dòng)步進(jìn)電機(jī)的轉(zhuǎn)動(dòng),利用FreeRTOS將應(yīng)用程序劃分為多個(gè)重要性不同的任務(wù),在各個(gè)任務(wù)之間合理地分配CPU時(shí)間和系統(tǒng)資源。
中圖分類號(hào): TP273
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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)中智能高速球型攝像機(jī)的廣泛應(yīng)用,云臺(tái)控制系統(tǒng)的穩(wěn)定性對(duì)其性能起著主導(dǎo)作用。但大部分云臺(tái)控制系統(tǒng)不能實(shí)現(xiàn)快速實(shí)時(shí)性定位,不同品牌攝像機(jī)和云臺(tái)解碼板存在通信協(xié)議互通問題。文獻(xiàn)[1]采用低功耗直流電機(jī),配合旋轉(zhuǎn)編碼器實(shí)現(xiàn)云臺(tái)精確定位。文獻(xiàn)[2]基于ARM和Linux設(shè)計(jì)系統(tǒng),實(shí)現(xiàn)步進(jìn)電機(jī)的控制。文獻(xiàn)[3]以LPC2132為主控制器,μC/OS-II為軟件平臺(tái)實(shí)現(xiàn)球機(jī)控制。文獻(xiàn)[4]介紹了PELCO-D協(xié)議,基于Windows下的VC++,實(shí)現(xiàn)對(duì)云臺(tái)和鏡頭的控制。這些研究實(shí)現(xiàn)了監(jiān)控定位功能,但是,采用Linux開發(fā)難度大,采用μC/OS-II又要考慮版權(quán)成本問題,系統(tǒng)實(shí)時(shí)性需要改進(jìn),支持多種標(biāo)準(zhǔn)通信協(xié)議的云臺(tái)控制系統(tǒng)還有待研究。

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

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

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

qrs1-t1.gif

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

2 FreeRTOS在STM32上的移植

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

2.1 FreeRTOS移植原理

    云臺(tái)控制系統(tǒng)軟件在STM32上移植,需要修改startup_stm32f10x_ha.s啟動(dòng)文件,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é)長(zhǎng)度定義對(duì)這些數(shù)據(jù)類型進(jìn)行定義。

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

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

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

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

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

3.1 系統(tǒng)軟件

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

qrs1-t2.gif

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

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

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

3.3 機(jī)芯控制模塊

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

qrs1-t3.gif

3.4 電機(jī)控制模塊

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

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

qrs1-t4.gif

4 云臺(tái)控制系統(tǒng)的測(cè)試

4.1 FreeRTOS系統(tǒng)實(shí)時(shí)性測(cè)試

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

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

4.2 云臺(tái)控制系統(tǒng)測(cè)試

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

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

5 結(jié)論

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

參考文獻(xiàn)

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

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

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

[4] 魏崇毓,韓永亮.云臺(tái)控制系統(tǒng)的研究與設(shè)計(jì)[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)磁阻電機(jī)控制器設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2011,37(3):32-34.

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

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