技術(shù)文章
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ù)接收丟包。
有些讀者會(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以?xún)?nèi)。
研究RS485的方向切換的目標(biāo)就是:RS485總線空閑時(shí)要處于接收狀態(tài),如果有主機(jī)發(fā)送數(shù)據(jù),則置高方向引腳,發(fā)送完成及時(shí)切換到接收狀態(tài)。
大部分的低成本RS232-RS485轉(zhuǎn)換器采用了這種方法。具體的實(shí)現(xiàn)方法是:把串口的發(fā)送信號(hào)TX作為反相器的輸入,反相器的輸出則用來(lái)控制RS485收發(fā)器的收發(fā)控制引腳,同時(shí)在RS485收發(fā)器的A/B輸出端加上上拉/下拉電阻,具體電路如圖3所示。
在空閑狀態(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),成本十分低廉(幾分錢(qiá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。
使用軟件控制方向:
市面上大部分的內(nèi)置RS485的產(chǎn)品基本都是采用此類(lèi)的方案,如下圖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)。
此類(lèi)方案的關(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ì):
依賴(lài)于軟件控制方向引腳,如果運(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)。
使用觸發(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ā)送。此類(lèi)方案參數(shù)一致性非常差,實(shí)際使用的都是技高人膽大的。
優(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)致丟包。
max13487芯片:
為了克服軟件參與的方向控制不確定性,美信公司發(fā)布了宣稱(chēng)支持芯片自動(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)換向模式。
由于美信沒(méi)有公布內(nèi)部的邏輯原理,只描述內(nèi)部有一個(gè)狀態(tài)機(jī),我們只能外部猜測(cè)其工作原理:
1.空閑模式下,數(shù)據(jù)流方向?yàn)镽O方向;此為狀態(tài)1;
2.當(dāng)串口端有數(shù)據(jù)發(fā)送時(shí),由于起始位為低電平,經(jīng)過(guò)邏輯功能D后,A
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 宣稱(chēng)最高可以到16Mbps,與普通的RS485芯片性能一樣。
劣勢(shì):
價(jià)格比普通的RS485芯片貴一倍以上。
周立功芯片RSM(3)485PHT:
周立功公司將RS485的三個(gè)相關(guān)的功能模塊:DC電源、隔離、RS485芯片三合一,封裝在同一個(gè)芯片內(nèi)部,由于沒(méi)有內(nèi)部的資料,我們無(wú)法獲知其內(nèi)部的邏輯功能。資料宣稱(chēng)最高速率可以達(dá)到500Kbps,對(duì)于一般的應(yīng)用足以。
優(yōu)勢(shì):
由芯片自動(dòng)切換方向,無(wú)需軟件干預(yù)切換方向,驅(qū)動(dòng)能力強(qiáng),通信速率高,DC電源、隔離、RS485芯片功能三合一,節(jié)省板卡空間。
劣勢(shì):
價(jià)格比分立器件搭建RS485電路貴,且一旦損害需要要整體更換。
上述我們提供了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)先推薦。