智能电梯控制器设计报告.docx
- 文档编号:7844518
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:16
- 大小:253.13KB
智能电梯控制器设计报告.docx
《智能电梯控制器设计报告.docx》由会员分享,可在线阅读,更多相关《智能电梯控制器设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
智能电梯控制器设计报告
目录
一、系统设计任务及需求分析1
二、系统概要设计2
三、系统详细设计3
四、系统的具体实施7
五、系统测试和系统仿真14
六、系统的演示15
七、课设的心得和体会17
八、参考资料17
智能电梯控制器设计报告
学号:
012004015602电子信息工程0406班彭令鹏
一、系统设计任务及需求分析
系统的总体任务是用verilog编写出一个智能电梯控制器。
要求该控制器器能实现普通电梯的大部分控制功能,并能将其下载到FPGA开发板上进行演示。
由总体任务出发,对电梯的一般运行规律进行认真的分析,不难得出该控制器应具有下面这些功能。
[1].具有好的交互性接口,能比较实时地响应用户的各项请求。
除顶层和底层外,每层电梯的入口都设有上下请求开关,顶层和底层分别只设有下降和上升的请求开关;电梯内部设有乘客到达层次的请求信号。
[2].电梯每1s上升或下降一层。
[3].电梯到达有停站请求的楼层后,经过1s后将门打开,开门指示灯亮,开门4s后,电梯门关闭,开门指示灯灭,电梯继续运行,直至执行完最后一个请求后停在当前层。
[4].能记忆电梯内外的所有请求信号,并按运行规则顺序响应各个请求,每个请求信号保持至北执行完后才被清除。
[5].实现这样的运行规则:
当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号和梯内乘客下电梯的请求,这些请求信号由下而上逐个执行,直到最后一个请求信号执行完毕。
这时如果更高层有下楼请求,则直接开到有下楼请求的最高层接客,然后进入下降模式;如果是低层有请求信号,则下降至低层响应请求;如无任何请求,电梯则停在当前层。
当电梯处于下降模式时,其运行规则与上升模式相反。
[6].电梯所处的状态,用户的请求信号都应能够比较实时地显示出来。
[7].如果时间和资源允许,还可加入其它一些功能,如电梯锁定禁止运行、超载报警、电梯上升下降的速度可调等等。
二、系统概要设计
由需求分析可知,此系统要实现的功能不是特别的少,为避免开发的盲目性,也为了减少系统在调试、测试和维护的工作量,有必要对系统进行概要设计。
根据自顶向下的模块化设计思想,结合需求分析中提到的要实现的功能,对系统可进行如下的模块划分。
电梯要正常上升、下降并比较实时地响应用户的请求,这需要一个核心模块对其进行管理,我们称这个核心模块为主控制模块。
主控制模块负责电梯的各项控制功能,包括电梯能够正常的上下运转,响应电梯内外的请求,与其它模块进行交互等等。
其次电梯要能给各楼层用户提供上下楼层的请求接口,给电梯内部的用户提供停靠某楼层的请求接口,而具体到我们的开发板,这些接口就是开发板上的按键。
因此,为了实现上述的接口功能,我们需要一个按键处理模块来处理各种各样的按键请求。
再者,我们需要将电梯的当前状态,用户的请求信号等通过数码管或发光二极管显示出来。
因此,我们也需要一个显示模块来负责输出显示。
需要说明的是,因为该模块的主要工作就是各种请求信号或状态信号的码制变换,负责的是接口转换工作,因此,我将键盘处理模块与主控制模块之间的接口实现也放在这一模块。
最后,该系统还附加了超载报警的功能,因此需要一个超载报警模块来实现这一功能。
综合上面的分析结果,考虑到各模块间的关系,可得到整个电梯控制器的框图,如图1所示。
如图1所示,整个电梯控制器可分为主控制模块、按键处理模块、显示模块和超载报警等4个模块。
主控制模块负责直接对电梯进行控制和管理,是控制器的核心部分,其实现复杂度是4个模块中最高的;按键处理模块和显示模块负责按键处理和显示处理,两者都为外部用户与内部主控制部分的交互提供了比较好的接口,而且两者的实现负责度相当,都略低于主控制模块;超载报警模块直接根据载重量判断是否超载,因此实现最简单。
图1-系统框图
三、系统详细设计
遵循自顶向下逐步细化的设计思想,我们将在概要设计的基础上,根据板上所能提供的资源,做出系统的详细设计。
主控制模块
如前所述,主控制模块的功能就是实现对电梯进行正确的控制,使电梯能正确的运转,并能以最优平均性能响应用户的请求。
分析一下电梯的具体工作工程,易知电梯在正常工作时,其实就仅仅是在其有限的几个工作状态之间进行转移而已。
鉴于这一点,我们决定用状态机来实现主控制模块部分的功能。
根据电梯的实际工作流程,我们可将电梯分为WAIT、UP、DOWN、UPSTOP、DOWNSTOP、OPENDOOR和CLOSEDOOR等七个状态。
这七个状态间的转移关系如图2所示。
首先有必要简要介绍一下图2中各个状态的含义。
WAIT是指电梯停靠在某一层,等待用户请求的状态;UP是指电梯处于上升的状态;DOWN是指电梯处于下降状态;UPSTOP是指电梯在上升的过程中停靠在某一层时所处的状态;DOWNSTOP是指电梯在下降的过程中停靠在某一层时所处的状态;OPENDOOR是指电梯开门时所处的状态;CLOSEDOOR是指电梯关门时所处的状态。
图2-主控制模块中的状态转移图
从图2中我们可以看出,各种状态间存在着比较复杂的转移关系,那么在满足什么样的条件下这些转移才能进行呢?
这是我们接下来要讨论的问题。
在讨论这个问题之前,我们先讨论一下电梯对各种请求的响应策略。
本课程设计中所采取的响应策略是以方向优先为第一准则,然后在这个前提下,优先响应电梯内部的请求,然后是电梯外部的上楼请求,最后是电梯外部的下楼请求。
整个响应策略可这样来理解。
“方向优先”,是指当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号和梯内乘客下电梯的请求,这些请求信号由下而上逐个执行,直到最后一个请求信号执行完毕。
这时如果更高层有下楼请求,则直接开到有下楼请求的最高层接客,然后进入下降模式;如果是低层有请求信号,则下降至低层响应请求;如无任何请求,电梯则停在当前层。
当电梯处于下降模式时,其运行规则与上升模式相反。
“在方向优先的前提下,优先响应电梯内部的请求,然后是电梯外部的上楼请求,最后是电梯外部的下楼请求”,是指当电梯处于WAIT模式时,当其同时受到多个请求而被激发时,进入哪个状态,依次由内部请求,外部上楼请求和外部下楼请求决定。
接下来我们讨论状态间的各步转移分别需满足什么条件。
当电梯处于WAIT模式时,按照响应策略,下一状态有这么几种可能:
如果有当前层的停靠请求,或有当前层的上升请求,或无当前层和当前层之上的上升和停靠请求却有当前层的下降请求,则下一状态为OPENDOOR;在前面条件没满足的前提下,如果有当前层之上的上升或停靠或下降的请求,则下一状态为UP;在前面的条件都没满足的前提下,如果有且只有当前楼层之下的下降请求,则下一状态为DOWN;如果无任何请求,下一状态仍为WAIT。
当电梯处于其他模式,其状态转移根据响应策略,相应地推导出来,此处不予累述。
按键处理模块
如前说述,按键模块是用来处理各种按键请求的模块。
因为开发板上只有8个按键,而我做的这个4层电梯控制器所需的输入信号远远超过了8个,分别是1-3楼的上楼请求信号,2-4楼的下楼请求信号,停靠1-4楼的内部停靠请求,超载输入信号,复位信号。
因此按键必须复用,本课程设计采取的复用方法如下。
1.1-4号按键分别负责用户1-4楼的上下请求,每按这些键一次,相应键的键值加1模3,0代表无请求信号,1代表有上升请求,2代表有下降请求,当confirm为TRUE时,使能将相应的键值送出。
2.号键负责用户的停靠请求,与按键1-4类似,每按此键一次,其键值加1模5,键值为0代表无停靠请求,键值为1-4分别代表有停靠1-4楼的请求
3.6号键负责超载输入(相当于实际中的压力传感器),每按此键一次,其键值加1模16(限定重量的最大量为16)代表归一化的重量当量。
4.7号键为复位键
5.8号键为确认键,每按此键一次,其键值加1模2,相应地confirm由0-1-0如此循环变化,只有当confirm为1时,各请求信号才能输出(更详细的控制过程请参看附件中的相关源代码(KeyProcess部分)。
接下来要说明的是按键复用的处理细节,主要有如下几点。
1.同一按键在不同时刻送出的信号类型是由其当前的键值决定的,正如上面的复用用方法中的1提到的一样,1-4号键键值为0时,表示无请求信号,键值为1代表相应的楼层有上升的请求,键值为2时代表相应的楼层有下降的请求,其它键的复用与此类似。
2.8号confirm键的作用。
Confirm键的作用是在适当的时刻发出一个请求脉冲。
它的实现机制是这样的:
在程序中给confirm键设定了一个键值变量,confirm键没被按下一次,这个键值就加1模2(即在0和1间循环);当键值为1时,处理模块将与请求信号相对应的输出端口均置为高电平,而当键值为0时,处理模块将所有输出端口都置为低电平。
这样当用户有请求信号时,连续两次按下k8键后,模块可对外输出一个高电平的请求脉冲,这个脉冲可用来提供一个与其它模块连接的触发型接口。
3.还有值得注意的一点是,虽然本模块中1-6号键都可发出请求信号,但模块对各键的响应优先级不一样。
优先级从1到6依次降低,因此当1-6号键某键想要输入请求信号时,必须先将序号小于它的键的键值变为0,这可以说是本模块最大的一个缺陷了。
显示模块
如前所述,显示模块负责的是接口转换工作。
这个转换工作不但负责了请求信号码到请求显示码的转换,而且负责了键盘处理模块与主控制模块之间的接口转换工作。
对于显示资源作了这样的划分:
1-3号的发光二极管分别表示1-3楼的上升请求,灭代表无请求,亮代表有请求;4-6号的发光二极管分别表示2-4楼的下降请求,灭代表无请求,亮代表有请求;7,8号发关二极管分别表示确认信号和开门信号,灭分别代表当前还只按下了一次确认键和门是关的,亮分别代表当前已连续按下了两次确认键和门是开的;1-4号的数码管分别显示停靠1-4层的请求,0表示无请求,1表示有请求;5号数码管用来显示电梯当前所在的楼层,显示为i(0
通过显示模块要实现的功能,我们可知该模块要实现的主要技术细节有以下两个。
1.接口码型的转换。
经按键处理模块输入显示模块的请求信号为正脉冲,而显示模块要求将请求信号输出到数码管或发光二极管上显示出来,因此,这之中必然要将相应的正脉冲变成相应的数码管或发光二级管的输出。
2.请求信号的产生和清除。
这里的请求信号的产生和清除,是指当从按键处理模块传来新的请求信号时,将相应的显示予以更新,而当从主控制模块响应了某些请求信号后,应将那些被响应的请求信号应被清除,相应的显示也应予以更新。
超载报警模块
如前所述,超载报警模块直接根据载重量判断是否超载,如超载模块输出报警信号,因此本模块的机制非常简单,不再累述。
四、系统的具体实施
详细设计之后的任务就是系统的具体实施了。
具体到本设计,系统的具体实施就是,根据详细设计的结果,在maxplus中用verilog编码实现各个模块。
需要强调说明的是,各个模块编译成功一定要再进行调试、仿真,以确保它们的正确性。
主控制模块
1.编码实现
该模块用三段式状态机的描述方法来实现电梯在七个状态间的正确转移。
采用三段式的好处是不仅可以使FSM(有限状态机)描述清晰简洁,易于维护和附加时序约束,便于综合器和布局布线器更好地优化设计,而且可以有效地消除一段式或两段式描述法中可能带来的组合逻辑输出毛刺。
为了更好地理解该模块的具体实现,下面将附上主控制模块(StateShift)的简介,而该模块的整个源代码请参考附件中的StateShift.v。
/************************StateShift.v**********************************
*ModuleName:
StateShift
*
*Function:
实时接受各楼层的上下请求信号及电梯内部的停靠请求,然后根据这些请求实现对电梯正确的控制:
*1、除了顶层和底层外,各楼层均设有上下请求开关,顶层和底层分别设有下降和上升请求开关,电梯内设有乘客到达层次的请求开关。
*2、电梯每1s上升或下降一层
*3、电梯到达有停站请求的楼层后,经过1s后电梯门打开,开门指示灯亮,开门4s后电梯指示灯灭,电梯继续
*运行,直至运行完最后一个请求后停靠在当前层。
*4、能记忆点个体内外的所有请求信号,并按运行规则顺序相应各个请求,每个请求信号
*保持至被执行完成后才被清除,这将与display模块配合实现
*5、电梯运行规则:
与一般的电梯的运行规则一致,请参见后面的关于状态转移的说明
*
*InputPort:
F1Up,F2Up,F3Up分别为1-3楼的上行请求信号,F2Dn,F3Dn,F4Dn则分别为2-4楼的下行请求信号
*F1Stop,F2Stop,F3Stop,F4Stop则分别为电梯内部的停靠1-4楼的请求,上述各端口均为有请求时,输入为高电平,否则为低电平;
*clk为状态转移时钟,reset为复位信号
*
*OutputPort:
PosOut输出当前电梯所在的楼层,DoorFlag为开门标志,UpDnFlag为电梯上下标志
*LiftState输出当前电梯的状态.
*PosOut取值可为4'b0001,4'b0010,4'b0100,4'1000,分别代表电梯处在1,2,3,4楼。
这样编码的话,有利于后面的比较判断。
*DoorFlag取值可为1'b0,1'b1,分别代表当前门是关闭和当前门是打开的。
*UpDnFlag取值可为2'b00,2'b01,2'b10,分别代表当前电梯是上升的,下降的和静止的。
*LiftState的取值可为可为
7’b0000001,7’b0000010,7’b0000100,7’b0001000,7’b0010000,
7’b0100000,7’b1000000 ,分别表示电梯处于等待模式、上升模式、下降模式、上升停止,下降停止、开门和关门等7个状态。
*DetailedIllustration:
电梯在上述七个状态间的转移是通过三段式状态机来实现的,各状态间的转移
*大体与生活中的电梯运转一致,有如下的基本原则:
*1、方向为第一优先准则,这就是说电梯在运转时先响应同方向上的请求,只有当同方向上的请求,响应完后,才能转而响应不同方向上的请求。
*2、电梯处于等待模式时,其同时受到多个请求激发时,进入哪个模式,依次由内部请求、向上请求和向下请求决定,请参考源程序理解这一点。
*3、电梯的初始化状态为1楼等待门是关闭的
*
*Author:
EIHUSTbripengandre
*Email:
bripengandre@(orbripengandre@)
*
*date:
08-07-2007
*
*bug:
Nobughasbeenfounduptonow.
*******************************************************************/
2.模块仿真
编码后经编译-仿真-修改这个环节多次后,最终得到如3所示的仿真波形
图3-主控制模块的仿真波形
具体的波形含义此处不再累述,请参考附件中的源程序及本报告中的相关内容。
键盘处理模块
1.编码实现
同主控制模块一样,此处仅附上该模块的简介,而该模块的整个源代码请参考附件中的KeyProcess.v。
/***********************************KeyProcess.v*******************
*ModuleName:
KeyProcess
*
*Function:
负责与用户的交互,处理用户的各种按键请求。
*
*OutputPort:
down1,down2,down3,down4分别输出1-4楼的下降请求信号(为方便处理,允许输出1楼的下降信号)
*up1,up2,up3,up4与上类似,只是输出的为上升请求信号而已;
*StopFloor输出停靠请求信号
*person输出乘客数(超载判断按人数算,这与按重量判断,在实现上并无差别)
*KeyValue输出当前按键的键值
*confirm确认是否输出各请求信号,请参考下面的复用说明
*
*InputPort:
ki(i=1-8)分别为8个按键的输入
*
*DetailedIllustration:
因为所用的开发板上只有八个按键,我将按键进行了如下复用(很挫的方法):
*1、1-4号按键分别负责用户1-4楼的上下请求,每按这些键一次,相应键的键值加1模3,
*0代表无请求信号,1代表有上升请求,2代表有下降请求,当confirm为TRUE时,使能将相应的键值送出
*2、5号键负责用户的停靠请求,与按键1-4类似,每按此键一次,其键值加1模5,键值为0代表无停靠请求
*键值为1-4分别代表有停靠1-4楼的请求
*3、6号键负责超载输入(相当于实际中的压力传感器),每按此键一次,其键值加1模16,代表归一化的重量当量
*4、7号键为复位键
*5、8号键为确认键,每按此键一次,其键值加1模2,相应地confirm由0-1-0如此循环变化,只有当confirm
*为1时,各请求信号才能输出(更详细的控制过程请参看源代码)
*
*Author:
EIHUSTbripengandre
*Email:
bripengandre@(orbripengandre@)
*
*date:
08-07-2007
*
*bug:
Nobughasbeenfounduptonow.
********************************************************************/
2.模块仿真
编码后经编译-仿真-修改这个环节多次后,最终得到如4所示的仿真波形。
图4-按键处理模块的波形仿真
具体的波形含义此处不再累述,请参考附件中的源程序及本报告中的相关内容。
显示模块
1.编码实现
同前面的模块一样,此处仅附上模块的简介,而该模块的整个源代码请参考附件中的display.v。
2.模块仿真
编码后经编译-仿真-修改这个环节多次后,最终得到如5所示的仿真波形。
图5-显示模块的仿真波形
具体的波形含义此处不再累述,请参考附件中的源程序及本报告中的相关内容。
超载报警模块
1.编码实现
同前面的模块一样,此处仅附上模块的简介,而该模块的整个源代码请参考附件中的alarm.v。
/*****************************alarm.v*******************************
*ModuleName:
alarm
*Fuction:
实现超载报警
*OutputPort:
spk,输出报警信号
*InputPort:
clk,person,reset,分别为输入信号,乘客数量和复位信号
*Author:
EIHUSTbripengandre
*Email:
bripengandre@(orbripengandre@)
*bug:
Nobughasbeenfounduptonow
******************************************************************/
2.模块仿真
编码后经编译-仿真-修改这个环节多次后,最终得到如6所示的仿真波形。
图6-超载报警模块的仿真波形
具体的波形含义此处不再累述,请参考附件中的源程序及本报告中的相关内容。
五、系统测试和系统仿真
对系统具体实施过程中生成的模块生成电路符号,然后再顶层的gdf文件调用它们,进而将它们构成一个完整的电梯控制器系统,如图7所示。
图7系统顶层gdf图
对上述的系统编译后再进行仿真,得到如图8所示的仿真波形。
图8-系统整体的仿真波形
具体的波形含义此处不再累述,请参考附件中的源程序及本报告中的相关内容。
六、系统的演示
对上面的系统gdf文件分配管脚并编译成功,将其配置文件下载到开发板上,这时就能通过开发板对系统进行演示。
这里有必要详细说明一下如何对系统进行演示。
首先,要提到的是开发板上的资源分配情况。
1.按键的分配情况是这样的:
1-4号键负责的是1-4楼的上下楼请求,5号键负责的是内部的停靠请求,6号键负责的是乘客数量的输入(超载门限为6),7号键为复位键,8号键为确认键。
2.发光二级管的分配情况是这样的:
1-3号发光二极管用来显示1-3楼用户的上升请求,亮表示有请求,灭表示无请求;4-6号发光二极管用来显示2-4楼用户的下降请求,亮表示有请求,灭表示无请求;而7号发光二极管是用来指示确认键是否已经连续两次被按下,亮表示确认键还只按下一次,期待再次按下确认键;8号发光二极管用来标志电梯门的开,亮表示电梯门是开的,灭表示电梯门是关的。
3.数码管的分配情况是这样的:
1-4号数码管分别用来显示内部到1-4楼停靠的请求,显示1表示有相应的停靠请求,显示0表示无相应的停靠请求;5号数码管用来显示电梯当前所在的楼层,显示i表示当前在第i楼;6号数码管用来显示电梯的上下标志,显示0表示电梯是静止的,显示1表示电梯的运动方向是向上的,显示2表示电梯的运动方向是向下的;7号数码管用来显示乘客数,显示i表示有i个乘客;8号数码管用来显示当前按键的健值。
这里不再解释上述分配的原因,欲知原因请参考详细设计和具体实施中的相应部分。
其次,有必要介绍一下演示操作,这将通过下面的这个实例来说明。
系统上电后,选择开发板上的按键模式为3,按下7号键复位。
这时可发现,所有发光二级管都是灭的,而数码管中只有5号数码管显示1,而其他的数码管都显示0,这就是说复位后,用户的请求都被初始化为无,而电梯被初始化为停靠在1楼等待用户的请求。
假设此时有用户想上3楼,他的操作应是,按下3号键1次或2n+1次,待8号数码管上显示1时,连续两次按下8号键确认;在操作过程中,用户可以发现8号数码管显示的数随其按2号键的次数而循环变化,而当按下8号键刚被按下1次时,7号发光二极管被点亮,提示用户再次按下8号键(使系统内部产生一个请求正脉冲)。
操作的结果将是,电梯每1s上升1层,2s后到达第3层,然后电梯停靠在第3层,1s后电梯开门,开门指示灯亮,4s后关门,开门指示灯灭,在此例子中因为再无其它请求信号,所以电梯静止下来,进入等待模式;这个过程中以时间为顺序,板子上的变化有:
3号发光二极管继续点亮(3楼有上升请求),6号数码管的显示值从0变为1(电梯从静止转为上升),5号数码管的显示值从1变化到3(电梯从第1楼上升到第3楼),8号发光二极管被点亮(开门),与此同时3号发光二极管熄灭(请求已被响应),4s后8号发光二极管熄灭(关门),1s后6号数码管的显示值变为0(电梯变为静止)。
最后,需要强调的一点是:
当使用某键输入请求信号后,建议继续按此键直至该键的键值为0,以避免编号在此键之后的按键的请求得不到及时响应。
万一由于误操作使某键的请求得不到相应,可用下面两种方法排除:
第一种方法是,将编号小于此键的按键的键值都变为0;第二
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 电梯 控制器 设计 报告