加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

分时调度思想在单片机应用中的一个实例

时间:2013-09-08  来源:123485.com  作者:9stone

摘 要: 利用分时操作系统中的分时调度思想可以使一个多终端的系统快速响应各终端的要求。本文首先介绍分时操作系统中的分时调度思
想, 然后以程控交换机的控制系统为例, 在简介控制系统功能的基础上对用户的实时性要求进行分析, 论证了分时调度思想的可行性, 并利用
该思想进行软件流程设计, 用ATMEL 89S51 替代原PC 机完成控制, 实现程控交换机的各种功能。

1 分时操作系统概述
      分时操作系统采用时间片轮询的调度方式, 将CPU 轮流分配给各个进程使用。各进程在使用CPU 期间, 其它进程不能抢占CPU。当时间片结束时, 无论该进程是否完成, 它都必须放弃占用CPU。随后, 操作系统将CPU 分配给另一个进程使用, 直到下次循环再次到来该进程才能重新使用处理器。
      分时操作系统主要有以下几个特点:

  1.  并行性 系统能协调多个终端用户, 多个进程同时使用CPU ;
  2.  共享性 宏观上, 系统使各终端用户、各进程共享系统资源, 微观上却是分时使用系统资源;
  3.  独占性 在分时系统中, 虽然多个用户公用一个CPU , 但是只要CPU 响应的时间足够快, 轮询的时间足够短, 从用户的角度来看, CPU 是自己独占的。

       在分时操作系统中进行分时调度的主要目的是为了确保对用户响应的及时性, 即确保每个用户都能在很短的时间内获得对系统所提要求的回答。所以响应时间的长短是分时系统的一个重要功能。影响响应时间的主要因素有:

  1.  对换速度 即对外存(如硬盘, 光驱) 的访问速度和传递速度, 内存和外存的对换速度越高, 系统响应时间越快;
  2.  用户数目 即用户数越多, 划分的时间片越多, 系统的响应时间越慢, 反之越快; 因此当系统的工作环境相对简单单一, 用户数不多, 各种程序和数据所需的存储空间不大时, 虽然单片机和PC 机的CPU 运算速度不在同一个数量级上, 但是利用分时调度对单片机编程后, 每个时间片仍然划分得很小。因此, 可以用单片机代替PC 机工作, 满足各个用户的实时性要求。

2 系统工作原理
     本文用分时操作的原理以单片机为控制系统核心, 控制程控交换机完成各种功能。框图见图1:
 
图1 系统框图
       用户摘机后, 控制系统通过用户线电路中的监视电路得到用户摘机的消息, 控制交换网络向该用户送拨号音, 在用户拨第一个号码后, 停送拨号音,并存储用户所拨的号码。然后根据该用户号码进行号码分析, 找到被叫用户。确认被叫用户处于空闲状态后, 再次通过用户线电路向被叫用户话机送铃流信号使被叫话机振铃, 同时通过交换网络向主叫话机送回铃音。被叫用户摘机后, 控制系统接通双方的链路, 主、被叫进入通话阶段。一方挂机后, 控制系统拆除双方的通话链路, 使挂机方重新处于空闲状态,并向未挂机方送忙音, 催促用户挂机, 用户挂机后,停送忙音, 重新进入空闲状态。这一过程的SDL 图如图2 所示。
 
图2 程序流程图

3 软件设计
1) 分时调度的可行性分析
  虽然一次呼叫从发生到结束要经历几分钟甚至更长时间, 但是涉及CPU 工作的时间却很短。这其中的大部分时间花费在用户摘机、挂机、拨号等和交换设备的硬件动作上。因此可以把一次接通处理分成内部处理和外部处理。内部处理主要是CPU 根据收到的信息进行逻辑分析、运算、存储等, 然后发出指令让硬件动作, 工作时间以微秒计。外部处理主要是使话路系统或输出输入系统设备动作的输出处理, 包括用户动作, 工作时间以毫秒计。内部处理和外部处理时间级别上的差异为分时操作和多用户共享一个CU P 提供了可能。本例中, CPU 完成一个用户A 的呼叫处理的某一任务并发出驱动指令后, 并不等待用户A 和话路设备动作完毕, 然后继续处理用户A 的呼叫的另一个任务, 而是在用户A 和话路动作期间转去执行另一用户B 的呼叫的某一任务。
         当用户A 和话路动作完毕时, CPU 正好执行完用户B 的呼叫, 再次回到用户A 的呼叫中来, 继续执行用户A 的呼叫的下一个任务(如图3)。因此需要将一次呼叫处理流程(如图2) 合理地进行任务划分, 估算系统执行各任务的时间, 利用时间片轮询的方法使CPU 轮流执行各个任务。并在规定的时间内重新回到中断点, 继续执行下一个任务。既满足用户的实时性要求, 又使CPU 最大限度地为多个用户服务。
 
图3 任务调度图

2) 任务划分
      本例中, 用户的一次呼叫处理分为三部分: 摘挂机识别及相应处理; 收号并进行号码分析及相应处理; 时超处理。主程序为一个无限的循环, CPU 无限循环地依次执行这三大任务, 并对每个用户轮流服务。如执行到收号及号码分析任务时, 首先轮流判断每个用户所拨号码的有效性, 然后通过号码分析的结果执行相应的处理。通常, 用户摘机后系统要立刻送去拨号音, 用户以最快的速度拨号时(即位间隔最小时) , 系统也能无遗漏地收到号码并存储起来进行分析。基于以上实时性的要求, 应使摘挂机轮询和收号轮询时间为10m s 一次。因此应使CPU 每5m s 就
执行一次摘挂机识别的任务或收号任务。而时超处理是秒级的, 允许毫秒级的延时。因此在程序设计中, 应着重考虑前两个任务的执行时间。用户不同的动作导致摘挂机识别任务和收号任务执行不同的程序, 花费不同的时间。估算各个任务的执行时间时,应以任务的最长执行时间为准。要保证摘挂机轮询和收号轮询时间为10ms 一次, 就是要保证即使在最不利的情况下(即各个任务都是最长的执行时间时) , CPU 前后两次执行摘挂机识别任务和收号任务的时间间隔仍然在10m s 内。时超处理的基本步长为1 秒, 因此时超任务每500m s 执行一次就可以了, 如图4 所示。
 
图4 任务流程图
      任务流程图中各种计时器用单片机的内部定时器实现。内部定时中断可能发生在任何一个任务的执行过程中, 中断子程序只是将计时器进行简单地加1 操作, 和整个任务的执行时间比较起来中断处理时间可以忽略不计, 系统的实时性不会受到影响。

3) 软件的开发平台与环境
      为了增强程序的可读性, 本例中对单片机编程时采用的是C 语言。相应的编译器为Frank linC51。由于A TM EL 89S51 不支持在线编程, 因此在程序调试阶段使用WAVE 系列仿真器中的POD87C52仿真头仿真89C51, 在W indows98 下用WAV E6000 进行仿真, 该仿真器支持在线编程, 而且可以通过设置断点观察程序的运行过程及各种数据的变化, 调试起来很方便。调试完成后, 直接将生成的二进制文件烧写入单片机中即可。

4 结束语
      分时调度思想在一定的实时性要求下, 对于多路重复控制的系统具有很好的实用性。本例利用该思想成功用单片机代替计算机作为程控交换原理实验箱的控制系统, 完成了4 部话机用户的各种呼叫接续任务。实践证明, 使用话机的自动拨号键时(最快的拨号方式) , 系统仍可以毫无遗漏的收到用户的号码, 并完成接续任务。因此系统的响应速度满足实际用户的需求。


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门