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