文獻標識碼: A
文章編號: 0258-7998(2015)05-0025-03
0 引言
隨著視頻監(jiān)控系統(tǒng)中智能高速球型攝像機的廣泛應用,云臺控制系統(tǒng)的穩(wěn)定性對其性能起著主導作用,。但大部分云臺控制系統(tǒng)不能實現(xiàn)快速實時性定位,不同品牌攝像機和云臺解碼板存在通信協(xié)議互通問題,。文獻[1]采用低功耗直流電機,,配合旋轉(zhuǎn)編碼器實現(xiàn)云臺精確定位。文獻[2]基于ARM和Linux設計系統(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又要考慮版權成本問題,,系統(tǒng)實時性需要改進,支持多種標準通信協(xié)議的云臺控制系統(tǒng)還有待研究,。
FreeRTOS是源碼公開的實時操作系統(tǒng)[5],,能移植于各種微處理器,提高實時性,;ARM Cortex-M3處理器具有低功耗,、高性能、外設完善的優(yōu)點,。因此,,本文設計基于FreeRTOS和STM32F103的云臺控制系統(tǒng),通過STM32處理云臺控制命令驅(qū)動步進電機的轉(zhuǎn)動,,F(xiàn)reeRTOS作為云臺控制系統(tǒng)軟件平臺,,實現(xiàn)水平垂直方向準確定位,、預置點巡航、花樣掃描,、定時掃描的功能,,支持并自動識別多種通信協(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所示,。
STM32F103控制其他模塊電路完成各自的功能。由于STM32的GPIO口數(shù)量有限,,采用兩片74HC165AD對GPIO口擴展,,將撥碼開關等并行數(shù)據(jù)轉(zhuǎn)成串行數(shù)據(jù)送給STM32;STM32自帶獨立看門狗IWDG和窗口看門狗WWDG模塊,,檢測和解決由系統(tǒng)軟件錯誤引起的故障,,保證系統(tǒng)可靠性;PWM脈沖信號和L6219電機驅(qū)動芯片構成電機控制模塊主要電路,,控制器發(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)預置位、參數(shù),、運行狀態(tài)等數(shù)據(jù)的掉電存儲,。
2 FreeRTOS在STM32上的移植
FreeRTOS提供任務、時間和內(nèi)存管理以及信號量,、消息隊列等功能,,具有多任務調(diào)度策略、占用空間和內(nèi)存小,、可移植裁剪的特點,; FreeRTOS的移植主要包含編譯器相關的數(shù)據(jù)類型和堆棧類型定義、任務調(diào)度器啟動函數(shù),、臨界區(qū)進入與退出,、時鐘中斷嵌套服務程序等。
2.1 FreeRTOS移植原理
云臺控制系統(tǒng)軟件在STM32上移植,,需要修改startup_stm32f10x_ha.s啟動文件,,F(xiàn)reeRTOS采用中斷完成任務處理[8],,修改STM32固件庫默認的中斷服務函數(shù)名稱,,這樣中斷發(fā)生后跳轉(zhuǎn)到FreeRTOS代碼里定義的中斷服務函數(shù),改SVC_Handler,、PendSV_Handler,、SysTick_Handler為vPortSVHandle、xPortPendSVHandler,、xPortSysTickHandler,。為了保證系統(tǒng)軟件可移植性,F(xiàn)reeRTOS中代碼不直接使用和編譯器相關的C語言 long,、short,、int等數(shù)據(jù)類型,所以在portmacro.h中根據(jù)使用編譯器IAR的字節(jié)長度定義對這些數(shù)據(jù)類型進行定義,。
2.2 移植的關鍵點
任務切換是FreeRTOS移植的關鍵點,,任務切換指中止當前運行任務,轉(zhuǎn)而運行就緒任務中優(yōu)先級最高的任務或優(yōu)先級相同的就緒任務中等待時間最長的,。云臺控制系統(tǒng)利用STM32的PendSV軟中斷完成任務切換部分斷點數(shù)據(jù)保存,,提高了云臺控制系統(tǒng)實時性。
系統(tǒng)時鐘是移植的主要部分,,時鐘節(jié)拍是系統(tǒng)調(diào)度運行的關鍵,。STM32主頻最高72 MHz,,操作系統(tǒng)心跳定義為1 000 Hz,足以掃描系統(tǒng)任務指令的實時性要求,。FreeRTOS在STM32中的移植與中斷處理有關,,當時鐘中斷發(fā)生時,處理器引起一次PendSV中斷,,判斷是否有任務需要切換,,然后關閉中斷,通過中斷向量表跳轉(zhuǎn)至相應的中斷服務程序vTaskIncrementTick()中將增加時鐘節(jié)拍計數(shù)值,,延時任務處理,,使能全部中斷。
3 云臺控制系統(tǒng)軟件設計
云臺控制系統(tǒng)中控制命令解析及狀態(tài)顯示由STM32完成,,軟件環(huán)境選用IAR,,代碼編輯工具選用Source Insight3.5。軟件結(jié)構總體分為通信協(xié)議處理,、攝像機機芯控制,、電機控制、數(shù)據(jù)存儲等模塊,;在移植過程中,,需要進行FreeRTOS內(nèi)存分配、中斷事件處理等,。
3.1 系統(tǒng)軟件
云臺解碼板軟件在FreeRTOS下劃分為五個任務:系統(tǒng)控制,、菜單、輔助功能,、數(shù)據(jù)轉(zhuǎn)發(fā)和老化測試任務,。FreeRTOS操作系統(tǒng)實現(xiàn)實時多任務操作,對于單核微控制器STM32來說,,任意時刻只有一個任務被執(zhí)行,,其他任務處于非運行狀態(tài),F(xiàn)reeRTOS采用xTaskCreate()API函數(shù)的參數(shù)uxPriority為創(chuàng)建的任務賦予初始優(yōu)先級,,保證調(diào)度器按順序有效地進入運行狀態(tài),。啟功調(diào)度器之前,初始化系統(tǒng)平臺,,包括LED,、EEPROM、I2C,、SPI,、電機驅(qū)動、485通信接口,、球機波特率,、地址碼,、協(xié)議撥碼配置信息等的初始化,系統(tǒng)的啟動流程如圖2所示,。
云臺控制系統(tǒng)軟件集成固件升級功能,,首先進入升級模式,通過串口把升級程序?qū)胄酒現(xiàn)lash的備用區(qū)域,,然后重啟系統(tǒng),,進入維護模式將備用區(qū)域的升級程序拷貝到系統(tǒng)真實區(qū)域。
3.2 系統(tǒng)內(nèi)存管理模塊
為了解決STM32內(nèi)部RAM資源緊張問題,,將若干小功能任務合并成一個復合任務,,這些任務的特點是在運行時間上不重合,共用一塊內(nèi)存從而達到節(jié)省內(nèi)存的目的,。通過創(chuàng)建消息隊列xQueueCreate()的方式在復合任務每次運行時判斷執(zhí)行哪一項操作,,其他系統(tǒng)任務要調(diào)用復合任務的功能,就向該任務發(fā)送消息,,消息中含有需要執(zhí)行操作的編碼,,復合任務收到消息后通過判斷操作編碼執(zhí)行相應任務。通過創(chuàng)建組合任務來實現(xiàn)內(nèi)存管理,,將云臺控制系統(tǒng)中的線掃,、巡航、預置點掃描,、花樣掃描定位等任務組合起來,。
3.3 機芯控制模塊
云臺控制系統(tǒng)集成PELCO-D\P、SAMSUNG,、DAHUA,、YANAN等控制協(xié)議與攝像機機芯進行通信,,通過軟件實現(xiàn)自動識別控制協(xié)議,,解決不同品牌攝像機和云臺解碼板互通問題。通過STM32的串口接收上位機控制命令,,系統(tǒng)收到指令后進行解析,,通信處理模塊服務程序根據(jù)協(xié)議轉(zhuǎn)換標準、數(shù)據(jù)格式,、包頭信息,、特征字符等分析識別機芯控制協(xié)議,最后通過STM32的串口向機芯的串口發(fā)送控制協(xié)議指令,,并等待機芯的處理,。自動識別協(xié)議流程圖如圖3所示。
3.4 電機控制模塊
電機控制模塊實現(xiàn)云臺穩(wěn)定旋轉(zhuǎn)和精確定位,,STM32定時器0提供步進電機不同速度運行所需脈沖頻率,,定時器2和4分別用于水平垂直電機定時改變速度,,保證電機運行速度與預置速度保持一致。云臺控制系統(tǒng)上電的瞬間進行自檢,,驅(qū)動解碼板采用光電開關中斷的方式記錄電機轉(zhuǎn)一圈的步數(shù),,把步數(shù)保存在STM32內(nèi)存中作為將來設置預置位和調(diào)用預置位的原始數(shù)據(jù)。
為了減小電機機械震蕩,,系統(tǒng)采用電流細分查表法驅(qū)動步進電機,,電流引起磁場決定電機角度,其中細分表采用128倍細分,,A相=255cosα,,B相=255sinα,通過STM32通用定時器產(chǎn)生PWM輸出,,控制方波占空比模擬電流信號電平進行編碼,,用控制電機電流方式代替電壓,既保證了電機平滑轉(zhuǎn)動,,又降低系統(tǒng)功耗,。電機運行是通過串口中斷服務程序解析云臺控制命令后,調(diào)用步進電機運行處理函數(shù)實現(xiàn),,這些函數(shù)可以實現(xiàn)水平垂直電機自檢,、根據(jù)控制命令正常轉(zhuǎn)動或按照預置位巡航功能。電機控制模塊流程如圖4所示,。
4 云臺控制系統(tǒng)的測試
4.1 FreeRTOS系統(tǒng)實時性測試
任務切換時間評估:使用定時器和多次任務切換求平均數(shù)完成測試,,創(chuàng)建測試程序,n個任務連續(xù)切換,,最后統(tǒng)計n個任務切換總時間求出平均切換時間,。經(jīng)測試,F(xiàn)reeRTOS約510個時鐘周期,,7 μs完成一次任務切換,,滿足系統(tǒng)實時性要求。
處理器負載情況統(tǒng)計:該統(tǒng)計類似于Linux的top命令,、Windows的任務管理器,,F(xiàn)reeRTOS需要統(tǒng)計空閑任務運行時間,通過該時間計算出處理器負載情況,,一個穩(wěn)定的云臺系統(tǒng)要求及時響應事件,,也要有充足的空閑時間用來快速響應特殊任務。經(jīng)測試,,處理器負載25%,,滿足系統(tǒng)穩(wěn)定性要求。
4.2 云臺控制系統(tǒng)測試
云臺控制系統(tǒng)采用上位機軟件進行測試,該軟件在vs2008集成環(huán)境下編寫,,使用mscomm控件完成串口通信編程,,主要包括電機方向控制、電機轉(zhuǎn)速設置,、攝像機機芯控制,、球機通信參數(shù)設置、預置點巡航設置等,。
云臺控制系統(tǒng)采用RS485方式與上位機進行通信,。處理器將預置位信息通過串口發(fā)送給上位機進行存儲,上位機通過串口發(fā)送命令給云臺解碼板,,驅(qū)動步進電機的轉(zhuǎn)動,,讓云臺執(zhí)行不同操作,測試預置位巡航,、線掃,、花樣掃描、定時掃描等功能,。系統(tǒng)各項功能滿足設計要求,,電機運行穩(wěn)定,加減速過程處理平滑,,保證了云臺監(jiān)控系統(tǒng)的實時性,。
5 結(jié)論
本文研究設計了基于FreeRTOS的云臺控制系統(tǒng),支持并自動識別不同攝像機云臺控制協(xié)議,。采用先進的ARM Cortex-M3處理器完成水平垂直步進電機的細分控制,,實現(xiàn)低功耗的同時簡化硬件電路設計;嵌入式系統(tǒng)軟件采用FreeRTOS實時操作系統(tǒng),,實現(xiàn)實時多任務操作的同時縮短開發(fā)周期,,保證了系統(tǒng)實時定位、迅速掃描監(jiān)控的功能,。經(jīng)測試,,云臺控制系統(tǒng)運行穩(wěn)定,控制精度高,,響應速度快,,系統(tǒng)穩(wěn)定性,、擴展性和可維護性得到顯著提高,,具有較好的應用前景。
參考文獻
[1] 周官喜.基于STM32低功耗云臺控制系統(tǒng)設計[D].青島:青島理工大學,,2012.
[2] 秦鐘凱.基于ARM的云臺控制網(wǎng)絡視頻監(jiān)控系統(tǒng)[D].太原:太原科技大學,,2012.
[3] 莊志紅,伍峰.基于ARM微控制器LPC213嵌入式球機控制系統(tǒng)設計[J].制造業(yè)自動化,2010,,10(32):92-95.
[4] 魏崇毓,,韓永亮.云臺控制系統(tǒng)的研究與設計[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處理器的開關磁阻電機控制器設計[J].電子技術應用,,2011,37(3):32-34.
[8] 張龍彪,,張果,,王劍平.嵌入式操作系統(tǒng)FreeRTOS的原理與移植實現(xiàn)[J].信息技術,2012(12):31-34.