




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、三層電梯控制系統(tǒng)一、 設(shè)計功能與要求電梯控制系統(tǒng)是的設(shè)計目標(biāo)是按照使用者的要求控制電梯的運行。要求用VHDL設(shè)計出三層電梯的控制系統(tǒng),基本功能要求如下:1、 每層電梯入口處設(shè)有上、下請求開關(guān),使用者可以根據(jù)自身的上下樓需要按下相應(yīng)按鍵;電梯內(nèi)部設(shè)有到達樓層按鈕,使用者可以選擇到達樓層。2、 設(shè)有電梯運行模式(上、下)標(biāo)識和當(dāng)前所在樓層標(biāo)識。3、 電梯運行模式等同于普通電梯運行模式,電梯一般按照提出請求的先后順序進行響應(yīng)。程序根據(jù)電梯當(dāng)前位置和使用者所在樓層以及進入電梯后的要求控制運行狀態(tài)。4、 電梯初始模式為一層關(guān)門狀態(tài)。二、 設(shè)計思路本系統(tǒng)的主要輸入有電梯外上下控制按鈕Button(其中Bu
2、tton(0)表示一樓電梯外上升請求,Button(1)表示二樓電梯外上升請求, Button(2)表示二樓電梯外下降請求, Button(3)表示三樓電梯外下降請求);電梯內(nèi)到達樓層控制按鈕floor(其中floor(0)表示請求到達一層, floor(1)表示請求到達二層, floor(2)表示請求到達三層)。系統(tǒng)的輸出包括電梯位置標(biāo)識position,表示電梯當(dāng)前所在樓層;電梯開門關(guān)門顯示按鈕door(當(dāng)door=1時表示開門,door=0表示關(guān)門);電梯當(dāng)前運行狀態(tài)按鈕up_down(當(dāng)up_down=1時表示電梯處于上升狀態(tài),當(dāng)up_down=0時表示電梯處于下降狀態(tài))。系統(tǒng)主要通過
3、當(dāng)前所在樓層以及運行狀態(tài)、后續(xù)請求判斷運行方式。電梯處在第一層時,當(dāng)它收到二層電梯外上下樓請求、三層電梯外下樓請求、一層電梯內(nèi)到達二層和三層請求時,電梯會按照指令上升到相應(yīng)樓層并開門、關(guān)門;若收到一層電梯外上樓請求只做開門響應(yīng),隨后根據(jù)使用者進入電梯后請求進行響應(yīng);其他請求不響應(yīng)。當(dāng)電梯處在第二層時,若系統(tǒng)收到二層電梯外上下樓請求只做開門響應(yīng);若收到三層電梯外下樓或二層電梯內(nèi)到達三層請求,則做上樓響應(yīng)、開門;若收到一層電梯外上樓或二層電梯內(nèi)到達一層請求,則做下樓樓響應(yīng)并開門;其他請求不響應(yīng)。當(dāng)電梯處在第三層時,若它收到二層電梯外上下樓請求、一層電梯外上樓請求、電梯內(nèi)到達二層和一層請求時,電梯會
4、按照指令下降到相應(yīng)樓層并開門、關(guān)門;若收到三層電梯外下樓請求只做開門響應(yīng),隨后根據(jù)使用者進入電梯后請求進行響應(yīng);其他請求不響應(yīng)。若電梯正處在上升狀態(tài)中收到外部請求,則只響應(yīng)比當(dāng)前所在樓層高的樓層的請求,到達需要到達最高樓層時再響應(yīng)低層請求。若電梯正處在下降狀態(tài)中收到外部請求,則只響應(yīng)比當(dāng)前所在樓層低的樓層的請求,到達需要到達最低樓層時再響應(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)運行當(dāng)前狀態(tài)與下一個狀態(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)換進程;BEGIN IF CLK'EVENT AND CLK='1' THEN -檢測時鐘上升沿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ù)位信號,則將外部按鈕信號存儲到7個變量之中; 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)門計時; 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 -二樓無上樓,開門請求,三層也無下樓或開門請求,此-時二樓有下樓請求; 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),僅有一樓信號要處理 next_state<=s0; ca_time:="0000" up<='0' ELSE nex
21、t_state<=S1U; -無任何信號,保持當(dāng)前狀態(tài)不變; ca_time:="0000" END IF; END IF; END IF; WHEN S1D => - up='0' 時的情況; 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)。使用者進入后按下到達三樓請求(floor(2)=1),電梯關(guān)門(door=0)并上升(up_down=1)最后到達三層(position=3)并開門(door=1)。圖 5.2圖5.3圖5.2是基本記憶功能仿真,電梯處于初始一層關(guān)門狀態(tài)。三層外使用者按下三層下按鈕(floor(3)=1)電梯上升到三樓開門。然而在上升到二樓時一層外有人按下上樓按鈕。此時電梯先完成上升到三
31、層,然后再下降回到一層響應(yīng)一層外請求。圖5.3表明在電梯上升過程中可以接收較高樓層的要求。開始時有人按下一層外上升(Button(0)=1)按鈕,電梯開門使用者進入并按下到達三層(floor(2)=1)請求,此時電梯關(guān)門并上升。在電梯上升但未到達二層時,二層外有人按下上樓(Button(1)=1)請求,因此當(dāng)電梯到達二層(position=2)后停止并開門,待二層使用者進入后再完成第一個使用者的請求到達三層。圖 5.4圖5.4仿真了系統(tǒng)對同一樓層兩個不同到達樓層的響應(yīng)。有兩人先后按下二層上按鈕(Button(1)=1),此時電梯從一層上升至二層并開門。待兩人進入后按照先后順序按下到達三層(floor(2)=1)和到達一層(floor(0)=1)按鈕,此時電梯也按照
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 609:2025 EN Coal and coke - Determination of carbon and hydrogen - High temperature combustion method
- 義務(wù)教育課程標(biāo)準(zhǔn)解讀與思考
- 電力負荷控制員練習(xí)題庫與參考答案解析
- 12月病理學(xué)模擬試題(含參考答案解析)
- 木材化學(xué)成分在生物醫(yī)學(xué)工程中的應(yīng)用考核試卷
- 紡織品的綠色染整工藝創(chuàng)新考核試卷
- 肥料制造的農(nóng)田耕作與機械化作業(yè)考核試卷
- 2025年中子、電子及Γ輻照裝置合作協(xié)議書
- 認證認可ISO設(shè)施管理體系考核試卷
- 四個精某著名企業(yè)激勵故事
- 2025年郵政社招筆試試題及答案
- 2025年保密觀知識測試題及答案
- 3D打印技術(shù)與應(yīng)用智慧樹知到期末考試答案2024年
- 合作取得更大的成功辯論稿范文六篇
- 形式邏輯新解知到章節(jié)答案智慧樹2023年上海財經(jīng)大學(xué)
- 會計師事務(wù)所自查自糾報告范文3篇
- 信用評級ppt全套教學(xué)課件
- 2022年煙臺毓璜頂醫(yī)院醫(yī)護人員招聘考試筆試題庫及答案解析
- 現(xiàn)場跟蹤審計工作要點
- 公制螺紋公差速查表
- 《山東省消防條例》(2022年最新版)[1]
評論
0/150
提交評論