RS-485是一種低成本、易操作的通信系統,但是穩定性弱同時相互牽制性強,通常有一個節點出現故障會導致系統整體或局部的癱瘓,而且又難以判斷。故向讀者介紹一些維護RS-485的常用方法。
1、若出現系統完全癱瘓,大多因為某節點芯片的VA、VB對電源擊穿,使用萬用表測VA、VB間差模電壓為零,而對地的共模電壓大于3V,此時可通過測共模電壓大小來排查,共模電壓越大說明離故障點越近,反之越遠;
2、總線連續幾個節點不能正常工作。一般是由其中的一個節點故障導致的。一個節點故障會導致鄰近的2~3個節點(一般為后續)無法通信,因此將其逐一與總線脫離,如某節點脫離后總線能恢復正常,說明該節點故障;
3、集中供電的RS-485系統在上電時常常出現部分節點不正常,但每次又不完全一樣。這是由于對RS-485的收發控制端TC設計不合理,造成微系統上電時節點收發狀態混亂從而導致總線堵塞。改進的方法是將各微系統加裝電源開關然后分別上電;
4、系統基本正常但偶爾會出現通信失敗。一般是由于網絡施工不合理導致系統可靠性處于臨界狀態,*好改變走線或增加中繼模塊。應急方法之一是將出現失敗的節點更換成性能更優異的芯片;
5、因MCU故障導致TC端處于長發狀態而將總線拉死一片。提醒讀者不要忘記對TC端的檢查。盡管RS-485規定差模電壓大于200mV即能正常工作。但實際測量:一個運行良好的系統其差模電壓一般在1.2V左右(因網絡分布、速率的差異有可能使差模電壓在0.8~1.5V范圍內)。
RS-485接口芯片的種類
1 節點數
所謂節點數,即每個RS-485接口芯片的驅動器能驅動多少個標準RS-485負載。根據規定,標準RS-485接口的輸入阻抗為≥12kΩ,相應的標準驅動節點數為32。為適應更多節點的通信場合,有些芯片的輸入阻抗設計成1/2負載(≥24kΩ)、1/4負載(≥48kΩ)甚至1/8負載(≥96kΩ),相應的節點數可增加到64、128和256。下面為一些常見芯片的節點數。
節點數 型 號
32 SN75176,SN75276,SN75179,SN75180,MAX485,MAX488,MAX490
64 SN75LBC184
128 MAX487,MAX1487
256 MAX1482,MAX1483,MAX3080~MAX3089
2 半雙工和全雙工
RS-485接口可連接成半雙工和全雙工兩種通信方式,如圖1所示。半雙工通信的芯片有SN75176、SN75276、SN75LBC184、MAX485、MAX 1487、MAX3082、MAX1483等;全雙工通信的芯片有SN75179、SN75180、MAX488~MAX491、MAX1482等。

RS-485應用中的常見問題
1 抗雷擊和抗靜電沖擊
RS-485接口芯片在使用、焊接或設備的運輸途中都有可能受到靜電的沖擊而損壞。在傳輸線架設于戶外的使用場合,接口芯片乃至整個系統還有可能遭致雷電的襲擊。選用抗靜電或抗雷擊的芯片可有效避免此類損失,常見的芯片有MAX485E、MAX487E、MAX1487E等。特別值得一提的是SN75LBC184,它不但能抗雷電的沖擊而且能承受高達8kV的靜電放電沖擊,是目前市場上****的一款產品。
2 限斜率驅動
由于信號在傳輸過程中會產生電磁干擾和終端反射,使有效信號和無效信號在傳輸線上相互迭加,嚴重時會使通信無法正常進行。為解決這一問題,某些芯片的驅動器設計成限斜率方式,使輸出信號邊沿不要過陡,以不致于在傳輸線上產生過多的高頻分量,從而有效地扼制干擾的產生。如MAX487、SN75LBC184等都具有此功能。
3 故障保護
故障保護技術是近兩年產生的,一些新的RS-485芯片都采用了此項技術,如SN75276、MAX3080~MAX3089。什么是故障保護,為什么要有故障保護,如果沒有故障保護會產生什么后果?
眾所周知,RS-485接口采用的是一種差分傳輸方式,各節點之間的通信都是通過一對(半雙工)或兩對(全雙工)雙絞線作為傳輸介質。根據RS-485的標準規定,接收器的接收靈敏度為±200mV,即接收端的差分電壓大于、等于+200 mV時,接收器輸出為高電平;小于、等于-200mV時,接收器輸出為低電平;介于±200mV之間時,接收器輸出為不確定狀態。在總線空閑即傳輸線上所有節點都為接收狀態以及在傳輸線開路或短路故障時,若不采取特殊措施,則接收器可能輸出高電平也可能輸出低電平。一旦某個節點的接收器產生低電平就會使串行接收器(UART)找不到起始位,從而引起通信異常,解決此類問題的方法有兩種:
(1)使用帶故障保護的芯片,它會在總線開路、短路和空閑情況下,使接收器的輸出為高電平。確保總線空閑、短路時接收器輸出高電平是由改變接收器輸入門限來實現的。例如,MAX3080~MAX 3089輸入靈敏度為-50mV/-200mV,即差分接收器輸入電壓UA-B≥-50mV時,接收器輸出邏輯高電平;如果UA-B≤-200mV,則輸出邏輯低電平。當接收器輸入端總線短路或總線上所有發送器被禁止時,接收器差分輸入端為0V,從而使接收器輸出高電平。同理,SN75276的靈敏度為0mV/-300mV,因而達到故障保護的目的。
(2)若使用不帶故障保護的芯片,如SN75176、MAX1487等時,可在軟件上作一些處理,從而避免通信異常。即在進入正常的數據通信之前,由主機預先將總線驅動為大于+200mV,并保持一段時間,使所有節點的接收器產生高電平輸出。這樣,在發出有效數據時,所有接收器能夠正確地接收到起始位,進而接收到完整的數據。
4 光電隔離
在某些工業控制領域,由于現場情況十分復雜,各個節點之間存在很高的共模電壓。雖然RS-485接口采用的是差分傳輸方式,具有一定的抗共模干擾的能力,但當共模電壓超過RS-485接收器的極限接收電壓,即大于+12V或小于-7V時,接收器就再也無法正常工作了,嚴重時甚至會燒毀芯片和儀器設備。
解決此類問題的方法是通過DC-DC將系統電源和RS-485收發器的電源隔離;通過光耦將信號隔離,徹底消除共模電壓的影響。實現此方案的途徑可分為:
(1)用光耦、帶隔離的DC-DC、RS-485芯片構筑電路;
(2)使用二次集成芯片,如PS1480、MAX1480等。
以上主要介紹在不同場合如何選擇合適的RS-485接口芯片,和可能碰到的有關問題的解決方法,從而避免通信異常。至于其它諸如終端匹配、傳輸線的選擇和屏蔽、通信速率的選擇等等,在一些相關資料中都能找到答案,這里就不再介紹了。