RS-485 抗雜戰記
忽然想起了天空戰記這部卡通,這篇標題就這樣下吧。
SerialPort 通訊埠或是稱為 COM Port 都可以,一般來說 RS-232 同時只能對一個設備通訊,而 RS-485 則可以對多個設備通訊,使用 Modbus RTU 個協定下,最多可對 247 個設備通訊 (1 ~ 247) ,在訊號衰減下,上限是 32 個設備,但是可以透過中繼器或集線器來強化訊號,使其可以同時對多個設備通訊。
RS-485 多數運用在工業環境,我自己用來讀取過氣象水文資訊,例如風速、風向、日照、溫度、… 等,用電、發電資訊,例如電壓、電流、功率、累積電量、… 等,輸出即時訊號,例如七段顯示器等。
考慮到沒接觸過的網友總要說點前提。
話說最近一個月都做些大電力的案子,485 訊號是用電壓差來識別的,一般工作電壓在 200 mV ~ 12 V 之間,大部分情況是低於 5 V ,屬於弱電系統,很容易受到環境干擾。而碰上這些大電下,情況就非常慘了,傳回來的內容多半含有雜訊,造成 CRC 錯誤,將內容判定為錯誤。當然,這種情況下老闆不滿意,所以必須想辦法改善。
依照大電相關設備原廠說明的要求,該設備應該接上訊號雙絞線、485GND (common)、銅網接地,該設備內部接點有這四個接點,且訊號線必須使用環狀接線,不能使用星狀接線。因此首先上網找尋相關資料,為了確保盡量降低干擾,選擇了具有雙絞、鋁箔遮蔽、銅網隔離的 SFTP,到現場把所有既有線材全部更換,再進行訊號擷取。
而經過在現場耐心的逐步檢測,發現是 MOXA 一個我們常用的 Master 端訊號轉換器跟設備衝突… MOXA 是很多人都在使用的工業產品,檢測的過程中完完全全沒想到它會跟設備打架,而是因為拿 NB 測都沒問題,但是把訊號線接回案場的工業電腦就會有雜訊… 最後忍不住把 NB 的設備拿去接工業電腦:
這樣就正常能讀了我也很驚訝,當然前提也包含了換隔離線,因為換隔離線之前,NB 完全讀不到訊號。
MOXA 使用的設備是有主動電壓的訊號轉換器,USB 裝置則沒有,不確定是否該設備對有主動電壓 485 Master 不相容。而 USB 裝置容易因為線動到後,導致被判斷 USB 裝置移出,若正好通訊中的話,整台電腦會掛,不是只是死一隻程式而已,因此從泓格找了一顆 485 集線器,打算噪訊多的大電力裝置接一起,沒噪訊的裝置接一起,而透過這個 485 集線器後,發生 CRC 錯誤的機率降到千分之二以下,正打算收工回家的時候,發現這顆 485 集線器跟自產的類比訊號轉換器打架了,CRC 錯誤的機率達到 50% …
除了大電力設備外,一般小設備公司內都有可以測試,因此回去測半天,公司內測用 300 ms 間距去測雖然會掉資料,但是成功率應該是有 90% 以上,只好改換研華的類比轉換器去更換,更換後 CRC 錯誤機率就降到千分之一以下。
測試過程中有試了泓格的可調式終端電阻及升位電阻,在 485 通訊規範中有要求要裝終端電阻,到電子材料行買,一條電阻才 3 元以內,但我過去一直不知道這條電阻要幹嘛,這次量了以後大概知道是這樣,主動式 485 訊號電壓約在 4 ~ 5 V 間,用不同的阻值的電阻將會將訊號電壓降到不同的範圍,一般建議的 120 歐姆會將訊號電壓降到 200 mV 上下,若是使用無主動電壓的 Master 設備,就不需要再使用終端電阻了。
由於不確定是否自產的類比轉換器與 485 集線器衝突,所以其他大電案場依法仿效的時候,都沒直接先換掉,而是經過測試後才更換。
某個案場由於原先訊號線就用另一種隔離線,一開始沒打算換掉,但是在測量訊號工作電壓時,居然發現一個神奇的怪事,拿電錶量直流電壓,一開始開 20 V 居然不夠用,一路轉大看著直流電壓跳到 812 V 以後破表,立刻決定換線,換設備,換好後原先訊號線架設人員還問為啥要換線,我原先的隔離線換掉還沒從管道抽出來,但另一頭已經是斷路空腳了,以這條線為例測給他看,沒想到斷路的情況下,直流電壓仍然能從小跳到大,最後跳到破表,換成訊號線架設人員的電錶,相同的詭異情形一樣發生,最後只能猜測大電設備干擾到電表內量測的線圈,導致電壓亂跳…
寫程式存取 SerialPort 並不困難,困難的是在現場常碰到一些辦公室碰不到的詭異情形,例如大電力造成的噪訊干擾,這種看不見摸不著的東西就只能靠網路上搜尋來的經驗來解決了… 別人分享了他的經驗,我也分享我的經驗…
會有干擾的環境下,隔離線材要慎選,此外也要考慮設備可能發生衝突的問題,說實話去年一整年還沒碰過設備衝突的情形,實在搞不懂為啥這個設備會打架… 我有點懷疑是訊號的工作電壓問題,不過案場不能讓我這樣慢慢玩,所以只能暫時就這樣將就的把問題大概解決,卻沒有詳細深入探討的方式了。




RS-485的工作重點是要共地,也就是裝置間的地要接在一起,這接地必須良好,裝置間的地電位差應很小,否則就必須使用隔離式的RS-485。
至於終端電阻的作用是防止電壓到終端時產生湧浪電壓。終端電阻的作用會使終端的阻抗跟傳輸線上一致。因此終端電阻一定要在纜線的兩端。
陳大哥您好:
>>至於終端電阻的作用是防止電壓到終端時產生湧浪電壓。終端電阻的作用會使終端的阻抗跟傳輸線上一致。因>>此終端電阻一定要在纜線的兩端。
您說要接在纜線的兩端, 不過我都只接末端耶? 不知道這樣會不會有啥米問題呢?
麻煩 陳大哥多多指教 感恩!! 小呂
我現在用的是國產貨大同的線材,直接跟原廠叫貨,網路上可以找到這篇有照片,但並不是介紹各位去跟這家買。
http://tw.page.bid.yahoo.com/tw/auction/e38219907?u=lancable168
大同也有出雙絞 + GND + 銅網隔離 的線材,不過因為現場常常碰上被老鼠咬斷線,所以 Cat5e 算是還有備援的線可以替換。
終端電阻接兩端的,或一端的,目前看到的有很多種說法,例如這篇就是接兩端的,還有星狀的接法:
http://www.maxim-ic.com/app-notes/index.mvp/id/763
嗯嗯嗯
謝謝 璉大您提供的資料
陳大哥說得真的是很多人會忽略也不曉得的一點 受教了
現在現實競爭的關係很多廠商的出現,但新興廠商在現場技術的部份
沒有像陳大哥一樣的經驗,實在是在案場也真的一點辦法一點頭緒都沒有哩
陳大哥與璉大 受益良多 感恩…. ^_^
這個我們在兩個不同 source 的設備常發生誤動作
例如 A – 380V AC, B – DC to AC
此時的地都不是同一個, 我們是用隔離設備把兩端隔開
之前是一直發生問題 但是不知道是哪邊有問題
如果兩端的 power source 不同的話? 怎麼做地電位差驗證?
還是有其他的方法可以解決?
理論上訊號接地跟電力接地要接到不同的接地柱,避免共地電力回衝,所以問題應該是你的大電對你的訊號弱電干擾,不是接地的問題。
實務上,因為建築物的接地點在蓋好同時就設置好了,所以通常最後接地通通接再一起,比如說你的電腦,訊號接地與電源接地都是短路的,這表示共地。