项目设计三层电梯控制系统_第1页
项目设计三层电梯控制系统_第2页
项目设计三层电梯控制系统_第3页
项目设计三层电梯控制系统_第4页
项目设计三层电梯控制系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、三层电梯控制系统一、 设计功能与要求电梯控制系统是的设计目标是按照使用者的要求控制电梯的运行。要求用VHDL设计出三层电梯的控制系统,基本功能要求如下:1、 每层电梯入口处设有上、下请求开关,使用者可以根据自身的上下楼需要按下相应按键;电梯内部设有到达楼层按钮,使用者可以选择到达楼层。2、 设有电梯运行模式(上、下)标识和当前所在楼层标识。3、 电梯运行模式等同于普通电梯运行模式,电梯一般按照提出请求的先后顺序进行响应。程序根据电梯当前位置和使用者所在楼层以及进入电梯后的要求控制运行状态。4、 电梯初始模式为一层关门状态。二、 设计思路本系统的主要输入有电梯外上下控制按钮Button(其中Bu

2、tton(0)表示一楼电梯外上升请求,Button(1)表示二楼电梯外上升请求, Button(2)表示二楼电梯外下降请求, Button(3)表示三楼电梯外下降请求);电梯内到达楼层控制按钮floor(其中floor(0)表示请求到达一层, floor(1)表示请求到达二层, floor(2)表示请求到达三层)。系统的输出包括电梯位置标识position,表示电梯当前所在楼层;电梯开门关门显示按钮door(当door=1时表示开门,door=0表示关门);电梯当前运行状态按钮up_down(当up_down=1时表示电梯处于上升状态,当up_down=0时表示电梯处于下降状态)。系统主要通过

3、当前所在楼层以及运行状态、后续请求判断运行方式。电梯处在第一层时,当它收到二层电梯外上下楼请求、三层电梯外下楼请求、一层电梯内到达二层和三层请求时,电梯会按照指令上升到相应楼层并开门、关门;若收到一层电梯外上楼请求只做开门响应,随后根据使用者进入电梯后请求进行响应;其他请求不响应。当电梯处在第二层时,若系统收到二层电梯外上下楼请求只做开门响应;若收到三层电梯外下楼或二层电梯内到达三层请求,则做上楼响应、开门;若收到一层电梯外上楼或二层电梯内到达一层请求,则做下楼楼响应并开门;其他请求不响应。当电梯处在第三层时,若它收到二层电梯外上下楼请求、一层电梯外上楼请求、电梯内到达二层和一层请求时,电梯会

4、按照指令下降到相应楼层并开门、关门;若收到三层电梯外下楼请求只做开门响应,随后根据使用者进入电梯后请求进行响应;其他请求不响应。若电梯正处在上升状态中收到外部请求,则只响应比当前所在楼层高的楼层的请求,到达需要到达最高楼层时再响应低层请求。若电梯正处在下降状态中收到外部请求,则只响应比当前所在楼层低的楼层的请求,到达需要到达最低楼层时再响应高层请求。三、 状态原理图说明本系统的状态比较复杂,状态中嵌套状态。图3.1为系统状态原理说明图,其中b0、b1、 b2、 b3 分别表示Button(0) 、Button(1)、 Button(2)、 Button(3);f0、f1、f2分别表示 floo

5、r(0)、 floor(1)、 floor(2);S0表示一层上状态、S1U和S1D分别表示二层上和下状态、S2表示三层下状态。图3.1 状态原理图本状态图主要说明系统运行当前状态与下一个状态的关系,考虑了从当前状态到下一状态的所有触发因素,较为复杂。四、 源程序以及注释LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.all;ENTITY elevator15 ISPORT(CLK: IN STD_LOGIC;reset: IN STD_LOGIC; Button : IN STD_LOGIC_VECTO

6、R(3 DOWNTO 0); -button(0)为一层外上升请求,button(1)为二层外上升请求, -button(2)为二楼外下降请求,Button(3)为三层外下降请求; floor : IN STD_LOGIC_VECTOR(2 DOWNTO 0); -floor(0)为电梯内一层请求按钮, floor(1)为电梯内二层请求按钮, -floor(2)为电梯内三层请求按钮; position: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-position表示电梯当前位置信息; door : OUT STD_LOGIC; - '1'为开门,

7、9;0'为关门; up_down : OUT STD_LOGIC - '1'为上楼,'0'为下楼; );END elevator15;ARCHITECTURE Behav OF elevator15 ISTYPE State IS (S0,S1U,S1D,S2); -S1U为二楼上状态,S1D为二楼下状态; SIGNAL current_state : State; -中间变量:当前状态 SIGNAL next_state : State; -中间变量:下一状态 SIGNAL up : STD_LOGIC; -中间变量:上升下降状态 SIGNAL dor

8、 : STD_LOGIC; -中间变量:开门关门状态BEGINP1:PROCESS(CLK) -状态转换进程;BEGIN IF CLK'EVENT AND CLK='1' THEN -检测时钟上升沿current_state <= next_state; END IF;END PROCESS; P2:PROCESS(reset,clk,current_state,up,button,floor) VARIABLE button_var: STD_LOGIC_VECTOR( 3 DOWNTO 0); VARIABLE floor_var : STD_LOGIC_VE

9、CTOR( 2 DOWNTO 0); VARIABLE cat : STD_LOGIC; VARIABLE ca_time : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF reset = '1' THEN -复位处理,初始状态为一层 next_state <= S0; position <= "0001" cat:='0' ca_time:="0000" up<='Z' dor<='0' button_var( 3 DOWNTO 0):

10、="0000" floor_var(2 DOWNTO 0):="000" ELSIF clk'event and clk='1' THEN -若无复位信号,则将外部按钮信号存储到7个变量之中; IF button(0) ='1' THEN button_var(0):='1' ELSE NULL; END IF; IF button(1) ='1' THEN button_var(1):='1' ELSE NULL; END IF; IF button(2) =

11、9;1' THEN button_var(2):='1' ELSE NULL; END IF; IF button(3) ='1' THEN button_var(3):='1' ELSE NULL; END IF; IF floor(0)='1' THEN floor_var(0):='1' ELSE NULL; END IF; IF floor(1)='1' THEN floor_var(1):='1' ELSE NULL; END IF; IF floor(2)=

12、9;1' THEN floor_var(2):='1' ELSE NULL; END IF; IF cat='0' THEN ca_time:=ca_time+1; END IF; -开门,关门计时; CASE current_state IS WHEN S0 => -一楼状态处理; position <= "0001" cat:='0'IF (button_var(0) or floor_var(0)='1' THENCASE ca_time IS WHEN "0011"

13、; => dor<='1' WHEN "1101" => dor<='0' button_var(0):='0' floor_var(0):='0' IF (floor_var(1) or floor_var(2)='1' THEN next_state<=S1U; ca_time:="0000" up<='1' ELSE next_state<=S0; ca_time:="0000" END IF

14、; WHEN others => NULL; END CASE; ELSIF (button_var(1) OR button_var(2) or button_var(3) or floor_var(2) or floor_var(1)='1' THENnext_state <= S1U; ca_time:="0000"up <= '1'ELSE next_state <= S0; ca_time:="0000"END IF; WHEN S1U => -二楼上状态处理;position &l

15、t;= "0010" cat:='0' IF floor_var(1)='1' THEN -二楼内上升请求; CASE ca_time IS WHEN "0011" => dor<='1' WHEN"1101"=> dor<='0' floor_var(1):='0' IF (button_var(1) or button_var(3) or floor_var(2)='1' THEN next_state<=

16、S2; ca_time:="0000" button_var(1):='0' ELSIF ( button_var(0) or button_var(2) or floor_var(0)='1' THEN next_state<=s0; ca_time:="0000" button_var(2):='0' ELSE next_state<=S1U; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSE I

17、F button_var(1)='1' THEN -二楼外上升请求; CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor<='0' button_var(1):='0' IF (floor_var(2) or button_var(3)='1' THEN next_state<=S2; ca_time:="0000" ELSIF ( button_var(0)

18、or floor_var(0) or button_var(2)='1' THEN next_state<=s0; ca_time:="0000" up<='0' ELSE next_state<=S1U; button_var(1):='0' END IF; WHEN others => NULL; END CASE; ELSE IF (button_var(3) or floor_var(2)='1' THEN -二楼无上楼,开门请求,但三层有下楼或开门请求; next_state&

19、lt;=S2; ca_time:="0000" ELSIF button_var(2)='1' THEN -二楼无上楼,开门请求,三层也无下楼或开门请求,此-时二楼有下楼请求; CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor<='0' button_var(2):='0' IF(floor_var(0) or button_var(0)='1' THEN next

20、_state<=s0; ca_time:="0000" up<='0' ELSE next_state<=S1U; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSIF (button_var(0) or floor_var(0)='1' THEN -电梯处于二楼上状态,仅有一楼信号要处理 next_state<=s0; ca_time:="0000" up<='0' ELSE nex

21、t_state<=S1U; -无任何信号,保持当前状态不变; ca_time:="0000" END IF; END IF; END IF; WHEN S1D => - up='0' 时的情况; position <= "0010" cat:='0' IF floor_var(1)='1' THEN CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor&

22、lt;='0' floor_var(1):='0' IF (button_var(2) or button_var(0) or floor_var(0)='1' THEN next_state<=s0; ca_time:="0000" button_var(2):='0' ELSIF ( button_var(1) or button_var(3) or floor_var(2)='1' THEN next_state<=S2; ca_time:="0000" b

23、utton_var(1):='0' ELSE next_state<=S1D; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSE IF button_var(2)='1' THEN CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor<='0' button_var(2):='0' IF

24、(floor_var(0) or button_var(0)='1' THEN next_state<=s0; ca_time:="0000" ELSIF ( button_var(1) or floor_var(2) or button_var(3)='1' THEN next_state<=S2; ca_time:="0000" up<='1' ELSE next_state<=S1D; ca_time:="0000" END IF; WHEN others

25、=> NULL; END CASE; ELSE IF (button_var(0) or floor_var(0)='1' THEN next_state<=s0; ca_time:="0000" ELSIF button_var(1)='1' THEN CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor<='0' button_var(1):='0' I

26、F(floor_var(2) or button_var(3)='1' THEN next_state<=S2; ca_time:="0000" up<='1' ELSE next_state<=S1D; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSIF (button_var(3) or floor_var(2)='1' THEN next_state<=S2; ca_time:="0000&q

27、uot; up<='1' ELSE next_state<=S1D; ca_time:="0000" END IF; END IF; END IF;WHEN S2 => -电梯三楼状态处理;position <= "0011" cat:='0'IF (button_var(3) or floor_var(2)='1' THEN CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101

28、" => dor<='0' button_var(3):='0' floor_var(2):='0' IF (floor_var(0) or floor_var(1)='1' THEN next_state<=S1D; ca_time:="0000" up<='0' ELSE next_state<=S2; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSIF (

29、button_var(0) OR button_var(1) OR button_var(2) or floor_var(0) or floor_var(1)='1' THEN next_state <=S1D; ca_time:="0000" up <= '0'ELSE next_state <=S2; ca_time:="0000" END IF; END CASE; END IF; END PROCESS;P3:PROCESS(up,dor) -电梯上下,开关门显示; BEGIN up_down&l

30、t;=up; door<=dor; END PROCESS;END Behav;五、 仿真结果与说明图 5.1图5.1是基本基本功能仿真,使用者在一层电梯外按下上升(Button(0)=1)按钮,随后开门(door=1)。使用者进入后按下到达三楼请求(floor(2)=1),电梯关门(door=0)并上升(up_down=1)最后到达三层(position=3)并开门(door=1)。图 5.2图5.3图5.2是基本记忆功能仿真,电梯处于初始一层关门状态。三层外使用者按下三层下按钮(floor(3)=1)电梯上升到三楼开门。然而在上升到二楼时一层外有人按下上楼按钮。此时电梯先完成上升到三

31、层,然后再下降回到一层响应一层外请求。图5.3表明在电梯上升过程中可以接收较高楼层的要求。开始时有人按下一层外上升(Button(0)=1)按钮,电梯开门使用者进入并按下到达三层(floor(2)=1)请求,此时电梯关门并上升。在电梯上升但未到达二层时,二层外有人按下上楼(Button(1)=1)请求,因此当电梯到达二层(position=2)后停止并开门,待二层使用者进入后再完成第一个使用者的请求到达三层。图 5.4图5.4仿真了系统对同一楼层两个不同到达楼层的响应。有两人先后按下二层上按钮(Button(1)=1),此时电梯从一层上升至二层并开门。待两人进入后按照先后顺序按下到达三层(floor(2)=1)和到达一层(floor(0)=1)按钮,此时电梯也按照

温馨提示

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

最新文档

评论

0/150

提交评论