孫 健,翟健宏
(哈爾濱工業大學 網絡空間安全學院,哈爾濱 150000)
工業互聯網作為新型基礎設施和戰略新興產業,是中國邁向制造業強國進程中的重要發展領域。《“十四五”規劃和2035年遠景發展目標綱要》提出:“要加快工業互聯網建設,推動互聯網、大數據、人工智能等各產業深度融合,推動先進制造業集群發展”,將工業互聯網列為數字經濟重點產業。
挑戰與機遇并存。隨著工控系統與互聯網的深度融合,原來的“信息孤島”也面臨來自互聯網的安全風險。由于工控系統廣泛應用于能源、交通、制造等關系國計民生和國家安全的關鍵領域,保障工控系統安全的重要性十分突出。現運行的工控系統由于高可靠性和安全性要求,難以開展滲透測試、漏洞挖掘和攻防演練等帶有破壞性的研究工作。因此,必須構建能夠滿足安全研究需求的工控網絡仿真靶場,這對開展工控網絡安全測試、組織面向工控網絡的攻防演練、培育高水平工控安全人才隊伍具有重要的現實意義[1-2]。
當前,工控網絡仿真靶場的形態以全實物和半實物為主[3]。雖然實物類靶場具有仿真程度高的優點,但是投入成本高、建設周期長、維護代價高、可擴展性和靈活性低,場景單一、固化,不利于推廣應用。有鑒于此,本文基于虛擬化工控網絡仿真靶場,提出了一種場景構建方案,設計實現了PCBA智能制造場景,完善了工控網絡仿真靶場的建設。
工業控制系統(Industrial Control Systems,ICS)是由各種自動化控制和過程控制組件構成的,確保工業基礎設施自動化運行的業務流程管控系統。其核心組件主要包括:數據采集與監控系統(Supervisory Control and Data Acquisition,SCADA)、分布式控制系統(Distributed Control Systems,DCS)、可編程邏輯控制器(Programmable Logic Controller,PLC)、遠程終端(Remote Terminal Unit,RTU)和人機交互界面Human Machine Interface,HMI)等。
各組件的通信采用工控系統特有的協議。工控通信協議種類繁多,常見的標準協議有Modbus、DNP3、IEC104、OPC等;私有協議有西門子S7、歐姆龍FINS等。本文構建的PCBA智能制造場景中,OPC Server與各個節點、各個節點之間均采用Modbus TCP協議通信。
OpenStack是一個開源的云計算管理平臺,由美國國家航空航天局和Rackspace合作研究并發起,其目標是提供實施簡單、可大規模擴展、豐富、標準統一的云計算管理平臺。OpenStack目前擁有近30個組件,其核心組件主要包括認證服務(Keystone)、計算服務(Nova)、網絡服務(Neutron)、鏡像服務(Glance)、對象存儲服務(Swift)和塊存儲服務(Cinder)等。本文使用OpenStack框架的Stein版本搭建虛擬化平臺,創建工控網絡仿真靶場的基礎環境。
PLC是廣泛用于自動化控制領域的數字運算控制器,由CPU、指令及數據內存、輸入/輸出接口、電源、數字模擬轉換等功能單元組成,可以將控制指令隨時載入內存進行儲存與執行。PLC采用“順序掃描,不斷循環”的方式進行工作,一個掃描周期要經過輸入采樣、程序執行和輸出刷新3個階段。
PLC是根據工控系統要求和實際業務流程,按照PLC編程語言規范設計實現的控制程序。根據國際電工委員會制定的工業控制編程語言標準(IEC1131-3),PLC的5種標準編程語言是:梯形圖語言(LD)、指令表語言(IL)、功能模塊語言(FBD)、順序功能流程圖語言(SFC)、結構文本化語言(ST)。本文使用開源軟件OpenPLC Runtime[4-5]作為PLC軟實現,使用ST語言設計實現各節點的PLC程序。
應用過程控制的對象連接和嵌入技術(OLE for Process Control,OPC),是工控領域的一種數據訪問機制,用于為不同供應商生產的工控設備和應用程序之間提供標準化接口,解決數據交互的跨平臺、跨協議問題。
早期OPC標準基于微軟的OLE/COM技術,支持多種語言和代碼重用,但由于對Windows平臺的依賴性,已不能滿足工控系統的發展需求。2006年,OPC基金會推出新一代技術標準:OPC統一架構(OPC Unified Architecture,OPC UA)。與早期標準相比,OPC UA不僅包括了數據訪問、歷史數據訪問、報警和事件、安全等不同方面的功能,而且在其基礎上集成了Web服務,構建了統一的數據模型,規范了復雜的地址空間,為協議實現、信息建模和服務器設計提供了支撐[6-8]。
本文基于OPC UA規范建立靶場場景的信息模型,使用開源的Open62541作為開發包完成OPC Server的設計與開發。
印刷電路板裝配(Printed Circuit Board Assembly,PCBA)是對PCB空白板進行表面貼裝的制造過程,主要包括載板、印刷、貼片、回流焊、插件、波峰焊和質檢等流程。目前,PCBA已經高度自動化、智能化,涵蓋了機器人、傳送帶、傳感器和控制器等智能制造領域的典型組件,具有要素齊全、代表性強、復雜度適中、規模可擴展的特點,適于構建工控網絡仿真靶場虛擬化場景。本文選取某PCBA實驗床為對象建立場景模型。
如圖1所示,空白PCB板從進料口進入,按逆時針方向依次完成6道工序后從出料口遞出,整條流水線形成一個閉合環路。其中,6條工位傳送帶各由一個驅動電機驅動,單向傳送,2個轉接傳送帶組各由4個驅動電機驅動,雙向傳送。

圖1 PCBA場景圖
上述場景可以抽象為主控制器、工位和轉接組3個組件,分別用3套控制算法描述各組件的運行邏輯:
2.2.1 符號說明
M(驅動電機):M1~M6表示6個工位傳送帶驅動器,MA1~MA4表示轉接組A的4個驅動器,MB1~MB4表示轉接組B的4個驅動器;
R(機器人):R1~R6表示6個工位機器人;
P(定位傳感器):P1~P6表示6個工位定位傳感器,PA1~PA3表示轉接組A的3個定位傳感器,PB1~PB3表示轉接組B的3個定位傳感器;
L(傳輸線):工位1、2、3和兩個轉接組構成傳輸線L1,工位4、5、6和2個轉接組構成傳輸線L2,signal_L1和signal_L2表示相應的控制信號。
2.2.2 工位控制算法
工位根據控制信號和定位傳感器狀態,控制機器人和工位傳送帶驅動電機,其控制算法描述如下:
Pn為真時,停止Mn,啟動Rn;
Rn完成預定工時后,停止Rn,將Pn復位;
Pn非真,signal_L1為真時,啟動Mn。
2.2.3 轉接組控制算法
轉接組根據控制信號和定位傳感器狀態,控制4臺傳送帶驅動電機的運行,其控制算法描述如下(以轉接組A為例):
(1)MA1~MA4分別驅動傳送帶向上、下、左、右4個方向轉動;PA1、PA2分別判斷轉接組是否與傳輸線L1、L2對齊,PA3判斷操作臺是否居中就位;
(2)初始狀態下,PA1為真,MA1~MA4、PA2、PA3非真;
(3)signal_L1為真時,啟動M3;
(4)P1為真時,停止M3,啟動M2,復位PA1;
(5)PA2為真時,停止M2;
(6)signal_L2為真時,啟動MA4;
(7)PA3為真時,停止MA4,啟動MA1,復位PA2;
(8)PA1為真時,停止MA1。
2.2.4 主控制器控制算法
主控制器根據各定位傳感器狀態,發出控制信號,其控制算法描述如下:
(1)P1、P2、P3、PA1、PB1都為真時,將signal_L1置真,否則復位;
(2)P4、P5、P6、PA2、PB2都為真時,將signal_L2置真,否則復位。
完成場景建模后,根據OPC UA信息建模規范和流程,按照面向對象的方法對場景進行信息建模。為此定義以下4種類型:
(1)驅動電機類型:成員包括轉速變量、運行狀態變量、啟動方法和停止方法;
(2)機器人類型:成員包括運行狀態變量、啟動方法和停止方法;
(3)工位類型:成員包括驅動電機對象、機器人對象、定位傳感器變量;
(4)轉接組類型:成員包括4個驅動電機對象和3個定位傳感器變量。
場景信息模型如圖2所示。

圖2 信息模型
使用OpenStack:stein搭建靶場的虛擬化平臺,平臺硬件資源見表1。

表1 靶場資源
主機controller作為控制節點,部署有keystone組件、glance組件、placement組件、nova組件、neutron組件和zun組件,負責資源管理和調度;主機compute1、compute2、compute3作為計算節點,部署有nova組件、neutron組件,負責提供計算和網絡資源;其中主機compute3還安裝了docker服務和zun組件,負責提供容器服務。
按照場景模型,創建1個節點作為主控制器,6個節點作為工位,2個節點作為轉接組。各節點在虛擬化平臺中通過容器實現,容器中運行OpenPLC Runtime。使用ST語言將場景模型中各組件的控制算法編寫成PLC程序,上傳至OpenPLC Runtime中運行。各節點之間使用Modbus TCP協議通信,其中主控制器為Modbus主站,其余各節點均為Modbus從站。主從站結構如圖3所示:

圖3 主從站結構
OPC Server的主要功能是監測和采集各節點數據提供給客戶端,向各節點傳達客戶端指令。OPC Server使用VS2019開發,主要開發流程如下:
(1)導入信息模型。將2.3中導出的xml文件載入服務器工程;
(2)添加對象節點。向服務器中添加6個工位對象節點和2個轉接組對象節點;
(3)建立連接。使用libmodbus庫與3.2中各節點建立Modbus TCP連接;
(4)添加監測項和回調函數。將各個對象中的狀態變量設置為監測項,為對象中的啟動方法和停止方法設置回調函數,在回調函數中完成對相應地址空間的讀寫操作。
完成各節點構建和OPC Server開發后,按照以下步驟完成場景部署:
(1)按照工控5層網絡模型,在虛擬化平臺中創建虛擬網絡,場景網絡劃分詳情見表2;

表2 場景網絡劃分
(2)創建各節點虛擬機和容器,如圖4所示;

圖4 場景節點
(3)啟動OPC Server,如圖5所示;

圖5 OPC Server運行
(4)運行與測試,如圖6所示。

圖6 使用UaExpert監控場景運行狀態
場景運行后,使用UaExpert軟件作為客戶端連接OPC Server。在UaExpert中調用啟動函數,發出啟動指令,場景開始運行。通過觀察UaExpert中的監測變量和OpenPLC Runtime中的變量變化狀態,可以判斷,變量變化狀態符合控制邏輯和模型設計,場景運行狀況良好。
本文以PCBA智能制造生產線為對象,通過場景建模、信息建模、PLC程序設計和OPC Server開發等環節完成了一種工控虛擬化場景的設計與實現,并在工控網絡仿真靶場中完成部署。通過運行測試,場景運行狀態良好。該場景符合工控網絡架構和系統規范,支持OPC統一架構,具有較好的伸縮性,部署維護便捷,適于開展工控網絡安全測試和教學培訓。