一種可擴(kuò)展的三層電梯控制器的實(shí)現(xiàn)
引言
本文采用VHDL語(yǔ)言來(lái)設(shè)計(jì)實(shí)用三層電梯控制器,其代碼具有良好的可讀性和易理解性,源程序經(jīng)A1tera公司的MAX+plus II軟件仿真,目標(biāo)器件選用CPLD器件。通過(guò)對(duì)三層電梯控制器的設(shè)計(jì),可以發(fā)現(xiàn)本設(shè)計(jì)有一定的擴(kuò)展性,而且可以作為更多層電梯控制器實(shí)現(xiàn)的基礎(chǔ)。
如果要實(shí)現(xiàn)n層電梯的控制,首先在端口的地方就要加入所有的按鍵,而指示燈只要把向量中的3改成n就可以了。同時(shí)需要在按鍵控制進(jìn)程里加入其他按鍵觸發(fā)指示燈的語(yǔ)句。在電梯的升降狀態(tài)將3改成n,在電梯的開門狀態(tài)中將2改成n一1,在關(guān)門狀態(tài),將position=3改成position=n,關(guān)鍵是修改position=2的部分,如果按照每層羅列,將十分煩瑣,所以得尋求各層判斷條件的共性,解決方法之一就是,新建一個(gè)全局向量one為std—logic—veoter(n downto 3)應(yīng)改寫成0,然后和stoplight與fuplight向量比較,如果有更高層次的請(qǐng)求,那么stoplight或fuplight向量,如果stoplight和fuplight向量都小于one向量,表示沒有更高層次的內(nèi)部上升請(qǐng)求,此時(shí)將fdnlight向量和one向量比較,如果大于,則表示高層有下降要求,電梯得上升。如果沒有任何請(qǐng)求信號(hào),則電梯停止,否則電梯下降。如此就可以大大簡(jiǎn)化程序,但是要注意的是one向量必須實(shí)時(shí)更新,以作為判斷依據(jù),可以另外寫一個(gè)進(jìn)程,用buttonclk來(lái)觸發(fā)。
1 三層電梯控制器將實(shí)現(xiàn)的功能
(1)每層電梯入口處設(shè)有上下請(qǐng)求開關(guān),電梯內(nèi)設(shè)有顧客到達(dá)層次的停站請(qǐng)求開關(guān)。
(2)設(shè)有電梯入口處位置指示裝置及電梯運(yùn)行模式(上升或下降)指示裝置。
(3)電梯每秒升(降)一層樓。
(4)電梯到達(dá)有停站請(qǐng)求的樓層,經(jīng)過(guò)1秒電梯門打開,開門指示燈亮,開門4秒后,電梯門關(guān)閉(開門指示燈滅),電梯繼續(xù)進(jìn)行,直至執(zhí)行完最后一個(gè)請(qǐng)求信號(hào)后停留在當(dāng)前層。
(5)能記憶電梯內(nèi)外所有請(qǐng)求,并按照電梯運(yùn)行規(guī)則按順序響應(yīng),每個(gè)請(qǐng)求信號(hào)保留至執(zhí)行后消除。
(6)電梯運(yùn)行規(guī)則一當(dāng)電梯處于上升模式時(shí),只響應(yīng)比電梯所在位置高的上樓請(qǐng)求信號(hào),由下而上逐個(gè)執(zhí)行,直到最后一個(gè)上樓請(qǐng)求執(zhí)行完畢;如果高層有下樓請(qǐng)求,則直接升到由下樓請(qǐng)求的最高層,然后進(jìn)入下降模式。當(dāng)電梯處于下降模式時(shí)則與上升模式相反。
(7)電梯初始狀態(tài)為一層開門狀態(tài)。
2 設(shè)計(jì)方案和論證
2.1 控制器的設(shè)計(jì)方案
控制器的功能模塊如圖1所示,包括主控制器、分控制器、樓層選擇器、狀態(tài)顯示器、譯碼器和樓層顯示器。乘客在電梯中選擇所要到達(dá)的樓層,通過(guò)主控制器的處理,電梯開始運(yùn)行,狀態(tài)顯示器顯示電梯的運(yùn)行狀態(tài),電梯所在樓層數(shù)通過(guò)譯碼器譯碼從而在樓層顯示器中顯示。分控制器把有效的請(qǐng)求傳給主控制器進(jìn)行處理,同時(shí)顯示電梯的運(yùn)行狀態(tài)和電梯所在樓層數(shù)。由于分控制器相對(duì)簡(jiǎn)單很多,所以主控制器是核心部分。
2.2 三層電梯控制器的設(shè)計(jì)思路
電梯控制器采用狀態(tài)機(jī)來(lái)實(shí)現(xiàn),思路比較清晰??梢詫㈦娞莸却拿棵腌娨约伴_門、關(guān)門都看成一個(gè)獨(dú)立的狀態(tài)。由于電梯又是每秒上升或下降一層,所以就可以通過(guò)一個(gè)統(tǒng)一的1秒為周期的時(shí)鐘來(lái)觸發(fā)狀態(tài)機(jī)。根據(jù)電梯的實(shí)際工作情況,可以把狀態(tài)機(jī)設(shè)置10個(gè)狀態(tài),分別是“電梯停留在第1層”、“開門”、“關(guān)門”、“開門等待第1秒”、“開門等待第2秒”、“開門等待第3秒”、“開門等待第4秒”、“上升”、“下降”和“停止?fàn)顟B(tài)”。各個(gè)狀態(tài)之間的轉(zhuǎn)換條件可由上面的設(shè)計(jì)要求所決定。
3 三層電梯控制器的綜合設(shè)計(jì)
3.1 三層電梯控制器的實(shí)體設(shè)計(jì)
首先考慮輸入端口,一個(gè)異步復(fù)位端口reset,用于在系統(tǒng)不正常時(shí)回到初始狀態(tài);在電梯外部,必須有升降請(qǐng)求端口,一層是最低層,不需要有下降請(qǐng)求,三層是最高層,不需要有上升請(qǐng)求,二層則上升、下降請(qǐng)求端口都有;在電梯的內(nèi)部,應(yīng)該設(shè)有各層停留的請(qǐng)求端口:一個(gè)電梯時(shí)鐘輸入端口,該輸入時(shí)鐘以1秒為周期,用于驅(qū)動(dòng)電梯的升降及開門關(guān)門等動(dòng)作;另有一個(gè)按鍵時(shí)鐘輸入端口,時(shí)鐘頻率比電梯時(shí)鐘高。
其次是輸出端口,有升降請(qǐng)求信號(hào)以后,就得有一個(gè)輸出端口來(lái)指示請(qǐng)求是否被響應(yīng),有請(qǐng)求信號(hào)以后,該輸出端口輸出邏輯‘l’。被響應(yīng)以后則恢復(fù)邏輯‘O’;同樣,在電梯內(nèi)部也應(yīng)該有這樣的輸出端口來(lái)顯示各層停留是否被響應(yīng);在電梯外部,需要一個(gè)端口來(lái)指示電梯現(xiàn)在所處的位置;電梯開門關(guān)門的狀態(tài)也能用一個(gè)輸出端口來(lái)指示;為了觀察電梯的運(yùn)行是否正確,可以設(shè)置一個(gè)輸出端口來(lái)指示電梯的升降狀態(tài)。
3.2 三層電梯控制器的結(jié)構(gòu)體設(shè)計(jì)
首先說(shuō)明一下狀態(tài)。狀態(tài)機(jī)設(shè)置了lO個(gè)狀態(tài),分別是電梯停留在l層(stoponl)、開門(dooropen)、關(guān)門(doorclose)、開門等待第1秒(doorwaitl)、開門等待第2秒(doorwait2)、開門等待第3秒(doorwait3)、開門等待第4秒(doorwait4)、上升(up)、下降(down)和停止(stop)。在實(shí)體說(shuō)明定義完端口之后,在結(jié)構(gòu)體architecture和begin之間需要有如下的定義語(yǔ)句,來(lái)定義狀態(tài)機(jī)。
TYPE lift_state IS
(stoponl,dooropen,doorclose,doorwaitl,doorwait2,doorwai t3,door。wai t4,up,down,s top):
SIGNAL mylift:lift_state:
在結(jié)構(gòu)體中,設(shè)計(jì)了倆個(gè)進(jìn)程互相配合,一個(gè)是狀態(tài)機(jī)進(jìn)程作為主要進(jìn)程,另外一個(gè)是信號(hào)燈控制進(jìn)程作為輔助進(jìn)程。狀態(tài)機(jī)進(jìn)程中的很多判斷條件是以信號(hào)燈進(jìn)程產(chǎn)生的信號(hào)燈信號(hào)為依據(jù)的,而信號(hào)燈進(jìn)程中信號(hào)燈的熄滅又是由狀態(tài)機(jī)進(jìn)程中傳出的clearup和cleardn信號(hào)來(lái)控制。
在狀態(tài)機(jī)進(jìn)程中,在電梯的上升狀態(tài)中,通過(guò)對(duì)信號(hào)燈的判斷,決定下一個(gè)狀態(tài)是繼續(xù)上升還是停止;在電梯下降狀態(tài)中,也是通過(guò)對(duì)信號(hào)燈的判斷,決定下一個(gè)狀態(tài)是繼續(xù)下降還是停止;在電梯停止?fàn)顟B(tài)中,判斷是最復(fù)雜的,通過(guò)對(duì)信號(hào)的判斷,決定電梯是上升、下降還是停止。
在信號(hào)燈控制進(jìn)程中,由于使用了專門的頻率較高的按鍵時(shí)鐘,所以使得按鍵的靈敏度增大,但是時(shí)鐘頻率不能過(guò)高,否則容易使按鍵過(guò)于靈敏。按鍵后產(chǎn)生的點(diǎn)亮的信號(hào)燈(邏輯值為‘1’)用于作為狀態(tài)機(jī)進(jìn)程中的判斷條件,而clearup和cleardn信號(hào)為邏輯‘l’使得相應(yīng)的信號(hào)燈熄滅。
3.3 三層電梯控制器VHDL設(shè)計(jì)
三層電梯控制器的VHDL描述模塊流程如圖2所示。三層電梯控制器的源代碼(見附錄)可知:
(1)本程序設(shè)計(jì)調(diào)用了IEEE庫(kù),IEEE庫(kù)是VHDL設(shè)計(jì)中最為常用的庫(kù),它包含有IEEE標(biāo)準(zhǔn)的程序包和其他一些支持工業(yè)標(biāo)準(zhǔn)的程序包。本設(shè)計(jì)采用了STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_UNSIGNED程序包。
(2)以關(guān)鍵詞ENTITY引導(dǎo),END ENTITY threeflift結(jié)尾的語(yǔ)句部分,稱為實(shí)體。VHDL的實(shí)體描述了電路器件的外部情況及各信號(hào)端口的基本性質(zhì)。本設(shè)計(jì)定義了關(guān)于三層電梯控制器用到的各類時(shí)鐘、異步復(fù)位按鍵、信號(hào)燈指示、電梯的請(qǐng)求。端口模式主要就是IN、BUFFER、OUT端口。及定義了各端口信號(hào)的數(shù)據(jù)類型,主要是STD_LOGIC(標(biāo)準(zhǔn)邏輯位數(shù)據(jù)類型)、INTEGER(整數(shù)類型)、STD_LOGIC_VECTOR(標(biāo)準(zhǔn)邏輯矢量數(shù)據(jù)類型)。這些都滿足上面調(diào)用的IEEE庫(kù)中的程序包。
(3)以關(guān)鍵詞ARCHITECTURE引導(dǎo),END ARCHITECTUREa結(jié)尾的語(yǔ)句部分,稱為結(jié)構(gòu)體。結(jié)構(gòu)體負(fù)責(zé)描述電路器件的內(nèi)部邏輯功能或電路結(jié)構(gòu)。本設(shè)計(jì)定義了lO個(gè)狀態(tài)。描述了在三層電梯中出現(xiàn)的各種可能的情況作為控制電梯的主要進(jìn)程。信號(hào)燈控制作為輔助進(jìn)程。
3.4 三層電梯控制器的模塊