摘? 要: 介紹了RS-485通信模式的特點(diǎn),,針對(duì)局域網(wǎng)絡(luò)設(shè)計(jì)中出現(xiàn)的技術(shù)問(wèn)題提出了一種新的基于RS-485總線的局域網(wǎng)絡(luò)設(shè)計(jì)方案,。
關(guān)鍵詞: RS-485總線? 單片機(jī)? 局域網(wǎng)絡(luò)
?
RS-485總線通信模式由于具有結(jié)構(gòu)簡(jiǎn)單,、價(jià)格低廉,、使用方便,、通信距離和數(shù)據(jù)傳輸速率適當(dāng)及可靠性較高等特點(diǎn)而被廣泛應(yīng)用于儀器儀表,、智能化傳感器集散控制,、智能化大樓,、監(jiān)控報(bào)警,、鐵路通信和電力數(shù)據(jù)采集等領(lǐng)域,。
本文將對(duì)RS-485總線模式下組成的可擴(kuò)展局域網(wǎng)絡(luò)作一探討。
1?RS-485總線通信的特點(diǎn)
RS-485是在RS-422的基礎(chǔ)上發(fā)展起來(lái)的,,能實(shí)現(xiàn)一點(diǎn)對(duì)多點(diǎn)的通信,,也能實(shí)現(xiàn)多點(diǎn)雙向通信,但同一時(shí)刻只能有一個(gè)發(fā)送器,,其余的為接收器,,即一主多從的通信方式。目前市場(chǎng)上可供選擇的RS-485總線芯片很多,,其中包括可支持128個(gè)節(jié)點(diǎn)的MAX1487和支持400個(gè)節(jié)點(diǎn)的SP485R,。利用該類芯片可直接組成簡(jiǎn)單的通信網(wǎng)絡(luò)。
RS-485收發(fā)器采用平衡發(fā)送,、差分接收的方式,,即在發(fā)送端將TTL信號(hào)轉(zhuǎn)換成差分信號(hào)輸出,在接收端,,接收器將差分信號(hào)轉(zhuǎn)換成TTL信號(hào),。因此具有較高的共模抑制能力。同時(shí)接收器具有較高的靈敏度,,能檢測(cè)低達(dá)200mV的電壓,,數(shù)據(jù)傳輸可達(dá)1 200m。如降低數(shù)據(jù)傳輸速率,,則通信距離可更長(zhǎng),。當(dāng)通信速率為1 200bps時(shí),理論上通信距離可達(dá)15km,。當(dāng)傳輸距離超過(guò)300m時(shí),,在網(wǎng)絡(luò)的二端需接入120Ω的匹配電阻,以減少因阻抗不匹配而引起的反射,,吸收噪聲,,從而有效抑制噪聲干擾。MAX1487的接口電路示意圖如圖1所示,。
?
?
2?網(wǎng)絡(luò)結(jié)構(gòu)及實(shí)施方案
在實(shí)際應(yīng)用中,,RS-485總線芯片本身所擁有的節(jié)點(diǎn)數(shù)已不能滿足需求,而往往需要一個(gè)接點(diǎn)龐大的復(fù)雜局域網(wǎng)絡(luò)(如幾千甚至幾萬(wàn)個(gè)節(jié)點(diǎn))來(lái)完成,。連接在該網(wǎng)絡(luò)中的各類設(shè)備能相互通信,,并且可以在一定節(jié)點(diǎn)數(shù)范圍內(nèi)根據(jù)實(shí)際需要任意擴(kuò)展,并做到即插即用,。管理人員通過(guò)隨身攜帶的筆記本電腦,,接入網(wǎng)絡(luò)中的任一接點(diǎn),可了解整個(gè)網(wǎng)絡(luò)的運(yùn)行情況,。結(jié)合用戶應(yīng)用程序,,管理人員還可獲得連接于該網(wǎng)絡(luò)上相關(guān)設(shè)備的運(yùn)行數(shù)據(jù),。
針對(duì)以上要求,局域網(wǎng)絡(luò)必須由多片具有RS-485總線的芯片連接而成,。本文討論節(jié)點(diǎn)數(shù)≤32768點(diǎn)的局域網(wǎng)絡(luò),,使用MAX1487作收發(fā)器。根據(jù)RS-485總線的特點(diǎn),,在任一時(shí)刻,,整個(gè)網(wǎng)絡(luò)只允許有一個(gè)發(fā)送器,其余的必須處于接收狀態(tài),。而接入網(wǎng)絡(luò)中的設(shè)備隨時(shí)可能有多個(gè)設(shè)備同時(shí)傳輸數(shù)據(jù)的要求,,如不進(jìn)行協(xié)調(diào),就會(huì)出現(xiàn)總線競(jìng)爭(zhēng)現(xiàn)象,,使總線電平紊亂,,整個(gè)網(wǎng)絡(luò)無(wú)法工作。
將一片MAX1487所能連接的128個(gè)節(jié)點(diǎn)作為一個(gè)子網(wǎng),,整個(gè)局域網(wǎng)絡(luò)由若干個(gè)子網(wǎng)組成,。所有節(jié)點(diǎn)不直接和用戶設(shè)備相連,而是通過(guò)一個(gè)節(jié)點(diǎn)模塊和設(shè)備連接,。這是一種二端帶通信口的智能化模塊,,內(nèi)帶一個(gè)單片機(jī)系統(tǒng),用于執(zhí)行局域網(wǎng)絡(luò)通信協(xié)議,,負(fù)責(zé)RS-485總線和設(shè)備間的通信,,同時(shí)參與整個(gè)局域網(wǎng)絡(luò)的通信協(xié)調(diào)工作。模塊的一端為RS-485總線,,用于連接網(wǎng)絡(luò),,另一端是RS-232總線(或TTL電平)與用戶設(shè)備、儀器儀表或智能傳感器連接,。
子網(wǎng)中每個(gè)節(jié)點(diǎn)模塊都有自己的地址,用1個(gè)字節(jié)表示,,即00H~7FH,。而在整個(gè)局域網(wǎng)絡(luò)中,每個(gè)子網(wǎng)也有自己的子網(wǎng)地址,,也用1個(gè)字節(jié)表示,,即00H~FFH。這樣,,在整個(gè)局域網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)就有自己惟一的用2個(gè)字節(jié)的二進(jìn)制數(shù)表示的地址,,類似Internet中的IP地址,其地址格式如圖2所示,。以00H子網(wǎng)05H節(jié)點(diǎn)為例,,其中的“×”為無(wú)效位,。
?
?
規(guī)定每個(gè)子網(wǎng)中的地址為00H和7FH的2個(gè)節(jié)點(diǎn)為特殊節(jié)點(diǎn)。地址為00H的節(jié)點(diǎn)是該子網(wǎng)的管理者,,協(xié)調(diào)子網(wǎng)中的通信,,同時(shí)也是該子網(wǎng)的一個(gè)數(shù)據(jù)出入口,和上一個(gè)地址為7FH的節(jié)點(diǎn)連接,。地址為7FH的節(jié)點(diǎn)為該子網(wǎng)的另一個(gè)數(shù)據(jù)出入口,,負(fù)責(zé)和下一個(gè)子網(wǎng)中地址為00H的節(jié)點(diǎn)連接。這表示子網(wǎng)之間是由2個(gè)背靠背的節(jié)點(diǎn)模塊通過(guò)RS-232總線相連的,。
這2個(gè)背靠背的節(jié)點(diǎn)模塊又是子網(wǎng)之間的中繼站,。同時(shí)還規(guī)定00H子網(wǎng)的00H節(jié)點(diǎn),即地址為“00000000·00000000”的節(jié)點(diǎn)為整個(gè)網(wǎng)絡(luò)的最高管理者,。局域網(wǎng)絡(luò)宜采用拓?fù)浣Y(jié)構(gòu),,以提高網(wǎng)絡(luò)運(yùn)行效率,而鏈?zhǔn)浇Y(jié)構(gòu)可增加網(wǎng)絡(luò)的通信距離,。RS-485總線構(gòu)成的局域網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖3所示(以00H,、01H 2個(gè)子網(wǎng)為例)。
?
3?節(jié)點(diǎn)模塊的設(shè)計(jì)
該局域網(wǎng)絡(luò)的關(guān)鍵是節(jié)點(diǎn)模塊的設(shè)計(jì),。這也是本局域網(wǎng)絡(luò)的特色所在,,其中軟件設(shè)計(jì)至關(guān)重要。節(jié)點(diǎn)模塊主要完成網(wǎng)絡(luò)的管理和通信,。為了使模塊具有通用性,,所有節(jié)點(diǎn)模塊具有相同的結(jié)構(gòu)和軟件,只要按照網(wǎng)絡(luò)協(xié)議選擇好正確的地址,,任一模塊都可相互替換,。網(wǎng)絡(luò)中沒(méi)有專門(mén)的網(wǎng)絡(luò)服務(wù)器,任意一個(gè)節(jié)點(diǎn)模塊都具有服務(wù)器的功能,。哪個(gè)節(jié)點(diǎn)模塊充當(dāng)服務(wù)器是由其自身的地址決定的,,因此節(jié)點(diǎn)模塊軟件應(yīng)該具有自動(dòng)識(shí)別地址的功能,以確定自己在網(wǎng)絡(luò)中的位置和角色,。例如,,當(dāng)檢測(cè)到自身的地址是“00001010·×0000000”時(shí),就知道自己是0AH子網(wǎng)中的00H節(jié)點(diǎn),,并且是該子網(wǎng)中的管理者,;當(dāng)檢測(cè)到自身地址是“00000000·×0000000”時(shí),就知道自己是整個(gè)局域網(wǎng)絡(luò)的最高管理者,。節(jié)點(diǎn)模塊地址可由用戶自行設(shè)定,。
為了實(shí)現(xiàn)即插即用功能,最高管理者必須定時(shí)向整個(gè)網(wǎng)絡(luò)廣播,以便收集網(wǎng)絡(luò)的運(yùn)行情況(如是否有新節(jié)點(diǎn)加入,,是否有節(jié)點(diǎn)從網(wǎng)絡(luò)上退出等)并形成網(wǎng)絡(luò)狀態(tài)注冊(cè)表,,根據(jù)實(shí)際情況實(shí)時(shí)刷新。任何節(jié)點(diǎn)都可以向最高管理者取得該注冊(cè)表,,以便管理人員從任一節(jié)點(diǎn)上獲得網(wǎng)絡(luò)運(yùn)行狀態(tài),。
網(wǎng)絡(luò)空閑時(shí),最高管理者不斷地向整個(gè)網(wǎng)絡(luò)發(fā)出詢問(wèn),,監(jiān)視是否有數(shù)據(jù)通信要求,。子網(wǎng)內(nèi)部的數(shù)據(jù)通信由該子網(wǎng)的管理者(節(jié)點(diǎn)地址為00H)協(xié)調(diào),只有跨子網(wǎng)傳輸數(shù)據(jù)時(shí),,最高管理者(子網(wǎng)地址為00H,,節(jié)點(diǎn)地址也是00H)才會(huì)干預(yù)。節(jié)點(diǎn)模塊中有8KB的SRAM作為數(shù)據(jù)緩沖區(qū),,另外有2KB的E2PROM用于保存注冊(cè)表等信息,。單片機(jī)的串行通信口既要完成RS-485總線的通信,又要完成由RS-232總線到設(shè)備的通信,,所以必須有通信口切換功能,。平時(shí)單片機(jī)的串行通信口總是與RS-485總線相連,只有當(dāng)設(shè)備需要傳輸數(shù)據(jù)時(shí)才切換到RS-232總線,,所以系統(tǒng)還必須有對(duì)設(shè)備通信請(qǐng)求的檢測(cè)功能,。限于篇幅,軟件具體編程在此不作敘述,。節(jié)點(diǎn)模塊的結(jié)構(gòu)如圖4所示,。
?
?
4? 總? 結(jié)
理論上該局域網(wǎng)絡(luò)對(duì)節(jié)點(diǎn)的擴(kuò)展沒(méi)有限制,但考慮到RS-485總線通信速度的限制,,因此網(wǎng)絡(luò)規(guī)模不宜過(guò)大,。由前面的結(jié)構(gòu)分析可知,網(wǎng)絡(luò)的可靠性取決于子網(wǎng),。由于各子網(wǎng)間不會(huì)產(chǎn)生串?dāng)_,,因此網(wǎng)絡(luò)的可靠性不會(huì)隨網(wǎng)絡(luò)的規(guī)模擴(kuò)大而降低。這是一個(gè)通用的局域網(wǎng)絡(luò),,適合任何需要RS-485總線通信的場(chǎng)合,,因此實(shí)用性非常強(qiáng)。
參考文獻(xiàn)
1 余濟(jì)臨.用RS-485構(gòu)成遠(yuǎn)程分布式數(shù)據(jù)采集與控制網(wǎng)絡(luò).電子技術(shù),,1999,;(4)
2 陳曦,,曾禮.基于智能模塊的RS-485通信協(xié)議轉(zhuǎn)換路由器.自動(dòng)化儀表,,2002;(3)
3?鄒麗新,翁桂榮.單片微型計(jì)算機(jī)原理.蘇州:蘇州大學(xué)出版社,,2001