新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何解決串口通信的理論極限及其實現(xiàn)問題?

如何解決串口通信的理論極限及其實現(xiàn)問題?

作者: 時間:2018-08-07 來源:網(wǎng)絡(luò) 收藏

本文所說的串口,是指RS-232和RS-485串行口,不是硬盤SATA串口,也不是通用串口總線USB。RS-485是對RS-232進(jìn)行了節(jié)點和距離的改進(jìn)后形成的標(biāo)準(zhǔn):RS-485將只能夠進(jìn)行一對一通信的RS-232改進(jìn)到了可接128個節(jié)點,距離從RS-232的15米改進(jìn)到1200米。在下一代RS-485總線的概念下,波仕卡科技將原本用于延長RS-485通信距離并且提高負(fù)載能力的中繼器與用于信號轉(zhuǎn)換的RS-232/RS-485轉(zhuǎn)換器進(jìn)行綁定,推出RS-232/RS-485中繼轉(zhuǎn)換器,同時對RS-485信號的流向進(jìn)行整理,使得用戶在使用時感覺就是一個RS-232與RS-485的轉(zhuǎn)換器。這種思想體現(xiàn)在最新的《一種帶中繼功能的串口轉(zhuǎn)換器》專利文獻(xiàn)中(CN201420502117)。對于波仕卡科技而言,下一代RS-485總線的變化就是要不受最遠(yuǎn)距離和節(jié)點數(shù)的限制,下一代RS-232/RS-485中繼轉(zhuǎn)換器包括無源型的 485A2以及性能更加通用的有源型485A2+。在這個思路中,波仕卡科技的RS-232/RS-485中繼轉(zhuǎn)換器突破了傳統(tǒng)RS-485總線的節(jié)點數(shù)和距離的限制。每接一個RS-232/RS-485中繼轉(zhuǎn)換器,RS-485信號都得到了中繼增強(qiáng),所以這種RS-485總線不再受一條RS-485總線最遠(yuǎn)1200米的限制,而是當(dāng)接N個轉(zhuǎn)換器時就可以達(dá)到1200米的N倍距離,N是否不受限制本文將討論N的。假設(shè)傳統(tǒng)的RS-485總線有接負(fù)載個數(shù)的限制為128個,就是同一條RS-485總線中最多掛128個RS-485口。那么使用N個新型的485A2或 485A2+型RS-232/RS-485中繼轉(zhuǎn)換器構(gòu)成的RS-485總線中,由于接入的轉(zhuǎn)換器將RS-485總線分開為了N段(每一段之間相當(dāng)于有一個中繼器),所以當(dāng)接N個轉(zhuǎn)換器時就可以達(dá)到128×N倍的負(fù)載個數(shù),N是否受負(fù)載數(shù)限制本文也將討論。

本文引用地址:http://butianyuan.cn/article/201808/385735.htm

1、突破RS-485節(jié)點和距離極限的布線方式

RS-232/RS-485中繼轉(zhuǎn)換器有一個DB-9孔的RS-232口和2個帶接線端子的RS-485。DB-9孔端用于接RS-232口、DB-9 針端通過接線端子板接RS-485口。485A2的接線端子板上有5個接線端子(A1、B1、GND、B2、A2) ,為兩個RS-485口,共用GND地線。A1、B1與A2、B2是功能完全相同的,不分方向。 兩個RS-485口具有相互中繼的功能。


圖1

485A2應(yīng)用的RS-485多機(jī)通信的典型接線圖以及485A2+產(chǎn)品圖,如果串口設(shè)備只有RS-485口則可以配接485A2+。若每一段RS-485的距離為1200米和128個,則整個RS-485系統(tǒng)的距離達(dá)到(N×1200米)、節(jié)點數(shù)達(dá)到(N×128)。可以看出,使用了485A2的RS-485總線布線極其簡潔。最遠(yuǎn)兩端可以用485A,也可以用485A2。注意整個RS- 485系統(tǒng)共用GND線。

2、RS-485多機(jī)通信節(jié)點數(shù)的極限

假設(shè)RS-485通信的地址編碼為8位,那么最多的節(jié)點數(shù)就是2^8=256;假設(shè)RS-485通信的地址編碼為10位,那么最多的節(jié)點數(shù)就是2^10=1024。10位已經(jīng)多到極少用到。這個總線中的RS-485節(jié)點數(shù)的極限完全取決于通信軟件 ,與總線中所接的RS-485中繼轉(zhuǎn)換器個數(shù)沒有關(guān)系。實際上,因為受RS-485接口芯片性能的限制,每一段RS-485目前最多接128個節(jié)點,所以要達(dá)到256個的極限就得至少接一個485A2中繼轉(zhuǎn)換器,要達(dá)到1024極限就要至少8個485A2中繼轉(zhuǎn)換器。

3、完全失敗的RS-485通信距離的

假設(shè)波特率為9600bps,就是每秒9600位。每個數(shù)據(jù)有1個起始位、8個數(shù)據(jù)位、1個校驗位、1個停止位,一共11位。也就是傳輸一個數(shù)據(jù) (1byte)的時間是11/9600=0.001145s。在這個時間內(nèi)電磁波的傳輸距離(也就是光速為299792458m/s )為343512米,即343.5千米。

如果電信號的電磁波延時達(dá)到0.001145s(大約1.25ms),那么就會延時到錯位一個數(shù)據(jù),這樣就無法正常通信。怎么理解?在某一時刻主機(jī)以9600bps同時向所有從機(jī)發(fā)送一組信號(比如ABCD),從機(jī)都立即響應(yīng)回答數(shù)據(jù),注意在 9600bps下沒傳一個數(shù)據(jù)的時間差為1.25ms,也就是發(fā)A比發(fā)B早1.25ms,發(fā)B比發(fā)C早1.25ms……。那么主機(jī)收到的最遠(yuǎn)的節(jié)點的回答 A的數(shù)據(jù)與1.25ms后最近的節(jié)點回答B(yǎng)的數(shù)據(jù)重疊,這樣就無法通信。

也就是RS-485的理論傳輸?shù)淖钸h(yuǎn)距離在9600bps時只有大約343512米。假設(shè)每1200米進(jìn)行一次中繼,343512/1200=286,也就是說要達(dá)到RS-485的,需要至少286次中繼延長。

4、無誤碼的RS-485通信距離的理論極限

并非只有當(dāng)整個11位數(shù)據(jù)完全重疊時才無法通信,實際上只要有1位錯位存在誤碼就不好。雖然有時候軟件有一定糾錯功能,容許存在一定程度的誤碼情況下也可以傳輸數(shù)據(jù),但是我們還是要弄清楚無誤碼的極限。

假設(shè)波特率為9600bps,就是每秒9600位。也就是傳輸一位(1bite)的時間是1/9600=0.000104s。在這個時間內(nèi)電磁波的傳輸距離(也就是光速為299792458m/s )為31228米。如果電信號的電磁波延時達(dá)到0.000104s(大約0.1ms),那么就會延時到錯位一個數(shù)據(jù)位,這樣就會出現(xiàn)誤碼。怎么理解?在某一時刻主機(jī)收到的最遠(yuǎn)的節(jié)點的數(shù)據(jù)會與大約0.1ms前最近的節(jié)點發(fā)送的數(shù)據(jù)重疊一位,這樣就有誤碼了。也就是RS-485的無誤碼通信的理論最遠(yuǎn)距離在 9600bps時只有大約31KM。假設(shè)每1200米進(jìn)行一次中繼,31228/1200=26.02,也就是說要達(dá)到RS-485的理論極限,需要至少 26次中繼延長。

以上可以看出,RS-485通信距離的理論極限與波特率成反比,波特率越高極限距離越短。當(dāng)波特率為 115200bps時(=12×9600),無誤碼傳輸?shù)睦碚摌O限距離為31228/12=2602米。只有大約2.6km!這也難怪RS-485的遠(yuǎn)程通信只說9600時傳輸多遠(yuǎn),幾乎不提115200bps。

5、其它介質(zhì)和其它總線的理論極限

以上的RS-485距離極限343512米以及31228米(9600bps)與傳輸介質(zhì)無關(guān),就是說用光纖傳輸RS-485最遠(yuǎn)也是這么多,無線也是一樣。 以上的無誤碼RS-485距離極限31228米(9600bps)與協(xié)議無關(guān),就是說用CAN、PROFIBIUS最遠(yuǎn)也是這么多,原理是一樣的。以上的通信完全失敗的RS-485距離極限343512米(9600bps)與數(shù)據(jù)位數(shù)有關(guān),而且成正比例,就是說用CAN2.0(29位)比 CAN1.0(11位)的極限更加大,大一倍以上。

到這里,大家一定會驚訝RS-485通信距離極限之短?;ヂ?lián)網(wǎng)、手機(jī)、GPS是如何傳輸幾乎無限遠(yuǎn)距離的呢?互聯(lián)網(wǎng)和手機(jī)通信幾乎無法實時,而GPS對延時的計算及其精確。以后將另外專文討論。



關(guān)鍵詞: 串口通信 理論極限

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉