RS485 作為常見的總線之一,幾乎每個工控設備都在用,我們也對其熟悉不過了。我們都知道 RS485 雙半雙工通信,其 CPU 內部的根源是串口通信,串口通信是區分發送 TX 和接收 RX 的,在同一對差分信號線上同時傳輸 TX、RX,就是進行方向的控制,方向的控制時機不對,數據傳送是要出問題的。
例如下圖 1、圖 2 中,CPU 端的 TX 信號發送完畢后約 100uS 后方向引腳 拉低,切換到接收狀態,但是在 TX 信號發送完畢后 60uS 從機就回復了的 RX 信號,由于此時還是處于 RS485 芯片還是處于發送狀態,此時的接收數據將會被忽略,在系統層面就是體現為數據接收丟包。
圖 1 RS485 接口電路
有些讀者會可能回想,只要從機回復數據晚一些,不要這么快速回復,就不存在這個問題了。但是從機一般都是客戶的機器,我們幾乎不可能要求別人更改回復時間。例如三菱的 Fx3U PLC 作為從機時,從主機發送數據結束到從機回復數據,只用了 60uS,部分控制板,甚至回復時間在 10uS 以內。
研究 RS485 的方向切換的目標就是:RS485 總線空閑時要處于接收狀態,如果有主機發送數據,則置高方向引腳,發送完成及時切換到接收狀態。
圖 2 方向腳切換時間過長的情形
一、RS485 方向切換的方案 1:使用反相器自動切換
大部分的低成本 RS232-RS485 轉換器采用了這種方法。具體的實現方法是:把串口的發送信號 TX 作為反相器的輸入,反相器的輸出則用來控制 RS485 收發器的收發控制引腳,同時在 RS485 收發器的 A/B 輸出端加上上拉 / 下拉電阻,具體電路如圖 3 所示。
圖 3 使用反相器自動切換電路
在空閑狀態下,串口的發送信號 TXD 為高電平,經過反相器后輸出低電平,使 485 芯片處于接收狀態,而 RS485 總線由于上下拉電阻的作用處于 A 高 B 低的狀態。當發送數據時,TXD 信號線上的低電平比特位控制 485 芯片進入發送狀態,將該比特發送出去。而高電平比特位則使 485 芯片處于接收狀態,由于 RS485 總線上下拉電阻把總線置于 A 高 B 低的狀態,即表示發送了高電平。
簡單說,這種電路,就是發送低電平時,485 芯片是 發送狀態,而發送高電平時,485 芯片屬于接收狀態。
優勢:
只需要增加一個反相器就可以實現,無需軟件的干預,反相器可以使用一個三極管即可以實現,成本十分低廉(幾分錢);
劣勢:
由于上下拉電阻不可能選值太小,否則會影響正常發送的數據電平。所以這種換向模式在發送高電平時的驅動能力,并且,理論上我要求方向引腳要比數據先切換方向,但是由于方向引腳經過了反相器,達到芯片的時間變長了,比數據晚到,所以速率太高的情況容易丟包。如果需要驅動多個從設備,就會顯得力不從心,并且驅動能力太弱,只能短距離傳輸;并且傳輸速度不能太快,一般使用 9600bps。
二、RS485 方向切換的方案 2:使用軟件控制方向
市面上大部分的內置 RS485 的產品基本都是采用此類的方案,如下圖 4 中的 RS_EN 引腳。具體的 實現方式是:在空閑器件,RS_EN 為低電平,MCU 處于接收狀態,在準備發送數據之前,MCU 會拉高 RS_EN,U1 處于發送狀態,發送完畢之后,RS_EN 重新處于低電平,U1 處于接收狀態。
圖 4 使用軟件控制方向切換
此類方案的關鍵是軟件需要掌握好 RS_EN 引腳的高低電平的時機,假設發送完數據后,沒有及時切換到接收狀態,而此時從機又回復數據,此時就會引起丟包,就會出現文章開頭圖 2 中的情形。不幸的時,軟件工程師的水平參差不齊,特別是在運行操作系統(Linux、WIndows 等)以后,想要十分準確控制方向引腳的高低電平已經十分困難。
優勢:
無需增加任何的硬件成本,且 RS485 的驅動能力不受影響。
劣勢:
依賴于軟件控制方向引腳,如果運行復雜的操作系統,控制引腳的優先級不夠高,或者軟件的優化的不夠好,都會導致方向引腳的切換不及時,到時數據的丟包。并且,是否丟包還取決于從機的回復時間,測試過程不一定能夠測試出來
三、RS485 方向切換的方案 3:使用觸發器控制方向
為了克服反相器換向的缺點,出現了一種由 RS 觸發器控制的自動換向技術,如圖 5 所示。這個電路的關鍵是反相器和 RS 觸發器之間的由二極管、電阻、電容組成的充放電電路。在空閑狀態下,485 芯片仍處于接收狀態。當 TXD 信號線上發送數據的低電平起始位時,反相器輸出高電平,通過二極管為電容迅速充電,使 RS 觸發器 R 端為高電平,S 端為低電平,觸發器輸出高電平,把 ISL3152E 置于發送狀態;當 TXD 信號線轉換為高電平時,反相器輸出低電平,電容通過電阻緩慢放電,使得 R 端暫時仍處于高電平狀態,加上 S 端的高電平狀態,使觸發器的輸出保持前面的高電平狀態,485 芯片仍處于發送狀態。電容經過一段時間放電后,R 端電壓轉變為低電平,則觸發器輸出低電平,把 485 芯片置回接收狀態。通過選擇電阻和電容值,我們可以控制放電速度,使得一個低電平的起始位足以在整個字節發送。此類方案參數一致性非常差,實際使用的都是技高人膽大的。
圖 5 使用觸發器切換方向
優勢:
無需軟件干預切換方向,驅動能力強(取決于 RS485 芯片)。
劣勢:
1. 增加的器件較多;
2. 不同的波特率需要匹配不同的 RC 參數
3. 溫度、老化、一致性等問題,會導致 RC 參數變化,從而導致切換時間錯亂導致丟包
四、RS485 方向切換的方案 4:max13487 芯片
為了克服軟件參與的方向控制不確定性,美信公司發布了宣稱首款支持芯片自動換向的 RS485 芯片,如下圖 6,對比其他的 RS485 芯片,MAX16487 的 /RE 引腳有兩個用于:
(1)/RE 為低電平時,打開 RO 方向的接收數據。
(2)/RE 為高電平時,芯片進入自動方向切換模式。
一般使用我們將 /RE 連接高電平,即自動換向模式。
圖 6 MAX13487 內部框圖
由于美信沒有公布內部的邏輯原理,只描述內部有一個狀態機,我們只能外部猜測其工作原理:
1. 空閑模式下,數據流方向為 RO 方向;此為狀態 1;
2. 當串口端有數據發送時,由于起始位為低電平,經過邏輯功能 D 后,A<B,經過 COM3. 邏輯功能且反相后,RI 為高電平。此狀態為數據發送狀態 2。
4. 經過一系列的邏輯運算(以 RI、DI 為輸入,但是不知道其內部的原理);狀態機檢測到數據發送完畢,芯片變成接收狀態 1。
優勢:
由芯片自動切換方向,無需軟件干預切換方向,驅動能力強,通信速率高,MAX13488 宣稱最高可以到 16Mbps,與普通的 RS485 芯片性能一樣。
劣勢:
價格比普通的 RS485 芯片貴一倍以上。
五、RS485 方向切換的方案 5:周立功芯片 RSM(3)485PHT
周立功公司將 RS485 的三個相關的功能模塊:DC 電源、隔離、RS485 芯片三合一,封裝在同一個芯片內部,由于沒有內部的資料,我們無法獲知其內部的邏輯功能。官方資料宣稱最高速率可以達到 500Kbps,對于一般的應用足以。
優勢:
由芯片自動切換方向,無需軟件干預切換方向,驅動能力強,通信速率高,DC 電源、隔離、RS485 芯片功能三合一,節省板卡空間。
劣勢:
價格比分立器件搭建 RS485 電路貴,且一旦損害需要要整體更換。
圖 7 RSM(3)485PHT 原理圖
六、總結
上述我們提供了 5 種 RS485 自動切換方向的方法:分別是反相器法、軟件控制法、觸發器法、美信 MAX13488 芯片、周立功 RSM(3)485PHT。
反相器法由于驅動能力太弱、速率太低,僅適用于要求不高的調試場合,工控場合慎選。
軟件控制法對軟件的要求較高,特別是帶操作系統的芯片,軟件控制的時機較困難。
觸發器法由于參數一致性太差,只適合波特率恒定、速率不高的場合;
美信以及周立功提供的方案已經芯片化,經過了大量的市場驗證,且有大公司做背書,可靠性、溫度性都有很大的保障,優先推薦。
編輯:hfy
-
反相器
+關注
關注
6文章
310瀏覽量
43247 -
RS485
+關注
關注
39文章
1143瀏覽量
82138 -
觸發器
+關注
關注
14文章
1996瀏覽量
61053
發布評論請先 登錄
相關推薦
評論