孫勝兵
隨著工業4.0 以及中國制造2025 的持續升溫[1],互聯網、物聯網技術與制造業深度融合,工業企業對于工業互聯網與數據資產等方面的認知逐漸加強[2]。工業互聯網將連接對象延伸到工業全系統、全產業鏈、全價值鏈,可實現人、物品、機器、車間、企業等全要素,以及設計、研發、生產、管理、服務等各環節的深度互聯[3]。4G、5G 移動技術的發展為無線訪問提供必要的網絡基礎設施和網絡服務質量。網絡安全技術的發展為工業網絡的遠程訪問提供可靠的保證。應用工業網絡的遠程訪問技術可以方便地對分布在不同區域、不同工廠、不同設備的數據進行訪問、存儲與分析;可以迅速發現設備的問題;可以遠程調試、下載程序,降低維護成本。
PLC 遠程訪問方案有基于Modbus Tcp、MQTT、OPC UA 及4G 的云網關等。其中,Modbus 是一種工業環境中廣泛應用的網絡協議,可以在設備之間傳輸離散或模擬的IO 數據或寄存器數據,其Modbus Tcp 協議可以使工業設備在任何地方通過Internet 進行尋址;MQTT 是當今最受歡迎的物聯網協議,是一種客戶/服務器架構的發布/訂閱模式的消息傳輸協議,它輕巧、開放、簡單、規范,易于實現,MQTT 最初是為低帶寬、高延遲、不可靠的網絡設計的;OPC UA 是在傳統的OPC 技術取得成功后的又一突破,在被確立為工業4.0 標準通信協議后,在工業上應用越來越廣泛,由于OPC UA 具有多種網絡安全特性,如授權、加密、認證、數字簽名等,使其較不易受到網絡攻擊,OPC UA 具有客戶/服務器和發布者/訂閱者兩種實現機制,但它并沒有提供自定義的通信協議來實現它們,而是基于現有協議[4],OPC UA 組件可以以不同形式存在于不同平臺,從嵌入式設備到各種機器利用網關提供OPC UA 功能;4G 云網關可以將采集到的PLC 等設備的信息通過4G 網絡傳送到企業私有云或云服務供應商的服務器上。
筆者針對幾種不同的訪問方案,分別進行Modbus Tcp、MQTT、OPC UA、4G 云網關遠程監測與數據透傳實驗,來進行PLC 的遠程訪問。
做Modbus Tcp 實驗時需了解協議報文的組成,了解功能碼及其作用。Modbus Tcp 協議是把Modbus 協議中的CRC 校驗去掉,增加MBAP 報文頭。協議中并無IP 地址及端口號,這是因為它只是一個應用層協議,需要和Tcp 協議一起使用才能傳輸數據。它由MBAP 報文頭、功能碼(見表1)[5]、數據組成。本文以西門子PLC S7-1200 為例說明Modbus Tcp 指令的使用方法。首先,在博圖編程軟件中加入Modbus Tcp 指令MB_SERVER(見圖1),設置指令參數,指定其做為服務器,設置緩沖區位置及大小,并指定TCON_IP_v4 類型的連接描述結構的指針。在數據塊中的TCON_IP_v4結構中指定硬件標志符、客戶機的IP 地址及端口號等(見圖2)。

表1 功能碼作用

圖1 MB_SERVER 指令

圖2 數據塊的設置
然后通過Modbus Poll 軟件與PLC 建立連接,之后可以嘗試各種功能碼的作用。 選擇communication 菜單項,觀察發出及返回的數據。
通過MQTT 協議訪問西門子PLC 有多種方案,比如通過西門子WINCC 或IOT2050 網關產品用MQTT 協議訪問PLC,也可以用西門子MQTT CLIENT 指令庫實現。本文以指令庫實現方案進行實驗。首先,在博圖軟件中引入MQTT 指令庫,在程序中加入LMQTT_client 指令并設置相應的數據塊,在connParam 參數中設置MQTT 服務器地址、端口號等,在設置消息內容、主題后通過publish 和subscribe 參數來發布和訂閱消息。通過MQTT.fx 等軟件和PLC 交互,通過互發消息驗證信息的正確性(見圖3)。

圖3 建立的數據塊
4G 云網關遠程監測與數據透傳實驗采用有人物聯網技術有限公司的PLCNET210 產品,PLCNET210 通過網口連接PLC[6],在采集PLC 數據后通過4G 網絡傳送至云端。除在有人云進行組態,將數據以圖形、表格等方式直觀的呈現出來以外,還可以設置報警條件、報警方式,比如溫度值高于60 ℃時通過短信、微信等方式發送通知。也可以通過有人云將不同區域的工業設備接入,以便于監控和管理。如,在有人云端設計的組態畫面中的“開關”連接到M2.0 位存儲器上,“指示燈”連接在過程映像輸出Q0.0 上。在博圖軟件中寫一個啟保停和一個每秒增1 的計數程序。“溫度計”連在一個計數器上,每秒增1。“設備狀態”負責顯示設備是否在線及設備是否有報警(見圖4)。利用PLCNET210 還可以進行云端的透傳。在安裝有人產品配置軟件USR-PLCNET 后會產生一個虛擬網卡VirtualBox,開啟透傳選項后,在博圖軟件里選擇該網卡即可遠程下載、調試程序(見圖5)。

圖4 有人云端組態手機端畫面
做OPC UA 實驗時可以將S7-1200 作為OPC UA 服務器,以UA Expert 作為OPC UA 客戶端。首先,在PLC 上編寫一個簡單的啟保停程序,在博圖WINCC 上組態一個畫面以便于調試。組態好IP 地址后激活OPC UA 服務器,Secure channel 選擇默認設置,設置許可證為SIMATIC OPC UA S7-1200 Basic,設置完成后在OPC UA 通信中新建一個接口,將PLC 變量加入接口后把程序下載進PLC。服務器端準備完畢。
在UA Expert 上增加一個服務器,添加PLC 上OPC UA 服務器的地址。瀏覽到OPC UA 服務器后選擇對應安全策略,本文以無安全策略、訪客權限登錄。驗證證書后訪問OPC UA 服務器上的接口的節點(見圖6)。

圖6 UA Expert 訪問OPC UA 服務器
Modbus Tcp 可以經由TLS 來保證安全傳輸,稱為Modbus Tcp Security。Modbus Tcp Security 在系統中的端口號由傳統的502 改為802,它與Modbus Tcp 的關系類似http 與https 的關系,由TLS 提供證書進行身份驗證。MQTT 協議不是雙向信任的,它沒有提供客戶端驗證服務端身份的機制,但在使用TLS 時,客戶端可以使用服務端發送的SSL 證書驗證服務端的身份。在驗證身份時,由于CONNECT 報文中包含了用戶名和密碼,實驗者可以選擇自己的身份驗證機制,或者使用操作系統的認證機制。OPC UA 具有完善的分層安全模型,能保證數據通信和數據訪問的安全。通過使用證書可以驗證建立連接的應用程序和主機的合法性,以此保證數據通信的安全。通過用戶身份驗證確定用戶是否有權訪問特定資源,保證數據和系統訪問的安全。通過將安全模式設置為簽名并加密,保證數據的機密性和完整性。
本文通過Modbus Tcp、MQTT、OPC UA、4G云網關技術分別訪問西門子S7-1200 PLC 工程實驗,介紹遠程訪問PLC 的安全機制。實際使用時可根據與PLC 通信設備的通信接口和安全需求選擇不同的訪問方案。