當前位置:首頁 > 公眾號精選 > 21ic電子網(wǎng)
[導讀]RS485接口組成的半雙工網(wǎng)絡,一般是兩線制,多采用屏蔽雙絞線傳輸,這種接線方式為總線式拓撲結構在同一總線上最多可以掛接32個結點。我們知道,最初數(shù)據(jù)是模擬信號輸出簡單過程量,后來儀表接口是RS232接口,這種接口可以實現(xiàn)點對點的通信方式,但這種方式不能實現(xiàn)聯(lián)網(wǎng)功能,隨后出現(xiàn)的R...

關于RS485串口通訊,這篇終于講透了!


RS485接口組成的半雙工網(wǎng)絡,一般是兩線制,多采用屏蔽雙絞線傳輸,這種接線方式為總線式拓撲結構在同一總線上最多可以掛接32個結點。我們知道,最初數(shù)據(jù)是模擬信號輸出簡單過程量,后來儀表接口是RS232接口,這種接口可以實現(xiàn)點對點的通信方式,但這種方式不能實現(xiàn)聯(lián)網(wǎng)功能,隨后出現(xiàn)的RS485解決了這個問題。為此本文通過問答的形式詳細介紹RS485接口。


一、什么是RS-485接口?它比RS-232-C接口相比有何特點?

答:由于RS-232-C接口標準出現(xiàn)較早,難免有不足之處,主要有以下四點:
(1)接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL電平不兼容故需使用電平轉(zhuǎn)換電路方能與TTL電路連接。

(2)傳輸速率較低,在異步傳輸時,波特率為20Kbps。

(3)接口使用一根信號線和一根信號返回線而構成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱。

(4)傳輸距離有限,最大傳輸距離標準值為50英尺,實際上也只能用在50米左右。針對RS-232-C的不足,于是就不斷出現(xiàn)了一些新的接口標準,RS-485就是其中之一,它具有以下特點:

關于RS485串口通訊,這篇終于講透了!
1)RS-485的電氣特性:邏輯“1”以兩線間的電壓差為 (2-6)V表示;邏輯“0”以兩線間的電壓差為-(2-6)V表示。接口信號電平比RS-232-C降低了,就不易損壞接口電路的芯片,且該電平與TTL電平兼容,可方便與TTL電路連接。

2)RS-485的數(shù)據(jù)最高傳輸速率為10Mbps

3)RS-485接口是采用平衡驅(qū)動器和差分接收器的組合,抗共模干能力增強,即抗噪聲干擾性好。

4)RS-485接口的最大傳輸距離標準值為4000英尺,實際上可達3000米,另外RS-232-C接口在總線上只允許連接1個收發(fā)器,即單站能力。而RS-485接口在總線上是允許連接多達128個收發(fā)器。即具有多站能力,這樣用戶可以利用單一的RS-485接口方便地建立起設備網(wǎng)絡。

5)因RS-485接口具有良好的抗噪聲干擾性,長的傳輸距離和多站能力等上述優(yōu)點就使其成為首選的串行接口。因為RS485接口組成的半雙工網(wǎng)絡,一般只需二根連線,所以RS485接口均采用屏蔽雙絞線傳輸。RS485接口連接器采用DB-9的9芯插頭座,與智能終端RS485接口采用DB-9(孔),與鍵盤連接的鍵盤接口RS485采用DB-9(針)。

關于RS485串口通訊,這篇終于講透了!
二、RS-422與RS-485串行接口標準

1、平衡傳輸

RS-422、RS-485與RS-232不一樣,數(shù)據(jù)信號采用差分傳輸方式,也稱作平衡傳輸,它使用一對雙絞線,將其中一線定義為A,另一線定義為B

通常情況下,發(fā)送驅(qū)動器A、B之間的正電平在 2~ 6V,是一個邏輯狀態(tài),負電平在-2~6V,是另一個邏輯狀態(tài)。另有一個信號地C,在RS-485中還有一“使能”端,而在RS-422中這是可用可不用的?!笆鼓堋倍耸怯糜诳刂瓢l(fā)送驅(qū)動器與傳輸線的切斷與連接。當“使能”端起作用時,發(fā)送驅(qū)動器處于高阻狀態(tài),稱作“第三態(tài)”,即它是有別于邏輯“1”與“0”的第三態(tài)。

接收器也作與發(fā)送端相對的規(guī)定,收、發(fā)端通過平衡雙絞線將AA與BB對應相連,當在收端AB之間有大于 200mV的電平時,輸出正邏輯電平,小于-200mV時,輸出負邏輯電平。接收器接收平衡線上的電平范圍通常在200mV至6V之間。

2、RS-422電氣規(guī)定

RS-422標準全稱是“平衡電壓數(shù)字接口電路的電氣特性”,它定義了接口電路的特性。圖2是典型的RS-422四線接口。實際上還有一根信號地線,共5根線。圖1是其DB9連接器引腳定義。由于接收器采用高輸入阻抗和發(fā)送驅(qū)動器比RS232更強的驅(qū)動能力,故允許在相同傳輸線上連接多個接收節(jié)點,最多可接10個節(jié)點。即一個主設備(Master),其余為從設備(Salve),從設備之間不能通信,所以RS-422支持點對多的雙向通信。接收器輸入阻抗為4k,故發(fā)端最大負載能力是10×4k 100Ω(終接電阻)。
RS-422四線接口由于采用單獨的發(fā)送和接收通道,因此不必控制數(shù)據(jù)方向,各裝置之間任何必須的信號交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對單獨的雙絞線)實現(xiàn)。RS-422的最大傳輸距離為4000英尺(約1219米),最大傳輸速率為10Mb/s。
其平衡雙絞線的長度與傳輸速率成反比,在100kb/s速率以下,才可能達到最大傳輸距離。只有在很短的距離下才能獲得最高速率傳輸。一般100米長的雙絞線上所能獲得的最大傳輸速率僅為1Mb/s。

RS-422需要一終接電阻,要求其阻值約等于傳輸電纜的特性阻抗。在矩距離傳輸時可不需終接電阻,即一般在300米以下不需終接電阻。終接電阻接在傳輸電纜的最遠端。

3、RS-485電氣規(guī)定

由于RS-485是從RS-422基礎上發(fā)展而來的,所以RS-485許多電氣規(guī)定與RS-422相仿。如都采用平衡傳輸方式、都需要在傳輸線上接終接電阻等。RS-485可以采用二線與四線方式,二線制可實現(xiàn)真正的多點雙向通信。

而采用四線連接時,與RS-422一樣只能實現(xiàn)點對多的通信,即只能有一個主(Master)設備,其余為從設備,但它比RS-422有改進,無論四線還是二線連接方式總線上可多接到32個設備。

關于RS485串口通訊,這篇終于講透了!
RS-485與RS-422的不同還在于其共模輸出電壓是不同的,RS-485是-7V至 12V之間,而RS-422在-7V至 7V之間,RS-485接收器最小輸入阻抗為12k劍鳵S-422是4k?。慌f峽梢運礡S-485滿足所有RS-422的規(guī)范,所以RS-485的驅(qū)動器可以用在RS-422網(wǎng)絡中應用。

RS-485與RS-422一樣,其最大傳輸距離約為1219米,最大傳輸速率為10Mb/s。平衡雙絞線的長度與傳輸速率成反比,在100kb/s速率以下,才可能使用規(guī)定最長的電纜長度。只有在很短的距離下才能獲得最高速率傳輸。一般100米長雙絞線最大傳輸速率僅為1Mb/s。

RS-485需要2個終接電阻,其阻值要求等于傳輸電纜的特性阻抗。在矩距離傳輸時可不需終接電阻,即一般在300米以下不需終接電阻。終接電阻接在傳輸總線的兩端。

三、RS-422與RS-485的網(wǎng)絡安裝注意要點

RS-422可支持10個節(jié)點,RS-485支持32個節(jié)點,因此多節(jié)點構成網(wǎng)絡。網(wǎng)絡拓撲一般采用終端匹配的總線型結構,不支持環(huán)形或星形網(wǎng)絡。在構建網(wǎng)絡時,應注意如下幾點:
關于RS485串口通訊,這篇終于講透了!
1、采用一條雙絞線電纜作總線,將各個節(jié)點串接起來,從總線到每個節(jié)點的引出線長度應盡量短,以便使引出線中的反射信號對總線信號的影響最低。所示為實際應用中常見的一些錯誤連接方式(a,c,e)和正確的連接方式(b,d,f)。a,c,e這三種網(wǎng)絡連接盡管不正確,在短距離、低速率仍可能正常工作,但隨著通信距離的延長或通信速率的提高,其不良影響會越來越嚴重,主要原因是信號在各支路末端反射后與原信號疊加,會造成信號質(zhì)量下降。

2、應注意總線特性阻抗的連續(xù)性,在阻抗不連續(xù)點就會發(fā)生信號的反射。下列幾種情況易產(chǎn)生這種不連續(xù)性:總線的不同區(qū)段采用了不同電纜,或某一段總線上有過多收發(fā)器緊靠在一起安裝,再者是過長的分支線引出到總線。

總之,應該提供一條單一、連續(xù)的信號通道作為總線。

四、RS-422與RS-485傳輸線上匹配的一些說明

對RS-422與RS-485總線網(wǎng)絡一般要使用終接電阻進行匹配。但在短距離與低速率下可以不用考慮終端匹配。那么在什么情況下不用考慮匹配呢?理論上,在每個接收數(shù)據(jù)信號的中點進行采樣時,只要反射信號在開始采樣時衰減到足夠低就可以不考慮匹配。
但這在實際上難以掌握,美國MAXIM公司有篇文章提到一條經(jīng)驗性的原則可以用來判斷在什么樣的數(shù)據(jù)速率和電纜長度時需要進行匹配:當信號的轉(zhuǎn)換時間(上升或下降時間)超過電信號沿總線單向傳輸所需時間的3倍以上時就可以不加匹配。
例如具有限斜率特性的RS-485接口MAX483輸出信號的上升或下降時間最小為250ns,典型雙絞線上的信號傳輸速率約為0.2m/ns(24AWGPVC電纜),那么只要數(shù)據(jù)速率在250kb/s以內(nèi)、電纜長度不超過16米,采用MAX483作為RS-485接口時就可以不加終端匹配。

關于RS485串口通訊,這篇終于講透了!

一般終端匹配采用終接電阻方法,前文已有提及,RS-422在總線電纜的遠端并接電阻,RS-485則應在總線電纜的開始和末端都需并接終接電阻。終接電阻一般在RS-422網(wǎng)絡中取100Ω,在RS-485網(wǎng)絡中取120Ω。
相當于電纜特性阻抗的電阻,因為大多數(shù)雙絞線電纜特性阻抗大約在100~120Ω。這種匹配方法簡單有效,但有一個缺點,匹配電阻要消耗較大功率,對于功耗限制比較嚴格的系統(tǒng)不太適合。

另外一種比較省電的匹配方式是RC匹配,利用一只電容C隔斷直流成分可以節(jié)省大部分功率。但電容C的取值是個難點,需要在功耗和匹配質(zhì)量間進行折衷。

還有一種采用二極管的匹配方法,這種方案雖未實現(xiàn)真正的“匹配”,但它利用二極管的鉗位作用能迅速削弱反射信號,達到改善信號質(zhì)量的目的。節(jié)能效果顯著。

五、RS-422與RS-485的接地問題

電子系統(tǒng)接地是很重要的,但常常被忽視。接地處理不當往往會導致電子系統(tǒng)不能穩(wěn)定工作甚至危及系統(tǒng)安全。RS-422與RS-485傳輸網(wǎng)絡的接地同樣也是很重要的,因為接地系統(tǒng)不合理會影響整個網(wǎng)絡的穩(wěn)定性,尤其是在工作環(huán)境比較惡劣和傳輸距離較遠的情況下,對于接地的要求更為嚴格。
否則接口損壞率較高。很多情況下,連接RS-422、RS-485通信鏈路時只是簡單地用一對雙絞線將各個接口的“A”、“B”端連接起來。而忽略了信號地的連接,這種連接方法在許多場合是能正常工作的,但卻埋下了很大的隱患,這有下面二個原因:

1、共模干擾問題:正如前文已述,RS-422與RS-485接口均采用差分方式傳輸信號方式,并不需要相對于某個參照點來檢測信號,系統(tǒng)只需檢測兩線之間的電位差就可以了。但人們往往忽視了收發(fā)器有一定的共模電壓范圍,如RS-422共模電壓范圍為-7~ 7V,而RS-485收發(fā)器共模電壓范圍為-7~ 12V,只有滿足上述條件,整個網(wǎng)絡才能正常工作。
當網(wǎng)絡線路中共模電壓超出此范圍時就會影響通信的穩(wěn)定可靠,甚至損壞接口。以圖1為例,當發(fā)送驅(qū)動器A向接收器B發(fā)送數(shù)據(jù)時,發(fā)送驅(qū)動器A的輸出共模電壓為VOS,由于兩個系統(tǒng)具有各自獨立的接地系統(tǒng),存在著地電位差VGPD。
那么,接收器輸入端的共模電壓VCM就會達到VCM=VOS VGPD。RS-422與RS-485標準均規(guī)定VOS≤3V,但VGPD可能會有很大幅度(十幾伏甚至數(shù)十伏),并可能伴有強干擾信號,致使接收器共模輸入VCM超出正常范圍,并在傳輸線路上產(chǎn)生干擾電流,輕則影響正常通信,重則損壞通信接口電路。

2、(EMI)問題:發(fā)送驅(qū)動器輸出信號中的共模部分需要一個返回通路,如沒有一個低阻的返回通道(信號地),就會以輻射的形式返回源端,整個總線就會像一個巨大的天線向外輻射電磁波。

由于上述原因,RS-422、RS-485盡管采用差分平衡傳輸方式,但對整個RS-422或RS-485網(wǎng)絡,必須有一條低阻的信號地。一條低阻的信號地將兩個接口的工作地連接起來,使共模干擾電壓VGPD被短路。

這條信號地可以是額外的一條線(非屏蔽雙絞線),或者是屏蔽雙絞線的屏蔽層。這是最通常的接地方法。

關于RS485串口通訊,這篇終于講透了!
值得注意的是,這種做法僅對高阻型共模干擾有效,由于干擾源內(nèi)阻大,短接后不會形成很大的接地環(huán)路電流,對于通信不會有很大影響。當共模干擾源內(nèi)阻較低時,會在接地線上形成較大的環(huán)路電流,影響正常通信。筆者認為,可以采取以下三種措施:

(1)如果干擾源內(nèi)阻不是非常小,可以在接地線上加限流電阻以限制干擾電流。接地電阻的增加可能會使共模電壓升高,但只要控制在適當?shù)姆秶鷥?nèi)就不會影響正常通信。

(2)采用浮地技術,隔斷接地環(huán)路。這是較常用也是十分有效的一種方法,當共模干擾內(nèi)阻很小時上述方法已不能奏效,此時可以考慮將引入干擾的節(jié)點(例如處于惡劣的工作環(huán)境的現(xiàn)場設備)浮置起來(也就是系統(tǒng)的電路地與機殼或大地隔離),這樣就隔斷了接地環(huán)路,不會形成很大的環(huán)路電流。

(3)采用隔離接口。有些情況下,出于安全或其它方面的考慮,電路地必須與機殼或大地相連,不能懸浮,這時可以采用隔離接口來隔斷接地回路,但是仍然應該有一條地線將隔離側的公共端與其它接口的工作地相連。

六、RS-422與RS-485的網(wǎng)絡失效保護

RS-422與RS-485標準都規(guī)定了接收器門限為±200mV。這樣規(guī)定能夠提供比較高的噪聲抑制能力,如前文所述,當接收器A電平比B電平高 200mV以上時,輸出為正邏輯,反之,則輸出為負邏輯。但由于第三態(tài)的存在,即在主機在發(fā)端發(fā)完一個信息數(shù)據(jù)后,將總線置于第三態(tài),即總線空閑時沒有任何信號驅(qū)動總線,使AB之間的電壓在-200~ 200mV直至趨于0V,這帶來了一個問題:接收器輸出狀態(tài)不確定。
如果接收機的輸出為0V,網(wǎng)絡中從機將把其解釋為一個新的啟動位,并試圖讀取后續(xù)字節(jié),由于永遠不會有停止位,產(chǎn)生一個幀錯誤結果,不再有設備請求總線,網(wǎng)絡陷于癱瘓狀態(tài)。除上述所述的總線空閑會造成兩線電壓差低于200mV的情況外,開路或短路時也會出現(xiàn)這種情況。故應采取一定的措施避免接收器處于不確定狀態(tài)。

通常是在總線上加偏置,當總線空閑或開路時,利用偏置電阻將總線偏置在一個確定的狀態(tài)(差分電壓≥-200mV)。如圖1。將A上拉到地,B下拉到5V,電阻的典型值是1kΩ,具體數(shù)值隨電纜的電容變化而變化。

上述方法是比較經(jīng)典的方法,但它仍然不能解決總線短路時的問題,有些廠家將接收門限移到-200mV/-50mV,可解決這個問題。

七、RS-422與RS-485的瞬態(tài)保護

前文提到的信號接地措施,只對低頻率的共模干擾有保護作用,對于頻率很高的瞬態(tài)干擾就無能為力了。由于傳輸線對高頻信號而言就是相當于電感,因此對于高頻瞬態(tài)干擾,接地線實際等同于開路。這樣的瞬態(tài)干擾雖然持續(xù)時間短暫,但可能會有成百上千伏的電壓。

實際應用環(huán)境下還是存在高頻瞬態(tài)干擾的可能。一般在切換大功率感性負載如電機、變壓器、繼電器等或閃電過程中都會產(chǎn)生幅度很高的瞬態(tài)干擾,如果不加以適當防護就會損壞RS-422或RS-485通信接口。對于這種瞬態(tài)干擾可以采用隔離或旁路的方法加以防護。

1、隔離保護方法。這種方案實際上將瞬態(tài)高壓轉(zhuǎn)移到隔離接口中的電隔離層上,由于隔離層的高絕緣電阻,不會產(chǎn)生損害性的浪涌電流,起到保護接口的作用。通常采用高頻變壓器、光耦等元件實現(xiàn)接口的電氣隔離,已有器件廠商將所有這些元件集成在一片IC中,使用起來非常簡便。這種方案的優(yōu)點是可以承受高電壓、持續(xù)時間較長的瞬態(tài)干擾,實現(xiàn)起來也比較容易,缺點是成本較高。

2、旁路保護方法。這種方案利用瞬態(tài)抑制元件(如TVS、MOV、氣體放電管等)將危害性的瞬態(tài)能量旁路到大地,優(yōu)點是成本較低,缺點是保護能力有限,只能保護一定能量以內(nèi)的瞬態(tài)干擾,持續(xù)時間不能很長,而且需要有一條良好的連接大地的通道,實現(xiàn)起來比較困難。實際應用中是將上述兩種方案結合起來靈活加以運用,如圖1。在這種方法中,隔離接口對大幅度瞬態(tài)干擾進行隔離,旁路元件則保護隔離接口不被過高的瞬態(tài)電壓擊穿。

八、采用RS485接口時,傳輸電纜的長度如何考慮?

在使用RS485接口時,對于特定的傳輸線經(jīng),從發(fā)生器到負載其數(shù)據(jù)信號傳輸所允許的最大電纜長度是數(shù)據(jù)信號速率的函數(shù),這個長度數(shù)據(jù)主要是受信號失真及噪聲等影響所限制。最大電纜長度與信號速率的關系曲線是使用24AWG銅芯雙絞電話電纜(線徑為0。51mm),線間旁路電容為52。5PF/M,終端負載電阻為100歐時所得出。當數(shù)據(jù)信號速率降低到90Kbit/S以下時,假定最大允許的信號損失為6dBV時,則電纜長度被限制在1200M。在實用時是完全可以取得比它大的電纜長度。當使用不同線徑的電纜。則取得的最大電纜長度是不相同的。

九、如何實現(xiàn)RS-485/422多點通訊

RS-485總線上任何時候只能有一發(fā)送器發(fā)送。半雙工方式,主從只能一個發(fā)。全雙工方式,主站總可發(fā)送,從站只能有一個發(fā)送。

十、RS-485/RS422接口通訊時,在什么條件下需要采用終端匹配?電阻值如何確定?如何配置終端匹配電阻?

在長線信號傳輸時,一般為了避免信號的反射和回波,需要在接收端接入終端匹配電阻。其終端匹配電阻值取決于電纜的阻抗特性,與電纜的長度無關。

關于RS485串口通訊,這篇終于講透了!
RS-485/RS-422一般采用雙絞線(屏蔽或非屏蔽)連接,終端電阻一般介于100至140Ω之間,典型值為120Ω。在實際配置時,在電纜的兩個終端節(jié)點上,即最近端和最遠端,各接入一個終端電阻,而處于中間部分的節(jié)點則不能接入終端電阻,否則將導致通訊出錯。

十一、RS-485網(wǎng)不知道最遠站點是哪一個,應該如何接匹配電阻呢?

會出現(xiàn)這種情況,是由于用戶組成RS-485網(wǎng)時,沒有遵循站點至總線的連線應盡可能短的原則。如果總線布線遵循這一原則,就不存在不知道哪個站點是最遠的問題。而且要注意,這樣的布線,系統(tǒng)將會工作得不好。

十二、RS-485/RS-422接口為何在停止通信時接收器仍有數(shù)據(jù)輸出?

由于RS-485/RS-422在發(fā)送數(shù)據(jù)完成后,要求所有的發(fā)送使能控制信號關閉且保持接收使能有效,此時,總線驅(qū)動器進入高阻狀態(tài)且接收器能夠監(jiān)測總線上是否有新的通信數(shù)據(jù)。
但是由于此時總線處于無源驅(qū)動狀態(tài)(若總線有終端匹配電阻時,A和B線的差分電平為0,接收器的輸出不確定,且對AB線上的差分信號的變化很敏感;若無終端匹配,則總線處于高阻態(tài),接收器的輸出不確定),容易受到外界的噪聲干擾。
當噪聲電壓超過輸入信號門限時(典型值±200mV),接收器將輸出數(shù)據(jù),導致對應的UART接收無效的數(shù)據(jù),使緊接著的正常通訊出錯;另外一種情況可能發(fā)生在打開/關閉發(fā)送使能控制的瞬間,使接收器輸出信號,也會導致UART錯誤地接收。

解決方法:

1)在通訊總線上采用同相輸入端上拉(A線)、反相輸入端下拉(B線)的方法對總線進行鉗位,保證接收器輸出為固定的“1”電平;

2)采用內(nèi)置防故障模式的MAX308x系列的接口產(chǎn)品替換該接口電路;

3)通過軟件方式消除,即在通信數(shù)據(jù)包內(nèi)增加2-5個起始同步字節(jié),只有在滿足同步頭后才開始真正的數(shù)據(jù)通訊。

十三、影響RS-485總線通訊速度和通信可靠性的三個因素

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

在通信過程中,有兩種信號因?qū)е滦盘柗瓷洌鹤杩共贿B續(xù)和阻抗不匹配。阻抗不連續(xù),信號在傳輸線末端突然遇到電纜阻抗很小甚至沒有,信號在這個地方就會引起反射,如圖1所示。這種信號反射的原理,與光從一種媒質(zhì)進入另一種媒質(zhì)要引起反射是相似的。
消除這種反射的方法,就必須在電纜的末端跨接一個與電纜的特性阻抗同樣大小的終端電阻,使電纜的阻抗連續(xù)。由于信號在電纜上的傳輸是雙向的,因此,在通訊電纜的另一端可跨接一個同樣大小的終端電阻從理論上分析,在傳輸電纜的末端只要跨接了與電纜特性阻抗相匹配的終端電阻,就再也不會出現(xiàn)信號反射現(xiàn)象。
但是,在實現(xiàn)應用中,由于傳輸電纜的特性阻抗與通訊波特率等應用環(huán)境有關,特性阻抗不可能與終端電阻完全相等,因此或多或少的信號反射還會存在。

引起信號反射的另個原因是數(shù)據(jù)收發(fā)器與傳輸電纜之間的阻抗不匹配。這種原因引起的反射,主要表現(xiàn)在通訊線路處在空閑方式時,整個網(wǎng)絡數(shù)據(jù)混亂。

信號反射對數(shù)據(jù)傳輸?shù)挠绊懀瑲w根結底是因為反射信號觸發(fā)了接收器輸入端的比較器,使接收器收到了錯誤的信號,導致CRC校驗錯誤或整個數(shù)據(jù)幀錯誤。

在信號分析,衡量反射信號強度的參數(shù)是RAF(RefectionAttenuationFactor反射衰減因子)。它的計算公式如式(1)。

RAF=20lg(Vref/Vinc)(1)式中:Vref-反射信號的電壓大小;Vinc-在電纜與收發(fā)器或終端電阻連接點的入射信號的電壓大小。

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

要減弱反射信號對通訊線路的影響,通常采用噪聲抑制和加偏置電阻的方法。在實際應用中,對于比較小的反射信號,為簡單方便,經(jīng)常采用加偏置電阻的方法。在通訊線路中,如何通過加偏置電阻提高通訊可靠性的原理,后面將做詳細介紹。

十四、在通訊電纜中的信號衰減

第二個影響信號傳輸?shù)囊蛩厥切盘栐陔娎|的傳輸過程中衰減。一條傳輸電纜可以把它看出由分布電容、分布電感和電阻聯(lián)合組成的等效電路。

電纜的分布電容C主要是由雙絞線的兩條平行導線產(chǎn)生。導線的電阻在這里對信號的影響很小,可以忽略不計。信號的損失主要是由于電纜的分布電容和分布電感組成的LC低通濾波器。PROFIBUS用的LAN標準型二芯電感(西門子為DP總線選用的標準電纜),在不同波特率時的衰減系數(shù)。

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

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

在敘述EIARS-485規(guī)范時曾提到過RS-485驅(qū)動器在帶了32個節(jié)點,配置了150Ω終端電阻的情況下,至少能輸出1.5V的差分電壓。一個接收器的輸入電阻為12kΩ,整個網(wǎng)絡的等效電路如圖5所示。按這樣計算,RS-485驅(qū)動器的負載能力為:RL=32個輸入電阻并聯(lián)||2個終端電阻=((12000/32)×(150/2))/(12000/32) (150/2))≈51.7Ω

現(xiàn)在比較常用的RS-485驅(qū)動器有MAX485、DS3695、MAX1488/1489以及和利時公司使用的SN75176A/D等,其中有的RS-485驅(qū)動器負載能力可以達到20Ω。在不考慮其它諸多因素的情況下,按照驅(qū)動能力和負載的關系計算,一個驅(qū)動器可帶節(jié)點的最大數(shù)量將遠遠大于32個。
關于RS485串口通訊,這篇終于講透了!
在通訊波特率比較高的時候,在線路上偏置電阻是很有必要的。偏置電阻的連接方法。它的作用是在線路進入空閑狀態(tài)后,把總線上沒有數(shù)據(jù)時(空閑方式)的電平拉離0電平。
這樣一來,即使線路中出現(xiàn)了比較小的反射信號或干擾,掛接在總線上的數(shù)據(jù)接收器也不會由于這些信號的到來而產(chǎn)生誤動作。通過下面后例子了,可以計算出偏置電阻的大?。航K端電阻Rt1=Rr2=120Ω;

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

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

于是可以計算出偏置電阻產(chǎn)生的偏置電流Ibias≥3.33mA

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

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

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

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

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

十六、RS-485總線的負載能力和通訊電纜長度之間的關系

在設計RS-485總線組成的網(wǎng)絡配置(總線長度和帶負載個數(shù))時,應該考慮到三個參數(shù):純阻性負載、信號衰減和噪聲容限。純阻性負載、信號衰減這兩個參數(shù),在前面已經(jīng)討論過,現(xiàn)在要討論的是噪聲容限(NoiseMargin)。RS-485總線接收器的噪聲容限至少應該大于200mV。前面的論述者是在假設噪聲容限為0的情況下進行的。

在實際應用中,為了提高總線的抗干擾能力,總希望系統(tǒng)的噪聲容限比EIARS-485標準中規(guī)定的好一些。從下面的公式能看出總線帶負載的多少和通訊電纜長度之間的關系:Vend=0.8(Vdriver-Vloss-Vnoise-Vbias)(3)

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

式(3)中乘以0.8是為了使通信電纜不進入滿載狀態(tài)。從式(3)可以看出,Vdriver的大小和總線上帶負載數(shù)的多少成反比,Vloss的大小和總線長度成反比,其他幾個參數(shù)只和用的驅(qū)動器類型有關。因此,在選定了驅(qū)動器的RS-495總線上,在通信波特率一定的情況下,帶負載數(shù)的多少,與信號能傳輸?shù)淖畲缶嚯x是直接相關的。具體關系是:

在總線允許的范圍內(nèi),帶負載數(shù)越多,信號能傳輸?shù)木嚯x就越??;帶負載數(shù)據(jù)少,信號能傳輸?shù)木嚯x就發(fā)越遠。

十七、分布電容對RS-485總線傳輸性能的影響

電纜的分布電容主是由雙絞線的兩條平行導線產(chǎn)生。另外,導線和地之間也存在分布電容,雖然很小,但在分析時也不能忽視。分布電容對總線傳輸性能的影響,主要是因為總線上傳輸?shù)氖腔ㄐ盘?,信號的表達方式只有“1”和“0”。在特殊的字節(jié)中,例如0x01,信號“0”使得分布電容有足夠的充電時間,而信號“1”到來時,由于分布電容中的電荷,來不及放電,(Vin )-(Vin-)-還大于200mV,結果使接愛誤認為是“0”,而最終導致CRC校驗錯誤,整個數(shù)據(jù)幀傳輸錯誤。

由于總線上分布影響,導致數(shù)據(jù)傳輸錯誤,從而使整個網(wǎng)絡性能降低。解決這個問題有兩種方法:

(1)降低數(shù)據(jù)傳輸?shù)牟ㄌ芈剩?/span>

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

十八、單工、半雙工和全雙工的定義

1、如果在通信過程的任意時刻,信息只能由一方A傳到另一方B,則稱為單工。

2、如果在任意時刻,信息既可由A傳到B,又能由B傳A,但只能由一個方向上的傳輸存在,稱為半雙工傳輸。

3、如果在任意時刻,線路上存在A到B和B到A的雙向信號傳輸,則稱為全雙工。

關于RS485串口通訊,這篇終于講透了!
電話線就是二線全雙工信道。由于采用了回波抵消技術,雙向的傳輸信號不致混淆不清。雙工信道有時也將收、發(fā)信道分開,采用分離的線路或頻帶傳輸相反方向的信號,如回線傳輸。

Modbus通訊協(xié)議詳解

導語:ModBus網(wǎng)絡是一個工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計算機通過公用線路或局部專用線路連接而成。其系統(tǒng)結構既包括硬件、亦包括軟件。它可應用于各種數(shù)據(jù)采集和過程監(jiān)控。

ModBus網(wǎng)絡只有一個主機,所有通信都由他發(fā)出。網(wǎng)絡可支持247個之多的遠程從屬控制器,但實際所支持的從機數(shù)要由所用通信設備決定。采用這個系統(tǒng),各PC可以和中心主機交換信息而不影響各PC執(zhí)行本身的控制任務。

了解Modbus通訊協(xié)議是怎么回事,在現(xiàn)場就可以用各種第三方的小軟件做通訊測試了。

Modbus協(xié)議包括ASCII、RTU、TCP等,并沒有規(guī)定物理層。此協(xié)議定義了控制器能夠認識和使用的消息結構,而不管它們是經(jīng)過何種網(wǎng)絡進行通信的。標準的Modicon控制器使用RS232C實現(xiàn)串行的Modbus。Modbus的ASCII、RTU協(xié)議規(guī)定了消息、數(shù)據(jù)的結構、命令和就答的方式,數(shù)據(jù)通訊采用Maser/Slave方式,Master端發(fā)出數(shù)據(jù)請求消息,Slave端接收到正確消息后就可以發(fā)送數(shù)據(jù)到Master端以響應請求;Master端也可以直接發(fā)消息修改Slave端的數(shù)據(jù),實現(xiàn)雙向讀寫。

Modbus協(xié)議需要對數(shù)據(jù)進行校驗,串行協(xié)議中除有奇偶校驗外,ASCII模式采用LRC校驗,RTU模式采用16位CRC校驗,但TCP模式?jīng)]有額外規(guī)定校驗,因為TCP協(xié)議是一個面向連接的可靠協(xié)議。另外,Modbus采用主從方式定時收發(fā)數(shù)據(jù),在實際使用中如果某Slave站點斷開后(如故障或關機),Master端可以診斷出來,而當故障修復后,網(wǎng)絡又可自動接通。因此,Modbus協(xié)議的可靠性較好。

對于Modbus的ASCII、RTU和TCP協(xié)議來說,其中TCP和RTU協(xié)議非常類似,我們只要把RTU協(xié)議的兩個字節(jié)的校驗碼去掉,然后在RTU協(xié)議的開始加上5個0和一個6并通過TCP/IP網(wǎng)絡協(xié)議發(fā)送出去即可。

1通訊傳送方式:

通訊傳送分為獨立的信息頭,和發(fā)送的編碼數(shù)據(jù)。以下的通訊傳送方式定義也與ModBusRTU通訊規(guī)約相兼容:

初始結構 = ≥4字節(jié)的時間

地址碼 = 1 字節(jié)

功能碼 = 1 字節(jié)

數(shù)據(jù)區(qū) = N 字節(jié)

錯誤校檢 = 16位CRC碼

結束結構 = ≥4字節(jié)的時間

地址碼:地址碼為通訊傳送的第一個字節(jié)。這個字節(jié)表明由用戶設定地址碼的從機將接收由主機發(fā)送來的信息。并且每個從機都有具有唯一的地址碼,并且響應回送均以各自的地址碼開始。主機發(fā)送的地址碼表明將發(fā)送到的從機地址,而從機發(fā)送的地址碼表明回送的從機地址。

功能碼:通訊傳送的第二個字節(jié)。ModBus通訊規(guī)約定義功能號為1到127。本儀表只利用其中的一部分功能碼。作為主機請求發(fā)送,通過功能碼告訴從機執(zhí)行什么動作。作為從機響應,從機發(fā)送的功能碼與從主機發(fā)送來的功能碼一樣,并表明從機已響應主機進行操作。如果從機發(fā)送的功能碼的最高位為1(比如功能碼大與此同時127),則表明從機沒有響應操作或發(fā)送出錯。

數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)是根據(jù)不同的功能碼而不同。數(shù)據(jù)區(qū)可以是實際數(shù)值、設置點、主機發(fā)送給從機或從機發(fā)送給主機的地址。

CRC碼:二字節(jié)的錯誤檢測碼。

2通訊規(guī)約:

當通訊命令發(fā)送至儀器時,符合相應地址碼的設備接通訊命令,并除去地址碼,讀取信息,如果沒有出錯,則執(zhí)行相應的任務;然后把執(zhí)行結果返送給發(fā)送者。返送的信息中包括地址碼、執(zhí)行動作的功能碼、執(zhí)行動作后結果的數(shù)據(jù)以及錯誤校驗碼。如果出錯就不發(fā)送任何信息。

1.信息幀結構

地址碼 功能碼 數(shù)據(jù)區(qū) 錯誤校驗碼

8位 8位 N × 8位 16位

地址碼:地址碼是信息幀的第一字節(jié)(8位),從0到255。這個字節(jié)表明由用戶設置地址的從機將接收由主機發(fā)送來的信息。每個從機都必須有唯一的地址碼,并且只有符合地址碼的從機才能響應回送。當從機回送信息時,相當?shù)牡刂反a表明該信息來自于何處。

功能碼:主機發(fā)送的功能碼告訴從機執(zhí)行什么任務。表1-1列出的功能碼都有具體的含義及操作。

數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)包含需要從機執(zhí)行什么動作或由從機采集的返送信息。這些信息可以是數(shù)值、參考地址等等。例如,功能碼告訴從機讀取寄存器的值,則數(shù)據(jù)區(qū)必需包含要讀取寄存器的起始地址及讀取長度。對于不同的從機,地址和數(shù)據(jù)信息都不相同。

錯誤校驗碼:主機或從機可用校驗碼進行判別接收信息是否出錯。有時,由于電子噪聲或其它一些干擾,信息在傳輸過程中會發(fā)生細微的變化,錯誤校驗碼保證了主機或從機對在傳送過程中出錯的信息不起作用。這樣增加了系統(tǒng)的安全和效率。錯誤校驗采用CRC-16校驗方法。

注:信息幀的格式都基本相同:地址碼、功能碼、數(shù)據(jù)區(qū)和錯誤校驗碼。

2.錯誤校驗

冗余循環(huán)碼(CRC)包含2個字節(jié),即16位二進制。CRC碼由發(fā)送設備計算,放置于發(fā)送信息的尾部。接收信息的設備再重新計算接收到信息的 CRC碼,比較計算得到的CRC碼是否與接收到的相符,如果兩者不相符,則表明出錯。

3Modbus支持的功能碼:關于RS485串口通訊,這篇終于講透了!

關于RS485串口通訊,這篇終于講透了!1、01號命令,讀可讀寫數(shù)字量寄存器(線圈狀態(tài)):

計算機發(fā)送命令:[設備地址] [命令號01] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗的低8位] [CRC校驗的高8位]

例:[11][01][00][13][00][25][CRC低][CRC高]

意義如下:

<1>設備地址:在一個485總線上可以掛接多個設備,此處的設備地址表示想和哪一個設備通訊。例子中為想和17號(十進制的17是十六進制的11)通訊。

<2>命令號01:讀取數(shù)字量的命令號固定為01。

<3>起始地址高8位、低8位:表示想讀取的開關量的起始地址(起始地址為0)。比如例子中的起始地址為19。

<4>寄存器數(shù)高8位、低8位:表示從起始地址開始讀多少個開關量。例子中為37個開關量。

<5>CRC校驗:是從開頭一直校驗到此之前。

設備響應:[設備地址] [命令號01] [返回的字節(jié)個數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n] [CRC校驗的高8位] [CRC校驗的低8位]

例:[11][01][05][CD][6B][B2][0E][1B] [CRC高] [CRC低]

意義如下:

<1>設備地址和命令號和上面的相同。

<2>返回的字節(jié)個數(shù):表示數(shù)據(jù)的字節(jié)個數(shù),也就是數(shù)據(jù)1,2...n中的n的值。

<3>數(shù)據(jù)1...n:由于每一個數(shù)據(jù)是一個8位的數(shù),所以每一個數(shù)據(jù)表示8個開關量的值,每一位為0表示對應的開關斷開,為1表示閉合。比如例子中,表示20號(索引號為19)開關閉合,21號斷開,22閉合,23閉合,24斷開,25斷開,26閉合,27閉合...如果詢問的開關量不是8的整倍數(shù),那么最后一個字節(jié)的高位部分無意義,置為0。

<4>CRC校驗同上。

2、05號命令,寫數(shù)字量(線圈狀態(tài)):

計算機發(fā)送命令:[設備地址] [命令號05] [需下置的寄存器地址高8位] [低8位] [下置的數(shù)據(jù)高8位] [低8位] [CRC校驗的低8位] [CRC校驗的高8位]

例:[11][05][00][AC][FF][00][CRC高][CRC低]

意義如下:

<1>設備地址和上面的相同。

<2>命令號:寫數(shù)字量的命令號固定為05。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的開關的地址。

<4>下置的數(shù)據(jù)高8位,低8位:表明需要下置的開關量的狀態(tài)。例子中為把該開關閉合。注意,此處只可以是[FF][00]表示閉合[00][00]表示斷開,其他數(shù)值非法。

<5>注意此命令一條只能下置一個開關量的狀態(tài)。

設備響應:如果成功把計算機發(fā)送的命令原樣返回,否則不響應。

3、03號命令,讀可讀寫模擬量寄存器(保持寄存器):

計算機發(fā)送命令:[設備地址] [命令號03] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗的高8位] [CRC校驗的低8位]

例:[11][03][00][6B][00][03] [CRC高][CRC低]

意義如下:

<1>設備地址和上面的相同。

<2>命令號:讀模擬量的命令號固定為03。

<3>起始地址高8位、低8位:表示想讀取的模擬量的起始地址(起始地址為0)。比如例子中的起始地址為107。

<4>寄存器數(shù)高8位、低8位:表示從起始地址開始讀多少個模擬量。例子中為3個模擬量。注意,在返回的信息中一個模擬量需要返回兩個字節(jié)。

設備響應:[設備地址] [命令號03] [返回的字節(jié)個數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n] [CRC校驗的高8位] [CRC校驗的低8位]

例:[11][03][06][02][2B][00][00][00][64] [CRC高] [CRC低]

意義如下:

<1>設備地址和命令號和上面的相同。

<2>返回的字節(jié)個數(shù):表示數(shù)據(jù)的字節(jié)個數(shù),也就是數(shù)據(jù)1,2...n中的n的值。例子中返回了3個模擬量的數(shù)據(jù),因為一個模擬量需要2個字節(jié)所以共6個字節(jié)。

<3>數(shù)據(jù)1...n:其中[數(shù)據(jù)1][數(shù)據(jù)2]分別是第1個模擬量的高8位和低8位,[數(shù)據(jù)3][數(shù)據(jù)4]是第2個模擬量的高8位和低8位,以此類推。例子中返回的值分別是555,0,100。

<4>CRC校驗同上。

4、06號命令,寫單個模擬量寄存器(保持寄存器):

計算機發(fā)送命令:[設備地址] [命令號06] [需下置的寄存器地址高8位] [低8位] [下置的數(shù)據(jù)高8位] [低8位] [CRC校驗的高8位] [CRC校驗的低8位]

例:[11][06][00][01][00][03] [CRC高] [CRC低]

意義如下:

<1>設備地址和上面的相同。

<2>命令號:寫模擬量的命令號固定為06。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模擬量寄存器的地址。

<4>下置的數(shù)據(jù)高8位,低8位:表明需要下置的模擬量數(shù)據(jù)。比如例子中就把1號寄存器的值設為3。

<5>注意此命令一條只能下置一個模擬量的狀態(tài)。

設備響應:如果成功把計算機發(fā)送的命令原樣返回,否則不響應。

5、16號命令,寫多個模擬量寄存器(保持寄存器):

計算機發(fā)送命令:[設備地址] [命令號16] [需下置的寄存器地址高8位] [低8位] [數(shù)據(jù)數(shù)量高8位] [數(shù)據(jù)數(shù)量低8位] [下置的數(shù)據(jù)高8位] [低8位][……][……] [CRC校驗的高8位] [CRC校驗的低8位]

例:[11][16][00][01][00][01][00][05] [CRC高] [CRC低]

意義如下:

<1>設備地址和上面的相同。

<2>命令號:寫模擬量的命令號固定為16。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模擬量寄存器的地址。

<4>需下置的數(shù)據(jù)數(shù)量高8位,低8位:表明了需要下置的數(shù)據(jù)數(shù)量,這里為1。

<5>下置的數(shù)據(jù)高8位,低8位:表明需要下置的模擬量數(shù)據(jù)。比如例子中就把1號寄存器的值設為5。

設備響應:如果成功把計算機返回的如下命令,否則不響應。

設備響應:[設備地址] [命令號16] [需下置的寄存器地址高8位] [低8位] [數(shù)據(jù)數(shù)量高8位] [數(shù)據(jù)數(shù)量低8位] [CRC校驗的高8位] [CRC校驗的低8位],如上例返回:

[11][16][00][01][00][01] [CRC高] [CRC低]
來源:網(wǎng)絡版權歸原作者所有,如有侵權,請聯(lián)系刪除。

21ic電子網(wǎng)

掃描二維碼,關注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉
關閉