ESD 系统通信故障的故障安全软件实现
实现故障安全通信故障ESD系统架构的介绍。
引言
无论您运营的是小型水厂、污水处理厂、海上生产平台、管道系统,还是酿酒厂(商业性质的!),都会有系统来提供安全功能和关停操作。这些紧急关停系统(ESD)旨在确保流程进入已知的安全状态,而无需人工干预。这些系统可以有来自压力变送器、液位计、振动传感器、温度传感器等的输入设备,并且可以有控制阀门、继电器、接触器、警告灯、警报器等的输出;基本上,任何东西都可以进入系统,任何东西都可以从系统出去。
系统还需要以这样一种方式设计,即如果现场布线(即终端设备和系统之间的电缆)被切断,或者仪表发生故障,系统仍然会进入安全状态。
随着这些系统随着每一代现代技术的发展而演进,它们变得更大,可以处理数千个输入和输出设备,并且运行中间软件的部分现在可以分布在多个处理单元上,这些单元可以彼此相邻,也可以位于工厂的另一部分。
这现在带来了一个问题,当单个处理单元由于通信链路损坏而无法相互通信时,我们如何确保系统故障进入安全状态?可以通过工程设计系统来提高可靠性和可用性,例如包含在故障检测时热插拔的冗余组件,或者在不同的路径上提供多个通信路径,但是如果真的出现问题并且所有通信链路都已丢失怎么办?这时您就需要考虑在软件层面构建一个故障安全机制。本文希望解释真实系统中采用的基本原理。一个位于北海中部油气生产平台上的系统,如果一切都出了问题,您将无处可逃。
背景
有许多不同类型的系统,来自不同的制造商,它们都使用类似主题的各种变体,并使用不同的术语来描述相同的事物。在本文中,故障安全软件机制的实现内置于艾默生DeltaV分布式控制系统(DCS)中。系统是谁制造的并不重要,我们只关心这样的系统如何编程以应对通信故障。
所讨论的系统包含许多逻辑求解器。逻辑求解器是可编程元件,它读取和写入现场设备的输入和输出信号。该系统目前实际有9个逻辑求解器,它们都相互通信。每个逻辑求解器都分配了许多输入和输出,每个逻辑求解器还可以读取和写入彼此的输入和输出。该系统还可以将在完全不同的逻辑求解器中与实际连接的实际设备相关的任何给定输入或输出的软件。
该系统还实现了完全集成,这意味着过程安全系统(PSS)或ESD和过程控制系统(PCS)都包含在相同的硬件中。
我们不会深入研究具体的代码,而是通用模块和用于实现所需结果的逻辑。这使其更容易理解,并使这种理念可以移植到其他品牌的系统上。
我们开始吧?
什么是逻辑求解器
首先,让我们看看逻辑求解器的组件以及我们可以在硬件级别做些什么来提高系统的可靠性和可用性。下面的框图是系统上使用的典型逻辑求解器机柜
逻辑求解器采用多组件冗余构建。在检测到故障时,组件会自动从在线切换到备用。唯一的公共元素是连接现场设备的端子排。这意味着现场IO是单工的,但系统层面的一切都是双工的。
有一对中央处理器(CPU),它们是运行软件模块的大脑,并执行与现场输入/输出(IO)模块的所有通信,以及与系统其他部分的通信。如果发生硬件错误,它们会切换,有故障的那个会“下线”。这种切换是系统固有的,完全透明,系统不会检测到任何影响。在线CPU可以在服务时拔出,备用CPU将自动接管任务。
CPU连接到IO模块连接的载体(或背板)。IO模块也是冗余对,就像CPU一样,在检测到故障时会热插拔。每个载体包含4对(8个卡),每个逻辑求解器最多可包含8个载体,尽管我们选择将其限制为6个。每对冗余IO模块有8个通道。这意味着对于一个完全冗余的逻辑求解器,我们可以连接6x4x8或192个现场设备。
每个CPU还有两个网络连接,一个连接到主网络,一个连接到辅助网络。如果一个CPU失去其网络连接,它将切换到其冗余对。
还有冗余电源,但这与本文无关,为了清晰起见未显示。
因此,如您所见,硬件中已经内置了高水平的冗余。
那网络呢
下图显示了网络配置。仅显示了9个逻辑求解器中的4个,并且实际上,每台服务器都有一对网络连接,但我们只对逻辑求解器感兴趣,因此为了减少混乱,一些服务器网络链接已被省略。
网络拓扑实际上是一种双星形配置,一个用于主网络,一个用于辅助网络。同样,交换机冗余意味着系统的一整半可以丢失,并且一切都将继续正常运行。此外请记住,每个逻辑求解器有2个主网络和2个辅助网络,实际上,您只需要一个活动网络连接到每个逻辑求解器,事情就会继续工作。
工程和操作员工作站以及服务器都连接到同一个网络。
还在吗?是时候谈谈软件了
软件的结构非常重要,既为了清晰,也为了可维护性。由于我们正在研究ESD系统,让我们看一个非常基本的例子。一个压力变送器提供一个信号,当它检测到高高压或低低压时,该信号会导致阀门打开。系统中还有许多其他设备可以导致阀门打开。此外,操作员如果选择,可以打开和关闭此阀门。
等等,你说一个基本示例?是的,相信我;一切都会变得非常清楚。
我们所做的是将功能需求分解成其组成部分。就像您进行软件编程一样。这给了我们一个输入模块、一个逻辑模块和一个输出模块。让我们来看看每一个并进行讨论。
输入模块
现场输入块是读取真实世界设备的地方;它将一个值传递给报警块;设定点值与过程值进行比较,如果设定点超出,则会发出警报,并根据需要将逻辑1发送到HH和LL跳闸参数。覆盖通常是关闭的(逻辑0),非门将意味着逻辑1通常位于与门上,因此允许逻辑信号到达HH和LL跳闸参数。如果操作员应用了覆盖,逻辑0将出现在与门上,阻止信号到达跳闸参数,但仍然允许警报功能;毕竟,即使操作员不希望发生任何执行操作,他们仍然需要知道跳闸条件存在。
值得注意的是,在此阶段,此模块已完成其工作,现在由任何下游模块读取跳闸参数处的逻辑状态;这也意味着任意数量的其他模块可以利用此信息,并且可以根据需要添加和删除,而无需修改输入模块。
逻辑模块
逻辑模块(通常称为原因和效应或C+E)负责在给定一组输入条件的情况下应发生哪些输出事件,并且任意数量的输出模块或其他逻辑模块可以挂载在此模块上。因此,此模块将读取上游模块,执行必要的逻辑(在此示例中是一个简单的或),并将此传递给下游块(在此示例中是一个锁存器)。锁存器按其字面意思执行,并在输出参数上将逻辑状态保持在逻辑1,直到操作员决定他想重置跳闸条件。如上例所示,其他C+E模块可以提供参考参数供这些逻辑输入读取,就像变送器提供HH和LL状态供读取一样。
逻辑在健康状态下始终处于逻辑0状态。这意味着可以在系统在线的情况下修改逻辑,从而降低中断和意外停机的风险。
输出模块
输出模块将逻辑再次连接到真实世界。如您所见,有许多输入参数,并且遵循约定,这些参数是从上游模块读取的,而不是由上游模块写入的。或门的配置确保ESD逻辑和通信故障跳闸逻辑将始终“胜过”操作员的需求。
现在我们开始看到我们所来的目的,通信故障跳闸终于出现了。我们将在稍后查看通信故障机制,但在现阶段,您只需要知道它被放置在输出模块中,作为其逻辑的独立输入,以完全将其与其他所有操作员和原因与效应需求隔离开来。并且或门的配置意味着,无论C+E或操作员想要什么,故障安全通信故障跳闸将始终获胜并最终控制现场的输出设备。
如上述示例所述,C+E模块可以根据系统中的需要进行级联。您可能有一个非常高级别的全面关停逻辑,它会级联到链中较低的工厂单元,例如,单个泵的逻辑。下图展示了一个基本的级联可能是什么样子
但是通信故障检测呢?
好的,我们现在就来看!
如开头所述,系统中可以有任意数量的逻辑求解器(受制造商规范限制),每个逻辑求解器都会检查每个其他逻辑求解器,以查看它是否处于活动状态,或者像我们一样,是否有心跳。我们还注意到在每个输出模块中都存在通信故障跳闸参数。
因此,我们需要做的是放置一个模块,该模块监视所有其他逻辑求解器的心跳,同时生成自己的心跳。我们还需要确保每个输出模块都引用位于承载输出的逻辑求解器内的通信故障模块。
如果我们回顾一开始的示例系统,该系统有4个逻辑求解器,那么下面的模块就是我们将放置在逻辑求解器#1中的模块
信号发生器产生一个方波输出,该输出由其他逻辑求解器从心跳参数读取。
下半部分包含参数引用,用于读取系统上所有其他逻辑求解器的心跳。心跳通过一个正边缘触发器,该触发器向保持计时器发送逻辑1。保持计时器不断尝试计数到30秒(或您选择的任何时间)。每次检测到心跳时,保持计时器都会重置为0。但是,如果保持计时器达到其目标,则逻辑1将发送到通信故障参数,前提是覆盖未开启。覆盖用于对系统进行维护。现在通信故障参数处于逻辑1,所有引用此参数的其他模块将进入故障安全状态,如上面的输出模块示例所示。
系统上的最高级别C+E模块也将读取此位,这样系统不仅将其所有输出触发到故障安全状态,而且还会启动一个在整个系统中锁存的逻辑关停,这意味着当通信恢复时,一切都保持在跳闸状态,直到操作员选择执行系统复位。
现在,这不算太糟糕,不是吗?我希望您喜欢逻辑求解器和实施故障安全策略的简要介绍。
请随时在下方留下评论,或在DCS领域中您想阅读的任何其他主题。
感谢阅读...
历史
- 2010年11月4日 - 文章首次发布。