孙 健,翟健宏
(哈尔滨工业大学 网络空间安全学院,哈尔滨 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统一架构,具有较好的伸缩性,部署维护便捷,适于开展工控网络安全测试和教学培训。