如何解決串口通信的理論極限及其實(shí)現(xiàn)問(wèn)題?
本文所說(shuō)的串口,是指RS-232和RS-485串行口,不是硬盤SATA串口,也不是通用串口總線USB。RS-485是對(duì)RS-232進(jìn)行了節(jié)點(diǎn)和距離的改進(jìn)后形成的標(biāo)準(zhǔn):RS-485將只能夠進(jìn)行一對(duì)一通信的RS-232改進(jìn)到了可接128個(gè)節(jié)點(diǎn),距離從RS-232的15米改進(jìn)到1200米。在下一代RS-485總線的概念下,波仕卡科技將原本用于延長(zhǎng)RS-485通信距離并且提高負(fù)載能力的中繼器與用于信號(hào)轉(zhuǎn)換的RS-232/RS-485轉(zhuǎn)換器進(jìn)行綁定,推出RS-232/RS-485中繼轉(zhuǎn)換器,同時(shí)對(duì)RS-485信號(hào)的流向進(jìn)行整理,使得用戶在使用時(shí)感覺(jué)就是一個(gè)RS-232與RS-485的轉(zhuǎn)換器。這種思想體現(xiàn)在最新的《一種帶中繼功能的串口轉(zhuǎn)換器》專利文獻(xiàn)中(CN201420502117)。對(duì)于波仕卡科技而言,下一代RS-485總線的變化就是要不受最遠(yuǎn)距離和節(jié)點(diǎn)數(shù)的限制,下一代RS-232/RS-485中繼轉(zhuǎn)換器包括無(wú)源型的 485A2以及性能更加通用的有源型485A2+。在這個(gè)思路中,波仕卡科技的RS-232/RS-485中繼轉(zhuǎn)換器突破了傳統(tǒng)RS-485總線的節(jié)點(diǎn)數(shù)和距離的限制。每接一個(gè)RS-232/RS-485中繼轉(zhuǎn)換器,RS-485信號(hào)都得到了中繼增強(qiáng),所以這種RS-485總線不再受一條RS-485總線最遠(yuǎn)1200米的限制,而是當(dāng)接N個(gè)轉(zhuǎn)換器時(shí)就可以達(dá)到1200米的N倍距離,N是否不受限制本文將討論N的理論極限。假設(shè)傳統(tǒng)的RS-485總線有接負(fù)載個(gè)數(shù)的限制為128個(gè),就是同一條RS-485總線中最多掛128個(gè)RS-485口。那么使用N個(gè)新型的485A2或 485A2+型RS-232/RS-485中繼轉(zhuǎn)換器構(gòu)成的RS-485總線中,由于接入的轉(zhuǎn)換器將RS-485總線分開(kāi)為了N段(每一段之間相當(dāng)于有一個(gè)中繼器),所以當(dāng)接N個(gè)轉(zhuǎn)換器時(shí)就可以達(dá)到128×N倍的負(fù)載個(gè)數(shù),N是否受負(fù)載數(shù)限制本文也將討論。
1、突破RS-485節(jié)點(diǎn)和距離極限的布線方式
RS-232/RS-485中繼轉(zhuǎn)換器有一個(gè)DB-9孔的RS-232口和2個(gè)帶接線端子的RS-485。DB-9孔端用于接RS-232口、DB-9 針端通過(guò)接線端子板接RS-485口。485A2的接線端子板上有5個(gè)接線端子(A1、B1、GND、B2、A2) ,為兩個(gè)RS-485口,共用GND地線。A1、B1與A2、B2是功能完全相同的,不分方向。 兩個(gè)RS-485口具有相互中繼的功能。
圖1
485A2應(yīng)用的RS-485多機(jī)通信的典型接線圖以及485A2+產(chǎn)品圖,如果串口設(shè)備只有RS-485口則可以配接485A2+。若每一段RS-485的距離為1200米和128個(gè),則整個(gè)RS-485系統(tǒng)的距離達(dá)到(N×1200米)、節(jié)點(diǎn)數(shù)達(dá)到(N×128)??梢钥闯?,使用了485A2的RS-485總線布線極其簡(jiǎn)潔。最遠(yuǎn)兩端可以用485A,也可以用485A2。注意整個(gè)RS- 485系統(tǒng)共用GND線。
2、RS-485多機(jī)通信節(jié)點(diǎn)數(shù)的極限
假設(shè)RS-485通信的地址編碼為8位,那么最多的節(jié)點(diǎn)數(shù)就是2^8=256;假設(shè)RS-485通信的地址編碼為10位,那么最多的節(jié)點(diǎn)數(shù)就是2^10=1024。10位已經(jīng)多到極少用到。這個(gè)總線中的RS-485節(jié)點(diǎn)數(shù)的極限完全取決于通信軟件 ,與總線中所接的RS-485中繼轉(zhuǎn)換器個(gè)數(shù)沒(méi)有關(guān)系。實(shí)際上,因?yàn)槭躌S-485接口芯片性能的限制,每一段RS-485目前最多接128個(gè)節(jié)點(diǎn),所以要達(dá)到256個(gè)的極限就得至少接一個(gè)485A2中繼轉(zhuǎn)換器,要達(dá)到1024極限就要至少8個(gè)485A2中繼轉(zhuǎn)換器。
3、完全失敗的RS-485通信距離的理論極限
假設(shè)波特率為9600bps,就是每秒9600位。每個(gè)數(shù)據(jù)有1個(gè)起始位、8個(gè)數(shù)據(jù)位、1個(gè)校驗(yàn)位、1個(gè)停止位,一共11位。也就是傳輸一個(gè)數(shù)據(jù) (1byte)的時(shí)間是11/9600=0.001145s。在這個(gè)時(shí)間內(nèi)電磁波的傳輸距離(也就是光速為299792458m/s )為343512米,即343.5千米。
如果電信號(hào)的電磁波延時(shí)達(dá)到0.001145s(大約1.25ms),那么就會(huì)延時(shí)到錯(cuò)位一個(gè)數(shù)據(jù),這樣就無(wú)法正常通信。怎么理解?在某一時(shí)刻主機(jī)以9600bps同時(shí)向所有從機(jī)發(fā)送一組信號(hào)(比如ABCD),從機(jī)都立即響應(yīng)回答數(shù)據(jù),注意在 9600bps下沒(méi)傳一個(gè)數(shù)據(jù)的時(shí)間差為1.25ms,也就是發(fā)A比發(fā)B早1.25ms,發(fā)B比發(fā)C早1.25ms……。那么主機(jī)收到的最遠(yuǎn)的節(jié)點(diǎn)的回答 A的數(shù)據(jù)與1.25ms后最近的節(jié)點(diǎn)回答B(yǎng)的數(shù)據(jù)重疊,這樣就無(wú)法通信。
也就是RS-485的理論傳輸?shù)淖钸h(yuǎn)距離在9600bps時(shí)只有大約343512米。假設(shè)每1200米進(jìn)行一次中繼,343512/1200=286,也就是說(shuō)要達(dá)到RS-485的理論極限,需要至少286次中繼延長(zhǎng)。
4、無(wú)誤碼的RS-485通信距離的理論極限
并非只有當(dāng)整個(gè)11位數(shù)據(jù)完全重疊時(shí)才無(wú)法通信,實(shí)際上只要有1位錯(cuò)位存在誤碼就不好。雖然有時(shí)候軟件有一定糾錯(cuò)功能,容許存在一定程度的誤碼情況下也可以傳輸數(shù)據(jù),但是我們還是要弄清楚無(wú)誤碼的極限。
假設(shè)波特率為9600bps,就是每秒9600位。也就是傳輸一位(1bite)的時(shí)間是1/9600=0.000104s。在這個(gè)時(shí)間內(nèi)電磁波的傳輸距離(也就是光速為299792458m/s )為31228米。如果電信號(hào)的電磁波延時(shí)達(dá)到0.000104s(大約0.1ms),那么就會(huì)延時(shí)到錯(cuò)位一個(gè)數(shù)據(jù)位,這樣就會(huì)出現(xiàn)誤碼。怎么理解?在某一時(shí)刻主機(jī)收到的最遠(yuǎn)的節(jié)點(diǎn)的數(shù)據(jù)會(huì)與大約0.1ms前最近的節(jié)點(diǎn)發(fā)送的數(shù)據(jù)重疊一位,這樣就有誤碼了。也就是RS-485的無(wú)誤碼通信的理論最遠(yuǎn)距離在 9600bps時(shí)只有大約31KM。假設(shè)每1200米進(jìn)行一次中繼,31228/1200=26.02,也就是說(shuō)要達(dá)到RS-485的理論極限,需要至少 26次中繼延長(zhǎng)。
以上可以看出,RS-485通信距離的理論極限與波特率成反比,波特率越高極限距離越短。當(dāng)波特率為 115200bps時(shí)(=12×9600),無(wú)誤碼傳輸?shù)睦碚摌O限距離為31228/12=2602米。只有大約2.6km!這也難怪RS-485的遠(yuǎn)程通信只說(shuō)9600時(shí)傳輸多遠(yuǎn),幾乎不提115200bps。
5、其它介質(zhì)和其它總線的理論極限
以上的RS-485距離極限343512米以及31228米(9600bps)與傳輸介質(zhì)無(wú)關(guān),就是說(shuō)用光纖傳輸RS-485最遠(yuǎn)也是這么多,無(wú)線也是一樣。 以上的無(wú)誤碼RS-485距離極限31228米(9600bps)與協(xié)議無(wú)關(guān),就是說(shuō)用CAN、PROFIBIUS最遠(yuǎn)也是這么多,原理是一樣的。以上的通信完全失敗的RS-485距離極限343512米(9600bps)與數(shù)據(jù)位數(shù)有關(guān),而且成正比例,就是說(shuō)用CAN2.0(29位)比 CAN1.0(11位)的極限更加大,大一倍以上。
到這里,大家一定會(huì)驚訝RS-485通信距離極限之短。互聯(lián)網(wǎng)、手機(jī)、GPS是如何傳輸幾乎無(wú)限遠(yuǎn)距離的呢?互聯(lián)網(wǎng)和手機(jī)通信幾乎無(wú)法實(shí)時(shí),而GPS對(duì)延時(shí)的計(jì)算及其精確。以后將另外專文討論。[!--empirenews.page--]