(57)【特許請求の範囲】
【請求項１】
中央演算処理装置と主メモリを有する制御系と待機系の両系で同一のアプリケーションの命令を実行する、二重系で構成された計算機システムにおいて、
前記アプリケーションによって前記制御系が参照、更新する、前記アプリケーションの起動周期毎のトラッキングデータを、前記起動周期毎のトラッキング処理タイミングにおいて前記待機系の主メモリへ反映させ、
前記待機系でのトラッキング処理タイミングに、前記制御系においてトラッキングデータの書き換え中であった場合、当該起動周期において実行すべきトラッキング処理以外の処理を先に実施した後、再度、前記トラッキング処理を実施するトラッキング処理手段を備えたことを特徴とする計算機システム。
【請求項２】
トラッキング処理手段は、
トラッキング処理以外の処理を先に実施した後、制御系においてトラッキングデータの書き換え中の状態が継続していると、当該起動周期における該当トラッキングデータのトラッキング処理を放棄することを特徴とする請求項１記載の計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えばプログラマブルコントローラに適用して好適な計算機システムに関するものである。
【０００２】
【従来の技術】
従来例１．
図１７は、例えば特開平４−３６７９０３号公報に開示された従来の二重化計算機システムを示す構成図であり、図において１００は制御系または運転系のプログラマブルコントローラ、１１０は待機系のプログラマブルコントローラ、１０１は運転系のトラッキングバッファ、１１１は待機系のトラッキングバッファ、１０２は運転系のバッファ分割手段、１１２は待機系のバッファ分割手段、１１５はトラッキングケーブルである。この従来の二重化計算機システムの構成においてはトラッキングすべきデータを参照するプログラムのスキャン周期が高速か低速かを判断し、それぞれのプログラムが扱うデータ量を計算し、高速トラッキングデータ用や低速トラッキングデータ用にバッファを分割する。トラッキング処理時には、高速トラッキングのみ、低速トラッキングのみ、または両方のトラッキングが必要かを判定し、トラッキングバッファを選択しトラッキング処理を行う。
【０００３】
この従来の二重化計算機システムは、トラッキングバッファの分割によりオーバーヘッドを極力抑えるシステムとして構築されているが、待機系においても運転系と同一のアプリケーションを実行させておく方式（以下、ホットスタンバイ方式という）でこのシステムを運用する場合、トラッキングバッファのデータが待機系へ反映されるタイミングとアプリケーションの起動周期との同期を取る手段がないため、アプリケーション内で参照するメモリデータが運転系と待機系で同一であることを完全に保証できず、両系で同一の処理結果を保証することが難しい。
【０００４】
従来例２．
また、図１８は、例えば特開平４−３６７９０３号公報に開示された従来の二重化計算機システムを示す構成図であり、図において、２００は制御系プロセッサ、２１０は待機系プロセッサ、２０１は制御系プロセッサ２００のトラッキングバッファ、２１１は待機系プロセッサ２１０のトラッキングバッファ、２０２は制御系プロセッサ２００のバッファ分割手段、２１２は待機系プロセッサ２１０のバッファ分割手段、２１５はトラッキングケーブルである。
【０００５】
次に、この二重化計算機システムの動作について説明する。図１９は、この二重化計算機システムの動作を示すフローチャートであり、制御系プロセッサ２００がデータのトラッキングを行うとき、バッファ分割手段２０２は、トラッキングすべきデータを使用するプログラムのスキャン周期が高速か低速かを判断し、それぞれのプログラムが扱うデータ量を計算する（ステップＳＴ１００）。そして、得られたデータ量とトラッキングバッファ２０１のサイズからトラッキングバッファ２０１でのブロック数を計算する（ステップＳＴ１０１）。そして、データをトラッキングする場合、高速トラッキングのみか、低速トラッキングのみか、高速と低速の両方のトラッキングが必要かのトラッキング方式をチェックし（ステップＳＴ１０２）、高速、低速、混合の分割方式を選択し（ステップＳＴ１０３，ステップＳＴ１０４，ステップＳＴ１０５）、トラッキング処理を行う。
【０００６】
従来例３．
また、図２０は、例えば特開平４−３３２００２号公報に示された従来の計算機システムを示す構成図である。図において、３０１はプロセッサ、３０２はＣＰＵカード、３０２ａはプロセッサ３０１の命令実行部、３０３は入出力Ｉ／Ｆカード、３０３ａは入出力カードエラー情報、３０４−１，…，３０４−Ｎは入出力カード、３０４ａ−１，…，３０４ａ−Ｎは入出力カード３０４−１，…，３０４−Ｎのデータ領域を示す。３０５はＣＰＵカード３０２と入出力Ｉ／Ｆカード３０３とを接続した制御バス、３０６は入出力Ｉ／Ｆカード３０３と各入出力カード３０４−１，…，３０４−Ｎとを接続した入出力バスである。
【０００７】
プロセッサ３０１は、ＣＰＵカード３０２と、制御バス３０５により前記ＣＰＵカード３０２と接続された入出力Ｉ／Ｆカード３０３とから構成されていることを示す。前記ＣＰＵカード３０２は、命令実行部３０２ａにおいて前記入出力Ｉ／Ｆカード３０３と入出力バス３０６を介して入出力カード３０４−１，…，３０４−Ｎのデータ領域３０４ａ−１，…，３０４ａ−Ｎをアクセスする。
命令実行部３０２ａが入出力カード３０４−１，…，３０４−Ｎをアクセスしたときのエラー情報は、前記入出力Ｉ／Ｆカード３０３の入出力カードエラー情報３０３ａを読み出すことで認識できる。すなわち、前記エラー情報は、入出力カード３０４−１，…，３０４−Ｎのエラー情報として認識できる構成である。
【０００８】
また、この計算機システムの入出力Ｉ／Ｆカード３０３のメモリマップ３０７を図２１に示す。このメモリマップ３０７は、前記入出力カード３０４−１，…，３０４−Ｎに割り当てられたメモリ空間と前記入出力カードエラー情報３０３ａとから構成される。
【０００９】
次に、この計算機システムの動作について図２２に示すフローチャートに従って説明する。先ず、ＣＰＵカード３０２の命令実行部３０２ａは、入出力カード３０４−１，…，３０４−Ｎのデータ領域３０４ａ−１，…，３０４ａ−Ｎをアクセスし（ステップＳＴ１１１）、入出力Ｉ／Ｆカード３０３の入出力カードエラー情報３０３ａを読み出す（ステップＳＴ１１２）。そして、前記読み出した入出力カードエラー情報３０３ａによりエラーがあるかどうかを判定し（ステップＳＴ１１３）、エラーがなければ次のアドレスの入出力カードエラー情報３０３ａを取り出す（ステップＳＴ１１５）。一方、前記ステップＳＴ１１３においてエラーがあればエラー情報を登録する（ステップＳＴ１１４）。
【００１０】
従来例４．
また、図２３は、特開平４−３３２００２号公報に示された従来の計算機システムにおける制御プログラム実行時のプログラムカウンタ一致処理を示す構成図である。図において、４０１はプロセッサ５００の実行に必要な制御プログラムコード、制御データ、および起動管理テーブル等の制御情報の開発と保守を行う保守ツールである。４０５はプロセッサ５００の主メモリ、４０５ａは前記制御プログラムコード、４０５ｂは制御プログラムコード４０５ａの実行位置をそのカウンタ値として指し示すプログラムカウンタ、４０６は保守ツール４０１から送られてきた制御情報をプロセッサ５００に登録する要求処理部、４０６ａは保守ツール４０１からの保守操作情報であるプログラムカウンタ一致要求、４０７は制御プログラムコード４０５ａを実行するプログラム実行部、４０７ａは制御プログラムコード４０５ａの実行をサポートするプログラム実行処理である。プログラムカウンタ一致検出処理４０７ｂは要求処理部４０６からのプログラムカウンタ一致要求４０６ａによって登録される一致要求プログラムカウンタ４０７ｃのカウンタ値とプログラムカウンタ４０５ｂのカウンタ値との一致を検出するものである。
【００１１】
次に動作について図２４に示すフローチャートに従って説明する。
図２４に示すフローチャートは、プログラム実行部４０７がプログラムカウンタ一致を検出する動作フローを示しており、プログラム実行処理４０７ａは現在のプログラムカウンタ４０５ｂが指し示す制御プログラムコード格納位置を計算し、主メモリ４０５上から該当する制御プログラムコード４０５ａをフェッチして実行する（ステップＳＴ１２０）。そして、１つの制御プログラム実行後、プログラムカウンタ一致検出処理４０７ｂは、プログラムカウンタ一致要求の有無をチェックする（ステップＳＴ１２１）。このプログラムカウンタ一致要求がなければ次の制御プログラムコード４０５ａの実行へ移る。一方、プログラムカウンタ一致要求があれば、現在のプログラムカウンタ４０５ｂと一致要求プログラムカウンタ４０７ｃのカウンタ値を取り出し（ステップＳＴ２２）、比較する(ステップＳＴ１２３)。この結果、不一致であれば次の制御プログラムコード４０５ａの実行へ移る。一方、一致した場合には、アキュムレータや各レジスタ値などの制御プログラム実行時の情報を収集する（ステップＳＴ１２４）。情報の収集が完了した後、または要求処理部４０６からのプログラムカウンタ一致要求４０６ａがキャンセルされたときなどには、プログラムカウンタ一致要求４０６ａにより登録された一致要求プログラムカウンタ４０７ｃのカウンタ値をクリアする（ステップＳＴ１２５）。
【００１２】
【発明が解決しようとする課題】
従来の計算機システムは以上のように構成されていたので、前記従来例１の技術では、ホットスタンバイ方式で運用する場合にはトラッキングバッファを分割することなく全データの転送が必要であり、トラッキングのオーバヘッドを抑えることが難しいという課題があった。
【００１３】
また、前記従来例２の技術では、制御系でエラーが発生したり、手動操作による系の切り替わりが発生するまで、待機系のアプリケーションプログラムをＷＡＩＴ状態としておく方式（以下、コールドスタンバイ方式という）では問題とはならないが、前記ホットスタンバイ方式にて運用するシステムにおいては、待機系と制御系で同一アプリケーションプログラムを並行動作させる関係上、待機系にてトラッキング処理を行う際に、該当データが制御系にて書き換え中のタイミングとなる可能性が高く、また一旦制御系と待機系のトラッキング処理タイミングが合致すればそれ以降も連続して書き換え中の状態と重なり、データ読み出し不可状態が続くことが想定され、制御系と待機系のデータ同値化の信頼性が確保されないという課題があった。
【００１４】
また、前記従来例３の技術では、登録されたエラー情報に対し、命令のアクセス対象となる入出力カードのエラー情報か命令のアクセス対象以外の入出力カードのエラー情報かの判定が命令実行時に出来ないため、命令のアクセス対象以外の入出力カードが故障のときでもエラーを検出してしまうという課題があった。
【００１５】
また、前記従来例４の技術では、プログラムカウンタ一致要求がある場合に、一つの制御プログラム実行毎にプログラムカウンタ一致要求有無のチェックとプログラムカウンタの比較処理を行う必要があり、また、プログラムカウンタの不一致状態が続く間、オーバーヘッドが増大していくという課題があった。
【００１６】
この発明は上記のような課題を解決するためになされたものであり、待機系においても制御系と同一のアプリケーションを実行させておく方式において、制御系および待機系、両系のメモリデータを同一値とするトラッキング処理を実現する場合のトラッキングのオーバヘッドを抑制し、前記両系の制御アプリケーションについて同じ処理結果を保証できる計算機システムを得ることを目的とする。
【００１７】
また、この発明は、制御系と待機系のトラッキング処理タイミングが合致した場合に対しても、待機系においても制御系と同一のアプリケーションを実行させておく方式における制御系と待機系のデータ同値化の確保と信頼性向上を図れる計算機システムを得ることを目的とする。
【００１８】
また、この発明は、命令実行時のエラー情報として、命令のアクセス対象となる入出力カードのエラー情報のみ前記命令ごとに取り出すことが可能な計算機システムを得ることを目的とする。
【００１９】
また、この発明は、プログラムカウンタ一致検出処理のオーバーヘッドを削減し、プログラムカウンタ一致要求時の制御プログラム実行速度を向上できる計算機システムを得ることを目的とする。
【００２５】
【課題を解決するための手段】
この発明に係る計算機システムは、アプリケーションによって制御系が参照、更新する、前記アプリケーションの起動周期毎のトラッキングデータを、前記起動周期毎のトラッキング処理タイミングにおいて待機系の主メモリへ反映させ、前記待機系でのトラッキング処理タイミングに、前記制御系においてトラッキングデータの書き換え中であった場合、当該起動周期において実行すべきトラッキング処理以外の処理を先に実施した後、トラッキング処理手段が、再度、前記トラッキング処理を実施するようにしたものである。
【００２６】
この発明に係る計算機システムは、トラッキング処理以外の処理を先に実施した後、制御系においてトラッキングデータの書き換え中の状態が継続していると、トラッキング処理手段は、当該起動周期における該当トラッキングデータのトラッキング処理を放棄するようにしたものである。
【００３０】
【発明の実施の形態】
以下、この発明の実施の一形態について説明する。
実施の形態１．
図１は、この実施の形態１の計算機システムの構成を示すブロック図である。図において、１は常用系（運転系、制御系）システムと待機系システムとを備えたこの実施の形態１の計算機システム、１０は常用系システムの制御アプリケーション、１１はプログラム命令処理部、１２はメモリ、１３は制御系のトラッキングバッファ、１４は参照アドレス管理テーブルである。また、１５は前記常用系システムの制御アプリケーション１０と同一の待機系システムの制御アプリケーション、１６はプログラム命令処理部、１７はメモリ（待機系の主メモリ）、１８は待機系のトラッキングバッファである。１９は常用系システムと待機系システムとに共用されるトラッキング処理部（トラッキング処理手段）である。
【００３１】
２０は制御アプリケーション２１の作成などを行うための保守ツール、２１は保守ツール２０が備えている前記作成された制御アプリケーション(ソース)、２２は前記制御アプリケーション２１をコード化するコード変換処理部、２３は前記コード化された制御アプリケーション(コード)、２４は前記制御アプリケーションが参照、更新するメモリデータのアドレス情報を抽出する参照アドレス抽出部、２５は前記抽出したアドレス情報を保持する参照アドレス保持部である。
【００３２】
次に動作について説明する。
この実施の形態１の計算機システムでは、保守ツール２０で制御アプリケーション２１を作成し、該作成した制御アプリケーション２１をコード変換処理部２２において計算機システム１が高速に実行可能なコード化した制御アプリケーション２３に変換するコード変換処理の中で、前記制御アプリケーションが参照するメモリデータのアドレス情報を参照アドレス抽出部２４により抽出し、アプリケーション毎に設けた参照アドレス保持部２５ヘ保持する。そして、計算機システム１ヘ前記コード変換処理したアプリケーション２３を転送する。
【００３３】
図１に示す常用系システムの制御アプリケーション１０および待機系システムの制御アプリケーション１５は前記転送された制御アプリケーション２３により構成されている。
【００３４】
そして、前記制御アプリケーション２３の転送の際に、参照アドレス保持部２５に保持した前記アドレス情報も転送し、そのアプリケーションの起動周期に対応した参照アドレス管理テーブル１４に格納する。
【００３５】
制御アプリケーション実行時には、起動周期のタイミングで該当起動周期に実行すべきモジュールを実行する。そして、該当起動周期に実行すべきモジュールの実行が全て完了すると、参照アドレス管理テーブル１４に格納されている該当起動周期に更新するアドレス分のみのメモリデータをトラッキング処理部１９により常用系システムのメモリ１２から待機系システムのメモリ１７に転送する。
図４は、このトラッキング処理部１９によるトラッキング処理を示すタイミングチャートである。これにより、この起動周期で両系において実行された制御アプリケーションの参照データは同じメモリデータとなり、次の起動周期で同じ参照データにより実行されることが保証されるため、同じ実行結果を得ることが出来る。
【００３６】
次に、以上の動作を常用系システムにおける動作と待機系システムにおける動作とに分けて説明する。
最初に常用系システムの動作について説明する。
図２は、常用系システムのアプリケーション起動処理とトラッキング処理を示すフローチャートである。先ず、ステップＳＴｌにおいて時刻情報からアプリケーション起動タイミングかどうかを判定する。この判定の結果が“否定”の場合にはステップＳＴ１でアプリケーション起動タイミングかどうかの判定を繰り返す。一方、前記判定の結果が“肯定”の場合にはステップＳＴ２へ進み、該当起動周期に設定されたアプリケーションを実行する。そして、次のステップＳＴ３において該当起動周期に実行すべきモジュールが全て起動されたか、あるいは、該当起動周期におけるアプリケーションの実行可能時間が終了したかを判定する。
【００３７】
この判定の結果が“否定”の場合にはステップＳＴ２へ戻り、さらに前記アプリケーションの実行を続ける。一方、ステップＳＴ３で“肯定”の場合、続くステップＳＴ４へ進み、該当起動周期が起動周期１の完了タイミングかどうかを判定する。この判定の結果が“否定”の場合にはステップＳＴ６へ進む。一方、“肯定”の場合には、ステップＳＴ５へ進み、参照アドレス管理テーブル１４の起動周期１におけるメモリデータのアドレス情報をもとに、トラッキング処理部１９において、常用系システムのメモリ１２のデータを待機系システムのメモリ１７ヘトラッキング処理し、その後ステップＳＴ６へ進む。
【００３８】
ステップＳＴ６では、該当起動周期が起動周期２の完了タイミングかどうかを判定する。この判定の結果が“否定”の場合にはステップＳＴ１へ戻る。一方、前記判定の結果が“肯定”の場合にはステップＳＴ７へ進み、参照アドレス管理テーブル１４の起動周期２におけるメモリデータのアドレス情報をもとに、トラッキング処理部１９において、常用系システムのメモリ１２のデータを待機系システムのメモリ１７ヘトラッキング処理し、ステップＳＴｌへ戻る。
【００３９】
次に待機系システムにおける動作について説明する。
図３は、待機系システムでのアプリケーション起動処理とトラッキング処理を示すフローチャートである。先ず、ステップＳＴ１１において時刻情報からアプリケーション起動タイミングかどうかを判定する。この判定の結果、“否定”の場合にはアプリケーション起動タイミングかどうかの判定を繰り返す。一方、“肯定”の場合にはステップＳＴ１２へ進み、該当起動周期に設定されたアプリケーションを実行する。次のステップＳＴ１３では該当起動周期に実行すべきモジュールが全て起動されたか、または該当起動周期におけるアプリケーションの実行可能時間の終了かを判定する。この判定の結果が“否定”の場合にはステップＳＴ１２へ戻り、さらに前記アプリケーションの実行を続ける。一方、前記判定の結果が“肯定”の場合にはステップＳＴ１４へ進み、常用系システムのトラッキング処理によるトラッキングバッファ１８ヘの書込み完了を待つ。続くステップＳＴ１５では、該当起動周期が起動周期１の完了タイミングかどうかを判定する。この判定の結果が“否定”の場合にはステップＳＴ１７へ進む。一方、前記判定の結果が“肯定”の場合には、ステップＳＴ１６においてトラッキングバッファ１８から起動周期１におけるメモリデータであるトラッキングデータを待機系システムのメモリ１７ヘ転送し、続いてステップＳＴ１７へ進む。
【００４０】
ステップＳＴ１７では、該当起動周期が起動周期２の完了タイミングかどうかを判定する。この判定の結果が“否定”の場合にはステップＳＴ１１へ戻る。一方、前記判定の結果が“肯定”の場合にはステップＳＴ１８へ進み、トラッキングバッファ１８から起動周期２におけるメモリデータであるトラッキングデータを待機系システムのメモリ１７ヘ転送し、ステップＳＴ１１へ戻る。
【００４１】
以上の説明では、アプリケーションの起動周期は２種類であったが、３種類以上の起動周期が混在した場合でもアプリケーション起動周期の判定振り分け処理を追加するだけで同様に実現可能である。
【００４２】
以上のように、この実施の形態１によれば、制御アプリケーション実行時に、起動周期のタイミングで該当起動周期に実行すべきモジュールを実行し、該当起動周期に実行すべきモジュールの実行が全て完了すると、参照アドレス管理テーブル１４に格納されている該当起動周期に更新するアドレス分のみのメモリデータをトラッキング処理部１９により常用系システムのメモリ１２から待機系システムのメモリ１７に転送する。これにより、この起動周期で両系において実行された制御アプリケーションの参照データは同じメモリデータとなり、次の起動周期で同じ参照データにより実行されることが保証され、常用系システムと待機系システムとで同じ実行結果が得られる計算機システムが得られる効果がある。
【００４３】
また、異なる起動周期のアプリケーションを実行する命令の同期を保証できないシステムにおいても、同一命令が参照するソースデータの値について同一であることを保証できるため、故障切り替えの際にもアプリケーションの再実行をすることなく、瞬時に切り替えることが出来る計算機システムが得られる効果がある。
【００４４】
なお、以上の説明では、参照アドレス抽出部２４を保守ツール２０側に設けた例を示したが、計算機システム１側に設け、アプリケーション転送時に前記アドレス情報を抽出し参照アドレス管理テーブル１４に格納することでも同様の効果を得ることが出来る。
【００４５】
実施の形態２．
図５は、この実施の形態２の計算機システムの構成を示すブロック図である。図において、３１は制御系(常用系)の計算機システム、３２は制御系の計算機システム３１の中央演算処理装置（トラッキング処理手段）、３３は主メモリ、３３ａはソースメモリ、３３ｂはトラッキングデータ転送用バッファ、３４はトラッキングメモリ、３５はトラッキング転送用ＤＭＡ（トラッキング処理手段）、３６は演算実行処理、３７はソースメモリ３３ａからモジュールＡの実行に伴うトラッキングデータを抽出し、トラッキングデータ転送用バッファ３３ｂへ格納するトラッキングデータ抽出処理、３８はトラッキング転送ＤＭＡ起動処理、３９はトラッキングデータ転送用バッファ３３ｂからトラッキングデータをトラッキング転送用ＤＭＡ３５によりトラッキングメモリ３４へ転送するＤＭＡ転送処理を示す。
【００４６】
４０は待機系の計算機システム、４１は待機系の計算機システム４０の中央演算処理装置（トラッキング処理手段）、４２は主メモリ、４２ａはソースメモリ、４２ｂはトラッキングデータ転送用バッファ、４３はトラッキング転送用ＤＭＡ（トラッキング処理手段）、４４は演算実行処理、４５はトラッキングデータ取込処理、４６はトラッキング転送ＤＭＡ起動処理、４７はＤＭＡ転送処理、４８はトラッキングバスを示す。
【００４７】
次に動作について説明する。
最初に制御系の計算機システム３１のトラッキング関連動作について説明する。
図８は、制御系の計算機システム３１のトラッキング関連動作を示すフローチャートであり、先ず、ステップＳＴ２１においてアプリケーションプログラムの起動タイミングを判定し、この判定の結果が“否定”であれば前記アプリケーションプログラムの起動タイミングについての判定を繰り返す。一方、前記判定の結果が“肯定”であれば、続くステップＳＴ２２において該当する前記アプリケーションプログラムを実行する。続くステップＳＴ２３では、前記アプリケーションプログラムの実行完了、または、１起動周期内におけるアプリケーション実行可能時間が終了したか否かを判定し、この判定の結果が“否定”であればステップＳＴ２２へ戻り、前記アプリケーションプログラムの実行を続行する。一方、前記ステップＳＴ２３における判定の結果が“肯定”であればステップＳＴ２４へ進み、制御系トラッキング処理を行う。
【００４８】
この制御系トラッキング処理は、ソースメモリ３３ａからモジュールＡの実行に伴うトラッキングデータを抽出し、トラッキングデータ転送用バッファ３３ｂへ格納するトラッキングデータ抽出処理３７と、トラッキングデータ転送用バッファ３３ｂから前記トラッキングデータをトラッキング転送用ＤＭＡ３５によりトラッキングメモリ３４へ転送するＤＭＡ転送処理３９である。
【００４９】
この制御系トラッキング処理が完了すると、続くステップＳＴ２５において前記起動周期内で処理すべき通信処置を実行し、さらに次のステップＳＴ２６でＩ／Ｏ入出力処理等を実行し、ステップＳＴ２１へ戻り、次の起動周期まで待機する。
【００５０】
以上のように、この制御系の計算機システム３１では各起動周期毎に前記アプリケーションプログラムの実行からI／Ｏ入出力処理までを繰り返し行う。
【００５１】
次に、待機系システムの計算機４０のトラッキング関連処理動作について説明する。
図９は、待機系システムの計算機４０のトラッキング関連処理動作を示すフローチャートであり、先ず、ステップＳＴ３１においてアプリケーションプログラムの起動タイミングを判定し、この判定の結果が“否定”であれば前記アプリケーションプログラムについての起動タイミングの判定を繰り返す。一方、前記判定の結果が“肯定”であれば、続くステップＳＴ３２において該当する前記アプリケーションプログラムを実行する。続くステップＳＴ３３では、前記アプリケーションプログラムの実行完了、または、１起動周期内におけるアプリケーション実行可能時間が経過したか否かを判定し、この判定の結果が“否定”であればステップＳＴ３２へ戻り、前記アプリケーションプログラムの実行を続行する。一方、前記ステップＳＴ３３における判定の結果が“肯定”であればステップＳＴ３４へ進み、該当するトラッキングメモリ３４が制御系トラッキング処理により書き換え中か否かのチェックを行い、この結果、書き換え中であった場合には該当するトラッキング処理を行なわず、ステップＳＴ３８でこの起動周期で処理すべき通信処理を実行し、さらに続くステップＳＴ３９でＩ／Ｏ入出力処理等を実施し、これら通信処理およびＩ／Ｏ入出力処理完了後、ステップＳＴ４０で再度該当するトラッキングメモリ３４の書き換え中か否かについてチェックを行う。このとき、該当するトラッキングメモリ３４の書き換えが完了していれば、ステップＳＴ４１で待機系トラッキング処理を行うが、未だ該当するトラッキングメモリが書き換え中であった場合には、ステップＳＴ３１へ戻り、この起動周期での待機系トラッキング処理は行なわずに、次の起動周期まで待機する。
【００５２】
前記ステップＳＴ３４において書き換え中か否かのチェックを行なった結果、書き換え中でない場合、続くステップＳＴ３５で待機系トラッキング処理を行い、その完了後、次のステップＳＴ３６で通信処理を実行し、さらに次のステップＳＴ３７でＩ／Ｏ入出力処理等を実施し、ステップＳＴ３１へ戻り、次の起動周期まで待機する。
【００５３】
この場合の待機系の計算機システム４０で行う待機系トラッキング処理は、トラッキングメモリ３４から前記トラッキングデータを待機系の計算機システム４０のトラッキングデータ転送用バッファ４２ｂへ、トラッキング転送用ＤＭＡ４３を介して転送するＤＭＡ転送処理４７と、トラッキングデータ転送用バッファ４２ｂのトラッキングデータをソースメモリ４２ａへ取り込むトラッキングデータ取込処理４５などである。
【００５４】
そして、各起動周期毎に、アプリケーションプログラムの実行からＩ／Ｏ入出力処理、または待機系トラッキング処理のリトライまでを繰り返し行う。
【００５５】
図６は、図８のフローチャートに示した制御系システムのトラッキング関連処理動作と図９のフローチャートに示した待機系システムのトラッキング関連処理動作を、１起動周期についてタイミングチャートとして示した説明図である。
【００５６】
図７は１起動周期を５ｍｓｅｃとした場合に、起動周期が５ｍｓｅｃ、実行所要時間が２ｍｓｅｃで動作するモジュールＡと、起動周期が２０ｍｓｅｃ、実行所要時間が５ｍｓｅｃで動作するモジュールＢの２つのモジュールが登録された場合を想定し、１起動周期を５ｍｓｅｃ、アプリケーション実行可能時間４ｍｓｅｃとした場合の制御系システムまたは待機系システムのトラッキング関連処理動作をタイミングチャートとして示した説明図である。
【００５７】
図７に示すタイミングチャートを制御系の計算機システム３１におけるトラッキング関連処理動作とした場合、符号Ｔ１，Ｔ２で示す期間はモジュールＡに関連したメモリデータについての制御系トラッキング処理期間、符号Ｔ３，Ｔ４で示す期間はモジュールＡ，Ｂに関連したメモリデータについての制御系トラッキング処理期間である。
【００５８】
また、図７に示すタイミングチャートを待機系の計算機システム４０におけるトラッキング関連処理動作とした場合、符号Ｔ１，Ｔ２で示す期間はモジュールＡに関連したメモリデータについての待機系トラッキング処理期間、符号Ｔ３，Ｔ４で示す期間はモジュールＡ，Ｂに関連したメモリデータについての待機系トラッキング処理期間である。
【００５９】
以上のように、この実施の形態２によれば、制御系の計算機システム３１と待機系の計算機システム４０ともにアプリケーションプログラムを実行させておくホットスタンバイ方式、制御系の計算機システム３１でエラーが発生したり、手動操作による系の切り替わりが発生するまで、待機系の計算機システム４０のアプリケーションプログラムをＷＡＩＴ状態としておくコールドスタンバイ方式いずれにおいても、トラッキング処理のオーバーヘッド時間を最短に押さえつつ、制御系の計算機システム３１と待機系の計算機システム４０のソースメモリ３３ａ，４２ａの内容を常に同値化できる計算機システムが得られる効果がある。
【００６０】
実施の形態３．
図１０は、この実施の形態３の計算システムの構成を示すブロック図である。
なお、この計算機システムは、ＣＰＵカード、入出力Ｉ／Ｆカード、および複数の入出力アドレスを持った複数の分散型の入出力カードなどから構成される計算機システムである。図において、５１はプロセッサ、５２はＣＰＵカード（エラー情報取得手段）、５２ａは命令実行部、５２ｂは初期化処理部、５２ｃはエラー情報アドレステーブルである。５３は入出力Ｉ／Ｆカード、５３ａはエラー情報テーブル、５３ｂは接続情報テーブル、５４−１から５４−Ｎは入出力カード、５４ａ−１は入出力カード５４−１のデータ領域、５４ａ−Ｎは入出力カード５４−Ｎのデータ領域、５５はＣＰＵカード５２と入出力Ｉ／Ｆカード５３とを接続した制御バス、５６は入出力Ｉ／Ｆカード５３と入出力カード５４−１，…，５４−Ｎとを接続した入出力バスである。
【００６１】
プロセッサ５１は、ＣＰＵカード５２と、入出力Ｉ／Ｆカード５３と、前記ＣＰＵカード５２と前記入出力Ｉ／Ｆカード５３とを接続した制御バス５５とを備えていることを示す。前記ＣＰＵカード５２は、初期化処理部５２ｂと、その初期化処理部５２ｂが生成するエラー情報アドレステーブル５２ｃと、命令実行部５２ａとを備えている。
【００６２】
入出力I／Ｆカード５３はエラー情報テーブル５３ａと接続情報テーブル５３ｂとを備え、入出力バス５６を介して入出力カード５４−１，…，５４−Ｎと接続されている。前記入出力カード５４−１，…，５４−Ｎはデータ領域５４ａ−１，…，５４ａ−Ｎを備えている。
【００６３】
エラー情報アドレステーブル５２ｃは、入出力アドレスと、その入出力アドレスに対応したエラー情報テーブルの入出力カードアドレスとが格納されたテーブルである。
【００６４】
エラー情報テーブル５３ａは、各入出力カード５４−１，…，５４−Ｎごとにそのエラー情報が格納されたテーブルである。
【００６５】
接続情報テーブル５３ｂは、入出力カードと、その入出力カードに対応するサイズ情報(例えば、ポートの数)とを格納したテーブルである。
【００６６】
図１１は、エラー情報アドレステーブル５２ｃの構成を示す説明図である。図１２は、入出力Ｉ／Ｆカード５３のメモリマップ５７、エラー情報テーブル５３ａ、接続情報テーブル５３ｂの構成を示す説明図である。
【００６７】
次に動作について説明する。
図１３は、この計算機システムにおける初期化時のエラー情報アドレステーブル登録動作を示すフローチャートである。図１４は、命令実行時のエラー情報の取り出し動作を示すフローチャートである。
図１３に示すフローチャートにおいて、先ず、初期化時に、ステップＳＴ５１において入出力アドレスの指定が行われると、続くステップＳＴ５２において、前記ＣＰＵカード５２の初期化処理部５２ｂは前記指定された入出力アドレスに対し入出力アドレス単位で入出力I／Ｆカード５３の接続情報テーブル５３ｂを読み出す。続くステップＳＴ５３では、前記接続情報テーブル５３ｂから対応する入出力カード５４−１，…，５４−Ｎの入出力ポート数などのサイズ情報を取り出し各入出力カード５４−１，…，５４−Ｎのアドレスを計算する。
【００６８】
そして、次のステップＳＴ５４では、前記計算した各入出力カード５４−１，…，５４−Ｎのアドレスから、前記入出力アドレスに対応する入出力カード５４−１，…，５４−Ｎのエラー情報テーブル５３ａにおける入出力カードアドレスを取り出し、続くステップＳＴ５５で前記取り出したエラー情報テーブル５３ａにおける入出力カードアドレスを前記入出力アドレスに対応させてエラー情報アドレステーブル５２ｃに保存する。
【００６９】
そして、次のステップＳＴ５６では、順次、同様に次の入出力アドレスを指定し、ステップＳＴ５７でエンドアドレスと判定されるまで、前記指定した入出力アドレスに対応するエラー情報テーブル５３ａの入出力カードアドレスを入出力の最終アドレスまでエラー情報アドレステーブル５２ｃへ保存していく。
【００７０】
次に、命令実行時には、図１４のフローチャートに示すように、先ずステップＳＴ６１で前記ＣＰＵカード５２の命令実行部５２ａは入出力アドレスをアクセスした後、続くステップＳＴ６２でエラー情報アドレステーブル５２ｃから前記入出力アドレスをもとにエラー情報テーブル５３ａの入出力カードアドレスを取り出す。次に、ステップＳＴ６３において該当する入出力カード５４−１，…，５４−Ｎのエラー情報を、前記取り出した入出力カードアドレスをもとにそのエラー情報テーブル５３ａより取り出す。
【００７１】
そして、続くステップＳＴ６４でエラーがあるかどうかを判定し、この判定の結果、エラーがなければステップＳＴ６６へ進み、次のアドレスを取り出す。一方、ステップＳＴ６４においてエラーがあれば、ステップＳＴ６５へ進んで前記入出力アドレスをアクセスした命令に対しエラー情報を登録する。
【００７２】
以上のように、この実施の形態３によれば、命令のアクセス対象となる入出力カードのエラー情報のみを、命令実行時にエラー情報のアドレスを計算することなく前記命令ごとに取り出すことが出来、また、入出力カードの変更等により入出力のアドレスが変更された場合や入出力カードが拡張された場合にも対応できる計算機システムが得られる効果がある。
【００７３】
実施の形態４．
図１５は、この実施の形態４の計算機システムにおけるプログラムカウンタ一致検出処理を実現する構成を示すブロック図である。図において、６０は計算機システムのプロセッサ、６１はプロセッサ６０の実行に必要な制御プログラムコード、制御データ、および起動管理テーブル等の制御情報の開発と保守を行う保守ツールである。
【００７４】
また、６２はプロセッサ６０の主メモリ、６２ａは前記制御プログラムコード、６２ｂは制御プログラムコード６２ａの実行位置を指し示すプログラムカウンタ、６４は保守ツール６１から送られてきた制御情報をプロセッサ６０に登録する要求処理部、６４ａは保守ツール６１からの保守操作情報であるプログラムカウンタ一致要求、６３は制御プログラムコード６２ａを実行するプログラム実行部、６３ａは制御プログラムコード６２ａの実行をサポートするプログラム実行処理である。６３ｂは制御プログラムコード６２ａにプログラムカウンタ一致フラグが登録されているかをチェックするプログラムカウンタ一致検出処理(プログラムカウンタ一致検出処理手段)、６５は一致要求プログラムカウンタ、６６は一致フラグ登録処理（一致検出情報登録手段）である。
【００７５】
一致フラグ登録処理６６は、制御プログラムのプログラムカウンタ一致要求があると、あらかじめ制御プログラムの実行前に、一致要求されたプログラムカウンタ６２ｂのカウンタ値をもとに該当する制御プログラムコード位置を計算し、その該当する制御プログラムコード内にプログラムカウンタ一致フラグを設定するものであり、制御プログラムコード６２ａを実行する前に、保守ツール６１からのプログラムカウンタ一致要求６４ａにより、要求処理部６４から要求された一致要求プログラムカウンタ６５のカウンタ値に従って主メモリ６２上の制御プログラムコード６２ａにプログラムカウンタ一致フラグを登録する。
【００７６】
次に動作について説明する。
図１６は、この実施の形態４の計算機システムにおけるプログラムカウンタ一致検出処理動作を示すフローチャートである。
先ず、ステップＳＴ７１において、プログラム実行処理６３ａはプログラムカウンタ６２ｂが指し示す制御プログラムコード格納位置を計算し、主メモリ６２上から制御プログラムコード６２ａをフェッチし実行する。続くステップＳＴ７２では、制御プログラム実行後、プログラムカウンタ一致検出処理６３ｂは、制御プログラムコード６２ａにプログラムカウンタ一致フラグが登録されているかをチェックする。この結果、登録されていない場合には次の制御プログラムコード６２ａのフェッチ、実行に移る。一方、登録されている場合には、ステップＳＴ７３においてアキュムレータや各レジスタ値などの制御プログラム実行時の情報を収集する。そして、続くステップＳＴ７４では、情報の収集が完了したり要求処理部６４からのプログラムカウンタ一致要求６４ａがキャンセルされたときなどに制御プログラムコード６２ａからプログラムカウンタ一致フラグを削除し、次のステップＳＴ７５において、プログラムカウンタ一致要求６４ａにより登録された一致要求プログラムカウンタ６５をクリアする。
【００７７】
以上のように、この実施の形態４によれば、プログラムカウンタ一致要求があるときの制御プログラム実行前に、制御プログラム内に一致情報としてプログラムカウンタ一致フラグを登録することにより、１制御プログラム実行毎のプログラムカウンタ一致検出のための処理を前記プログラムカウンタ一致フラグが登録されているかいないかを判定するだけで行うことが出来、１制御プログラム実行毎のプログラムカウンタ一致検出のオーバーヘッドを削減することが出来、プログラムカウンタ一致要求時の制御プログラム実行速度を向上できる計算機システムが得られる効果がある。
【００７８】
また、初期状態の制御プログラムコード６２ａをフラッシュメモリやバックアップＳＲＡＭメモリに登録し、計算機システムの立ち上がり時に主メモリ６２上にコピーして使用することにより、プログラムカウンタ一致フラグが制御プログラムコード６２ａ内に登録された状態でシステムリセットされた場合でも、再立ち上がり時に主メモリ６２上へコピーし直すことで初期状態の制御プログラムコード６２ａを復旧することが出来る計算機システムが得られる効果がある。
【００８４】
【発明の効果】
この発明によれば、アプリケーションによって制御系が参照、更新する、前記アプリケーションの起動周期毎のトラッキングデータを、前記起動周期毎のトラッキング処理タイミングにおいて待機系の主メモリへ反映させるトラッキング処理手段を備えるように構成したので、待機系においても制御系と同一のアプリケーションを実行させておく方式において、前記制御系および前記待機系、両系のメモリデータを同一値とするトラッキング処理を実現する場合のオーバヘッドが抑制でき、前記両系の制御アプリケーションについて同じ処理結果を保証でき、前記待機系でのトラッキング処理タイミングに、前記制御系においてトラッキングデータの書き換え中であった場合、当該起動周期において実行すべきトラッキング処理以外の処理を先に実施した後、トラッキング処理手段が、再度、前記トラッキング処理を実施するように構成したので、前記制御系と待機系のトラッキング処理タイミングが合致した場合に対しても、待機系においても制御系と同一のアプリケーションを実行させておく方式における前記制御系と前記待機系のメモリデータの同値化を確保でき信頼性向上を図れる効果がある。
【００８５】
この発明によれば、トラッキング処理以外の処理を先に実施した後、制御系においてトラッキングデータの書き換え中の状態が継続していると、トラッキング処理手段が、当該起動周期における該当トラッキングデータのトラッキング処理を放棄するように構成したので、待機系においても制御系と同一のアプリケーションを実行させておく方式、制御系でエラーが発生したり、手動操作による系の切り替わりが発生するまで、待機系のアプリケーションプログラムをＷＡＩＴ状態としておく方式いずれに対しても、トラッキング処理のオーバーヘッド時間を最短に押さえつつ、前記制御系と前記待機系のメモリデータの内容を常に同値化できる効果がある。
【図面の簡単な説明】
【図１】  この発明の実施の形態１の計算機システムの構成を示すブロック図である。
【図２】  この発明の実施の形態１の計算機システムにおける常用系システムのアプリケーション起動処理とトラッキング処理を示すフローチャートである。
【図３】  この発明の実施の形態１の計算機システムにおける待機系システムでのアプリケーション起動処理とトラッキング処理を示すフローチャートである。
【図４】  この発明の実施の形態１の計算機システムにおけるトラッキング処理部によるトラッキング処理を示すタイミングチャートである。
【図５】  この発明の実施の形態２の計算機システムの構成を示すブロック図である。
【図６】  この発明の実施の形態２の計算機システムにおける常用系システムおよび待機系システムのトラッキング関連処理動作を示すタイミングチャートである。
【図７】  この発明の実施の形態２の計算機システムにおける制御系システムまたは待機系システムのトラッキング関連処理動作をタイミングチャートとして示した説明図である。
【図８】  この発明の実施の形態２の計算機システムにおける制御系システムのトラッキング関連動作を示すフローチャートである。
【図９】  この発明の実施の形態２の計算機システムにおける待機系システムのトラッキング関連動作を示すフローチャートである。
【図１０】  この発明の実施の形態３の計算機システムの構成を示すブロック図である。
【図１１】  この発明の実施の形態３の計算機システムにおけるエラー情報アドレステーブルの構成を示す説明図である。
【図１２】  この発明の実施の形態３の計算機システムにおける入出力Ｉ／Ｆカードのメモリマップとエラー情報テーブルと接続情報テーブルの構成を示す説明図である。
【図１３】  この発明の実施の形態３の計算機システムにおける初期化時のエラー情報アドレステーブル登録動作を示すフローチャートである。
【図１４】  この発明の実施の形態３の計算機システムにおける命令実行時のエラー情報の取り出し動作を示すフローチャートである。
【図１５】  この発明の実施の形態４の計算機システムの構成を示すブロック図である。
【図１６】  この実施の形態４の計算機システムにおけるプログラムカウンタ一致検出処理動作を示すフローチャートである。
【図１７】  特開平４−３６７９０３号公報に開示された従来の二重化計算機システムを示す構成図である。
【図１８】  特開平４−３６７９０３号公報に開示された従来の二重化計算機システムを示す構成図である。
【図１９】  特開平４−３６７９０３号公報に開示された従来の二重化計算機システムにおける二重化計算機システムの動作を示すフローチャートである。
【図２０】  特開平４−３３２００２号公報に示された従来の計算機システムを示す構成図である。
【図２１】  特開平４−３３２００２号公報に示された従来の計算機システムの入出力Ｉ／Ｆカードのメモリマップを示す説明図である。
【図２２】  特開平４−３３２００２号公報に示された従来の計算機システムの動作を示すフローチャートである。
【図２３】  特開平４−３３２００２号公報に示された従来の計算機システムにおける制御プログラム実行時のプログラムカウンタ一致処理を示す構成図である。
【図２４】  特開平４−３３２００２号公報に示された従来の計算機システムにおける制御プログラム実行部によるプログラムカウンタ一致検出動作を示すフローチャートである。
【符号の説明】
１  計算機システム、１３  制御系のトラッキングバッファ、１４  参照アドレス管理テーブル、１７  メモリ（待機系の主メモリ）、１８  待機系のトラッキングバッファ、１９  トラッキング処理部(トラッキング処理手段)、２４  参照アドレス抽出部、３１  制御系の計算機システム、３２，４１  中央演算処理装置（トラッキング処理手段）、３５，４３  トラッキング転送用ＤＭＡ（トラッキング処理手段）、４０  待機系の計算機システム、５２  ＣＰＵカード（エラー情報取得手段）、５２ｃ  エラー情報アドレステーブル、５３  入出力Ｉ／Ｆカード、５３ａ  エラー情報テーブル、５３ｂ  接続情報テーブル、５４−１，…，５４−Ｎ  入出力カード、６３ｂ  プログラムカウンタ一致検出処理（プログラムカウンタ一致検出処理手段）、６６  一致フラグ登録処理（一致検出情報登録手段）。
【図１】
0003910340.tif 000002
【図２】
0003910340.tif 000003
【図３】
0003910340.tif 000004
【図４】
0003910340.tif 000005
【図５】
0003910340.tif 000006
【図６】
0003910340.tif 000007
【図７】
0003910340.tif 000008
【図８】
0003910340.tif 000009
【図９】
0003910340.tif 000010
【図１０】
0003910340.tif 000011
【図１１】
0003910340.tif 000012
【図１２】
0003910340.tif 000013
【図１３】
0003910340.tif 000014
【図１４】
0003910340.tif 000015
【図１５】
0003910340.tif 000016
【図１６】
0003910340.tif 000017
【図１７】
0003910340.tif 000018
【図１８】
0003910340.tif 000019
【図１９】
0003910340.tif 000020
【図２０】
0003910340.tif 000021
【図２１】
0003910340.tif 000022
【図２２】
0003910340.tif 000023
【図２３】
0003910340.tif 000024
【図２４】
0003910340.tif 000025