智能电梯控制器设计.docx
- 文档编号:10923222
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:70
- 大小:1,022.08KB
智能电梯控制器设计.docx
《智能电梯控制器设计.docx》由会员分享,可在线阅读,更多相关《智能电梯控制器设计.docx(70页珍藏版)》请在冰豆网上搜索。
智能电梯控制器设计
(封面)
XXXXXXX学院
智能电梯设计报告
题目:
院(系):
专业班级:
学生姓名:
指导老师:
时间:
年月日
一、课题········································································3
二、内容要求····································································3
三、系统设计····································································4
a)系统框图与说明···························································4
b)状态转换图·······························································6
四、系统仿真····································································12
五、实验总结···································································15
附录:
源程序····································································18
一、课程设计名称
智能电梯控制器设计
二、设计内容及要求
1楼层的高度大于等于6,根据降低运行成本的原则,设计并实现一个以方向优先电梯调度算法。
2要求能够使用按键模拟对电梯的控制,为了便于观察,将电梯所在的楼层(1~6)用数码管显示出来,将电梯的上下楼状态(上,下,开门,关门,静止)用发光管或数码管显示出来,并且能够实现对电梯实现锁定禁止运行。
3画出电梯控制器的状态机,写出状态编码方案
4用Verilog语言对设计进行描述,并下载到实验板上调试成功,适当增加比较符合现实的控制限制。
5写出设计性实验报告,并打印各层次的源文件和仿真波形,然后作简要说明。
并谈谈此次实验的收获、感想及建议
三、系统设计
根据设计要求,可以将系统分为以下几个模块:
分频模块:
将50MHz分频为1Hz和20Hz,给其他个模块提供时钟信号。
其中20Hz信号用于外部选择模块,1Hz信号用于其他模块。
电梯外部选择模块:
读入电梯外部请求,包括楼层和上下等信息,将请求信息存入相应寄存器中。
同时在电梯到达时将相应寄存器中该层对应的位置清零。
电梯内部选择模块:
读入电梯内部请求,并将请求存入相应寄存器中,并在电梯到达时将该层请求清零。
数码管模块:
数码管译码和显示,显示内容包括电梯当前楼层、电梯内部选择楼层和当前电梯状态。
开门模块:
完成开门计时功能,同时完成处理延迟关门请求、提前关门请求和超重警告等功能,提前关门时门直接关上,延迟关门时门延迟关闭,超重时门不关闭。
楼层状态机模块:
此模块包含状态机,完成状态转换的判断和执行,在相应状态对楼层进行加计数或者减计数,同时通过数码管显示当前楼层。
状态显示模块:
将需要数码管显示的状态读入、译码并显示在数码管上
顶层模块:
整合各个子模块,同时完成急停的判断和急停状态显示。
由以上设计,可以得系统框图如下:
电梯系统基本框图
系统框图说明:
1.设定智能电梯控制器的使用楼层总数为7层。
2.系统时钟周期为电梯控制器检测输入输出信号的最小间隔。
3.电梯内外的操作面板提供了楼层输入,电梯内操作面板还提供了开关门输入。
4.电梯控制器提供锁定输入,可锁定电梯禁止运行。
5.电梯内外面板显示电梯当前楼层,及上行还是下行。
6.当按下楼层请求时,对应的请求灯亮。
7.为了便于观察,将电梯的运动、静止、开门、关门状态用发光管显示出来。
电梯系统流程图
系统流程图说明:
1.当电梯启动时,当前楼层为1楼,电梯为停止状态,方向向上,电梯关门,等待输入请求。
2.电梯启动后,判断当前楼层是否有请求,若有则电梯开门,乘客上下电梯,电梯关门;若没有判断当前楼层以上是否有请求,若有则向上运行;若没有判断当前楼层以下是否有请求,若有则向下运行。
3.若判断为向上运行,电梯状态为运动状态,方向向上,电梯关门,楼层数加1;判断新的当前层是否有请求,若有则电梯停止,电梯开门,乘客上下电梯,电梯关门;若没有则重复3操作。
4.若判断为向下运行,电梯状态为运动状态,方向向下,电梯关门,楼层数减1;判断新的当前层是否有请求,若有则电梯停止,电梯开门,乘客上下电梯,电梯关门;若没有则重复4操作。
5.当所有请求处理完后,回到状态2。
b)状态转换图
状态编码方案:
S0=00000,S1=00001,S2=00010,S3=00011,S4=00100,S5=00101,S6=00110,S7=00111,S8=01000,S9=01001,S10=01010,S11=01011,S12=01100,S13=01101,S14=01110,S15=01111,S16=10000,S17=10001,S18=10010,S19=10011,S20=10100,S21=10101,S22=10110,S23=10111,S24=11000
状态
说明
S0
初始化电梯,状态清零,楼层置1,转换到S23
S1
判断当前楼层以上是否有电梯请求,若result=1转换到S3,若result=0转换到S2
S2
判断当前楼层以下是否有电梯请求,若result=1转换到S9,若result=0转换到S23
S3
电梯运动状态转变为运动,运动方向转变为向上,转换到S4
S4
电梯计数器使能端设为1,开始计数,若consignal=1,转换到S5,否则留在S4
S5
电梯控制器发出楼层上升信号,楼层数加1,转换到S6
S6
判断电梯外是否有当前楼层的向上请求,或电梯内是否有当前楼层请求,若result=1转换到S8,若result=0转换到S7
S7
判断当前楼层以上是否有电梯请求,若result=1转换到S4,若result=0转换到S8
S8
电梯运动状态转变为停止,电梯开门,电梯计数器开始计数,若close_but=0,转换到S17,若consignal=1转换到S15
S9
电梯运动状态转变为运动,运动方向转变为向下,转换到S10
S10
电梯计数器使能端设为1,开始计数,若consignal=1,转换到S11,否则留在S10
S11
电梯控制器发出楼层下降信号,楼层数减1,转换到S6
S12
判断电梯外是否有当前楼层的向下请求,或电梯内是否有当前楼层请求,若result=1转换到S14,若result=0转换到S13
S13
判断当前楼层以下是否有电梯请求,若result=1转换到S10,若result=0转换到S14
S14
电梯运动状态转变为停止,电梯开门,电梯计数器开始计数,若close_but=0,转换到S21,若consignal=1转换到S19
S15
电梯门开至最大,乘客上下电梯,重置计数器,转换到S16
S16
电梯计数器开始计数,电梯门维持开放,等待乘客上下电梯,若close_but=0或consignal=1,转换到S17
S17
电梯开门指示灯灭,开始关门,重置计数器,转换到S18
S18
电梯计数器开始计数,电梯门在一段时间后关陇,期间若open_but=0,转换到S15,若consignal=1,转换到S1
S19
电梯门开至最大,乘客上下电梯,重置计数器,转换到S20
S20
电梯计数器开始计数,电梯门维持开放,等待乘客上下电梯,若close_but=0或consignal=1,转换到S21
S21
电梯开门指示灯灭,开始关门,重置计数器,转换到S22
S22
电梯计数器开始计数,电梯门在一段时间后关陇,期间若open_but=0,转换到S19,若consignal=1,转换到S2
S23
判断电梯外是否有当前楼层的向上请求,或电梯内是否有当前楼层请求,若result=1转换到S8,若result=0转换到S24
S24
判断电梯外是否有当前楼层的向下请求,或电梯内是否有当前楼层请求,若result=1转换到S14,若result=0转换到S1
四、系统仿真
a)各工作模式仿真波形
1.电梯的楼层请求输入输出
2.电梯锁定禁止运行输入输出
1.电梯开关门输入输出
b)实测(现场验收)
五、实验总结
b)待改进的问题
1.若硬件允许,电梯楼层请求应由开关实现改为按钮实现。
2.电梯开门时间、开门后等待时间、关门时间应根据电梯机械结构和乘客习惯调整。
3.电梯内应设有紧急呼救电话。
4.应提高电梯控制器兼容性,使楼层并不仅限于7层。
5.电梯开关门过程中有可能无法响应其他楼层的请求。
c)功能扩展
本电梯已具备日常普通7层电梯的除紧急呼救电话外的全部功能:
楼层请求、开门、关门、锁定、清零,故未作拓展,若电梯供特殊用途课根据特定要求拓展。
附录:
源程序
/***********************************************************************************************
*description:
电梯控制器顶层模块函数
*input:
New_InFloor,New_OutFloor,AimDown,AimUp,InClose,InOpen,CLK,RESET,STOP,参见各模块
*output:
LED_GetInf--电梯外部输入允许指示灯,LED_UpDown--外部上下行请求按钮灯,
*LED_DoorState--门状态灯,LED_InFloor--电梯内部目标楼层申请,LED_OutFloor--电梯外部目标楼层申请
*Dis_CurFloor,Dis_CurState——电梯状态及楼层数码管显示,test1,test2,test3--调试测试信号灯
*intermediate:
参见各模块
*************************************************************************************************/
moduleLiftTop(New_InFloor,New_OutFloor,AimDown,AimUp,InClose,InOpen,CLK,RESET,STOP,
LED_GetInf,LED_UpDown,LED_DoorState,LED_InFloor,LED_OutFloor,Dis_CurFloor,Dis_CurState,ResetVai,stopVai,LCD_ON,LCD_BLON,LCD_RW,LCD_EN,LCD_RS,LCD_DATA,test1,test2,test3);
inputAimDown,AimUp,InClose,InOpen,CLK,RESET,STOP;
outputtest1,test2,test3;
input[6:
0]New_InFloor,New_OutFloor;
output[2:
0]LED_DoorState;
output[1:
0]LED_UpDown;
output[7:
0]Dis_CurFloor,Dis_CurState;
output[6:
0]LED_InFloor,LED_OutFloor;
outputLED_GetInf,ResetVai,stopVai;
outputLCD_ON;//LCDPowerON/OFF
outputLCD_BLON;//LCDBackLightON/OFF
outputLCD_RW;//LCDRead/WriteSelect,0=Write,1=Read
outputLCD_EN;//LCDEnable
outputLCD_RS;//LCDCommand/DataSelect,0=Command,1=Data
inout[7:
0]LCD_DATA;//LCDDatabus8bits
wirewarn,LCD_BLON0;//thewarningkey
wire[7:
0]LCD_DATA;
wire[6:
0]LED_InFloor,LED_OutFloor;
wire[2:
0]LED_DoorState;
wire[1:
0]LED_UpDown,DoorMode;
reg[11:
0]counter;
wirestopVai,ResetVai;
wire[6:
0]AimFloor;
wire[6:
0]Aim_InFloor,Aim_OutFloor;
wire[6:
0]AimFloor_OutDirec;
wire[1:
0]Aim_Direc;
wire[6:
0]CurFloor;
wireCur_Direc,Change_Door,DoorState;
wireDCLKS,DCLKMS,DCLKMS4,DCLKMS16;
wireDis_GetInfor;
wire[2:
0]Dis_DoorState;
wire[7:
0]SEG_CurFloor,SEG_CurState;
wire[1:
0]MoveMode;
wire[7:
0]data;
//分频模块
FrequencyDivisionD1(CLK,STOP,DCLKS,DCLKMS,DCLKMS4,DCLKMS16,RESET);
//原始信号获取及初步处理
ReadInformationG1(CurFloor,MoveMode,DoorState,AimFloor,AimFloor_OutDirec,Aim_OutFloor,Aim_InFloor,Dis_GetInfor,New_InFloor,New_OutFloor,AimDown,AimUp,CLK,RESET);
//算法决定运行模式及门状态
LiftControlE1(AimFloor,Aim_InFloor,Aim_OutFloor,AimFloor_OutDirec,Change_Door,CurFloor,DoorState,MoveMode,CLK,RESET,test1,test2,test3);
//显示并改变门状态
DoorDisplayDoor1(InClose,InOpen,DoorState,Change_Door,Dis_DoorState,DCLKMS,RESET,DoorMode);
//显示当前楼层及电梯运行状态
FloorDispalyFloor1(DoorState,MoveMode,CurFloor,DCLKS,RESET,SEG_CurFloor,SEG_CurState);
//LCD
LcdToplcdTop1(AimFloor,MoveMode,DoorState,DoorMode,data,CLK,warn,LCD_ON,LCD_BLON0,LCD_RW,LCD_EN,LCD_RS,LCD_DATA);
assignLCD_BLON=1'b1;
assigndata[6:
0]=CurFloor[6:
0];
assigndata[7]=0;
assignwarn=DCLKMS16;
assignstopVai=~STOP;
assignResetVai=~RESET;
assignLED_DoorState=Dis_DoorState;
assignLED_GetInf=Dis_GetInfor;
assignLED_OutFloor=Aim_OutFloor;
assignLED_InFloor=Aim_InFloor;
assignLED_UpDown[0]=AimDown;
assignLED_UpDown[1]=AimUp;
assignDis_CurFloor=SEG_CurFloor;
assignDis_CurState=SEG_CurState;
endmodule
/********************************
*
*description:
自定义数码管解码
*
*input:
in--输入信号
*
*output:
out_seg--输出信号
*
*intermediate:
null
*
*********************************/
moduleCustomTube(out_seg,in);
input[6:
0]in;
output[7:
0]out_seg;
reg[7:
0]out_seg;
always@(in)
case(in)//自定制数码管解码
7'b0000001:
out_seg=8'b11111001;
7'b0000010:
out_seg=8'b10100100;
7'b0000100:
out_seg=8'b10110000;
7'b0001000:
out_seg=8'b10011001;
7'b0010000:
out_seg=8'b10010010;
7'b0100000:
out_seg=8'b10000010;
7'b1000000:
out_seg=8'b11111000;
7'b1000100:
out_seg=8'b00100011;//向下,亮下部
7'b1000010:
out_seg=8'b00011100;//向上,亮上部
7'b1000001:
out_seg=8'b00111111;//静止全灭,亮中间横。
default:
out_seg=8'b11111111;
endcase
endmodule
/***************************************************************************
*
*description:
LCD液晶延迟显示
*
*input:
iCLK,warn
*
*output:
warn1,warn1,oRESET
*
****************************************************************************/
moduleResetDelay(iCLK,warn,oRESET,warn1);//复位脉冲只在开始时出现一次
inputiCLK;
inputwarn;
outputregoRESET;
outputwarn1;
reg[29:
0]Cont=0;
regwarn1;
reg[1:
0]count2;
initial
begin
Cont<=30'b0;
warn1<=1'b1;
count2<=2'd0;
oRESET<=0;
end
always@(posedgeiCLK)
begin
/*if(Cont!
=30'hFFFFFF)//分频
//if(Cont!
=20'h08)
begin
Cont<=Cont+30'b1;
//oRESET<=~oRESET;
end
else
begin
//oRESET<=1'b1;
oRESET<=~oRESET;
Cont<=30'd0;
end*/
oRESET<=1;
if(warn==0)//ifpushthebuttonwarn,thenwritenewinformationtotheLCD
begin
oRESET<=1'b0;
warn1=1'b1;
count2=count2+2'd1;
end
if(count2==2'd2)//pushtwicethenreturntonormal
begin
warn1=1'b1;
count2=2'd0;
end
end
endmodule
/*******************************************************************************************
*
*description:
实现外部输入信息的获取,并整合发送给其他模块计算使用
*
*input:
MoveMode--电梯当前运行模式(2'b00静止,2'b01上升,2'b11下降)
*New_InFloor,New_OutFloor--电梯内部目标楼层输入,电梯外部目标楼层输入
*CurFloor--当前楼层,eg:
7'b0000100,代表现在处于第三层
*AimDown,AimUp--电梯外部请求信号上下楼方向选择,同时开启电梯外部目标输入允许
*CLK--50M时钟信号,RESET--复位(低电平有效),DoorState--门状态信号
*
*output:
AimFloor--电梯内部与电梯外部请求信号(高电平有效)
*Aim_InFloor--电梯内部设置目标楼层信号(高电平有效)
*Aim_OutFloor--电梯外部各楼层请求信号(1有请求,0无请求)
*AimFloor_OutDirec--电梯外部各楼层请求的方向信号(1向上,0向下)
*LED_GetInf--电梯外部输入允许LED显示
*
*intermediate:
i,j,k--分别循环检测状态7个楼层状态
*flag--电梯外部请求类型标志(2'b01下行,2'b10上行),flag0--电梯外部信息输入有效标志
*temp--临时寄存检测楼层i+1层时的楼层值i=1,temp=7'b0000010(二楼)
*InFloor,OutFloor--存放最新的按键状态,以实现楼层输入信号的变化监测
*
*******************************************************************************************/
moduleReadInformation(CurFloor,MoveMode,DoorState,AimFloor,AimFloor_OutDirec,Aim_OutFloor,Aim_InFloor,LED_GetInf,New_InFloor,New_OutFloor,AimDown,AimUp,CLK,RESET);
inputAimDown,AimUp,CLK,RESET,DoorState;
input[1:
0]MoveMode;
input[6:
0]New_InFloor,New_OutFloor,CurFloor;
output[6:
0]AimFloor,AimFloor_OutDirec,Aim_OutFloor,Ai
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 电梯 控制器 设计