CN109491842A - 用于故障安全计算***的模块扩展的信号配对 - Google Patents

用于故障安全计算***的模块扩展的信号配对 Download PDF

Info

Publication number
CN109491842A
CN109491842A CN201811055220.9A CN201811055220A CN109491842A CN 109491842 A CN109491842 A CN 109491842A CN 201811055220 A CN201811055220 A CN 201811055220A CN 109491842 A CN109491842 A CN 109491842A
Authority
CN
China
Prior art keywords
module
signal
health
cpu
fsc
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.)
Granted
Application number
CN201811055220.9A
Other languages
English (en)
Other versions
CN109491842B (zh
Inventor
马丁·彼得·约翰·科尔内斯
什洛莫·普里-陶尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Smart Embedded Computing Inc
Original Assignee
Artesyn Embedded Computing Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Artesyn Embedded Computing Inc filed Critical Artesyn Embedded Computing Inc
Publication of CN109491842A publication Critical patent/CN109491842A/zh
Application granted granted Critical
Publication of CN109491842B publication Critical patent/CN109491842B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0745Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an input/output transactions management context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • G06F11/1616Error detection by comparing the output signals of redundant hardware where the redundant component is an I/O device or an adapter therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1633Error detection by comparing the output of redundant processing systems using mutual exchange of the output between the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1654Error detection by comparing the output of redundant processing systems where the output of only one of the redundant processing components can drive the attached hardware, e.g. memory or I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明公开了一种用于故障安全计算***的模块扩展的信号配对。一种***包括:中央处理单元(CPU)、第一输入/输出(I/O)模块、以及第二IO模块。第一I/O模块包括可操作地连接至CPU的第一模块健康控制器。第二I/O模块包括可操作地连接至第一模块健康控制器和CPU的第二模块健康控制器。第一模块健康控制器和第二模块健康控制器中的一个被配置为断言配对的模块健康信号,配对的模块健康信号指示第一I/O模块和第二I/O模块是健康的。

Description

用于故障安全计算***的模块扩展的信号配对
技术领域
本公开涉及容错的故障安全(failsafe)计算机***。
背景技术
该部分提供了与本公开相关的、并非必须是现有技术的背景信息。
本文中提供的背景说明是为了通常展现本公开上下文的目的。就在该背景技术部分中所述的程度而言,当前称作发明人的工作、以及可以在递交时另外不被承认为现有技术的说明书的各方面并未明确地或隐含地承认作为对抗本公开的现有技术。
诸如铁路***的外部安全***可以包括被配置为实施安全应用的容错故障安全计算机***。容错故障安全计算机***可以包括电气和逻辑地耦接的多个硬件部件以便于实施安全应用。安全应用选择性地与安全关键硬件和软件通信。安全关键硬件和软件被配置为控制铁路***的安全相关功能。
例如,行驶在铁路***上的火车包括制动***。制动***被配置为实施至少一个安全相关功能,诸如制动功能。制动***包括制动器以及被配置为驱动制动器的软件。软件接收指令以驱动制动器。例如,火车的操作者可以操作制动***用户界面以便于指示软件来驱动制动器。周期性地,可以由铁路***的故障部件生成用于驱动制动器的错误指令。因此,需要被配置为验证由外部安全***接收的指令的容错故障安全计算机***。
此外,当外部安全***网络继续扩展范围和复杂性时,在该网络之上传送的数据的量以同样方式增大。传统的容错故障安全计算机***频繁地缺乏用以处理增大的数据吞吐量的I/O能力。此外,随着***增大复杂性和尺寸以满足增长的I/O需求,追踪容错故障安全计算机***的分立部件的健康变得更具挑战性。因此,需要被配置为解决一个或多个前述问题的容错故障安全***。
发明内容
该部分提供了本公开的一般概述,并且不是其全部范围或者所有特征的全面公开。
在特征中,提供了一种***。该***可以包括中央处理单元(CPU),第一输入/输出(I/O)模块,以及第二I/O模块。第一I/O模块可以包括可操作地连接至CPU的第一模块健康控制器。第二I/O模块可以包括可操作地连接至第一模块健康控制器和CPU的第二模块健康控制器。第一模块健康控制器和第二模块健康控制器可以被配置为断言配对的模块健康信号至CPU,配对的模块健康信号指示第一I/O模块和第二I/O模块是健康的。
在另一特征中,所断言的配对的模块健康信号可以包括重复的、预定的位模式。
在又一特征中,CPU被可以被配置为当接收到所断言的配对的模块健康信号时,将第一I/O模块和第二I/O模块置于以下状态中的一个:工作状态或备用状态。
在一个特征中,第一模块健康控制器和第二模块健康控制器的一个可以被配置为:如果第一I/O模块和第二I/O模块中的至少一个是不健康的,则去断言配对的模块健康信号。在前述特征的一个示例中,所去断言的配对的模块健康信号可以包括低信号。在前述特征的另一示例中,CPU可以被配置为当接收到所去断言的配对模块健康信号时,将第一I/O模块和第二I/O模块置于故障安全状态。
在特征中,***也可以包括可操作地连接至第一模块健康控制器、第二模块健康控制器和CPU的背板。背板可以被配置为在第一模块健康控制器与第二模块健康控制器之间传送信号。在前述特征的一个示例中,信号可以包括以下中的至少一个:对等模块当前输出(PMPO)信号、对等模块当前输入(PMPI)信号、模块健康配对输出(MHPO)信号、以及模块健康配对输入(MHPI)信号。
在一个特征中,第一模块健康控制器和第二模块健康控制器中的每一个可以被配置为接收PAIR信号,该PAIR信号指示第一I/O模块和第二I/O模块是否应该单独地断言第一I/O模块和第二I/O模块各自的健康状态或以配对方式断言第一I/O模块和第二I/O模块各自的健康状态。
在其他特征中,方法包括,通过第一输入/输出(I/O)模块接收PAIR信号,该PAIR信号指示第一I/O模块是否应该断言配对的模块健康信号或单个模块健康信号。所配对的模块健康信号可以指示第一I/O模块和可操作地连接至第一I/O模块的第二I/O模块两者的模块健康,而单个模块健康信号可以指示仅第一I/O模块的模块健康。方法也可以包括,响应于指示第一I/O模块应该断言配对的模块健康信号的PAIR信号,通过第一I/O模块断言配对的模块健康信号。此外,方法可以包括,响应于指示第一I/O模块应该断言单个模块健康信号的PAIR信号,通过第一I/O模块断言单个模块健康信号。
在一个特征中,方法可以包括响应于第一I/O模块断言配对的模块健康信号,将第一I/O模块和第二I/O模块置于以下状态中的一个:工作状态或备用状态。
在另一特征中,方法可以包括,响应于确定第一I/O模块和第二I/O模块中的至少一个是不健康的,通过第一I/O模块去断言配对的模块健康信号。
在一个特征中,方法可以包括响应于第一I/O模块去断言配对的模块健康信号,将第一I/O模块和第二I/O模块置于故障安全状态。
在另一特征中,方法可以包括在第一I/O模块与第二I/O模块之间传送信号。在前述特征的一个示例中,信号可以包括以下中的至少一个:对等模块当前输出(PMPO)信号、对等模块当前输入(PMPI)信号、模块健康配对输出(MHPO)信号、以及模块健康配对输入(MHPI)信号。
在特征中,方法可以包括响应于第一I/O模块断言单个模块健康状态,将第一I/O模块置于以下状态中的一个:工作状态或备用状态。在前述特征的一个示例中,断言的单个模块健康信号是包括重复的、预定的位模式。
根据本文所提供的说明书,适用性的其他方面将变得明显。在此概述中的说明和具体示例旨在仅为了说明目的并且不意在限制本公开的范围。
附图说明
本文中描述的附图仅是为了说明选择的实施例且并非所有可能的实施方式的目的,并且并非意在限定本公开的范围。
图1是根据本公开的原理的容错故障安全计算机***的功能框图;
图2是根据本公开的原理的故障安全机架的功能框图;
图3是根据本公开的原理的基于任务的投票***的功能框图;
图4是图示根据本公开的原理的基于任务的投票计算机操作方法的流程图;
图5是根据本公开原理的用于安全应用的扩展箱的功能框图;
图6是根据本公开原理的包括扩展箱的容错故障安全计算机***的功能框图;
图7是图示根据本公开的原理的切换主动计算机***的方法的流程图;
图8是根据本公开的原理的扩展箱的后变换模块的功能框图;
图9是根据本公开的原理的包括被配置用于信号配对的I/O模块的计算机***(诸如扩展箱)的功能框图;
图10是图示根据本公开的原理的被配置用于信号配对的示例性I/O模块的逻辑的状态图;
图11是图示根据本公开的原理的被配置用于信号配对的示例性I/O模块的逻辑的表;
图12是图示根据本公开的原理的示例性动态模块健康信号的图和对应表格;并且
图13是图示根据本公开的原理的配对I/O模块健康信号的流程图。
贯穿附图的各个视图,对应的附图标记指示对应的部件。
具体实施方式
现在将参照附图更充分地描述示例实施例。
现在参照图1,示出了示例性容错故障安全计算机***100的功能框图。***100被设置为与安全应用交互。例如,***100设置为与通过非限定性示例方式关联铁路***的安全关键硬件和软件通信。安全关键硬件和软件控制铁路***的安全相关部件。例如,安全关键硬件可以耦接至在铁路***上运行的火车的制动***。进一步,***100可以能够根据工业公认的安全标准被证明合格。
安全关键硬件从安全关键软件接收数据元以驱动制动***的制动器。***100与安全关键硬件和软件交互以确保安全关键硬件和软件根据预定的操作标准而操作。应该理解,尽管仅描述了火车的制动***,但本公开的原理适用于任何安全关键硬件和软件。对于本文中所述实施例的其他可能应用,包括但不限于航空***的部件、医疗***的部件、石油和天然气控制***的部件、智能电网***的部件、以及各种制造***的部件。
在一些实施方式中,***100从诸如铁路***的外部安全***接收多个输入数据包。***100被配置为处理多个输入数据包并将多个输出数据包通信传送至外部安全***的安全相关部件。例如,***100确定多个输入数据包中的第一数据包是否是合法数据包。当***100确定第一数据包是合法数据包时,***100将输出数据包传送至铁路***的至少一个安全相关部件。
第一数据包包括将要由铁路***的至少一个安全相关部件对其作用的数据元。数据元可以包括传感器数据和/或输入/输出(I/O)点状态。至少一个安全相关部件可以是耦接至在铁路***上运行的火车的制动器。应该理解,尽管仅描述了外部安全***的安全相关部件,但第一数据包可以包括将要由外部安全***的非安全相关部件对其作用的数据元。数据元根据传输协议而格式化。例如,铁路***被配置为根据预定打包标准将数据元打包成可传输的数据包。铁路***随后根据传输协议传输多个输入数据包。
***100被设置为根据传输协议接收传送的数据包。进一步,***100被配置为解释预定的打包标准。***100随后从第一数据包提取数据元并且基于数据元生成输出数据包。输出数据包包括基于数据元的指令集。尽管仅讨论了指令,但输出数据包也可以包括用于控制I/O的操作指令、用于读取输入以便于收集信息的请求、健康消息通信、用于进程间通信的请求、或其他合适要素。指令集包括指示安全关键硬件和软件中的至少一个以执行过程的至少一个指令。
例如,指令集可以指示安全关键软件以执行制动过程。制动过程包括硬件制动指令。硬件制动指令被传送至安全关键软件。安全关键硬件执行制动指令。例如,安全关键硬件实施制动。
***100确定是否将输出数据包和数据元传送至安全关键硬件和软件。例如,***100确保多个输入数据包中的每一个满足预定的安全标准。预定的安全标准包括确定铁路***是否根据预定的操作标准集而操作。***100验证多个输入数据包中的每一个是由铁路***100有意地传输的。仅作为示例,铁路***可以传输由于铁路***内的硬件或软件故障而导致的错误的输入数据包。
安全关键硬件和软件响应于来自铁路***的操作者的命令而接收多个输入数据包中的第一数据包。安全关键硬件和软件接收多个输入数据包中的由于铁路***中的故障而导致的第二数据包。仅通过非限定性示例的方式,铁路***中的故障可以包括:诸如由于延长暴露至热或湿气而导致的变坏的电连接的硬件故障。安全关键硬件和软件将包括第一数据包和第二数据包的多个输入数据包传送至***100。***100被配置为确定多个输入数据包中的每一个是否作为铁路***中的故障的结果而由安全关键硬件和软件接收。
当***100响应于来自操作者的命令而确定接收了多个输入数据包中的一个输入数据包时,***100生成与所接收的输入数据包相对应的输出数据包。例如,***100基于第一数据包生成第一输出数据包。第一输出数据包包括与第一数据包内的数据元相对应的指令集。当***100确定第一数据包是合法数据包时,***100将第一输出数据包传送至安全关键硬件和软件。例如,***100响应于来自操作者的命令而确定接收了第一数据包。***100将第一输出数据包传送至安全关键硬件和软件。安全关键硬件和软件执行在第一输出数据包中所包括的指令集。
相反地,当***100响应于铁路***内的故障而确定接收了多个输入数据包中的一个数据包时,***100不将输出数据包传送至安全关键硬件和软件。例如,***100确定由于铁路***中的故障而接收了第二数据包。***100不将与第二数据包相对应的输出数据包传送至安全关键硬件和软件。因此,安全关键硬件和软件不执行与第二数据包中所包括数据元相对应的指令。
进一步,***100基于确定在铁路***内发生故障而生成故障指示。以该方式,首先由***100验证由安全关键硬件和软件执行的数据元。该验证确保铁路***根据预定的安全标准来操作。
在一些实施方式中,***100接收多个输入数据包中的第一数据包。同时,***100接收多个输入数据包中的第二数据包。***100随后对第一数据包和第二数据包执行投票逻辑。投票逻辑可以实施为二选二(2oo2)***。以下更详细解释2oo2投票逻辑。***100确定第一数据包和第二数据包是否相同。当***100确定第一数据包和第二数据包相同时,***100生成第一输出数据包并将第一输出数据包传送至安全关键硬件和软件中的至少一个部件。
至少一个部件随后执行在第一输出数据包内所包括的操作数据元。相反地,当第一数据包和第二数据包不相同时,***100将***100或铁路***的至少一个部件标识为故障。应该理解,尽管描述了铁路***,但本公开的原理适用于任何外部安全***。
***100还生成安全指示。安全指示可以是***100内的或者安全关键硬件和软件内的故障的指示。进一步,***100指示至少一个部件以在预定的安全状态下操作。例如,安全状态可以包括被设置为维持铁路***的安全操作环境的安全状态数据元的集合。
安全状态数据元包括指示铁路***操作在确保铁路***的整体安全的预定操作模式下。仅例如,预定操作模式包括使得运行在铁路***上的火车停车。在一些实施方式中,安全状态包括禁用所有安全相关通信接口。例如,操作在安全状态下的故障安全计算机不能够与安全关键硬件和软件通信。以该方式,操作在安全状态下的故障安全计算机不能够不正确地指示安全关键硬件和软件。
***100包括主动故障安全机架(FSC)104和备用FSC 108。为了提高***100的可应用性和可靠性,主动FSC 104和备用FSC 108是冗余FSC。例如,主动FSC 104被配置为执行备用FSC 108的任何和所有操作。以该方式,当主动FSC 104和备用FSC 108中的一个遇到硬件或软件故障时,主动FSC 104和备用FSC 108中的另一个被配置为替代故障FSC而操作。
主动FSC 104实施二选二(2oo2)投票架构,其检测投票失配并当发生投票失配时执行故障安全操作。2oo2投票架构包括双冗余处理和投票子***。冗余处理和投票子***对进入或离开主动FSC 104的数据包投票。例如,主动FSC 104接收多个输入数据包。主动FSC 104接收多个输入数据包中的第一数据包的两个副本。
主动FSC 104确定第一数据包的合法性。主动FSC 104基于确定第一数据包是否合法而连续地生成第一健康状态信号和第二健康状态信号。在一些实施方式中,连续地生成信号可以包括将信号设置为第一预定值。连续地生成的信号随后维持在第一预定值直至信号被去断言(de-asserted)为第二预定值。
主动FSC 104比较第一数据包的两个副本中的每一个副本。当两个副本相同时,主动FSC 104确定第一数据包是合法的。当主动FSC 104确定第一数据包是合法的时,主动FSC104连续地生成第一健康状态信号和第二健康状态信号。第一健康状态信号和第二健康状态信号可以被断言(asserted)为第一值。在一些实施方式中,第一值等于1。在另一实施方式中,第一值可以是字符串,该字符串指示FSC 104是健康的。
相反地,当主动FSC 104确定第一数据包的两个副本不相同时,主动FSC 104去断言第一健康状态信号和第二健康状态信号。应该理解,第一健康状态信号和第二健康状态信号可以去断言为第二值。例如,第二值可以等于0。在另一实施方式中,第二值可以是字符串,该字符串指示FSC 104是不健康的。如以下更详细所述,主动FSC 104包括第一处理器和第二处理器。当第一处理器确定第一数据包的副本合法时,第一处理器连续地生成第一健康状态信号。类似地,当第二处理器确定第一数据包的第二副本合法时,第二处理器连续地生成第二健康状态信号。
主动FSC 104将第一健康状态信号和第二健康状态信号传送至***100。***100监控第一健康状态信号和第二健康状态信号以确定主动FSC 104是否是健康的。例如,当***100接收第一健康状态信号和第二健康状态信号时,***100确定主动FSC 104是健康的。相反地,当***100未接收到第一健康状态信号和第二健康状态信号中的一个时,***100确定主动FSC 104不是健康的。
如以下更详细所述,***100指示主动FSC 104以操作在安全状态下,以便于维持***100的安全性。应该理解,尽管仅关于被去断言的第一状态信号和第二状态信号讨论了投票失配,但***100内的任何硬件或软件故障可以引起第一状态信号和第二状态信号中的一个被去断言。健康状态信号可以指示***100正根据预定操作标准而操作。以该方式,健康状态信号指示***100是健康的。
当主动FSC 104确定第一数据包的两个副本不相同时,主动FSC 104确定已经出现了投票故障。主动FSC 104基于确定已经出现了投票故障而生成故障信号。故障信号指示***100内检测到的故障。故障可以是由于***100内的或外部安全***的硬件或软件故障而导致的。为了可应用性原因,如果主动FSC 104遇到硬件或软件故障,***100强制主动FSC104成为预定安全状态。备用FSC 108随后作为主动FSC操作。
主动FSC 104和备用FSC 108中的每一个可以包括多个通信链路。通信链路包括但不限于上行链路、下行链路和用户接口。上行链路是至较高级设备的双向通信信道。较高级设备可以是在整个***架构中所包括的***硬件。例如,较高级设备可以是铁路***的铁路制动***的部件。
下行链路是至较低级硬件的双向通信信道。例如,较低级硬件可以包括与较高级设备通信的交换器和继电器。下行链路可以遵循任何合适的硬件标准而实施。例如,下行链路可以实施为RS-232、RS-422、RS-485、CAN、MVB、以太网、以太网HSR环、或其他合适的技术。用户界面是被设计为允许***100的用户访问***100的部件和子***的界面。仅例如,用户界面可以实施为多个发光二极管(LED)。
通信链路与在***100外部的硬件部件和软件应用通信。进一步,***100被配置为接收输入并将输出传送至现场工程师。例如,现场工程师可以通过与***100的用户界面通信而选择性地配置***100。
主动FSC 104和备用FSC 108中的每一个被设置为执行健康和安全应用程序。例如,主动FSC 104和备用FSC 108包括存储器和处理器。健康和安全应用程序可以是装载至主动FSC 104和备用FSC 108的存储器中的软件。随后,健康和安全应用程序由主动FSC 104和备用FSC 108的处理器执行。
健康和安全应用程序监控并控制主动FSC 104和备用FSC 108。例如,健康和安全应用程序生成多个健康信号。多个健康信号可以包括但不限于模块健康信号和屏蔽信号。例如,健康和安全应用程序基于主动FSC 104中的故障而生成多个信号。健康和安全应用程序是被设计为检测并通过强制主动FSC 104或备用FSC 108中的一个至安全状态而对故障做出响应的功能安全子***。
应该理解,健康和安全应用程序可以包括在外部安全***上执行的任何安全应用程序。这可以包括在由铁路***的硬件和软件执行数据元的集合之前确保数据元的集合的合法性和安全性。当健康和安全应用程序检测到***100中的故障时,健康和安全应用程序还被配置为确保铁路***操作在预定安全状态。
主动FSC 104和备用FSC 108中的每一个包括处理子***。主动FSC 104处理子***包括主中央处理器(CPU)116a和检验器CPU 120a。类似地,备用FSC 108处理子***包括主CPU 116b和检验器CPU 120b。主CPU 116a和主CPU 116b中的每一个被配置为是相同的。类似地,检验器CPU 120a和检验器CPU 120b中的每一个被配置为是相同的。以该方式,主CPU 116a、主CPU 116b、检验器CPU 120a以及检验器CPU 120b采取动作以提高***100的可应用性和可靠性。
为了监控并控制***100的整体健康和安全性,主CPU 116a和检验器CPU 120a也被配置为是相同的。例如,主CPU 116a和检验器CPU 120a执行相同的软件并实施相同的处理功能。主CPU 116a和检验器CPU 120a被配置为执行相同的功能,以便于维持安全关键硬件和软件的完全硬件故障和错误检测覆盖,并允许以正确序列对输出数据包投票。
在一些实施方式中,主CPU 116a从铁路***的安全关键硬件或软件中的至少一个接收执行任务的请求。执行任务的请求是基于由安全关键硬件和软件从外部安全***的操作者接收的命令。例如,铁路***的操作者可以命令运行在铁路***上的火车提高速度。操作者可以驱动火车内的物理杠杆。物理杠杆被设置为生成指示提高火车的速度的命令的信号。信号被传送至安全关键硬件和软件。
在执行命令之前,安全关键硬件和软件将安全相关任务传送至***100。***100被配置为解释信号并且确定与信号相关联的所请求的任务。***100随后确定所请求的任务是否指示安全相关任务。例如,所请求的任务可以是安全相关任务或非安全相关任务。在一个示例中,非安全相关任务包括指示安全关键硬件和软件以返回在铁路***内运行的火车的当前状态的指令。在另一示例中,安全相关任务包括指示安全关键硬件和软件以提高火车的速度的指令。
***100比较所请求的任务与预定任务的列表。***100基于预定任务而确定所请求的任务是否是安全相关的。当***100确定所请求的任务是安全相关任务时,***100生成与所请求的任务相对应的数据包。应该理解,尽管本文中仅描述了安全相关任务,但***100可以从任何任务生成数据包。***100将数据传送至主CPU 116a。主CPU 116a和检验器CPU 120a两者被配置为在安全关键硬件和软件执行所请求的任务之前验证数据包的合法性。例如,执行任务的请求可以是多个输入数据包中的一个。
同时,检验器CPU 120a接收与所请求的任务相对应的同一数据包的副本。主CPU116a和检验器CPU 120a中的每一个被配置为将数据包的副本传送至主CPU 116a和检验器CPU 120a中的另一个。在主CPU 116a指示安全关键硬件和软件以执行所请求的任务之前,主CPU 116a和检验器CPU 120a比较由主CPU 116a和检验器CPU 120a中的每一个所接收的数据包。例如,主CPU 116a和检验器CPU 120a对数据包执行2oo2投票。
当数据包是相同的时,主CPU 116a指示安全关键硬件和软件以执行所请求的任务。例如,主CPU 116a和检验器CPU 120a生成与所请求的任务相关联的输出数据包。当投票成功(即数据包是相同的)时,主CPU 116a将输出数据包传送至安全关键硬件和软件以执行所请求的任务。
输出数据包可以包括用于控制I/O的操作数据元、读取输入以便于收集信息的请求、健康消息、进程间通信的请求,或者与安全关键硬件和软件相关联的其他合适的请求。操作数据元可以包括指示安全关键硬件和软件中的一个以执行预定过程的指令集。例如,操作数据元可以指示安全关键软件以执行加速过程。加速过程包括控制至少一个安全关键硬件部件。至少一个硬件部件包括火车的节流机构(throttle mechanism)。
相反地,当数据包不相同时,主CPU 116a和检验器CPU 120a不指示安全关键硬件和软件以执行所请求的任务。主CPU 116a生成故障信号。故障信号指示***100内的、安全关键硬件和软件的、或外部安全***的故障。以该方式,主CPU 116a验证所请求的任务是来自合法源(即外部硬件部件或软件应用)的合法请求。
仅例如,主CPU 116a由于外部硬件故障、软件错误、或整个***故障而接收执行任务的错误请求。应该理解,尽管仅描述了主CPU 116a和检验器CPU 120a,但上述原理也适用于主CPU 116b和检验器CPU 120b。
主动FSC 104和备用FSC 108中的每一个包括多个输入/输出单元(IOU)模块。主动FSC 104包括IOU模块128a-128f。IOU模块128a-128f下文将称作IOU模块128。类似地,备用FSC 108包括IOU模块132a-132f,其与IOU模块128a-128f相同。IOU模块132a-132f下文将称作IOU模块132。
主动FSC 104和备用FSC 108每个也分别包括投票子***、输入/输出(I/O)子***、以及交换器模块124a和交换器模块124b。交换器模块124a和交换器模块124b被配置为是相同的。交换器模块124a和交换器模块124b将从I/O子***接收的数据包路由至主CPU116a和主CPU 116b以及检验器CPU 120a和检验器CPU 120b。
例如,交换器模块124a可以将从主CPU 116a接收的数据包路由至外部网络部件。进一步,交换器模块124a从外部部件接收数据包并且将所接收的数据包路由至主CPU116a、检验器CPU 120b以及I/O子***。进一步,交换器模块124a将所接收的数据包传送至投票子***。应该知晓,尽管仅描述了交换器模块124a,上述原理也适用于交换器模块124b。
IOU模块128在主动FSC 104内实施I/O子***。I/O***被配置为在较低级网络设备与主CPU 116a和检验器CPU 120a之间提供网关。IOU模块128将主CPU 116a和检验器CPU120a与由外部硬件和软件所要求的低级协议隔离。以该方式,IOU模块128在内部以太网上添加安全层以支持在主CPU 116a、检验器CPU 120a与外部硬件和软件之间的安全通信。IOU模块128和交换器模块124a可以共同地称作前刀片124a-128f。类似地,IOU模块132和交换器模块124b可以共同地称作前刀片124b-132f。
主动FSC 104和备用FSC 108还包括多个后转换模块(RTM)。主动FSC 104包括RTM136a-136i。备用FSC 108包括RTM 140a-140i。应该知晓,因为备用FSC 108是主动FSC 104的冗余配置,所以RTM 136a-136i与RTM 140a-140i相同。在一些实施方式中,RTM 136a-136i中的每一个可以是可热插拔现场可更换单元(FRU)。
例如,可以由现场工程师移除并更换RTM 136a-136i中的每一个而无需首先对整个***100断电。RTM 136a-136i允许主动FSC 104与外部硬件和软件部件通信。例如,RTM136a将主CPU 116a电地且逻辑地耦接至在主动FSC 104外部的部件。类似地,RTM 136b将备用FSC 108电地且逻辑地耦接至外部硬件和软件部件。
前刀片124a-128f每个包括第一存储器位置和第二存储器位置。第一存储器位置和第二存储器位置存储从主动FSC 104的对应硬件部件所接收的值。例如,主CPU 116a连续地生成指示主CPU 116a的模块健康的模块健康信号(如上所述)。当模块健康信号指示主CPU 116a是健康的时,主CPU 116a在第一存储器位置中存储1。
前刀片124a-128f和主CPU 116a中的每一个生成模块健康信号。前刀片124a-128f中的每一个在第一存储器位置中存储指示模块健康信号的值。仅例如,当模块健康信号指示交换器模块124a是健康的时,交换器模块124a在与交换器模块124a相关联的第一存储器位置中存储1。
相反地,当模块健康信号指示交换器模块124a不是健康的时,交换器模块124a在第一存储器位置中存储0。应该理解,尽管仅描述了交换器模块124a,但本文中所述的原理适用于***100内的所有模块。进一步应该理解,尽管仅描述了基于模块健康信号而存储1和0,可以使用任何合适的指示器以指示***100内的每个模块的健康。***100内的模块中的每一个随后将存储在关联的第一存储器位置中的值传送至主CPU 116a。
主CPU 116a基于接收到与由前刀片124a-128f中的每一个所生成的模块健康信号以及由主CPU 116a所生成的模块健康信号相对应的多个数值而确定主动FSC 104是否是健康的。仅例如,当所接收的与模块健康信号相对应的值中的每一个值指示***100内的模块中的每一个模块是健康的时,主CPU 116a确定主动FSC 104是健康的。相反地,当所接收的与模块健康信号相对应的值中的至少一个值指示***100内的模块中的至少一个模块不是健康的时,主CPU 116a确定主动FSC 104不是健康的。
在另一实施方式中,指示模块健康信号的值存储在配置在***100的正面处的模块中。例如,当模块健康信号指示主CPU 116a是健康的时,配置在***100的与RTM 136s相对面上的模块在第一存储器位置中存储1。应该理解,尽管仅描述了主CPU 116a,但本文中所述的原理适用于检验器CPU 120a。
主CPU 116a接收多个输入数据包中的第一数据包。同时,检验器CPU 120a接收第一数据包的副本。主CPU 116a和检验器CPU 120a确定第一数据包和第一数据包的副本是否相同。当第一数据包和第一数据包的副本相同时,主CPU 116a连续地生成模块健康信号。模块健康信号可以设置为1或高的信号值。模块健康信号的值指示主动FSC 104的健康。主CPU116a在第一存储器位置中存储1。
相反地,当第一数据包和第一数据包的副本不相同时,主CPU 116a生成无效模块健康信号。例如,主CPU 116a去断言模块健康信号。主CPU 116a在第一存储器位置中存储0。主CPU 116a接收指示主CPU 116a内的屏蔽寄存器的状态的屏蔽信号。例如,屏蔽寄存器是主CPU 116a和检验器CPU 120a中的每一个内的可编程位元。
当所请求的任务是安全相关任务时,设置屏蔽寄存器。例如,当***100确定所请求的任务是安全相关任务时,设置屏蔽寄存器为1。当屏蔽信号指示主CPU 116a内的屏蔽寄存器被设置为1时,RTM 136a在第二存储器位置中存储1。相反地,当屏蔽信号指示主CPU116a内的屏蔽寄存器被设置为0时,RTM 136a在第二存储器位置中存储0。
***100还包括监视定时器应用程序。监视定时器应用程序连续地运行指示主CPU116a是否已经停止执行代码的监视功能。例如,监视定时器应用程序监控主CPU 116a。主CPU 116a生成监视定时器复位信号。主CPU 116a将监视定时器复位信号传送至监视定时器应用程序。监视定时器应用程序确定是否在预定时段内接收到监视定时器复位信号。例如,预定时段可以是1分钟。预定时段可以是可配置项。
监视定时器应用程序基于监视定时器复位信号生成监视健康信号。例如,当主CPU116a在预定时段之后传送监视定时器复位信号时,监视定时器应用程序将监视健康信号设置为0。相反的,当主CPU 116a在预定时段内传送监视定时器复位信号时,监视定时器应用程序将监视健康信号设置为1。换言之,当主CPU 116a无法在预定时段内与监视应用程序通信时,监视定时器应用程序确定在主CPU 116a中故障。例如,故障可以是主CPU 116a卡在软件循环中的结果。应该理解,尽管以上仅描述了主CPU 116a,但检验器CPU 120a被配置为与主CPU 116a相同的任务。
RTM 136a传送指示主CPU 116a的整体健康的模块健康值。例如,RTM 136a被配置为对存储在第一存储器位置中的值和存储在第二存储器位置中的值执行逻辑或(OR)。例如,当存储在第一存储器位置中的值为0时且当存储在第二存储器位置中的值为0时,RTM136a将传送模块健康值0。
当存储在第一存储器位置中的值为1且存储在第二存储器位置中的值为0时,RTM136a传送模块健康值1。应该理解,RTM 136a-136i中的每一个被配置为对在与前刀片124a-128f中的每一个刀片相关联的存储器内存储的值执行逻辑或。
RTM 136a和136b将机架健康值传送至安全继电器箱模块144。安全继电器箱模块144基于多个机架健康值而选择性地确定***100内的哪些FSC将是主动FSC而哪些将是备用FSC。例如,安全继电器箱模块144从RTM 136a、RTM 136b、RTM 140a和RTM 140b接收多个机架健康值。RTM 136a基于由主CPU 116a和前刀片124a-128f所生成的模块健康信号以及存储在屏蔽寄存器中的值的累积结果而生成第一机架健康值。
RTM 136a将机架健康值传送至安全继电器箱模块144。类似地,RTM 136b基于由检验器CPU 120a和前刀片124a-128f所生成的模块健康信号以及存储在屏蔽寄存器中的值的累积结果而生成第二机架健康值。RTM 140a基于由主CPU 116b和前刀片124b-132f所生成的模块健康信号以及存储在屏蔽寄存器中的值的累积结果而生成第三机架健康值。类似地,RTM 140b基于由检验器CPU 120b和前刀片124b-132f所生成的模块健康值以及存储在屏蔽寄存器中的值的累积结果而生成第四机架健康值。
安全继电器箱模块144确定主动FSC 104和备用FSC 108中的哪一个将作为***100内的主动FSC而操作。例如,安全继电器箱模块144基于第一机架健康值至第四机架健康值而确定主动FSC 104将作为***100内的主动FSC而操作。当第一机架健康信号和第二机架健康信号指示主动FSC 104是健康的时,安全继电器箱模块144确定主动FSC 104将是***100内的主动FSC。
安全继电器箱模块144基于主动FSC确定而生成主动FSC信号和备用FSC信号。例如,安全继电器箱模块144生成第一主动FSC信号和第二主动FSC信号。第一主动FSC信号和第二主动FSC信号是冗余信号,它们均指示了选择了哪个FSC以作为主动FSC而操作。安全继电器箱模块144也生成第一备用FSC信号和第二备用FSC信号。
第一备用FSC信号和第二备用FSC信号是冗余信号,它们均指示选择了哪个FSC以作为备用FSC而操作。安全继电器箱模块144将第一主动FSC信号和第一备用FSC信号传送至主动FSC 104。类似地,安全继电器箱模块将第二主动FSC信号和第二备用FSC信号传送至备用FSC 108。
安全继电器箱模块144还基于第一机架健康信号至第四机架健康信号确定在主动FSC 104和备用FSC 108中的一个中是否已经出现了故障。例如,当安全继电器箱模块144从RTM 136a和136b中的一个接收到无效机架健康信号时,安全继电器箱模块144确定主动FSC104中已经出现了故障。例如,无效机架健康信号可以是0的机架健康值。安全继电器箱模块144基于无效机架健康生成备用信号。安全继电器箱模块144将备用信号传送至主动FSC104。主动FSC 104基于备用信号确定是否进入故障安全状态。例如,当主动FSC 104接收到备用信号时,主动FSC 104确定进入故障安全状态。
安全继电器箱模块144基于机架健康值生成主动信号。安全继电器箱模块144将主动信号传送至备用FSC 108。主动信号向备用FSC 108指示主动FSC 104正操作在故障安全状态或备用状态。当备用FSC 108接收到主动信号时,备用FSC 108开始作为主动FSC操作。以该方式,安全继电器箱模块144强制故障的主动FSC进入故障安全状态,并且提醒备用FSC以承担主动FSC的角色。
在一些实施方式中,安全继电器箱模块144被配置为与多个商业现货(COTS)产品通信。例如,主动FSC 104和备用FSC 108可以是***100内实施的COTS产品。根据预定实施标准配置主动FSC 104和备用FSC 108。实施标准包括预定通信协议。
安全继电器箱模块144被配置为根据通信协议从主动FSC 104和备用FSC 108接收并解释信号和消息。以该方式,安全继电器箱模块144与主动FSC 104和备用FSC 108通信,而不管主动FSC 104和备用FSC 108的物理特性,只要主动FSC104和备用FSC 108遵循通信协议。应该理解,安全继电器箱模块144与***100内的任何部件通信。进一步,***100内的任何部件可以利用COTS产品实施,只要任何部件遵循通信协议。
在一些实施方式中,I/O子***也从诸如轨道***的硬件和软件部件的外部源接收数据包。接收到的数据包可以包括如上所述的多个输入数据包。I/O子***随后将接收到的数据包传送至投票子***。
投票子***是功能安全子***,并被配置为检测故障并对故障作出响应。当投票子***检测到主动FSC 104和备用FSC 108中的一个中的错误时,投票子***强制主动FSC104和备用FSC 108中的一个至故障安全状态。投票子***执行处理子***的故障检测。例如,主CPU 116a和检验器CPU 120a基于所请求的任务而生成输出数据包。
投票子***比较由主CPU 116a所生成的输出数据包与由检验器CPU 120a所生成的输出数据包。当输出数据包相同时,投票子***将数据包的单个副本传送至交换器模块124a以及传送至I/O子***。当输出数据包不相同时,投票子***强制主动FSC 104至故障安全状态。以该方式,投票子***检测主动FSC 104和备用FSC 108中的一个中的故障。当检测到主动FSC 104和备用FSC 108中的一个中的故障时,投票子***通过强制故障FSC至故障安全状态而将***100带到安全状态。
投票子***还从I/O子***接收数据包。例如,IOU模块128经由交换器模块124a与投票子***通信。IOU模块128将第一数据包传送至交换器模块124a。交换器模块124a复制第一数据包。例如,交换器模块124a生成第二数据包。第二数据包是第一数据包的副本。交换器模块124a将第一数据包传送至主CPU 116a和检验器CPU 120a。主CPU 116a和检验器CPU 120a如上所述对第一数据包和第二数据包执行投票逻辑。以该方式,投票子***验证接收到的数据包的有效性。
在另一示例中,第一数据包可以由于外部部件(诸如铁道***的安全关键硬件)中的硬件故障而与第二数据包不相同。当投票子***确定第一数据包与第二数据包不相同时,安全应用强制主动FSC 104至故障安全状态。此外或可替代地,可以默默地丢弃失配的数据包。例如,主CPU 116a或检验器CPU 120a均不基于第一数据包和第二数据包生成输出数据包。以该方式,***100可以避免由于另外的可恢复错误而导致的过度故障失效/故障安全转换。在另一实施方式中,可以配置输入投票以导致故障失效/故障安全转换。
现在参照图2,在200处示出根据本公开的原理的示例性故障安全机架(FSC)的框图。FSC 200包括主CPU 204和检验器CPU 208。主CPU 204和检验器CPU 208执行相同的软件并实施相同的处理功能。主CPU 204和检验器CPU 208被配置为执行相同功能以便于维持安全关键硬件和软件的全硬件故障和错误检测覆盖。
例如,主CPU 204从外部安全***的安全关键硬件或软件中的至少一个接收执行任务的请求。外部安全***可以是被要求根据预定安全标准操作的***,诸如铁路***。铁路***包括安全关键硬件和软件。安全关键硬件和软件与铁路***的部件交互以便于控制铁路***的各方面。例如,安全关键硬件和软件控制在铁路***内操作的火车。
执行任务的请求可以包括但不限于,确定硬件部件的状态、进行铁路***的制动、或者向铁路***的操作者指示操作在铁路***内的火车的位置。以数据包的形式接收执行任务的请求。例如,执行任务的请求可以是多个输入数据包中的一个输入数据包。
同时,检验器CPU 208接收同一请求的副本。主CPU 204和检验器CPU 208中的每一个被配置为将所请求的任务的副本传送至主CPU 204和检验器CPU 208中的另一个。在主CPU 204执行所请求的任务之前,主CPU 204和检验器CPU 208比较由主CPU 204和检验器CPU 208中的每一个所接收的所请求的任务。
当所请求的任务相同时,主CPU 204和检验器CPU 208将所请求的任务传送至安全关键硬件和软件。例如,主CPU 204和检验器CPU 208生成与所请求的任务相关联的输出数据包。输出数据包包括操作数据元。操作数据元可以包括指示安全关键硬件和软件中的一个以执行预定过程的指令集。例如,操作数据元可以指示安全关键软件以执行制动进行过程。制动进行过程包括控制至少一个安全关键硬件部件。至少一个硬件部件可以包括铁路***的制动机构。
相反地,当所请的求任务不相同时,主CPU 204和检验器CPU 208不将所请求的任务传送至安全关键硬件和软件。以该方式,主CPU 204验证所请求的任务是来自合法源(即外部硬件部件或软件应用)的合法请求。仅例如,主CPU 204由于外部硬件故障、软件错误或整体***故障而接收执行任务的错误请求。
主CPU 204和检验器CPU 208包括屏蔽寄存器。屏蔽寄存器是主CPU 204和检验器CPU 208内的可编程位元。存储在屏蔽寄存器中的值指示所请求的任务是否是安全相关任务。例如,当***100确定所请求的任务是安全相关任务时,设置屏蔽寄存器为1。进一步,当***100初始地启动时,健康和安全应用程序设置屏蔽寄存器。
主CPU 204和检验器CPU 208每个基于确定所请求的任务是否相同而连续地生成模块健康信号。当主CPU 204和检验器CPU 208确定所请求的任务是相同的时,主CPU 204和检验器CPU 208连续地生成模块健康信号脉冲。当主CPU 204和检验器CPU 208确定所请求的任务不相同时,主CPU 204和检验器CPU 208去断言模块健康信号脉冲。
主CPU 204和检验器CPU 208基于由与FSC 200相关联的多个模块中的每一个模块所生成的多个模块健康信号脉冲而生成机架健康信号脉冲。FSC 200包括与关于主动FSC204所述的那些特征类似的特征。例如,FSC 200包括如上所述的前刀片124a-128f。FSC 200内的各模块中的每一个模块连续地生成模块健康信号(如上所述)。当多个模块健康信号指示FSC 200是健康的时,主CPU 204生成第一机架健康信号脉冲。换言之,当屏蔽寄存器指示所请求的任务是安全相关的并且多个模块健康信号指示FSC是健康的时,连续地断言第一机架健康信号脉冲(即被设置为1)。
应该理解,当屏蔽寄存器指示所请求的任务不是安全相关的(即屏蔽寄存器被设置为0)时,可以去断言第一模块健康信号。然而,将不执行安全相关过程(即强制主动FSC204至安全状态)。以该方式,当在安全相关任务期间出现故障时,仅实施故障失效/故障安全过程。机架健康信号脉冲指示FSC 200的整体健康。
应该理解,关于主CPU 204描述的原理适用于检验器CPU 208。检验器CPU 208基于由与FSC 200相关联的多个模块中的每一个模块所生成的多个模块健康信号脉冲而生成第二机架健康信号脉冲。当多个模块健康信号指示FSC 200是健康的时,检验器CPU 208连续地生成第二机架健康信号脉冲。主CPU 204将第一机架健康信号脉冲传送至安全继电器箱212。类似地,检验器CPU 208将第二机架健康信号脉冲传送至安全继电器箱212。
安全继电器箱模块212基于多个机架健康信号而选择性地确定FSC 200是否将作为主动FSC 200操作。例如,当启动FSC 200时,安全继电器箱模块212开始从主CPU 204接收机架健康信号脉冲。安全继电器箱212也开始从检验器CPU 208接收机架健康信号脉冲。安全继电器箱模块212基于机架健康信号而确定FSC 200是否将被选择作为主动FSC。
在一些实施方式中,安全继电器箱模块212也从另一FSC接收多个机架健康信号脉冲。安全继电器箱模块212基于多个机架健康信号脉冲确定FSC 200或另一FSC是否将被选择作为主动FSC。例如,安全继电器箱模块212首先确定FSC 200或另一FSC中的一个是否是健康的。当从FSC 200接收的机架健康信号脉冲指示FSC 200是健康的时,安全继电器箱模块212确定FSC 200是健康的。例如,当安全继电器箱模块212从FSC 200接收到机架健康信号时,安全继电器箱模块212确定FSC 200是健康的。
类似地,当从另一FSC接收的多个机架健康信号脉冲指示另一FSC是健康的时,安全继电器箱模块212确定该另一FSC是健康的。当安全继电器箱模块212确定FSC 200和另一FSC两者是健康的时,安全继电器箱模块212基于FSC 200和另一FSC哪个首先传送多个机架健康信号脉冲中的一个而选择主动FSC。例如,当在另一FSC将信号传送至安全继电器箱模块212之前FSC 200将信号传送至安全继电器箱模块212时,安全继电器箱模块212选择FSC200作为主动FSC。
安全继电器箱模块212监控主动FSC的健康。例如,安全继电器箱模块212从FSC200接收第一机架健康信号脉冲和第二机架健康信号脉冲。安全继电器箱模块212基于第一机架健康信号脉冲和第二机架健康信号脉冲确定FSC 200中是否已经出现了故障。当第一机架健康信号脉冲和第二机架健康信号脉冲中的至少一个指示所请求的任务的失配时,安全继电器箱212确定FSC 200中已经出现了故障。换言之,当安全继电器箱模块212未接收到第一机架健康信号脉冲和第二机架健康信号脉冲中的一个时,安全继电器箱模块212确定已经出现了故障。
当安全继电器箱模块212确定FSC 200中已经出现了故障时,安全继电器箱模块212生成故障安全信号。安全继电器箱模块212将故障安全信号传送至FSC 200。FSC 200基于故障安全信号确定是否进入安全状态。例如,当FSC 200接收故障安全信号时,FSC 200进入安全状态。相反地,FSC 200将继续操作在主动FSC模式,除非FSC 200接收到故障安全信号。
可替代地,当FSC 200未接收到主动信号时,FSC 200可以进入备用状态。当安全继电器箱模块212确定FSC 200将作为主动FSC操作时,安全继电器箱模块212传送主动信号。安全继电器箱模块212将主动信号连续地传送至FSC 200。当安全继电器箱模块212确定FSC200故障时,安全继电器箱模块212不将主动信号传送至FSC 200。FSC 200随后在备用状态操作。
在一些实施方式中,多个机架健康信号脉冲实施作为动态脉冲信号,以消除未检测出的、潜在的故障模式。安全继电器箱模块212被配置为确定脉冲信号是否处在0或处在1处。例如,安全继电器箱模块212从主CPU 204接收第一脉冲信号。安全继电器箱模块212被配置为等待预定时间段。
例如,预定时间段可以是与足够长使得动态脉冲复位的时间相对应的时间段。当在预定时段之后第一脉冲信号尚未复位时,安全继电器箱模块212确定第一脉冲信号被卡住。当随后安全继电器箱模块212确定第一脉冲信号被卡住时,安全继电器箱模块212确定主CPU 204中故障。安全继电器箱模块212基于确定主CPU 204中故障而生成故障安全信号。
在一些实施例中,***100实施如图3中所示的基于任务的投票***300。基于任务的投票***300包括主CPU 204和检验器CPU 208。主CPU 204和检验器CPU 208中的每一个包括被配置为执行投票逻辑的现场可编程门阵列(FPGA)。例如,主CPU 204包括主FPGA 304且检验器CPU 208包括检验器FPGA 308。主FPGA 304和检验器FPGA 308中的每一个被配置为实施基于任务的投票逻辑。进一步,主FPGA 304和检验器FPGA 308中的每一个被同步至参考时钟。
参考时钟是***100内的25兆赫兹(MHz)时钟。参考时钟是***100内的每个模块与其同步的通用参考时钟。***100内的每个模块包括与参考时钟同步的锁相环。例如,***100内的IOU模块可以包括以第一间隔计数的IOU时钟。IOU模块包括第一锁相环,其确定在第一间隔与参考时钟间隔之间的参考点。当IOU模块与***100内的另一模块通信时,IOU模块基于第一间隔与参考时钟间隔之间的参考点而确定当前参考时钟时间。以该方式,***100内的每个模块可以参考在参考时钟上的时间,其对于每个模块都是共同的,以便于在***100内通信。
主CPU 204和检验器CPU 208中的每一个被配置为执行在***100外的软件应用。例如,主CPU 204执行如上所述由铁路应用程序所请求的任务。主CPU 204被配置为执行铁路应用程序的第一副本(第一副本)。检验器CPU 208被配置为执行铁路应用程序的第二副本(第二副本)。第一副本和第二副本中的每一个被配置为同时执行任务。例如,当***100重启时,主CPU 204和检验器CPU 208中的每一个分别初始化第一副本和第二副本。第一副本和第二副本被同步至参考时钟以便于同时执行任务。
主FPGA 304和检验器FPGA中的每一个被配置为执行多个投票模式中的一个。在一个实施方式中,主FPGA 304和检验器FPGA 308被配置为执行基于任务的投票模式。例如,主FPGA 304包括主软件(SW)写入缓冲器312和主硬件(HW)比较缓冲器316。检验器FPGA 308包括检验器SW写入缓冲器320和检验器HW比较缓冲器324。
铁路应用程序的第一副本在参考时钟的第一周期期间将要由主CPU 204执行的多个第一任务写入主SW写入缓冲器312。同时,第二副本在参考时钟的第一周期期间将要由主CPU 204执行的多个第二任务写入检验器SW写入缓冲器320。如上所述,主CPU 204执行与铁路应用程序相关联的任务。检验器CPU 208与主CPU 204相同。然而,仅主CPU 204执行与铁路应用程序相关联的任务。
检验器CPU 208被配置为与主CPU 204步调一致地运行,然而,检验器CPU 208不执行与铁路应用相关联的任务。应该理解,第一副本和第二副本是相同应用程序。应该进一步理解,第一副本和第二副本彼此独立操作。基于任务的投票***300基于写入主SW缓冲器316和检验器SW缓冲器320的任务中的投票失配而确定***100中是否已经出现了故障。
在一个实施方式中,主FPGA 304在参考时钟的第二周期期间将主SW写入缓冲器312内的多个第一任务复制至主HW比较缓冲器316。参考时钟的第二周期可以紧接在第一周期之后出现,或者在第一周期之后的预定数量循环之后出现。同时,检验器FPGA 308在第二周期期间将检验器SW写入缓冲器320内的多个第二任务复制至检验器HW比较缓冲器324。以该方式,将在第一周期期间由铁路应用程序写入主SW写入缓冲器312和检验器SW写入缓冲器316的多个任务在第二周期期间移动至主HW比较缓冲器320和检验器HW比较缓冲器324。
随后将多个第一任务与多个第二任务进行比较。在示例实施方式中,主FPGA 304包括主比较模块328并且检验器FPGA 308包括检验器比较模块332。主比较模块328从主HW比较缓冲器316接收第一任务并且从检验器HW比较缓冲器324接收第二任务。主比较模块328比较第一任务和第二任务。主比较模块328基于该比较生成第一投票信号。例如,当主比较模块328确定第一任务和第二任务相同时,主比较模块328生成第一投票信号。主比较模块328将第一投票信号传送至主CPU 204。相反地,当主比较模块328确定第一任务和第二任务不相同时,主比较模块328不生成第一投票信号。
类似地,检验器比较模块332从主HW比较缓冲器316接收第一任务并且从检验器HW比较缓冲器324接收第二任务。检验器比较模块332比较第一任务与第二任务。检验器比较模块332随后基于该比较生成第二投票信号。例如,当检验器比较模块332确定第一任务和第二任务相同时,检验器比较模块332生成第二投票信号。检验器比较模块332将第二投票信号传送至主CPU 204。相反地,当检验器比较模块332确定第一任务和第二任务不相同时,检验器比较模块332不生成第二投票信号。
主CPU 204基于第一投票信号和第二投票信号确定主FPGA 304和检验器FPGA 308中是否出现投票失配。投票失配可以指示***100内的故障。通过非限定性示例的方式,当第一副本和第二副本中的一个在第一周期期间未写入主SW写入缓冲器312或检验器SW写入缓冲器320时,可以出现投票失配。可替代地,当第一副本和第二副本中的一个在第一周期期间部分地写入数据至主SW写入缓冲器312或检验器SW写入缓冲器320时,可以出现投票失配。
在一个实施方式中,当主CPU 204接收到第一投票信号和第二投票信号时,主CPU204确定没有出现投票失配。主CPU 204如上所述连续地生成模块健康信号。当主CPU 204未接收到第一投票信号和第二投票信号中的至少一个时,主CPU 204确定出现了投票失配。
当主CPU 204确定已经出现了投票失配时,主CPU 204去断言模块健康信号。应该理解,主CPU 204可以去断言之前已断言的模块健康信号。例如,模块健康信号可以是连续地被断言的信号。当主CPU 204确定已经出现了投票失配时,主CPU 204去断言模块健康信号。
现在参照图4,用于实施基于任务的投票计算机***的方法400开始于404处。在408处,方法400在第一时钟周期期间将多个第一任务写入主SW写入缓冲器312。在412处,方法400在第一时钟周期期间将多个第二任务写入检验器SW写入缓冲器320。在416处,方法400在第二时钟周期期间将多个第一任务复制至主HW比较缓冲器316。在420处,方法400在第二时钟周期期间将多个第二任务复制至检验器HW比较缓冲器324。在424处,方法400从主HW比较缓冲器324接收第一任务。
在428处,方法400从检验器HW比较缓冲器324接收第二任务。在432处,方法400基于第一任务与第二任务之间的第一比较而生成第一投票信号。在436处,方法400基于第一任务与第二任务之间的第二比较而生成第二投票信号。在440处,方法400确定是否生成第一投票信号和第二投票信号。如果是,则方法400在444处继续。如果否,则方法400在448处继续。在444处,方法400连续地生成模块健康信号。在448处,方法400去断言模块健康信号。方法400结束于452处。
现在参照图5,示出用于安全应用的扩展箱(EXB)500的一个示例的功能框图。在一个示例中,EXB 500实施与如上关于图1所述的主动FSC 104和备用FSC 108的架构类似的架构。具体地,EXB 500可以包括一个或多个CPU 502以及对应的一个或多个CPU RTM 518、交换器模块(SWM)506和对应的SWM RTM 522、I/O单元模块508-510以及对应的I/O单元模块RTM 524-526、以及一个或多个PSU 512。
然而,EXB 500将通常包括比诸如FSC 104或FSC 108的标准FSC更多的I/O单元模块。此外,EXB 500的一个或多个I/O模块将通常包括比上述主动FSC 104和/或备用FSC 108的任意I/O模块更多的端口和信道。
例如,在典型的FSC可以仅包括六个I/O模块(例如图1中所示的FSC 104的I/O模块128a-128f)的情况下,诸如EXB 500的EXB可以包括十个或更多I/O模块。图5中所示的示例EXB 500包括I/O模块#1 508至I/O模块#X 510,其中X可以采用任何数值,但是通常大于六。在一个示例中,EXB 500可以包括在单个机架中的十个(10)9U扩展I/O模块(EIOU)和一个(1)4U I/O模块(xIOU)。与之相反,典型的FSC(例如FSC 104)可以仅包括六个(6)4U I/O模块。
通过调节各种I/O类型并允许在每个I/O模块上更多端口和信道,示例EXB 500的提高的处理能力可以有效地减少构造大规模应用所需的机架数量。此外,由示例EXB 500所提供的更高I/O能力可以有效地处理现代安全应用***的增加的数据吞吐量需求。
在示例实施方式中,EXB 500被配置为实施基于任务的投票作为检测容错故障安全计算机***中的故障的方法。更具体地,EXB 500可以被配置为根据以上关于图1-图4所述的技术实施基于任务的投票。例如,在一个实施方式中,CPU 502可以包括经由SWM 506连接至I/O单元模块508-510的主CPU和检验器CPU。在该实施方式中,可以利用CPU 502的主CPU和检验器CPU来实施基于任务的投票,诸如二选二(2oo2)投票机制。在另一示例实施方式中,CPU 502和SWM 506可以实施在单个卡上,共享单个RTM(例如RTM 518)。
示例EXB 500还不同于以上关于图1所述的FSC 104、FSC108之处在于,在一些实施方式中,示例EXB 500包括两个或更多PSU 512。例如,EXB 500可以包括冗余AC PSU,其任一个能够为EXB 500的所有部件供电。在该示例中,第一PSU可以被指定为主动PSU并且被分派向EXB 500的部件提供电力的任务。随后,如果主动PSU故障,则供电任务可以转移至备用PSU以确保EXB 500的连续操作。例如,可以利用运行在CPU 502上的软件以监控PSU 512的健康(例如经由在诸如以太网通信信道的合适通信信道之上的通信)。
在一个示例中,SWM 506和I/O单元模块508-510可以经由一个或多个以太网通信信道连接。类似地,在示例实施方式中,SWM 506可以经由一个或多个以太网通信信道连接至CPU 502。在另一示例中(例如在CPU 502和SWM 506实施为单卡的示例实施方式中),I/O单元模块508-510可以经由一个或多个Versa Module Europa(VME)总线而连接至组合CPU/SWM。当然,本领域技术人员将认识到,可以合适地采用利用了合适的通信协议的其他合适的通信信道而不脱离本公开的教导。
每个I/O单元模块被配置为将健康状态信号传送至CPU 502,CPU 502指示其是否适当地运行,或者其是否存在故障。在一些示例中,每个I/O单元模块可以发送指示其适当地运行(例如“我很好”消息)的周期性健康状态信号。在该示例中,如果自CPU 502已经接收到指示特定I/O单元模块(例如IOU#1 508)适当地运行的健康状态信号之后已经过去了预定时间量,则CPU 502将静默处理为I/O单元模块中的故障,并且将因此作出响应(以下更详细讨论响应)。在另一示例中,每个I/O单元模块可以发送指示其适当地运行的恒定健康状态信号。在该示例中,如果CPU 502停止接收恒定健康状态信号(或可替代地,如果恒定健康状态信号的值变化,或者被去断言,使得其不再对应于适当地运行的I/O单元模块),则CPU502将该情形处理为仿佛已经在I/O单元模块中检测到故障并且将据此作出响应。
在一个示例中,恒定健康状态信号可以是动态的,使得“我很好”状态可以经由第一信号模式(例如在预定时间量之上的高/低值的预定模式)传送,同时故障状态可以采用第二信号模式(例如在预定时间量之上的高/低值的不同预定模式)传送。更进一步,在其中恒定健康信号是动态的一些情形中,恒定健康信号不匹配预定的“我很好”模式或预定故障模式的检测可以解释为指示了故障。
当EXB 500的所有单个部件(包括但不限于I/O单元模块508-510)是健康的时,EXB500被视作是健康的且适用于用作主动容错故障安全子***的一部分。在一个示例中,当检测到EXB 500的一个或多个部件是不健康的(例如由CPU 502检测到IOU#1 508不是健康的)时,EXB 500被配置为生成指示EXB 500中的故障的EXB健康信号520。在另一示例中,EXB健康信号520可以指示EXB 500的所有部件是健康的。在一个示例中,EXB健康信号520可以由EXB 500的CPU 502生成并且经由CPUs RTM 518从EXB 500向外传送。
在一个示例中,EXB健康信号520可以是动态的,使得可以经由第一信号模式(例如在预定时间段之上的高/低值的预定模式)传送健康状态,同时故障状态可以采用第二信号模式(例如在预定时间段之上的高/低值的不同预定模式)传送。更进一步,在其中EXB健康信号520是动态的一些情形中,EXB健康信号520不匹配预定健康模式或者预定故障模式的检测可以解释为指示了故障条件。
例如,并且如以下关于图6更详细所述,指示EXB 500中的故障的EXB健康信号可以经由诸如但不限于以太网通信信道的合适的通信信道而传送至包括作为同一主动容错故障安全子***的一部分的FSC。根据一些实施方式,FSC可以随后生成通知主动容错故障安全子***中的故障的主动计算机***确定模块(例如图6中所示的主动计算机***确定模块626)的信号。这接着可以使得主动计算机子***确定模块将主动容错故障安全子***(包括EXB 500和FSC)置于备用模式而同时激活另一容错故障安全子***。用于在各个容错故障安全子***之间传输工作状态的过程在图6中图示并且以下更详细讨论。
在一些实施方式中,EXB 500被配置为接收***健康信号514和/或主动/备用信号516。***健康信号514可以指示包括作为与EXB相同的容错故障安全子***的一部分的所有计算机(包括例如FSC和/或一个或多个额外EXB)是否是健康的,并且因此可以指示EXB500是否应该使能其输入端口中的一个或多个(例如I/O单元模块的输入端口508-510)。例如,当***健康信号514指示包括作为与EXB 500相同的容错故障安全子***的一部分的所有计算机是健康的时,EXB 500可以被配置为使能其输入端口中的一个或多个。相反地,并且通过示例的方式,当***健康信号514指示包括作为与EXB 500相同的容错故障安全子***的一部分的任何计算机不是健康的时,EXB 500可以被配置为禁用其输入端口中的一个或多个。
主动/备用信号516可以指示EXB 500和与其连接的任何其他计算机是否应处于主动模式或备用模式,并且因此可以指示EXB 500是否应该使能其输出端口中的一个或多个(例如I/O单元模块的输出端口508-510)。例如,当主动/备用信号516构成主动信号时,EXB500可以被配置为使能其输出端口中的一个或多个。相反地,并且通过示例的方式,当主动/备用信号516构成备用信号时,EXB 500可以被配置为禁用其输出端口中的一个或多个。
在一个示例中,***健康信号514可以是动态的,使得健康状态可以经由第一信号模式(例如在预定时间段之上的高/低值的预定模式)传送,同时故障状态可以采用第二信号模式(例如在预定时间段之上的高/低值的不同预定模式)传送。更进一步,在其中***健康信号514是动态的一些情形中,***健康信号514不匹配预定健康模式或预定故障模式的检测可以解释为指示了故障条件。
类似地,在一个示例中,主动/备用信号516可以是动态的,使得工作状态可以经由第一信号模式(例如在预定时间段之上的高/低值的预定模式)传送,同时备用状态可以采用第二信号模式(例如在预定时间段之上的高/低值的不同预定模式)传送。更进一步,在其中主动/备用信号516是动态的一些情形中,主动/备用信号516不匹配预定主动模式或预定备用模式的检测可以解释为指示了备用条件。
在一个示例中,***健康信号514和主动/备用信号516可以从主动计算机***确定模块传送至EXB 500(例如经由CPU RTM 518至EXB 500的CPU 502)。在另一示例中,***健康信号514和主动/备用信号516可以从在EXB 500“上游”的另一EXB传送至EXB 500(例如经由CPU RTM518至EXB 500的CPU 502),如以下关于图6更详细所述。
在另一示例中,EXB 500(例如EXB 500的CPU RTM 518)可以被配置为将***健康信号514和/或主动/备用信号516“向下游”转发至另一计算机,诸如另一EXB,如以下关于图6更详细所述。
现在参照图6,示出包括一个或多个扩展箱的容错故障安全计算机***600的一个示例的功能框图。容错故障安全计算机***600包括第一计算机***602和第二计算机***628。在一个示例中,第一计算机***602和第二计算机***6238是冗余计算机***。
第一计算机***602和第二计算机***628中的每一个连接至主动计算机***确定模块626。在一些示例中,主动计算机***确定模块626可以实施作为安全继电器箱模块,诸如图1的安全继电器箱模块144。在另一示例中,主动计算机***确定模块626可以实施作为直接连接算法(DCA),如转让给本案申请人的美国专利第9367375号中所述,并且其整体通过引用的方式并入本文。根据本公开的示例,主动计算机***确定模块626被配置为生成主动/备用信号,以便于选择给定计算机***(例如第一计算机***602)作为主动计算机***并且选择另一计算机***(例如第二计算机***628)作为备用计算机***。
第一计算机***602包括可操作地连接至主动计算机***确定模块626的第一计算机604、可操作地连接至第一计算机604和主动计算机***确定模块626的第二计算机606、以及可操作地连接至第二计算机606和第一计算机604的第三计算机608。在一些示例中,一个或多个额外计算机(诸如X计算机610)也可以包括作为第一计算机***602的一部分。每个额外计算机(诸如X计算机610)可以可操作地连接至第一计算机和前述计算机。以该方式,并且如以下更详细所述,一个或多个计算机(例如第二计算机606、第三计算机608、以及X计算机610)可以菊花链链接在一起并由第一计算机604驱动。
在一个示例中,第一计算机602可以构成FSC,诸如以上关于图1中所述的FSC 104。为了简化目的,从图6省略了第一计算机604的许多子部件。例如,实际上,第一计算机602可以包括一个或多个I/O单元模块、一个或多个RTM、一个或多个PSU等。
在图6中图示的第一计算机602的简化版本中,第一计算机602包括一个或多个CPU612和可操作地连接至一个或多个CPU 612的SWM RTM 614。在一个示例中,CPU 612和SWMRTM 614经由合适的通信信道(诸如以太网通信信道)可操作地连接。类似地,在一些示例中,第二计算机606、第三计算机608以及X计算机610经由各自通信信道(诸如以太网信道)可操作地连接至第一计算机(例如第一计算机602的SWM RTM 614)。在一个示例中,第二计算机606可以在本领域已知的、包括但不限于以太网或VME的任何合适通信信道之上可操作地连接至第三计算机608。类似地,第三计算机608可以在本领域已知的、包括但不限于以太网或VME的任何合适通信信道之上可操作地连接至X计算机610。
在一个示例中,第二计算机606、第三计算机608、以及X计算机610(以及任何中间计算机)中的每一个可以实施作为EXB,诸如本文中关于图5所述的EXB。根据该示例,多个EXB可以菊花链链接在一起并由作为第一计算机***602的一部分的第一计算机604驱动。
第二计算机***628在部件和架构方面镜像第一计算机***602,并且包括可操作地连接至主动计算机***确定模块626的第四计算机630、可操作地连接至第四计算机630和主动计算机***确定模块626的第五计算机632、以及可操作地连接至第五计算机632和第四计算机630的第六计算机634。在一些示例中,一个或多个额外部件(诸如Y计算机636)也可以包括作为第二计算机***628的一部分。每个额外计算机(诸如Y计算机636)可以可操作地连接至第四计算机和前述的计算机。以该方式,一个或多个计算机(例如第五计算机632、第六计算机634、以及Y计算机636)可以菊花链链接在一起并由第四计算机630驱动。
在一个示例中,第四计算机630可以构成FSC,诸如以上关于图1所述的FSC 108。为了简化的目的,可以从图6省略第四计算机630的许多子部件。例如,实际上,第四计算机630可以包括一个或多个I/O单元模块,一个或多个RTM、一个或多个PSU等。
在图6中图示的第四计算机630的简化版本中,第四计算机630包括一个或多个CPU638以及可操作地连接至一个或多个CPU 638的SWM RTM 640。在一个示例中,CPU 638和SWMRTM 640经由合适的通信信道(诸如以太网通信信道)可操作地连接。类似地,在一些示例中,第五计算机632、第六计算机634以及Y计算机636经由各自的通信信道(诸如以太网信道)可操作地连接至第四计算机(例如第四计算机630的SWM RTM 640)。在一个示例中,第五计算机632可以在本领域已知的包括但不限于以太网或VME的任何合适的通信信道之上可操作地连接至第六计算机634。类似地,第六计算机634可以在本领域已知的包括但不限于以太网或VME的任何合适的通信信道之上可操作地连接至Y计算机636。
在一个示例中,第五计算机632、第六计算机634、以及Y计算机636(以及任何中间计算机)中的每一个可以实施作为EXB,诸如本文中关于图5所述的EXB。根据该示例,多个EXB可以菊花链链接在一起并且由作为第二计算机***化628的一部分的第四计算机630驱动。
在操作中,示例性的容错故障安全计算机***600可以起以下作用。为了该示例的目的,将初始地处理第一计算机***602作为主动计算机***并且将初始地处理第二计算机***628作为备用计算机***。因此,在最初,将使能包括作为第一计算机***602的一部分的计算机604、606、608、610的输出端口(例如包括作为每个计算机的一部分的I/O单元模块的输出端口)。相应地,在最初,将禁用包括作为第二计算机***628的一部分的计算机630、632、634、636的输出端口(例如包括作为每个计算机的一部分的I/O单元模块的输出端口)。
当检测到第二计算机606中的故障(例如包括作为第二计算机606的一部分的各I/O单元模块中的一个I/O单元模块中的故障)时,第二计算机606被配置为传送指示第二计算机606中的故障的第二计算机健康信号616(或者,如可以停止发送“我很好”信号或者去断言信号为不再对应于“我很好”状态的值的情形)。第一计算机604被配置为接收第二计算机健康信号616并且响应于第二计算机健康信号616而生成第一计算机***健康信号624。第一计算机***健康信号624可以指示第一计算机604和/或第二计算机606中的故障。进一步,第一计算机604被配置为将指示第一计算机***602中的故障的第一计算机***健康信号624传送至主动计算机***确定模块626。在一个示例中,第一计算机602被配置为通过去断言之前存在的第一计算机***健康信号(例如改变之前存在的第一计算机***健康信号的值)而生成第一计算机***健康信号624。
主动计算机***确定模块626被配置为接收第一计算机***健康信号624并响应于第一计算机***健康信号624而生成备用信号622。备用信号622可以从主动计算机***确定模块626传送至第二计算机606。第二计算机606被配置为接收备用信号622并基于备用信号622禁用第二计算机606的一个或多个输出端口。在一些示例中,备用信号622可以使得第二计算机606关断第二计算机606的任意或所有I/O单元模块的电源。此外,并且尽管图6中未示出,但主动计算机***确定模块626也可以向第二计算机606传送指示第一计算机***602的健康的***健康信号。如下所述,该***健康信号可以与备用信号622一起传播至第三计算机608以及在菊花链中第二计算机606下游的任何额外的计算机(例如X计算机610)。
接着,第二计算机606可以被配置为将备用信号622(以及,在一些示例中,第一计算机***健康信号)转发至第三计算机608。第三计算机608可以被配置为接收备用信号622并且基于备用信号622禁用其输出端口中的一个或多个。在一些示例中,备用信号622可以使得第三计算机608关断第三计算机608的任意或所有I/O单元模块的电源。
备用信号622以及在一些示例中的第一计算机***健康信号可以沿着连接至第一计算机604的计算机的菊花链线向下传播,从而禁用在菊花链中的计算机中的每一个的输出端口中的一个或多个。以该方式,可以禁用菊花链链接的计算机中的一些或所有输出端口,从而将第一计算机***602置于备用模式。
与生成备用信号622同时(即,在同一时钟周期期间或者在几个时钟周期内),主动计算机***确定模块626被配置为生成主动信号648。在一些示例中,可以由主动计算机***确定模块626响应于接收到第一计算机***健康信号624而生成主动信号648。以该方式,主动计算机***确定模块626被配置为将第一计算机***602置于备用模式并如以下激活第二计算机***628。
主动计算机***确定模块626被配置为生成被传送至第四计算机630和第五计算机632的主动信号648。当由第四计算机630接收到主动信号648时,第四计算机630被配置为基于主动信号648而使能其输出端口中的一个或多个。类似地,当接收到主动信号648时,第五计算机632被配置为基于主动信号648使能其输出端口中的一个或多个。在一些示例中,主动信号648可以使得第五计算机632打开第五计算机632的任意或所有I/O单元模块的电源。此外,并且尽管图6中未示出,但主动计算机***确定模块626也可以向第五计算机632传送指示第二计算机***628的健康的***健康信号。如下所述,该***健康信号可以与主动信号648一起传播至第六计算机634和在菊花链中第五计算机632下游的任何额外计算机(例如Y计算机636)。
接着,第五计算机632可以被配置为将主动信号648(以及在一些示例中,第二计算机***健康信号)转发至第六计算机634。第六计算机634可以被配置为接收主动信号648并基于主动信号648使能其输出端口中的一个或多个。在一些示例中,主动信号648可以使得第六计算机634打开第六计算机634的任意或所有I/O单元模块的电源。
主动信号648以及在一些示例中的第二计算机***健康信号可以沿着连接至第四计算机630的计算机的菊花链线向下传播,从而使能在菊花链中的计算机中的每一个中的输出端口中的一个或多个。以该方式,可以使能菊花链链接的计算机中的一些或所有输出端口,从而将第二计算机***628置于主动模式。
现在参照图7,用于实施故障安全容错计算机***的方法700开始于702处。在704处,第一计算机接收指示第二计算机中的故障的第二计算机健康信号。在706处,第一计算机生成指示第一计算机和/或第二计算机中的故障的第一计算机***健康信号。在708处,主动计算机***确定模块接收第一计算机***健康信号。在710处,主动计算机***确定模块生成备用信号。在712处,第二计算机接收备用信号。在714处,第二计算机基于备用信号禁用第二计算机的输出端口中的一个或多个。
在716处,做出关于第三计算机是否可操作地连接至第一计算机和第二计算机的决定。如果不是,则方法700结束于722处。然而,如果第三计算机可操作地连接至第一计算机和第二计算机,则方法700继续至718。在718处,第二计算机将备用信号转发至第三计算机。在720处,第三计算机基于备用信号禁用第三计算机的输出端口中的一个或多个。方法700结束于722处。
现在参照图8,示出图5的示例EXB 500的示例CPU RTM 518的功能框图。CPU RTM518包括用于与各个部件通信的多个端口800、802、804、806,如下所述。例如,输入端口800可以接收***健康信号514和主动/备用信号516。可以由输入端口800从(i)上游EXB(例如,在诸如图6中所描绘的架构的多个EXB菊花链架构中)或(ii)主动计算机***确定模块(例如,图6中所示的主动计算机***确定模块626)接收***健康信号520和主动/备用信号516。
CPU RTM 518被配置为将***健康信号514和主动/备用信号516一起转发至EXB内与CPU RTM 518相同的子部件以及下游EXB。更具体地,第一输出端口806被配置为将***健康信号514和主动/备用信号516转发至EXB内与CPU RTM518相同的I/O单元模块。***健康信号514和主动/备用信号516可以通过一个或多个CPU(例如图5的CPU 502)在途中路由至I/O单元模块。如上所述,可以利用***健康信号514以使能I/O单元模块的输入端口,同时可以利用主动/备用信号516以使能I/O模块的输出端口。第二输出端口802被配置为将***健康信号514和主动/备用信号516转发至作为菊花链链接的多EXB***(诸如图6的***600)的一部分的下游EXB。在一些示例中,***健康信号514和主动/备用信号516可以由输入端口800经由有线通信信道而接收。类似地,在一些示例中,***健康信号514和主动/备用信号516可以从第二输出端口802经由有线通信信道传送至下游EXB。
进一步,CPU RTM 518包括双向端口804,双向端口804被配置为除其他之外传送EXB健康信号520。在一个示例中,可以利用双向端口804来将EXB健康信号520传送至另一计算机(例如图6中所示的第一计算机604),以便于传送在包括CPU RTM 518的EXB中所检测到的故障。更进一步,在一个示例中,双向端口804可以有助于使用以太网通信协议的通信。
现在参照图9,示出计算机***900,诸如扩展箱(EXB)。根据一些示例,***900可以基本上类似于图5中所示的扩展箱(EXB)500并且可以包括一些或所有相同的部件。然而,为了简化的目的,仅示出***900包括第一输入/输出(I/O)模块902、第二I/O模块904、背板906,以及一个或多个CPU 908。换句话说,其他部件(诸如交换器模块、一个或多个RTM、一个或多个电源单元(PSU)等)可以作为***900的一部分被包括而不脱离本文的教导。
图9中所示的第一I/O模块902和第二I/O模块904可以在结构和功能上基本上类似于I/O模块128a-f)(图1)和/或I/O模块508-510(图5)。然而,图9中所示的第一I/O模块902和第二I/O模块904可以包括除了以上关于I/O模块128a-f和/或I/O模块508-510所述之外的额外特征和功能。
例如,第一I/O模块902可以包括第一模块健康控制器910。第一模块健康控制器910可以通过第一插槽914可操作地连接至背板906。在一个示例中,第一插槽914可以包括cPCI连接器等,用于将背板906与第一I/O模块902接合。此外,第一模块健康控制器910可以通过背板906可操作地连接至CPU 908。以该方式,第一模块健康控制器910可以与CPU 908通信地耦接(即双向通信)。进一步,第一模块健康控制器910可以通过背板906与第二I/O模块904(或更具体地,第二I/O模块904的第二模块健康控制器912)可操作地连接并可以通过背板906通信地耦接至第二I/O模块904。
类似地(并如以上简要描述的),第二I/O模块904可以包括第二模块健康控制器912。第二模块健康控制器912可以通过第二插槽916可操作地连接至背板906。在一个示例中,第二插槽916可以包括cPCI连接器等,用于将背板906与第二I/O模块904接合。此外,第二模块健康控制器912可以通过背板906可操作地连接至CPU 908。以该方式,第二模块健康控制器912可以与CPU 908通信地耦接。此外,第二模块健康控制器912可以通过背板906与第一I/O模块902(或更具体地,第一I/O模块902的第一模块健康控制器910)可操作地连接并可以通过背板906通信地耦接至第一I/O模块902。
根据一些示例,并且如以下更详细所述,将第一I/O模块902连接至背板906的第一插槽914可以被视作“奇数”插槽(例如插槽#1),同时将第二I/O模块904连接至背板906的第二插槽916可以被视作“偶数”插槽(例如插槽#2)。因此,根据一些示例,第一I/O模块902和第二I/O模块904可以连接至相邻插槽,其中一个插槽被视作奇数插槽而另一个被视作偶数插槽,以共同地形成“插槽配对”。尽管以下示例考虑构成相邻I/O模块的插槽配对,但本领域技术人员应该认识到,本文中所述的功能可以合适由并未直接彼此邻接的I/O模块配对所执行。例如,根据一些示例,第一I/O模块902和第二I/O模块904可以通过一个或多个中间I/O模块分离而不脱离本文的教导。
此外,尽管为了简便每个I/O模块示出为仅包括单个模块健康控制器,但根据一些示例,每个I/O模块可以包括一个或多个额外的模块健康控制器。例如,根据一些实施方式(并且在以下示例中讨论),每个I/O模块可以包括两个模块健康控制器:模块健康控制器“A”和模块健康控制器“B”。在该实施方式中,每个模块健康控制器可以断言对应的模块健康信号(例如模块健康信号A(“MHA“)和模块健康信号B(“MBH”))。然而,此外,图9示出了简化版本,由此每个I/O模块示出为仅包括可以断言通用模块健康信号(“MH”)的单个模块健康控制器。
通常而言,在操作中,第一I/O模块902和第二I/O模块904可以“配对”以发送反映了第一I/O模块902和第二I/O模块904两者的共同健康的模块健康信号MH 922。也就是说,如果第一I/O模块902或第二I/O模块904均不健康,则MH信号922将反映配对是不健康的。相反地,如果第一I/O模块902和第二I/O模块904两者是健康的,则MH信号922将反映模块902、904两者都是健康的。在其中第一I/O模块902和第二I/O模块904以配对方式报告它们的健康状态的场景中,CPU 908可以被配置为基于I/O模块902、904的所报告健康的属性而将I/O模块902、904置于各种状态。这些状态可以包括工作状态、备用状态或故障安全状态。此外,反映了模块配对的健康的特定MH信号922可以由第一I/O模块902、第二I/O模块904或I/O模块902和904两者发送而不脱离本文的教导。
每个I/O模块(例如第一I/O模块902)通过在模块之间共享的各种信号而知晓其配偶(例如第二I/O模块904)的健康。这些信号可以包括模块健康(MH)信号922、模块健康配对输入(MHPI)信号924、模块健康配对输出(MHPO)信号926、配对模块当前输入(PMPI)信号928、以及配对模块当前输出(PMPO)信号930。
以下的定义和讨论考虑了其中每个I/O模块包括两个模块健康控制器(例如如上所述的控制器A和B)的架构,但是等同地适用于图9中所示的简化架构。在其中每个I/O模块包括“A”控制器和“B”控制器的示例中,每个控制器可以生成/接收以下信号的各自“A”和“B”版本。此外,以下规约根据本公开的一些实施方式而应用。记号Signal_Name*(星号)可以用于指定当为逻辑真或被断言时被驱动为低的、并且当为逻辑假或被去断言时为高(或浮置)的信号。记号Signal_Name(无星号)可以用于指定当为逻辑真或被断言时被驱动为高(或浮置)、的且当为逻辑假或被去断言时为低的信号。
MH 922用于共同地指由I/O模块902、904所驱动的模块健康A(MHA)和模块健康B(MHB)信号,以向CPU 908发信告知它们是健康的并准备好进入工作状态或备用状态。
MHPI信号924用于共同地称作模块健康配对输入A(MHPIA*)和模块健康配对输入B(MHPIB*)信号。这些是由第一I/O模块902和第二I/O模块904监控的点对点信号,以确定它们的配偶是否准备好进入工作状态或备用状态。第二I/O模块904的MHPI*信号由背板906连接至第一I/O模块92的MHPO*信号并且反之亦然。
MHPO信号926用于共同地称作模块健康配对输出A(MHPOA*)和模块健康配对输出B(MHPOB*)信号。这些是由第一I/O模块902和第二I/O模块904驱动的点对点信号,以向彼此指示它们是健康的并准备好进入工作状态或备用状态。第二I/O模块904的MHPO*信号通过背板906连接至第一I/O模块902的MHPI*信号并且反之亦然。
PMPI信号928用于共同地称作配对模块当前输入A(PMPIA*)和配对模块当前输入B(PMPIB*)信号。这些是由第一I/O模块902和第二I/O模块904所监控的点对点信号,以确定它们的配对是否存在。第二I/O模块904的PMPI*信号通过背板906连接至第一I/O模块902的PMPO*信号并且反之亦然。
进一步,PAIR信号918和GA0信号920可以用于初始化I/O模块。更具体地,GA0信号920可以被配置为通知给定I/O模块其被安装在哪个背板插槽中。例如,在其中模块根据“偶数”和“奇数”配置而配对的实施方式中,GA0信号920可以通知给定模块关于它是否在偶数或奇数插槽中。PAIR信号918可以被配置为通知给定I/O模块其是否与另一I/O模块配对。
以下讨论反映***900的操作的模式的一个示例。
模块健康信号MHA和MHB(共同地称作MH 922)由I/O模块(例如第一I/O模块902)断言,以指示其是健康的并准备好进入工作状态或备用状态。如果MHA或MHB不被断言,则I/O模块(例如第一I/O模块902)可以不进入工作状态或备用状态。当其MHA和MHB两者都被断言时,其可以进入工作状态或备用状态。在一些示例中,(例如,如果I/O模块遵照安全完整性水平4需求(Safety Integrity Level 4requirements)),则I/O模块可以每个包括两个模块健康控制器(如上所述)的冗余且分离的集合以驱动MHA信号和MHB信号。
MHA和MHB可以由CPU 908监控,当安装在***900中并由应用软件分类为安全相关的所有模块断言了它们的MH信号(例如MH信号922)时,CPU 908断言机架健康A(CHA)信号和机架健康B(CHB)信号。
以下讨论和要求可以等同地适用于MHA和MHB两者。MHA和MHB可以是动态信号(即携带了预定的、重复模式以指示它们被断言(逻辑真)的信号)并且可以通过驱动插槽专用位模式(参见例如图12,示出了被断言的动态信号的一个示例)而断言。可以通过驱动它们为低而去断言MHA和MHB。当I/O模块已经得出它不再健康的结论时,其将去断言MHA和MHB两者并且进入故障安全状态。在一些示例中,MHA和MHB的断言和去断言将彼此具有不超过200微秒的不同。
可以在每个插槽配对(例如偶数和奇数插槽配对)之间共享模块健康(MH)922,使得当I/O模块902、904两者是健康的并准备好进入工作状态或备用状态时,模块健康922被断言。
当配对时,第一I/O模块902和第二I/O模块904可以均具有与安全相关或无干扰(即并不影响***的安全性的模块或功能)相同的安全分类,均是本地的且在CPU 908机架健康寄存器中。
如上所述,图9图示第一I/O模块和第二I/O模块如何互联以提供配对的模块健康功能的一个示例。如上所述,图仅示出了两个冗余模块健康控制器中的一个(例如第一模块健康控制器910)以及包括在I/O模块(例如第一I/O模块902)中的关联的信号。
继续参照图9,I/O模块902、904通过监控GA0*信号920而确定它们是否被安装在奇数插槽或偶数插槽中。在一个示例中,GA0*信号920可以构成与给定I/O模块相关联的插槽地理地址的最低有效位。
继续参照图9,I/O模块902、904通过监控PAIRA*信号和PAIRB*信号(共同为PAIR*918)而确定它们是否与另一(例如相邻)插槽配对。信号PAIR*918可以由背板906置于低或者浮置。根据一些示例,I/O模块902、904被配置为当PAIR*918为低时作为配对工作,并且被配置为当PAIR*918为高时独立地工作。
根据一个示例,如果PAIR*918为低,则I/O模块902、904将如在该部分中所述而通过断言MH 922来声明它们是健康的。当PAIRB*为高时,I/O模块902、904可以独立操作以通过断言MH 922来声明它们是健康的。如果I/O模块检测到PAIRA*和PAIRB*两者并非均为高或均为低,则其可以永久地驱动MHA和MHB为低。
除了驱动和监控连接在I/O模块配对与CPU 908之间的共享的MHA和MHB信号之外,每个I/O模块也可以使用专用通信信道将其自己的存在和健康交叉通信传送至其配对的I/O模块:
对等模块当前输出A和B(PMPOA*和PMPOB*);
对等模块当前输入A和B(PMPIA*和PMPIB*);
模块健康配对输出A和B(MHPOA*和MHPOB*);以及
模块健康配对输入A和B(MHPIA*和MHPIB*)。
在以下讨论中,为了简化目的仅使用共同的名字(例如PMPO、PMPI、MHPO和MHPI)。
PMPO*930和PMPI*928可以在配对的插槽(例如第一插槽914和第二插槽916)之间交叉连接在背板906上以指示I/O模块存在。当存在配对的I/O模块(并驱动PMPO*930为低)时,PMPI*928可以感测为低。
类似地,MHPO*926和MHPI*924可以在背板906上的配对插槽之间交叉连接以传递I/O模块健康状态。当存在配对插槽且驱动MHPO*926为低(健康)时,感测MHPI*924为低。当存在配对I/O模块并驱动MHPO*926为高(不健康)时,感测MHPI*924为高。
根据一些示例,当***900加电时,每个I/O模块将驱动PMPOA*和PMPOB*为低且维持其低以指示存在其配对。根据一个示例,如果I/O模块检测到PMPOA*和PMPOB*有超过200微秒的不同,则其可以驱动MHA和MHB为低并进入故障安全状态。
根据一些示例,如果I/O模块检测到PMPIA*和PMPIB*有超过200微秒的不同,则其可以驱动MHA和MHB为低并进入故障安全状态。
根据一些示例,当进入初始化状态时,I/O模块可以驱动MHPOA*和MHPOB*为高以向其配对I/O模块指示其是不健康的。
根据一些示例,当成功地完成初始化时,I/O模块可以驱动MHPOA*和MHPOB*为低以向其配对的I/O模块指示其是健康的。
根据一些示例,如果I/O模块检测到MHPOA*和MHPOB*有大于200微秒的不同,则其可以驱动MHA和MHB为低并进入故障安全状态。
根据一些示例,如果I/O模块检测到MHPIA*和MHPIB*有大于200微秒的不同,则其可以驱动MHA和MHB为低并进入故障安全状态。
根据一些示例,I/O模块上的局部逻辑可以通过断言模块健康控制器中的特定位而指示I/O模块准备好。例如,在SWM(例如图5的SWM 506)中,模块健康控制器可以包括由硬件和POST断言、并当硬件或运行时诊断故障时被去断言的控制位HW,由用户应用软件断言的APP,以及由硬件断言的WD定时器。当所有这些被断言时,SWM是可操作的。任何这些控制位的去断言可以指示I/O模块不再可操作。术语“模块准备好”用于通常指在模块健康控制器中的位的集合,其指示I/O模块准备好进入工作状态或备用状态。当在这样的情形时,模块健康控制器可以断言本地信号mRA和mRB(共同为mR)。
现在参照图10,提供了I/O模块健康状态图1000。图10的状态图1000可以可应用于MHA和MHB两者(例如在其中每个I/O模块包括双模块健康控制器的实施方式中)。在1002处,确定I/O模块将要***插槽中并且设置MH值以浮置。当检测到低PAIR*信号时,流程继续至1004,其中检测到配对条件并且设置PMPO*信号为低。
当从1004检测到低GA0*值时,流程继续至1006,其中I/O模块检测其在奇数插槽中(奇数和偶数在该示例中是配对规则;然而,可以合适地使用其他配对条件而不脱离本公开的教导)并初始化。I/O模块将保持在1006处所述的状态,只要mR=False(mR=逻辑假)。当检测到mR=Ture(mR=逻辑真)时,流程从1006继续至1008,其中设置MHPO*信号为低。I/O模块将保持在1008处所述状态,只要PMPI*信号保持低。当检测到PMPI*信号为高,流程从1008继续至1010,其中I/O模块断言其模块健康(MH)信号。当检测到MH=False(MH=逻辑假),流程从1010继续至1012,其中I/O模块去断言其MH信号。如在图10中重要描述的,如果(i)mR=False,(ii)MHA≠MHB;或(iii)MHPI=False(MHPI=逻辑假),则将出现MH=False条件。
当从1004检测到高GA0*信号时,流程继续至1014,其中I/O模块检测到其在偶数插槽中并初始化。I/O模块将保持在1014处所述的状态,只要mR=False。当检测到mR=Ture,则流程从1014继续至1016,其中设置MHPO*信号为低。当从1016检测到低PMPI*信号时,流程继续至1018并且等待奇数I/O模块。当从1018检测到低MHPI*信号,则流程继续至1020,其中I/O模块断言其MH信号。暂时返回至1016,当检测到高PMPI*信号时,流程从1016继续至1020,其中I/O模块断言其MH信号。当检测到MH=False,则流程从1020继续至1012,其中I/O模块去断言其MH信号。
返回至1002,当从1002检测到高PAIR*信号时,流程继续至1022,其中检测到非配对条件并且I/O模块进入初始化状态。I/O模块将保持在1022处所述状态,只要mR=False。当检测到mR=Ture时,流程从1022继续至1024,其中I/O模块断言其MH信号。当检测到MH=False时,则流程从1024继续至1012,其中I/O模块去断言其MH信号。
图11是图示用于配置用于信号配对的示例性I/O模块的逻辑的表格1100。更具体地,图11制定针对I/O模块断言或去断言其MH信号(即,在每个I/O模块架构的单个模块健康控制器中的单个MH信号,或者在每个I/O模块架构的多个模块健康控制器中的两个或更多信号)的示例条件。表格1100中的项目“X”指示信号的状态对于该特定场景无关紧要。此外,从左侧起第二列中阐述的值“GALSb*”可以描述如下。为了防止错误决定,可以引入冗余位RGA0*并与GA0*信号组合。为了讨论的目的,GA0*和RGA0*共同地称作GALSb*。GALSb*可以在背板上奇数插槽中被置于低并且在背板上偶数插槽中浮置。(GA0*和RGA0*可以由I/O模块独立地拉高)。如果GALSb*是低的,则I/O模块可以如该部分中所述操作作为奇数模块。如果GALSb*是高的,则其可以操作作为偶数模块。如果I/O模块检测到GA0*和RGA0*两者均不为高或均不为低,则其可以永久地驱动MHA和MHB为低并进入故障安全状态。
表格1100的列限定了与给定I/O模块相关联的各个信号值和/或状态。在行1102处,I/O模块并未准备好进入工作状态或备用状态,因此其驱动MH为低且驱动MHPO*为高。在行1104处,如果PAIR*为高且I/O模块准备好进入工作状态或备用状态,则其可以断言MH。在行1106处,如果PAIR*为低,I/O模块可以驱动PMPO*为低以指示其存在(即存在于插槽中)。在行1108处,如果PAIR*为低且I/O模块准备好进入工作状态或备用状态,则其可以驱动MHPO*为低,但是如果PMPI*为低且MHPI*为高,则继续驱动MH为低。在行1110处,如果PAIR*为低且I/O模块准备好进入工作状态或备用状态,则其可以驱动MHPO*为低,并且如果其检测到PMPI*为高则可以断言MH。最终,在行1112处,如果PAIR*为低且PMPI*为低,且偶数I/O模块准备好进入工作状态或备用状态,其可以驱动MHPO*为低并当检测到MHPI*为低时断言MH。
图12是图示示例性动态模块健康信号1204的图1200和对应的表格1202。信号1204可以通过示例且非限定性方式展示与配对的IO模块相对应的MH信号,或者与单个I/O模块相对应的模块健康信号。信号1204是动态的,因为其构成了重复的、预定的位模式。在图1200和表格1202中所示的示例中,位模式是定义为11010010100的11位。当然,本领域技术人员应该认识到,可以利用任意足够长的合适的位模式而不脱离本公开的教导。在一些示例中,不同的I/O模块可以驱动不同的MH信号模式以断言它们各自的模块健康。在一些示例中,如果PAIR*为低,则配对的I/O模块可以驱动MHA和MHB上相同的位模式。
现在转向图13,示出了图示配对I/O模块健康信号的方法1300的流程图。方法1300开始于1302处。在1304处,第一I/O模块接收指示第一I/O模块是否应该断言配对的模块健康信号或单个模块健康信号的PAIR信号。在1306处,做出关于第一I/O模块是否应该断言配对的模块健康信号或单个模块健康信号的决定。
如果做出第一I/O模块应该断言配对的模块健康信号的决定,则方法1300继续至1308,其中第一I/O模块断言配对的模块健康信号。配对的模块健康信号可以指示第一I/O模块和可操作地连接至第一I/O模块的第二I/O操作模块两者的模块健康。在1308之后,方法1300可以继续至可选择的步骤1312,其中将第一I/O模块和第二I/O模块(例如由CPU)置于以下状态中的一个:工作状态或备用状态。最终,在1308(或可选择地1312)之后,方法1300可以结束于1316。
如果,在1306处,做出第一I/O模块应该断言单个模块健康信号的决定,则方法1300继续至1310,其中第一I/O模块断言单个健康模块信号。单个模块健康信号可以指示仅第一I/O模块的模块健康。在1310之后,方法1300可以继续至可选择的步骤1314,其中第一I/O模块(例如由CPU)置于以下状态之一:工作状态或备用状态。最终,在1310(或可选择地1314)之后,方法1300可以结束于1316。
为了示意和说明的目的已经提供了实施例的前述描述。并非意在穷举或限制本公开。特定实施例的单个要素或特征通常不限于该特定实施例,而是可应用地可互换并且可以用于所选择实施例,即使并未具体示出或描述。这也可以以许多方式改变。该改变不应视作脱离本公开,并且所有该修改意在包括在本公开的范围内。
如本文所使用的,术语模块(或控制器)可以指以下的一部分或包括以下:专用集成电路(ASIC);电子电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器(共享、专用或群组);提供所述功能的其他合适硬件部件;或者以上的一些或全部的组合(诸如在片上***中)。术语模块可以包括存储了由处理器执行的代码的存储器(共享、专用或群组)。
如以上所使用的,术语代码可以包括软件、固件和/或微代码,并且可以指程序、例程、函数、类和/或对象。如以上所使用的,术语共享意味着可以使用单个(共享)处理器执行来自多个模块的一些或全部代码。此外,可以由单个(共享)存储器存储来自多个模块的一些或全部代码。如以上所使用的,术语群组意味着可以使用处理器的群组执行来自单个模块的一些或全部代码。此外,可以使用存储器的群组存储来自单个模块的一些或全部代码。
本文所述的装置和方法可以由一个或多个处理器所执行的一个或多个计算机程序实施。计算机程序包括存储在非瞬态有形计算机可读介质上的处理器可执行指令。计算机程序也可以包括所存储的数据。非瞬态有形计算机可读介质的非限定性示例是非易失性存储器、磁性存储装置和光学存储装置。

Claims (19)

1.一种***,包括:
中央处理单元CPU;
第一输入/输出I/O模块,所述第一输入/输出I/O模块包括可操作地连接至所述CPU的第一模块健康控制器;以及
第二I/O模块,所述第二I/O模块包括可操作地连接至所述第一模块健康控制器和所述CPU的第二模块健康控制器,
其中所述第一模块健康控制器和所述第二模块健康控制器中的一个被配置为断言配对的模块健康信号至所述CPU,所述配对的模块健康信号指示所述第一I/O模块和所述第二I/O模块是健康的。
2.根据权利要求1所述的***,其中,所断言的配对的模块健康信号包括重复的、预定的位模式。
3.根据权利要求1所述的***,其中,所述CPU被配置为当接收到所断言的配对的模块健康信号时,将所述第一I/O模块和所述第二I/O模块置于以下状态中的一个:工作状态或备用状态。
4.根据权利要求1所述的***,其中,所述第一模块健康控制器和所述第二模块健康控制器中的一个被配置为:如果所述第一I/O模块和所述第二I/O模块中的至少一个是不健康的,则去断言所述配对的模块健康信号。
5.根据权利要求4所述的***,其中,所去断言的配对的模块健康信号包括低信号。
6.根据权利要求4所述的***,其中,所述CPU被配置为当接收到所去断言的配对的模块健康信号时,将所述第一I/O模块和所述第二I/O模块置于故障安全状态。
7.根据权利要求1所述的***,进一步包括:
背板,所述背板可操作地连接至所述第一模块健康控制器、所述第二模块健康控制器和所述CPU,
其中所述背板被配置为在所述第一模块健康控制器和所述第二模块健康控制器之间传送信号。
8.根据权利要求7所述的***,其中,所述信号包括以下中的至少一个:
对等模块当前输出PMPO信号;
对等模块当前输入PMPI信号;
模块健康配对输出MHPO信号;和
模块健康配对输入MHPI信号。
9.根据权利要求1所述的***,其中,所述第一模块健康控制器和所述第二模块健康控制器中的每一个被配置为接收PAIR信号,所述PAIR信号指示所述第一I/O模块和所述第二I/O模块是否应该单独地断言所述第一I/O模块和所述第二I/O模块各自的健康状态或以配对方式断言所述第一I/O模块和所述第二I/O模块各自的健康状态。
10.一种方法,包括:
通过第一输入/输出I/O模块接收指示所述第一I/O模块是否应该断言配对的模块健康信号或单个模块健康信号的PAIR信号;
响应于指示所述第一I/O模块应该断言所述配对的模块健康信号的所述PAIR信号,通过所述第一I/O模块断言所述配对的模块健康信号;以及
响应于指示所述第一I/O模块应该断言所述单个模块健康信号的所述PAIR信号,通过所述第一I/O模块断言所述单个模块健康信号,
其中所述配对的模块健康信号指示所述第一I/O模块和可操作地连接至所述第一I/O模块的第二I/O模块两者的模块健康,并且
其中所述单个模块健康信号指示仅所述第一I/O模块的模块健康。
11.根据权利要求10所述的方法,进一步包括:
响应于所述第一I/O模块断言所述配对的模块健康信号,将所述第一I/O模块和所述第二I/O模块置于以下状态中的一个:工作状态或备用状态。
12.根据权利要求10所述的方法,其中,所断言的模块健康信号包括重复的、预定的位模式。
13.根据权利要求10所述的方法,进一步包括:
响应于确定所述第一I/O模块和所述第二I/O模块中的至少一个是不健康的,通过所述第一I/O模块去断言所述配对的模块健康信号。
14.根据权利要求13所述的方法,其中,所去断言的模块健康信号包括低信号。
15.根据权利要求13所述的方法,进一步包括:
响应于所述第一I/O模块去断言所述配对的模块健康信号,将所述第一I/O模块和所述第二I/O模块置于故障安全状态。
16.根据权利要求10所述的方法,进一步包括:
在所述第一I/O模块与所述第二I/O模块之间传送信号。
17.根据权利要求16所述的方法,其中,所述信号包括以下中的至少一个:
对等模块当前输出PMPO信号;
对等模块当前输入PMPI信号;
模块健康配对输出MHPO信号;和
模块健康配对输入MHPI信号。
18.根据权利要求10所述的方法,进一步包括:
响应于所述第一I/O模块断言所述单个模块健康信号,将所述第一I/O模块置于以下状态中的一个:工作状态或备用状态。
19.根据权利要求18所述的方法,其中,所断言的单个模块健康信号包括重复的、预定的位模式。
CN201811055220.9A 2017-09-11 2018-09-11 用于故障安全计算***的模块扩展的信号配对 Active CN109491842B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/700,561 US10621024B2 (en) 2017-09-11 2017-09-11 Signal pairing for module expansion of a failsafe computing system
US15/700,561 2017-09-11

Publications (2)

Publication Number Publication Date
CN109491842A true CN109491842A (zh) 2019-03-19
CN109491842B CN109491842B (zh) 2023-10-10

Family

ID=65632199

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811055220.9A Active CN109491842B (zh) 2017-09-11 2018-09-11 用于故障安全计算***的模块扩展的信号配对

Country Status (2)

Country Link
US (1) US10621024B2 (zh)
CN (1) CN109491842B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110231961A (zh) * 2019-06-27 2019-09-13 杭州迪普信息技术有限公司 一种主控板重启的控制方法及***
CN113395256A (zh) * 2021-05-08 2021-09-14 浙江众合科技股份有限公司 一种sil4设备保持网口安全输出的方法和***及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126852A1 (en) * 2006-08-14 2008-05-29 Brandyberry Mark A Handling Fatal Computer Hardware Errors
US20100312942A1 (en) * 2009-06-09 2010-12-09 International Business Machines Corporation Redundant and Fault Tolerant control of an I/O Enclosure by Multiple Hosts
US20120210172A1 (en) * 2011-02-15 2012-08-16 International Business Machines Corporation Multiprocessor switch with selective pairing
CN104714853A (zh) * 2013-12-16 2015-06-17 艾默生网络能源-嵌入式计算有限公司 使用cots组件的容错故障安全计算机***
US20150168993A1 (en) * 2013-12-16 2015-06-18 Emerson Network Power - Embedded Computing, Inc. Safety Relay Box System
US20150293806A1 (en) * 2014-04-14 2015-10-15 Artesyn Embedded Computing, Inc. Direct Connect Algorithm

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434512B1 (en) * 1998-04-02 2002-08-13 Reliance Electric Technologies, Llc Modular data collection and analysis system
US6931568B2 (en) * 2002-03-29 2005-08-16 International Business Machines Corporation Fail-over control in a computer system having redundant service processors
US7330999B2 (en) * 2003-04-23 2008-02-12 Dot Hill Systems Corporation Network storage appliance with integrated redundant servers and storage controllers
US7047440B1 (en) * 2004-07-27 2006-05-16 Freydel Lev R Dual/triple redundant computer system
DE102004058288A1 (de) * 2004-12-02 2006-06-08 Robert Bosch Gmbh Vorrichtung und Verfahren zur Behebung von Fehlern bei einem Prozessor mit zwei Ausführungseinheiten
US7574322B2 (en) * 2005-05-10 2009-08-11 Microsoft Corporation Automated client device management
US7991867B2 (en) * 2006-07-13 2011-08-02 Cisco Technology, Inc. Server checking using health probe chaining
US20100049268A1 (en) * 2007-02-20 2010-02-25 Avery Biomedical Devices, Inc. Master/slave processor configuration with fault recovery
WO2012131447A1 (en) * 2011-03-30 2012-10-04 Tejas Networks Limited System architecture and method for communication between devices over backplane to reduce interface count
US9173100B2 (en) * 2011-11-16 2015-10-27 Autoconnect Holdings Llc On board vehicle network security
US9317359B2 (en) * 2013-12-16 2016-04-19 Artesyn Embedded Computing, Inc. Reliable, low latency hardware and software inter-process communication channel for safety critical system
US9747184B2 (en) * 2013-12-16 2017-08-29 Artesyn Embedded Computing, Inc. Operation of I/O in a safe system
CN104765587B (zh) * 2014-01-08 2018-12-14 雅特生嵌入式计算有限公司 用于使处理器同步到相同的计算点的***和方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126852A1 (en) * 2006-08-14 2008-05-29 Brandyberry Mark A Handling Fatal Computer Hardware Errors
US20100312942A1 (en) * 2009-06-09 2010-12-09 International Business Machines Corporation Redundant and Fault Tolerant control of an I/O Enclosure by Multiple Hosts
US20120210172A1 (en) * 2011-02-15 2012-08-16 International Business Machines Corporation Multiprocessor switch with selective pairing
CN104714853A (zh) * 2013-12-16 2015-06-17 艾默生网络能源-嵌入式计算有限公司 使用cots组件的容错故障安全计算机***
US20150168993A1 (en) * 2013-12-16 2015-06-18 Emerson Network Power - Embedded Computing, Inc. Safety Relay Box System
US20150169427A1 (en) * 2013-12-16 2015-06-18 Emerson Network Power - Embedded Computing, Inc. Fault-Tolerant Failsafe Computer System Using COTS Components
US20150293806A1 (en) * 2014-04-14 2015-10-15 Artesyn Embedded Computing, Inc. Direct Connect Algorithm

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HONGZHOU YU 等: "Design of a fault-tolerant voter for safety related analog inputs", 《2010 3RD INTERNATIONAL CONFERENCE ON ADVANCED COMPUTER THEORY AND ENGINEERING》 *
郭御风 等: "一种面向多核处理器I/O***软错误容错方法", 《计算机工程与科学》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110231961A (zh) * 2019-06-27 2019-09-13 杭州迪普信息技术有限公司 一种主控板重启的控制方法及***
CN113395256A (zh) * 2021-05-08 2021-09-14 浙江众合科技股份有限公司 一种sil4设备保持网口安全输出的方法和***及电子设备

Also Published As

Publication number Publication date
US10621024B2 (en) 2020-04-14
CN109491842B (zh) 2023-10-10
US20190079823A1 (en) 2019-03-14

Similar Documents

Publication Publication Date Title
US10120772B2 (en) Operation of I/O in a safe system
CN104977907B (zh) 容错性失效保护***和方法
JP2000508453A (ja) 故障分離のためのデジタルデータ処理方法及び装置
CN104714517B (zh) 用于安全关键***的可靠、低延迟的硬件和软件进程间通信通道
CN104765587B (zh) 用于使处理器同步到相同的计算点的***和方法
KR102284080B1 (ko) 2채널 아키텍처
JP2008009795A (ja) 診断装置,回線診断方法及び回線診断プログラム
CN104714862B (zh) 用于安全和任务关键***的表决架构
JP2006285631A (ja) 二重化システム
CN109491842A (zh) 用于故障安全计算***的模块扩展的信号配对
CN104714853B (zh) 使用cots组件的容错故障安全计算机***
CN113791937A (zh) 一种数据同步冗余***及其控制方法
US9311212B2 (en) Task based voting for fault-tolerant fail safe computer systems
CN108572893A (zh) 用于安全***的端到端fpga诊断
CN109144758A (zh) 安全***的菊花链
RU2767018C2 (ru) Способ функционирования комплексов средств автоматизации систем обработки информации и управления и устройство, его реализующее
JPH04241039A (ja) ベーシックプロセッシングユニット及び高信頼化コンピュータシステム
Yu et al. Formal verification of active-standby switchingon safety computer in next generation train control system
Kwag Fault diagnosis in a fully distributed local computer network
JPH04241038A (ja) 高信頼化コンピュータシステム及びその復旧方法並びにプロセッサボード及びその交換方法
JPH11265415A (ja) 端末回線制御装置を備えた二重化したトータリゼータ・システム
JPH0581055A (ja) 電子計算機の二重化方式
AKITA et al. SAFETY AND FAULT-TOLERANCE

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
GR01 Patent grant
GR01 Patent grant