PLC 通訊協定完整比較:Modbus、Profinet、EtherNet/IP、CC-Link 怎麼選
「為什麼我的西門子 PLC 讀不到那台三菱變頻器?」——因為它們講不同的語言。工業通訊協定的世界之所以這麼亂,是因為每家大廠都推自己的協定,而且都不打算讓你輕鬆換牌子。
一、先分清楚兩個層次
實體層(線怎麼接) vs 協定層(話怎麼講)
· RS-485 是實體層——兩條線、可以串很多台、傳很遠(最長可達 1200 公尺)。它不是協定,它只規定電氣特性。
· Modbus RTU 是協定層——規定封包怎麼組、位址怎麼定、CRC 怎麼算。它通常跑在 RS-485 上。
很多人把「RS-485」和「Modbus」當同義詞,其實不是。RS-485 上也可以跑別的協定。
· RS-485 是實體層——兩條線、可以串很多台、傳很遠(最長可達 1200 公尺)。它不是協定,它只規定電氣特性。
· Modbus RTU 是協定層——規定封包怎麼組、位址怎麼定、CRC 怎麼算。它通常跑在 RS-485 上。
很多人把「RS-485」和「Modbus」當同義詞,其實不是。RS-485 上也可以跑別的協定。
二、常見協定一覽
| 協定 | 陣營 | 實體層 | 典型用途 |
|---|---|---|---|
| Modbus RTU | 開放 | RS-485 / RS-232 | 變頻器、電表、感測器(最通用) |
| Modbus TCP | 開放 | 乙太網路 | 同上,但走網路線 |
| Profinet | 西門子 | 乙太網路 | 西門子生態系的標配 |
| Profibus DP | 西門子 | RS-485 | Profinet 的前輩,舊廠仍大量存在 |
| EtherNet/IP | Rockwell / AB | 乙太網路 | 美系設備、Allen-Bradley |
| CC-Link / CC-Link IE | 三菱 | 專用 / 乙太網路 | 三菱生態系 |
| EtherCAT | Beckhoff | 乙太網路 | 高速運動控制(微秒級) |
| OPC-UA | 開放 | 乙太網路 | 跨廠牌整合、上雲(見下文) |
名字很像但完全不通:EtherNet/IP ≠ Ethernet ≠ EtherCAT
· Ethernet(乙太網路)是實體層,就是你家的網路線。
· EtherNet/IP 是 Rockwell 的工業協定(IP = Industrial Protocol,不是 Internet Protocol)。
· EtherCAT 是 Beckhoff 的高速協定,雖然用網路線但不能接一般交換器。
這三個名字害慘無數人。買錯模組是常有的事,採購前務必看型錄上的協定全名。
· Ethernet(乙太網路)是實體層,就是你家的網路線。
· EtherNet/IP 是 Rockwell 的工業協定(IP = Industrial Protocol,不是 Internet Protocol)。
· EtherCAT 是 Beckhoff 的高速協定,雖然用網路線但不能接一般交換器。
這三個名字害慘無數人。買錯模組是常有的事,採購前務必看型錄上的協定全名。
三、Modbus 為什麼還沒死?
Modbus 是 1979 年的協定,又慢又陽春——沒有加密、沒有時間戳、一次最多讀 125 個暫存器。但它到 2026 年還是最通用的工業協定,原因很簡單:
- 開放、免授權費——任何廠商都能實作,不用加入什麼聯盟
- 簡單到不會出錯——封包結構單純,拿示波器都能除錯
- 幾乎所有設備都支援——變頻器、電表、pH 計、溶氧計、流量計,幾乎沒有例外
實務上,只要遇到「這台雜牌感測器要怎麼接進 PLC」,答案九成是 Modbus RTU。
Modbus 的四種資料區
| 類型 | 讀寫 | 資料 | 典型內容 |
|---|---|---|---|
| Coil | 可讀可寫 | 1 bit | 啟停命令、閥門開關 |
| Discrete Input | 唯讀 | 1 bit | 運轉狀態、故障旗標 |
| Input Register | 唯讀 | 16 bit | 量測值:溫度、pH、流量 |
| Holding Register | 可讀可寫 | 16 bit | 設定值:頻率命令、目標溫度 |
Modbus 現場最常見的三個坑
1. 位址從 0 還是從 1 開始? 這是 Modbus 的原罪。有些設備手冊寫 40001,實際要填 0;有些寫 0 就是 0。永遠以實測為準,先用 Modbus Poll 之類的工具讀通了再寫進 PLC。
2. 32 位元數值的高低位順序。 浮點數要佔兩個暫存器,但誰在前面?各家不一樣(Big-endian / Little-endian / Word-swap)。讀出來的數字如果荒謬(例如 pH = 3.2e+18),八成就是這個問題,把兩個 word 對調試試。
3. 小數點位置。 Modbus 傳的常是整數,pH 7.25 會傳成 725,你要自己除以 100。手冊上會寫「倍率」,漏看就會出現 pH 725 的荒謬告警。
1. 位址從 0 還是從 1 開始? 這是 Modbus 的原罪。有些設備手冊寫 40001,實際要填 0;有些寫 0 就是 0。永遠以實測為準,先用 Modbus Poll 之類的工具讀通了再寫進 PLC。
2. 32 位元數值的高低位順序。 浮點數要佔兩個暫存器,但誰在前面?各家不一樣(Big-endian / Little-endian / Word-swap)。讀出來的數字如果荒謬(例如 pH = 3.2e+18),八成就是這個問題,把兩個 word 對調試試。
3. 小數點位置。 Modbus 傳的常是整數,pH 7.25 會傳成 725,你要自己除以 100。手冊上會寫「倍率」,漏看就會出現 pH 725 的荒謬告警。
四、跨廠牌整合怎麼做?
現實是:一個廠區裡常常有西門子的主控、三菱的舊設備、雜牌的感測器、還有一台 Rockwell 的包裝機。它們協定各不相同。
方案 1:通訊模組(硬體轉換)
加裝閘道器(Gateway),例如 Profinet ↔ Modbus TCP 的轉換模組。優點是穩定;缺點是每種組合都要一顆,而且要設定對應表。
方案 2:OPC-UA(推薦的長期解)
OPC-UA 是目前跨廠牌與上雲的事實標準
它不綁任何廠牌,主流 PLC(西門子 S7-1500、三菱 iQ-R、CODESYS 系)都內建或可加購 OPC-UA Server。上位系統(SCADA、雲端平台、Python 程式)只要當 OPC-UA Client 連過去,就能用統一的方式讀寫所有設備的標籤。
而且它內建加密與認證——這一點很重要,Modbus TCP 是完全裸奔的,任何人只要連得上網段就能寫入你的暫存器。
我們在「工廠水處理系統雲端監控」專案就是採用這個架構:現場 Siemens PLC 開 OPC-UA Server,資料經由閘道上雲,不需要在防火牆開放 PLC 的原生協定埠。
它不綁任何廠牌,主流 PLC(西門子 S7-1500、三菱 iQ-R、CODESYS 系)都內建或可加購 OPC-UA Server。上位系統(SCADA、雲端平台、Python 程式)只要當 OPC-UA Client 連過去,就能用統一的方式讀寫所有設備的標籤。
而且它內建加密與認證——這一點很重要,Modbus TCP 是完全裸奔的,任何人只要連得上網段就能寫入你的暫存器。
我們在「工廠水處理系統雲端監控」專案就是採用這個架構:現場 Siemens PLC 開 OPC-UA Server,資料經由閘道上雲,不需要在防火牆開放 PLC 的原生協定埠。
方案 3:直接讀 PLC 原生協定
例如用 Python 的 snap7 讀西門子、pymcprotocol 讀三菱。開發快,但耦合度高、換 PLC 就要重寫,而且大多沒有加密。適合做原型,不建議長期用在正式系統。
五、資安:這一段請務必看
工業協定的預設狀態是「完全不設防」
Modbus TCP、S7comm、EtherNet/IP 這些協定設計的年代,沒人想過工廠會連上網際網路。它們沒有身分驗證、沒有加密——只要封包送得到,就能改你的設定值、停你的泵浦。
絕對不要把 PLC 直接暴露在公網上。 這不是危言聳聽——網路上有專門搜尋暴露工控設備的搜尋引擎,台灣的水處理廠、太陽能電站被掃到的案例每年都有。
最低限度的做法:
· PLC 網段與辦公網段實體或 VLAN 隔離
· 需要遠端存取一律走 VPN,不要開通訊埠轉發(Port Forwarding)
· 上雲用 OPC-UA(有加密)或由閘道器主動向外推送資料,而不是讓外面連進來
· 預設密碼一定要改(這句話每年都要講一次,每年都還是有人沒改)
Modbus TCP、S7comm、EtherNet/IP 這些協定設計的年代,沒人想過工廠會連上網際網路。它們沒有身分驗證、沒有加密——只要封包送得到,就能改你的設定值、停你的泵浦。
絕對不要把 PLC 直接暴露在公網上。 這不是危言聳聽——網路上有專門搜尋暴露工控設備的搜尋引擎,台灣的水處理廠、太陽能電站被掃到的案例每年都有。
最低限度的做法:
· PLC 網段與辦公網段實體或 VLAN 隔離
· 需要遠端存取一律走 VPN,不要開通訊埠轉發(Port Forwarding)
· 上雲用 OPC-UA(有加密)或由閘道器主動向外推送資料,而不是讓外面連進來
· 預設密碼一定要改(這句話每年都要講一次,每年都還是有人沒改)
六、快速選型建議
| 情境 | 建議 |
|---|---|
| 接雜牌感測器 / 變頻器 | Modbus RTU (RS-485) |
| 純西門子廠區 | Profinet |
| 純三菱廠區 | CC-Link IE |
| 高速運動控制(多軸同步) | EtherCAT |
| 混廠牌整合 / 要上雲 / 要資安 | OPC-UA |
小結
- RS-485 是線,Modbus 是話——兩者不是同一層
- EtherNet/IP、Ethernet、EtherCAT 是三個不同的東西
- Modbus 又老又陽春,但最通用,雜牌設備一律先試它
- Modbus 三大坑:位址偏移、高低位順序、小數點倍率
- 跨廠牌與上雲,OPC-UA 是目前最好的答案
- 工業協定預設不設防——PLC 絕不可直接暴露在公網
AI 產生的 PLC 程式,到底能不能信?
我們建了一套 20 題基準測試,題目全部來自真實案場,並且公開了完整結果——包含難看的那幾項: 編譯通過率 80~95%、品牌指令混用 0%、整體全對 55~65%。
還有一個對我們自己不利的發現:AI review 幫得上找出可疑點,但 finding 本身也會誤報、必須經規則層與測試結果校正;它更不能可靠地「修好」程式。
→ 我們把 AI 寫 PLC 的準確率量出來了:20 題基準測試
我們建了一套 20 題基準測試,題目全部來自真實案場,並且公開了完整結果——包含難看的那幾項: 編譯通過率 80~95%、品牌指令混用 0%、整體全對 55~65%。
還有一個對我們自己不利的發現:AI review 幫得上找出可疑點,但 finding 本身也會誤報、必須經規則層與測試結果校正;它更不能可靠地「修好」程式。
→ 我們把 AI 寫 PLC 的準確率量出來了:20 題基準測試
通訊整合、上雲監控,我們實際做過
易歐特科技完成過工廠水處理系統雲端監控(Siemens PLC + OPC-UA 上雲)、太陽能電站監控、溫室與養殖環境雲端監控。跨廠牌整合、資安架構、SCADA 建置,可直接委託。
討論你的整合需求 →或先免費試用 AI PLC 工具產生通訊設定程式碼
易歐特科技有限公司 · 工業自動化 PLC 程式設計與環控系統整合 · 委託開發