邹琴-毕业论文

更新时间:2024-06-02 09:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

分类号:TP31 U D C:D10621-408-(2008)1928-0 密 级:公 开 编 号:2004031033

成都信息工程学院

学位论文

电梯控制系统的仿真设计

论文作者姓名: 申请学位专业: 申请学位类别: 指导教师姓名(职称): 论文提交日期:

邹琴 计算机科学与技术

工学学士 刘双虎(讲师) 2008年6月3 日

电梯控制系统的仿真设计

摘 要

本课题是以现有的建筑中电梯控制及运行的情况为设计电梯控制系统的参照准则,设计仿真系统。目的在于深刻理解电梯的运行控制过程,熟练掌握运用单片机设计仿真系统的过程,且能更好的理解电梯调度的算法。在已有的电梯群控算法研究中,选择适合的调度算法用于本系统,在此基础上,加入自己的理解和改进,这是本课题设计的意义所在。以两台六层楼电梯为仿真设计对象,以AT89C51单片机为核心,辅以相应的软硬件,设计仿真电路图,用LED和数码管输出显示,以此来表征电梯的各种运行状态及规律。利用电梯群控算法的一些思想来实现双路电梯的控制,较为真实的模拟出用于6层建筑的双路电梯的控制系统。该系统体积小,运行稳定,在传统“忙梯”算法上有一定的改进。软件的设计过程采用模块化的编程思想,条理清晰,模块功能分明。

关键词:双路电梯;电梯调度;单片机仿真;并联电梯算法

The Simulation Design of Elevator Control System

Abstract

This issue is based on the reference criteria of the elevator control and operation of the elevator control system in existing building to design the simulation system. The aim is to deeply understand the operational control process of lift, and master the design process of simulation system with microcontroller and the various scheduling algorithm of elevator. On the basis of existing elevator group control algorithm, I select the appropriate algorithm and improve it, which is the significance of the design. We choose two parallel connection elevators of six floors as the simulation design object, the 80C51 microcontroller as the core, supplemented by the appropriate hardware and software, then design simulation circuit, setting the output display with LED, in order to show the characterization of the various running. Using a number of ideas of elevator Group Control algorithm achieve reasonable control to the two parallel connection elevators, actual simulating the control system for two parallel connection elevators in six-storey building. The system is small, stably operated, and has some improvements based on the traditional \staircase\algorithms. The design process of the software adopted the modularization programming ideas, and rather be clear consecution, distinct function.

Key words: dual lifts; elevator scheduling; microcontroller simulation; parallel

connection elevator algorithm

目 录

论文总页数:36页

1 引言 ............................................................................................................................. 1 1.1 课题背景 ............................................................................................................... 1 1.2 国内外研究现状 ..................................................................................................... 1 1.3 本课题研究的意义 ................................................................................................. 2 1.4 本课题的研究方法 ................................................................................................. 2 2 开发工具简介 ............................................................................................................... 3 2.1 AT89C51单片机 ...................................................................................................... 3 2.2 编程软件 ............................................................................................................... 3 2.3 模拟软件 ............................................................................................................... 3 3 需求描述 ...................................................................................................................... 4 3.1 模拟对象 ............................................................................................................... 4 3.2 按钮情况 ............................................................................................................... 4 3.3 运行状态显示情况 ................................................................................................. 4 3.4 电梯控制系统功能要求 .......................................................................................... 4 3.4.1响应外部请求功能 ........................................................................................... 4 3.4.2 响应内部请求 ................................................................................................. 5 3.4.3 显示信息功能 ................................................................................................. 5 3.5 用户特点 ............................................................................................................... 5 3.6 使用频度 ............................................................................................................... 5 3.7 处理流程 ............................................................................................................... 6 4 仿真电路图设计............................................................................................................ 7 4.1 设计仿真电路图 ..................................................................................................... 7 4.2 仿真图说明 ............................................................................................................ 7 5 系统结构设计 ............................................................................................................... 9 5.1 模块设计 ............................................................................................................... 9 5.2 系统处理流程 ...................................................................................................... 10 5.3 系统结构描述 .......................................................................................................11 5.4 功能与程序的关系 ................................................................................................11 6 单片机编程................................................................................................................. 12

6.1 单片机引脚使用情况 ............................................................................................ 12 6.1.1 从机引脚使用说明 ........................................................................................ 12 6.1.2 主机引脚使用说明 ........................................................................................ 12 6.2 串行通信 ............................................................................................................. 12 6.2.1需求概述 ....................................................................................................... 12 6.2.2 串行通信概述 ............................................................................................... 13 6.2.3 本设计中的串行通信具体说明....................................................................... 13 6.3 中断 .................................................................................................................... 13 6.3.1 需求概述 ...................................................................................................... 13 6.3.2 中断概述 ...................................................................................................... 13 6.3.3 串行通信中断 ............................................................................................... 14 6.3.4 定时/计数器中断........................................................................................... 14 6.4 定时器设置 .......................................................................................................... 14 6.4.1 串行通信定时设置 ........................................................................................ 14 6.4.2 定时/计数器设置........................................................................................... 14 6.5 行列式键盘 .......................................................................................................... 15 6.5.1段数码管动态扫描显示 .................................................................................. 15 6.5.2 LED灯泡显示 ................................................................................................ 16 7 软件设计概述 ............................................................................................................. 17 7.1 软件设计总体流程 ............................................................................................... 17 7.2 电梯群控概述 ...................................................................................................... 18 7.3 忙梯算法 ............................................................................................................. 18 7.3.1算法概述 ....................................................................................................... 18 7.3.2 算法评价 ...................................................................................................... 19 7.3.3 算法的改进之处............................................................................................ 19 7.4 电梯调度算法流程 ............................................................................................... 21 7.5 程序代码及说明 ................................................................................................... 21 7.5.1 确定请求类型函数 ........................................................................................ 21 7.5.2 运行参数设置函数 ........................................................................................ 23 7.5.3 外部请求处理函数 ........................................................................................ 24 7.5.4 电梯调度算法 ............................................................................................... 25 8 测试 ........................................................................................................................... 27 9 评价 ........................................................................................................................... 32

9.1 总体评价 ............................................................................................................. 32 9.2 缺陷与不足 .......................................................................................................... 32 9.3 需改进之处 .......................................................................................................... 32 结束语 ........................................................................................................................... 32 参考文献........................................................................................................................ 34 致 谢........................................................................................................................ 35 声 明........................................................................................................................ 36

1 引言

1.1 课题背景

电梯是现代生活中必不可少的高层建筑垂直交通的工具。随着生活水平的不断提高,高层建筑规模的不断扩大,出现越来越多的电梯公寓,电梯办公楼,且人们对电梯运行的效率要求也越来越高。电梯客流量的不断增多,单部电梯已经远远不能满足及时高效的要求。因此,高层建筑的电梯大多采取双路或多路电梯共同作业的方式。然而仅靠电梯数量的增加,不仅不能满足现代楼宇的多种要求,还会带来诸如环境污染、能源消耗、运行效率低的问题。于是,多路电梯并联的控制问题则成了首要应解决的问题。为了进一步的提高电梯运载效率,更好的为乘客服务,合理的电梯的调度算法,则成为了研究的重点问题。电梯群控技术,则是在这样的背景下提出的,用来解决复杂的、非线性、不确定性的多目标随机决策问题。电梯群控技术对改善电梯控制方式,提高运载效率有很大的意义,能在提高系统服务质量和运营效率的同时降低能耗。当前电梯群控技术的研究有丰富的成果,比如基于神经网络算法控制的,基于模糊算法的解决方案,考虑乘客混杂度的电梯智能群控算法,多目标优化的群控算法等等。本课题基于现有楼宇中的双路电梯控制系统和前人群控算法研究的背景来设计实施的。

1.2 国内外研究现状

从有关的文献看,对于电梯控制系统的单片机仿真设计不太多,注重单片机等有关电子器件的使用和电路设计。另一方面,由于现代高层楼宇的电梯大都采用两台或三台甚至多台电梯集中排列并列调度的方法,所以电梯群控技术成为这一领域研究的重点问题。电梯群控系统是通过对电梯群的运行状态进行实时监测与分析,再根据不同的实际情况对各电梯进行优化调度和合理分配,进而实现电梯系统对乘客的服务质量和服务效率的改善和提高的目标。国内外对于电梯群控技术的研究有较为丰富的成果。在中国期刊全文数据库中,及中国优秀硕士论文全文数据库中可以找到的有关电梯群控技术的相关文章较多,大体分为以下几种研究方向,基于遗传算法的电梯群控系统研究、基于模糊神经网络的电梯群控系统研究,多目标优化的智能调度算法研究及人工智能在电梯群控系统中的应用等。国外也有众多关于电梯群控技术的相关文献,在MERL的网站上,和IEEE Explore的网站上都可以查

第 1 页 共 36 页

阅到许多关于电梯群控技术的文献。国内外的研究都注重电梯运行效率的提高,努力达到实时高效运行的目标。

1.3 本课题研究的意义

本课题的研究有五个方面的意义:首先,仿真图的设计,能提高设计者对模拟软件的熟练使用程度,且在对电梯仿真的过程中,锻炼设计者尽量使用简洁明了的方式来表征电梯的运行过程。其次,单片机编程,通过这个细致的工作过程,能对单片机的各种功能、使用方法、各种规范有进一步的理解,对其应用也更加熟悉。再次,电梯调度算法的设计和实施,这是本课题研究的核心部分。通过对电梯运行及控制深入的了解,归纳出电梯运行的规范,在深刻理解的基础上采用合适的算法解决。通过这个过程,提高的设计者在算法实现过程中的逻辑思考及模块化的编程能力,而且对于算法的进一步改进,提高了原有算法的效率,这是在课题研究过程中收获颇大的一个方面。最后,整个设计过程是逐步有序进行的,需要统筹安排及合理布局,这样锻炼了设计者在软件设计实现过程中使用软件工程的思想及方法有效完成工作的能力。

1.4 本课题的研究方法

由于两部电梯之间的相互关联性很强,程序设计比较复杂,因此在双电梯联动控制系统的软件部分时,主要采用8位单片机编程,用模块化的编程思想来进行设计。这样有利于突破沿用继电器构成的线路的局限,利用微处理器强大的算术逻辑运算和通信功能,采用实时调度算法,实现快速服务,达到较佳的运行效率。

设计过程分为三个步骤进行,一是仿真图设计,二是单片机编程,三是电梯调度算法。在仿真图设计完成的基础上,采用模块化的编程思想,完成显示模块,按键模块及通信模块三个与单片机联系密切的模块的编程。然后在模拟软件上测试连线及各部分输入输出的连线及输入输出正确与否。在这些工作全部完成的情况下,完成电梯调度算法模块的编程。最后在仿真软件是上模拟实施,同时测试运行情况,若发现问题,则再修改程序,逐步完善。由于电梯控制系统实际上是一个人机交互式的控制系统,因此单纯采用顺序控制或逻辑控制是不能够满足要求的,而应该在设计中采用随机逻辑控制方式。

第 2 页 共 36 页

2 开发工具简介

2.1 AT89C51单片机

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本,其特点是:与MCS-51 兼容 ,8位CPU,片内带振荡器,频率范围1.2MHz~12MHz、片内带128字节的数据存储器,片内带4KB的程序存储器,程序存储器的寻址空间为64KB,片外数据存储器的寻址空间为64KB,有21个字节特殊功能寄存器,4个8位并行I/O口,2个16位定时/计数器,2个优先级别的5个中断源,1个全双工的串行I/O接口,可多机通信。

2.2 编程软件

Keil uVision:Keil uVision为一款单片机的开发软件,支持汇编语言及高级语言的开发。Keil软件是目前最流行开发MCS-51系列单片机的软件。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM,20M以上空闲的硬盘空间,WIN98、NT、WIN2000、WINXP等操作系统。

2.3 模拟软件

Proteus:Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,具有原理布图、PCB自动或人工布线及电路仿真的功能。他的电路仿真是互动的,针对微处理器的应用,能直接在基于原理图的虚拟原型上编程,并实现软件源码的实时调试,如有显示及输出,还能看到运行后输入输出的效果。

第 3 页 共 36 页

3 需求描述

3.1 模拟对象

仿真设计的模拟对象为学院图书馆的双路电梯,共6层及-1层。

3.2 按钮情况

每层楼的电梯门外有向上和向下的要梯按钮各一个(6楼只有向下的要梯按钮,-1楼只有向上的要梯按钮)。按下按钮,按钮灯亮,表示请求已被记录,再次按下,则灯熄灭,表示请求取消。两个电梯轿厢内有11个按钮,分别有表示-1楼至6楼的共7个楼层请求按钮,开/关门按钮2个,报警按钮1个,呼叫按钮1个。楼层及开/关门按钮都是按下时亮,再次按下时熄灭。报警及呼叫按钮在异常情况下使用。

3.3 运行状态显示情况

电梯外部和轿厢内都有显示屏幕,显示电梯运行到哪一层,同时还显示当前电梯的运动方向。若电梯停在某一层,则电梯运动方向无显示,只显示当前楼层号。内外对于运行情况的显示是相同的。

3.4 电梯控制系统功能要求

3.4.1响应外部请求功能

能响应用户在电梯外的乘梯请求,从两路电梯中选出路径最短,代价最小的一路电梯到达用户所在楼层。具体细则如下:

1) 外部请求响应规则:

(1) 若电梯运行向上,在上行方向上有多个向上用户请求,则按

顺序先响应最近端的请求。若为多个向下请求,则按顺序从最远端开始响应。

(2) 若电梯运行向下,在下行方向上有多个外部向下请求,则从

近端开始响应,多个向上请求,则从最远端开始响应。

2) 电梯响应外部请求时,应先遍历电梯当前楼层以上或以下的楼层是否有请求信号(若有向下请求,则遍历当前楼层以下的所有楼层,反之,则相反)按规则1)响应,到达响应有请求的楼层。

3) 当电梯响应了某楼层的外部请求,此时在相同方向上更高(更低)

第 4 页 共 36 页

的楼层又有请求出现,则作为中断处理,按响应规则,先响应更高层(更低层)的请求。执行完后,在转回执行之前未完的请求。 3.4.2 响应内部请求

能响应用户在电梯内的楼层选择,到达乘客想要到达的目的楼层的请求。能响应单个,也能按顺序响应多个合理请求。具体细则如下:

1) 当用户选择要达到的楼层不在用户所选择的方向上,且该方向上沿途还有其他用户的相同方向请求(如用户请求到达的楼层高于当前电梯楼层数,且用户在外部发出的请求是向下的,而且在下行方向是还有其他用户的向下请求)则不予响应。当用户选择要达到的楼层不在用户所选择的方向上,且该方向上沿途没有其他用户的相同方向请求,则响应。

2) 当用户选择要达到的楼层为用户所在楼层,视为不合理请求,不予响应。

3) 若在同一方向上,同时有多个合理请求,则按顺序完成,即若向上运行,则响应的请求顺序为从低到高,若向下运行,则响应请求顺序为从高到低。

3.4.3 显示信息功能

能对电梯的运行状态做实时显示。

1) 在电梯外部能显示电梯当前电梯运行的方向,当前所在楼层。 2) 能显示当前外部的请求。

3) 在电梯内部能显示电梯当前电梯运行的方向,当前所在楼层。 4) 能显示用户在电梯内部的内部请求,即用户目的地。

3.5 用户特点

普通用户:出入图书馆的学生、老师、工作人员及来访者及电梯维护人员。人员无具体限制,(严重心脏病,高血压,及精神病患者需有人陪同)只要有乘坐电梯需要的用户,均会使用到该系统,为最终操作人员。

维护人员:需要有电梯维修的技术专长,为被指定的维修人员。

3.6 使用频度

因人流量大,软件使用频率很高。每天从早上8点至晚上10点,中间不

第 5 页 共 36 页

间断作业。

3.7 处理流程

处理流程主要通过数据流图来表现,如图3-1和图3-2。

请求信号用户故障情况电梯反馈信息图3-1数据流图第一层

P选择楼层O到达用户楼层反馈A 外部请求用户1判断电梯空闲否B空闲信息2空闲启动C请求楼层3在用户层停C请求楼层N运行方向及楼层反馈K到达楼层A外部请求用户K到达楼层1判断空闲否E无空闲4判断运行方向F请求方向5选择同向电梯响应D启动信息I不合理请求反馈9J到达楼层8运行H正确楼层请求M故障7判断请求的合理性G楼层信息信息6接收请求信号显示信息M故障10报警故障情况图3-2 数据流图第二层

第 6 页 共 36 页

4 仿真电路图设计

4.1 设计仿真电路图

根据考察的电梯运行情况,设计电路图,要求直观,简洁,操作简便。仿真图如图4-1所示。

RP21Ax为开门。----为关门U319AXTAL11P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161723456789741ONC185202963=3RP1B741ONC185202963=318CU219XTAL1XTAL2B9DRESPACK-8RST+418XTAL2C9RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373635343332212223242526272810111213141516176↓5↑5↓4↑4↓3↑23456789D4RESPACK-8LED-GREEND11LED-REDD+4293031PSENALEEA29303112345678PSENALEEAD1LED-GREENP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C5112345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51D8LED-REDD2LED-GREEND7LED-RED6↓↑5↓↑4↓↑3↓↑2↓↑13↓2↑2↓1↑D5LED-GREEND9LED-REDD3LED-GREEND6LED-RED图4-1仿真电路图

4.2 仿真图说明

1) 从机:图4-1中左边的单片机为从机,负责数据采集。

(1) 两列按键:共10个,表示每层电梯外部的向上和向下的要梯请求

按钮。左边一列的5个按键表示1-5层的外部向上按键。右边一列的5个表示2-6层的外部向下按键。这样将对每层按钮的模拟按键集中在一处,便于操作和模拟时便于观察。实际电梯有6层再加上-1层。为设计和表示的方便,只取了6层,没有设计-1层。

(2) 两个4x4键盘按键:表示电梯的内部按键,左边键盘表示左边电

梯内部按键,右边键盘表示右边电梯内部按键。电梯内部有1-6楼的楼层选择按键,还有开/关门的按键,共8个。故选用键盘的

第 7 页 共 36 页

中间两排,1-6数字按键就表示相应的楼层号,x表示关门,—表示开门。这里没有设计报警和呼叫按键。其原因是因为:其一、这两个按钮只在异常情况下使用,不常用。其二、对报警和呼叫按钮的模拟只需添加一个蜂鸣器,按下键则发出蜂鸣声来表示报警或者呼叫,设计相对简单。因为两片单片在主要的功能实现完后,I/O口已经不够用了,所以就省略了该功能。

2) 主机:图4-1中右边的单片机为主机,负责数据处理和显示。

(1) 蓝色八段数码管:共8个,一组4个。显示的数字表示在电梯内

部用户选择的目的楼层号。左边数码管的显示表示左边电梯用户的选择,右边的数码管则相应表示右边的楼层选择。电梯内部共有6个楼层选择的按键,实际应是能响应同时5个目的楼层的选择请求(当前层除外),但由于单片机I/O口有限,只能同时响应4个楼层选择请求。由于是仿真软件,重要的是要仿真出电梯系统的运行和控制过程,所以少一个请求并不会对运行效果有太多影响。

(2) 红色八段数码管:共两个,用于显示电梯运行到的当前楼层号。

也分左右,分别显示左右两部电梯所在的当前楼层号。电梯在运行过程中,显示的楼层号,根据其运行到的楼层实时更新。根据输出要求,电梯内部和电梯外部都应有电梯运行到的当前楼层的显示,且二者显示的内容是完全相同的,所以为了节约I/O口的使用,将二者用一组数码管显示。

(3) LED灯管:共10个,与左边的10个按键对应,是10个按键请求

的输出显示表示所有楼层的外部请求。这里将按键与显示分开表示,与实际梢有不同,但这样表示显得直观,能在仿真过程中,看到所有楼层要梯请求的情况。灯泡分为向上和向下两组,间隔排列,从上到下依次为向下,向上如此间隔的顺序。响应的楼层及请求方向见图上标注。向上显示用红色灯表示,向下的显示用绿色灯表示。操作时当左边外部按键有键被按下时,对应楼层的灯就应该被点亮。当电梯响应请求,运行到外部请求所在的楼层时,该楼的灯就熄灭,表示请求已经被应答。

第 8 页 共 36 页

5 系统结构设计

5.1 模块设计

根据需求功能要求描述,电梯控制系统才用模块化的编程思想,将整个系统大体划分为4个模块。数据采集模块,通信模块,数据处理模块和显示模块。数据采集模块负责采集从机接收的数据,即记录按键的情况。通信模块负责从机与主机之间的数据传送,从机只传送数据,主机只接受数据。数据处理模块负责将接受到从机传送来的数据进行处理,利用电梯调度算法,合理调度,控制电梯运行。显示模块负责显示接收到的请求数据,和处理模块处理后的结果。模块之间的关系如图5-1。

原始数据数据采集模块串行通信模块原原始据数始数据处理后结果数据处理模块显示模块

图5-1 模块结构图

第 9 页 共 36 页

5.2 系统处理流程

系统处理流程如5-2处理流程图所示。

开始按键Y初始运行Y键盘按键?N二次按键?(取消请求)N二次按键?(取消请求)N显示外部请求通信,传递数据N通信,传递数据显示内部请求算法1调度算法2调度显示电梯当前所在楼层最佳电梯响应请求电梯运行显示电梯当前所在楼层N到达请求所在楼层?N到达目的地?NY 显示当前楼层,等待操作N按键?Y所有请求执行完?Y结束 Y图5-2 处理流程图

第 10 页 共 36 页

5.3 系统结构描述

系统结构主要描述系统中不同模块之间的关系,如图5-3系统结构图所示。

模拟电梯控制系统数据有效有效数有效数据据有效数据数据采集模块数据处理模块数据据效数有求请部外外部请求据楼数层据通信模块据内内部请有效数据数部数楼层请求有效数据数求数据据取得楼层数据描码扫键按键编辑楼层数据楼层识别外部请求数据扫按描数码据外部调度算法据求数请外部电梯最佳梯识别内部请求数据内部调度算法取得按键扫描码据最佳电扫描码转换为楼层数据按键数据求请地的内部目目的地按键数按键数键据码得出最佳响应电梯运行电梯得出目的地电梯运行到达按键,输入数据转换键码状态到达状态到到达达判断到达否显示到达否显示图5-3 系统结构图

5.4 功能与程序的关系

功能与程序的关系如表5-1所示。

表5-1 功能和程序关系表

按键程序 √ 通信中断 √ 外部请求响应 √ 外部电梯调度 √ 内部请求响应 √ 内部电梯调度 √ 外部请求显示 √ 内部请求显示 √ 电梯当前所在楼层显示 √ √ 数据采集 通信 外部数据处理 内部数据处理 外部数据显示 内部数据显示

第 11 页 共 36 页

6 单片机编程

6.1 单片机引脚使用情况

6.1.1 从机引脚使用说明

单片机的最小系统电路一般情况不用画出。除此之外,P0口工作在I/O方式下,接收2-5层电梯外部按键输入的数据,因为1层楼只有向上请求,6层楼只有向下请求,与其他楼层稍有差别,且P0口已经分配完毕,故将1层和6层的线单独接到P3口。因为P0口作为I/O输入,所以必须接上拉电阻。P1口工作在I/O方式下,接收左边电梯内部键盘按键输入的数据。因为电梯内部按键只设计了8个,故4x4的键盘,只选取了中间的两行使用。为方便行列式键盘编程,两条列线接P1.1和P1.2。P1.0和P1.3悬空,默认为高电平。四条行线依次接P1.4-P1.7。P2口工作在I/O方式下,接收右边电梯内部键盘按键输入的数据,其电路连接情况与P1口相同。P3口的P3.6和P3.7工作在I/O方式下,接收电梯外部按键6层和1层的请求。P3.0和P3.1采用的是其第二功能RTD和TXD,分别用于串行通信的输出和输入。

6.1.2 主机引脚使用说明

P0口工作在I/O方式下,作为2个红色八段数码管的显示段选输出,由于没有用到小数点,故cp悬空,P0.7默认为高电平。P1口工作在I/O方式下,作为8个蓝色八段数码管的片选输出。P2口工作在I/O方式下,将2-5楼层的接收外部请求的输出显示。P3口的P3.4和P3.5工作在I/O方式下,将电梯外部按键6层和1层的请求输出。P3.6和P3.7工作在I/O方式下,作为2个红色八段数码管的片选输出。P3.0和P3.1采用的是其第二功能RTD和TXD,分别用于串行通信的输出和输入。

6.2 串行通信

6.2.1需求概述

在设计过程中,由于仿真6层电梯,每层都需要有对应的向上或向下要梯的10个输入按钮,每个轿厢内要有8个按钮,对按钮的显示相应有LED显示,一个单片机的I/O口不够用,所以设计中采用两快单片机,这就涉及两块单片机的通信问题。

第 12 页 共 36 页

6.2.2 串行通信概述

串行通信是指数据一位一位的按顺序传送的通信方式,其突出优点是只需一根传输线,大大降低了传输成本,特别适用于远距离通信,通信线路简单。缺点是传送速度较低。有同步传送和异步传送两种方式。串行通信可通过串行接口来实现。

单片机内部有一个可编程的,全双工的异步串行接口SBUF,有两个独立的发送缓冲和接受缓冲器,对外也有两条独立的收、发信号线RXD和TXD,可以同时发送、接受数据,实现全双工传送。发送、接受数据可通过查询或中断方式处理,使用十分灵活,可实现双机、多机通信,有四种工作方式。

6.2.3 本设计中的串行通信具体说明

由于只有两块单片机,只需双机通信,且单片机的电器特性决定传输数据误差很少,可以不需要奇偶校验,所以本设计利用串行接受在工作方式1下进行异步串行通信。工作方式1是8位异步通信方式,波特率可变。这里波特率由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD决定,所以在工作方式1下,要对定时/计数器T1进行初始化。编程过程中设定波特率为1200bps,振荡频率为12MHz。设计中通信的数据格式都有一定的规定,相应的位数有特殊的意义,是为配合算法来规定的,在后面调度算法中详细介绍。

6.3 中断

6.3.1 需求概述

由于电梯控制系统实际上是一个人机交互式的控制系统,因此单纯采用顺序控制或逻辑控制是不能够满足要求的,而应该在设计中采用随机逻辑控制进行实时控制。实时控制自然需要用到中断完成。另一方面,串行通信采用中断方式,也能节约CPU查询等待的时间,提高运行效率。

6.3.2 中断概述

AT89C51单片机提供了5个硬件中断源,2个外部中断源INTO和INT1,2个定时/计数器T0和T1的溢出中断TF0和TF1,1个串行口发送TI和接收RI中断。AT89C51的中断系统,是通过以下几个特殊功能寄存器来控制的。定时器控制寄存器TCON,中断允许寄存器IE,中断优先级寄存器IP,串行口控制

第 13 页 共 36 页

寄存器SCON。中断过程,是通过操作以上寄存器的各位来控制的。

6.3.3 串行通信中断

AT89C51的串行口中断源对应两个中断标志位RI和TI,无论哪个标志位置“1”都请求串行口中断,到底是发送中断还是接收中断,只有在中断服务程序中通过指令查询来判断。串行口中断响应后,不能由硬件自动清零,必须由软件对TI或RI清零。在程序中,需首先设置中断允许总控位EA和串行口中断允许位ES为“1”,然后才能进行串行通信中断,在发送端(从机)通过判断RI来进行数据传送,在接收端(主机)通过判断TI来接收数据。

6.3.4 定时/计数器中断

定时/计数器中断是由TF、ET两个标志位控制的。当定时/计数器TO/TI溢出时,由硬件置TF为“1”,向CPU发送中断请求,当CPU响应中断后,由硬件自动清除TF。ET为定时/计数器的溢出中断允许位,当ET为“1”时,才允许中断。程序中,中断的初始设置为ET0=1。TF由硬件自动设置。

6.4 定时器设置

6.4.1 串行通信定时设置

串行通信中工作方式1需设置波特率,波特率由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD决定,所以在工作方式1下,要对定时/计数器T1进行初始化。串行通信时,定时器通常采用定时器方式2即8位重装计数方式,这样不但操作方便,也可避免指令重装时间常数带来的定时误差。

定时/计数器的工作方式、计数(定时)值、中断控制等都是有程序来设定的,在AT89C51单片机中,是通过特殊功能寄存器TMOD(定时器方式控制寄存器)和TCON(定时器控制寄存器)来设置的。程序中设置TMOD=0x21,即定时/计数器1在工作方式2下,定时方式。设置TCON中的TR1=1,表示开始计数。由于编程过程中设定波特率为1200bps,振荡频率为12MHz。

计数初值=256- fosc× 2SMOD /(12*波特率*32)=0xe6

所以TH1=0xe6,TL1=0xe6。 6.4.2 定时/计数器设置

电梯的运行过程首先是idle(空闲),收到一个请求,进行计算,得出要

第 14 页 共 36 页

停靠的地方,然后进入running,每5秒爬升或降低一楼,如果到达目的地,则进入opening,并清除有关数据,2秒后进入waiting,等待5秒进入closing,2秒后重新进行计算,得出下次的目的地。这就需要设置电梯的速度,每5s爬一层,等待时间为5s,等待接受请求的时间为2s。由于定时/计数器方式1为16位计数器,其所能计的最大数值为65535,计时不能1s,而程序中需要的定时都是以s为单位的,所以就只有利用定时和计数两种当时结合来达到定时5s或者2s。由于程序中需要定时的时间不只一个,只使用一个定时器,要达到要求,采用以下的思路:定时50ms,计数20,这样可以达到1s的时间,然后再利用for循环,用一个变量来计数到2或者5,表示是达到了2s或者5s ,这样就能灵活的操作不同状态下的时间了。程序中设置TOMD=0x21,即定时/计数器0在工作方式1下,定时方式。设置TRO=1,开始计数。计数初值有公式计算得出TH0=0x3c,TL0=0xb0。

6.5 行列式键盘

单片机系统的键盘一般使用非编码键盘,其特点是硬件电路简单,必须有一套相应的程序与之配合。使用非编码键盘,需要用软件来解决按键识别、防止抖动及键码的产生等工作。采用行扫描法来识别按键,程序中使用的是4x4的键盘,只使用了中间的两行,8条线可以接在一个I/O口上。然后通过交替变换I/O的引脚的高低电平来确定按键。先设置引脚高4位为高,低4位为低,当有键按下时,高4位就会有相应的一条线就会变为低电平,得到一个码值。然后取相反的设置,有键按下时,低4位就会有相应的一条线就会变为低电平,则可以再得到一个码值。最后将两个得到的码值相或,则可以得出键码。而按键去抖动,才用的是在检测到有键按下时,等待一段时间再进行“行扫描”,延时时间为10-20ms,这可通过延迟子程序来解决。程序中,使用4x4的键盘的中间两行,有1-6层的数字,分别表示相应的楼层号,及x和-,x表示关门,-表示开门。得到键码后,还要将键码转换为对应的键盘上的数字或者开/关门表示,这样行列键盘的编程工作才算全部完成。

6.5.1段数码管动态扫描显示

LED显示器工作方式有两种:静态显示方式和动态显示方式。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。点亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,

第 15 页 共 36 页

使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

使用7段数码管显示器,有共阴和共阳两种接法,本设计中采用共阴接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。

设计中需要用到7段数码管显示的有两处,一是显示所选择的内部请求即目的地,二是显示电梯当前所到达的搂层。内部请求的显示,最多需要同时显示4个搂层,要用到4个7段数码管,采用动态显示的方式。而且为了保证显示的楼层不断的刷新显示,请求被响应的过程清晰明了,使显示的楼层数字按从左到右,从大到小的顺序排列。这样能很明了的看出谁先被响应,响应的顺序是怎样的。这个过程,是在程序中从6楼到1楼的数字循环检测,有内部请求,则显示段码,然后再从右到左移位片选码,来达到从右边开始显示的效果。然后不断的循环检测是否有显示,这样如果有3个目的地,其中一个到达后,相应的蓝色数码管所显示的该目的地就会熄灭。由于不断循环,后两个目的地则会依次移动一个位置。这样的显示效果是因为循环显示才完成的。

6.5.2 LED灯泡显示

LED灯泡的亮和灭是通过设置引脚的电平变化来实现的。这里着重描述的是本设计中灯泡工作的程序实现。LED灯泡表示外部请求情况,如仿真图所示共10个灯泡,分别对应从机的十个外部按键,除去1层和6层的按键,中间8个都接在P2口,用一个长度为8的字符数组表示,数组相应的位置上为“1”则灯泡亮。从机的按键是分为向上和向下两组的,主机的显示通过把两组交替合并显示,程序8位数组进行操作,通过移位和“或”操作来得到表示向上和向下的灯泡交替出现的,且对应左边相应的楼层请求。详细可见程序display()。

第 16 页 共 36 页

7 软件设计概述

7.1 软件设计总体流程

程序实现的总体结构如图7-1所示。

开始Inti()While(1)YDisplay()YNInterrupt 1handleTime()NYInterrupt 4handleSerial()

图7-1 系统程序总体结构图

说明:

由于电梯控制系统实际上是一个人机交互式的控制系统,实时处理的要求很高,基于这一点,该软件设计的思想就将所有交互的操作采用中断完成。主程序只负责不断的刷新显示,有外部事件的申请,才中断,转去执行中断程序,中断程序执行完之后就返回,继续执行显示程序。在通信中断和定时中断程序中去调用电梯调度算法程序,实现电梯调度。程序中有两个中断程序,串行通信中断和定时/计数器中断,单片机中规定了这两个中断源的优先级,定时中断的优先级大于串行通信中断,这样程序中不会出现同时中断,需要判断由谁先响应的问题。考虑到该系统的算法实现都是由中断实现的,如果算法的处理太复杂,就会影响响应的速度,所以采用了并联电梯的忙梯算法,而没有采用更加高效的神经网络模糊算法等,因为这样软件复杂程度高,不利于系统的运行。

第 17 页 共 36 页

7.2 电梯群控概述

一座建筑物往往需要安装两台或两台以上电梯,但如果只装两台或是两台以上各自独立运行的电梯,并不能提高效率。以A、B两台电梯为例,如果某一层乘客要求上行,按下两台电梯的上召唤按钮,则两台电梯会同时应召前往,结果一台电梯往往是空行;又如,有两个邻层的上召唤信号,本可由B电梯顺向停靠应召,但如果两个上召信号分别给了A、B,则两台电梯同时上行。这种线路不能合理调配电梯,而采用双梯并联或群控可以大大提高运行效率.当建筑物中多台电梯处于并联或群控状态时,对信号控制系统设计好坏的评价标准是电梯响应召唤的快速性和运行能量的最小化。电梯群控技术就是为解决这样的问题产生的。电梯群控系统是指在一座大楼内的数台电梯通过一个或多个的控制器(计算机)互联控制。该系统可以采集到每台电梯的内召,上下外召、载重以及位置等信号,并可向每台电梯发送控制信号。主控制器对该组电梯进行统一调度管理,使他们合理运行。群控电梯的控制具有多目标行,非线性性不确定性。具体要求及特性如下:

1) 乘客的平均候梯时间要尽量短。

2) 尽量减少乘客的长候梯率,即尽量避免产生上时间的候梯过程。 3) 轿厢到达的预报准确率高,减少乘客的等待时的心理压力。 4) 电梯运送乘客的时间要尽量短,并合理分配电梯应答,防止堆聚和忙

闲不分。

5) 选择能源消耗最节省的方式,尽量降低能耗。 6) 层站的乘客书不确定。

7) 呼梯者的目的站不能事先确定。

8) 对同一组呼梯,在不同的时间标度下,轿厢的分配是不同的,轿厢分

配的变化是不连续的。

7.3 忙梯算法

7.3.1算法概述

1) 通常情况下,一台电梯(A 梯)在基站待命,另一电梯(B梯)为忙梯,在最后的服务层。有召唤时由忙梯响应,如图7-2(a)所示。

2) 当两个电梯均在基站时,对厅召唤由先到基站的电梯响应,另一电梯则成为基站梯。

3) 当B梯上行时,响应其上方的任何厅召唤及下方的下方向召唤,而其下方的上方向召唤则由A梯响应,如图7-2(b)所示。

第 18 页 共 36 页

4) 当B梯下行时,响应其下方的下行召唤,而其下方的上召唤及上方的任何厅召唤则由A梯来响应,如图7-2(c)所示。

5) 当A梯召唤很多而B梯长时间不具备发车条件,或A梯因有故障长时间不能正常运行时,通知B梯发车响应。

B梯B梯B梯A梯A梯A梯 a b c图7-2并联电梯算法调度情况

7.3.2 算法评价

以上调度原则简单明了、易于实现,但存在不足。主要缺陷在于,并联电梯的调度情况只考虑召唤的方向而未考虑召唤离服务梯的距离,因此对3) 和4) 两个原则,很可能出现一台电梯空闲,另一台电梯过忙的情况。这一情况虽可通过5) 来解决,但要等一段时间,故实时性较差.因此继电器的硬件线路的调度方法无法解决距离的问题,这只有依靠微处理器的逻辑运算和通信功能解决,所以以一台电梯为“忙梯”的调度原则并不能解决快速服务问题。

7.3.3 算法的改进之处

1) 正常情况下,当电梯使用以后,B梯作为忙梯会首先自动上升至第三层待命,A梯则作为基站电梯在第一层楼待命。当某层站有门厅呼叫信号时,则“忙梯”立即启动并定向运行去接该层站的乘客。

2) 对7-2(c)的运行规则的改变:当B梯向下运行时,响应其下方的任何请求,和其上方的向上请求,而其上方的向下请求,由A梯响应,如图7-3 (c)示。这样避免出现基本梯过忙的情况。

第 19 页 共 36 页

3) 由于此算法导致出现一台电梯过忙的情况,为实现负载平衡,采用有效原则。当两台电梯因轿厢内指令而到达基站后关门待命时,则应按照有效利用的原则,执行相互交替程序段。原先充当忙梯的电梯现在即作为基站电梯来使用,而原先作为基站电梯使用的电梯此时即成为忙梯。不论是A梯还是B梯均停留在最后停靠的层站待命。这样的改进就避免了一台电梯过忙的情况。

B梯A梯 a

B梯A梯 b7-3 改进后的电梯调度情况

第 20 页 共 36 页

A梯B梯 c图

7.4 电梯调度算法流程

核心的调度算法主要有外部请求调度算法和内部请求调度算法,两算法之间也有关联,具体调度过程如图7-4所示。

startvoid scheduleExterUp(uchar)orvoid scheduleExterDown(uchar)Floor, Directvoid scheduleExterLeft(uchar floor, uchar direct)orscheduleExterRight(uchar floor,uchar direct)leftExterUp[ ]orleftExterDown[]void scheduleLeft(void)orvoid scheduleRightvoid)void scheduleLeftDown(void)/void scheduleLeftUp(void)Orvoid scheduleRightDown(void)/void scheduleRightUp(void)leftdirect,leftdest,LefttypeOrrightdirect, rightdest,righttyperunning 图7-4 电梯调度算法流程图

7.5 程序代码及说明

7.5.1 确定请求类型函数

电梯运行方向上,对请求合理响应,以较优的方式到达目的地。 1) 则搜寻上行方向的内部请求和外部向上的请求,以离电梯当前位置最

近的先响应。

第 21 页 共 36 页

2) 如果没有这两个请求,则搜寻上行方向的向下请求。按最远的先响应。 3) 如果仍然无请求,则搜寻下行方向的内部请求和向下请求,按最近的

先响应。

4) 仍无请求,则搜寻下行方向的向上请求。按最远响应。 5) 如果都无请求,则为空闲,停在当前层待命。

void scheduleLeftUp(void) //确定请求类型,目的地和运行方向。请

求类型0x01表示内部请求,0x02为外部向上请求,0x04为外部向下请求 {

int i;

for(i = leftFloor + 1; i < 7; i++) //从当前层的上一层开始逐层搜寻请求 {

if(leftRequest[i - 1]) //有内部请求,则设置请求类型和目的地 {

leftType |= 0x01; //0x01为内部请求表示 leftDest = i; }

if(leftExterUp[i - 1]) //有外部请求 {

leftType |= 0x02; leftDest = i; }

if(leftType != 0x00) //在运行方向上行,确定请求类型和目的地之后及时返回 {

leftDirect = 1; // 运行方向为向上 return; } }

for(i = 6; i > leftFloor; i--) //上行方向没有前面两种请求,则从上往下搜寻是否有向下请求。 {

if(leftExterDown[i - 1]) //has external down request {

leftType = 0x04; //0x04 为外部向下请求 leftDest = i;

leftDirect = 1; //运行方向仍然为上,要运行到呼梯楼层。

return; }

第 22 页 共 36 页

}

}

if(leftType != 0x00) {

leftDirect = 1; return; }

7.5.2 运行参数设置函数

根据不同的运行方向,调用上述函数,确定电梯请求类型,目的地,运行方向,然后启动电梯运行。

void scheduleLeft(void) 函数 {

if(leftDirect == 1) {

leftType = 0x00; scheduleLeftUp();

//左边电梯运行的调度

//电梯向上运行

if(leftType == 0x00) {

scheduleLeftDown(); //电梯运行方向可以在此改变 if(leftType == 0x00) //下行方向上没有请求 {

leftRequest[leftFloor - 1] = 0; leftExterUp[leftFloor - 1] = 0; leftExterDown[leftFloor - 1] = 0; leftDirect = 0; leftStatus = idle;

if(leftFloor == 1 && rightFloor == 1 && rightStatus == idle)

{

busyEle++;

busyEle %= 2; //当两部电梯都在1楼空闲时,交替忙梯标志 }

return; } else {

leftExterDown[leftFloor - 1] = 0;//若有请求,则电梯继续向上运行,清除该楼层外部请求。

//左边电梯的请求类型,目

的地,运行方向

//上行方向没有请求

第 23 页 共 36 页

} } else {

leftExterUp[leftFloor - 1] = 0; } }

else //向下运行,过程基本同向上运行 {

leftType = 0x00; scheduleLeftDown(); if(leftType == 0x00) {

scheduleLeftUp(); if(leftType == 0x00) {

leftRequest[leftFloor - 1] = 0; leftExterUp[leftFloor - 1] = 0; leftExterDown[leftFloor - 1] = 0; leftDirect = 0; leftStatus = idle; return; } else {

leftExterUp[leftFloor - 1] = 0; } } else {

leftExterDown[leftFloor - 1] = 0; } }

if(leftStatus == idle) //启动电梯 leftStatus = running; }

7.5.3 外部请求处理函数

外部请求处理过程:

1) 外部请求与电梯所在位置相同,然后判断电梯的状态,若为idle或

者closing,则响应外部请求,立即开门。若为running,则记录下

第 24 页 共 36 页

请求,将请求写入请求队列。其他状态不予响应。

2) 外部请求与电梯所在位置不同,则将请求写入请求队列,调用前一函

数响应。

void scheduleExterLeft(uchar floor, uchar direct) //左边电梯请求处理,direct=0为外部向上请求 1为外部向下请求 {

if(leftFloor == floor) //电梯刚好在有外部请求的楼层 {

if(leftStatus == idle || leftStatus == closing) {

leftTimeCount = 0; //重新开始记时 leftStatus = opening; }

else if(leftStatus == running) {

if(direct == 0)

leftExterUp[floor - 1] = 1; //若外部请求向上,记录外部有请求的楼层,存放在外部向上请求队列中。 else

leftExterDown[floor - 1] = 1; //与向上相反。 scheduleLeft(); //记录下外部请求后,调用电梯调度函数,启动电梯 } }

else //如果电梯不在有外部请求的楼层 {

if(direct == 0)

leftExterUp[floor - 1] = 1; //记录入外部请求队列

else

leftExterDown[floor - 1] = 1;

scheduleLeft(); //调用电梯调度函数,得出目的地 } }

7.5.4 电梯调度算法

电梯响应外部请求的规则:(函数中分为向上和向下运行两部分讨论。)

1) 如果两部电梯空闲,则选择距离请求最近的一部响应,如果两部

第 25 页 共 36 页

电梯位置相同,则选择被设置为“忙梯”的电梯响应。两部都空闲且在一楼时,“忙梯”标志交换。

2) 如果只有一部空闲,且闲梯刚好在有请求的楼层。则闲梯响应。 3) 如果只有一部空闲,但闲梯不在请求的楼层或两部电梯都不空闲

(1) 若忙梯向上运行,外部请求在忙梯上行方向,则由忙梯响应。

在下行方向,则由闲梯响应。

(2) 若忙梯向下运行,外部请求在忙梯下行方向,则有忙梯响应。

在上行方向,则有基梯响应。

void scheduleExterUp(uchar floor) 外部向上请求的最佳电梯 { 应

}

else if(leftStatus == idle && leftFloor == floor) {

if(leftDirect == 1)

//左边电梯向上运行

scheduleExterLeft(floor, 0); scheduleExterRight(floor, 0);

//左边电梯为忙梯

//左边

scheduleExterLeft(floor, 0); scheduleExterRight(floor, 0); else

if(leftStatus == idle && rightStatus == idle) //都空闲,距离{

if(abs(leftFloor - floor) > abs(rightFloor - floor)) //求得

scheduleExterRight(floor, 0); scheduleExterLeft(floor, 0);

//距离相同,忙梯响

近的一部电梯响应

//得出响应当前

绝对值小的一个响应

else if(abs(leftFloor - floor) < abs(rightFloor - floor)) else if(busyEle == 0)

电梯空闲,且请求刚好在其所在楼层

else if(rightStatus == idle && rightFloor == floor) else if(busyEle == 0)

第 26 页 共 36 页

}

{ } else

//左边电梯向下运行

//忙梯响应

scheduleExterLeft(floor, 0);

if(floor < leftFloor)

//要梯请求在左边

//基梯响应 //要梯请求在电

电梯下行方向

scheduleExterRight(floor, 0);

scheduleExterLeft(floor, 0); else

梯上行方向,即在其运行方向上,忙梯响应

else {

//右边电梯为忙梯

if(rightDirect == 1) { } else

}}}

//右边电梯运行方向向下

scheduleExterRight(floor, 0); //忙梯响应 if(floor < rightFloor) else

scheduleExterRight(floor, 0); //要梯请求在电梯上行

//要梯请求在电梯下行方向 //基梯响应

scheduleExterLeft(floor, 0);

方向,即在其运行方向上,忙梯响应

8 测试

在设计好各个模块后,对整个系统进行全面测试。测试结果是各项功能都能成功实现。

进行系统测试主要有两种方法:静态测试和动态测试,主要采用动态测试的方法。动态测试是通过运行程序来检验软件的动态特性和运行结果的正确性,并根据程序的运行过程对程序进行评价的过程。动态测试包括运行,解释和模拟。具体的测试方法有:

1.黑盒测试:一种以需求和功能规范及界面为基础的测试方法。它无需了解软件的内容结构。

第 27 页 共 36 页

2.白盒测试:一种以程序为基础的测试方法,它需要完全了解程序的结构和处理过程。

这里以黑盒测试电梯控制系统运行为例,检测的结果如下:

表8-1 测试结果表

测试项目 测试数据 预期输出 A梯在1楼 B梯在3楼 A梯响应 1楼向上 输出“-” 表示开门 2楼向上LED灯亮 2楼向上 单个外部向上请求 3楼向上 B梯响应,从3楼运行到2楼 显示楼层号 B梯响应 输出“-” 表示开门 4楼向上LED灯亮 4楼向上 B梯响应从3楼运行到4楼 显示楼层号 测试结果 红色数码管显示 A梯在1楼 B梯在3楼 红色数码管显示 “-”“||” 表示开门后进入等待 2楼向上LED灯亮 B梯响应 到达后LED灯灭 红色数码管显示“2” “-”,“||” 红色数码管显示 “-”“||” 表示开门后进入等待 4楼向上LED灯亮 B梯响应 到达后LED灯灭 红色数码管显示“4” “-”,“||” 6楼向下LED灯亮 6楼向下LED灯亮 6楼向下 单个外部向下请求 B梯响应,从3楼运行到6楼 沿途显示楼层号 B梯响应 沿途显示响应楼层号 到达后LED灯灭 红色数码管显示“6” “-”,“||” B梯响应 3楼向下 输出“-” 表示开门 红色数码管显示 “-”“||” 表示开门后进入等 2、3、4楼表示向上请求的LED灯依次点亮A梯显1楼向上 多个外部向上请求 2楼向上 3楼向上 4楼向上 (按顺序按键) A梯响应1楼、 3楼、4楼请求 B梯响应2楼请求 示“-”,然后运行至4楼,沿途显示“1”“-”“||”“2”“3”“-”“||”“4”“-”“||”3、4楼LED在A梯到后灭B梯运行至2楼,显示“2”“-”“||”2楼LED在B梯到达后灭

运行正常 如图8-2所示 运行正常 运行正常 运行正常 运行正常 运行正常 运行正常 说明 初始化正常 如图8-1所示 初始化 无 第 28 页 共 36 页

测试项目 测试数据 3楼向上 多个外部向上请求 2楼向上 4楼向上 (按顺序按键) 6楼向下 5楼向下 4楼向下 3楼向下 多个外部向下请求 (按顺序按键) 5楼向下 4楼向下 6楼向下 3楼向下 (按顺序按键) 内部请求 开门 关门 显示“-” 显示“-” 显示“-” 显示“-” 由B梯响应,运行到6楼,请求队列显示“6” 6(B梯) B梯响应 沿途显示楼层 到达后蓝色数码管无显示 红色数码管显示“6” 蓝色数码管显示“4” 请求队列显示“4” 3、4(B梯) B梯响应 B梯响应,运行至4楼,蓝色数码管无显示 红色数码管显示“4” 蓝色数码管显示“12” 内部请求 请求队列显示1、2(B梯) “12” B梯响应 B梯响应,运行至2楼再至1楼 到2楼时,请求队列无“2”显示,红色数码管显示“2” 到1楼时,请求队列无显示红色数码管显示“2” 请求队列显示“12”3、4楼的1、2、3、4(B梯) 请求视为无效请求 同上一表格输出 运行正常 如图8-3所示 运行正常 运行正常 运行正常 运行正常 运行正常 B梯响应所有请求 先响应最远端请求,由远及近 6、5、4、3楼LED灯亮, B梯运行到6楼,然后换向至5、4、3楼。 6、5、4、3楼LED灯依次灭 运行正常 预期输出 测试结果 2楼、4楼LED灯亮 B梯响应3楼、2楼请求 B梯停在3楼,然后运行到2楼,2楼LED灯灭 途楼层,4楼LED灯灭 运行正常 说明 A梯响应4楼请求 A梯运行到4楼,显示沿

第 29 页 共 36 页

测试项目 测试数据 预期输出 测试结果 蓝色数码管显示“2345” 请求队列显示2、3、4、5(A梯) “2345” A梯响应 内部请求 A梯响应,到达后请求取消,蓝色数码管中响应数字熄灭,红色数码管显示响应数字 请求队列显示2、3、4、5、6(A梯) “2345” 6楼请求被视为无效 A梯响应 蓝色数码管显示“234” A梯响应,到达后请求取消,蓝色数码管中响应数字熄灭,红色数码管显示响应数字 运行正常 运行正常 说明 RP21Ax为开门。----为关门U319AXTAL11P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161723456789741ONC185202963=3RP1B741ONC185202963=318CU219XTAL1XTAL2B9DRESPACK-8RST+418XTAL2C9RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373635343332212223242526272810111213141516176↓5↑5↓4↑4↓3↑23456789D4RESPACK-8LED-GREEND11LED-REDD+4293031PSENALEEA29303112345678PSENALEEAD1LED-GREENP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C5112345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51D8LED-REDD2LED-GREEND7LED-RED6↓↑5↓↑4↓↑3↓↑2↓↑13↓2↑2↓1↑D5LED-GREEND9LED-REDD3LED-GREEND6LED-RED 图8-1 初始化

第 30 页 共 36 页

RP21Ax为开门。----为关门U319AXTAL11P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161723456789741ONC185202963=3RP1B741ONC185202963=318CU219XTAL1XTAL2B9DRESPACK-8RST+418XTAL2C9RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373635343332212223242526272810111213141516176↓5↑5↓4↑4↓3↑23456789D4RESPACK-8LED-GREEND11LED-REDD+4293031PSENALEEA29303112345678PSENALEEAD1LED-GREENP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C5112345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51D8LED-REDD2LED-GREEND7LED-RED6↓↑5↓↑4↓↑3↓↑2↓↑13↓2↑2↓1↑D5LED-GREEND9LED-REDD3LED-GREEND6LED-RED 图8-2 1234楼向上请求

RP21Ax为开门。----为关门U319AXTAL11P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161723456789741ONC185202963=3RP1B741ONC185202963=318CU219XTAL1XTAL2B9DRESPACK-8RST+418XTAL2C9RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD3938373635343332212223242526272810111213141516176↓5↑5↓4↑4↓3↑23456789D4RESPACK-8LED-GREEND11LED-REDD+4293031PSENALEEA29303112345678PSENALEEAD1LED-GREENP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C5112345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51D8LED-REDD2LED-GREEND7LED-RED6↓↑5↓↑4↓↑3↓↑2↓↑13↓2↑2↓1↑D5LED-GREEND9LED-REDD3LED-GREEND6LED-RED 图8-3 1234楼的内部请求

第 31 页 共 36 页

9 评价

9.1 总体评价

该系统基本完成了对电梯控制系统的仿真,对于电梯控制系统要求的大多功能都能实现。系统体积小,运行稳定。需要用户操作的地方,简单方便,界面友好。

9.2 缺陷与不足

经过测试,发现有一些不足的地方,问题如下:

1) 由于仿真软件,只有由鼠标电击操作的局限,不能做到同时请求的情况。这与实际电梯控制系统中,会遇到的在不同楼层有同时请求的情况不相符合。

2) 可扩展余地不足,如果楼层有增加,或是有新的功能,继续在两片单片机上进行编程操作,可能会有很多局限和困难,解决办法只有增加单片机的数量或者增加其他辅助硬件如译码器等。

3) 电梯调度算法是在传统的“忙梯”算法上改进的,不如一些研究者的比如模糊神经算法运行效果好,且在运行过程中请求过多,而且顺序过乱的话,运行中会有些逻辑错误,但由于程序都使用的中断,算法太复杂会影响响应速度而且实现能力有限,只选取了在设计者实现能力范围之内的算法。

9.3 需改进之处

改进过后的算法经过更进一步的分析和考虑还可以有更好的改进。设计出更合理的调度过程。不仅考虑距离,也考虑等待时间,响应时间等,能智能预测即将可能的请求情况,能动态响应内外请求,在先前的请求被响应之后能接受后来的请求,代价小的先响应。这样才能更适合现代楼宇电梯的运行要求。

结束语

通过本次课题的研究,了解了现代楼宇电梯控制系统的功能及比较详细的控制过程,了解了电梯群控技术的有关应用,目前电梯控制系统使用的电梯调度算法都是有关电梯群控技术的,随着现代电子技术的发展,电梯控制系统也会有更进一步的提高,也更能符合现代楼宇对于电梯控制系统的要求。本系统采用两块单片机及行列键盘、数码管等输入输出设备实现了对6层建

第 32 页 共 36 页

筑中双路电梯控制的模拟仿真,采用相对传统且在实现能力范围内的电梯调度算法,旨在学习和提高。该仿真设计系统小,运行稳定且节省硬件消耗,可以有一定扩展,对于学习及实验可有较大帮助。

第 33 页 共 36 页

参考文献

[1] 周剑.电梯群控算法研究及工程实现[J].成都纺织高等专科学报,1999,(2):25-37 [2] 郁宙.电梯群控系统控制算法的分析[J].江苏电梯,2007,(2):15-18

[3] 周霞,常建德.基于单片机的并联控制系统[J].江南大学学报,2002,(4):376-379 [4] 杨春.用单片机实现电梯控制[J].情报杂志,2005,(7):35-40

[5] 谢维成,杨加国.单片机原理与应用及C51程序设计 [M]. 清华大学出版社,2006.12 [6] 谭浩强. C程序设计(第二版) [M].清华大学出版社,2004.12

第 34 页 共 36 页

本文来源:https://www.bwwdw.com/article/hal6.html

Top