用于运行两个冗余的系统的方法和设施与流程

文档序号:16691643发布日期:2019-01-22 18:55阅读:356来源:国知局
用于运行两个冗余的系统的方法和设施与流程

本发明涉及一种用于运行具有两个冗余的系统的设施的方法,和一种具有两个冗余的系统的设施。



背景技术:

在工业自动化技术又或者其它技术领域中,存在需要更高可用性(“highavailability”)的使用情况。与通常概括为上位概念“安全性”的防篡改相比,“高可用性”中首要的是掌控子系统或组件的意外故障。在此,尤其应当识别并且捕捉子系统、特别是控制系统(例如可编程逻辑控制器、控制计算器等)的故障,并且作为错误情况也应当识别和捕捉以下干扰,其不被立即确定为系统的整体故障而是例如能够确定为功能干扰。

为了该目的已知有高度可用的控制系统,其具有所谓的双重结构冗余。在该设施中,两个系统或控制系统在正常运行中同时工作并且定期地相互检查所计算的结果。如果结果不一致,那么就尝试通过应用附加的诊断措施关断有错的控制系统并且该控制系统在修复之后才再次加入到运行中。在大多数情况下,系统中的一个以生产式运行工作,这意味着,应用要控制的过程的结果、特别是对于执行元件的驱控,而“冗余地”并行运行的系统实施相同的计算,然而其结果要用于检查相应另一个系统的结果。如果处于生产式运行的系统发生故障或确定出错误,那么就能够几乎无干扰地切换到冗余系统上,即截止目前在“影子式运行”中进行的系统。如果在冗余系统(影子系统)中确定出干扰,那么之前的生产系统(“主机”)保持其角色不变并且有错的系统被关断并例如重启或修复。

这种冗余式并行运行中的挑战在于,识别哪个系统或控制系统有错。识别的质量对整体系统的最终能达到的两次故障之间的平均时间(mtbf-meantimebetweenfailure平均故障间隔)有很大的影响,并且因此直接影响归因于故障和/或干扰的成本。

图2相关于错误覆盖率(diagnosticcoverage–dc诊断覆盖率)示出了冗余系统(mtbf系统)与单一系统(mtbf单独)的两次故障之间的平均时间(mtbf)的比值。在低错误覆盖率(dc<60%)的情况下,该比值大约为一,这意味着,冗余的整体系统在统计学上没有优于单一的非冗余系统。冗余的整体系统的mtbf随着错误覆盖率(dc)超线性地增长,由此其显然在改进整体系统时有着重要意义。在此,图2中的示图基于以下模型,其描述具有三个状态的马尔可夫链,mttf(meantimetofailure,平均无故障时间)=1000h,mttr(meantimetorepair,平均修复时间)=4h。

因此,如果仅确定出在生产系统与影子系统之间存在偏差而没有其他信息,由两个并行运行的系统构成的布局相对于单系统解决方案没有显著优点,因为在一半情况下会随机地继续运行损坏的系统。

为了改善前述情况而已知有以下复杂的可行性方案,即应用三个系统来替代两个系统,并且使用多数逻辑(“triplemodularredundancy,三模块冗余”)。然而,这样的多数解决方案由于可理解的原因是非常复杂的并且因此应当在许多情况下被避免。

此外,许多错误能够通过具有已知结果的并行测试程序来揭露。在此,除了实际的应用程序或自动化程序之外,在每个系统上还实现了其他任务,例如算数任务、计算或类似任务,其中,这些计算的结果是事先已知的。如果相应的计算结果与事先已知的额定结果有偏差,那么就能够推断出在相应的控制逻辑或相应的系统中的错误。然而,该方法不适于识别瞬时的“单次错误”、即特别是不涉及相应系统中的所有运行和计算的错误。

在一些情况中也能够应用专门的传感器、特别是温度传感器以用于揭露各个系统中的错误。

如果上述机制失败,那么在已知的错误情况中仅还保留任意选择(例如“随机”或“主机继续工作,关断备用机”)。然而,如上所述,在此必然有50%的概率关断功能仍正常的节点或功能仍正常的系统。



技术实现要素:

因此,本发明的目的在于,在双重的冗余系统的情况下改进对有错系统的识别。

该目的的根据本发明的解决方案以如下为基础,测量相应系统的系统程序或应用程序的各个部分的运行参数、特别是所谓的“性能(performance)”的测量。对于每个系统都在统计学上检测一个或多个运行参数。如果在两个系统(主机和备用机或者生产系统和影子系统)之间存在偏差,那么就能够检查到,在系统之一中最后检测的一个或多个运行参数是否相对于之前所执行的周期有更大偏差。当前的一个或多个运行参数相对于统计记录、例如相应考虑的参数的平均值有更大偏差的系统被识别为可能受到干扰的系统。

在此,为了实现该目的而提出一种用于运行具有两个冗余的系统、特别是两个工业自动化组件的设施的方法,其中,两个系统分别以周期性运行并行地工作,其中,系统中的相应一个以生产式运行工作并且另一个系统执行相同的任务以用于监控,其中,系统定期地检查相应另一个系统的至少一个结果,特别是分别将两个系统中的另一个系统的结果与各自的结果相比较,并且其中,在识别到结果彼此有偏差时识别出错误,其中,在错误情况下为生产式运行选择或确认系统中的一个。在此,在多个或全部的周期中,对于每个系统分别检测与运行参数有关的至少一个特征变量,并且特征变量分别用于更新至少一个统计参数,其中,至少在确定了两个系统的结果有偏差的情况下,为每个系统都将当前的运行参数与相同系统的所属的统计参数相关联,并且其中,将相应的当前的运行参数与所属的统计参数偏差较小的系统识别为正常运转的系统并且用于后续的生产式运行。通过该方法能够提高错误覆盖率(dc=diagnosticcoverage)并且因此提高整体系统的可用性。

此外,该目的通过具有两个冗余的系统、特别是两个工业自动化组件的设施来实现,其中提出,两个系统以周期式运行并行地工作,其中,系统中的相应一个以生产式运行连接并且另一个系统设置用于执行相同的任务以用于监控,其中提出,系统一次或定期地相互检查相应另一个系统的结果、特别是通过分别将两个系统的相应另一个系统的结果与各自的结果比较,并且其中提出,在识别到结果彼此有偏差时识别出错误,其中提出,在错误情况下为后续的生产式运行选择或为生产式运行确认系统中的一个。在此,在多个或全部的周期中,对于每个系统都检测与运行参数有关的相应至少一个特征变量,并且特征变量分别用于更新至少一个统计参数,其中,至少在确定出两个系统的结果存在偏差的情况下,为每个系统都将当前的运行参数与相同系统的所属的统计参数相关联,并且其中,将相应的当前的运行参数与所属的统计参数偏差较小的系统识别为正常运转的系统并且用于生产式运行。利用这样的设施能够实现根据按照本发明的方法已经讨论的优点。

相互控制发生至少一次,但优选是定期地发生、特别是在面向周期的程序(例如自动化应用)的每个周期之后。在有利的设计方案中,使用者能够管理数据比较的类型和频率,特别是以时间控制方式、周期控制方式或事件控制方式。

有利地,作为运行参数能够使用程序运行时间、特别是用于执行一个完整周期的运行时间或执行以下程序部分(例如功能模块)的运行时间,该程序部分有利地在每个周期中被强制完成。这样的程序运行时间或者周期持续时间易于检测并且不对系统性能有过多影响,其中假设,在运行时间或实施持续时间明显偏离于统计平均时存在干扰。在此,实施持续时间中的、例如能够由于常规的复杂计算或由于通过有条件的分支而被改变的流程结构或类似的正常出现的正常偏差不会被曲解,因为恰好使两个系统上的统计偏差彼此比较,从而在正常的运行时间改变的情况下,其在两个系统中以相同的程度导致现在的当前程序运行时间相对于统计平均的偏差并且因此在功能正常时不会错误地报告错误。这也适用于其它的运行参数中的偏差。

有利地,作为运行参数能够使用所谓的“性能计数器(performance-)”,其中这种性能计数器用于已经可提供的多种运行系统和架构(见:http://www.intel.com/software/pcm)。根据本发明,在此有利地利用以下认知,系统的被改变的性能能够以软件或硬件中的干扰为基础,从而能够比较在两个系统中的这些性能计数器中的临时偏差,并且在此,能够提供有关系统中的哪个受到干扰并且哪个正常工作的通知。根据本发明由此出发,即在性能特征因数上相对于统计平均具有较大改变的系统可能是受干扰的系统。

有利地,作为运行参数不仅观察单个运行参数、例如运行时间详情或性能特征因数,也检测多个特征变量,其中,这些多个特征变量或者能够概括为一个统计参数组、特别是参数向量或参数矩阵,或者概括为唯一的总统计参数。利用多个所处理的特征变量、性能特征因数、运行时间详情等,增加了可以识别异常的概率。在此,概括为各个统计参数或参数向量确保了在一个周期结束时能够一方面尽可能简单和快速地比较当前的运行参数与本地的统计参数以及另一方面尽可能简单和快速地比较生产系统的偏差与在影子系统中测定的偏差。

为了检测短时的瞬时干扰,有利的是,在许多程序块中检测运行参数并且因此进行统计比较。然而在此有利地,优选地考虑尽可能在每个周期中执行的程序部分,由此使由于偶尔执行很少使用的分支和程序部分而产生的偏差很少进入到结果中。

为了生成或检测运行参数,为应用程序的程序代码和有利地也为运行系统的程序代码或固件的程序代码配设指令(即程序指令),以用于生成或检测运行参数。替代地,该生成也能够通过运行系统实现。

附图说明

接下来根据实施例阐述根据本发明的方法;该实施例同时用于阐述根据本发明的设施。

在此示出:

图1示出经由网络与两个生产机构联接的两个冗余的系统的示意图,并且

图2相关于错误覆盖率示出由两个系统组成的设施与单个系统相比的可用性的相关性。

具体实施方式

图1中示出了两个系统s1、s2(也被称为“节点”),它们以冗余式运行并行地工作。系统s1、s2经由网络nw(例如自动化网络)与生产单元p1、p2连接以及还为了数据交换da而彼此连接,其中,生产单元p1、p2由系统s1、s2所控制。假设,系统s1、s2之一以生产式运行(主机)工作,即实际上控制了生产单元p1、p2,而系统s1、s2中的另一个以影子式运行(从机)在应用相同的输入数据(例如过程参数、测量值)的情况下执行相同的软件(运行系统、应用程序、自动化程序),然而该结果仅用于对相应另一个系统s1、s2进行监控。如果系统s1、s2之一发生故障或者被识别为有错的,那么相应另一个系统s1、s2就接管生产式运行或者使其继续,而有错的系统s1、s2则被修复,例如通过重启来修复。

图2中相关于错误覆盖率(diagnosticcoverage-dc)示出了冗余的系统(mtbf系统)与单一系统(mtbf单独)的两次故障之间的平均时间(mtbf)的比值。如前文所述,对于提高整体系统的运行安全或可用性来说,错误覆盖率(dc)进而对彼此偏离的系统s1、s2中的哪个有错进行诊断的可靠性是重要的。

根据本发明的方法以对运行系统或固件(系统程序)和/或应用程序的各个部分的性能的测量为基础。因为应用程序通常是最易出错的软件组件并且此外最易于配设诊断命令,所以在此所考虑的研究的焦点主要在于应用程序。在此检测运行参数。对此能够测量运行时间,和/或测定相应的(各个)系统s1、s2的所谓的性能计数器,这是现代cpu通常提供的。

实施例的前提是将可编程逻辑控制器作为所考虑的系统s1、s2,其中,系统以周期的方式来执行自动化任务(例如生产控制或过程自动化)。每个周期为运行参数测定这些测量值中的大约10-1000个,并且在正常情况下,在周期结束时,在两个节点中的每个上计算由此推导出的参量,即所谓的统计参数。在简单的情况下是平均值和运行参数的每个测量值的方差。

在错误情况下,即两个系统s1、s2或者节点的相互比较失败或表现出不一致时,两个系统s1、s2中的每个或者节点中的每个都使用事先计算的所推导的参量,即统计参数,以便测定运行参数的当前测量值是否允许推断出异常、即错误。在此,运行参数的当前测量值与其被持续更新的统计参数的偏差是所谓的“异常值”。如果系统s1、s2或节点之一计算出比另一个高出许多的异常值,那么要关断该系统或将其从生产式运行中去除,并且允许另一个系统以生产式运行继续运转或者从影子式运行过渡到生产式运行。为了该比较,能够在系统s1、s2(如果系统s1、s2相互监控)之间或在每个系统s1、s2与评估实体(图中未示出)之间设置数据交换da。

将异常值比较用作为选择标准能够基于以下理由,即许多错误、特别是硬件错误会对一个或多个程序部分的性能有影响。为此,在这里提出几个实例:

存储器访问单元(mmu)中的错误导致访问错误地址。它们有很大的概率不在缓存中。由此,缓存错误率上升以及因而程序运行时间上升。

由于运算器中的错误使得运算操作提前结束,这导致运行时间表现发生改变。

由于控制单元中的错误或循环计数器的失真而无法实施正确的循环次数,这导致运行时间表现发生改变。

由于过程值的失真而实施“很少执行的”程序部分,这导致了非正常的运行时间表现。

程序的失真也通常导致运行时间的改变。

结合两个系统s1、s2/节点中的至少一个必然有错的确定性,在运行时间表现中的高异常是存在错误表现的强力证据。在此,比较两个系统s1、s2的当前异常值,以便在错误情况下确定以下系统,其有更高的概率是有错或受干扰的系统。因此,运行参数的正常波动不影响判断,因为其在无干扰运行中在两个系统s1、s2中以相同的程度出现。

通过所提出的措施能够使得错误节点的关断概率从当前的50%明显下降。注意,降到仅30%已经导致mtbf的明显上升(以及操作者的由故障决定的成本的下降)(参见图2)。

具体的实施例由以下出发,即周期性实施的程序在最上层能够分解为数量适当的(大约10-100)依次实施的块。这意味着,循环和情况区分仅在这些块中进行。这些块能够包括系统功能(例如调用驱动器)或由使用者编程的功能(例如读取和处理传感器数据,数据的相互比较和与恒定的额定值相比较,比较结果的布尔组合,控制值的计算等)。

每个程序块都通过生成链(例如工程系统、特别是编译器)如下配置,即对于该块来说在每个周期中生成一个或多个测量值(运行时间、高速缓存命中数…)。在一个周期中,总共为所有块生成n个测量值(x_1至x_n)。

此外,为每个测量值x_i提供两个变量m_i和s_i,它们存储平均值和该值的方差。这些值(对于1…n之间的所有i)在第一周期之后如下初始化:

从第二周期起如下更新(“update”函数)这些值,其中,变量k是全局周期计数器:

该更新是用于平均值和方差的递推方程,参见d.knuth:计算机编程艺术,第三版,第4.2.2章,第232页。注意,s_i在此永远不能为负。

如果出现错误(即主机和备用机的输出或生产系统和影子系统的输出不一致),那么这两个节点中的每个都能够计算最后测量的值的“异常值”。随后,替代函数“update”,调用函数“calcanomalyvalue”(再次对于1…n之间的所有i):

当前值x_i与平均值m_i的偏差越大,其异常越大,其中,具有高方差s_i的值加权较小。

通过添加值avalue_i,两个节点中的每个能够自己计算总异常值。在有疑问的情况下关断具有更高值的节点,对此能够通过数据交换da将各自的异常值传输到相邻节点,并且反之亦然。在有利的变体中,节点自己(只要其仍是可运行的)决定其是否必须被关断/修复或者能够继续运行。在另一个变体中,该决定根据所确定的异常值由中央实体来承担,例如中央运行控制系统、“看门狗(watchdog)”装置等等。

在该实施例中能够进一步细化对运行参数的统计评估,例如通过考虑各个x_i的分布函数或考虑属于相同程序部段的x_i之间的相关性。此外,能够考虑不同程序部段的x_i之间的相关性。还能够跟随一个x_i的历史进程,其中也能够考虑当前过程输入值和历史过程输入值的相关性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1