电梯控制器实验报告.docx
- 文档编号:10056607
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:22
- 大小:129.29KB
电梯控制器实验报告.docx
《电梯控制器实验报告.docx》由会员分享,可在线阅读,更多相关《电梯控制器实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
电梯控制器实验报告
电子技术实验报告
——电梯控制器的设计与分析
班级:
姓名:
学号:
日期:
2016年6月25日
联系电话:
一.实验目的
电子技术专题实验是对“数字逻辑”课程内容的全面、系统的总结、巩固和提高的一项课程实践活动。
根据数字逻辑的特点,选择相应的题目,在老师的指导下,由学生独立完成。
目的是通过实验使学生掌握数字逻辑电路设计的基本方法和技巧,正确运用QuartusⅡ软件及实验室多功能学习机硬件平台,完成所选题目的设计任务,并掌握数字逻辑电路测试的基本方法,训练学生的动手能力和思维方法。
通过实验,一方面提高运用数字逻辑电路解决实际问题的能力,另一方面使学生更深入的理解所学知识,为以后的计算机硬件课程的学习奠定良好的基础。
二.项目设计概要
1.设计实现的目标
随着社会的发展,电梯的使用越来越普遍,已从原来只在商业大厦、宾馆使用,过渡到在办公楼、居民楼等场所使用,并且对电梯功能的要求也不断提高,相应地其控制方式也在不停地发生变化。
对于电梯的控制,传统的方法是使用继电器—接触器控制系统进行控制,随着技术的不断发展,微型计算机在电梯控制上的应用日益广泛,现在已进入全微机化控制的时代。
2.整体设计概述
电梯的微机化控制主要有以下几种形式:
①PLC控制;②单板机控制;③单片机控制;④单微机控制;⑤多微机控制;⑥人工智能控制。
随着EDA技术的快速发展,CPLD/FPGA已广泛应用于电子设计与控制的各个方面。
本设计就是使用一片CPLD/FPGA来实现对电梯的控制的
3.项目设计特点
我们在项目设计过程中采用模块化设计思想,事先制定了模块间的接口方案,使得整个系统的组合变得十分灵活。
由于我们在设计时为电子钟和秒表模块中都加入了显示电路,总控模块可分别与之连接组成一个分系统,便于调试。
在最终整合时,我们也只需要将两个模块中的显示电路合二为一即可。
三.系统设计方案
根据系统设计要求,并考虑到系统的可验证性,整个系统的输入输出接口设计如图1所示:
系统工作用2Hz基准时钟信号CLKIN,楼层上升请求键UPIN,楼层下降请求键DOWNIN,楼层选择键入键ST_CH,提前关门输入键CLOSE,延迟关门输入键DELAY,电梯运行的开关键RUN_STOP,电梯运行或停止指示键LAMP,电梯运行或等待时间指示键RUN_WAIT,电梯所在楼层指示数码管ST_OUT,楼层选择指示数码管DIRECT。
各输入端口的功能如下:
CLKIN:
基准时钟信号,为系统提供2Hz的时钟脉冲,上升沿有效;
UPIN:
电梯上升请求键。
由用户向电梯控制器发出上升请求。
高电平有效;
DOWNIN:
电梯下降请求键,由用户向电梯控制器发出下降请求。
高电平有效;
ST_CH[2..0]:
楼层选择键入键,结合DIRECT完成楼层选择的键入,高电平有效;
CLOSE:
提前关门输入键。
可实现无等待时间的提前关门操作,高电平有效;
DELAY:
延迟关门输入键。
可实现有等待时间的延迟关门操作,高电平有效;
RUN_STOP:
电梯运行或停止开关键。
可实现由管理员控制电梯的运行或停止,高电平有效。
一下为输出端口:
LAMP:
电梯运行或等待指示键,指示电梯的运行或等待状况。
高电平有效;
RUN_WAIT:
电梯运行或等待时间指示键,指示电梯运行状况或等待时间的长短,高电平有效;
ST_OUT:
电梯所在楼层指示数码管,只是电梯当前所在的楼层数。
即1~5层,高电平有效;
DIRECT:
楼层选择指示数码管,指示用户所要选择的楼层数,高电平有效。
1.系统功能模块设计示意图
2.项目分块及其实现方案
电梯的控制状态包括运行状态、停止状态及等待状态,其中运行状态又包含向上状态和向下状态。
主要动作有开、关门,停靠和启动。
乘客可通过键入开、关门按钮,呼唤按钮,指定楼层按钮等来控制电梯的行与停。
据此,整个电梯控制器DTKZQ应包括如下几个组成部分:
①时序输出及楼选计数器;②电梯服务请求处理器;③电梯升降控制器;④上升及下降寄存器;⑤电梯次态生成器。
该电梯控制器设计的关键是确定上升及下降寄存器的置位与复位。
整个系统的内部组成结构图如图2所示。
Vhdl程序:
--DTKZQ.VHD--显示电路
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYledIS
PORT(
LEDIN:
INSTD_LOGIC_VECTOR(2DOWNTO0);--输入信号
LEDOUT:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));--输出信号
ENDLED;
ARCHITECTUREARTOFLEDIS--结构体
BEGIN
PROCESS(LEDIN)
BEGIN
CASELEDINIS--共阴极LED显示译码gfedcba
WHEN"0000"=>ledout<="0111111";--0
WHEN"0001"=>ledout<="0000110";--1
WHEN"0010"=>ledout<="1011011";--2
WHEN"0011"=>ledout<="1001111";--3
WHEN"0100"=>ledout<="1100110";--4
WHEN"0101"=>ledout<="1101101";--5
WHEN"0110"=>ledout<="1111101";--6
WHEN"0111"=>ledout<="0000111";--7
WHEN"1000"=>ledout<="1111111";--8
WHEN"1001"=>ledout<="1101111";--9
WHEN"1010"=>ledout<="1110111";--10
WHEN"1011"=>ledout<="1111100";--11
WHEN"1100"=>ledout<="0111001";--12
WHEN"1101"=>ledout<="1011110";--13
WHEN"1110"=>ledout<="1111001";--14
WHEN"1111"=>ledout<="1110001";--15
WHENOTHERS=>ledout<="0000000";--其他情况时灯灭
ENDCASE;
ENDPROCESS;
ENDART;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYDTKZQIS
PORT(CLK:
INSTD_LOGIC;--2Hz时钟输入信号
UPIN:
INSTD_LOGIC;--楼层上升请求键
DOWNIN:
INSTD_LOGIC;--楼层下降请求键
ST_CH:
INSTD_LOGIC;--结合DIRECT完成楼层选择的键入
CLOSE:
INSTD_LOGIC;--提前关门输入键
DELAY:
INSTD_LOGIC;--延迟关门输入键
RUN_STOP:
INSTD_LOGIC;--电梯运行的开关键
LAMP:
OUTSTD_LOGIC;--电梯运行或停止指示键
RUN_WAIT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);--结合LAMP指示电梯运行或等待时间
ST_OUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);--电梯所在楼层指示数码管
DIRECT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));--楼层选择指示数码管
ENDENTITYDTKZQ;
ARCHITECTUREARTOFDTKZQIS
SIGNALUR,DR:
STD_LOGIC_VECTOR(16DOWNTO1);--上升或下降楼层请求寄存器
SIGNALDIR,LIFTOR:
INTEGERRANGE0TO15;--楼选指示及楼层数计数器
SIGNALWAI_T:
STD_LOGIC_VECTOR(2DOWNTO0);--运行或等待计数器
SIGNALDIVID,HAND,CLKIN:
STD_LOGIC;--时钟2分频和楼选复位变量
SIGNALLADD:
STD_LOGIC_VECTOR(1DOWNTO0);--电梯运行状态变量
SIGNALCLOSEX,DELAYX:
STD_LOGIC;--提前关门及延迟变量
BEGIN--内部信号值的输出
DIRECT<=CONV_STD_LOGIC_VECTOR(DIR,4)+1;
ST_OUT<=CONV_STD_LOGIC_VECTOR(LIFTOR,4)+1;
RUN_WAIT<='0'&WAI_T;
LAMP<=LADD
(1);
HAND<=WAI_T
(2)AND(NOTWAI_T
(1)ANDWAI_T(0));
CLOSEX<=CLOSEAND(NOTLADD
(1));
DELAYX<=DELAYAND(NOTLADD
(1));
--分频进程
P0:
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
CLKIN<=NOTCLKIN;
ENDIF;
ENDPROCESSP0;
--分频及楼选信号产生进程
P1:
PROCESS(CLKIN)
BEGIN
IF(CLKIN'EVENTANDCLKIN='1')THEN
DIVID<=NOTDIVID;
IF(DIR=4)THENDIR<=0;
ELSEDIR<=DIR+1;
ENDIF;
ENDIF;
ENDPROCESSP1;
--楼层请求寄存器的置位与复位进程
P2:
PROCESS(UR,DR,DIR,UPIN,DOWNIN,ST_CH,LIFTOR,WAI_T,RUN_STOP,HAND)
VARIABLENUM,T:
INTEGERRANGE0TO16;
BEGIN
NUM:
=LIFTOR+1;
T:
=DIR+1;
IF(RUN_STOP='1')THEN--电梯运行时选择楼层大于当前楼层或者有上升请求
IF(((T>NUM)AND(ST_CH='1'))OR(UPIN='1'))THEN
CASETIS
WHEN1=>UR
(1)<='1';
WHEN2=>UR
(2)<='1';
WHEN3=>UR(3)<='1';
WHEN4=>UR(4)<='1';
WHEN5=>UR(5)<='1';
WHEN6=>UR(6)<='1';
WHEN7=>UR(7)<='1';
WHEN8=>UR(8)<='1';
WHEN9=>UR(9)<='1';
WHEN10=>UR(10)<='1';
WHEN11=>UR(11)<='1';
WHEN12=>UR(12)<='1';
WHEN13=>UR(13)<='1';
WHEN14=>UR(14)<='1';
WHEN15=>UR(15)<='1';
WHEN16=>UR(16)<='1';
WHENOTHERS=>NULL;
ENDCASE;
--电梯运行时间到
ELSIF(HAND='1')THEN
CASENUMIS
WHEN1=>UR
(1)<='0';
WHEN2=>UR
(2)<='0';
WHEN3=>UR(3)<='0';
WHEN4=>UR(4)<='0';
WHEN5=>UR(5)<='0';
WHEN6=>UR(6)<='0';
WHEN7=>UR(7)<='0';
WHEN8=>UR(8)<='0';
WHEN9=>UR(9)<='0';
WHEN10=>UR(10)<='0';
WHEN11=>UR(11)<='0';
WHEN12=>UR(12)<='0';
WHEN13=>UR(13)<='0';
WHEN14=>UR(14)<='0';
WHEN15=>UR(15)<='0';
WHEN16=>UR(16)<='0';
WHENOTHERS=>NULL;
ENDCASE;
ENDIF;
--选择楼层小于当前楼层或者有下降请求
IF(((T CASETIS WHEN1=>DR (1)<='1'; WHEN2=>DR (2)<='1'; WHEN3=>DR(3)<='1'; WHEN4=>DR(4)<='1'; WHEN5=>DR(5)<='1'; WHEN6=>DR(6)<='1'; WHEN7=>DR(7)<='1'; WHEN8=>DR(8)<='1'; WHEN9=>DR(9)<='1'; WHEN10=>DR(10)<='1'; WHEN11=>DR(11)<='1'; WHEN12=>DR(12)<='1'; WHEN13=>DR(13)<='1'; WHEN14=>DR(14)<='1'; WHEN15=>DR(15)<='1'; WHEN16=>DR(16)<='1'; WHENOTHERS=>NULL; ENDCASE; --电梯运行时间到 ELSIF(HAND='1')THEN CASENUMIS WHEN1=>DR (1)<='0'; WHEN2=>DR (2)<='0'; WHEN3=>DR(3)<='0'; WHEN4=>DR(4)<='0'; WHEN5=>DR(5)<='0'; WHEN6=>DR(6)<='0'; WHEN7=>DR(7)<='0'; WHEN8=>DR(8)<='0'; WHEN9=>DR(9)<='0'; WHEN10=>DR(10)<='0'; WHEN11=>DR(11)<='0'; WHEN12=>DR(12)<='0'; WHEN13=>DR(13)<='0'; WHEN14=>DR(14)<='0'; WHEN15=>DR(15)<='0'; WHEN16=>DR(16)<='0'; WHENOTHERS=>NULL; ENDCASE; ENDIF; ELSE UR<="0000000000000000"; DR<="0000000000000000"; ENDIF; ENDPROCESSP2; --电梯运行次态的控制进程 P3: PROCESS(UR,DR,DIR,LIFTOR,LADD,WAI_T,RUN_STOP) BEGIN IF(RUN_STOP='1')THEN--电梯运行时 IF(WAI_T="110")THEN IF((URORDR)="0000000000000000")THEN LADD (1)<='0';--初始状态 ELSE CASELIFTORIS --电梯在第一层 WHEN0=>IF((UR (1)ORDR (1))>'0')THENLADD (1)<='0';--等待状态 ELSELADD<="11";--上升状态 ENDIF; --电梯在第二层 WHEN1=>IF((UR (2)ORDR (2))>'0')THENLADD (1)<='0';--等待状态 ELSIF(((LADD(0)='1')AND((UR(16DOWNTO3) ORDR(16DOWNTO3))>"00000000000000")) OR((UR (1)ORDR (1))='0'))THEN LADD<="11";--上升状态 ELSELADD<="10";--下降状态 ENDIF; --电梯在第三层 WHEN2=>IF((UR(3)ORDR(3))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO4) ORDR(16DOWNTO4))>"0000000000000")) OR((UR(2DOWNTO1)ORDR(2DOWNTO1))="00"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第四层 WHEN3=>IF((UR(4)ORDR(4))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO5) ORDR(16DOWNTO5))>"000000000000")) OR((UR(3DOWNTO1) ORDR(3DOWNTO1))="000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第五层 WHEN4=>IF((UR(5)ORDR(5))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO6) ORDR(16DOWNTO6))>"00000000000")) OR((UR(4DOWNTO1) ORDR(4DOWNTO1))="0000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第六层 WHEN5=>IF((UR(6)ORDR(6))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO7) ORDR(16DOWNTO7))>"0000000000")) OR((UR(5DOWNTO1) ORDR(5DOWNTO1))="00000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第七层 WHEN6=>IF((UR(7)ORDR(7))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO8) ORDR(16DOWNTO8))>"000000000")) OR((UR(6DOWNTO1) ORDR(6DOWNTO1))="000000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第八层 WHEN7=>IF((UR(8)ORDR(8))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO9) ORDR(16DOWNTO9))>"00000000")) OR((UR(7DOWNTO1) ORDR(7DOWNTO1))="0000000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第九层 WHEN8=>IF((UR(9)ORDR(9))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO10) ORDR(16DOWNTO10))>"0000000")) OR((UR(8DOWNTO1) ORDR(8DOWNTO1))="00000000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第十层 WHEN9=>IF((UR(10)ORDR(10))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO11) ORDR(16DOWNTO11))>"000000")) OR((UR(9DOWNTO1) ORDR(9DOWNTO1))="000000000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第十一层 WHEN10=>IF((UR(11)ORDR(11))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO12) ORDR(16DOWNTO12))>"00000")) OR((UR(10DOWNTO1) ORDR(10DOWNTO1))="0000000000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第十二层 WHEN11=>IF((UR(12)ORDR(12))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO13) ORDR(16DOWNTO13))>"0000")) OR((UR(11DOWNTO1) ORDR(11DOWNTO1))="00000000000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第十三层 WHEN12=>IF((UR(13)ORDR(13))>'0')THENLADD (1)<='0'; ELSIF(((LADD(0)='1')AND((UR(16DOWNTO14) ORDR(16DOWNTO14))>"000")) OR((UR(12DOWNTO1) ORDR(12DOWNTO1))="000000000000"))THENLADD<="11"; ELSELADD<="10"; ENDIF; --电梯在第十四层 WHEN13=>IF((UR(14)ORDR(14))>'0')THENLADD (1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电梯 控制器 实验 报告