基于485總線的溫度監(jiān)控系統(tǒng)
引言
RS一485總線由于平衡差分傳輸?shù)奶匦?,具有抗干擾能力強(qiáng),傳輸距離遠(yuǎn)、有較強(qiáng)的級連的能力。能實(shí)現(xiàn)多站遠(yuǎn)距離通信,組網(wǎng)方便,成本低廉,因此在工業(yè)控制領(lǐng)域得到廣泛應(yīng)用。
本系統(tǒng)是基于RS一485總線的遠(yuǎn)程多路溫度監(jiān)測、控制系統(tǒng),上位機(jī)是一臺PC,下位機(jī)是多個(gè)以AT98S51為控制器的溫度傳感器。工作時(shí),下位機(jī)會(huì)向上位機(jī)發(fā)出本機(jī)地址和詢問預(yù)置溫度的請求。上位機(jī)獲得下位機(jī)地址后,就知道那些地址的下位機(jī)已啟動(dòng)并根據(jù)請求把相應(yīng)的預(yù)置溫度發(fā)給下位機(jī),此后每隔一定時(shí)間逐一詢問已啟動(dòng)的下位機(jī)測定的溫度信息,獲得溫度值后存入數(shù)據(jù)庫并實(shí)時(shí)顯示當(dāng)前各路傳感器測定溫度,當(dāng)溫度過高時(shí),會(huì)告警提示。下位機(jī)獲得預(yù)置溫度后,開始對傳感器的數(shù)據(jù)采集和溫度測量。當(dāng)溫度低于預(yù)置溫度時(shí),接通加熱器加熱溫度,溫度過高時(shí),接通制冷設(shè)備加速降溫,同時(shí)把溫度信息傳回上位機(jī),溫度超出范圍后,還會(huì)以蜂鳴器報(bào)警。上位機(jī)接收下位機(jī)的測量溫度后存入數(shù)據(jù)庫,并實(shí)時(shí)顯示,系統(tǒng)還具備數(shù)據(jù)庫管理、溫度變化曲線繪制等功能。當(dāng)下位機(jī)掉電重啟后,會(huì)向上位機(jī)重新問詢獲得掉電前的預(yù)置溫度。 溫度監(jiān)控系統(tǒng)由傳感器電路、信號調(diào)整電路、A/D采樣電路、控制電路、監(jiān)控主機(jī)組成?;竟ぷ髟硎牵簜鞲衅麟娐穼⒏惺艿降臏囟刃盘栆噪妷盒问捷敵?,經(jīng)調(diào)整電路變換到TTL電平、由A/D采樣后將數(shù)字量送給單片機(jī)控制電路,單片機(jī)根據(jù)開機(jī)時(shí)上位機(jī)傳來的設(shè)定溫度判斷作何種控制,如溫度未到設(shè)定溫度,經(jīng)驅(qū)動(dòng)控制繼電器閉合接通加熱器,如溫度過高則接通制冷設(shè)備加速降溫。單片機(jī)還將所測溫度在數(shù)碼管上顯示,并在上位機(jī)詢問時(shí)把測量溫度送到上位機(jī)入庫。系統(tǒng)框圖如下圖1。
系統(tǒng)實(shí)現(xiàn)
硬件設(shè)計(jì)
AT89S51是ATMEL公司的可在線編程的單片機(jī),它價(jià)格低廉,且支持在系統(tǒng)編程(ISP),方便設(shè)計(jì)者開發(fā)調(diào)試。溫度傳感器選用NS公司生產(chǎn)的L=M35,它具有很高的工作精度和較好的線性工作范圍,測溫范圍為一55℃~+150℃,完全適用于一般的測溫場合。其輸出電壓與攝氏溫度線性成正比,無需外部校準(zhǔn)即可提供1/4℃的測量精度。信號調(diào)整電路將傳感器電路輸出的變化范圍為2V左右的直流電壓,調(diào)整為TTL電平,以便與A/D兼容。由于單片機(jī)IO口有限,在對測溫實(shí)時(shí)性要求不是太高的情況下,A/D變換采用8位串行A/D轉(zhuǎn)換器ADC0832,它與單片機(jī)的IO連線只有三根,減少了IO占用量。四個(gè)數(shù)碼管的數(shù)據(jù)端都接到單片機(jī)P1口,控制端由P2[3..0]控制,利用定時(shí)器中斷觸發(fā),每次只接通一個(gè)數(shù)碼管,顯示相應(yīng)數(shù)值,利用分時(shí)顯示在數(shù)碼管上顯示溫度值。當(dāng)溫度變化時(shí),A/D采集調(diào)整電路輸出電壓值,送單片機(jī),單片機(jī)根據(jù)采樣值判定溫度,通過數(shù)碼管顯示溫度值并回饋上位機(jī)。原理圖如圖2所示。
軟件設(shè)計(jì)
下位機(jī)軟件設(shè)計(jì)
下位機(jī)的軟件是在Keil uVisiml2下,使用C語言開發(fā)的。下位機(jī)的軟件設(shè)計(jì)中,主要解決三個(gè)問題:一是ADC0832的控制位寫入。根據(jù)數(shù)據(jù)手冊,在時(shí)鐘上升沿寫入配置字即可,但按此方法始終不能正確讀出數(shù)據(jù),后來經(jīng)過試驗(yàn),在寫入配置字的每一位后,還要在負(fù)跳變前把數(shù)據(jù)翻轉(zhuǎn),配置字才能正確寫入。二是數(shù)碼管上溫度值的顯示。最后采用中斷方案,每隔10ms進(jìn)入中斷程序,循環(huán)選通各個(gè)數(shù)碼管,分時(shí)顯示對應(yīng)的數(shù)字值。三是A/D采樣數(shù)據(jù)的處理,為避免因干擾而造成A/D采樣數(shù)據(jù)不穩(wěn)定,這里采用軟件濾波的方法以濾除可能的尖峰干擾。方法是連續(xù)采樣七次,去掉最高值和最低值,其余五次取平均值來獲得A/D采樣的數(shù)字量。
經(jīng)測量,0V對應(yīng)的溫度為0℃,,5V時(shí)對應(yīng)的溫度為1 25℃,則比例因子K=0.04V/℃。每個(gè)數(shù)字量對應(yīng)的電壓值為20mV,則數(shù)字量變化與溫度變化比例關(guān)系K1=2數(shù)字量/℃,利用此比例因子就可由數(shù)字量得到當(dāng)前溫度。
上位機(jī)軟件設(shè)計(jì)
本系統(tǒng)為主從式監(jiān)控系統(tǒng),主機(jī)(即上位機(jī))在向下位機(jī)發(fā)預(yù)置溫度啟動(dòng)下位機(jī)后,輪詢不同地址碼的從機(jī),獲得溫度值,存入數(shù)據(jù)庫并在主界面顯示。從機(jī)接收到主機(jī)預(yù)置溫度后啟動(dòng),每次主機(jī)詢問溫度值時(shí)回送測量溫度值。如出現(xiàn)掉電后重啟的情況,從機(jī)向主機(jī)發(fā)出重置請求,要求主機(jī)重發(fā)預(yù)置溫度。上位機(jī)的通信軟件開發(fā)采用Borland公司的C++Builder5.O,它的集成RAD開發(fā)環(huán)境可以幫助開發(fā)人員快速高效地開發(fā)出高質(zhì)量的程序。在C++Builder中對串口進(jìn)行編程可以使用Mscomm控件加快開發(fā)進(jìn)度。它是一個(gè)ActiveX組件,不在C++Builder。安裝中提供,可以在裝有VC6.0的PC上獲得,拷貝到本機(jī)上注冊后,在C++ B u il d e r下,先是在菜單的Compotlent選項(xiàng)中導(dǎo)入ActiveX控件,再Install Packages后就可以在ActiveX面板中看到并使用它了。
數(shù)據(jù)庫采用微軟的ACC:ESS數(shù)據(jù)庫,使用ADO數(shù)據(jù)引擎;C++Builder在ADO面板中提供了完備的ADO開發(fā)控件,實(shí)現(xiàn)了通過鼠標(biāo)操作就能實(shí)現(xiàn)連接數(shù)據(jù)庫、編輯數(shù)據(jù)內(nèi)容、顯示數(shù)據(jù)等一些基本數(shù)據(jù)庫操作功能。程序還可以繪制溫度變化歷史曲線便于操作員管理。
總線通信格式設(shè)置
上位機(jī)和下位機(jī)之間的串行通信采用RS一485標(biāo)準(zhǔn)接口,PC端接一個(gè)RS232/485的轉(zhuǎn)換器,就實(shí)現(xiàn)RS485總線控制了。在通信頻率1200bps的情況下,有效通信距離為1.2km。由于有多個(gè)從設(shè)備并聯(lián)在485總線上,所以要制定嚴(yán)格的通信格式,表1是用到的通信協(xié)議。
結(jié)語
筆者設(shè)計(jì)了一種基于RS485總線的溫控系統(tǒng)。此系統(tǒng)投資少,架設(shè)簡單、可擴(kuò)展性強(qiáng),大大減輕管理者的負(fù)擔(dān),實(shí)現(xiàn)了工業(yè)控制自動(dòng)化。目前在多個(gè)場所得到了具體應(yīng)用,其測溫精度在0.5℃以內(nèi),系統(tǒng)工作可靠穩(wěn)定,無通信故障。
評論