田 龍, 何勇靈
( 北京航空航天大學 交通科學與工程學院,北京 100191)
基于有限狀態(tài)機的自動門控系統(tǒng)軟件設計
田 龍, 何勇靈
( 北京航空航天大學 交通科學與工程學院,北京 100191)
采用有限狀態(tài)機的方法設計了一種自動門控制系統(tǒng)軟件,可實現(xiàn)自動門的可靠開閉和精確檢測。本文介紹了自動門控系統(tǒng)控制及檢測要求,給出了有限狀態(tài)機的基本原理,建立了基于有限狀態(tài)機的程序設計模型,給出軟件設計的部分關鍵代碼。單步調試及裝車實測證明:有限狀態(tài)機模型有助于規(guī)范化解決控制系統(tǒng)軟件設計問題。
有限狀態(tài)機;信號檢測;自動門控制
在某自動門控系統(tǒng)中,根據(jù)門控裝置配置的光電傳感器、接近開關、微動開關和控制按鈕的狀態(tài),執(zhí)行開門、關門、鎖門及開關門二級緩沖動作。劃分門控系統(tǒng)運行狀態(tài),確定不同輸入條件下門控系統(tǒng)狀態(tài)轉移過程,是設計自動門控系統(tǒng)軟件的關鍵。本文根據(jù)自動門控系統(tǒng)配置傳感器的信號特征,合理劃分門控系統(tǒng)運行狀態(tài),采用有限狀態(tài)機原理,設計了門控系統(tǒng)控制和監(jiān)測軟件,極大地提高了軟件設計可靠性。
自動門控系統(tǒng)輸入信號包括:鎖門狀態(tài)信號、關門位置信號、關門檢測信號、開門檢測與位置信號、開門關門控制信號,分別以紅外傳感器、微動開關、接近傳感器和門按鈕實現(xiàn)物理動作與電信號轉換,嵌入式微控制器根據(jù)輸入信號的變化,按設計的控制邏輯,控制直流電機拖動自動門動作。自動門控系統(tǒng)原理框圖如圖1所示。
圖1 自動門控系統(tǒng)原理框圖
自動門控系統(tǒng)輸入信號特征如下:
(1) 鎖門狀態(tài)信號,電平電壓24 V、0 V有效,在紅外傳感器被鎖舌遮擋時,信號能夠保持低電平;
(2) 關門位置信號,電平電壓24 V、24 V有效,當自動門門板上的金屬擋板觸碰微動開關使其閉合時,信號持續(xù)保持高電平;
(3) 關門檢測信號,電平電壓24 V、0 V有效,金屬擋板遮擋接近傳感器時,信號保持低電平;
(4) 開門檢測與位置信號,電平電壓24 V、0 V有效,金屬擋板遮擋接近傳感器時,信號保持低電平,金屬擋板通過接近傳感器后,信號恢復高電平;
(5) 開關門控制信號,由門按鈕按下時給出電平電壓為24 V的控制信號,有效時間<0.5 s,根據(jù)當前門狀態(tài)控制直流電機的正轉或者反轉。
2.1 檢測方式
在嵌入式系統(tǒng)設計中,檢測一個數(shù)字量,只需要檢測數(shù)字量端口的高低電平。為了提高檢測到的數(shù)字量的可靠性,一般采用濾波、多次檢測的方式[1]。但是對于自動門控系統(tǒng),系統(tǒng)需要實時、快速、穩(wěn)定地檢測到輸入信號,因此要充分利用輸入信號特征,系統(tǒng)狀態(tài)對輸入信號的屏蔽要求進行信號檢測[2]。本文采用如下方法:
(1) 輸入信號中斷處理,沿觸發(fā);
(2) 按鈕設備采用防抖處理;
(3) 針對不同門狀態(tài),屏蔽無關輸入信號;
(4) 同時監(jiān)測各個門狀態(tài)下的設備信號。
通過上述幾種對輸入信號處理的方法,能夠實時獲取輸入信號,及時處理。在這些信號處理的過程中,實際上是在自動門的多個狀態(tài)下分別獲取的,每一個狀態(tài)不僅與輸入信號相關,也與前一狀態(tài)相關[3]。
2.2 劃分門狀態(tài)
在自動門工作過程中,通過接收輸入信號,根據(jù)當前門狀態(tài)進行開門動作、關門動作、鎖門指示以及開關門二級緩沖等動作。自動門在同一時刻只能處于一種門狀態(tài),同時為了提高自動門的可靠性,在一個門狀態(tài)下,程序能夠屏蔽其他無關設備信號的變化。
本文針對自動門控制系統(tǒng),定義了6個門狀態(tài):
(1) 開門狀態(tài),表征自動門在完全開門后的停止狀態(tài);
(2) 正在開門狀態(tài),表征自動門從完全關門位向開門位移動的狀態(tài);
(3) 關門狀態(tài),表征自動門在完全關門后的停止狀態(tài);
(4) 正在關門狀態(tài),表征自動門從完全開門位向關門位移動的狀態(tài);
(5) 鎖門狀態(tài),表征自動門機械鎖死,衛(wèi)生間有人占用的狀態(tài);
(6) 故障狀態(tài),表征自動門輸入設備或自動門軌跡上有障礙物,無法正常開關門的狀態(tài)。
2.3 關于有限狀態(tài)機
通過對信號處理的分析,采用有限狀態(tài)機的方式建模將使信號處理更加方便可靠。有限狀態(tài)機(Finite State Machine, FSM)常見于數(shù)字時序電路設計,是概念上、理論上的一種機器。有限狀態(tài)機包括:一組有限的狀態(tài)集,是描述系統(tǒng)中不同狀態(tài)的集合;一個起始狀態(tài),指示系統(tǒng)開始時的狀態(tài);一組輸入符號集,是系統(tǒng)接收的不同輸入信息的集合;一個狀態(tài)轉移函數(shù),將輸入符號和當前狀態(tài)映射到下一狀態(tài)[4]。
當輸入符號串時,有限狀態(tài)機隨即進入起始狀態(tài),在任意特定時刻,只能處于其中一種狀態(tài)。狀態(tài)的轉換依賴于當前狀態(tài)、輸入符號(觸發(fā)條件)和轉換函數(shù),轉換時間理論上為0[5]。
根據(jù)已定義的門狀態(tài),各狀態(tài)機對應的輸入符號集及狀態(tài)轉換函數(shù)如下:
(1)S1,開門(STATE_OPENED):門外開門按鈕觸發(fā)時保持,門內開關門按鈕觸發(fā)或延時40 s后轉入正在關門狀態(tài)。在正在開門狀態(tài)下,當開門接近開關由高電平轉為低電平時轉入。
(2)S2,關門(STATE_CLOSED):無外部觸發(fā)時保持,門內開關門按鈕、門外開門按鈕觸發(fā)時轉入正在開門狀態(tài)。在正在關門狀態(tài)下,當微動開關由低電平轉為高電平時轉入;在鎖門狀態(tài)下,當光電開關由低電平轉為高電平時轉入。
(3)S3,正在開門(STATE_OPENING):在此狀態(tài)下,門按鈕觸發(fā)時保持,當開門接近開關由高電平轉為低電平時轉入開門狀態(tài)。在關門狀態(tài)下,當門按鈕觸發(fā)時轉入;在正在關門狀態(tài)下,當異物或人阻擋門關閉時轉入。
(4)S4,正在關門(STATE_CLOSING):在此狀態(tài)下,門按鈕觸發(fā)時保持,當異物或人阻擋門關閉時轉入正在開門狀態(tài)。在開門狀態(tài)下,門內開關門按鈕觸發(fā)時轉入;在故障狀態(tài)下,門內開關門按鈕觸發(fā)時轉入。
(5)S5,鎖門(STATE_LOCKED):在此狀態(tài)下,門按鈕觸發(fā)時保持,當光電開關由低電平轉為高電平轉入關門狀態(tài)。在關門狀態(tài)下,光電開關由高電平轉為低電平時轉入。
(6)S6,故障(STATE_FAULT):在此狀態(tài)下,門外開門按鈕觸發(fā)時保持,當門內開關門按鈕觸發(fā)時轉入正在關門狀態(tài)。在連續(xù)關門失敗兩次之后,門打開并轉入?;谟邢逘顟B(tài)機的門控制過程如圖2。
圖2 基于有限狀態(tài)機的門控制過程狀態(tài)圖
在自動門控制系統(tǒng)中,通過中斷檢測信號上升沿或下降沿變化,實時獲取相應傳感器狀態(tài)信息并使系統(tǒng)當前狀態(tài)跳轉到另一狀態(tài),使用switch…case語句在每次循環(huán)中檢測系統(tǒng)狀態(tài),并執(zhí)行相應動作[6]。軟件程序使用C語言實現(xiàn),包括程序定義狀態(tài)機、信號實時檢測、狀態(tài)執(zhí)行任務等[7]。
3.1 狀態(tài)機
狀態(tài)機的定義為:
typedef enum STATE
{
STATE_OPENED, //S1:開門狀態(tài)
STATE_CLOSED, //S2:關門狀態(tài)
STATE_OPENING, //S3:正在開門狀態(tài)
STATE_CLOSING, //S4:正在關門狀態(tài)
STATE_LOCKED, //S5:鎖門狀態(tài)
STATE_FAULT //S6:故障狀態(tài)
} STATE
3.2 信號實時檢測
外部傳感器有一個關門微動開關,一個關門接近開關,一個開門接近開關,一個鎖門光電開關,另有兩個門按鈕——開門按鈕與開關門按鈕,分別連接至控制板的POS1,POS2,POS3,LOCK,SW1,SW2六個信號端口。由于各個傳感器的設計不同,微動開關采用24 V供電,高電平有效,兩個接近開關和一個光電開關采用24 V供電,低電平有效。在程序內部,初始化四個信號端口對應的I/O口,初始化中斷,其中微動開關、兩個門按鈕配置為上升沿觸發(fā),關門接近開關、鎖門光電開關配置為下升沿觸發(fā),開門接近開關上升-下降沿觸發(fā)。信號檢測代碼位于中斷服務函數(shù)中[8]。
相關的中斷控制包括:
(1)微動開關信號上升沿進入中斷,系統(tǒng)狀態(tài)設置為關門狀態(tài);
(2)關門接近開關信號下降沿進入中斷,給出自動門關門減速控制信號;
(3)開門接近開關信號下降沿進入中斷,給出自動門開門減速控制信號,上升沿進入中斷,系統(tǒng)狀態(tài)設置為開門狀態(tài);
(4)鎖門光電開關信號下降沿進入中斷,系統(tǒng)狀態(tài)設置為鎖門狀態(tài),上升沿進入中斷,系統(tǒng)狀態(tài)設置為關門狀態(tài);
(5)門按鈕信號上升沿進入中斷,控制自動門開門或關門,同時設置系統(tǒng)狀態(tài)為正在開門狀態(tài)或正在關門狀態(tài)。
3.3 狀態(tài)執(zhí)行任務
在進行狀態(tài)循環(huán)檢測之前,需要對系統(tǒng)上電之后的門狀態(tài)進行一次判斷,使門關閉。狀態(tài)循環(huán)檢測由while循環(huán)實現(xiàn),采用switch語句在每個分支case對應的狀態(tài)執(zhí)行相應的動作。
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.1 軟件仿真、在線仿真測試
采用KEIL自帶的軟件仿真工具進行測試。首先進行信號檢測任務的測試,通過軟件模擬給出外部設備信號,分步調試觀察外部設備信號的變化,能夠使程序跳入中斷服務函數(shù)內,并在執(zhí)行完控制量設置之后能夠跳出中斷服務函數(shù),回到主循環(huán)。其次進行有限狀態(tài)機功能測試,對于在不同狀態(tài)下接收到的每一個外部設備信號,確認是否能將其他無關信號屏蔽,能否在當前狀態(tài)下產生相對應的控制量,能否實時監(jiān)測相關信號是否正常,能否接收有效的外部設備信號并跳轉到下一狀態(tài)。
采用在線仿真測試,測試內容與軟件仿真相似,不同之處是將JLINK在線調試器連接到控制板,外部設備信號由真實的外部設備給出,顯示輸出信號占用的指示燈和故障指示燈也連接到控制板上,在線調試的優(yōu)點在于既能做接近于真實情況的實驗,又能在線調試控制板,觀察各個信號的變化。
4.2 裝車測試
此測試采用CRH380高速動車組列車的殘疾人衛(wèi)生間門控裝置以及傳感器,替換原有控制器。在裝車測試中,針對自動門關門、開門、緩沖、防夾功能以及故障、占用指示功能進行逐一測試。
采用有限狀態(tài)機實現(xiàn)自動門狀態(tài)控制與檢測的方法,能夠可靠檢測外部設備信號,在相應狀態(tài)下能夠屏蔽無關設備信號,提高了自動門實時控制的可靠性。
[1] 施先旺, 劉婷婷, 李國良. 采用有限狀態(tài)機實現(xiàn)控制指令的可靠檢測[J]. 火箭推進, 2011, 37(5): 63-68.
[2] 何劍宇, 劉兢兢. 有限狀態(tài)機建模在嵌入式按鍵設計中的應用[J]. 沈陽師范大學學報: 自然科學版, 2012, 30(2): 168-171.
[3] 徐智穹, 劉健, 邱浩. 有限狀態(tài)機在嵌入式軟件設計中的應用[J]. 低壓電器, 2008(13):20-22.
[4] 馮競楠. 利用有限狀態(tài)機的交通燈控制系統(tǒng)設計與仿真[J]. 電子設計工程, 2011, 19(12): 156-159.
[5] Miro Samek.嵌入式系統(tǒng)的微模塊化程序設計——實用狀態(tài)圖C/C++實現(xiàn)[M]. 敬石鈞,陳麗蓉,譯.北京:北京航空航天大學出版社, 2004.
[6] 李曉鋒, 宋銳, 曾小寶. 有限狀態(tài)機在嵌入式系統(tǒng)中的實現(xiàn)及應用[J]. 廣西輕工業(yè), 2008, 24(4): 38-39.
[7] 范晶,胡愛蘭.基于狀態(tài)機的PEX8311的DMA實現(xiàn)[J].微型機與應用,2014,33(22):30-33.
[8] 宰文姣.基于步進電機的自動門系統(tǒng)設計[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
田龍,何勇靈. 基于有限狀態(tài)機的自動門控系統(tǒng)軟件設計[J].微型機與應用,2016,35(3):11- 14.
2015-10-09)
田龍(1989-),男,在讀研究生,主要研究方向:嵌入式控制軟硬件設計。
何勇靈(1963-),男,教授,主要研究方向:汽車電子軟硬件控制技術、工業(yè)機器人技術。