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