1. 程式人生 > >工程師詳解串列埠:RS-232、RS-422、RS-485之間的區別

工程師詳解串列埠:RS-232、RS-422、RS-485之間的區別

串列埠通訊是電子工程師面對的最基本的一個通訊方式,RS-232是其中最簡單的一種。然而,很多初學者往往搞不清楚UART和RS-232、RS-422、RS-485的聯絡和區別,本文將談談這幾個概念的理解,幫助大家理清它們之間的關係。

通訊問題,和交通問題一樣,也有高速、低速、擁堵、中斷等等各種情況。如果把串列埠通訊比做交通,UART比作車站,那麼一幀的資料就好比汽車。汽車跑在路上,要遵守交通規則。如果是市內,一般限速30、40,而高速公路則可以到120。而汽車走什麼路,限速多少,就要看協議怎麼規定了。常見的串列埠協議有RS-232、RS-422、RS-485等,他們之間有何細微差別?下面我們就一起來探討一下。

一、UART是什麼

UART是通用非同步收發傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種非同步收發傳輸器,是裝置間進行非同步通訊的關鍵模組。UART負責處理資料匯流排和序列口之間的串/並、並/串轉換,並規定了幀格式;通訊雙方只要採用相同的幀格式和波特率,就能在未共享時鐘訊號的情況下,僅用兩根訊號線(Rx 和Tx)就可以完成通訊過程,因此也稱為非同步序列通訊。

若加入一個合適的電平轉換器,如SP3232E、SP3485,UART 還能用於RS-232、RS-485 通訊,或與計算機的埠連線。UART 應用非常廣泛,手機、工業控制、PC 等應用中都要用到UART。

UART使用的是 非同步,序列通訊。

序列通訊是指利用一條傳輸線將資料一位位地順序傳送。特點是通訊線路簡單,利用簡單的線纜就可實現通訊,降低成本,適用於遠距離通訊,但傳輸速度慢的應用場合。

非同步通訊以一個字元為傳輸單位,通訊中兩個字元間的時間間隔多少是不固定的,然而在同一個字元中的兩個相鄰位間的時間間隔是固定的。

資料傳送速率用波特率來表示,即每秒鐘傳送的二進位制位數。例如資料傳送速率為120字元/秒,而每一個字元為10位(1個起始位,7個數據位,1個校驗位,1個結束位),則其傳送的波特率為10×120=1200字元/秒=1200波特。

資料通訊格式如下圖:

其中各位的意義如下:

起始位:先發出一個邏輯”0”訊號,表示傳輸字元的開始。資料位:可以是5~8位邏輯”0”或”1”。如ASCII碼(7位),擴充套件BCD碼(8位)。小端傳輸校驗位:資料位加上這一位後,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗)停止位:它是一個字元資料的結束標誌。可以是1位、1.5位、2位的高電平。空閒位:處於邏輯“1”狀態,表示當前線路上沒有資料傳送。

注:非同步通訊是按字元傳輸的,接收裝置在收到起始訊號之後只要在一個字元的傳輸時間內能和傳送裝置保持同步就能正確接收。下一個字元起始位的到來又使同步重新校準(依靠檢測起始位來實現傳送與接收方的時鐘自同步的)

二、RS-232標準

RS-232是美國電子工業協會EIA(Electronic Industry Association)制定的一種序列物理介面標準。RS是英文“推薦標準”的縮寫,232為標識號。RS-232是對電氣特性以及物理特性的規定,只作用於資料的傳輸通路上,它並不內含對資料的處理方式。需要說明一下,很多人經常把RS-232、RS-422、RS-485 誤稱為通訊協議,這是很不應該的,其實它們僅是關於UART通訊的一個機械和電氣介面標準(頂多是網路協議中的物理層面)。

該標準規定採用一個25 個腳的DB-25 聯結器,對聯結器的每個引腳的訊號內容加以規定,還對各種訊號的電平加以規定。後來IBM的PC 機將RS-232 簡化成了DB-9 聯結器,從而成為今天的事實標準。而工業控制的RS-232 口一般只使用RXD(2)、TXD(3)、GND(5) 三條線。

早期由於PC都帶有RS-232介面,所以我們需要使用UART時,都選擇RS-232。但是現在個人電腦,不光是筆記本,包括桌上型電腦都不再帶有RS-232的介面,大家看到電腦主機板上面沒有DB9的介面。所以現在開發板都選擇TTL的UART,或者直接UART轉USB做在開發板上。

嵌入式裡面說的串列埠,一般是指UART口, 但是我們經常搞不清楚它和COM口的區別, 以及RS232, TTL等關係, 實際上UART,COM指的物理介面形式(硬體), 而TTL、RS-232是指的電平標準(電訊號).

UART有4個pin(VCC, GND, RX, TX), 用的TTL電平, 低電平為0(0V),高電平為1(3.3V或以上)。

三、RS-485/ RS-422標準

RS-232介面可以實現點對點的通訊方式,但這種方式不能實現聯網功能。於是,為了解決這個問題,一個新的標準RS-485產生了。RS-485的資料訊號採用差分傳輸方式,也稱作平衡傳輸,它使用一對雙絞線,將其中一線定義為A,另一線定義為B。

通常情況下,傳送驅動器A、B之間的正電平在+2~+6V,是一個邏輯狀態,負電平在-2~6V,是另一個邏輯狀態。另有一個訊號地C,在RS-485中還有一“使能”端,而在RS-422中這是可用可不用的。

RS-422 的電氣效能與RS-485完全一樣。主要的區別在於:RS-422 有4 根訊號線:兩根傳送、兩根接收。由於RS-422 的收與發是分開的所以可以同時收和發(全雙工),也正因為全雙工要求收發要有單獨的通道,所以RS-422適用於兩個站之間通訊,星型網、環網,不可用於匯流排網;RS-485 只有2 根訊號線,所以只能工作在半雙工模式,常用於匯流排網。

RS-485的電氣特性:邏輯“1”以兩線間的電壓差為+(2~6)V表示;邏輯“0”以兩線間的電壓差為-(2~6)V表示。介面訊號電平比RS-232-C降低了,就不易損壞介面電路的晶片,且該電平與TTL電平相容,可方便與TTL 電路連線。

RS-485的資料最高傳輸速率為10Mbps 。

RS-485介面是採用平衡驅動器和差分接收器的組合,抗共模干擾能力增強,即抗噪聲干擾性好。

RS-485最大的通訊距離約為1219M,最大傳輸速率為10Mb/S,傳輸速率與傳輸距離成反比,在100Kb/S的傳輸速率下,才可以達到最大的通訊距離,如果需傳輸更長的距離,需要加485中繼器。RS-485匯流排一般最大支援32個節點,如果使用特製的485晶片,可以達到128個或者256個節點,最大的可以支援到400個節點。

由於RS-232 介面標準出現較早,難免有不足之處,主要有以下四點:

(1) 介面的訊號電平值較高,易損壞介面電路晶片,又因為232電平與TTL電平不相容故需使用電平轉換電路方能與TTL電路連線;

(2) 傳輸速率較低,在非同步傳輸時,波特率為20Kbps。現在由於採用了新的UART晶片,波特率達到115.2Kbps(1.832M/16);

(3) 介面使用一根訊號線和一根訊號返回線而構成共地的傳輸形式,這種共地傳輸容易產生共模干擾,所以抗噪聲干擾性弱;

(4) 傳輸距離有限,最大傳輸距離標準值為50 米,實際上也只能用在15 米左右;

(5) RS-232 只容許一對一的通訊,沒有考慮構成序列匯流排。(這點很重要,在很多控制場景,是一控多,如果主裝置都需要跟從裝置點對點通訊,那現場佈線成蜘蛛網了)

非平衡型序列通訊介面RS-423,RS-449

平衡型序列通訊介面RS-422

RS-422(EIA RS-422-A Standard)是Apple的Macintosh計算機的串列埠連線標準。RS-422使用差分訊號,RS-232使用非平衡參考地的訊號。差分傳輸使用兩根線傳送和接收訊號,對比RS-232,它能更好的抗噪聲和有更遠的傳輸距離。在工業環境中更好的抗噪性和更遠的傳輸距離是一個很大的優點。

四、RS-232與RS-485對比

1、抗干擾性:RS485 介面是採用平衡驅動器和差分接收器的組合,抗噪聲干擾性好。RS232 介面使用一根訊號線和一根訊號返回線而構成共地的傳輸形式,這種共地傳輸容易產生共模干擾。

2、傳輸距離:RS485 介面的最大傳輸距離標準值為 1200 米(9600bps 時),實際上可達 3000 米。RS232 傳輸距離有限,最大傳輸距離標準值為 50 米,實際上也只能用在 15 米左右。

3、通訊能力:RS-485 介面在總線上是允許連線多達128個收發器,使用者可以利用單一的 RS-485 介面方便地建立起裝置網路。RS-232只允許一對一通訊。

4、傳輸速率:RS-232傳輸速率較低,在非同步傳輸時,波特率為 20Kbps。RS-485 的資料最高傳輸速率為 10Mbps 。

5、訊號線:RS485 介面組成的半雙工網路,一般只需二根訊號線。RS-232 口一般只使用 RXD、TXD、GND 三條線 。

6、電氣電平值:RS-485的邏輯"1"以兩線間的電壓差為+(2-6) V 表示;邏輯"0"以兩線間的電壓差為-(2-6)V 表 示 。在 RS-232-C 中任何一條訊號線的電壓均為負邏輯關係。即:邏輯"1",-5- -15V;邏輯"0 " +5- +15V 。

五、RS-422與RS-485對比

RS-485的電氣效能與RS-422完全一樣。主要的區別在於:

1、RS-422 有4 根訊號線:兩根傳送(Y、Z)、兩根接收(A、B)。由於RS-422 的收與發是分開的所以可以同時收和發(全雙工)。

2、RS-485 只有兩根資料線:傳送和接收都是A 和B。由於RS-485 的收與發是共用兩根線,所以不能同時收和發(半雙工)。

RS-485標準採用平衡式傳送,差分式接收的資料收發器來驅動匯流排,具體規格要求:

接收器的輸入電阻RIN≥12kΩ

驅動器能輸出±7V的共模電壓

輸入端的電容≤50pF

在節點數為32個,配置了120Ω的終端電阻的情況下,驅動器至少還能輸出電壓1.5V(終端電阻的大小與所用雙絞線的引數有關)

接收器的輸入靈敏度為200mV(即(V+)-(V-)≥0.2V,表示訊號“0”;(V+)-(V-)≤-0.2V,表示訊號“1”)

因為RS-485的遠距離、多節點(32個)以及傳輸線成本低的特性,使得EIA RS-485成為工業應用中資料傳輸的首選標準。

(1) RS-485 的電氣特性:傳送端:邏輯“0”以兩線間的電壓差+(2 ~6)V 表示;邏輯“1”以兩線間的電壓差-(2 ~6)V 表示。接收端:A 比B 高200mV 以上即認為是邏輯“0”,A 比B 低200mV 以上即認為是邏輯“1”;

(2) RS-485 的資料最高傳輸速率為10Mbps。但是由於RS-485 常常要與PC 機的RS-232 口通訊,所以實際上一般最高115.2Kbps。又由於太高的速率會使RS-485 傳輸距離減小,所以往往為9600bps 左右或以下;

(3) RS-485 介面是採用平衡驅動器和差分接收器的組合,抗噪聲干擾性好;

(4) RS-485 介面的最大傳輸距離標準為1200 米(9600bps 時),實際上可達3000米,RS-485 介面在總線上是容許連線多達128 個收發器、即RS-485 具有多機通訊功能,這樣使用者可以利用單一的RS-485 介面方便的建立起網路。因為RS-485 介面組成的半雙工網路,一般只需二根訊號線,所以RS-485 介面均採用雙絞線傳輸。RS-485 的國際標準並沒有規定RS-485 的介面聯結器標準、所以採用接線端子或者DB-9、DB-25 等聯結器都可以。

在使用RS-485 介面時,對於特定的傳輸線徑,從發生器到負載其資料訊號傳輸所容許的最大電纜長度是資料訊號速率的函式,這個長度資料主要是受訊號失真及噪聲等影響所限制。最大電纜長度與訊號速率的關係曲線是使用24AWG 銅芯雙絞電話電纜(線徑為0.51mm),線間旁路電容為52.5PF/M,終端負載電阻為100 歐時所得出的。(引自GB11014-89 附錄A)。當資料訊號速率降低到90Kbit/S 以下時,假定最大容許的訊號損失為6dBV 時,則電纜長度被限制在1200m。實際上,在實用時是完全可以取得比它大的電纜長度。當使用不同線徑的電纜,則取得的最大電纜長度是不相同的。例如:當資料訊號速率為600Kbit/S 時,採用24AWG 電纜,最大電纜長度是200m,若採用19AWG電纜(線徑為0.91mm)則電纜長度將可以大於200m;若採用28AWG 電纜(線徑為0.32mm),則電纜長度只能小於200m。

RS-485的遠距離通訊建議採用遮蔽電纜,並且將遮蔽層作為地線。

六、影響RS-485匯流排通訊速度和通訊可靠性的三個因素

1、在通訊電纜中的訊號反射

在通訊過程中,有兩種訊號因素導致訊號反射:阻抗不連續和阻抗不匹配。

阻抗不連續,訊號在傳輸線末端突然遇到電纜阻抗很小甚至沒有,訊號在這個地方就會引起反射,如圖所示。這種訊號反射的原理,與光從一種媒質進入另一種媒質要引起反射是相似的。消除這種反射的方法,就必須在電纜的末端跨接一個與電纜的特性阻抗同樣大小的終端電阻,使電纜的阻抗連續。由於訊號在電纜上的傳輸是雙向的,因此,在通訊電纜的另一端可跨接一個同樣大小的終端電阻。

從理論上分析,在傳輸電纜的末端只要跨接了與電纜特性阻抗相匹配的終端電阻,就再也不會出現訊號反射現象。但是,在實現應用中,由於傳輸電纜的特性阻抗與通訊波特率等應用環境有關,特性阻抗不可能與終端電阻完全相等,因此或多或少的訊號反射還會存在。

引起訊號反射的另一個原因是資料收發器與傳輸電纜之間的阻抗不匹配。這種原因引起的反射,主要表現在通訊線路處在空閒方式時,整個網路資料混亂。

訊號反射對資料傳輸的影響,歸根結底是因為反射訊號觸發了接收器輸入端的比較器,使接收器收到了錯誤的訊號,導致CRC校驗錯誤或整個資料幀錯誤。

在訊號分析,衡量反射訊號強度的引數是RAF(Refection AttenuationFactor反射衰減因子)。它的計算公式如式(1)。

RAF=20lg(Vref/Vinc) (1)

式中:Vref—反射訊號的電壓大小;Vinc—在電纜與收發器或終端電阻連線點的入射訊號的電壓大小。

具體的測量方法如圖3所示。例如,由實驗測得2.5MHz的入射訊號正弦波的峰-峰值為+5V,反射訊號的峰-峰值為+0.297V,則該通訊電纜在2.5MHz的通訊速率時,它的反射衰減因子為:

RAF=20lg(0.297/2.5)=-24.52dB

要減弱反射訊號對通訊線路的影響,通常採用噪聲抑制和加偏置電阻的方法。在實際應用中,對於比較小的反射訊號,為簡單方便,經常採用加偏置電阻的方法。在通訊線路中,如何通過加偏置電阻提高通訊可靠性的原理。

2、在通訊電纜中的訊號衰減

第二個影響訊號傳輸的因素是訊號在電纜的傳輸過程中衰減。一條傳輸電纜可以把它看出由分佈電容、分佈電感和電阻聯合組成的等效電路,如圖所示。

電纜的分佈電容C主要是由雙絞線的兩條平行導線產生。導線的電阻在這裡對訊號的影響很小,可以忽略不計。訊號的損失主要是由於電纜的分佈電容和分佈電感組成的LC低通濾波器。PROFIBUS用的LAN標準型二芯電纜(西門子為DP匯流排選用的標準電纜),在不同波特率時的衰減係數如表1所示。

電纜的衰減係數

3、在通訊電纜中的純阻負載

影響通訊效能的第三個因素是純阻性負載(也叫直流負載)的大小。這裡指的純阻性負載主要由終端電阻、偏置電阻和RS-485收發器三者構成。

在敘述EIA RS-485規範時曾提到過RS-485驅動器在帶了32個節點,配置了150Ω終端電阻的情況下,至少能輸出1.5V的差分電壓。一個接收器的輸入電阻為12kΩ,整個網路的等效電路如圖5所示。按這樣計算,RS-485驅動器的負載能力為:

RL=32個輸入電阻並聯2個終端電阻=((12000/32)×(150/2))/(12000/32)+(150/2))≈51.7Ω

現在比較常用的RS-485驅動器有MAX485、DS3695、MAX1488/1489以及和利時公司使用的SN75176A/D等,其中有的RS-485驅動器負載能力可以達到20Ω。在不考慮其它諸多因素的情況下,按照驅動能力和負載的關係計算,一個驅動器可帶節點的最大數量將遠遠大於32個。

在通訊波特率比較高的時候,線上路上偏置電阻是很有必要的。偏置電阻的連線方法如圖6。它的作用是線上路進入空閒狀態後,把總線上沒有資料時(空閒方式)的電平拉離0電平,如圖7。這樣一來,即使線路中出現了比較小的反射訊號或干擾,掛接在總線上的資料接收器也不會由於這些訊號的到來而產生誤動作。

通過下面後例子了,可以計算出偏置電阻的大小:

終端電阻Rt1=Rr2=120Ω;

假設反射訊號最大的峰-峰值Vref≤0.3Vp-p,則負半周的電壓Vref≤0.15V;終端的電阻上由反射訊號引起的反射電流Iref≤0.15/(120||120)=2.5mA。一般RS-485收發器(包括SN75176)的滯後電壓值(hysteresis value)為50mV,即:

(Ibias-Iref)×(Rt1||Rt2)≥50mV

於是可以計算出偏置電阻產生的偏置電流Ibias≥3.33mA

+5V=Ibias(R上拉+R下拉+(Rt1||Rt2)) (2)

通過式2可以計算出R上拉=R下拉=720Ω

在實際應用中,RS-485匯流排加偏置電阻有兩種方法:

(1)把偏置電阻平衡分配給總線上的每一個收發器。這種方法給掛接在RS-485總線上的每一個收發器加了偏置電阻,給每一個收發器都加了一個偏置電壓。

(2)在一段總線上只用一對偏置電阻。這種方法對總線上存在大的反射訊號或干擾訊號比較有效。值得注意的是偏置電阻的加入,增加了匯流排的負載。

七、RS-485匯流排的負載能力和通訊電纜長度之間的關係

在設計RS-485匯流排組成的網路配置(匯流排長度和帶負載個數)時,應該考慮到三個引數:純阻性負載、訊號衰減和噪聲容限。純阻性負載、訊號衰減這兩個引數,在前面已經討論過,現在要討論的是噪聲容限(Noise Margin)。RS-485匯流排接收器的噪聲容限至少應該大於200mV。前面的論述者是在假設噪聲容限為0的情況下進行的。在實際應用中,為了提高匯流排的抗干擾能力,總希望系統的噪聲容限比EIA RS-485標準中規定的好一些。從下面的公式能看出匯流排帶負載的多少和通訊電纜長度之間的關係:

Vend=0.8(Vdriver-Vloss-Vnoise-Vbias)(3)

其中:Vend為匯流排末端的訊號電壓,在標準測定時規定為0.2V;Vdriver為驅動器的輸出電壓(與負載數有關。負載數在5~35個之間,Vdriver=2.4V;當負載數小於5,Vdriver=2.5V;當負載數大於35,Vdriver≤2.3V);Vloss為訊號在匯流排中的傳輸過程中的損耗(與通訊電纜的規格和長度有關),由表1提供的標準電纜的衰減係數,根據公式衰減係數b=20lg(Vout/Vin)可以計算出Vloss=Vin-Vout=0.6V(注:通訊波特率為9.6kbps,電纜長度1km,如果特率增加,Vloss會相應增大);Vnoise為噪聲容限,在標準測定時規定為0.1V;Vbias是由偏置電阻提供的偏置電壓(典型值為0.4V)。

式(3)中乘以0.8是為了使通訊電纜不進入滿載狀態。從式(3)可以看出,Vdriver的大小和總線上帶負載數的多少成反比,Vloss的大小和匯流排長度成反比,其他幾個引數只和用的驅動器型別有關。因此,在選定了驅動器的RS-495總線上,在通訊波特率一定的情況下,帶負載數的多少,與訊號能傳輸的最大距離是直接相關的。具體關係是:在匯流排允許的範圍內,帶負載數越多,訊號能傳輸的距離就越小;帶負載資料少,訊號能傳輸的距離就發越遠。

八、分佈電容對RS-485匯流排傳輸效能的影響

電纜的分佈電容主是由雙絞線的兩條平行導線產生。另外,導線和地之間也存在分佈電容,雖然很小,但在分析時也不能忽視。分佈電容對匯流排傳輸效能的影響,主要是因為總線上傳輸的是基波訊號,訊號的表達方式只有“1”和“0”。在特殊的位元組中,例如0x01,訊號“0”使得分佈電容有足夠的充電時間,而訊號“1”到來時,由於分佈電容中的電荷,來不及放電,(Vin+)—(Vin-)-還大於200mV,結果使接愛誤認為是“0”,而最終導致CRC校驗錯誤,整個資料幀傳輸錯誤。具體過程如圖所示。

由於總線上分佈影響,導致資料傳輸錯誤,從而使整個網路效能降低。解決這個問題有兩種方法:

(1)降低資料傳輸的波特率;

(2)使用分佈電容小的電纜,提高傳輸線的質量。

僅僅用一對雙絞線將各個介面的A、B端連線起來,而不對RS-485通訊鏈路的訊號接地,在某些情況下也可以工作,但給系統埋下了隱患。RS-485介面採用差分方式傳輸訊號並不需要對於某個參照點來檢測訊號系統,只需檢測兩線之間的電位差就可以了。但應該注意的是收發器只有在共模電壓不超出一定範圍(-7V至+12V)的條件下才能正常工作。當共模電壓超出此範圍,就會影響通訊的可靠直至損壞介面。如圖1所示,當傳送器A向接收器B傳送資料時,傳送器A的輸出共模電壓為VOS,由於兩個系統具有各自獨立的接地系統存在著地電位差VGPD,那麼接收器輸入端的共模電壓就會達到VCM=VOS+VGPD。RS-485標準規定VOS≤3V,但VGPD可能會有很大幅度(十幾伏甚至數十伏),並可能伴有強幹擾訊號致使接收器共模輸入VCM超出正常圍,在訊號線上產生干擾電流影響正常通訊,或損壞裝置。