zoukankan      html  css  js  c++  java
  • 电梯系统中实时控制软件系统的案例分析

    电梯系统中实时控制软件系统的案例分析

           简化的电梯系统(不考虑轿厢启停的速度控制等)的输入信号包括:超重、报警、到达响铃、关门阻挡信号检测、轿厢内的目的楼层请求按钮、每层的上升召唤按钮、每层的下降召唤按钮、每层的楼层行程开关、开门按钮、关门按钮、开门限位开关、关门限位开关;输出包括:目的按钮指示灯、上行召唤按钮指示灯、下降召唤按钮指示灯、轿厢上升、轿厢下降、到达楼层显示灯、开门、关门、当前电梯状态显示灯。可把系统状态划分为三种:空闲态、上升态、下降态。其电梯调度算法描述为:电梯在运行中服务于同方向上的请求,中途不改变其运动方向,除非它完成了所有同方向上的请求任务。

          强实时功能需求即是指必须在规定的时间内完成。若有任务未在截止期限内完成,则会造成不可估量的损失。所以对于超重和报警信号的响应是有强实时需求的。这种任务的响应时间在毫秒或微秒级。此外目的按钮指示灯、上行召唤按钮指示灯、下降召唤按钮指示灯、轿厢上升、轿厢下降、到达楼层显示灯、开门、关门、当前电梯状态显示灯等也是需要实时响应的。这种任务的响应时间可以是毫秒到秒的数量级。

       尽管运送服务不是实时的,但是对用户输入的确认响应是实时的。当用户按下按钮时,控制系统立即点亮与上行召唤、下行召唤、目的按钮对应的指示灯,实时响应确认用户请求, 并注册这个请求。此后,控制系统按照用户请求移动轿厢,到达有请求的楼层时停止移动轿厢,自动开门,完成对用户的服务,并熄灭相应的指示灯,注销请求。这种呼叫显示及用户请求注册功能构成一个全局实时任务,在电梯正常工作状态中该任务都需要实时执行。

       电梯轿厢在运动时需要实时监测,显示当前到达楼层,判断是否有注册的请求,以便在有请求的楼层停止。到达楼层是通过安装在各层的行程开关检测的,为了显示楼层数码和判断是否到达目标楼层,当前楼层用数字量表示。程序中通过编程把行程开关输出量变换成相应的楼层的数字并显示,这个功能构成了“当前层更新”的全局实时任务。

           除了上面的全局实时任务还有局部的实时任务,比如在上升(下降、空闲)态中轿厢运动过程中停止的判断及停止动作的执行等。局部顺序控制任务相互没有重叠,但只有一个在运行。全局实时任务一直在运行。上升态、下降态、空闲态任务中通过置位门控制使能变量来启动门控制任务。门控制完成后复位门控制使能变量,以便需要任务同步的任务得到当前的状态。

       这几个实时任务都是事件触发的。且这几个实时任务之间存在一定的依赖关系,当用户请求注册后,控制系统对其输入进行确认响应并按照其请求移动轿厢和开关门。到达楼层后实时显示楼层号。呼叫显示及用户请求注册完成请求的响应和请求信息的注册,对用户的服务在任务的上升和下降态中完成。任务之间的通信可使用共享内存的方法实现,即呼叫显示及用户请求注册任务置位相应变量,上升态下降态查询相应变量并完成“当前层更新”,完成服务后复位变量。

  • 相关阅读:
    mysql source 乱码
    php5.6.11 openssl安装
    python threading模块的Lock和RLock区别
    python多线程一些知识点梳理
    多核处理器中进程和线程是如何一起工作的?
    IO是否会一直占用CPU?(转)
    Python TypeError: __init__() got multiple values for argument 'master'(转)
    Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解(转)
    浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序(转)
    为什么有的网页右击没有出现审查元素
  • 原文地址:https://www.cnblogs.com/u201310615/p/6107332.html
Copyright © 2011-2022 走看看