EDA课程设计 - 电梯控制器 - 图文

更新时间:2024-04-19 22:28:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《电子设计自动化(EDA)技术》课程设计报告 题目: 电梯控制系统设计

姓 名: 院 系: 专 业: 学 号: 指导教师:

完成时间:

目 录

一、 课程设计题目、内容与要求 …………………………………4 1.1 设计内容…………………………………………………… 4 1.2 具体要求…………………………………………………… 4

二、 系统设计 ………………………………………………………4 2.1 设计思路…………………………………………………… 4 2.2 系统原理(包含:框图等阐述)与设计说明等内容

三、系统实现 ……………………………………………………… 5 注:此部分阐述具体实现,包含主要逻辑单元、模块、源代码等内容

四、系统仿真 ……………………………………………………… 12

五、硬件验证(操作)说明…………………………………………15

六、总结 …………………………………………………………… 16

七、参考书目 ……………………………………………………… 17

设计题目 电梯控制系统 1.电梯入口处设有上下请求开关各1个,电梯内设有乘客到达层次的数字开关。电梯当前所在的楼层位置用一位数码管显示,用一只发光二极管显示开门/关门状态,用发光二极管显示每层的上下请求状态;2.显示电梯当前所处位置和电梯上行下行及开关门状态;3.电梯到达有停靠站请求的楼层后,电梯门就会自动打开门指示灯亮,开门3秒钟设计要求 后,电梯门自动关闭并继续运行;4.对电梯开门时间可以提前关门(按关门按钮);5.能记忆电梯内外的所有请求信号,并按照电梯运行的规则次第响应,每个请求信号保留至执行后撤除,如到达某层后,上下方均无请求,则电梯停在该层,中止运行。 设计过程 (包括:设计方案、上机设计与仿真结果、硬件实验方案及实验结果、收获和体会) 附后 成绩评定 指导教师评语 课程设计等级

一、课程设计题目、内容与要求

1.1课程设计内容-电梯控制系统

采用EDA-VHDL语言建模电梯控制系统,实现电梯的功能需求。在实验操作平台MAXPLUSII和实验箱(主芯片EPM7096LC68-7)上完成系统的仿真。

1.2电梯系统控制设计要求

(1).每层电梯入口处设有上下请求开关各1个,电梯内设有乘客到达层次的数字开关。

电梯当前所在的楼层位置用一位数码管显示,用一只发光二极管显示开门/关门状态,用发光二极管显示每层的上下请求状态; (2).显示电梯当前所处位置和电梯上行下行及开门,关门状态;

(3).电梯到达有停靠站请求的楼层后,电梯门就会自动打开门指示灯亮,开门3秒钟后; (4).电梯门自动关闭(开门指示灯灭)电梯继续运行; (5).对电梯开门时间可以提前关门(按关门按钮);

(6).能记忆电梯内外的所有请求信号,并按照电梯运行的规则次第响应,每个请求信号保留至执行后撤除,如到达某层后,上下方均无请求,则电梯停在该层,中止运行。

二、系统设计

2.1设计思路

该设计采用方向优先控制方式方案,方向优先控制是指电梯运行到某一楼层时先考虑这一楼层是否有请求:有 ,则停止;无,则继续前进。停下来后再启动时的步骤:考虑前方——上方或下方是否有请求:有,则继续前进;无,则停止;检测后方是否有请求,有请求则转向运行,无请求则维持停止状态。

2.2 系统原理(包含:框图等阐述)与设计说明等内容

电梯控制器系统由系统时钟,楼层请求,故障清除,关门中断,超载,提前关门,信号存储,状态存储,中央处理器,电梯升降停,门开关停,楼层显示,请求信号显示,超载故障报警部分组成。如图1和如图2所示

图2 电梯控制系统电路图

三、系统实现

(1)外部数据高速采集模块设计

有效的对外部信号采集、处理要求电梯控制器对外部请求信号的实时、准确采集准确、实时的捕捉楼层到达信号;有防止楼层到达信号、外部请求信号的误判。 (2)信号存储模块

电梯控制器的请求输入信号有18个(电梯外有6个上升请求和6个下降请求的用户输入端口,电梯内有6个请求用户输入端口),由于系统对内、外请求没有设置优先级,各楼层的内、外请求信号被采集后可先进行运算,再存到存储器内。 (3)基于FPGA的中央处理模块

中央数据处理模块是系统的核心,通过对存储的数据(含请求、到达楼层等信号)进行比较、判断以驱动系统状态的流转。电梯工作过程中共有9种状态:等待、上升、下降、开门、关门、停止、休眠、超载报警以及故障报警状态。一般情况下,电梯工作起始点是第一层,起始状态是等待状态,启动条件是收到上升请求。系统的状态流程图如图3所示:

-

图3 系统状态流程图

(4)源程序 library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity dianti is

port ( clk : in std_logic; --时钟信号(频率为2Hz)

full,deng,quick,clr : in std_logic;--超载、关门中断、提前关门清除报警信号 c_u1,c_u2,c_u3,c_u4,c_u5: in std_logic; --电梯外人的上升请求信号 c_d2,c_d3,c_d4,c_d5,c_d6 : in std_logic; --电梯外人的下降请求信号 d1,d2,d3,d4,d5,d6 : in std_logic; --电梯内人的请求信号

g1,g2,g3,g4,g5,g6 : in std_logic; --到达楼层信号 door : out std_logic_vector(1 downto 0); --电梯门控制信号 led : out std_logic_vector(6 downto 0); --电梯所在楼层显示 led_c_u:out std_logic_vector(5 downto 0); --电梯外人上升请求信号显示 led_c_d:out std_logic_vector(5 downto 0); --电梯外人下降请求信号显示 led_d : out std_logic_vector(5 downto 0); --电梯内请求信号显示

wahaha : out std_logic; --看门狗报警信号

ud,alarm : out std_logic; --电梯运动方向显示,超载警告信号

up,down : out std_logic ); --电机控制信号和电梯运动

end dianti;

architecture behav of dianti is

signal d11,d22,d33,d44,d55,d66:std_logic; --电梯内人请求信号寄存信号 signal c_u11,c_u22,c_u33,c_u44,c_u55:std_logic; --电梯外人上升请求信号寄存信号 signal c_d22,c_d33,c_d44,c_d55,c_d66:std_logic; --电梯外人下降请求信号寄存信号 signal q:integer range 0 to 1; --分频信号

signal q1:integer range 0 to 6; --关门延时计数器 signal q2:integer range 0 to 9; --看门狗计数器

signal dd,cc_u,cc_d,dd_cc:std_logic_vector(5 downto 0); --电梯内外请求信号寄存器 signal opendoor:std_logic; --开门使能信号

signal updown:std_logic; --电梯运动方向信号寄存器 signal en_up,en_dw:std_logic; --预备上升、预备下降预操作使能信号

begin process(clk)

begin

if clk'event and clk='1' then

if clr='1' then q1<=0;q2<=0;wahaha<='0'; --清除故障报警 elsif full='1' then alarm<='1'; q1<=0; --超载报警

if q1>=3 then door<=\ else door<=\

end if;

elsif q=1 then q<=0;alarm<='0';

if q2=3 then wahaha<='1'; --故障报警

else

if opendoor='1' then door<=\开门操作 elsif en_up='1' then --上升预操作 if deng='1' then door<=\关门中断 elsif quick='1' then q1<=3; --提前关门 elsif q1=6 then door<=\;updown<='1';up<='1'; --关门完毕,电梯进入上升状态 elsif q1>=3 then door<=\电梯进入关门状态 else q1<=q1+1;door<=\电梯进入等待状态

end if;

elsif en_dw='1' then --下降预操作

if deng='1' then door<=\

elsif quick='1' then q1<=3;

elsif q1=6 then door<=%updown<='0';down<='1';

elsif q1>=3 then door<=\

else q1<=q1+1;door<=\

end if;

end if;

if g1='1' then led<=\电梯到达1楼,数码管显示1 if d11='1' or c_u11='1' then d11<='0'; c_u11<='0';opendoor<='1';

--有当前层的请求,则电梯进入开门状态

elsif dd_cc>\

--有上升请求,则电梯进入预备上升状态

elsif dd_cc=\then opendoor<='0'; --无请求时,电梯停在1楼待机

end if;

elsif g2='1' then led<=\ --电梯到达2楼,数码管显示2 if updown='1' then --电梯前一运动状态位上升 if d22='1' or c_u22='1' then d22<='0'; c_u22<='0'; opendoor<='1';

--有当前层的请求,则电梯进入开门状态

elsif dd_cc>\

--有上升请求,则电梯进入预备上升状态

elsif dd_cc<\

--有下降请求,则电梯进入预备下降状态

end if; --电梯前一运动状态为下降

elsif d22='1' or c_d22='1' then d22<='0'; c_d22<='0';opendoor<='1'; --有当前层的请求,则电梯进入开门状态

elsif dd_cc<\

--有下降请求,则电梯进入预备下降状态

elsif dd_cc>\

--有上升请求,则电梯进入预备上升状态

end if;

elsif g3='1' then led<=\电梯到达3楼,数码管显示3

if updown='1' then

if d33='1' or c_u33='1' then d33<='0'; c_u33<='0';opendoor<='1';

elsif dd_cc>\ elsif dd_cc<\

end if;

elsif d33='1' or c_d33='1' then d33<='0'; c_d33<='0'; opendoor<='1';

elsif dd_cc<\ elsif dd_cc>\

end if;

elsif g4='1' then led<=\电梯到达4楼,数码管显示4

if updown='1' then

if d44='1' or c_u44='1' then d44<='0'; c_u44<='0'; opendoor<='1';

elsif dd_cc>\ elsif dd_cc<\

end if;

elsif d44='1' or c_d44='1' then d44<='0'; c_d44<='0'; opendoor<='1';

elsif dd_cc<\ elsif dd_cc>\

end if;

elsif g5='1' then led<=\电梯到达5楼,数码管显示5

if updown='1' then

if d55='1' or c_u55='1' then d55<='0'; c_u55<='0';opendoor<='1';

elsif dd_cc>\

elsif dd_cc<\

end if;

elsif d55='1' or c_d55='1' then d55<='0'; c_d55<='0';opendoor<='1';

elsif dd_cc<\ elsif dd_cc>\

end if;

elsif g6='1' then led<=\电梯到达6楼,数码管显示6 if d66='1' or c_d66='1' then d66<='0'; c_d66<='0';opendoor<='1';

elsif dd_cc<\

end if;

else en_up<='0';en_dw<='0'; --电梯进入上升或下降状态

end if; end if;

else q<=1;alarm<='0'; --清除超载报警

if d1='1' then d11<=d1; --对电梯内人请求信号进行检测和寄存

elsif d2='1' then d22<=d2; elsif d3='1' then d33<=d3; elsif d4='1' then d44<=d4; elsif d5='1' then d55<=d5; elsif d6='1' then d66<=d6;

end if;

if c_u1='1' then c_u11<=c_u1; --对电梯外人上升请求信号进行检测和寄存

elsif c_u2='1' then c_u22<=c_u2; elsif c_u3='1' then c_u33<=c_u3; elsif c_u4='1' then c_u44<=c_u4;

elsif c_u5='1' then c_u55<=c_u5;

end if;

if c_d2='1' then c_d22<=c_d2; --对电梯外人下降请求信号进行检测和寄存

elsif c_d3='1' then c_d33<=c_d3; elsif c_d4='1' then c_d44<=c_d4; elsif c_d5='1' then c_d55<=c_d5; elsif c_d6='1' then c_d66<=c_d6;

end if;

dd<=d66&d55&d44&d33&d22&d11; --电梯内人请求信号并置 cc_u<='0'&c_u55&c_u44&c_u33&c_u22&c_u11; --电梯外人上升请求信号并置 cc_d<=c_d66&c_d55&c_d44&c_d33&c_d22&'0'; --电梯外人下降请求信号并置 dd_cc<=dd or cc_u or cc_d; --电梯内、外人请求信号进行综合

end if;

ud<=updown; --电梯运动状态显示 led_d<=dd; --电梯内人请求信号显示 led_c_u<=cc_u; --电梯外人上升请求信号显示 led_c_d<=cc_d; --电梯外人下降请求信号显示

end if;

end process; end behav;

四、电梯系统仿真程序仿真

注:1. 电梯停在一楼时,接受到请求信号c_d3、c_d2、c_u4和d6,并把请求信号写入相应的寄存器。led显示电梯所在楼层;led_d、led-c_u和led_c_d显示用户的请求。 2. 电梯经过准备上升状态后,进入上升状态,到达2楼,3楼时,不停继续前进。

3. 电梯上升到4楼时,响应请求(c_u4),开门载客;进入预备上升状态。

电梯控制程序仿真局部放大图-1

注:1. 电梯上升到6楼时,响应请求(d_6),开门卸客;进入预备下降状态。 2. 电梯下降经过5楼,4楼都不停,到达3楼开门卸客,电梯进入预备下降状态。

电梯控制程序仿真局部放大图-2

注:1. 电梯到达3楼时,响应请求(c_d3),开门载客;进入预备下降状态。

2. 电梯在预备下降状态下,电梯应超载(full='1'),发出超载警报alarm;超载信号

消失(full='0'),电梯重新进入预备下降状态。 3. 电梯接受到提前关门信号quick,电梯跳过关门等待时间。仿真图中q1从1跳到3;

进入关门状态。 4. 电梯接受到deng、c_d3和d3电梯重新进入预备下降状态,并且c_d3和d3信号都

可以对q2(q2<3时)进行清零处理。 5. 当连续的关门中断的次数超过3次时,不认为是出自乘客的需要,而认为是故障,

并报警,等技术员处理完故障时,用clr信号才可以清除报警。

电梯控制程序仿真局部放大图-3

注:1. 电梯排除故障后继续运行。

2. 电梯执行完所有请求时电梯将停在1楼待机。

电梯控制程序仿真局部放大图-4

五、硬件验证(操作)说明

1. 2. 3. 4. 5. 6. 7.

FILE---NEW—TEXT EDTOR FILE SAVE AS---COMPILER

MAXPLUSII—WAVEFORM EDITOR—SAVE AS ASSIGN—DEVICE

ASSIGN—PIN/LOCATION/CHIP MAXPLUSII—SIMULATOR MAXPLUSII--PROGRAMMER

六、课程设计总结

七.参考书目

[1]《电子技术基础模拟部分》(第四版),康华光主编,高教出版社 [2]《数字电子技术基础》(第四版),阎石主编,高教出版社 [3]《PLD与数字系统设计》,李辉主编,西安电子科技大学出版社

[4]《CPLD数字电路设计》,廖裕评,陆瑞强主编,清华大学出版社

本文来源:https://www.bwwdw.com/article/du2p.html

Top