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