EDA电梯控制器课程设计报告加仿真.docx

上传人:b****0 文档编号:9968376 上传时间:2023-05-22 格式:DOCX 页数:23 大小:270.38KB
下载 相关 举报
EDA电梯控制器课程设计报告加仿真.docx_第1页
第1页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第2页
第2页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第3页
第3页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第4页
第4页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第5页
第5页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第6页
第6页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第7页
第7页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第8页
第8页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第9页
第9页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第10页
第10页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第11页
第11页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第12页
第12页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第13页
第13页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第14页
第14页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第15页
第15页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第16页
第16页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第17页
第17页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第18页
第18页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第19页
第19页 / 共23页
EDA电梯控制器课程设计报告加仿真.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

EDA电梯控制器课程设计报告加仿真.docx

《EDA电梯控制器课程设计报告加仿真.docx》由会员分享,可在线阅读,更多相关《EDA电梯控制器课程设计报告加仿真.docx(23页珍藏版)》请在冰点文库上搜索。

EDA电梯控制器课程设计报告加仿真.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2