停靠的地方,然后进入running,每5秒爬升或降低一楼,如果到达目的地,则进入opening,并清除有关数据,2秒后进入waiting,等待5秒进入closing,2秒后重新进行计算,得出下次的目的地。这就需要设置电梯的速度,每5s爬一层,等待时间为5s,等待接受请求的时间为2s。由于定时/计数器方式1为16位计数器,其所能计的最大数值为65535,计时不能1s,而程序中需要的定时都是以s为单位的,所以就只有利用定时和计数两种当时结合来达到定时5s或者2s。由于程序中需要定时的时间不只一个,只使用一个定时器,要达到要求,采用以下的思路:定时50ms,计数20,这样可以达到1s的时间,然后再利用for循环,用一个变量来计数到2或者5,表示是达到了2s或者5s ,这样就能灵活的操作不同状态下的时间了。程序中设置TOMD=0x21,即定时/计数器0在工作方式1下,定时方式。设置TRO=1,开始计数。计数初值有公式计算得出TH0=0x3c,TL0=0xb0。
6.5 行列式键盘
单片机系统的键盘一般使用非编码键盘,其特点是硬件电路简单,必须有一套相应的程序与之配合。使用非编码键盘,需要用软件来解决按键识别、防止抖动及键码的产生等工作。采用行扫描法来识别按键,程序中使用的是4x4的键盘,只使用了中间的两行,8条线可以接在一个I/O口上。然后通过交替变换I/O的引脚的高低电平来确定按键。先设置引脚高4位为高,低4位为低,当有键按下时,高4位就会有相应的一条线就会变为低电平,得到一个码值。然后取相反的设置,有键按下时,低4位就会有相应的一条线就会变为低电平,则可以再得到一个码值。最后将两个得到的码值相或,则可以得出键码。而按键去抖动,才用的是在检测到有键按下时,等待一段时间再进行“行扫描”,延时时间为10-20ms,这可通过延迟子程序来解决。程序中,使用4x4的键盘的中间两行,有1-6层的数字,分别表示相应的楼层号,及x和-,x表示关门,-表示开门。得到键码后,还要将键码转换为对应的键盘上的数字或者开/关门表示,这样行列键盘的编程工作才算全部完成。
6.5.1段数码管动态扫描显示
LED显示器工作方式有两种:静态显示方式和动态显示方式。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。点亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,
第 15 页 共 36 页
使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
使用7段数码管显示器,有共阴和共阳两种接法,本设计中采用共阴接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。
设计中需要用到7段数码管显示的有两处,一是显示所选择的内部请求即目的地,二是显示电梯当前所到达的搂层。内部请求的显示,最多需要同时显示4个搂层,要用到4个7段数码管,采用动态显示的方式。而且为了保证显示的楼层不断的刷新显示,请求被响应的过程清晰明了,使显示的楼层数字按从左到右,从大到小的顺序排列。这样能很明了的看出谁先被响应,响应的顺序是怎样的。这个过程,是在程序中从6楼到1楼的数字循环检测,有内部请求,则显示段码,然后再从右到左移位片选码,来达到从右边开始显示的效果。然后不断的循环检测是否有显示,这样如果有3个目的地,其中一个到达后,相应的蓝色数码管所显示的该目的地就会熄灭。由于不断循环,后两个目的地则会依次移动一个位置。这样的显示效果是因为循环显示才完成的。
6.5.2 LED灯泡显示
LED灯泡的亮和灭是通过设置引脚的电平变化来实现的。这里着重描述的是本设计中灯泡工作的程序实现。LED灯泡表示外部请求情况,如仿真图所示共10个灯泡,分别对应从机的十个外部按键,除去1层和6层的按键,中间8个都接在P2口,用一个长度为8的字符数组表示,数组相应的位置上为“1”则灯泡亮。从机的按键是分为向上和向下两组的,主机的显示通过把两组交替合并显示,程序8位数组进行操作,通过移位和“或”操作来得到表示向上和向下的灯泡交替出现的,且对应左边相应的楼层请求。详细可见程序display()。
第 16 页 共 36 页
7 软件设计概述
7.1 软件设计总体流程
程序实现的总体结构如图7-1所示。
开始Inti()While(1)YDisplay()YNInterrupt 1handleTime()NYInterrupt 4handleSerial()
图7-1 系统程序总体结构图
说明:
由于电梯控制系统实际上是一个人机交互式的控制系统,实时处理的要求很高,基于这一点,该软件设计的思想就将所有交互的操作采用中断完成。主程序只负责不断的刷新显示,有外部事件的申请,才中断,转去执行中断程序,中断程序执行完之后就返回,继续执行显示程序。在通信中断和定时中断程序中去调用电梯调度算法程序,实现电梯调度。程序中有两个中断程序,串行通信中断和定时/计数器中断,单片机中规定了这两个中断源的优先级,定时中断的优先级大于串行通信中断,这样程序中不会出现同时中断,需要判断由谁先响应的问题。考虑到该系统的算法实现都是由中断实现的,如果算法的处理太复杂,就会影响响应的速度,所以采用了并联电梯的忙梯算法,而没有采用更加高效的神经网络模糊算法等,因为这样软件复杂程度高,不利于系统的运行。
第 17 页 共 36 页
7.2 电梯群控概述
一座建筑物往往需要安装两台或两台以上电梯,但如果只装两台或是两台以上各自独立运行的电梯,并不能提高效率。以A、B两台电梯为例,如果某一层乘客要求上行,按下两台电梯的上召唤按钮,则两台电梯会同时应召前往,结果一台电梯往往是空行;又如,有两个邻层的上召唤信号,本可由B电梯顺向停靠应召,但如果两个上召信号分别给了A、B,则两台电梯同时上行。这种线路不能合理调配电梯,而采用双梯并联或群控可以大大提高运行效率.当建筑物中多台电梯处于并联或群控状态时,对信号控制系统设计好坏的评价标准是电梯响应召唤的快速性和运行能量的最小化。电梯群控技术就是为解决这样的问题产生的。电梯群控系统是指在一座大楼内的数台电梯通过一个或多个的控制器(计算机)互联控制。该系统可以采集到每台电梯的内召,上下外召、载重以及位置等信号,并可向每台电梯发送控制信号。主控制器对该组电梯进行统一调度管理,使他们合理运行。群控电梯的控制具有多目标行,非线性性不确定性。具体要求及特性如下:
1) 乘客的平均候梯时间要尽量短。
2) 尽量减少乘客的长候梯率,即尽量避免产生上时间的候梯过程。 3) 轿厢到达的预报准确率高,减少乘客的等待时的心理压力。 4) 电梯运送乘客的时间要尽量短,并合理分配电梯应答,防止堆聚和忙
闲不分。
5) 选择能源消耗最节省的方式,尽量降低能耗。 6) 层站的乘客书不确定。
7) 呼梯者的目的站不能事先确定。
8) 对同一组呼梯,在不同的时间标度下,轿厢的分配是不同的,轿厢分
配的变化是不连续的。
7.3 忙梯算法
7.3.1算法概述
1) 通常情况下,一台电梯(A 梯)在基站待命,另一电梯(B梯)为忙梯,在最后的服务层。有召唤时由忙梯响应,如图7-2(a)所示。
2) 当两个电梯均在基站时,对厅召唤由先到基站的电梯响应,另一电梯则成为基站梯。
3) 当B梯上行时,响应其上方的任何厅召唤及下方的下方向召唤,而其下方的上方向召唤则由A梯响应,如图7-2(b)所示。
第 18 页 共 36 页
4) 当B梯下行时,响应其下方的下行召唤,而其下方的上召唤及上方的任何厅召唤则由A梯来响应,如图7-2(c)所示。
5) 当A梯召唤很多而B梯长时间不具备发车条件,或A梯因有故障长时间不能正常运行时,通知B梯发车响应。
B梯B梯B梯A梯A梯A梯 a b c图7-2并联电梯算法调度情况
7.3.2 算法评价
以上调度原则简单明了、易于实现,但存在不足。主要缺陷在于,并联电梯的调度情况只考虑召唤的方向而未考虑召唤离服务梯的距离,因此对3) 和4) 两个原则,很可能出现一台电梯空闲,另一台电梯过忙的情况。这一情况虽可通过5) 来解决,但要等一段时间,故实时性较差.因此继电器的硬件线路的调度方法无法解决距离的问题,这只有依靠微处理器的逻辑运算和通信功能解决,所以以一台电梯为“忙梯”的调度原则并不能解决快速服务问题。
7.3.3 算法的改进之处
1) 正常情况下,当电梯使用以后,B梯作为忙梯会首先自动上升至第三层待命,A梯则作为基站电梯在第一层楼待命。当某层站有门厅呼叫信号时,则“忙梯”立即启动并定向运行去接该层站的乘客。
2) 对7-2(c)的运行规则的改变:当B梯向下运行时,响应其下方的任何请求,和其上方的向上请求,而其上方的向下请求,由A梯响应,如图7-3 (c)示。这样避免出现基本梯过忙的情况。
第 19 页 共 36 页