首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于μC/OS-II的无线调度策略分析与实现

基于μC/OS-II的无线调度策略分析与实现

关键字:无线调度 μCOS-II 优先级裁决
引言
在工业自动化中,设备信息的接收发送基本都是通过有线方式(串口,网口等)来进行传递,随着无线通信技术的发展,信息通过无线方式传递应用逐渐广泛,特别是在有线布线困难或条件恶劣的特殊工业现场。本文介绍了基于无线技术的通信平台,引入嵌入式实时操作系统μC/OS-II来实现对多个设备的无线调度。
1 无线调度平台
无线调度平台信息接收发送是基于ZIGBEE无线通信技术,ZIGBEE具有较强的网络构建功能,支持星型,树型,网状拓扑结构。图1所示为基于星型拓扑结构的无线调度平台系统,调度系统包括一个调度设备和多个节点,调度设备负责微网的调度和数据包的转发,该设备在系统中充当主设备;节点连接工业设备,在系统中充当从设备,在调度设备的调度下发送信息。基于ZIGBEE技术的星型网络必须具备唯一主设备,从设备数量不超过253个,设备号(节点号)可从1 至254, 0和255做特殊用途。网络中所有设备必须设置为相同的网络号,目的是使所有设备处于同一网段,同时还要求每个设备号在该网段中必须是唯一的。2.2嵌入式实时操作系统调度管理
为完成调度机制的灵活实现,提高系统调度实时性,这里采用嵌入式操作系统对系统进行管理。μC/OS-II是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统,其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。它适用于小型控制系统,具有执行效率高、占有空间小、实时性能优良和扩展性强等特点,最小内核可以编译至2K左右。
µC/OS-II实时内核采用占先式调度策略,不支持时间片轮调度法,核心是始终运行就绪条件下的优先级最高的任务。在具体实现中就可以根据这一特点将无线调度系统划分为多个任务,每一个任务赋予一个明确的并且与其他任务不同的优先级,根据各个任务的优先级,动态地切换各个任务,从而保证了对实时性的要求。如果希望某个任务的优先级根据条件的变化而发生改变,则可以通过调用改变任务优先级的函数来实现。
3  调度任务划分及设计
3.1多任务划分
任务和中断的划分主要根据调度平台设备完成的功能来划分,要求每个任务职责清晰,任务间的信息交换和同步互斥应该简洁明了,任务优先级定义明确。
无线调度平台设备任务可划分为四个任务:设备声明任务,信息分发任务,信息接收任务,令牌轮循任务。设备声明任务主要完成设备身份认证,设备在网络中声明是主设备还是从设备,如果是主设备则进行调度平台星型网络的组建,从设备则直接加入新组建的网络。信息分发任务作用是将当前网络状态、设备状态和数据信息发送网络中指定设备。信息接收任务是依靠串口中断来触发的,作用是接收网络中的数据信息和主设备发送的或从设备返回的令牌。令牌轮循任务主要是针对主设备,当调度网络组建完成,主设备根据网络中节点信息(单独开辟存储区存储的节点号)进行令牌信息分发,一般情况是根据节点号从大到小,得到令牌的节点才是当前网络中的活动节点。对于从设备,令牌轮循任务仅完成令牌返回功能。
3.2多任务优先级裁决
在多任务系统的设计中优先级的裁决至关重要,如果优先级设定有误,难以保证调度策略的正确实施,严重影响调度精确性。基于μC/OS-II操作系统的任务优先级设计遵循以下原则:(1)紧急任务优先,(2)完成得快的任务优先,(3)优先级不能动态变化,(4)不要出现多个同一优先级的任务。
基于以上四点原则,分析无线调度系统任务,安排任务优先级示意图如图3所示,任务优先级由高至低依次为:信息接收任务,令牌轮循任务,信息分发任务,设备声明任务。在系统任务中设备声明任务只需定期进行发送声明信息,表明设备在线,其周期较长,故可安排较低优先级;信息接收任务由中断触发,为了提高调度精度,防止中断延迟时间过长,可安排信息接收任务为较高优先级,当中断发生确保能较快的切换到信息接收任务接收信息。令牌轮循任务功能单一,处理时间较短,故安排优先级高于信息发送任务。

图3 任务优先级示意图


μC/OS-II是基于抢占式内核,当一个任务正在执行时,如果任务就绪表中有更高级别任务就绪,就中止当前任务切换到高优先级任务。如图3所示,信息分发任务在执行过程中,信息接收任务就绪,系统立刻中止信息分发任务,保留当前状态在堆栈中,然后切换到高优先级的信息接收任务,信息接收完成再返回到信息发送任务继续执行。
3.3任务间信息交换和同步设计与实现
在嵌入式多任务系统中,多任务之间信息交换和同步主要通过消息邮箱、消息队列以及信号量来完成,μC/OS-II分别提供了相关函数供用户调用,如任务,消息,信号量的创建,消息和信号量的请求和发送等。
根据调度策略无线调度平台主从设备信息交换设计图如图4所示:


任务间信息交换和同步设计是无线调度机制实现的重要环节,在具体实现过程中主要利用μC/OS-II的消息队列函数,其中OSQPend()为消息请求函数,OSQPost()为消息发送函数。
串口中断与信息接收任务间通过消息队列进行信息传递代码实现如下,SERIAL2RecData作为是否接收信息标志位,由中断置位,有信息接收时,串口服务程序向信息接收任务发送消息。
void SERIAL2_ISR(void) interrupt 20                              //串口接收中断服务程序
{   SERIAL2RecBuffer[SERIAL2RecBufferTail] = SBUF1;
       SERIAL2RecData = 1;                                             //接收数据标志位                       
}
void task_serial2(void)   ADD_REENTRANT                //串口服务程序
{     if(SERIAL2RecData == 1)
OSQPost(bt_msg_queue, (void *)pmsg);
}接收任务与发送任务间通过消息队列进行消息传递代码实现如下,当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


图1:无线调度平台系统图
2 无线调度策略
2.1调度机制
星型网络的无线调度平台使用令牌机制,获取到令牌的设备才可以发送数据包。令牌调度机制中最关键的是对令牌的处理,在具体实现中由主设备(调度设备)产生并轮询发送。主从设备的分工是通过设备声明报文来区分,主设备获取从设备的设备号和其他设备信息进行星型网络的组建,在网络中充当主设备;从设备获取主设备的设备号和网络号,加入网络,并在网络中充当调度对象,同时可以接收主设备发送的令牌,并在有信息需要转发时,将该信息发往主设备。
图2所示为无线调度策略图,调度周期为时间间隔Δt,设备将令牌轮流交给每个从设备(可以按设备号大小排序),从设备如果有数据包要发送,则返回一个正响应,并发送所有数据包,然后将该令牌交还主设备,表明数据包发送完毕;如果没有数据包发送,则返回负响应,主设备保持该令牌。当令牌丢失时,根据调度周期设置一个超时,超过时间主设备重新生成一个令牌继续发送给下一个节点号的从设备。
返回列表