1、设计要求n设计一个6层楼的电梯控制器。n该控制器可控制电梯完成6层楼的载客服而且遵循方向优先原则,并能响应提前关门延时关门,并具有超载报警和故障报警;n同时指示电梯运行情况和电梯内外请求信息。电梯控制方式n1.内部请求优先控制方式n2.单向层层停控制方式n3.方向优先控制方式1.内部请求优先控制方式方案n内部请求优先控制方式类似于出租车的工作方式,先将车上的人送至目的地,再去载客。作为通用型电梯应该服务于大多数人,必须考虑电梯对内、外请求的响应率P:n Pin = 100%;n Pout = 0100%;n在内部请求优先控制方式中,当电梯外部人的请求和电梯内部人的请求冲突时,外部人的请求信号可
2、能被长时间忽略,因而它不能作为通用型电梯的设计方案。2.2.单向层层停控制方式方案单向层层停控制方式方案n单向层层停控制方式等同于火车的运行方式,遇站即停止、开门。n这种方案的优点在于“面面俱到”,可以保证所有人的请求都能得到响应。n然而这样对电梯的效率产生消极影响:不必要的等待消耗了大量时间,而且电梯的运作与用户的请求无关,当无请求时电梯也照常跑空车,就浪费了大量电能。n对用户而言,此种控制方式的请求响应时间也不是很快。n因而这不是理想的方案。3.方向优先控制方式方案n方向优先控制是指电梯运行到某一楼层时先考虑这一楼层是否有请求:有,则停止; 无,则继续前进。n停下后再启动时,考虑前方上方、
3、或下方是否有请求:有,则继续前进;无,则停止;检测后方是否有请求, 有请求则转向运行, 无请求则维持停止状态。这种运作方式下,电梯对用户的请求响应率为100%,且响应的时间较短。n假设: 电梯每两层间的运行时间为T ,楼层数为6, 在每层楼的停止时间为t, 如果每层楼都有请求,则这种控制方式的效率和上面的单向每层停等控制方式的效率一样, 然而, 当不是每层楼都有请求 (假定为只有第6层有请求输入) 时,上面的方式2(设为A方式)的响应时间nT=5*(T + t )n 而方向优先控制方式(设为B方式)对同一请求的响应时间nT1=5*T n即效率比 n b/a = 1 + t /T n方向优先控制
4、方式的效率远大于单向层层停等控制方式的效率。 而且,方向优先控制方式下,电梯在维持停止状态的时候可以进入省电模式,又能节省大量电能,n本设计选择方向优先控制方式。系统组成 FPGA系统时钟楼层请求关门中断分频器中央处理器超载故障清除信号存储电梯升、降、停门开、关、停楼层显示请求信号显示超载、故障报警状态存储提前关门模块设计n1. 外部数据高速采集模块设计n2.信号存储模块 n3. 基于FPGA的中央处理模块n4.信号的输出、显示模块1.1.外部数据高速采集模块设计外部数据高速采集模块设计n对外部信号采集、处理要求电梯控制器: n(1)外部请求信号的实时、准确采集。(2)准确、实时的捕捉楼层到达
5、信号。(3)有效的防止楼层到达信号、外部请求信号的误判。n控制器采用FPGA作为系统控制的核心,系统时钟频率是32.0000MHz,完全可以满足实时采集数据的要求。由于电路中毛刺现象的存在,信号的纯净度降低,单个的毛刺往往被误作为系统状态转换的触发信号,严重影响电梯的正常工作。可以采用多次检测的方法解决这个问题,对一个信号进行多次采样以保证信号的可信度。n外部请求信号的输入形式为按键输入,到达楼层信号来自光敏传感器,关门中断信号及超载信号则产生于压力传感器。 键盘、光敏外部输入接口电路未设计。2.信号存储模块n电梯控制器的请求输入信号有18个(电梯外有6个上升请求和6个下降请求的用户输入断口,
6、电梯内有6个请求用户输入断口),由于系统对内、外请求没有设置优先级,各楼层的内、外请求信号被采集后可先进行运算,再存到存储器内。n电梯运行过程中,由于用户的请求信号的输入是离散的,而且系统对请求的响应也是离散的,因此请求信号的存储要求新的请求信号不能覆盖原来的请求信号,只有响应动作完成后才能清除存储器内对应的请求信号位。3.基于FPGA的中央处理模块n中央数据处理模块是系统的核心,通过对存储的数据(含请求、到达楼层等信号)进行比较、判断以驱动系统状态的流转。电梯工作过程中共有种状态:等待、上升、下降、开门、关门、停止、休眠、超载报警以及故障报警状态。一般情况下,电梯工作起始点是第一层,起始状态
7、是等待状态,启动条件是收到上升请求。n超载状态时电梯关门动作取消,同时发出警报,直到警报被清除; 故障时电梯不执行关门动作,同时发出警报,直到警报被清除(看门狗信号有效的条件是一层楼连续发生关门中断情况超过3次)。本系统由请求信号启动,运行中每检测到一个到达楼层信号,就将信号存储器的请求信号和楼层状态信号进行比较,再参考原方向信号来决定是否停止,转向等动作。 (系统状态流程图 )4.信号的输出、显示模块n本系统的输出信号有两种: 一种是电机的升降控制信号(两位)和开门/关门控制信号;另一种是面向用户的提示信号(含楼层显示、方向显示、已接受请求显示等)。n电机的控制信号一般需要两位,本系统中电机
8、有3种工作状态: 正转、反转和停转状态。 两位控制信号作为一个三路开关的选通信号,此三路开关选用模拟电子开关。n系统的显示输出包括数码管楼层显示、数码管请求信号显示和表征运动方向的箭头形指示灯的开关信号。n完全可以满足人们的需要,而且效率比较高。n本系统具有请求信号显示功能,结合方向显示,可以减少用户对同一请求的输入次数,这样就延长了电梯按键的使用寿命。假如电梯处于向上运动状态,初始位置是底层,初始请求是6楼,2楼时进入一人,如果他的目的地也是6楼,他看到初始请求是6楼,就可以不再按键。同时,电梯外部的人也可根据请求信号显示(上升请求、下降请求、无请求),就可以避免没必要的重复请求信号输入。电
9、梯使用时,系统结合相应的电梯使用规范。电梯控制器程序设计与仿真 电梯控制器电路符号 电梯控制器VHDL程序 n-文件名:dianti.vhd。n-功能:6层楼的电梯控制系统。n-最后修改日期:2004.4.12。nlibrary ieee;nuse ieee.std_logic_1164.all;nuse ieee.std_logic_unsigned.all;nuse ieee.std_logic_arith.all;nentity dianti is nport ( clk : in std_logic; -时钟信号(频率为2Hz)n full,deng,quick,clr:in std_
10、logic; -超载、关门中断、提前关门清除报警信号n c_u1,c_u2,c_u3,c_u4,c_u5: in std_logic; -电梯外人的上升请求信号n c_d2,c_d3,c_d4,c_d5,c_d6 : in std_logic; -电梯外人的下降请求信号n d1,d2,d3,d4,d5,d6 : in std_logic; -电梯内人的请求信号n g1,g2,g3,g4,g5,g6 : in std_logic; -到达楼层信号n door : out std_logic_vector(1 downto 0); -电梯门控制信号n led : out std_logic_vec
11、tor(6 downto 0); -电梯所在楼层显示n led_c_u:out std_logic_vector(5 downto 0);-电梯外人上升请求信号显示n led_c_d:out std_logic_vector(5 downto 0);-电梯外人下降请求信号显示n led_d : out std_logic_vector(5 downto 0); -电梯内请求信号显示n wahaha : out std_logic; -故障报警信号n ud,alarm : out std_logic; -电梯运动方向显示,超载警告信号n up,down : out std_logic ); -电
12、机控制信号和电梯运动nend dianti;narchitecture behav of dianti isnsignal d11,d22,d33,d44,d55,d66:std_logic;-电梯内人请求信号寄存信号nsignal c_u11,c_u22,c_u33,c_u44,c_u55:std_logic; -电梯外人上升请求信号寄存信号nsignal c_d22,c_d33,c_d44,c_d55,c_d66:std_logic; -电梯外人下降请求信号寄存信号nsignal q:integer range 0 to 1; -分频信号nsignal q1:integer range 0
13、 to 6; -关门延时计数器 nsignal q2:integer range 0 to 9; -故障计数器nsignal dd,cc_u,cc_d,dd_cc:std_logic_vector(5 downto 0); -电梯内外请求信号寄存器nsignal opendoor:std_logic; -开门使能信号nsignal updown:std_logic; -电梯运动方向信号寄存器nsignal en_up,en_dw:std_logic; -预备上升、预备下降预操作使能信号nbeginncom:process(clk)nbeginn if clkevent and clk=1 th
14、en n if clr=1 then q1=0;q2=0;wahaha=0; -清除故障报警 n elsif full=1 then alarm=1; q1=3 then door=10; n else door=00;n end if; n elsif q=1 then q=0;alarm=0;n if q2=3 then wahaha=1; -故障报警n elsen n if opendoor=1 then door=“10”;q1=0;q2=0;up=0;down=0; -开门操作n elsif en_up=1 then -上升预操作 n if deng=1 then door=10;q
15、1=0;q2=q2+1; -关门中断n elsif quick=1 then q1=3; -提前关门n elsif q1=6 then door=00;updown=1;up=3 then door=01;q1=q1+1; -电梯进入关门状态n else q1=q1+1;door=00; -电梯进入等待状态n end if;n elsif en_dw=1 then -下降预操作n if deng=1 then door=10;q1=0;q2=q2+1; n elsif quick=1 then q1=3; n elsif q1=6 then door=00;updown=0;down=3 th
16、en door=01;q1=q1+1; n else q1=q1+1;door=00; n end if;n end if; n if g1=1 then led=1001111; -电梯到达1楼,数码管显示1 n if d11=1 or c_u11=1 then d11=0; c_u11=0;opendoor000001 then en_up=1; opendoor=0; -有上升请求,则电梯进入预备上升状态n elsif dd_cc=000000 then opendoor=1; -无请求时,电梯停在1楼待机 n end if; n elsif g2=1 then led=0010010;
17、-电梯到达2楼,数码管显示2n if updown=1 then -电梯前一运动状态位上升 n if d22=1 or c_u22=1 then d22=0; c_u22=0; opendoor000011 then en_up=1; opendoor=0; -有上升请求,则电梯进入预备上升状态 n elsif dd_cc000010 then en_dw=1; opendoor=0; -有下降请求,则电梯进入预备下降状态 n end if; n -电梯前一运动状态为下降 n elsif d22=1 or c_d22=1 then d22=0; c_d22=0;opendoor=1; -有当前
18、层的请求,则电梯进入开门状态n elsif dd_cc000010 then en_dw=1; opendoor000011 then en_up=1; opendoor=0; -有上升请求,则电梯进入预备上升状态 n end if;n elsif g3=1 then led=0000110; -电梯到达3楼,数码管显示3 n if updown=1 then n if d33=1 or c_u33=1 then d33=0; c_u33=0;opendoor000111 then en_up=1; opendoor=0; n elsif dd_cc000100 then en_dw=1; o
19、pendoor=0; n end if;n elsif d33=1 or c_d33=1 then d33=0; c_d33=0; opendoor=1; n elsif dd_cc000100 then en_dw=1; opendoor000111 then en_up=1; opendoor=0; n end if;n elsif g4=1 then led=1001100; -电梯到达4楼,数码管显示4 n if updown=1 then n if d44=1 or c_u44=1 then d44=0; c_u44=0; opendoor001111 then en_up=1; o
20、pendoor=0; n elsif dd_cc001000 then en_dw=1; opendoor=0; n end if;n elsif d44=1 or c_d44=1 then d44=0; c_d44=0; opendoor=1; n elsif dd_cc001000 then en_dw=1; opendoor001111 then en_up=1; opendoor=0; n end if;n elsif g5=1 then led=0100100; -电梯到达5楼,数码管显示5 n if updown=1 then n if d55=1 or c_u55=1 then
21、d55=0; c_u55=0;opendoor011111 then en_up=1; opendoor=0; n elsif dd_cc010000 then en_dw=1; opendoor=0; n end if;n elsif d55=1 or c_d55=1 then d55=0; c_d55=0;opendoor=1; n elsif dd_cc010000 then en_dw=1; opendoor011111 then en_up=1; opendoor=0; n end if;n elsif g6=1 then led=0100000; -电梯到达6楼,数码管显示6 n
22、if d66=1 or c_d66=1 then d66=0; c_d66=0;opendoor=1; n elsif dd_cc100000 then en_dw=1; opendoor=0; n end if;n else en_up=0;en_dw=0; -电梯进入上升或下降状态n end if;n end if;n else q=1;alarm=0; -清除超载报警n if d1=1 then d11=d1; -对电梯内人请求信号进行检测和寄存 n elsif d2=1 then d22=d2;n elsif d3=1 then d33=d3;n elsif d4=1 then d44
23、=d4;n elsif d5=1 then d55=d5;n elsif d6=1 then d66=d6;n end if;n if c_u1=1 then c_u11=c_u1; -对电梯外人上升请求信号进行检测和寄存n elsif c_u2=1 then c_u22=c_u2;n elsif c_u3=1 then c_u33=c_u3;n elsif c_u4=1 then c_u44=c_u4;n elsif c_u5=1 then c_u55=c_u5;n end if; n if c_d2=1 then c_d22=c_d2; -对电梯外人下降请求信号进行检测和寄存n elsif
24、 c_d3=1 then c_d33=c_d3;n elsif c_d4=1 then c_d44=c_d4;n elsif c_d5=1 then c_d55=c_d5;n elsif c_d6=1 then c_d66=c_d6; end if; n dd=d66&d55&d44&d33&d22&d11; -电梯内人请求信号并置 n cc_u=0&c_u55&c_u44&c_u33&c_u22&c_u11; -电梯外人上升请求信号并置 n cc_d=c_d66&c_d55&c_d44&c_d33&c_d22&0; -电梯外人下降请求信号并置 n dd_cc=dd or cc_u or cc
25、_d; -电梯内、外人请求信号进行综合n end if; n ud=updown; -电梯运动状态显示 n led_d=dd; -电梯内人请求信号显示n led_c_u=cc_u; -电梯外人上升请求信号显示n led_c_d=cc_d; -电梯外人下降请求信号显示n end if; nend process; nend behav;电梯程序仿真注:由于以上输入信号在下面仿真中没用到,所以在下面仿真图中将不再出现。电梯停在1楼不停不停响应请求(c_u4),开门载客;进入预备上升状态 电梯上升请求信号c_d3、c_d2、c_u4和d6响应请求(d_6),开门卸客;进入预备下降状态 到达3楼开门卸客,电梯进入预备下降状态 电梯上升电梯运动方向改变超载超载警报 提前关门 关门中断 1跳到3 deng ,c_d3和d3电梯重新进入预备下降状态 关门中断的次数超过3次 故障报警 清除报警