三层电梯控制系统的设计
三层电梯PLC控制系统设计

宁波理工学院自动控制原理题目三层电梯PLC控制系统设计组员学号班级电子信息工程111班指导老师孙林军一.三层电梯系统控制要求:(1)当轿厢停在一楼时,如果三楼有呼叫,则轿厢直接上升到三楼;如果二楼有呼叫,则轿厢直接上升到二楼;如果二楼和三楼同时有呼叫,则先上升到二楼再到三楼。
(2)当轿厢停在三楼时,如果一楼有呼叫,则轿厢直接下降到一楼;如果二楼有呼叫,则轿厢直接下降到二楼;如果二楼和一楼同时有呼叫,则先下降到二楼再到一楼。
(3)当轿厢停在二楼时,如果一楼有呼叫,则轿厢直接下降到一楼;如果三楼有呼叫,则轿厢直接上升到三楼;如果三楼和一楼同时有呼叫,要看电梯运行方向,原来电梯下行则轿厢先下降到一楼再上升到三楼;原电梯上行,则轿厢先上升到三楼再下降到一楼。
(4)当轿厢停在每一层楼时,停3S后开门,开门6S后关门,再停2S后继续运行。
(5)轿厢运行期间不能开门,轿厢不关门不允许运行。
二.根据以上要求,可分为轿厢上/下行电机、电梯门开/关电机A、电梯门开/关电机B、电梯门开/关电机C等控制对象建立要求表。
(1) 轿厢上/下行电机,控制要求如下图:控制对象轿厢上/下行电机控制方式按下楼层开关,电机启动;轿厢到达指定楼层则电机停止工作条件一楼、二楼、三楼电梯门关闭(2) 电梯门开/关电机A,控制要求如下图:控制对象电梯门开/关电机A控制方式轿厢停在一楼层,3S后启动,启动1S后停止;停止6S后启动,启动1S后停止工作条件(1)轿厢到达一楼层(2)轿厢上/下行电机停止(3) 电梯门开/关电机B,控制要求如下图:控制对象电梯门开/关电机B控制方式轿厢停在一楼层,3S后启动,启动1S后停止;停止6S后启动,启动1S后停止工作条件(1)轿厢到达二楼层(2)轿厢上/下行电机停止(4) 电梯门开/关电机C,控制要求如下图:控制对象电梯门开/关电机C控制方式轿厢停在一楼层,3S后启动,启动1S后停止;停止6S后启动,启动1S后停止工作条件(1)轿厢到达三楼层(2)轿厢上/下行电机停止三.I/O地址分配总表输入继电器中间继电器输出继电器地址功能地址功能地址功能I0.2 一楼呼叫按钮 M20.0 启动电梯到三楼停止 Q4.6 一楼呼叫显示I0.1 二楼呼叫按钮 M20.1 启动电梯到二楼停止 Q4.5 二楼呼叫显示I0.0 三楼呼叫按钮 M20.2 启动电梯到一楼停止 Q4.4 三楼呼叫显示I1.0 开门按钮M0.7 电梯(停止/运行) Q4.3 电梯关门I1.1 关门按钮T1 电梯停止3s后开门Q4.2 电梯开门I0.5 一楼平层开关 T2 电梯停止6s后开门Q4.1 电梯下行I0.4 二楼平层开关 T3 电梯关门2s后运行Q4.0 电梯上行I0.3 三楼平层开关四.电控箱五.程序的编制(1)楼层显示程序如下所示程序段1:一层楼层显示程序段2:二层楼层显示程序段3:三层楼层显示(2)楼层呼叫程序如下所示程序段1:电梯状态变量读入程序段2:一层请求保存,到达停止时请求清除程序段3:二层请求保存,到达停止时请求清除程序段4:三层请求保存,到达停止时请求清除程序段5:电梯变量更新(3)轿厢停止控制程序如下所示程序段1:读入楼层输入和保存楼层请求状态变量程序段2:满足停止条件时停止电梯(4)轿厢上/下行方向控制程序如下图所示程序段1:保存楼层请求、楼层开关状态读入程序段2:当前楼层为1层,方向切换上行程序段3:当前楼层为3层,方向切换上行程序段4:当前楼层为2层且原来上行程序段5:当前楼层为2层且原来下行(5)轿厢开/关门控制程序如下图所示程序段1:自动开门程序段2:手动开门程序段3:自动关门程序段4:手动关门(6)组织管理控制程序如下图所示程序段1:楼层请求程序段2:轿厢停止控制程序段3:轿厢上行/下行程序段4:楼层显示教师评语:。
PLC三层电梯课程设计--- 三层电梯控制系统的设计

名称:三层电梯控制系统的设计目录1.课程设计目的 (1)2.课程设计题目和要求 (1)2.1设计题目 (1)2.2控制要求 (1)3.设计内容 (1)3.1PLC的构成 (1)3.2电梯模型PLC控制系统设计 (1)3.3I/O地址分配 (3)3.4I/O接线图 (4)3.5电梯的控制系统设计 (5)3.5.1电梯控制系统实现的功能 (5)3.5.2电梯操作方式 (6)3.5.3控制系统流程图 (9)3.6控制系统梯形图 (10)4.设计总结 (10)参考书目 (10)1.课程设计目的(1)通过对工程实例的模拟,熟练的掌握PLC的编程和程序调试方法。
(2)进一步熟悉PLC的I/O连接。
(3)熟悉水塔水位控制的编程方法。
2.课程设计题目和设计方案2.1设计题目水塔水位控制2.2设计方案3.水塔水位自动控制系统设计3.1水泵电动机控制电路的设计给排水工程中常用三相异步电动机,水泵上的电动机一般都是单向旋转有以下控制。
在水塔水位检测系统中通过水位传感器检测实际水位高度,当水位低于最低水位时间向PLC发出信息启动水泵,经过4分钟检测水塔水位是否提高控制水泵的工作,当水位达到最高水位时间时向PLC发出信息控制信息停止水泵工作。
供水系统的基本原理如图所示,水位闭环调节原理是:通过在水塔中的水位传感器,将水位置变换为电流信号进入PLC,执行较后程序,通过水泵的开关对水塔的水位进行自动控制。
3.2 电梯模型PLC控制系统设计由于电梯的运行是根据楼层和轿厢的呼叫信号、行程信号进行控制,而楼层和轿厢的呼叫是随机的,因此,系统控制采用随机逻辑控制。
即在以顺序逻辑控制实现电梯的基本控制要求的基础上,根据随机的输入信号,以及电梯的相应状态适时的控制电梯的运行。
另外,轿厢的位置是由脉冲编码器的脉冲数确定,并送PLC的计数器来进行控制。
同时,每层楼设置一个接近开关用于检测系统的楼层信号。
为便于观察,对电梯的运行方向以及电梯所在的楼层进行显示,采用LED 和发光管显示,而对楼层和轿厢的呼叫信号以指示灯显示(开关上带有指示灯)。
plc三层电梯控制设计

plc三层电梯控制设计
PLC三层电梯控制系统是指利用PLC(可编程逻辑控制器)将基础元件联合在一起,实现对电梯运行的自动控制。
PLC三层电梯控制设计主要包括硬件系统和软件系统两部分。
一、硬件系统
PLC三层电梯控制硬件系统包括电梯物理设施、控制面板、按钮、PLC主控板、输出板、驱动板等。
其中,电梯物理设施包括电梯轿厢、电梯轿厢门、电梯井道、电梯轿厢平移系统、电梯传感器、电梯限位器等。
控制面板则是用户与电梯系统之间的接口,可以对电梯
进行调控。
按钮则是为了控制电梯的运行,可在轿厢内和轿厢外设置。
PLC主控板是整个
系统的核心部分,负责控制电梯的启动和停止。
输出板和驱动板分别用于控制电机和门锁
的运行。
PLC三层电梯控制软件系统主要包括自动模式和手动模式。
自动模式是指电梯按照预
先设定的路线和规则,自动完成运行任务。
手动模式则是由用户自行操作,控制电梯的运行。
软件系统设计的过程需要遵循以下几步:
1、需求分析
在软件设计前,需要对电梯的运行需求进行详细的分析,包括电梯所处的环境、电梯
的使用人群、电梯的路线规划等。
2、系统设计
根据需求分析的结果,设计PLC的控制逻辑,确定PLC的输入输出状态。
例如,当用
户按下楼层按钮时,PLC将检测到并向电机输出信号,使电梯开始运行。
3、程序编写
接着,将PLC控制逻辑翻译成程序语言,例如LD语言或FBD语言,并将其上传至PLC 中。
4、测试调试
最后,进行测试调试,验证PLC控制逻辑的正确性和系统的可靠性。
三层电梯控制设计

三层电梯控制设计电梯在现代城市生活中扮演着重要的角色,能够方便人们的上下楼。
为了确保电梯的顺畅运行,我们需要设计一个可靠的电梯控制系统。
在本文中,我将详细介绍一个三层电梯控制的设计。
一、系统概述三层电梯控制系统设计的主要目标是确保电梯在运行过程中的安全性和效率。
系统主要由电梯控制器、按钮面板、电梯门控制器、电梯驱动器和楼层传感器等组成。
当乘客按下按钮选择目标楼层时,电梯控制器负责处理指令,控制电梯按照最佳路径运行。
二、系统主要功能1.楼层传感器:安装在每个楼层的传感器可以感知人们是否在该楼层等候电梯。
2.按钮面板:每个楼层都有一个按钮面板,供乘客选择上行或下行方向并选择目标楼层。
3.电梯门控制器:控制电梯门的开关。
当乘客进入或离开电梯时,门会自动开闭。
4.电梯控制器:负责处理乘客的请求,并选择最佳路径和运行方式。
它还负责监测电梯的运行状态以及检测故障。
5.电梯驱动器:根据电梯控制器的指令来控制电梯的运行。
它可以控制电梯的速度、加速度和减速度。
三、系统设计1.状态机设计采用状态机设计可以实现电梯的有序运行。
电梯控制器可以有多个状态,包括停止、运行、开门和关门等。
根据各种条件,电梯控制器可以通过状态转换来实现电梯的优化调度。
2.请求处理当乘客按下按钮选择目标楼层时,按钮面板会发送信号给电梯控制器。
电梯控制器根据当前状态和请求方向来决定是否停靠并接收乘客。
3.电梯调度电梯控制器根据乘客的请求,选择最佳路径来优化电梯的调度。
通过考虑乘客的等候时间、电梯的运行速度和当前楼层等因素,可以实现电梯的高效调度。
4.安全控制为了确保乘客的安全,在电梯的运行过程中需要考虑各种安全措施。
比如,在电梯上设置重载保护装置,当电梯承载超过额定负荷时,电梯控制器会自动停止并发出警报。
5.故障检测电梯控制系统中应当包含故障检测机制,以及时识别电梯的故障状态并采取相应的措施。
比如,当发现电梯的速度超过安全范围或者电梯门无法正常打开或关闭时,电梯控制器应当停止电梯并发出警报。
PLC课程设计(三层电梯控制系统)

PLC课程设计(三层电梯控制系统)系统介绍本篇文档将介绍一个基于PLC的三层电梯控制系统,包括系统的架构、PLC程序设计及硬件实现。
系统架构三层电梯控制系统由三部分组成:电梯控制器、上行电梯和下行电梯。
系统的架构如下图所示:+--------------+| || 控制器(PLC)+----> 上行电梯| |+--------------+||+----------> 下行电梯PLC程序设计状态图PLC程序设计基于电梯的状态图,如下所示:+--------------------++------>| 开门状态 |<-------------+| +--------------------+ || ^ || | |+------------+ +------------+ +----------------+ | 初始状态 |---->| 运行状态 |------->| 初始状态 | +------------+ +------------+ +----------------+ | | || v || +--------------------+ |+-------| 关门状态 |--------------++--------------------+在初始状态下,电梯处于停止状态。
当有请求时,电梯进入运行状态,前往相应楼层。
当到达楼层时,电梯进入开门状态,然后回到初始状态。
如果超过一段时间后没有操作(如10秒),电梯进入关门状态,然后返回初始状态。
PLC程序PLC程序设计与状态图密切相关,如下:M0 --> 延时10秒 --> M1 --> M2| | || v |+---------------> 开门 <---+M3 上行楼层 | 下行楼层| | || v |+------------------运行----+M0~M3是输入信号,表示控制器接收到的外部信号。
三层电梯PLC控制系统的设计DOC

毕业设计说明书课题名称三层电梯PLC控制系统的设计与调试系别____________专业_________________班级_____________________姓名____________________学号_____________指导教师_______________起讫时间:(共_4_周)目录绪论 (1)摘要 (2)第一章可编程控制器的慨述 (3)1.1可编程控制器(PLC)的概述 (3)1.1.1可编程序控制器(PLC)简介 (3)1.1.2 PLC的产生与发展 (3)1.1.3 PLC的发展趋势 (4)1.2 PLC与其他控制系统的比较 (4)1.2.1 PLC与继电器控制系统的比较 (4)1.2.2 PLC与微机的比较 (5)1.3 PLC在电梯行业的应用与发展 (6)第二章电梯的控制系统的设计与调试 (7)2.1电梯的分类 (7)2.2电梯的组成 (7)2.3电梯的工作原理 (8)2.4电梯控制系统及要求 (8)2.5电梯控制程序的设计 (9)2.6、三层电梯PLC控制梯形图 (9)2.7、指令与句表 (12)2.9调试 (13)1. 模拟调试 (14)2. 现场运行调试 (14)小结 (15)参考文献: (16)绪论1引言可编程控制器是采用微机技术的通用工业自动化装置,近几年来,在国内已得到迅速的推广普及。
PLC正改变着工厂自动化控制的面貌,对传统产业的技术改造,发展新型工业具有重大的实际意义。
PLC从诞生到今,有30年的历史,早期的可编程控制器主要用来代替继电器实现逻辑控制。
可以说只有可编程控制器才是真正的工业控制计算机,它是专门为工业环境设计的控制装置,和其他的自动化控制设备相比,具有的可靠性能高,抗干扰能强,便于安装和维护等突出特点,一般不需要采取什么特殊措施,就可以直接在工业环境中使用,更加适合工业现场的要求。
把可编程控制器和变频器结合起来使用,控制的精度更好,也更准,能根据人为的要求实现多种功能。
三层电梯PLC控制系统设计

三层电梯PLC控制系统设计目录第1章PLC的选择及其控制系统的设计 (3)1.1 PLC工作原理 (3)1.2 PLC控制电梯的优点 (3)1.3 基于PLC的电梯设计 (4)1.3.1硬件设计 (4)1.3.2软件设计 (6)第2章系统软件开发 (8)2.1 系统软件开发的过程 (8)2.1.1开关门控制 (8)2.1.2楼层信号显示 (10)2.1.3 轿内与厅外召唤的登记与消除 (11)2.1.4 电梯的定向 (12)2.1.5 停车信号的产生 (12)2.1.6 制动减速信号的产生 (12)2.1.7 电梯启动加速、稳速运行与停车制动环节 (13)2.1.8 报警系统 (13)结论 (14)第1章 PLC的选择及其控制系统的设计1.1 PLC工作原理PLC是一种工业计算机,其工作原理是建立在计算机工作原理基础上的,CPU采用分时操作方式来处理各项任务,即每一时刻只能处理一件事情,程序的执行是按照顺序依次执行。
这种分时操作过程称为PLC对程序的扫描,扫描一次所用的时间称为扫描周期。
运行时,逐条地解释用户程序,并加以执行。
程序中的数据并不直接来自输入或输出模块的接口,而是来自数据寄存器区,该区域中的数据在输入采样和输出锁存时周期性地不断刷新。
PLC的扫描工作过程大致可以分为3个阶段:输入采样、用户程序执行和输出刷新3个阶段,如下图所示。
在整个运行期间,PLC的CPU以一定的扫描速度重复执行上述3个阶段。
(1)输入采样阶段在输入采样阶段,PLC首先扫描所有输入端子,再依次地读入所有输入状态和数据,并将它们存入输入寄存器中。
此时,输入寄存器被刷新。
输入采样结束后,转入用户程序执行和输出刷新阶段。
在这两个阶段中,即使输入状态和数据发生变化,输入寄存器中相应单元的状态和数据也不会改变。
因此,如果输入是脉冲信号,则该脉冲信号的宽度必须大于一个扫描周期,才能保证在任何情况下,该输入均能被读入。
(2)用户程序执行阶段输入采样阶段的输入信号被刷新后,送入程序执行阶段。
毕业设计三层电梯PLC控制系统设计

摘要随着科学技术和社会经济的发展,高层建筑已成为现代城市的标志。
电梯作为垂直运输工具,承载着大量的人流和物流的输送,在建筑物中起着至关重要的作用。
采用可编程控制器对电梯进行控制,通过合理的选择和设计,能够有效地提高电梯的控制水平,使电梯的控制达到比较理想的控制效果。
本文设计一个三层电梯控制系统,基于西门子S7-200PLC实现。
在介绍电梯结构的基础上,重点分析了三层电梯的控制要求以及电梯控制系统设计中如何用PLC实现控制系统,编制梯形图,并完成程序的调试,利用QSPLC-III型实验装置的电梯模块对三层电梯控制系统进行仿真实验。
关键词:电梯西门子可编程控制器调试仿真实验AbstractWith the development of science and technology and social economy development,high-rise buildings have become the hallmark of modern cities.As a vertical transportation equipment,a lot of people bear the transportantion and logistics,its role a very important part in building . Using Programmable Controller totrol the elevater .can improve the reliability and enable the elevator control to achieve an ideal effect, through the reasonable selection and design.So the effect of control is more ideal.This paper use Siemens S7-200 PLC to design a 3-storied elevator control system.Based on the introduction of the elevater's basic structure,expatiates the control request of elevator and analyzes how to use the PLC to program controlling process,edit ladder diagram and debug the program,And use the elvator module on QSPLC-III experimental equipment to do simulation experiment.Keywords:Elevator Siemens PLC Debug simulation experiment目录第1章绪论 (1)1.1 设计背景 (1)1.2 PLC在电梯控制系统中的重要意义 (1)1.3 电梯技术发展前景 (3)1.4 论文的主要容 (4)第2章电梯控制系统概述 (4)2.1 电梯的起源与发展 (4)2.2 电梯的结构和组成 (6)2.3 电梯的保护装置 (8)2.4 电梯的工作原理 (9)第3章PLC简介 (9)3.1 PLC的产生与发展 (9)3.2 PLC的用途及特点 (13)3.3 PLC的硬件组成 (15)3.4 PLC的工作原理 (18)第4章控制系统总体设计 (20)4.1 控制要求分析 (20)4.2 硬件设计 (20)4.3 软件设计 (26)第5章控制系统仿真 (33)5.1 编程软件简介 (33)5.2 实验装置简介 (35)5.3 程序的编辑 (38)5.4 程序的调试 (38)5.5 控制系统仿真 (39)结论 (41)致 (42)参考文献 (43)第1章绪论1.1 设计背景随着科学技术的迅猛发展、城市现代化的突飞猛进,电梯作为一种高效、迅捷、安全、可靠的垂直运输设备,成为人们不可缺少的运输工具。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三层电梯控制系统的实验设计指导老师:***学生:马小娟班级:电科092学号:*********三层电梯控制系统的设计第一节设计要求要求用FPGA设计实现一个3层电梯的控制系统。
系统的要求如下:(1)电梯运行规则:当电梯处在上升模式时,只响应比电梯所在位置高的上楼请求,由下向上逐个执行,直到最后一个上楼请求执行完毕。
如果高层有下楼请求,直接升到有下楼请求的最高楼层,然后进入下降模式。
电梯处在下降模式时,工作方式与上升模式相反。
设电梯共有3层,每秒上升或下降一层。
(2)电梯初始状态为一层,处在开门状态,开门指示灯亮。
(3)每层电梯入口处均设有上下请求开关,电梯内部设有乘客到达楼层的停站请求开关及其显示。
(4)设置电梯所处位置的指示及电梯上升或下降的指示。
(5)电梯到达有停站请求的楼层后,电梯门打开,开门指示灯亮。
开门4妙后,电梯门关闭,开门指示灯灭,电梯继续运行,直至执行完最后一个请求信号后停在当前层。
(6)电梯控制系统能记忆电梯内外的请求信号,并按照电梯运行规则工作,每个请求信号执行完毕后清除。
第二节三层电梯控制系统的功能模块及流程图电梯控制器的功能模块如图2.1所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。
乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。
分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。
由于分控制器相对简单很多,所以主控制器是核心部分。
图2.1 电梯控制器原理图第三节三层电梯控制器的具体设计本设计尝试用硬件描述语言VHDL来实现对三层电梯的控制,源程序经A1tera公司的MAX+plus II软件仿真,保证了设计的正确性。
使用VHDL进行电梯控制器的设计,主要就是对电梯软件部分的设计,使用VHDL中的逻辑关系建立电梯的升降模式,开门,关门达到动作,而外部器件的硬件设备基本上保持不变。
使用VHDL硬件描述语言设计电梯控制器可以为电梯实现智能控制奠定基础。
一三层电梯控制器实现的功能及运行规则①电梯一层入口处设有上升请求开关,二层入口处设有上、下请求开关,三层入口处设有下降请求开关,电梯内部设有顾客到达楼层的停站请求开关。
②每层电梯入口处设有位置指示装置及电梯运行模式 (上升或下降)指示装置。
③电梯初始状态为一层开门状态。
④电梯每秒上升(下降)一层楼。
⑤电梯到达需要停止的楼层,经过1秒电梯门打开,开门指示灯亮,开门4秒后,电梯门关闭(开门指示灯灭),电梯继续运行,直至执行完最后一个请求信号后停留在当前层。
⑥电梯需要寄存器来记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号保留至执行后消除。
⑦电梯的运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号和停站请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接上升到有下楼请求的最高层,然后进入下降模式。
当电梯处于下降模式时则与上升模式相反。
二三层电梯控制器的综合设计1三层电梯控制器的设计思路电梯控制器设计两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。
根据电梯的实际工作情况,可以为状态机设置十个状态,它们分别是“电梯停在一层”“开门”“关门”“开门等待第一秒”“开门等待第二秒”“开门等待第三秒”“开门等待第四秒”“上升”“下降”和“停止”。
由于电梯每秒上升或下降一层,则可以用周期为1s的信号来作为电梯状态转换的触发时钟。
状态机进程中的很多判断条件是以信号灯控制进程产生的信号灯信号为依据,而信号灯控制进程中信号灯的熄灭又是由状态机进程中传出的信号来控制。
三层电梯控制器的设计主要是对实体和结构体的设计,它的VHDL描述模块流程如图3.1所示:图3.1 三层电梯控制器的VHDL描述模块流程2实体设计实体设计即是对端口名、端口模式及数据类型的说明。
首先考虑输入端口,一个异步复位端口“reset”,用于当电梯出现非正常情况时回到初始状态;在电梯外部,一层入口处设有上升请求端,二层入口处设有上升和下降请求端,三层入口处设有下降请求端;在电梯内部,应设有各层停站请求端口;一个电梯时钟输入端口,它提供周期为1s的时钟信号,用作电梯状态转换的触发时钟;还有一个频率很高的按键时钟输入端口。
其次考虑输出端口,当有各层上升或下降请求时,各层入口处应该有端口显示请求是否被响应,有请求时端口输出逻辑‘1’,被执行后则恢复成逻辑‘0’;同样的,电梯内部也应有各层停站请求是否被响应的指示端口;一个开关门指示端口,当门开着时,它为逻辑‘1’,门关着时,则为逻辑‘0’;还需要端口来显示电梯所处的位置和模式(上升或下降)。
3结构体设计在结构体中,首先说明了状态机设置的十个状态,分别是:电梯停在1层(stopon1)、开门(dooropen)、关门(doorclose)、开门等待第1秒(doorwait1)、开门等待第2秒(doorwait2)、开门等待第3秒(doorwait3)、开门等待第4秒(doorwait4)、上升(up)、下降(down)和停止(stop)。
在结构体最前端用如下的定义语句,来定义状态机。
type lift_state is(stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,u p,down,stop);接着描述电梯内部功能实现,在结构体中设计了两个进程,一个状态机进程(ctrlift),它是以reset和liftclk作为敏感信号,控制电梯的状态转移;另外一个是信号灯控制进程(ctrlight),它是以reset和buttonclk作为敏感信号,控制寄存信号的逻辑值。
在状态机进程中,电梯关门后根据信号灯的情况,来决定下一个状态是上升、下降还是停止;在信号灯控制进程中,由于使用了专门的频率较高的按键时钟,所以使得按键的灵敏度大,但是时钟频率不能过高,否则容易使按键过于灵敏,而信号灯的熄灭是由状态机进程中传出clearup和cleardn信号来控制。
4 VHDL源代码语法的简单说明⑴本程序设计调用了ieee库,ieee库是VHDL设计中最为常用的库,它包含有ieee标准的程序包和其他一些支持工业标准的程序包。
本设计采用std-logic-1164、std-logic-unsigned、std-logic-arith程序包。
⑵以关键词entity引导,end entity threelift结尾的部分是程序的实体部分。
VHDL的实体描述了电路器件的外部情况,本设计定义了关于三层电梯控制器用到的各类时钟、异步复位按键、信号灯指示端口、电梯的请求端口。
它描述了端口模式主要有in、buffer、out,以及各端口信号的数据类型主要有std-logic、std-logic-vector、integer。
(3)以关键词architecture引导,end architecture one结尾的语句部分是结构体部分,结构体描述电路器件的内部逻辑功能。
5 VHDL源代码根据主模块中3个进程的工作原理和状态机设计流程编写的主模块VHDL程序如下:library ieee; --库的说明use ieee.std_logic_1164.all; --程序包的说明use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity threelift is --实体port(buttonclk:in std_logic; --按键时钟信号liftclk:in std_logic; --电梯时钟信号reset:in std_logic; --异步复位端口f1upbutton:in std_logic; --一层上升请求端口f2upbutton:in std_logic; --二层上升请求端口f2dnbutton:in std_logic; --二层下降请求端口f3dnbutton:in std_logic; --三层下降请求端口stop1button:in std_logic; --一层停站请求端口stop2button:in std_logic; --二层停站请求端口stop3button:in std_logic; --三层停站请求端口position:buffer integer range 1 to 3; --电梯位置信号udsig:buffer std_logic; --电梯模式(上升或下降)信号fuplight,fdnlight,stoplight:buffer std_logic_vector(3 downto 1);--上升、下降、停站请求寄存信号doorlight:out std_logic; --开关门信号dout1:out std_logic_vector(3 downto 0));end entity threelift;architecture one of threelift is --结构体type lift_state is --定义十个状态(stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,u p,down,stop);signal mylift:lift_state;signal clearup:std_logic; --上升和停站请求清除信号signal cleardn:std_logic; --下降和停站请求清除信号beginctrlift:process(reset,liftclk) --状态机进程variable pos:integer range 3 downto 1;beginif reset='1' then --异步复位,电梯的初始状态为一层开门状态mylift<=stopon1;clearup<='0';cleardn<='0';elseif liftclk'event and liftclk='1' thencase mylift iswhen stopon1=>doorlight<='1';position<=1;pos:=1;mylift<=doorwait1; --电梯等待4swhen doorwait1=>mylift<=doorwait2;when doorwait2=>clearup<='0';cleardn<='0';mylift<=doorwait3;when doorwait3=>mylift<=doorwait4;when doorwait4=>mylift<=doorclose;when doorclose=> --关门,判定电梯下一个运行方式doorlight<='0';if udsig='1' then --电梯处在上升模式if position=3 thenif fuplight="000" and fdnlight="000" and stoplight="000" then --没有请求信号时,电梯停在当前层udsig<='0';mylift<=doorclose;elsif fdnlight(3)='1' or stoplight(3)='1' then --本层有请求信号是,电梯开门udsig<='0';mylift<=dooropen;else --否则下降udsig<='0';mylift<=down;end if;elsif position=2 thenif fuplight="000" and fdnlight="000" andstoplight="000" thenudsig<='1';mylift<=doorclose;elsif fuplight(2)='1' or stoplight(2)='1' then--本层有上升或停站请求时时,电梯开门udsig<='1';mylift<=dooropen;elsif fuplight="000" and stoplight="000" andfdnlight="010" then --只有二层有下降请求时,电梯开门udsig<='0';mylift<=dooropen;elsif stoplight(3)='1' or fdnlight(3)='1' then --三层有停站请求或下降请求,则上升udsig<='1';mylift<=up;elseudsig<='0';mylift<=down;end if;elsif position=1 thenif fuplight="000" and fdnlight="000" andstoplight="000" thenudsig<='1';mylift<=doorclose;elsif stoplight(1)='1' or fuplight(1)='1' thenudsig<='1';mylift<=dooropen;elseudsig<='1';mylift<=up;end if;end if;elsif udsig='0' then --电梯处在下降模式if position=3 thenif fuplight="000" and fdnlight="000" andstoplight="000" thenudsig<='0';mylift<=doorclose;elsif fdnlight(3)='1' or stoplight(3)='1' thenudsig<='0';mylift<=dooropen;elseudsig<='0';mylift<=down;end if;elsif position=2 thenif fuplight="000" and fdnlight="000" and stoplight="000" thenudsig<='0';mylift<=doorclose;elsif fdnlight(2)='1' or stoplight(2)='1' thenudsig<='0';mylift<=dooropen;elsif fdnlight="000" and stoplight="000" and fuplight="010" thenudsig<='1';mylift<=dooropen;elsif fuplight(1)='1' or stoplight(1)='1' then--一层有停站请求或上升请求,则下降 udsig<='0';mylift<=down;elseudsig<='1';mylift<=up;end if;elsif position=1 thenif fuplight="000" and fdnlight="000" and stoplight="000" thenudsig<='1';mylift<=doorclose;elsif stoplight(1)='1' or fuplight(1)='1' thenudsig<='1';mylift<=dooropen;elseudsig<='1';mylift<=up;end if;end if;end if;when up=> --电梯处于上升状态position<=position+1; --电梯楼层数加一pos:=pos+1;if pos<3 and (stoplight(pos)='1' or fuplight(pos)='1') then mylift<=stop;--电梯在一层或二层,本层有停站或上升请求时,则停止 elsif pos=3 and (stoplight(pos)='1' or fdnlight(pos)='1') thenmylift<=stop;--电梯处在三层,并且有三层停站或下降请求,则停止elsemylift<=doorclose;end if;when down=> --电梯处在下降状态position<=position-1; --电梯楼层数减一pos:=pos-1;if pos>1 and (stoplight(pos)='1' and fdnlight(pos)='1') then mylift<=stop;elsif pos=1 and (stoplight(pos)='1' or fuplight(pos)='1') thenmylift<=stop;elsemylift<=doorclose;end if;when stop=>mylift<=dooropen;when dooropen=>doorlight<='1';if udsig='1' thenif position<3 and (fuplight(pos)='1' or stoplight(pos)='1') thenclearup<='1'; --清除当前层上升和停站请求elseclearup<='1';cleardn<='1';end if;elsif udsig='0' thenif position>1 and (fdnlight(pos)='1' or stoplight(pos)='1') thencleardn<='1'; --清除当前层下降和停站请求 elseclearup<='1';cleardn<='1';end if;end if;mylift<=doorwait1;end case;end if;end if;end process ctrlift;ctrlight:process(reset,buttonclk) --信号灯控制进程beginif reset='1' then --复位,寄存信号清零fuplight<="000";fdnlight<="000";stoplight<="000";elseif buttonclk'event and buttonclk='1' thenif clearup='1' then --上升和停站请求清零fuplight(position)<='0';stoplight(position)<='0';elseif f1upbutton='1' then --记忆各层上升请求 fuplight(1)<='1';elsif f2upbutton='1' thenfuplight(2)<='1';end if;end if;if cleardn='1' then --下降和停站请求清零fdnlight(position)<='0';stoplight(position)<='0';elseif f2dnbutton='1' then --记忆各层下降请求 fdnlight(2)<='1';elsif f3dnbutton='1' thenfdnlight(3)<='1';end if;end if;if stop1button='1' then --记忆各层停站请求 stoplight(1)<='1';elsif stop2button='1' thenstoplight(2)<='1';elsif stop3button='1' thenstoplight(3)<='1';end if;end if;end if;end process ctrlight;process(position) --楼层显示进程beginif position=1 thendout1<="0001";elsif position=2 thendout1<="0010";elsif position=3 thendout1<="0011";end if;end process;end architecture one;小结本设计运用有限状态机的方法,在结构体最前端首先定义了十个状态;然后在结构体中设计了两个进程,状态机进程作为主要进程,信号灯控制进程作辅助进程。