基于有限状态机的自动门控系统软件设计

2016-05-25 00:37何勇灵
网络安全与数据管理 2016年3期
关键词:开关门锁门自动门

田 龙, 何勇灵

( 北京航空航天大学 交通科学与工程学院,北京 100191)

基于有限状态机的自动门控系统软件设计

田 龙, 何勇灵

( 北京航空航天大学 交通科学与工程学院,北京 100191)

采用有限状态机的方法设计了一种自动门控制系统软件,可实现自动门的可靠开闭和精确检测。本文介绍了自动门控系统控制及检测要求,给出了有限状态机的基本原理,建立了基于有限状态机的程序设计模型,给出软件设计的部分关键代码。单步调试及装车实测证明:有限状态机模型有助于规范化解决控制系统软件设计问题。

有限状态机;信号检测;自动门控制

0 引言

在某自动门控系统中,根据门控装置配置的光电传感器、接近开关、微动开关和控制按钮的状态,执行开门、关门、锁门及开关门二级缓冲动作。划分门控系统运行状态,确定不同输入条件下门控系统状态转移过程,是设计自动门控系统软件的关键。本文根据自动门控系统配置传感器的信号特征,合理划分门控系统运行状态,采用有限状态机原理,设计了门控系统控制和监测软件,极大地提高了软件设计可靠性。

1 输入信号特征

自动门控系统输入信号包括:锁门状态信号、关门位置信号、关门检测信号、开门检测与位置信号、开门关门控制信号,分别以红外传感器、微动开关、接近传感器和门按钮实现物理动作与电信号转换,嵌入式微控制器根据输入信号的变化,按设计的控制逻辑,控制直流电机拖动自动门动作。自动门控系统原理框图如图1所示。

图1 自动门控系统原理框图

自动门控系统输入信号特征如下:

(1) 锁门状态信号,电平电压24 V、0 V有效,在红外传感器被锁舌遮挡时,信号能够保持低电平;

(2) 关门位置信号,电平电压24 V、24 V有效,当自动门门板上的金属挡板触碰微动开关使其闭合时,信号持续保持高电平;

(3) 关门检测信号,电平电压24 V、0 V有效,金属挡板遮挡接近传感器时,信号保持低电平;

(4) 开门检测与位置信号,电平电压24 V、0 V有效,金属挡板遮挡接近传感器时,信号保持低电平,金属挡板通过接近传感器后,信号恢复高电平;

(5) 开关门控制信号,由门按钮按下时给出电平电压为24 V的控制信号,有效时间<0.5 s,根据当前门状态控制直流电机的正转或者反转。

2 输入信号检测方法

2.1 检测方式

在嵌入式系统设计中,检测一个数字量,只需要检测数字量端口的高低电平。为了提高检测到的数字量的可靠性,一般采用滤波、多次检测的方式[1]。但是对于自动门控系统,系统需要实时、快速、稳定地检测到输入信号,因此要充分利用输入信号特征,系统状态对输入信号的屏蔽要求进行信号检测[2]。本文采用如下方法:

(1) 输入信号中断处理,沿触发;

(2) 按钮设备采用防抖处理;

(3) 针对不同门状态,屏蔽无关输入信号;

(4) 同时监测各个门状态下的设备信号。

通过上述几种对输入信号处理的方法,能够实时获取输入信号,及时处理。在这些信号处理的过程中,实际上是在自动门的多个状态下分别获取的,每一个状态不仅与输入信号相关,也与前一状态相关[3]。

2.2 划分门状态

在自动门工作过程中,通过接收输入信号,根据当前门状态进行开门动作、关门动作、锁门指示以及开关门二级缓冲等动作。自动门在同一时刻只能处于一种门状态,同时为了提高自动门的可靠性,在一个门状态下,程序能够屏蔽其他无关设备信号的变化。

本文针对自动门控制系统,定义了6个门状态:

(1) 开门状态,表征自动门在完全开门后的停止状态;

(2) 正在开门状态,表征自动门从完全关门位向开门位移动的状态;

(3) 关门状态,表征自动门在完全关门后的停止状态;

(4) 正在关门状态,表征自动门从完全开门位向关门位移动的状态;

(5) 锁门状态,表征自动门机械锁死,卫生间有人占用的状态;

(6) 故障状态,表征自动门输入设备或自动门轨迹上有障碍物,无法正常开关门的状态。

2.3 关于有限状态机

通过对信号处理的分析,采用有限状态机的方式建模将使信号处理更加方便可靠。有限状态机(Finite State Machine, FSM)常见于数字时序电路设计,是概念上、理论上的一种机器。有限状态机包括:一组有限的状态集,是描述系统中不同状态的集合;一个起始状态,指示系统开始时的状态;一组输入符号集,是系统接收的不同输入信息的集合;一个状态转移函数,将输入符号和当前状态映射到下一状态[4]。

当输入符号串时,有限状态机随即进入起始状态,在任意特定时刻,只能处于其中一种状态。状态的转换依赖于当前状态、输入符号(触发条件)和转换函数,转换时间理论上为0[5]。

根据已定义的门状态,各状态机对应的输入符号集及状态转换函数如下:

(1)S1,开门(STATE_OPENED):门外开门按钮触发时保持,门内开关门按钮触发或延时40 s后转入正在关门状态。在正在开门状态下,当开门接近开关由高电平转为低电平时转入。

(2)S2,关门(STATE_CLOSED):无外部触发时保持,门内开关门按钮、门外开门按钮触发时转入正在开门状态。在正在关门状态下,当微动开关由低电平转为高电平时转入;在锁门状态下,当光电开关由低电平转为高电平时转入。

(3)S3,正在开门(STATE_OPENING):在此状态下,门按钮触发时保持,当开门接近开关由高电平转为低电平时转入开门状态。在关门状态下,当门按钮触发时转入;在正在关门状态下,当异物或人阻挡门关闭时转入。

(4)S4,正在关门(STATE_CLOSING):在此状态下,门按钮触发时保持,当异物或人阻挡门关闭时转入正在开门状态。在开门状态下,门内开关门按钮触发时转入;在故障状态下,门内开关门按钮触发时转入。

(5)S5,锁门(STATE_LOCKED):在此状态下,门按钮触发时保持,当光电开关由低电平转为高电平转入关门状态。在关门状态下,光电开关由高电平转为低电平时转入。

(6)S6,故障(STATE_FAULT):在此状态下,门外开门按钮触发时保持,当门内开关门按钮触发时转入正在关门状态。在连续关门失败两次之后,门打开并转入。基于有限状态机的门控制过程如图2。

图2 基于有限状态机的门控制过程状态图

3 设计实现

在自动门控制系统中,通过中断检测信号上升沿或下降沿变化,实时获取相应传感器状态信息并使系统当前状态跳转到另一状态,使用switch…case语句在每次循环中检测系统状态,并执行相应动作[6]。软件程序使用C语言实现,包括程序定义状态机、信号实时检测、状态执行任务等[7]。

3.1 状态机

状态机的定义为:

typedef enum STATE

{

STATE_OPENED, //S1:开门状态

STATE_CLOSED, //S2:关门状态

STATE_OPENING, //S3:正在开门状态

STATE_CLOSING, //S4:正在关门状态

STATE_LOCKED, //S5:锁门状态

STATE_FAULT //S6:故障状态

} STATE

3.2 信号实时检测

外部传感器有一个关门微动开关,一个关门接近开关,一个开门接近开关,一个锁门光电开关,另有两个门按钮——开门按钮与开关门按钮,分别连接至控制板的POS1,POS2,POS3,LOCK,SW1,SW2六个信号端口。由于各个传感器的设计不同,微动开关采用24 V供电,高电平有效,两个接近开关和一个光电开关采用24 V供电,低电平有效。在程序内部,初始化四个信号端口对应的I/O口,初始化中断,其中微动开关、两个门按钮配置为上升沿触发,关门接近开关、锁门光电开关配置为下升沿触发,开门接近开关上升-下降沿触发。信号检测代码位于中断服务函数中[8]。

相关的中断控制包括:

(1)微动开关信号上升沿进入中断,系统状态设置为关门状态;

(2)关门接近开关信号下降沿进入中断,给出自动门关门减速控制信号;

(3)开门接近开关信号下降沿进入中断,给出自动门开门减速控制信号,上升沿进入中断,系统状态设置为开门状态;

(4)锁门光电开关信号下降沿进入中断,系统状态设置为锁门状态,上升沿进入中断,系统状态设置为关门状态;

(5)门按钮信号上升沿进入中断,控制自动门开门或关门,同时设置系统状态为正在开门状态或正在关门状态。

3.3 状态执行任务

在进行状态循环检测之前,需要对系统上电之后的门状态进行一次判断,使门关闭。状态循环检测由while循环实现,采用switch语句在每个分支case对应的状态执行相应的动作。

while(1)

{

switch(STATE)

{

case STATE_OPENED:

ID1 = ID2 = 0;

DRV1 = DRV3 = 0;

TIM_SetCompare1(TIM3,DRV1);

TIM_SetCompare3(TIM3,DRV3);

……

break;

case STATE_CLOSED:

ID1 = ID2 = OCUP = 0;

DRV1 = 0, DRV3 = stopspeed;

TIM_SetCompare1(TIM3,DRV1);

TIM_SetCompare3(TIM3,DRV3);

……

break;

case STATE_OPENING:

if(BUFF_OPEN==0) OpenDoor_Control();

while(!BUFF_OPEN)

{

…… //电机过流检测

}

CloseToOpen();

……

break;

case STATE_CLOSING:

if(BUFF_CLOSE==0) CloseDoor_Control();

while(!BUFF_CLOSE)

{

…… //电机过流检测

}

OpenToClose ();

……

break;

case STATE_LOCKED:

ID1 = ID2 = OCUP = 1;

break;

case STATE_FAULT:

FAULT = 1;

break;

default:

delay_ms(5);

break;

}

}

4 测试与验证

4.1 软件仿真、在线仿真测试

采用KEIL自带的软件仿真工具进行测试。首先进行信号检测任务的测试,通过软件模拟给出外部设备信号,分步调试观察外部设备信号的变化,能够使程序跳入中断服务函数内,并在执行完控制量设置之后能够跳出中断服务函数,回到主循环。其次进行有限状态机功能测试,对于在不同状态下接收到的每一个外部设备信号,确认是否能将其他无关信号屏蔽,能否在当前状态下产生相对应的控制量,能否实时监测相关信号是否正常,能否接收有效的外部设备信号并跳转到下一状态。

采用在线仿真测试,测试内容与软件仿真相似,不同之处是将JLINK在线调试器连接到控制板,外部设备信号由真实的外部设备给出,显示输出信号占用的指示灯和故障指示灯也连接到控制板上,在线调试的优点在于既能做接近于真实情况的实验,又能在线调试控制板,观察各个信号的变化。

4.2 装车测试

此测试采用CRH380高速动车组列车的残疾人卫生间门控装置以及传感器,替换原有控制器。在装车测试中,针对自动门关门、开门、缓冲、防夹功能以及故障、占用指示功能进行逐一测试。

5 结论

采用有限状态机实现自动门状态控制与检测的方法,能够可靠检测外部设备信号,在相应状态下能够屏蔽无关设备信号,提高了自动门实时控制的可靠性。

[1] 施先旺, 刘婷婷, 李国良. 采用有限状态机实现控制指令的可靠检测[J]. 火箭推进, 2011, 37(5): 63-68.

[2] 何剑宇, 刘兢兢. 有限状态机建模在嵌入式按键设计中的应用[J]. 沈阳师范大学学报: 自然科学版, 2012, 30(2): 168-171.

[3] 徐智穹, 刘健, 邱浩. 有限状态机在嵌入式软件设计中的应用[J]. 低压电器, 2008(13):20-22.

[4] 冯竞楠. 利用有限状态机的交通灯控制系统设计与仿真[J]. 电子设计工程, 2011, 19(12): 156-159.

[5] Miro Samek.嵌入式系统的微模块化程序设计——实用状态图C/C++实现[M]. 敬石钧,陈丽蓉,译.北京:北京航空航天大学出版社, 2004.

[6] 李晓锋, 宋锐, 曾小宝. 有限状态机在嵌入式系统中的实现及应用[J]. 广西轻工业, 2008, 24(4): 38-39.

[7] 范晶,胡爱兰.基于状态机的PEX8311的DMA实现[J].微型机与应用,2014,33(22):30-33.

[8] 宰文姣.基于步进电机的自动门系统设计[J].微型机与应用,2015,34(5):30-31,34.

Software design for automatic control system based on FSM

Tian Long, He Yongling

(School of Transportation Science and Engineering, Beihang University ,Beijing 100191, China)

The finite state machine is adopted to design the software of an automatic door control system, which can realize control of the automatic door opening and closing, and guarantee the accurate detection . This article describes the control of automatic door control system and testing requirements, gives the basic principle of finite state machine and sets up a software design model which is based on finite state machine, lists some of the key code of this software design. Single-step debugging and loading test prove that finite state machine model contributes to the standardization of solving the problems of control system software.

finite state machine; signal detection; automatic door control

TP24

A

1674- 7720(2016)03- 0011- 04

田龙,何勇灵. 基于有限状态机的自动门控系统软件设计[J].微型机与应用,2016,35(3):11- 14.

2015-10-09)

田龙(1989-),男,在读研究生,主要研究方向:嵌入式控制软硬件设计。

何勇灵(1963-),男,教授,主要研究方向:汽车电子软硬件控制技术、工业机器人技术。

猜你喜欢
开关门锁门自动门
轨道列车开关门过程对客室温度影响的数值仿真研究
浅析CR400AF型动车组塞拉门系统功能以及控制原理
基于PLC控制的平移式自动门设计
吉利汽车:史上最无聊的直播
A dog helps the little boy with autism
基于物联网的生猪精细饲喂系统设计
强迫症
自制教具之自动门控制系统在通用技术课程中的运用
头脑奥林匹克答案
锁门