

摘 ?要: 本文介紹了基于FPGA設計的一種四層電梯控制器,使用有限狀態機實現,采用VHDL語言對其進行描述,通過Quartus II 13.0軟件及ModelSim軟件進行電路的綜合與仿真,驗證了此電梯控制器設計的正確性。
關鍵詞: FPGA;電梯控制器;VHDL;狀態機
中圖分類號: TP342+.3 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.04.041
本文著錄格式:吳雪顏. 基于FPGA的電梯控制器[J]. 軟件,2019,40(4):190195
【Abstract】: The paper introduces a four-layer elevator controller design based on FPGA, which is implemented by finite state machine and described by VHDL language. Carrying on synthesis and simulation of the circuit with Quartus II 13.0 and ModelSim software, verifies correctness of the elevator controller design.
【Key words】: FPGA; Elevator controller; VHDL; State machine
0 ?引言
隨著我國城市化的發展,高層建筑不斷增多,電梯已經進入了人們的日常生產生活之中,作為具有足夠安全性的動力驅動升降裝置,電梯成為高層建筑中必不可少的垂直運輸交通工具[1]。可編程邏輯器件(如FPGA、CPLD)的廣泛應用,使得電子系統的設計更加方便靈活,改變了傳統數字系統設計的方法,推動了EDA技術的發展[2]。本文中的電梯控制器利用現場可編程門陣列(FPGA)進行設計,并進行了仿真。
1 ?EDA技術
在計算機技術的推動下,20世紀末,電子技術獲得了飛速的發展,EDA(Electronics Design Automation)技術就是現代電子設計技術的核心。EDA技術依賴功能強大的計算機,在EDA工具軟件平臺上,對以硬件描述語言HDL(Hardware Description Language)為系統邏輯描述手段完成的設計文件,自動的完成邏輯化簡、邏輯分割、邏輯綜合、結構綜合(布局布線),以及邏輯優化和仿真測試等功能,直至實現既定性能的電子線路系統功能[3]。
可編程邏輯器件是通過EDA技術將電子應用系統的既定功能和技術指標具體實現的硬件載體,FPGA作為實現這一途徑的主流器件之一,具有直接面向用戶,靈活性和通用性極大,使用方便,硬件測試和實現快捷等特點[4]。
硬件描述語言(HDL)是一種用來設計數字邏輯系統和描述數字電路的語言[5],常用的主要有VHDL、Verilog HDL、System Verilog和Symtem C。作為一種全方位的硬件描述語言,VHDL具有與具體硬件電路無關、與設計平臺無關的特性,具有寬范圍描述能力、不依賴于特定的器件、可將復雜控制邏輯的設計用嚴謹簡潔的代碼進行描述等優點,得到眾多EDA公司的支持,在電子設計領域得到了廣泛應用[6]。
有限狀態機(Finite-state machine, FSM),簡稱狀態機,是表示有限個狀態以及在這些狀態之間進行轉移和動作等行為的數學模型[7]。在許多方面,有限狀態機都有其難以超越的優越性,主要表現在它作為高效的順序控制模型,容易利用現成的EDA工具進行優化設計,系統性能穩定,具有高速性能和高可靠性能。有限狀態機廣泛應用于數字系統、工業自動化、計算機系統等領域[8]。
2 ?系統設計及仿真
2.1 ?硬件原理
四層電梯的硬件原理如圖1所示,包括兩臺電機,一臺用于吊升電梯轎廂,一臺用于控制電梯門的開關。轎廂和對重分別連接在曳引繩兩端,轎廂作為運載乘客或貨物及其他載荷的箱體部件,對重則具有平衡轎廂載荷和減小電機功率的作用。
2.2 ?輸入輸出端口信號
根據圖1可以總結出電梯控制器的輸入輸出端口信息如表1所示,其中電梯轎廂位置信號(in_ cage_pos)和電梯門開閉位置信號(in_door_pos)實際中由傳感器采集得到(對電梯控制器來說是輸入信號)。但在本設計中為了簡化仿真激勵文件,這兩個信號由轎廂電機和門控電機的控制信號(out_cage_dir, out_cage_en, out_door_dir, out_ door_en)的生效時間直接生成(比如可以用100個clk時間電梯上行或下行1層的距離,用100個clk時間電梯門可從全開狀態關閉成全閉狀態)[9]。因此這兩個信號可作為內部信號,不體現在端口上。但為了仿真觀測方便,把生成的這兩個信號作為輸出,并將這兩個信號的名字改為了out_cage_pos和out_door_pos。
2.3 ?內部信號設置
首先,12個按鍵的請求狀態端口信號,以及 out_door_pos、out_cage_pos、out_cage_dir、out_ cage_en、out_door_dir、out_door_en 端口信號,這18個端口的方向是輸出的,由于程序內部需要對這些信號進行讀取,因此為他們設置內部信號;其次開門狀態持續一定的時間后需要自動關門,這需要一個定時計數器信號。內部信號設置如表2所示。
2.4 ?進程分類
(1)號進程為分頻時鐘產生進程,當檢測到由外部提供的時鐘信號時,則產生由FPGA內部的PLL鎖相環進行分頻處理,從而產生分頻時鐘信號[10]。
(2)號進程為door_pos,cage_pos產生進程,用來產生轎廂的位置信息和電梯門開關的位置信息。如果復位信號rst有效,則電梯門復位至全關閉狀態,轎廂初始在一層。
如果電梯門在運動且門在關閉中,若門原本是全關閉狀態則繼續全關閉狀態,否則門關閉;若門原本是全開狀態則繼續保持全開狀態,否則門慢慢打開。
如果轎廂在運動且轎廂下行,若轎廂原本在一層則繼續保持在一層,否則轎廂向下運動,若轎廂原本在四層則繼續保持在四層,否則轎廂向上運動。
(3)號進程為doortimer定時進程,用于計算電梯門的等待時間。如果復位信號rst有效,則電梯門等待時間清零重新計數。
如果門不處于全開狀態,則電梯門等待時間清零重新計數。
如果門處于全開狀態,若轎廂內按了開門按鍵,則電梯門等待時間清零重新計數;若電梯門等待時間沒到限制的時間,那么繼續等待,計數累加;否則給等待計時器到達時間的標志。
(4)號進程為12個按鈕請求生效和失效處理進程,用于樓層的上下樓按鍵、轎廂內的開關門按鍵、轎廂內的樓層按鍵的生效和失效處理。如果復位信號rst有效,則12個按鍵請求初始不作用,為失效狀態。
樓層的上下樓按鍵:
若一層按上行,則一層上行請求生效,直到電梯在一層門全開狀態,一層上行請求失效;
若二層按上行,則二層上行請求生效,直到電梯在二層門全開狀態,二層上行請求失效;
若二層按下行,則二層下行請求生效,直到電梯在二層門全開狀態,二層下行請求失效;
若三層按上行,則三層上行請求生效,直到電梯在三層門全開狀態,三層上行請求失效;
若三層按下行,則三層下行請求生效,直到電梯在三層門全開狀態,三層下行請求失效;
若四層按下行,則四層下行請求生效,直到電梯在四層門全開狀態,四層下行請求失效。
轎廂內的開關門按鍵:
如果電梯停在任意一層按轎廂內的開門按鍵,則開門請求生效,否則電梯門處于全打開狀態,開門請求失效;
如果電梯停在任意一層按轎廂內的關門按鍵或電梯門等待時間到達,則關門請求生效,否則門全關或開門請求生效,關門請求失效。
轎廂內的樓層按鍵:
若轎廂內按一層,轎廂內一層指示按鍵生效,當電梯停在一層門全開,轎廂內一層指示按鍵失效;
若轎廂內按二層,轎廂內二層指示按鍵生效,當電梯停在二層門全開,轎廂內二層指示按鍵失效;
若轎廂內按三層,轎廂內三層指示按鍵生效,當電梯停在三層門全開,轎廂內三層指示按鍵失效;
若轎廂內按四層,轎廂內四層指示按鍵生效,當電梯停在四層門全開,轎廂內四層指示按鍵失效。
(5)號進程為樓層顯示進程,用于樓層的顯 ?示器的顯示控制。如果復位信號rst有效,則樓層顯示‘1。
若轎廂位置在一層,樓層顯示‘1;
若轎廂位置在二層,樓層顯示‘2;
若轎廂位置在三層,樓層顯示‘3;
若轎廂位置在四層,樓層顯示‘4。
(其中用7位段選碼控制顯示數碼管數字“gfedcba”)
(6)號進程為運動控制進程,用于產生cage_dir, cage_on,door_dir,door_en等運動控制的信號,確定電梯門和轎廂的運動狀態。如果復位信號rst有效,則運動狀態初始化。
如果轎廂不運動:
若轎廂在一層、電梯門不運動且門全關閉,當一層按上行或轎廂內按開門或轎廂內按一層時門打開,當二層按上行或下行、三層按上行或下行、四層按下行或轎廂內按二、三、四層時轎廂上行;若門為全開狀態,當轎廂內按關時門關閉。
若轎廂在二層、電梯門不運動且門全關閉,當二層按上行或下行、轎廂內按開門或轎廂內按二層時門打開,當三層按上行或下行、四層按下行、轎廂內按三層或四層時轎廂上行,當一層按上行或轎廂內按一層時轎廂下行;若門為全開狀態,當轎廂內按關時門關閉。
若轎廂在三層、電梯門不運動且門全關閉,當三層按上行或下行、轎廂內按開門或轎廂內按三層時門打開,當四層按下行或轎廂內按四層時,轎廂上行,當一層按上行、二層按上行或下行、轎廂內按一層或二層時,轎廂下行;若門為全開狀態,當轎廂內按關時門關閉。
若轎廂在四層、電梯門不運動且門全關閉,當四層按下行、轎廂內按開門或按四層時門打開,當一層按上行、二層按上行或下行、三層按上行或下行、轎廂內按一層或二層或三層時轎廂下行;若門為全開狀態,當轎廂內按關時門關閉。
當轎廂在任意一層且電梯門運動,如果門打開中,當門的位置全開后門停止運動;如果門關閉中,當轎廂內按開門時門打開,當門的位置到全關閉狀態后停止。
如果轎廂上行時:
若轎廂上行到一層,當一層按上行或轎廂內按一層時,轎廂停止運動。
若轎廂上行到二層,當二層按上行或轎廂內按二層時,轎廂停止運動;當二層按下行并且轎廂內沒有按三層或四層、三層沒有按上行或下行、四層沒有按下行時,轎廂也停止運動。
若轎廂上行到三層,當三層按上行或轎廂內按三層時,轎廂停止運動;當三層按下行并且四層沒有按下行、轎廂內沒有按四層時,轎廂也停止運動。
若轎廂上行到四層,轎廂停止運動。
如果轎廂下行時:
若轎廂下行到一層,轎廂停止運動。
若轎廂下行到二層,當二層按下行或轎廂內按二層時,轎廂停止運動;當二層按上行并且一層沒有按上行、轎廂內沒有按一層時,轎廂也停止運動。
若轎廂下行到三層,當三層按下行或轎廂內按三層時,轎廂停止運動;當三層按上行并且一層沒有按上行、二層沒有按上行或下行、轎廂內沒有按一層或二層時,轎廂也停止運動。
若轎廂下行到四層,轎廂停止運動;當四層按下行、轎廂內按四層時,轎廂也停止運動。
2.5 ?仿真結果
在Quartus II 13.0軟件開發環境下,運用ModelSim軟件進行如下過程仿真:電梯開始時在1層處于停止狀態,一段時間后有人A在1層按下上升請求按鈕,電梯門打開,人A進入后按下去4層的按鈕,門延時自動關閉后開始上行,上行過程中有人B在3層按下上升請求按鈕,電梯到達3層后停止,自動開門,人B進入后按下手動關門按鈕,但門還沒關上時發現人C從遠處跑來要乘電梯,于是按住手動開門按鈕等待人C,人C進來后人B松開手動開門按鈕,電梯自動關門,上行至4層,電梯自動開門,延時一段時間后自動關門并停在4層。得到仿真波形如圖2所示。
3 ?結論
本文基于FPGA設計了一種四層電梯控制器,使用有限狀態機實現,詳細介紹了電梯控制器系統的信號設置及進程分類,由仿真波形可以看出本設計實現了四層電梯控制器的功能。同時此電梯控制器采用FPGA進行設計,性能穩定,具有高可靠性。
參考文獻
[1] 任曉峰. 大樣本檢驗數據對電梯風險評估的應用[J]. 電子元器件與信息技術, 2018(07): 22-24+28.
[2] 郭霞, 楊拴科, 張安莉, 等. 《模擬電子技術實用教程》教材建設與實踐[J]. 電子測試, 2018(24): 107-108+123.
[3] 李文. 基于蟻群算法的電梯群控系統控制器設計[J]. 西昌學院學報(自然科學版), 2017, 31(04): 43-46.
[4] 羅建, 姜玲. 智能電梯控制系統優化設計[J]. 科學咨詢(科技·管理), 2018(01): 45+47.
[5] 馮建文. 有限狀態機在FPGA硬件實驗中的應用[J]. 實驗室研究與探索, 2017, 36(06): 138-141.
[6] 蔡景新. 電梯管理對電梯運行質量積極影響研究[J]. 新型工業化, 2018, 8(03): 47-51.
[7] 李鵬, 楊保亮, 胡勤國, 等. 基于可編程控制器的群控電梯模型設計與實現[J]. 重慶文理學院學報, 2015, 34(05): 76-80.
[8] 孫宏旭, 邢薇, 陶林. 基于有限狀態機的模型轉換方法的研究[J]. 計算機技術與發展, 2012, 22(02): 10-13+17.
[9] 蘭夏燕, 萬舟, 許有才, 等. 基于SVD優化EMD的電梯導靴振動信號故障 特征提取[J]. 軟件, 2017, 38(08): 25-31.
[10] 羅杰, 康華光. 兩種硬件描述語言VHDL/Verilog的發展及其應用[J]. 電氣電子教學學報, 2002(04): 1-5.