EDA设计实验基于VHDL的电梯控制系统.docx
《EDA设计实验基于VHDL的电梯控制系统.docx》由会员分享,可在线阅读,更多相关《EDA设计实验基于VHDL的电梯控制系统.docx(12页珍藏版)》请在冰豆网上搜索。
EDA设计实验基于VHDL的电梯控制系统
课程设计
学生姓名:
学号:
指导教师:
教师职称:
讲师
院系:
班级:
摘要:
电梯作为垂直方向的交通工具,在高层建筑和公共场所已成为不可或缺的设备。
中国是全球最大的电梯市场,也具有最强的电梯生产能力,但由于缺乏自主知识产权和核心技术,自主品牌占市场的份额很少。
随着社会需求的变化,电梯朝着节能、环保及智能化方向发展。
EDA技术打破了软件和硬件间的壁垒,是计算机的软件技术与硬件实现、设计效率与产品能合二为一,它代表了电子技术和应用技术的发展方向。
VHDL主要用于描述数字系统的接口,结构和功能,它的语法简单易懂,移植性好。
本设计采用VHDL,源程序Altera公司的QuartusII软件仿真。
通过寄存器储存电梯请求信息,检测电梯运行状态,控制电梯按要求运作。
关键词:
EDAVHDL电梯控制系统
设计要求:
设计一个6层自动升降电梯控制电路,该控制器遵循方向优先原则完成6层楼的载客服务,同时指示电梯运行情况和电梯内外请求信息,具体要求如下:
(1)每层电梯入口处设有上、下请求开关,电梯内设有乘客到达楼层的请求开关。
(2)设有电梯所处楼层指示和电梯运行模式(上升或下降)指示。
(3)能记忆电梯内外的所有请求信号,并按照电梯运行规则次序响应,响应动作完成后清除请求信号。
(4)能检验是否超载,并设有报警信号。
(5)方向优先原则。
当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信息,由下而上逐个执行,直到最后一个上楼请求执行完毕,故更高层有下楼请求,则直接到有下楼请求的最高层接客,然后进入下降模式。
电梯处于下降模式时,与上升模式相反。
设计原理:
电梯控制器通过乘客在电梯内外的请求信号控制上升或下降,而楼层信号由电梯本身的装置触发,从而确定电梯处在哪个楼层。
乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在的楼层数通过LED数码管显示,
电梯门的状态分为开门,关闭,“00”表示关闭,“10”表示开启。
其系统结构框图如图1
图1系统结构框图
电路符号如图2:
图2电路符号
CLK:
时钟信号输入端。
full:
超载信号输入端。
alarm:
超载报警信号输出端。
clr:
清除报警信号输入端。
up1-up5:
电梯外请求信号输入端。
down2-down6:
电梯外请求信号输入端。
k1-k6:
电梯内请求信号输入端。
g1-g6:
到达楼层信号输入端(由于实验板无传感器,所以手动控制拨码开关表示到大楼层信号)
door[1..0]:
电梯门控制信号输入端。
led[6..0]:
LED数码管显示控制输出端。
ud:
电梯状态显示输出端。
up:
控制电机向上转输出端。
down:
控制电机向下转输出端。
设计方法:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityelevatoris
port(clk:
instd_logic;
full:
instd_logic;
clr:
instd_logic;
up1,up2,up3,up4,up5:
instd_logic;
down2,down3,down4,down5,down6:
instd_logic;
k1,k2,k3,k4,k5,k6:
instd_logic;
g1,g2,g3,g4,g5,g6:
instd_logic;
door:
outstd_logic_vector(1downto0);
led:
outstd_logic_vector(6downto0);
ud:
outstd_logic;
alarm:
outstd_logic;
up,down:
outstd_logic);
endelevator;
architectureoneofelevatoris
signalk11,k22,k33,k44,k55,k66:
std_logic;
signalup11,up22,up33,up44,up55:
std_logic;
signaldown22,down33,down44,down55,down66:
std_logic;
signalkk,uu,dd,uu_dd:
std_logic_vector(5downto0);
signalopendoor:
std_logic;
signalupdown:
std_logic;
signalen_up,en_down:
std_logic;
signala:
std_logic;
begin
kk<=k66&k55&k44&k33&k22&k11;
uu<='0'&up55&up44&up33&up22&up11;
dd<=down66&down55&down44&down33&down22&'0';
uu_dd<=kkoruuordd;
ud<=updown;
process(clk)
begin
ifclk'eventandclk='1'then
ifk1='1'then
k11<=k1;
elsifk2='1'then
k22<=k2;
elsifk3='1'then
k33<=k3;
elsifk4='1'then
k44<=k4;
elsifk5='1'then
k55<=k5;
elsifk6='1'then
k66<=k6;
endif;
ifup1='1'then
up11<=up1;
elsifup2='1'then
up22<=up2;
elsifup3='1'then
up33<=up3;
elsifup44='1'then
up44<=up4;
elsifup5='1'then
up55<=up5;
endif;
ifdown2='1'then
down22<=down2;
elsifdown3='1'then
down33<=down3;
elsifdown4='1'then
down44<=down4;
elsifdown5='1'then
down55<=down5;
elsifdown6='1'then
down66<=down6;
endif;
ifclr='0'thenalarm<='0';
a<='1';
elsiffull='0'then
alarm<='1';
door<="10";
elsealarm<='0';
a<='1';
ifa='1'then
ifopendoor='1'then
door<="10";
up<='0';
down<='0';
elsifen_up='1'then
door<="00";
updown<='1';
up<='1';
down<='0';
elsifen_down='1'then
door<="00";
updown<='0';
down<='1';
up<='0';
endif;
endif;
endif;
----------------------------------------------
ifg1='1'thenled<="0000110";
ifk11='1'orup11='1'then
k11<='0';
up11<='0';
opendoor<='1';
elsifuu_dd>"000001"then
en_up<='1';
opendoor<='0';
elsifuu_dd="000000"then
opendoor<='0';
endif;
elsifg2='1'thenled<="1011011";
ifupdown='1'then
ifk22='1'orup22='1'then
k22<='0';
up22<='0';
opendoor<='1';
elsifuu_dd>"000011"then
en_up<='1';
opendoor<='0';
elsifuu_dd<"000010"anduu_dd/="000000"then
en_down<='1';
opendoor<='0';
endif;
else
ifk22='1'ordown22='1'then
k22<='0';
down22<='0';
opendoor<='1';
elsifuu_dd<"000010"anduu_dd/="000000"then
en_down<='1';
opendoor<='0';
elsifuu_dd>"000011"then
en_up<='1';
opendoor<='0';
endif;
endif;
elsifg3='1'thenled<="1001111";
ifupdown='1'then
ifk33='1'orup33='1'then
k33<='0';
up33<='0';
opendoor<='1';
elsifuu_dd>"000111"then
en_up<='1';
opendoor<='0';
elsifuu_dd<"000100"anduu_dd/="000000"then
en_down<='1';
opendoor<='0';
endif;
else
ifk33='1'ordown33='1'then
k33<='0';
down33<='0';
opendoor<='1';
elsifuu_dd<"000100"anduu_dd/="000000"then
en_down<='1';
opendoor<='0';
elsifuu_dd>"000111"then
en_up<='1';
opendoor<='0';
endif;
endif;---------------------------------------
elsifg4='1'thenled<="1100110";
ifupdown='1'then
ifk44='1'orup44='1'then
k44<='0';
up44<='0';
opendoor<='1';
elsifuu_dd>"001111"then
en_up<='1';
opendoor<='0';
elsifuu_dd<"001000"anduu_dd/="000000"then
en_down<='1';
opendoor<='0';
endif;
else
ifk44='1'ordown44='1'then
k44<='0';
down44<='0';
opendoor<='1';
elsifuu_dd<"001000"anduu_dd/="000000"then
en_down<='1';
opendoor<='0';
elsifuu_dd>"001111"then
en_up<='1';
opendoor<='0';
endif;
endif;
elsifg5='1'thenled<="1101101";
ifupdown='1'then
ifk55='1'orup55='1'then
k55<='0';
up55<='0';
opendoor<='1';
elsifuu_dd>"011111"then
en_up<='1';
opendoor<='0';
elsifuu_dd<"010000"anduu_dd/="000000"then
en_down<='1';
opendoor<='0';
endif;
else
ifk55='1'ordown55='1'then
k55<='0';
down55<='0';
opendoor<='1';
elsifuu_dd<"010000"anduu_dd/="000000"then
en_down<='1';
opendoor<='0';
elsifuu_dd>"011111"then
en_up<='1';
opendoor<='0';
endif;
endif;
elsifg6='1'thenled<="1111101";
ifk66='1'ordown66='1'then
k66<='0';
down66<='0';
opendoor<='1';
elsifuu_dd<"100000"anduu_dd/="000000"then
en_down<='1';
opendoor<='0';
elseen_up<='0';en_down<='0';up<='0';updown<='0';
endif;
endif;
endif;
ifg6='1'thenup<='0';updown<='0';
endif;
ifg1='1'thendown<='0';updown<='0';
endif;
endprocess;
endone;
仿真结果:
图1仿真图1
图1状态为:
当up1被按下后,电梯门开启,door置为“10,”乘客进入电梯,电梯检测到超重,full置‘0’,alarm置‘1’发出警报,直到电梯不超载为止,full置‘1’,alarm置‘0’。
电梯内部乘客按下k5键(去五楼请求),电梯关门,door置为“00”,电机控制位up置“1”,电梯开始上升,与此同时,电梯状态指示ud置‘1’,表示上升。
传感器输入电梯所在楼层信号,用g1-g6表示,置‘1’表示电梯所在楼层。
在上升过程中,LED数码管显示电梯所在楼层数。
到达五楼时,up置‘0’,door置“10”。
由于六楼有下降请求,电梯继续上升接客。
接到客后,乘客按下k1,down置‘1’,电梯下行,到达一楼卸客后,关门待命。
实验体会:
在这次实课程设计中,我们虽然碰到了很多困难和问题,到最后还是靠自己的努力与坚持独立的完成了任务。
当遇到了自己无法解决的困难与问题的时候,还请教老师给予指导和帮助。
这次设计给我最深的印象就是扩大自己的知识面,了解更多与本专业有关的科技信息,与时代共同进步,才能在将来成为有用的科技人才,觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
参考文献:
[1]黄正巾,徐坚等.CPLD系统设计与应用[M].北京:
电子工业出版社,2002,110~123.
[2]蒋璇,臧春花.数字系统设计与PLD应用技术[M].北京:
电子工业出版社,2001,23~34.
[3]孟宪元.可编程ASIC集成数字系统[M].北京:
电子工业出版社,2003,231~243.
[4]潘松,王国栋.VHDL实用教程(修订版)[M].成都:
成都电子科技大学出版社,2002,45~87.
[5]宋万杰,罗丰,吴顺君.CPLD技术及其应用[M].西安:
西安电子科技大学出版社,2005,25~56.
[6]王锁萍.电子设计自动化(EDA)教程[M].成都:
成都电子科技大学出版社,2006,67~90.
[7]邱玉春.李文俊.VHDL系统设计[M].电子产品世界,2007,50~53.
[8]苏长赞.电梯设计与应用[M].北京:
人民邮电出版社,2008,76~91.
[9]楼然苗.CPLD设计指导[M].北京航空航天大学出版社,2007,223~225.
[10]彭为.数字系统设计[M].电子工业出版社,2006,61~71.
[11]吴国经.单片机应用技术[M].中国电力出版社,2004,112~131.
[12]戴佳.VHDL程序设计实例精讲[M].电子工业出版社,2007,88~92.
[13]朱清慧.VHDL教程.清华大学出版社[M].2008,201~210.
[14]何立民.EDA应用技术选编[M].北京:
北京航空航天大学出版社,2008,44~51.
[15]李华EDA实用接口技术[M].北京航空航天大学出版社2003,176~182.