基于VHDL的四層電梯控制器_第1頁
基于VHDL的四層電梯控制器_第2頁
基于VHDL的四層電梯控制器_第3頁
基于VHDL的四層電梯控制器_第4頁
基于VHDL的四層電梯控制器_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

四層電梯控制器

實(shí)目:1、掌握更復(fù)雜的VHDL設(shè)計(jì)。2、掌握狀態(tài)機(jī)設(shè)計(jì)方法。實(shí)環(huán):EP1C3適配板、裝有Quartusii軟件的PC機(jī)一臺。實(shí)原:電梯控制器的功能模塊如下圖所示,包括主控制器、分控制器、樓層選擇器、狀態(tài)顯示器、譯碼器和樓層顯示器客在電梯中選擇所要到達(dá)的樓層通過主控制器的處理,電梯開始運(yùn)行態(tài)顯示器顯示電梯的運(yùn)行狀態(tài)電梯所在樓層數(shù)通過譯碼器譯碼從而在樓層顯示器中顯示控制器把有效的請求傳給主控制器進(jìn)行處理同時(shí)顯示電梯的運(yùn)行狀態(tài)和電梯所在樓層數(shù)由于分控制器相對簡單很多,所以主控制器是核心部分。

電梯控制器原理圖

外部按鍵

初始化等待請求信號寄存器

否狀態(tài)寄存器內(nèi)部軟件執(zhí)行機(jī)構(gòu)外部硬件執(zhí)行機(jī)構(gòu)圖總程圖

是否有請求?是目標(biāo)層與本層是否同層?否判定電梯運(yùn)行方向電梯運(yùn)行樓層檢測

是否否

是否目標(biāo)層?是電梯停止開門延時(shí)關(guān)門是否停止運(yùn)行?是停止圖2.3電梯控制主流程圖

四電控器現(xiàn)功及行則eq\o\ac(○,1)

電梯一層入口處設(shè)有上升請求開關(guān)二三層入口處設(shè)有上下請求開關(guān),四層入口處設(shè)有下降請求開關(guān),電梯內(nèi)部設(shè)有顧客到達(dá)樓層的停站請求開關(guān)。eq\o\ac(○,2)

每層電梯入口處設(shè)有位置指示裝置及電梯運(yùn)行模式(上升或下降)指示裝置。eq\o\ac(○,3)

電梯初始狀態(tài)為一層開門狀態(tài)。eq\o\ac(○,4)

電梯每秒上升(下降)一層樓。eq\o\ac(○,5)

電梯到達(dá)需要停止的樓層,經(jīng)過1秒電梯門打開,開門指示燈亮,開門4秒后,電梯門關(guān)閉(開門指燈滅),電梯繼續(xù)運(yùn)行,直至執(zhí)行完最后一個(gè)請求信號后停留在當(dāng)前層。eq\o\ac(○,6)

電梯需要寄存器來記憶電梯內(nèi)外所有請求,并按照電梯運(yùn)行規(guī)則按順序響應(yīng),每個(gè)請求信號保留至執(zhí)行后消除。eq\o\ac(○,7)

電梯的運(yùn)行規(guī)則:當(dāng)電梯處于上升模式時(shí),只響應(yīng)比電梯所在位置高的上樓請求信號和停站請求信號由下而上逐個(gè)執(zhí)行直到最后一個(gè)上樓請求執(zhí)行完畢;如果高層有下樓請求直接上升到有下樓請求的最高層然后進(jìn)入下降模式。當(dāng)電梯處于下降模式時(shí)則與上升模式相反。四電控器設(shè)思:電梯控制器設(shè)計(jì)兩個(gè)進(jìn)程相互配合狀態(tài)機(jī)進(jìn)程作為主要進(jìn)程信號燈控制進(jìn)程作為輔助進(jìn)程根據(jù)電梯的實(shí)際工作情況,可以為狀態(tài)機(jī)設(shè)置十個(gè)狀態(tài)它們分別是“電梯停在一層“開門“關(guān)門“開門等待第一秒“開門等待第二秒”“開門等待第三秒”“開門等待第四秒”“上升”“下降”和“停止”。由于電梯每秒上升或下降一層,則可以用周期為1的信號來作為電梯狀態(tài)轉(zhuǎn)換的觸發(fā)時(shí)鐘態(tài)機(jī)進(jìn)程中的很多判斷條件是以信號燈控制進(jìn)程產(chǎn)生的信號燈信號為依據(jù),而信號燈控制進(jìn)程中信號燈的熄滅又是由狀態(tài)機(jī)進(jìn)程中傳出的信號來控制。四層電梯控制器的設(shè)計(jì)主要是對實(shí)體和結(jié)構(gòu)體的設(shè)計(jì),它的VHDL描述模塊流程如圖3.1所示:

元件庫的說明定義實(shí)體結(jié)構(gòu)體

端口狀態(tài)機(jī)進(jìn)程信號燈控制進(jìn)程

按鍵信號燈結(jié)束圖3.1四層電梯控制器的VHDL述模塊流程VHDL源碼明libraryIEEE;--庫的說明use--程序包的說明useusefourlift--------實(shí)體名稱fourliftport(clk1:in-------按鍵讀取時(shí)鐘信號clk2:in---------led_7碼管顯示掃描時(shí)鐘信號reset:in---------異步復(fù)位端口----------關(guān)門請求---------層上升請求端口---------層上升請求端口----------層下降請求端口---------層下降請求端口--------三層上升請求端口----------四層下降請求端口stop1button:in-------------一層停站請求端口stop2button:in----------二停站請求端口

stop3button:in--三層停站請求端口stop4button:in--四層停站請求端口stair:buffer1to4;--梯位置信號udsig:buffer--電梯運(yùn)行模式(上升1或下降0fuplight,fdnlight,stoplight:bufferdownto------上升、下降、停站請求寄存信號doorlight:out--開門狀態(tài)1’為開門狀態(tài))downto0);--數(shù)碼管顯示樓層段碼std_logic_vector(20));--數(shù)碼管顯示樓層位碼entityfourlift;chioffourlift--結(jié)構(gòu)體typelift_state

--定義十個(gè)狀態(tài)(stop_on_1,door_open,door_close,door_wait1,door_wait2,door_wait3,door_wait4,up,signalsignal--上升和停站請求清除信signal--下降和停站請求清除信signalq:std_logic_vector(3---分頻進(jìn)程中需要的信號signalbuttonclk,liftclk:std_logic;分頻后的電梯時(shí)鐘和按鍵讀取控制時(shí)鐘beginclklift:process(clk1)分頻產(chǎn)生電梯控制時(shí)鐘beginifandifthenq<="0000";q<=q+1;if;if;

liftclk和按鍵讀取控制時(shí)鐘

clklift;statelift:process(reset,liftclk)--狀態(tài)機(jī)進(jìn)程variableposition:integerrange4downto1;beginifreset='1'then--異步復(fù)位,電梯的初始狀態(tài)為一層開門狀態(tài)state<=stop_on_1;ifliftclk'eventliftclk='1'--個(gè)上升沿stateisstop_on_1=>doorlight<='1';

開門position:=1;state<=door_wait1;電梯等待4sif(close='1')如果有關(guān)門信號,則轉(zhuǎn)至關(guān)門狀態(tài)等待第二秒if;if(close='1')state<=door_close;state<=door_wait3;等待第三秒if;

if(close='1')state<=door_close;state<=door_wait4;等待第四秒if;state<=door_close;--關(guān)門定電梯下一個(gè)行方式doorlight<='0';if--梯處在上升模式ifstair=4iffuplight="0000"fdnlight="0000"stoplight="0000"then沒有請求信號時(shí),電梯停在當(dāng)前層udsig<='0';state<=door_close;fdnlight(4)='1'orstoplight(4)='1'then--層有請求信號時(shí),電梯開門udsig<='0';--轉(zhuǎn)為下降--否則下降udsig<='0';state<=down;if;theniffuplight="0000"fdnlight="0000"stoplight="0000"udsig<='1';state<=door_close;fuplight(3)='1'orstoplight(3)='1'then--層有上升或停站請求時(shí),電梯開門udsig<='1';

fuplight="0000"stoplight="0000"fdnlight="0100"then--有3有下降請求時(shí),電梯開門udsig<='0';fdnlight(4)='1'then--4層有停站請求或下降請求,則上升udsig<='1';state<=up;udsig<='0';state<=down;if;theniffuplight="0000"fdnlight="0000"stoplight="0000"udsig<='1';state<=door_close;fuplight(2)='1'orstoplight(2)='1'then--層有上升或停站請求時(shí),電梯開門udsig<='1';fuplight="0000"stoplight="0000"fdnlight="0010"then--有2有下降請求時(shí),電梯開門udsig<='0';orfdnlight(4)='1'orstoplight(3)='1'fdnlight(3)='1'fuplight(3)='1'then--4層有停站請求或下降請求,則上升udsig<='1';

state<=up;udsig<='0';state<=down;if;theniffuplight="0000"stoplight="0000"udsig<='1';state<=door_close;stoplight(1)='1'orfuplight(1)='1'thenudsig<='1';udsig<='1';state<=up;if;if;--電處在下降模式ifstair=4iffuplight="0000"stoplight="0000"udsig<='0';state<=door_close;fdnlight(4)='1'orstoplight(4)='1'thenudsig<='0';udsig<='0';state<=down;

if;theniffuplight="0000"stoplight="0000"udsig<='0';state<=door_close;fdnlight(3)='1'orstoplight(3)='1'thenudsig<='0';

fdnlight="0000"stoplight="0000"fuplight="0100"thenudsig<='1';fuplight(1)='1'stoplight(1)='1'orfuplight(2)='1'fdnlight(2)='1'stoplight(2)='1'--層有停站請求或上升請求,則下降udsig<='0';state<=down;udsig<='1';state<=up;if;theniffuplight="0000"stoplight="0000"udsig<='0';state<=door_close;fdnlight(2)='1'orstoplight(2)='1'thenudsig<='0';

fdnlight="0000"stoplight="0000"

fuplight="0010"thenudsig<='1';fuplight(1)='1'orstoplight(1)='1'then--一層有停站請求或上升請求,則下降udsig<='0';state<=down;udsig<='1';state<=up;if;theniffuplight="0000"stoplight="0000"udsig<='1';state<=door_close;stoplight(1)='1'orfuplight(1)='1'thenudsig<='1';udsig<='1';state<=up;if;if;if;up=>--梯處于上升狀態(tài)stair<=stair+1;--電梯樓層數(shù)加一ifposition<4(stoplight(position)='1'or

--梯在123層,本層有停站或上升請求時(shí),則停止position=4(stoplight(position)='1'fdnlight(position)='1')--電梯處在4,并且有4停站或下降請求,則停止state<=door_close;if;down=>--電梯處在下降狀態(tài)--電梯樓層數(shù)減一position:=position-1;ifposition>1(stoplight(position)='1'position=1(stoplight(position)='1'state<=door_close;if;doorlight<='1';ififstair<4(fuplight(position)='1'orstoplight(position)='1')--清除當(dāng)前層上升和停站請求

if;ifstair>1(fdnlight(position)='1'orstoplight(position)='1')--清除當(dāng)前層下降和停站請求if;if;state<=door_wait1;if;if;--號燈控制進(jìn)程beginifreset='1'then--復(fù)位,寄存信號清零fuplight<="0000";fdnlight<="0000";ifbuttonclk='1'ifthen記憶各層上升請求if;ifthen

if;ifthenif;ifthen--上升和站請求清零stoplight(stair)<='0';if;ifthenif;ifthenif;ifthenif;ifthenstoplight(stair)<='0';if;ifstop1button='1'if;ifstop2button='1'if;ifstop3button='1'

--記憶各層下降請求下降和停站請求清零--記憶各層停站請求

if;ifstop4button='1'if;if;if;ctrlight;--樓層顯進(jìn)程begins<="000";ifstair=1dout<="0110000";thendout<="1101101";thendout<="1111001";thendout<="0110011";if;showlift;architecturechi;四電控器仿:在波形仿真中,根據(jù)實(shí)際,我們有必要做一些假設(shè),即是:eq\o\ac(○,1)

外部請求上升的乘客,進(jìn)入電梯后一定是按更高層的停站按鈕;eq\o\ac(○,2)

外部請求下降的乘客,進(jìn)入電梯后一定是按更低層的停站按鈕;eq\o\ac(○,3)

如果有乘客進(jìn)入電梯,則一定有停站請求;

eq\o\ac(○,4)

同一時(shí)刻有很多人按鍵的概率很小,所以我們認(rèn)為請求信號都有一定的先后順序。設(shè)定仿真時(shí)間長度為60s,liftclk信號為周期的時(shí)鐘信號信號為周期0.1s時(shí)鐘信號doorlight信號邏‘表示開門邏‘0表示關(guān)門。信號為邏輯‘’表示電梯處在上升模式,邏輯‘0’表示處在下降模式。是四位二進(jìn)制向量,波形圖中的0001表示一層有請求,0010表示二層有請求,0100表示三層有請求,表示四層有請求。圖1所示的波形是在一層有上升請求的仿真波形,在reset

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論