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