基于鍵盤掃描算法的多路斷電報警系統(tǒng)設(shè)計
1 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)已在民航汕頭空管站信標(biāo)臺機(jī)房投入使用,下面以其為例簡述設(shè)計基本結(jié)構(gòu)。
系統(tǒng)硬件部分主要由檢測硬件電路、AT89C51單片機(jī)及其相關(guān)組件和PC機(jī)組成。軟件部分為斷電信號的鍵盤編碼、鍵盤掃描算法的改進(jìn)和PC機(jī)監(jiān)控軟件的設(shè)計。具體實(shí)現(xiàn)是通過檢測電路發(fā)送斷電信號給單片機(jī),單片機(jī)通過鍵盤掃描算法得出斷電線路對應(yīng)的鍵盤碼,PC監(jiān)控軟件則通過串口通信將單片機(jī)送來不同的鍵碼給予相關(guān)的報警處理,如圖1所示。
在信標(biāo)臺機(jī)房中,共有市電輸入1、市電輸入2和油機(jī)電輸入3路供電,平時正常狀況為2路市電互為主備用,油機(jī)待機(jī)不發(fā)電(2路市電皆斷電時,油機(jī)啟動發(fā)電應(yīng)急)。因此有以下4種供電狀態(tài):
(1)正常情況,2路市電供電,油機(jī)待機(jī);
(2)只有一路市電供電,另一路市電故障,油機(jī)待機(jī);
(3)2路市電都發(fā)生故障,油機(jī)啟動發(fā)電;
(4)2路市電都發(fā)生故障,油機(jī)未啟動。
對于以上4種狀態(tài),A狀態(tài)可設(shè)為監(jiān)控系統(tǒng)初始狀態(tài),其余共有4種斷電狀態(tài)(B狀態(tài)有2種情況)。分別對其進(jìn)行鍵盤編碼,使每一種斷電狀態(tài)都有惟一的鍵碼與之對應(yīng),電路設(shè)計采用2×4的鍵盤,硬件電路如圖2所示。通過鍵碼識別,PC機(jī)上的監(jiān)控軟件可以實(shí)時判斷斷電線路提出報警。
2 系統(tǒng)設(shè)計
2.1 硬件設(shè)計
如圖2所示,電路采用光電耦合器進(jìn)行強(qiáng)電隔離,起到防雷作用,并將模擬信號轉(zhuǎn)換成數(shù)字信號,實(shí)現(xiàn)A/D轉(zhuǎn)換。輸入的220 V交流電經(jīng)整流二極管D1整流、電容C1濾波后,形成直流電。
電流分成兩路,一路經(jīng)R1限流電阻使指示燈LED發(fā)光;另一路經(jīng)R2限流后送入光電耦合器4N25,點(diǎn)亮內(nèi)部的發(fā)光二極管,使光敏晶體管導(dǎo)通,在光電耦合器的4腳得到一個高電平。當(dāng)輸入的220 V交流電斷電時,光電耦合器輸入端電壓消失,發(fā)光二極管熄滅,光敏晶體管截止,4腳得到一個低電平,經(jīng)過相關(guān)的邏輯電路處理后,控制繼電器吸合(繼電器代替了鍵盤按鈕)。從而實(shí)現(xiàn)了把斷電信號模擬成鍵盤按下的狀態(tài),方便下一步處理。
2.2 單片機(jī)改進(jìn)型鍵盤掃描算法
對于多路供電的情況,可以通過對線路斷電信號進(jìn)行鍵盤編碼,從而使識別多路斷電成為可能。由于電路對報警實(shí)時性和準(zhǔn)確性的要求,采用了改進(jìn)型的鍵盤掃描算法。實(shí)驗(yàn)證明,該算法在系統(tǒng)的應(yīng)用中有很好的效果。實(shí)時檢測斷電信號是系統(tǒng)準(zhǔn)確性的一項(xiàng)重要指標(biāo),由于傳統(tǒng)鍵盤掃描算法在抖動算法調(diào)用的同時會屏蔽掉中斷,因此有必要對鍵盤掃描算法進(jìn)行改進(jìn)。
算法改進(jìn)主要分成3步:首先在中斷運(yùn)行程序中設(shè)置中斷變量,記錄運(yùn)行次數(shù)。判斷中斷執(zhí)行次數(shù)是否符合延時時間,然后再判斷鍵盤是否按下(也就是斷電信號是否真實(shí))。其次,每次調(diào)用鍵盤掃描分析程序均需經(jīng)過10 ms同步,當(dāng)?shù)?次檢測到按鍵時僅設(shè)置一個標(biāo)志,第2次檢測到按鍵時(與第一次檢測到按鍵相隔10 ms)再進(jìn)行鍵分析,實(shí)現(xiàn)報警準(zhǔn)確性的同時,提高系統(tǒng)的實(shí)時性。最后,系統(tǒng)根據(jù)不同的狀態(tài)對信號進(jìn)行編碼,三路電路由于有4種不同的狀態(tài)而編成4個統(tǒng)一獨(dú)立的鍵碼,減少了鍵碼分析的復(fù)雜性,提高系統(tǒng)的實(shí)時性。
2.3 基于VC++6.0的監(jiān)控軟件設(shè)計
在VC++6.0平臺上設(shè)計監(jiān)控軟件。該軟件主要由系統(tǒng)設(shè)置、運(yùn)行狀況和狀態(tài)顯示3部分組成,界面簡潔方便監(jiān)控。系統(tǒng)設(shè)置了對系統(tǒng)狀態(tài)顯示復(fù)位的功能、選擇通信串口的功能以及通信測試的功能。
通信測試主要用于日常維護(hù),對于本系統(tǒng)來說,單片機(jī)與PC機(jī)的通信鏈路至關(guān)重要,通過日常維護(hù)的通信測試可以減少系統(tǒng)下線未報警的風(fēng)險。在運(yùn)行狀況模塊中,監(jiān)控軟件提供了兩路市電運(yùn)行報告和油機(jī)的狀態(tài)報告,如圖3所示。
狀態(tài)顯示可以智能地顯示出斷電線路,實(shí)現(xiàn)現(xiàn)場無人監(jiān)管、遠(yuǎn)程監(jiān)控,如圖4所示。
3 結(jié)語
本文提出基于改進(jìn)型鍵盤掃描算法的多路電源斷電報警系統(tǒng)設(shè)計,利用鍵盤掃描算法的簡潔可行性,對多路斷電線路信號進(jìn)行鍵盤編碼,終端監(jiān)控報警軟件通過斷電信號的對應(yīng)鍵盤碼進(jìn)行識別,斷電線路提出報警。該系統(tǒng)簡化了一般電源斷電報警系統(tǒng),在實(shí)際應(yīng)用中,系統(tǒng)實(shí)現(xiàn)簡單,識別斷電時間為μs級,報警準(zhǔn)確,目前已投入實(shí)際使用。
評論