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