《智能电梯控制系统设计》论文.docx
《《智能电梯控制系统设计》论文.docx》由会员分享,可在线阅读,更多相关《《智能电梯控制系统设计》论文.docx(24页珍藏版)》请在冰点文库上搜索。
《智能电梯控制系统设计》论文
摘要
楼宇自控系统(BuildingAutomationSystem,简称BAS)是基于现代分布控制理论而设计的集散系统,通过网络系统将分布在各监控现场的系统控制器连接起来,共同完成集中操作,管理和分散控制的综合自动化系统。
BAS的目标就是对建筑物的机电设备采用现代计算机技术进行全面有效的监控,以确保建筑物内舒适和安全的办公环境,同时实现高效节能的要求,并对特定事物做出适当反应。
它的监控范围通常包括冷热源系统、空调系统、送排风系统、给排水系统、变配电系统、照明系统、电梯系统等。
电梯智能控制与人们的生活息息相关,是楼宇自动化的重要内容。
传统的电梯控制是通过继电器之间的连锁控制来实现的,由于系统触点多,出故障率高,维护管理不方便等缺点,而逐渐被淘汰。
现阶段,利用PLC实现电梯的运行控制,利用监控软件显示电梯的运行状态是电梯智能控制的一个重要发展方向。
文章利用监控软件Kingview6.53编写电梯监控画面,实现了对电梯运行状态的双相控制。
为解决智能电梯扩展性较差,更新升级复杂,效率较低等问题,设计了一种新型的智能电梯控制系统。
该系统具有与通用的电梯控制系统不同的体系结构,采用接口扩展方式,将智能电梯控制系统的通用控制器与特殊功能控制器分开,提高了智能电梯的系统扩展性和通用性。
经过仿真验证,其结果表明:
该系统能够实现减少无效开门、满载检测、自动节能、低速自救等智能化功能。
且该设计易于实现,能够大幅度提高智能电梯的可靠性与智能化水平。
摘要·······································1
目录······································2
项目功能,现象与要求···························3
设计思路流程··································3
硬件电路图设计······························5
软件c语言设计·······························6
软硬件联调···································16
不足和改进之处···································16
体会·····································16
参考文献···································17
一、项目功能,现象与要求。
1、按键从右到左依次为1-3层楼的电梯按钮,哪一层楼的按钮按下,电梯应该移动到该楼层,并打开电梯门。
LED小灯从右到左依次为1-3层楼的电梯门,门开相应楼层的小灯亮起,门关灯灭。
2、所有数码管显示电梯所在楼层,并随电梯上下移动而改变。
3、电梯向上、下移动时,点阵显示滚动的上下箭头,1秒钟滚动一圈。
每上、下一层楼需要5秒钟时间,故每上、下一层楼点阵显示滚动的上下箭头5圈。
4、电梯到达所需楼层开门时,蜂鸣器响一秒,电梯门打开,3秒钟后自动关闭。
5、如果电梯出现问题时,按下电梯内部按钮(最左边按键),外面故障灯亮(最左边LED小灯),所有数码管显示电梯所在出问题楼层,点阵显示E,蜂鸣器响一秒停一秒一直循环下去。
二、设计思路流程。
1、硬件设计
由于系统不需要很大内存,处理速度不是很高,所以采用STC89LE52AD单片机做处理器。
显示器件用8*8点阵做实时上下楼箭头指示显示及故障显示,用四位数码管和四个LED灯做实时上下楼层显示及故障楼层显示,用蜂鸣器做实时上下楼声音提示及故障报警提示。
操作器件用四个按键分别做故障、一楼、二楼、三楼选择控制。
驱动芯片用74HC573做四位数码管驱动。
2、软件设计。
N
Y
三、硬件电路图设计。
四、软件C语言程序设计。
/**********************************
电梯main.c
**********************************/
#include
#include
/********************************/
sbitenter=P3^2;
sbitcancel=P3^3;
sbitadd=P3^4;
sbitsub=P3^5;
/********************************/
ucharkey_flag;//按键标识
ucharbuf;//楼层标志
/************数码管字段显示数组********************/
uchardisp_reg[]={
disp_0,disp_1,disp_2,disp_3,disp_4,disp_5,disp_6,disp_7,
disp_8,disp_9,disp_a,disp_b,disp_c,disp_d,disp_e,disp_f
};
/*************“E”显示数组*******************/
ucharcodeled_E_zifu[8]={
0x0f,0x08,0x08,0x0e,0x08,0x08,0x08,0x0f,//E
};
/**************向下箭头数组******************/
ucharcodemov_down[][8]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x18,0x18,0x18,0x18,0xDB,0x7E,0x3C,0x18,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/**************向上箭头数组******************/
ucharcodemov_up[][8]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x18,0x3C,0x7E,0xDB,0x18,0x18,0x18,0x18,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/*************存放显示数据数组*******************/
uchartemp[8]={0};
/***********延时函数*********************/
voiddelay()
{
uchari;
for(i=150;i>0;i--);
}
/************延时函数********************/
voiddelayms(ucharx)
{
uchari;
uint16j;
for(i=x;i>0;i--)
for(j=5000;j>0;j--);
}
/**************蜂鸣器开函数******************/
voidbee_on()
{
bee=0;
}
/**************蜂鸣器关函数******************/
voidbee_off()
{
bee=1;
}
/**************led1亮函数******************/
voidled1_on()
{
led1=1;
led2=1;
led3=1;
led4=0;
}
/**************led2亮函数******************/
voidled2_on()
{
led1=1;
led2=1;
led3=0;
led4=1;
}
/*************led3亮函数*******************/
voidled3_on()
{
led1=1;
led2=0;
led3=1;
led4=1;
}
/**************led4亮函数******************/
voidled4_on()
{
led1=0;
led2=1;
led3=1;
led4=1;
}
/**************led4灭函数******************/
voidled_off()
{
led1=1;
led2=1;
led3=1;
led4=1;
}
/***********蜂鸣器延时函数*********************/
voidbee_delayns(ucharx)
{
uchari;
for(i=x;i>0;i--);
}
/*************蜂鸣器发声函数*******************/
voidbee_do(ucharx)
{
uchardat;
uint16i;
dat=x;
for(i=300;i>0;i--)
{
bee_on();
bee_delayns(dat);
bee_off();
bee_delayns(dat);
}
}
/*************蜂鸣器下楼发声函数*******************/
voidbee_down()
{
bee_do(0x26);
bee_do(0x15);
bee_do(0x15);
bee_do(0x15);
}
/************蜂鸣器上楼发声函数********************/
voidbee_up()
{
bee_on();
delayms
(2);
bee_off();
delayms
(2);
bee_on();
delayms
(2);
bee_off();
}
/***********数码管显示函数*********************/
voiddisp_led(ucharx)
{
d2=1;d3=1;d4=1;
delay();
P2=disp_reg[x];
delay();
d2=0;d3=0;d4=0;
delay();delay();delay();delay();
delay();delay();delay();delay();
delay();delay();delay();delay();
d2=1;d3=1;d4=1;
delay();
}
/************初始化函数********************/
voidinit_int()
{
key_flag=1;
buf=1;
IT0=0;
IT1=0;
EA=1;
EX0=1;
EX1=1;
}
/***********TI中断函数*********************/
voidint1_key()interrupt2
{
delayms
(1);
if(cancel==0)
{
key_flag=3;
}
while(cancel==0);
}
/*************按键检测函数*******************/
voidkey_test()
{
if(key3==0)
{
key_flag=2;
}
if(key4==0)
{
key_flag=1;
}
}
/*************数据显示函数*******************/
voiddisp_dat(ucharx)
{
uchari,j,k,l;
for(j=x;j>0;j--)
{
for(k=10;k>0;k--)
{
l=0xfe;
for(i=0;i<8;i++)
{
P0=l;
P2=temp[i];
delay();
P0=0xff;
P2=0;
l<<=1;
l++;
}
}
disp_led(buf);
key_test();
}
}
/***************向数组写存入数函数*****************/
voidadjust_jingtai(uchar*dat)
{
uchari;
for(i=0;i<8;i++)
{
temp[i]=*dat;
dat++;
}
}
/*************上楼显示函数*******************/
voiddisp_moveup(uchar*dat)
{
uchari;
for(i=0;i<16;i++)
{
dat++;
adjust_jingtai(dat);
disp_dat
(2);
}
}
/************下楼显示函数********************/
voiddisp_movedown(uchar*dat)
{
uchari;
for(i=0;i<16;i++)
{
dat--;
adjust_jingtai(dat);
disp_dat
(2);
}
}
/**************上楼显示循环次数函数******************/
voidmove_up()
{
uchari;
for(i=5;i>0;i--)
{
disp_moveup(&mov_up[0][0]);
}
}
/*************下楼显示循环次数函数*******************/
voidmove_down()
{
uchari;
for(i=5;i>0;i--)
{
disp_movedown(&mov_down[2][0]);
}
}
/*************"E"显示函数*******************/
voiddisp_led_E_zifu(uchar*dat)
{
adjust_jingtai(dat);
disp_dat
(2);
}
/*************上下楼判断函数*******************/
voidadjust()
{
while(buf>key_flag)
{
move_down();
buf--;
switch(buf)
{
case1:
bee_down();
led1_on();
delayms(100);
led_off();
break;
case2:
bee_down();
led2_on();
led1_on();
delayms(100);
led_off();
break;
case3:
bee_down();
led3_on();
led1_on();
delayms(100);
led_off();
break;
default:
break;
}
}
while(buf{
move_up();
buf++;
switch(buf)
{
case1:
bee_up();
led1_on();
led1_on();
delayms(100);
led_off();
break;
case2:
bee_up();
led2_on();
break;
case3:
bee_up();
led3_on();
led1_on();
delayms(100);
led_off();
break;
default:
break;
}
}
switch(buf)
{
case1:
led1_on();
break;
case2:
led2_on();
break;
case3:
led3_on();
break;
default:
break;
}
disp_led(buf);
}
/************T0中断函数********************/
voidint0_key()interrupt0
{
delayms
(1);
while
(1)
{
disp_led_E_zifu(&led_E_zifu[0]);
bee_on();
led4_on();
delayms(50);
bee_off();
led_off();
delayms(50);
}
}
/*************主函数*******************/
voidmain()
{
init_int();
while
(1)
{
adjust();
key_test();
}
}
/**********************************
电梯MCU.H
**********************************/
#defineucharunsignedchar
#defineuint16unsignedint
#defineuint32unsignedlong
/*****LED灯*****/
sbitled1=P1^1;
sbitled2=P1^2;
sbitled3=P1^3;
sbitled4=P1^4;
/*****数码管******/
sbitd1=P1^5;
sbitd2=P1^6;
sbitd3=P1^7;
sbitd4=P3^6;
#definedisp_00xfc
#definedisp_10x60
#definedisp_20xda
#definedisp_30xf2
#definedisp_40x66
#definedisp_50xb6
#definedisp_60xbe
#definedisp_70xe0
#definedisp_80xfe
#definedisp_90xf6
#definedisp_a0xee
#definedisp_b0x3e
#definedisp_c0x9c
#definedisp_d0x7a
#definedisp_e0x9e
#definedisp_f0x8e
#definedisp_p0xce
#definedisp_-0x02
#definedisp_l0x1c
#definedisp_h0x6e
#definedisp_r0x0e
#definedisp_t0x1e
#definedisp_u0x7c
/***键盘****/
sbitkey1=P3^2;
sbitkey2=P3^3;
sbitkey3=P3^4;
sbitkey4=P3^5;
/****蜂鸣器****/
sbitbee=P3^7;
/*****8*8LED******/
sbitcom1=P0^0;
sbitcom2=P0^1;
sbitcom3=P0^2;
sbitcom4=P0^3;
sbitcom5=P0^4;
sbitcom6=P0^5;
sbitcom7=P0^6;
sbitcom8=P0^7;
五、软硬件联调。
1、向单片机写入程序,上电复位。
2、初始化显示,四位数码管显示一楼,一楼灯亮,点阵屏无显示,蜂鸣器不响。
3、上楼时,点阵屏显示上楼箭头,循环五次,到达相应楼层后,点阵屏熄灭,四位数码管显示相应楼层,蜂鸣器发出上楼到达声音,相应楼层灯亮代表电梯门开,三秒钟后,如果没人进入,电梯门自动关闭,相应楼层灯灭。
4、下楼时,点阵屏显示下楼箭头,循环五次,到达相应楼层后,点阵屏熄灭,四位数码管显示相应楼层,蜂鸣器发出下楼到达声音,相应楼层灯亮代表电梯门开,三秒钟后,如果没人进入,电梯门自动关闭,相应楼层灯灭。
(上下楼时,蜂鸣器发声不同。
)
5、故障按键,如果某一层楼发生故障,按下故障按键,此时,点阵屏闪烁显示E,四位数码管闪烁显示相应的故障楼层,故障灯闪烁,蜂鸣器发出故障报警,所有闪烁显示的频率和报警频率一致。
6、如果操作中与上述现象不一致,应根据现象情况检查相应的程序模块,检查调试程序,排除故障。
六、不足和待改进之处。
电梯在上下楼时,不能再搭载人。
电梯从一楼向三楼上升的过程中,如果二楼有人上三楼,那么电梯将不会停下,中间不能再搭载人。
此弊端,电梯需要改进,不切合实际。
硬件部分也许不需要改动,软件需要升级。
七、体会。
单片机作为一些自动化控制和一些智能产品的处理器,以其体积小巧,功能强大的特点,在电子产品设计及工业自动化控制方面的应用越来越广泛,随着现代科技的进步,单片机不断的更新升级,单片机的种类越来越多,功能也越来越强大。
所以,单片机作为专业核心,学习单片机显得更为重要。
通过大二上半年的单片机的学习,了解和掌握了单片机的一些软件和硬件的设计方法。
通过实际项目的设计,了解了单片机项目开发的一些基本流程。
在实际的软件编程中也遇到了各种问题,通过对实际问题的解决,更加提高身了自己的编程技术。
所以,在电子设计方面,无论是软件设计,还是硬件设计,都必须仔细认真,刻苦专研,才能把项目做得更好,使自己走的更远更高。
参考文献
1、《智能建筑设计技术》,(第二版)同济大学出版社华东建筑计院出版,2002
2、华东建筑设计院,《智能建筑设计技术》,同济大学出版社,1996年10月
3、牛云陞、徐庆继主编,《楼宇智能化技术》,天津大学出版社