冗余-安全设计的基石

冗余构成原理就是在系统中采用2套中央处理器(CPU)单元,其中1套为工作主机,1套为热备,一旦工作主机发生故障,热备的CPU将自动投入工作,此时热备的CPU变为工作主机,原工作主机故障处理完成后就变为热备CPU。除主机冗余外,输入输出模板也可以采用冗余构成或非冗余构成。按照主机冗余方式和输入输出冗余方式,系统可以有各种不同类型。

1.单一故障准则

在一个系统的运行过程中,单一子系统出现故障或失效的几率是最大的,而两个或两个以上子系统同时出现故障或失效的几率则很小。因此在实际工程中,只要保证当单个子系统出现故障或失效时,不会引起整个系统的故障或失效,就可以满足绝大部分控制系统对可靠性的要求。

单一故障准则的定义是,系统中任何一个子系统的故障或失效均不会导致整个系统的故障或失效。当然,如果系统中同时出现了两个或两个以上子系统故障或失效,则系统将不能保证不出现故障或失效,尽管在此情况下,系统有可能还可以正常运行。

根据单一故障准则的要求,采用冗余技术是最有效的手段之一。

2.冗余(Redundancy)

通过前面的讲述可以知道,子系统的并联连接可以较大地提高整个系统的可用率,因此,在需要高可靠性的系统中,采用冗余技术是提高系统可靠性的有效方法。

冗余的含义,是使用两个甚至多个功能完全相同的子系统,使其并联,这样的并联完全不影响或改变系统的功能,但只要这些并联子系统中的任何一个子系统处在正常运行状态,整个系统就能够保证正常运行。形成并联系统的子系统数量被称为冗余的重数,如由两个子系统并联构成的冗余系统被称为双重冗余(DMR,Dual Module Redundancy),由三个子系统并联构成的冗余系统被称为三重冗余(TMR,Triple Module Redundancy),等等。

对于冗余,IEEE可靠性协会的定义是:在需要时运行并完成指定功能的备用措施(Thatredundancy where in the alternative means for performing a given function are in operative untilneeded.IEEE Reliabilitv Society).这个定义的隐含意思是,这个备用措施在不需要时是不运行的,也就是说,在正常时,处于冗余状态的子系统中只有一个是运行的。

采用冗余技术可以明显地提高系统的可用率,其可用率的上升呈指数趋势。例如,我们使用两个可用率为80%的子系统并联成一个完整系统,则系统可用率将上升至96%。如果采用四个同样的子系统并联,系统可用率将高达99.84%。

在一般情况下,一个系统从无冗余到两重冗余,系统可用率会有很大的提升;从两重冗余提高到三重或四重冗余,系统的可用率也有较大的提升,但效果已没有那么明显;到四重以上的冗余,虽然可用率有所提升,但越来越不明显,而系统的复杂性和成本将会成倍上升。因此,在高可靠性系统中,两重冗余使用得最为普遍,对于更高的可靠性要求,可采用三重或四重冗余,而高于四重的冗余则很少采用。

3.冗余系统(Redundant System)

IEEE核电站安全系统标准委员会对冗余系统的定义为:一设备或系统与一设备或系统的基本功能完全相同,它们不管其中一个运行还是故障,另一个都可以执行要求的功能(Apiece of equipment or a system that duplicates the essential function of an other piece of equipment or system to the extent that either may perform the required function regardless of the state of operation or failure of the other, IEEE STD603-1991 IEEE Std Criteria for Safety Systems for Nuclear Power Generaing Stations).

显然这个定义并未涉及冗余系统中各个并联子系统间的切换及切换时间(或切换过程)问题,但在实际工程中,冗余系统的这个问题却是不得不认真考虑的,因为,它会影响整个系统功能的执行,甚至使冗余系统达不到预期的目的。

在上节已经谈到,在任何时刻,冗余系统中各个并联的子系统间只能有一个在运行,否则系统将出现混乱。那么,当正在运行的子系统出现故障时,就必须将出现故障的故障的子系统从系统中切除,并尽快地将备用的子系统投入运行,以接替故障子系统正在进行的处理,这种处理被称为冗余系统的故障切换。虽然在冗余系统中,系统的可靠性或可用率比单一系统有大幅度的提高,但这里没有考虑并联子系统的故障切换对它的影响。故障切换过程主要有两个方面的动作,一是故障的确定,即系统要有一个故障诊断功能,该功能要不断对系统的完好性做出判断,一旦发现故障,就应立即开始从当前处于运行状态的子系统向处于备用状态子系统的转移过程。这个过程一般来说是相当复杂的,其中,包括当前正在进行的处理过程的转移、子系统与其他各个子系统(如输入输出)的连接切换等。

对于故障诊断和切换来说,这项功能也需要由一个子系统来完成,它虽然是被监视和切换的冗余系统中的一个组成部分,但功能却与之不同,因此,冗余系统与故障诊断和切换子系统间必须是串联的连接方式。这样,在考虑系统可用率时就不能不考虑故障诊断和切换子系统对整个系统的影响,也就是说,故障诊断和切换子系统本身也是有失效率的,在这个子系统串入系统后,必须会使总的系统可用率下降。我们可以用下面的例子来说明。

假设一个冗余系统是由两个可用率为90%的子系统组成,这两个子系统组成的冗余系统可有99%的可用率。而要实现这种冗余的系统结构,还必须增加一个诊断和切换子系统。假设这个子系统可用率99%,则整个系统的可用率将是98%。

由此我们可以看到,为实现冗余,必须有故障诊断和切换子系统,而这个子系统的可用率对整个系统的可用率影响极大,如果它的可用率不高,那么前面用再多重的冗余所提高的系统可用率都将被拉下来。因此,对故障诊断和切换子系统的要求是,构成尽可能简单,可用率尽可能高,至少比形成冗余结构的子系统高一个数量级,最好高两个数量级。

4. 备用式冗余

根据冗余系统的定义,我们了解到在一个冗余系统中,形成冗余结构的各个子系统在运行时,只有一个是在线的,而其他的子系统都处于被用(即Backup)状态。根据系统设计,备用方式可分为以下几种。

1)冷备用方式(Cold Backup)

冷备用方式中备用子系统完全不运行,甚至不加电,以手动方式完成切换。切换时系统需停电。或不需停电。冷备用方式的切换速度最慢,但没有切换设备,不存在切换设备可用率对系统可用率的影响,成本也最低。在线的故障诊断和报警技术、不停电切换(Hot Swap或俗称热插拔)技术现在已比较成熟,这较大地加快了故障切换的过程。目前在允许局部有短暂停用状态(几分钟到几十分钟)的系统中多采用这种备用方式,优点是成本低而且实用。

  1. 温备用方式(Warm Backup)

温备用方式中备用子系统处于运行状态,但运行的不是在线程序,而是一个跟踪程序。该程序跟踪在线子系统的所有运行状态,将在线子系统的所有数据改变均记录在备用子系统的内存中。一旦在线子系统出现故障,备用子系统立即启动,并根据跟踪的状态继续运行。温备用方式的切换无需人工干预,切换过程可自动完成。但由于备用子系统对在线子系统的跟踪总是有差距或滞后的,而且在切换发生时备用子系统才启动在线程序,因此温备用方式的切换时间虽快于冷备用方式,但还是比较慢,大约在几秒到几十秒之间。其优点是故障诊断和切换子系统构造简单,容易做成高可靠的设备,其成本也比较低。

3) 热备用方式(Hot Backup)

在热备用方式中,备用子系统和在线子系统运行完全同样的程序,形成完全并列的运行模式,所不同的,是备用子系统不对现场输出控制信号,处于一种“哑”状态。当在线子系统出现故障时,切换子系统将在线子系统的输出通路切断,同时接通备用子系统输出通路,这样就完成了切换过程。由于构成冗余结构的各个子系统处于完全同样的运行状态,因此切换过程可以缩短到毫秒级。但热备用方式的故障诊断和切换设备是相当复杂的,而且还要进行各个冗余的子系统间严格的运行同步,因此,其可靠性很难做得非常高,在很多时候,由冗余结构带来的可靠性提高又被切换设备拉下来了,反而得不偿失,而且其成本也相当高。因此,除非系统对故障切换时间有极其严格的要求,或在切换过程中不需要处理输出通路的切换,一般不采用热备用方式。

5.备用式冗余的无扰切换

所有备用式冗余结构,都存在切换的瞬间系统输出扰动(Disturbance)的可能,也就是双机的输出运算结果在切换前是不一致的,如果是开关量输出不一致,将导致阀门从开状态跳动到关状态,或从关状态跳动到开状态。如果是模拟量输出不一致的程度较大,现场阀门的开关会发生明显的波动。如何解决切换瞬间的扰动,是备用式冗余结构的关键问题。通常方法有以下两种:

1)数据周期拷贝法

由于主备模块都会几乎同时(最多相差一个控制周期)采集到所有输入类信息,所以切换扰动的原因不在于实时采集值的差异,而是与时间有关的变量在主备机上不同所致。所谓时间相关的变量,一类是事件型开关量输入,该类时间相当于电信号的上升沿事件或下降沿事件,比如人手指按了一下键盘,是“一去不复还”的信息,该类信息,有可能主机采集到了,而备机并没有采集到。相反,与事件型开关量对应的是状态型开关量,比如电源开关的状态,相当于电信号中的电平信号,状态的存活周期足以让主备机都采集到。另一类是变量累积值,比如PID的积分初值,还有定时器的计数值,这些值可能在主备机上存在不一致(比如说时钟差异或上电时间不一样导致)。总之,这两类与时间相关的变量在主备机上的不一致,直接导致了主备机切换的扰动。

数据周期复制法就是基于上述的分析提出的,其基本思路就是,将主机的时间相关变量,周期性的复制到备份机,并刷新备份机的对应变量的当前值。当然,如果控制器的能力足够强大,我们也可以不加区分地将主机的所有变量都复制到备份机,也是可行的,但往往数据量的增加是惊人的,一般来说99%的数据都对扰动没有影响。

理论上,数据周期复制法并不能保证绝对意义上的无扰,原因是在数据复制完成之前,如果现场状态刚好发生变化,并且此刻切换到备份机,是可能有扰动的。扰动的可能性受到数据复制周期的影响,复制周期越短,扰动的可能性越小。如果每个控制周期都复制一次数据,扰动的可能性就小到可以忽略不计。

2)主备运算同步法

主备运算同步法的切换无扰性能要优于数据周期复制法,其解决切换扰动的思路是:主备机的控制运算节拍保持同步,则双机的事件型变量和累计运算值都是相等的,其输出结果必然是相同的,切换时当然就可以无扰。

当然,即使采用同步法的系统,在备机上电或复位初始化时,也还是要复制一次主机的数据,然后才能进入同步运算,该过程称为重构。

6.表决冗余

备用式冗余主要解决的问题是系统的可用性,但是在许多安全性为首要要求的场合,是不能采用备用式冗余的,只能采用表决式冗余。

表决式冗余的基本思路是,所有冗余模块都同时运行,但多个模块的输出必须经过表决器比较后才能输出,一旦表决结果异常,将禁止输出或系统干脆导向安全态,甚至停止运行。所以表决式冗余要解决的是安全性而不是可用性。

常用的表决系统有双模表决冗余系统和三模表决冗余系统,或称为2取2表决系统和3取2表决系统。双模表决冗余的机理是:当两个模块输出相同并且正确的指令时,输出该控制信号,其他情况下禁止输出,并导向安全态。三模表决冗余的机理是:当三个模块中有两个或三个模块的输出相同并且正确的指令时,输出该相同的控制信号,其他情况下则禁止输出。其中当仅有两个模块输出相同时,第三个模块可以进行维修或自动进行重构后加入系统运行。三模表决冗余安全性与双模表决冗余系统相同,但可用性和可维护性却大大提高了。

在某些特殊应用中,为了进一步提高系统的可维护性,引入了两套双模表决系统主备切换的体系结构。该结构的特点是将备用式冗余和表决式冗余两种机制有机结合起来,如图7所示,也有人将这种方式称为Pair&Spare模式,当然这种结构的成本是最高的。在这种结构中,只要A机和B机中不同时各出现一个模块故障,系统就是可以继续安全运行的。

7.同构冗余和异构冗余

上节所说的冗余系统是由两个或两个以上具有相同功能的子系统进行并联以保证在出现单点失效时不丧失系统功能。在这里强调的是形成并联关系的子系统间功能的相同,而不关注其结构是否相同。在多数冗余系统中,都是采用相同功能且相同结构的子系统形成冗余,称为同构冗余,这样的系统比较简单,容易实现。但同构冗余的问题是,如果由于某种原因造成一个子系统的故障,那么同样的原因也有可能造成另外的子系统故障,这种情况称为“共因故障”。例如,无线通信子系统,如果因太阳黑子的活动造成电波传播受到干扰,那么同样的无线通信子系统也会受到干扰,在这种情况下,即使采取了冗余配置也无法保证系统正常运行。

图片

图 主备双模表决冗余系统

为避免共因故障,可采用功能相同,但实现功能所用的设备甚至设备的工作原理均不相同的子系统组成冗余配置,这样的冗余系统被称为异构冗余。如采用无线通信设备和有线通信设备组成冗余配置,无线通信设备可有效防止电波传播干扰造成的故障,而无线通信设备则可有效防止机械破坏造成的故障。因此异构冗余要比同构冗余具有更高的可靠性。但异构冗余的实现难度比较大,技术上比较复杂,而且成本较高。在冗余系统的设计中应该根据实际情况、可靠性需求和成本的约束进行适当的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/19867.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

a标签属性href的多种写法

众所周知,a标签的最重要功能是实现超链接和锚点。而且,大多数人认为a标签最重要的作用是实现超链接,其实不单单是实现超链接的方法,今天新起点博客就来整理下a标签中href的几种用法。 1、a href“[removed]js_method();” 这是常用…

Android aidl及binder基础知识巩固

作者:义华 1、什么是binder binder是android framework提供的,用于跨进程方法调用的机制,具有安全高效等特点。 我们知道,在 Android 系统中,每个应用程序都运行在一个独立的进程中,各个进程之间需要进行…

chatGPT提问,BGP内容

ChatGPT提问:提问框架 背景角色任务要求 动态路由:内部网关协议:如RIP ISIS OSPF 在同一个公司内部运行的路由协议 外部网关协议:如 BGP 在不同公司之间运行的路由协议 AS:自治系统 每个自治系统都有唯一的…

玩机搞机-----安卓全机型 ADB FAST 各种指令解析说明与操作【二】基础联机

安卓全机型 玩机 搞机 ADB FAST 各种指令解析说明与操作_adb线刷命令_安卓机器的博客-CSDN博客 今天对上个帖子不足的地方进行补正。方便友友进行基础的联机操作,很多时候我们用adb指令的时候会有各种奇奇怪怪的问题。例如同一个机型,同一个指令。有时候…

OpenCL编程指南-4.4矢量操作符

矢量操作符 如下描述了可用于矢量数据类型或矢量和标量数据类型组合的各类操作符。 算术操作符 算术操作符(加()、减(–)、乘(*)和除(/)),可以作用于内置整数、浮点标量和矢量数…

AWS 中的另外一种远程工具 AWS Session Manager

作者:SRE运维博客 博客地址:https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/230129126154/ 相关话题:https://www.cnsre.cn/tags/aws/ 背景需求 因为项目的安全性。为了避免项目的服务器暴露在公网中。很多时候我们…

Python时间模块:time和datetime的区别与用法

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 目录标题 前言一. Python中表示时间的两种方式:二. time三. datetime1. datetime.datetime2.datetime.timedelta 尾语 💝 一. Python中表示时间的两种方式: 时间戳:相对于197…

OpenCL编程指南-3.2OpenCL上下文

OpenCL上下文 上下文是所有OpenCL应用的核心。上下文为关联的设备、内存对象(例如,缓冲区和图像)以及命令队列(在上下文和各设备之间提供一个接口)提供了一个容器。正是上下文驱动着应用程序与特定设备以及特定设备之…

Echarts 热力图的详细配置过程

文章目录 一&#xff0c;配置过程二&#xff0c;具体实例 一&#xff0c;配置过程 引入Echarts库和热力图插件 <script src"https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src"https://cdn.jsdelivr.net/npm/…

实时聊天如何做,让客户眼前一亮(二)

让我们继续讨论一下如何利用SaleSmartly&#xff08;ss客服&#xff09;在网站中的实时聊天视图如何提供出色的实时聊天体验。 四、在实时聊天会话期间 让我们来看看我们可以确保尽可能的提高客户体验的各种方法&#xff0c;使用SaleSmartly&#xff08;ss客服&#xff09;时聊…

算法设计 || 第5题:钓鱼问题-北京大学网站在线算法题(贪心算法)

目录 &#xff08;一&#xff09;题目网址视频网址 &#xff08;二&#xff09;手写草稿思考 Part1: 慕课PPT Part2: 笨蛋的学习 &#xff08;一&#xff09;题目网址视频网址 北京大学网站在线算法题&#xff1a;1042 -- Gone Fishing (poj.org) 视频讲解&#xff08;北…

MYSQL基本操作

数据库的列类型 int&#xff1a;整型 用于定义整数类型的数据 float&#xff1a;单精度浮点4字节32位 准确表示到小数点后六位 double&#xff1a;双精度浮点8字节64位 char&#xff1a;固定长度的字符类 用于定义字符类型数据&#xff0c;固定10字节&#xff0c;如果你设定5字…

(转载)从0开始学matlab(第1天)—变量和数组

MATLAB 程序的基本数据单元是数组。一个数组是以行和列组织起来的数据集合&#xff0c;并且拥有一个数组名。数组中的单个数据是可以被访问的&#xff0c;访问的方法是数组名后带一个括号&#xff0c;括号内是这个数据所对应行标和列标。标量在 MATLAB 中也被当作数组来处理——…

实在智能与浙江工商大学官宣战略合作,共建人工智能联合实验室和实习基地

5月10日&#xff0c;实在智能与浙江工商大学正式官宣战略合作&#xff0c;并进行“人工智能联合实验室” “大学生实习实践基地”揭牌仪式。躬身入局共筑人工智能人才生态&#xff0c;这是实在智能和浙江工商大学的共同愿景&#xff0c;也是校企双方深度产学研融合、加速科技型…

【蓝桥杯国赛真题26】Scratch队列练习 少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch队列练习 一、题目要求 编程实现 二、案例分析 1、角色分析

【Linux】进程信号(中)

在上一个文章中&#xff0c;关于信号的产生&#xff0c;还有没补充完的&#xff0c;所以在这篇文章补充一下 文章目录 1.信号的产生硬件异常产生信号a/0问题验证为8号信号 野指针问题验证为11号信号 核心转储设置核心转储大小Core与Term的区别核心转储的作用 2.信号保存1. 概念…

np读取txt、csv文件的数据

目录 1、基础参数 2、参数详解 3、应用参数示例 机器学习中使用np.loadtxt()可以高效的导入数据&#xff0c;np.loadtxt()适合.txt文件和.csv文件。但是它默认读取float类型的值。 1、基础参数 numpy.loadtxt(fname, dtype, comments#, delimiterNone, convertersNone, s…

操作系统学习笔记(二)

目录 你如何理解“临界”这个词&#xff1f; 那你如何理解在计算机领域下的“临界”这个词呢&#xff1f; 如何理解计算机领域中的“同步”这个词呢&#xff1f; 你如何理解critical这个单词&#xff1f; 单标志法&#xff1a; 双标志先检查法 双标志后检查法&#xff0…

libevent高并发网络编程 - 05_libevent实现http客户端

文章目录 1 http客户端相关的APIevhttp_uri_parse()evhttp_uri_get_scheme()evhttp_uri_get_port()evhttp_uri_get_host()evhttp_uri_get_path()evhttp_uri_get_query()evhttp_connection_base_bufferevent_new()evhttp_request_new()evhttp_make_request()evhttp_request_get_…

图像动态裁剪

1. 背景 以两级级联模型为例&#xff0c;第一级目标检测模型用于检测人员&#xff0c;第二级目标检测模型用于检测手机、对讲机等。然后实际数据采集过程中&#xff0c;手机、对讲机这些设备并不在人员的一级检测框内&#xff0c;使得二级模型训练的样本较少。 二级目标检测模…