ImageVerifierCode 换一换
格式:DOC , 页数:28 ,大小:257.50KB ,
资源ID:957680      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-957680.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电梯仿真系统设计文档.DOC)为本站会员(国***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

电梯仿真系统设计文档.DOC

1、 电梯仿真系统设计文档总目录1 设计任务2 设计规则3 设计目标4 设计模型5 设计思想6 运行情况总结7 程序清单1.设计任务某国际贸易中心共 40 层,设有载客电梯 10 部(用 E0E9 标识) 。利用多线程技术实现个电梯载客的仿真情况。2.设计规则2.1 电梯的运行规则:. E0、E1: 可到达每一层。. E2、E3: 可到达 1、25 40 层。. E4、E5: 可到达 125 层。. E6、E7: 可到达 1、2 40 层。. E8、E9: 可到达 139 层。2.2 每部电梯的最大乘员量均为 K 人(K 值可以根据仿真情况在 1020 人之间确定) 。2.3 仿真开始时,各电梯随

2、机处于起符合运行规则的任意一层,为空梯。2.4 仿真开始后,有 N 人(1000N)在 M 分钟(10M)内随机地到达该国际贸易中心的一层,开始乘梯活动。2.5 每个人初次所要到的楼梯层是随机的,令其在合适的电梯处等待电梯的到来。2.6 每个人乘坐的合适电梯到达指定楼层后,随机地停留 10120 秒后,在随机地去往另一楼层,依次类推,当每个人乘坐过 L 次(L 值可以根据仿真情况在 310 次之间确定)电梯后,第 L+1 次为下至底层并结束乘梯行为。到所有人结束乘梯行为时,本次仿真结束。2.7 电梯运行速度为 S 秒/层(S 值可以根据仿真情况在 15 之间确定) ,每个人上下的时间为 T 秒

3、(T 值可以根据仿真情况在 210 之间确定)2.8 电梯运行的方向由先发出请求者决定,不允许后发出请求者改变电梯的当前运行方向,除非是未被请求的空梯。2.9 当某层有人按下乘梯电钮时,首先考虑离该层最近的、满足条件 2.8、能够最快到达目标层的电梯。2.10 不允许电梯超员。3.设计目标3.1 各电梯相互独立,各自在自己的线程中运行,动态显示个电梯的载客和运行情况。3.2 动态显示各楼层的人员停留情况和要求乘梯情况。3.3 动态显示从仿真开始到目前的时间。3.4 显示时要求表示出每个乘客当前要求去往的楼层。例如,13-33 表示第 13 号的乘客要去 33 楼。3.5 统计各梯的运行与空闲时

4、间;统计每个人发出乘梯要求后的等待时间;3.6 每部电梯的最大成员量 K、参与仿真人数 N、到齐时间 M、每人要乘坐 L 次、电梯运行速度 S、每人上下时间 T 可变动输入。3.7 界面友好易于理解。4 设计模型楼 层系 统 监 控 电 梯已 到 乘 客检 查 电 梯 承 载 情 况检查楼层乘客停留情况检查乘客乘梯情况初 始 化检查楼层等待队列发 送 请 求发 送 请 求 到 等 待 队 列系 统 时 钟加入初始化后的新乘客新 到 乘 客5 设计思想 该程序采用可视化的面向对象语言 Delphi 采用多线程技术实现,其中定义了六个类,电梯 TElevator、乘客 Tperson、楼层 Tfl

5、oor、系统 TsystemControl、电梯运行线程TrunThread、系统监控 TsystemMonitor;每条线程动态监控每个电梯的运行情况,以电梯为主要对象,系统以每秒的事件触发每个线程对象的动作。因为乘客不是一次性到达大楼,所以必须考虑用动态对象数组,这个是由系统控制对象来不停地完成的新到来的乘客对象的初始化任务。因为每个乘客到的目标楼层是随机的,所以必须按照一定的规则选择要乘坐的电梯,当选择好目标电梯后就向该对象的等待队列发送请求, 当上了电梯后,就删除该乘客在电梯和当前楼层的等待请求。加入所乘电梯的乘载队列。电梯每到一层楼就检测是有人要下,如果没有人下,再判断是否满员,如果

6、没有满员,再检测当前楼层的等待队列是否有人上。对于乘客对象,每秒都要选择一次看看哪个电梯最快到达目标楼层,就加入该电梯的等待队列。对于系统监控对象,他是在系统监控线程中独立运行的,他动态监控大楼中每个人的乘坐情况,每个楼梯的运行情况,每层楼的乘客停留情况。6. 运行情况总结程序中最大问题是多线程数据共享问题,如果遇到数个线程同时访问一个数据就会出现共享冲突,比如 i 个电梯对象同时到达第 j 层,就会同时访问该层的乘客请求队列和闲留队列,当有乘客上了电梯,就必须删除该乘客在该层的请求,加入电梯承载队列,但是当 i 个电梯中有一个操作了第 j 层的请求队列,可能使得该队列变小,但是在其他几个电梯

7、操作该队列时并没有注意到这个问题,这样就会出现队列下标溢出错误!所以解决的办法有 2 个是:1)在每个电梯对象操作它当前层的队列时锁定该队列。2)统一加入一个临时操作队列,由系统监控对象一次性完成。本程序采用第一个方法。鉴于微机产生的伪随机数是均匀分布的,所以乘客每秒新到大厦的人数是由 1-10 内的伪随机数产生的,然后初始化新到的人,加入请求队列。这个可以在程序运行初,第一个到达一楼的电梯承载框看到。在程序中发现多数人在一楼等待,有的电梯已经到达但是还没有人乘做,所以思考之下发现,是因为对于乘客对象他应该是可以一选多个电梯,否则当一个电梯人员已满,他还是在等待,那就是很多人都选择了他们认为最

8、近的电梯但是没有考虑到电梯已经满了,造成队列太长。7 程序清单设置参数窗体:unit Setupin;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls, Buttons, Spin,Define;typeTsetupForm = class(TForm)Panel1: TPanel;Label1: TLabel;BitBtn1: TBitBtn;BitBtn2: TBitBtn;GroupBox1: TGroupBox;SEMaxLoa

9、d: TSpinEdit;SEPersonNum: TSpinEdit;SEOntime: TSpinEdit;SEElavotorSpeed: TSpinEdit;SEUpDownTime: TSpinEdit;Label2: TLabel;Label3: TLabel;Label4: TLabel;Label5: TLabel;Label6: TLabel;Label7: TLabel;Label8: TLabel;Label9: TLabel;Label10: TLabel;Label11: TLabel;Label12: TLabel;SETakeNum: TSpinEdit;Labe

10、l13: TLabel;procedure BitBtn2Click(Sender: TObject);procedure BitBtn1Click(Sender: TObject);private Private declarations public Public declarations end;varsetupForm: TsetupForm;implementationuses main;$R *.DFMprocedure TsetupForm.BitBtn2Click(Sender: TObject);beginApplication.Terminate;end;procedure

11、 TsetupForm.BitBtn1Click(Sender: TObject);beginMaxload:=SEMaxload.Value; /电梯最大乘客量PersonNum:=SEPersonNum.Value; /参与仿真人数Ontime:=SEOntime.Value; /人员到齐时间ElavotorSpeed:=SEElavotorSpeed.Value; /电梯运行速度UpDownTime:=SEUpDownTime.value; /上下电梯时间TakeNum:=SETakeNum.Value; /乘做电梯次数self.hide;end;end.主窗体程序清单:unit mai

12、n;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls,setupin,Define,Forms, Dialogs, ComCtrls, ExtCtrls, StdCtrls, Grids;typeTmainform = class(TForm)STB1: TStatusBar;Panel1: TPanel;PageControl1: TPageControl;TabSheet1: TTabSheet;TabSheet2: TTabSheet;TabSheet3: TTabSheet;Panel2: TPa

13、nel;TB0: TTrackBar;TB1: TTrackBar;TB2: TTrackBar;TB3: TTrackBar;TB4: TTrackBar;TB5: TTrackBar;TB6: TTrackBar;TB7: TTrackBar;TB8: TTrackBar;TB9: TTrackBar;Label1: TLabel;Label2: TLabel;Label3: TLabel;Label4: TLabel;Label5: TLabel;Label6: TLabel;Label7: TLabel;Label8: TLabel;Label9: TLabel;Label10: TL

14、abel;Memo0: TMemo;Memo1: TMemo;Memo2: TMemo;Memo3: TMemo;Memo4: TMemo;Memo5: TMemo;Memo6: TMemo;Memo7: TMemo;Memo8: TMemo;Memo9: TMemo;Label11: TLabel;Label12: TLabel;Label13: TLabel;Label14: TLabel;Label15: TLabel;Label16: TLabel;Label17: TLabel;Label18: TLabel;Label19: TLabel;Label20: TLabel;Label

15、21: TLabel;Label22: TLabel;Label23: TLabel;Label24: TLabel;Label25: TLabel;Label26: TLabel;Label27: TLabel;Label28: TLabel;Label29: TLabel;Label30: TLabel;ST0: TStaticText;ST1: TStaticText;ST2: TStaticText;ST3: TStaticText;ST4: TStaticText;ST5: TStaticText;ST6: TStaticText;ST7: TStaticText;ST8: TSta

16、ticText;ST9: TStaticText;idleST0: TStaticText;idleST1: TStaticText;idleST2: TStaticText;idleST3: TStaticText;idleST4: TStaticText;idleST5: TStaticText;idleST6: TStaticText;idleST7: TStaticText;idleST8: TStaticText;idleST9: TStaticText;Panel3: TPanel;Panel4: TPanel;StrGD1: TStringGrid;Memo10: TMemo;M

17、emo11: TMemo;Memo12: TMemo;Label31: TLabel;Label32: TLabel;Label33: TLabel;Memo13: TMemo;Label34: TLabel;Label35: TLabel;Label36: TLabel;Label37: TLabel;Label38: TLabel;Label39: TLabel;Label40: TLabel;Label41: TLabel;Label42: TLabel;Label43: TLabel;Label44: TLabel;procedure FormCreate(Sender: TObjec

18、t);procedure FormDestroy(Sender: TObject);procedure FormShow(Sender: TObject);private Private declarations public Public declarations end;varmainform: Tmainform;implementation$R *.DFMprocedure Tmainform.FormCreate(Sender: TObject);var i:integer;beginfor i:=0 to 9 DObeginElavotorTracki:=TTrackbar.Cre

19、ate(nil);Elavotor_idle_Labeli:=TStaticText.Create(nil);Elavotor_Busy_Labeli:=TStaticText.Create(nil);Elavotor_Memoi:=Tmemo.Create(nil);end;ShowFloor:=TStringGrid.Create(nil);ShowFloor:=StrGD1;ElavotorTrack0:=TB0;ElavotorTrack1:=TB1;ElavotorTrack2:=TB2;ElavotorTrack3:=TB3;ElavotorTrack4:=TB4;Elavotor

20、Track5:=TB5;ElavotorTrack6:=TB6;ElavotorTrack7:=TB7;ElavotorTrack8:=TB8;ElavotorTrack9:=TB9;Elavotor_idle_Label0:=idleST0;Elavotor_idle_Label1:=idleST1;Elavotor_idle_Label2:=idleST2;Elavotor_idle_Label3:=idleST3;Elavotor_idle_Label4:=idleST4;Elavotor_idle_Label5:=idleST5;Elavotor_idle_Label6:=idleST

21、6;Elavotor_idle_Label7:=idleST7;Elavotor_idle_Label8:=idleST8;Elavotor_idle_Label9:=idleST9;Elavotor_Busy_Label0:=ST0;Elavotor_Busy_Label1:=ST1;Elavotor_Busy_Label2:=ST2;Elavotor_Busy_Label3:=ST3;Elavotor_Busy_Label4:=ST4;Elavotor_Busy_Label5:=ST5;Elavotor_Busy_Label6:=ST6;Elavotor_Busy_Label7:=ST7;

22、Elavotor_Busy_Label8:=ST8;Elavotor_Busy_Label9:=ST9;Elavotor_Memo0:=Memo0;Elavotor_Memo1:=Memo1;Elavotor_Memo2:=Memo2;Elavotor_Memo3:=Memo3;Elavotor_Memo4:=Memo4;Elavotor_Memo5:=Memo5;Elavotor_Memo6:=Memo6;Elavotor_Memo7:=Memo7;Elavotor_Memo8:=Memo8;Elavotor_Memo9:=Memo9;trySystemControl:=TSystemCon

23、trol.Create;SystemControl.Initsystem;finallyend;SystemControl.Initsystem;end;procedure Tmainform.FormDestroy(Sender: TObject);var i:integer;begin/释放所有类对象和线程的内存资源trySystemMonitor.FreeOnTerminate:=true;SystemMonitor.Terminate;for i:=0 to Systemcontrol.CurrentPersonTotal-1 DOPersoni.Free;for i:=0 to 9 DobeginRunThreadi.FreeOnTerminate:=true;RunThreadi.Terminate;Elavotori.Free;

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。