孫勝兵
隨著工業(yè)4.0 以及中國(guó)制造2025 的持續(xù)升溫[1],互聯(lián)網(wǎng)、物聯(lián)網(wǎng)技術(shù)與制造業(yè)深度融合,工業(yè)企業(yè)對(duì)于工業(yè)互聯(lián)網(wǎng)與數(shù)據(jù)資產(chǎn)等方面的認(rèn)知逐漸加強(qiáng)[2]。工業(yè)互聯(lián)網(wǎng)將連接對(duì)象延伸到工業(yè)全系統(tǒng)、全產(chǎn)業(yè)鏈、全價(jià)值鏈,可實(shí)現(xiàn)人、物品、機(jī)器、車間、企業(yè)等全要素,以及設(shè)計(jì)、研發(fā)、生產(chǎn)、管理、服務(wù)等各環(huán)節(jié)的深度互聯(lián)[3]。4G、5G 移動(dòng)技術(shù)的發(fā)展為無(wú)線訪問(wèn)提供必要的網(wǎng)絡(luò)基礎(chǔ)設(shè)施和網(wǎng)絡(luò)服務(wù)質(zhì)量。網(wǎng)絡(luò)安全技術(shù)的發(fā)展為工業(yè)網(wǎng)絡(luò)的遠(yuǎn)程訪問(wèn)提供可靠的保證。應(yīng)用工業(yè)網(wǎng)絡(luò)的遠(yuǎn)程訪問(wèn)技術(shù)可以方便地對(duì)分布在不同區(qū)域、不同工廠、不同設(shè)備的數(shù)據(jù)進(jìn)行訪問(wèn)、存儲(chǔ)與分析;可以迅速發(fā)現(xiàn)設(shè)備的問(wèn)題;可以遠(yuǎn)程調(diào)試、下載程序,降低維護(hù)成本。
PLC 遠(yuǎn)程訪問(wèn)方案有基于Modbus Tcp、MQTT、OPC UA 及4G 的云網(wǎng)關(guān)等。其中,Modbus 是一種工業(yè)環(huán)境中廣泛應(yīng)用的網(wǎng)絡(luò)協(xié)議,可以在設(shè)備之間傳輸離散或模擬的IO 數(shù)據(jù)或寄存器數(shù)據(jù),其Modbus Tcp 協(xié)議可以使工業(yè)設(shè)備在任何地方通過(guò)Internet 進(jìn)行尋址;MQTT 是當(dāng)今最受歡迎的物聯(lián)網(wǎng)協(xié)議,是一種客戶/服務(wù)器架構(gòu)的發(fā)布/訂閱模式的消息傳輸協(xié)議,它輕巧、開(kāi)放、簡(jiǎn)單、規(guī)范,易于實(shí)現(xiàn),MQTT 最初是為低帶寬、高延遲、不可靠的網(wǎng)絡(luò)設(shè)計(jì)的;OPC UA 是在傳統(tǒng)的OPC 技術(shù)取得成功后的又一突破,在被確立為工業(yè)4.0 標(biāo)準(zhǔn)通信協(xié)議后,在工業(yè)上應(yīng)用越來(lái)越廣泛,由于OPC UA 具有多種網(wǎng)絡(luò)安全特性,如授權(quán)、加密、認(rèn)證、數(shù)字簽名等,使其較不易受到網(wǎng)絡(luò)攻擊,OPC UA 具有客戶/服務(wù)器和發(fā)布者/訂閱者兩種實(shí)現(xiàn)機(jī)制,但它并沒(méi)有提供自定義的通信協(xié)議來(lái)實(shí)現(xiàn)它們,而是基于現(xiàn)有協(xié)議[4],OPC UA 組件可以以不同形式存在于不同平臺(tái),從嵌入式設(shè)備到各種機(jī)器利用網(wǎng)關(guān)提供OPC UA 功能;4G 云網(wǎng)關(guān)可以將采集到的PLC 等設(shè)備的信息通過(guò)4G 網(wǎng)絡(luò)傳送到企業(yè)私有云或云服務(wù)供應(yīng)商的服務(wù)器上。
筆者針對(duì)幾種不同的訪問(wèn)方案,分別進(jìn)行Modbus Tcp、MQTT、OPC UA、4G 云網(wǎng)關(guān)遠(yuǎn)程監(jiān)測(cè)與數(shù)據(jù)透?jìng)鲗?shí)驗(yàn),來(lái)進(jìn)行PLC 的遠(yuǎn)程訪問(wèn)。
做Modbus Tcp 實(shí)驗(yàn)時(shí)需了解協(xié)議報(bào)文的組成,了解功能碼及其作用。Modbus Tcp 協(xié)議是把Modbus 協(xié)議中的CRC 校驗(yàn)去掉,增加MBAP 報(bào)文頭。協(xié)議中并無(wú)IP 地址及端口號(hào),這是因?yàn)樗皇且粋€(gè)應(yīng)用層協(xié)議,需要和Tcp 協(xié)議一起使用才能傳輸數(shù)據(jù)。它由MBAP 報(bào)文頭、功能碼(見(jiàn)表1)[5]、數(shù)據(jù)組成。本文以西門(mén)子PLC S7-1200 為例說(shuō)明Modbus Tcp 指令的使用方法。首先,在博圖編程軟件中加入Modbus Tcp 指令MB_SERVER(見(jiàn)圖1),設(shè)置指令參數(shù),指定其做為服務(wù)器,設(shè)置緩沖區(qū)位置及大小,并指定TCON_IP_v4 類型的連接描述結(jié)構(gòu)的指針。在數(shù)據(jù)塊中的TCON_IP_v4結(jié)構(gòu)中指定硬件標(biāo)志符、客戶機(jī)的IP 地址及端口號(hào)等(見(jiàn)圖2)。
表1 功能碼作用
圖1 MB_SERVER 指令
圖2 數(shù)據(jù)塊的設(shè)置
然后通過(guò)Modbus Poll 軟件與PLC 建立連接,之后可以嘗試各種功能碼的作用。 選擇communication 菜單項(xiàng),觀察發(fā)出及返回的數(shù)據(jù)。
通過(guò)MQTT 協(xié)議訪問(wèn)西門(mén)子PLC 有多種方案,比如通過(guò)西門(mén)子WINCC 或IOT2050 網(wǎng)關(guān)產(chǎn)品用MQTT 協(xié)議訪問(wèn)PLC,也可以用西門(mén)子MQTT CLIENT 指令庫(kù)實(shí)現(xiàn)。本文以指令庫(kù)實(shí)現(xiàn)方案進(jìn)行實(shí)驗(yàn)。首先,在博圖軟件中引入MQTT 指令庫(kù),在程序中加入LMQTT_client 指令并設(shè)置相應(yīng)的數(shù)據(jù)塊,在connParam 參數(shù)中設(shè)置MQTT 服務(wù)器地址、端口號(hào)等,在設(shè)置消息內(nèi)容、主題后通過(guò)publish 和subscribe 參數(shù)來(lái)發(fā)布和訂閱消息。通過(guò)MQTT.fx 等軟件和PLC 交互,通過(guò)互發(fā)消息驗(yàn)證信息的正確性(見(jiàn)圖3)。
圖3 建立的數(shù)據(jù)塊
4G 云網(wǎng)關(guān)遠(yuǎn)程監(jiān)測(cè)與數(shù)據(jù)透?jìng)鲗?shí)驗(yàn)采用有人物聯(lián)網(wǎng)技術(shù)有限公司的PLCNET210 產(chǎn)品,PLCNET210 通過(guò)網(wǎng)口連接PLC[6],在采集PLC 數(shù)據(jù)后通過(guò)4G 網(wǎng)絡(luò)傳送至云端。除在有人云進(jìn)行組態(tài),將數(shù)據(jù)以圖形、表格等方式直觀的呈現(xiàn)出來(lái)以外,還可以設(shè)置報(bào)警條件、報(bào)警方式,比如溫度值高于60 ℃時(shí)通過(guò)短信、微信等方式發(fā)送通知。也可以通過(guò)有人云將不同區(qū)域的工業(yè)設(shè)備接入,以便于監(jiān)控和管理。如,在有人云端設(shè)計(jì)的組態(tài)畫(huà)面中的“開(kāi)關(guān)”連接到M2.0 位存儲(chǔ)器上,“指示燈”連接在過(guò)程映像輸出Q0.0 上。在博圖軟件中寫(xiě)一個(gè)啟保停和一個(gè)每秒增1 的計(jì)數(shù)程序。“溫度計(jì)”連在一個(gè)計(jì)數(shù)器上,每秒增1?!霸O(shè)備狀態(tài)”負(fù)責(zé)顯示設(shè)備是否在線及設(shè)備是否有報(bào)警(見(jiàn)圖4)。利用PLCNET210 還可以進(jìn)行云端的透?jìng)?。在安裝有人產(chǎn)品配置軟件USR-PLCNET 后會(huì)產(chǎn)生一個(gè)虛擬網(wǎng)卡VirtualBox,開(kāi)啟透?jìng)鬟x項(xiàng)后,在博圖軟件里選擇該網(wǎng)卡即可遠(yuǎn)程下載、調(diào)試程序(見(jiàn)圖5)。
圖4 有人云端組態(tài)手機(jī)端畫(huà)面
做OPC UA 實(shí)驗(yàn)時(shí)可以將S7-1200 作為OPC UA 服務(wù)器,以UA Expert 作為OPC UA 客戶端。首先,在PLC 上編寫(xiě)一個(gè)簡(jiǎn)單的啟保停程序,在博圖WINCC 上組態(tài)一個(gè)畫(huà)面以便于調(diào)試。組態(tài)好IP 地址后激活OPC UA 服務(wù)器,Secure channel 選擇默認(rèn)設(shè)置,設(shè)置許可證為SIMATIC OPC UA S7-1200 Basic,設(shè)置完成后在OPC UA 通信中新建一個(gè)接口,將PLC 變量加入接口后把程序下載進(jìn)PLC。服務(wù)器端準(zhǔn)備完畢。
在UA Expert 上增加一個(gè)服務(wù)器,添加PLC 上OPC UA 服務(wù)器的地址。瀏覽到OPC UA 服務(wù)器后選擇對(duì)應(yīng)安全策略,本文以無(wú)安全策略、訪客權(quán)限登錄。驗(yàn)證證書(shū)后訪問(wèn)OPC UA 服務(wù)器上的接口的節(jié)點(diǎn)(見(jiàn)圖6)。
圖6 UA Expert 訪問(wèn)OPC UA 服務(wù)器
Modbus Tcp 可以經(jīng)由TLS 來(lái)保證安全傳輸,稱為Modbus Tcp Security。Modbus Tcp Security 在系統(tǒng)中的端口號(hào)由傳統(tǒng)的502 改為802,它與Modbus Tcp 的關(guān)系類似http 與https 的關(guān)系,由TLS 提供證書(shū)進(jìn)行身份驗(yàn)證。MQTT 協(xié)議不是雙向信任的,它沒(méi)有提供客戶端驗(yàn)證服務(wù)端身份的機(jī)制,但在使用TLS 時(shí),客戶端可以使用服務(wù)端發(fā)送的SSL 證書(shū)驗(yàn)證服務(wù)端的身份。在驗(yàn)證身份時(shí),由于CONNECT 報(bào)文中包含了用戶名和密碼,實(shí)驗(yàn)者可以選擇自己的身份驗(yàn)證機(jī)制,或者使用操作系統(tǒng)的認(rèn)證機(jī)制。OPC UA 具有完善的分層安全模型,能保證數(shù)據(jù)通信和數(shù)據(jù)訪問(wèn)的安全。通過(guò)使用證書(shū)可以驗(yàn)證建立連接的應(yīng)用程序和主機(jī)的合法性,以此保證數(shù)據(jù)通信的安全。通過(guò)用戶身份驗(yàn)證確定用戶是否有權(quán)訪問(wèn)特定資源,保證數(shù)據(jù)和系統(tǒng)訪問(wèn)的安全。通過(guò)將安全模式設(shè)置為簽名并加密,保證數(shù)據(jù)的機(jī)密性和完整性。
本文通過(guò)Modbus Tcp、MQTT、OPC UA、4G云網(wǎng)關(guān)技術(shù)分別訪問(wèn)西門(mén)子S7-1200 PLC 工程實(shí)驗(yàn),介紹遠(yuǎn)程訪問(wèn)PLC 的安全機(jī)制。實(shí)際使用時(shí)可根據(jù)與PLC 通信設(shè)備的通信接口和安全需求選擇不同的訪問(wèn)方案。