(57)【特許請求の範囲】
【請求項１】
プラントで実現される工業プロセスの制御を行うプロセス制御装置において、
ハードウェア上でハードウェアの代わりとして動作する仮想化部と、
前記仮想化部上で動作し、前記工業プロセスの制御が開始された場合には前記工業プロセスの制御の開始を待機していて内部状態が一意に確定可能な初期化処理が行われた後の状態である第１状態から前記工業プロセスの制御が実行されていて内部状態が一意に確定できない過渡的な状態である第２状態に遷移し、前記工業プロセスの１回分の制御が終了した場合には前記第２状態から前記第１状態に遷移する第１オペレーティングシステムと、
前記第１オペレーティングシステム上で動作して前記工業プロセスの制御を定周期で行うアプリケーションと、
前記第１オペレーティングシステムが前記第１状態のときに前記アプリケーションの復元に必要となる前記アプリケーションの内部状態を示す情報を保存する保存部と
を備えることを特徴とするプロセス制御装置。
【請求項２】
前記仮想化部上で動作する第２オペレーティングシステムと、 
前記第２オペレーティングシステム上で動作し、上位装置との間の通信路の通信状態を維持しながら、前記アプリケーションと上位装置との間で行われる通信を中継する通信中継部と
を備えることを特徴とする請求項１記載のプロセス制御装置。
【請求項３】
プラントで実現される工業プロセスの制御を行うプロセス制御装置において、
ハードウェア上でハードウェアの代わりとして動作する仮想化部と、
前記仮想化部上で動作し、前記工業プロセスの制御が開始された場合には前記工業プロセスの制御の開始を待機していて内部状態が一意に確定可能な初期化処理が行われた後の状態である第１状態から前記工業プロセスの制御が実行されていて内部状態が一意に確定できない過渡的な状態である第２状態に遷移し、前記工業プロセスの１回分の制御が終了した場合には前記第２状態から前記第１状態に遷移する第１オペレーティングシステムと、
請求項１又は請求項２記載のプロセス制御装置に設けられた前記保存部によって保存された情報を用いて自装置における前記第１オペレーティングシステム上に前記アプリケーションを復元する復元部と
を備えることを特徴とするプロセス制御装置。
【請求項４】
前記仮想化部は、請求項２記載のプロセス制御装置に設けられた前記第２オペレーティングシステム及び前記通信中継部を、前記通信中継部と上位装置との間の通信路の通信状態を維持したまま自装置に移行させることを特徴とする請求項３記載のプロセス制御装置。
【請求項５】
前記第１オペレーティングシステムは、前記アプリケーションの動作に必要となるリソースを事前に割り当てる静的オペレーティングシステム、又は前記アプリケーションの動作に必要となるリソースを前記アプリケーションの要求に応じて動的に割り当てる動的オペレーティングシステムであることを特徴とする請求項１から請求項４の何れか一項に記載のプロセス制御装置。
【請求項６】
前記第１オペレーティングシステムと前記アプリケーションとの間に実装され、前記アプリケーションが行う通信路の確立を前記アプリケーションに代理して行うミドルウェアを備えることを特徴とする請求項５記載のプロセス制御装置。
【請求項７】
プラントで実現される工業プロセスの制御を行うプロセス制御装置において、
ハードウェア上でハードウェアの代わりとして動作する仮想化部と、
前記仮想化部上で動作し、前記工業プロセスの制御が開始された場合には前記工業プロセスの制御の開始を待機していて内部状態が一意に確定可能な初期化処理が行われた後の状態である第１状態から前記工業プロセスの制御が実行されていて内部状態が一意に確定できない過渡的な状態である第２状態に遷移し、前記工業プロセスの１回分の制御が終了した場合には前記第２状態から前記第１状態に遷移する複数の第１オペレーティングシステムと、
前記第１オペレーティングシステム上で動作して前記工業プロセスの制御を定周期で行うアプリケーションと、
前記第１オペレーティングシステムが前記第１状態のときに前記アプリケーションの復元に必要となる前記アプリケーションの内部状態を示す情報を保存する保存部と、
前記保存部によって保存された情報を用いて前記アプリケーションが動作している前記第１オペレーティングシステムとは異なる前記第１オペレーティングシステム上に前記アプリケーションを復元する復元部と
を備えることを特徴とするプロセス制御装置。
【請求項８】
プラントで実現される工業プロセスの制御を行うプロセス制御装置の更新方法であって、
前記工業プロセスの制御が開始された場合には前記工業プロセスの制御の開始を待機していて内部状態が一意に確定可能な初期化処理が行われた後の状態である第１状態から前記工業プロセスの制御が実行されていて内部状態が一意に確定できない過渡的な状態である第２状態に遷移し、前記工業プロセスの１回分の制御が終了した場合には前記第２状態から前記第１状態に遷移する第１オペレーティングシステム上で動作して前記工業プロセスの制御を定周期で行うアプリケーションの復元に必要となる前記アプリケーションの内部状態を示す情報を前記第１オペレーティングシステムが前記第１状態のときに保存する第１ステップと、
前記第１ステップで保存された情報を用いて前記第１オペレーティングシステムと同じ遷移を行う別の第１オペレーティングシステム上に前記アプリケーションを復元する第２ステップと
を有することを特徴とするプロセス制御装置の更新方法。
【請求項９】
第２オペレーティングシステム上で動作し、上位装置との間の通信路の通信状態を維持しながら、前記アプリケーションと上位装置との間で行われる通信を中継する通信中継部を、前記第２オペレーティングシステムとともに、前記通信中継部と上位装置との間の通信路の通信状態が維持されたまま移行させる第３ステップと
を有することを特徴とする請求項８記載のプロセス制御装置の更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス制御装置及びその更新方法に関する。
【背景技術】
【０００２】
従来から、プラントや工場等（以下、これらを総称する場合には、単に「プラント」という）においては、工業プロセスにおける各種の状態量（例えば、圧力、温度、流量等）を制御するプロセス制御システムが構築されており、高度な自動操業が実現されている。具体的には、例えば以下の特許文献１に示す通り、プロセス制御システムの核をなすコントローラ（プロセス制御装置）が、複数のセンサ（流量計や温度計等）の検出結果を取得し、この検出結果に応じてアクチュエータ（バルブ等）の操作量を求め、この操作量に応じてアクチュエータを操作することによって、上述した各種の状態量が制御されている。
【０００３】
従来のプロセス制御システムは、独自仕様の専用の機器を用いて構築されていたが、近年のプロセス制御システムは、オープン化されつつあり、仕様が公開された汎用的な機器（コンピュータやワークステーション等）を用いて構築されるものが多くなっている。このような汎用的な機器が用いられるプロセス制御システムにおいては、一般の情報システムと同様に、ハードウェア及びオペレーティングシステム（ＯＳ）等からなるプラットフォームの切り替え（更新）が必要になる。このようなプラットフォームの切り替えは、例えばプラットフォームの機能を拡張し、或いはプラットフォームの不具合・脆弱性を修正するために行う。
【０００４】
また、従来のプロセス制御システムは、単独で構築されるものが多かったが、近年のプロセス制御システムは、プラントにおける生産性の向上等のために、生産管理等を行う他の情報システムに接続される機会が増えている。このように、プロセス制御システムが他の情報システムに接続される環境においては、外部からのサイバー攻撃を受けるリスクが考えられるため、プラットフォームの切り替えを継続して行うことが重要になる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４３９９７７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、従来、プロセス制御装置は、制御アプリケーションによる制御の停止時間が極力短くなるようにプラットフォームの切り替えが行われていた。具体的に、プロセス制御装置のプラットフォームの切り替えは、例えば以下に示す手順によって行われていた。尚、以下の「旧プロセス制御装置」は、それまでに用いられていたプロセス制御装置であり、「新プロセス制御装置」は新たに用いられようとしているプロセス制御装置である。
【０００７】
１．新プロセス制御装置を起動させ、制御アプリケーションの設定が可能な状態にする
２．旧プロセス制御装置上で動作していた制御アプリケーションの設定を新プロセス制御装置に転送させる
３．旧プロセス制御装置を停止させる（これにより、ネットワークが切断されて、制御アプリケーションが停止する）
４．新プロセス制御装置上の制御アプリケーションを起動させる
【０００８】
上記の手順において、新プロセス制御装置上の制御アプリケーションの起動（手順４）を行う前に、旧プロセス制御装置の停止（手順３）を行うことによって、同一の制御アプリケーションが複数動作することによる制御の競合を防止することができる。しかしながら、このような手順でプラットフォームの切り替えを行うと、旧プロセス制御装置の停止（手順３）を行った時点で制御アプリケーションの動作が途絶してしまい、旧プロセス制御装置の動作状態（制御アプリケーションの動作状態、オペレーティングシステムの動作状態、通信状態等）が新プロセス制御装置に引き継がれないという問題がある。
【０００９】
動作状態が引き継がれずに新プロセス制御装置上で制御アプリケーションが起動されると、その制御アプリケーションは初期化処理から動作を開始するため、制御動作が不連続になる可能性がある。ここで、不連続になるとは、例えば、本来行われるべき動作が欠落する、同じ動作が重複して行われる状況が生ずることである。制御動作が不連続になると、仕掛品の性質によっては仕掛品が台無しになるだけでなく、制御対象の設備が破損する可能性も考えられる。
【００１０】
本発明は上記事情に鑑みてなされたものであり、動作状態を引き継ぐことによって制御アプリケーションの動作を継続させつつプラットフォームの切り替えを行うことが可能なプロセス制御装置及びその更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、第１発明に係るプロセス制御装置は、プラントで実現される工業プロセスの制御を行うプロセス制御装置（２０ａ、２０ｃ）において、ハードウェア（ＨＷ１）上でハードウェアの代わりとして動作する仮想化部（４１、ＶＭ１１、ＶＭ１２）と、前記仮想化部上で動作し、前記工業プロセスの制御が開始された場合には前記工業プロセスの制御の開始を待機している状態である第１状態（ＳＴ２）から前記工業プロセスの制御が実行されている状態である第２状態（ＳＴ３）に遷移し、前記工業プロセスの１回分の制御が終了した場合には前記第２状態から前記第１状態に遷移する第１オペレーティングシステム（４２、６１）と、前記第１オペレーティングシステム上で動作して前記工業プロセスの制御を定周期で行うアプリケーション（４４、６３）と、前記第１オペレーティングシステムが前記第１状態のときに前記アプリケーションの復元に必要となる前記アプリケーションの内部状態を示す情報を保存する保存部（４３）とを備えることを特徴としている。
この発明によると、第１オペレーティングシステムが前記第１状態のときに、アプリケーションの復元に必要となるアプリケーションの内部状態を示す情報が保存部によって保存される。
また、第１発明に係るプロセス制御装置は、前記仮想化部上で動作する第２オペレーティングシステム（４５）と、 前記第２オペレーティングシステム上で動作し、上位装置（３０）の通信状態を維持し、前記アプリケーションと上位装置との間の通信の継続を行いながら、前記アプリケーションと上位装置との間の通信状態を維持しながら前記アプリケーションと上位装置との間で行われる通信を中継する通信中継部（４６、６４）とを備えることを特徴としている。
上記課題を解決するために、第２発明に係るプロセス制御装置は、プラントで実現される工業プロセスの制御を行うプロセス制御装置（２０ｂ、２０ｄ）において、ハードウェア（ＨＷ２）上でハードウェアの代わりとして動作する仮想化部（５１、ＶＭ２１、ＶＭ２２）と、前記仮想化部上で動作し、前記工業プロセスの制御が開始された場合には前記工業プロセスの制御の開始を待機している状態である第１状態（ＳＴ２）から前記工業プロセスの制御が実行されている状態である第２状態（ＳＴ３）に遷移し、前記工業プロセスの１回分の制御が終了した場合には前記第２状態から前記第１状態に遷移する第１オペレーティングシステム（５２、７１）と、第１発明に係るプロセス制御装置に設けられた前記保存部によって保存された情報を用いて自装置における前記第１オペレーティングシステム上に前記アプリケーションを復元する復元部（５３）とを備えることを特徴としている。
この発明によると、第１発明に係るプロセス制御装置で動作するアプリケーションが、第１発明に係るプロセス制御装置に設けられた保存部によって保存された情報を用いて、復元部により第２発明に係るプロセス制御装置の第１オペレーティングシステム上に復元される。
また、第２発明に係るプロセス制御装置は、前記仮想化部が、第１発明に係るプロセス制御装置に設けられた前記第２オペレーティングシステム及び前記通信中継部を、前記アプリケーションと前記上位装置との間の通信を引き継ぎながら移行することを特徴としている。
また、第１，第２発明に係るプロセス制御装置は、前記第１オペレーティングシステムが、前記アプリケーションの動作に必要となるリソースを事前に割り当てる静的オペレーティングシステム（４２、５２）、又は前記アプリケーションの動作に必要となるリソースを前記アプリケーションの要求に応じて動的に割り当てる動的オペレーティングシステム（６１、７１）であることを特徴としている。
また、第１，第２発明に係るプロセス制御装置は、前記第１オペレーティングシステムと前記アプリケーションとの間に実装され、前記アプリケーションが行う通信路の確立を前記アプリケーションに代理して行うミドルウェア（６２、７２）を備えることを特徴としている。
上記課題を解決するために、第３発明に係るプロセス制御装置は、プラントで実現される工業プロセスの制御を行うプロセス制御装置（２０ｅ）において、ハードウェア（ＨＷ）上でハードウェアの代わりとして動作する仮想化部（ＨＶ、ＶＭ１１、ＶＭ１２、ＶＭ２１）と、前記仮想化部上で動作し、前記工業プロセスの制御が開始された場合には前記工業プロセスの制御の開始を待機している状態である第１状態（ＳＴ２）から前記工業プロセスの制御が実行されている状態である第２状態（ＳＴ３）に遷移し、前記工業プロセスの１回分の制御が終了した場合には前記第２状態から前記第１状態に遷移する複数の第１オペレーティングシステム（４２、５２）と、前記第１オペレーティングシステム上で動作して前記工業プロセスの制御を定周期で行うアプリケーション（４４）と、前記第１オペレーティングシステムが前記第１状態のときに前記アプリケーションの復元に必要となる前記アプリケーションの内部状態を示す情報を保存する保存部（４３）と、前記保存部によって保存された情報を用いて前記アプリケーションが動作している前記第１オペレーティングシステムとは異なる前記第１オペレーティングシステム上に前記アプリケーションを復元する復元部（５３）とを備えることを特徴としている。
この発明によると、第１オペレーティングシステムが前記第１状態のときにアプリケーションの復元に必要となるアプリケーションの内部状態を示す情報が保存部によって保存され、保存された情報を用いて復元部により、アプリケーションが動作している第１オペレーティングシステムとは異なる第１オペレーティングシステム上にアプリケーションが復元される。
本発明のプロセス制御装置の更新方法は、プラントで実現される工業プロセスの制御を行うプロセス制御装置（２０）の更新方法であって、前記工業プロセスの制御が開始された場合には前記工業プロセスの制御の開始を待機している状態である第１状態（ＳＴ２）から前記工業プロセスの制御が実行されている状態である第２状態（ＳＴ３）に遷移し、前記工業プロセスの１回分の制御が終了した場合には前記第２状態から前記第１状態に遷移する第１オペレーティングシステム（４２、６１）上で動作して前記工業プロセスの制御を定周期で行うアプリケーション（４４、６３）の復元に必要となる前記アプリケーションの内部状態を示す情報を前記第１オペレーティングシステムが前記第１状態のときに保存する第１ステップ（Ｓ１３）と、前記第１ステップで保存された情報を用いて前記第１オペレーティングシステムと同じ遷移を行う別の第１オペレーティングシステム（５２、７１）上に前記アプリケーションを復元する第２ステップ（Ｓ２０）とを有することを特徴としている。
また、本発明のプロセス制御装置の更新方法は、第２オペレーティングシステム（４５）上で動作し、上位装置（３０）の通信状態の維持と、前記アプリケーションと上位装置との間の通信の継続を行いながら前記アプリケーションと上位装置との間で行われる通信を中継する通信中継部（４６、６４）を、前記第２オペレーティングシステムとともに、上位装置の通信状態の維持と、前記アプリケーションと上位装置との間の通信の継続を行いながら移行する第３ステップ（Ｓ１７）とを有することを特徴としている。
【発明の効果】
【００１２】
本発明によれば、動作状態を引き継ぐことによって制御アプリケーションの動作を継続させつつプラットフォームの切り替えを行うことが可能であるという効果がある。また、上位装置との間で確立されていた通信路が切断されることもないという効果がある。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１実施形態によるプロセス制御装置が用いられるプロセス制御システムの要部構成を示すブロック図である。
【図２】本発明の第１実施形態における静的オペレーティングシステムの状態遷移図である。
【図３】本発明の第１実施形態において、スナップショットの保存・復元を行う構成を示すブロック図である。
【図４】本発明の第１実施形態におけるコントローラの切り替え方法を示すフローチャートである。
【図５】本発明の第１実施形態においてコントローラの切り替え後のプロセス制御システムを示すブロック図である。
【図６】本発明の第２実施形態によるプロセス制御装置が用いられるプロセス制御システムの要部構成を示すブロック図である。
【図７】本発明の第２実施形態で用いられるデータベースの内容の一例を示す図である。
【図８】本発明の第３実施形態によるプロセス制御装置が用いられるプロセス制御システムの要部構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態によるプロセス制御装置及びその更新方法について詳細に説明する。
【００１５】
〔第１実施形態〕
〈プロセス制御システム〉
図１は、本発明の第１実施形態によるプロセス制御装置が用いられるプロセス制御システムの要部構成を示すブロック図である。図１に示す通り、プロセス制御システム１は、複数のフィールド機器１０、コントローラ２０（プロセス制御装置）、及び監視装置３０（上位装置）を備えており、監視装置３０の監視の下でコントローラ２０がフィールド機器１０を制御することによって、プラント（図示省略）で実現される工業プロセスの制御を行う。
【００１６】
尚、図１に示す２つのコントローラ２０のうちの一方のコントローラ２０ａは工業プロセスの制御に用いられている従前のコントローラであり、他方のコントローラ２０ｂはコントローラ２０ａに代えて設けられる新たなコントローラである。つまり、コントローラ２０ｂは、コントローラ２０ａのプラットフォームの切り替えにより新たに設けられるコントローラである。
【００１７】
ここで、フィールド機器１０及びコントローラ２０（２０ａ，２０ｂ）はフィールドネットワークＮ１に接続され、コントローラ２０（２０ａ，２０ｂ）及び監視装置３０は制御ネットワークＮ２に接続される。フィールドネットワークＮ１は、例えばプラントの現場に敷設され、プロセス制御装置とフィールド機器間でステートレスな通信路により通信が行われる有線のネットワークである。他方、制御ネットワークＮ２は、例えばプラントの現場と監視室との間に敷設され、プロセス制御装置同士やプロセス制御装置と監視装置間でステートレス或いはステートフルな通信路によって通信が行われる有線のネットワークである。尚、これらフィールドネットワークＮ１及び制御ネットワークＮ２は、無線のネットワークであっても良い。
【００１８】
ここで、「ステートレスな通信路」とは、通信路の端点で、通信の状態の意味づけを行わない通信路である。つまり、通信の状態を管理せずとも、他の手段により通信が行えることを保証している通信路である。これに対し、「ステートフルな通信路」とは、通信路の端点で、送受信に対応する通信の状態の意味付けを行い、通信の状態を管理しながら通信を行う通信路である。尚、ステートフルな通信路において、通信の整合性が失われて回復ができない場合には、端点の何れかにおいて通信路を破棄する処理が行われる。
【００１９】
フィールド機器１０は、例えば流量計や温度センサ等のセンサ機器、流量制御弁や開閉弁等のバルブ機器、ファンやモータ等のアクチュエータ機器、その他のプラントの現場に設置される機器である。尚、図１においては、理解を容易にするために、プラントに設置されたフィールド機器１０のうちの流体の流量を測定するセンサ機器１１と流体の流量を制御（操作）するバルブ機器１２とを図示している。
【００２０】
フィールド機器１０は、コントローラ２０からフィールドネットワークＮ１を介して送信されてくる制御データに応じた動作を行う。例えば、コントローラ２０からセンサ機器１１に測定データ（流体の流量の測定結果を示すデータ）の送信要求が送信されてきた場合には、センサ機器１１は、フィールドネットワークＮ１を介してコントローラ２０に向けて測定データを送信する。また、コントローラ２０からバルブ機器１２に対して制御データ（開度を制御するデータ）が送信されてきた場合には、バルブ機器１２は、流体が通過する弁の開度を制御データで指示される開度にする。
【００２１】
コントローラ２０は、監視装置３０の監視の下で工業プロセスの制御に係る定周期処理を行う。ここで、定周期処理とは、コントローラ２０が一定の周期で行う処理をいう。例えば、一定の周期で、センサ機器１１からＰＶ（プロセス）値を収集し、監視装置３０から操作されるＳＶ（設定）値を受け取り、ＭＶ（操作）値を決定する演算処理を行ってバルブ機器１２へ伝達する、一連の処理を行う。コントローラ２０の機能は、ソフトウェアがコンピュータに読み込まれて、ソフトウェアとハードウェア資源とが協働することによって実現される。尚、コントローラ２０（２０ａ，２０ｂ）で実現される機能の詳細については後述する。
【００２２】
監視装置３０は、例えばコンピュータによって実現され、運転員によって操作されて工業プロセスの監視のために用いられる。具体的に、監視装置３０は、コントローラ２０で動作するアプリケーション（詳細は後述する）の制御機能のモニタを行い、そのモニタ等の結果に応じて、運転員が指示を行い、コントローラ２０を操作する。尚、監視装置３０は、コントローラ２０に対してステートフルな通信路を確立する。
【００２３】
〈コントローラ２０ａ〉
コントローラ２０ａは、ＭＰＵ（Micro-Processing Unit：マイクロプロセッサ）やメモリ等からなるハードウェアＨＷ１を備えており、インストールされたプログラムがハードウェアＨＷ１によって実行されることによってコントローラ２０ａの機能が実現される。尚、図１中の実デバイスＲＤ１１，ＲＤ１２は、ＮＩＣ（Network Interface Card）やＩ／Ｏ（Input／Output）モジュール等の通信デバイスであり、実デバイスＲＤ１１はフィールドネットワークＮ１に接続されており、実デバイスＲＤ１２は制御ネットワークＮ２に接続されている。
【００２４】
ここで、コントローラ２０ａには、ハイパーバイザ４１（仮想化部）を実現するプログラム、静的オペレーティングシステム（ＯＳ）４２（第１オペレーティングシステム）、保存部４３を実現するプログラム、及びオペレーティングシステム４５（第２オペレーティングシステム）を実現するプログラムがインストールされている。尚、これらのプログラムによって実現される機能は、コントローラ２０ａに固定的に組み込まれる機能である。また、コントローラ２０ａには、アプリケーション４４を実現するプログラム及び通信中継部４６を実現するプログラムがインストールされている。尚、これらのプログラムによって実現される機能は、コントローラ２０ａのプラットフォームの切り替えによりコントローラ２０ｂに移行される機能である。
【００２５】
上記のハイパーバイザ４１は、静的オペレーティングシステム４２、保存部４３、及びアプリケーション４４と、オペレーティングシステム４５及び通信中継部４６とをそれぞれ独立して動作させることを可能にするものである。このハイパーバイザ４１は、ハードウェア資源の割り当て、実デバイスＲＤ１１，ＲＤ１２と仮想デバイスＶＤ１１，ＶＤ１２との対応付け等を行って、仮想マシーンＶＭ１１，ＶＭ１２（仮想化部）を並列動作させる。
【００２６】
仮想マシーンＶＭ１１は、静的オペレーティングシステム４２、保存部４３、及びアプリケーション４４が動作する仮想的なハードウェアである。この仮想マシーンＶＭ１１は、実デバイスＲＤ１１に対応する仮想デバイスＶＤ１１を備える。また、仮想マシーンＶＭ１２は、オペレーティングシステム４５及び通信中継部４６が動作する仮想的なハードウェアである。この仮想マシーンＶＭ１２は、実デバイスＲＤ１２に対応する仮想デバイスＶＤ１２を備える。つまり、上述したハイパーバイザ４１は、ハードウェアＨＷ１の代わりとして仮想的に動作する仮想マシーンＶＭ１１，ＶＭ１２の管理を行う。
【００２７】
また、図１に示す通り、ハイパーバイザ４１は、通信部４１ａ及びＶＭ移行指示受信部４１ｂを備える。通信部４１ａは、仮想マシーンＶＭ１１と仮想マシーンＶＭ１２との間の通信を実現する。この通信部４１ａは、いわばハイパーバイザ４１内における仮想的な通信経路であるため、外部通信との互換性を意識しない通信方法による通信が可能である。例えば、仮想マシーンＶＭ１１，ＶＭ１２を１対１で接続する方法や、通信オーバーヘッド削減と実装の簡単化のために通信内容を共有メモリへのデータコピーで実現する方法を採用することができる。
【００２８】
ＶＭ移行指示受信部４１ｂは、指定された仮想マシーンを他のハイパーバイザへ移行する指示（ライブマイグレーションの指示）を受信する。ここで、ライブマイグレーションとは、仮想マシーンの実行を中断し、通信の状態を含む実行中の仮想マシーンの内部状態を丸ごとコピーして、移動先の仮想マシーン上でそのコピーされた内部状態を用いて実行を再開することで、仮想マシーンの実行場所を移動する技術である。仮想マシーン外部からは無停止・無初期化で別の場所に移動したように見える。尚、本実施形態において、上記ライブマイグレーションの指示は、保存部４３によってなされる。
【００２９】
静的オペレーティングシステム４２は、仮想マシーンＶＭ１１上で動作し、保存部４３及びアプリケーション４４の動作環境の提供及びＯＳリソースオブジェクトの管理を行う。この静的オペレーティングシステム４２は、保存部４３やアプリケーション４４の動作に必要となるＯＳリソースオブジェクトを事前に割り当てるオペレーティングシステムである。尚、事前に割り当てるＯＳリソースオブジェクトは、共有メモリ、タスク、セマフォ、ネットワーク接続等である。このようなＯＳリソースオブジェクトの割り当ては、静的オペレーティングシステム４２の動作前にコンフィグレータ（ＯＳリソースオブジェクトの割り当てツール）を用いて行われる。
【００３０】
静的オペレーティングシステム４２は、静的オペレーティングシステム４２を初期化する初期化部４２ａを備える。この初期化部４２ａは、保存部４３及びアプリケーション４４が動作する前に以下の処理を行うことによって静的オペレーティングシステム４２を初期化する。
・ＯＳリソースオブジェクトの初期化
・アプリケーション４４のステートフルな通信路の確立
【００３１】
ここで、静的オペレーティングシステム４２の状態は、コントローラ２０ａの動作状況に応じて遷移する。図２は、本発明の第１実施形態における静的オペレーティングシステムの状態遷移図である。図２に示す通り、静的オペレーティングシステム４２は、コントローラ２０ａの動作状況に応じて、ＯＳ未ロード状態ＳＴ１、ＯＳ初期化済状態ＳＴ２（第１状態）、及びＯＳリソースオブジェクト使用中状態ＳＴ３（第２状態）に遷移する。
【００３２】
ＯＳ未ロード状態ＳＴ１は、コントローラ２０ａの電源が投入され、ハイパーバイザ４１及び仮想マシーンＶＭ１１，ＶＭ１２が起動して、静的オペレーティングシステム４２がロードされる直前の状態である。ＯＳ初期化済状態ＳＴ２は、静的オペレーティングシステム４２が初期化され、アプリケーション４４の実行を開始できる状態である。静的オペレーティングシステム４２がロードされた後に初めてＯＳ初期化済状態ＳＴ２に遷移するとき、静的オペレーティングシステム４２は、初期化部４２ａを動作させてコンフィグレータで割り当てたＯＳリソースオブジェクトの初期化と、ステートフルな通信路の確立を行う。
【００３３】
ＯＳリソースオブジェクト使用中状態ＳＴ３は、アプリケーション４４が実行され、アプリケーション４４に設けられた定周期処理部４４ａ（詳細は後述する）が処理中の状態である。この状態では、定周期処理部４４は定周期処理内容に従ってＯＳリソースオブジェクトを使い始めるため、静的オペレーティングシステム４２の内部状態が一意に確定できない過渡的な状態となる。尚、図２に示す通り、定周期処理部４４ａによって行われる１回分の定周期処理が終了すると、ＯＳリソースオブジェクトを使い終わり、初期化処理が行われた直後の状態に戻るため、静的オペレーティングシステム４２は、内部状態が一意に確定可能なＯＳ初期化済状態ＳＴ２に遷移し、再び定周期処理部４４ａによる１回分の定周期処理が開始されると、静的オペレーティングシステム４２はＯＳリソースオブジェクト使用中状態ＳＴ３に遷移する。
【００３４】
保存部４３は、コントローラ２０ａで動作しているアプリケーション４４をコントローラ２０ｂに復元するために必要となる情報（スナップショット）を保存し、保存したスナップショットをコントローラ２０ｂに送信する。ここで、上記のスナップショットとは、アプリケーション４４の状態を維持するために保存される、動作中のアプリケーション４４の内部状態を表すコンテキストである。このスナップショットを用いることにより、ある時点からのアプリケーション４４の動作を復元し、動作を継続することができる。尚、ある時点での内部状態を表すコンテキストとは、例えば、アプリケーション４４のメモリ領域の内容である。ここで、スナップショットには、通信の状態を参照して通信を行うために、アプリケーション４４が確立した通信路の識別子が含まれる。
【００３５】
図３は、本発明の第１実施形態において、スナップショットの保存・復元を行う構成を示すブロック図である。図３に示す通り、保存部４３は、切替指示伝達部４３ａ、スナップショット保存部４３ｂ、及びスナップショット送信部４３ｃを備える。切替指示伝達部４３ａは、コントローラ２０ａの外部に設けられた指示装置（図示省略）から送信される切替指示（コントローラ２０ａをコントローラ２０ｂに切り替える指示）を受信し、受信した切替指示をスナップショット保存部４３ｂに出力する。
【００３６】
スナップショット保存部４３ｂは、切替指示伝達部４３ａからの切替指示に基づき、アプリケーション４４の動作状態をコントローラ２０ｂに引き継ぐために、保存タイミング検知部ＤＴで検知されるタイミングでスナップショットを生成して保存する。保存タイミング検知部ＤＴは、アプリケーション４４の動作を監視して、スナップショット保存部４３ｂが動作を開始するタイミング（アプリケーション４４に設けられた定周期処理部４４ａが１回分の定周期処理を終了するタイミング）を検知する。
【００３７】
スナップショット送信部４３ｃは、スナップショット保存部４３ｂで保存されたスナップショットをコントローラ２０ｂの復元部５３に送信する。尚、このスナップショット送信部４３ｃは、スナップショットをコントローラ２０ｂの復元部５３に送信できれば必ずしも保存部４３内に設けられている必要はない。例えば、静的オペレーティングシステム４２の内部、或いは通信部４１ａ内に設けられていても良い。
【００３８】
アプリケーション４４は、静的オペレーティングシステム４２上で動作し、プロセスの制御を行う上で必要なフィールド機器１０の制御を行う。具体的に、アプリケーション４４は、定周期処理部４４ａを備えており、前述した工業プロセスの制御に係る定周期処理を行う。例えば、センサ機器１１からの測定データを一定の周期で収集する処理、バルブ機器１２を制御する制御データを一定周期で演算する処理、或いはバルブ機器１２に制御データを一定周期で送信する処理等の処理を行う。
【００３９】
オペレーティングシステム４５は、仮想マシーンＶＭ１２上で動作し、通信中継部４６の実行環境を提供する。後述する通信の引き継ぎを行うため、オペレーティングシステムは動的な通信路の確立を実現できる必要がある。静的オペレーティングシステム以外の例えば、パーソナルコンピュータやワークステーションで用いられている一般的なオペレーティングシステムはこの機能を持つ。
【００４０】
通信中継部４６は、オペレーティングシステム４５上で動作し、通信中継部４６と監視装置３０との間のステートフルな通信路の通信状態を維持しながら、アプリケーション４４と通信中継部４６との間の通信路を必要に応じて再確立して通信を引き継ぎ、アプリケーション４４と監視装置３０との間で行われる通信を中継することで、アプリケーション４４と監視装置３０との間の通信の継続を実現する。
【００４１】
ここで、「通信の継続」とは「通信状態の維持」と「通信の引き継ぎ」により、通信路の両端が通信を続けられることをいう。「通信状態の維持」とは、通信路の一方の終端（通信中継部４６）が移動しても、他方の終端（監視装置３０）は移動を感知せずに、これら終端の間の通信を保つことをいう。また、「通信の引き継ぎ」とは、通信先（通信中継部４６）が移動した際に、通信路を作り直して（再確立して）新しい通信状態を生成することをいう。
【００４２】
通信中継部４６は、図１に示す通り、通信状態維持部４６ａ及び通信引継部４６ｂを備える。通信状態維持部４６ａは、アプリケーション４４に代わって、制御ネットワークＮ２に接続された監視装置３０とのステートフルな通信路を確立して通信を行う。この通信状態維持部４６ａは、確立したステートフルな通信路が破棄されないように維持する。これに対し、通信引継部４６ｂは、監視装置３０に代わって、アプリケーション４４との通信路を確立して通信を行う。また、通信引継部４６ｂは、プラットフォームの切り替えが行われて、確立した通信路が破棄された場合に、その通信路を再確立するための処理を行う。
【００４３】
通信状態維持部４６ａの通信状態を維持する機能と通信引継部４６ｂの通信路を引き継ぐ機能は、例えばリバースプロキシを用いて実現することができる。ここでリバースプロキシとは、通常のプロキシ（プロキシの内側のクライアントからのリクエストを集約して外側のサーバへ代理通信するプロキシ）とは異なり、プロキシの外側のクライアントからのリクエストを集約して内側のサーバへ代理通信するプロキシである。例えば、通信中継部４６が、ＨＴＴＰ（HyperText Transfer Protocol）のリバースプロキシにより実現されている場合には、ＴＣＰ（Transmission Control Protocol）のシーケンス番号、通信中継部４６及び監視装置３０の各々が通信路に割り当てるＩＰアドレス、ポート番号等を保存することで、アプリケーション４４と監視装置３０との間のステートフルな通信路の状態を維持することができる。
【００４４】
〈コントローラ２０ｂ〉
コントローラ２０ｂは、コントローラ２０ａと同様に、ＭＰＵやメモリ等からなるハードウェアＨＷ２を備えており、インストールされたプログラムがハードウェアＨＷ２によって実行されることによってコントローラ２０ｂの機能が実現される。尚、図１中の実デバイスＲＤ２１，ＲＤ２２は、ＮＩＣやＩ／Ｏモジュール等の通信デバイスであり、実デバイスＲＤ２１はフィールドネットワークＮ１に接続されており、実デバイスＲＤ２２は制御ネットワークＮ２に接続されている。
【００４５】
ここで、コントローラ２０ｂには、ハイパーバイザ５１（仮想化部）を実現するプログラム、静的オペレーティングシステム５２（第１オペレーティングシステム）、及び復元部５３を実現するプログラムがインストールされている。上記のハイパーバイザ５１は、コントローラ２０ａのハイパーバイザ４１と同様に、仮想マシーンＶＭ２１，ＶＭ２２（仮想化部）を並列動作させる。
【００４６】
また、ハイパーバイザ５１は、コントローラ２０ａのハイパーバイザ４１と協働して、ライブマイグレーションを実施し、コントローラ２０ａで動作する仮想マシーンＶＭ１２を仮想マシーンＶＭ２２として移行する。つまり、コントローラ２０ａのオペレーティングシステム４５及び通信中継部４６を、アプリケーション４４と監視装置３０との間の通信を引き継ぎながら移行する。
【００４７】
仮想マシーンＶＭ２１は、静的オペレーティングシステム５２及び復元部５３が動作する仮想的なハードウェアである。この仮想マシーンＶＭ２１は、実デバイスＲＤ２１に対応する仮想デバイスＶＤ２１を備える。また、仮想マシーンＶＭ２２は、ライブマイグレーションによってコントローラ１０ａから移行されたオペレーティングシステム４５及び通信中継部４６が動作する仮想的なハードウェアである。この仮想マシーンＶＭ２２は、実デバイスＲＤ２２に対応する仮想デバイスＶＤ２２を備える。
【００４８】
また、図１に示す通り、ハイパーバイザ５１は、通信部５１ａを備える。この通信部５１ａは、コントローラ２０ａのハイパーバイザ４１が備える通信部４１ａと同様のものであり、仮想マシーンＶＭ２１と仮想マシーンＶＭ２２との間の通信を実現する。尚、第１実施形態の説明では、コントローラ２０ｂにおいて、仮想マシーンＶＭ２２のライブマイグレーションを行わない。このため、図１において、コントローラ２０ａのハイパーバイザ４１が備えるＶＭ移行指示受信部４１ｂに相当する構成の図示を省略している。
【００４９】
静的オペレーティングシステム５２は、仮想マシーンＶＭ２１上で動作し、復元部５３及び復元されるアプリケーション４４の動作環境の提供及びＯＳリソースオブジェクトの管理を行う。この静的オペレーティングシステム５２は、コントローラ２０ａの静的オペレーティングシステム４２と同様に、初期化部５２ａを備えており、図２に示す状態遷移を行う。
【００５０】
復元部５３は、コントローラ２０ａで動作しているアプリケーション４４をコントローラ２０ｂに復元する。具体的に、復元部５３は、コントローラ２０ａの保存部４３で得られたスナップショットを用いて、アプリケーション４４をコントローラ２０ｂの静的オペレーティングシステム５２上に復元する。図３に示す通り、復元部５３は、スナップショット受信部５３ａ及びアプリケーション復元部５３ｂを備える。
【００５１】
スナップショット受信部５３ａは、保存部４３のスナップショット送信部４３ｃから送信されてくるスナップショットを受信する。尚、このスナップショット受信部５３ａは、保存部４３からのスナップショットを受信できればよく、保存部４３のスナップショット送信部４３ｃと同様に、必ずしも復元部５３内に設けられている必要はない。アプリケーション復元部５３ｂは、スナップショット受信部５３ａで受信されたスナップショットを用いて、静的オペレーティングシステム５２上にアプリケーション４４を復元する。
【００５２】
〈コントローラの切り替え方法〉
次に、コントローラ２０の切り替え方法（更新方法）について説明する。尚、以下では、既に動作状態にあって工業プロセスの制御に係る定周期処理を行っているコントローラ２０ａをコントローラ２０ｂに切り替える方法を例に挙げて説明する。ここで、コントローラ２０ａの静的オペレーティングシステム４２には、予めコンフィグレータを用いて、以下のＯＳリソースオブジェクトが割り当てられているものとする。
【００５３】
・保存部４３やアプリケーション４４を実現するタスクの個数、依存関係
・個々のタスクが使用するメモリ領域等の割当量
・個々のタスクが使用するタスク間で共有するリソースの種類と個数
リソースの種類の例：排他処理を実現するロック、セマフォ等、プロセス間通信を実現するメールボックス、共有メモリ等
・静的オペレーティングシステム４２が確立するネットワーク接続リソースの個数と、ネットワーク接続設定
【００５４】
上記のネットワーク接続設定は、静的オペレーティングシステム４２がネットワーク接続を受け付けるためにネットワーク接続のＯＳリソースオブジェクトに対して行う設定である。例えば、トランスポート層の通信プロトコルにＴＣＰやＵＤＰ（User Datagram Protocol）を使用する場合には、以下の設定項目が存在する。
・通信路の識別子（ソケットディスクリプタ）
・通信路の確立方法
方法の例：connect（能動的に接続を行う）、listen（受動的に接続されるのを待つ）
・接続を受け付け、通信に使用するポート番号
・通信に使用するトランスポート層のプロトコル
プロトコルの例：ＴＣＰ、ＵＤＰ
尚、コントローラ２０ａのアプリケーション４４と監視装置３０との間には、通信中継部４６を介したステートフルな通信路が確保されているものとする。
【００５５】
コントローラ２０ａをコントローラ２０ｂに切り替えるに当たり、まず新たなコントローラ２０ｂに対する設定作業が行われる。具体的には、コントローラ２０ｂで仮想マシーンＶＭ２１，ＶＭ２２を動作させるための設定作業、及び静的オペレーティングシステム５２におけるＯＳ初期化済状態ＳＴ２の設定作業が行われる。
【００５６】
前者の設定作業では、例えばハードウェア資源の割り当て、実デバイスＲＤ２１，ＲＤ２２と仮想デバイスＶＤ２１，ＶＤ２２との対応付け等を設定する作業が行われる。また、後者の設定作業では、例えばコンフィグレータを用いてＯＳリソースオブジェクトを割り当てることによりＯＳ初期化済状態ＳＴ２を設定する作業が行われる。具体的に、後者の設定作業では、コントローラ２０ａの静的オペレーティングシステム４２に対して割り当てられているＯＳリソースオブジェクトを包含するＯＳリソースオブジェクトを、コントローラ２０ｂの静的オペレーティングシステム５２に割り当てる作業が行われる。
【００５７】
次に、以上の設定を終えたコントローラ２０ｂを現場に設置してフィールドネットワークＮ１及び制御ネットワークＮ２に接続する作業が行われる。かかる作業が終了し、コントローラ２０ｂの電源を投入すると、コントローラ２０ｂの初期化処理が行われる。この初期化処理が開始されると、まずハイパーバイザ５１が起動され、起動されたハイパーバイザ５１が仮想マシーンＶＭ２１を動作させて、静的オペレーティングシステム５２をロードする処理が行われる。次いで、上述した作業によって設定された内容に従ってＯＳリソースオブジェクトを初期化する処理及びネットワークを設定する処理が、静的オペレーティングシステム５２によって行われる。
【００５８】
続いて、初期化部５２ａが実行する初期化処理がステートフルな通信路の確立の待ち状態になる。以上の処理が終了すると、初期化部５２ａは、復元部５３を起動させる。復元部５３が起動すると、スナップショット受信部５３ａ（図３参照）は、スナップショットの受信待ち状態になり、ハイパーバイザ５１は、ライブマイグレーションの実行待ち状態になる。
【００５９】
以上の待ち状態になった後に、不図示の指示装置からコントローラ２０ａに対して切替指示（コントローラ２０ａをコントローラ２０ｂに切り替える指示）が送信されるとコントローラ２０の切り替え処理が行われる。指示装置は、例えば制御ネットワークＮ２に接続され、制御動作の継続と無関係な通信を用いてコントローラ２０へ指示を行えるエンジニアリングワークステーションである。尚、監視装置３０がステートフルな通信路とは別に、制御動作の継続と無関係な通信を行えるのであれば、監視装置３０が指示装置の機能を兼ね備えてもよい。図４は、本発明の第１実施形態におけるコントローラの切り替え方法を示すフローチャートである。尚、図４に示すフローチャートの処理は、コントローラ２０ａの保存部４３に設けられた切替指示伝達部４３ａ（図３参照）が、不図示の指示装置から送信されてきた切替指示を受信することによって開始される。
【００６０】
処理が開始されると、まず切替指示伝達部４３ａからスナップショット保存部４３ｂに切替指示が出力される。これにより、保存タイミング検知部ＤＴでは、アプリケーション４４に設けられた定周期処理部４４ａで行われる１回分の定周期処理の終了タイミングを検知する処理が開始される（ステップＳ１１）。次に、１回分の定周期処理の終了タイミングが保存タイミング検知部ＤＴで検知されたか否か（つまり、静的オペレーティングシステム４２がＯＳリソースオブジェクト使用中状態ＳＴ３からＯＳ初期化済状態ＳＴ２に遷移したか否か）がスナップショット保存部４３ｂで判断される（ステップＳ１２）。
【００６１】
１回分の定周期処理の終了タイミングが検知されていないと判断した場合（ステップＳ１２の判断結果が「ＮＯ」の場合）には、ステップＳ１２の処理が繰り返される。これに対し、１回分の定周期処理の終了タイミングが検知されたと判断した場合（ステップＳ１２の判断結果が「ＹＥＳ」の場合）には、コントローラ２０ａで動作しているアプリケーション４４をコントローラ２０ｂに復元するために必要となる情報（スナップショット）を生成して保存する処理がスナップショット保存部４３ｂで行われる（ステップＳ１３：第１ステップ）。続いて、保存部４３からハイパーバイザ４１のＶＭ移行指示受信部４１ｂに対して、通信中継部４６が動作する仮想マシーンＶＭ１２のライブマイグレーションを実施する指示がなされる（ステップＳ１４）。
【００６２】
そして、スナップショット保存部４３ｂに保存されたスナップショットを転送する処理が行われる（ステップＳ１５）。具体的に、コントローラ２０ａでは、スナップショット保存部４３ｂに保存されたスナップショットがスナップショット送信部４３ｃに読み出されてコントローラ２０ｂの復元部５３に向けて送信する処理が行われる。また、コントローラ２０ｂでは、コントローラ２０ａのスナップショット送信部４３ｃから送信されてきたスナップショットを復元部５３のスナップショット受信部５３ａが受信してアプリケーション復元部５３ｂに出力する処理が行われる。スナップショットの転送が完了すると、コントローラ２０ａにおいて、アプリケーション４４を停止する処理が行われる（ステップＳ１６）。
【００６３】
また、以上の処理と並行して、ライブマイグレーションを指示された、コントローラ２０ａのハイパーバイザ４１がコントローラ２０ｂのハイパーバイザ５１に対して、ライブマイグレーションを実施する。具体的には、コントローラ２０ａで動作する仮想マシーンＶＭ１２が、コントローラ２０ｂで動作する仮想マシーンＶＭ２２として継続動作するように、ハイパーバイザ４１，５１がライブマイグレーションを実施する。このようなライブマイグレーションが実施されることにより、コントローラ２０ａで動作している通信中継部４６はコントローラ２０ｂに移行される（ステップＳ１７：第３ステップ）。
【００６４】
ここで、コントローラ２０ａで動作していた通信中継部４６は、通信状態が維持されたままコントローラ２０ｂに引き継がれるため、通信状態維持部４６ａと監視装置３０との間で確立されていたステートフルな通信路が切断されることはない。以上のライブマイグレーションが完了すると、コントローラ２０ａにおいて、通信中継部４６を停止する処理が行われる（ステップＳ１８）。
【００６５】
以上の処理が終了すると、コントローラ２０ｂに復元されるアプリケーション４４と監視装置３０との間のステートフルな通信を再確立する処理が、コントローラ２０ｂに移行された通信中継部４６で行われる（ステップＳ１９）。具体的には、コントローラ２０ｂに移行された通信中継部４６の通信引継部４６ｂが、コントローラ２０ｂに復元されるアプリケーション４４との間の通信路を改めて確立する処理を行う。
【００６６】
より具体的には、通信引継部４６ｂが、予め規定されたネットワーク接続設定に従い、通信路の確立待ちで待機している静的オペレーティングシステム５２のポートへ接続する処理を行う。尚、通信引継部４６ｂが接続を行う上記のポートは、既に監視装置３０との間で確立されている通信路のポートと同じ番号のポートである。かかる処理が行われると、静的オペレーティングシステム５２の初期化部５２ａは、通信引継部４６ｂからの接続を受け付け、コントローラ２０ｂに復元されるアプリケーション４４との間の通信路を確立する。尚、確立された通信路の識別子は、上記のネットワーク接続設定により固定で割り当てられるため、コントローラ２０ｂに復元されるアプリケーション４４が有する通信路の識別子の更新は不要である。
【００６７】
以上の通信路の確立により、静的オペレーティングシステム５２がＯＳ初期化済状態ＳＴ２に遷移し、初期化部５２ａの初期化処理が完了する。初期化処理が完了すると、コントローラ２０ｂにおいて、スナップショットを展開し、コントローラ２０ａで動作していたアプリケーション４４を復元する処理が行われる（ステップＳ２０：第２ステップ）。具体的には、コントローラ２０ｂに設けられた復元部５３のアプリケーション復元部５３ｂが、アプリケーション４４の状態を復元するために、静的オペレーティングシステム５２上のメモリ領域にスナップショットの内容を反映させる。これにより、コントローラ２０ａで動作していたアプリケーション４４の状態が反映され、定周期処理部４４ａが復元される。
【００６８】
尚、スナップショットを生成して保存する処理（ステップＳ１３：第１ステップ）の開始から、スナップショットを展開して復元する処理（ステップＳ２０：第２ステップ）の終了までの一連の流れに、静的オペレーティングシステム４２の状態を静的オペレーティングシステム５２に引き継ぐ処理は不要である。かかる一連の流れの間、静的オペレーティングシステム４２、５２の状態は、共に同じＯＳ初期化済状態ＳＴ２のまま変化しないためである。
【００６９】
静的オペレーティングシステム５２上にアプリケーション４４が復元されると、アプリケーション４４の定周期処理部４４ａは、次に１回分の定周期処理を開始するタイミングで自動的に動作を再開する。このようにして、アプリケーション４４の動作を継続させつつコントローラ２０ａがコントローラ２０ｂに切り替えられる。
【００７０】
図５は、本発明の第１実施形態においてコントローラの切り替え後のプロセス制御システムを示すブロック図である。尚、図５においては、図１に示すブロックと同じブロックについては同一の符号を付してある。図５に示す通り、コントローラの切り替えが完了すると、コントローラ２０ａは、ハードウェアＨＷ１上でハイパーバイザ４１が動作しているものの、ハイパーバイザ４１上で動作する仮想マシーンが無くなった状態になる。これは、図４中のステップＳ１６の処理でコントローラ２０ａのアプリケーション４４が停止され、ステップＳ１８の処理でコントローラ２０ａの通信中継部４６が停止されているためである。
【００７１】
これに対し、コントローラ２０ｂは、静的オペレーティングシステム５２上でアプリケーション４４が動作するとともに、コントローラ２０ａで動作していた仮想マシーンＶＭ１２が仮想マシーンＶＭ２２として動作する状態になる。ここで、前述した通り、アプリケーション４４は、動作が継続するようにコントローラ２０ｂに復元され、且つ監視装置３０との間のステートフルな通信路が切断されることもない。このように、本実施形態では、アプリケーション４４の動作を継続させつつ、且つ通信路を維持しつつコントローラ２０の切り替えを行うことができる。
【００７２】
〔第２実施形態〕
〈プロセス制御システム〉
図６は、本発明の第２実施形態によるプロセス制御装置が用いられるプロセス制御システムの要部構成を示すブロック図である。尚、図６においては、図１に示すブロックと同じブロックについては同一の符号を付してある。図６に示す通り、プロセス制御システム２は、図１に示すプロセス制御システム１のコントローラ２０ａ，２０ｂを、動的オペレーティングシステムを用いるコントローラ２０ｃ，２０ｄにそれぞれ代えた構成である。
【００７３】
ここで、動的オペレーティングシステムとは、ＯＳリソースオブジェクトをアプリケーション実行時に都度割り当て可能なオペレーティングシステムである。ＯＳリソースオブジェクトの割り当てはアプリケーションが決定するため、静的オペレーティングシステムで行っていた、コンフィグレータによるＯＳリソースオブジェクトの事前割り当ては行えない。
【００７４】
〈コントローラ２０ｃ〉
コントローラ２０ｃは、図１に示すコントローラ２０ａの静的オペレーティングシステム４２、アプリケーション４４、及び通信中継部４６を、それぞれ動的オペレーティングシステム６１、アプリケーション６３、及び通信中継部６４に代えるとともに、新たにミドルウェア６２を設けた構成である。アプリケーション６３の初期化部６３ｂは、仮想マシーンＶＭ１１上で動作する動的オペレーティングシステム６１に対し、動作に必要となるＯＳリソースオブジェクトの割り当てを指示する。この動的オペレーティングシステム６１は、静的オペレーティングシステム４２とはＯＳリソースオブジェクトの割り当て方が異なるものの、静的オペレーティングシステム４２と同様に状態が遷移する（図３参照）。
【００７５】
ミドルウェア６２は、動的オペレーティングシステム６１とアプリケーション６３との間に実装され、アプリケーション６３が行う通信路の確立を代理で行う。また、ミドルウェア６２は、通信路を確立した場合には、アプリケーション６３が行う通信を変換して通信中継部６４を経由させる処理を行う。尚、ミドルウェア６２は、例えばｓｏｃｋｅｔ通信ライブラリのラッパーとして実現される。
【００７６】
アプリケーション６３は、ミドルウェア６２を介して動的オペレーティングシステム６１上で動作し、図１に示すアプリケーション４４と同様に、工業プロセスの制御を行う上で必要なフィールド機器１０の制御を行う。このアプリケーション６３は、定周期処理部６３ａ及び初期化部６３ｂを備える。
【００７７】
初期化部６３ｂは、図１に示す静的オペレーティングシステム４２の初期化部４２ａと同様の初期化処理を行って、動的オペレーティングシステム６１を初期化する。この初期化部６３ｂは、動的オペレーティングシステム６１上で動作するため、アプリケーション６３側でＯＳリソースオブジェクトを動的に生成して初期化することが可能になる。また、初期化部６３ｂは、アプリケーション６３の一部となることで、初期化時にミドルウェア６２の機能を利用することが可能になる。
【００７８】
定周期処理部６３ａは、図１に示すアプリケーション４４の定周期処理部４４ａが行う定周期処理と同様の定周期処理を行う。但し、１回分の定周期処理の末尾で、動的オペレーティングシステム６１を、初期化部６３ｂの初期化処理が行われた直後と等しい状態、すなわちＯＳ初期化済状態ＳＴ２に戻す必要がある。具体的には、定周期処理中に作成されたＯＳリソースオブジェクトがあれば全て破棄した上、状態が変更されたＯＳリソースオブジェクトを初期化処理が行われた直後の状態に戻す。
【００７９】
通信中継部６４は、図１に示す通信中継部４６と同様に、オペレーティングシステム４５上で動作し、アプリケーション６３と監視装置３０との間のステートフルな通信路の状態を維持しながらアプリケーション６３と監視装置３０との間で行われる通信を中継する。この通信中継部６４は、通信状態維持部６４ａ及び通信引継部６４ｂを備える。これら通信状態維持部６４ａ及び通信引継部６４ｂは、図１に示す通信中継部４６が備える通信状態維持部４６ａ及び通信引継部４６ｂとそれぞれ同様のものである。
【００８０】
但し、通信引継部６４ｂは、第１、第２ディスクリプタを対応付けた情報を格納するデータベースＤＢを備える。データベースＤＢは初期化部６３ｂの初期化処理に伴って生成され（後述）、アプリケーション６３と監視装置３０間の通信の中継や通信路を改めて確立する処理に用いる。ここで、第１ディスクリプタはアプリケーション６３との間で確立された通信路のアプリケーション６３上の識別子であり、第２ディスクリプタは監視装置３０との間で確立されたステートフルな通信路の通信状態維持部６４ａ上の識別子である。データベースＤＢを生成する理由は、通信路の両端の情報が初期化部６３ｂの内部で動的に決定されるにもかかわらず、初期化部６３ｂを再動作させられない（後述）ので、初期化部６３ｂの外部の機能が、通信路の両端の情報の代わりに第１、第２ディスクリプタの対応を用いて、通信の中継や再確立を実施するためである。
【００８１】
図７は、本発明の第２実施形態で用いられるデータベースの内容の一例を示す図である。尚、図７に例示するデータベースは、通信路の識別子がｓｏｃｋｅｔディスクリプタである場合のものである。図７に示す通り、データベースＤＢには、第１ディスクリプタと第２ディスクリプタとが対応付けられた情報がエントリ毎に格納されている。
【００８２】
初期化部６３ｂの初期化処理で通信路の確立が指示されると、通信引継部６４ｂはデータベースＤＢのエントリを生成する。例えば、初期化処理において、監視装置３０との通信路の確立を試みると、ミドルウェア６２はアプリケーション６３に対して、第１ディスクリプタを返すと共に、通信引継部６４ｂに対して、第１ディスクリプタを送信する。通信引継部６４ｂは、通信状態維持部６４ａに監視装置３０と通信を行うための通信路の確立を依頼し、第２ディスクリプタを受け取る。そして、通信引継部６４ｂは、得られた第１、第２ディスクリプタを対応付け、データベースＤＢへ格納する。尚、アプリケーション６３は得られた第１ディスクリプタをメモリ領域に保持する。このとき、ミドルウェア７２と通信引継部６４ｂ間には、通信部４１ａを用いて、通信データと第１、第２ディスクリプタの情報をやり取りできる任意の通信路をあらかじめ確立しておく。
【００８３】
〈コントローラ２０ｄ〉
コントローラ２０ｄは、図１に示すコントローラ２０ｂの静的オペレーティングシステム５２を動的オペレーティングシステム７１に代えて、新たにミドルウェア７２を設けた構成である。動的オペレーティングシステム７１は、仮想マシーンＶＭ２１上で動作し、
復元部５３及び復元されるアプリケーション６３を動作させるために必要となるＯＳリソースオブジェクトを都度生成して割り当てる。この動的オペレーティングシステム７１は、静的オペレーティングシステム５２とはＯＳリソースオブジェクトの割り当て方が異なるものの、静的オペレーティングシステム５２と同様に状態が遷移する（図３参照）。尚、動的オペレーティングシステム７１は、コントローラ２０ｄが起動されると、自動的に初期化される。
【００８４】
ミドルウェア７２は、動的オペレーティングシステム７１と復元されるアプリケーション６３との間に実装され、復元されるアプリケーション６３が行う通信路の確立を代理で行う。また、ミドルウェア７２は、ミドルウェア６２と同様に、通信路を確立した場合には、復元したアプリケーション６３が行う通信を変換して通信中継部６４を経由させる処理を行う。
【００８５】
〈コントローラの切り替え方法〉
コントローラ２０ｃからコントローラ２０ｄへの切り替え手順は、基本的には第１実施形態で説明したコントローラ２０ａからコントローラ２０ｂへの切り替え手順と同様である。つまり、新たなコントローラ２０ｄに対する設定作業と、コントローラ２０ｄを現場に設置してフィールドネットワークＮ１及び制御ネットワークＮ２に接続する作業とを順に行う。そして、コントローラ２０ｄの電源を投入した後に、不図示の指示装置からコントローラ２０ｃに対して切替指示（コントローラ２０ｃをコントローラ２０ｄに切り替える指示）が送信されることによってコントローラ２０の切り替え処理が行われる。尚、コントローラ２０の切り替え処理は、基本的には図４に示すフローチャートに従って行われるため、ここでは詳細な説明を省略する。
【００８６】
尚、通信の継続は、ミドルウェア７２とＶＭ２２に移動した通信引継部６４ｂが通信の引き継ぎを行って実現する。アプリケーション６３の復元後に初期化部６３ｂを動作させると、復元したアプリケーション６３の状態が再初期化されてしまうため、第１実施形態で示した、初期化部の動作による通信の引き継ぎは行えない。
【００８７】
通信の引き継ぎは、ミドルウェア７２や通信引継部６４ｂがデータベースＤＢのエントリを参照して行う。データベースＤＢのエントリには第１、第２ディスクリプタの対応が記述されているため、ミドルウェア７２がＶＭ２１に移動したアプリケーション６３上の第１ディスクリプタに対して、通信引継部６４ｂが通信状態維持部６４ａ上の第２ディスクリプタに対して、ディスクリプタに対応する通信を中継すれば、通信の引き継ぎが行える。このとき、ミドルウェア７２と通信引継部６４ｂ間には、通信部５１ａを用いて、通信データと第１、第２ディスクリプタの情報をやり取りできる任意の通信路をあらかじめ再確立しておけばよい。
【００８８】
尚、コントローラの切り替えが行われても、データベースＤＢのエントリは更新なしで通信の引き継ぎに利用できる。第２ディスクリプタは通信状態維持部６４ａで維持され、第１ディスクリプタはアプリケーション６３のメモリ領域で保持されるため、切り替えが行われても、第１、第２ディスクリプタはそのまま切り替え先に引き継がれるためである。
【００８９】
〔第３実施形態〕
図８は、本発明の第３実施形態によるプロセス制御装置が用いられるプロセス制御システムの要部構成を示すブロック図である。尚、図８においては、図１に示すブロックと同じブロックについては同一の符号を付してある。図８に示す通り、プロセス制御システム３は、図１に示すプロセス制御システム１のコントローラ２０ａ，２０ｂに代えて、コントローラ２０ｅを設けた構成である。
【００９０】
上述した第１，第２実施形態は、コントローラ２０ａ，２０ｃで動作するアプリケーション４４，６３及び通信中継部４６，６４を、別のコントローラ２０ｂ，２０ｄにそれぞれ移行するものであった。これに対し、本実施形態は、コントローラ２０ｅの内部でアプリケーション４４を移行するものである。
【００９１】
図８に示す通り、コントローラ２０ｅは、いわば図１に示すコントローラ２０ａ，２０ｂのハードウェアＨＷ１，ＨＷ２をハードウェアＨＷとしてまとめるとともに、ハイパーバイザ４１，５１をハイパーバイザＨＶとして１つにまとめた構成である。そして、ハイパーバイザＨＶ上で仮想マシーンＶＭ１１，ＶＭ１２，ＶＭ２１を動作させるようにしたものである。
【００９２】
かかる構成のコントローラ２０ｅでは、上述した第１実施形態と同様の処理によって静的オペレーティングシステム４２上で動作しているアプリケーション４４を、静的オペレーティングシステム５２上に復元するこことができる。尚、アプリケーション４４が復元される前後において、通信中継部４６の動作は継続されるため、通信中継部４６を移行する必要はない。このようなコントローラ２０ｅは、例えば静的オペレーティイングシステムをバーションアップ等により更新する場合に有用である。尚、本実施形態は、図６に示すコントローラ２０ｃ，２０ｄのように、動的オペレーティングシステムを用いるコントローラにも適用することができる。
【００９３】
〔その他の実施形態〕
上述した第１，第２実施形態を組み合わせて、図１に示す静的オペレーティングシステム４２の初期化部４２ａを、アプリケーション４４内に設けるようにしても良い。尚、静的オペレーティングシステム５２の初期化部５２ａは、復元されたアプリケーション４４内に設けられることになる。このような構成にすることで、ステートフルな通信路の確立を、アプリケーション４４内に設けられた初期化部４２ａ（復元されたアプリケーション４４内に設けられた初期化部５２ａ）で行うことが可能になる。これにより、省メモリ及び短時間でアプリケーション４４を動作させることができる静的オペレーティングシステムの利点を生かしつつ、動的に通信路を確立することができる。
【００９４】
以上、本発明の実施形態によるプロセス制御装置及びその更新方法について説明したが、本発明は上述した実施形態に制限されることなく、本発明の範囲内で自由に変更が可能である。例えば、上記実施形態では、複数のオペレーティングシステムやアプリケーションを動作させ得る仮想環境をハイパーバイザによって実現する例について説明したが、このような仮想環境を実現する手段はハイパーバイザに限られるものではない。例えば、上記の仮想環境をハードウェアによって実現しても良い。
【００９５】
また、上述した実施形態では、フィールド機器１０がフィールドネットワークＮ１を介したディジタル通信が可能なものを例に挙げて説明したが、アナログ信号の入出力を行うフィールド機器を用いることもできる。このようなフィールド機器を用いる場合には、フィールド機器で入出力される信号（アナログ信号）とフィールドネットワークＮ１を介して通信される信号（ディジタル信号）との変換を行うＩＯノードをフィールドネットワークＮ１に接続し、このＩＯノードとフィールド機器とをアナログ伝送路（例えば、「４〜２０ｍＡ」信号の伝送に使用される伝送線）で接続すれば良い。
【００９６】
また、上述した実施形態では、説明を容易にするため、フィールドネットワークＮ１の通信はステートレスな通信路で行われ、通信状態の維持が不要な構成で説明を行ったが、フィールドネットワークＮ１でもステートフルな通信路を用いてもよい。この場合、通信中継部４６がフィールドネットワークＮ１についても通信状態を維持すればよい。
【符号の説明】
【００９７】
２０              コントローラ
２０ａ〜２０ｅ    コントローラ
３０              監視装置
４１，５１        ハイパーバイザ
４２，５２        静的オペレーティングシステム
４３              保存部
４４              アプリケーション
４５              オペレーティングシステム
４６              通信中継部
５３              復元部
６１，７１        動的オペレーティングシステム
６２，７２        ミドルウェア
６３              アプリケーション
６４              通信中継部
ＨＶ              ハイパーバイザ
ＨＷ              ハードウェア
ＨＷ１，ＨＷ２    ハードウェア
ＳＴ２            ＯＳ初期化済状態
ＳＴ３            ＯＳリソースオブジェクト使用中状態
ＶＭ１１          仮想マシーン
ＶＭ１２          仮想マシーン
ＶＭ２１          仮想マシーン
ＶＭ２２          仮想マシーン
【図１】
0006020476.tif 000002
【図２】
0006020476.tif 000003
【図３】
0006020476.tif 000004
【図４】
0006020476.tif 000005
【図５】
0006020476.tif 000006
【図６】
0006020476.tif 000007
【図７】
0006020476.tif 000008
【図８】
0006020476.tif 000009