摘 要:介紹了一種基于RS-485總線的溫濕度監(jiān)控系統(tǒng)。給出了其整體結(jié)構(gòu)、硬件設(shè)計(jì)、系統(tǒng)通信網(wǎng)絡(luò)方案以及系統(tǒng)軟件的開(kāi)發(fā)和實(shí)現(xiàn)。該監(jiān)控系統(tǒng)可方便地應(yīng)用于大多數(shù)溫度和濕度控制場(chǎng)合。經(jīng)實(shí)際驗(yàn)證,系統(tǒng)的穩(wěn)定性好,精度高,符合監(jiān)控要求。
關(guān)鍵詞:RS-485總線;溫濕度;監(jiān)控系統(tǒng);單片機(jī); 串行通信
Abstract: The paper presents a temperature-humidity monitoring system based on RS-485 bus. The development and realization of the system structure, hardware design, communication network and the software design of the monitoring system are introduced. The system which can apply to most of temperature-humidity control occasions easily has good stability and accuracy under experiments.
Key Words: RS-485 Bus; Temperature-Humidity; Monitoring System; Microcontroller;Serial Communication
1 概述
環(huán)境條件中的溫濕度指標(biāo)是許多工作場(chǎng)合中的重要參數(shù),不論是倉(cāng)庫(kù)管理、圖書(shū)保存還是工業(yè)測(cè)量與計(jì)量檢定,都需要符合操作規(guī)定的溫濕度環(huán)境條件。而溫濕度也是最不容易保障的指標(biāo),針對(duì)這一情況,研制可靠且實(shí)用的溫濕度監(jiān)控系統(tǒng)顯得非常重要。監(jiān)控系統(tǒng)以RS-485總線協(xié)議為基礎(chǔ)組成分布式網(wǎng)絡(luò)結(jié)構(gòu),采用PC機(jī)與單片機(jī)組成的多機(jī)系統(tǒng)完成測(cè)量與控制任務(wù)。
2 系統(tǒng)硬件結(jié)構(gòu)及工作原理
2.1網(wǎng)絡(luò)監(jiān)控系統(tǒng)結(jié)構(gòu)
[align=center]
圖1 系統(tǒng)結(jié)構(gòu)原理圖[/align]
系統(tǒng)結(jié)構(gòu)原理圖如圖1。系統(tǒng)采用兩級(jí)主從式總線型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。由1臺(tái)PC機(jī)(作為上位機(jī))、若干臺(tái)AT89S52單片機(jī)(作為下位機(jī))和RS-485總線通信網(wǎng)絡(luò)組成。整個(gè)系統(tǒng)在監(jiān)控系統(tǒng)管理軟件的控制下,統(tǒng)一協(xié)調(diào)工作,完成設(shè)計(jì)功能。
2.2 主從式通信網(wǎng)絡(luò)
監(jiān)控系統(tǒng)中網(wǎng)絡(luò)通信采用RS-485串行總線連接,串行通信具有傳輸距離長(zhǎng)、連接簡(jiǎn)單、使用靈活方便、數(shù)據(jù)傳輸可靠性高的特點(diǎn),在工業(yè)監(jiān)控、數(shù)據(jù)采集和實(shí)時(shí)控制系統(tǒng)中得到了廣泛應(yīng)用。其中采用差分通信方式進(jìn)行信號(hào)發(fā)送與接收的RS-485(EIA-485Standard)總線協(xié)議較RS-232C協(xié)議提高了抗共模干擾能力和傳輸速率,擴(kuò)大了傳輸距離,更適合作為現(xiàn)場(chǎng)總線應(yīng)用于復(fù)雜的環(huán)境中的工業(yè)控制和實(shí)時(shí)監(jiān)控系統(tǒng)中[1]。
下位現(xiàn)場(chǎng)數(shù)據(jù)采集與控制單元掛接于同一條數(shù)據(jù)通信總線,總線為各現(xiàn)場(chǎng)單元共享,為避免總線通信的競(jìng)爭(zhēng)與沖突,系統(tǒng)網(wǎng)絡(luò)通信采用主從式和廣播式通信控制方法。由主控微機(jī)決定一次通信過(guò)程的啟動(dòng)和終止,通過(guò)給需要通信的現(xiàn)場(chǎng)單元分配總線通信使用權(quán)的方法來(lái)實(shí)現(xiàn)與下位單片機(jī)與主控微機(jī)之間的網(wǎng)絡(luò)通信。網(wǎng)絡(luò)中的下位單片機(jī)請(qǐng)求通信時(shí)必須等待主控微機(jī)將總線使用權(quán)分配給它后才能收發(fā)數(shù)據(jù)[2]。采用主從通信控制方法雖然速度稍慢,但由于現(xiàn)場(chǎng)單片機(jī)與主控微機(jī)間的信息交換不是特別頻繁,因此對(duì)于本監(jiān)控系統(tǒng)是適用的。
PC主控微機(jī)與各現(xiàn)場(chǎng)單元單片機(jī)之間所采用的通信規(guī)約是自定義的、非標(biāo)準(zhǔn)的、比較簡(jiǎn)單的格式。主控PC微機(jī)通過(guò)RS-232C串口向總線通信協(xié)議轉(zhuǎn)換控制器發(fā)送命令幀信息,總線控制器接口電路負(fù)責(zé)RS-232C電平和RS-485電平之間的相互轉(zhuǎn)換,轉(zhuǎn)發(fā)此通信幀向RS-485總線網(wǎng)絡(luò)廣播。在通信幀中包含主控微機(jī)所要求的下位現(xiàn)場(chǎng)單元編號(hào),所有下位現(xiàn)場(chǎng)單元單片機(jī)都收聽(tīng)廣播,在收到廣播幀后,進(jìn)行編號(hào)對(duì)比操作,各下位單片機(jī)把收到的編號(hào)與自己的編號(hào)進(jìn)行比較,編號(hào)相同的下位單片機(jī)控制器為被選中的下位機(jī),對(duì)接收到的幀信息進(jìn)行處理,其余下位單片機(jī)控制器皆為未選中的下位機(jī),需要丟棄收到的幀信息并繼續(xù)進(jìn)行網(wǎng)絡(luò)偵聽(tīng)工作[3]。同樣,下位現(xiàn)場(chǎng)單元單片機(jī)向主控微機(jī)發(fā)送信息幀時(shí),由總線通信協(xié)議轉(zhuǎn)換控制器轉(zhuǎn)換為RS-232C通信協(xié)議電平向主控微機(jī)轉(zhuǎn)發(fā)。在設(shè)計(jì)實(shí)驗(yàn)中,監(jiān)控系統(tǒng)在串行通信波特率為9600bit/s,無(wú)奇偶校驗(yàn)位,8位數(shù)據(jù)位,1位停止位的設(shè)置下通信正常,沒(méi)有發(fā)生丟幀或錯(cuò)幀的現(xiàn)象。
2.3 下位機(jī)數(shù)據(jù)采集與控制單元
下位機(jī)是一個(gè)以AT89S52單片機(jī)為核心的數(shù)據(jù)采集與控制單元。AT89S52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),功能強(qiáng)大的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。AT89S52具有如下資源:40個(gè)引腳,8k Bytes Flash片內(nèi)程序存儲(chǔ)(In system programmable可反復(fù)擦寫(xiě)1000次),256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門(mén)狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器??赏ㄟ^(guò)軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,直至外中斷激活或硬件復(fù)位[4]。下位機(jī)分別接有8路溫度濕度傳感器,進(jìn)行溫度濕度檢測(cè),并根據(jù)各路的平均溫度和平均濕度,控制除濕機(jī)、空調(diào)機(jī)或其他設(shè)施,以使環(huán)境溫度與濕度控制在特定的范圍內(nèi),并輪流顯示平均溫度、濕度值。下位機(jī)還設(shè)有煙霧、火光和熱釋電紅外傳感器及其相關(guān)電路 ,組成防火、防盜報(bào)警系統(tǒng)。下位單片機(jī)通過(guò)TTL/RS-485通信接口電路與總線網(wǎng)絡(luò)相連接構(gòu)成半雙工主從式串行通信網(wǎng)絡(luò),實(shí)現(xiàn)下位機(jī)通過(guò)串行口與上位機(jī)交換數(shù)據(jù)。下位機(jī)是一個(gè)相對(duì)獨(dú)立的智能型區(qū)域數(shù)據(jù)測(cè)量與控制子系統(tǒng),當(dāng)監(jiān)控主機(jī)與下位單片機(jī)之間的通信發(fā)生故障時(shí),各下位機(jī)仍可獨(dú)立完成相關(guān)區(qū)域的數(shù)據(jù)采集、告警和控制功能。
各溫度和濕度傳感器分別將檢測(cè)到的溫度和濕度物理量轉(zhuǎn)換成電信號(hào),經(jīng)各自的低噪聲放大器放大、模數(shù)轉(zhuǎn)換器(A/ D)后,送到AT89S52單片機(jī)進(jìn)行數(shù)據(jù)分析處理。下位機(jī)可接受上位機(jī)的訪問(wèn),根據(jù)需要將溫度、濕度數(shù)據(jù)實(shí)時(shí)傳遞給上位機(jī),由上位機(jī)對(duì)各倉(cāng)庫(kù)的溫濕度數(shù)據(jù)進(jìn)行記錄并做相應(yīng)處理。由于不同武器裝備對(duì)環(huán)境溫、濕度要求不同,用戶可通過(guò)外加鍵盤(pán),在所需要的范圍內(nèi)隨意設(shè)置系統(tǒng)監(jiān)控的溫、濕度指標(biāo),以便系統(tǒng)適應(yīng)不同的需要。
3 軟件設(shè)計(jì)
3.1網(wǎng)絡(luò)監(jiān)控系統(tǒng)軟件的設(shè)計(jì)與開(kāi)發(fā)
網(wǎng)絡(luò)監(jiān)控系統(tǒng)軟件的設(shè)計(jì)與開(kāi)發(fā)采用基于面向?qū)ο蟪绦蛟O(shè)計(jì)思想和關(guān)系數(shù)據(jù)庫(kù)技術(shù),在Windows9x/2000/XP系統(tǒng)平臺(tái)上采用Borland C++ Builder編程語(yǔ)言開(kāi)發(fā)而成。監(jiān)控系統(tǒng)軟件完成的主要任務(wù)和功能有:系統(tǒng)組態(tài)、串行通信管理、圖形顯示管理、數(shù)據(jù)存儲(chǔ)、報(bào)表打印、統(tǒng)計(jì)分析、異常處理等。倉(cāng)儲(chǔ)網(wǎng)絡(luò)監(jiān)控系統(tǒng)的軟件設(shè)計(jì)功能較多而復(fù)雜,而且層次比較多。因此在設(shè)計(jì)上首先基于Windows的多任務(wù)處理機(jī)制,前臺(tái)完成命令響應(yīng)、各模塊調(diào)用以及系統(tǒng)工作狀態(tài)的動(dòng)態(tài)實(shí)時(shí)圖形化顯示等,后臺(tái)負(fù)責(zé)實(shí)時(shí)監(jiān)視接收各下位現(xiàn)場(chǎng)單元發(fā)送的數(shù)據(jù)、定時(shí)巡檢或隨機(jī)抽檢工作現(xiàn)場(chǎng)的單片機(jī)控制器、進(jìn)行異常處理和報(bào)警處理等;在編程技術(shù)上采用VCL組件開(kāi)發(fā)技術(shù),應(yīng)用多線程技術(shù)進(jìn)行多任務(wù)處理;其次,采用模塊化程序設(shè)計(jì),把一個(gè)大的程序劃分為若干個(gè)小的功能模塊,每個(gè)模塊之間既相互獨(dú)立又相互聯(lián)系,這樣可以提高軟件的可維護(hù)性、可讀性、可靠性和高效性[2]。
3.2 下位機(jī)程序設(shè)計(jì)[5]
下位機(jī)主程序流程圖如圖2所示。包括對(duì)系統(tǒng)進(jìn)行初始化處理;判斷中斷方式(含優(yōu)先級(jí))設(shè)置;串行口工作方式設(shè)置;系統(tǒng)各種指標(biāo)的裝入;鍵盤(pán)初始化;控制信號(hào)初始化以及建立數(shù)據(jù)指針、通道初值并啟動(dòng) A/ D轉(zhuǎn)換。
[align=center]
圖2 下位機(jī)主程序流程圖[/align]
以下僅給出下位機(jī)處理呼叫應(yīng)答時(shí)的部分程序:
# define ADD0 x01
…
sbit tr=p1.3;
void service serial(void) interrupt4using1
?。?
uchar rs;
RI=0;
ES=0; //關(guān)串行中斷
tr=0;
rs=SBUF;
…
?。?
if(rs!=ADD) //不是呼叫本機(jī)
{
ES=1;
if(P3.3=0 ) //A/D轉(zhuǎn)換請(qǐng)求中斷
…
Return;
?。?
SM2 =0;
tr=1;
SBUF=ADD; //應(yīng)答
While(TI=0);
TI=0;
tr=0; //執(zhí)行通信命令
…
4 結(jié)語(yǔ)
實(shí)踐證明,基于RS-485總線協(xié)議的網(wǎng)絡(luò)監(jiān)控系統(tǒng)依托集中管理、分散控制的現(xiàn)代控制技術(shù),組成監(jiān)控系統(tǒng)的硬件和軟件采用標(biāo)準(zhǔn)化、模塊化和系統(tǒng)化的設(shè)計(jì),系統(tǒng)的配置具有通用性強(qiáng)、系統(tǒng)組態(tài)靈活、控制功能完善以及系統(tǒng)安裝、調(diào)試和維修簡(jiǎn)便等特點(diǎn),并且還可以通過(guò)智能通信接口或標(biāo)準(zhǔn)的通信網(wǎng)絡(luò)協(xié)議和其它監(jiān)控系統(tǒng),如門(mén)禁管理子系統(tǒng)相交聯(lián)通信,組成功能更完善的自動(dòng)化網(wǎng)絡(luò)管理系統(tǒng)。
參考文獻(xiàn)
[1] 邱公偉,趙祥元,巫淑萍.實(shí)時(shí)控制與智能儀表多微機(jī)系統(tǒng)的通信技術(shù)[M].北京:清華大學(xué)出版社,1996
[2] 周海峰,趙春宇,陳大躍.基于RS-485的種子處理成套設(shè)備的網(wǎng)絡(luò)控制設(shè)計(jì)[J].測(cè)控技術(shù),2004,23(12):48-49
[3] 韓世進(jìn),張樂(lè)年.基于RS-485的多路數(shù)據(jù)采集系統(tǒng)[J].現(xiàn)代電子技術(shù),2003(11):14-15
[4] 孫育才,王榮興,孫華芳. ATMEL新型AT89S52系列單片機(jī)及其應(yīng)用[M].北京:清華大學(xué)出版社,2005
[5] 李華,孫曉民,李紅青,等.MCS-51系列單片機(jī)實(shí)用接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1993