首页> 中国专利> 一种工业控制系统中可编程逻辑控制器的安全监控系统及方法

一种工业控制系统中可编程逻辑控制器的安全监控系统及方法

摘要

一种工业控制系统中可编程逻辑控制器的安全监控系统及方法,本系统基于实时数据库,由用户程序模拟运行模块、运行状态实时监控模块以及运行状态安全检测模块组成。在不进行安全检测的时候,用户程序模拟运行模块能够独立运行用于PLC的仿真运行,运行状态实时监控模块能独立运行用于远程监控PLC输入输出和变量值。当开启安全检测功能时,上述三个模块通过实时数据库进行连接交互,用户程序模拟运行模块和运行状态实时监控模块输出的监控变量将输入到实时数据库中,运行状态安全检测模块将从实时数据库中读取相应变量来进行安全检测。

著录项

  • 公开/公告号CN105302055A

    专利类型发明专利

  • 公开/公告日2016-02-03

    原文格式PDF

  • 申请/专利权人 北京工业大学;

    申请/专利号CN201510760009.7

  • 发明设计人 詹静;吴欢;赵勇;

    申请日2015-11-09

  • 分类号G05B19/05(20060101);G05B19/048(20060101);

  • 代理机构11203 北京思海天达知识产权代理有限公司;

  • 代理人沈波

  • 地址 100124 北京市朝阳区平乐园100号

  • 入库时间 2023-12-18 13:52:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-08-14

    授权

    授权

  • 2016-03-02

    实质审查的生效 IPC(主分类):G05B19/05 申请日:20151109

    实质审查的生效

  • 2016-02-03

    公开

    公开

说明书

技术领域

本发明涉及工业控制领域和信息技术领域,特别是涉及一种工控系统中的可编程逻辑控 制器(PLC)运行状态安全监控系统及方法,并以西门子S7-200为例进行了系统设计和方 法验证。

背景技术

随着工业化与信息化进程的不断交叉融合,越来越多的信息技术应用到了工业领域。目 前,工业控制系统已广泛应用于电力、水力、石化、医药、食品制造、交通运输、航空航 天等工业领域,其中,超过80%的涉及国计民生的关键基础设施依靠工业控制系统来实现 自动化作业。工业控制系统已经成为国家关键基础设施的重要组成部分,工业控制系统的 安全关系到国家的战略安全。与此同时,由于工业控制系统广泛采用通用软硬件和网络设 施,以及与企业管理信息系统的集成,导致工业控制系统越来越开放,并且与企业内网, 甚至是与互联网产生了数据交换。也就是说以前工业控制系统在物理环境上的相对封闭性 以及工业控制系统软、硬件的专用性将会被打破,通过互联网或企业内网将有可能获取相 关工业控制系统较为详细的信息,再加上运营工业控制系统的企业安全意识普遍较差,这 样就给敌对政府、恐怖组织、商业间谍、内部不法人员、外部非法入侵者等创造了可乘之 机。

西门子作为全球工业控制领域的领先企业,其下的S7系列可编程逻辑控制器具有紧凑 的设计、丰富的扩展能力、极高的可靠性、便捷的操作性、强大的指令系统和低廉的价格, 它能够近乎满足所有规模的控制要求,广泛应用于工业和民用领域。震网病毒就是针对西 门子S7系列专门编写的工控系统病毒,其不仅会篡改上位机中的组态软件,篡改用户编写 的执行程序,使得组态得到的现场设备状态信息不可靠,而且其还直接感染可编程逻辑控 制器中的代码执行部分,使其通信功能和逻辑功能遭到篡改,从而导致现场安全事故的发 生。

现有的大多数PLC虽然有安全功能,但是大多是针对其功能逻辑而设计的,比如人员 访问控制、安全执行时间、安全的物理执行环境等,而对于信息系统中存在的病毒、木马 等高级攻击手段根本无法检测和防御。现有的保障工控系统安全手段包括有安全的工业控 制协议、上位机恶意代码防御、现场设备状态实时监控等,对于相对封闭的下位机可编程 逻辑控制器并没有有效地安全方案。

发明内容

为了解决上述问题,发明了一种针对PLC运行状态的安全监控系统及方法。此系统通 过模拟PLC程序运行状态和实时监控运行状态,基于工控系统环境专用的安全检测算法对 工控系统底层的现场控制部件PLC进行安全性判断和实施安全控制。通过本发明系统,能 动态分析出工控系统的PLC行为是否异常并进行及时预警,同时具有不受工控软件漏洞影 响、监控方法可基于通用TCP/IP网络环境实现的优点。

本发明的技术方案如下:本系统基于实时数据库,由用户程序模拟运行模块、运行状态 实时监控模块以及运行状态安全检测模块组成。在不进行安全检测的时候,用户程序模拟 运行模块能够独立运行用于PLC的仿真运行,运行状态实时监控模块能独立运行用于远程 监控PLC输入输出和变量值。当开启安全检测功能时,上述三个模块通过实时数据库进行 连接交互,用户程序模拟运行模块和运行状态实时监控模块输出的监控变量将输入到实时 数据库中,运行状态安全检测模块将从实时数据库中读取相应变量来进行安全检测。

工业控制网络分为三个层次:企业网络层、过程监控层以及现场控制层,本系统运行在 工业控制网络的过程监控层,与工控厂商提供的上位机组态软件位于同一个网络层次,但 是由于本系统独立于组态软件和PLC编程软件,因此能保护工控系统不受这些软件漏洞的 影响。用户程序模拟运行模块能导入用户编写的PLC程序,用来模拟真实生产环境中的PLC 运行状态,并将相应的监控变量如输入输出量写入到实时数据库中;运行状态实时监控模 块可采用采用多种通信协议,具有良好的兼容性,能够接入到工业控制生产环境中进行实 时的动态监控,监控变量包括:PLC的输入量、PLC输出量、PLC基础寄存器数值和PLC 特殊寄存器数值,并将其写入到实时数据库中。运行状态安全检测模块运用安全检测算法 实时检测上述两个模块中用户添加的监控变量,并将检测结果实时反馈。

实时数据库是一种内存数据库,具有速度快的特点。本系统中的监控变量值都存于实时 数据库中,数据采集频率默认设置为0.5秒,数据写入频率默认为0.5秒,数据时间窗默认 为1分钟即一分钟之前的数据将被新数据覆盖,数据库中只保留1分钟之内的监控数据信 息。

本系统中的用户程序模拟运行模块应当能够支持多种PLC类型和编程语言,完全模拟 真实物理PLC的运行状态,包括了无限循环运行、单周期调试运行和单步调试运行模式, 能够监控所有的内部寄存器的实时数值,并将需要的变量写入实时数据库中。

本系统中的运行状态实时监控模块采用的通信协议支持TCP/IP,MPI,PPI等多种PLC 通信协议。其能够实时监控的变量包括了PLC输入量(数字量和模拟量)、PLC输出量(数 字量和模拟量)、PLC基础寄存器数值以及PLC特殊寄存器数值,并能将需要监控的变量 存入到实时数据库中。由于PLC的输入和输出量是直接影响现场设备运行状态的元素,所 以本系统默认是直接监控这两个变量的,并对其进行安全监控,并支持自定义其他监控变 量。

本系统中的运行状态安全检测模块提供两种安全检测算法:基于相似度的时间序列匹配 算法和基于时间窗的时间序列完全匹配算法,分别针对低安全级别和高安全级别的工控生 产环境。

本系统中的时间序列是指模拟运行模块和实时监控模块写入到实时数据库中的按照时 间点进行排序的监控变量值序列。时间序列由用户程序模拟运行模块和运行状态实时监控 模块生成,存储在实时数据库中,是安全检测算法最基本的输入。时间窗是指时间序列中 由程序或者用户规定的时间起点和时间终点所包含的那一段时间序列子集。

基于相似度的时间序列匹配算法基本思想是利用字符串相似度算法,首先将时间序列抽 象为字符串,将其作为算法的输入,利用编辑距离计算出两个模块时间序列的相似度,将 其作为安全检测算法的输出,最后与安全阈值进行比较来判断PLC的运行状态。在安全级 别较低的工控环境下,允许两个模块的相似度在一定的阈值范围内。

基于时间窗的时间序列完全匹配算法基本思想是利用字符串匹配算法,首先将时间序列 抽象为字符串,此时两个模块的时间序列长度不等,用户程序模拟运行模块的时间序列大 于运行状态实时监控模块的时间序列,且后者的时间窗是前者的子集。将两个序列作为算 法的输入,利用KMP算法计算出实时监控时间序列是否是模拟运行时间序列的子序列,从 而判断出PLC的运行状态。在安全级别较高的工控环境下,此算法可以排除网络延迟的因 素,确保远程PLC运行状态与仿真模拟的一致,从而确信其安全。

本发明设计的一种安全监控方法如下,方法可以简化为图1:

步骤1.1:用户将编写的程序从PLC编程软件中导出,然后加载到本系统的用户程序模 拟运行模块中,同时用户能够随时查看加载的代码,保证代码的正确性。

步骤1.2:用户程序模拟运行模块支持输入输出量、寄存器值的实时更新,用户能够根 据现场情况来实时修改它们的值,保证模拟运行的正确性。

步骤1.3:运行状态实时监控模块可以接入到工控环境中,实时地获取PLC的状态信息, 其提供了开启PLC、关闭PLC、开启监控、关闭监控、添加监控变量、删除监控变量功能。

步骤2.1:运行状态实时监控模块能够单独运行,也能够与模拟运行模块同时运行。一 般情况下,其与用户程序模拟运行模块同时运行,即同时启动物理PLC和模拟PLC,使得 监控数据具有实时性与可比性,使检测结果更加可信。两个模块的监控变量值将存入实时 数据库中,作为运行状态安全检测模块的输入。

步骤3.1:运行状态安全检测模块从实时数据库中读入要检测的变量,通过两种安全检 测算法进行检测,不通过则通告用户相应的信息并交由用户处理。

步骤3.2:实时数据库是一个内存数据库,存储实时监控模块和安全检测模块的实时变 量序列,用户能够设置存储更新周期R。定义当前时间为T,用户可以查询到T-R至T的 变量序列。一般情况下,由于实时监控模块受到网络传输速度和PLC响应速度的限制,采 样周期默认为0.5秒,模拟运行模块运行在高性能计算机上,采样周期默认为0.1秒。

步骤3.3:后台运行安全检测算法。如上所述,包括基于相似度的序列匹配算法和基于 时间窗的子序列完全匹配算法。其具体流程如下所述:

基于相似度的序列匹配算法:对于待比较的时间序列,本文用S表示,S=(s1,s2,…,sn), 则两个模块的时间序列分别为S1与S2,定义求出S1和S2之间的所有匹配对集合为R, R集合中元素的数量在两个序列中所占比重即为相似度。算法执行步骤如下:

将两个模块的时间序列抽象为字符串,得到S1和S2的长度分别为Length1和Length2, 在此Length1和Length2不能为0。

构造一个矩阵M,大小为(Length1+1)×(Length2+1),矩阵下标从0开始。

遍历矩阵计算编辑距离Distance。将矩阵M的第一行与第一列从0开始,以步长为1 递增进行编号,直到矩阵的边界。

从M[1,1]开始,逐项开始遍历矩阵,用i控制S1的长度,j控制S2的长度。

如果S1[i]=S2[j],则Distance=0;如果S1[i]≠S2[j],则Distance=1;

计算

Temp1←M[i-1,j]+1

Temp2←M[i,j-1]+1

Temp3←M[i-1,j-1]+Distance

M[i,j]←Min(Temp1,Temp2,Temp3)

重复步骤3-5,知道M全部遍历完毕,M[Length1,Length2]为最后的编辑距离。

计算相似度V

V=1-M[Length1,Length2]Max(Length1,Length2)

将V与设定安全阈值Vs进行对比得出检测结果。

此算法是运用编辑距离来对实时数据库中的监控变量时间序列进行相似度匹配,即用户 程序模拟运行模块的变量时间序列与运行状态实时监控模块的监控变量时间序列进行相似 度匹配。用户根据实际生产环境中数据灵敏度的不同,能够选择不同时间范围内的序列进 行相似度匹配,而且可对相似度阈值进行调整。

基于时间窗的子序列完全匹配算法:同样的,两个模块的时间序列为S和T。其中S的 长度要大于T的长度,即用户模拟运行模块的序列时间窗大于运行状态实时监控模块的序 列时间窗。KMP算法是一种高效的求解字符串匹配问题的算法,在这里S即为主串,T为 模式串,基本流程如下:

给模式串T的每个字符赋值,用nextj表示,j的范围为模式串的长度。

进行模式匹配。若i和j分别指示主串和模式串正在比较的字符位置,并对i和j赋予初 值0。在匹配过程中,若si=tj,则i和j分别增加1,继续进行比较;否则i不变,j退回 到nextj的位置进行新一轮的比较,如此递推下去。

当j退回到某个值nextj值时,匹配成功,则i和j分别增加1,继续匹配;当j退回到值 为0时,则nextj=-1,说明匹配失败,这时主串向右滑动一个位置,从i+1处重新开始新 的匹配。

若j为模式串的长度,则表示最终匹配成功。

在实际环境中,由于实时监控用户程序模拟运行存在时间误差,基于相似度的匹配算法 可以一定程度的弥补这一误差,但是对着随机时间点上的小时间尺度的突变情况,相似度 匹配算法却无法加以区别。所以在对于安全级别较高的环境下,应当采用基于时间窗的匹 配算法。用户可以将实时数据库中模拟程序监控变量序列的时间窗设置为略大于运行状态 实时监控变量序列时间窗,即实时监控变量序列属于用户模拟变量序列的子集。这样基于 时间窗的时间序列完全匹配算法也就解决了网络延迟和小时间窗突变的问题,可以监控到 恶意程序篡改PLC的输入输出等变量。安全监控系统安全检测算法详见附图4.1-4.2所示。

附图说明

图1:安全监控方法简化图。

图2:安全监控系统结构图。

图3.1程序模拟运行流程图

图3.2运行状态实时监控流程图:

图3.3安全监控系统流程图。

图4.1基于相似度的序列匹配算法流程图。

图4.2为基于时间窗的子序列完全匹配算法。

具体实施方式

以下结合说明书附图和具体实施方式对本发明做进一步详细说明

图2描述的是PLC安全监控系统的结构图,包括了三个模块:用户程序模拟运行模块、 运行状态实时监控模块和运行状态安全检测模块。三个模块中用户程序模拟运行模块和运 行状态实时监控模块是可以单独运行的,运行状态安全检测模块必须由前两个模块的输出 作为输入才能得到正确的结果。下面本发明将以西门子S7-200系列PLC做具体实施方式的 阐述,简化流程如图3.1-3.3所示。

在此所述的用户程序模拟运行模块主要功能是读入由STEP7编程软件导出的AWL文件, 解析其中的程序指令并模拟运行,将结果呈现在用户界面上,并将需要的监控变量写入实 时数据库中。

1、用户根据需要选择S7-200的具体型号,用户界面会展示S7-200的输入输出量范围、 基础寄存器范围、特殊寄存器范围等基本信息。程序模拟运行主界面展示S7-200的面板, 包括了运行指示灯、输入按钮和输出指示灯,其会随着型号的不同而有所区别。当前S7-200 的型号有:CPU221;CPU222;CPU224;CPU224XP;CPU226等。

2、用户导入由STEP-7程序导出的AWL程序文件,程序会解析AWL文件,用户可以 通过界面查看和编辑导入的源代码。如果程序不符合编程规范则会导致导入失败,无法进 行下一步操作。

3、在主界面上用户可选择CPU的三种运行模式:循环运行、单周期运行和单步运行。 循环运行表示循环执行程序的所有指令,直至按下停止按钮;单周期运行表示在一个CPU 扫描周期内执行,不在进行下一个CPU扫描周期;单步运行表示每次只执行一条指令语句, 用于调试使用。

4、点击启动S7-200,主界面上会展示当前模拟运行的S7-200的面板状态,包括输入 值和输出值,输入值是可以手动点击设置的,输出值无法修改。在模拟S7-200的监控变量 界面,用户可以通过输入寄存器号和地址范围来获取或修改相应的寄存器数值。

5、默认情况,写入实时数据库的变量是所有的输入值和输出值,用户也可以自行添加 需要监控的寄存器值。数据写入频率默认为0.5秒,数据时间窗默认为1分钟即每隔0.5秒 会向数据库中写入变量值数据库中只保留最近1分钟的监控变量信息。

6、S7-200模拟运行产生的日志会在日志展示窗口显示。

在此所述的运行状态实时监控模块主要功能是通过TCP/IP连接到远程S7-200上,通过 API来获取远程S7-200的运行状态、输入值、输出值和寄存器值,将结果呈现在用户界面 上,并将需要的监控变量写入实时数据库中。

1、用户设置远程S7-200的IP地址,并检查链路连通性。

2、选择远程监控的S7-200的型号,切换到实时监控主界面。实时监控主界面与模拟运 行模块一致,区别在于实时监控主界面对于输入输出是不可操作的。

3、用户可以有以下四个选项操作S7-200:远程开启S7-200、远程关闭S7-200、远程监 控S7-200和关闭S7-200监控。

4、点击开启S7-200将其置为START状态,接着点击远程监控S7-200,则会通过TCP/IP 协议与远程S7-200通信,实时监控主界面会获取并显示远程S7-200当前的运行状态,监控 到的变量是不可编辑的。

5、默认情况,写入实时数据库的变量是所有的输入输出值,用户也可以自行添加需要 监控的寄存器值。与模拟运行模块一致,数据写入频率默认为0.5秒,数据时间窗默认为1 分钟即数据库中只保留最近1分钟的监控变量信息。

6、点击关闭S7-200监控则与远程S7-200断开连接,点击远程关闭S7-200则将S7-200 置为STOP状态。

在此所述的运行状态安全检测模块主要功能是通过读取实时数据库中的变量序列,根据 不同应用场景选择安全检测算法来实时判断远程S7-200是否处于非正常状态,将结果呈现 在用户界面上。

1、在此,本发明将工业控制环境分为低安全等级和高安全等级两种应用场景,针对这 两种场景分别设计了两种安全检测算法:基于相似度的序列匹配算法适用于低安全级别场 景,基于时间窗的序列完全匹配算法适用于高安全级别场景。

2、基于相似度的序列匹配算法,是一种基于字符串相似度思想的算法,适用于对于状 态检测不严格的低安全级别场景。安全检测模块会从实时数据库中取出用户程序模拟运行 模块的变量序列(假设为S1)与运行状态实时监控模块的监控变量序列(S2)进行相似度 匹配。S1与S2是默认时间窗为1分钟的序列,用户根据实际生产环境中数据灵敏度的不同, 可以选择不同时间区间的序列进行相似度匹配,而且可对相似度阈值进行人工调整,防止 实际情况下误报或漏报发生率过高。一旦检测值低于设定的阈值,则报出预警信息。

3、基于时间窗的子序列完全匹配算法。根据前文描述得知,此算法适用于高安全级别 场景,不允许不正常的状态出现。安全检测模块会从实时数据库中取出用户程序模拟运行 模块的变量序列(假设为S1’)与运行状态实时监控模块的监控变量序列(S2’)进行最大 子序列匹配,其中S1’的序列长度默认略大于S2’。算法的输出根据有无子序列匹配输出预 警信息。

4、在不影响监控系统运行准确性和性能的前提下,模拟运行模块和实时监控模块的序 列采样频率用户可以根据实际情况进行设置。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号