电梯仿真程序
PLC编程仿真——3层电梯控制
PLC 编程与仿真 1•电梯控制要求 <1)当电梯停在1层或2层时,按S3按钮呼梯则电梯上升至LS3停。
<2)当电梯停在1层,按S2按钮和S3按钮呼梯,则电梯上升至 LS2暂停5秒 后继续上升到LS3停。
<3)当电梯停于2层,若按S3按钮呼梯,则电梯上升到LS3停。
<4)当电梯停于3层,若按S2按钮呼梯,则电梯下降到LS2停止。
<5)当电梯停于3层,而S2 S1按钮均有人呼梯,则电梯下降到 LS2暂停5秒 后继续下降到LS1停止。
<6)当电梯停于2层,而S1、S3按钮均有人呼梯,则电梯先下降至 LS1暂停5 秒,再上升至LS3停止。
<7)应具有电梯的运行方向指示。
<8)电梯内显示电梯所在楼层。
<9)电梯运行期间不能开门。
<10)电梯不关门不允许运行。
2.硬件配置+ o FN-GOO.+ :r ] Gateway + _J IM-300 + _| H7-EXTENSION + Cj PS-300 + _□ RACK-'SOO -LJ SN-300+ □ AI-300+ 口 Al/AO -300+ i_J AD-300 -口 DI-300U SM 321 Stf 321SW 321 13 <?IH6B57 ^21-lBLUO-OAWJ茎疗量铺忙慎块M32 24 V,分成32据:同时可 作为 SIPLUS 複块.订货号 6AG1321-1BLOO-2AAO3.电梯PLC 控制的I/O 分配表表3-1 I/O 分配表名称~输入点~ 名称~输出点14i Fb : I.Vj 选顼追)或口逋.i 帮勸S 您 血血融口配養立件:礙DIl&x 43-125WCDIl&xA£12a/Z3aV DI16xAC120VTIT 1 C … CEF一层位置 10.0 电梯上行信号 Q0.0 二层位置 10.1 电梯下行信号 Q0.1 三层位置 I0.2 电梯电机正转 Q0.6 一楼内呼叫指令 I0.3 电梯电机反转 Q0.7 二楼内呼叫指令 I0.4 一楼内呼叫指示 Q0.3 三楼内呼叫指令 I0.5 二楼内呼叫指示 Q0.4 一楼外上行呼叫 I1.0 三楼内呼叫指示 Q0.5 二楼外上行呼叫 11.1 一楼上行呼叫指示 Q1.0 二楼外下行呼叫 11.2 二楼上行呼叫指示 Q1.1 三楼外下行呼叫 11.3 二楼下行呼叫指示 Q1.2 手动开门指令 I2.0 三楼下行呼叫指示 Q1.3 手动关门指令 I2.1 开门电机信号 Q1.4 开门限位开关 I2.2 关门电机信号Q1.5关门限位开关 I2.3 电梯上行限位开关 I2.4电梯下行限位开关12.54•电梯PLC 控制的程序剖析第一步:编写电梯外呼信号的产生、指示、消失的程序。
基于FPGA的电梯控制系统的仿真图(附程序)
系统主体模块的设计与仿真本设计是以9层的电梯控制系统为模型。
主要实现电梯运行开关的控制,楼层的请求,电梯运行遵循的方向优先原则,提前、延时开关门等基本的功能。
以下是对不同的状态进行仿真,以验证本设计的可行性。
电梯进入运行状态控制进程,通过判断上升、下降请求寄存器每一位的值,决定电梯运行状态,并通过状态指示信号输出该状态,本设计都是使用高电平触发。
(1)当电梯处于1楼时,上升请求:图4.1 电梯处于第一层时仿真图(2)提前/延时关门功能没有提前/延时关门时的情况下:图4.2 没有提前/延时关门时的仿真图从图4.2知道,运行或停止输出信号“lamp”为高电平时电梯进入运行状态,低电平时停止。
圈内显示电梯在75.36us后从停止状态转入运行状态。
当设置提前关门“close”为高电平时:图4.3 有提前关门时的仿真图图4.3与图4.2对比可知,由于设置了提前关门进程“close”,电梯提前到75.36us 以前从停止状态转入运行状态。
2当设置了延时关门“delay”为高电平时:图4.4 延时关门时的仿真图图4.4与图4.2对比可知,由于设置了延时关门进程“delay”,电梯延时到80.48us 后才从停止状态转入运行状态。
(3)当电梯处于较高层数时图4.5 电梯处于较高层数时的仿真图(5)电梯轿厢内楼层选择开关功能仿真图4.6 轿厢内楼层选择开关仿真图4(4)电梯的次态功能仿真如图4.7所示,当运行或等待时间“run_wait”计数到0110时,电梯运行状态变量“ladd”给出电梯的下一个状态。
如图 4.7圈内显示,“ladd”从0显示模块的设计与仿真图4.8 显示模块仿真图本设计的显示模块一共有3个显示部分,分别是电梯运行/等待时间显示run_wait、楼层选择指示direct以及所在楼层批示st_out。
这3个显示部分的设计结构都是一样的,所以以其中一个仿真作为例子。
从图4.8圈内看到,当电梯处于楼层2时,ledin收到信号‘0010’,经过系统内部自动转化为‘1011011’并通过ledout输出到共阴极LED数码显示。
基于单片机的电梯仿真程序课程设计
目录(一)前言 (1)(二)现代电梯概述 (3)(三)硬件部分设计 (6)(四)软件部分设计 (12)(五)电梯运行界面 (52)(六)设计总结与感悟 (56)(七)参考文献 (57)电梯仿真程序一、前言:本电梯仿真程序采用的是一个基于单片机及其相关外设,编程语言采用汇编与C语言结合的方式,通过矩阵键盘线反选法输入楼层,上、下行等控制信号,经I\O口读入,进行相关实时控制,软硬件结合的仿真系统,输出设备包括由CD4511驱动显示楼层的7段数码管,显示实时信息的显示屏LCD12864,由PWM控制显示电梯门开关的舵机,以及由I\O口间接控制的驱动电机正反转双桥驱动电路等几个部分组成。
可以实现真实电梯中,任意层呼叫,目的层到达按要求顺序到达,开关门,无输入自动回1层等一系列功能,并实时显示当前电梯运行状态,关于真实电梯门控光幕装置,电机自动抱闸平层等部分,由于知识不足,没有足一实现,但会在接下来的专业知识学习过程中不断完善,同时也希望得到程老师的指导。
二、现代电梯概述:电梯是一种以电动机为动力的垂直升降机,装有箱状吊舱,用于多层建筑乘人或载运货物。
也有台阶式,踏步板装在履带上连续运行,俗称自动电梯。
服务于规定楼层的固定式升降设备。
它具有一个轿厢,运行在至少两列垂直的或倾斜角小于15°的刚性导轨之间。
轿厢尺寸与结构形式便于乘客出入或装卸货物,本次微机课程设计电梯仿真选用的是垂直升降梯。
2.1、电梯功能现代电梯主要由曳引机(绞车)、导轨、对重装置、安全装置(如限速器、安全钳和缓冲器等)、信号操纵系统、轿厢与厅门等组成。
这些部分分别安装在建筑物的井道和机房中。
通常采用钢丝绳摩擦传动,钢丝绳绕过曳引轮,两端分别连接轿厢和平衡重,电动机驱动曳引轮使轿厢升降。
电梯要求安全可靠、输送效率高、平层准确和乘坐舒适等。
电梯的基本参数主要有额定载重量、可乘人数、额定速度、轿厢外廓尺寸和井道型式等。
简单使用方法(紧急情况下面有解决方法)载人电梯都是微机控制的智能化、自动化设备,不需要专门的人员来操作电梯电梯结构图电梯内部结构图驾驶,普通乘客只要按下列程序乘坐和操作电梯即可。
电梯模拟程序课程设计
电梯模拟程序课程设计一、课程目标知识目标:1. 让学生理解电梯的工作原理,掌握电梯运行的模拟编程知识。
2. 使学生掌握利用流程图描述电梯运行逻辑的方法。
3. 帮助学生理解并运用条件语句和循环语句实现电梯模拟程序。
技能目标:1. 培养学生运用编程语言(如Scratch或Python)编写简单电梯模拟程序的能力。
2. 培养学生通过流程图分析问题、解决问题的能力。
3. 提高学生团队协作、沟通交流的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生主动探索新知识的热情。
2. 培养学生严谨、细心的学习态度,增强面对困难的勇气和毅力。
3. 培养学生遵守程序设计规范,养成良好的编程习惯。
课程性质:本课程为信息技术学科的课程,以项目式学习为主,注重实践操作和团队合作。
学生特点:学生为五年级学生,具备一定的信息技术基础,对新事物充满好奇,喜欢动手操作。
教学要求:教师需引导学生通过自主探究、小组合作等方式完成课程内容,注重培养学生的实践能力和创新精神。
同时,关注学生的个体差异,提供有针对性的指导。
通过本课程的学习,使学生能够达到上述课程目标,实现具体的学习成果。
二、教学内容1. 电梯工作原理介绍:包括电梯的基本结构、运行原理、信号控制系统等,让学生对电梯的运行机制有整体认识。
2. 编程语言基础:回顾并巩固Scratch或Python编程语言的基础知识,如变量、列表、条件语句、循环语句等,为编写电梯模拟程序打下基础。
3. 流程图设计:学习如何利用流程图描述电梯运行的逻辑过程,分析电梯运行中的各种情况,并进行流程图设计。
4. 电梯模拟程序编写:根据流程图,运用所学编程知识,分组合作编写电梯模拟程序,实现基本的运行、停止、开门、关门等功能。
5. 程序调试与优化:指导学生如何调试程序,发现并解决程序中的问题,提高程序的稳定性和运行效率。
教学内容安排和进度:第一课时:电梯工作原理介绍,回顾编程语言基础知识。
第二课时:学习流程图设计,分析电梯运行逻辑。
电梯控制器的VHDL程序设计与仿真
论文题目:电梯控制器的VHDL程序设计与仿真专业:微电子学本科生:陈伟伟(签名)___________指导教师:岳改丽(签名)___________摘要本设计(改为论文)主要介绍了基于FPGA设计的五层电梯控制器,采用VHDL语言进行编译,并进行了电路综合和仿真。
该控制器具备了FPGA芯片的硬件体积小、实时性好、工作效率高、提高系统的集成度等特点且遵循方向优先的原则,提供五个楼层多个用户的载客服务,并指示电梯的运行情况。
本设计的亮点是使用状态机的方法来完成电梯的几个运行状态。
(改,)将主控制器的状态分为6种,停止、等待、上升、连续上升、下降及连续下降,状态的划分与楼层无关(增加,)因此具有很强的通用性。
本课题试验调试平台是Altera公司的Quartus Ⅱ软件和EDA实验开发系统。
(改,)通过程序的调试和(改、)运行及仿真表明本设计可以完成电梯所在楼层显示和电梯运行方向指示。
关键字:FPGA,VHDL,电梯控制器,状态机大红色要删去,下同Subject: The study and simulation of elevator controller based on VHDL Specialty: MicroeletronicsName: Weiwei Chen (Signature) ___________ Instructor: G aili Yue (Signature) ___________ABSTRCTThis design introduces the five floors elevator controller compiled with VHDL and the synthesis and simulation of the circuit. The controller follows the direction of the principle of priority, to provide the service of multiple users, and indicates the operation of the lift. This controller has FPGA chip compact hardware, good real-time, high efficiency, improve the system integration characteristics .Using state machine is a strong point of this design. The main controller is divided into six states. The state has nothing to do with floors, so it has a strong common use. The debugging platform of this topic is Altera QuartusⅡsoftware and EDA experiment development system. Through the process of debugging、running and the simulation shows that this design can finish the function of the elevator direction and floor’s display.KEY WORDS: FPGA, VHDL, Elevator Controller, State Machine目录1绪论 (1)1.1 选题的背景 (1)1.2 电梯控制器的研究背景 (1)1.3 我国电梯的发展状况 (1)1.4 电梯设计的具体目的及控制要求..................................................................... .2 2设计基础依据(改为工具介绍). (4)2.1EDA技术介绍 (4)2.2FPGA简介 (6)2.2.1EDA实验开发平台 (7)2.2.2 EP2C5核心板(字号?) (7)2.3硬件描述语言 (8)2.3.1VHDL和VerilogHDL比较 (8)2.3.2VHDL语言的基本特点 (8)2.3.3 VHDL的设计流程 (9)2.3.4 VHDL程序的基本结构 (9)2.3.5 状态机的简介 (10)2.4 QuartusII软件介绍 (11)3电梯控制器的设计及仿真 (14)3.1 电梯及电梯控制器的功能简介 (14)3.1.1 电梯的机械组成 (14)3.1.2电梯控制器的工作原理 (15)3.2 电梯控制器的程序设计 (15)3.2.1 电梯的总体控制思想 (16)3.2.2 电梯控制器的程序流程图 (17)3.2.3模块设计与实现 (18)3.3程序调试与下载 (28)3.3.1 程序调试 (28)3.3.2从设计文件到目标器件的下载 (29)3.3.3 加载及显示结果 (29)结论 (33)致谢.................................................................................... 错误!未定义书签。
c语言模拟电梯程序
c语言模拟电梯程序我们需要定义电梯的状态。
电梯可以处于静止、上升或下降三种状态中的一种。
我们可以使用一个整型变量来表示电梯的状态,0表示静止,1表示上升,-1表示下降。
接下来,我们需要定义电梯的位置。
电梯可以停在不同的楼层,我们可以使用一个整型变量来表示电梯当前所在的楼层。
我们需要定义一个数组来记录每一层楼的乘客请求。
数组的每一个元素表示该楼层的请求状态,0表示无请求,1表示有上升请求,-1表示有下降请求。
在主程序中,我们可以使用一个循环来模拟电梯的运行过程。
在每一次循环中,我们首先检查电梯当前所在的楼层是否有乘客请求。
如果有请求,我们根据电梯的状态和乘客的请求来确定电梯下一步的动作。
如果电梯处于静止状态,我们可以根据乘客的请求来确定电梯的状态。
如果有上升请求,我们将电梯的状态设为上升;如果有下降请求,我们将电梯的状态设为下降。
如果电梯处于上升状态,我们需要找到最接近电梯当前位置且有上升请求的楼层,然后将电梯移动到该楼层。
如果没有找到符合条件的楼层,则将电梯状态设为静止。
如果电梯处于下降状态,我们需要找到最接近电梯当前位置且有下降请求的楼层,然后将电梯移动到该楼层。
如果没有找到符合条件的楼层,则将电梯状态设为静止。
在每一次循环结束时,我们将输出电梯的状态和位置,以及每一层楼的乘客请求状态。
这样可以让用户清楚地了解电梯的运行过程。
通过以上的步骤,我们可以完成一个简单的电梯模拟程序。
当然,实际的电梯系统要复杂得多,包括更多的功能和安全性考虑。
但是通过这个简单的模拟程序,我们可以初步了解电梯的运行原理和编程实现。
总结一下,本文介绍了如何使用C语言编写一个简单的电梯模拟程序。
通过定义电梯的状态和位置,以及乘客的请求状态,我们可以模拟电梯的运行过程。
通过循环判断电梯的状态和乘客的请求,我们可以确定电梯下一步的动作。
最后,我们输出电梯的状态和位置,以及每一层楼的乘客请求状态,以展示电梯的运行过程。
希望本文对读者理解电梯的工作原理和使用C语言实现电梯模拟程序有所帮助。
电梯模拟程序--从设计到实现
电梯模拟程序--从设计到实现电梯模拟程序--从设计到实现 ---结对项⽬开发:张永&吴盈盈 这是⼀个⼤家都很熟悉的题⽬,很多⼈也做过类似的题⽬。
最近博客园最近也发表了很多的关于电梯模拟的程序。
下⾯说⼀下我们⼩组的基本思想。
题⽬拿到后,我们先是讨论了⼀下电梯的整体设想。
对这个题⽬进⾏了粗略的分析。
从⾯向对象的⾓度对问题剖析: 下⾯开始电梯的界⾯设计:界⾯设计涉及到的按钮⽐较多,所以每个按钮的命名必须要符合规范,光变量命名就花费了很长时间,举个例⼦:每个电梯都有左右门,那么为了见名知意,命名规则采⽤“elevator_电梯号_左右门”,⼀号电梯的左门命名为“elevator_ID1_Left”,其他的按钮也都有相应的命名规则,这⾥不⼀⼀的列举了。
为了有⼀个友好的界⾯,在这引⼊了⼀个开关门的特效:先介绍⼀下怎么实现的,以⼀个门为例,C#中Timer控件⽐较好⽤,每个门对应⼀个Timer 控件(就是每隔⼀段时间调⽤⼀个⽅法):/*** @Name: openElevator* @Description: 打开电梯门* @Version: V1.00 (版本号)* @Create Date: 2014-3-16 (创建⽇期)* @Parameters:Panel elevator_ID_Left, Panel elevator_ID_Right,电梯的两个门* @Return: 电梯的状态(开和关)*/public int openElevator(Panel elevator_ID_Left, Panel elevator_ID_Right){elevator_ID_Left.Width = elevator_ID_Left.Width - 1;elevator_ID_Right.Width = elevator_ID_Right.Width - 1;elevator_ID_Right.Location = new System.Drawing.Point(elevator_ID_Right.Location.X + 1, elevator_ID_Right.Location.Y);if (elevator_ID_Left.Width == 10){flag = Number.OPEN;}return flag;}在Timer控件中每隔⼀定的时间就调⽤openElevator⽅法,就实现了开门的动作,关门类似。
C++电梯仿真
一:CElevator.h文件内容#ifndef CELEVATOR_H#define CELEVATOR_Hconst int MostLayers = 100;class CElevator{public:CElevator();//构造函数CElevator(int uLayers, int lLayers);//构造函数CElevator(CElevator &myElevator);//拷贝构造函数void PressOuterButton(int direction, int floor);//电梯外部各楼层操作按钮void PressInnerDigitalButton(int floor);//电梯内部数字按钮void PressOpen_CloseButton(int operate);//电梯内部开合控制按钮void PressAlert();//电梯内部报警按钮void run();//电梯运行~CElevator();//析构函数protected:void OpenElevator();//打开电梯void CloseElevator();//关闭电梯void UserOperate();//由于程序单线程运行,因此将用户的所有操作集中在每一层停止的时候完成。
const int UpperLayers; //电梯最高能到达的楼层const int LowerLayers; //电梯最低能到达的楼层int States[5]; //电梯当前状态,States[0]表示运行或停止,0停止,1运行,初值0;States[1]表示当前所在楼层,初值1;States[2]表示运行方向,向上0,向下1,初值0;States[3]表示开合,0开,0合,初值1;States[4]表示是否故障,0正常,1故障,初值1int DigitalButton[MostLayers];//整形数组,i为楼层且i!=0,i<0时下标i-LowerLayers表示电梯内地下i楼层按钮是否被按下,i>0,i-LowerLayers-1表示电梯内地上i楼层按钮是否被按下,0未按,1按下int OuterDownButton[MostLayers];//整形数组,i为楼层且i!=0,i<0时下标i-LowerLayers表示电梯外i层向下按钮是否被按下,i>0,i-LowerLayers-1表示电梯外i层向下按钮是否被按下,0未按,1按下int OuterUpButton[MostLayers];//整形数组,i为楼层且i!=0,i<0时下标i-LowerLayers表示电梯外i层向上按钮是否被按下,i>0,i-LowerLayers-1表示电梯外i层向上按钮是否被按下,0未按,1按下};#endif二:CElevator.cpp文件内容#include<iostream>#include "CElevator.h"using namespace std;CElevator::CElevator():UpperLayers(10),LowerLayers(1) {States[0] = 0; //初始状态为停止States[1] = 1;//初始楼层在楼States[2] = 0;//初始方向为向上States[3] = 1;//初始电梯为合States[4] = 0;//初始电梯正常for(int i=0;i<MostLayers;i++){DigitalButton[i] = 0;OuterDownButton[i] = 0;OuterUpButton[i] = 0;}}CElevator::CElevator(int uLayers, int lLayers):UpperLayers(uLayers),LowerLayers(lLayers){States[0] = 0; //初始状态为停止States[1] = 1;//初始楼层在楼States[2] = 0;//初始方向为向上States[3] = 1;//初始电梯为合States[4] = 0;//初始电梯正常for(int i=0;i<MostLayers;i++){DigitalButton[i] = 0;OuterDownButton[i] = 0;OuterUpButton[i] = 0;}}CElevator::CElevator(CElevator&myElevator):UpperLayers(myElevator.UpperLayers),LowerLayers( myEleva tor.LowerLayers){States[0] = myElevator.States[0];States[1] = myElevator.States[1];States[2] = myElevator.States[2];States[3] = myElevator.States[3];States[4] = myElevator.States[5];for(int i=0;i<MostLayers;i++){DigitalButton[i] = myElevator.DigitalButton[i];OuterDownButton[i] = myElevator.DigitalButton[i];OuterUpButton[i] = myElevator.DigitalButton[i];}}CElevator::~CElevator(){}void CElevator::PressOuterButton(int direction, int floor) {if(direction==0)OuterUpButton[floor-LowerLayers-1] = 1;elseOuterDownButton[floor-LowerLayers-1] = 1; }void CElevator::PressInnerDigitalButton(int floor) {DigitalButton[floor-LowerLayers-1] = 1;}void CElevator::PressOpen_CloseButton(int operate) {if(operate == 0)//打开电梯{OpenElevator();}else//关闭电梯{CloseElevator();}}void CElevator::OpenElevator(){if(States[3] == 0){cout<<"电梯已打开,请先出后进!"<<endl<<endl;}else{cout<<"电梯正在打开…电梯已打开,请先出后进!"<<endl<<endl;States[3] = 0;}}void CElevator::CloseElevator(){if(States[3] == 1){cout<<"电梯已关闭,请保持安静!"<<endl<<endl;}else{cout<<"电梯正在关闭…电梯已关闭,请保持安静!"<<endl<<endl;States[3] = 1;}}void CElevator::PressAlert(){cout<<"电梯内部有人报警,请援助!"<<endl;States[4] = 1;}void CElevator::UserOperate(){//按报警按钮int alm = 0;cout<<"按报警按钮吗?输入1表示按,0表示不按:";cin>>alm;cout<<endl;if(alm==1){States[4] = 1;while(States[4]==1){cout<<"电梯出现故障,请维修!维修好请输入0,维修不好请输入1!";cin>>alm;cout<<endl;if(alm == 0 || alm ==1){States[4] = alm;}else{cout<<"维修数据不正确!"<<endl;}}}OpenElevator();//电梯内部输入到达楼层cout<<"请电梯内乘客输入所要到达的楼层!"<<endl;cout<<"多个楼层中间用空格隔开,结束输入0:";int floor = 1;while(true){cin>>floor;if(floor==0){break;}if((floor>=LowerLayers) && (floor<=UpperLayers) && (floor!=States[1])){if(floor<0)//地下{DigitalButton[floor-LowerLayers] = 1;}else//地上{DigitalButton[floor-LowerLayers-1] = 1;//没有楼}}}cout<<endl;//电梯外部各楼层输入上楼信号cout<<"请电梯外部乘客输入上楼信号!"<<endl;cout<<"多个楼层用空格隔开,结束输入0:";while(true){cin>>floor;if(floor==0){break;}else{if((floor>=LowerLayers) && (floor<UpperLayers) && (floor!=States[1])){if(floor<0)//地下{OuterUpButton[floor-LowerLayers] = 1;}else//地上{OuterUpButton[floor-LowerLayers-1] = 1;//没有楼}}}}cout<<endl;//电梯外部各楼层输入下楼信号cout<<"请电梯外部乘客输入下楼信号,"<<endl;cout<<"多个楼层用空格隔开,结束输入0:";while(true){cin>>floor;if(floor==0){break;}else{if((floor>LowerLayers) && (floor<=UpperLayers) && (floor!=States[1])){if(floor<0)//地下{OuterDownButton[floor-LowerLayers] = 1;}else//地上{OuterDownButton[floor-LowerLayers-1] = 1;//没有楼}}}}cout<<endl;//按开电梯按钮int direction = 0;cout<<"电梯将要关闭,等人请按打开按钮!"<<endl;cout<<"输入1表示按,表示0不按:";cin>>direction;cout<<endl;if(direction==1){OpenElevator();for(int i=0;i<50;i++);//延时CloseElevator();}//按关电梯按钮cout<<"按关电梯按钮吗?输入1表示按,表示0不按:";cin>>direction;cout<<endl;if(direction==0){for(int i=0;i<50;i++);//延时CloseElevator();}else{CloseElevator();}}void CElevator::run(){while(true){if(States[0]==0){cout<<"电梯停在"<<States[1]<<"层!"<<endl;if(States[2]==0)//向上{if(States[1]<0)//地下{OuterUpButton[States[1]-LowerLayers] = 0;//将记录电梯States[1]层有向上的标志取消DigitalButton[States[1]-LowerLayers] = 0;//将记录电梯在States[1]层停靠的标志取消}else//地上{OuterUpButton[States[1]-LowerLayers-1] = 0;//将记录电梯States[1]层有向上的标志取消DigitalButton[States[1]-LowerLayers-1] = 0;//将记录电梯在States[1]层停靠的标志取消}}else//向下{if(States[1]<0)//地下{OuterDownButton[States[1]-LowerLayers] = 0;//将记录电梯States[1]层有向下的标志取消DigitalButton[States[1]-LowerLayers] = 0;//将记录电梯在States[1]层停靠的标志取消}else//地上{OuterDownButton[States[1]-LowerLayers-1] = 0;//将记录电梯States[1]层有向下的标志取消DigitalButton[States[1]-LowerLayers-1] = 0;//将记录电梯在States[1]层停靠的标志取消}}if(States[1]==1){cout<<"终止电梯程序运行吗?终止输入1,继续运行输入0:";int temp = 0;cin>>temp;if(temp==1){exit(0);}}cout<<endl;UserOperate();States[0] = 1;}else{if(States[2]==0)//向上{States[1]++;if(States[1]==0){States[1]++;//没有层}else{cout<<"电梯向上运行,将要到达"<<States[1]<<"层!"<<endl<<endl;if(States[1]==UpperLayers)//向上到最顶,必定要停,且方向变为向下{States[2] = 1;//变方向States[0] = 0;}else{if(OuterUpButton[States[1]-LowerLayers-1]==0 && DigitalButton[States[1]-LowerLayers-1]==0){cout<<"没有乘客在"<<States[1]<<"层上下,电梯继续向上运行!"<<endl<<endl;}else{States[0] = 0;}}}}else//向下{States[1]--;if(States[1]==0){States[1] = -1;//没有层}else{cout<<"电梯向下运行,将要到达"<<States[1]<<"层!"<<endl<<endl;if(States[1]==LowerLayers)//向下到最底,必定要停,且方向变为向上{States[2] = 0;//变方向States[0] = 0;}else{if(OuterDownButton[States[1]-LowerLayers-1]==0 && DigitalButton[States[1]-LowerLayers-1]==0){cout<<"没有乘客在"<<States[1]<<"层上下,电梯继续向下运行!"<<endl<<endl;}else{States[0] = 0;}}}}}}}三:main.cpp主函数文件内容#include <iostream>#include "CElevator.h"using namespace std;#include "CElevator.h"void main(){CElevator myElevator(8,-3);.. myElevator.run();}。
仿真电梯4层程序-博图
%M2.0 "电梯向上一层标
志"
符号 "电梯下平层信号/上减速" "电梯向上一层标志" "记录上周期下平层信号的状态"
地址 %I5.7 %M2.0 %M2.2
类型 Bool Bool Bool
注释
网络 9:
符号 "电梯向上一层标志" "楼层号存储字节区" "上行"
网络 10:
地址 %M2.0 %MB30 %Q7.0
34 %M100.1 "初始化标志1"
S
注释
%M100.0 "初始化1阶段"
符号 "初始化 1 阶段" "初始化标志 1" "断开 M100.0flag" "关门到位"
地址 %M100.0 %M100.1 %M12.6 %I5.5
类型 Bool Bool Bool Bool
注释
Totally Integrated Automation Portal
IN
OUT1
%MB30 "楼层号存储字节 区"
类型 Byte Bool
符号 "楼层号存储字节区" "下行第一限位"
网络 8:楼层号变化
地址 %MB30 %I6.2
%I6.2 "下行第一限位"
0
MOVE
EN
ENO
IN
OUT1
%MB30 "楼层号存储字节 区"
类型 Byte Bool
注释
%Q8.1 "初始化完成(准
VHDL电梯控制器程序设计与仿真
电梯控制器VHDL程序与仿真。
----文件名:dianti.vhd。
--功能:6层楼的电梯控制系统。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dianti isport ( 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 issignal 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; --预备上升、预备下降预操作使能信号begincom:process(clk)beginif clk'event and clk='1' thenif clr='1' then q1<=0;q2<=0;wahaha<='0'; --清除故障报警elsif full='1' then alarm<='1'; q1<=0; --超载报警if q1>=3 then door<="10";else door<="00";end if;elsif q=1 then q<=0;alarm<='0';if q2=3 then wahaha<='1'; --故障报警elseif opendoor='1' then door<="10";q1<=0;q2<=0;up<='0';down<='0'; --开门操作elsif en_up='1' then --上升预操作if deng='1' then door<="10";q1<=0;q2<=q2+1; --关门中断elsif quick='1' then q1<=3; --提前关门elsif q1=6 then door<="00";updown<='1';up<='1'; --关门完毕,电梯进入上升状态elsif q1>=3 then door<="01";q1<=q1+1; --电梯进入关门状态else q1<=q1+1;door<="00"; --电梯进入等待状态end if;elsif en_dw='1' then --下降预操作if deng='1' then door<="10";q1<=0;q2<=q2+1;elsif quick='1' then q1<=3;elsif q1=6 then door<="00";updown<='0';down<='1';elsif q1>=3 then door<="01";q1<=q1+1;else q1<=q1+1;door<="00";end if;end if;if g1='1' then led<="1001111"; --电梯到达1楼,数码管显示1if d11='1' or c_u11='1' then d11<='0'; c_u11<='0';opendoor<='1';--有当前层的请求,则电梯进入开门状态elsif dd_cc>"000001" then en_up<='1'; opendoor<='0';--有上升请求,则电梯进入预备上升状态elsif dd_cc="000000" then opendoor<='0'; --无请求时,电梯停在1楼待机end if;elsif g2='1' then led<="0010010"; --电梯到达2楼,数码管显示2 if updown='1' then --电梯前一运动状态位上升if d22='1' or c_u22='1' then d22<='0'; c_u22<='0'; opendoor<='1';--有当前层的请求,则电梯进入开门状态elsif dd_cc>"000011" then en_up<='1'; opendoor<='0';--有上升请求,则电梯进入预备上升状态elsif dd_cc<"000010" then en_dw<='1'; opendoor<='0';--有下降请求,则电梯进入预备下降状态end if;--电梯前一运动状态为下降elsif d22='1' or c_d22='1' then d22<='0'; c_d22<='0';opendoor<='1';--有当前层的请求,则电梯进入开门状态elsif dd_cc<"000010" then en_dw<='1'; opendoor<='0';--有下降请求,则电梯进入预备下降状态elsif dd_cc>"000011" then en_up<='1'; opendoor<='0';--有上升请求,则电梯进入预备上升状态end if;elsif g3='1' then led<="0000110"; --电梯到达3楼,数码管显示3 if updown='1' thenif d33='1' or c_u33='1' then d33<='0'; c_u33<='0';opendoor<='1';elsif dd_cc>"000111" then en_up<='1'; opendoor<='0';elsif dd_cc<"000100" then en_dw<='1'; opendoor<='0';end if;elsif d33='1' or c_d33='1' then d33<='0'; c_d33<='0'; opendoor<='1';elsif dd_cc<"000100" then en_dw<='1'; opendoor<='0';elsif dd_cc>"000111" then en_up<='1'; opendoor<='0';end if;elsif g4='1' then led<="1001100"; --电梯到达4楼,数码管显示4 if updown='1' thenif d44='1' or c_u44='1' then d44<='0'; c_u44<='0'; opendoor<='1';elsif dd_cc>"001111" then en_up<='1'; opendoor<='0';elsif dd_cc<"001000" then en_dw<='1'; opendoor<='0';end if;elsif d44='1' or c_d44='1' then d44<='0'; c_d44<='0'; opendoor<='1';elsif dd_cc<"001000" then en_dw<='1'; opendoor<='0';elsif dd_cc>"001111" then en_up<='1'; opendoor<='0';end if;elsif g5='1' then led<="0100100"; --电梯到达5楼,数码管显示5if updown='1' thenif d55='1' or c_u55='1' then d55<='0'; c_u55<='0';opendoor<='1';elsif dd_cc>"011111" then en_up<='1'; opendoor<='0';elsif dd_cc<"010000" then en_dw<='1'; opendoor<='0';end if;elsif d55='1' or c_d55='1' then d55<='0'; c_d55<='0';opendoor<='1';elsif dd_cc<"010000" then en_dw<='1'; opendoor<='0';elsif dd_cc>"011111" then en_up<='1'; opendoor<='0';end if;elsif g6='1' then led<="0100000"; --电梯到达6楼,数码管显示6 if d66='1' or c_d66='1' then d66<='0'; c_d66<='0';opendoor<='1';elsif dd_cc<"100000" then en_dw<='1'; opendoor<='0';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;电梯程序仿真注:由于以上输入信号在下面仿真中没用到,所以在下面仿真图中将不再出现。
C语言电梯模拟程序
C语言电梯模拟程序C语言电梯模拟程序一直以来我对电梯很感兴趣,起初认为用C语言不可能实现电梯模拟,需要多线程的支持,因此一直以来也没有想着做。
最近数据结构习题书的这道题引起了我的注意,通过几天的努力终于实现了,先将程序的实现与大家分享出来。
在这个程序关键是处理好电梯运行状态转换与乘客进出的同步进行。
好在题目要求每次输入时要输入下一个乘客到来的时间,使得程序变简单了。
通过一个模拟时钟,根据模拟时钟判断该运行哪个函数。
以下是模拟时钟的代码。
[cpp]view plaincopy1.void DoTime(){2.//此函数用于模拟时钟3.while(1){4.if(Time>MaxTime)5.return;6. TestPeople();//两个始终都会被调用的函数7. Controler();8.struct Activity* p=activity.next;9.if(p==NULL){10. Time=MaxTime;11. }12.if(p&&Time>=p->time){//取出活动队头的,检测定时是否到了13. activity.next=p->next;14. p->fn();15. free(p);16. }17. Time++;18. }19.}在这个先不管TestPeople()、Controler()是什么,其中activity是关键,它是一个链表在链表的头部是计时器时间最小的函数,根据模拟时钟判断是否调用这个函数以及删除这个节点。
以下是Activity的具体定义。
[cpp]view plaincopy1.typedef struct Activity{2.int time;3.void(*fn)(void);4.struct Activity* next;5.}Activity;以及全局变量activity[cpp]view plaincopy1.Activity activity={0,NULL,NULL};下面的代码用于将一个函数加入activity链表,这是根据时钟值从小到大插入activity的。
2020年(建筑工程管理)高层建筑电梯仿真程序运行情况总结报告
(建筑工程管理)高层建筑电梯仿真程序运行情况总结报告运行情况总结报告一、小数据测试结果1. 要求用户输入K、N、M、S和T的值,如下所示:2. 第1秒仿真结果如下:3. 第2秒仿真结果如下:4. 第8秒仿真结果如下:5. 第14秒仿真结果如下:6. 第17秒仿真结果如下:7. 第1143秒仿真结果如下:8. 第1557秒仿真结果如下:9. 第1558秒仿真结果如下:10. 第1559秒仿真结果如下:11. 第1560秒仿真结果如下:12. 第1561秒仿真结果如下:13. 最终统计结果如下:二、中等数据测试结果1. 要求用户输入K、N、M、S和T的值,如下所示:2. 第1秒仿真结果如下:3. 第15秒仿真结果如下:4. 第38秒仿真结果如下:5. 第101秒仿真结果如下:6. 第147秒仿真结果如下:7. 第259秒仿真结果如下:8. 第2562秒仿真结果如下:9. 第2566秒仿真结果如下:10. 第2567秒仿真结果如下:11. 第2568秒仿真结果如下:12. 第2569秒仿真结果如下:13. 第2570秒仿真结果如下:14. 最终统计结果如下:三、大型数据测试结果1. 要求用户输入K、N、M、S和T的值,如下所示:2. 第1秒仿真结果如下:3. 第14秒仿真结果如下:4. 第33秒仿真结果如下:5. 第110秒仿真结果如下:6. 第12153秒仿真结果如下:7. 第12154秒仿真结果如下:8. 第12160秒仿真结果如下:9. 第12161秒仿真结果如下:10. 第12164秒仿真结果如下:11. 第12165秒仿真结果如下:12. 最终统计结果如下:四、运行结果总结通过对上述三种不同规模的数据的分析可得出,该高层建筑电梯仿真程序运行结果正确。
2019年基于单片机的电梯仿真程序课程设计.doc
二○一四~二○一五学年第一学期信息科学与工程学院自动化系课程设计报告书姓名:余义学号:201204134019班级:自动化1201班课程名称:微机原理与应用课程设计指导教师:程磊目录(一)前言 (1)(二)现代电梯概述 (3)(三)硬件部分设计 (6)(四)软件部分设计 (12)(五)电梯运行界面 (52)(六)设计总结与感悟 (56)(七)参考文献 (57)电梯仿真程序一、前言:本电梯仿真程序采用的是一个基于单片机及其相关外设,编程语言采用汇编与C语言结合的方式,通过矩阵键盘线反选法输入楼层,上、下行等控制信号,经I\O口读入,进行相关实时控制,软硬件结合的仿真系统,输出设备包括由CD4511驱动显示楼层的7段数码管,显示实时信息的显示屏LCD12864,由PWM控制显示电梯门开关的舵机,以及由I\O口间接控制的驱动电机正反转双桥驱动电路等几个部分组成。
可以实现真实电梯中,任意层呼叫,目的层到达按要求顺序到达,开关门,无输入自动回1层等一系列功能,并实时显示当前电梯运行状态,关于真实电梯门控光幕装置,电机自动抱闸平层等部分,由于知识不足,没有足一实现,但会在接下来的专业知识学习过程中不断完善,同时也希望得到程老师的指导。
二、现代电梯概述:电梯是一种以电动机为动力的垂直升降机,装有箱状吊舱,用于多层建筑乘人或载运货物。
也有台阶式,踏步板装在履带上连续运行,俗称自动电梯。
服务于规定楼层的固定式升降设备。
它具有一个轿厢,运行在至少两列垂直的或倾斜角小于15°的刚性导轨之间。
轿厢尺寸与结构形式便于乘客出入或装卸货物,本次微机课程设计电梯仿真选用的是垂直升降梯。
2.1、电梯功能现代电梯主要由曳引机(绞车)、导轨、对重装置、安全装置(如限速器、安全钳和缓冲器等)、信号操纵系统、轿厢与厅门等组成。
这些部分分别安装在建筑物的井道和机房中。
通常采用钢丝绳摩擦传动,钢丝绳绕过曳引轮,两端分别连接轿厢和平衡重,电动机驱动曳引轮使轿厢升降。
基于FPGA的电梯控制系统的仿真图(附程序)
系统主体模块的设计与仿真本设计是以9层的电梯控制系统为模型。
主要实现电梯运行开关的控制,楼层的请求,电梯运行遵循的方向优先原则,提前、延时开关门等基本的功能。
以下是对不同的状态进行仿真,以验证本设计的可行性。
电梯进入运行状态控制进程,通过判断上升、下降请求寄存器每一位的值,决定电梯运行状态,并通过状态指示信号输出该状态,本设计都是使用高电平触发。
(1)当电梯处于1楼时,上升请求:图4.1 电梯处于第一层时仿真图(2)提前/延时关门功能没有提前/延时关门时的情况下:图4.2 没有提前/延时关门时的仿真图从图4.2知道,运行或停止输出信号“lamp”为高电平时电梯进入运行状态,低电平时停止。
圈内显示电梯在75.36us后从停止状态转入运行状态。
当设置提前关门“close”为高电平时:图4.3 有提前关门时的仿真图图4.3与图4.2对比可知,由于设置了提前关门进程“close”,电梯提前到75.36us 以前从停止状态转入运行状态。
2当设置了延时关门“delay”为高电平时:图4.4 延时关门时的仿真图图4.4与图4.2对比可知,由于设置了延时关门进程“delay”,电梯延时到80.48us 后才从停止状态转入运行状态。
(3)当电梯处于较高层数时图4.5 电梯处于较高层数时的仿真图(5)电梯轿厢内楼层选择开关功能仿真图4.6 轿厢内楼层选择开关仿真图4(4)电梯的次态功能仿真如图4.7所示,当运行或等待时间“run_wait”计数到0110时,电梯运行状态变量“ladd”给出电梯的下一个状态。
如图 4.7圈内显示,“ladd”从0显示模块的设计与仿真图4.8 显示模块仿真图本设计的显示模块一共有3个显示部分,分别是电梯运行/等待时间显示run_wait、楼层选择指示direct以及所在楼层批示st_out。
这3个显示部分的设计结构都是一样的,所以以其中一个仿真作为例子。
从图4.8圈内看到,当电梯处于楼层2时,ledin收到信号‘0010’,经过系统内部自动转化为‘1011011’并通过ledout输出到共阴极LED数码显示。
组态王仿真电梯内含可应用程序
以下为组态王电梯仿真程序在应用命令语言中输入:if(SN1==1||SN2==1||SN3==1||SN4==1){F5=0;}if(DN4==0&&DN3==0&&DN2==0&&UN1==0&&UN2==0&&UN3==0&&SN1==0&&SN2= =0&&SN3==0&&SN4==0&&F5>10&&J轿厢>0){J轿厢=J轿厢-3;}if((DN4==1||DN3==1||DN2==1||UN2==1||UN3==1||SN2==1||SN3==1||SN4==1)&&FM1>0&&F 1>0){FM1=FM1-10;UPN=1;DOWNN=0;F5=0;}if((DN4==1||DN3==1||DN2==1||UN2==1||UN3==1||SN2==1||SN3==1||SN4==1)&&FM1==0&& FM2==0&&FM3==0&&FM4==0&&UPN==1&&F5==0){J轿厢=J轿厢+3;}if(J轿厢==33&&(UN2==1||SN2==1||(DN2==1&&UN3==0&&SN3==0&&SN4==0&&DN3==0&&DN4 ==0))&&UPN==1){if(FM2<=50&&F2==0){FM2=FM2+10;}if(F2>10){FM2=FM2-10;if(FM2==0){F2=0;UN2=0;S N2=0;if(DN2==1&&UN3==0&&SN3==0&&SN4==0&&DN3==0&&DN4==0){DN2=0;}}}} if(J轿厢==33&&FM2==0&&UN3==0&&SN3==0&&SN4==0&&DN3==0&&DN4==0) {DOWNN=1;UPN=0;}if(J轿厢==66&&(UN3==1||SN3==1||(DN3==1&&SN4==0&&DN4==0))&&UPN==1){if(FM3<=50&&F3==0){FM3=FM3+10;}if(F3>10){FM3=FM3-10;if(FM3==0){F3=0;UN3=0;S N3=0;if(DN3==1&&SN4==0&&DN4==0){DN3=0;}}}}if(J轿厢==66&&FM3==0&&SN4==0&&DN4==0){DOWNN=1;UPN=0;}if(((J轿厢==66&&FM3==0)||(J轿厢==33&&FM2==0))&&(F6>2||F5>0)&&(SN1==0&&SN2==0&&SN3==0&&SN4==0)){F6=0;F 5=F5+1;}if(F2>0||F3>0){F6=F6+1;}if(FM1==0&&FM2==0&&FM3==0&&FM4==0&&DOWNN==1&&F5==0){J轿厢=J轿厢-3;}if(J轿厢==99){if(FM4<=50&&F4==0){FM4=FM4+10;}if(F4>10){FM4=FM4-10;if(FM4==0){F4=0;SN4=0;D N4=0;DOWNN=1;UPN=0;J轿厢=J轿厢-3;F5=0;F6=0;}}}if(J轿厢==66&&(DN3==1||SN3==1||(UN3==1&&SN1==0&&SN2==0&&UN1==0&&UN2==0&&DN2 ==0))&&DOWNN==1){if(FM3<=50&&F3==0){FM3=FM3+10;}if(F3>10){FM3=FM3-10;if(FM3==0){F3=0;DN3=0;S N3=0;if(UN3==1&&SN1==0&&SN2==0&&UN1==0&&UN2==0&&DN2==0){UN3=0;}}}} if(J轿厢==66&&FM3==0&&SN1==0&&SN2==0&&UN1==0&&UN2==0&&DN2==0&&(SN4==1||D N4==1)){DOWNN=0;UPN=1;}if(J轿厢==33&&(DN2==1||SN2==1||(UN2==1&&SN1==0&&UN1==0))&&DOWNN==1){if(FM2<=50&&F2==0){FM2=FM2+10;}if(F2>10){FM2=FM2-10;if(FM2==0){F2=0;DN2=0;S N2=0;if(UN2==1&&SN1==0&&UN1==0){UN2=0;}}}}if(J轿厢==33&&FM2==0&&SN1==0&&UN1==0&&((SN4==1||DN4==1)||(SN3==1||DN3==1||UN3==1 ))){DOWNN=0;UPN=1;}if(J轿厢==0){if(FM1<=50&&F1==0){FM1=FM1+10;}if(FM1==0){SN1=0;UN1=0;}}if(J轿厢>0){F1=0;}if(J轿厢<33){L1=1;L2=0;L3=0;L4=0;}if(J轿厢<66&&J轿厢>=33){L2=1;L1=0;L3=0;L4=0;}if(J轿厢<99&&J轿厢>=66){L3=1;L2=0;L1=0;L4=0;}if(J轿厢==99){L4=1;L3=0;L2=0;L1=0;}。
电梯远程监控仿真程序
电梯远程监控仿真程序一、背景介绍电梯作为现代城市生活中不可或缺的交通工具,其安全性备受关注。
为了保障电梯运行的安全和稳定,需要对电梯进行监控。
而传统的电梯监控方式存在一些局限性,如监控范围有限、数据处理效率低等问题。
因此,远程电梯监控系统应运而生。
二、远程电梯监控系统的优势1. 实时监控:通过网络连接,可以实时地对电梯进行监控,及时发现故障并采取相应的应对措施。
2. 多点遥测:远程电梯监控系统可以同时对多台电梯进行遥测,大大提高了数据处理效率。
3. 远程升级:系统可以通过网络进行升级和维护,方便快捷。
4. 数据存储:系统可以将历史数据存储在服务器上,并支持数据分析和查询。
三、仿真程序设计要求为了更好地理解和研究远程电梯监控系统,需要设计一个仿真程序来模拟实际情况。
以下是仿真程序设计的要求:1. 程序应能够模拟多台电梯的运行情况,并能够采集电梯的运行数据。
2. 程序应支持远程监控,能够通过网络对电梯进行实时监控和故障诊断。
3. 程序应具备数据存储和分析功能,能够将历史数据存储在服务器上,并支持数据分析和查询。
4. 程序应具备可扩展性,可以根据需要添加新功能。
四、仿真程序设计流程1. 设计数据库:建立数据库,用于存储电梯的相关信息和历史数据。
2. 设计界面:设计用户界面,包括登录界面、主界面等。
3. 设计监控模块:模拟多台电梯的运行情况,并采集电梯的运行数据。
同时,通过网络实现远程监控功能。
4. 设计数据存储和分析模块:将采集到的历史数据存储在服务器上,并支持数据分析和查询功能。
同时,可以根据需要添加新的数据处理算法。
5. 设计报警模块:当电梯出现故障时,系统会自动发出警报并通知相关人员。
五、仿真程序开发技术1. 数据库技术:使用MySQL等关系型数据库管理系统进行数据库设计和管理。
2. 界面技术:使用Java Swing等图形用户界面开发工具进行界面设计和开发。
3. 网络技术:使用Java Socket等网络编程技术实现远程监控功能。
毕业设计PLC四层电梯内含组态王仿真程序
基于PLC电梯控制系统设计摘要目前电梯控制系统主要有三种控制方式:继电器控制系统、PLC控制系统、微机控制系统。
PLC控制系统由于运行可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点,倍受人们重视,已成为目前在电梯控制系统中使用最多的控制方式。
本文在阐述电梯的结构和可编程控制器的结构和工作原理的基础上,针对4层电梯,使用西门子S7-200可编程控制器,设计了电梯的控制系统,包括轿内指令和厅外召唤信号的登记与消除、电梯的选层和定向、电梯的开关门运行、电梯上下行控制、电梯的指层控制等部分,实现了轿内与各层呼梯指令的记录、电梯运行方向和选层的控制,电梯上下行和自动开关门、电梯的指层控制等功能。
同时也使用了组态王6.53完成上位机对PLC控制电梯的仿真。
关键词:四层电梯控制系统可编程控制器组态王PLC-based elevator control system designAbstractAt present the elevator control system mainly has three control modes: Following electric circuit control system, PLC (Programmable Logic Controller) control system, microcomputer control system. PLC control system, because moves the reliability to be high, the use service is convenient, anti-jamming, the design and the debugging cycle is short and so on merits, time is taken seriously the people and so on merits, have become present use most control modes in the elevator control system.This article elaborated the elevator structure,the structure and the working principle of the programmable logic controller.Aim at the elevator of four floors,the writer design this elevator control system by the use of Siemens S7-200 programmable logic controller.The writer design the elevator control parts, such as, the part of register and cancel the instructions from the cabin, the part of register and cancel the instructions from the station hall, the part of choose station and direction, the part of door movement,the part of elevator operation,the part of shown layer ,and so on.These parts achieve the functions:registering the instructions from the cabin and the station hall, choosing the direction and the station of elevator,elevator go up or down and door automatically,fingering out the location of the cabin, and other functions.Also use kingview 6.53 complete pc to plc control elevator simulation.Key Words:Four-story Elevator; Control System ;ProgrammableLogic Controller; kingview目录摘要 (I)Abstract ........................................................... I I 第一章绪论.. (1)1.1 电梯的国内外发展状况 (1)1.2课题的研究背景及意义 (2)1.3 PLC在电梯控制中的应用以及发展前景 (3)1.4课题研究的内容 (5)第二章电梯的综述 (6)2.1电梯的结构及组成部件 (6)2.2电梯的种类 (7)2.3电梯的主要参数及性能指标 (7)第三章运行方案设计 (10)3.1 总体方案的确定 (10)3.2 PLC控制系统方案设计 (10)3.3 电梯曳引方案 (11)第四章硬件选型、设计及计算 (12)4.1 四层电梯曳引电机及门电机电路图 (12)4.2 可编程控制器(PLC)的选择 (12)4.2.1 可编程控制器(PLC)的特点 (12)4.2.2 轿厢楼层位置检测方法 (13)4.2.3 PLC的选型 (14)4.3 变频器的选择 (15)4.3.1 变频器的原理 (16)4.3.2 变频器的选择 (17)4.3.3 VS-616G5型变频器的特点 (17)4.3.4 VS-616G5型变频器的结构及参数设置 (18)4.3.5 变频器自学习功能的应用方法 (19)4.3.6 变频器容量及制动电阻参数的计算 (19)第五章软件设计 (22)5.1 电梯控制系统的主流程图 (22)5.2 梯形图 (23)5.2.1外召唤信号登记及消除 (23)5.2.2内指令信号登记及消除 (24)5.2.3电梯的平层信号处理 (25)5.2.4选层定向及反向截梯 (25)5.2.6各楼层停车信号 (30)5.2.7自动开关门 (30)第六章上位机组态监控软件 (33)6.1 上位机软件设计概述 (33)6.2 设计监控画面 (35)6.3 定义数据变量 (36)6.4 变量动画连接 (37)6.5 应用程序命令 (39)6.6 动画演示 (42)第七章结论与展望 (43)7.1 结论 (43)7.2 展望电梯发展方向 (43)参考文献 (44)致谢 (45)附录1 语句表 (46)附录2 英语原文 (51)附录3 中文翻译 (61)华东交通大学毕业设计(论文)第一章绪论1.1电梯的国内外发展状况在经济不断发展,科学技术日新月异的今天,楼的高度已和经济发展同样的速度成长起来。
2024版基于51单片机的电梯仿真系统(仿真程序PPT)
51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。
51单片机结构和工作原理
51单片机的结构
51单片机主要由中央处理器(CPU)、存储器(RAM和ROM)、特殊功能寄存器(SFR)、定 时器/计数器(T0和T1)、中断系统、I/O端口(P0、P1、P2、P3)以及串行通信接口(SCI)
基于51单片机的电梯仿真 系统(仿真程序PPT)
目录
• 引言 • 51单片机基础知识 • 电梯仿真系统设计 • 电梯仿真系统实现 • 电梯仿真系统优化与改进 • 总结与展望
01
引言
目的和背景
电梯在现代社会中的普及和使用频率,使得电梯控制系统的设计和优化变 得至关重要。
传统电梯控制系统存在诸多局限性,如布线复杂、维护困难等,因此研究 基于单片机的电梯控制系统具有重要意义。
提升运行效率
通过优化算法,减少程序运行时间,使电梯响 应更快。
降低资源消耗
合理利用单片机资源,如内存、CPU等,避免 资源浪费。
增强稳定性
采用容错机制,确保电梯在异常情况下仍能稳定运行。
功能扩展
多电梯协同
实现多台电梯的协同工作,提高运输效率。
语音识别与控制
集成语音识别技术,方便用户通过语音控制 电梯。
楼层导航
增加楼层导航功能,引导乘客快速找到目的 楼层。
用户体验提升
01
界面优化
改进用户界面,使其更加直观、 易用。
02
03
响应速度提升
个性化服务
优化程序响应速度,减少用户等 待时间。
提供个性化设置选项,如语音提 示、背景音乐等,满足不同用户 需求。
06
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void PressOpen_CloseButton(int operate);//电梯内部开合控制按钮
void PressAlert();//电梯内部报警按钮
void run();//电梯运行
~CElevator();//析构函数
protected:
void OpenElevator();//打开电梯
void CloseElevator();//关闭电梯
void UserOperate();//由于程序单线程运行,因此将用户的所有操作集中在每一层停止的时候完成。
const int UpperLayers; //电梯最高能到达的楼层
int OuterUpButton[MostLayers];//整形数组,i为楼层且i!=0,i<0时下标i-LowerLayers表示电梯外i层向上按钮是否被按下,i>0,i-LowerLayers-1表示电梯外i层向上按钮是否被按下,0未按,1按下
};
(2)类实现:根据上面类的定义,写出CElevator的实现。
void UserOperate();//由于程序单线程运行,因此将用户的所有操作集中在每一层停止的时候完成。
const int UpperLayers; //电梯最高能到达的楼层
const int LowerLayers; //电梯最低能到达的楼层
int States[5]; //电梯当前状态,States[0]表示运行或停止,0停止,1运行,初值0;States[1]表示当前所在楼层,初值1;States[2]表示运行方向,向上0,向下1,初值0;States[3]表示开合,0开,0合,初值1;States[4]表示是否故障,0正常,1故障,初值1
void PressAlert();//电梯内部报警按钮
void run();//电梯运行
~CElevator();//析构函数
protected:
void OpenElevator();//打开电梯
void CloseElevator();//关闭电梯
States[1] = 1;//初始楼层在楼
States[2] = 0;//初始方向为向上
② 如果采用“MFC应用程序”等具有并发或多线程的程序设计模式,将会和现实情况比较类似,但还会有所不同,也要进行合理简化。
设计方案三
1.功能要求(需求分析)
以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。
2.类设计
根据第一步中获得的电梯运行情况,抽象电梯类(CElevator),设计CElevator类的成员函数和数据成员,完成CElevator类的完整定义及实现。
② 如果采用“MFC应用程序”等具有并发或多线程的程序设计模式,将会和现实情况比较类似,但还会有所不同,也要进行合理简化。
设计方案二
1.功能要求(需求分析)
以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。
2.类设计
根据第一步中获得的电梯运行情况,抽象电梯类(CElevator),设计CElevator类的成员函数和数据成员,完成CElevator类的完整定义及实现。
(1)类定义如下
const int MostLayers = 100;
class CElevator
{
public:
CElevator();//构造函数
CElevator(int uLayers, int lLayers);//构造函数
CElevatoபைடு நூலகம்(CElevator &myElevator);//拷贝构造函数
int DigitalButton[MostLayers];//整形数组,i为楼层且i!=0,i<0时下标i-LowerLayers表示电梯内地下i楼层按钮是否被按下,i>0,i-LowerLayers-1表示电梯内地上i楼层按钮是否被按下,0未按,1按下
int OuterDownButton[MostLayers];//整形数组,i为楼层且i!=0,i<0时下标i-LowerLayers表示电梯外i层向下按钮是否被按下,i>0,i-LowerLayers-1表示电梯外i层向下按钮是否被按下,0未按,1按下
5.思考
面向对象程序设计思想。
6.其它说明
① 在电梯仿真程序设计中共给出了5种不同方案(包括功能要求与设计提示),其对设计者程序设计能力要求依次递减。设计者在学习时最好先从第一种方案开始,如果有难度,再看第二种方案,依次类推,以锻炼程序设计能力。
② 仿真程序可用纯C++实现,也可采用Visual C++或.NET实现。但实现结果会有不同,采用Visual C++或.NET实现更容易接近现实。
⑤ 电梯内部报警操作PressAlert,函数自行定义
⑥ 电梯运行run,函数自行定义
(2)数据成员
① 电梯最高能到达的楼层,UpperLayers; //电梯最高能到达的楼层
② 电梯最低能到达的楼层LowerLayers; //电梯最低能到达的楼层
③ 电梯状态States[5]; //运行或停止;当前所在楼层;运行方向;开合;是否故障
④ DigitalButton[MostLayers];//整形数组,记录电梯内i楼层是否被按下
⑤ OuterDownButton[MostLayers];//整形数组,记录电梯外i楼层向下按钮是否被按下
⑥ OuterUpButton[MostLayers];//整形数组,记录电梯外i楼层向上按钮是否被按下
int OuterUpButton[MostLayers];//整形数组,i为楼层且i!=0,i<0时下标i-LowerLayers表示电梯外i层向上按钮是否被按下,i>0,i-LowerLayers-1表示电梯外i层向上按钮是否被按下,0未按,1按下
};
(2)类实现
// CElevator.cpp
3.应用
编写应用程序,使用电梯类,比较仿真程序与现实中电梯运行状况的异同。
4.其它说明
① 如果采用“Windows控制台应用程序”设计仿真程序,其运行状况必定会和现实有所差异,因为现实中多种情况是并发发生的,如电梯内、电梯外各楼层会有人同时按按钮。而控制台程序一个时刻只能一件事情发生。因此需要对电梯运行情况进行合理简化。
3.应用
编写应用程序,使用电梯类,比较仿真程序与现实中电梯运行状况的异同。
4.其它说明
① 如果采用“Windows控制台应用程序”设计仿真程序,其运行状况必定会和现实有所差异,因为现实中多种情况是并发发生的,如电梯内、电梯外各楼层会有人同时按按钮。而控制台程序一个时刻只能一件事情发生。因此需要对电梯运行情况进行合理简化。
③ 附有完整的实现代码。
设计方案一
1.功能要求(需求分析)
以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。
2.类设计
根据第一步中获得的电梯运行情况,抽象电梯类(CElevator),设计CElevator的成员函数和数据成员,完成CElevator类的完整定义及实现。
const int LowerLayers; //电梯最低能到达的楼层
int States[5]; //电梯当前状态,States[0]表示运行或停止,0停止,1运行,初值0;States[1]表示当前所在楼层,初值1;States[2]表示运行方向,向上0,向下1,初值0;States[3]表示开合,0开,0合,初值1;States[4]表示是否故障,0正常,1故障,初值1
⑦ MostLayers为常数
3.应用
编写应用程序,使用电梯类,比较仿真程序与现实中电梯运行状况的异同。
4.其它说明
① 如果采用“Windows控制台应用程序”设计仿真程序,其运行状况必定会和现实有所差异,因为现实中多种情况是并发发生的,如电梯内、电梯外各楼层会有人同时按按钮。而控制台程序一个时刻只能一件事情发生。因此需要对电梯运行情况进行合理简化。
void PressOuterButton(int direction, int floor);//电梯外部各楼层操作按钮
void PressInnerDigitalButton(int floor);//电梯内部数字按钮
void PressOpen_CloseButton(int operate);//电梯内部开合控制按钮
② 如果采用“MFC应用程序”等具有并发或多线程的程序设计模式,将会和现实情况比较类似,但还会有所不同,也要进行合理简化。
设计方案四
1.功能要求(需求分析)
以现实生活中的电梯为原型,进行需求调查,了解电梯的各个功能。
2.类设计
根据第一步中获得的电梯运行情况,抽象电梯类(CElevator),设计CElevator类的成员函数和数据成员,完成CElevator类的完整定义及实现。
CElevator(CElevator &myElevator);//拷贝构造函数
void PressOuterButton(int direction, int floor);//电梯外部各楼层操作按钮
void PressInnerDigitalButton(int floor);//电梯内部数字按钮
(1)类定义如下
// CElevator.h
const int MostLayers = 100;
class CElevator
{
public:
CElevator();//构造函数
CElevator(int uLayers, int lLayers);//构造函数