項(xiàng)目設(shè)計(jì)三層電梯控制系統(tǒng)_第1頁
項(xiàng)目設(shè)計(jì)三層電梯控制系統(tǒng)_第2頁
項(xiàng)目設(shè)計(jì)三層電梯控制系統(tǒng)_第3頁
項(xiàng)目設(shè)計(jì)三層電梯控制系統(tǒng)_第4頁
項(xiàng)目設(shè)計(jì)三層電梯控制系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、三層電梯控制系統(tǒng)一、 設(shè)計(jì)功能與要求電梯控制系統(tǒng)是的設(shè)計(jì)目標(biāo)是按照使用者的要求控制電梯的運(yùn)行。要求用VHDL設(shè)計(jì)出三層電梯的控制系統(tǒng),基本功能要求如下:1、 每層電梯入口處設(shè)有上、下請求開關(guān),使用者可以根據(jù)自身的上下樓需要按下相應(yīng)按鍵;電梯內(nèi)部設(shè)有到達(dá)樓層按鈕,使用者可以選擇到達(dá)樓層。2、 設(shè)有電梯運(yùn)行模式(上、下)標(biāo)識(shí)和當(dāng)前所在樓層標(biāo)識(shí)。3、 電梯運(yùn)行模式等同于普通電梯運(yùn)行模式,電梯一般按照提出請求的先后順序進(jìn)行響應(yīng)。程序根據(jù)電梯當(dāng)前位置和使用者所在樓層以及進(jìn)入電梯后的要求控制運(yùn)行狀態(tài)。4、 電梯初始模式為一層關(guān)門狀態(tài)。二、 設(shè)計(jì)思路本系統(tǒng)的主要輸入有電梯外上下控制按鈕Button(其中Bu

2、tton(0)表示一樓電梯外上升請求,Button(1)表示二樓電梯外上升請求, Button(2)表示二樓電梯外下降請求, Button(3)表示三樓電梯外下降請求);電梯內(nèi)到達(dá)樓層控制按鈕floor(其中floor(0)表示請求到達(dá)一層, floor(1)表示請求到達(dá)二層, floor(2)表示請求到達(dá)三層)。系統(tǒng)的輸出包括電梯位置標(biāo)識(shí)position,表示電梯當(dāng)前所在樓層;電梯開門關(guān)門顯示按鈕door(當(dāng)door=1時(shí)表示開門,door=0表示關(guān)門);電梯當(dāng)前運(yùn)行狀態(tài)按鈕up_down(當(dāng)up_down=1時(shí)表示電梯處于上升狀態(tài),當(dāng)up_down=0時(shí)表示電梯處于下降狀態(tài))。系統(tǒng)主要通過

3、當(dāng)前所在樓層以及運(yùn)行狀態(tài)、后續(xù)請求判斷運(yùn)行方式。電梯處在第一層時(shí),當(dāng)它收到二層電梯外上下樓請求、三層電梯外下樓請求、一層電梯內(nèi)到達(dá)二層和三層請求時(shí),電梯會(huì)按照指令上升到相應(yīng)樓層并開門、關(guān)門;若收到一層電梯外上樓請求只做開門響應(yīng),隨后根據(jù)使用者進(jìn)入電梯后請求進(jìn)行響應(yīng);其他請求不響應(yīng)。當(dāng)電梯處在第二層時(shí),若系統(tǒng)收到二層電梯外上下樓請求只做開門響應(yīng);若收到三層電梯外下樓或二層電梯內(nèi)到達(dá)三層請求,則做上樓響應(yīng)、開門;若收到一層電梯外上樓或二層電梯內(nèi)到達(dá)一層請求,則做下樓樓響應(yīng)并開門;其他請求不響應(yīng)。當(dāng)電梯處在第三層時(shí),若它收到二層電梯外上下樓請求、一層電梯外上樓請求、電梯內(nèi)到達(dá)二層和一層請求時(shí),電梯會(huì)

4、按照指令下降到相應(yīng)樓層并開門、關(guān)門;若收到三層電梯外下樓請求只做開門響應(yīng),隨后根據(jù)使用者進(jìn)入電梯后請求進(jìn)行響應(yīng);其他請求不響應(yīng)。若電梯正處在上升狀態(tài)中收到外部請求,則只響應(yīng)比當(dāng)前所在樓層高的樓層的請求,到達(dá)需要到達(dá)最高樓層時(shí)再響應(yīng)低層請求。若電梯正處在下降狀態(tài)中收到外部請求,則只響應(yīng)比當(dāng)前所在樓層低的樓層的請求,到達(dá)需要到達(dá)最低樓層時(shí)再響應(yīng)高層請求。三、 狀態(tài)原理圖說明本系統(tǒng)的狀態(tài)比較復(fù)雜,狀態(tài)中嵌套狀態(tài)。圖3.1為系統(tǒng)狀態(tài)原理說明圖,其中b0、b1、 b2、 b3 分別表示Button(0) 、Button(1)、 Button(2)、 Button(3);f0、f1、f2分別表示 floo

5、r(0)、 floor(1)、 floor(2);S0表示一層上狀態(tài)、S1U和S1D分別表示二層上和下狀態(tài)、S2表示三層下狀態(tài)。圖3.1 狀態(tài)原理圖本狀態(tài)圖主要說明系統(tǒng)運(yùn)行當(dāng)前狀態(tài)與下一個(gè)狀態(tài)的關(guān)系,考慮了從當(dāng)前狀態(tài)到下一狀態(tài)的所有觸發(fā)因素,較為復(fù)雜。四、 源程序以及注釋LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.all;ENTITY elevator15 ISPORT(CLK: IN STD_LOGIC;reset: IN STD_LOGIC; Button : IN STD_LOGIC_VECTO

6、R(3 DOWNTO 0); -button(0)為一層外上升請求,button(1)為二層外上升請求, -button(2)為二樓外下降請求,Button(3)為三層外下降請求; floor : IN STD_LOGIC_VECTOR(2 DOWNTO 0); -floor(0)為電梯內(nèi)一層請求按鈕, floor(1)為電梯內(nèi)二層請求按鈕, -floor(2)為電梯內(nèi)三層請求按鈕; position: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-position表示電梯當(dāng)前位置信息; door : OUT STD_LOGIC; - '1'為開門,

7、9;0'為關(guān)門; up_down : OUT STD_LOGIC - '1'為上樓,'0'為下樓; );END elevator15;ARCHITECTURE Behav OF elevator15 ISTYPE State IS (S0,S1U,S1D,S2); -S1U為二樓上狀態(tài),S1D為二樓下狀態(tài); SIGNAL current_state : State; -中間變量:當(dāng)前狀態(tài) SIGNAL next_state : State; -中間變量:下一狀態(tài) SIGNAL up : STD_LOGIC; -中間變量:上升下降狀態(tài) SIGNAL dor

8、 : STD_LOGIC; -中間變量:開門關(guān)門狀態(tài)BEGINP1:PROCESS(CLK) -狀態(tài)轉(zhuǎn)換進(jìn)程;BEGIN IF CLK'EVENT AND CLK='1' THEN -檢測時(shí)鐘上升沿current_state <= next_state; END IF;END PROCESS; P2:PROCESS(reset,clk,current_state,up,button,floor) VARIABLE button_var: STD_LOGIC_VECTOR( 3 DOWNTO 0); VARIABLE floor_var : STD_LOGIC_VE

9、CTOR( 2 DOWNTO 0); VARIABLE cat : STD_LOGIC; VARIABLE ca_time : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF reset = '1' THEN -復(fù)位處理,初始狀態(tài)為一層 next_state <= S0; position <= "0001" cat:='0' ca_time:="0000" up<='Z' dor<='0' button_var( 3 DOWNTO 0):

10、="0000" floor_var(2 DOWNTO 0):="000" ELSIF clk'event and clk='1' THEN -若無復(fù)位信號(hào),則將外部按鈕信號(hào)存儲(chǔ)到7個(gè)變量之中; IF button(0) ='1' THEN button_var(0):='1' ELSE NULL; END IF; IF button(1) ='1' THEN button_var(1):='1' ELSE NULL; END IF; IF button(2) =

11、9;1' THEN button_var(2):='1' ELSE NULL; END IF; IF button(3) ='1' THEN button_var(3):='1' ELSE NULL; END IF; IF floor(0)='1' THEN floor_var(0):='1' ELSE NULL; END IF; IF floor(1)='1' THEN floor_var(1):='1' ELSE NULL; END IF; IF floor(2)=

12、9;1' THEN floor_var(2):='1' ELSE NULL; END IF; IF cat='0' THEN ca_time:=ca_time+1; END IF; -開門,關(guān)門計(jì)時(shí); CASE current_state IS WHEN S0 => -一樓狀態(tài)處理; position <= "0001" cat:='0'IF (button_var(0) or floor_var(0)='1' THENCASE ca_time IS WHEN "0011"

13、; => dor<='1' WHEN "1101" => dor<='0' button_var(0):='0' floor_var(0):='0' IF (floor_var(1) or floor_var(2)='1' THEN next_state<=S1U; ca_time:="0000" up<='1' ELSE next_state<=S0; ca_time:="0000" END IF

14、; WHEN others => NULL; END CASE; ELSIF (button_var(1) OR button_var(2) or button_var(3) or floor_var(2) or floor_var(1)='1' THENnext_state <= S1U; ca_time:="0000"up <= '1'ELSE next_state <= S0; ca_time:="0000"END IF; WHEN S1U => -二樓上狀態(tài)處理;position &l

15、t;= "0010" cat:='0' IF floor_var(1)='1' THEN -二樓內(nèi)上升請求; CASE ca_time IS WHEN "0011" => dor<='1' WHEN"1101"=> dor<='0' floor_var(1):='0' IF (button_var(1) or button_var(3) or floor_var(2)='1' THEN next_state<=

16、S2; ca_time:="0000" button_var(1):='0' ELSIF ( button_var(0) or button_var(2) or floor_var(0)='1' THEN next_state<=s0; ca_time:="0000" button_var(2):='0' ELSE next_state<=S1U; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSE I

17、F button_var(1)='1' THEN -二樓外上升請求; CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor<='0' button_var(1):='0' IF (floor_var(2) or button_var(3)='1' THEN next_state<=S2; ca_time:="0000" ELSIF ( button_var(0)

18、or floor_var(0) or button_var(2)='1' THEN next_state<=s0; ca_time:="0000" up<='0' ELSE next_state<=S1U; button_var(1):='0' END IF; WHEN others => NULL; END CASE; ELSE IF (button_var(3) or floor_var(2)='1' THEN -二樓無上樓,開門請求,但三層有下樓或開門請求; next_state&

19、lt;=S2; ca_time:="0000" ELSIF button_var(2)='1' THEN -二樓無上樓,開門請求,三層也無下樓或開門請求,此-時(shí)二樓有下樓請求; CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor<='0' button_var(2):='0' IF(floor_var(0) or button_var(0)='1' THEN next

20、_state<=s0; ca_time:="0000" up<='0' ELSE next_state<=S1U; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSIF (button_var(0) or floor_var(0)='1' THEN -電梯處于二樓上狀態(tài),僅有一樓信號(hào)要處理 next_state<=s0; ca_time:="0000" up<='0' ELSE nex

21、t_state<=S1U; -無任何信號(hào),保持當(dāng)前狀態(tài)不變; ca_time:="0000" END IF; END IF; END IF; WHEN S1D => - up='0' 時(shí)的情況; position <= "0010" cat:='0' IF floor_var(1)='1' THEN CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor&

22、lt;='0' floor_var(1):='0' IF (button_var(2) or button_var(0) or floor_var(0)='1' THEN next_state<=s0; ca_time:="0000" button_var(2):='0' ELSIF ( button_var(1) or button_var(3) or floor_var(2)='1' THEN next_state<=S2; ca_time:="0000" b

23、utton_var(1):='0' ELSE next_state<=S1D; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSE IF button_var(2)='1' THEN CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor<='0' button_var(2):='0' IF

24、(floor_var(0) or button_var(0)='1' THEN next_state<=s0; ca_time:="0000" ELSIF ( button_var(1) or floor_var(2) or button_var(3)='1' THEN next_state<=S2; ca_time:="0000" up<='1' ELSE next_state<=S1D; ca_time:="0000" END IF; WHEN others

25、=> NULL; END CASE; ELSE IF (button_var(0) or floor_var(0)='1' THEN next_state<=s0; ca_time:="0000" ELSIF button_var(1)='1' THEN CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101" => dor<='0' button_var(1):='0' I

26、F(floor_var(2) or button_var(3)='1' THEN next_state<=S2; ca_time:="0000" up<='1' ELSE next_state<=S1D; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSIF (button_var(3) or floor_var(2)='1' THEN next_state<=S2; ca_time:="0000&q

27、uot; up<='1' ELSE next_state<=S1D; ca_time:="0000" END IF; END IF; END IF;WHEN S2 => -電梯三樓狀態(tài)處理;position <= "0011" cat:='0'IF (button_var(3) or floor_var(2)='1' THEN CASE ca_time IS WHEN "0011" => dor<='1' WHEN "1101

28、" => dor<='0' button_var(3):='0' floor_var(2):='0' IF (floor_var(0) or floor_var(1)='1' THEN next_state<=S1D; ca_time:="0000" up<='0' ELSE next_state<=S2; ca_time:="0000" END IF; WHEN others => NULL; END CASE; ELSIF (

29、button_var(0) OR button_var(1) OR button_var(2) or floor_var(0) or floor_var(1)='1' THEN next_state <=S1D; ca_time:="0000" up <= '0'ELSE next_state <=S2; ca_time:="0000" END IF; END CASE; END IF; END PROCESS;P3:PROCESS(up,dor) -電梯上下,開關(guān)門顯示; BEGIN up_down&l

30、t;=up; door<=dor; END PROCESS;END Behav;五、 仿真結(jié)果與說明圖 5.1圖5.1是基本基本功能仿真,使用者在一層電梯外按下上升(Button(0)=1)按鈕,隨后開門(door=1)。使用者進(jìn)入后按下到達(dá)三樓請求(floor(2)=1),電梯關(guān)門(door=0)并上升(up_down=1)最后到達(dá)三層(position=3)并開門(door=1)。圖 5.2圖5.3圖5.2是基本記憶功能仿真,電梯處于初始一層關(guān)門狀態(tài)。三層外使用者按下三層下按鈕(floor(3)=1)電梯上升到三樓開門。然而在上升到二樓時(shí)一層外有人按下上樓按鈕。此時(shí)電梯先完成上升到三

31、層,然后再下降回到一層響應(yīng)一層外請求。圖5.3表明在電梯上升過程中可以接收較高樓層的要求。開始時(shí)有人按下一層外上升(Button(0)=1)按鈕,電梯開門使用者進(jìn)入并按下到達(dá)三層(floor(2)=1)請求,此時(shí)電梯關(guān)門并上升。在電梯上升但未到達(dá)二層時(shí),二層外有人按下上樓(Button(1)=1)請求,因此當(dāng)電梯到達(dá)二層(position=2)后停止并開門,待二層使用者進(jìn)入后再完成第一個(gè)使用者的請求到達(dá)三層。圖 5.4圖5.4仿真了系統(tǒng)對(duì)同一樓層兩個(gè)不同到達(dá)樓層的響應(yīng)。有兩人先后按下二層上按鈕(Button(1)=1),此時(shí)電梯從一層上升至二層并開門。待兩人進(jìn)入后按照先后順序按下到達(dá)三層(floor(2)=1)和到達(dá)一層(floor(0)=1)按鈕,此時(shí)電梯也按照

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論