仝戰(zhàn)營(yíng),毛景魁
(河南機(jī)電高等??茖W(xué)校,河南 新鄉(xiāng) 453000)
隨著家庭智能控制系統(tǒng)深入普通用戶,無(wú)線開(kāi)關(guān)系統(tǒng)出現(xiàn)于市場(chǎng)上。先后出現(xiàn)了單路、多路遙控開(kāi)關(guān),諸如4路無(wú)線開(kāi)關(guān),定時(shí)開(kāi)關(guān)。此類系統(tǒng)只能進(jìn)行簡(jiǎn)單的開(kāi)關(guān)控制,由于通信的單向性,操作者無(wú)法得知開(kāi)關(guān)狀態(tài),只能從用電設(shè)備的工作狀態(tài)得知當(dāng)前的開(kāi)關(guān)狀態(tài),更無(wú)法對(duì)開(kāi)關(guān)預(yù)約定時(shí)。因此,此類設(shè)備雖然解決了操縱開(kāi)關(guān)的不便,但卻沒(méi)有解決開(kāi)關(guān)狀態(tài)、預(yù)約定時(shí)以及通信可靠性的問(wèn)題。
為解決上述問(wèn)題,并將目前各實(shí)用功能集成為一體,采用藍(lán)牙通信,結(jié)合微控制器制作的智能低壓配電箱的控制電路框圖如圖1所示,系統(tǒng)主要由以下功能模塊組成。
圖1 低壓智能配電箱硬件控制電路
1)開(kāi)關(guān)驅(qū)動(dòng)電路,為配電箱的執(zhí)行機(jī)構(gòu),用于開(kāi)通或關(guān)斷某路電源,達(dá)到控制配電的目的。
2)LCD12864液晶顯示單元。用于顯示用戶的當(dāng)前操作、當(dāng)前時(shí)間、各路開(kāi)關(guān)的狀態(tài)、定時(shí)信息等。
3)實(shí)時(shí)時(shí)鐘電路。該電路為系統(tǒng)運(yùn)行提供時(shí)間基準(zhǔn),系統(tǒng)根據(jù)此時(shí)間執(zhí)行定時(shí)動(dòng)作。
4)藍(lán)牙通信接口。采用外接藍(lán)牙模塊,設(shè)計(jì)全雙工的通信接口,與藍(lán)牙模塊通信,以便與操作終端數(shù)據(jù)交換。
5)程序下載接口。采用ISP方式下載程序,可在線燒寫(xiě)程序,為以后程序升級(jí)提供了方便的接口。
6)提示音電路。用于操作時(shí)的聲音提示或者故障報(bào)警等。
7)核心控制芯片。核心控制芯片為單片機(jī)STC12C5A60S2,管理上述的系統(tǒng)各功能模塊。
8)電源電路。采用開(kāi)關(guān)電源模塊為控制電路提供所需的電源。
9)面板按鍵。提供4個(gè)按鍵,操作者可以在面板上進(jìn)行全部操作。
圖2 控制主板原理圖
系統(tǒng)控制主板電路如圖2所示,控制核心芯片采用STC12C5A60S2,通過(guò)P0口和 P2口的 P2.1-P2.5作為L(zhǎng)CD12864液晶的接口控制線;P1.0、P1.1作為無(wú)線通信接口,用于收發(fā)遙控?cái)?shù)據(jù);P1.4-P1.7用于配電箱的開(kāi)關(guān)驅(qū)動(dòng)控制線;P3.0、P3.1用于程序的ISP下載,并配置指示燈,只是當(dāng)前通信狀況。
完成以上任務(wù)通常采用傳統(tǒng)的前后臺(tái)處理編程方式,但此種方式當(dāng)一個(gè)任務(wù)執(zhí)行時(shí)間較長(zhǎng)時(shí),容易丟失瞬時(shí)信息,從而造成不動(dòng)作或誤動(dòng)作。一個(gè)高效的單片機(jī)智能控制系統(tǒng),不僅能夠同時(shí)執(zhí)行多個(gè)任務(wù)對(duì)每個(gè)任務(wù)作出實(shí)時(shí)響應(yīng),而且,要求系統(tǒng)能夠及時(shí)響應(yīng)隨機(jī)發(fā)生的外部事件,并對(duì)其作出快速處理[1]。對(duì)于這樣的系統(tǒng)應(yīng)用,采用實(shí)時(shí)操作系統(tǒng)RTOS(RealTime-Operating System)作為系統(tǒng)軟件設(shè)計(jì)平臺(tái)是一個(gè)良好的選擇,它可以靈活地安排系統(tǒng)資源,簡(jiǎn)化復(fù)雜的軟件設(shè)計(jì),加快軟件開(kāi)發(fā)的效率,大大縮短項(xiàng)目的開(kāi)發(fā)周期[2]。
目前,應(yīng)用于嵌入式的操作系統(tǒng)很多,常見(jiàn)的通用型嵌入式操作系統(tǒng)有 uCLinux、VxWorks、Windows CE.net、uCOS-II等。但這些操作系統(tǒng)需要較大的RAM空間,因此,不適合于采用普通單片機(jī)控制的應(yīng)用場(chǎng)所。
RTX51是德國(guó) Keil公司開(kāi)發(fā)的一種應(yīng)用于MCS51系列單片機(jī)的實(shí)時(shí)多任務(wù)操作系統(tǒng),它可以工作在所有8051單片機(jī)以及派生的系列[3]。其中,RTX51 Full支持信號(hào)傳遞、系統(tǒng)郵箱和消息傳遞。RTX51 Tiny最大允許16個(gè)任務(wù)的循環(huán)切換,支持信號(hào)傳遞,但不支持存儲(chǔ)區(qū)的分配和釋放,不支持搶先式調(diào)度??紤]到系統(tǒng)后繼的優(yōu)化、擴(kuò)展,本文采用RTX51 Full作為系統(tǒng)的操作軟件。
根據(jù)系統(tǒng)要求和軟件編制的需要,經(jīng)過(guò)系統(tǒng)需求分析,總結(jié)控制低壓配電控制箱的控制要求,其需要完成的軟件模塊的功能主要有:遙控命令的接收和解析、面板按鍵操作、開(kāi)關(guān)定時(shí)、開(kāi)關(guān)控制、數(shù)據(jù)存儲(chǔ)、系統(tǒng)時(shí)間設(shè)定、提示音的開(kāi)關(guān)。這些軟件模塊的層次關(guān)系如圖2所示,它們不是需要同時(shí)運(yùn)行的,比如開(kāi)關(guān)控制,只有在遙控或面板操作時(shí)才會(huì)執(zhí)行。因此,將以上的功能模塊按照先后的層次關(guān)系劃分為以下幾個(gè)獨(dú)立的模塊。
基本任務(wù)有5個(gè),分別是:遙控命令及數(shù)據(jù)的接收和解析、面板操作、液晶顯示、計(jì)時(shí)和空閑任務(wù)。它們完成的功能如下所述:
1)命令及數(shù)據(jù)的接收和解析
主要完成操作終端通過(guò)藍(lán)牙功能模塊和控制箱進(jìn)行的命令、數(shù)據(jù)交互。此模塊的主要功能是按照3.2所述的協(xié)議格式解析出操作終端的命令、數(shù)據(jù),交由上層軟件處理。
2)面板操作
控制箱有4個(gè)按鍵,分別執(zhí)行上翻(加)、下翻(減)、確定、取消操作。具體功能根據(jù)當(dāng)前的操作命令而定。
3)液晶顯示
液晶為系統(tǒng)的輸出界面,操作者借此了解系統(tǒng)運(yùn)行狀態(tài)及數(shù)據(jù)。因此,對(duì)于不同的操作命令,需要顯示不同的界面。操作者希望操作界面友好,便于操作,這給程序設(shè)計(jì)提出了較高的要求。
12864是128*64點(diǎn)陣液晶模塊的點(diǎn)陣數(shù)簡(jiǎn)稱,適用于各類儀器,小型設(shè)備的顯示領(lǐng)域。它是一種圖形點(diǎn)陣液晶顯示器,主要由行驅(qū)動(dòng)器/列驅(qū)動(dòng)器及128×64全點(diǎn)陣液晶顯示器組成,可完成圖形顯示,也可以顯示8×4個(gè)(16×16)漢字。
根據(jù)用戶的操作習(xí)慣,將12864液晶的顯示界面制作成菜單式界面,各個(gè)可執(zhí)行的命令顯示于液晶之上。操作者通過(guò)按鍵選擇相應(yīng)的菜單進(jìn)入,并執(zhí)行所選擇的命令。
4)計(jì)時(shí)任務(wù)
控制箱必須有一個(gè)時(shí)間基準(zhǔn),才能完成定時(shí)動(dòng)作。這里面有2種形式的定時(shí),一個(gè)是簡(jiǎn)單的不精確的定時(shí),依靠單片機(jī)自身的定時(shí)器完成,主要用來(lái)作為系統(tǒng)段時(shí)間的計(jì)時(shí),如按鍵消抖、間隔讀取實(shí)時(shí)時(shí)鐘等。另一個(gè)是長(zhǎng)時(shí)間精確定時(shí),需要實(shí)時(shí)時(shí)鐘來(lái)完成。在軟件里設(shè)計(jì)一結(jié)構(gòu)體,依靠間隔讀取實(shí)時(shí)時(shí)鐘完成時(shí)間數(shù)據(jù)的更新,并以該數(shù)據(jù)作為開(kāi)關(guān)定時(shí)和系統(tǒng)時(shí)間的基準(zhǔn)。
5)空閑任務(wù)
系統(tǒng)長(zhǎng)時(shí)間不進(jìn)行操作時(shí),表明處于“空閑狀態(tài)”,此時(shí),不必要顯示系統(tǒng)菜單,為方便使用,設(shè)計(jì)顯示系統(tǒng)時(shí)間,讓用戶可以看到當(dāng)前的時(shí)間,作為一個(gè)時(shí)鐘使用。因此,空閑任務(wù)的功能就是察看系統(tǒng)是否處于空閑,如果處于空閑階段,即切換到系統(tǒng)時(shí)間顯示的狀態(tài)。如果用戶有按鍵,則立即顯示操作菜單,以便操作者進(jìn)行功能操作。
上述5個(gè)任務(wù)需要同時(shí)獨(dú)立運(yùn)行,對(duì)于單片機(jī)來(lái)講,采用傳統(tǒng)的前后臺(tái)系統(tǒng)編寫(xiě)軟件,則顯得麻煩而不實(shí)用。綜合單片機(jī)的資源和目前運(yùn)用于單片機(jī)的操作系統(tǒng),選擇RTX-Tiny操作系統(tǒng)對(duì)上述5個(gè)任務(wù)進(jìn)行調(diào)度,使之互相獨(dú)立。
由于系統(tǒng)任務(wù)較多,現(xiàn)以面板操作和計(jì)時(shí)任務(wù)為例,說(shuō)明和分析系統(tǒng)軟件的編制過(guò)程。
面板操作的任務(wù)是讀取按鍵值,并根據(jù)此按鍵值、目前菜單行,執(zhí)行操作者要求的功能,其流程如圖4所示。
圖3 控制箱軟件層次關(guān)系
按鍵任務(wù)程序不停地檢查按鍵,如果有按鍵按下,則將按鍵值轉(zhuǎn)換成可識(shí)別的按鍵字符。然后程序檢查當(dāng)前系統(tǒng)是否處于空閑狀態(tài),如果處于空閑狀態(tài),則不予響應(yīng),否則,調(diào)用菜單程序,根據(jù)按鍵值執(zhí)行相應(yīng)的功能程序。
圖4 按鍵任務(wù)流程圖
按照?qǐng)D4編寫(xiě)的程序如下所示:
計(jì)時(shí)任務(wù)首先判斷系統(tǒng)是否處于空閑狀態(tài),然后讀取實(shí)時(shí)時(shí)鐘,并根據(jù)實(shí)時(shí)時(shí)鐘的時(shí)間數(shù)據(jù)判斷定時(shí)時(shí)間是否到,主要流程如圖5所示。
圖5 計(jì)時(shí)任務(wù)流程
計(jì)時(shí)任務(wù)以1秒左右的時(shí)間等待超時(shí)事件,如果超時(shí)事件發(fā)生,則將空閑時(shí)間變量減一,如果空閑時(shí)間變量被減為0,則空閑時(shí)間變量重新賦默認(rèn)值(1800,30分鐘)。同時(shí),空閑狀態(tài)置位,表明當(dāng)前操作已經(jīng)至少30分鐘沒(méi)有再進(jìn)行了,向空閑任務(wù)發(fā)送信號(hào)。如果空閑時(shí)間變量不為0,則說(shuō)明仍然在操作中,略過(guò)空閑時(shí)間的操作。
完成上述任務(wù)后,則調(diào)用時(shí)間比對(duì)函數(shù),讀取實(shí)時(shí)時(shí)鐘的數(shù)據(jù),更新系統(tǒng)時(shí)間,與各路開(kāi)關(guān)的當(dāng)前定時(shí)數(shù)據(jù)比對(duì),如果到了定時(shí)時(shí)間,則執(zhí)行相關(guān)定時(shí)動(dòng)作,否則,繼續(xù)等待下次的時(shí)間超時(shí)事件。
按照?qǐng)D4編寫(xiě)的計(jì)時(shí)任務(wù)程序如下所示:
RTX實(shí)時(shí)操作系統(tǒng)既能保證對(duì)外界的信息以足夠快的速度進(jìn)行相應(yīng)處理,又能并行運(yùn)行多個(gè)任務(wù),具有實(shí)時(shí)性和并行性的特點(diǎn),因此能夠很好地完成對(duì)多個(gè)信息的測(cè)量、處理和實(shí)時(shí)控制[4],并且,RTX以其簡(jiǎn)潔高效的內(nèi)核,非常適合運(yùn)行于資源較少的單片機(jī)上。使用RTX51的多任務(wù)操作系統(tǒng)軟件完成的低壓配電箱,外圍電路少、成本低、可靠性高,軟件的編寫(xiě)和調(diào)試快捷方便、開(kāi)發(fā)周期短。
根據(jù)上述設(shè)計(jì)生產(chǎn)的研丹-I型微電腦控制低壓智能配電箱已用于生產(chǎn),實(shí)踐證明,使用RTX51實(shí)時(shí)操作系統(tǒng)可以加快系統(tǒng)的開(kāi)發(fā)速度,降低軟件編程的復(fù)雜程度,大大提高開(kāi)發(fā)效率,是一個(gè)較好的解決辦法。
[1]歐偉明,羅三定.基于RTX51的交通燈信號(hào)自適應(yīng)倒計(jì)時(shí)器[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2006,16(6):49-51.
[2]邢鵬康,胡彬.基于RTX51實(shí)時(shí)操作系統(tǒng)的交通燈控制系統(tǒng)的設(shè)計(jì)[J].山西電子技術(shù),2010,(5),50 -52.
[3]蔡林驥,李清寶.RTX51嵌入式實(shí)時(shí)操作系統(tǒng)分析[J].計(jì)算機(jī)應(yīng)用與軟件,2005,6(6):90 -92.
[4]胡萬(wàn)華.基于RTX51實(shí)時(shí)操作系統(tǒng)的激光熱處理機(jī)控制系統(tǒng)設(shè)計(jì)[J].煤礦機(jī)械,2010,5(5):24 -26.