智能仪表:一种嵌入式微调度器的应用

发布者:NanoScribe最新更新时间:2011-08-16 关键字:智能仪表  微调度器 手机看文章 扫描二维码
随时随地手机看文章
  智能仪表是自动控制技术的重要组成部分。随着智能仪表在工业控制、通信和汽车电子中的广泛应用。

  智能仪表逐渐向数字化、网络化、智能化方向发展;同时,智能仪表复杂度不断增加,对实时性要求几乎达到了苛刻的程度。在编程方式和代码重复利用等方面,超循环方式的智能仪表越来越不能满足资源管理和系统的实时要求,迫切需要在中低端智能仪表中加入一些轻量级的多任务管理的调度器或实时操作系统。本文根据智能仪表对嵌入式操作系统的特殊要求设计了一种新的任务调度算法,并实现了一个应用于中低端仪器仪表的嵌入式微调度器。

  1实时任务调度的一般方法和策略

  在实时操作系统中,系统把应用分为行为可以预知的、功能确定的多个任务。每个任务一般处于3种状态;执行状态、就绪状态和等待状态(有的操作系统还具有挂起和休眠状态)。为了满足实时性要求,系统根据一定的原则选择合适的任务执行。

  常见的任务调度算法分为静态算法和动态算法两类:

  ①静态算法:在系统在运行前(即系统初始化阶段),就为所有的任务分配固定的优先级别,在系统执行过程中优先级保持不变。当一个事件发生时,调度程序只需要查就绪表,就可以调度哪个任务处于运行状态。

  ②动态算法:在系统初始化时初步分配一个优先级。每一个任务在运行时可以改变它的优先级。

当前的嵌入式操作系统一般采用静态算法,只在处理优先级反转时临时采用动态优先级算法。

  2仪器仪表对调度算法的要求

  为了提高仪表的可靠性,实现高性能、多功能应用,应用于智能仪表的调度器必须满足以下要求:

  ①良好的实时性。智能仪表必须实时地对通过现场总线采集的数据进行数字编码,通过人机界面进行显示,并把用户对被监控系统的参数设置实时地传送给执行部件。

  ②基于优先级的任务调度策略。在复杂的大规模应用中需要使用大量的传感器、执行器和控制器等,对其数据显示和传输控制需要通过不同优先级的任务来控制。

  ③低消耗要求。随着应用环境的复杂化,对智能仪表的计算能力要求越来越高,势必要求调度器必须占用较少的系统资源。

  ④低成本要求。为了降低成本,在硬件设计上,存储器的大小是成本控制的一个方面。因此,要求提供的调度器必须具备小内核以减小存储空间。

  此外,还要求调度器必须有精确定时的功能,也就是事件驱动和时钟驱动相结合,以满足智能仪表中周期性任务执行和突发性任务执行的需要。

  3嵌入式微调度器的设计与实现

  根据智能仪表对调度算法实时性、多任务、低消耗的要求,本文提出了一种新的静态优先级,单任务队列、具有4种任务状态的非抢占式调度的轻量级任务调度算法,并根据这种算法实现了应用于智能仪表的调度器。
  

  该算法的特点是以任务在任务控制块数组中的相对位置表示优先级高低,任务的状态和延时量使用统一的任务状态字,在少量任务的轻量级应用中具有很好的时间和空间性能。
  

  3.1任务的状态

  在本调度器中任务有4种状态:就绪状态、运行状态、等待状态和挂起状态。内存中的任务必须处于这4种状态之一。

  就绪状态:指任务运行的时间条件和资源条件都满足,等待调度算法选择最合适的任务进入就绪状态。任务一旦建立就处于就绪状态,这一点和μC/OS-II相同。

  运行状态:是当前时刻任务占有CPU资源正在运行的状态。本调度算法选择进入就绪任务队列中优先级最高的任务运行。任何时刻只能有一个任务处于运行状态。

  等待状态:如果任务需要等待一段时间才能运行,那么这个任务当前处于等待状态。使任务延迟一段时间可通过调用Os_TasK_Delay()函数实现。调度器在每个系统时钟节拍检查任务延迟时间,一旦任务定义的延迟时间到,就使任务进入就绪状态。

  挂起状态:正在运行的任务需要等待某一事件的发生,如果该事件没有发生那么任务就处于挂起状态。事件的发生可能来自另外一个任务,也可能来自中断服务程序。

  除此之外,系统还可能处在中断服务状态。这是一种特殊的运行状态,当系统响应中断时,正在执行的任务被挂起,中断服务程序控制了CPU的使用权,系统就进入中断服务状态。

  其中,空闲任务优先级最低,而且永远处于就绪状态,而且当所有的任务都在等待事件发生或者延迟时间结束时,操作系统就会执行空闲任务。

  3.2调度器核心数据结构

  3.2.1任务控制块和任务控制块列表

  任务控制块由任务堆栈、任务入口地址、任务状态字和任务优先级4个部分组成。任务堆栈用于保护被中断的现场数据;任务入口地址是指向任务程序的指针,用于指定任务所进行的操作;任务状态字用来表示任务当前的状态和延迟的时间间隔;任务优先级表示就绪列表中的哪个任务可以优先进入运行状态。

  在整个调度过程中使用一个全局的任务控制块数组来表示任务控制块列表。每个任务使用唯一一个任务控制块表示,任务的优先级通过任务控制块在任务控制块数组中的相对位置来表示。每个任务有且仅有一个优先级,所以任务的优先级也可以用任务的ID号来表示。 

关键字:智能仪表  微调度器 引用地址:智能仪表:一种嵌入式微调度器的应用

上一篇:无线传感器网络技术在人体参数采集中的应用
下一篇:RFID技术在港口集装箱物流中的应用

推荐阅读最新更新时间:2024-05-02 21:32

基于Modbus协议实现PLC与智能仪表的通讯
1 引言   Modbus 协议是法国施耐德公司推出的一个全开放的“主从式(Master/Slave)”通讯协议,其本意在于实现上位机(主设备)对PLC(从设备)内部存储区域的“直接”读写操作,无需用户对PLC进行通讯编程。随着工业自动化技术的不断发展,Modbus协议现已不仅仅局限于应用在PLC/上位机之间的通讯上,许多智能仪表厂商也纷纷采用该协议作为自己产品的通讯协议。与此同时,PLC也由以前单纯的I/O控制发展成为集控制、数据采集、通讯为一身,在越来越多的自动化工程中,PLC需要取代上位机,作为“主设备”来完成与智能仪表或其它支持该协议的PLC的通讯。针对这一情况,施耐德公司在其编程软件Concept2.2+补丁程序Se
[嵌入式]
智能仪表多字节二进制数转换BCD码
    摘要: 多字节无符号二进制数转BCD码在以单片机为核心的智能仪表中应用很普遍。本文介绍一种新的转换方法,并给出三字节二进制数转BCD码的源程序,该程序执行时间仅为原来的1.3%,效率提高显著。     关键词: 多字节二进制整数  BCD码  转换 一、引言 在以MCS-51单片机为核心的智能仪表系统中,常遇到二进制整数转换为BCD码的情况。国内许多单片机书籍都对此进行了介绍并给出了子程序,但效率不高。本文参考文献作者剖析了二进制整数转BCD码的子程序,分析了程序效率低的原因,给出了改进后的源程序,效率有所提高。以3字节的二进制整数为例,程序执行时间由2.856ms减小到2.410ms。还有没有其它的
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved