电梯控制系统的设计与实现1系统设计分析11系统的整体设计在_第1页
电梯控制系统的设计与实现1系统设计分析11系统的整体设计在_第2页
电梯控制系统的设计与实现1系统设计分析11系统的整体设计在_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电梯控制系统的设计与实现1 系统设计分析1.1 系统的整体设计 在电梯控制系统的设计中,核心是电梯运行的状态控制器的设 计。为突出状态之间的转换关系,令电梯以同一速率升降。主要需要 考虑:(1)电梯的人工手动控制;(2)电梯的运行状态显示;(3) 电梯的策略控制设计。本文将电梯设计分成 3个模块:Veryhardd:该模块是整个程序的核心,是电梯控制器设计部分, 主要的设计思想是将电梯的状态划分为 4个:一层状态(cl)、二层 状态(c2)、三层状态(c3)、开门状态(kai)。对每一个状态分析其 所有的可能。Seg:功能是将楼层信号转换成可以用数码管显示的信号Dian :该模块的功能是将电梯

2、工作模式利用16X 16点阵显示出来。电梯状态控制器部分用状态机来实现。基本模型如下:( 1)每层电梯入口处设有上下请求开关,电梯内设有乘客到达 层次的停站请求开关( 2)设有电梯所处位置指示装置及电梯运行模 式(上升或下降)指示装置( 3)电梯每秒升(降)一层楼( 4)电梯 到达有停站请求的楼层后,经过 1s 电梯门打开,开门指示灯亮,开 门 4s 后,电梯门关闭(开门指示灯灭) ,电梯继续运行,直至执行完 最后一个请求信号后停在当前层。 (5)能记忆电梯内外的所有请求信 号,并按照电梯运行规则次序响应, 每个请求信号保留至执行后消除 (6)电梯运行规则:当电梯处于上升模式时,只响应比电梯所

3、在位 置高的上楼请求信号, 由下而上逐个执行, 直到最后一个上楼请求执 行完毕, 如更高层有下楼请求, 则直接升到有下楼请求的最高楼层接 客,然后便进入下降模式, 当电梯处于下降模式时,则与上升模式相 反。(7)电梯初始状态为一层开门1.2 电梯状态控制器的设计1.2.1 设计思路(1)电梯输入输出端口设计。输入端口包括:在电梯外部的升降的请求端口( up1、 up2、 down2、down3 ) , 一层不需要有下降请 求, 最高层不需要上升请求, 中间层上升、 下降请求端口都应具备, 高电平表示有请求信号; 在电梯内部的各层停留的请求端口( k1、 k2、k3),高电平表示有请求信号;一个

4、用于驱动电梯的上升下降等 动作时钟输入端口以及一个时钟频率比电梯高得多的按键时钟输入 端口( clk ) 。而响应的输出端口包括:电梯内部的各层停留响应端口(al、a2、a3);在电梯外部显示电梯的位置端口( site);电梯开门 关门的状态指示端口 (door), 0'表示关门, '1'表示开门以及电梯升 降指示端口( mode),''表示上升,T表示下降。(2)电梯控制器的实现通过状态机实现, 状态机设置了四个状 态,电梯处于一层状态(cl)、电梯处于二层状态(c2)、电梯处于三 层状态(c3)及电梯处于开门状态(kai)。每个状态之间的转换条件 由

5、设计要求决定。程序设计在电梯控制器的设计中, 只设计了一个进程,以 clk 为进程激 励信号,当state (电梯状态)=cl时,电梯在一层转为上升模式, 定义z= 1说明有任何请求电梯都会被破坏初态,z = 0电梯初态为一 层开门;如果电梯为一层关门状态: 一层有停电梯或一层有上升请 求时电梯转为开门状态;若电梯有二层上升或二层停电梯请求时, state= c2;若电梯有三层下降或三层停电梯请求时,state= c3,并定义此情况为x= 1;若电梯有二层下降请求时,state= c2,电梯转 为下降模式。当state= c2时,电梯处在二层上升模式时,若电 梯二层有停电梯或二层有上升的请求时

6、, 电梯转为二层开门状态; 若电梯三层有下降或三层有停电梯请求或x= 1时,state= c3;若电梯有二层下降或一层下降或一层停电梯请求时,电梯转为下降模 式;当state= c2时,电梯处在二层下降模式时:若电梯二层有停 电梯或二层有下降请求时, 电梯转为二层开门状态; 若电梯有一层 上升或一层停电梯或y= 1时,state= cl;若电梯二层有上升或三 层有下降或三层有停电梯请求时,电梯模式转为上升。当state= c3时,电梯处于三层下降模式, 若电梯有三层停电梯或三层有下降请 求时,电梯转为三层开门状态; 若电梯二层有下降或二层有停电梯 请求时,state= c2;若电梯一层有上升或

7、一层有停电梯请求时state=c2;并记忆此情况为y= 1;若电梯有二层上升请求时,state= c2; 并转为上升模式;当state= kai时,电梯处于开门状态,并保证开 门 4s。1.3显示模块的设计表1.3译码器真值表采用动态显示模式,在扫描频率大于人眼睛的视觉暂留频率(24HZ)以上,就可以达到点亮单个七段数码管表1.3译码器真值表楼层123输入:001010100输出0000110101101110011111.4电梯模式显示模块设计一个16X16点阵显示电梯的运行模式,上升用向上箭头表示,见表1.4.1 ,下降用向下箭头表示,见表表向上箭头译码真值表输入输出00110100010

8、10110011110001001101010111100others00000000000000001.5输入端口设计在状态机的设计中, 定义了 7个按键输入端。分别是:(1) 1 层上升请求按键、(2) 2层上升请求按键、(3) 3层下降请求按键、(4) 2层下降请求按键、(5)电梯1层停止请求按键、(6)电梯2层停止请求按键(7)电梯3层停止请求按键。142向下箭头译码真值表输入输出00110000000000110000010000000000000110000101000000000000110001100000000000000110011110001001000000000000

9、0110101000000000000011001011000000000001100011000000000000110000others00000000000000002建立模型状态机设置了四个状态,电梯处于一层状态(cl)、电梯处于二 层状态(c2)、电梯处于三层状态(c3)及电梯处于开门状态(kai)。 状态机设计状态转换如图2所示,每个状态之间的转换条件如表2所 示。图2状态机的状态转换图表2状态机状态转换条件表Source StateDesti natio n StateCon dit ongC1KaiZ='O' ortin gl(1)= T orupl(1)=&#

10、39;1'C1C2downl(2)= Tor downl(3)='' or tiongl(3)= '' or upl(2)='' or tin gl(2)= '1'C2Kaitingl(2)= T or upl(2)=T or dow nl(2)=''C2C1Upl(1)= T or tingl(1)= ' ' or y=TC2C3downl(3)= T or tingl(3)='' or x=''C3Kaitingl(3)= T or down 1(3)=&

11、#39;'C3C2downl(2)= T or tingl(2)='' or upl(1)='1 or tingl(1)='' or upl(2)=''3仿真结果及分析在完整的系统设计中使用 Max+Plusll10.0软件完成VHDL描述 和原理图的层次设计。在底层设计中,用VHDL分别实现每一个模块的功能,将每个模块生成可供 Max+Plusll调用的器件符号,再将 这些器件符号连接在一起构成整个系统原理图,如图3.1所示。综合编译完成后,选择 clk时钟信号为1 kHZ,这里为使编译 快速,观察方便,使用clk为10us,配

12、置适当的输入信号,得到如图3.2所示的仿真结果。原先电梯停留在第一层,电梯外第一层有上 升请求,电梯先开门载客然后上升,电梯上升到二层,有上升的要求, 继续上升,又有三层下降的请求,接着电梯模式转为下降,到二层又 有二层下降请求,要求下降到一层,电梯开门载客,下降到一层,最后电梯停留在一层图3.1系统原理图也阴:IL- elki*-u|i2Itupl”-k?沪Idib-dowi3 idowi2 -ef mod& -EFdoor-I# al皿 crill砂 M|3.1|.Q 砂 stslo|1.0.Q 抄 end;JJ';JJj38B001000 JjCuX0C1图3 .2三层电

13、梯的仿真波形4 总结通过一学期对这门课的学习, 基本掌握了一些基础知识, 软件的 运用和VHDL语言的使用,但思路还总局限于 C语言的思路里,有待 于继续学习与提高。在程序的调试过程中,经常会遇到一些问题,经 过努力终于运行成功了,本人体会到一点,在程序的编写过程中,要 先输入整体框架,保证语法正确,一步一步输入,不要整篇程序都先 输入,导致调试过程中遇到许多错误。 对于本人学习这门课的编程是 重点,本人的毕业设计就是基于这门课的,所以本人在VHDL的研究上还要继续努力,争取早日能掌握好这门语言。谢谢老师教导!附录 A: veryhardd 模块程序 library ieee;use ieee

14、.std_logic_1164.all;entity veryhardd is port(up1,up2,down2,down3,clk,k1,k2,k3:in std_logic;site:out std_logic_vector(3 downto 1);a1,a2,a3:out std_logic;mode,door:out std_logic );end veryhardd;architecture veryhardd_arc of veryhardd is type state_type is(c1,c2,c3,kai); beginprocess(clk)variable upl,d

15、ownl,tingl,cengl:std_logic_vector(3 downto1);variable mo,x,y,z:std_logic;variable cnt1,cnt2:integer;variable state:state_type; beginif( clk'event and clk='1') thenif (up1='0' )then upl(1):='1'end if; if(up2='0') thenupl(2):='1'end if;if(down3='0')

16、thendownl(3):='1' end if; if(down2='0') thendownl(2):='1' end if; if (k1='0' )thentingl(1):='1'end if;if (k2='0') thentingl(2):='1'end if;if (k3='0' )thentingl(3):='1' end if; if (cnt1<10 )then cnt1:=cnt1+1;elsecase state isw

17、hen c1=>cengl:="001"mo:='0'tingl/="000"thenif upl/="000"or downl/="000"z:='1'end if;if z='0' thendoor<='1'elsedoor<='0'if tingl(1)='1' or upl(1)='1' thenstate:=kai;tingl(1):='0'upl(1):=&#

18、39;0'elsif upl(2)='1' or tingl(2)='1' thenstate:=c2;elsif downl(3)='1' or tingl(3)='1' thenstate:=c2;x:='1'elsif downl(2)='1' thenstate:=c2;mo:='1'end if;end if;when c2=>cengl:="010"if (mo='0' )thenif tingl(2)='1

19、9; or upl(2)='1' then state:=kai;tingl(2):='0' upl(2):='0'elsif(downl(3)='1'or tingl(3)='1'or x='1')then state:=c3;x:='0'elsif(downl(2)='1'or upl(1)='1'or tingl(1)='1')then mo:='1'end if;elseif(tingl(2)='1

20、9; or downl(2)='1')then state:=kai;tingl(2):='0' downl(2):='0'elsif(upl(1)='1'or tingl(1)='1'or y='1')then state:=c1;y:='0'elsif(upl(2)='1'ordownl(3)='1'or tingl(3)='1')thenmo:='0'end if;end if;when c3=>mo:=&#

21、39;1'cengl:="100"if (tingl(3)='1' or downl(3)='1' )thenstate:=kai;tingl(3):='0'downl(3):='0'elsif(downl(2)='1' or tingl(2)='1')thenstate:=c2;elsif (upl(1)='1' or tingl(1)='1') thenstate:=c2;y:='1'elsif (upl(2)='

22、;1') thenstate:=c2;mo:='0'end if;when kai=>door<='1'if (cnt2<3 )thencnt2:=cnt2+1;elsedoor<='0'cnt2:=0;if (cengl="001" )thenstate:=c1;elsif(cengl="010") thenstate:=c2;elsestate:=c3;end if;end if;end case;cnt1:=0;end if;end if;site<=cengl;

23、a1<=tingl(1);a2<=tingl(2);a3<=tingl(3);mode<=mo;end process;end veryhardd_arc; 附录 B:dian 模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dian isport(clk,mode:in std_logic;sel:out std_logic_vector(3 downto 0);q:out std_logic_vector(0 to 15);end dian;arc

24、hitecture dian_arc of dian isbeginprocess(clk)variable seel:std_logic_vector(3 downto 0);beginif(clk'event and clk='1')then seel:=seel+1;if(mode='0')then case seel iswhen others=>q<="0000000000000000"end case;elsecase seel iswhen"0011"=>q<="0000000000110000"when"0100"=>q<="0000000000011000"when"0101"=>q<="0000000000001100"when"0110"=>q<="0000000000000110"when"1001"=>q<="00000000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论