(57)【要約】【課題】プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新することが可能なプロセス制御システム等を提供する。【解決手段】第１プロセス制御装置は、非更新対象プログラムと更新対象プログラムとを実行させる第１プログラム実行部と、一時停止要求に基づいて、非更新対象プログラムを一時停止させ、非更新対象プログラムのコンテキストを転送する第１プログラム更新制御部と、を備え、第２プロセス制御装置は、非更新対象プログラムと更新後の更新対象プログラムとを実行させる第２プログラム実行部と、再開要求に基づいて、転送されるコンテキストを用いて非更新対象プログラムのコンテキストを復元するとともに、更新対象プログラムのコンテキストを初期化し、非更新対象プログラム及び更新対象プログラムを第２プログラム実行部で再開させる第２プログラム更新制御部と、を備える。【選択図】図１
2020052668.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセス制御装置と第２プロセス制御装置とを備えるプロセス制御システムであって、
前記第１プロセス制御装置は、更新対象ではない非更新対象プログラムと、更新対象となり得る更新対象プログラムとを実行させる第１プログラム実行部と、
外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキストを前記第２プロセス制御装置に転送する第１プログラム更新制御部と、を備え、
前記第２プロセス制御装置は、更新対象ではない非更新対象プログラムと、更新後の更新対象プログラムとを実行させる第２プログラム実行部と、
外部からの再開要求に基づいて、前記第１プログラム更新制御部から転送される前記コンテキストを用いて前記非更新対象プログラムのコンテキストを復元するとともに、前記更新対象プログラムのコンテキストを初期化し、前記非更新対象プログラム及び前記更新対象プログラムを前記第２プログラム実行部で再開させる第２プログラム更新制御部と、を備える
プロセス制御システム。
【請求項２】
前記第１プログラム更新制御部は、前記非更新対象プログラムが要求した前記更新対象プログラムの処理が仕掛中であると判定した場合には、前記非更新対象プログラムの実行位置を前記更新対象プログラムに処理を要求する直前に戻すとともに、前記更新対象プログラムが仕掛中である旨を示す情報を削除する、請求項１記載のプロセス制御システム。
【請求項３】
前記第１プログラム更新制御部は、前記非更新対象プログラムが呼び出した前記更新対象プログラムの処理が仕掛中であると判定した場合には、前記更新対象プログラムが仕掛中の処理を完了させるのを待つ、請求項１記載のプロセス制御システム。
【請求項４】
前記第１プログラム更新制御部は、前記非更新対象プログラムが呼び出す前記更新対象プログラムの中に処理が仕掛中のものがあると判定した場合には、前記更新対象プログラムのうちの予め登録された更新対象プログラムの要求が残りの更新対象プログラムに伝わらないように設定して前記更新対象プログラムの処理が停止するのを待ってから、前記予め登録された更新対象プログラムのコンテキストから処理の再開に必要な復元用データを抽出して前記第２プロセス制御装置に転送し、
前記第２プログラム更新制御部は、前記第１プログラム更新制御部から転送される前記復元用データを用いて更新後の前記予め登録された更新対象プログラムのコンテキストを復元する、
請求項１記載のプロセス制御システム。
【請求項５】
前記更新対象プログラムは、所定の第１処理の要求を通知した場合に、前記所定の第１処理の結果を示す応答が通知され、所定の第２処理の要求が通知された場合に、前記所定の第２処理の結果を示す応答を通知する要求／応答プロトコルを用いて他の装置と通信を行う、請求項２記載のプロセス制御システム。
【請求項６】
前記第１プログラム更新制御部は、前記更新対象プログラムが他の装置との間の通信を可能とする通信ドライバである場合には、前記他の装置からの新たな要求を取り込まないように前記更新対象プログラムの受信口を閉塞する、請求項３又は請求項４記載のプロセス制御システム。
【請求項７】
更新対象ではない非更新対象プログラムと、更新対象となり得る更新対象プログラムとを実行させるプログラム実行部と、
外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキストを転送する第１プログラム更新制御部と、
外部からの再開要求に基づいて、前記第１プログラム更新制御部から転送される前記コンテキストを用いて前記非更新対象プログラムのコンテキストを復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、前記非更新対象プログラム及び前記更新後の更新対象プログラムを前記プログラム実行部で再開させる第２プログラム更新制御部と、
を備えるプロセス制御装置。
【請求項８】
更新対象ではない非更新対象プログラムと、更新対象となり得る更新対象プログラムとが実行されるプロセス制御装置におけるプログラム更新方法であって、
外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキストを転送する第１ステップと、
外部からの再開要求に基づいて、前記第１ステップで転送された前記コンテキストを用いて更新対象ではない非更新対象プログラムのコンテキストを復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、前記非更新対象プログラム及び前記更新対象プログラムを再開させる第２ステップと、
を有するプログラム更新方法。
【請求項９】
前記第１ステップ及び前記第２ステップは、同じプロセス制御装置で行われる、請求項８記載のプログラム更新方法。
【請求項１０】
前記第１ステップ及び前記第２ステップは、異なるプロセス制御装置で行われる、請求項８記載のプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス制御システム、プロセス制御装置、及びプログラム更新方法に関する。
【背景技術】
【０００２】
従来から、プラントや工場等（以下、これらを総称する場合には、単に「プラント」という）においては、工業プロセスにおける各種の状態量（例えば、圧力、温度、流量等）を制御するプロセス制御システムが構築されており、高度な自動操業が実現されている。具体的には、プロセス制御システムの核をなすコントローラが、複数のセンサ（流量計や温度計等）の検出結果を取得し、この検出結果に応じてアクチュエータ（バルブ等）の操作量を求め、この操作量に応じてアクチュエータを操作することによって、上述した各種の状態量が制御されている。
【０００３】
従来のプロセス制御システムは、独自仕様の専用の機器を用いて構築されていたが、近年のプロセス制御システムは、オープン化されつつあり、仕様が公開された汎用的な機器（コンピュータやワークステーション等）を用いて構築されるものが多くなっている。このような汎用的な機器が用いられるプロセス制御システムにおいては、一般の情報システムと同様に、ハードウェアの交換やソフトウェアの改善が必要になる。尚、ソフトウェアの改善としては、例えばオペレーティングシステム（ＯＳ）の機能拡張や、オペレーティングシステムの不具合・脆弱性の修正等が挙げられる。
【０００４】
以下の特許文献１には、二重化したプロセッサユニット（制御側及び待機側）を搭載する制御用計算機システムにおいて、制御対象に影響を与えることなくシステムプログラムを変更することが可能な技術が開示されている。具体的には、待機側を一旦停止させて新たなシステムプログラムをロードしてから待機側を起動させ、制御側に記憶されたアプリケーションデータを待機側にコピーし、制御側を停止させるとともに待機側を制御側として起動させることによって、制御対象に影響を与えることなくシステムプログラムを変更している。また、以下の特許文献２には、プロセス制御システムを停止させることなくオペレーティングシステムを更新することができ、更新されたオペレーティングシステム上でのアプリケーションの継続動作を保証することが可能なプロセス制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−３２４０号公報
【特許文献２】特開２０１５−５２５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、プロセス制御システムでは、上述の特許文献１，２にも示されている通り、プロセス制御システムを停止させることなく継続動作させながら、更新対象となり得るプログラム（「更新対象プログラム」という）を更新する必要がある。その際、複雑な分析及び処理を行うことなく、簡単且つ短時間で更新対象プログラムを更新することが可能であることが望まれる。
【０００７】
本発明は上記事情に鑑みてなされたものであり、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新することが可能なプロセス制御システム、プロセス制御装置、及びプログラム更新方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の一態様によるプロセス制御システムは、第１プロセス制御装置（１０）と第２プロセス制御装置（２０）とを備えるプロセス制御システム（１）であって、前記第１プロセス制御装置が、更新対象ではない非更新対象プログラム（ＰＡ１１）と、更新対象となり得る更新対象プログラム（ＰＢ１１等）とを実行させる第１プログラム実行部（１１）と、外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキスト（ＣＡ１１）を前記第２プロセス制御装置に転送する第１プログラム更新制御部（１５、１５Ａ〜１５Ｅ）と、を備え、前記第２プロセス制御装置が、更新対象ではない非更新対象プログラム（ＰＡ２１）と、更新後の更新対象プログラム（ＰＢ２１等）とを実行させる第２プログラム実行部（２１）と、外部からの再開要求に基づいて、前記第１プログラム更新制御部から転送される前記コンテキストを用いて前記非更新対象プログラムのコンテキストを復元するとともに、前記更新対象プログラムのコンテキストを初期化し、前記非更新対象プログラム及び前記更新対象プログラムを前記第２プログラム実行部で再開させる第２プログラム更新制御部（２５、２５Ａ）と、を備える。
【０００９】
また、本発明の一態様によるプロセス制御システムは、前記第１プログラム更新制御部が、前記非更新対象プログラムが要求した前記更新対象プログラムの処理が仕掛中であると判定した場合には、前記非更新対象プログラムの実行位置を前記更新対象プログラムに処理を要求する直前に戻すとともに、前記更新対象プログラムが仕掛中である旨を示す情報を削除する。
【００１０】
また、本発明の一態様によるプロセス制御システムは、前記第１プログラム更新制御部が、前記非更新対象プログラムが呼び出した前記更新対象プログラムの処理が仕掛中であると判定した場合には、前記更新対象プログラムが仕掛中の処理を完了させるのを待つ。
【００１１】
また、本発明の一態様によるプロセス制御システムは、前記第１プログラム更新制御部が、前記非更新対象プログラムが呼び出す前記更新対象プログラムの中に処理が仕掛中のものがあると判定した場合には、前記更新対象プログラムのうちの予め登録された更新対象プログラムの要求が残りの更新対象プログラムに伝わらないように設定して前記更新対象プログラムの処理が停止するのを待ってから、前記予め登録された更新対象プログラムのコンテキストから処理の再開に必要な復元用データを抽出して前記第２プロセス制御装置に転送し、前記第２プログラム更新制御部が、前記第１プログラム更新制御部から転送される前記復元用データを用いて更新後の前記予め登録された更新対象プログラムのコンテキストを復元する。
【００１２】
また、本発明の一態様によるプロセス制御システムは、前記更新対象プログラムが、所定の第１処理の要求を通知した場合に、前記所定の第１処理の結果を示す応答が通知され、所定の第２処理の要求が通知された場合に、前記所定の第２処理の結果を示す応答を通知する要求／応答プロトコルを用いて他の装置と通信を行う。
【００１３】
また、本発明の一態様によるプロセス制御システムは、前記第１プログラム更新制御部が、前記更新対象プログラムが他の装置との間の通信を可能とする通信ドライバである場合には、前記他の装置からの新たな要求を取り込まないように前記更新対象プログラムの受信口を閉塞する。
【００１４】
本発明の一態様によるプロセス制御装置（５０）は、更新対象ではない非更新対象プログラム（ＰＡ１１、ＰＡ２１）と、更新対象となり得る更新対象プログラム（ＰＢ１１、ＰＢ２１等）とを実行させるプログラム実行部（５１、５２）と、外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキスト（ＣＡ１１）を転送する第１プログラム更新制御部（１５）と、外部からの再開要求に基づいて、前記第１プログラム更新制御部から転送される前記コンテキストを用いて前記非更新対象プログラムのコンテキストを復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、前記非更新対象プログラム及び前記更新後の更新対象プログラムを前記プログラム実行部で再開させる第２プログラム更新制御部（２５）と、を備える。
【００１５】
本発明の一態様によるプログラム更新方法は、更新対象ではない非更新対象プログラム（ＰＡ１１、ＰＡ２１）と、更新対象となり得る更新対象プログラム（ＰＢ１１、ＰＢ２１等）とが実行されるプロセス制御装置（１０、２０、５０）におけるプログラム更新方法であって、外部からの一時停止要求に基づいて、前記非更新対象プログラムを一時停止させ、前記非更新対象プログラムのコンテキストを転送する第１ステップ（Ｓ１２、Ｓ１３）と、外部からの再開要求に基づいて、前記第１ステップで転送された前記コンテキストを用いて更新対象ではない非更新対象プログラムのコンテキストを復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、前記非更新対象プログラム及び前記更新対象プログラムを再開させる第２ステップ（Ｓ２２〜Ｓ２７）と、を有する。
【００１６】
本発明の一態様によるプログラム更新方法は、前記第１ステップ及び前記第２ステップは、同じプロセス制御装置で行われる。
【００１７】
或いは、本発明の一態様によるプログラム更新方法は、前記第１ステップ及び前記第２ステップは、異なるプロセス制御装置で行われる。
【発明の効果】
【００１８】
本発明によれば、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新することができるという効果がある。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。
【図２】本発明の第１実施形態における、プロセス制御装置内で稼働するプログラムのより詳細な構成を示す概略構成図である。
【図３】本発明の第１実施形態における、非更新対象プログラム及び更新対象プログラムの間での典型的な呼出関係を示す概略図である。
【図４】本発明の第１実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。
【図５】本発明の第１実施形態によるプログラム更新方法を示すフローチャートである。
【図６】本発明の第２実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。
【図７】本発明の第２実施形態によるプログラム更新方法を示すフローチャートである。
【図８】本発明の第３実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。
【図９】本発明の第３実施形態によるプログラム更新方法を示すフローチャートである。
【図１０】本発明の第４実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。
【図１１】本発明の第４実施形態によるプログラム更新方法を示すフローチャートである。
【図１２】本発明の第４実施形態によるプログラム更新方法を示すフローチャートである。
【図１３】本発明の第５実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。
【図１４】本発明の第５実施形態において用いられる要求／応答プロトコルを説明するための図である。
【図１５】本発明の第６実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。
【図１６】本発明の第６実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。
【図１７】本発明の第６実施形態によるプログラム更新方法を示すフローチャートである。
【図１８】本発明の第７実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。
【図１９】本発明の第７実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。
【図２０】本発明の第７実施形態によるプログラム更新方法を示すフローチャートである。
【図２１】本発明の実施形態によるプロセス制御システムを、工業プロセスを制御するシステムに適用した例を示すブロック図である。
【図２２】本発明の他の実施形態によるプロセス制御装置の概略機能構成を示す機能構成図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して本発明の実施形態によるプロセス制御システム、プロセス制御装置、及びプログラム更新方法について詳細に説明する。以下では、まず、本発明の実施形態の概要について説明し、次に、本発明の実施形態で用いる概念及び用語の定義等について説明する。続いて、本発明の実施形態で使用する手法について説明し、その後に、各実施形態の詳細について説明する。
【００２１】
〔概要〕
本発明の実施形態は、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新することを可能とするものである。具体的に、プロセス制御システムは、生産効率を少しでも向上させるために、月〜年単位の長期に亘る継続運転が要求されることが殆どであるため、運転状態にあるプロセス制御システムを自由に停止させることはできない。例えば、定期メンテナンスによる停止、或いはプラントの安全確保のために行われるシャットダウン以外は、基本的にプロセス制御システムを停止させることは許されない。その理由は、化学プロセスを例に挙げると、化学反応を続けるプロセスの途中で予期せぬ中断が発生してしまうと、途中まで生産した半製品が使い物にならず大きな損害となることがあるからである。
【００２２】
一方、プロセス制御システムには、安全性の面から誤動作や動作の欠損が生じないことが要求されるため、誤動作等が生じ得る原因（例えば、オペレーティングシステムの不具合や脆弱性）が発見された場合には、その原因を解消し得る対処（オペレーティングシステムの更新）を即座に行う必要がある。しかしながら、前述した通り、プロセス制御システムを自由に停止させることができないため、誤動作等が生じ得る原因が発見されたとしても、その対処を即座に行うことができない場合があるという問題がある。
【００２３】
ここで、上述した特許文献１に開示された技術を用いれば、冗長構成の制御装置において、制御側に悪影響を与えずに待機側でシステムプログラムを更新して、制御側のこれまでのアプリケーションデータを待機側にコピーすることにより、アプリケーションを継続させることも可能である。しかしながら、コピーすべきアプリケーションデータの抽出方法や、更新後の処理の再開方法は、アプリケーションの作りに依存するものであり、且つそれらの方法は公開されていないという問題がある。
【００２４】
また、上述した特許文献２に開示された技術を用いれば、制御装置のオペレーティングシステムを更新する際に、任意のアプリケーションの処理を継続させることが可能となる。しかしながら、上述した特許文献２に開示された技術は、アプリケーション復元を前提としているため、複雑な分析及び処理を必要とする場合がある。また、オペレーティングシステムの機能に依存した内部状態の復元処理が必要となる場合もあり得る。
【００２５】
上記の複雑な分析及び処理を行うことなく、プロセス制御システムを継続動作させながら、更新する必要のあるオペレーティングシステム等のプログラム（更新対象プログラム）を更新するためには、より簡単で、より広く適用可能な解が望まれる。例えば、オペレーティングシステムの内部状態を完全に復元しなくてよい方法、又はオペレーティングシステムの内部状態の復元について一切の考慮或いは処理を必要としない方法が望まれる。
【００２６】
本発明の実施形態では、プロセス制御システムで用いられる各種プログラムを更新する際に、まず、外部からの一時停止要求に基づいて、更新対象ではない非更新対象プログラムを一時停止させ、非更新対象プログラムのコンテキストを転送する。次に、外部からの再開要求に基づいて、転送されたコンテキストを用いて更新対象ではない非更新対象プログラムのコンテキストを復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、非更新対象プログラム及び更新対象プログラムを再開させる。これにより、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新するようにしている。
【００２７】
〔概念及び用語の定義等〕
本発明の実施形態は、コンピュータを用いて実現可能である。コンピュータ上では、オペレーティングシステム（ＯＳ）の管理下で、複数のタスクが稼働する。オペレーティングシステムは、コンピュータの各種資源（ＣＰＵ時間、メモリ、入出力装置等）を管理するとともに、それらの資源を適切にタスクに割り当てるものである。尚、「ＣＰＵ」は、中央処理装置（Central Processing Unit）の略である。
【００２８】
タスクは、オペレーティングシステム配下で独立して稼働する処理の単位である。複数のタスクは、並行に（コンカレントに）稼働することができる。オペレーティングシステムは、タスク間通信の機能を提供する。タスク間通信により、並行して稼働する複数のタスク間で情報（メッセージ）をやり取りすることができる。尚、タスク間通信以外にも、例えば共有メモリ等を用いてタスク間で情報を交換できるようにしてもよい。
【００２９】
本発明の実施形態では、プロセス制御システムで用いられる各種プログラムを、非更新対象プログラムと更新対象プログラムとの２種類に区別する。非更新対象プログラムは、本発明の実施形態において、プログラムの更新の前後で変わらないプログラムである。非更新対象プログラムの主要な役割は、アプリケーションの実現である。ここで、アプリケーションとは、典型的には、ＰＩＤ制御やシーケンス制御等を用いた特定のプラントの制御である。
【００３０】
更新対象プログラムは、本発明の実施形態において、後述する例外を除き、非更新対象プログラムから直接的又は間接的に呼び出されるプログラムである。更新対象プログラムの主要な役割は、コンピュータシステムが持つ資源を円滑に利用できるようにすることである。更新対象プログラムは、所謂システムプログラムである。更新対象プログラムは、オペレーティングシステムや、ミドルウェアの一部として提供されるものである。更新対象プログラムにおける例外は、呼出側更新対象プログラムである。この呼出側更新対象プログラムは、後述する通り、例えば外部からのトリガーに基づいて、非更新対象プログラムを呼び出す（起動する）役割を有するプログラムである。
【００３１】
前述のタスクを、継続タスクと使用タスクとに分類することもできる。継続タスクは、上記の非更新対象プログラムを実行させるためのタスクである。但し、継続タスクに更新対象プログラムが含まれていてもよい。一方、使用タスクは、更新対象プログラムのみを実行させるためのタスクである。つまり、継続タスクは、直接的又は間接的に、使用タスクを呼び出す場合がある。ここでいう「呼び出す」という動作は、必ずしも関数呼出や手続呼出に限定されるものではない。タスク間通信、システムコール、その他の情報伝達によって他のプログラム又は他のプログラムの機能を使用する動作を一般的に「呼び出す」と表現する。
【００３２】
コンテキストは、プログラムが処理を実行する際に依存する状況である。コンテキストは、状況、文脈、状態、データ、記憶等とも呼ばれる。コンテキストの物理的な実体は、記憶手段（半導体メモリ、磁気ディスク装置、外部媒体等）に記憶されるデータである。ソフトウェアコンテキストは、プログラムが使用する、メモリ等の記憶領域の内容を全て含めたものである。
【００３３】
ソフトウェアコンテキストを復元できれば、一時停止したプログラムを無条件に継続させることができる（継続の普遍原理）。また、ソフトウェアコンテキストを初期化して作り直すのであれば、プログラムを無条件に更新することができる（更新の普遍原理）。本発明の実施形態は、この２つの普遍原理に基づいて、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新するようにしている。
【００３４】
コンテキスト依存（context-dependent）とは、プログラムの処理の実行が、コンテキストに依存することである。尚、コンテキスト依存は、状態依存、ステートフル（stateful）等ともいう。コンテキストフリー（context-free）とは、プログラムの処理の実行がコンテキストに依存しない（言い換えれば、コンテキストがない）ことである。尚、コンテキストフリーは、文脈自由、無文脈、状態自由、無状態、ステートレス（stateless）等ともいう。
【００３５】
現用装置とは、現在稼働している側の装置である。更新用装置とは、現在稼働しておらず、プログラムの更新のためにスタンバイしている側の装置である。現用装置と更新用装置とは、状態が入れ替わることがあり得る。つまり、現用装置として稼働していた装置がスタンバイ状態になって更新用装置になる一方で、更新用装置としてスタンバイ状態にあった装置が、稼働状態になって現用装置になる、といった具合である。
【００３６】
本発明の実施形態を工業プロセスの制御に適用する場合の典型的な処理のモデル（例）は、次の通りである。プロセスを制御するための非更新対象プログラムは、前述の呼出側更新対象プログラムから、ある時間周期（例えば、５０ミリ秒周期〜数秒周期程度）で繰り返し呼び出される。非更新対象プログラムは、呼び出される都度、以下の１〜４の処理を実行する。
【００３７】
１．前回までの処理状態であるコンテキストを用いて、今回の処理を実行する（尚、初回のコンテキストには初期値が設定される）。
２．必要な情報（例えば、工業プロセスの状態である各種センサの現在値）や他の制御処理の結果を取得する。
３．得た情報を基に計算処理等（例えば、ＰＩＤ制御、シーケンス制御、制御のシミュレーション）を行う。
４．計算処理等の結果に基づく情報を出力する（例えば、生産設備におけるアクチュエータの操作やスイッチのＯＮ／ＯＦＦ）。
【００３８】
この場合において、微視的には、非更新対象プログラムは工業プロセスを離散的なタイミングで制御しているが、非更新対象プログラムが処理を実行していない期間も工業プロセスは変化し続けるため、プラントの生産設備は稼働し続ける。尚、非更新対象プログラムが呼出側更新対象プログラムから呼び出される時間周期の範囲は、上に例示した範囲に限定されるものではない。
【００３９】
非更新対象プログラムの一時停止とは、非更新対象プログラムの前回処理の終了後から所定時間内にその処理が再開可能なように非更新対象プログラムを一時的に停止させることである。一時停止された非更新対象プログラムのコンテキストは、非更新対象プログラムが再開される時に引き継がれる。ここで、上記の「所定時間」は、設計等により定められる充分に短い時間である。
【００４０】
非更新対象プログラムの中断とは、非更新対象プログラムの前回処理の終了後から、上記所定時間内に再開されないように更新対象プログラムを停止させること、又は上記所定時間内に再開されるか否かに拘わらず非更新対象プログラムのコンテキストが引き継がれないように（例えば、処理の状態が初期化されるように）することである。プロセス制御システムの目的が、工業プロセスの制御であることを考慮すると、非更新対象プログラムの一時停止は許容されるが、非更新対象プログラムの中断は許容されない。
【００４１】
本発明の実施形態における「要求」及び「応答」には、装置内で行われるもの、及び装置間で行われるものが含まれる。例えば、「要求」には、関数の呼び出し、システムコールの呼び出し、タスク間通信の処理の要求、及びネットワーク通信での要求の送信等、が含まれる。「応答」には、関数呼出からの復帰、システムコール呼出からの復帰、タスク間通信の処理結果の返信、ネットワーク通信での応答の返信等、が含まれる。
【００４２】
本発明の実施形態における「仕掛中」とは、装置内又は装置間において、一連の処理が完了しておらず処理中のコンテキストを保持する必要がある状態をいう。一連の処理は、要求と応答とのやりとりを１回実行して完了する場合もあれば、複数回実行して完了する場合もある。一連の処理が完了すれば非仕掛中となり、コンテキストの初期化が可能になる。尚、２台の装置間でネットワーク通信処理が行われる場合に、一方の装置は、他方の装置に要求を送信してから他方の装置からの応答（汎用通信プロトコルの場合はＡＣＫ）を受信するまで仕掛中になる。仕掛中は例えばＴＣＰコネクション等を保持する必要がある。
【００４３】
〔使用する手法〕
以下で説明する実施形態では、非更新対象プログラムについては、前述した継続の普遍原理に基づいて、一時停止時に、非更新対象プログラムが使用するコンテキスト（ソフトウェアコンテキスト）を無条件に全てコピーする。非更新対象プログラムの継続に必要な引継データはプログラム毎に異なるが、上記の「全てコピーする」という手法により、非更新対象プログラムの継続に必要な引継データをコンテキストに必ず含め、引き継ぐことができる。
【００４４】
これに対し、更新対象プログラムの更新については、更新対象プログラムが有する既存機能を部分的に修正することだけではなく、既存機能に新しい機能を追加することも含まれる。このとき、新しく追加される機能に関して、既存機能との関連性の有無は問われない。つまり、新しく追加される機能は、既存機能とは全く別の機能であっても良い。従って、更新対象プログラムを更新する際に、更新対象プログラムのコンテキストのデータ構造が大幅に変更される場合もあり得る。このような場合には、前述した更新の普遍原理に基づいて、再開時に、更新対象プログラムが使用するコンテキストを無条件に全て初期化するという手法を用いる。このような初期化を行うことで、更新対象プログラムを無条件に更新することができる。
【００４５】
以下で説明する実施形態は何れも、上述した手法を用いて、非更新対象プログラムの一時停止中に更新対象プログラムを更新する。これにより、以下で説明する各実施形態は、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新するようにしたものである。
【００４６】
〔第１実施形態〕
〈プロセス制御システムの機能構成〉
図１は、本発明の第１実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。図１に示す通り、本実施形態のプロセス制御システム１は、プロセス制御装置１０（第１プロセス制御装置）、プロセス制御装置２０（第２プロセス制御装置）、及びエンジ用機器３０を備える。プロセス制御装置１０及びプロセス制御装置２０は、同等又は類似規模のコンピュータを用いて実現される。本実施形態では、プロセス制御装置１０を「現用装置」と呼び、プロセス制御装置２０を「更新用装置」と呼ぶこともある。
【００４７】
本実施形態では、プログラムの更新のために、プロセス制御装置１０で稼働していた機能をプロセス制御装置２０に切り替えるものとする。つまり、当初は、現用装置であるプロセス制御装置１０がプロセスを制御するために稼働しており、更新用装置であるプロセス制御装置２０が待機している。その後、エンジ用機器３０からの指令信号に基づき、プロセス制御装置１０（現用装置）におけるプロセス制御機能を一時停止し、プロセス制御装置２０（更新用装置）においてその機能を再開する。プロセス制御装置１０及びプロセス制御装置２０は、システムが稼働している状態のまま、プログラムを更新するための機能を備えている。
【００４８】
プロセス制御装置１０は、ハードウェア１１（第１プログラム実行部）、オペレーティングシステム１２、タスク１３、タスク１４、及びプログラム更新制御部１５（第１プログラム更新制御部）の機能を備える。ハードウェア１１は、ＣＰＵ、メモリ、入出力装置、通信装置等を備えており、プロセス制御装置１０で用いられる各種プログラム（非更新対象プログラム及び更新対象プログラムを含む）を実行させる。尚、プロセス制御装置１０の機能は、その機能を実現するためのプログラムがハードウェア１１によって実行されることによって実現される。つまり、プロセス制御装置１０の機能は、ソフトウェアとハードウェア資源とが協働することによって実現される。
【００４９】
オペレーティングシステム１２は、ハードウェア１１とアプリケーション（タスク１３，１４等）との間に位置し、ハードウェア１１の管理を行いつつ、アプリケーションに対して規定のインターフェイスを提供する。具体的に、オペレーティングシステム１２は、プロセス制御装置１０のハードウェア資源（ＣＰＵ時間、メモリ、入出力等）を管理して、各タスクに適切に割り当てる機能を有する。オペレーティングシステム１２は、更新対象プログラムＰＢ１３を含む。
【００５０】
タスク１３は、対象のプロセスを制御する機能を有するタスクである。タスク１３を「制御タスク」とも呼ぶ。タスク１３は、非更新対象プログラムＰＡ１１と更新対象プログラムＰＢ１１とを含む。非更新対象プログラムＰＡ１１は、プロセス制御のためのメインプログラムである。タスク１４は、タスク１３からの直接又は間接の要求に基づき所定のサービスを提供するタスクである。タスク１４を「使用タスク」とも呼ぶ。タスク１４は、更新対象プログラムＰＢ１２を含む。
【００５１】
プログラム更新制御部１５は、システムを稼働させたまま、現用装置から更新用装置への切り替え（「オンライン更新」ともいう）を行う処理を制御する。具体的に、プログラム更新制御部１５は、エンジ用機器３０から一時停止要求が送信されてきた場合に、非更新対象プログラムＰＡ１１を一時停止させ、プロセス制御装置２０（更新用装置）においてその機能を再開させるために必要な処理を行う。プログラム更新制御部１５で行われる処理の詳細については後述する。尚、プログラム更新制御部１５は、更新対象プログラムについても、一時停止させてその機能を再開させるために必要な処理を行う場合もある。
【００５２】
プロセス制御装置２０は、プロセス制御装置１０と同様の構成であり、ハードウェア２１（第２プログラム実行部）、オペレーティングシステム２２、タスク２３、タスク２４、及びプログラム更新制御部２５（第２プログラム更新制御部）の機能を備える。ハードウェア２１は、上記のハードウェア１１と同様のものであり、プロセス制御装置２０で用いられる各種プログラム（非更新対象プログラム及び更新対象プログラムを含む）を実行させる。尚、プロセス制御装置２０の機能も、ソフトウェアとハードウェア資源とが協働することによって実現される。
【００５３】
オペレーティングシステム２２は、上記のオペレーティングシステム１２と同様の機能を有するものである。また、オペレーティングシステム２２は、更新対象プログラムＰＢ２３を含む。タスク２３は、上記のタスク１３と同様の機能を有するものである。また、タスク２３は、非更新対象プログラムＰＡ２１と更新対象プログラムＰＢ２１とを含む。タスク２４は、上記のタスク１４と同様の機能を有するものである。また、タスク２４は、更新対象プログラムＰＢ２２を含む。プログラム更新制御部２５は、上記のプログラム更新制御部１５と同様の機能を有するものである。尚、プログラム更新制御部２５は、プログラム更新制御部１５と協調して動作する。
【００５４】
尚、「現用装置」及び「更新用装置」という呼び方は、その時点の状況に応じたものであり、状況に応じてプロセス制御装置１０及びプロセス制御装置２０の役割は変化し得る。つまり、プロセス制御装置２０が現用装置となり、プロセス制御装置１０が更新用装置として機能する状況もあり得る。また、３台以上のプロセス制御装置を用いて、プログラムの更新及び稼働するプロセス制御装置の移行を行うようにしてもよい。
【００５５】
エンジ用機器３０は、プロセス制御システム１の設計情報を含めたプラントの設計情報を用いて、プロセス制御システム１における各種エンジニアリングを行う。また、エンジ用機器３０は、プロセス制御装置１０（現用装置）におけるプロセス制御機能を一時停止させ、プロセス制御装置２０（更新用装置）においてその機能を再開させる指令も行う。尚、エンジ用機器３０は、例えばパーソナルコンピュータやワークステーション等のコンピュータによって実現される。
【００５６】
図２は、本発明の第１実施形態における、プロセス制御装置内で稼働するプログラムのより詳細な構成を示す概略構成図である。尚、図２では、プロセス制御装置１０内の構成を示しているが、プロセス制御装置２０内の構成も同様のものである。図２に示す通り、各プログラムは、コンテキストを有する。コンテキストは、プログラムが稼働する状況における状態である。具体的に、コンテキストは、半導体メモリや磁気ディスク装置等に記憶されるデータである。それらのデータは、ＣＰＵのメモリ空間に置かれているデータである場合もあり、例えばデータベース管理システム（ＤＢＭＳ）等によって管理されているデータである場合もある。
【００５７】
本実施形態では、データによって表される状態そのものを「コンテキスト」と呼ぶ場合もあり、そのデータを物理的に記憶する記憶手段を含めて「コンテキスト」と呼ぶ場合もある。尚、コンテキストが、各プログラムの実行位置（プログラムコードにおける特定の位置）に関する情報を含んでいてもよい。
【００５８】
図２に示す例において、タスク１３は、非更新対象プログラムＰＡ１１、更新対象プログラムＰＢ１１、及び更新対象プログラムＰＢ１４を含む。更新対象プログラムＰＢ１１は、非更新対象プログラムＰＡ１１に専用の内部関数であり、非更新対象プログラムＰＡ１１と静的にリンクされて、モジュールＭＤを構成する。そのモジュールＭＤ内において、非更新対象プログラムＰＡ１１は、更新対象プログラムＰＢ１１を呼び出すことができる。
【００５９】
また、更新対象プログラムＰＢ１４は、モジュールＭＤや他のモジュールに共通の汎用関数であり、モジュールＭＤ等と動的にリンクされる。モジュールＭＤと更新対象プログラムＰＢ１４とは、予め規定されたＡＰＩ（Application Programming Interface）を通して相互を呼び出すことができる。更新対象プログラムＰＢ１４は、例えば、ＯＳ機能を利用しやすくするライブラリのプログラムである。
【００６０】
オペレーティングシステム１２は、更新対象プログラムＰＢ１３を含む。更新対象プログラムＰＢ１３は、ＯＳ機能を実現するプログラムである。更新対象プログラムＰＢ１３は、タスク１３やタスク１４から呼び出される場合がある。タスク１４は、更新対象プログラムＰＢ１２を含む。
【００６１】
図２内におけるプログラムとコンテキストとの関係は、次の通りである。タスク１３に含まれる非更新対象プログラムＰＡ１１はコンテキストＣＡ１１にアクセスし、更新対象プログラムＰＢ１１はコンテキストＣＢ１１にアクセスし、更新対象プログラムＰＢ１４はコンテキストＣＢ１４にアクセスする。タスク１４に含まれる更新対象プログラムＰＢ１２はコンテキストＣＢ１２にアクセスする。オペレーティングシステム１２に含まれる更新対象プログラムＰＢ１３は、コンテキストＣＢ１３にアクセスする。尚、ここでのプログラムからコンテキストへのアクセスは、参照のみであってもよいし、更新を伴うものであってもよい。
【００６２】
図２に示すプログラムのうち、非更新対象プログラムＰＡ１１は、継続対象のプログラムである。つまり、非更新対象プログラムＰＡ１１は、更新の対象ではない。また、更新対象プログラムＰＢ１１，ＰＢ１２，ＰＢ１３，ＰＢ１４は、更新対象となり得るプログラムである。そして、更新対象プログラムの更新時に、非更新対象プログラムは、稼働環境を現用装置から更新用装置に切り替えて継続して稼働する。
【００６３】
システム稼働中のプログラムの更新に関連して重要な点は、非更新対象プログラムと更新対象プログラムとの間でのコンテキストの共有が行われないことである。即ち、非更新対象プログラムＰＡ１１は、更新対象プログラムのコンテキストであるコンテキストＣＢ１１，ＣＢ１２，ＣＢ１３，ＣＢ１４への直接のアクセスを行わない。また、更新対象プログラムＰＢ１１，ＰＢ１２，ＰＢ１３，ＰＢ１４は、非更新対象プログラムＰＡ１１のコンテキストであるコンテキストＣＡ１１への直接のアクセスを行わない。
【００６４】
図３は、本発明の第１実施形態における、非更新対象プログラム及び更新対象プログラムの間での典型的な呼出関係を示す概略図である。図３に示す通り、呼出側更新対象プログラムＰＣ１１は、非更新対象プログラムＰＡ１１を呼び出す側のプログラムである。呼出側更新対象プログラムＰＣ１１以外の更新対象プログラムは、非更新対象プログラムＰＡ１１から、直接的又は間接的に呼び出される。
【００６５】
具体的に、呼出側更新対象プログラムＰＣ１１は、外部トリガーを受信することによって、非更新対象プログラムＰＡ１１を呼び出す。ここで、外部トリガーは、例えば、定周期のタイマのタイムアウト信号や、ネットワークからの受信割り込み信号等である。外部トリガーは、呼出側更新対象プログラムＰＣ１１に対して繰り返し伝達される。よって、呼出側更新対象プログラムＰＣ１１は、非更新対象プログラムＰＡ１１を繰り返し起動する。
【００６６】
非更新対象プログラムＰＡ１１は、その実行中に、直接的又は間接的に、更新対象プログラムＰＢ１３，ＰＢ１４，ＰＢ１５を呼び出すことがある。非更新対象プログラムＰＡ１１の実行中にトリガー待ちになることはない。非更新対象プログラムＰＡ１１は、途中で処理を止めること（トリガー待ち）なく、処理を終了すると、呼出側更新対象プログラムＰＣ１１に制御を戻す。
【００６７】
また、オンラインプログラム更新のために非更新対象プログラムＰＡ１１を一時停止させる場合がある。非更新対象プログラムＰＡ１１を一時停止させるタイミングは、呼出側更新対象プログラムＰＣ１１から非更新対象プログラムＰＡ１１を呼び出す直前か、非更新対象プログラムＰＡ１１から呼出側更新対象プログラムＰＣ１１に戻った直後である。これにより、プログラム更新時には、非更新対象プログラムＰＡ１１の呼出側に処理が戻って、非更新対象プログラムＰＡ１１が使用したスタック領域が全て解放される。従って、一時停止中の非更新対象プログラムＰＡ１１のコンテキストＣＡ１１にスタック領域が含まれない。
【００６８】
図４は、本発明の第１実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。図４において、プログラム更新制御部１５は、現用装置側（図１におけるプロセス制御装置１０）が有する機能である。また、プログラム更新制御部２５は、更新用装置側（図１におけるプロセス制御装置２０）が有する機能である。プログラム更新制御部１５及びプログラム更新制御部２５は、相互に協調して動作する。プロセス制御装置は、予めプログラム更新制御部１５の機能とプログラム更新制御部２５の機能との両方を備えており、自己が現用装置として動作しているか更新用装置として動作しているかに応じて、それらの機能を切り替える。
【００６９】
図４に示す通り、プログラム更新制御部１５は、通信管理部１５１及び非更新対象プログラム呼出停止部１５２を備える。また、プログラム更新制御部２５は、通信管理部２５１、非更新対象プログラム呼出再開部２５２、及びコンテキスト初期化制御部２５３を備える。尚、プロセス制御装置１０及びプロセス制御装置２０はそれぞれ、ネットワークを介して、エンジ用機器３０と接続されている。プロセス制御装置１０の通信管理部１５１及びプロセス制御装置２０の通信管理部２５１はそれぞれ、ネットワークを介して、エンジ用機器３０との間で通信を行うことができるように構成されている。
【００７０】
通信管理部１５１は、エンジ用機器３０から送信された要求（一時停止要求）を受信すると、非更新対象プログラム呼出停止部１５２に対して、非更新対象プログラムＰＡ１１を一時停止させるための指示を行う。また、通信管理部１５１は、エンジ用機器３０から要求された処理（一時停止処理）が完了すると、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１（図２参照）を更新用装置側に転送しながら、一時停止処理が完了した旨をエンジ用機器３０に通知する。
【００７１】
非更新対象プログラム呼出停止部１５２は、通信管理部１５１からの指示に従って、非更新対象プログラムＰＡ１１を一時停止させる。具体的に、非更新対象プログラム呼出停止部１５２は、非更新対象プログラムＰＡ１１の呼び出しを一時的に停止する。より具体的に、非更新対象プログラム呼出停止部１５２では、呼出側更新対象プログラムＰＣ１１（図３参照）が非更新対象プログラムＰＡ１１を呼び出すことを止めることにより、非更新対象プログラムＰＡ１１を一時停止させる。非更新対象プログラム呼出停止部１５２は、非更新対象プログラムＰＡ１１の一時停止が完了した場合には、一時停止処理が完了した旨を通信管理部１５１に通知する。
【００７２】
尚、プログラム更新制御部１５は、非更新対象プログラムＰＡ１１が一時停止された場合に、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１（図２参照）を記憶手段（図示省略）に記憶させる処理を行う。通信管理部１５１は、記憶手段に記憶されたコンテキストＣＡ１１を読み出して更新用装置側に転送する。コンテキストＣＡ１１を記憶手段に記憶させる処理は、非更新対象プログラム呼出停止部１５２が行うようにしても良い。
【００７３】
通信管理部２５１は、エンジ用機器３０から送信された要求（再開要求）を受信すると、非更新対象プログラム呼出再開部２５２に対して、非更新対象プログラムＰＡ１１を再開させるための指示を行う。通信管理部２５１は、通信管理部１５１から転送されてくるコンテキスト（非更新対象プログラムＰＡ１１のコンテキストＣＡ１１）を、現用装置と同じ領域（アドレス）に格納（コピー）する。これにより、非更新対象プログラムＰＡ１１の一時停止時と等価な状態をプロセス制御装置２０で再現する。また、通信管理部２５１は、エンジ用機器３０から要求された処理（再開処理）が完了すると、再開処理が完了した旨をエンジ用機器３０に通知する。
【００７４】
非更新対象プログラム呼出再開部２５２は、通信管理部２５１からの指示に従って、非更新対象プログラムＰＡ１１を再開させる。具体的に、非更新対象プログラム呼出再開部２５２は、プロセス制御装置２０の起動プログラムを実行させ、呼出側更新対象プログラムＰＣ１１（図３に示す呼出側更新対象プログラムＰＣ１１と同様のもの）が非更新対象プログラムＰＡ２１（図１参照）の呼び出しを行うようにする。尚、非更新対象プログラムＰＡ２１は、非更新対象プログラムＰＡ１１と同じプログラムであるから、非更新対象プログラムＰＡ２１の呼び出しを行うことと、非更新対象プログラムＰＡ１１の呼び出しを再開することとは同義である。
【００７５】
非更新対象プログラム呼出再開部２５２は、通信管理部２５１からの指示があってから、コンテキスト初期化制御部２５３における処理が未実施である場合には、コンテキスト初期化制御部２５３に対して処理を実施させる。非更新対象プログラム呼出再開部２５２は、呼出側更新対象プログラムＰＣ１１（図３に示す呼出側更新対象プログラムＰＣ１１と同様のもの）が非更新対象プログラムＰＡ２１を呼び出すように、呼出側更新対象プログラムＰＣ１１を再開させる。非更新対象プログラム呼出再開部２５２は、非更新対象プログラムＰＡ１１（非更新対象プログラムＰＡ２１）の再開が完了した場合には、再開処理が完了した旨を通信管理部２５１に通知する。
【００７６】
コンテキスト初期化制御部２５３は、非更新対象プログラム呼出再開部２５２からの指示に基づいて、コンテキストを初期化するか否かの指示を、オペレーティングシステム２２に対して行う。具体的に、コンテキスト初期化制御部２５３は、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１については初期化処理をバイパスして初期化せず、更新対象プログラムのコンテキストについては初期化を許可する指示を行う。尚、コンテキスト初期化制御部２５３は、コンテキストを初期化する処理が完了すると、その旨を非更新対象プログラム呼出再開部２５２に通知する。
【００７７】
〈プログラム更新方法〉
図５は、本発明の第１実施形態によるプログラム更新方法を示すフローチャートである。尚、図５に示すフローチャートの処理が実行される前提として、プロセス制御装置１０（現用装置）は、更新前の更新対象プログラムを用いて稼働している。また、プロセス制御装置２０（更新用装置）は、更新後の更新対象プログラムがインストールされた状態で待機している。但し、非更新対象プログラムは更新されず、プロセス制御装置１０とプロセス制御装置２０とで同じプログラム（非更新対象プログラムＰＡ１１，ＰＡ２１）が実行される。
【００７８】
また、エンジ用機器３０からプロセス制御装置１０（現用装置）に対し、適切なタイミングで要求（一時停止要求）が送信され、エンジ用機器３０からプロセス制御装置２０（更新用装置）に対し、適切なタイミングで要求（再開要求）が送信される。つまり、エンジ用機器３０は、まず、プロセス制御装置１０に対して、一時停止を要求するメッセージを送信する。そして、エンジ用機器３０は、プロセス制御装置１０から一時停止完了のメッセージを受信する。次に、エンジ用機器３０は、プロセス制御装置２０に対して、再開を要求するメッセージを送信する。そして、エンジ用機器３０は、プロセス制御装置２０から再開完了のメッセージを受信する。
【００７９】
尚、エンジ用機器３０は、プロセス制御装置１０に一時停止を要求するメッセージを送信した後は、プロセス制御装置２０に対する再開要求を、プロセス制御装置１０に行わせることもできる。上記の再開要求をプロセス制御装置１０に行わせる場合には、エンジ用機器３０は、プロセス制御装置２０に再開を要求するメッセージを送信しない。代わりに、プロセス制御装置１０が一時停止完了のメッセージをプロセス制御装置２０にも通知することによって、プロセス制御装置２０に再開を要求することができる。
【００８０】
図５に示す通り、エンジ用機器３０から送信されたメッセージ（一時停止を要求するメッセージ）は、プロセス制御装置１０（現用装置）で受信される（ステップＳ１１）。具体的に、上記メッセージは、プロセス制御装置１０（現用装置）に設けられたプログラム更新制御部１５の通信管理部１５１で受信される。エンジ用機器３０からのメッセージが受信されると、非更新対象プログラムＰＡ１１を一時停止させるための指示が、通信管理部１５１から非更新対象プログラム呼出停止部１５２に出力される。
【００８１】
すると、非更新対象プログラムＰＡ１１を呼び出す呼出側（呼出側更新対象プログラムＰＣ１１）を停止させる処理が非更新対象プログラム呼出停止部１５２で行われる（ステップＳ１２）。具体的に、非更新対象プログラム呼出停止部１５２では、呼出側更新対象プログラムＰＣ１１（図３参照）が非更新対象プログラムＰＡ１１を呼び出すことを止めることにより、非更新対象プログラムＰＡ１１を一時停止させる処理が行われる。ここで、非更新対象プログラムＰＡ１１が一時停止された場合には、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１を不図示の記憶手段に記憶させる処理がプログラム更新制御部１５で行われる。
【００８２】
非更新対象プログラムＰＡ１１の一時停止が完了すると、その旨が非更新対象プログラム呼出停止部１５２から通信管理部１５１に通知される。すると、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１を不図示の記憶手段から読み出して、更新用装置側に転送する処理が通信管理部１５１で行われる（ステップＳ１３）。以上の処理が完了すると、一時停止処理が完了した旨をエンジ用機器３０に通知する処理が通信管理部１５１で行われる（ステップＳ１４）。
【００８３】
図５に示す通り、エンジ用機器３０から送信されたメッセージ（再開を要求するメッセージ）は、プロセス制御装置２０（更新用装置）で受信される（ステップＳ２１）。具体的に、上記メッセージは、プロセス制御装置２０（現用装置）に設けられたプログラム更新制御部２５の通信管理部２５１で受信される。エンジ用機器３０からのメッセージが受信されると、非更新対象プログラムＰＡ１１を再開させるための指示が、通信管理部２５１から非更新対象プログラム呼出再開部２５２に出力される。
【００８４】
また、プロセス制御装置１０（現用装置）から転送されてくるコンテキスト（非更新対象プログラムＰＡ１１のコンテキストＣＡ１１）を受信する処理が、通信管理部２５１で行われる（ステップＳ２２）。そして、受信したコンテキストを、現用装置と同じ領域（アドレス）に格納（コピー）する処理が、通信管理部２５１で行われる。これにより、非更新対象プログラムＰＡ１１の一時停止時と等価な状態が、プロセス制御装置２０で再現される。
【００８５】
上述した非更新対象プログラムＰＡ１１を再開させるための指示が入力されると、プロセス制御装置２０（更新用装置）の起動プログラムの呼び出しを実行させる処理が、非更新対象プログラム呼出再開部２５２で行われる（ステップＳ２３）。起動プログラムの呼び出しが行われると、まず、コンテキスト初期化制御部２５３でコンテキストを初期化する処理が行われる。具体的には、初期化するプログラムが非更新対象プログラムであるか否かがコンテキスト初期化制御部２５３で判断される（ステップＳ２４）。
【００８６】
初期化するプログラムが非更新対象プログラムであると判断された場合（ステップＳ２４の判断結果が「ＹＥＳ」の場合）には、初期化処理をバイパスさせる処理がコンテキスト初期化制御部２５３で行われる（ステップＳ２５）。これにより、現用装置と同じ領域（アドレス）に格納（コピー）されたコンテキスト（非更新対象プログラムＰＡ１１のコンテキストＣＡ１１）の初期化が回避される。これに対し、初期化するプログラムが非更新対象プログラムではないと判断された場合（ステップＳ２４の判断結果が「ＮＯ」の場合）には、初期化処理の実行を許可する処理がコンテキスト初期化制御部２５３で行われる（ステップＳ２６）。これにより、全ての更新対象プログラムのコンテキストを初期化する処理が行われる。
【００８７】
以上の初期化処理が完了すると、その旨がコンテキスト初期化制御部２５３から非更新対象プログラム呼出再開部２５２に通知される。この初期化処理が完了した旨が通知され、起動プログラムが完了すると、非更新対象プログラムＰＡ１１（非更新対象プログラムＰＡ２１）の呼び出しを再開する処理が、非更新対象プログラム呼出再開部２５２で行われる（ステップＳ２７）。
【００８８】
非更新対象プログラムＰＡ１１（非更新対象プログラムＰＡ２１）の再開が完了すると、非更新対象プログラム呼出再開部２５２から通信管理部２５１に対し、再開処理が完了した旨が通知される。この通知がされると、再開処理が完了した旨をエンジ用機器３０に通知する処理が通信管理部２５１によって行われる（ステップＳ２８）。このようにして、オンライン更新が行われる。
【００８９】
以上説明した通り、本実施形態では、まず、エンジ用機器３０からの一時停止要求に基づいて、プロセス制御装置１０（現用装置）において、更新対象ではない非更新対象プログラムＰＡ１１を一時停止させ、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１をプロセス制御装置２０（更新用装置）に転送する。次に、エンジ用機器３０からの再開要求に基づいて、プロセス制御装置２０（更新用装置）において、転送されたコンテキストＣＡ１１を用いて更新対象ではない非更新対象プログラムＰＡ２１のコンテキストＣＡ１１を復元するとともに、更新後の更新対象プログラムのコンテキストを初期化し、非更新対象プログラム及び更新対象プログラムを再開させる。これにより、プロセス制御システムを停止させることなく継続動作させながら、簡単且つ短時間で更新対象プログラムを更新することができる。
【００９０】
〔第２実施形態〕
〈プロセス制御システムの機能構成〉
図６は、本発明の第２実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。尚、図６において、図４に示す構成に相当する構成については、同一の符号を付してある。また、本実施形態によるプロセス制御システム全体の機能構成は、図１〜図３を用いて説明したものと同様である。以下では、前述した第１実施形態と相違する点を中心に説明する。
【００９１】
本実施形態は、非更新対象プログラムＰＡ１１から呼び出された更新対象プログラム（例えば、図１，図２に示す更新対象プログラムＰＢ１１）に仕掛中の処理がある場合に、その処理を速やかに中断するようにしたものである。この際、非更新対象プログラムＰＡ１１の実行位置を更新対象プログラムに処理を要求する直前に戻して非更新対象プログラムＰＡ１１のコンテキストを修正するとともに、更新対象プログラムが仕掛中である旨を示す情報を削除することで、プロセス制御システム１の継続動作を保証するようにしている。
【００９２】
図６に示す通り、本実施形態における、現用装置側のプログラム更新制御部１５Ａは、図４に示す現用装置側のプログラム更新制御部１５に、非更新対象プログラム停止位置戻し部１５３を追加した構成である。尚、更新用装置側のプログラム更新制御部２５は、図４に示すものと同じ構成である。
【００９３】
非更新対象プログラム停止位置戻し部１５３は、非更新対象プログラム呼出停止部１５２が呼出側更新対象プログラムＰＣ１１（図３参照）を一時停止させた場合に、非更新対象プログラムＰＡ１１が要求した更新対象プログラムの処理が仕掛中であるか否かを判定する。そして、非更新対象プログラム停止位置戻し部１５３は、非更新対象プログラムＰＡ１１が要求した更新対象プログラムの処理が仕掛中であると判定した場合には、非更新対象プログラムＰＡ１１の実行位置を更新対象プログラムに処理を要求する直前に戻す。このとき、非更新対象プログラム停止位置戻し部１５３は、非更新対象プログラムＰＡ１１が有する更新対象プログラムが仕掛中である旨を示す情報を削除する。
【００９４】
〈プログラム更新方法〉
図７は、本発明の第２実施形態によるプログラム更新方法を示すフローチャートである。尚、図７に示すフローチャートは、プログラム更新制御部１５Ａに設けられた非更新対象プログラム停止位置戻し部１５３で行われる処理を抜き出して図示したものである。図７に示すフローチャートの処理は、図５中のステップＳ１２とステップＳ１３との間で行われる。
【００９５】
図５に示すステップＳ１２の処理が行われると、非更新対象プログラムＰＡ１１が一時停止する。具体的に、非更新対象プログラムＰＡ１１は、呼出側更新対象プログラムＰＣ１１から非更新対象プログラムＰＡ１１を呼び出す直前か、非更新対象プログラムＰＡ１１から呼出側更新対象プログラムＰＣ１１に戻った直後のタイミングで一時停止する。非更新対象プログラムＰＡ１１が一時停止すると、その旨が非更新対象プログラム呼出停止部１５２から非更新対象プログラム停止位置戻し部１５３に通知される。
【００９６】
すると、非更新対象プログラムＰＡ１１が要求した更新対象プログラムの処理が仕掛中であるか否かが、非更新対象プログラム停止位置戻し部１５３で判定される（ステップＳ３１）。非更新対象プログラムＰＡ１１が要求した上記の処理が、仕掛中であると判定された場合（判定結果が「ＹＥＳ」の場合）、又は不定である（仕掛中か否かの判断がつかない）と判定された場合には、非更新対象プログラム停止位置戻し部１５３で次の処理が行われる。つまり、非更新対象プログラムの実行位置を、仕掛中の更新対象プログラムに処理を要求する直前に戻す処理が行われる（ステップＳ３２）。
【００９７】
以上の処理が終了すると、非更新対象プログラムＰＡ１１が保持する、更新対象プログラムが仕掛中である旨を示す情報を削除する処理が非更新対象プログラム停止位置戻し部１５３で行われる（ステップＳ３２）。かかる処理が行われることで、非更新対象プログラムＰＡ１１が保持する情報が、仕掛中の更新対象プログラムに処理を要求する直前の情報になる。尚、ステップＳ３３の処理が行われると、図７に示すフローチャートの処理が終了する。
【００９８】
また、ステップＳ３１において、非更新対象プログラムＰＡ１１が要求した上記の処理が、仕掛中ではない判定された場合（判定結果が「ＮＯ」の場合）には、ステップＳ３２，Ｓ３３の処理は行われずに、図７に示すフローチャートの処理が終了する。図７に示すフローチャートの処理が終了すると、その旨が非更新対象プログラム停止位置戻し部１５３から非更新対象プログラム呼出停止部１５２に通知される。
【００９９】
すると、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１をプロセス制御装置２０に転送する処理（図５中のステップＳ１３）、及び一時停止完了をエンジ用機器３０に通知する処理（図５中のステップＳ１４）が、通信管理部１５１で順に行われる。尚、プロセス制御装置２０では、非更新対象プログラムＰＡ１１（非更新対象プログラムＰＡ２１）を再開させる処理が、第１実施形態と同様に行われる。
【０１００】
以上説明した通り、本実施形態では、エンジ用機器３０からの一時停止要求に基づいて、プロセス制御装置１０（現用装置）において、更新対象ではない非更新対象プログラムＰＡ１１を一時停止させた場合に、次の処理を行う。まず、非更新対象プログラム停止位置戻し部１５３が、更新対象プログラムが仕掛中であるか否かを判定する処理を行う。そして、非更新対象プログラム停止位置戻し部１５３が、更新対象プログラムが仕掛中であると判定した場合には、非更新対象プログラムＰＡ１１の実行位置を更新対象プログラムに処理を要求する直前に戻す処理を行う。このとき、非更新対象プログラム停止位置戻し部１５３は、非更新対象プログラムＰＡ１１が有する更新対象プログラムが仕掛中である旨を示す情報を削除する。
【０１０１】
以上の処理により、非更新対象プログラムＰＡ１１が更新対象プログラムに要求した処理は実行されなかったものとされ、非更新対象プログラムＰＡ１１の実行位置及び非更新対象プログラムＰＡ１１が有する更新対象プログラムの状態を示す情報が、更新対象プログラムに処理を要求する直前に戻される。これにより、プロセス制御システム１の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
【０１０２】
〔第３実施形態〕
〈プロセス制御システムの機能構成〉
図８は、本発明の第３実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。尚、図８において、図４に示す構成に相当する構成については、同一の符号を付してある。また、本実施形態によるプロセス制御システム全体の機能構成は、図１〜図３を用いて説明したものと同様である。以下では、前述した第１実施形態と相違する点を中心に説明する。
【０１０３】
本実施形態は、非更新対象プログラムＰＡ１１から呼び出された更新対象プログラムに仕掛中の処理がある場合に、その処理が全て完了するのを待つようにしたものである。本実施形態では、非更新対象プログラムＰＡ１１から呼び出された更新対象プログラムの処理が全て完了した状態で、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１が更新用装置側に転送することで、プロセス制御システム１の継続動作を保証するようにしている。
【０１０４】
例えば、図１，図２に示すタスク１３に含まれる非更新対象プログラムＰＡ１１が、オペレーティングシステム１２によって提供されるタスク間通信を使用して、タスク１４に含まれる更新対象プログラムＰＢ１２に対して要求を送信して応答を待っている状態で、非更新対象プログラムＰＡ１１の呼び出しが一時停止された状況を考える。本実施形態では、このような状況において、更新対象プログラムＰＢ１２を含む全ての更新対象プログラムが仕掛中の処理を完了させるのを待つようにしたものである。
【０１０５】
図８に示す通り、本実施形態における、現用装置側のプログラム更新制御部１５Ｂは、図４に示す現用装置側のプログラム更新制御部１５に、更新対象プログラム仕掛中処理完了待ち部１５４を追加した構成である。尚、更新用装置側のプログラム更新制御部２５は、図４に示すものと同じ構成である。
【０１０６】
更新対象プログラム仕掛中処理完了待ち部１５４は、非更新対象プログラム呼出停止部１５２が非更新対象プログラムＰＡ１１を一時停止させる処理を行った場合に、非更新対象プログラムＰＡ１１から呼び出された更新対象プログラムが仕掛中であるか否かを判定する。そして、更新対象プログラム仕掛中処理完了待ち部１５４は、非更新対象プログラムＰＡ１１から呼び出された更新対象プログラムが仕掛中であると判定した場合には、非更新対象プログラムＰＡ１１から呼び出された全ての更新対象プログラムが仕掛中の処理を完了させるのを待つ。尚、仕掛中の処理が完了したか否かは、更新対象プログラム仕掛中処理完了待ち部１５４が、オペレーティングシステム１２に依頼することによって把握することができる。
【０１０７】
〈プログラム更新方法〉
図９は、本発明の第３実施形態によるプログラム更新方法を示すフローチャートである。尚、図９に示すフローチャートは、プログラム更新制御部１５Ｂに設けられた更新対象プログラム仕掛中処理完了待ち部１５４で行われる処理を抜き出して図示したものである。図９に示すフローチャートの処理は、図５中のステップＳ１２とステップＳ１３との間で行われる。
【０１０８】
図５に示すステップＳ１２の処理が行われると、非更新対象プログラムＰＡ１１が一時停止する。具体的に、非更新対象プログラムＰＡ１１は、呼出側更新対象プログラムＰＣ１１から非更新対象プログラムＰＡ１１を呼び出す直前か、非更新対象プログラムＰＡ１１から呼出側更新対象プログラムＰＣ１１に戻った直後のタイミングで一時停止する。非更新対象プログラムＰＡ１１が一時停止すると、その旨が非更新対象プログラム呼出停止部１５２から更新対象プログラム仕掛中処理完了待ち部１５４に通知される。
【０１０９】
すると、非更新対象プログラムＰＡ１１が呼び出した更新対象プログラムは処理が仕掛中であるか否かが、更新対象プログラム仕掛中処理完了待ち部１５４で判定される（ステップＳ４１）。処理が仕掛中であると判定された場合（判定結果が「ＹＥＳ」の場合）、又は不定である（仕掛中か否かの判断がつかない）と判定された場合には、更新対象プログラム仕掛中処理完了待ち部１５４で次の処理が行われる。つまり、非更新対象プログラムＰＡ１１が呼び出した全ての更新対象プログラムが仕掛中の処理を完了するまで待つ処理が行われる（ステップＳ４２）。尚、ステップＳ４２の処理が行われると、図９に示すフローチャートの処理が終了する。
【０１１０】
また、ステップＳ４１において、処理が仕掛中ではないと判定された場合（判定結果が「ＮＯ」の場合）には、ステップＳ４２の処理は行われずに、図９に示すフローチャートの処理が終了する。図９に示すフローチャートの処理が終了すると、その旨が更新対象プログラム仕掛中処理完了待ち部１５４から非更新対象プログラム呼出停止部１５２に通知される。
【０１１１】
すると、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１をプロセス制御装置２０に転送する処理（図５中のステップＳ１３）、及び一時停止完了をエンジ用機器３０に通知する処理（図５中のステップＳ１４）が、通信管理部１５１で順に行われる。尚、プロセス制御装置２０では、非更新対象プログラムＰＡ１１（非更新対象プログラムＰＡ２１）を再開させる処理が、第１実施形態と同様に行われる。
【０１１２】
以上説明した通り、本実施形態では、エンジ用機器３０からの一時停止要求に基づいて、プロセス制御装置１０（現用装置）において、更新対象ではない非更新対象プログラムＰＡ１１を一時停止させた場合に、次の処理を行う。まず、更新対象プログラム仕掛中処理完了待ち部１５４が、更新対象プログラム（非更新対象プログラムＰＡ１１が呼び出した更新対象プログラム）は処理が仕掛中であるか否かを判定する処理を行う。そして、更新対象プログラム仕掛中処理完了待ち部１５４が、上記の更新対象プログラムが仕掛中であると判定した場合には、上記の更新対象プログラムの全てが仕掛中の処理を完了するまで待つ処理を行う。
【０１１３】
以上の処理により、非更新対象プログラムＰＡ１１から呼び出された更新対象プログラムの処理が全て完了した状態における非更新対象プログラムＰＡ１１のコンテキストＣＡ１１が更新用装置側に転送されることとなる。これにより、プロセス制御システム１の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
【０１１４】
〔第４実施形態〕
〈プロセス制御システムの機能構成〉
図１０は、本発明の第４実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。尚、図１０において、図４に示す構成に相当する構成については、同一の符号を付してある。また、本実施形態によるプロセス制御システム全体の機能構成は、図１〜図３を用いて説明したものと同様である。以下では、前述した第１実施形態と相違する点を中心に説明する。
【０１１５】
本実施形態は、非更新対象プログラムＰＡ１１が呼び出す更新対象プログラムの中に更新用装置側に処理を引き継ぐ必要があるものがある場合に、その更新対象プログラムの現用装置側から更新用装置側への処理の引き継ぎを可能とするものである。このような処理の引き継ぎを可能とするために、本実施形態では、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１に加えて、処理を引き継ぐ必要がある更新対象プログラムのコンテキストを復元するのに必要な復元用データを抽出して現用装置から更新用装置に転送している。そして、更新用装置において、転送されてきた復元用データを用いて更新対象プログラムのコンテキストを復元するようにしている。
【０１１６】
図１０に示す通り、本実施形態における、現用装置側のプログラム更新制御部１５Ｃは、図４に示す現用装置側のプログラム更新制御部１５に、更新対象プログラム仕掛中処理削減待ち部１５５と更新対象プログラムコンテキスト復元用データ抽出部１５６とを追加した構成である。また、更新用装置側のプログラム更新制御部２５Ａは、図４に示すプログラム更新制御部２５に、更新対象プログラムコンテキスト復元部２５４を追加した構成である。
【０１１７】
更新対象プログラム仕掛中処理削減待ち部１５５は、非更新対象プログラム呼出停止部１５２が非更新対象プログラムＰＡ１１を一時停止させる処理を行った場合に、非更新対象プログラムＰＡ１１が呼び出す複数の更新対象プログラムの中に処理が仕掛中のものがあるか否かを判定する。更新対象プログラム仕掛中処理削減待ち部１５５は、上記の更新対象プログラムの中に処理が仕掛中のもの１つでもあると判定した場合には、以下の処理を行う。
【０１１８】
つまり、更新対象プログラム仕掛中処理削減待ち部１５５は、非更新対象プログラムＰＡ１１が呼び出す複数の更新対象プログラムの中で仕様が公開されている更新対象プログラム（予め登録された更新対象プログラム）に仕掛中の処理を集約させるための設定を行う。具体的には、仕様が公開されている更新対象プログラムの要求が、残りの更新対象プログラムに伝わらないように設定する。そして、更新対象プログラムの処理が停止するのを待つ。上記の「仕様が公開されている更新対象プログラム」とは、仕様が明確に定義されて公開されているシステムコールや共通ライブラリ等である。
【０１１９】
更新対象プログラム仕掛中処理削減待ち部１５５は、更新対象プログラムの処理が停止しているのを確認した場合に、更新対象プログラムコンテキスト復元用データ抽出部１５６に対して復元用データの抽出を要求する。尚、更新対象プログラム仕掛中処理削減待ち部１５５は、更新対象プログラムコンテキスト復元用データ抽出部１５６から復元用データの抽出完了が通知されたら、その旨を非更新対象プログラム呼出停止部１５２に通知する。
【０１２０】
更新対象プログラムコンテキスト復元用データ抽出部１５６は、更新対象プログラム仕掛中処理削減待ち部１５５から復元用データの抽出が要求された場合に、仕様が公開されている更新対象プログラムのコンテキストから、そのコンテキストを復元するのに必要な復元用データを抽出する処理を行う。更新対象プログラムコンテキスト復元用データ抽出部１５６は、復元用データの抽出が完了したら、抽出完了を更新対象プログラム仕掛中処理削減待ち部１５５に通知する。
【０１２１】
更新対象プログラムコンテキスト復元部２５４は、コンテキスト初期化制御部２５３からコンテキストの復元が要求された場合に、現用装置側から転送されてくる復元用データと公開された処理要求の手続とを用いて、仕様が公開されている更新対象プログラムのコンテキストを復元する。更新対象プログラムコンテキスト復元部２５４は、コンテキストの復元が完了したら、復元完了をコンテキスト初期化制御部２５３に通知する。
【０１２２】
ここで、仕様が公開されている更新対象プログラムの機能がタスク間通信であり、復元すべきコンテキストがそのタスク間通信の処理の結果得られるメールボックス（タスク間通信の未読メッセージの蓄積）である例について考える。この例において、上述した更新対象プログラム仕掛中処理削減待ち部１５５は、タスク間通信機能に対して、新たに送信されたメッセージの保存は許可するが、蓄積されている未読のメッセージを更新対象プログラムが読み出すことを禁止する設定を行って更新対象プログラムの処理が停止するのを待つ。上記の設定は、例えば更新対象プログラム仕掛中処理削減待ち部１５５が、オペレーティングシステム１２に依頼して、タスク間通信から要求を取り出すシステムコールを停止することによって実現される。
【０１２３】
例えば、上記のタスク間通信が図２に示す更新対象プログラムＰＢ１３であるとすると、更新対象プログラム仕掛中処理削減待ち部１５５は、更新対象プログラムＰＢ１３の要求が更新対象プログラムＰＢ１２，ＰＢ１４に伝わらないように設定する。尚、更新対象プログラムＰＢ１２，ＰＢ１４が、更新対象プログラムＰＢ１３に対して処理を要求することは可能である。このような設定を行ってから、更新対象プログラム仕掛中処理削減待ち部１５５は、更新対象プログラムの処理が停止するのを待つ。
【０１２４】
上記の例において、更新対象プログラムコンテキスト復元用データ抽出部１５６で抽出される復元用データの項目は、メールボックスの機能仕様で定められた範囲であり、例えば、次の通りである。第１に、復元用データは、メールボックスの生成情報を含む。メールボックスの生成情報は、メッセージの最大保存個数と、１個のメッセージの上限サイズ（例えば、バイト数）である。また、第２に、復元用データは、個々のメッセージ（未読状態のメッセージのみ）の送信情報（差出タスクＩＤ、宛先タスクＩＤ、日時、緊急度、メッセージ本文）である。
【０１２５】
上記の復元用データが現用装置側から更新用装置側に転送された場合に、更新対象プログラムコンテキスト復元部２５４では、上記第１の復元用データに基づいて、当該タスクの代わりにメールボックスを生成する処理が行われる。また、更新用装置側では、上記第２の復元用データに基づいて、当該タスクの代わりにメッセージをメール送信して、メールボックス上に順次、メッセージを蓄積する処理が行われる。
【０１２６】
〈プログラム更新方法〉
図１１，図１２は、本発明の第４実施形態によるプログラム更新方法を示すフローチャートである。尚、図１１に示すフローチャートは、プログラム更新制御部１５Ｃに設けられた更新対象プログラム仕掛中処理削減待ち部１５５及び更新対象プログラムコンテキスト復元用データ抽出部１５６で行われる処理を抜き出して図示したものである。図１１に示すフローチャートの処理は、図５中のステップＳ１２とステップＳ１３との間で行われる。また、図１２に示すフローチャートは、プログラム更新制御部２５Ａに設けられた更新対象プログラムコンテキスト復元部２５４で行われる処理を抜き出して図示したものである。図１２に示すフローチャートの処理は、図５中のステップＳ２６とステップＳ２７との間で行われる。
【０１２７】
図５に示すステップＳ１２の処理が行われると、非更新対象プログラムＰＡ１１が一時停止し、その旨が非更新対象プログラム呼出停止部１５２から更新対象プログラム仕掛中処理削減待ち部１５５に通知される。すると、非更新対象プログラムＰＡ１１が呼び出す複数の更新対象プログラムの中に処理が仕掛中のものがあるか否かを判定する処理が更新対象プログラム仕掛中処理削減待ち部１５５で行われる（ステップＳ５１）。
【０１２８】
処理が仕掛中の更新対象プログラムが１つでもあると判定された場合（判定結果が「ＹＥＳ」の場合）、又は不定である（仕掛中か否かの判断がつかない）と判定された場合には、更新対象プログラム仕掛中処理削減待ち部１５５で次の処理が行われる。つまり、仕様が公開されている更新対象プログラムの要求が他の更新対象プログラムに伝わらないように設定する処理が更新対象プログラム仕掛中処理削減待ち部１５５で行われる（ステップＳ５２）。
【０１２９】
以上の設定処理が終了すると、更新対象プログラム仕掛中処理削減待ち部１５５では、非更新対象プログラムＰＡ１１が呼び出す全ての更新対象プログラムの処理が停止するまで待つ処理が行われる（ステップＳ５２）。非更新対象プログラムＰＡ１１が呼び出す全ての更新対象プログラムの処理の停止が確認されると、更新対象プログラム仕掛中処理削減待ち部１５５から更新対象プログラムコンテキスト復元用データ抽出部１５６に対して復元用データの抽出が要求される。
【０１３０】
復元用データの抽出の要求があると、停止中の更新対象プログラム（仕様が公開されている更新対象プログラム）のコンテキストから、そのコンテキストを復元するのに必要な復元用データを抽出する処理が更新対象プログラムコンテキスト復元用データ抽出部１５６で行われる（ステップＳ５４）。復元用データの抽出が完了すると、更新対象プログラムコンテキスト復元用データ抽出部１５６から更新対象プログラム仕掛中処理削減待ち部１５５に対して、抽出完了が通知される。
【０１３１】
この抽出完了が通知されると、その旨（抽出完了）が更新対象プログラム仕掛中処理削減待ち部１５５から非更新対象プログラム呼出停止部１５２に通知される。すると、更新対象プログラムコンテキスト復元用データ抽出部１５６で抽出された復元用データが、通信管理部１５１を介して更新用装置に転送する処理が行われる（ステップＳ５５）。以上の処理が行われると、図１１に示すフローチャートの処理が終了する。尚、ステップＳ５１において、処理が仕掛中の更新対象プログラムが無いと判定された場合（判定結果が「ＮＯ」の場合）にも、図１１に示すフローチャートの処理が終了する。
【０１３２】
すると、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１をプロセス制御装置２０に転送する処理（図５中のステップＳ１３）、及び一時停止完了をエンジ用機器３０に通知する処理（図５中のステップＳ１４）が、通信管理部１５１で順に行われる。
【０１３３】
エンジ用機器３０から更新用装置側に再開要求が送信されると、第１実施形態と同様に、図５に示すステップＳ２１〜Ｓ２６の処理が行われる。ここで、ステップＳ２６の処理が終了すると、コンテキスト初期化制御部２５３から更新対象プログラムコンテキスト復元部２５４に対して、コンテキストの復元が要求される。すると、通信管理部２５１を経由して復元用データを受け取る処理が、更新対象プログラムコンテキスト復元部２５４で行われる（ステップＳ６１）。
【０１３４】
そして、受け取った復元用データと公開された処理要求の手続とを用いて、仕様が公開されている更新対象プログラムのコンテキストを復元する処理が、更新対象プログラムコンテキスト復元部２５４で行われる。コンテキストの復元が完了すると、更新対象プログラムコンテキスト復元部２５４からコンテキスト初期化制御部２５３に、復元完了が通知される。
【０１３５】
すると、非更新対象プログラムＰＡ１１（非更新対象プログラムＰＡ２１）の呼び出しを再開する処理が、非更新対象プログラム呼出再開部２５２で行われる（図５のステップＳ２７）。非更新対象プログラムＰＡ１１（非更新対象プログラムＰＡ２１）の再開が完了すると、非更新対象プログラム呼出再開部２５２から通信管理部２５１に対し、再開処理が完了した旨が通知される。この通知がされると、再開処理が完了した旨をエンジ用機器３０に通知する処理が通信管理部２５１によって行われる（図５のステップＳ２８）。
【０１３６】
以上説明した通り、本実施形態では、現用装置側において、非更新対象プログラムＰＡ１１が呼び出す更新対象プログラムの中に処理が仕掛中のものがあると判定した場合には、更新対象プログラムのうちの仕様が公開されている更新対象プログラムの要求が他の更新対象プログラムに伝わらないように設定して更新対象プログラムの処理が停止するのを待つ。そして、仕様が公開されている更新対象プログラムのコンテキストから処理の再開に必要な復元用データを抽出する。
【０１３７】
また、本実施形態では、更新用装置側において、現用装置側から転送されてくる復元用データを用いて更新後の更新対象プログラム（仕様が公開されている更新対象プログラム）のコンテキストを復元する。そして、このコンテキストの復元が完了してから、非更新対象プログラムＰＡ１１（ＰＡ２１）の呼び出しを再開する。
【０１３８】
以上の処理により、現用装置側における非更新対象プログラムＰＡ１１のコンテキストＣＡ１１に加えて、非更新対象プログラムＰＡ１１から呼び出される更新対象プログラムのうちの仕様が公開されている更新対象プログラムのコンテキストを更新用装置側に復元することができる。これにより、非更新対象プログラムＰＡ１１が呼び出す更新対象プログラムの中に更新用装置側に処理を引き継ぐ必要があるものがある場合であっても、プロセス制御システム１の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
【０１３９】
〔第５実施形態〕
図１３は、本発明の第５実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。尚、図１３において、図１，図２に示す構成に相当する構成については、同一の符号を付してある。また、図１３では、本実施形態の説明に必要な機能構成のみ図示している。このため、図１３では、例えば図１に示すプロセス制御装置１０及びエンジ用機器３０等の図示を省略している。尚、本実施形態では、図４に示すプログラム更新制御部１５，２５が現用装置及び更新用装置にそれぞれ設けられている。以下では、前述した第２実施形態と相違する点を中心に説明する。
【０１４０】
前述した第２実施形態は、プロセス制御装置１０のみを考慮して、非更新対象プログラムＰＡ１１から呼び出された更新対象プログラムに仕掛中の処理がある場合に、その処理を速やかに中断するようにしたものであった。ここで、プロセス制御装置１０と通信を行う通信相手装置４０（他の装置）が存在する場合には、非更新対象プログラムＰＡ１１からの呼び出し（要求）に加えて、通信相手装置４０からプロセス制御装置１０への要求を考慮して、通信エラー等の異常が発生しないように仕掛中の通信処理を継続する必要がある。
【０１４１】
その理由は、仕掛中の通信処理が継続されることで、プロセス制御装置１０の一時的な停止を不感にするためである。つまり、プロセス制御装置１０が一時的に停止した場合であっても、プロセス制御装置１０が継続して動作していると通信相手装置４０に思わせるためである。本実施形態は、通信相手装置４０が存在する場合であっても、プロセス制御装置１０の一時的な停止を不感にすることで、プロセス制御システム１の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができるようにするものである。
【０１４２】
図１３に示す通り、オペレーティングシステム１２は、更新対象プログラムの１つとして、更新対象プログラムＰＢ１６を有する。この更新対象プログラムＰＢ１６は、オペレーティングシステム１２上で稼働するタスク（例えば、タスク１３）と通信相手装置４０で稼働するタスク（例えば、通信相手装置４０のオペレーティングシステム４１上で稼働するタスク４２）との間の通信を可能とする通信ドライバである。本実施形態では、要求／応答プロトコルを通信ドライバに実装することにより、処理依頼元である要求タスクと処理実行先の応答タスクとの間で要求の送達確認／再送と受信重複排除を実現している。
【０１４３】
要求／応答プロトコルでは、要求タスクは、通信データに通信データＩＤを付与して送信し、応答タスクも通信データＩＤを付与して返信する。通信データＩＤとは、通信データを一意に特定する識別子であり、例えば、シーケンス番号である。要求／応答プロトコルを実装した通信機能には、例えばＶｎｅｔのＧＥＴ通信、ＦＦ（Foundation Fieldbus（登録商標）協会）のＣｌｉｅｎｔ−Ｓｅｒｖｅｒ通信や、ＰＲＯＦＩＢＵＳ（登録商標）のＤＰ−Ｖ１通信等がある。
【０１４４】
図１４は、本発明の第５実施形態において用いられる要求／応答プロトコルを説明するための図である。図１４に示す通り、要求／応答プロトコルでは、プロセス制御装置１０（タスク１３）が通信相手装置４０（タスク４２）に要求を送信（通知）した場合には、プロセス制御装置１０（タスク１３）は、通信相手装置４０（タスク４２）から応答が返るのを待つ。要求を受信した通信相手装置４０（タスク４２）は、要求された処理（所定の第１処理）の処理が終了したときに、その処理の結果を示す応答を返信（通知）する。要求を送信したプロセス制御装置１０（タスク１３）は、通信相手装置４０（タスク４２）から返信された応答を受信すると仕掛中の処理が完了する。
【０１４５】
逆に、通信相手装置４０（タスク４２）がプロセス制御装置１０（タスク１３）に要求を送信した場合には、通信相手装置４０（タスク４２）は、プロセス制御装置１０（タスク１３）から応答が返るのを待つ。要求を受信したプロセス制御装置１０（タスク１３）は、要求された処理（所定の第２処理）の処理が終了したときに、その処理の結果を示す応答を返信する。
【０１４６】
ここで、通常の汎用的な通信プロトコル（例えば、ＴＣＰ／ＩＰ）を用いた場合には、通信相手装置４０からの要求がプロセス制御装置１０で正常に受信されると、通信相手装置４０から要求された処理がプロセス制御装置１０で終了していなくとも、プロセス制御装置１０から通信相手装置４０に対して肯定応答（ＡＣＫ）が返信される。これに対し、要求／応答プロトコルを用いた場合には、通信相手装置４０から要求された処理がプロセス制御装置１０で終了するまでは、プロセス制御装置１０から通信相手装置４０に対して応答は返信されない。つまり、通常の汎用的な通信プロトコルを用いた場合には、通信ドライバ間の高信頼通信が実現されるのに対し、要求／応答プロトコルを用いた場合には、要求タスクと応答タスクとを結ぶ全ての経路における高信頼通信が実現される。
【０１４７】
ここで、応答タスクが稼働する現用装置をオンライン更新する場合においては、オンライン更新によって応答データを紛失する場合がある。このような場合であっても、要求タスクの通信ドライバが要求／応答プロトコルによって応答データの受信を監視しているため、一定時間内に応答データが受信されないときには、その応答データに対する要求データが再送される。その結果、応答データの紛失がリカバリされるので、応答タスクが稼働する現用装置をオンライン更新しても、通信相手装置の要求タスクにオンライン更新を気付かれることはない。
【０１４８】
これに対し、要求タスクが稼働する現用装置をオンライン更新する場合においては、オンライン更新によって要求データを紛失する場合がある。このような場合には、要求／応答プロトコルではその要求データの紛失をリカバリすることはできない。そこで、オンライン更新の一時停止時に、要求タスクが既に応答タスクに向けて要求データを送信し、更新対象プログラムが仕掛中である場合には、非更新対象プログラムＰＡ１１の停止位置を、更新対象プログラムに要求する直前の状態（更新対象プログラムが仕掛中になる前の状態）に戻すようにしている。これにより、要求データの紛失がリカバリされる。
【０１４９】
以上説明した通り、本実施形態では、プロセス制御装置１０と通信相手装置４０との間で要求／応答プロトコルを用いて通信を行うようにしている。これにより、一定時間に応答が得られない場合には、その応答に対する要求が再送される。その結果として、通信相手装置４０が存在する場合であっても、プロセス制御システム１の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
【０１５０】
〔第６実施形態〕
〈プロセス制御システムの機能構成〉
図１５は、本発明の第６実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。尚、図１５において、図１，図２，図１３に示す構成に相当する構成については、同一の符号を付してある。また、図１５では、本実施形態の説明に必要な機能構成のみ図示している。このため、図１５では、例えば図１に示すプロセス制御装置１０及びエンジ用機器３０等の図示を省略している。以下では、前述した第１実施形態と相違する点を中心に説明する。
【０１５１】
前述した第３実施形態は、プロセス制御装置１０のみを考慮して、非更新対象プログラムＰＡ１１から呼び出された更新対象プログラムに仕掛中の処理がある場合に、その処理が全て完了するのを待つものであった。そして、全ての処理が完了した後に、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１が更新用装置側に転送することで、プロセス制御システム１の継続動作を保証するようにしたものであった。
【０１５２】
ここで、プロセス制御装置１０と通信を行う通信相手装置４０が存在する場合には、非更新対象プログラムＰＡ１１が一時的に停止した後に、通信相手装置４０から新たな要求を受信しないようにする必要がある。これは、通信処理の仕掛中処理をゼロにするためである。つまり、通信相手装置４０からの新たな要求が無ければ、既に受信済みの要求に対して応答を返せば仕掛中処理は終了するからである。また、非更新対象プログラムＰＡ１１の呼び出しも停止するが、既に要求を出した処理ついては、応答を受信すれば終了する。このように、本実施形態は、通信相手装置４０が存在する場合であっても、通信相手装置４０から新たな要求は受信しないが、応答は受信するようにすることで、プロセス制御システム１の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができるようにするものである。
【０１５３】
図１５に示す通り、オペレーティングシステム１２は、更新対象プログラムとして、更新対象プログラムＰＢ１７，ＰＢ１８を有する。更新対象プログラムＰＢ１７は、オペレーティングシステム１２上で稼働するタスク（例えば、タスク１３，１４）相互間の通信の機能を提供する。更新対象プログラムＰＢ１８は、オペレーティングシステム１２上で稼働するタスク（例えば、タスク１４）と通信相手装置４０との間の通信を可能とする通信ドライバである。
【０１５４】
上記の通信ドライバ（更新対象プログラムＰＢ１８）は、汎用的な通信プロトコル（例えば、ＴＣＰ／ＩＰ）を用いて通信を行う。上記の通信ドライバ（更新対象プログラムＰＢ１８）が、ＴＣＰ／ＩＰを用いて通信を行う場合には、メッセージの送達確認及び再送、並びに重複排除が行われる。つまり、上記の通信ドライバ（更新対象プログラムＰＢ１８）は、データを送信した際に肯定応答（ＡＣＫ）を待ったり、その肯定応答が得られない場合にはデータを再送したり、データを受信する際に重複したデータがある場合にはその重複を排除したりする。
【０１５５】
オペレーティングシステム１２上では、タスク１３，１４が稼働する。タスク１３では、図１３に示すタスク１３と同様に、非更新対象プログラムＰＡ１１が稼働する。タスク１４（使用タスク）では、更新対象プログラムＰＢ１２が稼働する。更新対象プログラムＰＢ１２は、更新対象プログラムＰＢ１８へのインターフェイスとして機能する。つまり、タスク１３の非更新対象プログラムＰＡ１１は、更新対象プログラムＰＢ１７（タスク間通信）及び更新対象プログラムＰＢ１２（中継タスク）を経由して更新対象プログラムＰＢ１８（通信ドライバ）にアクセスできる。
【０１５６】
従って、タスク１３の非更新対象プログラムＰＡ１１は、上記の更新対象プログラムＰＢ１７（タスク間通信）、更新対象プログラムＰＢ１２（中継タスク）、及び更新対象プログラムＰＢ１８（通信ドライバ）を経由して、通信相手装置４０との間で双方向の通信を行うことができる。具体的に、タスク１３の非更新対象プログラムＰＡ１１は、例えば通信相手装置４０のオペレーティングシステム４１上で稼働するタスク４２との間で双方向の通信を行うことができる。尚、タスク１３とタスク４２との間では、例えばＴＣＰ／ＩＰ等の汎用的な通信プロトコルを用いて通信が行われる。
【０１５７】
尚、タスク１３で稼働する非更新対象プログラムＰＡ１１はコンテキストＣＡ１１を有している。タスク１４で稼働する更新対象プログラムＰＢ１２は、コンテキストＣＢ１２を有している。また、オペレーティングシステム１２が有する更新対象プログラムＰＢ１７は、コンテキストＣＢ１７を有しており、更新対象プログラムＰＢ１８は、コンテキストＣＢ１８を有している。
【０１５８】
図１６は、本発明の第６実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。尚、図１６において、図８に示す構成に相当する構成については、同一の符号を付してある。図１６に示す通り、本実施形態における、現用装置側のプログラム更新制御部１５Ｄは、図８に示す現用装置側のプログラム更新制御部１５Ｂに、通信受口閉塞部１５７を追加した構成である。尚、更新用装置側のプログラム更新制御部２５は、図８に示すものと同じ構成である。
【０１５９】
通信受口閉塞部１５７は、外部装置（例えば、通信相手装置４０）から新たな処理の要求を受信しないように、通信ドライバ（例えば、図１５に示す更新対象プログラムＰＢ１８）の受信口を閉塞する。通信受口閉塞部１５７は、非更新対象プログラム呼出停止部１５２からの要求があった場合に、直ちに通信ドライバの受信口を閉塞する。通信受口閉塞部１５７は、更新対象プログラム仕掛中処理完了待ち部１５４よりも前に、非更新対象プログラム呼出停止部１５２によって処理の開始が要求される。通信ドライバの受信口の閉塞は、例えば通信受口閉塞部１５７が、オペレーティングシステム１２の機能を使用して、受信割込みマスクを操作することによって実現される。
【０１６０】
尚、通信ドライバが、汎用的な通信プロトコルを用いて通信を行うものである場合には、通信ドライバの受信口が一時的に閉塞されたとしても、再送期間内に通信が再開されればデータ紛失を防ぐことができる。尚、上記の「再送期間」は、要求を送信してから次の要求を送信するまでの待ち時間（応答の待ち時間）Ｔｗに再送回数Ｎを乗じて得られる長さを有する期間である。
【０１６１】
〈プログラム更新方法〉
図１７は、本発明の第６実施形態によるプログラム更新方法を示すフローチャートである。尚、図１７に示すフローチャートは、プログラム更新制御部１５Ｄに設けられた更新対象プログラム仕掛中処理完了待ち部１５４及び通信受口閉塞部１５７で行われる処理を抜き出して図示したものである。図１７に示すフローチャートの処理は、図５中のステップＳ１２とステップＳ１３との間で行われる。
【０１６２】
図５に示すステップＳ１２の処理が行われると、非更新対象プログラムＰＡ１１が一時停止する。具体的に、非更新対象プログラムＰＡ１１は、呼出側更新対象プログラムＰＣ１１から非更新対象プログラムＰＡ１１を呼び出す直前か、非更新対象プログラムＰＡ１１から呼出側更新対象プログラムＰＣ１１に戻った直後のタイミングで一時停止する。非更新対象プログラムＰＡ１１が一時停止すると、非更新対象プログラム呼出停止部１５２から通信受口閉塞部１５７に対して処理の開始が要求される。すると、通信ドライバ（図１５に示す更新対象プログラムＰＢ１８）が新たな処理の要求を受信しないように、通信ドライバの受信口を閉塞する処理が通信受口閉塞部１５７によって直ちに行われる（ステップＳ７１）。
【０１６３】
通信ドライバの受信口を閉塞する処理が完了すると、通信受口閉塞部１５７から非更新対象プログラム呼出停止部１５２に対して、処理完了が通知される。この処理完了が通知されると、非更新対象プログラム呼出停止部１５２から更新対象プログラム仕掛中処理完了待ち部１５４に対して処理の開始が要求される。すると、非更新対象プログラムＰＡ１１により呼び出された更新対象プログラム、及び通信相手装置４０からの要求により呼び出された更新対象プログラムは処理が仕掛中であるか否かが、更新対象プログラム仕掛中処理完了待ち部１５４で判定される（ステップＳ７２）。
【０１６４】
処理が仕掛中であると判定された場合（ステップＳ７２の判定結果が「ＹＥＳ」の場合）には、更新対象プログラム仕掛中処理完了待ち部１５４で次の処理が行われる。つまり、非更新対象プログラムＰＡ１１により呼び出された更新対象プログラム、及び通信相手装置４０からの要求により呼び出された更新対象プログラムの全てが仕掛中の処理を完了するまで待つ処理が行われる（ステップＳ７３）。尚、ステップＳ７３の処理が行われると、図１７に示すフローチャートの処理が終了する。
【０１６５】
また、ステップＳ７２において、処理が仕掛中ではないと判定された場合（判定結果が「ＮＯ」の場合）には、ステップＳ７３の処理は行われずに、図１７に示すフローチャートの処理が終了する。図１７に示すフローチャートの処理が終了すると、その旨が更新対象プログラム仕掛中処理完了待ち部１５４から非更新対象プログラム呼出停止部１５２に通知される。
【０１６６】
すると、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１をプロセス制御装置２０に転送する処理（図５中のステップＳ１３）、及び一時停止完了をエンジ用機器３０に通知する処理（図５中のステップＳ１４）が、通信管理部１５１で順に行われる。尚、プロセス制御装置２０では、非更新対象プログラムＰＡ１１（非更新対象プログラムＰＡ２１）を再開させる処理が、第１実施形態と同様に行われる。
【０１６７】
以上説明した通り、本実施形態では、エンジ用機器３０からの一時停止要求に基づいて、プロセス制御装置１０（現用装置）において、更新対象ではない非更新対象プログラムＰＡ１１を一時停止させた場合に、次の処理を行う。まず、通信受口閉塞部１５７が、通信ドライバ（図１５に示す更新対象プログラムＰＢ１８）の受信口を閉塞する処理を行う。
【０１６８】
次に、更新対象プログラム仕掛中処理完了待ち部１５４が、非更新対象プログラムＰＡ１１により呼び出された更新対象プログラム、及び通信相手装置４０からの要求により呼び出された更新対象プログラムは処理が仕掛中であるか否かを判定する処理を行う。そして、更新対象プログラム仕掛中処理完了待ち部１５４が、上記の更新対象プログラムが仕掛中であると判定した場合には、上記の更新対象プログラムの全てが仕掛中の処理を完了するまで待つ処理を行う。
【０１６９】
以上の処理により、非更新対象プログラムＰＡ１１により呼び出された更新対象プログラム、及び通信相手装置４０からの要求により呼び出された更新対象プログラムの処理が全て完了した状態における非更新対象プログラムＰＡ１１のコンテキストＣＡ１１が更新用装置側に転送されることとなる。これにより、通信相手装置４０が存在する場合であっても、プロセス制御システム１の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
【０１７０】
〔第７実施形態〕
〈プロセス制御システムの機能構成〉
図１８は、本発明の第７実施形態によるプロセス制御システムの概略機能構成を示す機能構成図である。尚、図１８において、図１５に示す構成に相当する構成については、同一の符号を付してある。また、図１８では、本実施形態の説明に必要な機能構成のみ図示している。このため、図１８では、例えば図１に示すプロセス制御装置１０及びエンジ用機器３０等の図示を省略している。以下では、前述した第４実施形態と相違する点を中心に説明する。
【０１７１】
前述した第４実施形態は、プロセス制御装置１０のみを考慮して、非更新対象プログラムＰＡ１１が呼び出す更新対象プログラムの中に更新用装置側に処理を引き継ぐ必要があるものがある場合に、その更新対象プログラムの現用装置側から更新用装置側への処理の引き継ぎを可能とするものであった。ここで、第６実施形態と同様に、プロセス制御装置１０と通信を行う通信相手装置４０が存在する場合には、非更新対象プログラムＰＡ１１が一時的に停止した後に、通信相手装置４０から新たな要求を受信しないようにする必要がある。本実施形態は、通信相手装置４０が存在する場合であっても、通信相手装置４０から新たな要求を受信しないようにすることで、プロセス制御システム１の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができるようにするものである。
【０１７２】
図１８に示す通り、オペレーティングシステム１２は、更新対象プログラムとして、更新対象プログラムＰＢ１７，ＰＢ１８に加えて更新対象プログラムＰＢ１９を有する。更新対象プログラムＰＢ１９は、更新対象プログラムＰＢ１７と同様に、オペレーティングシステム１２上で稼働するタスク相互間の通信の機能（タスク間通信機能）を提供する。尚、図１８では、更新対象プログラムＰＢ１７，ＰＢ１９が有するコンテキストをまとめてコンテキストＣＢ１７として図示している。
【０１７３】
タスク１３の非更新対象プログラムＰＡ１１は、上記の更新対象プログラムＰＢ１７（タスク間通信）、更新対象プログラムＰＢ１２（中継タスク）、更新対象プログラムＰＢ１９（タスク間通信）、及び更新対象プログラムＰＢ１８（通信ドライバ）を経由して、通信相手装置４０との間で双方向の通信を行うことができる。尚、タスク１４と通信相手装置４０のタスク４２との間では、例えばＴＣＰ／ＩＰ等の汎用的な通信プロトコルを用いて通信が行われる。
【０１７４】
図１９は、本発明の第７実施形態における、プログラム更新制御部（現用装置側及び更新用装置側）の詳細な機能構成を示す機能ブロック図である。尚、図１９において、図１０に示す構成に相当する構成については、同一の符号を付してある。図１９に示す通り、本実施形態における、現用装置側のプログラム更新制御部１５Ｅは、図１０に示す現用装置側のプログラム更新制御部１５Ｃに、通信受口閉塞部１５７を追加した構成である。尚、更新用装置側のプログラム更新制御部２５Ａは、図１０に示すものと同じ構成である。
【０１７５】
通信受口閉塞部１５７は、図１６に示したものと同様のものである。つまり、通信受口閉塞部１５７は、非更新対象プログラム呼出停止部１５２からの要求があった場合に、外部装置（例えば、通信相手装置４０）から新たな処理の要求を受信しないように、通信ドライバ（図１８に示す更新対象プログラムＰＢ１８）の受信口を直ちに閉塞する。尚、通信ドライバの受信口の閉塞は、例えば通信受口閉塞部１５７が、オペレーティングシステム１２の機能を使用して、受信割込みマスクを操作することによって実現される。
【０１７６】
〈プログラム更新方法〉
図２０は、本発明の第７実施形態によるプログラム更新方法を示すフローチャートである。尚、図２０に示すフローチャートは、プログラム更新制御部１５Ｅに設けられた更新対象プログラム仕掛中処理削減待ち部１５５、更新対象プログラムコンテキスト復元用データ抽出部１５６、及び通信受口閉塞部１５７で行われる処理を抜き出して図示したものである。図２０に示すフローチャートの処理は、図５中のステップＳ１２とステップＳ１３との間で行われる。
【０１７７】
図５に示すステップＳ１２の処理が行われると、非更新対象プログラムＰＡ１１が一時停止する。具体的に、非更新対象プログラムＰＡ１１は、呼出側更新対象プログラムＰＣ１１から非更新対象プログラムＰＡ１１を呼び出す直前か、非更新対象プログラムＰＡ１１から呼出側更新対象プログラムＰＣ１１に戻った直後のタイミングで一時停止する。非更新対象プログラムＰＡ１１が一時停止すると、非更新対象プログラム呼出停止部１５２から通信受口閉塞部１５７に対して処理の開始が要求される。すると、通信ドライバ（図１８に示す更新対象プログラムＰＢ１８）が新たな処理の要求を受信しないように、通信ドライバの受信口を閉塞する処理が通信受口閉塞部１５７によって直ちに行われる（ステップＳ８１）。
【０１７８】
通信ドライバの受信口を閉塞する処理が完了すると、図１１に示すフローチャートの処理と同様の処理（ステップＳ５１〜Ｓ５５の処理）が行われる。尚、図１８に示す機能ブロックにおいて、仕様が公開されている更新対象プログラムは、更新対象プログラムＰＢ１７，ＰＢ１９（タスク間通信）である。このため、ステップＳ５２の処理では、更新対象プログラム仕掛中処理削減待ち部１５５によって次の処理が行われる。
【０１７９】
つまり、更新対象プログラムＰＢ１７（タスク間通信）の要求が、非更新対象プログラムＰＡ１１と更新対象プログラムＰＢ１２（中継タスク）とに伝わらないように設定する処理が行われる。また、更新対象プログラムＰＢ１９（タスク間通信）の要求が、更新対象プログラムＰＢ１２（中継タスク）と更新対象プログラムＰＢ１８（通信ドライバ）とに伝わらないように設定する処理が行われる。
【０１８０】
図２０に示すフローチャートの処理が終了すると、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１をプロセス制御装置２０に転送する処理（図５中のステップＳ１３）、及び一時停止完了をエンジ用機器３０に通知する処理（図５中のステップＳ１４）が、通信管理部１５１で順に行われる。尚、プロセス制御装置２０では、非更新対象プログラムＰＡ１１（非更新対象プログラムＰＡ２１）を再開させる処理が、第４実施形態と同様に行われる。
【０１８１】
以上説明した通り、本実施形態では、エンジ用機器３０からの一時停止要求に基づいて、プロセス制御装置１０（現用装置）において、更新対象ではない非更新対象プログラムＰＡ１１を一時停止させた場合に、通信受口閉塞部１５７が、通信ドライバ（図１８に示す更新対象プログラムＰＢ１８）の受信口を閉塞する処理を行ってから、第４実施形態と同余の処理を行う。これにより、通信相手装置４０が存在する場合であっても、プロセス制御システム１の継続動作を保証しつつ、短時間で更新対象プログラムを更新することができる。
【０１８２】
〔プロセス制御システムの適用例〕
図２１は、本発明の実施形態によるプロセス制御システムを、工業プロセスを制御するシステムに適用した例を示すブロック図である。図２１に示す通り、プロセス制御装置１０（現用装置）及びプロセス制御装置２０（更新用装置）は、ネットワークＮ１を介して多数のフィールド機器ＦＤに接続されている。フィールド機器ＦＤは、プラント等の工業プロセスにおける各種状態を計測したり、それらの状態を制御したりするための機器類である。具体的に、フィールド機器ＦＤは、例えば、流量計、温度計、湿度計、圧力計等のセンサや、バルブ、ポンプ、アクチュエータ等といった機器である。また、プロセス制御装置１０，２０は、ネットワークＮ２を介してエンジ用機器３０に接続されている。
【０１８３】
プロセス制御装置１０，２０に搭載された非更新対象プログラムＰＡ１１は、フィールド機器ＦＤから収集されたデータ（プロセス値）を入力とし、ＰＩＤ制御やシーケンス制御のための演算、又はシミュレーション処理等を行う。そして、非更新対象プログラムＰＡ１１は、演算結果や処理結果に応じてフィールド機器ＦＤを操作したり、他の制御装置に対する出力を行ったりする。非更新対象プログラムＰＡ１１は、その際に、オペレーティングシステム１２等が提供する機能を利用するために、更新対象プログラムを呼び出す場合がある。このようにして、プロセス制御装置１０，２０は、工業プロセスの状態を把握するとともに、工業プロセスの状態が所望の状態になるように制御を行う。
【０１８４】
以下、プロセス制御装置の更新対象プログラムを更新するための処理について説明する。当初は、プロセス制御装置１０が現用装置として稼働し、プロセス制御装置２０は更新用装置としてスタンバイしている。このとき、プロセス制御装置１０は、フィールド機器ＦＤを介して、工業プロセスを制御している。プロセス制御のためのコンテキストは、現用装置であるプロセス制御装置１０側だけで保持され、適宜更新されている。
【０１８５】
次に、更新対象プログラムを更新するため、更新用装置であるプロセス制御装置２０に更新後の更新対象プログラムがインストール（更新）され、必要なテストが行われる。インストール及びテストの完了後、適切なタイミングで現用装置と更新用装置との切り替えが行われる。
【０１８６】
具体的には、エンジ用機器３０が、プロセス制御装置１０に対して、一時停止を指示する。プロセス制御装置１０のプログラム更新制御部１５は、エンジ用機器３０からの指示に従って、非更新対象プログラムＰＡ１１及び更新対象プログラムを停止させる。このとき、プログラム更新制御部１５は、非更新対象プログラムＰＡ１１のコンテキストＣＡ１１を更新用装置であるプロセス制御装置２０のプログラム更新制御部２５に転送する。また、更新対象プログラムのコンテキストを復元する必要がある場合には、復元用データを抽出してプロセス制御装置２０のプログラム更新制御部２５に転送する。
【０１８７】
プロセス制御装置１０の停止後、一時的に、現用装置及び更新用装置の何れのプロセス制御装置も稼働していない期間が生じる。しかしながら、その期間の長さは、工業プロセス制御に影響を与えないようあらかじめ設計（規定）された所定時間内であり、その期間内においても工業プロセスは引き続き継続する。
【０１８８】
そして、エンジ用機器３０からの指示に従って、プログラム更新制御部２５は、プログラム更新制御部１５から転送された引継データ（コンテキストＣＡ１１，復元用データ）を受信する。また、プログラム更新制御部２５は、プロセス制御装置２０において、引継データに基づいて、コンテキストを復元し、非更新対象プログラムＰＡ２１及び更新対象プログラムを起動させる。そして、プロセス制御装置２０の非更新対象プログラムＰＡ２１及び更新対象プログラムは、復元されたコンテキストに基づいて、工業プロセスを制御する処理を再開する。再開時及びその後は、プロセス制御装置２０が現用装置として機能する。
【０１８９】
尚、前述の通り、プログラム更新制御部２５は、エンジ用機器３０からの指示に従って、引継データの受信、及び非更新対象プログラムＰＡ２１及び更新対象プログラムの起動を行う代わりに、プログラム更新制御部１５からのメッセージに従ってそれらを行ってもよい。この場合において、エンジ用機器３０は、プログラム更新制御部２５に再開を要求するメッセージを送信しない。代わりに、プログラム更新制御部１５は一時停止完了のメッセージをプログラム更新制御部２５にも通知する。
【０１９０】
〔プロセス制御装置〕
図２２は、本発明の他の実施形態によるプロセス制御装置の概略機能構成を示す機能構成図である。尚、図２２において、図１に示す構成に相当する構成については、同一の符号を付してある。前述した第１〜第７実施形態は、２台のプロセス制御装置１０，２０を用いて、プログラムの更新及び稼働するプロセス制御装置の移行を行うものであった。これに対し、本実施形態は、１台のプロセス制御装置５０のみでプログラムの更新等を行うものである。
【０１９１】
図２２に示す通り、本実施形態のプロセス制御装置５０は、ハードウェア５１及びハイパーバイザ５２（プログラム実行部）を備える。ハードウェア５１は、図１に示すハードウェア１１，２１と同様に、ＣＰＵ、メモリ、入出力装置、通信装置等を備えており、プロセス制御装置５０で用いられる各種プログラム（非更新対象プログラム及び更新対象プログラムを含む）を実行させる。
【０１９２】
ハイパーバイザ５２は、ハードウェア５１上でハードウェアの代わりとして仮想的に動作し、オペレーティングシステム１２、タスク１３、及びプログラム更新制御部１５（）と、オペレーティングシステム２２、タスク２３、及びプログラム更新制御部２５とを、それぞれ独立して動作させるために設けられる。つまり、ハイパーバイザ５２は、図１に示すプロセス制御装置１０で動作している機能と、プロセス制御装置２０で動作している機能とを１台のプロセス制御装置５０で独立して動作させるために設けられる。
【０１９３】
このように、本実施形態では、プロセス制御装置１０で動作している機能と、プロセス制御装置２０で動作している機能とが１台のプロセス制御装置５０で独立して動作している点が、前述した各実施形態と異なるだけであり、プログラムの更新等は前述した各実施形態と同様に行われる。このため、ここでの詳細な説明は省略する。
【０１９４】
以上説明した通り、前述した何れかの実施形態を用いることにより、工業プロセスを中断させることなく、オンライン状態のまま、プロセス制御装置の更新対象プログラムを更新することが可能となる。
【０１９５】
尚、既に述べたように、各実施形態におけるプロセス制御装置、エンジ用機器、フィールドコントロールステーション、及びフィールド機器の少なくとも一部の機能をコンピュータで実現することができる。その場合において、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。
【０１９６】
上記の「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＵＳＢメモリ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。更に「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、一時的に、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、更に前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１９７】
以上、本発明の実施形態によるプロセス制御システム、プロセス制御装置、及びプログラム更新方法について説明した。本発明は上述した実施形態に制限される訳ではなく、本発明の範囲内で任意に変更が可能である。例えば、組み合わせることが可能な限りにおいて、上述した複数の実施形態を組み合わせて実施してもよい。
【０１９８】
例えば、図２２に示すプロセス制御装置５０において、プログラム更新制御部１５，２５の組み合わせに代えて、次に示す組み合わせを用いることが可能である。つまり、図６に示すプログラム更新制御部１５Ａ，２５の組み合わせ、図８に示すプログラム更新制御部１５Ｂ，２５の組み合わせ、図１０に示すプログラム更新制御部１５Ｃ，２５Ａの組み合わせを用いることができる。また、図１６に示すプログラム更新制御部１５Ｄ，２５の組み合わせ、図１９に示すプログラム更新制御部１５Ｅ，２５Ａの組み合わせを用いることもできる。
【０１９９】
また、上述した複数の実施形態においては、何れも、プロセス制御システムやプロセス制御装置の構成として説明した。しかしながら、これらの実施形態が備える構成を、他の任意のシステムに適用することが可能である。他の任意のシステムに適用する場合において、上述した実施形態における非更新対象プログラムＰＡ１１に相当するプログラムが、同じく上述した実施形態における呼出側更新対象プログラムＰＣ１１（図３参照）に相当するプログラムから所定の時間周期で呼び出され、所定の計算処理を行う形態が特に好適である。
【０２００】
また、上で説明した複数の実施形態において、オペレーティングシステムは、組込システムを制御するための組込ＯＳであってもよく、汎用コンピュータを制御するための汎用ＯＳであってもよい。また、実施形態においてはオペレーティングシステム下で管理される処理の実行単位を「タスク」と呼んだが、これを「プロセス」に置き換えた場合にも同様にこれらの実施形態の構成を適用することができる。
【符号の説明】
【０２０１】
１                    プロセス制御システム
１０                  プロセス制御装置
１１                  ハードウェア
１５                  プログラム更新制御部
１５Ａ〜１５Ｅ        プログラム更新制御部
２０                  プロセス制御装置
２１                  ハードウェア
２５                  プログラム更新制御部
２５Ａ                プログラム更新制御部
５０                  プロセス制御装置
５１                  ハードウェア
５２                  ハイパーバイザ
ＣＡ１１              コンテキスト
ＰＡ１１，ＰＡ２１    非更新対象プログラム
ＰＢ１１，ＰＢ２１    更新対象プログラム
【図１】
2020052668.tif 000003
【図２】
2020052668.tif 000004
【図３】
2020052668.tif 000005
【図４】
2020052668.tif 000006
【図５】
2020052668.tif 000007
【図６】
2020052668.tif 000008
【図７】
2020052668.tif 000009
【図８】
2020052668.tif 000010
【図９】
2020052668.tif 000011
【図１０】
2020052668.tif 000012
【図１１】
2020052668.tif 000013
【図１２】
2020052668.tif 000014
【図１３】
2020052668.tif 000015
【図１４】
2020052668.tif 000016
【図１５】
2020052668.tif 000017
【図１６】
2020052668.tif 000018
【図１７】
2020052668.tif 000019
【図１８】
2020052668.tif 000020
【図１９】
2020052668.tif 000021
【図２０】
2020052668.tif 000022
【図２１】
2020052668.tif 000023
【図２２】
2020052668.tif 000024