摘 要: 本文根據(jù)監(jiān)控系統(tǒng)的發(fā)展現(xiàn)狀,提出了一個(gè)基于以太網(wǎng)的嵌入式數(shù)字家庭監(jiān)控系統(tǒng)的設(shè)計(jì)方案,并初步比較完整的完成了該監(jiān)控系統(tǒng)的開發(fā)。系統(tǒng)采用嵌入式現(xiàn)場(chǎng)監(jiān)控器進(jìn)行數(shù)據(jù)采集,現(xiàn)場(chǎng)監(jiān)控器由數(shù)據(jù)采集卡和網(wǎng)絡(luò)通訊卡組成,現(xiàn)場(chǎng)控制卡負(fù)責(zé)接收監(jiān)控中心發(fā)出的控制命令,它們都是由一塊51單片機(jī)控制,其軟件開發(fā)都是使用了C51和51匯編程序。
關(guān)鍵字: 監(jiān)控系統(tǒng);嵌入式系統(tǒng);單片機(jī)
1 引言
隨著科技的進(jìn)步及對(duì)生活質(zhì)量要求的不斷提高,信息技術(shù)和網(wǎng)絡(luò)化技術(shù)的發(fā)展,為家用電器居家環(huán)境集中控制和遠(yuǎn)程遙控提供了可能。將信息技術(shù)與家電控制技術(shù)相融合,在很大程度上實(shí)現(xiàn)家庭生活的信息化和自動(dòng)化,滿足人們舒適、快節(jié)奏的生活需要,當(dāng)家庭采用了監(jiān)控系統(tǒng)之后,各種電子設(shè)備就能夠在幾乎無需過問的情況下進(jìn)行操作。鑒于這種數(shù)字化家庭的發(fā)展趨勢(shì),遠(yuǎn)程監(jiān)控作為一種理想的有效的而且快捷方便的實(shí)現(xiàn)途徑己被廣泛采用。
[align=center]

圖1 現(xiàn)場(chǎng)控制卡的硬件框圖[/align]
2 系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)將采用上、下位機(jī)的方式組建監(jiān)控系統(tǒng)。下位機(jī)工作于監(jiān)控現(xiàn)場(chǎng),采用51系列單片機(jī)控制;上位機(jī)則用于監(jiān)控中心,使用一臺(tái)PC機(jī)。單片機(jī)通過各種傳感器,采集數(shù)據(jù),通過以太網(wǎng)卡控制芯片實(shí)現(xiàn)的網(wǎng)絡(luò)接口將監(jiān)控?cái)?shù)據(jù)傳給異地的PC機(jī),PC機(jī)的遠(yuǎn)程監(jiān)控端接收監(jiān)控信息并存儲(chǔ),然后進(jìn)行相應(yīng)處理并發(fā)出相應(yīng)的報(bào)警信息。同時(shí),PC機(jī)也可以向單片機(jī)發(fā)送指令,控制單片機(jī)的監(jiān)控行為??刂泼畎l(fā)出去以后,負(fù)責(zé)現(xiàn)場(chǎng)控制的單片機(jī)接受命令,經(jīng)過信息處理以后再執(zhí)行。
3 監(jiān)控系統(tǒng)硬件設(shè)計(jì)
對(duì)于現(xiàn)場(chǎng)監(jiān)控器和現(xiàn)場(chǎng)控制器都是分別由各自的單片機(jī)來組成,現(xiàn)場(chǎng)控制器的硬件設(shè)計(jì)與現(xiàn)場(chǎng)監(jiān)控器硬件設(shè)計(jì)一樣,都是包含了單片機(jī)最小系統(tǒng)的擴(kuò)展,再加上各自的功能模塊。圖1是現(xiàn)場(chǎng)控制卡的硬件框圖。
系統(tǒng)硬件設(shè)計(jì)主要包括兩部分內(nèi)容:一是單片機(jī)系統(tǒng)的擴(kuò)展部分設(shè)計(jì),主要是系統(tǒng)存儲(chǔ)器的擴(kuò)展,存儲(chǔ)器擴(kuò)展指EPROM, RAM的擴(kuò)展等。二是功能模塊的設(shè)計(jì),包括通信功能模塊、電機(jī)驅(qū)動(dòng)模塊。
3.1 單片機(jī)系統(tǒng)的擴(kuò)展
3.1.1 系統(tǒng)存儲(chǔ)器的擴(kuò)展
本系統(tǒng)使用的單片機(jī)為78E58B單片機(jī)。78E58B是一款以8051為核心的單片機(jī),它具有集成度高、指令功能強(qiáng)、運(yùn)算速度快、I/O接口功能強(qiáng)、可靠性高等優(yōu)點(diǎn),包含32K字節(jié)的片內(nèi)Flash電擦寫程序存儲(chǔ)器:4K字節(jié)附加ROM; 512字節(jié)片內(nèi)RAM;三個(gè)16位定時(shí)器/計(jì)數(shù)器;一個(gè)串口。該芯片還包括8個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí)的中斷資源。32K字節(jié)的程序存儲(chǔ)器對(duì)于系統(tǒng)來說己經(jīng)足夠了,所以沒有擴(kuò)展外部程序存儲(chǔ)器,所以在硬件框圖中不必添加外部ROM,節(jié)省了系統(tǒng)開銷,還可以省卻部分電路、連線,減少了干擾源。然而,78E58B只有512字節(jié)的片內(nèi)RAM遠(yuǎn)遠(yuǎn)不能滿足系統(tǒng)功能的要求,故采用了8K字節(jié)的靜態(tài)RAM 6264作為外部數(shù)據(jù)存儲(chǔ)器。
3.1.2 復(fù)位電路設(shè)計(jì)
本系統(tǒng)的復(fù)位電路采用了電平式開關(guān)復(fù)位與上電復(fù)位,另外復(fù)位引腳還與網(wǎng)絡(luò)通訊卡上MCU的一個(gè)I/O口連接。使用這種復(fù)位電路,當(dāng)該MCU中的程序在運(yùn)行過程中出現(xiàn)問題的時(shí)候,就可以通過網(wǎng)絡(luò)通訊卡上的MCU使之復(fù)位,重新恢復(fù)正常工作。雖然這種復(fù)位電路干擾易串入復(fù)位端,但是一般不會(huì)造成單片機(jī)的錯(cuò)誤復(fù)位。復(fù)位電路如圖所示,但要注意的是這種復(fù)位電路要與手動(dòng)的開關(guān)復(fù)位電路隔離,以免復(fù)位功能失效,甚至短路。
3.2 接口實(shí)現(xiàn)
3.2.1 RS232異步串行通信單元
本系統(tǒng)采用RS232最簡(jiǎn)單的全雙工通信方式,只用了三根線,即串行接收RXD,串行發(fā)送TXD和接地線GND。將“串行發(fā)送”和“串行接收”交叉連接,地線直接相連,其余信號(hào)線都不用。用軟件來實(shí)現(xiàn)通信的“握手”、空閑檢測(cè)等功能。并且選用MAX232串口通信信號(hào)轉(zhuǎn)換芯片來實(shí)現(xiàn)RS232與TTL的電平和正負(fù)邏輯電平的轉(zhuǎn)換。通過MAX232的TTL和RS-232的輸入/輸出端口,自動(dòng)的調(diào)節(jié)了單片機(jī)的TTL電平信號(hào)和RS-232的串口通信信號(hào)的電平匹配。
設(shè)計(jì)這部分硬件單元,主要是為了系統(tǒng)調(diào)試的需要。在調(diào)試階段,通過串行通信端口,向計(jì)算機(jī)輸出調(diào)試的結(jié)果,有利于觀察系統(tǒng)運(yùn)行的狀態(tài)。另外一個(gè)目的是為了將來系統(tǒng)擴(kuò)展的需要,可以方便的通過串行通信端口,向系統(tǒng)輸入必要的命令和信息。
3.2.2 單片機(jī)雙機(jī)并行互連的實(shí)現(xiàn)方法
實(shí)現(xiàn)現(xiàn)場(chǎng)控制卡和網(wǎng)絡(luò)通訊卡的連接實(shí)際上就是實(shí)現(xiàn)兩卡上單片機(jī)的互連。本來單片機(jī)帶有串口,利用串口進(jìn)行互連通信非常方便,但是系統(tǒng)中的單片機(jī)的串口都要用于對(duì)外連接,所以單片機(jī)的串口就不能用做系統(tǒng)內(nèi)單片機(jī)之間的通信接口了。但是,單片機(jī)的并行端口也能相互連接來進(jìn)行數(shù)據(jù)通信,因此就通過單片機(jī)的并行端口來實(shí)現(xiàn)現(xiàn)場(chǎng)控制卡和網(wǎng)絡(luò)通訊卡直接的互連。在本系統(tǒng)中,可根據(jù)不同的使用要求,來采用不同的并行連接方法。目前可用的連接方法包括以下三種:單向并行通信接口;主從并行通信接口;無主從雙向并行通信接口。
3.3 驅(qū)動(dòng)電機(jī)電路
3.3.1 驅(qū)動(dòng)電路
單片機(jī)本身具備一定的驅(qū)動(dòng)能力,其I/O口的電流在l0m A左右,像驅(qū)動(dòng)發(fā)光二極管之類的器件并不需要特殊的驅(qū)動(dòng)電路,但是對(duì)于直流電機(jī)這類負(fù)載較大的器件,單片機(jī)無法為其提供較大的電流,尤其在直流電機(jī)剛啟動(dòng)時(shí),電機(jī)的啟動(dòng)電流往往會(huì)達(dá)到其正常工作電流的數(shù)倍,所以,這一類的器件就需要專門的驅(qū)動(dòng)電路完成對(duì)其的驅(qū)動(dòng),而單片機(jī)只是完成對(duì)其控制方面的工作。驅(qū)動(dòng)電路的基本功能是要有足夠的電流驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)。原理圖如圖3所示。
[align=center]

圖3 單片機(jī)驅(qū)動(dòng)直流電機(jī)原理框圖[/align]
3.3.2 光耦合器
光耦合器是把發(fā)光器件和光敏器件組裝在一起,通過光線實(shí)現(xiàn)藕合,構(gòu)成電-光-電的轉(zhuǎn)換器件。光耦合器可用于較遠(yuǎn)距離的信號(hào)隔離傳送??梢云鸬礁綦x兩個(gè)系統(tǒng)地線的作用,是兩個(gè)系統(tǒng)的電源相互獨(dú)立,消除地電位不同所產(chǎn)生的影響,具有很強(qiáng)的抑制噪聲干擾的能力。 還可以作為信號(hào)隔離轉(zhuǎn)換、脈沖系統(tǒng)間的電平匹配、強(qiáng)電與弱電之間隔離、高壓開關(guān)等。光耦合器的應(yīng)用時(shí)系統(tǒng)具有較高的電氣隔離和抗干擾能力。
4 監(jiān)控系統(tǒng)軟件設(shè)計(jì)
4.1 現(xiàn)場(chǎng)控制卡的軟件開發(fā)
本系統(tǒng)的控制軟件就是用在C語言程序中嵌入用匯編語言開發(fā)的功能模塊的方法開發(fā)的。設(shè)計(jì)用到的工具是KEIL公司的MCS-51系列單片機(jī)集成開發(fā)環(huán)境。它的功能非常強(qiáng)大,實(shí)現(xiàn)從文本代碼編輯到生成可用于燒到目標(biāo)ROM的二進(jìn)制或者HEX格式的文件的所有功能。集合了文本編輯器、C語言編譯器、匯編編譯器、連接定位器、目標(biāo)處理器模擬仿真器以及庫文件管理器等51開發(fā)工具套件。軟件開發(fā)采用項(xiàng)目管理方式,多個(gè)模塊(多個(gè)文件、放在一個(gè)項(xiàng)目當(dāng)中,管理方便。
軟件的流程圖如圖4所示。
[align=center]

圖4 軟件流程圖[/align]
4.2 現(xiàn)場(chǎng)控制卡和網(wǎng)絡(luò)通訊卡間的通信
通過并口擴(kuò)展,系統(tǒng)采用兩個(gè)8位并口分別用作數(shù)據(jù)的輸入與輸出,并采用一個(gè)8位并口用作聯(lián)絡(luò)信息的傳送,該并口的高4位和低4位分別用于聯(lián)絡(luò)信號(hào)的輸入和輸出。通信采用的是查詢法,通過查詢聯(lián)絡(luò)信息的狀態(tài)來指導(dǎo)完成整個(gè)通信過程。這些聯(lián)絡(luò)信息分別與系統(tǒng)內(nèi)的三種內(nèi)部通信相對(duì)應(yīng),包括配置信息的傳輸、控制信息的傳輸和環(huán)境信息的傳輸。
4.2.1 配置信息的傳輸
配置信息的傳輸主要是在系統(tǒng)剛啟動(dòng)時(shí)進(jìn)行,由網(wǎng)絡(luò)通訊卡發(fā)起。首先由網(wǎng)絡(luò)通訊卡將第一個(gè)字節(jié)的配置信息輸出到網(wǎng)絡(luò)通訊卡的輸出并口上,并同時(shí)輸出“發(fā)送配置信息”(0001)的聯(lián)絡(luò)信號(hào)。數(shù)據(jù)采集卡以一定的頻率掃描聯(lián)絡(luò)信號(hào)輸入口,收到“發(fā)送配置信息”的聯(lián)絡(luò)信號(hào)后,馬上讀取相應(yīng)的數(shù)據(jù)輸入口,獲得第一個(gè)字節(jié)的配置信息,并發(fā)出“收到配置信息”(0010)的聯(lián)絡(luò)信號(hào),完成第一個(gè)字節(jié)的傳送。接著,網(wǎng)絡(luò)通訊卡與現(xiàn)場(chǎng)控制卡繼續(xù)以幾乎相同的方法傳送第二個(gè)字節(jié)的配置信息,稍有不同的只是把聯(lián)絡(luò)信號(hào)“發(fā)送配置信息”和“收到配置信息”都按位取反,即第二次通信的聯(lián)絡(luò)信號(hào)變?yōu)椤鞍l(fā)送配置信息”(1110)和“收到配置信息”(1101),直到數(shù)據(jù)傳送完畢,雙方以“傳輸結(jié)束”(1111)的聯(lián)絡(luò)信息結(jié)束本次通信。通過這種方法,網(wǎng)絡(luò)通訊卡和現(xiàn)場(chǎng)控制卡只要分別輸出一次聯(lián)絡(luò)信號(hào),就可以傳送一個(gè)字節(jié)的數(shù)據(jù),協(xié)議簡(jiǎn)單,數(shù)據(jù)傳輸快捷。
4.2.2 控制信息的傳輸
控制信息的傳輸同樣是由網(wǎng)絡(luò)通訊卡發(fā)起的。當(dāng)網(wǎng)絡(luò)通訊卡從數(shù)據(jù)采集卡上獲取到報(bào)警信息或是處于監(jiān)控中心的用戶有需求時(shí),從上位機(jī)發(fā)送控制命令以后,網(wǎng)絡(luò)通訊卡將一個(gè)字節(jié)的控制信息輸出到相應(yīng)的并口上,并通過其輸出聯(lián)絡(luò)線輸出“發(fā)送控制信息”(0100)的聯(lián)絡(luò)信息,現(xiàn)場(chǎng)控制卡收到“發(fā)送控制信息”的聯(lián)絡(luò)信息以后,馬上讀取相應(yīng)的數(shù)據(jù),并發(fā)送“收到控制信息”(1000)?,F(xiàn)場(chǎng)控制卡收到該信號(hào)以后,以“傳輸結(jié)束(1111)”結(jié)束本次通訊。
4.2.3 環(huán)境信息的傳輸
環(huán)境信息的傳輸由網(wǎng)絡(luò)通訊卡發(fā)起,并不斷地循環(huán)進(jìn)行。首先,網(wǎng)絡(luò)通訊卡將所要讀取環(huán)境信息的編號(hào)通過數(shù)據(jù)并口輸出,并輸出聯(lián)絡(luò)信號(hào)“環(huán)境信息查詢”(1100)。數(shù)據(jù)采集卡收到該信號(hào)后,通過數(shù)據(jù)輸入并口獲得網(wǎng)絡(luò)通訊卡要查詢的環(huán)境信息的通道編號(hào),把相應(yīng)的環(huán)境信息數(shù)據(jù)通過數(shù)據(jù)輸出并口輸出,同時(shí)輸出聯(lián)絡(luò)信號(hào)“環(huán)境信息送到”(1010)。網(wǎng)絡(luò)通訊卡收到該信號(hào)后,就可以繼續(xù)查詢下一個(gè)環(huán)境信息了。
4.3 監(jiān)控?cái)?shù)據(jù)庫
目前用于數(shù)據(jù)庫開發(fā)的開發(fā)環(huán)境有很多,例如:Delphi, Visual Basic, PowerBuilder和SQL Server等。隨著Visual C++的數(shù)據(jù)庫開發(fā)功能的不斷加強(qiáng),它作為一種方便易用的開發(fā)工具在實(shí)際開發(fā)中被廣泛應(yīng)用。 本系統(tǒng)監(jiān)控?cái)?shù)據(jù)庫設(shè)計(jì)便采用的是Visual C++,其界面包括系統(tǒng)登錄、軟件主界面、用戶信息管理和工作人員信息管理、環(huán)境信息和報(bào)警信息管理和監(jiān)控器配置信息管理。
5 本文作者創(chuàng)新點(diǎn)
本文實(shí)現(xiàn)了一整套比較完整的嵌入式監(jiān)控系統(tǒng)。文中介紹了整個(gè)系統(tǒng)的解決方案,現(xiàn)場(chǎng)控制卡的硬件設(shè)計(jì)、軟件設(shè)計(jì),以及現(xiàn)場(chǎng)控制卡與網(wǎng)絡(luò)通訊卡之間的通信。本系統(tǒng)與一般監(jiān)控系統(tǒng)相比,主要特點(diǎn)是現(xiàn)場(chǎng)監(jiān)控設(shè)備能直接上網(wǎng),而系統(tǒng)又利用了Ethernet:作為監(jiān)控信息的網(wǎng)絡(luò)傳輸信道,并采用了廉價(jià)的51系列單片機(jī)作為現(xiàn)場(chǎng)監(jiān)控設(shè)備的MCU,以及使用了源代碼公開的μC/OS-Ⅱ?qū)崟r(shí)內(nèi)核最為現(xiàn)場(chǎng)監(jiān)控設(shè)備的軟件平臺(tái),使系統(tǒng)具備了較高的性價(jià)比。
參考文獻(xiàn):
[1] 楊武剛. 單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航[M]. 人民郵電出版社,2004. 5
[2] 黃穎、張小飛. 網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與應(yīng)用,2003. 22
[3] 黃樂天, 謝意. 實(shí)用高精度智能恒溫加熱器系統(tǒng)設(shè)計(jì)[J]. 2005, 10-1: 36-38
[4] 孫媛、王水清. 基于以太網(wǎng)嵌入式家庭監(jiān)控網(wǎng)絡(luò)系統(tǒng)的設(shè)計(jì)[J]. 江南大學(xué)學(xué)報(bào)(自然科學(xué)版)2003. 1
[5] 周文舉. 基于單片機(jī)紅外無線通信的抄表系統(tǒng)[J].微計(jì)算機(jī)信息, 2006,2-2 : 45-47、113