文献标识码:A
文章编号: 0258-7998(2015)05-0025-03
0 引言
随着视频监控系统中智能高速球型摄像机的广泛应用,云台控制系统的稳定性对其性能起着主导作用。但大部分云台控制系统不能实现快速实时性定位,不同品牌摄像机和云台解码板存在通信协议互通问题。文献[1]采用低功耗直流电机,配合旋转编码器实现云台精确定位。文献[2]基于ARM和Linux设计系统,实现步进电机的控制。文献[3]以LPC2132为主控制器,μC/OS-II为软件平台实现球机控制。文献[4]介绍了PELCO-D协议,基于Windows下的VC++,实现对云台和镜头的控制。这些研究实现了监控定位功能,但是,采用Linux开发难度大,采用μC/OS-II又要考虑版权成本问题,系统实时性需要改进,支持多种标准通信协议的云台控制系统还有待研究。
FreeRTOS是源码公开的实时操作系统[5],能移植于各种微处理器,提高实时性;ARM Cortex-M3处理器具有低功耗、高性能、外设完善的优点。因此,本文设计基于FreeRTOS和STM32F103的云台控制系统,通过STM32处理云台控制命令驱动步进电机的转动,FreeRTOS作为云台控制系统软件平台,实现水平垂直方向准确定位、预置点巡航、花样扫描、定时扫描的功能,支持并自动识别多种通信协议,确保系统的可靠性和实时性[6]。
1 基于STM32F103的云台控制系统
高速球机监控系统主要由一体化摄像机、云台驱动解码装置组成。云台控制系统是高速球机的核心,兼容PELCO-D、PECLO-P、SAMSUNG、DAHUA、YAAN等云台协议,通信方式为RS485,将控制器发送过来的码源信号解码处理,完成码源信号中定义的操作,包括电机、机芯控制以及大量数据存储、调用。STM32F103基于ARM Cortex-M3内核,主频高达 72 MHz,通过定时器产生PWM输出控制电机转动[7]。主控板硬件电路包括以下部分:步进电机控制驱动、数据存储、球机参数配置模块、OSD字符显示及电源模块电路等,如图1所示。
STM32F103控制其他模块电路完成各自的功能。由于STM32的GPIO口数量有限,采用两片74HC165AD对GPIO口扩展,将拨码开关等并行数据转成串行数据送给STM32;STM32自带独立看门狗IWDG和窗口看门狗WWDG模块,检测和解决由系统软件错误引起的故障,保证系统可靠性;PWM脉冲信号和L6219电机驱动芯片构成电机控制模块主要电路,控制器发出PWM脉冲信号,脉冲个数决定电机角度位移量,脉冲频率决定电机转动速度;L6219驱动两相步进电机绕组,内部具有二极管及PWM电流控制,实现球机在水平360°和垂直180°的旋转;N2553和25Q80 Flash芯片实现字库存储OSD菜单功能,使球机配置更灵活简便;数据存储电路使用EEPROM实现预置位、参数、运行状态等数据的掉电存储。
2 FreeRTOS在STM32上的移植
FreeRTOS提供任务、时间和内存管理以及信号量、消息队列等功能,具有多任务调度策略、占用空间和内存小、可移植裁剪的特点; FreeRTOS的移植主要包含编译器相关的数据类型和堆栈类型定义、任务调度器启动函数、临界区进入与退出、时钟中断嵌套服务程序等。
2.1 FreeRTOS移植原理
云台控制系统软件在STM32上移植,需要修改startup_stm32f10x_ha.s启动文件,FreeRTOS采用中断完成任务处理[8],修改STM32固件库默认的中断服务函数名称,这样中断发生后跳转到FreeRTOS代码里定义的中断服务函数,改SVC_Handler、PendSV_Handler、SysTick_Handler为vPortSVHandle、xPortPendSVHandler、xPortSysTickHandler。为了保证系统软件可移植性,FreeRTOS中代码不直接使用和编译器相关的C语言 long、short、int等数据类型,所以在portmacro.h中根据使用编译器IAR的字节长度定义对这些数据类型进行定义。
2.2 移植的关键点
任务切换是FreeRTOS移植的关键点,任务切换指中止当前运行任务,转而运行就绪任务中优先级最高的任务或优先级相同的就绪任务中等待时间最长的。云台控制系统利用STM32的PendSV软中断完成任务切换部分断点数据保存,提高了云台控制系统实时性。
系统时钟是移植的主要部分,时钟节拍是系统调度运行的关键。STM32主频最高72 MHz,操作系统心跳定义为1 000 Hz,足以扫描系统任务指令的实时性要求。FreeRTOS在STM32中的移植与中断处理有关,当时钟中断发生时,处理器引起一次PendSV中断,判断是否有任务需要切换,然后关闭中断,通过中断向量表跳转至相应的中断服务程序vTaskIncrementTick()中将增加时钟节拍计数值,延时任务处理,使能全部中断。
3 云台控制系统软件设计
云台控制系统中控制命令解析及状态显示由STM32完成,软件环境选用IAR,代码编辑工具选用Source Insight3.5。软件结构总体分为通信协议处理、摄像机机芯控制、电机控制、数据存储等模块;在移植过程中,需要进行FreeRTOS内存分配、中断事件处理等。
3.1 系统软件
云台解码板软件在FreeRTOS下划分为五个任务:系统控制、菜单、辅助功能、数据转发和老化测试任务。FreeRTOS操作系统实现实时多任务操作,对于单核微控制器STM32来说,任意时刻只有一个任务被执行,其他任务处于非运行状态,FreeRTOS采用xTaskCreate()API函数的参数uxPriority为创建的任务赋予初始优先级,保证调度器按顺序有效地进入运行状态。启功调度器之前,初始化系统平台,包括LED、EEPROM、I2C、SPI、电机驱动、485通信接口、球机波特率、地址码、协议拨码配置信息等的初始化,系统的启动流程如图2所示。
云台控制系统软件集成固件升级功能,首先进入升级模式,通过串口把升级程序导入芯片Flash的备用区域,然后重启系统,进入维护模式将备用区域的升级程序拷贝到系统真实区域。
3.2 系统内存管理模块
为了解决STM32内部RAM资源紧张问题,将若干小功能任务合并成一个复合任务,这些任务的特点是在运行时间上不重合,共用一块内存从而达到节省内存的目的。通过创建消息队列xQueueCreate()的方式在复合任务每次运行时判断执行哪一项操作,其他系统任务要调用复合任务的功能,就向该任务发送消息,消息中含有需要执行操作的编码,复合任务收到消息后通过判断操作编码执行相应任务。通过创建组合任务来实现内存管理,将云台控制系统中的线扫、巡航、预置点扫描、花样扫描定位等任务组合起来。
3.3 机芯控制模块
云台控制系统集成PELCO-D\P、SAMSUNG、DAHUA、YANAN等控制协议与摄像机机芯进行通信,通过软件实现自动识别控制协议,解决不同品牌摄像机和云台解码板互通问题。通过STM32的串口接收上位机控制命令,系统收到指令后进行解析,通信处理模块服务程序根据协议转换标准、数据格式、包头信息、特征字符等分析识别机芯控制协议,最后通过STM32的串口向机芯的串口发送控制协议指令,并等待机芯的处理。自动识别协议流程图如图3所示。
3.4 电机控制模块
电机控制模块实现云台稳定旋转和精确定位,STM32定时器0提供步进电机不同速度运行所需脉冲频率,定时器2和4分别用于水平垂直电机定时改变速度,保证电机运行速度与预置速度保持一致。云台控制系统上电的瞬间进行自检,驱动解码板采用光电开关中断的方式记录电机转一圈的步数,把步数保存在STM32内存中作为将来设置预置位和调用预置位的原始数据。
为了减小电机机械震荡,系统采用电流细分查表法驱动步进电机,电流引起磁场决定电机角度,其中细分表采用128倍细分,A相=255cosα,B相=255sinα,通过STM32通用定时器产生PWM输出,控制方波占空比模拟电流信号电平进行编码,用控制电机电流方式代替电压,既保证了电机平滑转动,又降低系统功耗。电机运行是通过串口中断服务程序解析云台控制命令后,调用步进电机运行处理函数实现,这些函数可以实现水平垂直电机自检、根据控制命令正常转动或按照预置位巡航功能。电机控制模块流程如图4所示。
4 云台控制系统的测试
4.1 FreeRTOS系统实时性测试
任务切换时间评估:使用定时器和多次任务切换求平均数完成测试,创建测试程序,n个任务连续切换,最后统计n个任务切换总时间求出平均切换时间。经测试,FreeRTOS约510个时钟周期,7 μs完成一次任务切换,满足系统实时性要求。
处理器负载情况统计:该统计类似于Linux的top命令、Windows的任务管理器,FreeRTOS需要统计空闲任务运行时间,通过该时间计算出处理器负载情况,一个稳定的云台系统要求及时响应事件,也要有充足的空闲时间用来快速响应特殊任务。经测试,处理器负载25%,满足系统稳定性要求。
4.2 云台控制系统测试
云台控制系统采用上位机软件进行测试,该软件在vs2008集成环境下编写,使用mscomm控件完成串口通信编程,主要包括电机方向控制、电机转速设置、摄像机机芯控制、球机通信参数设置、预置点巡航设置等。
云台控制系统采用RS485方式与上位机进行通信。处理器将预置位信息通过串口发送给上位机进行存储,上位机通过串口发送命令给云台解码板,驱动步进电机的转动,让云台执行不同操作,测试预置位巡航、线扫、花样扫描、定时扫描等功能。系统各项功能满足设计要求,电机运行稳定,加减速过程处理平滑,保证了云台监控系统的实时性。
5 结论
本文研究设计了基于FreeRTOS的云台控制系统,支持并自动识别不同摄像机云台控制协议。采用先进的ARM Cortex-M3处理器完成水平垂直步进电机的细分控制,实现低功耗的同时简化硬件电路设计;嵌入式系统软件采用FreeRTOS实时操作系统,实现实时多任务操作的同时缩短开发周期,保证了系统实时定位、迅速扫描监控的功能。经测试,云台控制系统运行稳定,控制精度高,响应速度快,系统稳定性、扩展性和可维护性得到显著提高,具有较好的应用前景。
参考文献
[1] 周官喜.基于STM32低功耗云台控制系统设计[D].青岛:青岛理工大学,2012.
[2] 秦钟凯.基于ARM的云台控制网络视频监控系统[D].太原:太原科技大学,2012.
[3] 庄志红,伍峰.基于ARM微控制器LPC213嵌入式球机控制系统设计[J].制造业自动化,2010,10(32):92-95.
[4] 魏崇毓,韩永亮.云台控制系统的研究与设计[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] 张龙彪,张果,王剑平.嵌入式操作系统FreeRTOS的原理与移植实现[J].信息技术,2012(12):31-34.