物理基础设施的控制设备故障会对人员、环境和其他物理基础设施造成无法弥补的损害。因此,工程师们开发了各种针对事故和自然原因的保护,包括安全系统、保护、故障检测和鲁棒性。

安全:控制系统通用安全标准(IEC 61508)推荐的基本原则是从危险和风险分析中获得要求,包括给定的可能性故障,以及故障的后果,然后设计系统,以便在考虑所有故障原因时满足安全要求。该通用标准已成为特定行业中许多其他标准的基础,例如,过程工业(炼油厂,化学系统等)。使用IEC 61511标准设计安全仪表系统(SIS)。SIS的目标是防止事故发生,例如,在高压传感器发出警报时关闭燃油阀。更一般的纵深防御安全分析使用保护层[26],其中危险通过一组从(1)基本低开始的层来减轻向监测站发送优先警报,以(2)激活SIS系统,(3)缓解保障措施,例如实物保护系统(例如,堤坝)和工厂应急响应/疏散的组织响应协议。图2说明了这些安全保护层。
保护:与安全相关的概念是电网中的保护。这些保护系统包括:
•发电机保护:当系统频率过低或过高时,发电机将自动与电网断开,以防止发电机永久损坏。
•在频率减载(UFLS)下:如果电网的频率太低,将激活受控减载。配电系统部分的断开以受控方式完成,同时避免医院等安全关键负载的中断。UFLS被激活是为了增加电网的频率,并防止发电机断开。
•过流保护:如果线路中的电流过高,将触发保护继电器,打开线路,防止损坏线路两侧的设备。
•过压/欠压保护:如果总线电压过低或过高,将触发电压继电器。
可靠性:虽然安全和保护系统试图防止事故发生,但其他方法即使在系统发生故障后也试图保持运行。例如,电气系统的设计和操作满足所谓的N-1安全标准,这意味着系统可能会失去其N个组件中的任何一个(例如一台发电机、变电站或输电线路),并继续运行,产生的瞬变消失以产生令人满意的新稳态运行条件,这意味着电力的可靠输送将继续下去。
容错:一种类似但数据驱动的检测和预防故障的方法属于故障检测、隔离和重新配置(FDIR)[27]。使用基于模型的检测系统或纯数据驱动的系统检测异常;该过程的这一部分也称为错误数据检测。隔离是确定哪个设备是异常源的过程,重新配置是从故障中恢复的过程,通常是通过移除故障传感器(如果系统中有足够的传感器冗余)。
鲁棒控制:另一个相关概念是鲁棒控制[28]。鲁棒控制处理控制系统运行中的不确定性问题。这些未知操作条件的来源可能来自环境(例如,飞机运行中的阵风)、传感器噪声、工程师未建模的系统动力学或系统组件随时间推移的退化。鲁棒控制系统通常采用最不利的工作条件,然后设计控制算法,使系统即使在最坏的不确定性情况下也能安全运行。
机制不足以提供安全性:在CPS安全成为主流领域之前,对于安全性,保护,容错和强大的控制是否足以保护CPS免受网络攻击存在很多困惑。然而,正如十多年前所争论的那样[5],这些保护系统通常假设独立的、非恶意的故障,而在安全方面,不正确的模型假设是对手绕过任何保护的最简单方法。自那时以来,有几个例子表明为什么这些机制不提供安全。例如刘等人。[29]展示了电网中的故障检测(不良数据检测)算法如何被发送与合理一致的错误数据的对手绕过。电网配置,但同时从实际值到足以给系统带来问题。动态系统(具有“时间”组件的系统)的类似示例考虑了隐形攻击[30]。这些攻击会在传感器中注入小的错误数据,以便故障检测系统不会将它们识别为异常,而是在很长一段时间内时间,这些攻击可能会将系统推向危险的操作条件。同样,电网中的N-1安全标准假设如果发生故障,所有保护设备将按配置做出反应,但是攻击者可以更改电网中保护设备的配置。在这种情况下,电网N-1故障的结果将是完全出乎意料的,因为设备将以意想不到的方式做出反应。由电网运营商,导致大容量电力系统的潜在级联故障。最后,在第1.3.1节中,我们将描述现实世界的攻击如何开始针对其中一些针对事故的保护;例如,Triton恶意软件专门针对过程控制系统中的安全系统。
安全与安全:添加新的安全防御可能会带来安全问题,例如,发电厂因计算机在补丁后重新启动而关闭[31]。软件更新和修补可能会违反安全认证,防止未经授权的用户访问CPS也可能阻止急救人员在紧急情况下访问系统(例如,护理人员可能需要访问防止未经授权的连接的医疗设备)。安全解决方案在设计和部署新的安全机制时应考虑这些CPS安全问题。
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
我正在尝试将以下SQL查询转换为ActiveRecord,它正在融化我的大脑。deletefromtablewhereid有什么想法吗?我想做的是限制表中的行数。所以,我想删除少于最近10个条目的所有内容。编辑:通过结合以下几个答案找到了解决方案。Temperature.where('id这给我留下了最新的10个条目。 最佳答案 从您的SQL来看,您似乎想要从表中删除前10条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:基于MurifoX的版本:Table.where(:id=>Table.order(:id).
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
我有一个ActiveRecord对象,我想在不对模型进行永久验证的情况下阻止它被保存。您过去可以使用errors.add执行类似的操作,但它看起来不再有效了。user=User.lastuser.errors.add:name,"namedoesn'trhymewithorange"user.valid?#=>trueuser.save#=>true或user=User.lastuser.errors.add:base,"myuniqueerror"user.valid?#=>trueuser.save#=>true如何在不修改用户对象模型的情况下防止将用户对象保存在Rails3.2中
这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什
默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同