毕业设计(论文)电梯控制器的设计与分析.doc

上传人:仙人指路1688 文档编号:3984126 上传时间:2023-03-30 格式:DOC 页数:33 大小:890KB
返回 下载 相关 举报
毕业设计(论文)电梯控制器的设计与分析.doc_第1页
第1页 / 共33页
毕业设计(论文)电梯控制器的设计与分析.doc_第2页
第2页 / 共33页
毕业设计(论文)电梯控制器的设计与分析.doc_第3页
第3页 / 共33页
毕业设计(论文)电梯控制器的设计与分析.doc_第4页
第4页 / 共33页
毕业设计(论文)电梯控制器的设计与分析.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《毕业设计(论文)电梯控制器的设计与分析.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)电梯控制器的设计与分析.doc(33页珍藏版)》请在三一办公上搜索。

1、安徽大学本科毕业论文(设计、创作)题目: 电梯控制器的设计与分析学生姓名: 学号: 院(系): 电子信息工程学院 专业:微电子 入学时间: 2007 年 9 月导师姓名: 职称/学位:讲师/博士 导师所在单位:安徽大学电子信息工程学院 完成时间: 2011 年5 月电梯控制器的设计与分析摘 要随着技术的不断发展,EDA设计得到不断地发展和应用。本文以电梯控制器为设计对象,根据电梯运行规则和所需基本功能,采用层次化的设计方法,用verilog硬件描述语言实现一个四楼层载客箱的电梯控制器。内容主要涉及电梯运行算法,电梯控制器的硬件组成框架以及最后整个控制器的检测方案和仿真。本设计可以实现电梯运行所

2、需的基本功能,并用modelsim进行了仿真。关键词:电梯控制器;verilog;modelsim Design and analysis of elevator controllerAbstractWith the development of technology,EDA gets constantly development and widely application.This article takes the elevator controller as design object.According to the elevator running rules,this desig

3、n adopts hierarchical method and verilog hardware description language to realizing a four floor elevator controller.This article mainly involves the elevator scheduling algorithm, hardware framework and final whole controllers detection schemes and simulation.This design is able to realize the basi

4、c functions required for the operation of the elevator.Keywords:elevator controlller;verilog;modelsim 目录1引言12 设计目标与分析12.1 电梯运行规则12.2整体设计概要13模块设计与实现23.1主控模块23.1.1状态机设计23.1.2状态机实现33.1.3程序描述43.2按键模块73.3显示模块84测试方案与仿真94.1主控制器模块的仿真94.1.1单用户情况94.1.1.1测试程序94.1.1.2 波形与分析104.1.2多用户情况104.1.2.1测试程序104.1.2.2 波形与

5、分析114.1.2.3 修正与再仿真114.2按键模块的仿真134.2.1测试程序134.2.2波形与分析144.3显示模块的仿真144.3.1测试程序144.3.2波形与分析154.4整体控制器系统的仿真154.4.1测试程序154.4.2波形与分析165 结束语16主要参考文献17附录A18附录B28致谢291 引言在高楼林立的现今社会,电梯的使用已是必不可少。随着火灾,地震等突发性灾害事件的不断出现,人们对的电梯的功能和安全性提出了更高要求,因此,对电梯控制方式的研究有着较大的实际意义。传统的电梯控制方法是使用继电器接触器控制器系统1,随着EDA技术的发展,现如今我们可以使用单片机、FP

6、GA等微机控制方式使电梯控制器的设计更为简便快捷,其性能也得到提升。在此基础上,本文对电梯控制器的算法和硬件结构进行了设计和分析,采用verilog硬件描述语言2进行设计以及Altera公司的modelsim仿真工具进行仿真。2 设计目标与分析2.1 电梯运行规则电梯运行分为三种模式:上行模式,下行模式以及静止模式。当电梯处于向上运行模式时,只响应比电梯所在位置更高楼层的向上请求和电梯内乘客的目的楼层请求,这些请求由下而上逐个执行,直到最后一个请求信号响应结束。这时如果有下楼请求,则开到有下楼请求的最高层,进入向下运行模式,如果是低层有请求信号,则下降至低层响应请求;若无任何请求,则电梯停留在

7、当前层。当电梯处于向下运行模式时,其运行规则与上行模式相反对上述电梯运行规则进行分析,不难得到该电梯控制器的下述设计目标:(1)能实时响应用户的各项请求。上下请求:除了顶层和底层外,每层电梯的入口都设有上下请求按钮,顶层只有向下请求按钮,底层只有向上请求按钮。目的楼层请求:电梯内部设有乘客所要到达目的楼层的请求按钮。(2)电梯上升或下降一层的时间。 为了便于时序仿真分析,上升或下降一层的时间设为一个clock周期。(3)电梯到达有停靠请求的楼层后,经过一个clock周期将门打开,开门4个clock周期后电梯门关闭。然后电梯继续运行,直至响应完最后一个请求后停留在该层。(4)能记忆电梯内外的所有

8、请求信号,并按运行规则顺序响应各个请求,每个请求信号要保持直至该请求被完成,并且要及时清除该请求信号。(5)电梯所处的状态和请求信号能够实时地显示。2.2 整体设计概要根据自顶向下的模块化设计思想,结合运行规则及分析出的设计需求,将整个控制器系统作如图1所示的模块划分。(1)主控模块 该模块是整个控制系统的核心,也是本设计的重点内容。它负责电梯的各项控制功能,包括电梯正常的向上向下运行,响应内外请求,以及与其他各模块的交互等。(2)按键模块 电梯内部设有目的楼层停靠按键,而外部每一层都设有向上请求按键和向下请求按键(底层只有向上按键,顶层只有向下按键),在本设计和仿真中,这些按键产生的是脉冲信

9、号,按键模块负责将其转换为高/低电平信号,并将其送给主控模块,完成相应寄存器位的置位。(3)显示模块 该模块负责通过LED和数码管显示电梯的当前状态,用户的各个请求信号。具体就是实现各个请求信号和状态信号的码制转换。(4)其它输入 该模块用于实现电梯的一些扩展功能,可以包括压力传感器,烟雾传感器等。在本控制器设计中没有具体涉及。(5)其它输出 包括电机驱动模块,还可以包括警报器等实现语音和声响提示。同样在本控制器设计中没有具体涉及。图1:控制器系统框图3 模块设计与实现3.1 主控模块如前所述,该模块的功能是响应各种内部和外部的请求信号,使电梯能够正常运行。结合电梯运行规则和设计目标,不难发现

10、电梯在运行中实际上只是在几种有限的状态之间进行转换。因此,本设计采用状态机3来实现这种转换,从而达到主控模块的设计目标。3.1.1 状态机设计根据电梯运行流程,将其有限状态设定为7个:WAIT,UP,UPSTOP,OPENDOOR,CLOSEDOOR,DOWN,DOWNSTOP。它们之间有着如下图所示的状态转换关系。图2:状态转换图图2中7个状态的定义解释如下:(1) WAIT:电梯停靠在某一层,等待用户请求。(2) UP:电梯响应用户请求后上升。(3) UPSTOP:电梯上升时,在需要停靠楼层停靠的状态。其下一状态为OPENDOOR。(4) DOWM:电梯响应用户请求后下降。(5) DOWM

11、STOP:电梯下降时,在需要停靠楼层停靠的状态。其下状态为DOWMSTOP。(6) OPENDOOR:开门状态,在本设计中设定开门时间为4个CLOCK周期。(7) CLOSEDOOR:关门状态,OPENDOOR的下一状态。其中,上行模式包括的状态有:UP,UPSTOP,OPENDOOR,CLOSEDOOR;下行模式包括:DOWM,DOWMSTOP,OPENDOOR,CLOSEDOOR;静止模式包括:WAIT,OPENDOOR,CLOSEDOOR。3.1.2 状态机实现为了实现图2所示的状态转换,在本设计中构建了三个重要寄存器:UpReg,DownReg以及StopReg,它们分别用于存储用户上

12、升请求信号,下降请求信号以及目的地楼层请求信号。其中,上升和下降请求信号是由电梯外部的上升和下降按键发出的,目的地楼层请求信号是由电梯内部按键发出的。请求信号会把寄存器的相应位置“1”,每一层对应寄存器的一位,即寄存器的位数便是控制器能适用的楼层数。(在本设计中设为4位)当电梯处于某一状态时,通过查询UpReg,DownReg以及StopReg三个寄存器进行判断和选择,从而实现电梯规则所需的状态转换。下面以状态WAIT为例分析主控模块的算法设计。当电梯处于WAIT状态时,首先查询当前层的三个寄存器位是否有请求信号,若有,则下一状态为OPENDOOR;若无,那么判断当前层之上的寄存器位是否有请求

13、信号,如果有则下一状态为UP, 如果没有那么接着判断当前层之下的寄存器位是否有请求信号,若有则下一状态为DOWM,否则没有任何请求信号,下一状态仍为WAIT。图3:算法基本思路框图 根据上述基本思路,作出如图4所示的算法流程图。 图4:WAIT状态转换算法流程图结合电梯运行规则,其它状态下的转换算法流程图可依次类推得到,此处不予累述。3.1.3 程序描述根据上述算法思路和程序流程图,以四层为例编写主控模块程序。在这里,只给出了部分主要源程序的说明,具体程序参见附录。(1) 部分变量、常量说明F1Up,F2Up,F3Up:一楼,二楼,三楼的上升请求。F2Dn,F3Dn,F4Dn:二楼,三楼,四楼

14、的下降请求。F1Stop,F2Stop,F3Stop,F4Stop:一至四楼的目的楼层停靠请求。UpReg,DownReg,StopReg:三个查询寄存器。lifestate,NextState:电梯的当前和下一状态。pos:电梯楼层指示变量,一到四楼的取值分别为“0001”、“0010”、“0100”、“1000”。UpDnFlag:上行,下行,静止指示变量,取值分别为“01”、“10”、“00”。DoorFlag:开关门指示变量,取值分别为“0”和“1”,表征电梯门的关和开。UPFLAG=2b01,DNFLAG=2b10,STATIC=2b00;OPEN=1b1, CLOSED=1b0:

15、符号常量,为提高程序可读性。(2) 构建供查询判断的三个寄存器* * * * * *always(F1Up or F2Up or F3Up) UpReg=1b0,F3Up,F2Up,F1Up;/实时地将用户上升请求置入寄存器UpReg,最高层无上升按键,相应位置0。always(F2Dn or F3Dn or F4Dn) DownReg=F4Dn,F3Dn,F2Dn,1b0;/实时地将用户下降请求置入寄存器DownReg,最低层无下降按键,相应位置0。always(F1Stop or F2Stop or F3Stop or F4Stop) StopReg=F4Stop,F3Stop,F2Sto

16、p,F1Stop;/实时地将用户目的地楼层请求置入寄存器StopReg。* * * * * *(3) 状态机转移判断(WAIT及UP为例)* * * * * *always(LiftState or UpReg or DownReg or StopReg or pos or count or UpDnFlag)/ LiftState为当前电梯状态,pos为当前电梯所处楼层,UpDnFlag为电梯模式寄存器case(LiftState)WAIT:begin if(UpReg&pos)|(StopReg&pos)|( DownReg &pos) begin /若当前层有请求,则开门。 NextSt

17、atepos)|(StopRegpos)|( DownReg pos) begin /若当前层之上有请求,则上升。 NextState=UP; endelse if(UpReg|StopReg| DownReg) begin /若只有当前层之下有请求,则下降。 NextState=DOWN;endelse /若上述情况均不符,即无请求,则保持原WAIT状态。 NextState=WAIT; endUP:beginif(UpReg&pos)|(StopReg&pos)|(DownReg&pos) begin /若上升到当前层有请求,则停靠。 NextStatepos)|(StopRegpos)|

18、(DownRegpos) begin /若当前层没有请求,而上层有请求,则继续上升。 NextState=UP; endelse if(UpReg|StopReg|DownReg) begin /*若上述条件不满足,只有当前层之下有请求,则下降。实际上不可能出现这种情况,在附录源程序中略去。*/ NextState=DOWN;endelse /若无请求,则进入静止等待状态。同样实际中不会发生,附录中略去。 NextState=WAIT;end * * * * * *(4) 状态转移输出(WAIT及UP为例)* * * * * *case(NextState) WAIT: begin pos=p

19、os; /所在楼层不变,楼层变量保持不变。 DoorFlag=CLOSED; /电梯门置关状态,用于显示模块指示输出。 UpDnFlag=STATIC;/电梯模式置静止状态,用于指示输出。 end UP: begin pos=pos1; /楼层变量左移,表征上升一位。 DoorFlag=CLOSED; /电梯门为关状态。 UpDnFlag=UPFLAG; /电梯模式置上行状态。 end* * * * * * (5)寄存器的清零UpReg,DownReg以及StopReg三个寄存器相应位的请求信号在电梯对其完成响应后,必须及时清零,否则电梯将不断地查询重复响应已经没有用户的请求,导致电梯运行发生

20、错误。因此,当电梯到达某一层打开电梯门,即完成该楼层响应时必须将当前层的用户请求标志位清零,程序描述如下:* * * * * *case(NextState) * * * * * * OPENDOOR: UpReg= UpReg&(pos); /将当前楼层位清零,其余位保持。 StopReg = StopReg &(pos);/同上DnReg = DownReg &(pos); /同上pos=pos; DoorFlag=OPEN; UpDnFlag= UpDnFlag;/ 保持原运行模式。* * * * * * 上述程序描述以WAIT和UP状态为例,其它状态可依次类推,详见附录。3.2 按键模

21、块按键模块要完成的功能是实现按键检测,即将按键产生的脉冲信号转换为高/低电平信号,并将其送给主控模块,完成相应寄存器位的置位。在本文中,此模块的设计并不是重点,为便于仿真,每个按键占用一个I/O口,模块程序负责将脉冲信号转为相应高电平信号。当然,在实际调试运行中,还应加以延时去抖动语句以及节省芯片I/O口的键盘扫描程序,此处只为满足主控模块的仿真需要做了简单处理。主要源程序描述如下:modulejianpan(F1_Up,F2_Up,F3_Up,F2_Dn,F3_Dn,F4_Dn,F1_Stop,F2_Stop,F3_Stop,F4_Stop,f1_up,f2_up,f3_up,f2_dn,f

22、3_dn,f4_dn,f1_stop,f2_stop,f3_stop,f4_stop);input f1_up,f2_up,f3_up,f2_dn,f3_dn,f4_dn,f1_stop,f2_stop,f3_stop,f4_stop;output reg F1_Up,F2_Up,F3_Up,F2_Dn,F3_Dn,F4_Dn,F1_Stop,F2_Stop,F3_Stop,F4_Stop; initial beginF1_Up=0;F2_Up=0;F3_Up=0;F2_Dn=0;F3_Dn=0;F4_Dn=0;F1_Stop=0;F2_Stop=0;F3_Stop=0;F4_Stop=0;

23、/初始值为零 end always(posedge f1_up ) F1_Up=1; /检测到脉冲上升沿则将相应变量赋为高电平always(posedge f2_up) F2_Up=1; /同上always(posedge f3_up) F3_Up=1;always(posedge f2_dn) F2_Dn=1;always(posedge f3_dn) F3_Dn=1;always(posedge f4_dn) F4_Dn=1;always(posedge f1_stop) F1_Stop=1;always(posedge f2_stop) F2_Stop=1;always(posedge

24、f3_stop) F3_Stop=1;always(posedge f4_stop) F4_Stop=1;endmodule3.3 显示模块显示模块的任务是显示当前电梯运行的信息,包括:运行方向显示,所在楼层显示以及按钮被按下时的指示灯亮起。在实际运用中,显示模块还可添加其它人性化的显示功能,但在本文中显示模块不是设计重点,因此显示的仅是上述三种基本信息。显示模块程序如下:module xianshi (start,clock, upreg,downreg,stopreg,posout,updnflag, upled,downled,stopled,duanma,fx, );input sta

25、rt,clock;input 3:0 upreg,downreg,stopreg,posout;input 1:0 updnflag;output 3:0 upled,downled,stopled; /外接到12个ledoutput 7:0 duanma; /外接到数码管,显示当前楼层output 1:0 fx; /外接到2个ledreg 7:0 duanma;always(posedge start or posedge clock)beginif(start)duanma=8b00000000;elsecase(posout) /根据当前楼层的值,选择数码管段码。4b0001: duan

26、ma=8b00000110;4b0010: duanma=8b01011011;4b0100: duanma=8b01001111;4b1000: duanma=8b01100110;default: duanma上层下层,如图3所示。为避免上述情况的出现,还必须对寄存器的横向优先级进行划分,以上行模式为例,对比于图3作图7。如图7所示,对当前层的寄存器优先级进行划分,即UpReg(当前)=StopReg(当前)DownReg(当前),并对判断条件顺序进行了重新排序。图示的是电梯上行时的优先级顺序,下行模式的优先级顺序可同理得到,此处不予累述。图7:修正后上行模式下UP状态的寄存器查询优先级据

27、此,对UP状态下的状态转移程序修正如下:* * * * * *UP:beginif(UpReg&pos)|(StopReg&pos) begin /若上升到当前层有上升和目的楼层请求,则停靠。 NextStatepos)|(StopRegpos)|(DownRegpos) begin /若当前层没有请求,而上层有请求,则继续上升。 NextState=UP; end else if(DownReg&pos) begin NextState= UPSTOP;endelse if(UpReg|StopReg|DownReg) begin /*若上述条件不满足,只有当前层之下有请求,则下降。实际上不

28、可能出现这种情况,在附录源程序中略去。*/ NextState=DOWN;endelse /若无请求,则进入静止等待状态。同样实际中不会发生,附录中略去。 NextState=WAIT;end* * * * * *将源程序作如上修正后,再次进行仿真,得到如下图所示波形。图8:修正后的仿真波形如图所示,在第5ns时刻,即电梯到达二楼时,liftstate的值是“0000010”仍为“UP”状态,没有在二楼停靠。再经过一个clock周期,即在第7ns时刻,liftstate的为“0001000”,posout的值为“0100”,表明电梯在到达三楼时进入了“UPSTOOP”的状态。上述波形信息和分析

29、表明,在上行模式下,对当前层寄存器的横向优先级划分成功,电梯在上升到二楼时没有停靠,实现了预期的修正目标。在下行模式下的寄存器横向优先级划分可依此进行,此处不予累述。4.2 按键模块的仿真4.2.1 测试程序按键模块的测试程序如下:module test;reg f1_up,f3_stop;wire F1_Up,F3_Stop; /必须是线网类型,否则加载不了jianpan yiyong(.F1_Up(F1_Up), .F2_Up(F2_Up),.F3_Up(F3_Up),.F2_Dn(F2_Dn),.F3_Dn(F3_Dn),.F4_Dn(F4_Dn),.F1_Stop(F1_Stop),.

30、F2_Stop(F2_Stop),.F3_Stop(F3_Stop),.F4_Stop(F4_Stop),.f1_up(f1_up),.f2_up(f2_up),.f3_up(f3_up),.f2_dn(f2_dn),.f3_dn(f3_dn),.f4_dn(f4_dn),.f1_stop(f1_stop),.f2_stop(f2_stop),.f3_stop(f3_stop),.f4_stop(f4_stop); /必须使用相同的模块名initial beginf1_up=0;#5 f1_up=1;#1 f1_up=0;end initial begin f3_stop=0; #7 f3_stop=1; #1 f

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号