1、EDAEDA电梯控制电梯控制器的设计与器的设计与分析分析9.1 系统设计要求系统设计要求随着社会的发展,电梯的使用越来越普遍,已从原来只在商业大厦、宾馆使用,过渡到在办公楼、居民楼等场所使用,并且对电梯功能的要求也不断提高,相应地其控制方式也在不停地发生变化。对于电梯的控制,传统的方法是使用继电器接触器控制系统进行控制,随着技术的不断发展,微型计算机在电梯控制上的应用日益广泛,现在已进入全微机化控制的时代。电梯的微机化控制主要有以下几种形式:PLC控制;单板机控制;单片机控制;单微机控制;多微机控制;人工智能控制。随着EDA技术的快速发展,CPLD/FPGA已广泛应用于电子设计与控制的各个方面
2、。本设计就是使用一片CPLD/FPGA来实现对电梯的控制的。9.2 系统设计方案系统设计方案 根据系统设计要求,并考虑到系统的可验证性,整个系统的输入输出接口设计如图9.1所示:系统工作用2Hz基准时钟信号CLKIN,楼层上升请求键UPIN,楼层下降请求键DOWNIN,楼层选择键入键ST_CH,提前关门输入键CLOSE,延迟关门输入键DELAY,电梯运行的开关键RUN_STOP,电梯运行或停止指示键LAMP,电梯运行或等待时间指示键RUN_WAIT,电梯所在楼层指示数码管ST_OUT,楼层选择指示数码管DIRECT。图9.1电梯控制器DTKZQ的输入输出接口图电梯的控制状态包括运行状态、停止状
3、态及等待状态,其中运行状态又包含向上状态和向下状态。主要动作有开、关门,停靠和启动。乘客可通过键入开、关门按钮,呼唤按钮,指定楼层按钮等来控制电梯的行与停。据此,整个电梯控制器DTKZQ应包括如下几个组成部分:时序输出及楼选计数器;电梯服务请求处理器;电梯升降控制器;上升及下降寄存器;电梯次态生成器。该电梯控制器设计的关键是确定上升及下降寄存器的置位与复位。整个系统的内部组成结构图如图9.2所示。图9.2电梯控制器的内部组成结构图9.3 主要主要VHDL源程序源程序-DTKZQ.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGI
4、C_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYDTKZQISPORT(CLKIN:INSTD_LOGIC;-2Hz时钟输入信号UPIN:INSTD_LOGIC;-楼层上升请求键DOWNIN:INSTD_LOGIC;-楼层下降请求键ST_CH:INSTD_LOGIC;-结合DIRECT完成楼层选择的键入CLOSE:INSTD_LOGIC;-提前关门输入键DELAY:INSTD_LOGIC;-延迟关门输入键RUN_STOP:INSTD_LOGIC;-电梯运行的开关键LAMP:OUTSTD_LOGIC;-电梯运行或停止指示键RUN_WAIT:OUT
5、 STD_LOGIC_VECTOR(3 DOWNTO0);-结合LAMP指示电梯运行或等待时间ST_OUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);-电梯所在楼层指示数码管DIRECT:OUT STD_LOGIC_VECTOR(3 DOWNTO0);-楼层选择指示数码管ENDENTITYDTKZQ;ARCHITECTUREARTOFDTKZQISSIGNALUR,DR:STD_LOGIC_VECTOR(16DOWNTO1);-上升或下降楼层请求寄存器SIGNALDIR,LIFTOR:STD_LOGIC_VECTOR(3DOWNTO0);-楼选指示及楼层数计数器SIGNALW
6、AI_T:STD_LOGIC_VECTOR(2DOWNTO0);-运行或等待计数器SIGNALDIVID,HAND:STD_LOGIC;-时钟2分频和楼选复位变量SIGNALLADD:STD_LOGIC_VECTOR(1DOWNTO0);-电梯运行状态变量SIGNALCLOSEX,DELAYX,LAMP0:STD_LOGIC;-提前关门及延迟变量BEGIN-内部信号值的输出DIRECT=DIR+1;ST_OUT=LIFTOR+1;RUN_WAIT=0&WAI_T;P0:PROCESS(CLKIN)ISBEGINIF(CLKINEVENTANDCLKIN=1)THENLAMP=LADD(1);E
7、NDIF;ENDPROCESSP0;HAND=WAI_T(2)AND(NOTWAI_T(1)ANDWAI_T(0);CLOSEX=CLOSEAND(NOTLADD(1);DELAYX=DELAYAND(NOTLADD(1);-分频及楼选信号产生进程P1:PROCESS(CLKIN)BEGINIF(CLKINEVENTANDCLKIN=1)THENDIVID=NOTDIVID;IF(DIR=1111)THENDIR=0000;ELSEDIRNUM)AND(ST_CH=1)OR(UPIN=1)THENCASETISWHEN1=UR(1)UR(2)UR(3)UR(4)UR(5)UR(6)UR(7)U
8、R(8)UR(9)UR(10)UR(11)UR(12)UR(13)UR(14)UR(15)UR(16)NULL;ENDCASE;ELSIF(HAND=1)THENCASENUMISWHEN1=UR(1)UR(2)UR(3)UR(4)UR(5)UR(6)UR(7)UR(8)UR(9)UR(10)UR(11)UR(12)UR(13)UR(14)UR(15)UR(16)NULL;ENDCASE;ENDIF;IF(TDR(1)DR(2)DR(3)DR(4)DR(5)DR(6)DR(7)DR(8)DR(9)DR(10)DR(11)DR(12)DR(13)DR(14)DR(15)DR(16)NULL;EN
9、DCASE;ELSIF(HAND=1)THENCASENUMISWHEN1=DR(1)DR(2)DR(3)DR(4)DR(5)DR(6)DR(7)DR(8)DR(9)DR(10)DR(11)DR(12)DR(13)DR(14)DR(15)DR(16)NULL;ENDCASE;ENDIF;ELSEUR=0000000000000000;DR=0000000000000000;ENDIF;ENDPROCESS;-电梯运行次态的控制进程P3:PROCESS(UR,DR,LIFTOR,LADD,WAI_T,RUN_STOP)BEGINIF(RUN_STOP=1)THENIF(WAI_T=110)THE
10、NIF(URORDR)=0000000000000000)THENLADD(1)IF(UR(1)ORDR(1)0)THENLADD(1)=0;-等待状态ELSELADDIF(UR(2)OR DR(2)0)THENLADD(1)00000000000000)OR(UR(1)ORDR(1)=0)THENLADD=11;-上升状态ELSELADDIF(UR(3)ORDR(3)0)THENLADD(1)0000000000000)OR(UR(2DOWNTO1)ORDR(2DOWNTO1)=00)THENLADD=11;ELSELADDIF(UR(4)ORDR(4)0)THENLADD(1)000000
11、000000)OR(UR(3DOWNTO1)ORDR(3DOWNTO1)=000)THENLADD=11;ELSELADDIF(UR(5)ORDR(5)0)THENLADD(1)00000000000)OR(UR(4DOWNTO1)OR DR(4 DOWNTO 1)=0000)THENLADD=11;ELSELADDIF(UR(6)ORDR(6)0)THENLADD(1)0000000000)OR(UR(5DOWNTO1)OR DR(5 DOWNTO 1)=00000)THENLADD=11;ELSELADDIF(UR(7)ORDR(7)0)THENLADD(1)000000000)OR(UR
12、(6DOWNTO1)ORDR(6DOWNTO1)=000000)THENLADD=11;ELSELADDIF(UR(8)ORDR(8)0)THENLADD(1)00000000)OR(UR(7DOWNTO1)ORDR(7DOWNTO1)=0000000)THENLADD=11;ELSELADDIF(UR(9)ORDR(9)0)THENLADD(1)0000000)OR(UR(8DOWNTO1)ORDR(8DOWNTO1)=00000000)THENLADD=11;ELSELADDIF(UR(10)ORDR(10)0)THENLADD(1)000000)OR(UR(9DOWNTO1)ORDR(9
13、DOWNTO1)=000000000)THENLADD=11;ELSELADDIF(UR(11)ORDR(11)0)THENLADD(1)00000)OR(UR(10DOWNTO1)ORDR(10DOWNTO1)=0000000000)THENLADD=11;ELSELADDIF(UR(12)ORDR(12)0)THENLADD(1)0000)OR(UR(11DOWNTO1)ORDR(11DOWNTO1)=00000000000)THENLADD=11;ELSELADDIF(UR(13)ORDR(13)0)THENLADD(1)000)OR(UR(12DOWNTO1)ORDR(12DOWNTO
14、1)=000000000000)THENLADD=11;ELSELADDIF(UR(14)ORDR(14)0)THENLADD(1)00)OR(UR(13DOWNTO1)ORDR(13DOWNTO1)=0000000000000)THENLADD=11;ELSELADDIF(UR(15)ORDR(15)0)THENLADD(1)0)OR(UR(14DOWNTO1)ORDR(14DOWNTO1)=00000000000000)THENLADD=11;ELSELADDIF(UR(16)ORDR(16)0)THENLADD(1)=0;ELSELADDNULL;ENDCASE;ENDIF;ENDIF;
15、ELSELADD=00;ENDIF;ENDPROCESS;-电梯运行楼层计数及提前/延迟关门控制进程P4:PROCESS(WAI_T,LADD,CLOSEX,DELAYX,DIVID)BEGINIF(DIVIDEVENTANDDIVID=1)THENIF(WAI_T=000ORCLOSEX=1)THENWAI_T=110;ELSEIF(DELAYX=0)THENWAI_T=WAI_T-1;ELSEWAI_T=010;ENDIF;IF(LADD=11)THENLIFTOR=LIFTOR+1;ELSIF(LADD=10)THENLIFTORNUM)AND(ST_CH=1)OR(UPIN=1)THE
16、NCASETISWHEN1=UR(1)UR(2)UR(3)UR(4)UR(5)UR(6)UR(7)=1;有关的具体语句如下(详细请见前述的VHDL程序):P3:PROCESS(UR,DR,LIFTOR,LADD,WAI_T,RUN_STOP)BEGINIF(RUN_STOP=1)THENIF(WAI_T=110)THENIF(URORDR)=0000000000000000)THENLADD(1)IF(UR(1)ORDR(1)0)THENLADD(1)=0;-等待状态ELSELADDIF(UR(2)ORDR(2)0)THENLADD(1)00000000000000)OR(UR(1)ORDR(1)=0)THENLADD=11;-上升状态ELSELADDIF(UR(3)ORDR(3)0)THENLADD(1)0000000000000)OR(UR(2DOWNTO1)ORDR(2DOWNTO1)=00)THENLADD=11;ELSELADD=10;ENDIF;9.6 系统扩展思路系统扩展思路(1)设计系统工作的外围电路:系统用方波信号源、直流工作电源、彩灯控制的驱动电路。(2)若为课程设计,除要求设计调试程序、外围电路外,还可要求设计制作整个系统,包括PCB的制作。