EDA3层电梯控制系统.docx
- 文档编号:25125158
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:16
- 大小:280.97KB
EDA3层电梯控制系统.docx
《EDA3层电梯控制系统.docx》由会员分享,可在线阅读,更多相关《EDA3层电梯控制系统.docx(16页珍藏版)》请在冰豆网上搜索。
EDA3层电梯控制系统
一、设计要求:
要求用FPGA设计实现一个3层电梯的控制系统。
系统的要求如下:
<1)电梯运行规则:
当电梯处在上升模式时,只响应比电梯所在位置高的上楼请求,由下向上逐个执行,直到最后一个上楼请求执行完毕。
如果高层有下楼请求,直接升到有下楼请求的最高楼层,然后进入下降模式。
当电梯处在下降模式时,工作方式与上升模式相反。
设电梯共有3层,每秒上升或下降一层。
b5E2RGbCAP
<2)电梯初始状态为一层,处在开门状态,开门指示灯亮。
<3)一层电梯入口处设有上楼请求开关,二层电梯入口处设有上、下楼请求开关,三层电梯入口处设有下楼请求开关,电梯内部设有乘客到达楼层的停站请求开关及其显示。
p1EanqFDPw
<4)设置电梯所处位置指示及电梯上升或下降指示。
(5>电梯到达有停站请求的楼层后,电梯门打开,开门指示灯亮。
开门4s后,电梯门开关闭,开门指示灯灭,电梯继续运行,直至执行完最后一请求信号后停在当前层。
DXDiTa9E3d
<6)电梯控制系统能记忆电梯内外的请求信号,并按照电梯运行规则工作,每个请求信号执行完毕后随即清除。
一、设计方案和论证
1.控制器的设计方案
控制器的功能模块如图1所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。
乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。
分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。
由于分控制器相对简单很多,所以主控制器是核心部分。
RTCrpUDGiT
2.三层电梯控制器的设计思路
电梯控制器采用状态机来实现,思路比较清晰。
可以将电梯等待的每秒钟以及开门、关门都看成一个独立的状态。
由于电梯又是每秒上升或下降一层,所以就可以通过一个统一的1秒为周期的时钟来触发状态机。
根据电梯的实际工作情况,可以把状态机设置10个状态,分别是“电梯停留在第1层”、“开门”、“关门”、“开门等待第1秒”、“开门等待第2秒”、“开门等待第3秒”、“开门等待第4秒”、“上升”、“下降”和“停止状态”。
各个状态之间的转换条件可由上面的设计要求所决定。
5PCzVD7HxA
二、三层电梯控制器的综合设计
2.三层电梯控制器的实体设计
首先考虑输入端口,一个异步复位端口reset,用于在系统不正常时回到初始状态;在电梯外部,必须有升降请求端口,一层是最低层,不需要有下降请求,三层是最高层,不需要有上升请求,二层则上升、下降请求端口都有;在电梯的内部,应该设有各层停留的请求端口:
一个电梯时钟输入端口,该输入时钟以1秒为周期,用于驱动电梯的升降及开门关门等动作;另有一个按键时钟输入端口,时钟频率比电梯时钟高。
jLBHrnAILg
其次是输出端口,有升降请求信号以后,就得有一个输出端口来指示请求是否被响应,有请求信号以后,该输出端口输出逻辑‘l’。
被响应以后则恢复逻辑‘O’;同样,在电梯内部也应该有这样的输出端口来显示各层停留是否被响应;在电梯外部,需要一个端口来指示电梯现在所处的位置;电梯开门关门的状态也能用一个输出端口来指示;为了观察电梯的运行是否正确,可以设置一个输出端口来指示电梯的升降状态。
xHAQX74J0X
2.三层电梯控制器的结构体设计
首先说明一下状态。
状态机设置了lO个状态,分别是电梯停留在l层(stoponl>、开门(dooropen>、关门(doorclose>、开门等待第1秒(doorwaitl>、开门等待第2秒(doorwait2>、开门等待第3秒(doorwait3>、开门等待第4秒(doorwait4>、上升(up>、下降(down>和停止(stop>。
在实体说明定义完端口之后,在结构体architecture和begin之间需要有如下的定义语句,来定义状态机。
LDAYtRyKfE
TYPElift_stateIS
(stoponl,dooropen,doorclose,doorwaitl,doorwait2,doorwait3,door。
wait4,up,down,stop>:
Zzz6ZB2Ltk
SIGNALmylift:
lift_state:
在结构体中,设计了俩个进程互相配合,一个是状态机进程作为主要进程,另外一个是信号灯控制进程作为辅助进程。
状态机进程中的很多判断条件是以信号灯进程产生的信号灯信号为依据的,而信号灯进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。
dvzfvkwMI1
在状态机进程中,在电梯的上升状态中,通过对信号灯的判断,决定下一个状态是继续上升还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止;在电梯停止状态中,判断是最复杂的,通过对信号的判断,决定电梯是上升、下降还是停止。
rqyn14ZNXI
在信号灯控制进程中,由于使用了专门的频率较高的按键时钟,所以使得按键的灵敏度增大,但是时钟频率不能过高,否则容易使按键过于灵敏。
按键后产生的点亮的信号灯(逻辑值为‘1’>用于作为状态机进程中的判断条件,而clearup和cleardn信号为逻辑‘l’使得相应的信号灯熄灭。
EmxvxOtOco
3.三层电梯控制器VHDL设计
三层电梯控制器的VHDL描述模块流程如图2所示。
三层电梯控制器的源代码(见附录>可知:
(1>本程序设计调用了IEEE库,IEEE库是VHDL设计中最为常用的库,它包含有IEEE标准的程序包和其他一些支持工业标准的程序包。
本设计采用了STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_UNSIGNED程序包。
SixE2yXPq5
(2>以关键词ENTITY引导,ENDENTITYthreeflift结尾的语句部分,称为实体。
VHDL的实体描述了电路器件的外部情况及各信号端口的基本性质。
本设计定义了关于三层电梯控制器用到的各类时钟、异步复位按键、信号灯指示、电梯的请求。
端口模式主要就是IN、BUFFER、OUT端口。
及定义了各端口信号的数据类型,主要是STD_LOGIC(标准逻辑位数据类型>、INTEGER(整数类型>、STD_LOGIC_VECTOR(标准逻辑矢量数据类型>。
这些都满足上面调用的IEEE库中的程序包。
6ewMyirQFL
(3>以关键词ARCHITECTURE引导,ENDARCHITECTUREa结尾的语句部分,称为结构体。
结构体负责描述电路器件的内部逻辑功能或电路结构。
本设计定义了lO个状态。
描述了在三层电梯中出现的各种可能的情况作为控制电梯的主要进程。
信号灯控制作为辅助进程。
kavU42VRUs
4.三层电梯控制器的模块
三、三层电梯控制器的仿真模块
模块(一>:
图4所示仿真的是在第二层电梯外部有上升请求,也就是f2upbuttton信号的一个脉冲,可以看到电梯从一层上升到二层,position信号由1变到2,doorlight信号‘1’表示开门,‘0’表示关门。
当乘客进入电梯以后,在电梯内部要求上升到第三层,也就是stop3button产生一个脉冲,电梯上升到第3层,开门4秒以后关门,停留在第三层,position最后的值为3。
在仿真图中看不到buttonclk,只显示为一条黑色的线,是因为采用了频率较大的时钟。
y6v3ALoS89
再看fuplight信号灯,当二层有上升请求的时候,它的值由0变到2。
(注意fuplight和fdnlight是3位的二进制向量,这里的2代表“010”,表示二层有请求;“100”也就是4,表示三层有请求>。
当电梯停留到第二层以后,表明该请求被响应,所以它的值变为0,由于没有下降请求信号,所以fdnlight信号灯的值一盲都为O。
M2ub6vSTnP
模块(二>:
图5是有下降请求的情况,它是图4的继续,当电梯停留在第三层的时候,在电梯外第二层有下降请求,这时候fdnlight信号灯由0变为2,说明第二层有下降请求。
电梯下降到第二层,响应了下降请求,所以fdnlight信号灯清0。
这时候,在电梯内部没有停留在哪层的请求,所以电梯就停留在第二层,position信号的值保持在2。
0YujCfmUCw
模块(三>:
同时有上升和下降请求信号时,电梯的运行情况如图6所示。
图6仿真的情况是,原先电梯停留在第一层,这时候电梯外第三层有下降请求,电梯上升到第三层,乘客进入电梯以后要求下降到一层,与此同时,在电梯外第二层有上升请求,电梯首先要响应下降请求然后再响应这个上升请求,所以电梯得先下降到一层,然后再上升到第二层来,这是符合常理的。
从仿真的波形看,电梯的位置变化和想象是一致的。
电梯的运行情况完全正确。
最后乘客在电梯内部要求上升到三层,所以电梯最后的停留位置为三层。
eUts8ZQVRd
模块(四>:
图7所示的仿真,原先电梯停留在第一层,电梯外第三层有下降请求,电梯上升到三层,乘客进入电梯以后要求下降到一层,此时,二层有下降请求,接着又有上升请求,电梯首先在二层停留。
然后下降到一层。
随后要响应二层上升请求,上升到二层,乘客进入电梯以后要求上升到三层,所以电梯最后的停留位置在三层。
sQsAEJkW5T
四、vhdl程序整体设计
附加功能:
1.显示开门时间2.当电梯在5秒内无任何请求时电梯自动下降到一楼并停在一楼。
根据电梯控制系统的设计要求,除了具备两个时钟信号CLK,一个是电梯时钟信号,另一个是按键时钟信号。
以外,还应该定义输入信号和输出信号。
输入信号定义如下:
系统复位信号:
RESET,高电平有效;
电梯入口处一层、二层的上楼请求开关:
F1UPBUTTION、F2UPBUTTION;
电梯入口处二层、三层的下楼请求开关:
F2DNBUTTION、F3DNBUTTION;
电梯内部到达楼层的停站请求开关:
STOPlBUTTION、STOP2BUTTION、STOP3BUTTION。
所有输入信号的规定为:
输入信号等于1,表示有请求,信号等于0,表示无请求。
输出信号定义如下:
电梯外部上升和下降请求指示灯:
UPLIGHT和DOWNLIGHT,这些信号与F1UPBUTTION、F2UPBUTTION、F2DNBUTTION、F3DNBUTTION信号相对应;
电梯内部乘客到达楼层的停站请求灯:
STOPLIGHT,该信号与STOPlBUTTION、STOP2BUTTION、STOP3BUTTION信号相对应;
电梯运行模式指示:
UDSIG,1代表下降模式,0代表上升模式;
电梯所在楼层指示:
POSITION,表示电梯在对应楼层;
电梯门状态指示:
DOORLIGHT,1表示开门,0表示关门。
程序设计
1.三层电梯控制器的实体设计
首先考虑输入端口,一个复位端口RESET,用于系统不正常时回到初始状态;在电梯外部必须有升降请求端口,一层不需要有下降请求,三层不需要有上升请求,二层则上升下降请求端口都有;在电梯内部应该有各层的停止请求按钮;一个电梯时钟输入端口,以1秒为周期,用于驱动电梯的上升,下降。
开门以及关门动作;另外一个按键时钟输入端口,频率要比电梯的高得多在这里要64HZ。
其次是输出端口,有升降请求信号以后,就得有一个输出端口指示是否被响应,同样,在电梯内部也应该有输出端口来显示各层停留是否响应。
在电梯外部需要一个端口来显示电梯所在的位置,电梯开门,关门状态也要用一个端口来显示;为了观察电梯的升降状态,也要有一个端口来指示电梯的升降状态。
最后还要显示开门时间,就要有一个端口来输出。
GMsIasNXkA
2.三层电梯的控制器设计
首先说明一下状态。
状态机设计了10个状态,分别是电梯停留在一层 在结构体中,设计两个进程互相配合,一个是状态机进程的主要进程,另一个是信号灯控制进程作为补助的进程。 状态机进程中的很多判断条件是以信号灯进程产生的信号为依据的,而信号灯进程中信号的熄灭又是以状态机进程中传出的CLEARUP,CLEARDN信号来控制的。 在状态机进程中,在电梯上升状态中,通过对信号灯的判断,决定下一个状态是继续还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止。 在信号灯控制进程中,由于使用了专门的频率比较高的按键时钟,所以按键灵敏度增大,但是时钟频率不能太高,否则容易按键过于灵敏。 按下按键后产生的点亮的信号灯用于作为状态机进程中判断条件,而CLEARUP和CLEARDN信号为逻辑‘1’时相应的信号灯熄灭。 根据电梯的状态变化画出它的状态流程图如附件1 3.程序的编写和调试 通过1和2详细分析,已经清楚的弄清程序的基本结构,输入输出端口,还有最重要的状态机变化。 所以就可以编写程序了,通过多次的排错和纠正错误,调出最终的程序。 详细的源程序和相应的注释在附件2 下载程序到GW48实验箱验证 附件2: 源程序 LIBRARYIEEE。 USEIEEE.STD_LOGIC_1164.ALL。 USEIEEE.STD_LOGIC_UNSIGNED.ALL。 USEIEEE.STD_LOGIC_ARITH.ALL。 ----------------------------------------------------------------------------------------输入输出口定义 ENTITYTHREEFLIFTIS PORT(BUTTONCLK: INSTD_LOGIC。 LIFTCLK: INSTD_LOGIC。 QZSBUTTON: INSTD_LOGIC。 RESET: INSTD_LOGIC。 F1UPBUTTON: INSTD_LOGIC。 ------------------------------------------一楼上升请求 F2UPBUTTON: INSTD_LOGIC。 --------------------------------------------二楼上升请求 F2DNBUTTON: INSTD_LOGIC。 ------------------------------------二楼下降请求 F3DNBUTTON: INSTD_LOGIC。 ----------------------------------三楼下降请求 FUPLIGHT: BUFFERSTD_LOGIC_VECTOR(3DOWNTO1>。 -------------------上升指示灯 FDNLIGHT: BUFFERSTD_LOGIC_VECTOR(3DOWNTO1>。 -----------------下降指示灯 STOP1BUTTON,STOP2BUTTON,STOP3BUTTON: INSTD_LOGIC。 STOPLIGHT: BUFFERSTD_LOGIC_VECTOR(3DOWNTO1>。 posITION: BUFFERINTEGERRANGE1TO3。 TIMELIGHT: BUFFERINTEGERRANGE0TO4。 ---------------------------开门时间显示灯 DOORLIGHT: OUTSTD_LOGIC。 UDSIG: BUFFERSTD_LOGIC>。 --------------下降指示灯 ENDTHREEFLIFT。 ----------------------------------------------------------------------- ARCHITECTUREARTOFTHREEFLIFTIS TYPELIFT_STATEIS----------------------------------------十个状态的定义 (STOPON1,DOOROPON,DOORCLOSE,DOORWAIT1,DOORWAIT2,DOORWAIT3,DOORWAIT4, UP,DOWN,STOP>。 SIGNALMYLIFT: LIFT_STATE。 SIGNALCLEARUP: STD_LOGIC。 ------------------用于清除上升请求信号 SIGNALCLEARDN: STD_LOGIC。 ---------------用于清除下降请求信号 SIGNALSTOP1: STD_LOGIC。 ------------用于电梯自动下到一楼 BEGIN CTRLIFT: PROCESS(RESET,LIFTCLK> VARIABLEpos: INTEGERRANGE3DOWNTO1。 VARIABLETIM: INTEGERRANGE5DOWNTO0。 ----------------用于检测电梯5秒内无任何请求 BEGIN IFRESET='1'THEN----------------------------------初始化时 MYLIFT<=STOPON1。 CLEARUP<='0'。 CLEARDN<='0'。 TIM: =0。 ELSE----------------------------------正常运行时 IFLIFTCLK'EVENTANDLIFTCLK='1'THEN CASEMYLIFTIS WHENSTOPON1=> DOORLIGHT<='1'。 posITION<=1。 pos: =1。 mylift<=doorwait1。 whendoorwait1=> TIMELIGHT<=1。 MYLIFT<=DOORWAIT2。 WHENDOORWAIT2=> CLEARUP<='0'。 CLEARDN<='0'。 TIMELIGHT<=2。 MYLIFT<=DOORWAIT3。 WHENDOORWAIT3=> MYLIFT<=DOORWAIT4。 TIMELIGHT<=3。 WHENDOORWAIT4=> MYLIFT<=DOORCLOSE。 TIMELIGHT<=4。 WHENDOORCLOSE=> DOORLIGHT<='0'。 TIMELIGHT<=0。 -------------------------------------------------------------------电梯在关门状态下执行 IFUDSIG='0'THEN IFposITION=3THEN IFSTOPLIGHT="000"ANDFDNLIGHT="000"ANDFUPLIGHT="000"THEN UDSIG<='1'。 MYLIFT<=DOORCLOSE。 ELSEUDSIG<='1'。 TIM: =0。 MYLIFT<=DOWN。 ENDIF。 ELSIFposITION=2THEN IFSTOPLIGHT="000"ANDFDNLIGHT="000"ANDFUPLIGHT="000"THEN UDSIG<='0'。 TIM: =TIM+1。 MYLIFT<=DOORCLOSE。 IFTIM=5THENSTOP1<='1'。 TIM: =0。 ----------------------------若5秒内无任何请求电梯下到一楼 ELSESTOP1<='0'。 ENDIF。 ELSIF STOPLIGHT(3>='1'OR(STOPLIGHT(3>='0'ANDFDNLIGHT(3>='1'>THEN UDSIG<='0'。 MYLIFT<=UP。 TIM: =0。 ELSEUDSIG<='1'。 MYLIFT<=DOWN。 TIM: =0。 ENDIF。 --------- ELSIFposITION=1THENTIM: =0。 STOP1<='0'。 IFSTOPLIGHT="000"ANDFDNLIGHT="000"ANDFUPLIGHT="000"THEN UDSIG<='0'。 MYLIFT<=DOORCLOSE。 ELSEUDSIG<='0'。 MYLIFT<=UP。 ENDIF。 ENDIF。 ------------------------------------------------------------------------ ELSIFUDSIG<='1'THEN IFposITION=1THENTIM: =0。 STOP1<='0'。 IFSTOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN UDSIG<='0'。 MYLIFT<=DOORCLOSE。 ELSEUDSIG<='0'。 TIM: =0。 MYLIFT<=UP。 ENDIF。 ELSIFPOSITION=2THEN IF STOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN UDSIG<='1'。 TIM: =TIM+1。 MYLIFT<=DOORCLOSE。 IFTIM=5THENSTOP1<='1'。 TIM: =0。 ELSESTOP1<='0'。 ----------------------------若5秒内无任何请求电梯下到一楼 ENDIF。 ELSIFSTOPLIGHT(1>='1'OR(STOPLIGHT(1>='0'ANDFUPLIGHT(1>='1'>THEN UDSIG<='1'。 MYLIFT<=DOWN。 TIM: =0。 ELSEUDSIG<='0'。 MYLIFT<=UP。 TIM: =0。 ENDIF。 ELSIFposITION=3THEN IFSTOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN UDSIG<='1'。 TIM: =TIM+1。 MYLIFT<=DOORCLOSE。 IFTIM=5THENSTOP1<='1'。 TIM: =0。 ----------------------------若5秒内无任何请求电梯下到一楼 ELSESTOP1<='0'。 ENDIF。 ELSEUDSIG<='1'。 TIM: =0。 MYLIFT<=DOWN。 ENDIF。 ENDIF。 IFSTOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN TIM: =TIM+1。 ELSETIM: =0。 IFTIM=2THEN IFPOSITION=1THEN TIM: =0。 ELSETIM: =0。 STOP1<='1'。 ENDIF。 ENDIF。 ENDIF。 ENDIF。 --------------------------------------------------------------------当电梯在上升状态时执行 WHENUP=> posITION<=posITI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA3 电梯 控制系统