




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工大学本科实验报告题目:三层电梯控制器课程名称:三层电梯控制器学院(系):电信专业:自动化班级:1204学生姓名:郭琳琳学号:201281178完成日期:7月11号成绩:2014年7月11日题目:三层电梯控制器1设计要求每层电梯入口处设有上、下请求开关,使用者可以根据自身的上下楼需要按下相应按键;电梯内部设有到达楼层按钮,使用者可以选择到达楼层。设有电梯运行模式(上、下)标识和当前所在楼层标识。电梯运行模式等同于普通电梯运行模式,电梯一般按照提出请求的先后顺序进行响应。程序根据电梯当前位置和使用者所在楼层以及进入电梯后的要求控制运行状态。电梯初始模式为一层关门状态。2设计分析及系统方案设计本系统的主要输入有电梯外上下控制按钮Button(其中Button(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系统的VHDL设计(1)系统原理图;图4.1状态原理图本状态图主要说明系统运行当前状态与下一个状态的关系,考虑了从当前状态到下一状态的所有触发因素,较为复杂。(2)本系统的状态比较复杂,状态中嵌套状态。图4.1为系统状态原理说明图,其中b0、b1、b2、b3分别表示Button(0)、Button(1)、Button(2)、Button(3);f0、f1、f2分别表示floor(0)、floor(1)、floor(2);S0表示一层上状态、S1U和S1D分别表示二层上和下状态、S2表示三层下状态。2)原代码及注释libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitydiantiis port( clk:instd_logic; reset:instd_logic; button:instd_logic_vector(3downto0);--button(0)为一层外上升请求,button(1)为二层外上升请求,--button(2)为二楼外下降请求,Button(3)为三层外下降请求;floor:instd_logic_vector(2downto0);--floor(0)为电梯内一层请求按钮,floor(1)为电梯内二层请求按钮,--floor(2)为电梯内三层请求按钮; position :outstd_logic_vector(3downto0);--position表示电梯当前位置信息;door:outstd_logic;--'1'为开门,'0'为关门;up_down:outstd_logic--'1'为上楼,'0'为下楼;);enddianti;architecturebehaveofdiantiis typeStateis(S0,S1U,S1D,S2);--S1U为二楼上状态,S1D为二楼下状态; signalcurrent_state:State;--中间变量:当前状态 signalnext_state:State;--中间变量:下一状态signalup:std_logic;--中间变量:上升下降状态signaldor:std_logic;--中间变量:开门关门状态beginP1:process(clk)--状态转换进程; beginifclk'eventandclk='1'then--检测时钟上升沿 current_state<=next_state; endif; endprocess;P2:process(reset,clk,current_state,up,button,floor)variablebutton_var:std_logic_vector(3downto0);variablefloor_var:std_logic_vector(2downto0);variablecat:std_logic;variableca_time:std_logic_vector(3downto0); beginifreset='1'then--复位处理,初始状态为一层 next_state<=S0;position<="0001";cat:='0';ca_time:="0000"; up<='Z'; dor<='0';button_var(3downto0):="0000";floor_var(2downto0):="000";elsifclk'eventandclk='1'then--若无复位信号,则将外部按钮信号存储到7个变量之中;ifbutton(0)='1'thenbutton_var(0):='1';elsenull;endif;ifbutton(1)='1'thenbutton_var(1):='1';elsenull;endif;ifbutton(2)='1'thenbutton_var(2):='1';elsenull;endif;ifbutton(3)='1'thenbutton_var(3):='1';elsenull;endif;iffloor(0)='1'thenfloor_var(0):='1';elsenull;endif;iffloor(1)='1'thenfloor_var(1):='1';elsenull;endif;iffloor(2)='1'thenfloor_var(2):='1';elsenull;endif;ifcat='0'thenca_time:=ca_time+1;endif;--开门,关门计时;casecurrent_stateis whenS0=>--一楼状态处理; position<="0001";cat:='0'; if(button_var(0)orfloor_var(0))='1'then caseca_timeiswhen"0011"=>dor<='1';when"1101"=>dor<='0';button_var(0):='0';floor_var(0):='0';if(floor_var(1)orfloor_var(2))='1'thennext_state<=S1U;ca_time:="0000";up<='1';elsenext_state<=S0;ca_time:="0000";endif;whenothers=>null;endcase;elsif(button_var(1)ORbutton_var(2)orbutton_var(3)orfloor_var(2)orfloor_var(1))='1'then next_state<=S1U;ca_time:="0000"; up<='1'; else next_state<=S0;ca_time:="0000"; endif; whenS1U=>--二楼上状态处理; position<="0010";cat:='0'; iffloor_var(1)='1'then--二楼内上升请求;caseca_timeiswhen"0011"=>dor<='1';when"1101"=>dor<='0';floor_var(1):='0';if(button_var(1)orbutton_var(3)orfloor_var(2))='1'thennext_state<=S2;ca_time:="0000";button_var(1):='0';elsif(button_var(0)orbutton_var(2)orfloor_var(0))='1'thennext_state<=s0;ca_time:="0000";button_var(2):='0';elsenext_state<=S1U;ca_time:="0000";endif;whenothers=>null;endcase;elseifbutton_var(1)='1'then--二楼外上升请求;caseca_timeiswhen"0011"=>dor<='1';when"1101"=>dor<='0';button_var(1):='0';if(floor_var(2)orbutton_var(3))='1'thennext_state<=S2;ca_time:="0000";elsif(button_var(0)orfloor_var(0)orbutton_var(2))='1'thennext_state<=s0;ca_time:="0000";up<='0';elsenext_state<=S1U;button_var(1):='0';endif;whenothers=>null;endcase;elseif(button_var(3)orfloor_var(2))='1'then--二楼无上楼,开门请求,但三层有下楼或开门请求;next_state<=S2;ca_time:="0000";elsifbutton_var(2)='1'then--二楼无上楼,开门请求,三层也无下楼或开门请求,此--时二楼有下楼请求;caseca_timeiswhen"0011"=>dor<='1';when"1101"=>dor<='0';button_var(2):='0';if(floor_var(0)orbutton_var(0))='1'thennext_state<=s0;ca_time:="0000";up<='0';elsenext_state<=S1U;ca_time:="0000";endif;whenothers=>null;endcase;elsif(button_var(0)orfloor_var(0))='1'then--电梯处于二楼上状态,仅有一楼信号要处理next_state<=s0;ca_time:="0000";up<='0';elsenext_state<=S1U;--无任何信号,保持当前状态不变;ca_time:="0000";endif;endif;endif;whenS1D=>--up='0'时的情况; position<="0010";cat:='0'; iffloor_var(1)='1'thencaseca_timeiswhen"0011"=>dor<='1';when"1101"=>dor<='0';floor_var(1):='0';if(button_var(2)orbutton_var(0)orfloor_var(0))='1'thennext_state<=s0;ca_time:="0000";button_var(2):='0';elsif(button_var(1)orbutton_var(3)orfloor_var(2))='1'thennext_state<=S2;ca_time:="0000";button_var(1):='0';elsenext_state<=S1D;ca_time:="0000";endif;whenothers=>null;endcase;elseifbutton_var(2)='1'thencaseca_timeiswhen"0011"=>dor<='1';when"1101"=>dor<='0';button_var(2):='0';if(floor_var(0)orbutton_var(0))='1'thennext_state<=s0;ca_time:="0000";elsif(button_var(1)orfloor_var(2)orbutton_var(3))='1'thennext_state<=S2;ca_time:="0000";up<='1';elsenext_state<=S1D;ca_time:="0000";endif;whenothers=>null;endcase;elseif(button_var(0)orfloor_var(0))='1'thennext_state<=s0;ca_time:="0000";elsifbutton_var(1)='1'thencaseca_timeiswhen"0011"=>dor<='1';when"1101"=>dor<='0';button_var(1):='0';if(floor_var(2)orbutton_var(3))='1'thenca_time:="0000";up<='1';elsenext_state<=S1D;ca_time:="0000";endif;whenothers=>null;endcase;elsif(button_var(3)orfloor_var(2))='1'thennext_state<=S2;ca_time:="0000";up<='1';elsenext_state<=S1D;ca_time:="0000";endif;endif;endif; whenS2=>--电梯三楼状态处理; position<="0011";cat:='0'; if(button_var(3)orfloor_var(2))='1'thencaseca_timeiswhen"0011"=>dor<='1';when"1101"=>dor<='0';button_var(3):='0';floor_var(2):='0';if(floor_var(0)orfloor_var(1))='1'thennext_state<=S1D;ca_time:="0000";up<='0';elsenext_state<=S2;ca_time:="0000";endif;whenothers=>null;endcase; elsif(button_var(0)ORbutton_var(1)ORbutton_var(2)orfloor_var(0)orfloor_var(1))='1'then next_state<=S1D;ca_time:="0000"; up<='0'; else next_state<=S2;ca_time:="0000"; endif; endcase;endif; endprocess;P3:process(up,dor)--电梯上下,开关门显示;beginup_down<=up;door<=dor;endprocess;endbehave;5结论以及结果说明本实验我用的是CycloneIIEP2C35F672C6的实验板,实验室中使用软件QUARTUSII进行VHDL的编写、波形仿真、下载等工作。仿真结果与说明:图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是基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解除劳动关系协议书
- 集合篇-2024年单招数学专项复习试题答案和解析
- 专升本思政理论考查试题及答案详解
- (高清版)DB12∕T 696-2016 天津市名牌产品评价准则
- 教研组活动总结08
- 2025年课程视频授权使用合作协议
- 2025年解聘书及解聘合同模板
- 思政重要问题的试题及答案汇编
- 二零二五年度家庭装修质保与家居软装配饰合同
- 2025年度离婚协议书:共同财产分割与家庭债务清理
- 招投标代理挂靠协议书
- 工作的时效性与时间管理课件
- 年产10万吨聚氯乙烯生产工艺设计毕业设计
- 高中18岁成人仪式主题活动设计
- 《婚姻家庭纠纷调解》课件
- 高中数学培优讲义练习(必修二):专题8.1 基本立体图形(重难点题型精讲)(教师版)
- 兵团红色经典文化在新疆高校思想政治教育中的运用研究
- 《珠穆琅玛峰》课件
- 注塑机定期保养记录表2016
- 3.28百万农奴解放纪念日演讲稿
- 全科医学科疾病诊疗指南全集诊疗规范
评论
0/150
提交评论