电梯仿真系统报告
《2024年基于PLC的电梯控制系统的设计与仿真》范文

《基于PLC的电梯控制系统的设计与仿真》篇一一、引言随着城市化的不断推进,电梯已经成为人们日常生活中不可或缺的交通工具。
电梯控制系统的稳定性和安全性对于保障人们的生命财产安全具有重要意义。
本文将详细介绍基于PLC (Programmable Logic Controller)的电梯控制系统的设计与仿真过程,包括系统需求分析、硬件设计、软件设计、仿真验证及结论等部分。
二、系统需求分析在电梯控制系统的设计过程中,首先需要进行系统需求分析。
这一阶段主要明确电梯控制系统的功能需求、性能指标以及安全要求。
1. 功能需求:电梯控制系统需要实现的基本功能包括呼梯响应、平层停车、方向控制、开门关门等。
此外,还需具备紧急停止、故障自检等安全保护功能。
2. 性能指标:电梯控制系统的响应速度、稳定性和安全性是主要的性能指标。
在保证系统稳定性的前提下,要尽可能提高响应速度,以提升乘客的舒适度。
3. 安全要求:电梯控制系统应满足相关的安全标准,如防撞、防夹等,并能在故障发生时及时报警并采取相应措施,确保乘客的安全。
三、硬件设计硬件设计是电梯控制系统设计的重要组成部分,主要包括PLC的选择、传感器和执行器的配置以及电气线路的布局等。
1. PLC选择:PLC是电梯控制系统的核心部件,负责接收和处理各种信号,控制电梯的运行。
选择合适的PLC需要考虑其处理速度、存储容量、I/O接口等因素。
2. 传感器和执行器配置:传感器用于检测电梯的状态和位置,如门开关状态、呼梯信号等。
执行器则用于控制电梯的运行,如电机驱动器等。
需要根据电梯的实际情况配置合适的传感器和执行器。
3. 电气线路布局:电气线路的布局要遵循安全、可靠、易维护的原则,确保信号传输的稳定性和抗干扰能力。
四、软件设计软件设计是电梯控制系统设计的另一关键部分,主要包括PLC程序的编写和调试等。
1. PLC程序设计:根据电梯控制系统的功能需求和硬件配置,编写相应的PLC程序。
程序应具备响应速度快、稳定性好、可维护性高等特点。
《2024年基于PLC的电梯控制系统的设计与仿真》范文

《基于PLC的电梯控制系统的设计与仿真》篇一一、引言随着城市化的不断推进,电梯在各类建筑物中已成为必不可少的运输工具。
其高效稳定的运行方式离不开精确可靠的控制系统。
传统上,电梯控制系统的设计与调试依赖于人工调试与物理试验,这种方法耗时耗力,并且效果不易达到理想状态。
而基于可编程逻辑控制器(PLC)的电梯控制系统设计与仿真则提供了更加高效、精确的解决方案。
本文将详细介绍基于PLC的电梯控制系统的设计与仿真过程。
二、系统设计1. 硬件设计基于PLC的电梯控制系统主要由PLC控制器、传感器、执行器等硬件组成。
其中,PLC控制器是整个系统的核心,负责接收电梯的各种输入信号,执行控制程序,输出控制信号。
传感器用于检测电梯的运行状态、门的状态等重要信息,执行器则根据PLC的指令进行开关门、启停等操作。
2. 软件设计软件设计主要包括PLC程序的编写与调试。
在编写程序时,需要充分考虑到电梯的各种运行情况,如上下行、开关门、超载等,确保电梯在各种情况下都能安全稳定地运行。
此外,还需要考虑到系统的实时性、稳定性等因素。
在调试阶段,需要使用仿真软件对程序进行测试,确保程序的正确性与可靠性。
三、系统仿真系统仿真是一种重要的测试手段,可以有效地验证控制系统的正确性与可靠性。
在基于PLC的电梯控制系统仿真中,我们使用了专业的仿真软件,对电梯的各个部分进行了详细的建模与仿真。
通过仿真,我们可以模拟出电梯在各种情况下的运行情况,如上下行、开关门、超载等,从而验证控制程序的正确性。
同时,我们还可以通过仿真来优化控制程序,提高电梯的运行效率与稳定性。
四、实验结果与分析通过实验与仿真,我们得到了以下结果:1. 电梯在各种情况下的运行情况均能得到良好的控制,证明了控制程序的正确性与可靠性。
2. 通过仿真优化后的控制程序,电梯的运行效率与稳定性得到了显著提高。
3. 系统的实时性得到了有效保障,确保了电梯在各种情况下的快速响应。
4. 整个系统具有较高的安全性能,可以有效地避免各种意外情况的发生。
模拟电梯模型设计总结及报告

目录1.系统方案设计与论证 (2)1.1设计要求 (2)1.2系统基本方案 (3)1.2.1系统硬件结构设计 (3)1.2.2总体实现方案的选择和论证 (3)1.2.1.1各个模块方案选择和论证 (3)1.2.1.1.1主控制器模块 (3)1.2.1.2电机驱动模块 (4)1.2.1.3平层检测模块 (4)1.2.1.4通信模块 (4)1.2.1.5备用电源模块 (4)1.2.1.6语音提示模块 (5)1.2.1.7人机交互模块 (5)2.系统硬件设计与实现 (5)2.1逻辑控制部分 (5)2.2后台监测控制部分 (6)2.2.1人机交互 (6)2.3通信 (6)2.4备用电源 (6)3.系统软件设计与实现 (7)3.1电梯运行逻辑 (7)4. 系统测试及实现功能 (8)5.结语 (9)附录 (9)附录1各部分原理图以及PCB图 (9)附录2部分程序清单 (12)摘要:电梯系统是运用于高层建筑的复杂运输设备。
它涉及机械工程、电子技术、电力电子技术、自动控制理论、微机技术、MCU 技术和土建工程等多个科学领域。
目前,我国是世界最大的新装电梯市场和最大的电梯生产国,而且还有着巨大的潜在市场和发展空间。
因此,深入学习和研究电梯控制系统有着重要的现实意义。
设计并制作了基于三个AVR单片机和直流电机的五层电梯模型控制系统,具体阐述了系统的总体结构、硬件设计和软件调试。
本着系统控制的理念,稳定可靠的原则,系统实现了题目要求的各种基本功能,在保证系统稳定性和可靠性的基础上,电梯模型实现了语音提示、语音命令、电源切换等拓展功能。
各项测试结果表明该电梯模型系统可靠性高、系统成本低、人机交互性良好,较为真实的模拟出一台单厢电梯模型控制系统的运行状况,对实际电梯的控制系统设计有一定借鉴意义。
ABSTRACT:The elevator system is utilizes in the high-rise construction complex transport vehicle. It involves the mechanical engineering, the electronic technology, the electric power electronic technology, the automatic control theory, the microcomputer technology, the MCU technology and the civil engineering and so on many scientific fields. At present, our country is the world biggest new clothing elevator market and the biggest elevator producer country, moreover also has the giant potential market and the development opportunities. Therefore, the thorough study and the research lift control system has the vital practical significance.designed and has manufactured based on three AVR monolithic integrated circuits and direct current machine's five elevator model control system, elaborated system's gross structure, the hardware design and the software debugging specifically. In line with systems control's idea, the stable reliable principle, the system has realized topic request each kind of basic function, in t 1.系统方案设计与论证1.1设计要求基本要求:1.当某层有呼叫并有呼叫信号显示时,轿厢模型作相应的运动,并准确平层,平层的位置误差 5mm。
单部电梯设计与仿真实验报告

单部电梯设计与仿真实验报告摘要:一、实验背景与目的二、实验内容及方法三、电梯系统原理与设计四、电梯控制系统设计五、电梯仿真实验与结果分析六、实验总结与展望正文:一、实验背景与目的随着城市化进程的加速,电梯已经成为现代建筑中不可或缺的设备之一。
电梯的设计与控制直接关系到乘客的安全与舒适。
本实验旨在通过设计与仿真实验,掌握电梯系统的工作原理,理解电梯控制系统的关键技术与实现方法。
二、实验内容及方法本实验主要分为两个部分:电梯系统原理与设计,电梯控制系统设计。
首先,通过查阅相关资料,了解电梯的种类、结构及工作原理;其次,根据实际需求,设计一部电梯,并实现其控制系统。
三、电梯系统原理与设计电梯系统主要包括曳引系统、导向系统、门系统、轿厢系统、安全保护系统等。
其中,曳引系统是电梯的动力来源,通过曳引绳与曳引轮的摩擦力驱动电梯运行;导向系统主要用于保证电梯在井道中的稳定运行;门系统则负责乘客的进出与安全;轿厢系统包括轿厢架、轿厢体、轿厢门等,是乘客乘坐的地方;安全保护系统则是确保电梯安全的关键部分,包括限速器、安全钳、缓冲器等。
四、电梯控制系统设计电梯控制系统是电梯的核心部分,主要负责电梯的起停、运行方向、速度以及楼层选择等功能。
本实验采用PLC(可编程逻辑控制器)实现电梯的控制,通过编写程序实现电梯的运行控制。
五、电梯仿真实验与结果分析在完成电梯系统与控制系统的设计后,进行仿真实验。
通过模拟电梯的运行过程,检验电梯系统与控制系统的性能。
实验结果表明,所设计的电梯系统与控制系统能够满足预期的功能要求。
六、实验总结与展望本实验通过对电梯系统与控制系统的设计与仿真实验,掌握了电梯的基本原理与关键技术,提高了实际工程应用能力。
系统建模与仿真实验报告

系统建模与仿真实验报告系统建模与仿真实验报告1. 引言系统建模与仿真是一种重要的工程方法,可以帮助工程师们更好地理解和预测系统的行为。
本实验旨在通过系统建模与仿真的方法,对某个实际系统进行分析和优化。
2. 实验背景本实验选择了一个电梯系统作为研究对象。
电梯系统是现代建筑中必不可少的设备,其运行效率和安全性对于整个建筑物的使用体验至关重要。
通过系统建模与仿真,我们可以探索电梯系统的运行规律,并提出优化方案。
3. 系统建模为了对电梯系统进行建模,我们首先需要确定系统的各个组成部分及其相互关系。
电梯系统通常由电梯、楼层按钮、控制器等组成。
我们可以将电梯系统抽象为一个状态机模型,其中电梯的状态包括运行、停止、开门、关门等,楼层按钮的状态则表示是否有人按下。
4. 仿真实验在建立了电梯系统的模型之后,我们可以通过仿真实验来模拟系统的运行过程。
通过设定不同的参数和初始条件,我们可以观察到系统在不同情况下的行为。
例如,我们可以模拟电梯在高峰期和低峰期的运行情况,并比较它们的效率差异。
5. 仿真结果分析通过对仿真实验结果的分析,我们可以得出一些有价值的结论。
例如,我们可以观察到电梯在高峰期的运行效率较低,这可能是由于大量乘客同时使用电梯导致的。
为了提高电梯系统的运行效率,我们可以考虑增加电梯的数量或者改变乘客的行为规则。
6. 优化方案基于对仿真结果的分析,我们可以提出一些优化方案来改进电梯系统的性能。
例如,我们可以建议在高峰期增加电梯的数量,以减少乘客等待时间。
另外,我们还可以建议在电梯内设置更多的信息显示,以便乘客更好地了解电梯的运行状态。
7. 结论通过本次实验,我们深入了解了系统建模与仿真的方法,并应用于电梯系统的分析和优化。
系统建模与仿真是一种非常有用的工程方法,可以帮助我们更好地理解和改进各种复杂系统。
在未来的工作中,我们可以进一步研究和优化电梯系统,并将系统建模与仿真应用于更多的实际问题中。
8. 致谢在本次实验中,我们受益于老师和同学们的帮助与支持,在此表示诚挚的感谢。
《2024年基于PLC的电梯控制系统的设计与仿真》范文

《基于PLC的电梯控制系统的设计与仿真》篇一一、引言随着城市化的不断推进,电梯已经成为人们日常生活中不可或缺的交通工具。
为了满足日益增长的电梯需求,提高电梯系统的安全性和可靠性,基于PLC(可编程逻辑控制器)的电梯控制系统得到了广泛的应用。
本文将详细介绍基于PLC的电梯控制系统的设计与仿真过程。
二、系统设计1. 硬件设计基于PLC的电梯控制系统主要由PLC控制器、电梯轿厢、门机系统、电动机、编码器等部分组成。
其中,PLC控制器作为核心部件,负责接收传感器信号、控制门机系统和电动机等设备。
硬件设计需根据实际需求和场地条件进行,同时需保证各部件之间的通信和电源供应稳定可靠。
2. 软件设计软件设计主要包括PLC程序设计和人机界面设计。
PLC程序设计需根据电梯的运作流程和安全要求进行编写,包括启动、运行、停止、开关门等动作的控制。
人机界面设计则需根据用户需求进行,包括显示电梯状态、楼层信息、故障提示等。
三、系统仿真为了验证设计的正确性和可靠性,需要进行系统仿真。
系统仿真可以采用专业的仿真软件进行,如MATLAB/Simulink等。
在仿真过程中,需根据实际运行情况设置仿真参数,如电梯的运行速度、加速度、停靠时间等。
同时,还需对电梯的各种安全保护措施进行仿真测试,如超载保护、防撞保护等。
四、仿真结果分析通过系统仿真,我们可以得到电梯控制系统的运行情况和各种性能指标。
首先,我们需要分析电梯的响应时间、运行速度等动态性能指标,确保其满足用户需求。
其次,我们需要对电梯的安全保护措施进行评估,确保在各种异常情况下,系统能够及时响应并采取相应的保护措施。
此外,我们还需要对系统的稳定性、可靠性等进行评估,确保系统在长期运行过程中能够保持稳定的性能和可靠性。
五、优化与改进根据仿真结果,我们可以对电梯控制系统进行优化和改进。
首先,针对响应时间、运行速度等动态性能指标不达标的情况,我们可以调整PLC程序中的控制算法,优化电动机的驱动方式等。
单部电梯设计与仿真实验报告
单部电梯设计与仿真实验报告
【原创版】
目录
1.实验目的
2.实验内容
3.实验设计
4.实验结果与分析
5.总结
正文
一、实验目的
本实验旨在通过设计与仿真实验,使学生深入理解电梯控制系统的工作原理,掌握电梯控制电路的设计方法,并提高学生的实际操作能力。
二、实验内容
本次实验主要分为两个部分:电梯控制电路设计与电梯运行仿真实验。
1.电梯控制电路设计:根据电梯的工作原理,设计出电梯控制电路,包括电梯的上下行控制、楼层显示、电梯门控制等部分。
2.电梯运行仿真实验:通过编写仿真程序,模拟电梯的运行过程,验证电梯控制电路的设计是否合理。
三、实验设计
1.硬件设计:搭建电梯控制电路的硬件平台,包括电源、电机、传感器、控制器等元器件。
2.软件设计:编写电梯控制电路的软件程序,实现电梯的自动控制。
3.仿真实验:使用仿真软件,模拟电梯的运行过程,观察电梯控制电
路的工作情况。
四、实验结果与分析
1.实验结果:在完成电梯控制电路设计和仿真实验后,电梯能够按照预期进行上下行运行,楼层显示和电梯门控制等功能也正常工作。
2.结果分析:通过实验结果可以得出,电梯控制电路设计合理,软件程序运行稳定,能够满足电梯的正常运行需求。
五、总结
本次实验使学生深入了解了电梯控制系统的工作原理,掌握了电梯控制电路的设计方法,并通过仿真实验验证了设计方案的可行性。
数据结构——电梯模拟的报告
数据结构——电梯模拟的报告数据结构——电梯模拟的报告⒈引言在现代社会,电梯已经成为了人们生活中不可或缺的一部分。
电梯的运行和调度涉及到众多复杂的算法和数据结构。
为了提高电梯的运行效率和用户体验,本报告将介绍一种电梯模拟的数据结构设计。
⒉背景和目标在城市高楼大厦中,电梯的运行和调度是一个极其重要的问题。
每天数以万计的乘客需要借助电梯上下楼,所以我们需要设计一种电梯调度算法来保证乘客能够快速、方便地到达目的地。
本报告旨在介绍一种基于数据结构的电梯模拟方案,提高电梯的运行效率和用户体验。
⒊系统架构在电梯模拟系统中,主要包括以下几个部分:电梯控制器、电梯队列、乘客请求队列和电梯状态管理模块。
电梯控制器负责接收乘客的请求并将其分配给特定的电梯,电梯队列记录电梯所在楼层和运行方向,乘客请求队列保存尚未得到满足的乘客请求,电梯状态管理模块负责监控电梯的状态和运行情况。
⒋数据结构设计⑴电梯队列电梯队列使用循环数组来保存电梯所在楼层和运行方向。
每个电梯对应一个循环数组,数组中的每个元素表示一个楼层的状态,包括空闲、上升和下降。
⑵乘客请求队列乘客请求队列使用链表来保存尚未得到满足的乘客请求。
每个节点表示一个乘客请求,包括乘客所在楼层和目标楼层。
⑶电梯状态管理模块电梯状态管理模块使用状态机来管理电梯的状态和运行情况。
状态机包括电梯的空闲状态、运行状态和停止状态。
⒌算法设计⑴电梯调度算法电梯调度算法负责根据乘客的请求选择最佳的电梯响应。
常用的电梯调度算法包括最短路径算法、最佳负载均衡算法等。
⑵电梯运行算法电梯运行算法负责根据电梯的状态和所运载乘客的请求,确定电梯下一步的行动。
常用的电梯运行算法包括最近停靠楼层算法、深度优先搜索算法等。
⒍实现和测试在本章节中,将介绍电梯模拟系统的实现细节和测试方法。
主要包括编程语言的选择、具体实现算法的具体实现和性能测试。
⒎总结和展望在本章节中,将总结本文提出的电梯模拟方案的优点和不足,提出可能的改进方向,并展望未来可能的研究方向。
数据结构——电梯模拟的报告
数据结构——电梯模拟的报告数据结构——电梯模拟的报告1. 简介本文档将介绍电梯模拟的实现过程和基本原理。
通过模拟电梯的行为,我们可以更好地理解数据结构在实际应用中的作用和效果。
2. 问题描述在楼房中,电梯通常被用来运送乘客。
电梯内部有多个按钮,表示不同楼层的乘客需求。
乘客可以按下按钮来请求乘坐电梯到达特定楼层。
电梯的运行顺序应该是合理的,比如不会从高楼层下降到低楼层。
本模拟的电梯系统需要满足以下要求:- 电梯能接收来自乘客的请求。
- 电梯能根据请求的楼层,按照合理的顺序运行,将乘客送到目标楼层。
- 当电梯到达目标楼层,乘客可以进入或离开电梯。
- 电梯需要实时更新运行状态,如目标楼层、当前楼层等。
3. 数据结构设计为了实现电梯模拟,我们需要设计合适的数据结构来存储电梯的状态和乘客请求。
以下是我们设计的关键数据结构:3.1 电梯状态电梯的状态包括当前楼层、目标楼层和运行方向等信息。
我们可以使用一个结构体来表示电梯的状态:```c++struct ElevatorState {int currentFloor;int targetFloor;Direction direction;};```其中,`currentFloor`表示当前所在楼层,`targetFloor`表示目标楼层,`direction`表示电梯的运行方向。
3.2 乘客请求乘客请求包括乘客所在楼层和目标楼层。
我们可以使用一个结构体来表示乘客请求:```c++struct Request {int fromFloor;int toFloor;};```其中,`fromFloor`表示乘客所在楼层,`toFloor`表示目标楼层。
3.3 电梯控制器电梯控制器用于管理电梯的状态和乘客请求。
我们可以使用一个队列来存储乘客请求,使用一个变量来保存电梯的当前状态。
以下是电梯控制器的设计:```c++class ElevatorController {private:std::queue<Request> requests;ElevatorState state;public:void addRequest(Request request);void processRequests();};```其中,`addRequest`方法用于添加乘客请求到队列中,`processRequests`用于处理乘客请求并控制电梯的运行。
仿真电梯实训报告
一、实训目的随着城市化进程的加快,电梯作为高层建筑中不可或缺的交通工具,其安全性、舒适性和智能化水平越来越受到人们的关注。
为了提高我国电梯行业从业人员的专业技能,本实训旨在通过仿真电梯系统的操作和调试,让学生掌握电梯的基本结构、工作原理和操作技能,提高学生的实际动手能力和故障排除能力。
二、实训时间2023年3月15日——2023年3月20日三、实训地点XX职业技术学院电气工程系电梯实训室四、实训内容1. 仿真电梯系统概述仿真电梯系统主要由以下几部分组成:控制系统、驱动系统、轿厢、门系统、井道等。
通过仿真电梯系统,学生可以了解电梯的基本结构和工作原理,掌握电梯的安装、调试和维护技能。
2. 仿真电梯控制系统操作(1)系统启动:打开电源,进入电梯控制系统界面。
(2)设置参数:根据实际需求设置电梯的运行参数,如速度、楼层、开门时间等。
(3)操作电梯:通过控制面板上的按钮进行电梯的启动、停止、开门、关门等操作。
(4)故障排除:根据电梯运行过程中的故障现象,分析故障原因,进行相应的处理。
3. 仿真电梯驱动系统操作(1)检查驱动系统:检查电机、电缆、减速器等部件的完好情况。
(2)调整驱动系统:根据实际需求调整驱动系统的参数,如电机转速、减速器传动比等。
(3)运行测试:启动电梯,进行驱动系统的运行测试,确保系统运行正常。
4. 仿真电梯轿厢、门系统和井道操作(1)检查轿厢、门系统和井道:检查轿厢、门系统和井道的完好情况。
(2)调整轿厢、门系统和井道:根据实际需求调整轿厢、门系统和井道的参数,如轿厢尺寸、门开合速度等。
(3)运行测试:启动电梯,进行轿厢、门系统和井道的运行测试,确保系统运行正常。
五、实训成果1. 学生掌握了仿真电梯的基本结构和工作原理。
2. 学生熟悉了仿真电梯控制系统的操作方法。
3. 学生具备了一定的故障排除能力。
4. 学生提高了实际动手能力和团队协作能力。
六、实训心得1. 仿真电梯实训有助于提高学生的专业技能,为今后从事电梯行业打下坚实基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象技术大作业---电梯方针系统设计 79号王洪伟电梯仿真系统设计题目要求:公司要建立一幢两层的办公大楼并装上“最新”的电梯。
公司要求开发一个面向对象的软件模拟程序,仿真电梯的操作,确定这个电梯能否满足需要。
这个电梯只限乘载一人,为了省电,只在需要时才使用,电梯每天在一楼关门等待。
模拟程序包括一个时钟,每天从时间0开始,每秒滴答一次。
模拟程序的调度器组件随机设置每一层第一个人到来的时间。
当时钟的时间等于第一个人到来的时间时,模拟程序对指定层生成一个新到的人并将人放在这一层。
然后这个人按下该层的按钮,请求电梯开门。
这个人的目的地楼层不能与他上电梯时所在的楼层相同。
如果第1个人到达第1层,则他可以按下按钮和等待电梯开门之后立即进入电梯。
如果第1个人在第2层,则电梯要升至第2层去接这个人。
电梯从1层移至2层需要5秒钟。
电梯到达一层时,打开该层的电梯门上的灯,并在电梯内发出铃声。
该层的按钮和电梯中中表示该层的按钮复位,电梯门打开,乘客(如果有人)走出电梯,另一乘客(如果有人等待)进入电梯并按下目的地楼层的按钮,电梯门关上。
如果电梯要开始移动,则要确定移动的方向(对只有两层的电梯很简单)并移到下一层,为了简单起见,假设电梯到达一层时发生所有事件,而且直到电梯门关上所花费的时间是0秒。
电梯总是知道在哪一层和要到哪一层的。
任何时间每层最多只能有一个人等待,如果新到的人(不在电梯中)要到达一层时该层已被占用,,则一秒后才能安排新的到达者。
第 1 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟假设每隔5到20秒人们随机到达每层。
这个题目的目标是实现一个能够工作的软件模拟程序,并根据这些要求运行。
该程序应模拟几分钟的电梯操作,确定电梯能否满足这座大楼的交通需求。
为了程序易于运行和操作,我在这个题目的基础上增加了一电梯的层数,和电梯能装的人数。
另外还做了一些限制:(1)电梯的运行规则是:可到达每层。
(2)仿真开始时,电梯处于第一层,为空梯。
(3)仿真开始后,有N人(>12人)在该国际贸易中心的1层,开始乘梯活动。
(4)每个人初次所要到达的楼层是随机的,开始在底层等待电梯到来。
(5)每个人乘坐电梯到达指定楼层后,再随机地去往另一楼层,依此类推。
(6)电梯运行的方向由先发出请求者决定,不允许后发出请求者改变电梯的当前运行方向,除非是未被请求的空梯。
(7)电梯仿真时间是T秒。
T秒后电梯模拟结束。
软件开发要求:设计一个易于理解的界面,动态显示各梯的载客与运行情况(上、下或停止),动态显示各楼层的人员停留情况与要求乘梯情况;动态显示从仿真开始到目前的时间。
系统分析、设计与实现:1、系统分析采用OOP分析的关键就是要对问题的对象空间的分类(类的分析第 2 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟与设计,这一点跟面向过程的流程图设计不太一样),也就是在整个系统中包括那几个类,每个类包含那些属性特征和行为特征。
对于上面的电梯问题,很明显有两个类:即电梯类和乘客类(从所设计到的对象描述可以观察到,但是有的问题即使这一步也要仔细分析)。
电梯类应该反映所有关于电梯状态和行为的信息,而乘客类也应该反映这些信息。
2、类的设计:乘客类:class Cpassenger{public:Cpassenger();//构造函数virtual ~Cpassenger();int number;//编号int counter,counter1;//计数器int iLifts;//乘坐过的次数int iToFloor;//目的楼层int iAtFloor;//所在楼层int iStartTime;//记录这个人第一次出现的时间int iRestTime;//坐电梯中间休息一段时间然后发信号的那段时间int iReachTime;//记录到达目的地的时间bool bSignal;//判断是否发出信号bool bInLift;//是否在电梯内部bool bUp;//判断是否要向上};第 3 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟电梯类:class Celevator{public:Celevator();virtual ~Celevator();bool bStop;//判断是否停在某层int iPassengers;//电梯内部的乘客数int iToFloor;//要去的楼层int iAtFloor;//所在楼层bool bStart;//开始仿真bool bUp;//判断是否向上运行};由于本程序应用的是基于对话框的MFC框架集,所以建立了基于CDialog类的CSimulationDlg类。
现在将类的头文件代码复制如下,中间做了说明。
class CSimulationDlg : public CDialog{// Constructionpublic:void PaintLiftLine();int M;//楼层数CSimulationDlg(CWnd* pParent = NULL); // standard constructor// Dialog Data//{{AFX_DATA(CSimulationDlg)第 4 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟enum { IDD = IDD_SIMULATION_DIALOG };// NOTE: the ClassWizard will add data members here//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CSimulationDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);//}}AFX_VIRTUAL// Implementationprotected:int i;//记录电梯门开关的每一幅动画。
int floor;//电梯应该到达的楼层CRect rect;//一个矩形区域CBitmap *bitmapr,*bitmapperson,*bgbitmap,*bitmap[30];//电梯CBitmap类、人CBitmap类、背景CBitmap类、电梯门开关动画CBitmap类CDC *md;int vy;//楼梯的y方向速度int vx;//楼梯的x方向速度int y;//楼梯的y位置int x;//楼梯的x位置int xp;//人的横坐标int yp[30];//每个人的纵坐标HICON m_hIcon;// Generated message map functions//{{AFX_MSG(CSimulationDlg) // DDX/DDV support第 5 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnCancelMode();afx_msg void OnReset();afx_msg void OnFloorEnter();//}}AFX_MSGDECLARE_MESSAGE_MAP()private:Cpassenger *m_passenger[30];//实例passenger类!Celevator m_elevator;//实例化电梯类int N;//人数int T;//总的模拟时间int FirstFloor;//第一层楼的位置int FloorHight;//楼层之间的高度int ElapseTime,dwTime,dwTimes,tempTime;//记录程序初始化时的时间、记录适时的时间、转化为以秒为单位的时间、时间临时使用变量。
bool beClosed;//电梯门是否关闭int toNearFloor,toNearFloor1,near_Temp,near_Temp1;//判断最近楼层的一些变量CString passengerat,passengerto,passengermessage;//显示一些信息的字符串变量 }; 还在形成对话框的时候进行了一系列的初始化,具体实现都放了OnInitDialog()函数中进行。
第 6 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟BOOL CSimulationDlg::OnInitDialog(){//初始化一系列变量M=10;//楼层数,改变这个数值就可以改变整个楼层的数量。
而且在界面上也可以很明显的显示出来。
效果很好。
FloorHight=40;//设置楼层与楼层之间高度为40个像素FirstFloor=M*FloorHight;//第一层就是最底层,在上面留出一个楼层的空间显示时间计数器。
所以第一层的位置是M*FloorHight。
x=252;//电梯初始所在x方向的位置。
xp=0;//人的x方向的位置y=FirstFloor;//电梯的y方向位置在第一层楼层所在的位置beClosed=true;//初始化电梯为关闭着的//下面一个for循环初始化每个人所在y方向的位置for(int m=0;m<30;m++){}vx=1;//在此没什么用,但是如果要楼层横向有移动的话就可以用此参数vy=1;//电梯在竖直方向上的运行速度v表示速度的意思floor=1;i=0;T=200;//总共的模拟时间单位是sN=5+rand()%7+1;//每天所要来的人随机设置为5~12个人dwTime=0;dwTimes=0;...... yp[m]=FirstFloor;第 7 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟//初始化电梯类和乘客类----------//初始化电梯类-------m_elevator.bStart=true;m_elevator.iAtFloor=1;m_elevator.iToFloor=1;m_elevator.iPassengers=0;m_elevator.bStop=true;//-------------------//初始化乘客类-------for(int j=0;j<30;j++){}ElapseTime=::GetTickCount();//记录初始时间SetTimer(1,100,NULL);//调用timer函数对程序进行计数显示SetTimer(3,100,NULL);//------------------------- m_passenger[j]=new Cpassenger; m_passenger[j]->bInLift=false; m_passenger[j]->bSignal=false; m_passenger[j]->bStart=false; m_passenger[j]->iLifts=0; m_passenger[j]->iAtFloor=1; m_passenger[j]->iStartTime=rand()%(T/2);//随即设置人第一次出现的时间 m_passenger[j]->iRestTime=10+rand()%8;//中间休息时间第 8 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟…………………………}对视图的显示主要在OnPaint()函数中实现:void CSimulationDlg::OnPaint(){if (IsIconic()){……CClientDC cdc(this);//画出楼层线----CPaintDC dc(this);for(i=-1;i<M;i++){} if(i>-1) { } CString str; if(i==-1) str="负一层"; else str.Format("第%d层",i+1); cdc.TextOut(305,FirstFloor-i*FloorHight+20,str); cdc.MoveTo(300,FirstFloor-i*FloorHight+40); cdc.LineTo(345,FirstFloor-i*FloorHight+40);第 9 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟//--------------GetClientRect(&rect);md=new CDC;bitmapr=new CBitmap;bgbitmap=new CBitmap;bitmapperson=new CBitmap;md->CreateCompatibleDC(&dc);bitmapr->m_hObject=(HBITMAP)::LoadImage(NULL,"lift.bmp",IMAGE_BITMAP,43,43,LR _LOADFROMFILE);//找到电梯的图片对其进行调用bgbitmap->m_hObject=(HBITMAP)::LoadImage(NULL,"bg.bmp",IMAGE_BITMAP,300,450,L R_LOADFROMFILE);//找到背景图片然后对其调用bitmapperson->m_hObject=(HBITMAP)::LoadImage(NULL,"p.bmp",IMAGE_BITMAP,20,20,LR_ LOADFROMFILE);//找到人的图片然后对其调用char filename[7];for(i=0;i<30;i++){sprintf(filename,"%d.bmp",i); bitmap[i]=new CBitmap;bitmap[i]->m_hObject=(HBITMAP)::LoadImage(NULL,filename,IMAGE_BITMAP,320,240,L R_LO ADFROMFILE);}i=0;md->SelectObject(bitmap[0]);SetTimer(2,100,NULL);第 10 页共 22 页面向对象技术大作业---电梯方针系统设计 79号王洪伟}每个图所用的图片如下所示:1、电梯图片2、人图片3、背景楼层图片4、开关电梯门动画中的一张图片这里大致把各个对象的成员设定出来了。