孫 健,翟健宏
(哈爾濱工業(yè)大學 網(wǎng)絡空間安全學院,哈爾濱 150000)
工業(yè)互聯(lián)網(wǎng)作為新型基礎設施和戰(zhàn)略新興產(chǎn)業(yè),是中國邁向制造業(yè)強國進程中的重要發(fā)展領域?!丁笆奈濉币?guī)劃和2035年遠景發(fā)展目標綱要》提出:“要加快工業(yè)互聯(lián)網(wǎng)建設,推動互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等各產(chǎn)業(yè)深度融合,推動先進制造業(yè)集群發(fā)展”,將工業(yè)互聯(lián)網(wǎng)列為數(shù)字經(jīng)濟重點產(chǎn)業(yè)。
挑戰(zhàn)與機遇并存。隨著工控系統(tǒng)與互聯(lián)網(wǎng)的深度融合,原來的“信息孤島”也面臨來自互聯(lián)網(wǎng)的安全風險。由于工控系統(tǒng)廣泛應用于能源、交通、制造等關系國計民生和國家安全的關鍵領域,保障工控系統(tǒng)安全的重要性十分突出。現(xiàn)運行的工控系統(tǒng)由于高可靠性和安全性要求,難以開展?jié)B透測試、漏洞挖掘和攻防演練等帶有破壞性的研究工作。因此,必須構(gòu)建能夠滿足安全研究需求的工控網(wǎng)絡仿真靶場,這對開展工控網(wǎng)絡安全測試、組織面向工控網(wǎng)絡的攻防演練、培育高水平工控安全人才隊伍具有重要的現(xiàn)實意義[1-2]。
當前,工控網(wǎng)絡仿真靶場的形態(tài)以全實物和半實物為主[3]。雖然實物類靶場具有仿真程度高的優(yōu)點,但是投入成本高、建設周期長、維護代價高、可擴展性和靈活性低,場景單一、固化,不利于推廣應用。有鑒于此,本文基于虛擬化工控網(wǎng)絡仿真靶場,提出了一種場景構(gòu)建方案,設計實現(xiàn)了PCBA智能制造場景,完善了工控網(wǎng)絡仿真靶場的建設。
工業(yè)控制系統(tǒng)(Industrial Control Systems,ICS)是由各種自動化控制和過程控制組件構(gòu)成的,確保工業(yè)基礎設施自動化運行的業(yè)務流程管控系統(tǒng)。其核心組件主要包括:數(shù)據(jù)采集與監(jiān)控系統(tǒng)(Supervisory Control and Data Acquisition,SCADA)、分布式控制系統(tǒng)(Distributed Control Systems,DCS)、可編程邏輯控制器(Programmable Logic Controller,PLC)、遠程終端(Remote Terminal Unit,RTU)和人機交互界面Human Machine Interface,HMI)等。
各組件的通信采用工控系統(tǒng)特有的協(xié)議。工控通信協(xié)議種類繁多,常見的標準協(xié)議有Modbus、DNP3、IEC104、OPC等;私有協(xié)議有西門子S7、歐姆龍FINS等。本文構(gòu)建的PCBA智能制造場景中,OPC Server與各個節(jié)點、各個節(jié)點之間均采用Modbus TCP協(xié)議通信。
OpenStack是一個開源的云計算管理平臺,由美國國家航空航天局和Rackspace合作研究并發(fā)起,其目標是提供實施簡單、可大規(guī)模擴展、豐富、標準統(tǒng)一的云計算管理平臺。OpenStack目前擁有近30個組件,其核心組件主要包括認證服務(Keystone)、計算服務(Nova)、網(wǎng)絡服務(Neutron)、鏡像服務(Glance)、對象存儲服務(Swift)和塊存儲服務(Cinder)等。本文使用OpenStack框架的Stein版本搭建虛擬化平臺,創(chuàng)建工控網(wǎng)絡仿真靶場的基礎環(huán)境。
PLC是廣泛用于自動化控制領域的數(shù)字運算控制器,由CPU、指令及數(shù)據(jù)內(nèi)存、輸入/輸出接口、電源、數(shù)字模擬轉(zhuǎn)換等功能單元組成,可以將控制指令隨時載入內(nèi)存進行儲存與執(zhí)行。PLC采用“順序掃描,不斷循環(huán)”的方式進行工作,一個掃描周期要經(jīng)過輸入采樣、程序執(zhí)行和輸出刷新3個階段。
PLC是根據(jù)工控系統(tǒng)要求和實際業(yè)務流程,按照PLC編程語言規(guī)范設計實現(xiàn)的控制程序。根據(jù)國際電工委員會制定的工業(yè)控制編程語言標準(IEC1131-3),PLC的5種標準編程語言是:梯形圖語言(LD)、指令表語言(IL)、功能模塊語言(FBD)、順序功能流程圖語言(SFC)、結(jié)構(gòu)文本化語言(ST)。本文使用開源軟件OpenPLC Runtime[4-5]作為PLC軟實現(xiàn),使用ST語言設計實現(xiàn)各節(jié)點的PLC程序。
應用過程控制的對象連接和嵌入技術(shù)(OLE for Process Control,OPC),是工控領域的一種數(shù)據(jù)訪問機制,用于為不同供應商生產(chǎn)的工控設備和應用程序之間提供標準化接口,解決數(shù)據(jù)交互的跨平臺、跨協(xié)議問題。
早期OPC標準基于微軟的OLE/COM技術(shù),支持多種語言和代碼重用,但由于對Windows平臺的依賴性,已不能滿足工控系統(tǒng)的發(fā)展需求。2006年,OPC基金會推出新一代技術(shù)標準:OPC統(tǒng)一架構(gòu)(OPC Unified Architecture,OPC UA)。與早期標準相比,OPC UA不僅包括了數(shù)據(jù)訪問、歷史數(shù)據(jù)訪問、報警和事件、安全等不同方面的功能,而且在其基礎上集成了Web服務,構(gòu)建了統(tǒng)一的數(shù)據(jù)模型,規(guī)范了復雜的地址空間,為協(xié)議實現(xiàn)、信息建模和服務器設計提供了支撐[6-8]。
本文基于OPC UA規(guī)范建立靶場場景的信息模型,使用開源的Open62541作為開發(fā)包完成OPC Server的設計與開發(fā)。
印刷電路板裝配(Printed Circuit Board Assembly,PCBA)是對PCB空白板進行表面貼裝的制造過程,主要包括載板、印刷、貼片、回流焊、插件、波峰焊和質(zhì)檢等流程。目前,PCBA已經(jīng)高度自動化、智能化,涵蓋了機器人、傳送帶、傳感器和控制器等智能制造領域的典型組件,具有要素齊全、代表性強、復雜度適中、規(guī)??蓴U展的特點,適于構(gòu)建工控網(wǎng)絡仿真靶場虛擬化場景。本文選取某PCBA實驗床為對象建立場景模型。
如圖1所示,空白PCB板從進料口進入,按逆時針方向依次完成6道工序后從出料口遞出,整條流水線形成一個閉合環(huán)路。其中,6條工位傳送帶各由一個驅(qū)動電機驅(qū)動,單向傳送,2個轉(zhuǎn)接傳送帶組各由4個驅(qū)動電機驅(qū)動,雙向傳送。
圖1 PCBA場景圖
上述場景可以抽象為主控制器、工位和轉(zhuǎn)接組3個組件,分別用3套控制算法描述各組件的運行邏輯:
2.2.1 符號說明
M(驅(qū)動電機):M1~M6表示6個工位傳送帶驅(qū)動器,MA1~MA4表示轉(zhuǎn)接組A的4個驅(qū)動器,MB1~MB4表示轉(zhuǎn)接組B的4個驅(qū)動器;
R(機器人):R1~R6表示6個工位機器人;
P(定位傳感器):P1~P6表示6個工位定位傳感器,PA1~PA3表示轉(zhuǎn)接組A的3個定位傳感器,PB1~PB3表示轉(zhuǎn)接組B的3個定位傳感器;
L(傳輸線):工位1、2、3和兩個轉(zhuǎn)接組構(gòu)成傳輸線L1,工位4、5、6和2個轉(zhuǎn)接組構(gòu)成傳輸線L2,signal_L1和signal_L2表示相應的控制信號。
2.2.2 工位控制算法
工位根據(jù)控制信號和定位傳感器狀態(tài),控制機器人和工位傳送帶驅(qū)動電機,其控制算法描述如下:
Pn為真時,停止Mn,啟動Rn;
Rn完成預定工時后,停止Rn,將Pn復位;
Pn非真,signal_L1為真時,啟動Mn。
2.2.3 轉(zhuǎn)接組控制算法
轉(zhuǎn)接組根據(jù)控制信號和定位傳感器狀態(tài),控制4臺傳送帶驅(qū)動電機的運行,其控制算法描述如下(以轉(zhuǎn)接組A為例):
(1)MA1~MA4分別驅(qū)動傳送帶向上、下、左、右4個方向轉(zhuǎn)動;PA1、PA2分別判斷轉(zhuǎn)接組是否與傳輸線L1、L2對齊,PA3判斷操作臺是否居中就位;
(2)初始狀態(tài)下,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 主控制器控制算法
主控制器根據(jù)各定位傳感器狀態(tài),發(fā)出控制信號,其控制算法描述如下:
(1)P1、P2、P3、PA1、PB1都為真時,將signal_L1置真,否則復位;
(2)P4、P5、P6、PA2、PB2都為真時,將signal_L2置真,否則復位。
完成場景建模后,根據(jù)OPC UA信息建模規(guī)范和流程,按照面向?qū)ο蟮姆椒▽鼍斑M行信息建模。為此定義以下4種類型:
(1)驅(qū)動電機類型:成員包括轉(zhuǎn)速變量、運行狀態(tài)變量、啟動方法和停止方法;
(2)機器人類型:成員包括運行狀態(tài)變量、啟動方法和停止方法;
(3)工位類型:成員包括驅(qū)動電機對象、機器人對象、定位傳感器變量;
(4)轉(zhuǎn)接組類型:成員包括4個驅(qū)動電機對象和3個定位傳感器變量。
場景信息模型如圖2所示。
圖2 信息模型
使用OpenStack:stein搭建靶場的虛擬化平臺,平臺硬件資源見表1。
表1 靶場資源
主機controller作為控制節(jié)點,部署有keystone組件、glance組件、placement組件、nova組件、neutron組件和zun組件,負責資源管理和調(diào)度;主機compute1、compute2、compute3作為計算節(jié)點,部署有nova組件、neutron組件,負責提供計算和網(wǎng)絡資源;其中主機compute3還安裝了docker服務和zun組件,負責提供容器服務。
按照場景模型,創(chuàng)建1個節(jié)點作為主控制器,6個節(jié)點作為工位,2個節(jié)點作為轉(zhuǎn)接組。各節(jié)點在虛擬化平臺中通過容器實現(xiàn),容器中運行OpenPLC Runtime。使用ST語言將場景模型中各組件的控制算法編寫成PLC程序,上傳至OpenPLC Runtime中運行。各節(jié)點之間使用Modbus TCP協(xié)議通信,其中主控制器為Modbus主站,其余各節(jié)點均為Modbus從站。主從站結(jié)構(gòu)如圖3所示:
圖3 主從站結(jié)構(gòu)
OPC Server的主要功能是監(jiān)測和采集各節(jié)點數(shù)據(jù)提供給客戶端,向各節(jié)點傳達客戶端指令。OPC Server使用VS2019開發(fā),主要開發(fā)流程如下:
(1)導入信息模型。將2.3中導出的xml文件載入服務器工程;
(2)添加對象節(jié)點。向服務器中添加6個工位對象節(jié)點和2個轉(zhuǎn)接組對象節(jié)點;
(3)建立連接。使用libmodbus庫與3.2中各節(jié)點建立Modbus TCP連接;
(4)添加監(jiān)測項和回調(diào)函數(shù)。將各個對象中的狀態(tài)變量設置為監(jiān)測項,為對象中的啟動方法和停止方法設置回調(diào)函數(shù),在回調(diào)函數(shù)中完成對相應地址空間的讀寫操作。
完成各節(jié)點構(gòu)建和OPC Server開發(fā)后,按照以下步驟完成場景部署:
(1)按照工控5層網(wǎng)絡模型,在虛擬化平臺中創(chuàng)建虛擬網(wǎng)絡,場景網(wǎng)絡劃分詳情見表2;
表2 場景網(wǎng)絡劃分
(2)創(chuàng)建各節(jié)點虛擬機和容器,如圖4所示;
圖4 場景節(jié)點
(3)啟動OPC Server,如圖5所示;
圖5 OPC Server運行
(4)運行與測試,如圖6所示。
圖6 使用UaExpert監(jiān)控場景運行狀態(tài)
場景運行后,使用UaExpert軟件作為客戶端連接OPC Server。在UaExpert中調(diào)用啟動函數(shù),發(fā)出啟動指令,場景開始運行。通過觀察UaExpert中的監(jiān)測變量和OpenPLC Runtime中的變量變化狀態(tài),可以判斷,變量變化狀態(tài)符合控制邏輯和模型設計,場景運行狀況良好。
本文以PCBA智能制造生產(chǎn)線為對象,通過場景建模、信息建模、PLC程序設計和OPC Server開發(fā)等環(huán)節(jié)完成了一種工控虛擬化場景的設計與實現(xiàn),并在工控網(wǎng)絡仿真靶場中完成部署。通過運行測試,場景運行狀態(tài)良好。該場景符合工控網(wǎng)絡架構(gòu)和系統(tǒng)規(guī)范,支持OPC統(tǒng)一架構(gòu),具有較好的伸縮性,部署維護便捷,適于開展工控網(wǎng)絡安全測試和教學培訓。