CN104714510B - 用于容错故障安全计算机系统的基于任务的表决 - Google Patents
用于容错故障安全计算机系统的基于任务的表决 Download PDFInfo
- Publication number
- CN104714510B CN104714510B CN201310689941.6A CN201310689941A CN104714510B CN 104714510 B CN104714510 B CN 104714510B CN 201310689941 A CN201310689941 A CN 201310689941A CN 104714510 B CN104714510 B CN 104714510B
- Authority
- CN
- China
- Prior art keywords
- task
- signal
- voting
- module
- health
- 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.)
- Active
Links
- 230000036541 health Effects 0.000 claims abstract description 132
- 239000000872 buffer Substances 0.000 claims abstract description 36
- 239000012536 storage buffer Substances 0.000 claims abstract description 7
- 238000000034 method Methods 0.000 claims description 37
- 230000004044 response Effects 0.000 claims description 11
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 claims 1
- 230000003862 health status Effects 0.000 description 26
- 230000006854 communication Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 19
- 238000012544 monitoring process Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000001514 detection method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/418—Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
- G05B19/4184—Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by fault tolerance, reliability of production system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1633—Error detection by comparing the output of redundant processing systems using mutual exchange of the output between the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/165—Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Manufacturing & Machinery (AREA)
- Automation & Control Theory (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开用于容错故障安全计算机系统的基于任务的表决。一种系统包括:将多个第一任务写至第一存储器缓冲器的第一应用;接收多个第一任务的复本的第二存储器缓冲器;将多个第二任务写至第三存储器缓冲器的第二应用;以及接收多个第二任务的复本的第四存储器缓冲器。该系统进一步包括第一比较模块,其基于第一任务和第二任务之间的第一比较,生成第一表决信号。该系统进一步包括第二比较模块,其基于第一任务和第二任务之间的第二比较,生成第二表决信号。所述系统进一步包括第一中央处理单元(CPU),其基于所述第一表决信号和所述第二表决信号,选择性地确定是否使模块健康信号失效。
Description
技术领域
本公开涉及容错故障安全计算机系统。
背景技术
该部分提供与本公开相关的背景信息,该背景信息不一定是现有技术。
本文提供的背景描述是为了概括地呈现本公开的背景。当前命名的发明人的工作,就其在该背景部分中描述的范围以及不可能另外成为提交时的现有技术的描述的方面而言,既不明确地也不隐含地被认为是相对于本公开的现有技术。
外部安全系统,如轨道系统,可以包括被配置为实现安全应用的容错故障安全计算机系统。该容错故障安全计算机系统可以包括多个硬件组件,该多个硬件组件以电气方式或以逻辑方式联接来实现安全应用。安全应用选择性地与安全临界硬件和软件通信。将安全临界硬件和软件配置为控制轨道系统的安全相关功能。
例如,在轨道系统上行驶的火车包括制动系统。将该制动系统配置为实现至少一个安全相关功能,如制动功能。该制动系统包括制动器和被配置为对该制动器进行促动的软件。该软件接收指令来对该制动器进行促动。例如,火车的驾驶员可以操作制动系统用户界面,以指示该软件对该制动器进行促动。该轨道系统的错误组件可以定期地生成差错指令来对该制动器进行促动。相应地,被配置为验证由外部安全系统接收的指令的容错故障安全计算机系统是期望的。
发明内容
该部分提供本公开的一般概括,并且不是本公开的全部范围或本公开的全部特征的全面公开。
一种系统包括:第一应用,该第一应用在第一时钟周期期间将多个第一任务写至第一存储器缓冲器;第二存储器缓冲器,该第二存储器缓冲器在第二时钟期间接收所述多个第一任务的复本;第二应用,该第二应用在所述第一时钟周期期间将多个第二任务写至第三存储器缓冲器;以及第四存储器缓冲器,所述第四存储器缓冲器在所述第二时钟周期期间接收所述多个第二任务的复本。所述系统进一步包括:第一比较模块,所述第一比较模块接收所述多个第一任务中的第一任务和所述多个第二任务中的第二任务,并且基于所述第一任务和所述第二任务之间的第一比较,选择性地生成第一表决信号。
所述系统进一步包括:第二比较模块,所述第二比较模块接收所述多个第一任务中的所述第一任务和所述多个第二任务中的所述第二任务,并且基于所述第一任务和所述第二任务之间的第二比较,选择性地生成第二表决信号。所述系统进一步包括第一中央处理单元(CPU),该第一中央处理单元基于所述第一表决信号和所述第二表决信号,选择性地确定是否使模块健康信号失效。
在其它特征中,一种方法包括:在第一时钟周期期间写多个第一任务;在第二时钟周期期间拷贝所述多个第一任务;在第一时钟周期期间写多个第二任务;在所述第二时钟周期期间拷贝所述多个第二任务;接收所述多个第一任务中的第一任务;接收所述多个第二任务中的第二任务;基于所述第一任务和所述第二任务之间的第一比较,选择性地生成第一表决信号;基于所述第一任务和所述第二任务之间的第二比较,选择性地生成第二表决信号;基于所述第一表决信号和所述第二表决信号,选择性地确定是否使模块健康信号失效。
其它应用领域将从本文提供的描述中变得清楚。该发明内容中的描述和特定示例旨在仅用于说明目的,而不旨在限制本公开的范围。
附图说明
本文描述的图仅用于所选择实施例的说明用途,而不是用于所有可能的实现,并且不旨在限制本公开的范围。
图1是根据本公开原理的容错故障安全计算机系统的功能框图;
图2是根据本公开原理的故障安全底架的功能框图;
图3是根据本公开原理的基于任务的表决系统的功能框图;以及
图4是图示根据本公开原理的基于任务的表决计算机的操作方法的流程图。
在附图的全部几个图中,相对应的附图标记表示相对应的部分。
具体实施方式
现在将参考附图更全面地描述示例实施例。
现在参考图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和待命FSC108。为了提高系统100的可用性和可靠性,活跃FSC104和待命FSC108是冗余FSC。例如,将活跃FSC104配置为运行待命FSC108的任何和全部操作。以此方式,当活跃FSC104和待命FSC108之一遇到硬件或软件故障时,活跃FSC104和待命FSC108中另一个被配置为代替故障的FSC操作。
活跃FSC104实现二选二(2oo2)表决体系结构,该二选二表决体系结构检测表决不匹配并且在发生表决不匹配时执行故障安全操作。2oo2表决体系结构包括双冗余处理和表决子系统。冗余处理和表决子系统对进入或离开活跃FSC104的分组进行表决。例如,活跃FSC104接收多个进入数据分组。活跃FSC104接收多个进入数据分组中第一分组的两个复本。
活跃FSC104确定第一分组的有效性。活跃FSC104基于第一分组是否有效的确定,连续地生成第一健康状态信号和第二健康状态信号。在一些实现中,连续地生成信号可以包括将该信号设置为第一预确定的值。然后,所连续生成的信号保持在该第一预确定的值,直到使将信号失效(de-asserted)为第二预确定的值。
活跃FSC104将第一分组的这两个复本的每个复本进行比较。当这两个复本相同时,活跃FSC104确定第一分组是有效的。当活跃FSC104确定第一分组是有效的时,活跃FSC104连续地生成第一健康状态信号和第二健康状态信号。可以将第一健康状态信号和第二健康状态信号生效(assert)为第一值。在一些实现中,第一值等于1。在另一实现中,第一值可以是表示该FSC104是健康的一串字符。
相反,当活跃FSC104确定第一分组的这两个复本不相同时,活跃FSC104使第一健康状态信号和第二健康状态信号失效。要理解,第一健康状态信号和第二健康状态信号可以被失效为第二值。例如,第二值可以等于0。在另一实现中,第二值可以是表示该FSC104不健康的一串字符。如下面将更详细地描述的,活跃FSC104包括第一处理器和第二处理器。当第一处理器确定第一分组的复本是有效的时,第一处理器连续地生成第一健康状态信号。类似地,当第二处理器确定第一分组的第二复本是有效的时,第二处理器连续地生成第二健康状态信号。
活跃FSC104将第一健康状态信号和第二健康状态信号传递至系统100。系统100监视第一健康状态信号和第二健康状态信号,以确定活跃FSC104是否是健康的。例如,当系统100接收第一健康状态信号和第二健康状态信号时,系统100确定活跃FSC104是健康的。相反,当系统100未收到第一健康状态信号和第二健康状态信号之一时,系统100确定活跃FSC104是不健康的。
如下面将更详细地讨论的,系统100指示活跃FSC104在安全状态下操作,以便保持系统100的安全。要理解,尽管仅关于失效的第一状态信号和第二状态信号讨论表决不匹配,但是系统100内的任何硬件或软件故障可以导致使第一状态信号和第二状态信号之一失效。健康状态信号可以表示系统100正根据预确定的操作标准操作。以此方式,健康状态信号表示系统100是健康的。
当活跃FSC104确定第一分组的这两个复本不相同时,活跃FSC104确定已经发生表决错误。活跃FSC104根据已经发生表决错误的确定,生成错误信号。该错误信号表示系统100内检测到的错误。该错误可以由系统100内或外部安全系统内的硬件或软件故障引起。出于可用性的原因,如果活跃FSC104遇到硬件或软件故障,则系统100迫使活跃FSC104至预确定的安全状态。然后,待命FSC108作为活跃FSC操作。
活跃FSC104和待命FSC108中每个FSC均可以包括多个通信链路。这些通信链路包括但不限于上行链路、下行链路和用户界面。上行链路是较高层设备的双向通信信道。该较高层设备可以是在总体系统体系结构中包括的系统硬件。例如,较高层设备可以是轨道系统的轨道制动系统的组件。
下行链路是较低层硬件的双向通信信道。例如,较低层硬件可以包括与较高层设备通信的交换机和中继器(relay)。下行链路可以依照任何适合的硬件标准实现。例如,可以将下行链路实现为RS-232、RS-422、RS-485、CAN、MVB、以太网、以太网HSR环网或其它适合的技术。用户界面是被设计为允许系统100的用户访问系统100的组件和子系统的界面。仅例如,可以将用户界面实现为多个发光二极管(LED)。
通信链路与系统100外部的硬件组件和软件应用通信。进一步,将系统100配置为接收输入并将输出传递给现场工程师。例如,现场工程师可以通过与系统100的用户界面通信,选择性地配置系统100。
将活跃FSC104和待命FSC108中每个FSC布置为运行健康和安全应用。例如,活跃FSC104和待命FSC108包括存储器和处理器。健康和安全应用可以是被加载到活跃FSC104和待命FSC108的存储器内的软件。然后,健康和安全应用由活跃FSC104和待命FSC108的处理器运行。
健康和安全应用监视并控制活跃FSC104和待命FSC108。例如,健康和安全应用生成多个健康信号。多个健康信号可以包括但不限于模块健康信号和屏蔽信号。健康和安全应用基于例如活跃FSC104中的错误,生成多个信号。健康和安全应用是功能安全子系统,其被设计为检测故障并通过迫使活跃FSC104或待命FSC108之一进入安全状态来对故障做出响应。
要理解,健康和安全应用可以包括在外部安全系统上运行的任何安全应用。这可以包括在一组数据元素由轨道系统的硬件和软件运行以前保证该组数据元素的有效性和安全性。还将健康和安全应用配置为,在该健康和安全应用检测到系统100中的故障时,保证轨道系统在预确定的安全状态下操作。
活跃FSC104和待命FSC108中每个FSC包括处理子系统。活跃FSC104处理子系统包括主中央处理单元(CPU)116a和检查器CPU120a。类似地,待命FSC108处理子系统包括主CPU116b和检查器CPU120b。将主CPU116a和116b中每个CPU配置为相同。类似地,将检查器CPU120a和120b中每个检查器配置为相同。以此方式,主CPU116a、主CPU116b、检查器CPU120a和检查器CPU120b起到提高系统100的可用性和可靠性的作用。
为监视和控制系统100的总体健康和安全,还将主CPU116a和检查器CPU120a配置为相同。例如,主CPU116a和检查器CPU120a运行相同的软件并且实现相同的处理功能。将主CPU116a和检查器CPU120a配置为执行相同的功能,以便保持安全临界硬件和软件的全硬件错误和差错检测覆盖,并且允许以正确的顺序对外出分组进行表决。
在一些实现中,主CPU116a从轨道系统的安全临界硬件或软件中至少之一中接收执行任务的请求。该执行任务的请求基于由安全临界硬件和软件从外部安全系统的操作者接收的命令。例如,轨道系统的操作者可以命令在轨道系统上行驶的列车提高速度。操作者可以促动列车内的物理操纵杆。将物理操纵杆布置为生成表示提高列车速度的命令的信号。将该信号传递至安全临界硬件和软件。
在运行该命令以前,安全临界硬件和软件将安全相关任务传递至系统100。将系统100配置为解释该信号并且确定与该信号关联的请求任务。然后,系统100确定所请求的任务是否表示安全相关任务。例如,所请求的任务可以是安全相关任务或者非安全相关任务。在一个示例中,非安全相关任务包括指示安全临界硬件和软件返回在轨道系统内操作的列车的当前状态的指令。在另一示例中,安全相关任务包括指示安全临界硬件和软件提高列车速度的指令。
系统100将所请求的任务与一系列预限定的任务进行比较。基于预限定的任务,系统100确定所请求的任务是否是安全相关的。当系统100确定所请求的任务是安全相关任务时,系统100生成与所请求的任务对应的分组。要理解,尽管本文只描述安全相关任务,但是系统100可以根据任何任务生成分组。系统100将分组传递至主CPU116a。将主CPU116a和检查器CPU120a都配置为,在安全临界硬件和软件运行所请求的任务以前验证分组的有效性。例如,执行任务的请求可以是多个进入数据分组之一。
同时,检查器CPU120接收与所请求的任务对应的同一分组的复本。将主CPU116a和检查器CPU120a中每个CPU都配置为将分组的复本传递至主CPU116a和检查器CPU120a中的另一CPU。在主CPU116a指示安全临界硬件和软件执行所请求的任务以前,主CPU116a和检查器CPU120a对由主CPU116a和检查器CPU120a中每个CPU接收的分组进行比较。例如,主CPU116a和检查器CPU120a对分组执行2oo2表决。
当分组是相同的时,主CPU116a指示安全临界硬件和软件执行所请求的任务。例如,主CPU116a和检查器CPU120a生成与所请求的任务关联的外出分组。当表决成功时(即,分组是相同的),主CPU116a将外出分组传递至安全临界硬件和软件去运行所请求的任务。
外出分组可以包括控制I/O的操作数据元素、读取输入来搜集信息的请求、健康消息、对中间过程通信的请求、或与安全临界硬件和软件关联的其它适合的请求。操作数据元素可以包括指示安全临界硬件和软件之一运行预确定的过程的一组指令。例如,操作数据元素可以指示安全临界软件运行加速过程。加速过程包括控制至少一个安全临界硬件组件。该至少一个硬件组件包括列车的节流阀机构。
相反,当分组不相同时,主CPU116a和检查器CPU120a不指示安全临界硬件和软件执行所请求的任务。主CPU116a生成错误信号。该错误信号表示系统100、安全临界硬件和软件或外部安全系统内的故障。以此方式,主CPU116验证所请求的任务是来自有效源(即外部硬件组件或软件应用)的有效请求。
仅例如,主CPU116a接收由外部硬件故障、软件差错或整体系统失灵引起的执行任务的差错请求。要理解,尽管仅描述主CPU116a和检查器CPU120a,但是上面描述的原理还适用于主CPU116b和检查器CPU120b。
活跃FSC104和待命FSC108中每个FSC均包括多个输入/输出单元(IOU)模块。活跃FSC104包括IOU模块128a-128f。下文中,将IOU模块128a-128f称为IOU模块128。类似地,待命FSC108包括IOU模块132a-132f,IOU模块132a-132f与IOU模块128a-128f相同。下文中,将IOU模块132a-132f称为IOU模块132。
活跃FSC104和待命FSC108每个还包括表决子系统、输入/输出(I/O)子系统以及分别的交换模块124a和交换模块124b。将交换模块124a和交换模块124b配置为相同。交换模块124a和交换模块124b将从I/O子系统接收的分组路由至主CPU116a和116b以及检查器CPU120a和120b。
例如,交换模块124a可以将从主CPU116a接收的分组路由至外部网络组件。进一步,交换模块124a从外部组件接收分组并且将所接收的分组路由至主CPU116a、检查器CPU120b以及I/O子系统。进一步,交换模块124a将所接收的分组传递至表决子系统。应当理解,尽管仅描述交换模块124a,但是上面描述的原理还适用于交换模块124b。
IOU模块128实现活跃FSC104内的I/O子系统。将该I/O系统配置为提供下层网络设备和主CPU116a及检查器CPU120a之间的网关。IOU模块128将主CPU116a和检查器CPU120a与由外部硬件和软件需要的下层协议隔离。以此方式,IOU模块128在内部以太网上添加安全层,以支持主CPU116a、检查器CPU120a和外部硬件和软件之间的安全通信。IOU模块128和交换模块124a可以被共同称为前刀片(blade)124a-128f。类似地,IOU模块132和交换模块124b可以被共同称为前刀片124b-132f。
活跃FSC104和待命FSC108还包括多个后端转换模块(RTM)。活跃FSC104包括RTM136a-136i。待命FSC108包括RTM140a-140i。应当理解,由于待命FSC108是活跃FSC104的冗余配置,所以RTM136a-136i与RTM140a-140i是相同的。在一些实现中,RTM136a-136i中每个可以是可热交换的现场可更换单元(FRU)。
例如,RTM136a-136i中每个RTM可以由现场工程师在不必首先对全部系统100断电的情况下移除和更换。RTM136a-136i允许活跃FSC104与外部硬件组件和软件组件通信。例如,RTM136a以电的方式和以逻辑方式将主CPU116a联接至活跃FSC104外部的组件。类似地,RTM136b以电的方式和以逻辑方式将待命FSC108联接至外部的硬件组件和软件组件。
前刀片124a-128f每个包括第一存储器位置和第二存储器位置。第一存储器位置和第二存储器位置存储从活跃FSC104的对应硬件组件接收的值。例如,主CPU116a连续地生成表示主CPU116a的模块健康状况的模块健康信号(上面描述的)。当模块健康信号表示主CPU116a是健康的时,主CPU116a将“1”存储在第一存储器位置中。
前刀片124a-128f和主CPU116a中每个均生成模块健康信号。前刀片124a-128f中每个前刀片将表示模块健康信号的值存储在第一存储器位置中。仅例如,当模块健康信号表示交换模块124a是健康的时,交换模块124a将“1”存储在与交换模块124a关联的第一存储器位置中。
相反,当模块健康信号表示交换模块124a是不健康的时,交换模块124a将“0”存储在第一存储器位置中。要理解,尽管仅描述交换模块124a,但是本文讨论的原理适用于系统100内的所有模块。进一步要理解,尽管仅描述基于模块健康信号存储“1”和“0”,但是可以使用任何适合的指示符来表示系统100内的每个模块的健康状况。然后,系统100内的每个模块将存储在关联的第一存储器位置中的值传递至主CPU116a。
主CPU116a基于与由前刀片124a-128f中每个前刀片生成的模块健康信号和由主CPU116a生成的模块健康信号对应的多个值的接收,确定活跃FSC104是否是健康的。仅例如,当所接收的与模块健康信号对应的值中每个值表示系统100内的每个模块均是健康的时,主CPU116a确定活跃FSC104是健康的。相反,当所接收的与模块健康信号对应的值中至少一个值表示系统100内的模块中至少一个模块是不健康的时,主CPU116a确定活跃FSC104是不健康的。
在另一实现中,将表示模块健康信号的值存储在在系统100的前端配置的模块中。例如,当模块健康信号表示主CPU116a是健康的时,在系统100的与RTM136相对侧配置的模块将“1”存储在第一存储器位置中。要理解,尽管仅描述主CPU116a,但是本文描述的原理适用于检查器CPU120a。
主CPU116a接收多个进入数据分组中的第一分组。同时,检查器CPU120a接收第一分组的复本。主CPU116a和检查器CPU120a确定第一分组和第一分组的复本是否相同。当第一分组和第一分组的复本相同时,主CPU116a连续地生成模块健康信号。可以将模块健康信号设置为1或者高的信号值。模块健康信号的值表示活跃FSC104的健康状况。主CPU116a将“1”存储在第一存储器位置中。
相反,当第一分组和第一分组的复本不相同时,主CPU116a生成无效的模块健康信号。例如,主CPU116a使模块健康信号失效。主CPU116a将“0”存储在第一存储器位置中。主CPU116a接收表示主CPU116a内的屏蔽寄存器的状态的屏蔽信号。例如,屏蔽寄存器是主CPU116a和检查器CPU120a中每个CPU内的可编程的位。
当所请求的任务是安全相关的任务时,设置屏蔽寄存器。例如,当系统100确定所请求的任务是安全相关任务时,将屏蔽寄存器设置为1。当屏蔽信号表示主CPU116a内的屏蔽寄存器被设置为1时,RTM136a将“1”存储在第二存储器位置中。相反,当屏蔽信号表示主CPU116a内的屏蔽寄存器被设置为0时,RTM136a将“0”存储在第二存储器位置中。
系统100还包括监视狗计时器应用。监视狗计时器应用是持续运行的监视狗功能,其表示主CPU116a是否已经停止运行代码。例如,监视狗计时器应用监视主CPU116a。主CPU116a生成监视狗计时器复位信号。主CPU116a将监视狗计时器复位信号传递至监视狗计时器应用。监视狗计时器应用确定监视狗计时器复位信号是否是在预限定的时间段内接收的。例如,预限定的时间段可以是1分钟。预限定的时间段可以是可配置的项。
监视狗计时器应用根据监视狗计时器复位信号生成监视狗健康信号。例如,当主CPU116a在预限定的时间段以后传递监视狗计时器复位信号时,监视狗计时器应用将监视狗健康信号设置为0。相反,当主CPU116a在预限定的时间段内传递监视狗计时器复位信号时,监视狗计时器应用将监视狗健康信号设置为1。换言之,当主CPU116a不能在预限定的时间段内与监视狗应用通信时,监视狗计时器应用确定主CPU116a内的错误。例如,错误可以是主CPU116a被卡在软件循环中的结果。要理解,尽管上面仅描述主CPU116a,但是将检查器CPU120a配置为与主CPU116a相同的任务。
RTM136a传递表示主CPU116a的总体健康状况的模块健康值。例如,将RTM136a配置为对存储在第一存储器位置中的值和存储在第二存储器位置中的值执行逻辑“或(OR)”。例如,当存储在第一存储器位置中的值是0并且存储在第二存储器位置中的值是0时,RTM136a将传递0的模块健康值。
当存储在第一存储器位置中的值是1并且存储在第二存储器位置中的值是0时,RTM136a传递1的模块健康值。要理解,将RTM136a-136i中每个RTM配置为对存储在与前刀片124a-128f中每个前刀片关联的存储器中的值执行逻辑“或”。
RTM136a和136b将底架健康值传递至安全继电器箱模块144。安全继电器箱模块144基于多个底架健康值,选择性地确定系统100内的FSC中哪个FSC将是活跃FSC并且哪个FSC将是待命FSC。例如,安全继电器箱模块144从RTM136a、RTM136b、RTM140a和RTM140b接收多个底架健康值。RTM136a基于由主CPU116a和前刀片124a-128f生成的模块健康信号的累积结果和存储在屏蔽寄存器中的值,生成第一底架健康值。
RTM136a将底架健康值传递至安全继电器箱模块144。类似地,RTM136b基于由检查器CPU120a和前刀片124a-128f生成的模块健康信号的累积结果和存储在屏蔽寄存器中的值,生成第二底架健康值。RTM140a基于由主CPU116b和前刀片124b-132f生成的模块健康信号的累积结果和存储在屏蔽寄存器中的值,生成第三底架健康值。类似地,RTM140b基于由检查器CPU120b和前刀片124b-132f生成的模块健康信号的累积结果和存储在屏蔽寄存器中的值,生成第四底架健康值。
安全继电器箱模块144确定活跃FSC104和待命FSC108中哪个FSC将作为系统100内的活跃FSC操作。例如,安全继电器箱模块144基于第一底架健康值至第四底架健康值确定活跃FSC104将作为系统100内的活跃FSC操作。当第一底架健康信号和第二底架健康信号表示活跃FSC104是健康的时,安全继电器箱模块144确定活跃FSC104将是系统100内的活跃FSC。
安全继电器箱模块144基于活跃FSC确定,生成活跃FSC信号和待命FSC信号。例如,安全继电器箱模块144生成第一活跃FSC信号和第二活跃FSC信号。第一活跃FSC信号和第二活跃FSC信号是冗余信号,它们都表示选择哪个FSC作为活跃FSC操作。安全继电器箱模块144还生成第一待命FSC信号和第二待命FSC信号。
第一待命FSC信号和第二待命FSC信号是冗余信号,它们都表示选择哪个FSC作为待命FSC操作。安全继电器箱模块144将第一活跃FSC信号和第一待命FSC信号传递至活跃FSC104。类似地,安全继电器箱模块144将第二活跃FSC信号和第二待命FSC信号传递至待命FSC108。
安全继电器箱模块144还基于第一底架健康信号至第四底架健康信号确定在活跃FSC104和待命FSC108之一中是否已出现错误。例如,当安全继电器箱模块144从RTM136a和RTM136b之一接收无效底架健康信号时,安全继电器箱模块144确定在活跃FSC104中已发生错误。例如,无效底架健康信号可以是0的底架健康值。安全继电器箱模块144基于无效的底架健康信号生成待命信号。安全继电器箱模块144将待命信号传递至活跃FSC104。活跃FSC104基于该待命信号确定是否进入故障安全状态。例如,当活跃FSC104接收待命信号时,活跃FSC104确定进入故障安全状态。
安全继电器箱模块144基于底架健康值生成活跃信号。安全继电器箱模块144将活跃信号传递至待命FSC108。活跃信号向待命FSC108指示活跃FSC104正操作在故障安全状态或待命状态。当待命FSC108接收活跃信号时,待命FSC108开始作为活跃FSC操作。以此方式,安全继电器箱模块144迫使有故障的活跃FSC进入故障安全状态,并且提示待命FSC担当活跃FSC的角色。
在一些实现中,将安全继电器箱模块144配置为与多个商业现货供应(COTS)产品通信。例如,活跃FSC104和待命FSC108可以是在系统100内实现的COTS产品。根据预确定的实现标准,对活跃FSC104和待命FSC108进行配置。实现标准包括预限定的通信协议。
将安全继电器箱模块144配置为根据通信协议接收和解释来自活跃FSC104和待命FSC108的信号和消息。以此方式,无论活跃FSC104和待命FSC108的物理属性如何,只要活跃FSC104和待命FSC108服从通信协议,安全继电器箱模块144就与活跃FSC104和待命FSC108通信。要理解,安全继电器箱模块144与系统100内的任何组件通信。进一步,系统100内的任何组件可以使用COTS产品实现,只要该任何组件服从通信协议。
在一些实现中,I/O子系统还从像轨道系统的硬件组件和软件组件这样的外部源接收分组。所接收的分组可以包括上面讨论的多个进入数据分组。然后,I/O子系统将所接收的分组传递至表决子系统。
表决子系统是功能安全子系统并且被配置为检测故障和对故障做出响应。当表决子系统检测活跃FSC104和待命FSC108之一中的差错时,表决子系统迫使活跃FSC104和待命FSC108的该之一进入故障安全状态。表决子系统执行处理子系统的错误检测。例如,主CPU116a和检查器CPU120a基于所请求的任务生成外出分组。
表决子系统将由主CPU116a生成的外出分组与由检查器CPU120a生成的外出分组进行比较。当这些外出分组相同时,表决子系统将分组的单个复本传递至交换模块124a和I/O子系统。当外出分组不同时,表决子系统迫使活跃FSC104进入故障安全状态。以此方式,表决子系统检测活跃FSC104和待命FSC108之一中的错误。当检测活跃FSC104和待命FSC108之一中的错误时,表决子系统通过迫使有错误的FSC进入故障安全状态,将系统100带入安全状态。
表决子系统还从I/O子系统接收分组。例如,IOU模块128经由交换模块124a与表决子系统通信。IOU模块128将第一分组传递至交换模块124a。交换模块124a复制第一分组。例如,交换模块124a生成第二分组。第二分组是第一分组的复本。交换模块124a将第一分组传递至主CPU116a和检查器CPU120a。主CPU116a和检查器CPU120a如上面描述的那样对第一分组和第二分组运行表决逻辑。以此方式,表决子系统验证所接收的分组的有效性。
在另一示例中,由于外部组件中的硬件(如轨道系统中的安全临界硬件)失灵,第一分组可能与第二分组不同。当表决子系统确定第一分组与第二分组不同时,安全应用迫使活跃FSC104进入故障安全状态。此外或可替代地,可以悄悄地丢弃不匹配的分组。例如,主CPU116a和检查器CPU120a都不基于第一分组和第二分组生成外出分组。以此方式,系统100可以避免由其它可恢复的差错引起的过多故障转移/故障安全转换。在另一实现中,可以将输入表决配置为导致故障转移/故障安全转换。
现在参考图2,200处示出根据本公开原理的示例性故障安全底架(FSC)的框图。FSC200包括主CPU204和检查器CPU208.主CPU204和检查器CPU208运行相同的软件并且实现相同的处理功能。将主CPU204和检查器CPU208配置为执行相同的功能,以便保持安全临界硬件和软件的全硬件错误和差错检测覆盖。
例如,主CPU204从外部安全系统的安全临界硬件或软件至少之一中接收执行任务的请求。外部安全系统可以是需要根据预确定的安全标准操作的系统,如轨道系统。轨道系统包括安全临界硬件和软件。安全临界硬件和软件与轨道系统的组件交互,以便控制轨道系统的方面。例如,安全临界硬件和软件控制在轨道系统内操作的列车。
执行任务的请求可以包括但不限于:确定硬件组件的状态、接合轨道系统的制动器或者向轨道系统的操作者指示在轨道系统内操作的列车的位置。执行任务的请求是以分组的形式接收的。例如,执行任务的请求可以是多个进入数据分组之一。
同时,检查器CPU208接收同一请求的复本。将主CPU204和检查器CPU208中每个CPU都配置为将所请求的任务的复本传递至主CPU204和检查器CPU208中的另一CPU。在主CPU204执行所请求的任务以前,主CPU204和检查器CPU208对由主CPU204和检查器CPU208中每个CPU接收的所请求的任务进行比较。
当所请求的任务相同时,主CPU204和检查器CPU208将所请求的任务传递至安全临界硬件和软件。例如,主CPU204和检查器CPU208生成与所请求的任务关联的外出分组。外出分组包括操作数据元素。操作数据元素可以包括指示安全临界硬件和软件之一运行预确定的过程的一组指令。例如,操作数据元素可以指示安全临界软件运行制动器接合过程。制动器接合过程包括控制至少一个安全临界硬件组件。该至少一个硬件组件可以包括轨道系统的制动器机构。
相反,当所请求的任务不同时,主CPU204和检查器CPU208不将所请求的任务传递至安全临界硬件和软件。以此方式,主CPU204验证所请求的任务是来自有效源(即外部硬件组件或软件应用)的有效请求。仅例如,主CPU204接收由外部硬件故障、软件差错或整体系统失灵引起的执行任务的差错请求。
主CPU204和检查器CPU208包括屏蔽寄存器。屏蔽寄存器是主CPU204和检查器CPU208内的可编程的位。在屏蔽寄存器内存储的值是所请求的任务是否是安全相关任务的指示。例如,当系统100确定所请求的任务是安全相关任务时,将屏蔽寄存器设置为1。进一步,当系统100最初起动时,健康和安全应用设置屏蔽寄存器。
主CPU204和检查器CPU208每个均基于所请求的任务是否相同的确定,连续地生成模块健康信号。当主CPU204和检查器CPU208确定所请求的任务相同时,主CPU204和检查器CPU208连续地生成模块健康信号脉冲。当主CPU204和检查器CPU208确定所请求的任务不同时,主CPU204和检查器CPU208使模块健康信号脉冲失效。
主CPU204和检查器CPU208基于由与FSC200关联的多个模块中每个模块生成的多个模块健康信号脉冲,生成底架健康信号脉冲。FSC200包括与关于活跃FSC104描述的那些特征类似的特征。例如,FSC200包括如上面描述的前刀片124a-128f。FSC200内的每个模块连续地生成模块健康信号(如上面所述的)。当多个模块健康信号表示FSC200是健康的时,主CPU204生成第一底架健康信号脉冲。换言之,当屏蔽寄存器表示所请求的任务是安全相关的并且多个模块健康信号表示FSC200是健康的时,第一底架健康信号脉冲被连续地生效(即设置为1)。
要理解,当屏蔽寄存器表示所请求的任务不是安全相关的时(即屏蔽寄存器被设置为0),可以使第一模块健康信号脉冲失效。然而,将不运行安全相关的过程(即,迫使活跃FSC204进入安全状态。以此方式,当在安全相关任务期间发生错误时,仅实现故障转移/故障安全过程。底架健康信号脉冲表示FSC200的总体健康状况。
要理解,关于主CPU204描述的原理适用于检查器CPU208。检查器CPU208基于由与FSC200关联的多个模块中每个模块生成的多个模块健康信号脉冲,生成第二底架健康信号脉冲。当多个模块健康信号表示FSC200是健康的时,检查器CPU208连续地生成第二底架健康信号脉冲。主CPU204将第一底架健康信号脉冲传递至安全继电器箱212。类似地,检查器CPU208将第二底架健康信号脉冲传递至安全继电器箱212。
安全继电器箱模块212基于多个底架健康信号,选择性地确定FSC200是否将作为活跃FSC操作。例如,当初始化FSC200时,安全继电器箱模块212开始从主CPU204接收底架健康信号脉冲。安全继电器箱212还开始从检查器CPU208接收底架健康信号脉冲。安全继电器箱模块212基于底架健康信号,确定FSC200将被选择作为活跃FSC。
在一些实现中,安全继电器箱模块212还从另一FSC接收多个底架健康信号脉冲。安全继电器箱模块212基于多个底架健康信号脉冲,确定FSC200或另一FSC将被选择作为活跃FSC。例如,安全继电器箱模块212首先确定FSC200或另一FSC之一是否是健康的。当从FSC200接收的底架健康信号脉冲表示FSC200是健康的时,安全继电器箱模块212确定FSC200是健康的。例如,当安全继电器箱模块212从FSC200接收底架健康信号时,安全继电器箱模块212确定FSC200是健康的。
类似地,当从另一FSC接收的多个底架健康信号脉冲表示另一FSC是健康的时,安全继电器箱模块212确定另一FSC是健康的。当安全继电器箱模块212确定FSC200和另一FSC都是健康的时,安全继电器箱模块212基于FSC200和另一FSC中哪个FSC首先传递多个底架健康信号脉冲之一,选择活跃FSC。例如,当FSC200在另一FSC向安全继电器箱模块212传递信号以前向安全继电器箱模块212传递信号时,安全继电器箱212选择FSC200作为活跃FSC。
安全继电器箱模块212监视活跃FSC的健康状况。例如,安全继电器箱模块212从FSC200接收第一底架健康信号脉冲和第二底架健康信号脉冲。安全继电器箱模块212基于第一底架健康信号脉冲和第二底架健康信号脉冲,确定在FSC200中是否已发生错误。当第一底架健康信号脉冲和第二底架健康信号脉冲表示所请求的任务的不匹配时,安全继电器箱模块212确定在FSC200中已经发生错误。换言之,当安全继电器箱模块212未收到第一底架健康信号脉冲和第二底架健康信号脉冲之一时,安全继电器箱模块212确定已经发生错误。
当安全继电器箱模块212确定在FSC200中已经发生错误时,安全继电器箱模块212生成故障安全信号。安全继电器箱模块212将故障安全信号传递至活跃FSC200。FSC200基于该故障安全信号确定是否进入安全状态。例如,当FSC20接收故障安全信号时,FSC200进入安全状态。相反,FSC200将继续在活跃FSC模式下操作,除非FSC200接收故障安全信号。
可替代地,当FSC200未收到活跃信号时,FSC200可以进入待命状态。当安全继电器箱模块212确定FSC200要作为活跃FSC操作时,安全继电器箱模块212传递活跃信号。安全继电器箱模块212将活跃信号连续地传递至FSC200。当安全继电器箱模块212确定FSC200有错误时,安全继电器箱模块212不将活跃信号传递至FSC200。然后,FSC200操作在待命状态。
在一些实现中,将多个底架健康信号脉冲实现为动态脉冲信号,以消除未检测到的潜在的故障模式。将安全继电器箱模块212配置为确定脉冲信号被卡在0还是被卡在1。例如,安全继电器箱212从主CPU204接收第一脉冲信号。将安全继电器箱模块212配置为等待一段预确定的时间。
例如,该段预确定的时间可以是与对于使动态脉冲复位而言足够长的时间对应的时间段。当在预确定的时间段以后尚未复位第一脉冲信号时,安全继电器箱模块212确定第一脉冲信号被卡住。然后,当安全继电器箱模块212确定第一脉冲信号被卡住时,安全继电器箱模块212确定主CPU204中的错误。安全继电器箱模块212基于确定主CPU204中的错误,生成故障安全信号。
在一些实施例中,系统100实现如图3所示的基于任务的表决系统300。基于任务的表决系统300包括主CPU204和检查器CPU208。主CPU204和检查器CPU208中每个CPU均包括被配置为运行表决逻辑的现场可编程门阵列(FPGA)。例如,主CPU204包括主FPGA304,检查器CPU208包括检查器FPGA308。主FPGA304和检查器FPGA308中每个FPGA均被配置为实现基于任务的表决逻辑。进一步地,主FPGA304和检查器FPGA308中每个FPGA与基准时钟同步。
基准时钟是系统100内的20兆赫兹(MHz)时钟。基准时钟是公共基准时钟,系统100内的每个模块与该公共基准时钟同步。系统100内的每个模块均包括与基准时钟同步的锁相环。例如,系统100内的IOU模块可以包括以第一间隔计数的IOU时钟。IOU模块包括第一锁相环,该第一锁相环确定第一间隔和基准时钟间隔之间的基准点。当IOU模块与系统100内的另一模块通信时,IOU模块基于第一间隔和基准时钟间隔之间的基准点,确定当前基准时钟时间。以此方式,系统100内的每个模块可以参考对每个模块来说共用的基准时钟上的时间,以便在系统100内进行通信。
将主CPU204和检查器CPU208中每个CPU配置为运行系统100外部的软件应用。例如,主CPU204运行由上面描述的轨道应用请求的任务。将主CPU204配置为运行轨道应用的第一复本(第一复本)。将检查器CPU208配置为运行轨道应用的第二复本(第二复本)。将第一复本和第二复本中每个复本配置为同时运行任务。例如,当系统100重起动时,主CPU204和检查器CPU208中每个CPU分别发起第一复本和第二复本。使第一复本和第二复本与基准时钟同步,以便同时运行任务。
将主FPGA304和检查器FPGA308中每个FPGA配置为运行多个表决模式之一。在一个实现中,将主FPGA304和检查器FPGA308配置为运行基于任务的表决模式。例如,主FPGA304包括主软件(SW)写缓冲器312和主硬件(HW)比较缓冲器316。检查器FPGA308包括检查器SW写缓冲器320和检查器HW比较缓冲器324。
在基准时钟的第一周期期间,轨道应用的第一复本将要由主CPU204执行的多个第一任务写至主SW写缓冲器312。同时,在基准时钟的该第一周期期间,第二复本将要由主CPU204执行的多个第二任务写至检查器SW写缓冲器320。如上面描述的,主CPU204运行与轨道应用关联的任务。检查器CPU208与主CPU204相同。然而,仅主CPU204执行与轨道应用关联的任务。
将检查器CPU208配置为以与主CPU204步调一致地运行,然而,检查器CPU208不执行与轨道应用关联的任务。要理解,第一复本和第二复本是相同的应用。进一步要理解,第一复本和第二复本独立于彼此操作。基于任务的表决系统300基于向主SW缓冲器316和检查器SW缓冲器320写入的任务中的表决不匹配,确定在系统100中是否已经发生错误。
在一个实现中,在基准时钟的第二周期期间,主FPGA304将主SW写缓冲器312内的多个第一任务拷贝至主HW比较缓冲器316。基准时钟的第二周期可以在第一周期以后立即发生或者在第一周期后的预确定数量的周期以后发生。同时,在第二周期期间,检查器FPGA308将检查器SW写缓冲器320内的多个第二任务拷贝至检查器HW比较缓冲器324。以此方式,在第一周期期间由轨道应用向主SW写缓冲器312和检查器SW写缓冲器316写入的多个任务,在第二周期期间被移动至主HW比较缓冲器320和检查器HW比较缓冲器324。
然后,将多个第一任务和多个第二任务进行比较。在示例实现中,主FPGA304包括主比较模块328,检查器FPGA308包括检查器比较模块332。主比较模块328从主HW比较缓冲器316接收第一任务,从检查器HW比较缓冲器324接收第二任务。主比较模块328将第一任务与第二任务进行比较。主比较模块328基于该比较生成第一表决信号。例如,当主比较模块328确定第一任务和第二任务相同时,主比较模块328生成第一表决信号。主比较模块328将第一表决信号传递至主CPU204。相反,当主比较模块328确定第一任务和第二任务不同时,主比较模块328不生成第一表决信号。
类似地,检查器比较模块332从主HW比较缓冲器316接收第一任务,从检查器HW比较缓冲器324接收第二任务。检查器比较模块332将第一任务与第二任务进行比较。然后,检查器比较模块332基于该比较生成第二表决信号。例如,当检查器比较模块332确定第一任务和第二任务相同时,检查器比较模块332生成第二表决信号。检查器比较模块332将第二表决信号传递至主CPU204。相反,当检查器比较模块332确定第一任务和第二任务不同时,检查器比较模块332不生成第二表决信号。
主CPU204基于第一表决信号和第二表决信号,确定在主FPGA304和检查器FPGA308中是否发生表决不匹配。表决不匹配可以表示系统100内的错误。作为非限定性示例,当在第一周期期间第一复本和第二复本之一不写入主SW写缓冲器312或检查器SW写缓冲器320时,可能发生表决不匹配。可替代地,当在第一周期期间第一复本和第二复本之一部分地将数据写入主SW写缓冲器312或检查器SW写缓冲器320时,可能发生表决不匹配。
在一个实现中,当主CPU204接收第一表决信号和第二表决信号时,主CPU204确定未发生表决不匹配。主CPU204如上面描述那样连续地生成模块健康信号。当主CPU204未接收第一表决信号和第二表决信号中至少之一时,主CPU204确定发生表决不匹配。
当主CPU204确定已发生表决不匹配时,主CPU204使模块健康信号失效。要理解,主CPU204可以使先前生效的模块健康信号失效。例如,模块健康信号可以是连续生效的信号。当主CPU204确定已发生表决不匹配时,主CPU204使模块健康信号失效。
现在参考图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处结束。
已经为了说明和描述目的提供上面对实施例的描述。描述不旨在是详尽的或者限制本公开。特定实施例的单独元件或特征通常不局限于该特定实施例,而是可在适用时互换并且可以在选择的实施例中使用,即便未具体地示出或描述。本发明还可以以多种方式变化。这样的变化不应被视为背离本公开,并且所有这样的修改旨在包含在本公开的范围内。
本文中使用的术语“模块”可以指下面的组件、可以是下面的组件的一部分,或者可以包括下面的组件:专用集成电路(ASIC)、电子电路、组合逻辑电路、现场可编程门阵列(FPGA)、运行代码的处理器(共享的、专用的或它们的组合)、提供所描述的功能的其它适合的硬件组件、或者上面组件中一些组件或全部组件的组合,如在片上系统中。术语“模块”可以包括存储由处理器运行的代码的存储器(共享的、专用的或它们的组合)。
上面使用的术语“代码”可以包括软件、固件和/或微代码,并且可以指程序、例程、函数、类和/或对象。上面使用的术语“共享的”指来自多个模块的一些代码或全部代码可以使用单个(共享的)处理器运行。此外,来自多个模块的一些代码或全部代码可以由单个(共享的)存储器存储。上面使用的术语“组合”指来自单个模块的一些或全部代码可以使用一组处理器运行。此外,来自单个模块的一些或全部代码可以使用一组存储器存储。
本文描述的装置和方法可以被由一个或多个处理器运行的一个或多个计算机程序实现。计算机程序包括在非瞬态有形计算机可读介质上存储的处理器可运行指令。计算机程序还可以包括共享的数据。非瞬态有形计算机可读介质的非限定性示例是非易失性存储器、磁性存储和光存储。
Claims (20)
1.一种系统,包括:
第一应用,所述第一应用在第一时钟周期期间将多个第一任务写至第一存储器缓冲器;
第二存储器缓冲器,所述第二存储器缓冲器在第二时钟周期期间接收所述多个第一任务的复本;
第二应用,所述第二应用在第一时钟周期期间将多个第二任务写至第三存储器缓冲器;
第四存储器缓冲器,所述第四存储器缓冲器在第二时钟周期期间接收所述多个第二任务的复本;
第一比较模块,所述第一比较模块接收所述多个第一任务中的第一任务和所述多个第二任务中的第二任务,并且基于所述第一任务和所述第二任务之间的第一比较,选择性地生成第一表决信号;
第二比较模块,所述第二比较模块接收所述多个第一任务中的所述第一任务和所述多个第二任务中的所述第二任务,并且基于所述第一任务和所述第二任务之间的第二比较,选择性地生成第二表决信号;和
第一中央处理单元(CPU),该第一中央处理单元基于所述第一表决信号和所述第二表决信号,选择性地确定是否使模块健康信号失效。
2.根据权利要求1所述的系统,其中所述第一中央处理单元(CPU)响应于接收所述第一表决信号和所述第二表决信号,确定不使所述模块健康信号失效。
3.根据权利要求1所述的系统,其中所述第一中央处理单元(CPU)响应于未接收所述第一表决信号,确定使所述模块健康信号失效。
4.根据权利要求1所述的系统,其中所述第一中央处理单元(CPU)响应于未接收所述第二表决信号,确定使所述模块健康信号失效。
5.根据权利要求1所述的系统,其中所述第一比较模块确定所述第一任务和所述第二任务是否相同。
6.根据权利要求5所述的系统,其中当所述第一比较模块确定所述第一任务和所述第二任务相同时,所述第一比较模块生成所述第一表决信号。
7.根据权利要求5所述的系统,其中当所述第一比较模块确定所述第一任务和所述第二任务不同时,所述第一比较模块不生成所述第一表决信号。
8.根据权利要求1所述的系统,其中所述第二比较模块确定所述第一任务和所述第二任务是否相同。
9.根据权利要求8所述的系统,其中当所述第二比较模块确定所述第一任务和所述第二任务相同时,所述第二比较模块生成所述第二表决信号。
10.根据权利要求8所述的系统,其中当所述第二比较模块确定所述第一任务和所述第二任务不同时,所述第二比较模块不生成所述第二表决信号。
11.一种方法,包括:
在第一时钟周期期间,写多个第一任务;
在第二时钟周期期间,拷贝所述多个第一任务;
在所述第一时钟周期期间,写多个第二任务;
在所述第二时钟周期期间,拷贝所述多个第二任务;
接收所述多个第一任务中的第一任务;
接收所述多个第二任务中的第二任务;
基于所述第一任务和所述第二任务之间的第一比较,选择性地生成第一表决信号;
基于所述第一任务和所述第二任务之间的第二比较,选择性地生成第二表决信号;
基于所述第一表决信号和所述第二表决信号,选择性地确定是否使模块健康信号失效。
12.根据权利要求11所述的方法,进一步包括:响应于接收所述第一表决信号和所述第二表决信号,确定不使所述模块健康信号失效。
13.根据权利要求11所述的方法,进一步包括:响应于未接收所述第一表决信号,确定使所述模块健康信号失效。
14.根据权利要求11所述的方法,进一步包括:响应于未接收所述第二表决信号,确定使所述模块健康信号失效。
15.根据权利要求11所述的方法,进一步包括:基于所述第一比较,确定所述第一任务和所述第二任务是否相同。
16.根据权利要求15所述的方法,进一步包括:基于所述第一任务和所述第二任务相同的确定,确定生成所述第一表决信号。
17.根据权利要求15所述的方法,进一步包括:基于所述第一任务和所述第二任务不同的确定,确定不生成所述第一表决信号。
18.根据权利要求11所述的方法,进一步包括:基于所述第二比较,确定所述第一任务和所述第二任务是否相同。
19.根据权利要求18所述的方法,进一步包括:基于所述第一任务和所述第二任务相同的确定,确定生成所述第二表决信号。
20.根据权利要求18所述的方法,进一步包括:基于所述第一任务和所述第二任务不同的确定,确定不生成所述第二表决信号。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310689941.6A CN104714510B (zh) | 2013-12-16 | 2013-12-16 | 用于容错故障安全计算机系统的基于任务的表决 |
US14/141,594 US9311212B2 (en) | 2013-12-16 | 2013-12-27 | Task based voting for fault-tolerant fail safe computer systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310689941.6A CN104714510B (zh) | 2013-12-16 | 2013-12-16 | 用于容错故障安全计算机系统的基于任务的表决 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104714510A CN104714510A (zh) | 2015-06-17 |
CN104714510B true CN104714510B (zh) | 2017-12-26 |
Family
ID=53368583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310689941.6A Active CN104714510B (zh) | 2013-12-16 | 2013-12-16 | 用于容错故障安全计算机系统的基于任务的表决 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9311212B2 (zh) |
CN (1) | CN104714510B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912430B (zh) * | 2016-04-08 | 2018-06-01 | 广州北极瑞光电子科技有限公司 | 一种具有备份的驯服时钟系统 |
US10372579B2 (en) * | 2017-03-10 | 2019-08-06 | Artesyn Embedded Computing, Inc. | FPGA mismatched packet stop for a safety system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101298284A (zh) * | 2008-06-04 | 2008-11-05 | 徐国栋 | 一种时变计算机及其实现方法 |
CN101931519A (zh) * | 2010-08-26 | 2010-12-29 | 北京交通大学 | 基于同步通信交换的三模冗余实现方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6971043B2 (en) * | 2001-04-11 | 2005-11-29 | Stratus Technologies Bermuda Ltd | Apparatus and method for accessing a mass storage device in a fault-tolerant server |
US6931576B2 (en) * | 2002-01-07 | 2005-08-16 | Sun Microsystems, Inc. | Data integrity device providing heightened error protection in a data processing system |
JP5651584B2 (ja) * | 2009-04-15 | 2015-01-14 | パナソニックIpマネジメント株式会社 | 水素生成デバイス |
-
2013
- 2013-12-16 CN CN201310689941.6A patent/CN104714510B/zh active Active
- 2013-12-27 US US14/141,594 patent/US9311212B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101298284A (zh) * | 2008-06-04 | 2008-11-05 | 徐国栋 | 一种时变计算机及其实现方法 |
CN101931519A (zh) * | 2010-08-26 | 2010-12-29 | 北京交通大学 | 基于同步通信交换的三模冗余实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US9311212B2 (en) | 2016-04-12 |
CN104714510A (zh) | 2015-06-17 |
US20150169426A1 (en) | 2015-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104765587B (zh) | 用于使处理器同步到相同的计算点的系统和方法 | |
CN104714855B (zh) | 安全系统中的输入/输出操作 | |
US9367375B2 (en) | Direct connect algorithm | |
CN104714517B (zh) | 用于安全关键系统的可靠、低延迟的硬件和软件进程间通信通道 | |
US9934111B2 (en) | Control and data transmission system, process device, and method for redundant process control with decentralized redundancy | |
JP2008009795A (ja) | 診断装置,回線診断方法及び回線診断プログラム | |
CN104714862B (zh) | 用于安全和任务关键系统的表决架构 | |
CN104714853B (zh) | 使用cots组件的容错故障安全计算机系统 | |
CN104714510B (zh) | 用于容错故障安全计算机系统的基于任务的表决 | |
CN108572638B (zh) | 用于安全系统的fpga不匹配数据包的停止 | |
CN109491842B (zh) | 用于故障安全计算系统的模块扩展的信号配对 | |
US8510594B2 (en) | Control system, control computer and method for operating a control system | |
CN108572893B (zh) | 用于安全系统的端到端fpga诊断的方法和系统 | |
US10621031B2 (en) | Daisy-chain of safety systems | |
JP5612995B2 (ja) | 入力バイパス型のフェイルセーフ装置及びフェイルセーフ用プログラム | |
JP2007323190A (ja) | データ通信を行う計算制御システム及びその通信方法 | |
Dambra et al. | Demonstrators |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Arizona, USA Applicant after: ARTESYN EMBEDDED COMPUTING, INC. Address before: Arizona, USA Applicant before: Emerson Network Power-Embedded Computing, Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant |