CN108681503A - 可编程控制器程序的安全检查方法、装置和设备 - Google Patents

可编程控制器程序的安全检查方法、装置和设备 Download PDF

Info

Publication number
CN108681503A
CN108681503A CN201810247212.8A CN201810247212A CN108681503A CN 108681503 A CN108681503 A CN 108681503A CN 201810247212 A CN201810247212 A CN 201810247212A CN 108681503 A CN108681503 A CN 108681503A
Authority
CN
China
Prior art keywords
state
abnormal
program
service
checked
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.)
Granted
Application number
CN201810247212.8A
Other languages
English (en)
Other versions
CN108681503B (zh
Inventor
邬惠峰
张方德
严义
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Dianzi University
Hangzhou Electronic Science and Technology University
Original Assignee
Hangzhou Electronic Science and Technology University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Electronic Science and Technology University filed Critical Hangzhou Electronic Science and Technology University
Priority to CN201810247212.8A priority Critical patent/CN108681503B/zh
Publication of CN108681503A publication Critical patent/CN108681503A/zh
Application granted granted Critical
Publication of CN108681503B publication Critical patent/CN108681503B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/058Safety, monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

本发明提供一种可编程控制器程序的安全检查方法、装置和设备。所述方法包括:根据待检业务系统的可编程控制器PLC程序,获得状态转移模型,其中,所述状态转移模型指示了所述待检PLC程序运行过程中所述待检业务系统可能出现的所有业务状态和所有所述业务状态之间的转移关系;获取用于描述业务安全检查规则的逻辑命题集合;根据所述逻辑命题集合,在所述状态转移模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系。本发明实现了针对业务规则的安全检查,提高对PLC程序的业务安全的检查准确性。

Description

可编程控制器程序的安全检查方法、装置和设备
技术领域
本发明涉及工业控制安全领域,尤其涉及一种可编程控制器程序的安全检查方法、装置和设备。
背景技术
可编程控制器(Programmable Controller)简称PC或PLC(为了与个人计算机PC进行区别,本专利统一简称PLC),是一种数字运算操作的电子系统,专门在工业环境下应用而设计。它采用可以编制程序的存储器,用来在执行存储逻辑运算和顺序控制、定时、计数和算术运算等操作的指令,并通过数字或模拟的输入(I)和输出(O)接口,控制各种类型的机械设备或生产过程。目前,PLC已被广泛应用于各种生产机械和生产过程的自动控制中,成为一种最重要、最普及、应用场合最多的工业控制装置,被公认为现代工业自动化的三大支柱之一。由于PLC主要应用于工业控制领域,因此对安全性有着很高的要求。
现有的安全检查主要是通过硬件、编译器、编程系统、安全模块、设计与应用指南等工具,实现针对代码本身扫描的检查,如内存覆盖、定义但未使用变量、除0错误等语言层面的错误检查。但是PLC程序设计过程中,尤其是和具体业务逻辑结合时,需要在编程阶段充分考虑存在多种类型的风险。一旦程序编写人员由于缺乏经验或者疏忽而遗漏对业务安全相关的功能检查,如限位信号触发时应急停电机运行、若干个电机间应按顺序运行或不能同时运行等,将存在安全隐患。
目前的安全检查功能的排查能力不高。
发明内容
本发明提供一种可编程控制器程序的安全检查方法和、装置和设备,通过将PLC程序转换为状态转移模型,以形式化的业务安全检查规则对状态转移模型中的各个业务态进行检查,得到不符合业务安全检查规则的异常业务状态,从而实现了针对业务的安全检查,提高了安全排查准确性。
根据本发明的第一方面,提供了一种可编程控制器程序的安全检查方法,包括:
根据待检业务系统的可编程控制器PLC程序,获得状态转移模型,其中,所述状态转移模型指示了所述待检PLC程序运行过程中所述待检业务系统可能出现的所有业务状态和所有所述业务状态之间的转移关系;
获取用于描述业务安全检查规则的逻辑命题集合;
根据所述逻辑命题集合,在所述状态转移模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和包含所述异常业务状态的异常转移关系。
可选地,所述根据待检业务系统的PLC程序,获得状态转移模型,包括:
获取所述PLC程序中各个变量的取值范围;
根据所述各个变量的取值范围,获得与所述各个变量对应的赋值的集合,每个所述变量都与所述赋值的集合中至少一个赋值相对应;
以预设的初始状态为所述PLC程序的开始状态,根据所述赋值的集合对所述PLC程序中各个变量进行取值,获得所述待检业务系统可能出现的所有业务状态、每个业务状态对应的相关变量、每个所述相关变量的值以及所有所述业务状态之间的转移关系,其中,所述相关变量为所述待检业务系统处于所述业务状态时所述PLC程序已使用和可能要使用的变量;
将每个所述业务状态、每个业务状态对应的所有相关变量、每个所述相关变量的值确定为一个模型节点,将所述转移关系确定为模型节点之间的连接关系,获得状态转移模型。
可选地,根据所述逻辑命题集合,在所述状态转移模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和异常转移关系之后,还包括:
将与所述异常业务状态对应的相关变量和每个所述相关变量的值,分别确定为异常相关变量和每个所述异常相关变量的值;
根据所述异常相关变量、每个所述异常相关变量的值以及所述异常转移关系,在所述PLC程序中确定异常程序位置。
可选地,在所述PLC程序中确定异常程序位置之后,还包括:
根据所述异常程序位置,获得用于指示所述异常程序位置的错误报告。
可选地,所述状态转移模型为计算树逻辑模型;
相应地,所述将每个所述业务状态、每个业务状态对应的所有相关变量、每个所述相关变量的值确定为一个模型节点,将所述转移关系确定为模型节点之间的连接关系,获得状态转移模型,包括:
将每个所述业务状态、每个业务状态对应的所有相关变量、每个所述相关变量的值确定为一个模型节点,将所述转移关系确定为模型节点之间的连接关系,获得计算树逻辑模型;
相应地,所述根据所述逻辑命题集合,在所述状态转移模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系,包括:
根据所述逻辑命题集合,在所述计算树逻辑模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系。
可选地,所述获取用于描述业务安全检查规则的逻辑命题集合,包括:
根据所述待检业务系统的待检业务,确定业务安全检查规则;
将所述业务安全检查规则按照时态逻辑命题公式进行形式化,获得用于描述业务安全检查规则的逻辑命题集合。
根据本发明的第二方面,提供了一种可编程控制器程序的安全检查装置,包括:
状态转移模型获得模块,用于根据待检业务系统的可编程控制器PLC程序,获得状态转移模型,其中,所述状态转移模型指示了所述待检PLC程序运行过程中所述待检业务系统可能出现的所有业务状态和所有所述业务状态之间的转移关系;
规则获取模块,用于获取用于描述业务安全检查规则的逻辑命题集合;
异常查找模块,用于根据所述逻辑命题集合,在所述状态转移模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和包含所述异常业务状态的异常转移关系。
可选地,所述状态转移模型获得模块具体用于:获取所述PLC程序中各个变量的取值范围;根据所述各个变量的取值范围,获得与所述各个变量对应的赋值的集合,每个所述变量都与所述赋值的集合中至少一个赋值相对应;以预设的初始状态为所述PLC程序的开始状态,根据所述赋值的集合对所述PLC程序中各个变量进行取值,获得所述待检业务系统可能出现的所有业务状态、每个业务状态对应的相关变量、每个所述相关变量的值以及所有所述业务状态之间的转移关系,其中,所述相关变量为所述待检业务系统处于所述业务状态时所述PLC程序已使用和可能要使用的变量;将每个所述业务状态、每个业务状态对应的所有相关变量、每个所述相关变量的值确定为一个模型节点,将所述转移关系确定为模型节点之间的连接关系,获得状态转移模型。
根据本发明的第三方面,提供了一种可编程控制器程序的安全检查设备,包括:
存储器,
处理器,以及
计算机程序;
其中,所述计算机程序存储于所述存储器中,并被配置为由所述处理器执行,以实现本发明第一方面所述的可编程控制器程序的安全检查方法。
根据本发明的第四方面,提供了一种存储介质,其上存储有计算机程序,所述计算机程序被执行时用于以实现本发明第一方面所述的可编程控制器程序的安全检查方法。
本发明提供的一种可编程控制器程序的安全检查方法、装置和设备,通过根据待检业务系统的可编程控制器PLC程序,获得状态转移模型,其中,状态转移模型指示了待检PLC程序运行过程中待检业务系统可能出现的所有业务状态和所有业务状态之间的转移关系;获取用于描述业务安全检查规则的逻辑命题集合;根据逻辑命题集合,在状态转移模型中对所有业务状态进行查找,获得不符合逻辑命题集合的异常业务状态,实现了针对业务规则的安全检查,并在检查后获取存在错误的PLC程序位置。
附图说明
图1为本发明实施例提供的一种可编程控制器程序的安全检查方法流程示意图;
图2是本发明实施例提供的一种PLC程序的业务状态转移示意图;
图3为本发明实施例提供的另一种可编程控制器程序的安全检查方法流程示意图;
图4为本发明实施例提供的一种可编程控制器程序的安全检查装置的结构示意图;
图5为本发明实施例提供的一种可编程控制器程序的安全检查设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应当理解,在本申请中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
应当理解,在本申请中,“与A相应的B”表示B与A相关联,根据A可以确定B。根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。A与B的匹配,是A与B的相似度大于或等于预设的阈值。
取决于语境,如在此所使用的“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。
取决于语境,在本申请中,技术术语“业务状态”表示的是与业务相关的状态,以待检业务系统是刀具控制器作为示例,则业务状态可以理解为包括:上电状态、断电状态、工作状态、空置状态。
取决于语境,在本申请中,技术术语“转移关系”表示多个业务状态之间在某些条件下以某种顺序进行转移的转移路径,指示了转移路径上的转移条件例如在处于断电状态时上电相关变量的值为0,若上电相关变量从0变为1,则切换至上电状态,则“上电相关变量从0变为1时,由断电状态切换至上电状态”可以理解为上电状态与断电状态的一种转移关系。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
本发明提供的安全检查方法,具体是对PLC程序的业务安全进行检查的方法,例如对刀具控制器的PLC程序进行检查时,预设安全检查规则是在刚刚上电时要保持刀具处于空置状态,若检查到由断电状态切换至上电状态后的下一个业务状态是工作状态,则将“工作状态”作为异常业务状态,将“断电状态切换至上电状态,再切换至工作状态”作为一种异常转移关系。根据异常业务状态和异常转移关系生成错误报告,安全检查人员根据错误报告对PLC程序进行维护。上述执行案安全检查方法的执行主体,可以是具有安全检查功能的装置、服务器、系统,也可以是专门用于进行安全检查的装置、服务器、系统。装置具体可以是内嵌与服务器、系统、设备之内的模块,例如处理器;也可以是专用设备,例如具有安全检查功能的软件模块、硬件模块或软件与硬件结合的模块。
图1为本发明实施例提供的一种可编程控制器程序的安全检查方法流程示意图,在图1所示的流程中,具体可以包括:
S101,根据待检业务系统的可编程控制器PLC程序,获得状态转移模型。
其中,状态转移模型指示了待检PLC程序运行过程中待检业务系统可能出现的所有业务状态和所有业务状态之间的转移关系。在将PLC程序转化为状态转移模型的过程,可以理解为将预设的初始状态作为PLC程序的开始状态,并顺序执行PLC程序中的各项指令,对指令执行过程中使用的各个变量,都按照其取值范围分别取值,每一个取值的分支对应一个转移关系。
图2是本发明实施例提供的一种PLC程序的业务状态转移示意图。以下是与图2相对应的PLC程序源码:
上述PLC程序是以结构化文本编程(Structured text,简称:ST)语言编写的程序源代码,PLC程序使用的变量包括输入变量(condition1和condition2)、输出变量(var1,var2)、本地变量(count)。结合上述PLC源码以及图2,对PLC程序运行中的各个业务状态解析如下:
将初始化状态initial作为预设的初始状态,开始运行,并默认切换至状态S0。
在状态S0下进行condition1的判断:
若condition1的值大于0,则var1的值为TRUE,切换至状态S2;
若condition1的值小于或等于0,则var1的值为FALSE,切换至状态S1。
在S1状态下进行condition2的判断:
若condition2的值大于0,则var2的值为TRUE,切换至状态S2;
若condition2的值小于或等于0,则var2的值为FALSE,切换至状态S2。
在状态S2下进行本地变量操作:count增加1,然后默认切换至结束状态end;
结束状态end下默认再次切换至开始状态initial,以进行下一轮的循环。
图2所示的业务状态示意图是以预设的初始状态顺序运行PLC程序,并对各个使用的变量进行所有赋值组合得到的业务状态转移图,图2体现了待检PLC程序运行过程中待检业务系统可能出现的所有业务状态和所有业务状态之间的转移关系。由此,根据图2所示业务状态转移图中的各个业务状态和转移关系,可以构建得到状态转移模型。可选地,还可以预设一个用于存储该状态转移模型的计算树结构,根据得到的各个业务状态的转移关系将各个业务状态存储在计算树结构的各个节点上。
状态转移模型可以理解为是描述业务状态转移关系的模型。一种状态转移模型的代码内容可以是如下所述:
状态转移模型是以图2所示的状态转移示意图为原理的一种业务状态转移的模型,以上代码仅为一种可选的状态转移模型的示例,本发明不限于此。
本实施例中状态转移模型并不是针对PLC程序的语法问题,而是针对PLC程序各个执行步骤对应的业务状态,提出了一种对业务状态的检查方案,提高了业务安全检查的准确性。
S102,获取用于描述业务安全检查规则的逻辑命题集合。
本实施例中步骤S101与步骤S102,并不受所描述的动作顺序的限制,步骤S101与步骤S102可以采用其他顺序或者同时进行。
具体地,首先根据待检业务系统的待检业务,确定业务安全检查规则。例如,规则库包括交通安全检查规则、集成电路分选安全检查规则、电路板切割安全检查规则、电路板活化安全检查规则。待检业务系统为集成电路控制系统,业务类型为集成电路分选业务,则将集成电路分选安全检查规则作为业务安全检查规则。根据当前需要做安全检查的业务类型获取对应的安全检查规则,实现了安全检查规则的自适应获取。然后将业务安全检查规则按照时态逻辑命题公式进行形式化,获得用于描述业务安全检查规则的逻辑命题集合。
在一种实现方式中,可以是以如下公式一所示的时态逻辑命题公式来表示形式化的业务安全检查规则:
其中⊥分别为真、假,分别表示命题的非、或、与;
意为所有从s出发的分支满足
意为存在从s出发的分支满足
意为所有从s出发可达的状态满足
意为存在从s出发可达的状态满足
意为所有从s的后继状态满足
意为存在从s出发可达的状态满足ψ,且在到达这一状态前满足
根据公式一以及上述状态转移模型的示例,对一种业务安全检查规则“从初始状态出发,任意状态满足:若step为end,则condition1大于0且var1为TRUE或condition1不大于0且var1为FALSE”进行形式化,得到以下逻辑命题:
SPEC AG(step=end->(condition1>0&var1=TRUE)|(!(condition1>0))&var1=FALSE))
上述逻辑命题是业务安全检查规则进行形式化的一种示例,本发明不限于此。
本实施例中业务安全检查规则并不是针对PLC程序的语法问题,而是针对PLC程序各个执行步骤对应的业务状态,提出了一种对业务状态的检查方案,提高了业务安全检查的准确性。
与现有技术中针对程序本身逻辑错误的检查规则不同,图1所示安全检查规则是针对业务状态和转移关系的检查规则,根据待检业务系统的业务内容不同,安全检查规则也不一样。针对业务状态和转移关系的检查规则可以理解为交通规则、工业操作流程、工艺制作步骤和安全规范等人为规定或客观存在的规则,而与程序本身的编辑是否有错误无关。以下通过三类业务对上述安全检查规则进行举例说明。
在交通业务的规则中控制红灯、绿灯和黄灯的参量要求在任一时刻都只有其一输出。例如Y0,Y1,Y2分别控制红灯、绿灯和黄灯,那么Y0,Y1,Y2不能同时输出。
在集成电路分选业务的规则中,气泵开启的控制量和驱动履带运动的控制量要求交替输出。例如通过X1控制气泵实现挡板的开和关,X2控制电机实现分选履带的运动,如果气泵和伺服电机同时启动,则会导致履带上待分选的集成电路芯片落到错误的位置。
在电路板切割业务的规则中,切割刀具的方向控制信号和切割动作控制信号要求按先改变方向对准后切割的顺序输出。例如切割刀具的方向控制信号D1和切割动作控制信号D2不能同时输出,D2也不能早于D1输出。
总而言之,本实施例中安全检查规则是针对业务逻辑层面的规则,即是和具体的业务相关的检查规则,不涉及如内存覆盖、数据区冲突等传统程序本身的规则。通过所述安全检查规则对状态转移模型进行安全检查,实现了针对业务规则的安全检查。
S103,根据逻辑命题集合,在状态转移模型中对所有业务状态进行查找,获得不符合逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系。
继续参考上述示例,若业务安全规则包含,“从初始状态出发,任意状态满足:若step为end,则condition1大于0且var1为TRUE或condition1不大于0且var1为FALSE”,则以SPEC AG(step=end->(condition1>0&var1=TRUE)|(!(condition1>0))&var1=FALSE))在上述状态转移模型中进行查找,若查找到不符合该逻辑命题的业务状态和/或转移关系,则得到异常业务状态和包含异常业务状态的异常转移关系。
例如,查找到step为end,condition1大于0且var1为FALSE,则将结束状态作为异常状态,且将从初始状态到结束状态,且condition1大于0且var1为FALSE的转移关系作为异常转移关系。
本实施例提供一种安全检查方法和装置。方法包括:根据待检业务系统的可编程控制器PLC程序,获得状态转移模型,其中,状态转移模型指示了待检PLC程序运行过程中待检业务系统可能出现的所有业务状态和所有业务状态之间的转移关系;获取用于描述业务安全检查规则的逻辑命题集合;根据逻辑命题集合,在状态转移模型中对所有业务状态进行查找,获得不符合逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系。本发明实现了针对业务规则的安全检查,提高对PLC程序的业务安全的检查准确性。
为了更加清楚地描述图1所示的实施例,下面结合具体实施例和图3所示的流程对获得状态转移模型的过程做进一步的说明。
图3为本发明实施例提供的另一种可编程控制器程序的安全检查方法流程示意图,包括:
S201,获取PLC程序中各个变量的取值范围。
S202,根据各个变量的取值范围,获得与各个变量对应的赋值的集合,每个变量都与赋值的集合中至少一个赋值相对应。
PLC程序中变量例如输入变量、输出变量、本地变量等。变量的取值范围可以理解为变量可以取的所有值的范围,例如输入变量的取值只能是1或者0,则取值范围为在[0,1]中取整数,输入变量与赋值的集合{0,1}相对应。各个变量对应的赋值的集合可以理解为所有变量的可能取值的总集合,且赋值的集合中每个取值都与一个变量相对应。
S203,以预设的初始状态为PLC程序的开始状态,根据赋值的集合对PLC程序中各个变量进行取值,获得待检业务系统可能出现的所有业务状态、每个业务状态对应的相关变量、每个相关变量的值以及所有业务状态之间的转移关系。
其中,相关变量为待检业务系统处于业务状态时PLC程序已使用和可能要使用的变量。例如,在图2所示实施例中,输入变量(condition1和condition2)、输出变量(var1,var2)、本地变量(count)是PLC程序中的变量,对各个变量取值例如是以“condition1和condition2都取0、var1和var2都取FALSE、count取569”为变量取值时,对应可以获得一组业务状态、相关变量、相关变量的值、转移关系为:{step,condition1,condition2,var1,var2,count}={s2,0,0,FALSE,FALSE,569}。在图2所示的实施例中,initial、s0、s1、s2、end都是获得的业务状态,例如step=s1&(condition2>0):s2;和step=s1&(!(condition2>0)):s2;则是可选的两个转移关系。
step=s1&(condition2>0):s2表示:在业务状态处于s1时,若condition2>0,则转移至业务状态s2。
step=s1&(!(condition2>0)):s2表示:在业务状态处于s1时,若不满足condition2>0,则转移至业务状态s2。
S204,将每个业务状态、每个业务状态对应的所有相关变量、每个相关变量的值确定为一个模型节点,将转移关系确定为模型节点之间的连接关系,获得状态转移模型。
在一种可选的实施例中,状态转移模型可以为计算树逻辑模型(computationtree logic,简称:CTL)。具体地,将每个业务状态、每个业务状态对应的所有相关变量、每个相关变量的值确定为一个模型节点,可以理解为将数据都按照CTL的结构进行存储,每个节点都存储一个业务状态,该业务状态对应的所有相关变量、以及每个相关变量的值。将转移关系确定为模型节点之间的连接关系,获得计算树逻辑模型,可以理解为根据转移关系得到各个业务状态之间的转移关系,由此确定各个节点的父子关系,从而形成树形结构的计算树逻辑模型。
S205,获取用于描述业务安全检查规则的逻辑命题集合。
S206,根据逻辑命题集合,在状态转移模型中对所有业务状态进行查找,获得不符合逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系。
S205至S206的步骤,参见图1所示实施例中S102至S103的具体说明,本实施例不做赘述。其中,S206具体可以是根据逻辑命题集合,在计算树逻辑模型中对所有业务状态进行查找,获得不符合逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系。
通过获取PLC程序对应的所有业务状态,并以计算树逻辑模型建立各业务状态之间的转移关系,实现对业务层面变化的检查,提高了对存在异常的业务状态的查找效率,提高了安全检查的准确性。
在上述实施例的基础上,为了提高安全检查的用户友好程度,并提高用户对异常PLC程序的检查效率,在根据逻辑命题集合,在状态转移模型中对所有业务状态进行查找,获得不符合逻辑命题集合的异常业务状态和异常转移关系之后,还可以通过如下步骤对异常程序进行定位:
具体地,可以先将与异常业务状态对应的相关变量和每个相关变量的值,分别确定为异常相关变量和每个异常相关变量的值。然后,根据异常相关变量、每个异常相关变量的值以及异常转移关系,在PLC程序中确定异常程序位置。例如在PLC程序中找到与异常相关变量、每个异常相关变量的值以及异常转移关系相对应的代码位置和代码内容,将这个代码位置确定为异常程序位置。在确定异常程序位置之后,还可以根据异常程序位置,获得用于指示异常程序位置的错误报告。在一种实现方式中,可以在错误报告中直接嵌入存在异常的PLC程序代码,直接向用户展示存在错误的代码内容,方便用户直观地检查程序的错误,快速找到错误原因,提高用户的错误修正效率。
作为一种实现方式,还可以根据安全检查规则的重要程度,对安全检查规则设置安全等级,安全等级包括强制等级(HR)、要求等级(R)和建议等级(A)。相应地,获得用于指示异常程序位置的错误报告之前,还包括获得异常业务状态和异常转移关系不符合的安全检查规则,获取与不符合的安全检查规则相应的安全等级。错误报告还用于指示与不符合的安全检查规则相应的安全等级。
具体地,安全检查规则对应设置的安全等级(RL)按重要程度由高到低依次可以包括强制(HR)、要求(R)和建议(A)。
HR表示必须满足,不满足将造成严重后果的规则,例如安全信号触发后的电机急停操作属于强制等级,若待检PLC程序中安全信号触发后电机停机信号没有及时输出,则识别为错误,并对应安全等级HR。
R表示尽量满足,不满足会有很大可能性造成安全风险,例如非联动的电机运动模块同时触发,可能会存在安全风险,若待检PLC程序中非联动的电机运动模块控制信号同时输出,则识别为错误,并对应安全等级R。
A表示建议用户采用的规则,不采用一般也不会有安全风险,但是采用了可能会增强程序的安全性。例如对用户设定的电机运行速度,安全检查规则可以预设建议的最高限速,当待检PLC程序预设的电机速度超过最高限速时识别为错误,并对应安全等级A。
在上述安全等级和安全检查规则内容分析的基础上,安全检查规则可以有如下示例:
互斥规则:RL LOGIC MUTEX Y0,Y1,…Yn,表示识别配置若干个Y点未同时输出时为错误,RL为对应的安全等级。
并联规则:RL LOGIC PARALLEL Y0,Y1,…Yn,表示识别配置若干个Y点同时输出时为错误,RL为对应的安全等级。
取值范围:RL DATA RANGE VD1000 2 1000,10000,表示VD1000的长2个字节,识别配置VD1000的取值范围超出1000到10000时为错误,RL为对应的安全等级,RL为对应的安全等级。
运动串联规则:RL MOTION SERIAL X_AXIS,Y_AXIS,Z_AXIS,表示识别XYZ轴未按X_AXIS,Y_AXIS,Z_AXIS顺序运动时为错误,其中轴数和具体对应的轴号为根据具体的业务内容预设,RL为对应的安全等级。
运动同步规则:RL MOTION SYNC X_AXIS,Y_AXIS,Z_AXIS,表示识别XYZ轴没有同步运动时为错误,其中轴数和具体对应的轴号根据具体的业务内容预设,RL为对应的安全等级。
综合规则:RL COMPOUND MUTEX X_AXIS,Y0,表示识别X轴和Y0同时输出是为错误,RL为对应的安全等级。
上述RL表示规则等级,按照实际需要替换成HR,R及A。实际在设计安全检查规则前,需要根据具体的业务内容先建立资源对应表,即数据区的分配表,程序设计人员在此基础上进行程序设计。
所述安全等级的预设顺序可以依次是强制(HR)、要求(R)和建议(A),也可是建议(A)、要求(R)、强制(HR)。错误报告可以根据安全等级的预设顺序排布异常程序位置和与异常程序位置对应的PLC程序代码,从而向用户提供具有安全等级排序的错误报告,进一步提高了错误报告的可读性,降低了用户遗漏重要错误的可能性。
图4为本发明实施例提供的一种可编程控制器程序的安全检查装置的结构示意图,包括:
状态转移模型获得模块11,用于根据待检业务系统的可编程控制器PLC程序,获得状态转移模型,其中,状态转移模型指示了待检PLC程序运行过程中待检业务系统可能出现的所有业务状态和所有业务状态之间的转移关系;
规则获取模块12,用于获取用于描述业务安全检查规则的逻辑命题集合;
异常查找模块13,用于根据逻辑命题集合,在状态转移模型中对所有业务状态进行查找,获得不符合逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系。
图4所示实施例的装置对应地可用于执行图1所示方法实施例中装置执行的步骤,其实现原理和技术效果类似,此处不再赘述。
在图4所示实施例的基础上,状态转移模型获得模块11具体用于:获取PLC程序中各个变量的取值范围;根据各个变量的取值范围,获得与各个变量对应的赋值的集合,每个变量都与赋值的集合中至少一个赋值相对应;以预设的初始状态为PLC程序的开始状态,根据赋值的集合对PLC程序中各个变量进行取值,获得待检业务系统可能出现的所有业务状态、每个业务状态对应的相关变量、每个相关变量的值以及所有业务状态之间的转移关系,其中,相关变量为待检业务系统处于业务状态时PLC程序已使用和可能要使用的变量;将每个业务状态、每个业务状态对应的所有相关变量、每个相关变量的值确定为一个模型节点,将转移关系确定为模型节点之间的连接关系,获得状态转移模型。
在上述实施例的基础上,异常查找模块13还用于:将与异常业务状态对应的相关变量和每个相关变量的值,分别确定为异常相关变量和每个异常相关变量的值;根据异常相关变量、每个异常相关变量的值以及异常转移关系,在PLC程序中确定异常程序位置。
在上述实施例的基础上,异常查找模块13还用于:根据异常程序位置,获得用于指示异常程序位置的错误报告。
在上述实施例的基础上,状态转移模型可以为计算树逻辑模型。
相应地,状态转移模型获得模块11具体用于:将每个业务状态、每个业务状态对应的所有相关变量、每个相关变量的值确定为一个模型节点,将转移关系确定为模型节点之间的连接关系,获得计算树逻辑模型;
相应地,异常查找模块13具体用于:根据逻辑命题集合,在计算树逻辑模型中对所有业务状态进行查找,获得不符合逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系。
在上述实施例的基础上,规则获取模块12具体用于:根据待检业务系统的待检业务,确定业务安全检查规则;将业务安全检查规则按照时态逻辑命题公式进行形式化,获得用于描述业务安全检查规则的逻辑命题集合。
图5为本发明实施例提供的一种可编程控制器程序的安全检查设备的结构示意图,如图5所示的安全检查设备包括:
存储器51,该存储器51还可以是闪存(flash)。
处理器52,以及
计算机程序。
其中,所述计算机程序存储于所述存储器中,并被配置为由所述处理器执行,以实现如图1至图3所示实施例中的安全检查方法。具体可以参见前面方法实施例中的相关描述。
可选地,存储器51既可以是独立的,也可以跟处理器52集成在一起。
当所述存储器51是独立于处理器52之外的器件时,安全检查设备还可以包括:
总线53,用于连接存储器51和处理器52。
本发明实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被执行时用于以实现如图1至图3所示实施例中的安全检查方法。
其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(ApplicationSpecific Integrated Circuits,简称:ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。
本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的安全检查方法。
在上述安全检查设备的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种可编程控制器程序的安全检查方法,其特征在于,包括:
根据待检业务系统的可编程控制器PLC程序,获得状态转移模型,其中,所述状态转移模型指示了所述待检PLC程序运行过程中所述待检业务系统可能出现的所有业务状态和所有所述业务状态之间的转移关系;
获取用于描述业务安全检查规则的逻辑命题集合;
根据所述逻辑命题集合,在所述状态转移模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和包含所述异常业务状态的异常转移关系。
2.根据权利要求1所述的方法,其特征在于,所述根据待检业务系统的PLC程序,获得状态转移模型,包括:
获取所述PLC程序中各个变量的取值范围;
根据所述各个变量的取值范围,获得与所述各个变量对应的赋值的集合,每个所述变量都与所述赋值的集合中至少一个赋值相对应;
以预设的初始状态为所述PLC程序的开始状态,根据所述赋值的集合对所述PLC程序中各个变量进行取值,获得所述待检业务系统可能出现的所有业务状态、每个业务状态对应的相关变量、每个所述相关变量的值以及所有所述业务状态之间的转移关系,其中,所述相关变量为所述待检业务系统处于所述业务状态时所述PLC程序已使用和可能要使用的变量;
将每个所述业务状态、每个业务状态对应的所有相关变量、每个所述相关变量的值确定为一个模型节点,将所述转移关系确定为模型节点之间的连接关系,获得状态转移模型。
3.根据权利要求2所述的方法,其特征在于,根据所述逻辑命题集合,在所述状态转移模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和异常转移关系之后,还包括:
将与所述异常业务状态对应的相关变量和每个所述相关变量的值,分别确定为异常相关变量和每个所述异常相关变量的值;
根据所述异常相关变量、每个所述异常相关变量的值以及所述异常转移关系,在所述PLC程序中确定异常程序位置。
4.根据权利要求3所述的方法,其特征在于,在所述PLC程序中确定异常程序位置之后,还包括:
根据所述异常程序位置,获得用于指示所述异常程序位置的错误报告。
5.根据权利要求2所述的方法,其特征在于,所述状态转移模型为计算树逻辑模型;
相应地,所述将每个所述业务状态、每个业务状态对应的所有相关变量、每个所述相关变量的值确定为一个模型节点,将所述转移关系确定为模型节点之间的连接关系,获得状态转移模型,包括:
将每个所述业务状态、每个业务状态对应的所有相关变量、每个所述相关变量的值确定为一个模型节点,将所述转移关系确定为模型节点之间的连接关系,获得计算树逻辑模型;
相应地,所述根据所述逻辑命题集合,在所述状态转移模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系,包括:
根据所述逻辑命题集合,在所述计算树逻辑模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和包含异常业务状态的异常转移关系。
6.根据权利要求1至5任一所述的方法,其特征在于,所述获取用于描述业务安全检查规则的逻辑命题集合,包括:
根据所述待检业务系统的待检业务,确定业务安全检查规则;
将所述业务安全检查规则按照时态逻辑命题公式进行形式化,获得用于描述业务安全检查规则的逻辑命题集合。
7.一种可编程控制器程序的安全检查装置,其特征在于,包括:
状态转移模型获得模块,用于根据待检业务系统的可编程控制器PLC程序,获得状态转移模型,其中,所述状态转移模型指示了所述待检PLC程序运行过程中所述待检业务系统可能出现的所有业务状态和所有所述业务状态之间的转移关系;
规则获取模块,用于获取用于描述业务安全检查规则的逻辑命题集合;
异常查找模块,用于根据所述逻辑命题集合,在所述状态转移模型中对所有所述业务状态进行查找,获得不符合所述逻辑命题集合的异常业务状态和包含所述异常业务状态的异常转移关系。
8.根据权利要求7所述的装置,其特征在于,所述状态转移模型获得模块具体用于:
获取所述PLC程序中各个变量的取值范围;
根据所述各个变量的取值范围,获得与所述各个变量对应的赋值的集合,每个所述变量都与所述赋值的集合中至少一个赋值相对应;
以预设的初始状态为所述PLC程序的开始状态,根据所述赋值的集合对所述PLC程序中各个变量进行取值,获得所述待检业务系统可能出现的所有业务状态、每个业务状态对应的相关变量、每个所述相关变量的值以及所有所述业务状态之间的转移关系,其中,所述相关变量为所述待检业务系统处于所述业务状态时所述PLC程序已使用和可能要使用的变量;
将每个所述业务状态、每个业务状态对应的所有相关变量、每个所述相关变量的值确定为一个模型节点,将所述转移关系确定为模型节点之间的连接关系,获得状态转移模型。
9.一种可编程控制器程序的安全检查设备,其特征在于,包括:
存储器,
处理器,以及
计算机程序;
其中,所述计算机程序存储于所述存储器中,并被配置为由所述处理器执行,以实现如权利要求1至6任一所述的安全检查方法。
10.一种可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被执行时用于以实现如权利要求1至6任一所述的安全检查方法。
CN201810247212.8A 2018-03-23 2018-03-23 可编程控制器程序的安全检查方法、装置和设备 Active CN108681503B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810247212.8A CN108681503B (zh) 2018-03-23 2018-03-23 可编程控制器程序的安全检查方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810247212.8A CN108681503B (zh) 2018-03-23 2018-03-23 可编程控制器程序的安全检查方法、装置和设备

Publications (2)

Publication Number Publication Date
CN108681503A true CN108681503A (zh) 2018-10-19
CN108681503B CN108681503B (zh) 2021-10-22

Family

ID=63800371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810247212.8A Active CN108681503B (zh) 2018-03-23 2018-03-23 可编程控制器程序的安全检查方法、装置和设备

Country Status (1)

Country Link
CN (1) CN108681503B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597171A (zh) * 2019-09-26 2019-12-20 上汽大众汽车有限公司 基于plc程序的安全功能检查方法、系统及存储介质
CN111258916A (zh) * 2020-03-06 2020-06-09 贝壳技术有限公司 自动化测试方法、装置、存储介质及设备
JP2023506097A (ja) * 2020-03-31 2023-02-14 ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィ プログラマブルロジックコントローラプログラムの解析方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386813B2 (en) * 2004-11-30 2008-06-10 Cadence Design Systems, Inc. Transformation of simple subset of PSL into SERE implication formulas for verification with model checking and simulation engines using semantic preserving rewrite rules
CN101894072A (zh) * 2010-07-20 2010-11-24 山东省计算中心 一种模型检测中异常终止的检测方法
US20110209126A1 (en) * 2010-02-19 2011-08-25 Ansgar Fehnker Inter-procedural analysis of computer programs
CN102710434A (zh) * 2012-05-04 2012-10-03 杭州电子科技大学 一种基于NuSMV的服务组合规则路由的正确性验证方法
CN103761387A (zh) * 2014-01-20 2014-04-30 华侨大学 一种fpga组合逻辑系统顺序规范的形式化验证方法
CN104133412A (zh) * 2014-07-08 2014-11-05 华侨大学 一种判断梯形图程序的无“竞态”的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7386813B2 (en) * 2004-11-30 2008-06-10 Cadence Design Systems, Inc. Transformation of simple subset of PSL into SERE implication formulas for verification with model checking and simulation engines using semantic preserving rewrite rules
US20110209126A1 (en) * 2010-02-19 2011-08-25 Ansgar Fehnker Inter-procedural analysis of computer programs
CN101894072A (zh) * 2010-07-20 2010-11-24 山东省计算中心 一种模型检测中异常终止的检测方法
CN102710434A (zh) * 2012-05-04 2012-10-03 杭州电子科技大学 一种基于NuSMV的服务组合规则路由的正确性验证方法
CN103761387A (zh) * 2014-01-20 2014-04-30 华侨大学 一种fpga组合逻辑系统顺序规范的形式化验证方法
CN104133412A (zh) * 2014-07-08 2014-11-05 华侨大学 一种判断梯形图程序的无“竞态”的方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
李建龙: "PLC系统及其FBD编程语言的形式化建模与实时性验证", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *
闫大强: "面向企业服务总线的规则引擎的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
齐鹏飞: "指令表程序的形式化验证方法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597171A (zh) * 2019-09-26 2019-12-20 上汽大众汽车有限公司 基于plc程序的安全功能检查方法、系统及存储介质
CN111258916A (zh) * 2020-03-06 2020-06-09 贝壳技术有限公司 自动化测试方法、装置、存储介质及设备
CN111258916B (zh) * 2020-03-06 2023-08-15 贝壳技术有限公司 自动化测试方法、装置、存储介质及设备
JP2023506097A (ja) * 2020-03-31 2023-02-14 ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィ プログラマブルロジックコントローラプログラムの解析方法
JP7418608B2 (ja) 2020-03-31 2024-01-19 ミツビシ・エレクトリック・アールアンドディー・センター・ヨーロッパ・ビーヴィ プログラマブルロジックコントローラプログラムの解析方法

Also Published As

Publication number Publication date
CN108681503B (zh) 2021-10-22

Similar Documents

Publication Publication Date Title
CN108681503A (zh) 可编程控制器程序的安全检查方法、装置和设备
CN102053854A (zh) 用于动态并行化二进制程序的上下文相关切片法
CN109388573B (zh) 一种无漏报的中断驱动型程序运行时错误检测方法和系统
CN111367786B (zh) 一种符号执行方法、电子设备以及存储介质
Toguyéni et al. Models and algorithms for failure diagnosis and recovery in FMSs
Pavlovic et al. Automated formal verification of PLC programs written in IL
CN107092247B (zh) 一种基于状态数据的包装生产线故障诊断方法
Addouche et al. UML models for dependability analysis of real-time systems
CN102428420B (zh) 分析消息档案的方法
Zuo et al. Building open CNC systems with software IC chips based on software reuse
CN116383832A (zh) 一种基于图神经网络的智能合约漏洞检测方法
Elsayed et al. An Optimal Transition-Based Recovery Policy for Controlling Deadlock within Flexible Manufacturing Systems Using Graph Technique
Cohen et al. EventScript: an event-processing language based on regular expressions with actions
JP7338922B2 (ja) 異種埋め込み型の表形式化動作プロセスの処理および実行方法および装置
Biallas et al. Range and value-set analysis for programmable logic controllers
CN108469987A (zh) 一种基于中断控制流图的中断验证系统
Kim et al. A supervisory control approach for execution control of an FMC
Cho et al. NuEditor–A Tool Suite for Specification and Verification of NuSCR
Samer et al. Validity of CTL queries revisited
Zakharov Program equivalence checking by two-tape automata
Faqrizal et al. Probabilistic Analysis of Industrial IoT Applications
Lano et al. Structuring reactive systems in B AMN
Ziller et al. A µ-calculus approach to supervisor synthesis
Ye et al. Efficient Reactive Synthesis
CN104866376A (zh) 一种基于可编辑文本驱动的虚拟样机及其方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant