两线 RS485 电路

1. 有冇人記得,图中各电阻有乜用?
2. 以前跟过这线路去做, 但反而不能通讯, 最后拆了R3,4,5才成功。只係得兩部机,一去一部咁驳。
3. 知道R4係TERMINATE用。头尾兩端要落。但如果係STAR接法(50部SLAVE直接驳去一部MASTER),咁边部机要落呢??
RS485.jpg
2015-5-28 13:04

落吾落terminator要睇行咩baud rate, 條線幾長。其他電阻最好睇返你用嗰粒Driver 嘅data sheet,我以前用MAX一粒電阻都冇用行19200bps 線長110m都OK

基本上terminator 要落每條線尾,star每一個node都要。用star我覺得會好複雜,可以嘅話我會喺master 用幾只driver黎推幾個segment

TOP

我都试过用唔同DRIVER, 对同一驳法,也有不同结果。 也试过跟REF DESIGN做, 結果反而唔得, 可能买了假货吧。

如果每條线尾都落, 阻阬会否太低? 假切十个NODE, 就得返十份一。

TOP

回覆 3# tonychengtl

如果每條线尾都落, 阻阬会否太低? 假切十个NODE, 就得返十份一。

對,這就是問題所在

TOP




STAR? 多個5m 落 data splitter 啦!

TOP

本帖最後由 Charcoal99 於 2015-5-29 16:03 編輯

50個slave 星形接法?  按實用通訊距離來說, 幾乎可以說不會獲得穩定的通訊。

以下引自 wiki http://zh.wikipedia.org/wiki/EIA-485
「EIA-485推薦使用在對等網路中,線型、匯流排型,不能是星型、環型網路
理想情況下EIA-485需要2個終接電阻,其阻值要求等於傳輸電纜的特性阻抗。
沒有特性阻抗的話,當所有的裝置都靜止或者沒有能量的時候就會產生雜訊,而且線移需要雙端的電壓差。
沒有終接電阻的話,會使得較快速的傳送端產生多個資料訊號的邊緣,這其中的一些是不正確的。
之所以不能使用星型或者環型的拓撲結構是由於這些結構有不必要的反映,
過低或者過高的終接電阻可以產生電磁干擾。」

誠如你所知曉, 50個 slave 都加上終端電阻(行內俗稱尾阻)是不切實際的, 負載會變得很大。
但不加的話會做成訊號因負載阻抗不匹配而部份逸出數據線產生EMI及大部份沿數據線反射(reflection)。
反射好比模擬視頻的鬼影, 疊加在原數碼的波形上做成數據錯誤。

R3和R5被稱為 fail-safe 偏壓電阻, 設計上應只加在當中的一個device上, 由於 485通常行 「一主多從」結構,
所以通常設在主設備上。 需要fail-safe 偏壓的原因是 EIA-485 標準上所定義的接收端電氣特性,
485.jpg
2015-5-29 12:48

當AB端的電壓差低於-200mV時,輸出(Max485的Rx)為1,高於+200mV時輸出為0,
但-200至+200mV之空窗期則無定義, 具體輸出狀態隨 IC 生產廠設計及批次而定。

這裡引發一個問題, 不施加偏壓時, 當所有device都在監聽狀態時, 總線上設備都是收訊方而並無發訊方,
所有device的AB端都處於高阻抗狀態, A B 端都在訊號懸浮狀態而變得對噪聲敏感。
按上定義, 各device 485 Rx接到CPU 的狀態都是未定義的, 總線噪聲都會變成cpu的訊號。

很多CHing覺得這個沒有加好像也能工作並沒問題,
其一是他們沒有遇上大型或複雜的project, (如多device、長距離, 環境燥音大等)。
其二是通訊protocol及軟件有檢錯及容錯能力, 有錯誤的Frame大部份只會丢失而不會出錯而已。
其三是485通訊數據多有時域覆蓋性, 即數據變量會定時不斷發出, 就算出錯了也會被後來正確數據覆蓋掉。
但只要在通訊線上做Bit error rate test 便可知曉雜訊的影響,
不把這個排除掉很多時產品Demo時沒問題但現場長時間運行便偶爾出錯或經常出錯。

不加Fail-safe電阻也可能會令正常的發訊被接收方錯誤理解.
一部份 485 IC(除了加上Fail-safe安全以外), 在總線沒發訊方及無偏壓時會輸出0,
當其中一個device轉為發訊方並馬上發出一個 232數據框, 由於接收方的 Start bit detection 需要一個
由 1->0 的狀態轉變觸發, 接收方由於監聽時只看到0, 那個start bit只是0->0沒有由1->0, 便被食掉了,
做成第一框總是失敗。
有些Firmware 在 DIR腳加上了發訊delay來迴避了這一問題, 即DIR轉到發送狀態後稍為delay一下,
CPU 232 Tx 腳不發送數據時狀為1, 讓 485 先送這1出去, 然後才發Start bit.
不delay或delay不夠的話, 總線上只會看到 glitch, 做成有些device能收到start bit, 有些則收不到。

加上Fail-safe 偏壓可確保總線無發訊方時, AB壓差低於-200mV, 所有監聽 LineDriver Rx 輸出均為 1.
全程通訊除了 0/1 轉換跨越外不會停駐在 -200mV 至 200mV 的空窗值域。
可靠的數據通道才是王道, 能免去以後的不確定性。
而且總線可靠的話才能使你的產品達到最大的兼容度及可靠度。

R1及R2是LineDriver限流保護電阻, 一般不參與線段阻抗匹配,所以一般加在 R4 後方至 LineDriver間。
由於總線電流不大, 一般作法是總線保護以限壓為優先, 除非考慮戶外或惡劣環境下運作, 大部份只會加上TVS.

TOP

本帖最後由 raywan 於 2015-5-29 13:39 編輯
我都试过用唔同DRIVER, 对同一驳法,也有不同结果。 也试过跟REF DESIGN做, 結果反而唔得, 可能买了假货吧。 ...
tonychengtl 發表於 2015-5-28 16:49


可能佢比左rs-232,唔係rs-485 driver,如果你想睇,我都有好多doc講rs-485設計/應用

    如果你有睇清楚rs-485 specification, 如果行遠距離通訊,通常條線要twisted pair
但係我見到你唔係用twisted pair又行遠距離通訊,會有data lost,但係我見你postO的圖 rs-485點解無ground? 如果行遠距離通訊,一定要接Tx-Rx-ground, Tx~Rx 一定要twisted pair ground可以分離/shielded,但係要同一條線
如果唔接ground都可以,只可以行幾M,多數都係一個master/slave,無ground遠距離通訊就會有好多問題,好多noise同error,一定要用CRC 先可以,但係都有data lost,行得唔快

TOP

多谢各位详细说明。好有用。

如果要加TVS,应该加一粒在AB位,还是要加三粒(AB,A去地,B去地)?

master 同 slave 有冇不同做法?

也有点擔心TVS嘅阻阬会影响通信。

TOP

如果在测试中用11.5k成功通讯, 是否可以睇成56k, 33.6k 或更低的速度肯定冇事?

TOP

如果要加TVS 的話, 主流做法是
1) 只有 A-gnd 及 B-gnd,  
2) A-gnd , B-gnd 再加上 A-B.  只加A-B 的並不多見,
一來在雙絞線上已起了共模噪聲的抑制作用, 二來A-gnd 及 B-gnd 已起了間接的 A-B 作用, TVS 備用時內阻都很大, 一般不影響通訊, 反而有設計師不想短距離跨接太多元件, PCB弄得太複雜。

單指硬件而言, RS-485 並無「主-從」之分, 「主-從」之分是在軟件層面上確立的,
主機如果不在總線末端, 並不需要加終端電阻, 也無規定Fail-safe偏壓一定要在主機上實現。既然如此, 硬件保護也是一樣。

你是說 115.2k bps 吧,  只能說置信程度 Confidence Level 相對高。
一般在生產上, 會小批量全檢, 先確立生產工序所帶來的產品參數一致性,
然後定期抽檢, 並用良品率建立置信度迴環, 置信度值高的時候, 一般便只檢查
115.2k 及 9600 bps, 並抽檢中間值, 當某一批次有數據異常或外間有異常使用回饋, 便要下降置信度, 做更多測試, 當然客戶願意付款, 起點便可高些。

跟頻率相間的元件, 最大的是LineDriver (如Max232), 如果是全隔離形的, 還有光耦,
一般來說最高最低都能過的話, 中間點的可置信度都頗高。

TOP