透過 MQTT 為 MODBUS TCP 通訊建立跨網路通道
由於協議開放與易於實作,MODBUS 通訊協定成為工業控制上極為通用的標準,但在網際網路上的應用場合,安全性疑慮以及跨網際網路存取一直是想要把現有 MODBUS 產品推向物聯網應用的一大難題。因應許多使用者提出類似需求,元米科技提出 MMGW (MQTT /MODBUS Gateway)軟體解決方案。
在 MODBUS 控制的領域中,PLC 等設備採用 MODBUS TCP Server 模式讓 SCADA 等圖控系統透過 MODBUS TCP Client 讀取,這樣的架構在區域網路上沒有問題,但在網際網路應用中,每個 MODBUS TCP Server 設備都必須有固定 IP,以使 Client 端程式可以順利連接,這樣的網路架構除了固定 IP 的龐大開銷之外,把 MODBUS TCP Server 在毫無保護的條件下放在網際網路上具備非常嚴重的控制安全風險。如果改將 SCADA 以 Server 方式放在網際網路上,雖然可以將固定 IP 的需求降到最低,但仍舊是將 MODBUS TCP Server 開放在網際網路上,另一方面,每個 PLC 網路現場側必須有另一個 Client 軟體(或在 PLC 程式編輯 Client 對應表),讀取 PLC Server 資料並丟到 SCADA 的 Server,增加了許多編輯的工作與日後維護調整的難度。
MQTT 訊息佇列遙測傳輸(Message Queuing Telemetry Transport)是物聯網時代常用的通訊協定,透過向 MQTT 代理人(MQTT Broker)的協助, 使發布者可以透過網際網路依照主題(Topic)發布(Publish)內容(payload),而訂閱(Subscribe)相關主題(Topic)的訂閱者可以及時取得其內容(payload)。這樣的架構中只有代理人(MQTT Broker)需要固定 IP,其餘的訂閱者與發布者都不需要有固定 IP。
MMGW (MQTT /MODBUS Gateway)軟體就是利用 MQTT 建立通道,使原本同在區域網路的 MODBUS TCP Client 與 MODBUS TCP Server 設備,直接透過網際網路存取,並且利用 MQTT 的安全機制,避免 MODBUS 開放無保護特點帶來的風險。
MMGW 程式是運行於 Windows 作業系統的軟體,透過切換可以運行在 Client 與 Server 模式,MMGW Client 與 MMGW Server 必須成對運行。
下載 MMGW 程式:https://bit.ly/30HPowT
MMGW 程式分為 Client 與 Server 運行模式, Server 模式又分為包含 MQTT Broker 與外部 MQTT Broker 兩種模式
MMGW Server 執行於圖控側,使用 MODBUS TCP Server 以 MQTT 通道連接遠端的 MODBUS TCP Server,參數設定說明如下:
˙Local MQTT Broker 本程式啟動 MQTT Broker (執行電腦必須具備固定 IP,使遠端 Client 程式可連接)
˙External Broker 選用外部 MQTT Broker (執行電腦不須具備固定 IP,但要另有固定 IP 可供連接的 MQTT Broker)
˙MQTT Port 指定內部或外部 MQTT Broker 的 TCP Port,預設為 1883
˙Network Name 指定MQTT 通道的網路代號,MMGW Server 與 Client 必須一致
˙Username/Password MQTT Broker 的使用者帳號密碼,如有 MQTT Broker 有設使用者帳號密碼則必須一致
˙Local MODBUS Server Port 本程式開啟 MODBUS TCP Server 的 TCP Port,預設為 502
˙Remote MODBUS Server IP 連接 MMGW Clinet 端 區域網路內 MODBUS TCP Server 的 IP 位置
˙Remote MODBUS Server Port 連接 MMGW Clinet 端 區域網路內 MODBUS TCP Server 的 TCP Port,預設為 502
MMGW Client 執行於現場側,開啟 MQTT Client 與 MODBUS TCP Client 以轉傳來自 MQTT 通道的 MODBUS 封包並回傳 MODBUS Server 端的回應,執行電腦不須具備固定 IP,其參數設定說明如下:
˙MQTT Broker 連接的 MQTT Broker 主機名稱或 IP
˙MQTT Port 連接的 MQTT Broker 的 TCP Port,預設為 1883
˙Network Name 指定MQTT 通道的網路代號,Server 與 Client 必須一致
˙Username/Password MQTT Broker 的使用者帳號密碼,如有 MQTT Broker 有設使用者帳號密碼則必須一致
★ 展示版僅可開啟一個 Local MODBUS Server 連接一組遠端的 MODBUS TCP Server,正式版則可以開啟多個 Local MODBUS Server,各對應一組遠端的 MODBUS TCP Server
★ 每個區域網路只需要一個 MMGW Client 程式,通道連接對應的 IP 與 Port 號由 MMGW Server 決定
★ 本程式僅供搭配 ICDT WEB HMI 及其訂製方案方案,未獲授權之商業場合應用場合禁止使用 2022/6/3 解除商業應用限制,可自由應用於專案,然免費軟體恕不提供技術資源,亦不對應用產生之損失負賠償責任
★ 本程式於最小化時會自工作列隱藏並縮小為通知圖示(Notify Icon),以避免被誤關閉
★ 元米科技未提供免費的 MQTT Broker 服務,如需要短期驗證,可來信至 eric.icdt@msa.hinet.net 申請短期試用帳號密碼 新版 MQTT Broker 預設為 小霸王實驗室 的 mqttgo.io,不須申請帳號,亦無流量限制
下載 MMGW 程式:https://bit.ly/30HPowT