EDA电梯控制器课程设计报告加仿真.docx
- 文档编号:23940088
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:23
- 大小:270.38KB
EDA电梯控制器课程设计报告加仿真.docx
《EDA电梯控制器课程设计报告加仿真.docx》由会员分享,可在线阅读,更多相关《EDA电梯控制器课程设计报告加仿真.docx(23页珍藏版)》请在冰豆网上搜索。
EDA电梯控制器课程设计报告加仿真
成绩评定表
学生姓名
班级学号
专业
电子信息工程
课程设计题目
电梯控制器
评
语
组长签字:
成绩
日期
20年月日
课程设计任务书
学院
信息科学与工程学院
专业
电子信息工程
学生姓名
班级学号
课程设计题目
电梯控制器
实践教学要求与任务:
利用EDA设计方法设计电梯控制器,设计平台采用MAXPLUS
或QUARTUS,设计语言采用VHDL,具体功能如下
(1)每层电梯入口处设有上下请求开关
(2)设有电梯所处位置指示装置及电梯运行模式(上升或下降)指示装置
(3)电梯到达有停站请求的楼层后,经过1S电梯门打开,开门指示灯亮,开门4S后,电梯门关闭(开门指示灯灭),电梯继续运行,并能响应提前关门延时关门.
(4)能记忆电梯内外的所有请求信号,并按照电梯运行规则次序响应,每个请求信号保留至执行后消除。
(5)电梯初始状态为一层开门.
(6)具有超载报警和故障报警的功能.
工作计划与进度安排:
课程设计时间为10天(2周)
1、调研、查资料1天。
2、总体方案设计2天。
3、代码设计与调试5天。
4、撰写报告1天。
5、验收1天。
指导教师:
201年月日
专业负责人:
201年月日
学院教学副院长:
201年月日
摘要
随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。
随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。
因此学好EDA技术对我们有很大的益处。
电梯行业也随着科技的发展,不断地出现在人们生活的各个场所,因此,对电梯控制器的设计是一个很实用的例子,对我们掌握EDA技术的应用也有很大的帮助。
关键词:
EDA技术电子信息通信自动控制
目录
1、设计要求概述..............................................................................1
1.1设计要求..............................................................................1
1.2总体设计思路......................................................................1
1.3具体设计思路......................................................................2
2、功能模块整体结构设计..............................................................2
2.1电梯控制器功能................................................................2
2.2电梯控制器设计...............................................................3
3、各模块详细设计............................................................................3
3.1底层模块设计.........................................................................3
3.2顶层模块设计........................................................................6
4、逻辑仿真与时序仿真的实现.......................................................12
4.1底层设计模块的方针及参数设置..........................................12
4.2电梯分层控制模块的仿真及参数设置..................................13
4.3电梯主控制器仿真波形............................................................15
5、设计结论...........................................................................................15
5.1设计功能实现情况.................................................................15
5.2设计心得................................................................................16
6、参考文献........................................................................................17
1电梯控制器的设计要求与设计思路
1.1设计要求
十层电梯控制器的功能电梯控制器是控制电梯按顾客要求自动上下的装置。
设计要求如下:
(1)每层电梯入口处设有上下请求开关,电梯内设有顾客到达层次的停站请求开关。
(2)设有电梯入口处位置指示装置及电梯运行模式(上升或下降)指示装置。
(3)电梯每秒升(降)一层楼
(4)电梯到达有停站请求的楼层,经过1秒电梯门打开,开门指示灯亮,开门4秒后,电梯门关闭(开门指示灯灭),电梯继续进行,直至执行完最后一个请求信号后停留在当前层。
(5)能记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号保留至执行后消除。
(6)电梯运行规则——当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接升到有下楼请求的最高楼层,然后进入下降模式。
当电梯处于下降模式时则与上升模式相反,只响应比电梯所在位置低的下楼请求信号,由下而下逐个执行,直到最后一个下楼请求执行完毕;如果低层有上楼请求,则直接降到有上楼请求的最低楼层,然后进入上升模式。
(7)电梯初始状态为一层开门状态
1.2总体设计思路
实验模拟生活中电梯运动控制,电梯总共十层,最简单的控制思想如下:
(1)采集用户呼叫楼层,并放入相应的记忆单元中。
(2)不考虑电梯轿厢所在楼层。
若有用户呼叫,电梯上行直到达到用户呼叫最大层,再下行直到到达最低层,由此构成一次行程。
(3)每完成一次行程,检测是否所用用户呼叫均已响应完毕。
如果没有,电梯继续运行,直到响应完所有用户呼叫。
否则,电梯停止运行。
其中用户请求包括外部请求和内部请求。
有外部升降请求信号需点亮相应的外部请求指示灯,内部升降请求信号同外呼。
(4)根据电梯所在楼层,七段数码管显示楼层数。
(5)根据用户运行方向,点亮相应升降指示灯。
(6)当电梯运行到有相应外部呼叫或内部呼叫楼层时,电梯停止运行,灭掉相应的呼叫显示灯,电梯开关门后,继续运行。
1.3具体设计思路
电梯控制可以通过多种方法进行设计,其中采用状态机来实现,思路比较清晰。
可以将电梯等待的每秒钟以及开门,关门都看成一个独立的状态。
由于电梯又是每秒上升或下降一层,所以就可以通过一个统一的一秒为周期的时钟来触发状态机。
根据电梯的实际工作情况,可以把状态机设置10个状态,分别是“电梯停留在1层”,“开门”,“关门”,“开门等待第一秒”,“开门等待第二秒”,“开门等待第三秒”,“开门等待第四秒”,“上升”,“下降”和“停止”状态。
各个状态之间的转换条件可以由上面的设计要求所决定。
2.功能模块整体结构设计
2.1电梯控制器功能
本电梯控制器分为主控制器和分控制器。
主控制器是电梯内部的控制器,每个楼层有一个分控制器。
主控制器的功能:
(1)完成10个楼层多用户的载客服务控制。
(2)电梯运行时显示电梯的运行方向和所在的楼层。
(3)当电梯到达选择的楼层时,电梯自动开门。
(4)具有提前关电梯门和延时关电梯门的功能。
(5)响应分控制器的有效请求,如果到达有请求的楼层,电梯自动开门。
分控制器的功能:
(1)显示电梯的运行状态和所在的楼层。
(2)显示乘客的上升和下降请求。
分控制器的有效请求原则:
(1)电梯处于等待状态时,上升和下降请求都响应。
(2)电梯处于上升状态时,有上升请求的分控制器所在楼层数大于电梯所在的楼层数。
(3)电梯处于下降状态时,有下降请求的分控制器所在楼层数小于电梯所在的楼层数。
2.2电梯控制器设计
控制器的功能模块如图2.1所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。
乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在的楼层数通过译码器译码从而在楼层显示器中显示。
分控制器把有效的请求传给主控的楼层数。
由于分控制器相对简单很多,所以主控制器是核心部分。
图2.1控制器的功能模块图
3.各模块详细设计
3.1底层模块设计及参数设置
①电梯控制计时模块的源程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitycounteris
port(clk,reset,clr,en:
instd_logic;
q:
outintegerrange0to8);
endcounter;
architectureartofcounteris
signaltemp:
integerrange0to8;
begin
process(clk,reset,clr,en)
begin
if(clr='1')then
temp<=0;
elsif(rising_edge(clk))then
if(reset='1')then
temp<=5;
elsif(en='1')then
iftemp=5then
temp<=temp;
else
temp<=temp+1;
endif;
endif;
endif;
endprocess;
q<=temp;
endart;
②电梯每层的分控制器源程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitylayercontrolis
port(clk,switch,upkey,downkey,opendoor:
instd_logic;
qin:
instd_logic_vector(10downto1);
ur,dr:
outstd_logic;
disp1:
outstd_logic_vector(3downto0));
endlayercontrol;
architectureartoflayercontrolis
constantid:
std_logic_vector(10downto1):
="0000001000";
signalupkey_data:
std_logic;
signaldownkey_data:
std_logic;
signalopendoor1:
std_logic;
signalopendoor2:
std_logic;
signalreq_opendoor:
std_logic;
signalreq_upr:
std_logic;
signalreq_downr:
std_logic;
signaldisp:
std_logic_vector(3downto0);
begin
process(clk)
begin
ifrising_edge(clk)then
upkey_data<=upkey;
downkey_data<=downkey;
opendoor2<=opendoor1;
opendoor1<=opendoor;
endif;
endprocess;
req_opendoor<=(opendoor1andnot(opendoor2));
process(switch,clk)
begin
if(switch='0')then
req_upr<='0';
req_downr<='0';
elsif(rising_edge(clk))then
if(req_opendoor='1'andqin=id)then
req_upr<='0';
req_downr<='0';
elsif(upkey='1'andupkey_data='0')then
req_upr<='1';
elsif(downkey='1'anddownkey_data='0')then
req_downr<='1';
endif;
endif;
endprocess;
ur<=req_upr;
dr<=req_downr;
withqinselect
disp<="0001"when"0000000001",
"0010"when"0000000010",
"0011"when"0000000100",
"0100"when"0000001000",
"0101"when"0000010000",
"0110"when"0000100000",
"0111"when"0001000000",
"1000"when"0010000000",
"1001"when"0100000000",
"1010"when"1000000000",
"0000"whenothers;
disp1<=disp;
endart;
3.2顶层模块设计
10层全自动电梯控制器顶层模块源程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityelevator10is
port(clk:
instd_logic;--时钟信号
switch:
instd_logic;--电梯电源开关,高电平时电梯正常工作
close:
instd_logic;--强制关门信号,高电平时电梯门立即关闭
delay:
instd_logic;--延时信号
sel:
instd_logic_vector(10downto1);--楼层选择信号
uplift:
instd_logic_vector(10downto1);--电梯上升请求输入信号
downlift:
instd_logic_vector(10downto1);--电梯下降请求输入信号
qout:
outstd_logic_vector(10downto1);--电梯状态显示输出信号
opendoor:
outstd_logic);--强制开门信号
endelevator10;
architectureartofelevator10is
componentcounter
port(clk,reset,clr,en:
instd_logic;
q:
outintegerrange0to8);
endcomponent;
typestate_typeis(up,m_up,down,m_down,stop,pause);
signalstate:
state_type;--电梯的各种状态
signalclk1:
std_logic;--1Hz时钟信号
signalclk4:
std_logic;--4Hz时钟信号
signalreq_up:
std_logic;--上升请求信号
signalreq_down:
std_logic;--下降请求信号
signalrunen:
std_logic;--电梯运行使能
signalrunclr:
std_logic;--电梯运行复位
signalstopen0:
std_logic;--电梯停止使能
signalstopen1:
std_logic;
signalstopclr:
std_logic;--电梯停止复位
signalreq_upr:
std_logic_vector(10downto1);---上升请求寄存器信号
signalreq_downr:
std_logic_vector(10downto1);--下降请求寄存器信号
signalposition:
std_logic_vector(10downto1);--电梯当前位置信号
signaluplift_data:
std_logic_vector(10downto1);--上升楼层数据显示信号
signaldownlift_data:
std_logic_vector(10downto1);--下降楼层数据显示信号
signalsel_data:
std_logic_vector(10downto1);--选择楼层数据显示信号
signalruntime:
integerrange0to8;--电梯运行时间
signalopentime:
integerrange0to8;--电梯开门时间
signalopenagain:
std_logic;--电梯再次开门信号
signalvoidreset:
std_logic;--电梯超载复位信号
begin
qout<=position;
p0:
process(clk)
variablecnt0:
integerrange0to4;
begin
ifrising_edge(clk)then
ifcnt0=4then
clk4<='1';cnt0:
=0;
else
clk4<='0';cnt0:
=cnt0+1;
endif;
endif;
endprocess;
p1:
process(clk4)
variablecnt1:
integerrange0to3;
begin
ifrising_edge(clk4)then
ifcnt1=3then
clk1<='1';cnt1:
=0;
else
clk1<='0';cnt1:
=cnt1+1;
endif;
endif;
endprocess;
p2:
process(switch,clk,uplift,downlift)
begin
ifrising_edge(clk)then
uplift_data<=uplift;
downlift_data<=downlift;
sel_data<=sel;
ifstate=pausethen
req_upr<=req_uprandnot(position);
req_downr<=req_downrandnot(position);
if(uplift/=uplift_dataandreq_up/='1'andposition>uplift)then
req_downr<=(req_downroruplift);
elsif(downlift/=downlift_dataandreq_up/='1'andposition>downlift)then
req_downr<=(req_downrordownlift);
elsif(uplift/=uplift_dataandreq_down/='1'andposition req_upr<=(req_uproruplift); elsif(downlift/=downlift_dataandreq_down/='1'andposition req_upr<=(req_uprordownlift); elsif(sel/=sel_data)then if(sel req_downr<=(req_downrorsel); elsif(sel>positionandreq_down/='1')then req_upr<=(req_uprorsel); endif; endif; elsif(state=uporstate=m_up)then if(uplift/=uplift_dataandreq_down/='1'andposition req_upr<=(req_uproruplift); endif; elsif(state=downorstate=m_down)then if(downlift/=downlift_dataandreq_up/='1'andposition>downlift)then req_downr<=(req_downrordownlift); endif; endif; endif; endprocess; req_up<='1'whenreq_upr/="0000000000"else'0'; req_down<='1'whenreq_downr/="0000000000"else'0'; p3: process(switch,clk) begin if(switch='0')then state<=stop;opendoor<='0';openagain<='1'; elsifrising_edge(clk)then casestateis whenstop=>state<=pause; whenpause=> if((opentime=0andopenagain='0'and(req_up='1'orreq_down='1')) or(uplift/=uplift_dataandposition=uplif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 电梯 控制器 课程设计 报告 仿真