资源描述
目录引言01.系统方案设计31.1 设计要求31.2 总体设计方案31.2.1控制方式方案31.2.2 系统组成31.2.3电梯上下层运行流程图32. 模块设计32.1 外部数据采集模块设计42.2 信号存储模块42.3 基于FPGA的中央处理模块42.4 信号的输出、显示模块43.程序设计与仿真53.1程序设计53.2 程序仿真54.运行结果与分析105.结束语136.参考文献14引言随高层楼宇的增加,电梯越来越多的走进了人们的生活,对人们的生活的影响越来越大。为了让电梯更好的服务人们,各种电梯新技术不断地发展起来。随着人们生活水平的不断提高,经济的快速发展和生产生活的需要,城市高层建筑如雨后春笋拔地而起。与此相应,作为一种可以垂直升降运输的工具一电梯也得到迅猛的发展。现在,电梯已完全融入我们的生活、工作及学习中,人们越来越离不开它。因此,它的安全可靠性、迅速准确性、舒适性,对人们来说都是非常重要的。为了确保电梯正常运行、安全使用,一般电梯都有专业的维修管理人员。他们必须对电梯原理、性能、特点、控制、运行要全面认识和掌握,才能做到对电梯的正确使用、管理及维护。根据我国有关部门的规定,电梯作业属于特种作业,其作业人员必须经过专门培训,并经理论考试和实践考核合格后,发给特种作业操作证方可上岗操作。同时,对电梯操作人员定期考核,让他们定期参加安全技术学习,扎扎实实地做好电梯维护和保养工作,才能使人们平安长久的使用电梯。电梯控制系统是一个相当复杂的逻辑控制系统系统要同时对几百个信号进行接收、处理。由于用户对电梯功能的要求不断提高其相应控制方式也在不断发生变化。随着EDA技术的快速发展基于FPGA的微机化控制已广泛应用于电梯电路设计与控制的各个方面。在经济不断发展,科学技术日新月异的今天,楼的高度已和经济发展同样的速度成长起来。作为建筑的中枢神经,电梯起着不可或缺的作用,电梯作为建筑物内的主要运输工具,像其他的交通工具一样,已经成为我们日常生活的一个不可缺少的组成部分。一个国家的电梯需求总量,主要受其经济增长速度、城市化水平、人口密度及数量、国家产业结构等综合因素的影响。在全球经济持续低迷的情况下,我国国民经济仍然以较高的速度持续增长,城市化水平不断提高。这从客观上导致了我国电梯行业的空前繁荣景象,我国已经成为全球最大的电梯市场。上世纪80年代以来,随着经济建设的持续高速发展,我国电梯需求量越来越大。总趋势是上升的,电梯行业进入了“第三次浪潮”。如此庞大的市场需求为我国电梯行业的发展创造了广阔的舞台!1.系统方案设计1.1设计要求(1) 每层电梯入口处设有上下请求开关,电梯内设有顾客到达层次的停站请求开关。(2) 设有电梯入口处位置指示装置及电梯运行模式(上升或下降)指示装置。(3) 电梯到达有停站请求的楼层,开门指示灯亮,开门后,经一段时延后,电梯门关闭电梯继续进行,直至执行完最后一个请求信号后停留在当前层。(4) 电梯运行规则:当处于上升模式时,只响应比所在位置高的请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;高层有下楼请求,则直接升到请求层,进入下降模式。当电梯处于下降模式时则与上升模式相反。1.2 总体设计方案1.2.1 控制方式方案内部请求优先控制方式类似于出租车的工作方式,先将车上的人送至目的地,再去载客。作为通用型电梯应该服务于大多数人,必须考虑电梯内、外的响应率。在内部请求优先控制的方式中,当电梯外部人的请求和电梯内部人的请求冲突时,外部人的信号可能被长时间忽略,因而他不能作为通用型电梯的设计方案。2 单向层层停控制方式方案单向层层停控制方式等同于火车的运行方式,遇站即停止、开门。这种方案的优点在于面面俱到,可以保证所有人的请求都能得到响应。然而这样对电梯的效率产生消极影响:不必要的等待消耗了大量时间,而电梯的运作与用户的请求无关,当无请求时电梯也照常跑空车,就浪费了大量的电能。而对用户而言,此种控制方式的请求响应时间也不是很快。因而不是理想的方案。3 方向优先控制方式方案方向优先控制方案是指电梯运行到某一楼层时先考虑这一楼层是否有请求:有,则停止;无,则继续前进。停下后在启动时的步骤:1 考虑前方上下方是否有请求:有,则停止;无,则继续前进。2 检验后方是否有请求,有请求则转向运行,无请求则继续维持停止状态。这种运作方式下,电梯对用户的请求响应率为100%,且响应时间较短。如果每层楼都有请求,则这种控制方式的效率和上面的单层控制方式的效率一样。然而,当不是每层楼都有请求时,方向优先控制方式的效率远远大于单向层层停等控制方式的效率。而且,方向优先控制方式下,电梯在维持停止状态的时候可以进入省电模式,又能节省大量电能。本设计选择方向优先控制方式。1.2.2 系统组成电梯方向优先控制系统方框图如图所示。图一 电梯方向优先控制方式控制系统方框图1.2.3电梯上下层运行流程图图二 电梯上升运动流程电梯下降运动流程图跟上图相反,上升是从一楼开始上升二楼到六楼的任一楼层,而电梯下降却是从六楼开始,下降到五楼到一楼的任一楼层。电梯上升,下降原理相同,步骤上也许有少许不同。2 模块设计2.1 外部数据采集模块设计对于外部信号采集,处理要求电梯控制器:1 外部请求信号的实时,准确的采集;2 准确,实时的捕捉楼层到达信号;3 有效的防止楼层到达信号,外部请求信号的误判。控制器采用FPGA作为系统控制的核心,系统频率的时钟频率是32.0000Hz,完全可以满足实时采集数据的要求。由于电路中毛刺现象的存在,信号的纯净度降低,单个的毛刺往往被误作为系统转换的触发信号,严重影响电梯的正常工作。可以采用多次检测的方法解决这个问题,对一个信号进行多次采样以保证信号的可信度。外部请求信号的输入形式为按键输入,到达楼层信号来自光敏传感器,关门中断信号及超载信号则产生于压力传感器。键盘、光敏外部输入接口电路未设计。2.2 信号存储模块电梯控制器的请求输入信号有18个(电梯外有六个上升请求,六个下降请求的用户输入端口,电梯内有六个请求用户输入端口),由于对系统内,外请求没有设置优先级,各楼层的内,外请求信号被采集后可先进行运算,在存到存储器中。电梯运行过程中,由于用户的请求信号的输入是离散的,而且系统对请求的响应也是离散的,因此请求信号的存储要求新的请求信号不能覆盖原来的请求信号,只有响应动作完成后才能清除存储器內对应的请求信号位。对应某一楼层的请求信号的存储,清除电路如图所示。图三 请求信号操作电路图2.3 基于FPGA的中央处理模块中央数据处理模块是系统的核心,通过对存储的数据(含请求、到达楼层等信号)进行比较,判断以驱动系统状态的流转。电梯的工作过程中共有等待、上升、下降、开门、关门、停止、休眠、超载报警以及故障报警状态。一般情况下,电梯工作起始点是第一层,起始状态是等待状态,启动条件是收到上升请求。系统状态流程图如图所示。注意:图中,超载状态时电梯关门动作取消,同时发出警报,直到警报被消除;故障时电梯不执行关门动作,同时发出警报,直到警报被清除(看门狗信号有效条件是一层楼连续发生关门中断情况超过三次)。本系统由请求信号启动,运行中每检测到一个到达楼层信号,就会将存储器的请求信号和楼层的状态信号进行比较,在参照原方向信号来决定是否停止、转向等动作。图四 系统状态流程图2.4 信号的输出、显示模块本系统的输出信号有两种,一种是电机的升降控制信号(两位)和开门、关门控制信号;另一种是面向用户的提示信号(含楼层的显示,方向的显示,已经接受的请求显示等)。电机的控制信号一般需要两位,本电机中电机工作状态有三种工作状态:正转,反转和停止转动状态。两位控制信号作为一个三路开路开关的选通信号,此三路开关选用模拟电子开关。系统的显示输出包括数码管的楼层显示、数码管的请求信号显示和表征运动的方向的箭头形指示灯的开关信号。本系统具有请求信号显示的功能,结合方向显示,可以减少用户对同一请求的输入次数,这样就延长了电梯按键的使用的寿命。假如电梯处于向上的运动状态,初始位置是底层,初始请求是6楼,2楼时进入一个人,如果他的目的是6楼,就可以不用再按键。同时,电梯外部的人也可以根据请求信号显示(上升请求、下降请求、无请求),就可以避免没必要的重复请求信号输入。电梯使用时,系统结合相应的电梯使用规范完全可以满足人们的需要,而且效率比较高。3.程序设计与仿真3.1程序设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dianti isport(clk:in std_logic; -时钟信号 full,deng,quick,clr:in std_logic; -超载,关门中断,提前关门,清除报警信号 c_u1,c_u2,c_u3,c_u4,c_u5:in std_logic; -电梯外的人上升请求信号 c_d2,c_d3,c_d4,c_d5,c_d6:in std_logic; -电梯外的人下降请求信号 d1,d2,d3,d4,d5,d6:in std_logic; -电梯内的人请求信号 g1,g2,g3,g4,g5,g6:in std_logic; -到达楼层的信号 door:out std_logic_vector(1 downto 0); -电梯门控制信号 led:out std_logic_vector(6 downto 0); -电梯所在楼层显示 led_c_u:out std_logic_vector(5 downto 0); -电梯外的人上升请求信号显示 led_c_d:out std_logic_vector(5 downto 0); -电梯外的人下降请求信号显示 led_d:out std_logic_vector(5 downto 0); -电梯内请求信号显示 wahaha:out std_logic; -看门狗报警系统 ud,alarm:out std_logic; -电梯运动方向显示,超载报警信号 up,down:out std_logic); -电梯控制信号和电梯运动end dianti;architecture behav of dianti issignal d11,d22,d33,d44,d55,d66:std_logic; -电梯内请求信号寄存信号signal c_u11,c_u22,c_u33,c_u44,c_u55:std_logic;-电梯外上升请求寄存信号signal c_d22,c_d33,c_d44,c_d55,c_d66:std_logic;-电梯外下降请求寄存信号signal q:integer range 0 to 1; -分频信号signal q1:integer range 0 to 6; -关门延时计数器signal q2:integer range 0 to 9; -动方向寄存器signal dd,cc_u,cc_d,dd_cc:std_logic_vector(5 downto 0);signal opendoor:std_logic;signal updown:std_logic;signal en_up,en_dw:std_logic; -预备上升,下降使能信号begincom:process(clk)begin if clkevent and clk=1 then if clr=1 then q1=0;q2=0;wahaha=0; -清除报警 elsif full=1 then alarm=1;q1=3 then door=10; else door=00;end if;elsif q=1 then q=0;alarm=0;if q2=3 then wahaha=1; -故障报警elseif opendoor=1 then door=10;q1=0;q2=0;up=0;down=0;-开门操作elsif en_up=1 then -上升预操作 if deng=1 then door=10;q1=0;q2=q2+1; -关门中断elsif quick=1 then q1=3; -提前关门elsif q1=6 then door=00;updown=1;up=3 then door=01;q1=q1+1; -电梯进入关门状态else q1=q1+1;door=00; -电梯进入等待状态end if;elsif en_dw=1 then -下降预操作if deng=1 then door=10;q1=0;q2=q2+1;elsif quick=1 then q1=3;elsif q1=6 then door=00;updown=0;down=3 then door=01;q1=q1+1;else q1=q1+1;door=00;end if;end if;if g1=1 then led=1001111; -电梯到达一楼,显示一楼if d11=1 or c_u11=1 then d11=0;c_u11=0;opendoor000001 then en_up=1;opendoor=0;-有上升请求,电梯进入预备上升状态elsif dd_cc=000000 then opendoor=0; -无请求,一楼待机end if;elsif g2=1 then led=0010010; -电梯到达二楼,显示2楼if updown=1 then -电梯前一状态上升if d22=1 or c_u22=1then d22=0;c_u22=0;opendoor000011 then en_up=1;opendoor=0;-上升请求,预备上升elsif dd_cc000010 then en_dw=1;opendoor=0;-有下降请求,预备下降end if;elsif d22=1 or c_d22=1 then d22=0;c_d22=0;opendoor=1;-电梯前一运动状态下降elsif dd_cc000010 then en_dw=1;opendoor000011 then en_up=1;opendoor=0;-上升请求,预备上升end if;elsif g3=1 then led=0000110;if updown=1 thenif d33=1 or c_u33=1then d33=0;c_u33=0;opendoor000111 then en_up=1;opendoor=0;elsif dd_cc000100 then en_dw=1;opendoor=0;end if;elsif d33=1 or c_d33=1 then d33=0;c_d33=0;opendoor=1;elsif dd_cc000100 then en_dw=1;opendoor000111 then en_up=1;opendoor=0;end if;elsif g4=1 then led=1001100;if updown=1 thenif d44=1 or c_u44=1then d44=0;c_u44=0;opendoor001111 then en_up=1;opendoor=0;elsif dd_cc001000 then en_dw=1;opendoor=0;end if;elsif d44=1 or c_d44=1 then d44=0;c_d44=0;opendoor=1;elsif dd_cc001000 then en_dw=1;opendoor001111 then en_up=1;opendoor=0;end if;elsif g5=1 then led=0100100;if updown=1 thenif d55=1 or c_u55=1then d55=0;c_u55=0;opendoor011111 then en_up=1;opendoor=0;elsif dd_cc010000 then en_dw=1;opendoor=0;end if;elsif d55=1 or c_d55=1 then d55=0;c_d55=0;opendoor=1;elsif dd_cc010000 then en_dw=1;opendoor011111 then en_up=1;opendoor=0;end if;elsif g6=1 then led=0100000;if d66=1 or c_d66=1 then d66=0;c_d66=0;opendoor=1;elsif dd_cc100000 then en_dw=1;opendoor=0;end if;else en_up=0; en_dw=0; -电梯进入上升或下降状态end if;end if;else q=1;alarm=0; -清除报警信号if d1=1 then d11=d1; -对电梯内的人请求信号检测和寄存elsif d2=1 then d22=d2;elsif d3=1 then d33=d3;elsif d4=1 then d44=d4;elsif d5=1 then d55=d5;elsif d6=1 then d66=d6;end if;if c_u1=1 then c_u11=c_u1; -对电梯外的人上升请求检测寄存elsif c_u2=1 then c_u22=c_u2;elsif c_u3=1 then c_u33=c_u3;elsif c_u4=1 then c_u44=c_u4;elsif c_u5=1 then c_u55=c_u5;end if;if c_d2=1 then c_d22=c_d2; -对电梯外的人下降信号检测寄存elsif c_d3=1 then c_d33=c_d3;elsif c_d4=1 then c_d44=c_d4;elsif c_d5=1 then c_d55=c_d5;elsif c_d6=1 then c_d66=c_d6;end if;dd=d66&d55&d44&d33&d22&d11; -电梯内人请求信号并置cc_u=0&c_u55&c_u44&c_u33&c_u22&c_u11; -电梯外上升信号并置cc_d=c_d66&c_d55&c_d44&c_d33&c_d22&0; -电梯外下降信号并置dd_cc=dd or cc_u or cc_d; -内外信号综合end if;ud=updown; -电梯运动状态显示led_d=dd;led_c_u=cc_u; -电梯外上升信号显示led_c_d=cc_d; -电梯外下降信号显示end if;end process;end behav;3.2 程序仿真 图五 仿真结果图(1) 图六 仿真结果图(2)4.运行结果与分析通过观察仿真图(1)和仿真图(2),当full(超载)为高电平时,alarm(报警信号)就会跟着变为高电平,这是报警信号就会报警。这是clr为高点平后,就会清除警报。电梯开始工作时,电梯在一楼,而在一楼有人要乘电梯上楼,cu_1变为高电平,等门开后,进入电梯,要去六楼,按下六楼后,等待门关好后,电梯上升,最后停在了六楼,楼层显示6;五楼有下降请求,到三楼,重复上述过程,电梯显示3;一楼上升请求,到五楼,电梯最后显示5;五楼有下降请求,到一楼,电梯最后显示一楼;一楼上升请求,到三楼,电梯最后显示3;三楼上升请求,到六楼,这是deng(延迟关门)变为高电平,会发现door(电梯门)被延迟关门,延迟结束后,电梯最后显示楼层6。如果有人在电梯内部请求,在电梯在三楼是,内部有上升请求,到六楼,电梯最后到达六楼,显示楼层6.当四楼,五楼同时有下降请求,都到达一楼,这是电梯先到五楼,再到一楼,最后到达一楼,楼层显示1.当五楼,六楼同时请求要下降到三楼,电梯先去六楼,再去五楼,最后到达三楼,楼层显示3。这是五楼有下降请求,要下降到一楼,而这时full(超载)为高电平时,alarm(报警信号)就会跟着变为高电平,这是报警信号就会报警。这种情况下电梯不会运动,电梯门保持打开。楼层仍继续显示5。这是只要clr变为高电平,清除报警,但报警信号alarm仍为高电平,而电梯也会继续运动,不过仍处于超载状态,比较危险。5.结束语本电梯系统实现了如下功能:1.各层电梯内部信号:各楼层请求按键。外部信号:上升下降请求按键,所在楼层显示,电梯运行状态显示。2.能够存储请求信号,电梯上升(下降)过程中,根据电梯的运行状态,首先按方向优先、循环次序响应各请求。3.电梯每秒升(降)一层楼。电梯到达有停站请求的楼层,经过1秒电梯门打开,开门指示灯亮,开门4秒后,电梯门关闭(开门指示灯灭),电梯继续进行,直至执行完最后一个请求信号后停留在当前层。电梯初始状态为一层关门状态。综上所述,完成了课题的所有要求,该设计采用模块化编程,升级可实现任意多层电梯系统,具有很强的适应性和实用性。在本设计中,因为考虑了扩展性,所以在信号定义的时候就使用了二进制的向量,而不是整数。在设计方法上也做了特殊的设计,所以使得扩展性较好。如果要实现n层电梯的控制,首先在端口的地方就要加入所有的按键,而指示灯只要把向量中的6改成n就可以了。同时需要在按键控制进程里加入其他按键触发指示灯的语句。在电梯的升降状态将6改成n,在电梯的开门状态中将2改成n一1,在关门状态,将position=6改成position=n,关键是修改position=6的部分,如果按照每层罗列,将十分烦琐,所以得寻求各层判断条件的共性,解决方法之一就是,新建一个全局向abc为std_logic_vector(ndownto1),abc的赋值为abc1,other=0)。在电梯的上升模式时,如果有本层请求信号,则电梯开门;如果没有任何请求信号,则电梯停在当前层;否则用abc和stoplight与fuplight向量比较,如果stoplight或fupligh比abc大,则说明更高层还有上升或者停战请求,电梯需继续上升;如果abc更大,则用abc与fdnlight作比较,如果fdnlight更大,则说明更高层有下降请求,电梯继续上升,否则电梯下降。电梯处在下降模式时同原理分析判定下一状态。这样可以大大简化程序,但要注意的是abc向量作为判断依据,需实时更新,可以单独写一个进程,触发时钟周期要设置得很小。在电梯的上升状态和开门状态中,把6改为n,在信号灯控制进程中加入其它按键触发指示灯的语句。6.参考文献1潘松,黄继业. EDA技术实用教程. 科学出版社,20062付家才. EDA原理与应用M. 北京:化学工业出版社,2001:15-233王振红. VHDL数字电路设计应用实践教程M. 北京:机械工业出社,2003:2-144黄智伟. FPGA系统设计与实践M. 北京:电子工业出版社,2005:12-245梁延东. 电梯控制技术M. 北京:中国建筑工业出版社,1997:23-4713
展开阅读全文