在第一篇文章裡,我們花了些時間說明了硬體裝置是如何通訊的基礎知識以及 Modbus 串列埠 (RTU/ASCII) 的 Master-Slave 的通訊架構。第二篇正式介紹 Modbus 通訊協議以及如何組合通訊封包 PDU 跟 ADU 的概念。這兩篇都是物聯網與後面要談的 Modbus TCP 的基礎,還沒看過的建議可以先回頭了解一下。接下來,對於物聯網所應用的 SCADA 數據搜集與監視的系統,我們需要交代 Modbus TCP 這個 Trubo 版的 Modbus 通訊協議,會包含三個部分:
顧名思義,Modbus TCP 可視為一種 Modbus 分支,意思就是跑在實體通訊介面 TCP/IP 上的 Modbus 通訊協議,TCP/IP 就是我們熟悉的網路。現代的網路讓我們的電腦、手機與其他可以上網等裝置連上互聯網,每一個網路上的裝置都被分配一個 IP 位址(自動抓取或者指派),每一台設備的 IP 位址都不同,這是網路上用來識別每一台裝置的機制。
在第二篇我們講 Modbus 通訊協議的時候有特別指出 Modbus 是一種應用層與底層無關的通訊協議,因此 Modbus.org 定義好的 69 個功能碼、組成 PDU 的邏輯規則在 Modbus TCP 完全適用。還記得郵局跟宅急便的例子嗎?為了想要把 Modbus 跑在 TCP/IP 這個網路傳輸介面上,就需要定義適合用在 TCP/IP 的 ADU 格式。在 Modbus TCP 的 ADU = MBAP Header + PDU,原本用在串列埠的 Slave 裝置 ID 已經被 IP Address 取代掉,整個改用 MBAP (ModBus Application Protocol) 表頭替代,表頭內已經包含了必要的檢核機制,所以 Modbus TCP 通訊的 ADU 是不需要加入 CRC 的。
Modbus TCP 沒有串列埠的 Master-slave 的觀念,改用 Client-Server。那是因為在網路上的每一個裝置節點彼此都是身份對等的,每一個應用 Modbus TCP 的裝置都是可以像電腦一樣做到即時雙向溝通,同時可以發話跟收話不再有 Master-Slave 之分。不過我們還是可以按訊息的傳輸方向與生命週期,區分為出誰是 Server 或 Client,總之,你只要記得負責提需求的裝置就是 Client 而負責提供服務的就是 Server 就可以了。
Modbus TCP 本身還有其他優勢。例如跟 RS485 的 Modbus RTU/ASCII 可連接 32 個裝置相比,Modbus TCP 串接更多的裝置,在一個 C class 的子網域裡面就可以連接 254 個裝置。透過網路路由器 (Router) 就能把網路封包的活動從區域網路升級到全域(全球)網路,就算我們要控制裝置遠在天邊,有了網路監控也是不費吹灰之力,藉由網路升級為 Modbus TCP 後影響範圍可謂無遠弗屆啊。也難怪 SCADA 獲得此神技加持後被智能工廠解決方案們深深的寵愛,在各種數據搜集與監控應用的大雅之堂,大放異彩了。
看到這裡的你或許會想問一個問題,Modbus 是不是就像電腦作業系統一樣,新版總是可以兼容舊版,既然 Modbus TCP 可視為 Modbus RTU/ASCII 的升級版,是不是代表兩者之間是相容互通的呢?這句話對也不對,之所以對是因為前面我們有提到兩者都是基於 Modbus.org 定義的 Modbus 標準通訊協議,所以它們在 PDU 通訊資料格式會是一樣;不對的地方我們上一節也有提到在於通訊底層介面不同,造成兩者的 ADU 格式無法直接互通。因此,兩者 ADU 要兼容的話還必須再經過一道轉換程序才行,有一個專們負責 ADU 轉譯的裝置就叫做 Gateway,中文名稱叫做匣道器。
匣道器是同時連接網路跟串列埠的裝置,意思是它有一邊連接 Modbus RTU/ASCII,另一邊連接 Modbus TCP,它能同時解讀跟打包兩種不同類型的 ADU ,身份就像是一個即時翻譯。所以當它面對 Modbus RTU/ASCII 時就會變身 Master 對底下的所屬裝置們發號施令;當它轉身扮演 Modbus TCP 的角色時候,就會變身網路上的 Client 或 Server 跟其他節點互動。匣道器就在這個中間狀態下,不斷地把拆解跟合成兩邊所需的 ADU,不斷地翻譯成兩邊所需要的語言。也因為有了匣道器,原本使用傳統的 Modbus RTU/ASCII 通訊的裝置們就能透過匣道器這個新來的老大升格變成 Modbus TCP 的一部分,升級成本不高效果卻很顯著,因此深深受到智慧工廠改造者們的喜愛。
以前做系統的時候要開發這種底層通訊的工作真的很辛苦,每次都是 Case by Case,光是處理各種通訊協議與 code 都寫不完。自從有了 Modbus TCP 跟 Gateway 這種神器加持後,SCADA 通訊架構與數據搜集與監看系統瞬間因為網路的頻寬與速度變得更完善且強大,數據覆蓋層面延伸到各種終端裝置,做到了萬物皆可連網、真正的即時監控效果,未來隨著網路技術的發展,數據流動只會更快,轉眼間就能把遠在地球另一端的工廠生產數據即時呈現在戰情室電子看板上面,這結果絕對是所有高階管理者最想要的了。
任何需要即時數據搜集監看的應用的場合都能借助 SCADA 物聯網架構來展開。例如:搜集太陽能電廠數據來提高安全性與發電效率、結合行動應用成為懶人福音的智能家庭、監看交通流量結合自動燈號控制演算來管理改善車流,也可以醫療結合在幼兒或銀髮居家照護都能有很好的應用,對於物聯網未來的發展真是令人充滿想像。不知道你有沒有感受到物聯網與 Modbus 通訊協議威力了呢?不知道你有沒有想到更新奇好玩的 SCADA 應用呢?