当前位置:文档之家› 课程设计电梯控制系统

课程设计电梯控制系统

A1 系统描述1.功能描述本电梯系统用来控制一台运行于一个具有N层的大楼电梯,它具有上升、下降、开门、关门、载客的基本功能。

大楼的每一层都有:(1)两个指示灯这两个指示灯分别用于指示当前所在的层数和电梯的当前状态(上行、下行或停止);(2)电梯锁用于将本层的电梯门锁住,并使本楼层的电梯按钮失效,电梯里相应的按钮也失效,使得电梯不能也不可能停在本层;(3)按钮除了第一层和顶层,每一层都有两个按钮(上行、下行),乘客可以呼叫上楼或下楼,顶楼只有一个下楼按钮,而第一层只有一个上楼按钮。

电梯里面具有:(1)标示从“1”到“N”的N个按钮,用于让乘客选择所要的层数;(2)关门按钮当乘客按下此按钮时,电梯门如果开着将关上,否则不执行任何操作;(3)开门按钮当乘客按下此按钮时,电梯如果停在某一层,电梯门将打开,否则不执行任何操作;(4)超重测试和警报装置电梯的地面有超重感应装置,当电梯载重达到某一个值时,电梯“超重警报铃”发出超重警报,并且不执行关门命令。

2.关键实现方法描述用“最大距离循环”来说明电梯的运行方式。

也说是说,电梯处于上行状态时就一直上行直到不再有上行任务,电梯处于下行状态时就一直下行直到不再有下行任务。

当电梯正在上行时,如果上行队列的队列头改变时,系统将同时将这个新的队列头发送给电梯作为它的新目的地。

有两种原因引起队列头的改变。

(1)新的请求插入到上行队列头。

(2)电梯到达某个楼层将这个楼层的请求从上行队列的队列头删除,后继的更高楼层号成为对列头。

当电梯正在下行时,如果下行队列的队列头改变时,系统将同时将这个新的队列头发送给电梯作为它的新目的地。

有两种原因引起下行队列头的改变。

(1)新的请求插入到下行队列头。

(2)电梯到达某个楼层将这个楼层的请求从下行队列的队列头删除,后继的更高楼层号成为对列头。

在电梯上行过程中,当上行队列中没有比电梯当前所在的楼层更高的楼层号时,发送电梯目的地的开始从下行队列中取得。

同样,在电梯下行过程中,当下行队列中没有比电梯当前所在的楼层更低的楼层号时,发送电梯目的地的开始从上行队列中取得。

如此反复,当两个队列中都没有数据时,电梯暂停。

当电梯到达某层时,此层的所有请求按钮全部复位(包括楼层和电梯里的按钮),电梯门自动开启,在一段时间内如果乘客没有按下开门或关门的按钮,电梯将自动关门。

为了保证电梯系统的安全,在任何不安全的情况下,紧急制动就会被促发,电梯被强制停止。

A2 用例模型1.角色识别根据前面系统的描述,可以确定与该系统交互的两个角色:电梯管理员(elevatormanager)和乘客(passenger),其中乘客是电梯的主要使用者,电梯管理员的责任是对电梯进行维护(见图A1)。

图A12. 用例识别在角色的基础上,可以确定系统的用例,做法是针对每一个角色考查它要求系统提供的功能,它使用系统的哪些功能,经过分析,可得到如下的用例。

乘客相关的用例:●按下某楼层的上行按钮(go up stair )。

● 按下某楼层的下行按钮(go down stair )。

● 按下某电梯内的某一层楼按钮(go to floor request )。

● 按下关门按钮 (close door )。

● 按下开门按钮(open door)。

● 超重测试(overweight test )。

电梯管理员的用例:● 锁住某层电梯锁(lock floor )。

● 打开某层电梯锁(open floor )。

用例的描述如下:用例1 按下某楼层的上行按钮(go up stair )(1) 乘客按下第M 层的上行按钮。

(2) M 被插入到上行队列的合适位置。

(3) 如果M 被插到上行队列头。

● 如果电梯正处于上行状态。

将M 发送给电梯作为目的地。

● 如果电梯处于停止状态。

将M 发送给电梯作为目的地。

(4)电梯到达此楼层。

(5)电梯自动打开门(用例9)。

(6)乘客进入电梯。

(7)超重测试(用例6)。

用例2 按下某楼层的下行按钮(go down stair )。

(1) 乘客按下第M 层的下行按钮。

(2) M 被插入到下行队列的合适位置。

(3) 如果M 被插到下行队列头。

● 如果电梯正处于下行状态。

将M 发送给电梯作为目的地。

● 如果电梯处于停止状态 将M 发送给电梯作为目的地。

(4) 电梯到达此楼层。

(5)电梯自动打开门(用例9)。

(6)乘客进入电梯。

(7)超重测试(用例9)。

用例3 按下电梯内的某一楼层按钮(go to floor request)(1)乘客按下电梯内L层的按钮。

(2)如果被按下的楼层号L比电梯当前所在的楼层号高。

●将此楼层号插入到上行队列的合适位置。

●如果L被插入到上行队列头。

如果电梯正处于上行状态。

将L发送给电梯作为电梯的目的地。

(3)如果被按下的层号L比电梯当前所在的楼层低。

●将此楼层号L插入到下行队列的合适位置。

●如果L被插入到下行队列头。

如果电梯正处于下行状态。

将L发送给电梯作为目的地。

(4)电梯到达目的楼层。

(5)电梯自动开门(用例9)。

用例4按下关门按钮(request close door)(1)如果电梯门关着。

保持电梯门关闭状态。

(2)如果电梯门开着。

关闭电梯门。

用例5 按下开门按钮(request open door)如果电梯停在某一层。

●如果电梯门关着。

打开电梯门。

●如果电梯门开着。

保持电梯门开状态。

用例6 超重测试(overweight test)(1)乘客进入电梯。

(2)如果电梯超重感应装置检测到超重。

●电梯发出超重警报,并拒绝关闭电梯门。

●乘客走出电梯。

●电梯解除超重警报,并允许关闭电梯门。

用例7 锁住某层电梯锁(lock floor)此层的楼层请求按钮和电梯内的楼层按钮失效。

用例8 打开某层电梯锁(open floor)此层的楼层请求按钮和电梯内的楼层按钮恢复正常。

用例9 自动打开电梯门(auto open door)(1)电梯到达某楼层。

(2)电梯自动开门。

用例10 自动关闭电梯门(auto close door)(1)电梯门打开的状态达到设置的时限。

(2)关闭电梯门。

A3 类模型根据分析,我们可以得到下面这些类。

乘客类(Passenger)、管理员类(Manager)、电梯类(Elevator)、电梯门类(ElevatorDoor)、楼层的上行请求按钮类(Go Up Request)、楼层的下请求按钮类(Go Down Request)、电梯里的楼层按钮类(Go To Floor Request)、楼层锁类(lock)、指示灯类(Indicate Light)、队列类(Queue)、定时器类(Timer)、异常处理类(Expection)。

12.管理员类(Manager)3.电梯类(Elevator)属性State表示电梯的状态(停止、上行、下行),Position表示电梯所在的楼层(1-N),IsOverWeight标识电梯是否超重,IsNormal用于标识电梯是否正常。

方法StartUp(Floor)表示启动电梯上行到Floor层,StartDown(Floor)表示启动电梯下行到Floor层,Stop表示电梯停下来,Warn()启动电梯超重警报,CancelWarn 取消电梯超重警报。

4.梯门类(ElevatorDoor)属性State表示电梯门的状态(开或关),方法Open()表示打开电梯门,Close()表示关闭电梯门。

ElevatorDoorStateOpen()Close5.楼层的上行请求按钮类(Go Up Request)、楼层的下行请求按钮类(Go Down Request)、电梯里的楼层按钮类(Go To Floor Request)属性State表示按钮是否已经被按下,Enabled表示按钮是否能用(如果被管理员锁住就不能用),OnFloor表示按钮对应的楼层号,方法Press()表示按下按钮,Reset()表示复位按钮,6.指示灯类(Indicate Light)指示灯分为楼层指示灯和电梯状态指示灯,其中State属性表示指示灯的状态(亮或灭)。

楼层指示灯有Show(Floor)方法用于显示电梯所在楼层数,电梯状态指示灯有Show(UporDown)方法用于显示电梯上行或下行。

7.楼层锁类(lock)属性State表示楼层锁的状态(关或开),OnFloor表示锁所在的楼层数,方法On()表示开锁,Off()表示关锁。

LockFloorStateOnFloorOn()Off()8.队列类(Queue)队列类用于创建上行和下行队列,IsEmpty属性表示队列是否为空,方法Insert(Elevator)用于插入元素,DeleteHead()方法用于删除队列头元素,QueueIsEmptyInsert(Elevator)DeleteHead()Send(HeadElement)9Time属性用于设置定时的时间长,StartTimer()方法用于启动计时,当计时结束时执行Doing()TimerTimeStartTimer()Doing()10Type属性用语标识发生的异常类型,Source记录异常源,Doing()方法用于当发生异ExceptionTypeSourceDoing()11.类关系图。

实训内容实训内容一绘制电梯图形实训目的(1)学会使用Java.awt包中的Graphics类控制和显示用户自定义界面成分,如字体、颜色和图形。

(2)掌握简单的图形动画效果。

实训要求创建Applet程序,实现土5-1(a)所示简单的电梯二维图形,并当单击“开门“、“关门”按钮时实现图形上的关门、开门动作。

如图5-1(b)就是单击开门后正在开门的过程中。

实训指导java.awt包提供了控制字体的Font类、控制颜色的Color类。

通过这两个类的属性的设置可以实现对界面上的字体和颜色的控制。

如closeDoor.setFont(new Font(“TimesRoman”,Font.BOLD,12));这个语句将closeDoor上显示的文字颜色设置成红色。

Java.awt包还提供了用户绘图操作的类Graphics,其中包括了许多绘制文字和图形的相关方法。

使用Graphics类可以绘制线、圆和椭圆、矩形和多边形、显示图像、动画和各种字体。

如draeLine(int x1,int y1,int x2,int y2),在坐标(x1,y1)、(x2,y2)之间画一条直线。

drawRect(int x,int y,int width,int height)方法和fillRect(int x,int y,int width,int height)方法分别用当前颜色在指定位置绘制一个矩形框和一个填充的矩形,其中参数x,y分别是矩形的左上角坐标;width,height分别用语指定矩形的宽和高。

相关主题