(57)【特許請求の範囲】
【請求項１】
工業用制御装置であって，
ユーザ・プログラムおよびデータ・テーブルを記憶するよう動作可能なメモリ（３４）と，
前記メモリ（３４）へのアクセスを制御し，前記メモリ（３４）に関連する保護データを記憶するよう動作可能であり，さらに前記保護データと矛盾するメモリ・アクセス命令に応答して，アボート条件を信号として送信するよう動作可能なメモリ管理機構（３６）と，
プロセッサ（１６，３２）とを含み，
該プロセッサは，
前記メモリ管理機構（３６）を通して前記メモリ（３４）と通信し，
前記ユーザ・プログラムを実行し，前記データ・テーブルを含む前記メモリ（３４）の第１の部分を，前記保護データにおいて読取り専用として指定し，
前記ユーザ・プログラムに従い，前記第１の部分を目標とする目標アドレスを有する複数の書込み命令を発行し，
前記第１の部分の前記読取り専用指定と矛盾する目標アドレスを有する前記書込み命令の選択された１つの書き込み命令の結果として，前記メモリ管理機構（３６）によるアボート条件の前記信号送信によって呼び出されたアボート・ハンドラ（４８）を実行するよう動作可能であり，
前記アボート・ハンドラ（４８）は，
前記選択された書込み命令を実行する前に，少なくとも前記目標アドレスを含む前記メモリの第２の部分を読取り／書込みとして指定し，
前記選択された書込み命令に続く，前記ユーザ・プログラムにおける命令を記憶し，
前記記憶された命令をトラップ命令に置き換えるよう前記ユーザ・プログラムを変更し，プログラムの実行に際して前記アボート・ハンドラ（４８）に制御を戻し，選択された書込み命令において前記ユーザ・プログラムに制御を戻すように動作可能であり，該ユーザ・プログラムにおいて前記プロセッサ（１６，３２）は，前記選択された書込み命令および前記トラップ命令を実行して前記アボート・ハンドラ（４８）に制御を戻すよう動作可能であり，
該アボート・ハンドラ（４８）はさらに，
前記第２の部分を読取り専用として指定し（９８），
前記トラップ命令を前記記憶された命令に置き換え（１００），
前記選択された書込み命令に続く前記置き換えられた命令において，前記ユーザ・プログラムに制御を戻す（１０２）よう動作可能であることを特徴とした，前記工業用制御装置。
【請求項２】
請求項１に記載の工業用制御装置において，
前記メモリはページに編成され，前記目標アドレスの各々は，前記ページの１つに関連付けられ，前記アボート・ハンドラ（４８）はさらに，
前記目標アドレスを記録し，
選択されたページに関連する書込み要求のカウントを決定し，
予め決定された閾値を超過する前記カウントに応答して，後続の書込み要求のために，前記選択されたページを読取り／書込みとして指定し，
前記選択されたページを変更されたとしてフラグを立てるよう動作可能であることを特徴とした，前記工業用制御装置。
【請求項３】
メモリ変更を識別する方法であって，
メモリの第１の部分を読取り専用として指定すること（８１）と，
前記第１の部分内の目標アドレスを有する，ユーザ・プログラムから由来する書込み命令を受信することに応答して，アボート条件を識別すること（８６）と，
少なくとも前記目標アドレスを含む前記メモリの第２の部分を読取り／書込みとして指定すること（８８）と，
前記書込み命令に続く，前記ユーザ・プログラムにおける命令を記憶すること（９１）と，
前記ユーザ・プログラムを，前記記憶された命令をトラップ命令に置き換えるよう変更すること（９１）と，
前記書込み命令において前記ユーザ・プログラムを実行すること（９４）と，
前記トラップ命令を実行すること（９６）と，
前記トラップ命令を実行することに応答して，前記第２の部分を読取り専用として指定し（９８），前記トラップ命令を前記記憶された命令に置き換え（１００），前記書込み命令に続く前記置き換えられた命令において，前記ユーザ・プログラムの実行を再開すること（１０２，１０４）と，
を含むことを特徴とする，前記方法。
【請求項４】
請求項３に記載の方法はさらに，
前記目標アドレスの各々がページの１つに関連付けられた，ページに編成された前記メモリを提供することと，
選択されたページに関連する書込み要求のカウントを決定することと，
予め決定された閾値を超過する前記カウントに応答して，後続の書込み要求のために，前記選択されたページを読取り／書込みとして指定することと，
前記選択されたページを変更されたとしてフラグを立てることと，
前記変更されたとしてフラグを立てられた前記メモリの部分を定期的に２次制御装置に転送すること（１１０）と，
を含むことを特徴とする前記方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の背景）
本発明は、工業用制御システム、および特に、工業用制御装置を冗長制御装置と同期化するための方法および装置に関する。
【背景技術】
【０００２】
本出願のこの部分は、以下に説明および／あるいは請求される本発明の多様な態様に関連するかもしれない、技術の多様な態様を紹介するよう意図するものである。この部分は、本発明の多様な態様をよりよく理解できるように、背景情報を提供する。本出願のこの部分における記述は、この観点において読まれるべきであり、従来技術の承認としてではないことを理解されたい。
【０００３】
工業用制御装置は、工場自動操作およびそれに類するものを制御するために使用される専用コンピュータである。記憶されたプログラムの指示の下に、工業用制御装置のプロセッサは、制御された処理の状態を反映する一連の入力を検査し、制御された処理の制御に影響を与える出力を変更する。記憶された制御プログラムは、一連の実行サイクルにおいて連続して実行されてもよく、定期的に実行されてもよく、あるいは事象に基づき実行されてもよい。
【０００４】
工業用制御装置によって制御された処理から受信された入力、および工業用制御装置によって制御された処理に送信された出力は、通常、１つあるいは複数の入出力（Ｉ／Ｏ）モジュールを通して渡される。入出力モジュールは、制御装置と制御された処理との間の電気的インタフェースとして機能する。入力および出力は、メモリにおけるＩ／Ｏデータ・テーブルに記憶される。入力値は、専用回路によって、制御された処理から非同期に読み取られてもよい。出力値は、プロセッサによってＩ／Ｏデータ・テーブルに直接書き込まれ、それから専用通信回路によって制御された処理に通信される。
【０００５】
工業用制御装置は、しばしば、長時間にわたる中断されない信用性の高い操作を提供しなければならない。このような操作を保証する１つの方法は、工業用制御装置が作動している間に、主制御装置構成要素に代わるよう切り換えてもよい、冗長的、２次制御装置構成要素（独立したプロセッサを含む）を使用することによる。主構成要素の故障の事象において、あるいは、構成要素の保守の必要性がある場合において、例えば、２次構成要素は、制御機能を引き継ぐために起動されてもよい。制御プログラムの保守あるいは検査は、問題が起きた場合に、主プロセッサを、２次プロセッサ（および制御プログラムの先のバージョンあるいは状態）に切り換える可能性を保持しながら実行されてもよい。
【０００６】
制御装置あるいはそれらの構成要素間の切換えは、制御された処理の過度の混乱を起こさずに行われることが理想的である。このことを可能にするために、２次プロセッサは、同じプログラムを走らせるあるいは走らせるのを待たなければならず（そしてその現在の状態を保持しなければならず）、そして主プロセッサが作動しているように、そのＩ／Ｏデータ・テーブルにおける同じデータを使用して作動しなければならない。
【０００７】
同じ制御プログラムは単に、主および２次プロセッサの各々に予め記憶されていてもよい。しかし、Ｉ／Ｏデータ・テーブルのデータは、予め記憶することができず、制御された処理の間に連続的に変化する。さらに、制御処理はＩ／Ｏ集中的なので、Ｉ／Ｏデータ・テーブルには通常多量のデータがある。このために、データを２次プロセッサに送信することは困難である。
【０００８】
主および冗長制御装置の同期化に伴うオーバヘッドを減らすための１つの技術は、Ｉ／Ｏテーブルを記憶するよう指定されたメモリの一部分における変化にフラグを立てる、専用集積回路（ＡＳＩＣ）のようなカスタム回路を使用して、Ｉ／Ｏテーブルへの特定の変化を監視することである。同期点に到達すると、設定されたフラグが読まれ、フラグを立てられた位置における関連するデータが収集され、そして変更されたデータが冗長制御装置に送信される。この方法は、“バックアップ制御装置のプログラム同期更新を伴う工業用制御装置”と題する、米国特許第５，９３３，３４７号により詳細に記述され、この米国特許は、本出願と同じ権利者に属し、その全体においてここに参照により取り入れられる。
【０００９】
特許第５，９３３，３４７号に記述される監視回路のような、カスタム・プロセッサおよび関連する集積回路の使用は、ますます実現が困難になってきている。コストを削減し柔軟性を高めるために、工業用制御システムは、以前に使用されていたカストマイズされた解決方法と同じ機能性を持たない、購入可能なマイクロプロセッサおよび支援回路を使用して、開発されている。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、上記の問題のうちの１つあるいは複数を解決する、あるいは少なくともその影響を軽減することを目的とする。
【課題を解決するための手段】
【００１１】
（発明の要約）
本発明の発明者は、メモリ変更は、購入可能なハードウェアを使用して、主および冗長制御装置を同期化する目的のために追跡できることに気が付いた。メモリ管理機構は、監視されているメモリの保護を読取り専用に設定するために使用されてもよい。監視されているメモリへの後続の書込みは、アボート（ａｂｏｒｔ）・ハンドラによってトラップされ、記録され、その後許可される。記録された記憶場所は、それから主および冗長制御装置の間で通信されてもよい。
【００１２】
本発明の１つの態様は、メモリ変更を識別するための方法において見られる。本方法は、第１のメモリの第１の部分を読取り専用として指定することを含む。アボート条件は、第１の部分内の目標アドレスを有する書込み命令を受信することに応答して識別される。アボート条件に応答して、少なくとも目標アドレスを含む第１のメモリの第２の部分が変更されたとしてフラグを立てられる。書込み命令は実行される。
【００１３】
本発明の他の態様は、メモリ、メモリ管理機構、およびプロセッサを含む工業用制御装置において見られる。メモリは、ユーザ・プログラムおよびデータ・テーブルを記憶するよう動作可能である。メモリ管理機構は、メモリへのアクセス制御し、メモリに関連する保護データを記憶するよう動作可能である。メモリ管理機構は、保護データと矛盾するメモリ・アクセス命令に応答して、アボート条件を信号として送信するよう動作可能である。プロセッサは、メモリ管理機構を通してメモリと通信し、データ・テーブルを含むメモリの第１の部分を保護データにおいて読取り専用として指定するために、ユーザ・プログラムを実行し、ユーザ・プログラムに従って、第１の部分を目標とする目標アドレスを有する書込み命令を発行し、そして、第１の部分の読取り専用指定と矛盾する目標アドレスを有する書込み命令の選択された１つの結果である、メモリ管理によるアボート条件の信号送信によって呼び出されたアボート・ハンドラを実行するよう、動作可能である。アボート・ハンドラは、少なくとも目標アドレスを含むメモリの第２の部分に、変更されたとしてフラグを立て、そして、選択された書込み命令の実行を許可するよう動作可能である。
【００１４】
本発明のさらなる他の態様は、主工業用制御装置および２次工業用制御装置を含む工業用制御システムにおいて見られる。主工業用制御装置は、第１のメモリを含み、第１のメモリに記憶されたユーザ・プログラムおよびデータ・テーブルに従って処理を制御するよう、動作可能である。主工業用制御装置は、データ・テーブルを含む第１のメモリの第１の部分を読取り専用として指定し、第１の部分内の目標アドレスを有するユーザ・プログラムからの書込み命令の受信に応答してアボート条件を識別するよう、動作可能である。アボート条件に応答して、主工業用制御装置は、少なくとも目標アドレスを含む第１のメモリの後続の部分に変更されたとしてフラグを立て、書込み命令を実行し、そして、変更されたとしてフラグを立てられた第１のメモリの部分に基づき、定期的に更新データを生成するよう、動作可能である。２次工業用制御装置は、ユーザ・プログラムのコピーおよびデータ・テーブルのコピーを記憶するよう動作可能な第２のメモリを含む。２次工業用制御装置は、更新データを受信し、更新データに基づきそのデータ・テーブルのコピーを更新するよう動作可能である。
【００１５】
本発明のこれらおよび他の目的、利点および態様は、以下の説明から明らかとなるであろう。ここに説明される特定の目的および利点は、請求項の範囲内のいくつかの実施例にのみ適用されてもよく、従って、本発明の範囲を定義するものではない。この説明において、この出願の一部を形成し、本発明の好ましい実施例が示されている付随する図面が参照される。このような実施例は、必ずしも本発明の全範囲を表すものではなく、従って、本発明の範囲を解釈するためには、この出願における請求項が参照される。
【００１６】
本発明は以下に、付随する図面を参照しながら説明され、図面においては、同じ参照番号は同じ構成要素を示す。
【実施例１】
【００１７】
（発明の詳細な説明）
本発明の１つあるいは複数の特定の実施例を以下に説明する。本発明は、実施例およびここに含まれる図面に限定されるものではなく、以下の請求項の範囲内に該当する、実施例のある部分および異なる実施例の構成要素の組合せを含むような、実施例の変更された形式を含むことが、特に意図されている。任意のこのような実際の実現の開発においては、任意の工学あるいは設計プロジェクトにおけるのと同様に、実現によって異なるかもしれない開発者の特定の目標を達成するために、システム関連およびビジネス関連の制約の遵守のような、多くの実現に特定な決定が行われなければならないことを理解されたい。さらに、このような開発の努力は、複雑で時間のかかるものであるかもしれず、しかしそれにも関わらず、本開示の恩恵を受けるこの分野の技術者にとっては、設計、製作、および製造の決まりきった仕事であろうことを理解されたい。本出願において、“重要”あるいは“必須”と明示されない限り、本発明にとって重要あるいは必須とみなされるものはない。
【００１８】
ここで図面を参照すると、図面においては、複数の図面を通して同じ参照番号は同様の構成要素に対応し、特に図１を参照すると、本発明は、工業用制御システム１０の環境において説明される。工業用制御システム１０は、別個のラック１４に収容された主制御装置１２ａおよび２次制御装置１２ｂを含む。各ラック１４はそれぞれ、プロセッサ・モジュール１６ａおよび１６ｂを保持し、これらは以下により詳細に説明される。
【００１９】
主制御装置１２ａのラック１４内には、制御装置１２ａと制御された処理との間で入力および出力信号を転送するために制御された処理（図示されていない）と通信するＩ／Ｏライン２０を有する、Ｉ／Ｏモジュール１８がある。加えて、双方のラック１４は、制御装置１２ａおよび１２ｂを共通汎用リンク２４に接続する通信モジュール２２、および、制御装置１２ａおよび１２ｂを特定専用通信リンク２８に接続する通信モジュール２６を含む。汎用通信リンク２４はまた、追加Ｉ／Ｏモジュール１８およびＩ／Ｏライン２０を有するＩ／Ｏラック３０に接続してもよい。工業用制御システム１０は、イーサネット（Ｅｔｈｅｒｎｅｔ）（登録商標）、デバイスネット（ＤｅｖｉｃｅＮｅｔ）、コントロールネット（ＣｏｎｔｒｏｌＮｅｔ）、ファイアワイヤ（Ｆｉｒｅｗｉｒｅ）あるいはフィールドバス（ＦｉｅｌｄＢｕｓ）を含むがこれらに限定されない、標準および一般に入手可能な高速直列ネットワークを実現してもよく、上記の標準あるいは他のプロトコルの異なるものの間での変換のための、１つあるいは複数のブリッジを選択的に含んでもよい。
【００２０】
専用通信リンク２８は、プロセッサ・モジュール１６ａと１６ｂとの間のＩ／Ｏデータの通信、および、主および２次制御装置１２ａおよび１２ｂの動作間の切換えを調整する情報の通信のために使用される。
【００２１】
ここで図１および２を参照すると、主制御装置１２ａの簡略化されたブロック図が提供されている。主制御装置１２ａは、メモリ管理機構３６を通してメモリ３４と通信するマイクロプロセッサ３２を含む。主制御装置１２ａはまた、通信モジュール２２、２６、および、ヒューマン・インタフェース・モジュール（図示されていない）のような他の関連する周辺装置と通信するために、複数のポート３８を含む。図示される実施例において、マイクロプロセッサ３２、メモリ３４、およびメモリ管理機構３６は、コンピュータ業界において標準の、購入可能なハードウェア構成要素である。メモリ３４は、この分野では周知の、揮発性あるいは不揮発性メモリ・タイプ（つまり、あるいは双方の組合せ）を含んでもよい。例えば、メモリ３４は、フラッシュ・メモリ、ダイナミック・メモリ、ハード・ディスク、等を含んでもよい。
【００２２】
メモリ３４は、ユーザ・プログラム４０およびＩ／Ｏデータ・テーブル４２を記憶するよう動作可能である。一般に、ユーザ・プログラム４０は、汎用算術および論理命令と同様に、工業用制御環境においてよく使用されるリレー・ラダー論理を含んでもよい。ユーザ・プログラム４０は、走査点において反復実行サイクルにおいて実行される、ユーザ・プログラムを通して走査しＩ／Ｏデータ・テーブル４２にデータを書き込む一連の命令を含む。同時に、Ｉ／Ｏデータ・テーブル４２は、リンク２４を通して、Ｉ／Ｏモジュール１８からの現在の入力値に非同期に更新される。Ｉ／Ｏデータ・テーブル４２における出力値は、ユーザ・プログラム４０の実行サイクルと同期に、Ｉ／Ｏモジュール１８に送信されてもよい。マイクロプロセッサ３２、メモリ３４、およびメモリ管理機構３６の動作はまた、監視コード４３によって影響される。監視コード４３は、オペレーティング・システム、およびユーザ・プログラム４０の実行を管理する全ての監視モード・コードを含む。
【００２３】
一般に、主制御装置１２ａは、変更された記憶場所を追跡し、ユーザ・プログラム４０が同期点（例えば、走査の終点）に到達した時、変更されたデータは、その対応するメモリを更新するために２次制御装置１２ｂに送信される。主制御装置１２ａは、次の走査を開始する前に休止し、転送が成功したという確認を待つ。従って、制御が主制御装置１２ａから２次制御装置１２ｂに移った場合、２次制御装置１２ｂは、同じＩ／Ｏデータ上で動作することになる。監視のために指定されたメモリ３４の部分は異なってもよい。１つの実施例において、Ｉ／Ｏデータ・テーブル４２に関連するメモリ３４の部分が、監視のために指定されてもよい。他の実施例においては、ユーザ・プログラム４０のような他の部分もまた、監視されてもよい。
【００２４】
本発明は、Ｉ／Ｏデータ・テーブル４２への変更を識別するために実現されてもよいように説明されているが、任意の装置のメモリあるいはメモリの一部分が、変更を識別し同期化を可能にするために監視されている、任意のアプリケーションに一般的に適用してもよい。
【００２５】
さらに図２を参照すると、この分野では周知のように、メモリ管理機構３６は、通常、仮想メモリ・アドレスをメモリ３４における実際の物理メモリ・アドレスに変換するために使用される。仮想アドレスの連続するグループは、メモリ３４内において連続するように記憶されなくてもよい。監視コード４３は、変換テーブル４４を定義し記憶する。変換テーブル４４は、仮想アドレスと物理メモリ・アドレスとの間の対応関係を定義するために、メモリ管理機構３６が使用する。仮想アドレスがメモリ管理機構３６によって受信されると、メモリ管理機構３６は、参照されている実際の物理メモリ・アドレスを識別するために、変換テーブル４４を調べる。通常、メモリ管理機構３６によって追跡されたメモリは、構成可能な大きさ（例えば、通常１ｋから４ｋバイトの間）のページに集められる。仮想アドレスの最上位のビットはページを表し、最下位のビットはページ内の索引を表す。性能を高めるために、メモリ管理機構３６は、最近のメモリ・トランザクションに関する情報を記憶する、変換索引バッファ（ＴＬＢ）４６を含む。例えば、ＴＬＢ４６は、アクセスされた最近の３２ページのために、変換テーブル４４から情報を記憶してもよい。
【００２６】
メモリ管理機構３６の他の機能は、異なる保護方式をメモリ３４の領域に適用できるようにすることである。例えば、その特定の用途によって、ブロックを読取り／書込みあるいは読取り専用として指定してもよい。保護情報もまた、仮想から物理への変換情報と共に、各ページに対して変換テーブル４４に記憶される。最近アクセスされたページに対する保護情報もまた、ＴＬＢ４６に記憶される。読取り専用と指定された記憶場所をアドレス指定する書込み命令が受信されると、アボートが発行され、マイクロプロセッサ３２は、エラー状態を処理するための命令を含むアボート・ハンドラ４８を実行する。
【００２７】
主制御装置１２ａは、以下により詳細に説明するように、メモリ３４への変更を追跡するために、メモリ管理機構３６の保護機能を使用する。一般に、監視のために指定された記憶場所（例えば、Ｉ／Ｏデータ・テーブル４２）は、変換テーブル４４において読取り専用として指定されている。これらの場所を目標とする書込み命令が試行されると、アボートが引き起こされ、アボートは、アボート・ハンドラ４８によって処理される。アボート・ハンドラ４８は、試行された書込みの記憶場所を変更メモリ・ログ５０に記録し、書込みを許可するために目標アドレスの保護を変更し、そして、プログラム・カウンタを、書込み命令を生成したユーザ・プログラム４０における命令に戻す。そして、メモリ保護が読取り／書込みに変更されているので、書込みの再実行が成功する。
【００２８】
第１の実施例において、図３の簡略化された流れ図を参照して説明すると、主制御装置１２ａは、メモリ・アクセスをページ毎に追跡する。ブロック５２においてプログラム走査が開始され、監視される記憶場所はブロック５４において読取り専用として指定される。変更メモリ・ログ５０もまた、先の走査の記録を取り除くためにブロック５４においてクリアされる。ここでも、監視のために指定されているメモリ３４の特定の部分は、異なってもよい。以下の例の目的のために、Ｉ／Ｏデータ・テーブル４２のために確保された記憶場所が、監視のために指定される。監視コード４３は、変換テーブル４４に書き込み、ＴＬＢ４６における項目をフラッシュするあるいは無効にすること（つまり、ＴＬＢ４６が先の走査からの状態保護データを提供しないようにすること）によって、保護状態を設定する。
【００２９】
ブロック５６において、書込み命令が受信される。書込み命令の目標アドレスの保護状態が、ブロック５８においてメモリ管理機構３６によって検査される。記憶場所を含むページが読取り専用である場合、書込み命令は拒否され、アボート・ハンドラ４８がブロック６０において割込みを通して呼び出される。ブロック６２において、目標アドレスを含むページの保護状態が、アボート・ハンドラ４８によって、変換テーブル４４を変更しＴＬＢ４６を無効にするあるいはフラッシュすることにより、読取り／書込みに設定される。ページは、ブロック６４において、変更メモリ・ログ５０に記録される。目標アドレスの最上位のビットはページを特定し、最下位のビットはページ内の索引を示す。例えば、３２ビットのアドレスおよび１ｋバイトのページ・サイズを使用すると、最上位の１９ビットはページを特定し、最下位の１３ビットは索引を特定する。本実施例においては、主制御装置１２ａはページ毎に変更を追跡するので、索引ビットは無視されてもよく、ページ・ビットのみが変更メモリ・ログ５０に記憶される。また、ページ境界は予め決定されてもよく、変更メモリ・ログ５０は、各々ページの１つに関連する一連のフラグ・ビットを含んでもよい。このような場合において、アボート・ハンドラ４８は、ページ・ビットを記憶することとは対照的に、目標アドレスを含むページに関連するフラグを設定する。
【００３０】
ブロック６６において、アボート・ハンドラ４８は、プログラム・カウンタを、書込み要求を開始した命令に設定することによって、制御をユーザ・プログラム４０に戻す。ユーザ・プログラム４０が書込み命令を再実行すると、命令はブロック５６において受信され、ページが今は読取り／書込みとして指定されているので、保護検査はブロック５８において通過し、そして、書込み命令はブロック６８において実行される。同じページへの後続の書込み命令（つまり、異なる索引を有する）もまた、保護検査を通過し、アボート・ハンドラ４８による続く記録あるいは介入無しに、書き込まれる。
【００３１】
プログラム走査はブロック７０において続く。他の書込み命令が受信されると、主制御装置１２ａは、ブロック５６に戻って移行する。ブロック７２において同期点に到達すると（つまり、プログラム走査の終点において）、変更メモリ・ログ５０がブロック７４において読み取られ、変更されたメモリ値を有するページは、ブロック７６において、専用通信リンク２８を通して２次制御装置１２ｂに転送される。プログラム走査は、ブロック７８において終了する。次のプログラム走査は、保護状態が読取り専用に戻されることができ、ＴＬＢ４６がフラッシュされることができるように、ブロック５２において開始する。変更メモリ・ログ５０もまたクリアされる。
【００３２】
従って、全てのプログラム走査に対して、変更されたデータ値を有するページは、２次制御装置１２ｂに転送される。ページ・サイズを相対的に小さい値（例えば１ｋバイト）に設定することにより、そして、書込み命令はしばしば所定のページ内にクラスタされることを考慮することにより、個々のワードを送信することとは対照的にページ全体を送信することにより生じる効率の悪さを、許容範囲内に抑えることができる。
【００３３】
ある場合には、メモリ管理機構３６は、書込みが行われた各ページに対して、ＴＬＢ４６に“汚れた（ｄｉｒｔｙ）”ビットを記憶してもよい。この汚れたビットは、ページが変更されたことを示すために使用されてもよい。汚れたビット機能は、変更されたページを追跡するために、変更メモリ・ログ５０と関連して使用されてもよい。ＴＬＢ４６から汚れたビットを設定された項目が置き換えられたあるいはフラッシュされた場合、変更メモリ・ログ５０は、変更されたデータを有するページを反映するために更新される。
【実施例２】
【００３４】
図４の簡略化された流れ図によって示される第２の実施例において、主制御装置１２ａは、同期点に到達した時に、各ページ内の変更されたワードのみが転送されるように、個々の書込み命令の位置を追跡する。本実施例は、小さいページ・サイズがメモリ管理機構３６によってサポートされていない場合、あるいは、書込みがクラスタされるよりむしろ分配される傾向にある場合に、使用されてもよい。主制御装置１２ａの構成パラメータは、特定の管理モード（つまり、ページあるいはワード）を選択するために使用されてもよい。
【００３５】
ブロック８０においてプログラム走査が開始され、監視された記憶場所はブロック８１において読取り専用として指定される。変更メモリ・ログ５０もまた、先の走査の記録を取り除くために、ブロック８１においてクリアされる。ブロック８２において書込み命令が受信される。メモリ管理機構の目標アドレスの保護状態が、ブロック８４において、メモリ管理機構３６によって検査される。記憶場所を含むページが読取り専用である場合、書込み命令は拒否され、ブロック８６においてアボート・ハンドラ４８が割込みを使用して呼び出される。ブロック８８において、目標アドレスを含むページの保護状態が、変換テーブル４４を変更すること、および、ＴＬＢ４６を無効にするあるいはフラッシュすることによって、変換テーブル４４において読取り／書込みに設定される。目標アドレス（つまり、ページおよび索引フィールドを含む）は、ブロック９０において変更メモリ・ログ５０に記録される。
【００３６】
この時点において、アボート・ハンドラ４８は、試行された書込みのアドレスおよびアボートされた命令のアドレスを知る。ブロック９１において、アボート・ハンドラ４８は、アボートされた命令に続く命令を一時レジスタあるいは記憶場所に記憶し、ソフトウェア割込み（ＳＷＩ）のような“トラップ”命令をその場所に挿入する。プログラム・カウンタがまだ挿入されたＳＷＩを指すように、アボートを引き起こした記憶された命令がプログラム・カウンタを変更しないことを保証するための手段が（例えば、オペレーティング・システムによって）取られなければならない。
【００３７】
ブロック９２において、アボート・ハンドラ４８は、プログラム・カウンタを書込み命令に設定することによって、制御をユーザ・プログラム４０に戻す。ユーザ・プログラム４０が書込み命令を再実行すると、命令はブロック８２において受信され、ページは今は読取り／書込みとして指定されているので、保護検査はブロック８４において通過し、書込み命令はブロック９４において実行される。
【００３８】
トラップ命令はブロック９６において実行される。アボート・ハンドラ４８はトラップ命令によって呼び出され、ブロック９８において保護状態を読取り専用に戻すよう変更し、ブロック１００においてトラップ命令を置き換えられた命令に置き換え、そしてブロック１０２において、プログラム・カウンタを書込みに続く命令を指すようにして、制御をユーザ・プログラム４０に戻すよう処理を進める。
【００３９】
プログラム走査は、ブロック１０４において続く。他の書込み命令が受信されると、主制御装置１２ａは、ブロック８２に戻って移行する。ブロック１０６において同期点に到達すると（つまり、プログラム走査の終点において）、変更メモリ・ログ５０がブロック１０８において読み取られ、特定の変更されたメモリ値は、ブロック１１０において、専用通信リンク２８を通して２次制御装置１２ｂに転送される。プログラム走査はブロック１１２において終了する。
【００４０】
図４の実施例は、各ページがアクセスされた回数を数え、カウントを変更メモリ・ログ５０に記憶することによって、さらに変更してもよい。例えば１ページにつき５回の書込みのような、予め決定された閾値が到達されると、ページ全体が変更メモリ・ログ５０に記録され、個々の項目は取り除かれ、そしてそのページは、図３の実施例において説明されるように、走査の残りの部分のために読取り／書込みに設定される。この変更により、所定のページにクラスタされた書込み命令は、アボート・ハンドラ４８によるさらなる介入なしに処理を進めることができ、それにより効率が良くなる。
【実施例３】
【００４１】
他の実施例において、トラップ命令を使用する代わりに、アボート・ハンドラ４８は、アボートされた書込み命令を解析し、読取り専用保護を無効にする監視モードにおいて動作しながら、そのアドレスを目標とする書込み命令そのものを実行してもよい。アボート・ハンドラ４８はそれから、プログラム・カウンタを次の命令を指すようにして、ユーザ・プログラム４０に制御を戻す。
【００４２】
ここに説明されるように、メモリ管理機構の保護機能を使用してメモリ変更を追跡することには、多くの利点がある。例えば、従来のハードウェアを使用することは、コストを削減し、柔軟性を高め、工業用制御システム１０のための開発時間を短縮する。
【００４３】
上に開示した特定の実施例は例示のみであり、本発明は、ここにおける開示の恩恵を受けるこの分野の技術者には明らかな、異なるが同等の方法において変更および実現されてもよい。さらに、以下の請求項において記述される以外、ここに示される構成あるいは設計の詳細について何の制限も意図されていない。従って、上に開示された特定の実施例は変更あるいは修正されてもよく、全てのこのような変更は、本発明の範囲および精神内にあると考えられることが明白である。従って、ここで求められる保護は、以下の請求項において明らかにされるものである。
【図面の簡単な説明】
【００４４】
【図１】本発明の１つの実施例による工業制御システムの簡略化した図である。
【図２】図１のシステムにおける工業用制御装置の簡略化したブロック図である。
【図３】冗長制御装置との同期化のため、メモリ変更を追跡するために図２の工業用制御装置によって使用される方法の簡略化した流れ図である。
【図４】冗長制御装置との同期化のため、メモリ変更を追跡するために図２の工業用制御装置によって使用される方法の簡略化した流れ図である。
【符号の説明】
【００４５】
１０  工業用制御システム
１２ａ  主制御装置
１２ｂ  ２次制御装置
１４  ラック
１６ａ  プロセッサ・モジュール
１６ｂ  プロセッサ・モジュール
１８  Ｉ／Ｏモジュール
２０  Ｉ／Ｏライン
２２  通信モジュール
２４  汎用通信リンク
２６  通信モジュール
２８  専用通信リンク
３０  Ｉ／Ｏラック
３２  マイクロプロセッサ
３４  メモリ
３６  メモリ管理機構
３８  ポート
４０  ユーザ・プログラム
４２  Ｉ／Ｏデータ・テーブル
４３  監視コード
４４  変換テーブル
４６  変換索引バッファ
４８  アボート・ハンドラ
５０  変更メモリ・ログ
【図１】
0004505608.tif 000002
【図２】
0004505608.tif 000003
【図３】
0004505608.tif 000004
【図４】
0004505608.tif 000005