(57)【要約】【課題】コンポジット機能ブロックの内部構造の秘匿性を維持したまま、コンポジット機能ブロックの周囲の機能ブロックに異常の発生が確実に伝わるようにする。【解決手段】機能ブロック３１の状態管理を行うコンポジット機能ブロック管理部２５と、コンポジット機能ブロックの構成ブロックが示された構成機能ブロックリスト６１と、コンポジット機能ブロックの公開連携インターフェースが示された公開連携インターフェースリスト７１とを備え、コンポジット機能ブロック管理部２５は、自己が配置されている機器１０ｍ内で機能ブロック３１に異常が検知された場合に、構成機能ブロックリスト６１に基づき異常が発生したコンポジットプログラム部品を特定し、公開連携インターフェースリスト７１に基づき異常が発生したコンポジット機能ブロックの公開インターフェースに異常発生用の動作要求を行う。【選択図】図１
2010146050.tif 000002
【特許請求の範囲】
【請求項１】
コンポジットプログラム部品を構成する各プログラム部品と、個々のプログラム部品とを複数の機器に分散配置してなる分散環境、ならびに、該分散環境の構築支援を行う構築支援装置を含んだ分散システムにおいて、
前記機器に配置され前記コンポジットプログラム部品の状態管理と動作制御とを行うコンポジット部品管理部と、
前記機器に配置されるとともに前記コンポジットプログラム部品を構成しているプログラム部品の情報が示された構成情報リストと、
前記構築支援装置に設けられコンポジットプログラム定義情報から前記構成情報リストを作成するリスト作成手段と、
を備え、
前記コンポジット部品管理部は、
自己が配置されている機器内でプログラム部品に異常が検知された場合に、前記構成情報リストに基づき、異常の検知されたプログラム部品が何れかのコンポジットプログラム部品に含まれているか判別し、含まれている場合に、当該コンポジットプログラム部品に属されかつ当該コンポジットプログラム部品以外のプログラム部品とデータをやり取りしている開放インターフェースを指定して異常発生用の動作を行わせることを特徴とする分散システム。
【請求項２】
前記構成情報リストは、
前記コンポジットプログラム部品を構成する各プログラム部品をそれぞれ識別可能とする情報が登録されたコンポジット部品リストと、
前記コンポジットプログラム部品に属される前記開放インターフェースをそれぞれ識別可能とする情報が登録された開放インターフェースリストと、
を含み、
前記リスト作成手段は、個々のコンポジットプログラム部品ごとに、前記コンポジット部品リストと前記開放インターフェースリストとを作成する構成であることを特徴とする請求項１記載の分散システム。
【請求項３】
前記コンポジット部品管理部は、
前記コンポジット部品リストに基づき、異常と検知されたプログラム部品を含んだコンポジットプログラム部品を検索し、当該コンポジットプログラム部品を特定する特定機能と、
前記開放インターフェースリストに基づき、前記特定機能により特定されたコンポジットプログラム部品に属される前記開放インターフェースを指定して異常発生用の動作を行わせる動作要求機能と、
を備えていることを特徴とする請求項２記載の分散システム。
【請求項４】
前記構成情報リストは、
前記コンポジットプログラム部品に属される前記開放インターフェースの各々がどの機器に配置されているかを示す配置情報を含み、
前記コンポジット部品管理部は、
他の機器に配置された別のコンポジット部品管理部と通信ネットワークを介して通信する通信機能と、
前記配置情報に基づき異常と判別されたコンポジットプログラム部品に属される開放インターフェースの何れかが他の機器に配置されているか否かを判別する判別機能と、
該判別機能により他の機器に配置されていると判別された場合に、前記配置情報に基づき前記通信機能を用いて当該他の機器のコンポジット部品管理部に操作要求を送信する操作要求送信機能と、
他の機器のコンポジット部品管理部から前記操作要求を受信した場合に、当該操作要求に応じたコンポジットプログラム部品の開放インターフェースに異常発生用の動作を行わせる動作要求代行機能と、
を備えていることを特徴とする請求項１記載の分散システム。
【請求項５】
分散環境の構築支援を行うコンピュータに、
コンポジットプログラム部品の構成情報が表わされたコンポジットプログラム定義情報を読み込ませる機能と、
前記コンポジットプログラム定義情報から、当該コンポジットプログラム部品を構成する各プログラム部品の識別情報、および、当該コンポジットプログラム部品に属されかつ他のプログラム部品とデータをやり取りする各開放インターフェースの識別情報を含んだ構成情報リストを作成する機能と、
を実現させるプログラム。
【請求項６】
プログラム部品が配置されて分散環境を実現する複数の機器の制御用コンピュータによって実行されるプログラムであって、
前記機器の制御用コンピュータに、
機器内のプログラム部品に異常が検知された場合に、前記制御用コンピュータの記憶部に格納されたコンポジットプログラム部品の構成情報リストから、異常が発生したプログラム部品を含んだコンポジットプログラム部品を検索して、当該コンポジットプログラム部品を特定する特定機能と、
前記制御用コンピュータの記憶部に格納されたコンポジットプログラム部品の構成情報リストから、前記特定機能により特定されたコンポジットプログラム部品に属されかつ当該コンポジットプログラム部品以外のプログラム部品とデータのやり取りを行っている開放インターフェースを指定し、当該開放インターフェースに異常発生用の動作を行わせる動作要求機能と、
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム部品を複数の機器に配置してなる分散環境とこの分散環境の構築支援を行う構築支援装置とを含んだ分散システム、ならびに、この分散システムに拡張機能を付加するためのプログラムに関する。
【背景技術】
【０００２】
複数のプログラム部品を、ネットワーク接続された複数の機器のコントローラなどに配置して、各プログラム部品同士を連携させて動作させることで、複数の機器を統括的に稼動させる分散システムがある。このようなシステムは、例えば、工場生産設備において各種の駆動装置（例えばヒータの駆動スイッチ、流量を調整するバルブ駆動装置、ロボットアームの駆動装置など）を稼動制御したり、各種の測定器（例えば温度計、湿度計、圧力計など）から稼動情報を取得したりするのに利用される。
【０００３】
このような分散システムの構築過程では、例えば、ソフトウェア開発者が再利用性の高いプログラム部品を機能ブロックとして作成・提供し、システム構築者が、提供された複数の機能ブロックをシステムに合わせて組み合わせたり、各機能ブロックの動作パラメータの設定等を行ったりすることで、分散システムの全体設計がなされる。
【０００４】
また、他のソフトウェア開発者が、既存の機能ブロックを組み合わせて複雑な機能を実現させるコンポジット機能ブロック（コンポジットプログラム部品）を作成・提供する一方、システム構築者が、このコンポジット機能ブロックを併用して分散システムの全体設計を行うこともある（例えば特許文献１）。
【０００５】
コンポジット機能ブロックは、ソフトウェア開発者が作成してシステム構築者に提供されるという取引形態が想定される。この場合、ソフトウェア開発者のノウハウを保護するために、コンポジット機能ブロックの内部構造はシステム構築者に対して隠蔽された状態にされ、システム構築者に開示されるのは、コンポジット機能ブロックを外部の機能ブロックと連携させるためのインターフェースのみとされる。
【特許文献１】特開２００６−３５０５８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
次に、分散システムの一部の具体的な構成例を参照しながら課題について説明する。図２には、分散システムの一部を構成するアプリケーション構成例を示す。このアプリケーション構成は、計測器から現場データを取得してデータベースへ保存するもので、現場データ取得機能ブロック３１Ｇと、現場データを演算加工により適切なデータ形式に変換して出力するコンポジット機能ブロック３０１Ａと、渡されたデータをデータベースに書き込む機能ブロック３１Ａ，３１Ｂとからなるものである。
【０００７】
上記のコンポジット機能ブロック３０１Ａは、現場データを演算加工する演算機能ブロック３１Ｆと、演算加工されたデータをバッファするバッファ機能ブロック３１Ｅと、バッファされたデータを周期的に取り出して所定形式に変換し出力するデータ変換機能ブロック３１Ｃと、バッファされた値が更新されたときにバッファ値をデータ更新イベント情報に変換して出力するイベント型データ変換機能ブロック３１Ｄとから構成される。そして、演算機能ブロック３１Ｆのデータ受信インターフェース３２ｆと、データ変換機能ブロック３１Ｃ，３１Ｄのデータ送信インターフェース３３ｃ，３３ｄのみが、外部の機能ブロック３１Ａ，３１Ｂ，３１Ｇと連携するためにシステム構築者に開示されている。
【０００８】
コンポジット機能ブロックは、上述したように内部構造を隠蔽する必要があるため、次のような課題が生じる。
【０００９】
例えば、コンポジット機能ブロックを構成する内部の機能ブロックに予期せぬ異常が発生したとき、コンポジット機能ブロックといえども実際には内部にある個々の機能ブロックが各々の仕様に依存した振る舞いを行うだけなので、機能ブロックの組み合わせによっては、異常となった機能ブロックの周囲に異常動作が伝わらず、周囲の機能ブロックで通常通りの動作が継続されてしまう場合がある。この場合、このコンポジット機能ブロックと連携動作する外部の機能ブロックにも異常発生の情報が伝わらないため、分散システムの全体で異常な動作が正常動作と区別されずに継続されてしまうという課題が生じる。
【００１０】
例えば、図２のアプリケーション構成において演算機能ブロック３１Ｆが異常停止した場合、バッファ機能ブロック３１Ｅの値は更新されなくなるが、２つのデータ変換機能ブロック３１Ｃ，３１Ｄは異常発生の影響を受けることがなく、一方の機能ブロック３１Ｃは未更新の同じデータを送信続け、もう一方の機能ブロック３１Ｄはデータ更新イベントを送信しなくなる。そして、このような動作が正常動作と区別されないまま継続されてしまう。
【００１１】
また、上記のような課題を解決するため、コンポジット機能ブロックを構成する内部の機能ブロックで異常が発生した場合に、そのエラー内容を内部の各機能ブロックを伝播させて外部の機能ブロックまで伝えるといった機能を追加することも考えられる。例えば、図２の演算機能ブロック３１Ｆで発生したエラー内容を機能ブロック３１Ｅ〜３１Ｄと伝播させて、外部の機能ブロック３１Ａ，３１Ｂにそれぞれ認識させる。
【００１２】
しかしながら、このような手法では、エラー内容がその機能ブロック固有のものであった場合に、外部の機能ブロックに伝播されてきたエラー内容によってコンポジット機能ブロックの内部構成がシステム構築者などに推定されてしまうという課題が生じる。このような事態は、ソフトウェア開発者のノウハウを保護するためにコンポジット機能ブロックの内部構成を隠蔽していることと矛盾する。
【００１３】
また、上記のような課題を解決するために、コンポジット機能ブロックを構成する内部の機能ブロックで異常が発生した場合に、コンポジット機能ブロックを構成する各機能ブロックに対してライフサイクル制御を行って、各機能ブロックを停止させるといった機能を追加することも考えられる。具体的には、図２の演算機能ブロック３１Ｆに異常が発生したことが検知された場合に、その他の機能ブロック３１Ｅ〜３１Ｃを停止させる。
【００１４】
しかしながら、このような手法では、例えば、コンポジット機能ブロックの周囲の機能ブロックに異常発生時用の処理機能が備わる場合に、この処理機能が発揮されないという課題が生じる。例えば、図２のデータ書込機能ブロック３１Ａが、データ受信エラーが発生した場合に一連の受信データをデータベースから削除するロールバック機能を備えている場合、ライフサイクル制御ではコンポジット機能ブロック３０１Ａの機能ブロック３１Ｅは正常停止されるため、外部のデータ書込機能ブロック３１Ａはデータ受信エラーを検出することができず、ロールバック処理に移行することができない。
【００１５】
また、上記の段落で、コンポジット機能ブロックに対して二種類の拡張機能（異常発生を伝播させる機能や、異常発生時にライフサイクル制御を行う機能）を付加する手法を提示したが、従来の分散システムにおいては、このような拡張機能を付加すること自体難しいという課題がある。
【００１６】
なぜなら、機能ブロックが配置される機器のコントローラ内では、何れの機能ブロックがコンポジット機能ブロックを構成するもので、何れの機能ブロックがそれ以外の個々の機能ブロックなのか、通常では区別できる状態にない。従って、上記のような拡張機能を追加するには、コンポジット機能ブロックの作成者がコンポジット機能ブロック内に拡張機能を実現するようなプログラム構成を付加するしかなく、そのような考慮がなされていないコンポジット機能ブロックに対して、外部からこのような拡張機能を付加することは難しい。
【００１７】
また、各機能ブロックのプロセス管理やメモリ管理などを行っている基本ソフトウェア（フレームワークとも呼ばれる）に、上記のような拡張機能を設けた場合、基本ソフトウェア上では、コンポジット機能ブロックを構成する機能ブロックと、その他の個々の機能ブロックとを区別できないため、これら両方の機能ブロックに対して、一律に拡張機能が付加されることになる。そのため、コンポジット機能ブロックのみに特定の機能を付加することは難しい。
【００１８】
この発明は、コンポジット機能ブロックや個々の機能ブロックが分散配置されて実行される分散システムにおいて、コンポジット機能ブロックを構成する何れかの機能ブロックで予期せぬ異常が発生した場合に、コンポジット機能ブロックの内部構造の秘匿性を維持したまま、コンポジット機能ブロックの周囲の機能ブロックに異常の発生を確実に伝えることができるようにすることである。
【課題を解決するための手段】
【００１９】
上記目的を達成するため、請求項１記載の発明は、コンポジットプログラム部品を構成する各プログラム部品と、個々のプログラム部品とを複数の機器に分散配置してなる分散環境、ならびに、該分散環境の構築支援を行う構築支援装置を含んだ分散システムにおいて、前記機器に配置され前記コンポジットプログラム部品の状態管理と動作制御とを行うコンポジット部品管理部と、前記機器に配置されるとともに前記コンポジットプログラム部品を構成しているプログラム部品の情報が示された構成情報リストと、前記構築支援装置に設けられコンポジットプログラム定義情報から前記構成情報リストを作成するリスト作成手段とを備え、前記コンポジット部品管理部は、自己が配置されている機器内でプログラム部品に異常が検知された場合に、前記構成情報リストに基づき、異常の検知されたプログラム部品が何れかのコンポジットプログラム部品に含まれているか判別し、含まれている場合に、当該コンポジットプログラム部品に属されかつ当該コンポジットプログラム部品以外のプログラム部品とデータをやり取りしている開放インターフェースを指定して異常発生用の動作を行わせることを特徴としている。
【００２０】
請求項２記載の発明は、請求項１記載の分散システムにおいて、前記構成情報リストは、前記コンポジットプログラム部品を構成する各プログラム部品をそれぞれ識別可能とする情報が登録されたコンポジット部品リストと、前記コンポジットプログラム部品に属される前記開放インターフェースをそれぞれ識別可能とする情報が登録された開放インターフェースリストとを含み、前記リスト作成手段は、個々のコンポジットプログラム部品ごとに、前記コンポジット部品リストと前記開放インターフェースリストとを作成する構成であることを特徴としている。
【００２１】
請求項３記載の発明は、請求項２記載の分散システムにおいて、前記コンポジット部品管理部は、前記コンポジット部品リストに基づき、異常と検知されたプログラム部品を含んだコンポジットプログラム部品を検索し、当該コンポジットプログラム部品を特定する特定機能と、前記開放インターフェースリストに基づき、前記特定機能により特定されたコンポジットプログラム部品に属される前記開放インターフェースを指定して異常発生用の動作を行わせる動作要求機能とを備えていることを特徴としている。
【００２２】
請求項４記載の発明は、請求項１記載の分散システムにおいて、前記構成情報リストは、前記コンポジットプログラム部品に属される前記開放インターフェースの各々がどの機器に配置されているかを示す配置情報を含み、前記コンポジット部品管理部は、他の機器に配置された別のコンポジット部品管理部と通信ネットワークを介して通信する通信機能と、前記配置情報に基づき異常と判別されたコンポジットプログラム部品に属される開放インターフェースの何れかが他の機器に配置されているか否かを判別する判別機能と、該判別機能により他の機器に配置されていると判別された場合に、前記配置情報に基づき前記通信機能を用いて当該他の機器のコンポジット部品管理部に操作要求を送信する操作要求送信機能と、他の機器のコンポジット部品管理部から前記操作要求を受信した場合に、当該操作要求に応じたコンポジットプログラム部品の開放インターフェースに異常発生用の動作を行わせる動作要求代行機能とを備えていることを特徴としている。
【００２３】
請求項５記載の発明は、分散環境の構築支援を行うコンピュータに、コンポジットプログラム部品の構成情報が表わされたコンポジットプログラム定義情報を読み込ませる機能と、前記コンポジットプログラム定義情報から、当該コンポジットプログラム部品を構成する各プログラム部品の識別情報、および、当該コンポジットプログラム部品に属されかつ他のプログラム部品とデータをやり取りする各開放インターフェースの識別情報を含んだ構成情報リストを作成する機能とを実現させるプログラムである。
【００２４】
請求項６記載の発明は、プログラム部品が配置されて分散環境を実現する複数の機器の制御用コンピュータによって実行されるプログラムであって、前記機器の制御用コンピュータに、機器内のプログラム部品に異常が検知された場合に、前記制御用コンピュータの記憶部に格納されたコンポジットプログラム部品の構成情報リストから、異常が発生したプログラム部品を含んだコンポジットプログラム部品を検索して、当該コンポジットプログラム部品を特定する特定機能と、前記制御用コンピュータの記憶部に格納されたコンポジットプログラム部品の構成情報リストから、前記特定機能により特定されたコンポジットプログラム部品に属されかつ当該コンポジットプログラム部品以外のプログラム部品とデータのやり取りを行っている開放インターフェースを指定し、当該開放インターフェースに異常発生用の動作を行わせる動作要求機能とを実現させるプログラムである。
【発明の効果】
【００２５】
本発明に従うと、リスト作成手段がコンポジット機能ブロックの内部構造の隠蔽を維持したままコンポジット機能ブロックの構成情報リストを作成し、コンポジット機能ブロックに内部異常が発生した場合に、コンポジット部品管理部が上記構成情報リストを用いて異常が生じたコンポジット機能ブロックを特定し、その公開インターフェースに異常発生用の動作を行わせる。従って、コンポジット機能ブロックの内部構造の隠蔽を維持したまま、コンポジット機能ブロックの周囲の機能ブロックに異常の発生を確実に伝わらせることができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態を図面に基づいて説明する。
【００２７】
［第１実施形態］
図３は、本発明の実施形態の分散システムの全体を示す構成図である。
【００２８】
この実施形態の分散システムは、複数の機器１０ａ〜１０ｚ（例えば生産設備機器）が通信ネットワーク９０に接続され、さらに、これら複数の機器１０ａ〜１０ｚに機能ブロック３１やコンポジット機能ブロック３０１が配置されてなるものである。図１では一部省略しているが、機器１０ａ，１０ｂに示すように、全ての機器１０ａ〜１０ｚにおいて、複数種類の機能ブロック３１や複数種類のコンポジット機能ブロック３０１の中から任意のものが配置されているものである。そして、これら複数の機能ブロック３１やコンポジット機能ブロック３０１が互いに連携しながら動作することで、複数の機器１０ａ〜１０ｚが統括的に稼動制御されたり、複数の機器１０ａ〜１０ｚから統括的に情報取得ができるようになっている。
【００２９】
さらに、本発明の実施形態では、分散システムの構築時に通信サーバ８０や通信ネットワーク９０を介して各機器１０ａ〜１０ｚへコンポジット機能ブロック３０１の構成情報リストを供給するシステム構築用コンピュータ１００が備わっている。
【００３０】
機能ブロック３１やコンポジット機能ブロック３０１は、機器のＣＰＵ（中央演算処理装置）により実行されるソフトウェアであり、特定の機能が実現されるようにユニット化されたものである。各機能ブロック３１や各コンポジット機能ブロック３０１は、他の機能ブロック３１やコンポジット機能ブロック３０１と互いにデータをやり取りしながら連携して動作する。データのやり取りは、各機能ブロック３１が有する連携インターフェース３２，３３を介して行われる。
【００３１】
連携インターフェース３２，３３とはソフトウェア上のインターフェースであり、同一機器内においては、連携インターフェース３２，３３はメモリを介してデータの送受信を行い、また、複数の機器１０ａ〜１０ｚ間においては、連携インターフェース３２，３３は通信ネットワーク９０を介してデータの送受信を行う。
【００３２】
連携インターフェース３２，３３はあらかじめ、たとえば接続拒否、サービス提供拒否、サービス提供可能などの状態を保持しており、通常の動作時にはサービス提供可能状態である。ここで、接続拒否とは、コネクションも成立しない状態、サービス提供拒否とは、コネクションは成立するが、アプリケーションレベルでのデータのやり取りを拒否する状態、サービス提供可能とは、コネクションが成立し、データのやり取りを行うことができる状態である。
【００３３】
コンポジット機能ブロック３０１は、有用な機能を実現させるためにソフトウェアベンダーなどが既存の機能ブロック３１を組み合わせて作成し、分散システムのシステム構築者へ提供されるものである。コンポジット機能ブロック３０１を構成する内部の各機能ブロック３１は、各機能ブロック３１の既存の仕様に従った振る舞いを行うものであり、コンポジット機能ブロック３０１特有の動作を行うことはない。コンポジット機能ブロック３０１の内部構造は、ソフトウェアベンダーのノウハウを保護するためにシステム構築者に対して隠蔽され、システム構築者には、コンポジット機能ブロック３０１の全体的な機能、システム構築者によって設定可能にされた動作パラメータ、外部の機能ブロックとデータのやり取りを行うため開放されている公開連携インターフェース（開放インターフェース）３２，３３の仕様等のみが開示される。
【００３４】
各機器１０ａ〜１０ｚには、図示は省略するが、プログラムを実行するＣＰＵ（中央演算処理装置）、プログラムモジュールや制御データが格納される記憶装置、ＣＰＵにメモリ空間を提供するメモリなどを有したコントローラ（制御用コンピュータ）２０が備わっている。そして、ＣＰＵが所定のプログラムモジュールを実行することで、複数の機能ブロック３１がメモリ空間上にインスタンスとして生成され、これらの機能ブロック３１がソフトウェア動作するようになっている。
【００３５】
システム構築用コンピュータ１００は、プログラムを実行するＣＰＵ、アプリケーションプログラムや制御データが格納される記憶装置、ＣＰＵに作業用のメモリ空間を提供するメモリ、オペレータに情報の表示出力を行う表示装置、オペレータの操作指令を入力する入力装置などを備え、上記のアプリケーションプログラムによって、分散システムの構築支援を行うソフトウェア機能を実現するものである。
【００３６】
分散システムの構築支援機能１１０は、主に、分散システムの全体設計を行う分散システム設計機能１１１と、各機器１０ａ〜１０ｚに所定の機能ブロック３１やコンポジット機能ブロック３０１を実現するためのプログラムモジュールや設定データを転送するモジュール転送機能１１２と、各コンポジット機能ブロック３０１の構成情報リストを作成して機器１０ａ〜１０ｚへ転送するコンポジット機能ブロック情報作成機能１１３とを含んでいる。
【００３７】
システム構築用コンピュータ１００には、各機能ブロック３１の動作内容や仕様情報が示された定義情報、ならびに、コンポジット機能ブロック３０１の内部構造や内部の機能ブロック３１の動作パラメータなどが示されたコンポジット機能ブロック定義情報１２１（図４）が、予め読み込まれ、これらの定義情報が利用されて分散システムの構築支援が行われるようになっている。
【００３８】
分散システム設計機能１１１は、オペレータが、分散システムを構成する複数の機器１０ａ〜１０ｚのハードウェア構成やネットワーク構成を決定したり、各機器１０ａ〜１０ｚに配置する機能ブロック３１やコンポジット機能ブロック３０１を選択したり、各機能ブロック３１や各コンポジット機能ブロック３０１の連結態様を決定したり、各機能ブロック３１や各コンポジット機能ブロック３０１の動作パラメータの設定を行ったりして、コンピュータ上で分散システム全体の設計支援を行うものである。
【００３９】
この分散システム設計機能１１１において、オペレータは、コンポジット機能ブロック３０１を１個の機能ブロック３１と同様に扱って、他の機能ブロック３１と連結させたりその配置を決定したりできるようになっている。システム構築用コンピュータ１００の内部では、予め読み込まれているコンポジット機能ブロック定義情報１２１（図４）によって、１個のコンポジット機能ブロック３０１を、これを構成している複数の機能ブロック３１として認識して処理を行っている。
【００４０】
モジュール転送機能１１２は、分散システムの設計が完了した後に、各機器１０ａ〜１０ｚに対して、配置設計された機能ブロック３１やコンポジット機能ブロック３０１を実現するためのプログラムモジュールや設定データを転送するものである。各機器１０ａ〜１０ｚは、転送されたプログラムモジュールを実行することで、配置設計された機能ブロック３１やコンポジット機能ブロック３０１が機器のコントローラ２０上で動作することになる。
【００４１】
図４には、システム構築用コンピュータにおいてコンポジット機能ブロック情報作成機能に関わる構成を表わした機能ブロック図を示す。図５には、コンポジット機能ブロック定義情報の一例を表わした図表を示す。
【００４２】
コンポジット機能ブロック情報作成機能１１３は、コンポジット機能ブロック３０１の内部構造が示されるコンポジット機能ブロック定義情報１２１を読み込み、このコンポジット機能ブロック３０１の構成情報リストを作成するものである。構成情報リストは、コンポジット機能ブロック３０１を構成する各機能ブロック３１を識別可能とする構成機能ブロックＩＤが登録された構成機能ブロックリスト６１と、コンポジット機能ブロック３０１に属されかつ外部に開放されている連携インターフェース３２，３３を指定可能とする公開連携インターフェースＩＤが登録された公開連携インターフェースリスト７１とからなるものである。これら各リスト６１，７１の具体的な内容については後段の表１と表２に示している。
【００４３】
コンポジット機能ブロック定義情報１２１は、コンポジット機能ブロック３０１を作成したソフトウェア開発者が、システム構築用コンピュータ１００の分散システム構築支援機能１１０に対して、コンポジット機能ブロック３０１の内部構造を明らかにするためのものであり、例えば、オペレータにより内容が読み出されない形式で提供され、システム構築用コンピュータ１００に読み込まれるものである。
【００４４】
図５に示すように、このコンポジット機能ブロック定義情報１２１には、コンポジット機能ブロック３０１を構成する各機能ブロック３１を示す構成機能ブロック３１の情報、各機能ブロック３１に備わる連携インターフェース３２，３３を示す情報、連携インターフェース３２，３３が外部に開放されているか否かを示す公開設定情報、内部の機能ブロック同士の連携先を示す内部連携先情報などが記述されている。
【００４５】
そして、上記のコンポジット機能ブロック情報作成機能１１３によって作成された構成機能ブロックリスト６１と公開連携インターフェースリスト７１とが、対応するコンポジット機能ブロック３０１が配置される機器１０ａ〜１０ｚへ転送されて機器１０ａ〜１０ｚの記憶装置やメモリに格納されるようになっている。例えば、上述のモジュール転送機能１１２によってプログラムモジュールや設定データと一緒に転送されるようになっている。
【００４６】
なお、上記の構成情報リスト（６１，７１）に登録される構成機能ブロックＩＤや公開連携インターフェースＩＤは、機能ブロック３１の配置設計を完了した段階で、システム構築用コンピュータ１００上で各機能ブロック３１や各連携インターフェース３２，３３に対して付与されている識別情報である。そして、これら機能ブロック３１が実際に各機器１０ａ〜１０ｚのコントローラ２０上でインスタンス生成される際にも、上記の識別情報が各機能ブロック３１や各連携インターフェース３２，３３のインスタンスに対応づけられ、これら識別情報によって機器１０ａ〜１０ｚのコントローラ２０上で各機能ブロック３１や各連携インターフェース３２，３３のインスタンスを識別することが可能になっている。
【００４７】
また、上記の構成機能ブロックリスト６１と公開連携インターフェースリスト７１とは、システム構築用コンピュータ１００の内部で生成されて各機器１０ａ〜１０ｚへ転送されるものなので、システム構築用コンピュータ１００のオペレータにより読み出されたりせず、これらのリスト６１，７１によってコンポジット機能ブロック３０１の内部構造の秘匿性が反故されないようになっている。
【００４８】
上述した分散システム設計機能１１１、モジュール転送機能１１２、コンポジット機能ブロック情報作成機能１１３を実現するアプリケーションプログラムは、上記のシステム構築用コンピュータ１００によって読み取り可能な、例えば、光ディスク等の可搬型記憶媒体、フラッシュメモリ等の不揮発性メモリ、ＲＯＭ（Read Only Memory）等に格納しておくことが可能である。また、このようなプログラムをキャリアウェーブ（搬送波）を媒体として通信回線を介してシステム構築用コンピュータ１００にダウンロードされる形態を適用することもできる。
【００４９】
図１には、第１実施形態の分散システムを構成する１個の機器のコントローラ上に生成される機能構成を表わした機能ブロック図を示す。次に、１個の機器１０ｍについて機能構成の説明をするが、各機器１０ａ〜１０ｚにも同様の機能構成が備わるものである。
【００５０】
図１に示すように、機器１０ｍのコントローラ２０上には、当該機器１０ｍ上に配置される個々の機能ブロック３１（コンポジット機能ブロック３０１の構成要素となる機能ブロックを含む）や、各機能ブロック３１の状態パラメータを取得する機能ブロック状態取得部２６、ならびに、各機能ブロック３１の連携インターフェース３２，３３を機能ブロック３１の外部から操作可能な連携インターフェース操作部２７が、ＣＰＵにより実行されるソフトウェアとして構築されている。
【００５１】
また、コンポジット機能ブロック３０１が配置された機器１０ｍのコントローラ２０上には、図１に示すように、コンポジット機能ブロック３０１を構成する各機能ブロック３１に対して、状態監視や異常発生時の動作制御を行うコンポジット機能ブロック管理部２５が、ＣＰＵにより実行されるソフトウェアとして構築されている。また、上記のシステム構築用コンピュータ１００から転送された構成機能ブロックリスト６１と公開連携インターフェースリスト７１とが、上記コンポジット機能ブロック管理部２５によって読み込み可能な状態にされている。
【００５２】
なお、図示は省略するが、機器のコントローラ２０上には、各機能ブロック３１のプロセス管理やメモリ管理を行う基本ソフトウェア（フレームワークとも呼ぶ）が動作しており、この基本ソフトウェアの制御によって１つのＣＰＵで複数の機能ブロックを並列的に動作させることが可能になっている。基本ソフトウェアは、各機能ブロック３１のプロセス管理を行っているため、この基本ソフトウェアを介して各機能ブロック３１の動作状態を取得することが可能であり、また、各機能ブロック３１の連携インターフェース３２，３３は基本ソフトウェアが提供しているインターフェース機能を介してデータをやり取りする構成なので、各機能ブロック３１の連携インターフェース３２，３３を基本ソフトウェア側から直接的に操作することも可能になっている。
【００５３】
機能ブロック状態取得部２６は、上記の基本ソフトウェアを介して各機能ブロック３１の状態パラメータを取得するものである。そして、機能ブロック３１の状態パラメータの値に変化があった場合に、後述する機能ブロック状態変化通知コードを作成し、状態変化イベントとしてこの通知コードをコンポジット機能ブロック管理部２５へ送るようになっている。機能ブロック状態取得部２６が取得できる状態パラメータの値には、機能ブロック３１の通常動作、状態遷移中、異常停止、異常終了、異常負荷などを示す値が含まれる。
【００５４】
この機能ブロック状態取得部２６は、例えば、分散システムの稼動を開始する際などに、分散システムの管理コンピュータなどから通信ネットワーク９０を介して状態管理開始要求を受けることにより作動したり、或いは、機器１０ｍの基本ソフトウェアが起動したときにこれと同時に作動するように構成される。
【００５５】
連携インターフェース操作部２７は、上記の基本ソフトウェアを介して、機能ブロック３１の外部から指定された連携インターフェース３２，３３に特定の動作を行わせるものである。具体的には、コンポジット機能ブロック管理部２５から後述する連携操作要求を受けて、指定された公開連携インターフェース３２，３３に異常発生時の動作内容を実行させる。
【００５６】
コンポジット機能ブロック管理部２５は、上記の基本ソフトウェアのサービスアプリケーションとして、コンポジット機能ブロック３０１が配置される機器１０ｍのコントローラ２０に１つずつ設けられるものである。コンポジット機能ブロック管理部２５の動作については後に詳述する。
【００５７】
コンポジット機能ブロック管理部２５を実現するサービスアプリケーションプログラムは、例えば、機器１０ｍのコントローラ２０により読み取り可能な記憶媒体に格納されて、機器１０ｍのＣＰＵにより実行可能なように組み込まれるものである。上記の記憶媒体は、例えば、光ディスク等の可搬型記憶媒体、フラッシュメモリ等の不揮発性メモリ、ＲＯＭ（Read Only Memory）等を適用することが可能である。また、キャリアウェーブ（搬送波）を媒体として通信回線を介してこのアプリケーションプログラムを転送して機器１０ｍに組み込むようにしても良い。
【００５８】
構成機能ブロックリスト６１と公開連携インターフェースリスト７１とは、上述したようにシステム構築用コンピュータ１００のコンポジット機能ブロック情報作成機能１１３によって作成され、コンポジット機能ブロック３０１が配置される機器１０ｍに転送されるものである。これら構成機能ブロックリスト６１と公開連携インターフェースリスト７１は、１個のコンポジット機能ブロック３０１に対して１個ずつ生成されており、１つの機器１０ｍに、複数のコンポジット機能ブロック３０１が配置される場合には、これら複数のコンポジット機能ブロック３０１に対応して、複数の構成機能ブロックリスト６１と複数の公開連携インターフェースリスト７１とが格納されることとなる。
【００５９】
構成機能ブロックリスト６１は、表１に示すように、１個のコンポジット機能ブロック３０１を構成する全ての機能ブロック３１をそれぞれ識別可能とする複数の構成機能ブロックＩＤ（識別情報）が登録されたものである。
【００６０】
【表１】
2010146050.tif 000003
【００６１】
例えば、図２の機能ブロック構成が１つの機器１０ｍに配置される場合、表１に示すように、コンポジット機能ブロック３０１Ａに対応させて１個の構成機能ブロックリスト６１が生成され、このリスト６１内には、コンポジット機能ブロック３０１Ａを構成する演算機能ブロック３１Ｆ、データバッファ機能ブロック３１Ｅ、および、２つのデータ変換機能ブロック３１Ｃ，３１Ｄの識別情報“ｆｂ００１”〜“ｆｂ００４”がそれぞれ登録される。これらの識別情報“ｆｂ００１”〜“ｆｂ００４”は、機器１０ｍのコントローラ２０上でインスタンス生成される実際の機能ブロックを識別可能な情報である。
【００６２】
公開連携インターフェースリスト７１は、表２に示すように、１個のコンポジット機能ブロック３０１に属される複数の連携インターフェース３２，３３のうち、外部の機能ブロックに対して開放されている全ての連携インターフェース３２，３３を指定可能とする公開連携インターフェースＩＤ（識別情報）が登録されたものである。
【００６３】
【表２】
2010146050.tif 000004
【００６４】
例えば、図２の機能ブロック構成が機器に配置される場合には、表２に示すように、コンポジット機能ブロック３０１Ａに対応して１個の公開連携インターフェースリスト７１が生成され、このリスト７１内には、コンポジット機能ブロック３０１Ａに属され外部に開放されている複数の公開連携インターフェース３３ｃ，３３ｄ，３２ｆをそれぞれ指定可能とする３つの識別情報“ｃｈ００１”〜“ｃｈ００３”が登録されている。この識別情報“ｃｈ００１”〜“ｃｈ００３”は、機器１０ｍ上でインスタンス生成される実際の連携インターフェース３２，３３を指定可能な情報である。
【００６５】
次に、分散システムの稼動時の動作について説明する。
【００６６】
分散システムにおいて全ての機能ブロック３１が起動されると、各機能ブロック３１は個々の仕様および動作設定に従って動作するとともに、互いに連結された複数の機能ブロック３１の間では連携インターフェース３２，３３を介して互いにデータのやり取りが行われる。それにより複数の機能ブロック３１が連携しあって分散システムが統括的に稼動する。
【００６７】
また、個々の機器１０ａ〜１０ｚ上では、機能ブロック３１の動作と並列的に、コンポジット機能ブロック管理部２５、機能ブロック状態取得部２６、連携インターフェース操作部２７も動作する。機能ブロック状態取得部２６は、上述の状態管理開始指示を受けたり、あるいは、機器１０ａ〜１０ｚの起動時に自動的に動作開始されたりすることによって、機器１０ａ〜１０ｚに配置された各機能ブロック３１の状態の監視を開始する。
【００６８】
図６は、機能ブロック状態取得部２６とコンポジット機能ブロック管理部２５により実行されるコンポジット機能ブロック３０１の状態管理処理の処理手順を示したフローチャートである。次に、１個の機器１０ｍについての動作例を説明するが他の機器１０ａ〜１０ｚについても同様の動作が行われる。
【００６９】
機能ブロック状態取得部２６は、動作を開始すると、所定の周期で、機器１０ｍに配置された各機能ブロック３１から状態パラメータを取得し（ステップＳ１）、状態パラメータの取得ごとにその状態値に変化がないか判別を行う（ステップＳ２）。そして、変化が無ければ、そのまま次の周期まで待機して、周期的な状態パラメータの取得を繰り返す。
【００７０】
一方、ステップＳ２の判別処理で、状態パラメータの値に変化があったと判別されたら、機能ブロック状態取得部２６は、例えば、表３に示すような機能ブロック状態変化通知のコードを作成して、この通知をコンポジット機能ブロック管理部２５へ送る（ステップＳ３）。この機能ブロック状態変化通知は、例えば、変化のあった機能ブロック３１に対応する機能ブロックＩＤと、変化後の状態パラメータの値とが付加されたデータである。
【００７１】
【表３】
2010146050.tif 000005
【００７２】
コンポジット機能ブロック管理部２５は、常時、機能ブロック状態取得部２６からの状態変化通知を待機しており、状態変化通知を受け取ったら、先ず、その状態変化通知に含まれる機能ブロックＩＤを取り出し、この機能ブロックＩＤが１個または複数の構成機能ブロックリスト６１に含まれているか検索する（特定機能：ステップＳ４）。ここで、この機能ブロックＩＤがリスト内に見つからなければ、コンポジット機能ブロック３０１以外の機能ブロック３１で状態変化が生じたこととなるため、コンポジット機能ブロック管理部２５は、この状態変化通知に関する処理を終了して、次の状態変化通知があるまで待機する。
【００７３】
一方、上記の機能ブロックＩＤが構成機能ブロックリスト６１内に見つかった場合には、機器１０ｍに配置されているコンポジット機能ブロック３０１の内部で状態変化が生じたことを特定できるので、コンポジット機能ブロック管理部２５は、次のステップＳ５に移行して、この状態変化通知に含まれる状態パラメータの値から機能ブロック３１の状態を確認する。すなわち、異常が発生しているか否かを判別する（ステップＳ５）。例えば、状態パラメータの値が、正常稼動中や状態遷移中を示す値であれば正常であると判別する一方、機能ブロック３１の異常停止や異常終了を示す値であったり、機能ブロック３１の処理負荷が異常値を示す値であったりすれば、異常が発生していると判別する。
【００７４】
コンポジット機能ブロック３０１の内部で、このような異常が発生する要因としては、例えば、コンポジット機能ブロック３０１を構成する機能ブロック３１自体に異常が起きた場合、コンポジット機能ブロック３０１を構成する機能ブロック３１間の連携動作に異常が起きた場合、機器１０ｍでハードウェア上の不具合が生じたことでコンポジット機能ブロック３０１を構成する各機能ブロック３１もしくはこれらの機能ブロック３１間の連携動作が正常に動作できなくなった場合などが挙げられる。
【００７５】
異常発生と判別したら、次に、コンポジット機能ブロック管理部２５は、ステップＳ４で探し出した構成機能ブロックリスト６１に対応づけられている公開連携インターフェースリスト７１を読み込んで、そこに記されている全ての公開連携インターフェースＩＤを操作対象の識別情報として指定する（ステップＳ６）。すなわち、これにより、内部で異常が発生しているコンポジット機能ブロック３０１に属され外部に開放されている全ての連携インターフェース３２，３３が操作対象として指定される。
【００７６】
続いて、コンポジット機能ブロック管理部２５は、例えば、表４に示すような連携操作要求のコードを作成し、このコードを連携インターフェース操作部２７へ送る（ステップＳ７）。上記のステップＳ６，Ｓ７の処理により動作要求機能が構成される。この連携操作要求は、例えば、ステップＳ６で特定した連携インターフェースＩＤと、操作内容を示す操作パラメータとが付加されたコードである。この実施形態では、連携操作要求の操作内容は、異常発生用の動作として連携遮断を適用している。
【００７７】
【表４】
2010146050.tif 000006
【００７８】
上記の連携操作要求が連携インターフェース操作部２７に送られると、連携インターフェース操作部２７は、連携操作要求のコードから操作対象の連携インターフェースＩＤを取り出し、この識別情報により指定される連携インターフェース３２，３３に対して連携遮断の操作要求を行う。
【００７９】
公開連携インターフェース３２，３３に連携遮断の操作要求がなされると、当該公開連携インターフェース３２，３３は連携遮断操作を行って上述したサービス提供拒否状態となる。これにより、コンポジット機能ブロック３０１に連結されている外部の機能ブロック３１に対して、異常発生の情報が伝わることとなる。例えば、コンポジット機能ブロック３０１と外部の機能ブロック３１との連携中に連携遮断の操作がなされると、連携インターフェースから外部の機能ブロック３１にディスコネクトを示すエラーメッセージが送られることとなる。また、コンポジット機能ブロック３０１に対して外部の機能ブロック３１から新たな連携要求が発生した場合には、アプリケーションレベルで連携が拒否されて、連携インターフェースから連携拒否を示すエラーメッセージが外部の機能ブロック３１に送られることとなる。
【００８０】
外部の機能ブロック３１は、このようなエラーメッセージに基づきコンポジット機能ブロック３０１で異常が発生したことを認識できるので、このエラーメッセージに対して所定のエラー処理を行うように設定しておくことで、異常発生を認識できずに無駄な動作や間違った動作がいつまでも継続されてしまうといった不具合を回避することができる。
【００８１】
例えば、図２のアプリケーション構成例において演算機能ブロック３１Ｆに異常が発生した場合、コンポジット機能ブロック管理部２５が外部に開放されている連携インターフェース３３ｃ，３３ｄ，３２ｆを連携遮断とする。それにより、外部の機能ブロック３１Ａ，３１Ｂ，３１Ｇにディスコネクトや連携拒否のエラーメッセージが送られることとなり、それにより、現場データ取得機能ブロック３１Ｇはコンポジット機能ブロック３０１Ａに向けたデータ送信を中止したり、データ書込み機能ブロック３１Ａはデータベースへのデータの書込みを中止したりすることができる。また、データ書込み機能ブロック３１Ｂはイベントの待ち状態を解除することができるなど、不本意なデータ保存や無駄な動作を防ぐことができる。
【００８２】
以上のように、この実施の形態の分散システムによれば、複数の機器１０ａ〜１０ｚにコンポジット機能ブロック３０１や個々の機能ブロック３１を分散配置して互いに連携させて動作させる分散システムにおいて、コンポジット機能ブロック３０１の内部で異常が生じた場合に、コンポジット機能ブロック３０１の内部構造の秘匿性を維持したまま、コンポジット機能ブロック３０１と連携動作を行っている他の機能ブロック３１に異常の発生を伝えることができる。
【００８３】
また、この実施の形態の分散システムによれば、機器のコントローラ２０上にコンポジット機能ブロック管理部２５を設け、コンポジット機能ブロック３０１の外部からコンポジット機能ブロック３０１の異常発生の監視と、異常発生時の動作制御とを行うようにしているので、コンポジット機能ブロック３０１自体に特別な機能を付加することなく、上記のような異常発生時の対処を行うことができる。
【００８４】
また、コンポジット機能ブロック管理部２５は、構成機能ブロックリスト６１と公開連携インターフェースリスト７１とに基づいて、異常が発生したコンポジット機能ブロック３０１の特定や、異常発生時の動作を行わせる公開連携インターフェース３２，３３の指定を行う構成なので、全ての機器１０ａ〜１０ｚにおいてコンポジット機能ブロック管理部２５を共通のものとすることができる。そして、構成機能ブロックリスト６１と公開連携インターフェースリスト７１とを、コンポジット機能ブロック３０１の配置に合わせた内容とすることで、各機器１０ａ〜１０ｚに対応したコンポジット機能ブロック３０１の状態管理を行うことができる。
【００８５】
なお、本発明は、上記の実施形態に限られるものではなく、種々の変形が可能である。例えば、コンポジット機能ブロック３０１の構成情報リストとして、１個のコンポジット機能ブロックごとに１個ずつ構成機能ブロックリスト６１と公開連携インターフェースリスト７１とを生成する例を示したが、１つの機能ブロックＩＤからその機能ブロック３１を内蔵したコンポジット機能ブロック３０１の全ての公開連携インターフェースＩＤを特定できるのであれば、１個のコンポジット機能ブロック３０１ごとにリスト６１，７１を分けて生成する必要はないし、また、構成情報リスト（６１，７１）に他のデータ項目を含めるなど、適宜変更可能である。
【００８６】
また、上記の実施形態では、各機能ブロック３１の状態パラメータを取得したり、連携インターフェース３２，３３を外部から操作するのに、基本ソフトウェアを介してこのような機能を実現する例を示したが、特にこのような方式に制限されるものでなく、同様の機能が実現されれば種々の方式を適用可能である。
【００８７】
また、コンポジット機能ブロック３０１の構成情報リスト（６１，７１）を、システム構築用コンピュータ１００で作成して、機器１０ａ〜１０ｚに転送する例を示したが、例えば、各機器１０ａ〜１０ｚの基本ソフトウェアにこのようなリスト作成機能を設けるようにしても良い。例えば、機器１０ａ〜１０ｚのコントローラ２０上でコンポジット機能ブロック３０１のインスタンスが生成される際に、機器１０ａ〜１０ｚの基本ソフトウェアが構成機能ブロックリスト６１や公開連携インターフェースリスト７１を生成するように構成する。
【００８８】
また、コンポジット機能ブロック３０１の異常発生時用の動作として公開連携インターフェース３２，３３の連携遮断を例示したが、外部に異常発生を伝達できる動作であれば、その他の動作を適用しても良い。
【００８９】
その他、分散システム構築支援機能１１０の処理内容や、コンポジット機能ブロック管理部２５による状態管理処理の制御手順など、実施形態で示した細部は、発明の趣旨を逸脱しない範囲で適宜変更可能である。
【００９０】
［第２実施形態］
図７には、第２実施形態の機器に構築される機能構成を表わしたブロック図を示す。
【００９１】
第２実施形態の分散システムは、１つのコンポジット機能ブロック３０１が複数の機器１０ａ〜１０ｚにまたがって配置される場合に対処可能な構成を示したものである。第２実施形態の分散システムは、第１実施形態と同様の構成を含むものであり、第１実施形態と同様の構成については説明を省略する。
【００９２】
第２実施形態の分散システムにおいては、１つのコンポジット機能ブロック３０１が複数の機器１０ａ〜１０ｚにまたがって配置される場合があるため、コンポジット機能ブロック情報作成機能１１３によって作成される構成機能ブロックリスト６１Ｂと、公開連携インターフェースリスト７１Ｂとを拡張したものを適用している。
【００９３】
構成機能ブロックリスト６１Ｂは、表５に示すように、構成機能ブロックＩＤに加えて、各機能ブロック３１が配置される機器のネットワークアドレス（例えばＩＰアドレス）がリスト項目に追加されている。これにより、各機能ブロック３１が何れの機器１０ａ〜１０ｚに配置されているか特定することが可能となる。
【００９４】
【表５】
2010146050.tif 000007
【００９５】
公開連携インターフェースリスト７１Ｂは、表６に示すように、各公開連携インターフェースＩＤに加えて、各公開連携インターフェース３２，３３が属する機能ブロック３１の識別情報（所属機能ブロックＩＤ）がリスト項目に追加されている。これにより、各公開連携インターフェース３２，３３が、何れの機能ブロック３１に属されるものかが特定でき、さらに各機能ブロック３１は構成機能ブロックリスト６１Ｂのネットワークアドレスから何れの機器１０ａ〜１０ｚに配置されているかが特定できるので、これらの情報から各公開連携インターフェース３２，３３が何れの機器１０ａ〜１０ｚに配置されているのかを特定することが可能になっている。
【００９６】
【表６】
2010146050.tif 000008
【００９７】
これらの構成機能ブロックリスト６１Ｂと、公開連携インターフェースリスト７１Ｂとは、該当するコンポジット機能ブロック３０１が分散配置される機器の個数分だけ複製され、これら複数の機器（例えば２個の機器１０ｘ，１０ｙ）にそれぞれ転送されて格納される。
【００９８】
第２実施形態においても、図７に示すように、各機器１０ｘ，１０ｙのコントローラ２０には、コンポジット機能ブロック３０１を構成する機能ブロック３１や個々の機能ブロック、ならびに、各機能ブロック３１に属される連携インターフェース３２，３３がインスタンス生成されて動作するようになっている。さらに、コンポジット機能ブロック３０１が配置される機器１０ｘ，１０ｙにおいては、当該コンポジット機能ブロック３０１に対応する構成機能ブロックリスト６１Ｂと公開連携インターフェースリスト７１Ｂとが格納され、さらに、コンポジット機能ブロック管理部２５Ｂ、機能ブロック状態取得部２６、連携インターフェース操作部２７が動作するようになっている。
【００９９】
第２実施形態のコンポジット機能ブロック管理部２５Ｂには、第１実施形態のコンポジット機能ブロック管理部２５の構成に加えて、通信ネットワーク９０を介して他の機器１０ａ〜１０ｚのコンポジット機能ブロック管理部２５Ｂと連携操作要求の送受信を行う操作要求送受信機能（通信機能）を有している。
【０１００】
また、この第２実施形態の分散システムには、コンポジット機能ブロック３０１が分散配置される複数の機器１０ｘ，１０ｙの間で、当該機器１０ｘ，１０ｙのハードウェア構成やコントローラ２０自体に異常が発生していないか確認し合う上位レベル異常確認機能が備わっている。
【０１０１】
この上位レベル異常確認機能の具体的としては、１個のコンポジット機能ブロック３０１が分散配置される複数の機器１０ｘ，１０ｙ間で、定期的に機器の稼動状態を確認する確認メッセージを交換する構成などを適用可能である。例えば、機器１０ｘのコンポジット機能ブロック管理部２５Ｂが、構成機能ブロックリスト６１Ｂから同一のコンポジット機能ブロック３０１が分散配置されている他の機器１０ｙのネットワークアドレスを取得し、当該機器１０ｙとの間で定期的に稼動状況を確認する確認メッセージをやり取りする。機器１０ｙのハードウェア上の異常やコントローラ２０の異常などで、基本ソフトウェア自体が異常停止した場合には、確認メッセージの応答がなくなるため、それにより確認相手の機器１０ｙに異常が発生したことを判別することができる。
【０１０２】
次に、第２実施形態に係るコンポジット機能ブロック３０１の状態管理処理の動作について説明する。
【０１０３】
図８には、第２実施形態のコンポジット機能ブロック管理部２５Ｂや機能ブロック状態取得部２６により実行されるコンポジット機能ブロック３０１の状態管理処理のフローチャートを示す。
【０１０４】
第２実施形態の状態管理処理においては、図８に示すように、２系統の処理フローによりコンポジット機能ブロック３０１の異常発生の監視を行う。ステップＳ１〜Ｓ５の異常発生の監視処理は第１実施形態と同様に機能ブロック状態取得部２６による監視である。第２実施形態では、さらに、上述した上位レベル異常確認機能による確認メッセージの交換により、コンポジット機能ブロック３０１の一部が配置されている他の機器１０ｘで異常が発生していないか監視を行っている。
【０１０５】
確認メッセージの交換により他の機器１０ｘの異常が検知されたら、コンポジット機能ブロック管理部２５Ｂは、全ての構成機能ブロックリスト６１Ｂの中から、異常と検知された機器１０ｘのネットワークアドレスが含まれる構成機能ブロックリスト６１Ｂを探し出し（ステップＳ１１）、この構成機能ブロックリスト６１Ｂに対応するコンポジット機能ブロック３０１が異常であると判断する（ステップＳ１２）。
【０１０６】
また、第１実施形態と同様に、自己の機器に配置されたコンポジット機能ブロック３０１の内部に異常が発生して機能ブロック状態取得部２６により異常検知が行われたら、構成機能ブロックリスト６１Ｂの検索により（ステップＳ１〜Ｓ５）、異常の発生したコンポジット機能ブロック３０１が特定される。
【０１０７】
異常の発生したコンポジット機能ブロック３０１が特定されたら、次に、コンポジット機能ブロック管理部２５Ｂは、このコンポジット機能ブロック３０１の構成機能ブロックリスト６１Ｂに対応付けられている公開連携インターフェースリスト７１Ｂを読み込んで、操作対象の連携インターフェース３２，３３を特定する（ステップＳ１３）。
【０１０８】
次に、コンポジット機能ブロック管理部２５Ｂは、操作対象の連携インターフェース３２，３３に対する連携操作要求のコードを作成する（ステップＳ１４）。第２実施形態では、操作対象の連携インターフェース３２，３３が他の機器１０ｘに配置されていることがあるため、連携操作要求のコードは、表７に示すように、操作対象の連携インターフェースＩＤや操作内容のコードに加えて、該当の連携インターフェース３２，３３が配置された機器１０ｘ，１０ｙのネットワークアドレスが追加されたコードとなっている。このような連携操作要求のコードを対象のコンポジット機能ブロック３０１に属する全ての公開連携インターフェース３２，３３について作成する。
【０１０９】
【表７】
2010146050.tif 000009
【０１１０】
このような連携操作要求のコードを作成したら、個々の連携操作要求ごとに、ネットワークアドレスがローカル（自己の機器）のものか、リモート（他の機器）のものか判別し（判別機能：ステップＳ１５）、ローカルのものであれば自己の機器１０ｙの連携インターフェース操作部２７へこの連携操作要求を送る（ステップＳ１６）。それにより、自己の機器の公開連携インターフェース３２，３３が連携遮断に操作される。
【０１１１】
一方、リモートのものであれば、コンポジット機能ブロック管理部２５Ｂは、連携操作要求のネットワークアドレスに示された他の機器１０ｘのコンポジット機能ブロック管理部２５Ｂへ、通信ネットワーク９０を介して連携操作要求を送信する（操作要求送信機能：ステップＳ１７）。
【０１１２】
各機器１０ｘ，１０ｙのコンポジット機能ブロック管理部２５Ｂは、割り込み処理などにより連携操作要求を常に受信待機した状態にあり、連携操作要求が送られてくると、これを受信する（ステップＳ２１）。そして、他の機器１０ｙから連携操作要求を受信したら、これを自己の機器１０ｘの連携インターフェース操作部２７へ送る（動作要求代行機能：ステップＳ２２）。それにより、機器１０ｘの公開連携インターフェース３２，３３が連携遮断される。
【０１１３】
以上のように、第２実施形態の分散システムによれば、１個のコンポジット機能ブロック３０１が複数の機器１０ｘ，１０ｙに分散配置されている場合でも、このコンポジット機能ブロック３０１を構成する何れかの機能ブロック３１で異常が発生した場合に、このコンポジット機能ブロック３０１に属される全ての公開連携インターフェース３２，３３が連携遮断となって、コンポジット機能ブロック３０１の周囲に異常発生を伝えることが可能となる。
【０１１４】
また、コンポジット機能ブロック３０１が分散配置されている他の機器１０ｘ，１０ｙで、ハードウェア異常やコントローラ２０の異常によって基本ソフトウェア自体が停止してしまうような上位レベルの異常が発生した場合でも、確認メッセージの確認によりこの異常を検知することができる。そして、当該機器１０ｘ，１０ｙに部分的に配置されているコンポジット機能ブロック３０１が正常動作できないものと判断して、このコンポジット機能ブロック３０１に属される公開連携インターフェース３２，３３を連携遮断とすることで、コンポジット機能ブロック３０１の周囲に異常発生を伝えることが可能となる。それにより、無駄な動作や間違った動作が、正常な動作と区別されずに継続されてしまうといった不具合を回避することができる。
【０１１５】
なお、第２実施形態では、構成機能ブロックリスト６１Ｂにネットワークアドレスを追加し、公開連携インターフェースリスト７１Ｂに構成機能ブロックＩＤを追加する例を示したが、公開連携インターフェースリスト７１Ｂにネットワークアドレスを追加するようにしても良い。また、第２実施形態では、構成機能ブロックリスト６１Ｂに、各機能ブロック３１の配置先アドレスが分かる情報が追加されているため、特に、構成機能ブロックリスト６１Ｂや公開連携インターフェースリスト７１Ｂを、対応するコンポジット機能ブロック３０１が配置されている機器１０ｘ，１０ｙのみに格納する必要はなく、例えば、全ての構成機能ブロックリスト６１Ｂと公開連携インターフェースリスト７１Ｂを全ての機器１０ａ〜１０ｚに格納するようにしても良い。
【０１１６】
その他、連携操作要求の内容やコンポジット機能ブロックによる状態管理処理の処理手順など、実施形態で示した細部は発明の趣旨を逸脱しない範囲で適宜変更可能である。
【図面の簡単な説明】
【０１１７】
【図１】機器のコントローラ上に実現される機能構成を示した機能ブロック図である。
【図２】機器に配置されるアプリケーション構成の一部の一例を示す機能ブロック図である。
【図３】本発明の実施形態の分散システムの全体を示す構成図である。
【図４】コンポジット機能ブロック情報作成機能に関する構成を表わした機能ブロック図である。
【図５】コンポジット機能ブロック定義情報の一例を表わした図表である。
【図６】コンポジット機能ブロックの管理処理の処理手順を示したフローチャートである。
【図７】第２実施形態の機器のコントローラ上に実現される機能構成を示す機能ブロック図である。
【図８】第２実施形態におけるコンポジット機能ブロックの管理処理の処理手順を示すフローチャートである。
【符号の説明】
【０１１８】
１０ａ〜１０ｚ    機器
２５    コンポジット機能ブロック管理部（コンポジット部品管理部）
２６    機能ブロック状態取得部
２７    連携インターフェース操作部
３１    機能ブロック（プログラム部品）
３１Ａ，３１Ｂ  データ書込機能ブロック
３１Ｃ  データ変換機能ブロック
３１Ｄ  イベント型データ変換機能ブロック
３１Ｅ  データバッファ機能ブロック
３１Ｆ  演算機能ブロック
３１Ｇ  現場データ取得機能ブロック
３２，３３  連携インターフェース
３３ｃ，３３ｄ，３３ｆ  公開連携インターフェース（開放インターフェース）
３０１，３０１Ａ  コンポジット機能ブロック（コンポジットプログラム部品）
６１    構成機能ブロックリスト（コンポジット部品リスト、構成情報リスト）
７１    公開連携インターフェースリスト（開放インターフェースリスト、構成情報リスト）
９０    通信ネットワーク
１００  システム構築用コンピュータ
１１０  分散システム構築支援機能
１１１  分散システム設計機能
１１２  モジュール転送機能
１１３  コンポジット機能ブロック情報作成機能
１１５  コンポジット機能ブロック情報作成部
１２１  コンポジット機能ブロック定義情報
２５Ｂ  コンポジット機能ブロック管理部
６１Ｂ  構成機能ブロックリスト
７１Ｂ  公開連携インターフェースリスト
【図１】
2010146050.tif 000010
【図２】
2010146050.tif 000011
【図３】
2010146050.tif 000012
【図４】
2010146050.tif 000013
【図５】
2010146050.tif 000014
【図６】
2010146050.tif 000015
【図７】
2010146050.tif 000016
【図８】
2010146050.tif 000017