Class A 日照計、原廠 shielded 線、10M 距離。每 1-2 小時死一次。最後我換成 4-20mA。
幾年前在一個太陽能廠的案場,我學到一件事:EMI 抗干擾不是「買貴的線」就能解決的問題。
事情是這樣的——我們要把現場的 EKO MS-80S 日照計(Class A 等級,學術級在用的那種)數據接進系統。設備本身有 RS485 / Modbus RTU 介面,原廠也附了 shielded twisted pair 訊號線。10 公尺距離,標準工業環境,按教科書這應該是「插上去就 work」的等級。
結果:前 1-2 小時運作完全正常,然後通訊就死掉了,完全死掉。軟體層 polling 全部 timeout、不是丟值不是 CRC 錯,是「沒回應」。
最詭異的是恢復方式——只要去現場把 RS485 接頭拔起來再插回去,立刻通訊正常。但再 1-2 小時,又會死一次。週期性、可重現、像在嘲笑你。
這篇是這個案例的完整過程,包含最後我為什麼選擇放棄 RS485 改用 4-20mA。如果你也在工業環境跟 RS485 通訊問題纏鬥,這篇可能會有用——不是因為我解出來了,而是因為我承認某些環境下 RS485 真的不該用。
第一反應當然是「設備壞了」。
我把日照計拆下來,換了另一台同型號,症狀完全一樣——前 1-2 小時 OK,然後永久斷線。
第二反應:「線材有問題」。
我換了原廠提供的另一條 shielded 線,還是一樣。
到這邊我才意識到:問題不在設備也不在線材本身,問題在「環境」。
回頭去看電箱的佈線,我才發現一件當時沒注意的事:
RS485 訊號線跟 1000V DC 線,在進電箱的那個進線孔,幾乎是貼在一起穿過去的。線間距大概只有 10-20 公分,但因為要擠進同一個金屬孔,在那個瞬間幾乎是接觸的。
更糟的是,那條 1000V DC 線後方接的是現場的 DC-DC 轉換器——這個東西在運作時,MOSFET 的高速切換會產生 kV/μs 等級的 dV/dt。
在 EMI 領域,這叫做「capacitive coupling at panel entry」(進線孔的電容耦合)。教科書 case study 第三章經典。
原招商當初做這個電箱時,並沒有考慮 EMI 佈線——RS485 訊號線跟高壓 DC 線就這樣擠在同一個進線孔。在文件上看起來「分開」,在物理上根本是貼在一起。
這個發現之後,我第一個疑問是:EKO 原廠線是 shielded twisted pair,理論上應該有抗干擾能力,為什麼還會掛?
答案藏在 EMI 的物理機制裡。
Shielded 線處理的是「輻射干擾」(radiated EMI):外部電磁波打到 shield,被導到地。但進線孔處的狀況不是輻射干擾,是電容耦合——
簡單說:shield 防的是「從外面打進來的電磁波」,但這個案例是「地電位本身在跳」。
擾動會慢慢累積,RS485 收發器 IC 內部會 latch-up(鎖死),累積到某個臨界點就完全沒回應。拔插接頭等於 reset 那顆 IC,所以暫時恢復——但物理干擾還在,1-2 小時後又會 latch-up。
知道原因之後,我嘗試了幾條路:
1. 加強 shield 接地
把 shield 兩端重新接地,改善不明顯。原因:問題在進線孔的電容耦合,改善 shield 接地對這個機制幫助有限。
2. 重拉線路,讓 RS485 離高壓線遠一點
聽起來最直接,但現場的線槽 / 進線孔早就裝好了,要重拉線等於重做電箱進線。案場時間壓力下不可行。
3. 加裝光隔離 RS485 轉換器
技術上可行——把 RS485 訊號從「電氣傳輸」改成「光傳輸」,從根本斷掉電容耦合路徑。但:
4. 軟體層做更激進的 retry / 心跳機制
研究過,但這個 case 的問題不是「偶爾錯」,是「IC 鎖死」——軟體 retry 救不了硬體 latch-up。
最後,我選了一條最樸實的路:放棄 RS485,改用日照計的 4-20mA 類比輸出。
EKO MS-80S 除了 RS485,也有 4-20mA 類比輸出(這是工業日照計的標配)。
我把它接到現場 PLC 的 Analog Input 模組,從此沒再斷過。
為什麼 4-20mA 在這個環境贏?
這個案子過去這麼多年,我留下幾個結論:
1. EMI 不是「加 shielded 線就好」這麼簡單
Shield 處理的是輻射,不處理進線孔等弱點處的電容耦合。買貴的線是必要條件,不是充分條件。
2. 進線孔是被低估的 EMI 弱點
金屬電箱本身的遮蔽效果好,但進線孔是金屬不連續處,所有 EMI 都集中在這裡作怪。設計階段佈線一定要把訊號線跟高壓線從進線孔就分開。
3. RS485 在強 EMI 環境有極限
RS485 是老兵協議,設計年代抗 EMI 標準跟現在不能比。在太陽能廠、變頻器密集、馬達多的現場,RS485 本身就是脆弱項目。
4. 4-20mA 不是落伍,是抗干擾的最後保險
工業現場用了幾十年的 4-20mA 不是沒原因。當數位通訊解不了,類比訊號常常是最後一條退路——而且效果出乎意料地好。
5. 設計階段沒考慮 EMI 佈線,後期極難補救
這次案例最終是換通訊方式才解決,佈線本身沒動——因為現場條件不允許動。所以設計階段佈線多花的功夫,真的不是白費。
如果你正在 debug 工業現場 RS485 通訊穩定度問題,可以先檢查這幾項:
最後一點特別重要——很多 EMI 問題不是「一秒就死掉」,是「慢慢累積死掉」。如果你只用 ping / 偶爾 polling 來檢查,很難看出來。
我自己 debug 這類問題時,通常會用一個 Python 小工具長時間記錄通訊狀態跟原始 raw frame,方便事後翻查 pattern。如果你也需要類似工具,可以參考:Python-Modbus-Serial-Logger-GUI。
RS485 不是萬能。
這個案例對我最大的提醒是:工業整合工程師的價值,不只在「解問題」,也在「判斷什麼問題不該硬解」。如果環境本身就不適合 RS485,換通訊方式可能比硬撐到底有意義得多。
下次遇到 RS485 不穩,先去現場看一眼進線孔——可能你的兇手就在那邊擠著。
如果你也有過類似的「RS485 在工業現場死掉」案例,歡迎留言交流。這種戰場故事比教科書值錢。