<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者: 時間:2018-08-07 來源:網絡 收藏

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

          本文引用地址:http://www.ex-cimer.com/article/201808/385735.htm

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

          RS-232/RS-485中繼轉換器有一個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應用的RS-485多機通信的典型接線圖以及485A2+產品圖,如果串口設備只有RS-485口則可以配接485A2+。若每一段RS-485的距離為1200米和128個,則整個RS-485系統(tǒng)的距離達到(N×1200米)、節(jié)點數達到(N×128)??梢钥闯?,使用了485A2的RS-485總線布線極其簡潔。最遠兩端可以用485A,也可以用485A2。注意整個RS- 485系統(tǒng)共用GND線。

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

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

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

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

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

          也就是RS-485的理論傳輸的最遠距離在9600bps時只有大約343512米。假設每1200米進行一次中繼,343512/1200=286,也就是說要達到RS-485的,需要至少286次中繼延長。

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

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

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

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

          5、其它介質和其它總線的理論極限

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

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



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();