基于μC/OS-II的无线调度策略分析与实现
接收任务与发送任务间通过消息队列进行消息传递代码实现如下,当OSQPend()接收到触发消息,开始接受数据报文,根据数据报文ID作出相应处理,如果接收到的是令牌数据报文则给信息分发任务发送一个消息,信息分发任务只有接收到此消息才可以进行信息分发。为防止令牌丢失,在信息分发任务中设置了一等待超时,超过一定时间没接收到发送消息,则自动返回令牌。
void task_bt_rcve(void *spdata) ADD_REENTRANT //信息接收任务
{ p_msg = (sSerial2Msg PTR_TYPE *)OSQPend(bt_msg_queue, 0, err);
switch(p_msg->pkt_ID){
case ZGB_PKTID_ANN: // 设备声明ID
……
case ZGB_PKTID_DISTRIBUTE: // 信息发布ID
……
case ZGB_PKTID_PASS_TOKEN: // 令牌传递ID
……
OSQPost(token_msg_queue, (void *)1);
}
void task_bt_send(void *spdata) ADD_REENTRANT //信息分发任务
{ OSQPend(token_msg_queue, 3*OS_TICKS_PER_SEC, err); //令牌事件驱动
……
if(err != OS_TIMEOUT) //等待超时
return_token(); //当数据发送完毕后返回令牌
}
4 调度误差分析
无线调度是基于精确时间同步的调度策略,主设备对每个从设备进行周期性的调度。考虑到在实际过程中上线设备数量、指令周期和硬件响应时间等因素对调度周期的影响,测试中将周期定为200ms,即分给每个接收到令牌设备的时间片为200ms,不管设备状态如何。具体测试方法为:主设备连接有线网络,将从设备发往主设备的数据依次发往与之连接的PC机,PC机显示接收到的报文信息和时间并计算间隔时间。经过对实际测试数据进行分析,无线调度系统调度误差可控制在65~15ms之间,基本满足无线调度精度要求。
5 结束语
无线调度系统是基于令牌轮循的调度机制,调度策略简单实用。在系统设计中,根据嵌入式实时操作系统μC/OS-II的特点,合理划分了调度任务,同时引入了多优先级任务裁决机制,从而较好的解决了调度策略的具体实现,极大的提高了调度精度和可靠性,使无线调度平台可广泛应用于工业自动化现场。
本文创新点:分析和研究了基于ZIGBEE技术的无线调度平台的调度策略,同时为满足实时性要求和调度机制的灵活实现,引入μC/OS-II嵌入式实时操作系统来设计和管理调度任务,系统调度精度达到应用要求。
参考文献
[1]晨风著.嵌入式实时多任务软件开发基础[M].北京:清华大学出版社,2003.9
[2] Jean J. Labrosse著,邵贝贝等译.嵌入式实时操作系统μC/OS-II [M].北京:北京航空航天大学出版社,2003.5
[3]宋寅卯 张青波.基于uC/OS—II的旋转体非接触测温系统[J].微计算机信息,2005,
10-2:21-23
评论