RS485作為常見的總線之一,幾乎每個工控設備都在用,我們也對其熟悉不過了。我們都知道RS485雙半雙工通信,其CPU內部的根源是串口通信,串口通信是區分發送TX和接收RX的,在同一對差分信號線上同時傳輸TX、RX,就是進行方向的控制,方向的控制時機不對,數據傳送是要出問題的。
例如下圖1、圖2中,CPU端的TX信號發送完畢后約100uS后方向引腳 拉低,切換到接收狀態,但是在TX信號發送完畢后60uS從機就回復了的RX信號,由于此時還是處于RS485芯片還是處于發送狀態,此時的接收數據將會被忽略,在系統層面就是體現為數據接收丟包。
圖1RS485接口電路 有些讀者會可能會想,只要從機回復數據晚一些,不要這么快速回復,就不存在這個問題了。但是從機一般都是客戶的機器,我們幾乎不可能要求別人更改回復時間。例如三菱的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。 反相器法由于驅動能力太弱、速率太低,僅適用于要求不高的調試場合,工控場合慎選。 軟件控制法對軟件的要求較高,特別是帶操作系統的芯片,軟件控制的時機較困難。觸發器法由于參數一致性太差,只適合波特率恒定、速率不高的場合; 美信以及周立功提供的方案已經芯片化,經過了大量的市場驗證,且有大公司做背書,可靠性、溫度性都有很大的保障,優先推薦。
責任編輯:lq
-
反相器
+關注
關注
6文章
311瀏覽量
43289 -
RS485
+關注
關注
39文章
1156瀏覽量
82291 -
觸發器
+關注
關注
14文章
2000瀏覽量
61132
原文標題:RS485方向切換的幾種方案及優劣勢分析
文章出處:【微信號:WW_CGQJS,微信公眾號:傳感器技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論