基于RS-485總線的可擴(kuò)展局域網(wǎng)絡(luò)的研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
RS-485是在RS-422的基礎(chǔ)上發(fā)展起來的,能實(shí)現(xiàn)一點(diǎn)對多點(diǎn)的通信,也能實(shí)現(xiàn)多點(diǎn)雙向通信,但同一時(shí)刻只能有一個(gè)發(fā)送器,其余的為接收器,即一主多從的通信方式。目前市場上可供選擇的RS-485總線芯片很多,其中包括可支持128個(gè)節(jié)點(diǎn)的MAXl487和支持400個(gè)節(jié)點(diǎn)的SP485R。利用該類芯片可直接組成簡單的通信網(wǎng)絡(luò)。
RS-485收發(fā)器采用平衡發(fā)送、差分接收的方式,即在發(fā)送端將TTL信號(hào)轉(zhuǎn)換成差分信號(hào)輸出,在接收端,接收器將差分信號(hào)轉(zhuǎn)換成TTL信號(hào)。因此具有較高的共模抑制能力。同時(shí)接收器具有較高的靈敏度,能檢測低達(dá)200mV的電壓,數(shù)據(jù)傳輸可達(dá)1 200m。如降低數(shù)據(jù)傳輸速率,則通信距離可更長。當(dāng)通信速率為1 200bps時(shí),理論上通信距離可達(dá)15km。當(dāng)傳輸距離超過300m時(shí),在網(wǎng)絡(luò)的二端需接入120Ω的匹配電阻,以減少因阻抗不匹配而引起的反射,吸收噪聲,從而有效抑制噪聲干擾。MAXl487的接口電路示意圖如圖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ò)(如幾千甚至幾萬個(gè)節(jié)點(diǎn))來完成。連接在該網(wǎng)絡(luò)中的各類設(shè)備能相互通信,并且可以在一定節(jié)點(diǎn)數(shù)范圍內(nèi)根據(jù)實(shí)際需要任意擴(kuò)展,并做到即插即用。管理人員通過隨身攜帶的筆記本電腦,接入網(wǎng)絡(luò)中的任一接點(diǎn),可了解整個(gè)網(wǎng)絡(luò)的運(yùn)行情況。結(jié)合用戶應(yīng)用程序,管理人員還可獲得連接于該網(wǎng)絡(luò)上相關(guān)設(shè)備的運(yùn)行數(shù)據(jù)。
針對以上要求,局域網(wǎng)絡(luò)必須由多片具有RS-485總線的芯片連接而成。本文討論節(jié)點(diǎn)數(shù)≤32768點(diǎn)的局域網(wǎng)絡(luò),使用MAXl487作收發(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)總線競爭現(xiàn)象,使總線電子紊亂,整個(gè)網(wǎng)絡(luò)無法工作。
將一片MAXl487所能連接的128個(gè)節(jié)點(diǎn)作為一個(gè)子網(wǎng),整個(gè)局域網(wǎng)絡(luò)由若干個(gè)子網(wǎng)組成。所有節(jié)點(diǎn)不直接和用戶設(shè)備相連,而是通過一個(gè)節(jié)點(diǎn)模塊和設(shè)備連接。這是一種二端帶通信口的智能化模塊,內(nèi)帶一個(gè)單片機(jī)系統(tǒng),用于執(zhí)行局域網(wǎng)絡(luò)通信協(xié)議,負(fù)責(zé)BS-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)為例,其中的"X"為無效位
規(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)模塊通過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ò)中沒有專門的網(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)檢測到自身的地址是"00001010·×0000000"時(shí),就知道自己是0AH子網(wǎng)中的OOH節(jié)點(diǎn),并且是該子網(wǎng)中的管理者;當(dāng)檢測到自身地址是"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)注冊表,根據(jù)實(shí)際情況實(shí)時(shí)刷新。任何節(jié)點(diǎn)都可以向最高管理者取得該注冊表,以便管理人員從任一節(jié)點(diǎn)上獲得網(wǎng)絡(luò)運(yùn)行狀態(tài)。
網(wǎng)絡(luò)空閑時(shí),最高管理者不斷地向整個(gè)網(wǎng)絡(luò)發(fā)出詢問,監(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用于保存注冊表等信息。單片機(jī)的串行通信口既要完成RS-485總線的通信,又要完成由RS-232總線到設(shè)備的通信,所以必須有通信口切換功能。平時(shí)單片機(jī)的串行通信口總是與RS-485總線相連,只有當(dāng)設(shè)備需要傳輸數(shù)據(jù)時(shí)才切換到RS-232總線,所以系統(tǒng)還必須有對設(shè)備通信請求的檢測功能。限于篇幅,軟件具體編程在此不作敘述。節(jié)點(diǎn)模塊的結(jié)構(gòu)如圖4所示。
4總 結(jié)
理論上該局域網(wǎng)絡(luò)對節(jié)點(diǎn)的擴(kuò)展沒有限制,但考慮到RS-485總線通信速度的限制,因此網(wǎng)絡(luò)規(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總線通信的場合,因此實(shí)用性非常強(qiáng)。