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