|
做工控的兄弟們應(yīng)該都有過這種經(jīng)歷——現(xiàn)場PLC突然連不上了,串口通信斷斷續(xù)續(xù),報文丟失,數(shù)據(jù)跳變。你檢查了線沒斷、電源沒掉、軟件沒改,但就是通信不上。
串口通信這個老技術(shù)用了幾十年了,按理說應(yīng)該很成熟了吧?但恰恰因為"老",它的問題也最隱蔽。今天這篇文章就從頭到尾梳理一下,串口通信故障到底怎么排查。
## 第一層:物理層——先把線查明白
別笑,物理層的問題占了串口通信故障的六成以上。
RS485是最常用的工業(yè)串口通信方式,兩根線A和B,差分信號傳輸。最容易出問題的地方就這幾個:
**接線反了。** A和B接反是最低級的錯誤,但也是最常見的問題。新裝設(shè)備第一次調(diào)試的時候,如果完全通信不上,第一件事就是檢查AB有沒有接反。有些廠家的端子標(biāo)識不統(tǒng)一,有的叫A/B,有的叫D+/D-,有的叫TX+/TX-,很容易搞混。
記住一個規(guī)律:RS485的A(D+)是正端,B(D-)是負端。不同設(shè)備廠家可能標(biāo)反,最靠譜的辦法是看手冊上的引腳定義,而不是看標(biāo)識。
**共地問題。** RS485雖然用的是差分信號,理論上來需要共地,但實際上當(dāng)不同設(shè)備供電來自不同電源時,地電位差會導(dǎo)致通信異常。尤其是上位機和PLC不在同一個電控柜里的時候,這個問題很常見。解決辦法是加一條地線把兩端的地連起來,或者在兩端各加一個隔離器。
**終端電阻。** RS485總線長度超過幾十米的時候,末端要接120歐姆的終端電阻,用來消除信號反射。但很多人不接,或者兩頭都接(只應(yīng)該接總線兩端各一個)。結(jié)果就是通信距離稍微遠一點就開始丟包。
終端電阻的判斷方法:斷開所有設(shè)備電源,用萬用表量總線A和B之間的電阻。正常應(yīng)該是120歐姆(終端電阻并聯(lián)了多個設(shè)備,但終端電阻只在兩端各一個,并聯(lián)后約為60歐姆)。如果量出來無窮大,說明沒接終端電阻;如果是零或者很小的值,說明線短路了。
**線材選擇。** RS485要用雙絞線,最好帶屏蔽。用普通平行線也能通,但距離一長干擾就上來了。屏蔽層要單端接地,別兩端都接地,否則形成地環(huán)路反而引入干擾。
## 第二層:電氣層——電壓夠不夠
線接對了,信號也不一定對。
RS485的差分信號電壓,正常應(yīng)該在±1.5V到±5V之間(A和B之間的電壓差)。如果電壓太低,說明信號衰減厲害或者驅(qū)動能力不夠。
怎么量?示波器接在A和B上,看波形。正常應(yīng)該是方波,高電平1.5V以上,低電平-1.5V以下。如果波形是鋸齒狀、幅度很小,可能是線路太長、分叉太多、或者設(shè)備輸出能力不夠。
沒有示波器的話,萬用表也能做個粗略判斷。量A和B之間的直流電壓,正常應(yīng)該在1-2V左右(通信空閑時A比B高)。如果量出來0V,要么是線斷了,要么是設(shè)備沒電。
廣州微嵌的工業(yè)一體機COM口都做了隔離設(shè)計,光電隔離1500V以上。這在實際使用中能避免大部分因為地電位差導(dǎo)致的通信損壞。我們碰到過不少客戶,換了非隔離的工控機之后COM口頻繁燒毀,換回帶隔離的就好了。
## 第三層:參數(shù)層——配置對不對
物理和電氣都正常,通信還是不通,那就該查參數(shù)了。
串口通信有幾個核心參數(shù)必須兩端一致:
**波特率。** 9600是最常見的,也有用19200、38400、115400的。上位機和PLC的波特率必須一致,差一個都不行。這個最容易查,但也容易忽略——有些PLC的默認波特率不是9600,比如有些西門子PLC默認是187.5K,不查手冊你根本想不到。
**數(shù)據(jù)位/停止位/校驗位。** 常見的是8-N-1(8位數(shù)據(jù)位,無校驗,1位停止位),但有些設(shè)備默認是7-E-1或者8-E-1。校驗位不一致的時候通信表現(xiàn)是:偶爾能收到數(shù)據(jù)但全是亂的,或者完全收不到。
**站號。** Modbus RTU協(xié)議里,每個從站有唯一的站號。如果兩個設(shè)備設(shè)了同一個站號,總線會沖突,表現(xiàn)就是時通時斷。如果上位機查的站號和PLC實際設(shè)的不一樣,完全通信不上。
**超時設(shè)置。** 上位機發(fā)送請求后等待響應(yīng)的超時時間,不能設(shè)太短。波特率9600的時候,一個Modbus請求幀大概十幾毫秒發(fā)完,PLC處理+響應(yīng)一般在50-100毫秒。超時設(shè)100毫秒以下就太緊張了,網(wǎng)絡(luò)抖動一下就超時。建議設(shè)300-500毫秒比較保險。
## 第四層:協(xié)議層——報文對不對
參數(shù)全對,還是通信異常,就該抓報文了。
**抓報文工具。** 串口調(diào)試助手是最基礎(chǔ)的,能手動發(fā)Modbus幀看響應(yīng)。更專業(yè)的是用串口抓包工具,把總線上所有報文都錄下來分析。
**Modbus報文結(jié)構(gòu)。** RTU模式下,一幀報文的格式是:站號(1字節(jié)) + 功能碼(1字節(jié)) + 數(shù)據(jù)區(qū) + CRC校驗(2字節(jié))。
常見的故障表現(xiàn)和對應(yīng)原因:
| 故障現(xiàn)象 | 可能原因 | 排查方向 |
|---------|---------|---------|
| 完全無響應(yīng) | 站號不對/波特率不對/線接反 | 查參數(shù)和接線 |
| 偶爾丟包 | 終端電阻缺失/干擾/超時太短 | 加終端電阻/查干擾源 |
| CRC校驗錯誤 | 線路干擾/波特率偏差 | 查線材和波特率精度 |
| 響應(yīng)數(shù)據(jù)全0 | 寄存器地址不對/PLC程序沒寫數(shù)據(jù) | 查寄存器映射表 |
| 響應(yīng)異常碼83 | 非法功能碼 | 查PLC支持的功能碼 |
| 響應(yīng)異常碼84 | 非法數(shù)據(jù)地址 | 查寄存器地址是否超范圍 |
| 響應(yīng)異常碼86 | 設(shè)備忙 | 查詢頻率太快/PLC處理不過來 |
**CRC校驗。** 這是判斷通信質(zhì)量的關(guān)鍵指標(biāo)。如果CRC錯誤率高,說明線路質(zhì)量有問題。不是干擾太強就是線路太長或者線材太差。廣州微嵌的工控機COM口標(biāo)配TVS防浪涌,能一定程度抑制線路上的瞬態(tài)干擾,降低CRC錯誤率。
## 第五層:環(huán)境層——干擾因素排查
有時候通信參數(shù)全對,線路也沒問題,但就是在特定時段或者特定條件下出故障。這時候要考慮環(huán)境因素了。
**變頻器干擾。** 這是現(xiàn)場最常見的干擾源。變頻器輸出的PWM波形含有大量高頻諧波,通過空間輻射和共地耦合干擾RS485總線。如果發(fā)現(xiàn)通信在變頻器啟動時變差,停機時正常,基本就是變頻器干擾。
解決辦法:變頻器輸出端加磁環(huán)、RS485線用帶屏蔽的雙絞線且屏蔽層接地、變頻器和通信設(shè)備分相供電、必要時加信號隔離器。
**接地不良。** 工業(yè)現(xiàn)場的接地系統(tǒng)如果不規(guī)范,不同設(shè)備的"地"之間可能有幾伏甚至幾十伏的電位差。這個電位差直接反映在RS485的共模電壓上,超過-7V到+12V的范圍就會損壞收發(fā)器芯片。
**溫度影響。** 溫度太高會導(dǎo)致芯片特性漂移,通信時鐘偏差增大。如果發(fā)現(xiàn)夏天通信比冬天差,可能是設(shè)備散熱不行。這點選工控機的時候要注意,-10℃到60℃寬溫標(biāo)稱的設(shè)備在高溫下通信更穩(wěn)定,因為它的器件選型本身就考慮了溫度裕量。
## 一個實戰(zhàn)案例
之前有個客戶,用的是廣州微嵌的工業(yè)一體機做上位機,通過RS485連8臺PLC。裝好后前三天一切正常,第四天開始頻繁丟包,每天早上8-9點最嚴(yán)重。
排查過程:
第一步,檢查接線——沒發(fā)現(xiàn)問題,終端電阻也接了。
第二步,抓報文——發(fā)現(xiàn)丟包表現(xiàn)為超時無響應(yīng),不是CRC錯誤,排除線路干擾。
第三步,排查時間規(guī)律——早上8-9點是什么特殊時段?后來發(fā)現(xiàn)工廠8點交接班,所有產(chǎn)線同時啟動,變頻器集中上電,瞬間產(chǎn)生大量電磁干擾。
第四步,驗證——讓客戶在8點前啟動變頻器,8點后再開工控機,通信果然正常了。
第五步,解決——在RS485總線兩端各加了一個信號隔離器,同時在變頻器輸出端加了磁環(huán)。之后再也沒有出現(xiàn)過問題。
這個案例說明,串口通信故障排查不能只盯著一臺設(shè)備看,得從整個系統(tǒng)的角度去找原因。
## 總結(jié)
串口通信排查的思路就是逐層排除:物理層→電氣層→參數(shù)層→協(xié)議層→環(huán)境層。每層都有對應(yīng)的檢查手段和判斷標(biāo)準(zhǔn),按順序來不要跳步,大部分問題都能定位到。
選硬件的時候也要注意,COM口帶隔離、帶TVS防護的工控機在工業(yè)現(xiàn)場用起來更省心。廣州微嵌的工業(yè)一體機COM口全部做了光電隔離,出廠前每一路都做實際通信測試,不是那種插上沒測就發(fā)貨的。做工控項目,硬件底子打好,后面排查也能少走很多彎路。
|