在工控行業(yè)中,RS485 憑借其抗噪音抗干擾能力強、傳輸距離遠以及支持多點通信等顯著優(yōu)勢,成為了首選的串行接口。RS485 規(guī)定采用兩線制進行半雙工多點通信,通過兩線差分信號傳輸數(shù)據(jù),具備出色的抗共模干擾能力。不過,由于其半雙工模式的特性,在通訊時需要進行收發(fā)狀態(tài)的切換。下面,我們將詳細探討目前常用的幾種 RS485 收發(fā)切換方案。
- 傳統(tǒng) RS485 電路(帶收發(fā)控制腳非隔離 RS - 485 電路)
傳統(tǒng)的 485 應用電路采用 3 線控制,分別為 UART_RXD、UART_TXD 和收發(fā)控制端 UART_CON。其控制策略明確:當 UART_CON 為低電平時,485 處于接收狀態(tài);當 UART_CON 為高電平時,485 處于發(fā)送狀態(tài)。通過靈活切換 UART_CON 的電平,即可實現(xiàn) 485 收發(fā)狀態(tài)的切換。這種電路雖然原理簡單,但在編程時需要對控制端電平進行切換,增加了程序的復雜度。

- 硬件自收發(fā)切換非隔離 RS - 485 電路
為了簡化編程,人們常常將電路改進為自動收發(fā)電路。這種采用分立元件搭建的非隔離自動收發(fā) RS485 電路,其優(yōu)點在于控制簡單,收發(fā)控制腳無需程序干預。然而,它也存在一定的局限性。受三極管切換速度、收發(fā)器內部接口阻抗等因素的影響,分立元件搭建的自動收發(fā)切換電路會降低系統(tǒng)穩(wěn)定運行的最大波特率。

- 收發(fā)切換隔離 RS485 電路
帶有隔離電路的 485 設計是最為穩(wěn)定的方案,但需要選擇隔離 485 芯片以及隔離電源,因此成本相對前兩種方案會高很多。不過,從系統(tǒng)的穩(wěn)定性和可靠性角度來看,這種方案在一些對穩(wěn)定性要求極高的場合具有不可替代的優(yōu)勢。

這里介紹一個采用 MAX485 芯片的 485 硬件收發(fā)切換電路實例。該電路使用 NPN 三極管進行收發(fā)切換??刂圃砣缦拢?a target="_blank">MCU 的 UART 的 TX 和 RX 引腳需要連上拉電阻(TX 和 RX 在沒有通信時均為高電平),這樣可以防止剛上電時 TX 和 RX 引腳電平不穩(wěn)定,從而避免收到擾亂數(shù)據(jù)。同時,A 上拉電阻、B 下拉電阻,終端并聯(lián) 120 歐姆電阻,D10、D11、D12 為三個防雷防浪涌的 TVS 管,起到保護電路的作用。
- 接收過程:默認沒有數(shù)據(jù)時,UART_TX 為高電平,三極管導通,MAX485 芯片 RE 低電平使能,RO 接收數(shù)據(jù)使能。此時,從 485AB 口收到的數(shù)據(jù)會通過 RO 通道傳到 MCU,完成數(shù)據(jù)接收過程。
- 發(fā)送過程:當發(fā)送數(shù)據(jù)時,UART_TX 會有一個下拉的電平,表示開始發(fā)送數(shù)據(jù),此時三極管截止,DE 為高電平發(fā)送使能。當發(fā)送數(shù)據(jù)‘0’時,由于 DI 口連接地,數(shù)據(jù)‘0’就會傳輸?shù)?AB 口,A - B <0,完成低電平的傳輸。當發(fā)送‘1’時,三極管導通,按理說 RO 使能,但由于此時還處在發(fā)送數(shù)據(jù)中,MAX485 處于高阻態(tài),此時的狀態(tài)由 A 上拉 B 下拉電阻決定,A - B> 0,完成高電平的傳輸。這里可能會有人疑惑,發(fā)送數(shù)據(jù)‘1’時,三極管導通 RE 低電平有效,應該是接收使能,為什么芯片會是高阻狀態(tài)呢?這是因為 UART 發(fā)送數(shù)據(jù)有一定的格式,數(shù)據(jù)以 “位” 為最小單位進行傳輸。在收發(fā)數(shù)據(jù)之前,UART 之間要約定好數(shù)據(jù)的傳輸速率(即每位所占據(jù)的時間,其倒數(shù)為波特率)、數(shù)據(jù)的傳輸格式(有多少數(shù)據(jù)位、是否有校驗位、奇校驗還是偶校驗、是否有停止位)。平時數(shù)據(jù)線處于 “空閑狀態(tài)”(1 狀態(tài)),當發(fā)送數(shù)據(jù)時,TX 由‘1’變?yōu)椤?’維持 1 位的時間,接收方檢測到開始位后,再等待 1.5 位時間就開始一位一位地進行數(shù)據(jù)傳輸。也就是說,已經(jīng)確定好發(fā)送狀態(tài),電路發(fā)送‘1’時 RE 雖然有效,但由于處于發(fā)送階段,芯片不會接收數(shù)據(jù),即處于高阻狀態(tài)。
- 基本的 RS485 電路
基本的 RS485 電路采用 3 線控制,R/D 為低電平時,發(fā)送禁止,接收有效;R/D 為高電平時,則發(fā)送有效,接收截止。上拉電阻 R7 和下拉電阻 R8 用于保證無連接的 SP485R 芯片處于空閑狀態(tài),提供網(wǎng)絡失效保護,提高 RS485 節(jié)點與網(wǎng)絡的可靠性。R7、R8、R9 這三個電阻的大小需要根據(jù)實際應用進行調整,特別是使用 120 歐或更小的終端電阻時,R9 可以省略,此時 R7、R8 使用 680 歐電阻。正常情況下,一般 R7 = R8 = 4.7K,R9 可不使用。圖中鉗位于 6.8V 的管 V4、V5、V6 用于保護 RS485 總線,避免受外界干擾,也可以選擇集成的總線保護原件。另外,L1、L2、C1、C2 為可選安裝原件,用于提高電路的 EMI 性能。 - 帶隔離的 RS485 電路
帶隔離的 RS485 電路根本原理與基本電路相似,但使用 DC - DC 器件可以產(chǎn)生一組與微處理器電路完全隔離的電源輸出,用于向 RS485 收發(fā)器提供 + 5V 電源。不過,電路中的光耦器件速率會影響 RS485 電路的通信速率。例如,選用 NEC 的光耦 PS2501 時,該電路的通訊速率需控制在 19200bps 以下。 - 自動切換電路
自動切換電路中,TX、RX 引腳均需要上拉電阻。接收時,默認沒有數(shù)據(jù),TX 為高電平,三極管導通,RE 為低電平使能,RO 收數(shù)據(jù)有效,MAX485 為接收態(tài)。發(fā)送時,TX 會先有一個下拉的電平(起始位 - 由高向低),表示開始發(fā)送數(shù)據(jù),此時三極管截止,DE 為高電平發(fā)送使能。當發(fā)送數(shù)據(jù) “0” 時,由于 DI 接口相當于接地,數(shù)據(jù) “0” 就會傳輸?shù)?AB 口,A - B < 0,完成低電平傳輸;當發(fā)送 “1” 時,三極管導通,按理說 RO 會使能,但由于還處于發(fā)送數(shù)據(jù)中,MAX485 處于高阻態(tài),此時的狀態(tài)由 A 上拉、B 下拉電阻決定,A - B > 0,完成高電平的傳輸。同樣,這里發(fā)送數(shù)據(jù) “1” 時芯片處于高阻態(tài)的原因也是由于 UART 發(fā)送數(shù)據(jù)的格式規(guī)定。
- 節(jié)點故障影響其他節(jié)點通信
問題表現(xiàn)為 485 總線在通訊中,當某一節(jié)點出現(xiàn)故障時,其他一些節(jié)點會受到影響,出現(xiàn)通信故障。解決方法是在每個節(jié)點的 AB 線上串入一個 22 歐姆左右的電阻,同時在協(xié)議的編制上一定要考慮到故障偵測和報警功能,以便及時發(fā)現(xiàn)和處理問題。 - 總線處于不確定狀態(tài)
當 485 總線處于開路(485 收發(fā)器與總線斷開)或者空閑狀態(tài)(485 收發(fā)器全部處于接收狀態(tài),總線沒有收發(fā)器進行驅動)時,485 總線的差分電壓基本為 0,此時總線就處于一個不確定的狀態(tài)。解決方法是在 485 總線上增加上下拉電阻(通常 A 接上拉電阻,B 總線下拉電阻,一般為 1K 左右)。其理論依據(jù)是,根據(jù) RS - 485 標準,當 485 總線差分電壓大于 + 200mV 時,485 收發(fā)器輸出高電平;當 485 總線差分電壓小于 - 200mV 時,485 收發(fā)器輸出低電平;當 485 總線上的電壓在 - 200mV ~ + 200mV 時,485 收發(fā)器可能輸出高電平也可能輸出低電平,但一般總處于一種電平狀態(tài)。若 485 收發(fā)器的輸出低電平,對于 UART 通信來說是一個起始位,此時通信會不正常。
0次