【正文】
039。c_d22amp。c_u22amp。039。d22amp。139。139。139。139。139。139。139。039。039。039。039。139。139。039。039。139。139。139。039。139。039。139。139。039。039。139。139。039。139。039。139。139。039。039。139。139。139。139。039。039。139。139。039。039。139。139。139。139。039。139。139。139。139。139。139。139。139。039。039。139。139。039。139。139。039。139。139。 畢業(yè)設計 22 附錄一 三層電梯控制的源程序 library ieee; use ; use ; use ; entity dianti is port ( clk : in std_logic; full,deng,quick,clr : in std_logic; c_u1,c_u2: in std_logic; c_d2,c_d3: in std_logic; d1,d2,d3: in std_logic; g1,g2,g3: in std_logic; door : out std_logic_vector(1 downto 0); led : out std_logic_vector(6 downto 0); led_c_u:out std_logic_vector(2 downto 0); led_c_d:out std_logic_vector(2 downto 0); led_d : out std_logic_vector(2 downto 0); wahaha : out std_logic; ud,alarm : out std_logic; up,down : out std_logic ); end dianti; architecture behav of dianti is signal d11,d22,d33:std_logic; signal c_u11,c_u22:std_logic; 畢業(yè)設計 23 signal c_d22,c_d33:std_logic; signal q:integer range 0 to 1; signal q1:integer range 0 to 6; signal q2:integer range 0 to 9; signal dd,cc_u,cc_d,dd_cc:std_logic_vector(2 downto 0); signal opendoor:std_logic; signal updown:std_logic; signal en_up,en_dw:std_logic; begin :process(clk) begin if clk39。 通過這次畢業(yè)設計,無論從選題到定稿,從理論到實踐都使我學到了很多東西,它不僅可以鞏固以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。同時也提高了我解決實際問題的能力,培養(yǎng)自我創(chuàng)新意識。 q1信號從 1 跳到 3,進入關門狀態(tài)。當電梯超重時,超重信號就進行報警。這表示當電梯首次關門失敗后(即deng首次賦值為 1 時),電梯便一直處于故障報警狀態(tài)下,直到技術員處理完故障后,用 clr才可以清 除其報警。觀察以下信號: wahaha、 alarm、 quick。 當連續(xù)關門中斷的次數超過 3次時,不認為是出自乘客的需要,而認為是故障,并報警,等技術員處理完故障時,用 clr 信號才可以清除報警。),電梯重新進入預備下降狀態(tài)。),發(fā)出超載警報;超載信號消失( full=39。電梯在預備下降狀態(tài)下,電梯如果超載( full=39。 (三)電梯功能仿真 電梯的功能包括:提前關門、看門狗報警、超載報警、故障報警。 ( 5) led_c_d:在電梯接收到 c_d3 后,賦值樓層編碼為 100,表示梯外有人請求下降,電梯運行到達請求發(fā)出的樓層(三樓)后,電梯賦值變?yōu)?000,表示下降請求得到滿足或在待機。 ( 3) down: 在電梯到達三樓后,賦值為 1,表示電梯受控制處于下降過程,當電梯運行到一樓以后,賦值變?yōu)?0。 圖 說明: ( 1) up:在電梯接收到請求信號后,賦值為 1,表示電梯受控制處于上升過程,當電梯運行到二樓以后,賦值短暫變 0,然后又變?yōu)?1,表示電梯在二樓載客完畢后又進入上升過程,到達三樓后,賦值為 0。仿真情況如圖 。由于二樓并沒有請求,所以電梯不作停頓地下降到一樓。 電梯到達二樓 ,載客繼續(xù)上升。 。 ( 5) led_c_d:在電梯接收到 c_d3 后,賦值樓層編碼為 100,表示梯外有人請求下降,電梯運行到達請求發(fā)出的樓層(三樓)后,電梯賦值變?yōu)?000,表示下降請求得到滿足。 ( 4) led:電梯每運行到達一層時,都會有不同的信號輸出: 100111 00100 畢業(yè)設計 19 0000110。 ( 2) ud:從電梯接收 c_d3 到電梯接收 d1 為止,賦值為 1,表示電梯此時 向上運行,其余時間段都為 0,表示電梯此時向下運行或者待機。觀察以下信號:up、 ud、 down、 led、 led_c_d、 led_d。到達三樓載客后,電梯內又接收到下降到一樓的梯內請求( d1),于是電梯返回一樓待機。 。如圖 。 圖 對 clk信號賦值圖 在進行仿真前,還需對仿真截止時間和最小單位時間進行一下調整。 圖 添加節(jié)點信號 4. 對輸入信號賦值 通過編輯器左側的一些快捷按鈕對所加節(jié)點中的輸入信號進行相關的賦值后,就可對程序進行仿真,觀察輸出信號,得出結論。 3. 添加節(jié)點信號 在編輯器的 Name 欄點擊鼠標右鍵,選擇“ Enter Nodes from SNF”選擇添加需要觀察的節(jié)點信號。 畢業(yè)設計 17 圖 新建波形編輯器 新建波形編輯器后,對文件進行保存。 五、程序仿真 (一)波形輸入建立 1. 新建波形編輯器 編譯完全通過后,新建波形編輯器進行設計仿真。當程序被確認無誤以后會出現圖 的界面。 圖 設置頂層文件 6. 程序編譯 在“ MAX+plusII”下拉按鈕里選擇” Compiler” ,對程序進行編譯。選擇菜單 畢業(yè)設計 16 “ File”→“ Set Project to Current File”,當前的文件即被指定。由于文件后綴名都默認為 TDF,在初次調試時并沒有注意這個問題,結果在編譯的時候老是出錯。文件名和實體定義的符號必須保持一致,即文件名為 dianti。 圖 輸入路徑選擇為文本輸入 本輸入 在文本輸入界面內進行程序輸入,如圖 。 圖 MAX+plusII軟件初始界面 2. 新建文本編輯文件 在工具欄中選擇“新建”按鈕。039。c_d22amp。c_u22amp。039。d22amp。139。139。139。139。139。139。139。039。; elsif q1=3 then door=01; q1=q1+1; else q1=q1+1; door=00; end if; end if; ; down=39。 then q1=3; elsif q1=6 then door=00; updown=39。 then door=10; q1=0; q2=q2+1; elsif quick=39。 then 下降預操作 if deng=39。; 關門完畢,電梯進入上升狀態(tài) elsif q1=3 then door=01; q1=q1+1; 電梯進入關門狀態(tài) else q1=q1+1; door=00; 電梯進入等待狀態(tài) end if; elsif en_dw=39。; up=39。 then q1=3; 提前關門 elsif q1=6 then door=00; updown=39。 then door=10; q1=0; q2=q2+1; 關門中斷 elsif quick=39。 then 上升預操作 畢業(yè)設計 13 if deng=39。; 開門操作 elsif en_up=39。; down=39。 then door=10; q1=0; q2=0; up=39。; 故障報警 else if opendoor=39。; if q2=3 then wahaha=39。; q1=0; 超載報警 if q1=3 then door=10; else door=00; end if; elsif q=1 then q=0; alarm=39。 then alarm=39。; 清除故障報警 elsif full=39。 then q1=0; q2=0; wahaha=39。 then if clr=39。event and clk=39。所以在一樓時 led賦值為“ 1001111”,三樓時 led賦值為“ 0000110”,如圖 。139。039。139。039。139。139。039。039。139。139。039。139。039。139。139。039。039。139。139。139。139。本程序只使用到上述的語言結構,相對簡易。; q1=0; if q1=3 then door=10; else door=00; end if;