全自动电梯控制电路.doc

上传人:一*** 文档编号:2523406 上传时间:2020-04-18 格式:DOC 页数:14 大小:278.02KB
返回 下载 相关 举报
全自动电梯控制电路.doc_第1页
第1页 / 共14页
全自动电梯控制电路.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《全自动电梯控制电路.doc》由会员分享,可在线阅读,更多相关《全自动电梯控制电路.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-*全自动电梯控制电路1 选题目的随着我国经济持续增长、城镇化建设的加速和房地产行业的进一步发展,对电梯的需求越来越大。所以电梯控制器就需要大强度的发展,来满足社会的需求。电梯的发展更加的智能化,节约化。对社会的发展,人民生活水平的提高具有很大的意义。所以加大对电梯控制器的发展,和技术上的研究是很重要的。随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。EDA技术的提高,促进了电梯控制器的发展。电梯行业也随着科技的发展,不

2、断地出现在人们生活的各个场所,因此,对电梯控制器的设计是一个很实用的例子,对掌握EDA技术的应用也有很大的帮助。二设计目标掌握EDA设计的一般方法;熟悉Quartus 9.0软件,利用其设计一个符合以下设计要求的全自动电梯控制电路。 设计要求设计一个层楼房全自动电梯控制电路,其功能如下: 每层楼电梯入口处设有上,下请求开关各,电梯内设有乘客到达层次的停站要求开关。 有电梯所处位置指示装置和电梯上行,下行状态批示装置。 电梯每秒升(降)一层楼。到达某一层楼时,指示该层次的灯发光,并一直保持到电梯到达新一层为止。 电梯到达有停站请求的楼层后,该层次的指示灯亮,经过.5S,电梯门自动打开,开门指示灯

3、亮,开门5S后,电梯门自动关闭(开门指示灯灭),电梯继续运行。 能记忆电梯内外的所有请求信号,并按照电梯运行规则次第响应,每个请求信号保留至执行后撤除。 电梯运行规则,电梯处于上升模式时,只响应比电梯所在位置高的层次的上楼请求信号,由下而上逐个执行,直到最后一个请示执行完毕。如更高层次有下楼请求,则直接升到有下楼请求的楼层接客,然后便进入下降模式。电梯处于下降模式时与之相反,仅响应比电梯所在位置低的楼层的下楼请求。电梯执行完所有的请求后,应停在最后所在的位置不变,等待新的请求。 开机(接通电源)时,电梯应停留在一楼,而各种上,下请求皆被清除。 3 实现方案3.1控制器的控制模块控制器包括主控制

4、器、楼层选择器、状态显示器、译码器和楼层显示器等6个模块。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。 分控制器楼层选择器状态显示器主控制器译码器楼层显示器3.2 控制器的流程图初始化外部按键否请求信号寄存器是否有请求?楼层检测电梯运行等待判定电梯运行方向目标层与本层是否同层?是状态寄存器是内部软件执行机构否外部硬件执行机构 总流程图否是否目标层?是电梯停止开门关门否是否停止运行?是停止 电梯控制主流程图 3.

5、3控制器的VHDL描述模块流程四层电梯控制器的设计主要是对实体和结构体的设计,它的VHDL描述模块流程如图:元件库的说明端口定义实体状态机进程结构体按键信号灯信号灯控制进程结束四层电梯控制器的VHDL描述模块流程4 设计过程4.1设计程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yxh isport(clk:in std_logic; clkout:out std_logic);end yxh;architecture one of yxh issignal count: st

6、d_logic_vector(8 downto 0);begin process beginwait until clkevent and clk=1; if count500 then count=count+1; clkout=0; else count0); clkout=1; end if;end process;end architecture one;Elevator模块(控制器):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity elevator is port( cl

7、k: in std_logic; up1,up2,up3,stop1,stop2,stop3,stop4,down4,down3,down2: in std_logic; ddelay,dclose: in std_logic; upled,downled: out std_logic; floorled,nowfloor: out std_logic_vector(3 downto 0); dopenled: out std_logic_vector(5 downto 0);end elevator;architecture bhv of elevator is type state_typ

8、e is (start,run,opendoor,dopenwait2,dopenwait3,dopenwait4,dopenwait5,dopenwait6,dopenwait7,dopenwait8,dopenwait9,dopenwait10,dclse,up,down,upwait1,upwait2,downwait1,downwait2,stop); signal state : state_type; signal upm,downm,stopm,dat: std_logic_vector(3 downto 0); signal dclosem,ddelaym: std_logic

9、;beginstate_trans:process (clk,up1,up2,up3,down4,down3,down2,stop1,stop2,stop3,stop4,upm,downm,stopm,dat,ddelay,dclose)variable position: integer range 0 to 4;begin if rising_edge(clk) then if up1=1 then upm(0)=1; end if; if up2=1 then upm(1)=1; end if; if up3=1 then upm(2)=1; end if; upm(3)=0; if d

10、own4=1 then downm(3)=1; end if; if down3=1 then downm(2)=1; end if; if down2=1 then downm(1)=1; end if; downm(0)=0; if stop1=1 then stopm(0)=1; end if; if stop2=1 then stopm(1)=1; end if; if stop3=1 then stopm(2)=1; end if; if stop4=1 then stopm(3)=1; end if; if dclose=1 then dclosem=1; end if; if d

11、delay=1 then ddelaym=1; end if; dat if dat=0000 then state = start; elsif position= 0 then position:=position+1; state if stopm(0)=1 or upm(0)=1 then stopm(0)=0; upm(0)=0; state 0001 then state= up; end if; elsif position=2 then if stopm(1)=1 or upm(1)=1 or downm(1)=1 then stopm(1)=0; upm(1)=0; down

12、m(1)=0; state 0011 then state= up; elsif dat 0010 then state= down; end if; elsif position=3 then if stopm(2)=1 or upm(2)=1 or downm(2)=1 then stopm(2)=0; upm(2)=0; downm(2)=0; state 0111 then state= up; elsif dat 0100 then state= down; end if; elsif position=4 then if stopm(3)=1 or downm(3)=1 then

13、stopm(3)=0; downm(3)=0; state= opendoor; elsif dat 1000 then state upled=1; state state upled0011 or stopm0011) and stopm(1)=0 and upm(1)=0 then state0111 and stopm(2)=0 and upm(2)=0 then state= up; else state downled= 1; state state downled= 0; position:=position-1; if position=3 and (downm0100 or

14、stopm0100) and stopm(2)=0 and downm(2)=0 then state= down; elsif position=2 and dat0010 and stopm(1)=0 and downm(1)=0 then state= down; else state if position=1 then stopm(0)=0; upm(0)=0; elsif position=2 then stopm(1)=0; upm(1)=0; downm(1)=0; elsif position=3 then stopm(2)=0; upm(2)=0; downm(2)=0;

15、elsif position=4 then stopm(3)=0; downm(3)=0; end if; dopenled=001100; if dclosem=1 then state= dopenwait9; dclosem=0; elsif ddelaym=1 then state= opendoor; ddelaym=0; else state if dclosem=1 then state= dopenwait9; dclosem=0; elsif ddelaym=1 then state= opendoor; ddelaym=0; else state dopenled=0111

16、10; state if dclosem=1 then state= dopenwait9; dclosem=0; elsif ddelaym=1 then state= opendoor; ddelaym=0; else state dopenled=111111; state if dclosem=1 then state= dopenwait9; dclosem=0; elsif ddelaym=1 then state= opendoor; ddelaym=0; else state dopenled=011110; state if dclosem=1 then state= dop

17、enwait9; dclosem=0; elsif ddelaym=1 then state= opendoor; ddelaym=0; else state dopenled=001100; state if dclosem=1 then state= dopenwait9; dclosem=0; elsif ddelaym=1 then state= opendoor; ddelaym=0; else state dopenled0000 then state= run; else state if dat0000 then state= run; elsif ddelaym=1 then

18、 state= opendoor; ddelaym=0; else state= stop; end if; end case; end if;if position=1 then nowfloor=0001; floorled=0001; elsif position=2 then nowfloor=0010; floorled=0010; elsif position=3 then nowfloor=0011; floorled=0100; elsif position=4 then nowfloor=0100; floorled=1000; else nowfloor=0000; flo

19、orled=0000; end if; end process state_trans;end bhv;综合实现模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity finalctrol is port( clk: in std_logic; up1,up2,up3,stop1,stop2,stop3,stop4,down4,down3,down2: in std_logic; ddelay,dclose: in std_logic; upled,downled: out std_

20、logic; floorled,nowfloor: out std_logic_vector(3 downto 0); dopenled: out std_logic_vector(5 downto 0);end finalctrol;architecture arc of finalctrol is component yxh port(clk: in std_logic; clkout: out std_logic); end component; component elevator port( clk: in std_logic; up1,up2,up3,stop1,stop2,sto

21、p3,stop4,down4,down3,down2: in std_logic; ddelay,dclose: in std_logic; upled,downled: out std_logic; floorled,nowfloor: out std_logic_vector(3 downto 0); dopenled: out std_logic_vector(5 downto 0); end component;signal clkwire: std_logic; beginU1: yxh port map(clk,clkwire);U2: elevator port map(clkw

22、ire,up1,up2,up3,stop1,stop2,stop3,stop4,down4,down3,down2,ddelay,dclose,upled,downled,floorled,nowfloor,dopenled);end architecture;4.2 输入输出端口图5 遇到问题及解决方法遇到问题:由于电梯内的人可能会出现部分人须要上楼,部分人需要下楼的情况,所以需要先响应电梯运行方向上最近楼层的指令,待该方向上所有指令运行结束后再运行反方向时的指令。解决方法:用if或when语句,使得当电梯运行方向上的楼层输入端的所有输入都为0时,才运行反方向最近的楼层的指令。不足:未考虑到电梯可能会出现的未知不可自行解决的异常情况。解决方法:应设置reset端,使电梯出现异常情况时回到初始状态。6 实现结果 时序仿真波形7 对该课程的实施意见及建议 建议学校适当增加理论课的课程学时,同学们想对该课程有更深入的学习和理解,但囿于课时太短,很多内容得课下自己看书学习。另外建议学校整修一下上机教室的电脑,人多机少不够用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 施工组织

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁