三层电梯控制电路word文档良心出品.docx
《三层电梯控制电路word文档良心出品.docx》由会员分享,可在线阅读,更多相关《三层电梯控制电路word文档良心出品.docx(12页珍藏版)》请在冰豆网上搜索。
三层电梯控制电路word文档良心出品
三层电梯控制电路设计
1.
求开关。
2.
3.
4.
.设计要求
每层电梯入口处设有上下请求开关,电梯内设有顾客到达层次的停站请
设有电梯入口处位置指示装置及电梯运行模式(上升或下降)指示装置。
电梯每秒升(降)一层楼。
电梯到达有停站请求的楼层,经过1秒电梯门打开,开门指示灯亮,开门4秒后,电梯门关闭(开门指示灯灭),电梯继续进行,直至执行完最后一个请求信号后停留在当前层。
5.能记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号保留至执行后消除。
6.
只响应比电梯所在位置高的上
如果咼层有
电梯运行规则一当电梯处于上升模式时,
楼请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;下楼请求,则相反。
7.电梯初始状态为一层开门状态。
2.设计目的
VHDL语言
通过对三层
电梯控制器是控制电梯按顾客要求自动上下的装置。
本文采用来设计实用三层电梯控制器,其代码具有良好的可读性和易理解性电梯控制器的设计,可以发现本设计有一定的扩展性,而且可以作为更多层电梯控制器实现的基础。
3.控制器的设计方案.
控制器的功能模块如图1所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。
乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。
分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。
由于分控制器相对简单很多,所以主控制器是核心部分。
图1.电梯控制器原理图
4.三层电梯控制器的结构体设计
首先说明一下状态。
状态机设置了lO个状态,分别是电梯停留在l层(stoponI)、开门(dooropen)、关门(doorclose)、开门等待第1秒(doorwaitl)、开门等待第2秒(doorwait2)、开门等待第3秒(doorwait3)、开门等待第4秒(doorwait4)、上升(up)、下降(down)和停止(stop)。
在实体说明定义完端口之后,在结构体architecture和begin之间需要有如下的定义语句,来定义状态机。
在结构体中,设计了俩个进程互相配合,一个是状态机进程作为主要进程,另外一个是信号灯控制进程作为辅助进程。
状态机进程中的很多判断条件是以信号灯进程产生的信号灯信号为依据的,而信号灯进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。
在状态机进程中,在电梯的上升状态中,通过对信号灯的判断,决定下一个状态是继续上升还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止;在电梯停止状态中,判断是最复杂的,通过对信号的判断,决定电梯是上升、下降还是停止。
点阵显示楼
本设计需要完成的任务是编写VHDL弋码来模拟现实中的三层电梯工作。
在点阵上显示电梯所在的楼层,当其它楼层有上或下的请求信号时,表示该楼层上或下的绿色或黄色指示灯亮,电梯开始上或下运行,当到达该楼层时,表示该楼层上或下的绿色或黄色指示灯灭,表示到达该楼层的红色指示灯亮,层数,红色指示灯灭。
五.vhdl源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
architecturebehaveofelevatorissignalstate1,state3:
std_logic;
signal
signal
signal
signalcounter
state2u,state2d:
std_logic;doorflag:
std_logic;udflag,runflag:
std_logic;--upanddownflag,runflag
dcount
:
std_logic_vector(2downto0);--displayendif;
if(k3='0'anddoor3='0')thenstate3<='1';
d3<='1';
elsif(location=2andwcount=0)thend3<='0';
if(doorcount=1020)thenstate3<='0';
endif;
endif;
endif;
endprocess;
process(clk)
begin
if(clk'eventandclk='1')thenif(location=0)then--display1col1<="00000001";col2<="00100001";col3<="01111111";col4<="11111111";col5<="00000001";col6<="00000001";
elsif(location=1)then--display2col1<="01100011";col2<="11100111";col3<="10001101";col4<="10011001";col5<="11110011";col6<="01100111";
elsif(location=2)then--display3col1<="01000010";col2<="11011011";col3<="10011001";col4<="10011001";col5<="11111111";col6<="01100110";
endif;
endif;
endprocess;
process(clk)--accumulatedcountbegin
if(clk'eventandclk='1')thendcount<=dcount+1;
endif;
endprocess;
process(clk)
begin
if(clk'eventandclk='1')then
sa<=dcount(0);
sb<=dcount
(1);
sc<=dcount
(2);
casedcountis
when"111"=>display<="00000000";
whenothers=>displayv="OOOOOOOO";endcase;
endif;
endprocess;
thisprocess,a,b,c,d,e,f,ganddotwilloutput
process(clk)--In
begin
if(clk'eventandclk='1')then
rO<=display(7);
r7<=display(O);
endif;
endprocess;endbehave;
注释:
1.
本程序设计调用了IEEE库,IEEE库是VHDL设计中最为常用的库,它包含有IEEE标准的程序包和其他一些支持工业标准的程序包。
本设计采用了STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_UNSIGNED程序包。
:
>
d状态机进程(主聲进程「I
结构体
结束
信号灯控剧进
程(辅助进程)
图2.三层电梯控制器的vhdi描述
2.以关键词ENTITY引导,ENDENTITYthreeflift结尾的语句部分,称为实体。
VHDL的实体描述了电路器件的外部情况及各信号端口的基本性质。
本设计
定义了关于三层电梯控制器用到的各类时钟、异步复位按键、信号灯指示、电梯的请求。
端口模式主要就是IN、BUFFER、OUT端口。
及定义了各端口信号的数据类型,主要是STD_LOGIC(标准逻辑位数据类型)、INTEGER(整数类型)、STD_LOGIC_VECTOR(标准逻辑矢量数据类型)。
这些都满足上面调用的IEEE库中的程序包。
3.以关键词ARCHITECTURE弓|导,ENDARCHITECTUREa结尾的语句部分,称为结构体。
结构体负责描述电路器件的内部逻辑功能或电路结构。
本设计
定义了10个状态。
描述了在三层电梯中出现的各种可能的情况作为控制电梯的主要进程。
信号灯控制作为辅助进程。
三层电梯控制器模块原理图
图3.三层电梯控制器模块原理图
七.三层电梯控制器的仿真模块
1.下图所示仿真的是在第二层电梯外部有上升请求,也就是f2upbuttton信
号的一个脉冲,可以看到电梯从一层上升到二层,Position信号由1变到2,
doorlight信号‘1'表示开门,‘0'表示关门。
当乘客进入电梯以后,在电梯内部要求上升到第三层,也就是stop3button产生一个脉冲,电梯上升到第3层,
开门4秒以后关门,停留在第三层,position最后的值为3。
在仿真图中看不到buttonclk,只显示为一条黑色的线,是因为采用了频率较大的时钟。
再看fuplight信号灯,当二层有上升请求的时候,它的值由0变到2。
(注意
fuplight和fdnlight是3位的二进制向量,这里的2代表“010”,表示二层有请求;“100”也就是4,表示三层有请求)。
当电梯停留到第二层以后,表明该请求被响应,所以它的值变为0,由于没有下降请求信号,所以fdnlight信号灯的值一盲都为O。
-■*
PMH評
*ner*ihi
a*MM>4h
图4.有上升请求的仿真波形.
2.是有下降请求的情况,它是图4的继续,当电梯停留在第三层的时候,
在电梯外第二层有下降请求,这时候fdnlight信号灯由0变为2,说明第二层有
下降请求。
电梯下降到第二层,响应了下降请求,所以fdnlight信号灯清0。
这
时候,在电梯内部没有停留在哪层的请求,所以电梯就停留在第二层,position
2。
信号的值保持在
图5.有下降请求的仿真波形
3.同时有上升和下降请求信号时,电梯的运行情况如图6所示。
图6仿真
的情况是,原先电梯停留在第一层,这时候电梯外第三层有下降请求,电梯上升到第三层,乘客进入电梯以后要求下降到一层,与此同时,在电梯外第二层有上升请求,电梯首先要响应下降请求然后再响应这个上升请求,所以电梯得先下降
到一层,然后再上升到第二层来,这是符合常理的。
从仿真的波形看,电梯的位置变化和想象是一致的。
电梯的运行情况完全正确。
最后乘客在电梯内部要求上升到三层,所以电梯最后的停留位置为三层。
卩iw;uifwimnwiH!
I:
i卩血flnw■师Twin顽丽UUi丽而丽H——__
图6.有上升和下降请求信号时的仿真波形
4.
图7所示的仿真,原先电梯停留在第一层,电梯外第三层有下降请求,电梯上升到三层,乘客进入电梯以后要求下降到一层,此时,二层有下降请求,接着又有上升请求,电梯首先在二层停留。
然后下降到一层。
随后要响应二层上升请求,上升到二层,乘客进入电梯以后要求上升到三层,所以电梯最后的停留位置在三层。
图7.复杂情况下请求信号的仿真波形
设计的扩展性
在本设计中,因为考虑了扩展性,所以在信号定义的时候就使用了二进制的向量,而不是整数。
在设计方法上也做了特殊的设计,所以使得扩展性较好。
如果要实现n层电梯的控制,首先在端口的地方就要加入所有的按键,而指示灯
只要把向量中的3改成n就可以了。
同时需要在按键控制进程里加入其他按键触发指示灯的语句。
在电梯的升降状态将3改成n,在电梯的开门状态中将2改成n一1,在关门状态,将position=3改成position=n,关键是修改position=2的咅E
分,如果按照每层罗列,将十分烦琐,所以得寻求各层判断条件的共性,解决方法之一就是,新建一个全局向量one为std—logic—veoter(ndownto3)应改写成0,然后和stoplight与fuplight向量比较,如果有更高层次的请求,那么stoplight或fuplight向量,如果stoplight和fuplight向量都小于one向量,表示没有更高层次的内部上升请求,此时将fdnlight向量和one向量比较,如果大于,则表示高层有下降要求,电梯得上升。
如果没有任何请求信号,则电梯停止,否则电梯下降。
如此就可以大大简化程序,但是要注意的是one向量必须实时更新,以作为判断依据,可以另外写一个进程,用buttonclk来触发。
九.总结
经过这次设计,基本上实现了预期目的,但是也存在一些不足,有待改进,但总体上还是成功的。
它不仅巩固了我们所学习的课本知识,还提高了我们的动手能力。
在这次设计过程中发现了很多问题,同时也发现了自身的不足,感谢老师和同学对我们的帮助,我会努力克服何在正自己的弱点,希望以后做的更好。