《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > FPGA在電梯控制系統(tǒng)中的應(yīng)用
FPGA在電梯控制系統(tǒng)中的應(yīng)用
來(lái)源:微型機(jī)與應(yīng)用2011年第24期
田紅光
(安徽理工大學(xué) 電氣與信息工程學(xué)院, 安徽 淮南232001)
摘要: 介紹了基于Altera公司EP1K30TC144芯片的電梯控制器設(shè)計(jì)過(guò)程,描述了該控制系統(tǒng)的功能。該設(shè)計(jì)采用VHDL語(yǔ)言進(jìn)行編程,以QUARTUSⅡ軟件為開(kāi)發(fā)平臺(tái),對(duì)本設(shè)計(jì)進(jìn)行了仿真,并使用JTAG將程序代碼下載到實(shí)驗(yàn)板上進(jìn)行了硬件驗(yàn)證。
Abstract:
Key words :

摘  要: 介紹了基于Altera公司EP1K30TC144芯片的電梯控制器設(shè)計(jì)過(guò)程,描述了該控制系統(tǒng)的功能。該設(shè)計(jì)采用VHDL語(yǔ)言進(jìn)行編程,以QUARTUSⅡ軟件為開(kāi)發(fā)平臺(tái),對(duì)本設(shè)計(jì)進(jìn)行了仿真,并使用JTAG將程序代碼下載到實(shí)驗(yàn)板上進(jìn)行了硬件驗(yàn)證。
關(guān)鍵詞: 電梯控制器; VHDL; EP1K30TC144; QUARTUSⅡ

    隨著社會(huì)的發(fā)展,電梯的使用越來(lái)越普遍,對(duì)電梯功能的要求也不斷提高,相應(yīng)地其控制方式也在不斷發(fā)生變化。對(duì)于電梯的控制,傳統(tǒng)的方法是使用繼電器-接觸器控制系統(tǒng)進(jìn)行控制,進(jìn)入全微機(jī)化控制的時(shí)代,微型計(jì)算機(jī)在電梯控制上的應(yīng)用日益廣泛。電梯的微機(jī)化控制主要有以下幾種形式:①PLC控制;②單板機(jī)控制;③單片機(jī)控制;④單微機(jī)控制;⑤多微機(jī)控制;⑥人工智能控制。隨著EDA技術(shù)的快速發(fā)展,CPLD/FPGA因其高速處理信號(hào)的能力、可在線編程、易于實(shí)現(xiàn)、開(kāi)發(fā)周期短、便于維護(hù)等優(yōu)點(diǎn),使FPGA已廣泛應(yīng)用于電子設(shè)計(jì)控制的各個(gè)方面。本文就是使用一片Altera公司的EP1K30TC144為控制中心,以VHDL編程語(yǔ)言為基礎(chǔ)進(jìn)行了電梯控制器的設(shè)計(jì),并做了仿真。
1 系統(tǒng)功能簡(jiǎn)介
    電梯控制器[1]的功能:每層電梯入口處設(shè)有上下請(qǐng)求開(kāi)關(guān);電梯內(nèi)設(shè)有乘客到達(dá)層次的停站請(qǐng)求開(kāi)關(guān);電梯所處位置指示裝置及電梯運(yùn)行模式指示裝置;電梯每分鐘升降一層樓。電梯到達(dá)有停站請(qǐng)求的樓層后,經(jīng)過(guò)5 s電梯開(kāi)門,開(kāi)門指示燈亮,開(kāi)門10 s后電梯門關(guān)閉,電梯繼續(xù)運(yùn)行,直到運(yùn)行完最后一個(gè)請(qǐng)求信號(hào)后停在當(dāng)前層;能記憶電梯內(nèi)外所有請(qǐng)求信號(hào),并按照電梯運(yùn)行規(guī)則依次響應(yīng),每個(gè)信號(hào)保留至執(zhí)行后消除。
    電梯運(yùn)行規(guī)則:遵循方向優(yōu)先的原則,電梯上升時(shí),只響應(yīng)比電梯所在位置高的上樓請(qǐng)求信號(hào),由下到上逐個(gè)執(zhí)行,直到最后一個(gè)上樓請(qǐng)求執(zhí)行完畢,如更高層有請(qǐng)求下樓信號(hào),則直接上升到有下樓請(qǐng)求的最高層,然后進(jìn)入下樓狀態(tài)。電梯下降時(shí),與上升狀態(tài)規(guī)則相反。
    輸入信號(hào)定義:
    系統(tǒng)復(fù)位信號(hào):reset,高電平有效;
    電梯入口處一層、二層的上樓請(qǐng)求開(kāi)關(guān):upone、uptwo;
    電梯入口處二層、三層的下樓請(qǐng)求開(kāi)關(guān):downtwo、downthree;
    電梯內(nèi)部到達(dá)樓層的停站請(qǐng)求開(kāi)關(guān):one、two、three;
    所有輸入信號(hào)的規(guī)定為:1表示有請(qǐng)求,0表示無(wú)請(qǐng)求;
    輸出信號(hào)定義:
    電梯外部上升和下降請(qǐng)求指示燈:lightup和lightdown,這些信號(hào)與upone、uptwo、downtwo和downthree信號(hào)相對(duì)應(yīng);
    電梯內(nèi)部乘客到達(dá)樓層的停站請(qǐng)求燈:arr,該信號(hào)與one、two和three相對(duì)應(yīng);
    電梯所在樓層指示:p表示電梯在對(duì)應(yīng)樓層;
    電梯的運(yùn)行狀態(tài):lightdown指示向下運(yùn)行,lightup向上運(yùn)行,arr指示電梯的開(kāi)關(guān)門狀態(tài)及是否到達(dá)樓層。
2 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
2.1 系統(tǒng)總體框圖

    系統(tǒng)總體框圖如圖1所示。


2.2頂層電路的設(shè)計(jì)
    縱觀各種基于FPGA的電梯控制器,很少有人介紹并使用構(gòu)造體的結(jié)構(gòu)描述方式。即在多層次的設(shè)計(jì)中,高層次的設(shè)計(jì)模塊調(diào)用低層次的設(shè)計(jì)模塊,或者直接使用門電路設(shè)計(jì)單元來(lái)完成一個(gè)復(fù)雜的邏輯電路的描述方法。結(jié)構(gòu)描述方式最能提高設(shè)計(jì)效率,它可以將已有的設(shè)計(jì)成果方便地運(yùn)用到新的設(shè)計(jì)中去。
    本系統(tǒng)的頂層電路設(shè)計(jì)就采用構(gòu)造體的結(jié)構(gòu)描述方式。易于實(shí)現(xiàn),易于糾錯(cuò),易于修改程序。
    上層模塊源程序[4]及注釋:
library ieee;
use ieee.std_logic_1164.all;
entity total5 is
port(uo,ut,dt,dth:in std_logic--一、二、三層樓電梯外的上下樓請(qǐng)求鍵。
o,t,th:in std_logic;--一、二、三層電梯里的按鍵。
pres:in std_logic;--reset信號(hào)。
clk:in std_logic;--時(shí)鐘信號(hào),1 MHz。
    lightout:out std_logic_vector(6 downto 0);--數(shù)碼管的輸入信號(hào)。
lu,ld:out std_logic;--電梯上升,下降的燈。
arr:out std_logic);--開(kāi)門的燈。
end;
architecture a of total5 is
signal templ0,templ2:std_logic;
signal templ1:integer range 3 to 1;
Signal
temp1,temp2,temp3,temp4,temp5,temp6,temp7:std_logic;
component bigmain--調(diào)用電梯控制模塊。
port(upone,uptwo,downtwo,downthree
:in std_logic;
one,two,three:in std_logic;
reset:in std_logic;
clk,clk2:in std_logic;
p:out integer range 3 to 1;
lightup,lightdown:out std_logic;
arrive:out std_logic);
end component;
component fangdou --調(diào)用防抖動(dòng)模塊。
port(clk:in std_logic;
  key:in std_logic;
  keyout:out std_logic);
end component;
component fenpin--調(diào)用分頻器模塊。
port(clk:in std_logic;
  clk1,clk2:out std_logic);
end component;
component display--調(diào)用譯碼顯示模塊。
port(clk :in std_logic;
light:in integer range 3 to 1;
segout:out std_logic_vector(6 downto 0));
end component;
begin
u1:fenpin port map(clk,templ0,templ2);
u4:fangdou port map(templ0,uo,temp1);
u5:fangdou port map(templ0,ut,temp2);
u6:fangdou port map(templ0,dt,temp3);
u7:fangdou port map(templ0,dth,temp4);
u8:fangdou port map(templ0,o,temp5);
u9:fangdou port map(templ0,t,temp6);
u10:fangdou port map(templ0,th,temp7);
u11:bigmain port  map(temp1,temp2,temp3,
temp4,temp5,temp6,temp7,pres,clk,templ2,
templ1,lu,ld,arr);
u12:display port map(clk,templ1,lightout);
end;
2.3主模塊設(shè)計(jì)
    控制模塊是整個(gè)設(shè)計(jì)的核心部分,本設(shè)計(jì)采用狀態(tài)機(jī)[2]的方法來(lái)實(shí)現(xiàn)。依據(jù)電梯的功能要求,這里將電梯的工作分為10個(gè)狀態(tài)。狀態(tài)機(jī)如圖2所示。(1)控制模塊有兩個(gè)進(jìn)程:k1控制輸入,無(wú)論電梯在什么狀態(tài)均能接收用戶的輸入請(qǐng)求,該進(jìn)程由1 MHz的時(shí)鐘觸發(fā);k2控制電梯的升、降、停留,該程序由1 Hz的時(shí)鐘觸發(fā)。(2)進(jìn)程k1是由1MHz的時(shí)鐘作為觸發(fā)沿,不斷地檢測(cè)用戶是否有輸入請(qǐng)求,對(duì)于一、二、三層信號(hào),分別有flag1、flag2、flag3和clear1、clear2、clear3兩套標(biāo)志位來(lái)控制輸入請(qǐng)求是否有效,是否應(yīng)該對(duì)標(biāo)志位清零。程序有兩個(gè)表示電梯的狀態(tài):一是位置狀態(tài),二是運(yùn)行狀態(tài)。
 

 

 

3 電梯控制系統(tǒng)仿真
    電梯控制系統(tǒng)的仿真[3]波形如圖3所示,由仿真波形可以看出,當(dāng)電梯的外部出現(xiàn)2樓下樓申請(qǐng)downtwo時(shí),電梯運(yùn)行p到2樓,開(kāi)門等待,再關(guān)門;當(dāng)電梯的內(nèi)部有停3樓three申請(qǐng)時(shí),電梯運(yùn)行到3樓,開(kāi)門等待,再關(guān)門;如果電梯的外部繼續(xù)有1樓上樓申請(qǐng)upone,電梯從3樓下降到1樓,開(kāi)門等待,然后關(guān)門。電梯位置的變化及其運(yùn)行和最初的設(shè)計(jì)要求完全符合。

    本系統(tǒng)是基于EP1K30TC144的一個(gè)多樓層中單個(gè)載客箱的電梯控制器,該控制器可控制電梯完成3個(gè)樓層的載客服務(wù)(和多樓層的控制機(jī)理相同,可擴(kuò)展至任意樓層),而且遵循方向優(yōu)先的原則,能夠提前關(guān)閉電梯門和延遲關(guān)閉電梯門,提供電梯運(yùn)行的開(kāi)關(guān)控制按鈕,同時(shí)指示電梯的運(yùn)行狀態(tài)、樓層間的運(yùn)行時(shí)間以及電梯所在樓層的等待時(shí)間。電梯對(duì)用戶的響應(yīng)率非常高,且響應(yīng)的時(shí)間比較短。電梯在維修停止?fàn)顟B(tài)時(shí)可以進(jìn)入省電模式,能夠節(jié)省大量電能。
參考文獻(xiàn)
[1] 侯伯亨,顧新.VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(修訂版)[M].西 安:西安電子科技大學(xué)出版社,2006.
[2] 路而紅.專用集成電路設(shè)計(jì)與電子設(shè)計(jì)自動(dòng)化[M].北京:清華大學(xué)出版社,2004.
[3] 袁文波,張皓,唐振中. FPGA應(yīng)用開(kāi)發(fā)從實(shí)踐到提高[M]. 北京:中國(guó)電力出版社,2007.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。