电梯自动化控制系统已经成为计算机技术应用领域中的相当重要的一个分支。为适应电梯的安全性、可靠性和功能灵活性等需求,系统多以微型计算机为核心。这种系统是将计算机技术、自动控制技术、通信技术以及转换技术高度整合的体系。
电梯是楼宇自动化中重要的一部分,那么对于电梯楼层的控制算法是电梯运行的核心部分。那么今天介绍的是电梯自动控制中最基本的单部电梯楼层控制算法,这种算法运用环形队列的思想予以实现。电梯楼层控制,是指乘客按下按键后,电梯按照一定响应顺序来移动电梯完成乘客的运送需求。
目录
一、电梯总体结构
电梯的总体结构如图1所示,其中轿厢是承载人或者货物的部分,厅门是指安装在每层楼电梯口的门,轿厢本身也有自己的门,所以当电梯门打开或者关闭时,实际是轿厢门和厅门同时开关。

二、电梯与楼层控制相关的组成部分
1、选层按键
选层按键如图2所示,这个键盘安装在轿厢内,作用是让已经进入电梯轿厢的人通过此键盘设定目的楼层。

2、呼梯按键
呼梯按键安装在厅门边上,作用是让每层楼电梯厅内想要乘坐电梯的人用来设置上楼或者下楼的指令。

3、平层感应器
平层感应器的作用是用来确定电梯轿厢所在的楼层。平层感应器实物如图3所示,原理如图4所示,感应器和隔磁板相互配合才能正常工作。电梯一般是在轿厢顶安装平层感应器,在主导轨每层平层位置装上隔磁板,当感应器进入隔磁板时开始计脉冲数,运行到设置好的脉冲值位置停车,就是平层位置。


4、电梯控制器
电梯的控制器一般都是PLC,用来接收电梯系统的呼梯按键、选层按键、开关门按键信号、平层传感器信号和其他一些功能按键的信号,以及控制电梯的运动,轿门、厅门的开关、呼梯按键、选层按键灯的亮灭、楼层数码管的显示等。
三、单部电梯楼层控制基本算法
电梯楼层的控制算法目前已经发展的很成熟,尤其是多部电梯的集群控制,已经逐渐智能化,基于专家系统、模糊逻辑等技术的电梯群控系统可以适应电梯交通的不确定性、控制目标的多样化、非线性表现等动态特性。
那么单部电梯的是集群控制的基础,下边介绍一下用环形队列的方法实现单部电梯楼层控制的算法。
1、电梯运行的特点
为了解释的更清楚,先定义两个概念:
(1)上行区间
指电梯处于由低楼层向高楼层移动的过程。
(2)下行区间
指电梯处于由高楼层向低楼层移动的过程。
(3)上行指令
指电梯轿厢所在位置以上楼层呼梯按钮的上行指令,和轿厢内选层按钮设置的目的楼层高于电梯轿厢所在位置的指令。
(4)下行指令
指电梯轿厢所在位置以下楼层呼梯按钮的下行指令,和轿厢内选层按钮设置的目的楼层低于电梯轿厢所在位置的指令。
乘客对电梯的楼层控制是通过呼梯或者选层按键来下达的,这个按键的指令实际就是对电梯下达一个平层的指令,电梯要对一系列平层指令按照顺序进行响应。为了提高电梯的运行效率,电梯响应平层指令不是按照指令下达的先后顺序来执行的,而是按照电梯的运行区间(上行或者下行)和指令的种类(上行或者下行)之间关系,把指令进行排序后依次执行的。
2、下边给初电梯运行的原则
(1)电梯就近响应指令
当电梯处于上行区间时,电梯只响应上行指令,且按照上行指令目的层由低到高依次执行;当电梯处于下行区间时,只响应下行指令,且按照下行指令目的层由高到低依次执行。
(2)电梯运行区间的切换
电梯处于上行区间时,执行完最后一条上行指令后,运行区间变换为下行;电梯处于下行区间时,执行完最后一条下行指令后,运行区间变换为上行。
3、楼层序号
假如某电梯一共n层,最低一层序号为0,最高一层序号为n-1。电梯轿厢所在楼层变量定义为curfloor,轿厢移动目的楼层变量定义为desfloor。电梯的楼层控制实际就是首先由平层传感确定curfloor,然后根据算法确定desfloor,控制电梯轿厢由curfloor移动到desfloor。
4、指令数组
观察电梯厅门的呼梯按键可以发现,最低层只有一个上行按钮,最高层只有一个下行按钮。其余楼层均有上行、下行两个按钮。也就是呼梯一共有(n-2)*2+2=2n-2个按钮。再观察轿厢内的选层按钮,只有最低一层至最高一层n个按钮,但除了最低一层和最高一层之外,每个按键实际也是两种指令,如果所选楼层低于当前层,实际上是一个下行指令,如果所选楼层高于当前层,那么指令是上行指令。也就是说,无论呼梯按键还是选层按键,实际上的指令个数都是相同的,都是2n-2个。
那么电梯的楼层控制实际就是按照一定顺序响应这些指令,将电梯轿厢移动到相应楼层,也就是电梯的运行状态要时刻跟随指令。
电梯效率最高的运行模式是按照由最低层到最高层,再由最高层到最低层的环状顺序依次响应指令,所以我们以构造环形数组来存放指令,电梯轿厢依次执行环形数组内的指令,对指令进行顺序响应,移动到相应楼层。
环形数组是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。
我们构造的环形数组如图所示,一共2n-2个元素,每一个元素存放相应的控制电梯指令。比如,a[0]存放的控制电梯移动到0层的指令,a[1]存放1层呼梯键上行键的指令,或者轿厢低于1层时选层键1的指令,a[2n-3]存放1层呼梯键下行键的指令,或者轿厢高于1层时选层键1的指令。同样,a[2]存放2层呼梯键上行键的指令,或者轿厢低于2层时选层键2的指令;a[2n-4]存放2层呼梯键下行键的指令,或者轿厢高于2层时选层键2的指令。
该数组中存放的数据类型为布尔型,内容存放0或者1,1代表有指令,0代表没有指令。需要注意的是,指令存放的位置是固定的,a[0]存放最低楼层(0层)平层指令,a[n-1]存放最高层平层指令。a[1]——a[n-2]存放第1层至第n-2层上行平层指令,a[n]——a[2n-3]存放第n-2层至第1层的下行平层指令。可以用a[i](0<=i<=2n-3)来表示第i中状态。
5、楼层序号和指令数组序号的关系
当前楼层或目的楼层数计算方法如下:
当0<=i<=n-1时,楼层数=i;
当n-1<i<=2n-3时,楼层数=2n-2-i;
6、具体算法
(1)初始化
desfloor=0,电梯移动到0层;a[0]——a[2n-3]均置0;当前执行的指令数组序号cur_cmd_no=0;
(2)检测轿厢所在楼层curfloor
(3)检测呼梯按键信号
检测2n-2个呼梯按键,如果序号为call_no的按键按下了,则相应的a[call_no]置1;
(4)检测选层按键信号
检测n个呼梯按键,如果有按键按下了,判断按键序号select_no和轿厢所在楼层序号curfloor的大小关系;select_no>curfloor,那么a[select_no]=1;如果select_no<curfloor,那么a[2n-2-select_no]=1;
(5)搜索下一个指令
从a[cur_cmd_no]开始,顺时针搜索环形数组,如果遇到数组a[i]内数值为1,则停止搜索。
根据“5.楼层序号和指令数组序号的关系”,确定目的楼层序号desfloor。
(6)移动电梯
执行电梯由curfloor层移动到desfloor;
cur_cmd_no=i;
curfloor=desfloor;
a[i]=0;
(7)重复步骤(2)-(6)
(全文结束)