当前位置:文档之家› 电梯模拟

电梯模拟

电梯模拟
电梯模拟

一电梯模拟

一.题目要求

模拟某校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。九个楼层由下至上依次称为地下层、第一层、第二层、……第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。

乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。

模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层静止时间超过300t,则驶回1层侯命。

要求:

按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。

二.设计

1. 设计思想

(1)数据结构设计

构建一个栈用以表示乘客,用等待队列表示电梯外等待的乘客

(2)算法设计

1.乘客类型反映乘客的所有属性

2乘客栈类型,电梯内的乘客用乘客栈表示,去不同楼层的乘客放在不同的栈中。

3.等候队列类型,在电梯外等待的乘客用等待队列表示。每层各有两个等待队列,分别为上楼队列和下楼队列。

4.电梯类型,表示电梯的各个属性和所有动作。

2设计表示

1. 调用的函数如下:

#include

#include

#include

#include

#include

#include

#include

2. 各函数说明如下:

#define DownDecelerate 23 //下降减速

#define DoorTime 20 //开门关门时间

#define InOutTime 25 //进出电梯时间

#define Maxfloor 4 //最高层

#define Minfloor 0 //最低层

long Time=0; //时钟

long MaxTime;//系统运行最长时间

int InOutCount=0;//用于进出计时

int InterTime=0;//下一乘客进入系统的时间

int ID=0; //乘客编号

int GiveUpNumber=0;//乘客放弃的数目

int TotalTime=0;//总共等待时间

Status InitStack(ClientStack &S);//构造一个空栈

Status DestroyStack(ClientStack &S);//销毁栈S

Status ClearStack(ClientStack &S);//把S置为空

Status StackEmpty(ClientStack S);//若栈S为空,则返回TRUE,否则返回FALSE

int StackLength(ClientStack S);//返回栈S的长度

Status GetTop(ClientStack S,SElemType &e);//返回栈顶元素

Status Push(ClientStack &S,SElemType e);//入栈

Status Pop(ClientStack &S,SElemType &e);//出栈

void PrintStack(ClientStack &S);//输出栈

3. 详细设计

基本数据结构为:

Status EleAchieved(Elevator &E) {

//判断电梯是否要停于当前层

if(E.CallCar[E.floor]) return TRUE;

if(E.Stage==Up&&E.CallUp[E.floor]||E.Stage==Down&&E.CallDown[E.floor]) return TRUE;

if(E.Stage==Up&&E.CallDown[E.floor]&&!RequireAbove(E)) {

E.Stage=Down;return TRUE;

}

if(E.Stage==Down&&E.CallUp[E.floor]&&!RequireBelow(E)) {

E.Stage=Up;return TRUE;

}

return FALSE;

}

Status EleOpenDoor(Elevator &E) {

//判断电梯是否要开门

if(E.CallCar[E.floor]||E.CallDown[E.floor]&&E.Stage==Down||E.CallUp[E.floor]&&E.Stag e==Up)

return TRUE;

if(E.status==Waiting) {

if(E.CallDown[E.floor]) {E.Stage=Down;return TRUE;}

if(E.CallUp[E.floor]) {E.Stage=Up;return TRUE;}

}

return FALSE;

}

EleStage EleDecide(Elevator &E) {

//判断电梯动作

int Above,Below;

Above=RequireAbove(E);

Below=RequireBelow(E);

//无请求则停止

if(Above==0&&Below==0) return Stop;

//有请求则按请求移动

else {

if(E.Stage==Up) {

if(Above!=0) return Up;

else {

E.Stage=Down;return Down;

}

}//if

else {

if(Below!=0) return Down;

else {

E.Stage=Up;return Up;

}

}//if

}

}

Action ElevatorRun(Elevator &E){

//电梯状态转换

switch(E.status) {

case Opening:

//完成开门则转入Opened状态

E.status=Opened;E.Count=CloseTest;

return DoorOpened;

case Opened:

//进行关门测试

if(E.Stage==Down&&!E.CallCar[E.floor]&&!E.CallDown[E.floor]||

E.Stage==Up&&!E.CallCar[E.floor]&&!E.CallUp[E.floor]) {//无人进出,关门

E.status=Closing;E.Count=DoorTime;

}//if

break;

case Closing:

//完成关门则转入Closed状态

E.status=Closed;

return DoorClosed;

case Waiting:

//不在第一层且超出所规定的停候时间,电梯向第一层移动

if(E.Count==0) {

if(E.floor!=1) E.CallCar[1]=1;

}

else E.Count--;

//如果有人可以进入,则开门

if(EleOpenDoor(E)) {

E.status=Opening;E.Count=DoorTime;break;

}

case Closed:

//根据EleDecide的返回值设定电梯状态

switch(EleDecide(E)) {

case Up: E.status=Moving;E.Count=UpTime+Accelerate;return GoingUp;

case Down: E.status=Moving;E.Count=DownTime+Accelerate;return GoingDown;

case Stop:if(E.status!=Waiting) {E.status=Waiting;E.Count=OverTime;} };//switch

break;

case Moving:

//完成移动

if(E.Stage==Up) E.floor++;

else E.floor--;

if(EleAchieved(E)) {//到达目标层,转入减速状态

E.status=Decelerate;

E.Count=DownDecelerate;

}

else E.Count+=DownTime;//未到达目标层,继续下降

return Achieved;

case Decelerate:

//完成减速

//确定正确的电梯时期

if(E.Stage==Up&&!E.CallUp[E.floor]&&!RequireAbove(E)) E.Stage=Down;

else if(E.Stage==Down&&!E.CallDown[E.floor]&&!RequireBelow(E)) E.Stage=Up;

//转到开门状态

E.status=Opening;E.Count=DoorTime;

break;

};//switch

return None;

}//ElevatorRun

//单链队列——队列的链式存储结构

typedef Client *QElemType;

//等候队列

typedef struct QNode {

QElemType data;

struct QNode *next;

}QNode,*QueuePtr;

typedef struct {

QueuePtr front; //队头指针

QueuePtr rear; //队尾指针

}WQueue;

//等待队列的基本操作

Status InitQueue(WQueue &Q) {

//构造一个空队列Q

Q.front=Q.rear=new QNode;

if(!Q.front) return OVERFLOW;//分配存储失败

Q.front->next=NULL;

Q.front->data=NULL;

return OK;

}

Status DestroyQueue(WQueue &Q) {

//销毁队列Q

while(Q.front) {

Q.rear=Q.front->next;

if(Q.front->data) DestoryClient(Q.front->data);

delete Q.front;

Q.front=Q.rear;

}

return OK;

}

Status EnQueue(WQueue &Q,QElemType e) {

//插入元素e为Q的新的队尾元素

QueuePtr p;

p=new QNode;

if(!p) return OVERFLOW;

p->data=e;p->next=NULL;

Q.rear->next=p;

Q.rear=p;

return OK;

}

Status DeQueue(WQueue &Q,QElemType &e) {

//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;

//否则返回ERROR

QueuePtr p;

if(Q.front==Q.rear) return ERROR;

p=Q.front->next;

e=p->data;

Q.front->next=p->next;

if(Q.rear==p) Q.rear=Q.front;

delete p;

return OK;

}

Status QueueEmpty(WQueue Q) {

//判断队列是否为空

if(Q.front==Q.rear) return TRUE;

else return FALSE;

}

Status QDelNode(WQueue &Q,QueuePtr p) {

//删除队列中p指向的结点的下一个结点

QueuePtr q;

if(p==NULL||p->next==NULL) return ERROR;

q=p->next;

p->next=q->next;

if(p->next==NULL) Q.rear=p;

DestoryClient(q->data);

delete q;

return OK;

}

Status CGiveUp(WQueue &Q,int floor) {

//删除放弃等待的乘客

QueuePtr p;

p=Q.front;

if(p->next!=NULL)

if(p->next->data->GivepuTime==0&&floor!=p->next->data->Infloor) {

PrintClientInfo(*(p->next->data),GiveUp);

TotalTime+=Time-CInTime(*(p->next->data));

QDelNode(Q,p);//将放弃等待的人删除

GiveUpNumber++;

}

else p->next->data->GivepuTime--;

return OK;

}

三.调试分析

这个题设计比较困难,其中大部分程序都是借鉴他人的,迄今为止,还有一些地方不大明白,,这个程序有很多变量,有的变量仅是在某些函数中赋予其值罢了,看来还需简洁。四.用户手册

在本设计中,用户只需按照提示依次输入正确的数值输入信息。程序运行后输入程序的运行时间,电梯开始运行。此间程序会一直运行到开始时输入的运行时间,此时整个程序运行结束,按任意键退出。

五.测试数据及测试结果

六.源程序清单

void InOut(Elevator &E,WQueue w[Maxfloor+1][2]) {

//进行乘客的进出电梯活动

//注意:电梯时期要正确,否则乘客无法进入。

Client *p;

if(E.CallCar[E.floor]) //人要从电梯中走出

if(StackEmpty(E.S[E.floor])) E.CallCar[E.floor]=0;

else {//当前层的乘客栈非空,出电梯

Pop(E.S[E.floor],p);E.ClientNumber--;

InOutCount=InOutTime;

PrintClientInfo(*p,Out);

TotalTime+=Time-CInTime(*p);

DestoryClient(p);

}//else

if(E.CallCar[E.floor]==0) //有人要走入电梯

if(!QueueEmpty(w[E.floor][E.Stage])) {//若队列不空,继续进电梯

DeQueue(w[E.floor][E.Stage],p);

Push(E.S[COutfloor(*p)],p);

if(E.CallCar[COutfloor(*p)]!=1) {

//按下要去楼层的按钮

E.CallCar[COutfloor(*p)]=1;

}

E.ClientNumber++;

InOutCount=InOutTime;

PrintClientInfo(*p,In);

}//if

else {//乘客的进出活动已完成

if(E.Stage==Down) E.CallDown[E.floor]=0;//将相应的下降按钮取消

else E.CallUp[E.floor]=0;//将相应的上升按钮取消

}

}

void NewClient(Elevator &E,WQueue w[5][2]) {

//进入新乘客

Client *p;

CreatClient(p);//新的乘客

//将该乘客插入相应队列并按下相应按钮(Up/Down)

if(GoAbove(*p)) {

EnQueue(w[CInfloor(*p)][Up],p);E.CallUp[CInfloor(*p)]=1;

}

else {

EnQueue(w[CInfloor(*p)][Down],p);E.CallDown[CInfloor(*p)]=1;

}//else

}

/**********************************************************/

void Print(Elevator &E,Action a) {

//输出电梯动作信息

switch(a) {

case DoorOpened:

cout<

case DoorClosed:

cout<

case Achieved:

cout<

case GoingUp:

cout<

case GoingDown:

cout<

default:break;

};//switch

}

#define test 0 //test为1时对电梯效率进行测试,test为0时观察电梯运行情况。#include "Building.h"

int main() {

Elevator E;//电梯

WQueue w[Maxfloor+1][2];//每层都有两个等待队列:上楼队列和下楼队列//初始化

InitEle(E);

srand( (unsigned)time( NULL ));

for(int i=0;i<=Maxfloor;i++) {

InitQueue(w[i][Up]);

InitQueue(w[i][Down]);

}

#if test

MaxTime=100000;//12099999

#else

cout<<"请输入电梯的运行时间:";

cin>>MaxTime;

#endif

while(Time++

//---------------乘客事件----------------

//新乘客进入事件

if(InterTime==0) NewClient(E,w);

else InterTime--;

//乘客放弃事件放弃

for(int i=0;i<=Maxfloor;i++)

for(int j=0;j<2;j++) {

CGiveUp(w[i][j],EleFloor(E));

}

//乘客进出事件

if(InOutCount==0) {

if(EleStatus(E)==Opened) InOut(E,w);

}

else InOutCount--;

//---------------电梯事件----------------

if(CountOver(E)||EleStatus(E)==Closed||EleStatus(E)==Waiting) { Action a;

a=ElevatorRun(E);

#if !test

Print(E,a);

if(EleStatus(E)==Decelerate) PrintStatus(E,w);

#endif

}

#if !test

Sleep(100);//延迟0.1s

#endif

}

cout<<"共"<

cout<<"共"<

cout<<"平均等待时间为:"<

DestoryEle(E);

for(i=0;i<=Maxfloor;i++) {

DestroyQueue(w[i][Up]);

DestroyQueue(w[i][Down]);

}

return 0;

}

#include

#include

#include

#include

#include

#include

#include

//所有常量,全局变量和类型定义

#define NULL 0 //空指针

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

#define INT_MAX 32767

//Status是函数类型,其值是函数结果状态代码

typedef int Status;

#define Empty 0

//------------------------------------------------------

//电梯状态

enum EleStatus{Opening,Opened,Closing,Closed,Moving,Decelerate,Waiting};

enum Action{DoorOpened,DoorClosed,GoingUp,GoingDown,Achieved,None};

enum EleStage{Up,Down,OpenDoor,Stop};

enum ClientStatus{New,GiveUp,In,Out,Finish};

#define CloseTest 40 //电梯关门测试时间

#define OverTime 300 //电梯停候超时时间

#define Accelerate 15 //加速时间

#define UpTime 51 //上升时间

#define DownTime 61 //下降时间

#define UpDecelerate 14//上升减速

#define DownDecelerate 23 //下降减速

#define DoorTime 20 //开门关门时间

#define InOutTime 25 //进出电梯时间

#define Maxfloor 4 //最高层

#define Minfloor 0 //最低层

long Time=0; //时钟

long MaxTime;//系统运行最长时间

int InOutCount=0;//用于进出计时

int InterTime=0;//下一乘客进入系统的时间

int ID=0; //乘客编号

int GiveUpNumber=0;//乘客放弃的数目

int TotalTime=0;//总共等待时间

//乘客类型

typedef struct {

int ClinetID; //乘客编号

int Outfloor; //去哪层

int InTime; //该乘客进入时间

int GivepuTime; //所能容忍的等待时间

int Infloor;//乘客进入的楼层

}Client;

//乘客类型基本操作

void PrintClientInfo(Client const &e,ClientStatus s) {

//输出乘客信息

#if !test

switch(s) {

case New:cout<

"<

case GiveUp:cout<

case Out:cout<

case In:cout<

default:break;

};//switch

#endif

}

Status CreatClient(Client *&p) {

//生成新的乘客

int d;

p=new Client;

if(!p) return OVERFLOW;

p->ClinetID=++ID;

//ut<

//ut<

cout<>d;

p->GivepuTime=d;//产生所能容忍的等待时间

p->InTime=Time;

cout<<"下一乘客要到达的时间:";cin>>d;

InterTime=d;//产生下一乘客要到达的时间

cout<<"所要到达的楼层:";cin>>d;

p->Outfloor=d; //产生所要到达的楼层

//该乘客出现的楼层

while((p->Infloor=rand()%(Maxfloor+1))==p->Outfloor);

// cin>>p->Infloor>>p->Outfloor>>InterTime;

PrintClientInfo(*p,New);

return OK;

}

电梯模拟

一电梯模拟 一.题目要求 模拟某校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。九个楼层由下至上依次称为地下层、第一层、第二层、……第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。 乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。 模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层静止时间超过300t,则驶回1层侯命。 要求: 按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。 二.设计 1. 设计思想 (1)数据结构设计 构建一个栈用以表示乘客,用等待队列表示电梯外等待的乘客 (2)算法设计 1.乘客类型反映乘客的所有属性 2乘客栈类型,电梯内的乘客用乘客栈表示,去不同楼层的乘客放在不同的栈中。 3.等候队列类型,在电梯外等待的乘客用等待队列表示。每层各有两个等待队列,分别为上楼队列和下楼队列。 4.电梯类型,表示电梯的各个属性和所有动作。 2设计表示 1. 调用的函数如下: #include #include #include #include #include #include #include 2. 各函数说明如下: #define DownDecelerate 23 //下降减速 #define DoorTime 20 //开门关门时间 #define InOutTime 25 //进出电梯时间 #define Maxfloor 4 //最高层 #define Minfloor 0 //最低层 long Time=0; //时钟 long MaxTime;//系统运行最长时间 int InOutCount=0;//用于进出计时

电梯模拟程序(Java语言编写)

import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; public class LiftMainTest { public static void main(String args[]) { new LiftTest("电梯测试"); } } //批量数据测试对话框 class Dialog extends JDialog implements ActionListener { int Message=0; JPanel DJPanel=new JPanel(); JTextField TestField[]=new JTextField[16]; JLabel TestLabel1=new JLabel("时间"); JLabel TestLabel2=new JLabel("人数"); JLabel TestLabel3=new JLabel("起始楼层"); JLabel TestLabel4=new JLabel("目标楼层"); JButton ok=new JButton("确定"); JButton cancel=new JButton("取消"); Dialog(JFrame f,String s,boolean b) { super(f,s,b); DJPanel.setLayout(new GridLayout(7,3)); for(int i=0;i<=15;i++) { TestField[i]=new JTextField(4); } DJPanel.add(TestLabel1); DJPanel.add(TestLabel2); DJPanel.add(TestLabel3); DJPanel.add(TestLabel4); DJPanel.add(TestField[0]); DJPanel.add(TestField[1]); DJPanel.add(TestField[2]); DJPanel.add(TestField[3]); DJPanel.add(TestField[4]); DJPanel.add(TestField[5]); DJPanel.add(TestField[6]); DJPanel.add(TestField[7]); DJPanel.add(TestField[8]);

模拟电梯系统试题

《电子产品装配与调试》试题 题目:模拟电梯系统 完成时间:4小时 工位号: 日期:______________________________

第一部分电路说明部分 一、电路功能概述 模拟电梯系统总共分为三个模块,中枢控制,显示模块,电机模块,键盘输入,电梯门安全检测模块。 中枢控制为STC89C52RC单片机,完成电梯的逻辑判断,按键读取,显示功能。显示模块由两位数码管和LED指示灯组成。 数码管DS1显示当前电梯状态,有停止,上行,下行三种状态,分别如下图所示: 数码管DS2显示当前楼层。 “当前楼层”标志下的一列LED(LED2,LED5……LED23)指示当前电梯所处的楼层,例如电梯在2楼,则LED20点亮,在5楼,则LED11点亮。 “电梯按钮”标志下的一列LED(LED1,LED4……LED22)指示电梯内部按钮状态,例如电梯内部有人需要到5楼,则LED10点亮,有人需要到8楼,则LED1点亮。 “楼层按钮”标志下的一列LED(LED25,LED27……LED33)指示电梯外部按钮状态,也就是每层楼的呼叫按钮指示,例如1楼有人需要乘电梯,则LED33点亮,5楼有人需要乘电梯,则LED29点亮。 贴片LED(LED3,LED6……LED24)为电梯门指示,关门时,LED从两旁向中间依次点亮,开门时,LED从中间向两旁依次熄灭。

“电梯按钮”标志下的按钮K(K1,K2……K8)为电梯内部的按钮,例如电梯内部有人想上5楼,则需要按下K4(从下往上的第5个按键),上8楼,则需要按下K1。 “楼层按钮”标志下的按钮K(K9,K10……K16)为每层楼的呼叫按钮,例如5楼有人想乘电梯,则按下K12。 电机模块有两个电机,一个是拖动电机,一个是门控电机,拖动电机正反转代表电梯上下行,门控电机正反转代表开关门。 电梯门安全检测模块采用红外线对管,检测电梯门关闭时是否有人或物体在门中央,若检测到,电梯门会打开,防止发生危险。

电梯模拟系统教学内容

电梯模拟系统

目录 一:问题描述—————————————————————————第2页二:问题分析—————————————————————————第2页三:数据结构—————————————————————————第2页四:算法设计—————————————————————————第4页五设计与调试分析———————————————————————第6页六:体会及建议————————————————————————第7页七:参考文献—————————————————————————第7页八:原代码——————————————————————————第7页

一:问题描述 设计一个电梯模拟系统。这是一个离散的模拟程序,因为电梯系统是乘客和电梯等“活动体”够成的集合,虽然他们彼此交互作用,但是他们的行为是基本独立的。在离散的模拟中,一模拟时钟决定每个活动体的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一个时刻。 二:问题分析 (1)、模拟某校五层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。五个楼层由下至上依次称为地下层、第一层、第二层、第三层和第四层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来该层候命。五个楼层从下到上的编号为:0、1、2、3、4。除了地下层外,每一层都有一个要求向下的按钮除了第四层外,每一层都有一个要求向上的按钮。对应的变量为:CallUp[0..3]和CallDown[1..4]。电梯内的五个目标层按钮对应的变量为:CallCar[0..4]。

基于单片机的电梯控制系统

基于单片机的电梯控制系统

————————————————————————————————作者:————————————————————————————————日期:

1 课题概述 1.1课题的主要研究内容及设计步骤 本课题的主要任务是完成一个电梯系统的调度模块,即根据每个楼层不同顾客的按键需求,让电梯做出合理的判断,正确高效地知道电梯完成各项载客任务。根据此任务,本课题需要研究的内容有: 1、根据系统的技术要求,进行系统硬件的总体方案设计; 2、学习单片机的相关知识,并且加以运用; 3、选择恰当的芯片,并对其内部协议有所掌握,便于应用。 4、研究C语言编程,并且规定电梯的工作规则,用C语言加以实现; 5、对软件和硬件进行调试,让其协调工作,完成指定任务。 结合以上内容,本课题的设计方案步骤如下: 关于硬件部分: 首先,对实际的电梯系统进行模拟,一般情况下,一个电梯应该具备相关按键、显示二极管、数码管等,由于这是一个调度模块,故没有设计具体的轿厢等机械部分。然后,结合这些实物,选择恰当的芯片,并分成若干模块,安排好各自之间的关系。接着,要完成电路图的设计,画出PCB板,焊接相关器件后进行硬件调试,看是否好用并加以适当的更正。 关于软件部分: 关于电梯调度时所遵循的原则作出规定,其必须基于高效与人性化两个原则。最后是使用C语言将规定程序化,以便电梯真正的运作。 当然,二者的关系并不是分离的,它们是相辅相成,硬件依据软件来验证,软件依据硬件来调试。经过一个个的发现问题、一个个的解决问题,最终做出完美的电梯调度模块。 1.2课题的开发环境简介 1.2.1电路图制作软件proteus 7.2 Proteus是目前最好的模拟单片机外围器件的工具,因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。 1.2.2C51的程序开发软件Keil

电梯模拟系统

电梯模拟系统 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT

目录 一:问题描述—————————————————————————第2页二:问题分析—————————————————————————第2页三:数据结构—————————————————————————第2页四:算法设计—————————————————————————第4页五设计与调试分析———————————————————————第6页六:体会及建议————————————————————————第7页七:参考文献—————————————————————————第7页八:原代码——————————————————————————第7页一:问题描述 设计一个电梯模拟系统。这是一个离散的模拟程序,因为电梯系统是乘客和电梯等“活动体”够成的集合,虽然他们彼此交互作用,但是他们的行为是基本独立的。在离散的模拟中,一模拟时钟决定每个活动体的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一个时刻。 二:问题分析 (1)、模拟某校五层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。五个楼层由下至上依次称为地下层、第一层、第二层、第三层和第四层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来该层候命。五个楼层从下到上的编号为:0、1、2、3、4。除了地下层外,每一层都有一个要求向下的按钮除了第四层外,每一层都有一个要求向上的按钮。对应的

变量为:CallUp[0..3]和CallDown[1..4]。电梯内的五个目标层按钮对应的变量为:CallCar[0..4]。 (2)、电梯一共有七个状态,即正在开门(Opening)、已开门(Opened)、正在关门(Closing)、已关门(Closed)、等待(Waiting)、移动(Moving)、减速(Decelerate)。 (3)、乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。对于在楼层内等待电梯的乘客,将插入在等候队列里,每一层有两个等候队列,一队要求向上,一队要求向下,用链队列来实现。对于在电梯内的乘客,用五个乘客栈来实现,该乘客要去哪一层,就把他放在相应编号的栈中,对应变量为EleStack[0…4]。(4)、模拟时钟从0开始,时间单位为秒。人和电梯的各种动作均要耗费一定的时间单位(简记为t): 有人进出时,电梯每隔40t测试一次,若无人进出,则关门 关门和开门各需要20t 每个人进出电梯均需要25t 电梯加速需要15t 如果电梯在某层静止时间超过300t,则驶回1层候命。 (5)、按时序显示系统状态的变化过程:发生的全部人和电梯的动作序列。三:数据结构 1、乘客类型 反映乘客的所有属性。 ADT Client 数据对象:D={a i∈乘客信息,I=1,2,…,n,n≥0}

电梯运行模拟控制器

目录 1.课程设计简介 (1) 1.1简介 (1) 1.2设计总电路图 (2) 1.3实物图 (4) 2.设计题目 (4) 3.总体设计 (6) 3.1电梯运行模拟控制器的总体运作流程 (6) 3.2电梯运行模拟控制器各模块关系 (6) 4.详细设计 (7) 6.1基本的IO配置(输入/输出模式) (7) 输出模式配置 (7) 输入模式配置 (7) 6.2外部中断配置 (8) 定时器中断 (8) 外部按键输入中断 (8) 6.3电梯运行逻辑设计(软件编码) (9) 数据结构设计 (9) 功能接口设计 (9) 5.体会与总结 (10) 6.附录 (11) 源代码 (11) 参考文献 (26) 1.课程设计简介 1.1简介 本设计使用STM8S系列作为主控芯片,使用矩阵键盘、若干个LED和两位

数码管作为外设。其中矩阵键盘用来模拟电梯按键,若干个LED灯用来模拟电梯的运动方向、楼层的指示灯(电梯内部楼层对应的按钮),两位的数码管用于显示电梯目前所处楼层。 1.2设计总电路图(基于AD这个平台生成的PCB图与原理图) 原理图 原理图

PCB图 PCB图

1.3实物图 实物图 2.设计题目 设计一个电梯运行模拟控制器,其系统框图如下图所示:

电梯运行模拟控制器框图 功能要求:能够模拟控制一个8层楼梯的电梯的运行。具体要求如下: 1.电梯平时没有接到命令时候或者执行完命令后停在1楼,门关闭.。 2.电梯运行速度2秒一层楼 3.电梯门在开启的情况下没有收到命令10秒中后自动关闭。在运动中门必须关闭,(最后3秒可以设置音响警告信号) 4.一句话,电梯控制器满足实际电梯的运行要求,电梯在运行的时候可以最多记住8个命令。并且综合考虑公平性(先按键先执行)和有效性(完成任务的总的行走路径最短)来执行。 要求完成的内容: 1.完成硬件电路的设计与安装调试(可借助单片机实验电路板),并用CAD 软件画出原理电路图。 2.画出流程图,编写并调试驱动程序。 3.撰写设计报告。 2

最新四层电梯的自动控制系统及模拟系统设计

四层电梯的自动控制系统及模拟系统设计

陕西国防工业职业技术学院 SHAANXI INSTITUTE OF TECHNOLOGY 毕业设计说明书 题目四层电梯的自动控制系统及模拟系统

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段

保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

数据结构——电梯模拟的报告

数据结构课程设计报告

1
页,共

1.课程设计目的
1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定 问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并 在此过程中培养他们严谨的科学态度和良好的工作作风。
2.课程设计任务与要求:
任务 根据教材《数据结构题集(C 语言版)(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数 》 据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解 和综合运用。 设计题目从《数据结构题集》 “第二篇 实习篇”中选取,每班每题不得超过 2 人。 另选题: 学生自选课题 学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固 数据结构课程所学的知识。学生自选课题需在 17 周前报课程设计指导教师批准方可生效。 要求: 要求: 1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象 数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否 直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、.设计的题目要求达到一定工作量(300 行以上代码) ,并具有一定的深度和难度。 3、程序设计语言推荐使用 C/C++,程序书写规范,源程序需加必要的注释; 4、每位同学需提交可独立运行的程序; 5 、每位同学需独立提交设计报告书(每人一份) ,要求编排格式统一、规范、内容充实,不少于 10 页(代 码不算) ; 6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
3.课程设计说明书

电梯模拟系统

目录 一:问题描述—————————————————————————第2页二:问题分析—————————————————————————第2页三:数据结构—————————————————————————第2页四:算法设计—————————————————————————第4页五设计与调试分析———————————————————————第6页六:体会及建议————————————————————————第7页七:参考文献—————————————————————————第7页八:原代码——————————————————————————第7页

一:问题描述 设计一个电梯模拟系统。这是一个离散的模拟程序,因为电梯系统是乘客和电梯等“活动体”够成的集合,虽然他们彼此交互作用,但是他们的行为是基本独立的。在离散的模拟中,一模拟时钟决定每个活动体的动作发生的时刻和顺序,系统在某个模拟瞬间处理有待完成的各种事情,然后把模拟时钟推进到某个动作预定要发生的下一个时刻。 二:问题分析 (1)、模拟某校五层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。五个楼层由下至上依次称为地下层、第一层、第二层、第三层和第四层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来该层候命。五个楼层从下到上的编号为:0、1、2、3、4。除了地下层外,每一层都有一个要求向下的按钮除了第四层外,每一层都有一个要求向上的按钮。对应的变量为:CallUp[0..3]和CallDown[1..4]。电梯内的五个目标层按钮对应的变量为:CallCar[0..4]。 (2)、电梯一共有七个状态,即正在开门(Opening)、已开门(Opened)、正在关门(Closing)、已关门(Closed)、等待(Waiting)、移动(Moving)、减速(Decelerate)。 (3)、乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。对于在楼层内等待电梯的乘客,将插入在等候队列里,每一层有两个等候队列,一队要求向上,一队要求向下,用链队列来实现。对于在电梯内的乘客,用五个乘客栈来实现,该乘客要去哪一层,就把他放在相应编号的栈中,对应变量为EleStack[0…4]。 (4)、模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要耗费一定的时间单位(简记为t): 有人进出时,电梯每隔40t测试一次,若无人进出,则关门 关门和开门各需要20t 每个人进出电梯均需要25t 电梯加速需要15t 如果电梯在某层静止时间超过300t,则驶回1层候命。 (5)、按时序显示系统状态的变化过程:发生的全部人和电梯的动作序列。 三:数据结构 1、乘客类型 反映乘客的所有属性。 ADT Client 数据对象:D={a i∈乘客信息,I=1,2,…,n,n≥0} 数据关系:R={|a i-1,a i∈D,i=2,…,n}

模拟电梯控制及显示系统设计

模拟电梯控制与显示系统设计 摘要 单片机即单片微型计算机(Single-Chip Microputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。其中51单片机是各种单片机中最为典型和最有代表性的一种,广泛应用于各个领域.电梯是集机械原理应用、电气控制技术、微处理器技术、系统工程学等多学科和技术分支于一体的机电设备,它是建筑中的永久垂直交通工具。本论文选择 AT89S51为核心控制元件,设计了一个5层电梯智能操作与显示系统,使用单片机C51语言进行编程,实现运送乘客到任意楼层,并且显示电梯的楼层和上下行。利用单片机控制电梯有成本低,通用性强,灵活性大及易于实现复杂控制等优点 随着现代高科技的发展,住房和办公用楼都已经逐渐向高层发展。电梯是高层宾馆、商店、住宅、多层仓库等高层建筑不可缺少的垂直方向的交通运输工具。1889年美国奥梯斯升降机公司推出的世界上第一部以电动机为动力的升降机,同年在纽约市马累特大厦安装成功。随着建筑物规模越来越大,楼层也越来越高,对电梯的调速精度、调速围等静态和动态特性都提出了更高的要求。由于传统的电梯运行逻辑控制系统采用的是继电器逻辑控制线路。采用这种控制线路,存在易出故障、维护不便、运行寿命较短、占用空间大等缺点。 目前,由可编程控制器(PLC)或微型计算机组成的电梯运行逻辑控制系统,正以很快的速度发展着。可编程控制器,是微机技术与继电器常规控制技术相结合的产物,是在顺序控制器和微机控制器的基础上发展起来的新型控制器,是一种以微处理器为核心用作数字控制的专用计算机,它有良好的抗干扰性能,适应很多工业控制现场的恶劣环境,所以现在的电梯控制系统主要还是由可编程控制器控制。但是由于PLC的针对性较强,每一台PLC都是根据一个设备而设计的,所以价格较昂贵。而单片机价格相当便宜,如果在抗干扰功能上有所提高的话完全可以代替PLC实现对工控设备的控制。当然单片机并不象PLC那么有针对性,所以由单片机设计的控制系统可以随着设备的更新而不断修改完善,更完美的实现设备的升级。电梯控制系统是比较复杂的一个大型系统,在计算机诞生的几十年里,继电器控制系统为电梯控制的发展做了巨大的贡献,但在性能上和PLC还是有本质上的差距。在科技的不断发展下,单片机控制系统很快可以解决抗扰性,成为方便有效的电梯控制系统 单片机概述 单片机全称为单片微型计算机(Single Chip Microputer),又称为微控制器(Microcontroller Unit)或嵌入式控制器(Embedded Controller)。它是将计算机的基本部件微型化并集成到一块芯片上的微型计算机,通常片都含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线等。(如图1-1所示)。随着技术的发展,单片机片集成的功能越来越强大,并朝着SOC(System on Chip)方向发展

基于51单片机的模拟电梯控制系统

目录 摘要............................................................................. II 目录.............................................................................. I 第1章绪论.. (1) 1.1电梯的研究背景及意义 (1) 1.2 电梯的国内外发展状况 (1) 第2章电梯设计任务与要求 (2) 2.1设计任务 (2) 2.2设计要求 (2) 第3章总体设计方案 (3) 3.1设计思路 (3) 3.2总体设计框图 (3) 第4章电梯控制系统 (4) 4.1电梯控制系统 (4) 4.2主要硬件设计器件介绍 (5) 4.3 软件设计 (9) 第5章个人心得体会 (12) 参考文献 (13) 致谢 (14) 附录I: (15) 附录II: (17)

摘要 本文介绍了基于单片机的电梯控制系统,硬件部分主要由单片机最小系统模块、电梯内外电路按键模拟检测模块、电梯外请求发光管显示模块、楼层显示数码管模块、电梯上下行模块及模拟传感器模块等5部分组成。该系统采用单片机(AT89C51)作为控制核心,内外均使用按键按下与否引起的单片机相应端口电平变化的原理,作为用户请求信息发送到单片机,单片机根据判断的结果最终驱动步进电机做相应的运动,在运动的过程中,单片机依照请求信息通过模拟的传感器使步进电机停止运动,并利用彩灯作为上升和下降的状况显示,七段数码管实时显示当前楼层,完成整个请求和响应的过程。 软件部分使用汇编语言实现,利用查询方式来检测用户请求的按键信息。根据电梯运行到相应楼层时,模拟按键引起的电平变化,进行判断和执行实现电梯的控制,并且将程序模块化,方便了修改和调用。硬件设计简单可靠,结合软件,基本实现了四层电梯的模拟运行。 关键词:单片机,AT89C51,电梯控制,步进电机

电梯操作证考试模拟试题及答案

电梯操作证考试模拟试题 一、填空题 (1)进入底坑时,必须先断开底坑急停安全开关,若底坑较深时,应备有梯子上下。底坑照明应为36V安全电压照明。 (2)维修、保养时严禁在机房里将门电联锁勾线作载人使用,机房检修试车应采取封锁厅、轿门措施,防止自动信号开门载人。 (3)施工时,必须戴好安全帽,穿绝缘鞋登高作业应系好安全带,工具要放在工具袋内,大工具要用保险绳扎好妥善放置。 (4)进出轿厢、轿顶须思想集中,看清轿厢的具体位置,严禁电梯外门一打开就进去,以防踏空下坠,在电梯未停妥之前,严禁从轿内或轿顶跳进、跳出。 (5)进入轿顶,须先断开轿顶急停开关或置轿顶为检修状态打开照明开关,再开始检查保养工作。离开轿厢后,必须关好内、外门 (6)在轿顶开车时,应密切注意周围环境,由专人下达正确的口令,开动前,轿顶人员要站好安全位置,不得将头和肢体伸出轿顶边缘,严禁依靠、手扶轿顶轮等运动部件。 (7)轿顶维修人员禁止踩踏门机,接线盒等电气部件。 (8)严禁一脚踩在轿顶,另一脚踏在井道或其它固定物上作业。 (9)在轿顶检修维修保养工作时,切忌靠近或挤压防护栏,并应注意对重与轿厢间距,人体切勿伸出防护栏。

(10)机房操作电梯运行时,应确保轿内无乘客,厅、轿门关闭,先切断门电机控制电源,再操作电梯运行。 (11)禁止井道上、下同时工作。必须上下配合工作时,底坑人员必须戴好安全帽。 (12)给转动部位加油、清洗或观察钢丝绳的磨损情况时,必须停止使用电梯并且切断电梯电源。 (13)使用的行灯必须带防护罩,电压为36V以下。 (14)如果必须要短接门锁检查电梯门锁故障时,千万要保证电梯处于检修状态。检查完毕后,务必先断开门锁短接线后才能让电梯复位到正常状态。 (15)如果要用三角钥匙打开厅门,一定要看清楚轿厢的位置,不要想当然地认为电梯一定就在什么位置。 (16)使用喷灯时,装油量不得超过3/4,应使用煤油,严禁使用汽油。 (17)当工作场地高度超过2 米时,应带好安全带。 (18)在黑暗地点进行电路作业时,必须使用绝缘电筒。 (19)井道内严禁扔投物品,向下传递物品时应使用绳索以保证安全。 二、判断题 1、(∨)电梯维保工,必须经技术培训和安全操作培训。并经主管部门考核合格,取得特殊工种安全操作证,方可独立操作,严禁无证作业。

基于51单片机的模拟电梯控制系统讲解

摘要 本文介绍了基于单片机的电梯控制系统,硬件部分主要由单片机最小系统模块、电梯内外电路按键模拟检测模块、电梯外请求发光管显示模块、楼层显示数码管模块、电梯上下行模块及模拟传感器模块等5部分组成。该系统采用单片机(AT89C51)作为控制核心,内外均使用按键按下与否引起的单片机相应端口电平变化的原理,作为用户请求信息发送到单片机,单片机根据判断的结果最终驱动步进电机做相应的运动,在运动的过程中,单片机依照请求信息通过模拟的传感器使步进电机停止运动,并利用彩灯作为上升和下降的状况显示,七段数码管实时显示当前楼层,完成整个请求和响应的过程。 软件部分使用汇编语言实现,利用查询方式来检测用户请求的按键信息。根据电梯运行到相应楼层时,模拟按键引起的电平变化,进行判断和执行实现电梯的控制,并且将程序模块化,方便了修改和调用。硬件设计简单可靠,结合软件,基本实现了四层电梯的模拟运行。 关键词:单片机,AT89C51,电梯控制,步进电机

目录 摘要.............................................................................. I 目录............................................................................. II 第1章绪论.. (1) 1.1电梯的研究背景及意义 (1) 1.2 电梯的国内外发展状况 (1) 第2章电梯设计任务与要求 (2) 2.1设计任务 (2) 2.2设计要求 (2) 第3章总体设计方案 (3) 3.1设计思路 (3) 3.2总体设计框图 (3) 第4章电梯控制系统 (4) 4.1电梯控制系统 (4) 4.2主要硬件设计器件介绍 (5) 4.3 软件设计 (9) 第5章个人心得体会 (12) 参考文献 (13) 致谢 (14) 附录I: (15) 附录II: (17)

模拟电梯模型(正式版)

模拟电梯模型 一、任务 设计并制作一个电梯控制模型。示意图如图1所示。 图1中:电梯间竖井模型部分可由有机玻璃粘成无上盖板的六面体ABCDEFGH,高度AE为1.2m;电梯轿厢模型J通过滑轮悬挂并由电动机M牵引,可在电梯间竖井模型的空间内上下运动。电梯间竖井模型间隔均为24cm自下向上分成5层,其楼层编号如图1所示。(其中1.2m和24cm可以跟往年一样) 二、要求: 基本要求: 1. 当某层有呼叫并有呼叫信号显示时,轿厢模型作相应的运动,并准确平 层,平层的位置误差小于等于5mm。平层结束时给出提示信号。 2. 当有多层呼叫时,轿厢模型将按说明中的电梯模型运行规则作相应的运 动,并依次在呼叫的楼层停留2~7秒; 3. 能显示轿厢模型当前到达的楼层编号和电梯目前运行方向。 4.增设模拟轿厢内表示乘客欲到达层数的按钮,轿厢模型将按照电梯模型 运行规则作相应的运动。 扩展要求: 1. 运行速度不受载重影响,保持匀速。

2. 快、中、慢三种电梯运行速度(可用时间代替,但是都要求能明显区别开) 并且不受载重影响。 3. 增设可以延长和缩短轿厢楼层停留时间的按钮(用于延长开门时间或缩短开 门时间) 4.停电时紧急操作。当市电电网停电时,用备用电源将电梯运行到最近楼层待 机不响应呼叫并开门。 5.高峰运行限制。在上班高峰期上行不响应;下班高峰期下行不响应;其他时 段上行下行都响应。所有时段无响应一段时间(时间长短自己定义)后均自动返回基层。 6.采用适当的人机界面(如采用触摸屏、语音辨识等),使界面与用户的交互 性良好,操作简易,运行迅速,适合各类人群。 7.提供维修人员管理操作模式,即提供管理人员的身份认定系统,并在管理人 员身份认定正确后,管理人员能修改电梯运行参数,如修改轿厢运行速度、增减合法用户等等。 8.其他创新功能 三、题目要求的说明 1、控制电机类型不限,其安装位置及安装方式自定。 2、关键电路版(不包括最小核心板以及相关发射板)必须是自行制作的模 块,功能电路板安装位置不限。 3、电子版论文必须附完整的程序代码、电路原理图(SchDoc格式生成的 图片)、PCB文件(图片)、元器件清单(BOM表格式,应包含元件值、 封装、型号等)等相关文件; 4、电梯竖井间部分也可简化,由一垂直平面代替,如图2所示。 5、平层的要求是以轿厢模型J的底平面(或自定标志)与表示楼层的标志 线平齐。 6、要有措施保证平层过程中轿厢模型J移动方向保持不变。 7、要有措施保证轿厢模型J起动、停止时不出现震荡。 8、关于电梯模型运行规则的说明:

模拟电梯控制系统设计论文

(此文档为word格式,下载后您可任意编辑修改!) 2010届本科生毕业设计(论文)题目:《单片机模拟电梯控制系统》文献综述 学生姓名:付天池 院系: 专业、班级:机电一体化09 学号: 指导教师:冯青秀

模拟电梯控制系统设计 摘要 单片机即单片微型计算机(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。其中51单片机是各种单片机中最为典型和最有代表性的一种,广泛应用于各个领域.电梯是集机械原理应用、电气控制技术、微处理器技术、系统工程学等多学科和技术分支于一体的机电设备,它是建筑中的永久垂直交通工具。 本论文选择AT89S51为核心控制元件,设计了一个八层电梯系统,使用单片机汇编语言进行编程,实现运送乘客到任意楼层,并且显示电梯的楼层和上下行。利用单片机控制电梯有成本低,通用性强,灵活性大及易于实现复杂控制等优点。 关键词单片机电梯控制

Abstract Microcontroller that microcomputer (Single-Chip Microcomputer) gathering CPU, RAM, ROM, the timing, number and variety of interface integrated microcontrollers. 51 various SCM SCM is the most typical and most representative of a widely used in various fields. Elevator is the application of the principle set machinery, electrical control technology, microprocessor technology, systems engineering and other technical disciplines and branches of the integration of mechanical and electrical equipment, which is building a permanent vertical transport. This paper choice AT89S51 control of the core components, designed a new 8 storey lift systems, using single-chip assembly language programming, transporting passengers arrived a floor, it also shows the elevator floor and downlink. SCM control elevators low cost, versatility, flexibility and ease of large complex control advantages Keyboards Single-Chip Microcomputer Elevator control

模拟电梯的设计与实现

模拟电梯的设计与实现 一、实验目的 1.了解电梯调度算法。 2.利用微机实验系统来模拟电梯。 3.进一步掌握微机接口的设计方法。 二、实验内容与要求 1.设计基本要求 用键盘、按钮、发光二极管和 LED显示单元来模拟电梯工作过程。楼层设为 5 层,用键盘键入希望停的楼层, 5 个发光二极管显示希望停的楼层,LED指示电梯当前所在楼层,按钮用来启、停电梯。电梯正常运行时以每 2 秒1层的速度上升或下降。 2.提高要求 设计几个按钮,模拟更多的电梯运行功能,如: ?直达按钮。若按此按钮,电梯按直达方式运行,即对运行期间新键入的停靠楼层(即使是同方向未到楼层)亦不停,直达终点楼层; ?急停按钮。电梯运行中,若按此按钮,则电梯立即停在下一到达的楼层; ?断电待修按钮。按下该钮电梯不能工作,再按一下才能重新工作; ?其它功能按钮(由设计者自由发挥)。 三、实验报告要求 1.设计目的和内容 2.总体设计 3.硬件设计:原理图(接线图)及简要说明 4.软件设计框图及程序清单 5.设计结果和体会(包括遇到的问题及解决的方法) 四、电梯的工作方式 电梯工作按以下方式运行: 1.假设当前电梯停在某层(LED显示相应楼层,5个发光二极管全灭)。键入数字键,如键入的数字与当前电梯停靠层相同,则什么也不做,若不同则相应楼层的发光二极管亮;电梯自动判别上升或下降(在运行过程中用八段码来显示楼层变化)一直到达希望停的楼层(八段码显示该楼层,相应LED 灭)。 2.假设当前电梯正在上升或下降运行(此时八段码显示楼层变化,LED 指示希望抵达的楼层),若键入新的希望停靠的楼层数字(相应的LED 亮),则对同方向(上升或下降)

电梯模拟课程设计

课程设计实验报告 课程名称______数据结构_____ 题目名称电梯模拟 学生学院__ ____ 专业班级__ 学号_______ 学生姓名______ __ ___ 指导教师______ ________ 2009 年月日

一、需求分析 一需求分析 (1)、模拟某校五层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。五个楼层由下至上依次称为地下层、第一层、第二层、第三层和第四层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来该层候命。(2)、乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。 (3)、模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要耗费一定的时间单位(简记为t): 有人进出时,电梯每隔40t测试一次,若无人进出,则关门 关门和开门各需要20t 每个人进出电梯均需要25t 如果电梯在某层静止时间超过300t,则驶回1层候命。 (4)、按时序显示系统状态的变化过程:发生的全部人和电梯的动作序列。 二、概要设计 1、乘客类型 反映乘客的所有属性。 ADT Client 数据对象:D={a i ∈乘客信息,I=1,2,…,n,n≥0} 数据关系:R={|a i-1 ,a i ∈D,i=2,…,n} 基本操作: PrintClientInfo(Client const &e,ClientStatus s) 操作结果:输出乘客信息。 CreatClient(Client *&p) 操作结果:生成新的乘客。 DestoryClient(Client *&p) 操作结果:该乘客离开系统。 GoAbove(Client const &e) 操作结果:判断该乘客是否去往高层。 CInfloor(Client const &e) 操作结果:返回乘客进入的楼层。 CInTime(Client const &e) 操作结果:返回乘客进入时间。 COutfloor(Client const &e) 操作结果:返回乘客进入时间。 } 2、乘客栈类型 电梯内的乘客用乘客栈表示,去不同楼层的乘客放在不同的栈中。 ADT Estack 数据对象:D={a i ∈乘客信息,I=1,2,…,n,n≥0} 数据关系:R={|a i-1 ,a i ∈D,i=2,…,n} 基本操作:

PLC课程设计 三层电梯控制系统

三层电梯控制系统的模拟 我设计的三层电梯控制系统的主要功能有:①楼层指示灯亮时表示停在相应的楼层,②每当停在各楼层时其楼层指示灯闪烁1秒接着常亮,③有呼叫的楼层有响应,反之没有,④电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向的呼叫均无效。 2. 硬件电路设计和描述 ①模拟装置介绍 S1、S2、S3分别为轿厢内一层、二层、三层电梯内选按钮;D2、D3分别为二层、三层电梯外下降呼叫按钮;U1、U2分别为一层、二层电梯外上升呼叫按钮;SQ1、SQ2、SQ3分别为一层、二层、三层行程开关,模拟实际电梯位置传感器的作用。 L1、L2、L3分别为一层、二层、三层电梯位置指示灯;DOWN为电梯下降状态指示灯;UP为电梯上升状态指示灯;SL1、SL2、SL3分别为轿厢内一层、二层、三层电梯内选指示灯。 ②控制要求 电梯由安装在各楼层门口的上升和下降呼叫按钮进行呼叫操纵,其操纵内容为电梯运行方向。电梯轿箱内设有楼层内选按钮S1~S3,用以选择需停靠的楼层。L1为一层指示、L2为二层指示、L3为三层指示,SQ1~SQ3为到位行程开关。电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向的呼叫均无效。例如,电梯停在由一层运行至三层的过程中,在二层轿箱外呼叫时,若按二层上升呼叫按钮,电梯响应呼叫;若按二层下降呼叫按钮,电梯运行至二层时将不响应呼叫运行至三层,然后再下降,响应二

层下降呼叫按钮。 电梯位置由行程开关SQ1、SQ2、SQ3决定,电梯运行由手动依次拨动行程开关完成,其运行方向由上升、下降指示灯UP、DOWN决定。 例如:闭合开关SQ1,电梯位置指示灯L1亮,表示电梯停在1层,这时按下三层下呼按钮D3,上升指示灯UP亮,电梯处于上升状态。断开SQ1、闭合SQ2,L1灭、L2亮,表示电梯运行至二层,上升指示灯UP仍亮;断开SQ2、闭合SQ3,电梯运行至三层,上升指示灯UP灭,电梯结束上升状态,以此类推。 当电梯在三层时(开关SQ3闭合),电梯位置指示灯L3亮。按下轿厢内选开关S1,电梯进入下降状态。在电梯从三层运行至一层的过程中,若按下二层上呼U2与下呼按钮D2,由于电梯处于下降状态中,电梯将只响应二层下呼,不响应二层上呼。当电梯运行至二层时,电梯停在二层,当电梯运行至一层时,一层内选指示灯SL1灭,下降指示灯DOWN灭,上升指示灯UP亮,电梯转为上升状态,响应二层上呼,当电梯运行至二层时,上升指示灯UP 灭。 每当到达楼层若电梯门指示灯不闪烁则继续前进,否则执行电梯门开关动作。 ③I/O分配表 (1)输入

相关主题
文本预览
相关文档 最新文档