CN105302055B - 一种工业控制系统中可编程逻辑控制器的安全监控系统及方法 - Google Patents
一种工业控制系统中可编程逻辑控制器的安全监控系统及方法 Download PDFInfo
- Publication number
- CN105302055B CN105302055B CN201510760009.7A CN201510760009A CN105302055B CN 105302055 B CN105302055 B CN 105302055B CN 201510760009 A CN201510760009 A CN 201510760009A CN 105302055 B CN105302055 B CN 105302055B
- Authority
- CN
- China
- Prior art keywords
- time
- real
- module
- monitoring
- plc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/058—Safety, monitoring
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/048—Monitoring; Safety
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/14—Plc safety
- G05B2219/14006—Safety, monitoring in general
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
一种工业控制系统中可编程逻辑控制器的安全监控系统及方法,本系统基于实时数据库,由用户程序模拟运行模块、运行状态实时监控模块以及运行状态安全检测模块组成。在不进行安全检测的时候,用户程序模拟运行模块能够独立运行用于PLC的仿真运行,运行状态实时监控模块能独立运行用于远程监控PLC输入输出和变量值。当开启安全检测功能时,上述三个模块通过实时数据库进行连接交互,用户程序模拟运行模块和运行状态实时监控模块输出的监控变量将输入到实时数据库中,运行状态安全检测模块将从实时数据库中读取相应变量来进行安全检测。
Description
技术领域
本发明涉及工业控制领域和信息技术领域,特别是涉及一种工控系统中的可编程逻辑控制器(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集合中元素的数量在两个序列中所占比重即为相似度。算法执行步骤如下:
将两个模块的时间序列抽象为字符串,得到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与设定安全阈值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的型号有:CPU 221;CPU 222;CPU 224;CPU224XP;CPU 226等。
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、在不影响监控系统运行准确性和性能的前提下,模拟运行模块和实时监控模块的序列采样频率用户可以根据实际情况进行设置。
Claims (6)
1.一种工业控制系统中可编程逻辑控制器的安全监控系统,其特征在于:本系统基于实时数据库,由用户程序模拟运行模块、运行状态实时监控模块以及运行状态安全检测模块组成;在不进行安全检测的时候,用户程序模拟运行模块能够独立运行用于PLC的仿真运行,运行状态实时监控模块能独立运行用于远程监控PLC输入输出和变量值;当开启安全检测功能时,上述三个模块通过实时数据库进行连接交互,用户程序模拟运行模块和运行状态实时监控模块输出的监控变量将输入到实时数据库中,运行状态安全检测模块将从实时数据库中读取相应变量来进行安全检测;
工业控制网络分为三个层次:企业网络层、过程监控层以及现场控制层,本系统运行在工业控制网络的过程监控层,与工控厂商提供的上位机组态软件位于同一个网络层次,但是由于本系统独立于组态软件和PLC编程软件,因此能保护工控系统不受这些软件漏洞的影响;用户程序模拟运行模块能导入用户编写的PLC程序,用来模拟真实生产环境中的PLC运行状态,并将相应的监控变量写入到实时数据库中;运行状态实时监控模块可采用多种通信协议,具有良好的兼容性,能够接入到工业控制生产环境中进行实时的动态监控,监控变量包括:PLC的输入量、PLC输出量、PLC基础寄存器数值和PLC特殊寄存器数值,并将其写入到实时数据库中;运行状态安全检测模块运用安全检测算法实时检测上述用户程序模拟运行模块和运行状态实时监控模块中用户添加的监控变量,并将检测结果实时反馈。
2.根据权利要求1所述的一种工业控制系统中可编程逻辑控制器的安全监控系统,其特征在于:实时数据库是一种内存数据库,具有速度快的特点;本系统中的监控变量值都存于实时数据库中,数据采集频率默认设置为0.5秒,数据写入频率默认为0.5秒,数据时间窗默认为1分钟即一分钟之前的数据将被新数据覆盖,数据库中只保留1分钟之内的监控数据信息。
3.根据权利要求1所述的一种工业控制系统中可编程逻辑控制器的安全监控系统,其特征在于:本系统中的用户程序模拟运行模块能够支持多种PLC类型和编程语言,完全模拟真实物理PLC的运行状态,包括了无限循环运行、单周期调试运行和单步调试运行模式,能够监控所有的内部寄存器的实时数值,并将需要的变量写入实时数据库中。
4.根据权利要求1所述的一种工业控制系统中可编程逻辑控制器的安全监控系统,其特征在于:本系统中的运行状态实时监控模块采用的通信协议支持TCP/IP,MPI,PPI多种PLC通信协议;其能够实时监控的变量包括了PLC输入量、PLC输出量、PLC基础寄存器数值以及PLC特殊寄存器数值,并能将需要监控的变量存入到实时数据库中;由于PLC的输入和输出量是直接影响现场设备运行状态的元素,所以本系统默认是直接监控这两个变量的,并对其进行安全监控,并支持自定义其他监控变量。
5.根据权利要求1所述的一种工业控制系统中可编程逻辑控制器的安全监控系统,其特征在于:本系统中的运行状态安全检测模块提供两种安全检测算法:基于相似度的时间序列匹配算法和基于时间窗的时间子序列完全匹配算法,分别对应针对低安全级别和高安全级别的工控生产环境;
本系统中的时间序列是指用户程序模拟运行模块和运行状态实时监控模块写入到实时数据库中的按照时间点进行排序的监控变量值序列;时间序列由用户程序模拟运行模块和运行状态实时监控模块生成,存储在实时数据库中,是安全检测算法最基本的输入;时间窗是指时间序列中由程序或者用户规定的时间起点和时间终点所包含的那一段时间序列子集;
基于相似度的时间序列匹配算法基本思想是利用字符串相似度算法,首先将时间序列抽象为字符串,将其作为算法的输入,利用编辑距离计算出用户程序模拟运行模块和运行状态实时监控模块时间序列的相似度,将其作为安全检测算法的输出,最后与安全阈值进行比较来判断PLC的运行状态;在安全级别较低的工控环境下,允许用户程序模拟运行模块和运行状态实时监控模块的相似度在一定的阈值范围内;
基于时间窗的时间子序列完全匹配算法基本思想是利用字符串匹配算法,首先将时间序列抽象为字符串,此时用户程序模拟运行模块和运行状态实时监控模块的时间序列长度不等,用户程序模拟运行模块的时间序列大于运行状态实时监控模块的时间序列,且后者的时间窗是前者的子集;将两个序列作为算法的输入,利用KMP算法计算出实时监控时间序列是否是模拟运行时间序列的子序列,从而判断出PLC的运行状态;在安全级别较高的工控环境下,基于时间窗的时间子序列完全匹配算法可以排除网络延迟的因素,确保远程PLC运行状态与仿真模拟的一致,从而确信其安全。
6.利用权利要求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.1-3.3,直到M全部遍历完毕,M[Length1,Length2]为最后的编辑距离;
计算相似度V
将V与设定安全阈值Vs进行对比得出检测结果;
此基于相似度的时间序列匹配算法是运用编辑距离来对实时数据库中的监控变量时间序列进行相似度匹配,即用户程序模拟运行模块的变量时间序列与运行状态实时监控模块的监控变量时间序列进行相似度匹配;用户根据实际生产环境中数据灵敏度的不同,能够选择不同时间范围内的序列进行相似度匹配,而且可对相似度阈值进行调整;
基于时间窗的时间子序列完全匹配算法:同样的,用户程序模拟运行模块和运行状态实时监控模块的时间序列为S和T;其中S的长度要大于T的长度,即用户程序模拟运行模块的序列时间窗大于运行状态实时监控模块的序列时间窗;KMP算法是一种高效的求解字符串匹配问题的算法,在这里S即为主串,T为模式串,基本流程如下:
给模式串T的每个字符赋值,用nexta表示,a的范围为模式串的长度;
进行模式匹配;若b和a分别指示主串和模式串正在比较的字符位置,并对b和a赋予初值0;在匹配过程中,若sb=ta,则b和a分别增加1,继续进行比较;否则b不变,a退回到nexta的位置进行新一轮的比较,如此递推下去;
当a退回到某个值nexta值时,匹配成功,则b和a分别增加1,继续匹配;当a退回到值为0时,则nexta=-1,说明匹配失败,这时主串向右滑动一个位置,从b+1处重新开始新的匹配;
若a为模式串的长度,则表示最终匹配成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510760009.7A CN105302055B (zh) | 2015-11-09 | 2015-11-09 | 一种工业控制系统中可编程逻辑控制器的安全监控系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510760009.7A CN105302055B (zh) | 2015-11-09 | 2015-11-09 | 一种工业控制系统中可编程逻辑控制器的安全监控系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302055A CN105302055A (zh) | 2016-02-03 |
CN105302055B true CN105302055B (zh) | 2018-08-14 |
Family
ID=55199447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510760009.7A Active CN105302055B (zh) | 2015-11-09 | 2015-11-09 | 一种工业控制系统中可编程逻辑控制器的安全监控系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302055B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691691B2 (en) * | 2016-09-10 | 2020-06-23 | Sap Se | Iterative evaluation of data through SIMD processor registers |
JP6812727B2 (ja) * | 2016-09-30 | 2021-01-13 | オムロン株式会社 | 安全制御ユニット、安全制御方法、安全制御プログラム |
CN107060735A (zh) * | 2017-05-25 | 2017-08-18 | 中国石油天然气股份有限公司 | 一种天然气井数据采集系统及方法 |
CN108062089A (zh) * | 2017-12-21 | 2018-05-22 | 卡斯柯信号有限公司 | 基于r-h点突变的系统运行安全动态分析方法 |
CN110727611B (zh) * | 2019-09-09 | 2022-01-07 | 无锡江南计算技术研究所 | 一种带状态监测的可配置一致性验证系统 |
CN111142469B (zh) * | 2019-12-27 | 2021-07-27 | 北京和利时智能技术有限公司 | 一种plc的组态程序的调试方法及调试系统 |
CN110941236B (zh) * | 2019-12-31 | 2021-03-23 | 郑州信大捷安信息技术股份有限公司 | 一种plc安全监测和动态度量方法与系统 |
CN111007796B (zh) * | 2019-12-31 | 2021-02-12 | 郑州信大捷安信息技术股份有限公司 | 一种plc安全实时监控方法和系统 |
CN111596573B (zh) * | 2020-06-18 | 2024-03-26 | 三一石油智能装备有限公司 | 一种模拟量的处理方法、系统及自动处理装置 |
CN111736521B (zh) * | 2020-08-25 | 2020-12-04 | 北京安帝科技有限公司 | 一种工业控制设备安全防护方法 |
CN112711756B (zh) * | 2020-12-28 | 2024-02-27 | 中国电力科学研究院有限公司 | 一种被动电力工控设备指纹识别方法及系统 |
CN113219895B (zh) * | 2021-05-10 | 2022-06-10 | 上海交通大学宁波人工智能研究院 | 一种使能边缘控制器安全可信的装置和方法 |
CN113341870B (zh) * | 2021-06-24 | 2022-08-16 | 上海交通大学宁波人工智能研究院 | 一种控制代码异常识别的系统和方法 |
CN113552837B (zh) * | 2021-07-26 | 2022-11-01 | 中冶华天南京工程技术有限公司 | 一种用于智能化料场的流程控制方法 |
CN114047727B (zh) * | 2021-11-10 | 2024-03-05 | 中国电信股份有限公司 | 控制方法、可编程逻辑控制器及计算机可读存储介质 |
CN114167805A (zh) * | 2021-11-23 | 2022-03-11 | 长园运泰利视觉科技(珠海)有限公司 | 一种可编程的plc监控系统 |
CN114647233B (zh) * | 2022-05-18 | 2022-09-30 | 浙江国利网安科技有限公司 | Plc运行组态监测方法、装置、存储介质及电子设备 |
CN115629683B (zh) * | 2022-10-26 | 2023-06-20 | 北京力控元通科技有限公司 | 一种变量管理方法、程序产品、系统、装置和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080073848A (ko) * | 2007-02-07 | 2008-08-12 | 박재홍 | 전력선통신을 이용한 변전소 보안 장치 |
CN101702085A (zh) * | 2009-07-17 | 2010-05-05 | 深圳市华威世纪科技股份有限公司 | 一种远程监管安全可编程控制设备及其监控方法 |
CN102096405A (zh) * | 2011-01-05 | 2011-06-15 | 深圳市赛远自动化系统有限公司 | 基于S-Link和VLAN技术的远程工业网络监控的方法及系统 |
CN103490895A (zh) * | 2013-09-12 | 2014-01-01 | 北京斯庄格科技有限公司 | 一种应用国密算法的工业控制身份认证方法及装置 |
CN104808572A (zh) * | 2015-03-13 | 2015-07-29 | 沈阳中科博微自动化技术有限公司 | 基于功能安全的高完整性plc控制器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9467297B2 (en) * | 2013-08-06 | 2016-10-11 | Bedrock Automation Platforms Inc. | Industrial control system redundant communications/control modules authentication |
-
2015
- 2015-11-09 CN CN201510760009.7A patent/CN105302055B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080073848A (ko) * | 2007-02-07 | 2008-08-12 | 박재홍 | 전력선통신을 이용한 변전소 보안 장치 |
CN101702085A (zh) * | 2009-07-17 | 2010-05-05 | 深圳市华威世纪科技股份有限公司 | 一种远程监管安全可编程控制设备及其监控方法 |
CN102096405A (zh) * | 2011-01-05 | 2011-06-15 | 深圳市赛远自动化系统有限公司 | 基于S-Link和VLAN技术的远程工业网络监控的方法及系统 |
CN103490895A (zh) * | 2013-09-12 | 2014-01-01 | 北京斯庄格科技有限公司 | 一种应用国密算法的工业控制身份认证方法及装置 |
CN104808572A (zh) * | 2015-03-13 | 2015-07-29 | 沈阳中科博微自动化技术有限公司 | 基于功能安全的高完整性plc控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN105302055A (zh) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105302055B (zh) | 一种工业控制系统中可编程逻辑控制器的安全监控系统及方法 | |
Anton et al. | Anomaly-based intrusion detection in industrial data with SVM and random forests | |
Krotofil et al. | The process matters: Ensuring data veracity in cyber-physical systems | |
Thompson et al. | Specification-based prototyping for embedded systems | |
Hadžiosmanović et al. | Through the eye of the PLC: semantic security monitoring for industrial processes | |
Zonouz et al. | Detecting industrial control malware using automated PLC code analytics | |
Wong et al. | Effective software fault localization using an RBF neural network | |
CN101213552B (zh) | 带有统计可重复的响应时间的多功能半导体制造控制器 | |
CN105224458B (zh) | 一种数据库测试方法及系统 | |
CN106597947A (zh) | 变电站设备测试方法、服务器、测试仪及系统 | |
Adepu et al. | Control behavior integrity for distributed cyber-physical systems | |
Eceiza et al. | Fuzzing the internet of things: A review on the techniques and challenges for efficient vulnerability discovery in embedded systems | |
Pakonen et al. | User-friendly formal specification languages-conclusions drawn from industrial experience on model checking | |
Chowdhury et al. | CyFuzz: A differential testing framework for cyber-physical systems development environments | |
CN105608383B (zh) | ActiveX控件漏洞测试方法及系统 | |
Tacliad et al. | DoS exploitation of allen-bradley's legacy protocol through fuzz testing | |
Kovalchuk et al. | Investigation of properties of ICmetrics features | |
Patel et al. | Real-time, simulation-based identification of cyber-security attacks of industrial plants | |
CN107317811B (zh) | 一种模拟plc的实现方法 | |
Elks et al. | Specification of a bounded exhaustive testing study for a software-based embedded digital device | |
Clerissi et al. | Supporting early-safety analysis of IoT systems by exploiting testing techniques | |
Yang et al. | Reverse engineering physical semantics of PLC program variables using control invariants | |
Chen et al. | Application of Orthogonal Defect Classification for Software Reliability Analysis | |
Brito | An open-source testbed based on the modbus protocol for cybersecurity analysis of nuclear power plants | |
Cook | Anomaly diagnosis in industrial control systems for digital forensics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |