CN111033470A - 确保双处理器架构中的校正程序序列 - Google Patents
确保双处理器架构中的校正程序序列 Download PDFInfo
- Publication number
- CN111033470A CN111033470A CN201880054395.XA CN201880054395A CN111033470A CN 111033470 A CN111033470 A CN 111033470A CN 201880054395 A CN201880054395 A CN 201880054395A CN 111033470 A CN111033470 A CN 111033470A
- Authority
- CN
- China
- Prior art keywords
- processor
- current
- module
- program
- value
- 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.)
- Pending
Links
Images
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
- G05B23/00—Testing or monitoring of control systems or parts thereof
- G05B23/02—Electric testing or monitoring
- G05B23/0205—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults
- G05B23/0259—Electric testing or monitoring by means of a monitoring system capable of detecting and responding to faults characterized by the response to fault detection
- G05B23/0286—Modifications to the monitored process, e.g. stopping operation or adapting control
- G05B23/0291—Switching into safety or degraded mode, e.g. protection and supervision after failure
-
- 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/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0421—Multiprocessor system
-
- 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
- G05B9/00—Safety arrangements
- G05B9/02—Safety arrangements electric
- G05B9/03—Safety arrangements electric with multiple-channel loop, i.e. redundant control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0796—Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1633—Error detection by comparing the output of redundant processing systems using mutual exchange of the output between the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Automation & Control Theory (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种在包括处理器A(122)和处理器B(124)的双处理器模块(120)中确保校正程序序列的方法(100)。处理器A和处理器B均耦合到公共存储器(121)。处理器A和处理器B各自执行第一安全程序,并且各自由此生成指令流。在运行所述第一安全程序的一个或多个时间点(102)处,所述处理器A根据正在执行的当前指令读取其程序计数器值并由此生成当前处理器A CRC值,并且所述处理器B根据正在执行的相同的当前指令读取其程序计数器值,并由此生成当前处理器B CRC值。处理器A将其当前CRC值传输(104a)至处理器B,以及/或者处理器B将其当前CRC值传输至处理器A,然后比较(104b)这些CRC值。如果所述比较确定非匹配的当前CRC值,则触发(106)安全动作。
Description
技术领域
本发明所公开的实施方案涉及过程控制系统,更具体地涉及具有双处理器架构的过程控制系统中的过程控制器或输入/输出(IO)模块。
背景技术
过程控制器可包括可编程逻辑控制器(PLC),该PLC包括各种部件,这些部件一起工作以将信息从现场设备引入PLC中,评估该信息,然后经由输出IO模块将控制信息发送回各种现场设备诸如致动器。这些基本PLC部件包括电源、中央处理单元(CPU)或其他处理器(例如,微控制器)、协处理器模块以及输入和输出模块(I/O)。CPU在执行存储的程序时评估输入、输出和其他变量的状态。然后,CPU发送控制信号以更新输出的状态。
工业控制系统的故障可能导致昂贵的停机时间。在重新启动工业过程以及因故障而造成的实际生产损失方面,涉及费用。如果该过程被设计为在没有监督人员或服务人员的情况下运行,则过程控制系统中的所有部件通常都需要容错。
安全控制器可采用双处理器架构,其中存在两者均执行相同安全功能的“主”(或初级)和“检查器”(或次级)处理器。通过在处理器之间共享的存储器设备周期性地交换执行安全程序的结果。对这些结果进行比较,以确保没有任何单个硬件故障导致其中一个处理器偏离安全功能。存在两个容错级别,上述用于通过检查异常的硬件行为来确保单个控制器中的安全性的容差,以及在存在故障的情况下维护运行中的控制系统的容差。
在已知的冗余控制系统中,存在独立的控制器,该独立控制器具有独立的IO模块,该独立的IO模块各自处理从诸如传感器的现场设备接收的场值,包括将所接收的数据信号转换为逻辑信号,该逻辑信号对应于作为CPU可使用的输入的所测量的信号。由于硬件和时序差异,测量的信号对于相应的过程控制器不必相等。然而,当用于工业应用中时,每个控制器必须使用同步输入值,因为否则相应的控制器应用程序可采用不同的控制路径。
在一种安全系统布置中,为了提高安全水平或额外可靠性,存在一种冗余控制系统,该冗余控制系统具有各自在每个控制器中均具有双处理器架构的第一和第二并联安全控制器,其中每个控制器中的两个处理器共享公共存储器并同时执行相同的安全程序。通常枚举关于安全程序中程序的子例程之间的程序控制传输的每个调用者/被调用者组合,以供被称为逻辑监测的程序员检查,该逻辑监测比较从双处理器架构中的相应处理器获得的程序序列。此逻辑监测的目标是确保打算由程序执行的安全功能实际上已执行并且按照期望的顺序执行。
此逻辑监测过程可避免处理器中的硬件故障,这些故障可能会导致进程或安全问题,此外会导致执行与程序员的意图不一致,而程序员的意图可能仍未检测到,从而导致进程问题。该监测还可检测表现出某些非确定性的系统软件故障(即,还可检测显示效应的随机变化的系统软件故障)。
发明内容
提供本发明内容以介绍简化形式的公开概念的简要选择,其在下文包括附图的具体实施方式中被进一步描述。该发明内容不旨在限制所要求保护的主题的范围。
公开的实施方案认识到对于共享公共存储器的双处理器架构中的过程控制器的程序序列的已知逻辑监测,其中相应处理器都运行独立执行但正在执行相同安全功能的相同安全程序,程序中的每个调用者/被调用者组合通常由程序员枚举以用于检查。由于程序员的大量参与,此已知方法容易出错。该已知方法的其他缺点包括,基于特定安全程序所包含的函数调用的数量,程序员的工作量可以是指数级的。
公开的实施方案通过提供用于确保双处理器架构的校正程序序列的方法克服了这些问题。从指示流的已执行数据块/序列计算循环冗余校验(CRC)值,以提供快速且“轻量级”的方法,以确保双处理器布置中相应处理器上的等效程序序列。对于所选择的指令,这两个处理器仅必须各自定期从生成的指令流计算相对较小的CRC值(例如,CRC-32,为32位)(该值已在处理器之间进行比较),而不是常规的完整程序序列校验,这意味着所公开的方法相当快。
如上所述,存在两个容错级别,上述用于通过检查异常的硬件行为来确保单个控制器中的安全性的容差,以及在存在故障的情况下维护运行中的控制系统的容差。公开的技术可应用于这些类型的处理器冗余中的任一种。
公开的实施方案包括确保冗余安全控制器或冗余IO模块的校正程序序列的方法,该冗余安全控制器或冗余IO模块具有共享存储器的两个处理器,该两个处理器独立执行但执行相同的安全功能,这与传统的逻辑程序序列监测相比提供更大的灵活性,因为程序员不需要枚举程序中的每个调用者/被调用者组合。如上所述,调用者/被调用者是用于计算机程序的子例程之间的程序控制传输的常规术语。
子例程是用于模块化程序设计的机制。“调用者”是已被“被调用者”子例程调用的子例程(即,处理器控制已从“调用者”传输到“被调用者”)。例如,在故障处理器中,从“调用者”A到“被调用者”B的传输可能永远不会发生,因此可跳过程序的一部分,从“调用者”A到“被调用者”C的传输可发生,代替至“被调用者”B的正确传输,从“调用者”A到“被调用者”B的传输可正确发生,但是当B完成时,其不会如应该的那样将控制传输回“调用者”A。公开序列监测旨在检测上述故障模式,并允许程序对此类故障作出响应。
由于所公开的方法显著减少了程序员参与,因为程序员仅负责识别需要保护的关键程序功能(即,被认为对安全控制器中的逻辑序列至关重要),并且双处理器架构CRC比较处理逻辑检查的其余部分,因此所公开的实施方案不容易发生错误。
本发明所公开的一个实施方案包括一种确保双处理器模块中的校正程序序列的方法,该双处理器模块包括具有程序计数器的处理器为方便起见称为处理器A和处理器B。处理器A和处理器B的程序计数器均耦合到公共存储器。处理器A和处理器B各自执行第一安全程序,并且各自由此生成指令流。在运行第一安全程序的一个或多个时间点(由程序员指定的灵活的时间点)处,处理器A根据正在执行的对应于选定时间点的当前指令读取其程序计数器值并由此生成当前处理器A CRC值,并且处理器B根据正在执行的相同的当前指令读取其程序计数器值,并生成当前处理器BCRC值。
CRC值将许多值(CRC一般从任意长度的数据块或数据序列的多项式计算)合并为单个短的、固定长度的二进制序列,诸如32位序列(CRC-32),也称为校验值,在给定该特定序列的情况下,该序列在统计上非常有可能是唯一的。将当前处理器A CRC值与当前处理器B CRC值进行比较。如果比较确定当前处理器A CRC值与当前处理器B CRC值不匹配,则自动触发安全动作。安全动作通常由程序员提供,并且可以基于特定检测到的故障。
附图说明
图1是示出根据示例性实施方案的用于在双处理器架构中的两个独立处理器上执行相同安全功能并确保正确的程序序列的所公开的方法步骤的流程图,该两个独立处理器共享过程控制器模块内的公共存储器。
图2示出了根据示例性实施方案的在较大的安全系统上下文中针对双处理器架构技术所公开的校正程序序列验证的部署。显示为CP1和CP2的安全处理器都独立地使用该校正程序序列验证方法,下游IO模块也是如此。每个模块(安全处理器和IOM模块)都有两个微处理器,它们独立执行,但正在执行相同的安全功能,并使用CRC比较来确保它们始终执行相同的安全功能步骤/顺序。
具体实施方式
参考附图描述了公开的实施方案,其中在所有附图中使用相同的附图标号来表示类似或等同元件。附图未按比例绘制,并且其仅提供用于说明某些公开的方面。下面参考用于说明的示例性应用来描述若干公开的方面。应当理解,阐述了许多具体细节、关系和方法以提供对所公开实施方案的完全理解。
然而,相关领域的普通技术人员将容易地认识到,可在没有一个或多个具体细节或其他方法的情况下实践本文公开的主题。在其他情况下,未详细示出公知的结构或操作以避免模糊某些方面。本公开不受所示出的动作或事件的顺序的限制,因为某些动作可以不同的顺序发生和/或与其他动作或事件同时发生。此外,并非所有示出的动作或事件都是实现根据本文公开的实施方案的方法所必需的。
另外,如本文所用的没有进一步限定的术语“耦合到”或“与…耦合”(等等)旨在描述间接或直接电连接。因此,如果第一设备“耦合”到第二设备,则该连接可通过直接电连接,其中在通路中仅存在寄生;或者可通过经由包括其他设备和连接的中间项的间接电连接。对于间接耦合,中间项通常不修改信号的信息,但可调整其电流电平、电压电平和/或功率电平。
图1是示出根据示例性实施方案的用于通过在双处理器模块架构中的两个独立处理器(本文所使用的处理器A和处理器B)上执行相同安全功能来确保校正程序序列的方法100中的示例性步骤的流程图,其中每个独立处理器包括共享公共存储器的程序计数器。处理器A和处理器B独立执行,但对双处理器算法执行相同的安全功能和逻辑序列监测。步骤101包括各自包括程序计数器的处理器A和处理器B,其均执行双处理器算法的逻辑序列监测和程序序列中的包括多个处理器指令以由此生成指令流的第一安全程序。
第一安全程序包括多个处理器指令,并且处理器各自生成指令流,该指令流是在执行安全程序之后生成的它们的计算输出。处理器各自获得安全程序的相同副本,该安全程序可存储在通常不在共享存储器中的处理器可访问的任何位置的存储器中。公共共享存储器用于交换CRC值(请参阅下面的步骤103),以便每个处理器可确保它们具有与其他处理器相同的CRC值。
参见下文所述图2所示的容错过程控制系统200,包括共享公共存储器的设置在CP1 120(μP 122,124)、CP2 130(μP 132,134)以及均共享公共存储器的被示为第一IOM150(μP 151,153)和第二IOM 155(μP 156,158)的输入/输出(IO)模块中的处理器A和处理器B。CP1 120、CP2 130、第一IOM 150和第二IOM 155中的每对处理器可实现方法100。如下所述,公共存储器用于交换CRC值。
步骤102包括在执行第一安全程序的一个或多个选定时间点处,处理器A和处理器B均从其程序计数器读取程序计数器值,然后根据对应于选定时间点的生成的指令流来更新CRC值,并且因此处理器指令正在执行,诸如将图1中所示的32位CRC计算为CRC32。因此,生成的每个CRC值表示程序可采取的特定逻辑步骤的标识的无界序列。程序计数器是从处理器本身读取的,处理器本身精确地告知一个处理器已执行的操作。计算机领域中已知的程序计数器是计算机处理器中的寄存器,其包含在当前时间执行的指令的地址(位置)。在获取每个指令时,程序计数器会增大其存储值。
已知CRC是一种错误检测代码,通常用于数字网络和存储设备以检测原始数据的意外更改。进入这些系统的数据块会基于其内容的多项式划分的其余部分获得一个附加的短校验值。在检索时,将重复计算,并且如果检查值不匹配,那么可以对数据损坏执行更正操作。
对于CRC值,可以使用32位(或16位,或64位)。较大的位宽仅仅为一个处理器提供了在两个处理器之间未得到未检测到的序列偏差的更大概率。32位使得极不可能不检测到错误,而64位使得基本上不可能不检测到错误。
执行用于计算CRC值的程序时所选择的时间点是相当灵活的。所选择的时间点可位于程序中定义的每个同步点处,其中处理器确保它们正在执行相同的软件指令的每个位置。所选择的时间也可在特定函数内,仅围绕函数的子集,或围绕安全处理器代码中的每个函数。所选择的时间点可用于执行的每一个处理器指令,这将是最慢的方法,但它提供处理器以相同方式执行所有操作的最高置信度。
整个安全程序中也只能有2个选定的时间点,以确保安全程序中的两个最重要的项在两个处理器上始终执行相同。2个选定的点将非常快(仅需要两个CRC更新),但对于执行完全相同程序的两个处理器都没有足够的保证。所选择的时间点可为用户基于控制器的所需功能所定义的比较的关键时间。例如,在安全系统中,关键时间可由用户已针对其工厂/控制系统定义的“过程安全时间”来驱动。在控制系统中,“关键时间”可在每个过程控制器控制循环周期结束时。当如本文所公开的,程序计数器值被读取并用作由处理器执行的操作的唯一标识符,并且用于操作的所生成指令流用于更新CRC值,因此获得非常强烈的保证,即它们正在比较两个处理器实际执行的内容,而不仅仅是已经编程要执行的内容。
步骤103包括处理器A和处理器B均确定它们是否已到达CRC比较步骤,该步骤由它们正在执行的公共程序来定义。如果确定其尚未准备好比较CRC值,则该方法返回至步骤101,并且如果确定CRC值已准备好进行比较,则该方法前进至步骤104a。
步骤104a包括处理器A将其CRC值传输至处理器B以及处理器B将其CRC值传输至处理器A中的至少一者。公共存储器用于交换CRC值。步骤104b包括处理器A和处理器B中的至少一者将其CRC值与从其他处理器接收的CRC值进行比较。通过在安全程序中的关键点处验证所得计算的CRC在相应处理器之间是相同的来提供冗余,其中CRC值的任何失配导致至少一个处理器检测到故障。
通过以两个方向(A至B和B至A)传输CRC值,可获得两次检查。例如,如果只有A发生故障,并且只有A执行了CRC比较,那么不知道A是否发生故障,因为它不正确地传输了CRC值,或者处理器在执行过程中发生了偏差(这正是您尝试检测到的)。如果处理器A和B都执行CRC比较,并且两者都发现差异,则它们在执行序列中比其中一个处理器例如在从另一个处理器读取CRC值时有问题的可能性要大得多。
步骤105包括基于步骤104b中的比较来确定是否匹配相应的CRC值。如果CRC值匹配,则方法返回至步骤101,并且如果发现CRC值不匹配,则该方法前进至步骤106,该步骤包括执行一般由系统的用户(例如,过程工程师)定义的安全动作。例如,关闭控制系统的部件或升高警报。安全动作至少在我们的系统中通常是用户可配置的。
整数用于表示对应于被视为重要的程序状态的选定时间点。这些整数可以是:
1.由程序员显式地定义,诸如整数值1映射至代码位置Y,整数值2映射至代码位置Z等。
2.处理器程序计数器的当前值。这是安全程序中每个可执行指令的保证唯一整数值。
3.当前执行的程序函数的地址。这也生成唯一值,但在编译时通常可以作为一些值BaseLoadAddress加上FixedFunctionOffset来确定,但可以静态方式确定(即,在程序执行之前,可以提前知道可能的值集合)。
据信所有这些示例性整数值选项对于工业实施是实用的。第三选项可以通过读取在大多数硬件平台(诸如微处理器)上提供的程序计数器寄存器来实现。
关于CRC计算,下文描述了三种用于为所公开的CRC比较创建CRC值的示例性方法:
1.附加到32位整数的固定大小循环缓冲区,并确保在缓冲区回绕之前进行比较。
2.与#1相同,不同的是不能保证在缓冲区回绕之前进行CRC比较。
3.保持在与一个或多个选定时间点对应的每个指令位置处逐渐更新的正在运行的CRC32。
选项#2和#3一起通常提供可调试性和性能的最佳组合。保持部分循环缓冲区可能很重要,因此可以发现当CRC比较不匹配时导致故障的序列。
据信所公开的程序序列的逻辑监测在若干方面是独特的。这些新特征包括(a)将CRC应用于来自逻辑程序序列的指令流,(b)比较双处理器架构中的此类序列数据(编码为CRC),以及(c)从程序计数器自动地导出程序序列位置,以从对应于所选择的时间点的所得指示流计算CRC值。
图2示出了示例性容错工业控制系统200,其包括被示为“冗余安全控制器”的冗余过程控制器140,该冗余过程控制器包括共享公共第一存储器121的包括第一处理器A122和第一处理器B124的第一处理控制器(CP1)120,以及共享公共第二存储器131的包括第二处理器A132和第二处理器B134的第二冗余处理控制器(CP2)130。处理器可包括微处理器、数字信号处理器(DSP)或微控制器单元(MCU)。处理器通常各自包括程序计数器。
冗余链路135用于在两个CP之间共享数据。冗余链路135不执行任何计算。在CP之间的冗余链路135上的分布式数据包括多个信道配置,该多个信道配置包括数字输出(DO)、数字输入(DI)、模拟输入(AI)和模拟输出(AO)。
冗余IO模块160包括位于冗余过程控制器140和耦合到处理设备114的场设备112、113之间的第一IO模块150和第二IO模块155。第一IO模块150包括共享公共第一IO存储器152的第一IO处理器A151和第二IO处理器B153,并且第二IO模块155包括共享公共第二IO存储器157的第二IO处理器A156和第二IO处理器B158。显示在第一IO模块150和第二IO模块155之间的链路170是这些冗余IO模块之间的冗余链路。
示出了将CP1 120连接到第一IO模块150的第一连接脚(示出为LegA),并且示出了将CP2 130连接到第二IO模块155的第二连接脚(示出为LegB)。在操作中,CP1 120通过LegA接收来自第一IO模块150的扫描值,并且CP2 130通过LegB接收来自第二IO模块155的扫描值。如上所述,CP1 120、CP2 130、第一IOM 150和第二IOM 155全部可实现方法100。
公开了确保冗余安全控制器或IO模块的校正程序序列的技术有益效果,该冗余安全控制器或IO模块具有共享公共存储器的双处理器布置中的两个处理器,该两个处理器独立执行但执行相同的安全功能,这与传统的逻辑程序序列监测相比具有更大的灵活性,因为程序员不需要枚举程序中的每个调用者/被调用者组合。由于该特征,所公开的实施方案不容易发生错误(在程序员的部分上)。程序员只负责识别需要保护的关键函数(即,对安全控制器中的逻辑序列至关重要),而双处理器架构则负责其余部分。
所公开的实施方案通常可以应用于多种安全系统。例如,如上所述,存在两个容错级别。通过检查异常的硬件行为,确保具有双处理器的单个控制器或IO模块中的安全性的容错。一个示例包括检测单个控制器或IO模块(具有两个处理器)中的故障,以确保该模块的高安全级别。这涉及到检测处理器之间的差异,这意味着检测到一些故障,因此系统应该安全地关闭或执行用户认为“安全”的任何行为。有关在存在故障的情况下维护正在运行的系统的容错。这涉及检测两个单独控制器或IO模块之间的差异以提供更高的正常运行时间;即,检测一个此类模块中的故障,使得客户可继续使用非故障模块运行并替换故障模块。
实施例
通过以下具体实施例来进一步说明所公开的实施方案,这些实施例不应被解释为以任何方式限制本公开的范围或内容。
下面的表1示出了示例程序;外部函数(调用者):
指令地址 | 指令内容(伪代码) |
0 | 从←外部设备读取的输入值 |
1 | CRC←更新Crc(CRC,程序计数器) |
2 | 如果(输入值>上限)→升高警报 |
3 | 如果(输入值<下限)→升高警报 |
4 | 输出值←计算结果(输入值) |
5 | 将值写入外部设备(输出值) |
6 | 比较CRC |
7 | GOTO指令0 |
表1
下面的表2示出了示例程序;内部函数(被调用者):“将值写入外部设备()”
指令地址 | 指令内容(伪代码) |
8 | CRC←更新Crc(CRC,程序计数器) |
9 | 等待直到设备就绪 |
10 | 输出值→写入外部设备 |
11 | CRC←更新Crc(CRC,程序计数器) |
12 | 返回至调用者 |
表2
在以上所示的示例中,存在两个子例程:调用者(表1)和被调用者(表2)。调用者是一个简单循环,用于从设备读取输入,然后将值写入(基于该输入计算)输出设备。每个处理器更新其CRC的三个所选位置(时间点)为:指令1、8和11。当处理器执行指令时,其程序计数器将具有该指令地址作为值。在每个回路(指令7)结束时,处理器交换并比较CRC值。如果两个处理器都正确执行,它们应该都已计算到CRC(1,8,11)。例如,如果其中一个程序由于故障而未执行整个将值写入外部设备()子例程,那么比较的CRC将为CRC(1)!=CRC(1,8,11),并且将检测到故障。在两个处理器都以相同的方式故障并跳过同一子例程的概率极低的事件中,那么比较将为CRC(1)=CRC(1),并且此特定故障将不会被检测到。
虽然上面已经描述了各种所公开的实施方案,但是应当理解,它们仅以示例而非限制的方式呈现。在不脱离本公开的实质或范围的情况下,可根据本公开对本文公开的主题进行许多改变。例如,所公开的方法通常可应用于处理器控制器(除了安全系统之外),其中一个处理器控制器想要确保控制系统中的任何两个处理器或模块之间的完全相同的行为。此外,作为程序计数器的替代方案,可使用计算机程序员提供的每个待检查处理器指令的枚举。在这种情况下,CRC使用程序员提供的固定值进行更新,以便不会读取处理器状态来获取更新后的CRC值。此外,虽然可使用仅关于若干实施方式中的一者来公开特定特征,但是此类特征可与其他实施方式的一个或多个其他特征组合,如对于任何给定或特定应用可能期望或有利的那样。
Claims (12)
1.一种确保双处理器模块(120)中的校正程序序列的方法(100),所述双处理器模块包括处理器A(122)和处理器B(124),所述处理器均耦合到公共存储器(121),所述方法包括:
所述处理器A和所述处理器B各自包括程序计数器并且执行程序序列中的包括多个处理器指令的第一安全程序,以由此生成指令流;
在所述执行所述第一安全程序的一个或多个选定时间点(102)处,所述处理器A根据正在执行的当前指令从其所述程序计数器读取程序计数器值,然后从对应于所述程序序列中的所述选定时间点处的所述指令流的所述程序计数器值计算当前处理器A循环冗余校验(CRC)值,并且所述处理器B根据正在执行的所述当前指令从其程序计数器读取程序计数器值,然后从对应于所述程序序列中的所述选定时间点处的所述指令流的所述程序计数器值计算当前处理器BCRC值;
所述处理器A将其当前CRC值传输(104a)至处理器B以及所述处理器B将其当前CRC值传输至所述处理器A中的至少一者;
将所述当前处理器A CRC值与所述当前处理器B CRC值进行比较(104b),以及
如果所述比较确定所述当前处理器A CRC值不匹配所述当前处理器B CRC值,则触发安全动作(106)。
2.根据权利要求1所述的方法,其中所述比较包括所述处理器A将所述当前处理器ACRC值与所述当前处理器B CRC值进行比较以及所述处理器B将所述当前处理器A CRC值与所述当前处理器B CRC值进行比较两者。
3.根据权利要求1所述的方法,其中所述程序序列中的所述选定点是根据所述程序计数器值而被自动选择的。
4.根据权利要求1所述的方法,其中所述双处理器模块包括被一起配置为冗余安全控制器(140)的第一安全控制器(120)和第二安全控制器(130)。
5.根据权利要求1所述的方法,其中所述双处理器模块包括被一起配置为冗余输入/输出(IO)模块的冗余第一IO模块和第二IO模块。
6.根据权利要求1所述的方法,其中所述双处理器模块包括容错工业控制系统(200)内的多个所述双处理器模块,所述双处理器模块包括:
被一起配置在冗余安全控制器(140)中的作为第一安全控制器(120)的第一所述双处理器模块和作为第二安全控制器(130)的第二双处理器模块,以及被一起配置在冗余IO模块(160)中的作为第一输入/输出(IO)模块(150)的第三所述双处理器模块和作为第二输入/输出(IO)模块(155)的第四所述双处理器模块,
其中所述第一和第二IO模块均耦合到耦合到处理设备(114)的场设备(112,113)。
7.一种双处理器模块(120),包括:
处理器A(122)和处理器B(124),所述处理器均耦合到公共存储器(121);
所述处理器A和所述处理器B各自包括用于执行双处理器算法的逻辑序列监测的程序计数器和程序序列中的包括多个处理器指令以由此生成指令流的第一安全程序;
所述逻辑序列监测算法实现一种确保校正程序序列的方法(100),所述方法包括:
在所述执行所述第一安全程序的一个或多个选定时间点(102)处,所述处理器A根据正在执行的当前指令从其所述程序计数器读取程序计数器值,然后从对应于所述程序序列中的所述选定时间点处的所述指令流的所述程序计数器值计算当前处理器A循环冗余校验(CRC)值,并且所述处理器B根据正在执行的所述当前指令从其程序计数器读取程序计数器值,然后从对应于所述程序序列中的所述选定时间点处的所述指令流的所述程序计数器值计算当前处理器B CRC值;
所述处理器A将其当前CRC值传输(104a)至处理器B以及所述处理器B将其当前CRC值传输至所述处理器A中的至少一者;
将所述当前处理器A CRC值与所述当前处理器B CRC值进行比较(104b),以及
如果所述比较确定所述当前处理器A CRC值不匹配所述当前处理器B CRC值,则触发安全动作(106)。
8.根据权利要求7所述的双处理器模块,其中所述双处理器模块包括被一起配置为冗余安全控制器(140)的第一安全控制器(120)和第二安全控制器(130)。
9.根据权利要求7所述的双处理器模块,其中所述双处理器模块包括被一起配置为冗余输入/输出(IO)模块(160)的冗余第一IO模块(150)和第二IO模块(155)。
10.根据权利要求7所述的冗余过程控制模块,其中所述比较包括所述处理器A将所述当前处理器A CRC值与所述当前处理器B CRC值进行比较以及所述处理器B将所述当前处理器A CRC值与所述当前处理器B CRC值进行比较两者。
11.根据权利要求7所述的冗余过程控制模块,其中所述程序序列中的所述选定点是根据所述程序计数器值而被自动选择的。
12.根据权利要求9所述的冗余过程控制模块,其中所述双处理器模块包括容错工业控制系统(200)内的多个所述双处理器模块,所述双处理器模块包括:
被一起配置在冗余安全控制器(140)中的作为第一安全控制器(120)的第一所述双处理器模块和作为第二安全控制器(130)的第二双处理器模块,以及被一起配置在冗余IO模块(160)中的作为第一输入/输出(IO)模块(150)的第三所述双处理器模块和作为第二输入/输出(IO)模块(155)的第四所述双处理器模块,
其中所述第一和第二IO模块均耦合到耦合到处理设备(114)的场设备(112,113)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/682,244 US10345801B2 (en) | 2017-08-21 | 2017-08-21 | Ensuring a correct program sequence in a dual-processor architecture |
US15/682,244 | 2017-08-21 | ||
PCT/US2018/045980 WO2019040287A1 (en) | 2017-08-21 | 2018-08-09 | GUARANTEED A CORRECT PROGRAM SEQUENCE IN A DOUBLE PROCESSOR ARCHITECTURE |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111033470A true CN111033470A (zh) | 2020-04-17 |
Family
ID=65361189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880054395.XA Pending CN111033470A (zh) | 2017-08-21 | 2018-08-09 | 确保双处理器架构中的校正程序序列 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10345801B2 (zh) |
EP (1) | EP3673373A4 (zh) |
CN (1) | CN111033470A (zh) |
WO (1) | WO2019040287A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115167933A (zh) * | 2022-09-08 | 2022-10-11 | 深圳市恒运昌真空技术有限公司 | 一种双处理器设备及其控制方法和处理器 |
CN115185562A (zh) * | 2022-07-26 | 2022-10-14 | 深圳市航顺芯片技术研发有限公司 | 一种基于双核的应用程序在线升级方法、系统及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021086359A (ja) * | 2019-11-27 | 2021-06-03 | 株式会社デンソーウェーブ | 産業機器の制御装置 |
DE102022101436A1 (de) * | 2022-01-21 | 2023-07-27 | Pilz Gmbh & Co. Kg | Steuervorrichtung und Verfahren zum Steuern einer automatisierten Anlage |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060605A1 (en) * | 2003-09-16 | 2005-03-17 | Gibart Anthony Gerard | High speed synchronization in dual-processor safety controller |
EP1857936A1 (en) * | 2005-01-28 | 2007-11-21 | Yokogawa Electric Corporation | Information processing apparatus and information processing method |
CN101840361A (zh) * | 2009-03-17 | 2010-09-22 | 恩益禧电子股份有限公司 | 程序验证装置及其方法 |
US20120066551A1 (en) * | 2010-09-15 | 2012-03-15 | Alexandre Palus | Run-time Verification of CPU Operation |
US20170031750A1 (en) * | 2015-07-28 | 2017-02-02 | Microchip Technology Incorporated | Zero Overhead Code Coverage Analysis |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3745316A (en) * | 1971-12-13 | 1973-07-10 | Elliott Bros | Computer checking system |
FR2790844B1 (fr) * | 1999-03-09 | 2001-05-25 | Gemplus Card Int | Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme |
JP3798750B2 (ja) * | 2001-02-24 | 2006-07-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 一連のデータ・パケットを検査する方法およびシステム |
US6708284B2 (en) * | 2001-03-30 | 2004-03-16 | Intel Corporation | Method and apparatus for improving reliability in microprocessors |
US7281237B2 (en) * | 2003-01-16 | 2007-10-09 | Sun Microsystems, Inc. | Run-time verification of annotated software code |
US7814300B2 (en) * | 2008-04-30 | 2010-10-12 | Freescale Semiconductor, Inc. | Configurable pipeline to process an operation at alternate pipeline stages depending on ECC/parity protection mode of memory access |
US8516355B2 (en) * | 2011-02-16 | 2013-08-20 | Invensys Systems, Inc. | System and method for fault tolerant computing using generic hardware |
US10042330B2 (en) * | 2014-05-07 | 2018-08-07 | Honeywell International Inc. | Redundant process controllers for segregated supervisory and industrial control networks |
US9990492B2 (en) | 2014-07-23 | 2018-06-05 | Grammatech, Inc. | Systems and/or methods for automatically protecting against memory corruption vulnerabilities |
US9417952B2 (en) * | 2014-12-18 | 2016-08-16 | Freescale Semiconductor, Inc. | Direct memory access (DMA) unit with error detection |
JP6299671B2 (ja) * | 2015-05-22 | 2018-03-28 | 株式会社安川電機 | エンコーダ、コントローラ、モータ制御システム、ロボット制御システム、ロボット、データ送信方法、及び回転数比較方法 |
-
2017
- 2017-08-21 US US15/682,244 patent/US10345801B2/en active Active
-
2018
- 2018-08-09 CN CN201880054395.XA patent/CN111033470A/zh active Pending
- 2018-08-09 EP EP18848955.3A patent/EP3673373A4/en active Pending
- 2018-08-09 WO PCT/US2018/045980 patent/WO2019040287A1/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060605A1 (en) * | 2003-09-16 | 2005-03-17 | Gibart Anthony Gerard | High speed synchronization in dual-processor safety controller |
EP1857936A1 (en) * | 2005-01-28 | 2007-11-21 | Yokogawa Electric Corporation | Information processing apparatus and information processing method |
CN101840361A (zh) * | 2009-03-17 | 2010-09-22 | 恩益禧电子股份有限公司 | 程序验证装置及其方法 |
US20120066551A1 (en) * | 2010-09-15 | 2012-03-15 | Alexandre Palus | Run-time Verification of CPU Operation |
US20170031750A1 (en) * | 2015-07-28 | 2017-02-02 | Microchip Technology Incorporated | Zero Overhead Code Coverage Analysis |
Non-Patent Citations (3)
Title |
---|
R.D. WILLIAMS ET AL.: "An operating system for a fault-tolerant multiprocessor controller", 《IEEE MICRO》 * |
YOKOGAWA SOUTH: "ANONYMOUS:\"World\'s first integrated safety controller\"", 《SA INSTRUMENTATION & CONTROL》 * |
王海凤: "故障安全通信系统的研究与设计", 《电子技术应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185562A (zh) * | 2022-07-26 | 2022-10-14 | 深圳市航顺芯片技术研发有限公司 | 一种基于双核的应用程序在线升级方法、系统及存储介质 |
CN115185562B (zh) * | 2022-07-26 | 2024-03-22 | 深圳市航顺芯片技术研发有限公司 | 一种基于双核的应用程序在线升级方法、系统及存储介质 |
CN115167933A (zh) * | 2022-09-08 | 2022-10-11 | 深圳市恒运昌真空技术有限公司 | 一种双处理器设备及其控制方法和处理器 |
CN115167933B (zh) * | 2022-09-08 | 2022-12-02 | 深圳市恒运昌真空技术有限公司 | 一种双处理器设备及其控制方法和处理器 |
Also Published As
Publication number | Publication date |
---|---|
EP3673373A1 (en) | 2020-07-01 |
US10345801B2 (en) | 2019-07-09 |
EP3673373A4 (en) | 2021-04-28 |
WO2019040287A1 (en) | 2019-02-28 |
US20190056723A1 (en) | 2019-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111033470A (zh) | 确保双处理器架构中的校正程序序列 | |
US6604177B1 (en) | Communication of dissimilar data between lock-stepped processors | |
US7516358B2 (en) | Tuning core voltages of processors | |
US9891917B2 (en) | System and method to increase lockstep core availability | |
US9304872B2 (en) | Method for providing a value for determining whether an error has occurred in the execution of a program | |
US10657010B2 (en) | Error detection triggering a recovery process that determines whether the error is resolvable | |
US9535784B2 (en) | Self monitoring and self repairing ECC | |
Ulbrich et al. | Eliminating single points of failure in software-based redundancy | |
US10114356B2 (en) | Method and apparatus for controlling a physical unit in an automation system | |
US10963334B2 (en) | Method and computer system for fault tolerant data integrity verification of safety-related data | |
Schiffel et al. | Software-implemented hardware error detection: Costs and gains | |
US8255769B2 (en) | Control apparatus and control method | |
US10379946B2 (en) | Controller | |
KR20050121729A (ko) | 프로그램 제어식 유닛 및 방법 | |
EP4089538A1 (en) | System and method for improved control flow monitoring of processors | |
CN110716823A (zh) | 用于连续验证器件状态完整性的系统和方法 | |
Shrivastava et al. | Software approaches for in-time resilience | |
Vankeirsbilck et al. | Soft error protection in safety critical embedded applications: An overview | |
Maghsoudloo et al. | CCDA: Correcting control-flow and data errors automatically | |
JP5563700B2 (ja) | 制御装置 | |
JP2023059860A (ja) | 完全性検査を伴うインプレースアーキテクチャの実行 | |
KR20240067770A (ko) | 데이터 메모리의 자가 진단을 위한 전자 회로 및 방법 | |
Raab et al. | Data flow analysis of software executed by unreliable hardware | |
Elks et al. | New Design Approaches for Embedded Safety Critical Systems: Algorithm Based Safety Assurance | |
Saha | Software-Implemented Fault Detection Approaches |
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 |