基于FPGA芯片的电梯自动控制系统Word文件下载.docx
《基于FPGA芯片的电梯自动控制系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA芯片的电梯自动控制系统Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
2011051339
摘要:
本论文是基于FPGA的电梯控制器的研究,是电梯控制的核心技术,通过电梯控制器可以对电梯运行模式和状态进行全面的控制,这也是此次论文研究的重要性;
由于FPGA技术近些年来蓬勃发展,而且在很多领域已经应用的十分成熟,所以用FPGA可以实现对电梯精确、稳定、实时性控制,同时用于FPGA开发的芯片都是一些微处理器芯片,便于集成和智能化设计。
关键字:
FPGA;
VHDL;
电梯;
状态机
1设计目的
1.1设计背景
目前,电梯的设计、工艺不断提高,电梯的品种也逐渐增多,电梯的材质由黑白到彩色,样式由直式到斜式,在操纵控制方面更是步步出新:
手柄开关操纵、按钮控制、信号控制、集选控制、人机对话等;
多台电梯还出现了并联控制、智能群控;
双层轿箱电梯展示出节省井道空间,提升运输能力的优势,变速式自动人行道扶梯大大节省了行人的时间;
不同外形的电梯则使身处其中的乘客的视线不再封闭。
1.2设计要求
电梯的结构分为:
四大空间,八大系统;
四大空间:
机房部分、井道及地坑部分、轿厢部分、层站部分;
八大系统:
曳引系统、导向系统、轿厢、门系统、重量平衡系统、电力拖动系统、电气控制系统、安全保护系统;
电梯的功能结构决定电梯的八大应用技术:
⑴全数字识别乘客技术(所有乘客进入电梯前进行识别,其中包括眼球识别、指纹识别)
2数字智能型安全控制技术(通过乘客识别系统或者IC卡以及数码监控设备,拒绝外来人员进入)
3第四代无机房电梯技术(主机必须与导轨和轿厢分离,完全没有共振共鸣,速度可以达到2.0M/S以上,最高可以使用在30层以上。
)
4双向安全保护技术(双向安全钳、双向限速器,在欧洲必须使用,中国正在被普遍使用)
5快速安装技术(改变过去的电梯安装方法,能够快速组装)
6节能技术(采用节能技术,使电梯更节约能源)
7数字监控技术(完全采用计算机进行电梯监控与控制)
8无线远程控制及报警装置(当电梯产生故障时,电梯可以通过无线装置给手机发送故障信息,并通过手机发送信号对电梯进行简单控制。
本论文主要是控制电梯的运行模式和状态,对信号进行处理的模块,重点在对响应的信号进行处理,并将处理结果反馈给对应功能的控制端口,实现对电梯运行的全面控制。
2总体方案
电梯方向优先控制方式控制系统框图
2.1.论文研究的主要内容
本论文的电梯控制器所有的程序可以集成在一个FPGA开发芯片上面,不用在用其他功能的分立逻辑元件,达到集成度高、响应快、功耗低的特点。
本论文是基于FPGA的电梯控制器的研究,是电梯控制的核心技术,通过电梯控制器可以对电梯运行模式和状态进行全面的控制,这也是次论文的研究重要性;
电梯的层数为6层,本次论文采用模块化设计,主要分为四大模块:
时钟分频模块、按键处理模块、电梯运行控制模块、数码管显示模块。
由于FPGA技术近些年来蓬勃发展,而且在很多领域已经应用的十分成熟,用FPGA可以实现对电梯精确、实时性控制,而且用于FPGA开发的芯片都是一些微处理器芯片,便于集成和智能化设计,而且大大缩短了开发周期。
3.FPGA概述
FPGA(FieldProgrammableGateArry)即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点;
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输入输出模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
4.FPGA硬件体系结构
FPGA采用逻辑单元阵列(LCA,LogicCellArray)新概念,内部包括可配置逻辑模块(CLB,ConfigurableLogicBlock)、输入输出模块(IOB,InputOutputBlock)和内部互连资源(IR,InterconnectResources)三部分组成。
1可配置逻辑块(CLB,ConfigurableLogicBlock)是FPGA的主要组成部分,主要是由逻辑函数发生器、触发器、数据选择器等电路组成。
2输入输出模块(IOB,InputOutputBlock)提供了器件引脚和内部逻辑阵列之间的连接,主要是由输入触发器、输入缓冲器和输出触发、锁存器、输出缓冲器组成。
3可编程互连资源(IR,InterconnectResources)可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统,IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。
5.电梯控制器的工作原理
本次论文是实现6层电梯的运行控制,当在某一楼层按下上升或者下降请求按钮时,控制器响应该请求并控制电梯前往该楼层,当到达该楼层时,电梯开门,当进入电梯后,电梯关门,此时按下要到达的楼层按钮,控制器响应该请求并控制电梯前往该楼层,当到达前往楼层后,电梯开门,走出电梯,然后关门......,就这样往复的实现电梯的控制功能。
在电梯运行时遵循如下规则:
当电梯处于上升模式时,只响应比电梯所在位置高的上楼信号,由下至上依次执行;
直到最后一个上楼请求执行完毕,如有更高层有下楼请求时,则直接升到有下降请求的最高楼,然后进入下降模式,电梯处于下降模式时,则与上升相反。
电梯的输入信号主要包括外部输入信号和内部输入信号;
对于电梯外部输入信号主要有:
每一层电梯门外都有上升请求和下降请求按钮,其中一楼电梯门外只有上升请求按钮,6楼电梯门外只有下降请求按钮。
对于电梯内部输入信号主要有:
6个前往楼层的按钮、提前关门按钮、延时关门按钮、电梯异常按钮。
电梯输出信号也主要包括外部输出信号和内部输出信号;
对于电梯外部输出信号包括上升请求按钮和下降按钮指示信号、电梯当前所在楼层指示信号、电梯运行方向指示信号。
电梯内部输出信号包括6个前往楼层按钮指示信号、超重等警告指示信号、电梯当前所在楼层指示信号、电梯运行方面指示信号。
6.电梯控制系统的设计内容
本次论文是基于FPGA的电梯控制器的研究,是电梯控制的核心技术,通过电梯控制器可以对电梯运行模式和状态进行全面的控制,这也是次论文的研究重要性;
电梯的层数为6层,本次论文采用模块化设计方法,主要分为四大模块:
其方框原理图如下:
电梯控制器原理图
7.时钟分频模块
时钟分频模块功能是将系统频率分频为两种不同的频率,一个是2分频时钟供电梯运行控制模块使用,另一个8分频时钟供其他模块使用,其源代码如下:
时钟分频模块:
clkdiv.vhd
LibraryIeee;
UseIeee.Std_Logic_1164.All;
UseIeee.Std_Logic_unsigned.All;
//定义所用的标准库
Port(clk:
InStd_Logic;
//系统时钟频率
clk_2:
OutStd_Logic;
//2分频脉冲(作为电梯控制时钟)
clk_8:
OutStd_Logic//8分频脉冲(作为按键处理时钟)
);
//定义输入输出变量
Endclkdiv;
Signalcnt:
Std_Logic_Vector(7Downto0);
//定义一个8位的变量
BeginProcess(clk)//时钟分频进程
BeginIfclk'
eventandclk='
1'
Then//时钟脉冲上升沿有效
cnt<
=cnt+1;
clk_2<
=cnt
(1);
//变量cnt的第1位输出2分频
clk_8<
=cnt(4);
//变量cnt的第3位输出8分频
EndProcess;
Endone;
源程序编写完成后,进行调试、运行并生成模块文件,确认没有错误之后进行功能仿真、时序分析。
其模块原理图如下:
时钟分频模块原理图
8.电梯运行控制模块
电梯运行控制模块是此次设计的核心,电梯运行的模式和状的态控制效果完全取决于电梯控制模块,它的功能是在系统2分频时钟下,根据按键处理模块输出的信号,控制电梯上升与下降运行模式和状态,当电梯关门时输出相应的上升与下降清除信号,同时输出电梯当前所在楼层的数码管输出信号与电梯运行方向,本次是设计的6层电梯控制系统,在源程序中具体要体现一下功能:
1每层电梯(除1楼和6楼外,1楼只有上升请求按钮,6楼只有下降请求按钮)入口出设置有上升和下降请求按钮,电梯内部设有要到达楼层的请求按钮1-6楼。
2设有电梯所处位置数码管显示部分,电梯运行模式的LED显示部分。
3电梯能记忆电梯外部所有信号请求,并按照电梯运行规则进行顺序响应,每个电梯请求信号保留到电梯响应结束。
4电梯运行规则:
当电梯上升时候,只响应比电梯所在楼层高的上楼信号,由下到上依次执行,直到最后一个上升请求信号执行完毕,当电梯下降时候,只响应比电梯所在楼层低的下楼信号,由上到下依次执行,直到最后一下下降请求信号执行完毕。
电梯运行控制模块的源程序如下:
电梯运行控制模块:
elevator_run.vhd
UseIeee.Std_Logic_1164.All;
UseIeee.Std_Logic_Arith.All;
Entityelevator_runIs
Port(clk:
//电梯时钟
rst:
//异步置位按键
alarm:
inStd_Logic;
up_light:
inStd_Logic_Vector(6Downto1);
//电梯外部上升请求指示灯
down_light:
//电梯外部下降请求指示灯
inside_light:
//电梯内部楼层请求指示灯
position:
outintegerrange1to6;
//电梯位置变量
door_light:
//电梯门开关指示灯
clear_up:
outStd_Logic;
//用于清除上升请求指示灯信号
clear_down:
outStd_Logic//用于清除下降请求指示灯信号
delay:
//延时关门变量
advance:
//提前关门变量
updown_light:
BufferStd_Logic_Vector(7Downto0);
//电梯升降显示