电梯控制器课设报告_第1页
电梯控制器课设报告_第2页
电梯控制器课设报告_第3页
电梯控制器课设报告_第4页
电梯控制器课设报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1SPOC/EDA综合课程设计电梯控制器设计目录第一章 设计的性质与目的2第二章 设计任务与要求3第三章 方案选择与论证4第四章 设计原理54.1 原理图54.2 流程图64.3 结构框图74.4 程序描述8第五章部分时序仿真图145.1 电梯上锁155.2 电梯报警155.3 电梯超载165.4 电梯运行模拟175.5 电梯开门延时模拟195.6 电梯紧急开门19第七章 调试过程中出现的问题及解决措施20第八章 设计总结228.1 设计方案的优缺点比较228.2 心得体会22第一章 设计的性质与目的 SOPC/EDA综合课程设计是继EDA技术及应用和数字电子技术课程之后开出的实践环节教学。目

2、的是训练学生综合运用学过的数字电子技术和EDA技术及应用的基本知识,培养独立设计比较复杂的数字逻辑系统的能力。设计工作建立在硬件和软件两个平台的基础上。硬件平台是可编程逻辑器件,所选的器件可保证在一片芯片上设计出题目要求的数字电路系统。软件平台是ALTERA公司的Quartus II。通过课程设计,学生要掌握使用EDA(电子设计自动化)工具设计数字逻辑的方法,包括设计输入、编译、软件仿真、下载和硬件仿真等全过程。第二章 设计任务与要求1.设计一个4层电梯全自动控制电路。2.电梯运行锁用一按钮代替(开锁上电),低电平可以运行,高电平不能运行。3.每层电梯入口处设有上行、下行请求按钮,电梯内设有乘

3、客到达层次的停站要求开关,高电平有效。4.有电梯所处楼层指示灯和电梯上行、下行状态指示灯。5.电梯到达某一层时,该层指示灯亮,并一直保持到电梯到达另一层为止。电梯上行或下行时,相应状态指示灯亮。6.电梯接收到停站请求后,每层运行2秒,到达停站层,停留2秒后门自动打开,开门指示灯亮,开门6秒后电梯自动关门。7.能记忆电梯内、外的请求信号,并按照电梯的运行规则依次响应,请求信号保留至响应后撤除。8.人数超载或超重用一按钮代替,高电平有效,超载时电梯不能运行,并有相应指示。9.事故报警按钮高电平有效,事故报警不能运行,并有指示灯,信号保留至事故消除。10.增加手动开门、关门控制,并可调整开、关门时间

4、。第三章 方案选择与论证电梯共有上升、下降、开门、关门、停止、一楼、二楼、三楼、四楼等几个状态,设计电梯就是要弄清楚这几个状态之间的相互转化关系,可以假设电梯开始时在一楼,如果二三四楼有请求(包括电梯要停在二楼或二楼有上升或下降请求或停在三楼或三楼有上升或下降请求或停在四楼、或四楼有下降请求),则电梯要上升,否则就停在一楼。当电梯在二楼时,如果三楼或四楼有请求(包括电梯停在三楼或三楼有上升或下降请求或停在四楼或四楼有下降请求),则电梯要上升,如果一楼有请求(包括停在一楼或一楼有上升请求),则电梯下降。当电梯在三楼时,如果四楼有请求(包括停在四楼或四楼有下降请求),则电梯要上升,如果一楼二楼有请

5、求(包括停在一楼或二楼或一楼二楼有上升请求或二楼有下降请求),则电梯要下降,否则电梯就停在三楼。当电梯在四楼,如果一二三楼有请求(包括停在一二三楼或一二三楼有上升请求或二三楼有下降请求),则电梯下降,否则电梯停在四楼。当电梯上锁时,电梯处于非工作状态,所有指示灯全灭,当电梯超载时,超载灯亮,等电梯遇到紧急情况时,报警灯亮。因为电梯上升或下降是一个过程,这个过程持续两秒,电梯开关门要持续六秒,所以还必须设计一个计数器,计数器和主控制器共同组成电路的原理方案图,这是主控制器和计数器可以不用同一个时钟脉冲驱动,但要处理好两个元件的连接。当然如果主控制器是用秒脉冲驱动,可以把两个模块集成一个模块。第四

6、章 设计原理4.1 原理图clk1clockalarmoverweightIt1It2It3It4Up1Up2Up3Down2Down3Down4opencloseLed1Led2Led3Led4upleddownled openled overweightledalarmled电 梯 控 制 器图4.1 电梯控制器的原理图4.2 流程图 LT1 LT2 LT4 LT3Lock or alarm or overweightLock or alarm or overweightLock or alarm or overweightLock or alarm or overweight图4.2 电

7、梯控制器流程图4.3 结构框图图4.3 电梯控制器结构图4.4 程序描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity contrl is port(clk1,lock,alarm,overweight,It1,It2,It3,It4,up1,up2,up3,down2,down3,down4:in std_logic;-lock为电梯锁开关 alarm为警报器开关 overweight为超重开关 It1、It2、It3、It

8、4分别表示电梯停在一二三四楼 up1表示一楼有向上请求 Up2表示二楼有向上请求 up3表示三楼有向上请求 down2表示二楼有向下的请求-down3表示三楼有向下请求 down4表示四楼有向下请求 quick,delay,dengwo:in std_logic;-分别表示快速关门 延长一段时间关门 不马上关门 led1,led2,led3,led4:out std_logic;-一二三四楼层的指示灯 alarmled,overweightled,upled,downled,dooropenled:out std_logic);-报警灯 超重灯 上行状态灯 下降状态灯 开门灯 end cont

9、rl;architecture xin of contrl istype state_type is(start,rukou,up,down,dooropen,stop,wait1,wait2,wait3,wait4,wait5,wait6,wait7,wait8,wait9,upwait1,upwait2,dnwait1,dnwait2);-start表示初始化状态 rukou表示程序执行状态 up上行状态 down下降状态 dooropen开门状态 stop停止运行状态-后面几个状态用来延时signal state:state_type:=start;signal stopcun: std

10、_logic_vector(3 downto 0);-电梯停止楼层存储器signal upcun,downcun: std_logic_vector(2 downto 0);-上升请求存储器 下降请求存储器signal dd1,dd2,dd3: std_logic_vector(3 downto 0);-信号用来交换数据beginp1:process(clk1,lock,alarm,overweight)variable position: integer range 0 to 4;beginif lock='1' then led1<='0'led2&l

11、t;='0'led3<='0'led4<='0'alarmled<='0'overweightled<='0'dooropenled<='0'upled<='0'downled<='0'-电梯上锁elsif alarm='1' then alarmled<='1'-警报灯亮elsif overweight='1' then overweightled<='1&

12、#39;-超重灯亮elsif rising_edge(clk1) then if up1='1' then upcun(0)<='1' end if; if up2='1' then upcun(1)<='1' end if; if up3='1' then upcun(2)<='1' end if; if down4='1' then downcun(2)<='1' end if; if down3='1' then down

13、cun(1)<='1' end if; if down2='1' then downcun(0)<='1' end if; if It1='1' then stopcun(0)<='1' end if; if It2='1' then stopcun(1)<='1' end if; if It3='1' then stopcun(2)<='1' end if; if It4='1' then stopcun

14、(3)<='1' end if;-将各种请求存入存储器 dd1<='0'& upcun;-将上升请求存储器扩展成四位 dd2<=downcun & '0'-将下降请求扩展成四位 dd3<=dd1 or dd2 or stopcun; case state is when start=> if dd3="0000" then state<=start; elsif position=0 then led1<='1'position:=position+1;

15、 state<=rukou; end if;-电梯开始运行,一楼灯亮,如果没有请求,电梯状态不变 when rukou=> if position=1 then if stopcun(0)='1' or upcun(0)='1' then stopcun(0)<='0'upcun(0)<='0' state<=dooropen; else state<=up; end if;-电梯在一楼,如果当前层有请求,进入开门状态,同时清除请求,否则电梯上升 elsif position=2 then if

16、 stopcun(1)='1' or upcun(1)='1' or downcun(0)='1' then stopcun(1)<='0' ; upcun(1)<='0'downcun(0)<='0'state<=dooropen; elsif dd3>"0011" then state<=up; elsif dd3<"0010" then state<=down; end if;-电梯在二楼,如果当前层有请求

17、,进入开门状态,同时将请求清除,如果三四楼有请求,电梯上升,否则下降 elsif position=3 then if stopcun(2)='1' or upcun(2)='1' or downcun(1)='1' then stopcun(2)<='0'upcun(2)<='0' ;downcun(1)<='0' state<=dooropen; elsif dd3>"0111" then state<=up; elsif dd3<&

18、quot;0100" then state<=down; end if;-电梯在三楼,如果当前层有请求,进入开门状态,同时将请求清除,如果四楼有请求,电梯上升,否则下降 elsif position=4 then if stopcun(3)='1' or downcun(2)='1' then stopcun(3)<='0'downcun(2)<='0'state<=dooropen; else state<=down; end if; end if;-电梯在四楼,如果当前层有请求,进入开门

19、状态,同时将请求清除,否则下降 when up=>upled<='1'state<=upwait1;-上升状态,上行状态灯亮 when upwait1=>state<=upwait2;-运行持续两秒 when upwait2=>upled<='0'position:=position+1;-到达新的楼层,上行指示灯灭 if position=1 then led1<='1'led2<='0'led3<='0'led4<='0'-一楼指

20、示灯亮 elsif position=2 then led2<='1'led1<='0'led3<='0'led4<='0'-二楼指示灯亮 elsif position=3 then led3<='1'led2<='0'led1<='0'led4<='0'-三楼指示灯亮 elsif position=4 then led4<='1'led1<='0'led2<='

21、0'led3<='0'-四楼指示灯亮 else led1<='0'led2<='0'led3<='0'led4<='0' end if; if position=2 and dd3>"0011" and stopcun(1)='0' and upcun(1)='0' and downcun(0)='0' then state<=up;-如果在二楼且当前层没有请求,电梯继续上升 elsif posit

22、ion=3 and dd3>"0111" and stopcun(2)='0' and upcun(2)='0' and downcun(1)='0' then state<=up;-如果在三楼且当前层没有请求,电梯继续上升 else state<=dooropen;if position=4 then if downcun(2)='1' then downcun(2)<='0'end if; if stopcun(3)='1' then stopcun(

23、3)<='0'end if; elsif position=3 then if downcun(1)='1' then downcun(1)<='0' end if; if upcun(2)='1' then upcun(2)<='0' end if; if stopcun(2)='1' then stopcun(2)<='0'end if; elsif position=2 then if downcun(0)='1' then downcu

24、n(0)<='0' end if; if upcun(1)='1' then upcun(1)<='0' end if; if stopcun(1)='1' then stopcun(1)<='0' end if; end if; end if;-电梯进入开门状态,且将与所在楼层相关的请求清除 when down=>downled<='1'state<=dnwait1;-下降状态,下降指示灯亮when dnwait1=>state<=dnwait2;-

25、运行持续两秒when dnwait2=>downled<='0'position:=position-1;-到达新的楼层,下降指示灯灭 if position=1 then led1<='1'led2<='0'led3<='0'led4<='0' elsif position=2 then led2<='1'led1<='0'led3<='0'led4<='0' elsif position=

26、3 then led3<='1'led2<='0'led1<='0'led4<='0' elsif position=4 then led4<='1'led2<='0'led3<='0'led1<='0' else led1<='0'led2<='0'led3<='0'led4<='0' end if; if position=3 a

27、nd dd3<"0100" and stopcun(2)='0' and upcun(2)='0' and downcun(1)='0' then state<=down;-电梯在三楼且当前层没有请求,电梯继续下降 elsif position=2 and dd3<"0010" and stopcun(1)='0' and upcun(1)='0' and downcun(0)='0' then state<=down;-电梯在二楼且当

28、前层没有请求,电梯继续下降 else state<=dooropen;if position=1 then if upcun(0)='1' then upcun(0)<='0'end if; if stopcun(0)='1' then stopcun(0)<='0'end if; elsif position=2 then if upcun(1)='1' then upcun(1)<='0' end if; if downcun(0)='1' then do

29、wncun(0)<='0' end if; if stopcun(1)='1' then stopcun(1)<='0'end if; elsif position=3 then if upcun(2)='1' then upcun(2)<='0'end if; if downcun(1)='1' then downcun(1)<='0' end if; if stopcun(2)='1' then stopcun(2)<='0&

30、#39;end if; end if; end if;-电梯进入开门状态且将与所在楼层相关的请求清除 when dooropen =>state<=wait1; when wait1=>dooropenled<='1' state<=wait2;-电梯到达楼层后,停两秒再开门 when wait2=> if quick='1' then state<=wait7;-快速关门,电梯开门后过三秒关门 elsif delay='1' then state<=wait3;-延时关门,电梯开门后过九秒关门 e

31、lse state<=wait5;-正常情况下电梯开门后过六秒关门 end if;when wait3=>state<=wait4;when wait4=>state<=wait5;when wait5=>state<=wait6;when wait6=>state<=wait7;when wait7=>state<=wait8;when wait8=>state<=wait9;-延时过程when wait9=> dooropenled<='0' if dengwo='1'

32、 then state<=wait6;-不马上关门,门合上后再次打开 elsif dd3>"0000" then state<=rukou;-请求没有执行完毕,继续执行程序 else state<=stop;-请求执行完毕,电梯停止运行 end if;when stop=>if position>1 then stopcun(0)<='1' state<=rukou;-如果电梯不是停在一楼,将电梯返回到一楼 else led1<='0'led2<='0'led3<

33、;='0'led4<='0'alarmled<='0' overweightled<='0'dooropenled<='0'upled<='0'downled<='0' position:=0;-电梯停止运行,进入上锁状态 end if;end case;end if;end process p1;end xin;第五章 部分时序仿真图5.1 电梯上锁电梯上锁,有请求也不执行;5.2 电梯报警当有紧急情况时,报警灯亮,有请求不会执行;5.3 电梯超

34、载当电梯超载时,超载警报灯亮,有请求不执行5.4 电梯运行模拟这个图模拟的是多个请求时,电梯的运行情况。先是一楼有向上请求想到二楼去同时二楼有向上请求到四楼去,接着四楼有下降请求回到一楼,电梯运行情况是:电梯在一楼(一楼指示灯led1亮)时开门持续6秒(波形上可以看到开门灯亮),关门后,电梯向上运行(上行指示灯亮2秒),到二楼后(二楼指示灯led2亮),电梯开门(同样开门灯持续亮六秒),接着电梯继续上升,上行指示灯亮2秒,到三楼时,三楼指示灯led3亮,电梯继续向上运行,上行指示灯亮2秒,到达四楼时四楼指示灯亮,同时电梯门打开(开门灯亮6秒),关门后,电梯向下运行(下降指示灯亮2秒),到达三楼

35、时三楼指示灯亮,电梯继续向下运行(下降指示灯亮2秒),到达2楼时二楼指示灯亮,电梯继续向下运行(下降指示灯亮两秒),到达一楼时,电梯门打开(开门灯亮),关门后没有其它请求,电梯停止运行。四楼有个向下的请求要到三楼去,二楼有个向下的请求要到一楼,电梯运行情况为:电梯开始时在一楼,一楼指示灯亮,电梯向上运行(上升指示灯亮2秒),到达二楼,二楼指示灯亮,电梯继续向上运行(上升指示灯亮2秒),到达三楼,三楼指示灯亮,电梯仍向上运行(上升指示灯亮2秒),到达四楼,四楼指示灯亮,电梯门打开(开门灯亮6秒),电梯关门后,电梯向下运行(下降指示灯亮2秒),到达三楼(三楼指示灯亮),电梯开门(开门指示灯亮6秒)

36、,电梯继续下降(下降指示灯亮2秒),到达二楼(二楼指示灯亮),电梯开门(开门指示灯亮6秒),电梯继续下降(下降指示灯亮2秒),到达一楼,电梯门打开,电梯运行结束。5.5 电梯开门延时模拟电梯受到一个不马上关门信号(dengwo=1),电梯关上的门重新打开,并延长一段时间门。5.6 电梯紧急开门在这幅波形图上,当第二次开门时有一个快速关门信号(quick=1)开门灯亮了四秒就灭了(电梯关门了),当第三次开门时收到一个延时信号(delay=1),开门灯亮了8秒才灭。注释:由于有的信号名字太长无法全部显示出来,现特意标示(每幅图都一样),信号的名称依次为:alarm alarmled clk1 de

37、lay dengwo dooropenled down2 down3 down4 downled It1 It2 It3 It4 led1 led2 led3 led4 lock overweight overweightled quick up1 up2 up3 upled 第七章 调试过程中出现的问题及解决措施Error:VHDL syntax error at contrl vhd(11)near text “if”:expecting “end”,or “(”or an identifier (“if” is a reserved keyword),or a parallel stat

38、ement 这通常是警告你你写的程序在11行附近的if在后面没有end if 与之呼应。由于程序中用到判断条件的语句非常多,所以这个错误会经常出现。Error: VHDL error at haha.vhd(16): type of identifier "haha" does not agree with its usage as void type这是在警告你程序16行定义的haha的类型与其使用形式不对应,很可能是haha为变量,却被当作信号来赋值或者是haha为信号,却被当作变量使用。Error: VHDL syntax error at contrl.vhd(4) near text这表明程序第四行有错误,很可能知识用中文打了几个标点符号而已,这个要注意了,千万不要忽略了这个小错误,很可能你就是找不出来在那干着急。Error: VHDL syntax error at contrl.vhd(17) :variable “position” is used but not declared这个错误是因为你使用了变量variable 但是却在之前没有先进行定义,当然也可能是你定义了,但在使用时由于笔下误而打错了。还有一个值得注意的问题是在组合逻辑中不能使用i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论