(57)【要約】【課題】許容ハザードレートが通常、動作時間１時間当たりエラーが１０−８個未満である、システムを提供する。【解決手段】この発明の一局面によれば、離散的な数の入力変数を表わす入力ベクトル（Ｉｎ）から、および離散的な数の状態変数を表わす状態ベクトル（Ｚｎ）から、状態変数が更新された新規の状態ベクトル（Ｚｎ＋１）と、離散的な数の出力変数を表わす出力ベクトル（Ｏｎ）とを求めるように構成された、コンピュータ化されたシステム、特に制御システムであって、出力変数は少なくとも１つの機器を制御するために、および／または情報を出力するために提供される、システムが提供される。システムは、入力ベクトルおよび状態ベクトルから新規の状態ベクトルおよび出力ベクトルを並列で求める複数の計算ユニットを含む。この発明によれば、システムは、少なくともすべての新規の状態ベクトルが各サイクルの後に計算ユニット間で交換されるように構成される。【選択図】図３
2018014102.tif 000002
【特許請求の範囲】
【請求項１】
離散的な数の入力変数を表わす入力ベクトル（Ｉｎ）から、および離散的な数の状態変数を表わす状態ベクトル（Ｚｎ）から、状態変数が更新された新規の状態ベクトル（Ｚｎ＋１）と、離散的な数の出力変数を表わす出力ベクトル（Ｏｎ）とを求めるように構成された、コンピュータ化されたシステムであって、前記システムは、前記出力変数が少なくとも１つの機器を制御するために使用されるように構成され、および／または、前記システムは、前記出力変数に基づいた情報が出力されるために構成され、前記システムは、前記入力ベクトルおよび前記状態ベクトルから前記新規の状態ベクトルおよび前記出力ベクトルを各々自律的に並列で求める複数の計算ユニットを含み、
前記システムは、少なくともすべての新規の状態ベクトルが各サイクルの後に前記計算ユニット間で交換されるように構成されることを特徴とする、コンピュータ化されたシステム。
【請求項２】
前記状態ベクトルに加えて、前記出力ベクトルおよび／または前記入力ベクトルも、各サイクルの後に交換される、請求項１に記載のシステム。
【請求項３】
各計算ユニットはそれ自体のバス（ＯＢ０…ＯＢｐ）を有し、各計算ユニットは、前記状態ベクトル、ならびに、適用可能であれば前記出力ベクトルおよび／または入力ベクトルを、前記それ自体のバスを介して残りの計算ユニットに送信するように構成される、請求項１または２に記載のシステム。
【請求項４】
前記計算ユニットの各々によって受信された前記状態ベクトル、ならびに、適用可能であれば出力ベクトルおよび／または入力ベクトルは、それら自体のベクトルと比較される、請求項１〜３のいずれか１項に記載のシステム。
【請求項５】
受信された前記ベクトルのうちの１つに差異がある場合、安全反応を起動するように構成された、請求項４に記載のシステム。
【請求項６】
前記安全反応は、前記システムのどの計算ユニットも、制御のために、および／または出力のために考慮に入れられないという結果を含む、請求項５に記載のシステム。
【請求項７】
計算ユニットは、プログラムコードまたは構成コードを互いに転送して検査するように構成される、請求項１〜６のいずれか１項に記載のシステム。
【請求項８】
各計算ユニットは、チェックサムコンピュータにより、前記出力ベクトルおよび／または前記出力ベクトルの部分量からチェックサムを形成するように構成され、前記出力ベクトルは、出力ユニットに転送されるべき前記出力変数を含み、前記計算ユニットの前記チェックサムコンピュータは異なっている、請求項１〜７のいずれか１項に記載のシステム。
【請求項９】
個々の前記チェックサムコンピュータは、前記チェックサムを計算するために異なる多項式を使用する、請求項８に記載のシステム。
【請求項１０】
前記チェックサムコンピュータは、異なる初期ベクトルを用いて計算する、請求項８または９に記載のシステム。
【請求項１１】
各計算ユニット（ＰＵ０…ＰＵｐ）は、想定された数の出力ユニットのうちの各出力ユニット（０ＩＯ…ｋＩＯ）について、アドレス、パケット数、データおよびチェックサムを用いて通信パケットを独立して計算する、請求項１〜１０のいずれか１項に記載のシステム。
【請求項１２】
たとえばネットワークインターフェイス（ＮＩ）を介して、前記計算ユニット（ＰＵ０…ＰＵｐ）の前記通信パケットをともに結合して合計パケットｋＳＰｎ＋１にするように、および、オプションでそれをグローバルアドレスおよびチェックサムで補足するように構成された、請求項１１に記載のシステム。
【請求項１３】
前記合計パケットが冗長情報を１回だけ送信するように構成された、請求項１２に記載のシステム。
【請求項１４】
前記出力変数の少なくとも部分量を各々受信するように、および、これに依存して、インターフェイスを介してコマンドまたは情報を出力するように構成された、複数の出力ユニット０ＩＯ…ｋＩＯを含む、請求項１〜１３のいずれか１項に記載のシステム。
【請求項１５】
各計算ユニットは、チェックサムコンピュータにより、前記出力ベクトルおよび／または前記出力ベクトルの部分量からチェックサムを形成するように構成され、前記出力ベクトルは、前記出力ユニットに転送されるべき前記出力変数を含み、前記計算ユニットの前記チェックサムコンピュータは異なっており、前記出力ユニットは、受信されたデータパケットがすべての計算ユニット（ＰＵ０…ＰＵｐ）の正しいチェックサムを有するかどうかをチェックすることができる、請求項１４に記載のシステム。
【請求項１６】
前記出力ユニットは、すべての計算ユニットのすべてのチェックサムが正しい場合のみ、前記インターフェイスへの出力を実行するように構成される、請求項１５に記載のシステム。
【請求項１７】
前記出力ユニットは、すべての計算ユニットの最小数のチェックサムが正しい場合のみ、前記インターフェイスへの出力を実行するように構成される、請求項１５に記載のシステム。
【請求項１８】
前記計算ユニット（ＰＵ）は中央システム（ＣＵ、ＣＵ＊）に割り当てられ、前記システムは、入力および／または出力ユニットへの前記中央システムの接続のためのネットワーク（Ｎ）を含む、請求項１〜１７のいずれか１項に記載のシステム。
【請求項１９】
利用可能性を増加させるための第２の冗長ネットワーク（Ｎ＊）を含む、請求項１８に記載のシステム。
【請求項２０】
請求項１〜１９のいずれか１項に記載のシステムとして各々設計された２つの中央システムを含む、冗長システム。
【請求項２１】
前記中央システム同士は、各サイクルの後に少なくともすべての新規の状態ベクトルを互いに交換するように構成される、請求項２０に記載の冗長システム。
【請求項２２】
前記中央システムの前記計算ユニットによって生成された前記状態ベクトルの、および／または、おそらくは出力および／または入力ベクトルの比較が差異をもたらす場合、各中央システムはサービスモードに入るように構成される、請求項２１に記載の冗長システム。
【請求項２３】
前記サービスモードでは、少なくとも他の計算ユニットとは異なるデータを生成した計算ユニットのプログラムが新たにロードされる、請求項２２に記載の冗長システム。
【請求項２４】
前記サービスモードから動作モードに戻った前記中央システムは、スレーブとして動作を再開する、請求項２１または２２に記載の冗長システム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の詳細な説明
この発明は、出力変数が多くの入力変数の関数として求められる、コンピュータ化されたシステム、特に制御システムに関する。この発明は特に、たとえば交通安全システム、鉄道輸送用の信号ボックス、複雑な製造設備の制御など、高い安全性が要求されるシステムに関する。
【背景技術】
【０００２】
技術に関し、制御システムが状態機械として表わされ得ることは、一般に知られている。そのようなシステムは、用途に依存していくつかの入力信号および出力信号といくつかの状態信号とを有しており、より大きいシステムは、数千もの入力信号、出力信号および状態信号を有し得る。図１は状態機械を概略的に示しており、Ｉｎは、入力変数（入力信号、ここで「信号」という用語は最も広い意味で理解されるべきであり、データも包含する）を表わす離散的な数の入力ベクトル、Ｌは論理、Ｚｎはそれぞれ現在の状態ベクトル、Ｏｎは、離散的な数の出力変数（最も広い意味での出力信号）を表わす出力ベクトルを示す。ベクトルＩｎ、Ｚｎ、Ｏｎの次元（すなわち、変数ごとの信号の数）は一般に異なる。
【０００３】
実際には、および従来技術によれば、そのようなシステムは通常、図２に従った分散された入力および出力で実現される。ここで、環境からの信号が入力および出力ユニット０ＩＯ…ｋＩＯによってサンプリングされ、その結果、サンプリングされたデータ０ＩＤ…ｋＩＤがデータレジスタ０ＩＤＲ…ｋＩＤＲに中間格納される。入力および出力ユニットは次に、入力パケット０ＩＰｎ…ｋＩＰｎの形をしたサンプリングされたデータを、ネットワークＮを介して中央ユニットＣＵに送信する。ここでのネットワークへのパケットの出力は、ネットワークインターフェイス０Ｔ…ｋＴを介して行なわれる。サンプリングされたデータ０ＩＤ…ｋＩＤに加えて、入力パケットは、送信エラーからの保護のためのさらなるテストデータ（ターゲットアドレス０ＡＩ…ｋＡＩ、チェックサム０ＣＲＣ…ｋＣＲＣ、および／またはその他）を含む。
【０００４】
中央ユニットＣＵで、入力パケットは受信機Ｒによって受信され、テストされる。テストが成功した場合、パケットに含まれたデータ０ＩＤ…ｋＩＤは、入力ベクトルＩｎに採用される。次に、論理Ｌが、入力ベクトルＩｎおよび状態ベクトルＺｎを、出力ベクトルＯｎおよび状態ベクトルＺｎ＋１上に写像化する。出力ベクトルは、入力／出力ユニット０…ｋＩＯのための出力データ０ＤＯ…ｋＤＯを含む。出力ベクトルに存在する出力データから、入力／出力ユニットのための出力パケット０ＯＰｎ…ｋＯＰｎが形成され、前記出力パケットも、入力パケットと同様にテストデータを含む。出力パケットは次に送信機Ｔからネットワークに転送され、ネットワークはこれらをそれぞれの入力および出力ユニットに送信する。
【０００５】
入力および出力ユニット上で、出力パケットは受信チップ０Ｒ…ｋＲによって受信され、検査される。検査が成功した場合、出力データは出力レジスタ０ＤＯＲ…ｋＤＯＲに、ひいては出力、たとえばそれぞれの出力ユニットによって制御されるべき装置に達する。
【０００６】
表わされた例では、外部の世界と信号（データまたは他の変数）を交換するユニットはすべて、入力および出力ユニットとして表わされる。しかしながら、入力ユニットのみを形成する、または出力ユニットのみを形成するユニットが存在することも可能である。計算ユニットとして、プログラムＰによって制御されるプログラマブルプロセッサ（ＣＰＵ）が、論理Ｌを実行するために適用され得る。しかしながら、プログラマブルゲートアレイ、いわゆるＦＰＧＡも考えられる。ここで、論理および手順制御は、構成メモリＰに位置する。
【０００７】
そのような態様に従って構成されるコンピュータシステムは、商業的に入手可能なマイクロプロセッサによって実現される場合、約１個のエラー／年というエラーレートを有する。そのようなエラーレートは、たとえば室温調節、照明調節、娯楽などといった多くの用途で許容され得る。しかしながら、たとえば鉄道安全技術、原子力発電所、または航空機のための制御システムといった、たった１つの機能不良が何百人もの人間の死をもたらし得る他の用途も存在する。
【０００８】
いくつかの計算ユニットが同じ計算を並列で実行し、結果を受信機に転送することにより、コンピュータシステムのハザードレートを減少させることができるということが、すでに知られている。それらが同じ結果に達しない場合、不良が明らかに生じている。システムはそれに対し、安全な状態を仮定してそれに対応することができる。鉄道における用途の場合での安全な状態は「すべての信号が赤」であり、それにより、すべての列車が停止する。その場合、設備はもはや利用可能ではないが、危険のリスクもまったくない。概して、原子力設備または航空機の場合、安全な状態はない。
【０００９】
エラー耐性があるコンピュータシステムの一例が、たとえばＥＰ１  ４４３  ３９９に開示されている。
【００１０】
コンピュータシステムのコンポーネントは、偶発的な損失または破壊による機能不良を有し得る。ある状況下では、これらの機能不良は、動作時にめったに使用されない機能にもっぱら影響を与える場合がある。そのような場合、潜伏エラーと言われる。潜伏エラーの場合、機能の２つの用途間で同じエラーがすべての並列計算ユニットで生じる確率は著しく増加する。従来技術によれば、そのような機能は、これに対抗するために定期的にテストされる。そのようなテストについての労力は相当なものであり、機能コードを実現するための労力さえも上回る場合がある。
【発明の概要】
【課題を解決するための手段】
【００１１】
この発明の目的は、従来技術の欠点を克服し、要求の多い用途にとって好適である、コンピュータ化されたシステム、特に制御システムであって、好ましくは、若干より誤動作しがちなＦＰＧＡを実装した場合でも、および好ましくは、潜伏エラーを検出するために広範なテストが要求されることなく、許容ハザードレートが通常、動作時間１時間当たりエラーが１０−８個未満である、システムを提供することである。
【００１２】
この目的は、特許請求項で定義されるようなシステムによって達成される。
この発明の一局面によれば、離散的な数の入力変数を表わす入力ベクトル（Ｉｎ）から、および離散的な数の状態変数を表わす状態ベクトル（Ｚｎ）から、状態変数が更新された新規の状態ベクトル（Ｚｎ＋１）と、離散的な数の出力変数を表わす出力ベクトル（Ｏｎ）とを求めるように構成された、コンピュータ化されたシステム、特に制御システムであって、出力変数は少なくとも１つの機器を制御するために、および／または情報を出力するために提供される、システムが提供される。システムは、入力ベクトルおよび状態ベクトルから新規の状態ベクトルおよび出力ベクトルを並列で求める複数の計算ユニットを含む。この発明によれば、システムは、少なくともすべての新規の状態ベクトルが各サイクルの後に計算ユニット間で交換されるように構成される。
【００１３】
少なくとも新規の状態ベクトルが各サイクルの後に交換されるという事実は、計算ユニットによって新たに計算された各状態ベクトルが他の計算ユニットにとって利用可能となる、ということを意味する。計算サイクルは、クロック制御された態様で、規定されたリズムで実行可能である。しかしながら、これはそうである必要はない。すべてのサイクルが同じ持続時間を有する必要はない。たとえば、新規の計算が定期的に行なわれないものの、たとえば入力ユニットが何かの変化を通知した場合といったある事象によってのみ起動されることが、起こり得る。特に、変数（入力変数、状態変数、出力変数）が離散値のみを仮定する場合、すなわち、特にシステムが仮定し得る状態の量が有限である場合（システムはその場合、いわゆる「有限機械」を表わす）、これはオプションである。しかしながら、この発明に従ったアプローチはまた、連続的に変更可能な変数を用いても機能する。
【００１４】
好ましくは、状態ベクトルに加えて、出力ベクトルおよび／または入力ベクトルも、各サイクルで交換される。入力ベクトルの交換は、潜在的に意味をなす。なぜなら、経路上の入力ユニットからいくつかの計算ユニットへの入力ベクトルの転送が常に同一の態様でその進路をたどることは保証されないためである。
【００１５】
それぞれのベクトルを交換するために、各計算ユニットはたとえば、それ自体の交換バスＯＢ０…ＯＢｐを有し、それを介して、各計算ユニットは残りの計算ユニットに結果を送信する。すなわち、計算ユニットは各々、他の計算ユニットのバスからデータを読出す可能性を有する（しかしながら、たとえばそれらの上に書込む可能性は有さない）。
【００１６】
特に、計算ユニットの各々によって受信された状態ベクトル、ならびに、おそらくは出力ベクトルおよび／または入力ベクトルは、それ自体のベクトルと比較され得る。
【００１７】
一実施形態では、規則的な、ほぼ等しい長さのサイクルが実行され、各サイクルは典型的には数ミリ秒である。これは、（直接、またはプログラムエラーによって生成された）各データエラーが認識され、おそらくは数ミリ秒後にすでに作用される、ということを意味する。
【００１８】
本発明の第１の実現化例によれば、差異が確認されるやいなや、たとえば計算ユニットがもはやデータパケットを出力せず、入力／出力ユニットがたとえば「すべての信号が赤」という安全な状態にされることによって、安全反応が起動される。この目的のために、個々の計算ユニットは、従来技術から公知であるように、すべての計算ユニットのための、または１つ以上の他のユニットのための供給電圧を遮断することができる。これに加えて、またはこれに代えて、「すべてのコンポーネントの制御された停止」または「アラーム」などの他の措置が提供され得る。この実現化例は特に、計算ユニットの数が少ない場合、たとえば２つである場合、および／または、特に高度の安全性が要求される場合に好まれ得る。
【００１９】
第２の実現化例によれば、予め規定された最小限の一致する結果が要求される。たとえば、基準は、ｐ個のプロセッサの場合、少なくとも１つ（１＜ｐ）の一致する（整合する）結果が、正しい実現のために要求されるようになっていてもよく、たとえば６／８アーキテクチャ（これは、現在のプロセッサのうちの少なくとも６つが同一の結果を生成することを意味する）である。この目的のために、以下のように処理を進めることができる：
−  他のすべての計算ユニットの結果との比較の結果（たとえば一致ｙ／ｎ、比較情報）が、たとえば比較結果（内部ベクトル）Ｘとして、転送されたデータとともに進み、すべてのＩ／Ｏユニットに供給される。したがって、これらおよび／または計算ユニット自体は、ベクトルＸに基づいて、すべての計算ユニットの比較結果のマトリクスを作成し、これから、いずれにせよ計算ユニットのうちの１つが誤った結果を生成したと結論付けることができる。Ｉ／Ｏユニットはまた、おそらくはテストデータに基づいて、データパケットが有効かどうかを決定することができる。パケットが有効でない場合、それぞれの出力ユニットはそれを無視し、そしておそらくはオプションで、関与する計算ユニットの再起動を起動することができる；
−  状態ベクトルも出力ユニットに転送され、次に、状態ベクトルおよび出力ベクトル、ならびにおそらくはテストデータに基づいて、出力ユニットは、該当する計算ユニットが、同一データを送出する十分多数の計算ユニットに属するかどうかを決定する。これに依存して、出力ユニットは、データを使用するかまたはそれを無視する；
−  これに加えて、またはこれに代えて（これも第１の実現化例についてのオプションとして当てはまる）、計算ユニットが、それ自体の状態ベクトル（ならびに、おそらくは出力および／または入力ベクトル）が、互いに同一で他の計算ユニットからのものである、予め規定された最小数の状態ベクトル（ならびに、おそらくは出力および／または入力ベクトル）とは異なる、ということを確認した場合、それはそれ自体をスイッチオフし、または再起動を開始する。同様に、そのようなスイッチオフまたは再起動はまた、計算ユニットのうちの他の計算ユニットによって、たとえば多数の計算ユニットによって、または専用の計算ユニット（マスター）によって、または外部制御インスタンス（監視コンピュータ）によって開始され得る。
【００２０】
第１の、またはおそらくは第２の実現化例の変形は、この発明に従って各々設計されたいくつかの部分システムから構成された冗長システムによる冗長性に基づいており、上述の措置は、エラーが確認された部分システムのためにのみ提供され、そのため、他の部分システムは、入力／出力ユニットが安全な状態にされる必要なく、邪魔されない態様で動作を続けることができる。この変数は、以下により詳細に説明される。
【００２１】
ハードウェアに固有の並列エラーを回避するように、いくつかの計算ユニットは異なる構成タイプのものであってもよく、特に、異なる製造業者らから製造されてもよい。
【００２２】
この発明に従ったアプローチを理解するために、計算ユニット（ＣＰＵ、ＦＰＧＡなど）のエラーモデルについてここに簡単に説明する。計算ユニットにおけるエラーには、考えられる原因が３つある：
１．データエラー：計算の結果に影響を及ぼすデータビットがそれらの値を変更する；
２．プログラムコードエラー：プログラムの実行を決定するメモリビットがそれらの値を変更する。これにより、計算の実行が変更される；
３．ハードウェアエラー：個々のトランジスタ／導体が短絡／割込を有する。
【００２３】
計算ユニットでは、データおよびプログラムは通常、揮発性半導体メモリに格納される。これらは、高温により、または宇宙放射により、それらの値を変更し得る。カテゴリー１のデータエラーおよびカテゴリー２のプログラムコードエラーは実際には、カテゴリー３のハードウェアエラーよりもおよそ１０００倍頻繁に起こる。
【００２４】
以下に考慮される用途について、データベクトルは数万ビットになると仮定され得る。プログラムコードは、１０００〜１０，０００だけより大きく、そのため、ここでのエラーレートも１００〜１０，０００倍高い。
【００２５】
この発明に従ったアプローチにより、エラータイプの各々が扱われるようになり、オプションで、広範囲な機能テストなしで完全に対処可能である。これはとりわけ、以下の理由による。
【００２６】
カテゴリー１：この発明によれば、個々の計算ユニットの内部データを含むすべての関連データが各計算サイクルで互いに交換され検査されることにより、すべてのデータエラーは瞬間的に認識され、伝搬できない。以下にさらにより詳細に説明されるように、エラーは、規定された状態からの計算ユニットの再起動によって改善され得る。
【００２７】
カテゴリー２：プログラムコードエラーは、遅かれ早かれ、計算結果が偽であるという効果を有する。この間違った結果は、この発明に従った手順によって直ちに認識される。プログラムコードエラーは、不揮発性メモリからのプログラムコードの新たなローディング、およびその後の計算ユニットの再起動によって改善され得る。プログラムコードのそのような新たなローディングは、たとえば偽の結果の各判断の後に想定され得る。これに代えて、そのようなエラーがプログラムコードのチェックを起動することも想定され得る。
【００２８】
この発明の一群の実施形態によれば、プログラムコードエラーを見出すために、偽の計算結果が存在しなくても、個々の計算ユニットのプログラムコードは何度もチェックされる。エラーは、不揮発性メモリからのプログラムコードの新たなローディング、およびその後の計算ユニットの起動によって改善され得る。
【００２９】
この目的のために、計算ユニットは、プログラムコードＰ（ＣＰＵの場合）または構成コードＰ（ＦＰＧＡの場合）を、たとえば予め規定された間隔で互いに転送し、それを検査するとともに、それら自体のプログラムコードとの差異、または、たとえば不揮発性の態様で格納された基準との差異がある場合には、上述の措置（安全反応、システムからの一時的撤退、および／または再起動）のうちの１つ以上を起動することができる。
【００３０】
カテゴリー３：ハードウェアエラー。ハードウェアエラーも、遅かれ早かれ、計算結果が偽であるという効果を有するであろう。これは、この発明に従った手順によって認識される。プログラムコードエラーとは対照的に、説明されたようにはるかにまれなハードウェアエラーは、改善することがそれほど簡単ではない。しかしながら、ハードウェアエラーを克服するために、この発明に従った手順に関し、非常に多くの計算ユニットが並列接続されるため、システムの動作期間（典型的には２５〜５０年）にわたってエラーターゲットが達成される。ハードウェアエラーのために偽の結果を繰り返し送出する計算ユニットもまた、システム全体にとってマイナスの結果をもたらすことなく、述べられた適切な冗長性のためにシステムから完全に排除され得る。
【００３１】
計算ユニットにおける、または、たとえばネットワークの次に接続されたコンポーネントにおけるデータエラーは、偽の出力ベクトルＯｎ０…Ｏｎｐ、および／または偽の出力パケット０‥ｋＯＰ０ｎ…０‥ｋＯＰｐｎをもたらし得るため、一群の実施形態によれば、各計算ユニットに固有のシグネチャを各出力パケットに提供することがさらに示唆される。そのようなシグネチャに関し、本質的に公知の態様で（ＣＲＣまたは他のアルゴリズムを介して）生成され得るものの、固有のものであるのは、チェックデータの場合である。
【００３２】
個々の計算ユニットのシグネチャは、どの計算ユニットも別の計算ユニットのシグネチャを生成できないように設計されており、それにより、別の計算ユニットの正しいシグネチャによって受信ユニットがデータパケットを誤って受け入れることがないことが保証される。また、実際の出力データが（計算ユニットごとに１回ではなく）出力データパケットにおいて１回だけ生じること、および、互いに異なるすべての計算ユニットのシグネチャのみが含まれることが想定され得る。
【００３３】
どの計算ユニットも別の計算ユニットのシグネチャを生成できないという事実は、異なる態様で実現され得る。たとえば、計算ユニットは、異なるアルゴリズムを使用すること、または同じアルゴリズムを異なるキー、初期値、生成多項式などで使用することができる。
【００３４】
一群の実施形態では、計算ユニットは、構成可能論理回路として、特にＦＰＧＡ技術で実現される。たとえば、各計算ユニットはＦＰＧＡを含んでいてもよく、またはそのようなものによって形成されてもよい。ＦＰＧＡは、制御システムおよび他のコンピュータシステムにおける補助機能について、これまでかなりの期間、本質的に公知であったが、それらは特に、達成可能な計算性能とサイズとの間の有利な比率のために評価される。しかしながら、複合システムの中央ユニットにおける、または中央ユニットとしてのＦＰＧＡの用途は今まで拒否されてきた。これは特に、それらが、プログラムメモリからコマンドのシーケンスを取り除く従来のマイクロプロセッサよりもエラーを起こしやすい態様で動作するという評判を有するためである。しかしながら、構成可能論理回路のそのような申し立てられた欠点は、この発明に従った手順のために補償され、さらには埋め合わされて、大きい利点が保持されて十分に活用され得る。
【００３５】
一群の実施形態（図９参照）では、この発明に従ったタイプの少なくとも２つのシステムがまとめられて冗長システムになる。ここで、冗長システムは、通常動作時、双方のシステムが互いから独立して動作し、すべての必要な計算を各自実行するように構成される。
【００３６】
述べられたタイプの２つのシステム（中央システム、「部分システム」；図９のシステムＣＵ、ＣＵ＊を参照）は各々の場合、特に各サイクルでそれらのパートナーにシステム全体の状態を通知することができる。
【００３７】
上述された安全反応がシステムのうちの一方で起動され、結果が使用できない場合、他方のシステムは引き続き機能する。このため、高いシステム安全性にもかかわらず、非常に高い利用可能性が、冗長システムにおいて提供され得る。エラーを生成したシステムが再度動作する準備ができるやいなや、次に、各サイクルで交換されたデータを介して、それは直ちにそれ自体を他方のシステムと同期させて動作を再開することができる。
【００３８】
オプションで、ここで冗長システムは、より長い間エラーがない状態ですでに動作してきた（部分）システムが「マスター」として動作するように構成され得る。
【００３９】
この発明に従ったシステム、特に上述のタイプの冗長システムは、利用可能性を増加させるための第２の冗長ネットワークＮＢ（図９参照）を有し得る。
【００４０】
実施形態では、この発明に従ったシステム（たとえば冗長システム）はさらに、特に図２によって上述されたタイプの複数の入力および／または出力ユニットを含む。これらは、それらがデータを求めることにより、たとえば、ユニット（たとえばスイッチ）への制御信号をサンプリングし、および／または、インターフェイスを介して当該制御信号の出力を行なうことにより、環境とやりとりする。
【００４１】
これらの入力／出力ユニット（または出力ユニット）は特に、受信データの一貫性をチェックするように構成され得る。たとえば、それらは、いくつかの計算ユニットによって作成された出力データがすべて同一かどうかをチェックするように構成され得る。これに加えて、またはこれに代えて、それらは、すべての計算ユニットのすべてのチェックサムが正しいかどうかを検査するように構成され得る。特に、すべてのチェックサムが正しい場合のみ、または、予め規定された最小数のチェックサムが正しい場合のみ、それらはインターフェイスを介して出力を実行することができる。
【００４２】
入力および／または出力ユニットはさらに、最小限の持続時間中にデータパケットが中央コンピュータ（計算ユニットを含む中央システム）から受信されなかった場合に、安全な状態に入るように構成され得る。
【００４３】
入力および／または出力ユニットのうちの少なくとも１つはまた、マルチチャネル態様で設計され得る。たとえば、それが入力ユニットとして（も）設計されている場合、それは、いくつかのチャネルを介して信号（電流または電圧）を独立してサンプリングすることができる。これに加えて、またはこれに代えて、いくつかの独立したチャネルは各々、ターゲットアドレス、データ（入力データベクトルの一部としてのデータベクトル）、およびチェックサムを計算することができる。計算ユニットと同様に、チャネルのチェックサム計算は、たとえば同じ多項式の初期値が異なることにより、チャネルのチェックサム同士が異なるとともに、チャネルがそれぞれの他のチャネルのチェックサムを計算できないように行なわれ得る。
【００４４】
入力ユニットによって（およびおそらくはいくつかのチャネルによって）生成されたデータパケットは、たとえばネットワークを介してともに結合されて通信パケットｋＩＰになり、アドレスおよびチェックサムで補足される。そこから、それらはネットワークによって中央システムに送信される。中央システムＣＵの計算ユニットはたとえば、チェックサムコンピュータを自由裁量で有しており、チェックサムコンピュータは入力ユニットと同一であり、受信データパケットが入力ユニットから正確に送信されたかどうかを検査することができる。すべてのチェックサムが正しい場合、たとえばさらなる処理のために、受信パケットのデータのみも考慮に入れられる。
【００４５】
オプションで、有効なパケットが受信されなかった限り、中央システムが出力ユニットｋＩＯにさらなるパケットを提供しないことが想定され得る。これらが受信パケットを有することなく一定時間後に安全な状態に入るように構成される場合、すべてのそのようなユニットはこのために一定時間後に安全な状態に入る。
【００４６】
入力ユニットおよび出力ユニットのうちの少なくともいくつか、たとえばすべては、入力および出力ユニット（入力／出力ユニット）として設計され得る。
【００４７】
この発明はまた、この発明に従ったシステムと、加えて、入力および／または出力ユニットに割り当てられた制御部品（センサ、スイッチ）とを含む、特に鉄道設備のための制御システムに関する。
【００４８】
この発明の原理、およびこの発明の特殊な実施形態の原理を、概略図によって以下により詳細に説明する。図面における同じ特徴付けは、同じまたは同様の要素を示す。図３〜９によるこの発明の説明に関し、図１および図２、ならびにそこに取り入れられた表記が参照される。
【図面の簡単な説明】
【００４９】
【図１】状態機械の原理を示す図である。
【図２】従来技術に従ったシステムを示す図である。
【図３】ネットワークを有する、この発明に従ったシステムの中央システムを示す図である。
【図４】起こり得る安全反応の概略図である。
【図５】入力／出力ユニットｋへの出力のための完全なデータパケットの生成を示す図である。
【図６】入力／出力ユニットｋに出力するための完全なデータパケットの生成のための代替例を示す図である。
【図７】ネットワークを有する入力／出力ユニットを示す図である。
【図８】入力／出力ユニットｋから中央システムへの完全なデータパケットの作成を示す図である。
【図９】冗長システムを示す図である。
【発明を実施するための形態】
【００５０】
この発明に従ったシステムを、図３に概略的に表わす。中央ユニットは、いくつかの並列計算ユニットＰＵ０…ＰＵｐを有する。これらの計算ユニットの各々は、ネットワークインターフェイスＮＩから入力パケットＩＰｎ０…ｋＩＰｎｐを受信し、また、前の状態ベクトルＺｎ−１０…Ｚｎ−１ｐを格納している。これから、互いから独立した計算ユニットは、入力ベクトルＩｎ０…Ｉｎｐ、状態ベクトルＺｎ０…Ｚｎｐ、および出力ベクトルＯｎ０…Ｏｎｐを計算する。
【００５１】
図３では、ＰＲ（説明される変数には各々、プログラムユニットを表わす指数０…ｐが提供される）はプログラム基準メモリ、Ｐはプログラムメモリ、Ｌは論理ユニット、ＣＲＩおよびＣＲＯはそれぞれ、受信データおよび発信データ用のチェックサムコンピュータ、ＣＭＰは、計算されたベクトルを他の計算ユニットの対応する受信ベクトルと比較する比較論理を示す。
【００５２】
この発明によれば、計算ユニットは、新規の状態ベクトルの各計算の後に、互いに結果を交換する。このため、各計算ユニットはたとえば、それ自体のバスＯＢ０…ＯＢｐを有し、それを介して、各計算ユニットは残りの計算ユニットに結果を送信する。計算ユニットは次に、比較論理ＣＭＰ０…ＣＭＰｐにより、個々のチャネルの結果を互いに比較する。それらが差異を判断した場合、次に、第１の実現化例に従った一実施形態で、それらは安全反応を開始する。これの一例を、図４に概略的に表わす。ここで、これは、個々の計算素子を通る供給電圧が、すべての計算素子用のスイッチＰＳ０…ＰＳｐを介して遮断されることによって行なわれる。供給電圧を遮断するために、スイッチは常にそうすることができる（そのために、従来技術に従った方法に頼ることができる）ということが保証されるべきである。
【００５３】
これに加えて、またはこれに代えて、それぞれの計算ユニットが再起動されること、および、再起動後に、他の計算ユニットから来る状態データとともにそれ自体をプロセスに再度リンクすることが想定され得る。
【００５４】
本発明により、状態ベクトルにおけるデータエラーがある計算サイクルから次の計算サイクルに伝搬できないことが保証される。したがって、そのようなエラーの不良開示時間は、計算サイクルの時間に限定される。
【００５５】
計算ユニットにおけるデータエラーはまた、偽の出力ベクトルＯｎ０…Ｏｎｐを、または偽の出力パケット０…ｋＯＰ０ｎ…０…ｋＯＰｐｎをもたらす場合がある。そのようなデータエラーを認識するために、一群の実施形態では、各計算ユニットＰＵ０…ＰＵｐは、出力パケットごとに個々のシグネチャ０‥ｋＣＲＣ０ｎ…０‥ｋＣＲＣｐｎを作成する。個々の計算ユニットのシグネチャは、どの計算ユニットも、別の計算ユニットのシグネチャを生成できないように設計される。これはたとえば、計算ユニットが、異なるアルゴリズムを使用することによって、または同じアルゴリズムを異なるキー、開始値、生成多項式などで使用することによって達成され得る。出力パケットは、シグネチャとともに、計算ユニットからネットワークインターフェイスＮＩに転送される。これらのネットワークインターフェイスは、個々の計算ユニットの出力パケットをメッセージになるよう構成し、それを図５に表わす。
【００５６】
異なるデータが許容されない第１の実現化例に従った実施形態では、オプションで、出力パケットの有用データがメッセージに１回だけ含まれることにより、メッセージのサイズを減少させることができる。この目的のために、ネットワーク（または別のユニット）用のデータパケットをネットワークへの入力で組み立てるネットワークインターフェイスのプロトコル変換器が、図６に表わすようなデータパケットを生成することができる。たった１つのシグネチャでさえ、計算ユニットのうちのいずれか１つによって生成された出力ベクトルから得られ得るデータｋＤＯｎと一致しない場合、受信する出力ユニットは、ユニットのうちの１つが出力データまたはテストデータ（シグネチャ）を誤って計算したと認識し得る。ここに説明される実施形態では、出力ユニットは常に入力ユニットでもあり、すなわちＩ／Ｏユニットである。
【００５７】
システムが第２の実現化例に従って設計される場合、たとえば、図５に示されるようなメッセージが送信され、または、選択が好適な態様で行なわれ、そのため、これにより、少なくとも使用可能なデータ（十分な数の計算ユニットによって同一に計算されたデータ）が出力ユニットに転送されることが保証される。
【００５８】
２チャネルアーキテクチャの例を用いた、一実施形態に従った入力および出力ユニットの構成を図７に示す。図７の例は、データパケットは図６に示すように組み立てられると仮定する。
【００５９】
チャネル０または１が、ネットワークインターフェイスｋＩＯＮＩ、ならびに受信機ｋ０Ｒおよびｋ１Ｒをそれぞれ介してメッセージを受信する場合、それらは、そこに含まれるテストデータおよびシグネチャをチェックする。メッセージが最小必要数の有効シグネチャを有さない場合、入力および出力ユニットはメッセージを拒否する。その他の場合、出力データｋＤＯｎは、出力レジスタｋ０ＲＤまたはｋ１ＲＤに、ひいては出力に、図示された実施形態ではスイッチｋ０Ｓおよびｋ１Ｓに、それぞれ入る。したがって、本発明により、影響された計算ユニットの数が有効シグネチャの最小必要数よりも少ない限り、出力パケットにおけるデータエラーは間違った出力をもたらさない、ということが保証される。この発明によれば、入力および出力ユニットはしたがって、シグネチャに基づいて、十分な数の計算ユニットが出力パケットを一致する態様で計算したかどうかを確認することができる。
【００６０】
データエラーはまた、偽の入力パケット０‥ｋＩＰ０ｎ…０‥ｋＩＰｐｎをもたらす場合がある。そのようなエラーを認識するために、出力パケットと同じ方法に頼る。ここでは、よくあるように、入力変数はいくつかの独立したセンサを介して読込まれる。図７は、２つの電流センサｋ０ＩＳおよびｋ１ＩＳの例を用いて、これを示す。双方のチャネルにおける測定値（読取値）は、入力レジスタｋ０ＩＤおよびｋ１ＩＤにそれぞれ読込まれる。双方のチャネルは次に、通常のテストデータＡを計算し、そしてこの発明によれば、それに加えて、個々のシグネチャｋ０ＣＲＣｎ＋１およびｋ１ＣＲＣｎ＋１をそれぞれ計算する。出力データパケットに関しても、同じ仮定がこれらのシグネチャに当てはまる。つまり、シグネチャは、それらがそれぞれの入力／出力ユニットのみによって生成され得るようになっている。チャネルはこのデータから入力パケットを生成し、このパケットをネットワークインターフェイスｋＩＯＮＩに出力する。チャネルの入力パケットからのこれは、出力パケットと同様に、メッセージを合計データパケット（図８）として生成し、これを中央ユニットの計算ユニットＰＵ０…ＰＵｐに送信する。このメッセージが、有効シグネチャを有する最小必要数の読取値を含まない場合、計算ユニットはメッセージを拒否する。第２のテストステップで、通常通り、計算ユニットは、（ここでのようにマルチチャネル入力／出力ユニットの場合の）チャネルが読取値を一致して測定したかどうかを確認するために、読取値を比較する。したがって、本発明により、影響されたチャネルの数が有効シグネチャの最小必要数よりも少ない限り、入力パケットにおけるデータエラーは偽の入力ベクトルをもたらさない、ということが保証される。この発明によれば、入力および出力ユニットはしたがって、シグネチャに基づいて、十分な量のチャネルが読取値を一致して測定したかどうかを確認することができる。
【００６１】
プログラムコードにおけるエラー：
各計算ユニットＰＵ０…ＰＵｐは、図３によれば、プログラムメモリＰ０…Ｐを有する。これに格納されたプログラムコードにおけるエラーを見出すための可能性は２つある：
可能性１：各計算ユニットは、他のすべての計算ユニットに、プログラムメモリの全内容を送信する。これらは、受信データを、それらのプログラム基準メモリＰＲ０‥ＰＲｐの内容と比較し、差異がある場合、述べられたアクションのうちの１つ以上を開始する；
可能性２：各計算ユニットはセルフテストを有し、それにより、計算ユニットは、整合性に関してプログラムメモリの内容をテストすることができる。ある計算ユニットがそれ自体のプログラムメモリにおけるエラーを確認した場合、それは他の計算ユニットにエラーを信号で伝える。他の計算ユニットは次に、述べられたアクションのうちの１つ以上を開始する。
【００６２】
冗長なコンピュータによって計算システムの利用可能性が向上され得ることは、一般に知られている。本発明に適合されたそのような冗長性の概念を、図９に表わす。安全機能としての冗長性は、図３に従った実施形態においても、オプションで互いから物理的に離れることができるいくつかの計算ユニットを含むシステムによって存在する。計算ユニットは個々に交換可能であり、そのため、それらはオプションで、異なる回路基板上に実装され得るということが想定され得る。図９の実施形態は最も高い安全レベルの概念を目指しており、それにより、第１の実現化例によれば、エラー（一致しない出力データ、入力データまたは状態データ、もしくは確認されたプログラムエラー）がある場合、コンピュータシステムは安全でないとして直ちにカウントされ、対応する反応が起動される。次に、図３に従った実現化例では、これは、動作が中断されること、および、安全反応の起動によってシステム全体が安全になることをもたらす。望ましくないであろう、許容されないであろう（たとえば、鉄道輸送全体を停止させる必要があるような場合の鉄道安全設備の制御）、またはさらに危険であろう（航空機などの制御）配置がある。
【００６３】
（規定された基準に従って）最小限のデータが一致していることのみを要求することによってエラーの場合の動作を保証する上述の可能性に加えて、図９によれば、この発明に従った完全な作動コンピュータシステムを２つ提供する可能性もある。コンピュータシステムＣＵおよびＣＵ＊は双方とも、この発明に従って構成され、たとえば図３〜８によって上述された原理に従って機能する。２つのコンピュータシステムは各々、たとえば計算ユニットおよびデータメモリなどが各々、個々の回路基板またはいくつかの個々の回路基板上に実装されることにより、互いから独立して保守点検され得るように構成され得る。
【００６４】
完全な冗長システムはしたがって、中央コンピュータシステムＣＵおよびＣＵ＊を含む（３つ以上のコンピュータシステムへの一般化は直ちに可能である）。双方のコンピュータシステムは同一に構成され、いくつかの計算ユニットＰＵ０…ＰＵｐおよびＰＵ０＊…ＰＵｐ＊をそれぞれ有し、それらは各々、チャネルを形成する。システムはさらに、いくつかのＩ／Ｏユニット０ＸＩＯ…ｋＸＩＯを有し、または少なくともそのようなＩ／Ｏユニットとやりとりするように構成される。ＩＯユニットは、たとえば２チャネルの態様で実現されるが、必ずしも冗長に構成されるとは限らない。冗長なＩ／Ｏユニットはまた、特に重要なＩ／Ｏタスク（たとえば、上位の制御センターとの通信）のために可能である。システムは加えて、個々のエラーがシステム全体を損なうことができないように、２つの冗長ネットワークインターフェイスＮＩＡおよびＮＩＢ、ならびにＮＩＡ＊およびＮＩＢ＊をそれぞれ介して中央ユニットに接続された、２つの冗長ネットワークＮＡおよびＮＢを有する。
【００６５】
通常動作では、２つの冗長システムＣＵおよびＣＵ＊のうちの一方が「ボス」（マスター）であり、他方のシステムは従う（スレーブ）。双方のシステムは１００％同一に動作するが、唯一の例外は、マスターは、スレーブよりも長く連続動作しているシステムである、ということである。処理における唯一の違いは、マスターが時間手順を設定する、ということである。
【００６６】
システム全体の動作を開始する際、作業員はまず、冗長な中央システムＣＵまたはＣＵ＊のうちの一方を手動で始動する。最初に始動されたシステムは、自動的にマスターになる。スレーブが始動されてプログラムがロードされるやいなや、次に各サイクルで、それは通信システムＯＢまたはＯＢ＊を介して完全な入力および状態データを採用する。双方のシステムはここで独立して作動するが、同一の状態を生成し、これからＩＯユニットへの同一の通知を生成する。たとえば、マスターの計算ユニットのうちの１つでプログラムコードにエラーが生じた場合、このマスターは撤退し、スレーブがマスターになる。データエラーが確認された場合、処理は同様の態様で進む。
【００６７】
撤退した中央システムは次に、たとえば、各ユニットでの基準メモリから、中央システムに割り当てられたソースまたは外部のソースから、もしくは別の中央システムから、プログラムコードまたは構成コードをロードすることにより、新たに構成される。
【００６８】
この中央システムが動作する準備ができるやいなや、あるサイクルで、それは、通信システムＯＢおよびＯＢ＊を介して新規の／現在のマスターの入力および状態データを採用する。新たに再起動された中央システムはここで、スレーブとして動作する準備ができており、これをマスターに通知して、続くサイクルで再度参加する。
【００６９】
スレーブの計算ユニットのうちの１つがエラーを起こした場合、処理は同様に進む。すなわち、スレーブは撤退し、動作する準備ができてからスレーブとして再度参加する。
【００７０】
ハードウェアエラーの兆候がプログラムテストで、もしくは繰り返し連続して観察されたデータエラーまたはプログラムエラーによって見つかるやいなや、それぞれの計算ユニットは、完全にスイッチオフされ得る。これは、ユーザへのヒントによって補足されてもよく、それに基づき、影響された計算ユニット、またはおそらくは計算ユニットを含む回路基板全体が交換されるべきである。システムが十分に冗長な態様で設計されている場合、ある状況下では、そのような交換は不要かもしれず、ユニットが永続的にスイッチオフされ続ける場合、それは十分である。
【符号の説明】
【００７１】
Ｉｎ：入力ベクトル、Ｚｎ：状態ベクトル、Ｏｎ：出力ベクトル、ＰＵ：計算ユニット。
【図１】
2018014102.tif 000003
【図２】
2018014102.tif 000004
【図３】
2018014102.tif 000005
【図４】
2018014102.tif 000006
【図５】
2018014102.tif 000007
【図６】
2018014102.tif 000008
【図７】
2018014102.tif 000009
【図８】
2018014102.tif 000010
【図９】
2018014102.tif 000011
【外国語明細書】
2018014102000001.pdf