(57)【要約】【課題】  各アプリケーションが別プロセスで実行されるために、各プロセスへのリソース配分や検証が難しくなり、かつリアルタイム性が損なわれていたという課題を解決する。【解決手段】  所定の機能を有するコンポーネント、名前サービスコンポーネント、通信コンポーネントがメッセージバスを介して通信を行うと共に、外部への通信は通信コンポーネントを介して行うようにした。また、制御システムに適用するようにした。コンポーネントとメッセージバス間のインターフェイスが単純になるので、パフォーマンスが向上し、リアルタイム性能を確保することができ、かつラッパを作成することにより、既存のパッケージを活用することができる。【選択図】                    図１
2007334724.tif 000002
【特許請求の範囲】
【請求項１】
送信先の宛先情報および送信元の情報が添付されたメッセージを伝達するメッセージバスと、
所定の機能を有し、前記メッセージバスを介して情報を交換するコンポーネントと、
前記コンポーネントの情報が登録され、問い合わせに応じてこの登録された情報を前記メッセージバスを介して問い合わせ元に送信する名前サービスコンポーネントと、
前記メッセージバスを介して前記コンポーネントと情報を交換し、外部との通信を仲介する通信コンポーネントと、
を具備したことを特徴とするメッセージバスを有するプロセス。
【請求項２】
前記メッセージは非同期メッセージであることを特徴とする請求項１記載のメッセージバスを有するプロセス。
【請求項３】
前記メッセージは同期メッセージであり、この同期メッセージを受け取ったコンポーネントは返信メッセージを送信し、前記同期メッセージを送信したコンポーネントは、この返信メッセージを受け取るまで処理を中断するようにしたことを特徴とする請求項１記載のメッセージバスを有するプロセス。
【請求項４】
システムの一部として常駐し、ネットワークを通じたサービスを一元管理するラッパを用いて、既存のパッケージを取り込むようにしたことを特徴とする請求項１乃至請求項３いずれかに記載のメッセージバスを有するプロセス。
【請求項５】
前記通信コンポーネントは、ＳＯＡＰ(Simple Object Access Protocol)を用いて外部と通信するようにしたことを特徴とする請求項１乃至請求項４いずれかに記載のメッセージバスを有するプロセス。
【請求項６】
前記メッセージバスはトランザクション処理および／またはログ処理の管理を行うようにしたことを特徴とする請求項１乃至請求項５いずれかに記載のメッセージバスを有するプロセス。
【請求項７】
前記通信コンポーネントを複数個有することを特徴とする請求項１乃至請求項６いずれかに記載のメッセージバスを有するプロセス。
【請求項８】
前記プロセスを少なくとも１つ内蔵したことを特徴とする制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイム性を損なうことなく、効率的な処理を行うことができるプロセスおよびこのプロセスを用いた制御システムに関するものである。
【背景技術】
【０００２】
制御システムでは、本来の制御動作だけでなく、データ収集やデータ解析、機器管理などを行うの多くの機能ブロックが並行して実行されている。これらの機能ブロックのそれぞれは単一のアプリケーションとして構築され、アプリケーション間の連携が必要な場合は、アプリケーション間通信を行って、相互に情報を交換しながら処理を実行する。
【０００３】
図５に、このような制御システムの概要図を示す。図５において、１１〜１５はそれぞれアプリケーションであり、機能ブロックとして動作している。例えば、アプリケーション１１は制御動作を実行し、アプリケーション１２はデータ収集、アプリケーション１３はデータ解析を行う。各アプリケーションは別プロセスとして動作している。
【０００４】
与えられた目的を達成するためには、各アプリケーションは連携して動作しなければならない。そのため、アプリケーション１１〜１５間で通信を行って情報を交換し、連携して動作するようにしている。
【特許文献１】特開２００１−１２５８７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、各アプリケーションを別プロセスとして実行するためには、これらのアプリケーションにリソースを配分しなければならない。しかし、アプリケーションの数が多くなると、各アプリケーションに十分なリソースを配分することが難しくなり、結果としてアプリケーションのパフォーマンスを十分に引き出すことが難しくなるという課題があった。
【０００６】
また、各アプリケーションを組み合わせた場合の動作を検証しなければならないが、アプリケーションの数が多くなると組合せの数が膨大になり、全てを網羅した検証を行うことが困難になるという課題もあった。
【０００７】
また、統一したシステム構築法がないために、ライブラリの活用やモジュールの再利用が行われ難くなって開発効率が低下してしまうという課題もあった。
【０００８】
また、アプリケーション間通信もアプリケーション毎に規定しなければならないために通信手法を統一することが難しくなり、また通信の負荷が増大して、制御システムに求められるリアルタイム性が損なわれるという課題もあった。
【０００９】
さらに、制御システムが複数のプロセスに分かれているので、トランザクションやログの管理が複雑になり、またシステム管理が難しくなってしまうという課題もあった。
【００１０】
従って本発明の目的は、機能ブロックをコンポーネントとして構築し、これらのコンポーネントをメッセージバスで接続した単位を１つのプロセスとすることにより、リアルタイム性を損なうことがないメッセージバスを有するプロセス、およびこのプロセスを用いた制御システムを提供することにある。
【課題を解決するための手段】
【００１１】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
送信先の宛先情報および送信元の情報が添付されたメッセージを伝達するメッセージバスと、
所定の機能を有し、前記メッセージバスを介して情報を交換するコンポーネントと、
前記コンポーネントの情報が登録され、問い合わせに応じてこの登録された情報を前記メッセージバスを介して問い合わせ元に送信する名前サービスコンポーネントと、
前記メッセージバスを介して前記コンポーネントと情報を交換し、外部との通信を仲介する通信コンポーネントと、
を具備したものである。リアルタイム性を確保できる。
【００１２】
請求項２記載の発明は、請求項１記載の発明において、
前記メッセージは非同期メッセージであることを特徴としたものである。通信のパフォーマンスが向上する。
【００１３】
請求項３記載の発明は、請求項１記載の発明において、
前記メッセージは同期メッセージであり、この同期メッセージを受け取ったコンポーネントは返信メッセージを送信し、前記同期メッセージを送信したコンポーネントは、この返信メッセージを受け取るまで処理を中断するようにしたものである。相手側が受け取ったことを確認できるので、確実に通信できる。
【００１４】
請求項４記載の発明は、請求項１乃至請求項３いずれかに記載の発明において、
システムの一部として常駐し、ネットワークを通じたサービスを一元管理するラッパを用いて、既存のパッケージを取り込むようにしたものである。既存のパッケージを活用できる。
【００１５】
請求項５記載の発明は、請求項１乃至請求項４いずれかに記載の発明において、
前記通信コンポーネントは、ＳＯＡＰ(Simple Object Access Protocol)を用いて外部と通信するようにしたものである。Ｗｅｂサービスを活用できる。
【００１６】
請求項６記載の発明は、請求項１乃至請求項５いずれかに記載の発明において、
前記メッセージバスはトランザクション処理および／またはログ処理の管理を行うようにしたものである。これらの処理が簡単にできる。
【００１７】
請求項７記載の発明は、請求項１乃至請求項６いずれかに記載の発明において、
前記通信コンポーネントを複数個具備したものである。複数の通信方式に対応できる。
【００１８】
請求項８記載の発明は、
制御システムに前記プロセスを少なくとも１つ内蔵するようにしたものである。リアルタイム性が重要視される制御システムに用いて好適である。
【発明の効果】
【００１９】
以上説明したことから明らかなように、本発明によれば次のような効果がある。
請求項１，２、３、４、５、６および７の発明によれば、所定の機能を有するコンポーネント、名前サービスコンポーネント、通信コンポーネントがメッセージバスを介して通信を行うと共に、外部への通信は通信コンポーネントを介して行うようにした。また、制御システムに適用するようにした。
【００２０】
コンポーネントとメッセージバス間のインターフェイスが単純になるので、パフォーマンスが向上し、リアルタイム性能を確保することができるという効果がある。また、ラッパを作成することにより、容易に既存のライブラリやアプリケーションをメッセージバスに接続することができるという効果もある。
【００２１】
また、コンポーネントとメッセージバス間のインターフェイスが簡単になり、かつメッセージバスとのインターフェイス機能、ログ機能などを共通化することができるので、開発効率が向上するという効果もある。また、コンポーネントが同じインターフェイスを有しているので、コンポーネントへのリソース配分、状況把握、動的なコンポーネントの追加・削除などの管理が簡単になるという効果もある。
【００２２】
さらに、コンポーネント間の全ての通信がメッセージバスを通過するので、トランザクション処理やログ処理が簡単にできるという効果もある。
【発明を実施するための最良の形態】
【００２３】
以下本発明を図面を用いて詳細に説明する。図１は本発明に係るメッセージバスを有するプロセスの一実施例を示す構成図である。図１において、２０はプロセスであり、コンポーネント２１〜２４、名前サービスコンポーネント２５、通信コンポーネント２６、メッセージバス２７で構成される。コンポーネント２１〜２４、名前サービスコンポーネント２５、通信コンポーネント２６はそれぞれメッセージバス２７に接続するためのインターフェイスを内蔵している。
【００２４】
３０はプロセスであり、コンポーネント３１〜３４、名前サービスコンポーネント３５、通信コンポーネント３６、メッセージバス３７で構成される。コンポーネント３１〜３４、名前サービスコンポーネント３５、通信コンポーネント３６はそれぞれメッセージバス３７に接続するためのインターフェイスを内蔵している。
【００２５】
４０は通信バスであり、通信コンポーネント２６と３６に接続される。プロセス２０と３０は、この通信バス４０を介して情報を交換する。また、この通信バス４０を介して図示しない他のシステムやアプリケーションと情報を交換する。なお、この実施例では２つのプロセス２０、３０を通信バス４０で接続しているが、３つ以上のプロセスを接続することもできる。また、各プロセスに内蔵するコンポーネントの数は、任意に選択することができる。
【００２６】
コンポーネント２１〜２４は所定の機能を実現するためのソフトウエアモジュールである。これらのコンポーネント２１〜２４が実現する機能は任意に選択できるが、コンポーネント同士の依存性ができるだけ少なくなるように、各コンポーネントが実現する機能を切り分ける。
【００２７】
コンポーネント２１〜２４、名前サービスコンポーネント２５、通信コンポーネント２６は、メッセージバス２７を介してメッセージを交換する。これらのコンポーネントは、メッセージ２７を介して全ての情報交換を行う。メッセージバス２７は受け渡す情報をＤＴＯ(Data Transfer Object)にまとめて交換する。そのため、異なるマシン上に分散配置されているオブジェクト間でデータをやりとりするＯＲＢ(Object Request Broker)とは異なり、そのインターフェイスはシンプルかつ単一なものになる。なお、メッセージバス２７はソフトウエア的なバスであり、必ずしもハードウエア的な通信路を有していない。
【００２８】
メッセージバス２７上を流れるメッセージには同期メッセージと非同期メッセージがある。また、送信するコンテンツに発信元と宛先を追加し、同期メッセージ／非同期メッセージ／同期メッセージの返信を区別するための設定を行う。コンテンツはＸＭＬ(eXtensible Markup Language)で記述してもよいが、バイナリデータとすることもできる。
【００２９】
名前サービスコンポーネント２５は、コンポーネントの名前解決を行うためのコンポーネントである。あるコンポーネントが同じプロセス内の他のコンポーネントと情報の交換を行う場合、相手側コンポーネントに関する情報を知る必要があるが、この情報を提供するコンポーネントである。
【００３０】
通信コンポーネント２６は、他のプロセスと通信を行うためのコンポーネントである。コンポーネント２１〜２４が他のプロセスと情報交換する必要が生じたときは、この通信コンポーネントを介して行う。そのため、コンポーネント２１〜２４はプロセス２０の外部に対応する通信モジュールを内蔵しなくても、宛先を変えるだけで他のプロセスのコンポーネントと通信することができる。
【００３１】
通信コンポーネント２６は複数個用いることができる。これらの複数の通信コンポーネントをＳＯＡＰ(Simple Object Access Protocol)やＣＯＢＲＡ(Common Object Request Broker Architecture)等のプロトコルに対応させることにより、様々な通信をサポートすることができる。
【００３２】
プロセス３０は、コンポーネント３１〜３４で実現する機能は異なるが、プロセス２０と同じ構成を有している。すなわち、コンポーネント３１〜３４、名前サービスコンポーネント３５、通信コンポーネント３６は、ＤＴＯを用いたメッセージバス３７を介して情報交換を行い、名前サービスコンポーネント３５で名前解決を行う。また、他のプロセスと情報交換する必要が生じたときは、通信コンポーネント３６を介して行う。
【００３３】
メッセージバス２７、３７では情報交換の際に通信が行われないので、通信遅延やネットワークの障害などに起因する遅延が発生しない。また、個々のコンポーネントのリアルタイム性がそのままプロセスのリアルタイム性として換算することができるので、プロセスのリアルタイム性を高く保つことができる。
【００３４】
また、全てのコンポーネント間通信はメッセージバスを通るので、メッセージバスでトランザクション処理やログ処理の管理を行うことができる。
【００３５】
図２に、コンポーネントをメッセージバスに接続する手順を示す。なお、プロセス２０について説明するが、プロセス３０でも同じである。図２において、工程（Ｐ２−１）で名前サービスコンポーネント２５に接続するコンポーネントを登録する。登録処理の終了後、工程（Ｐ２−２）でこの名前サービスコンポーネント２５からメッセージバス２７の参照を受け取る。そして、工程（Ｐ２−３）で、メッセージバス２７の参照に対して、接続するコンポーネントのメッセージハンドラを登録する。これにより、コンポーネントはメッセージバス２７を用いてメッセージを配信することができる。
【００３６】
コンポーネントの接続はプロセスの起動時だけでなく、実行中であっても動的に接続することができる。また、既存のライブラリやアプリケーションをメッセージバス２７に接続するときは、ラッパ(wrapper)を用いる。ラッパはシステムの一部として常駐し、ネットワークを通じたサービスを一元管理するソフトウエアである。メッセージバス２７へのインターフェイスは単一なので、ラッパを作成することは簡単である。
【００３７】
図３に、コンポーネントをメッセージバスから切り離す手順を示す。なお、プロセス２０について説明するが、プロセス３０でも同じである。図３において、工程（Ｐ３−１）で、削除するコンポーネントについて、名前サービスコンポーネント２５の登録を削除する。そして、工程（Ｐ３−２）で同じコンポーネントについて、メッセージバス２７への登録を削除する。
【００３８】
次に、工程（Ｐ３−３）で、配信されていないメッセージの中で、削除したコンポーネント宛のメッセージがあるとそれを削除し、送信元にエラーメッセージを送信する。そして、工程（Ｐ３−４）で、削除したコンポーネントからの返信を待っているコンポーネントを探し、このコンポーネントにエラーメッセージを送信する。これによって、コンポーネントは安全にメッセージバス２７から切り離される。
【００３９】
図４に、コンポーネント間でメッセージをやりとりする手順を示す。なお、プロセス２０について説明するが、プロセス３０でも同じである。図４において、工程（Ｐ４−１）で、送信するコンポーネントは送信したいコンポーネントの宛先情報を名前サービスコンポーネントから取得する。そして、工程（Ｐ４−２）で、メッセージを作成して、取得した宛先情報をこのメッセージの宛先に、自身の宛先情報を送信元にセットする。
【００４０】
次に、工程（Ｐ４−３）でメッセージのコンテンツ（本体部分）を作成し、工程（Ｐ４−４）で作成したメッセージをメッセージバス２７に送信する。メッセージバス２７は、工程（Ｐ４−５）でメッセージの宛先を参照して、宛先コンポーネントのメッセージハンドラにこのメッセージを配信する。
【００４１】
なお、メッセージのやりとりは同期型、非同期型のどちらでも行うことができるが、同期型の場合は、送信元コンポーネントがメッセージバス２７にメッセージを送信すると、返信メッセージが到着するまで送信元コンポーネントの処理がブロックされる。送信先コンポーネントが返信メッセージを作成してメッセージバス２７に送信し、メッセージバス２７がこの返信メッセージを送信元コンポーネントに配信すると、ブロックされていた処理が再開される。
【００４２】
なお、制御システムでは制御データを保存するデータベースや解析を行うパッケージが個々に存在する。通常はこれらのデータベースやパッケージはそれぞれ別プロセスとして動作しているが、これらのデータベースやパッケージをコンポーネント化することにより、同一プロセスに取り込むことができる。また、ラッパを用いることにより、既存のパッケージをプロセスに取り込むこともできる。そのため、パフォーマンスを十分引き出すことができ、且つリアルタイム性を確保することができる。
【００４３】
最近の制御システムでは、ＭＥＳ(Manufacturing Execution System、製造実行システム)、やＥＲＰ(Enterprise Resource Planning、企業資源計画システム)と接続することが増加している。これらＭＥＳやＥＲＰとのやりとりでは、Ｗｅｂサービスが多く用いられる。通信コンポーネントをＳＯＡＰに対応させることにより、個々のコンポーネントをＳＯＡＰに対応させなくても、これらのシステムと容易に接続することができる。メッセージバスのインターフェイスはＷｅｂサービスの定義に準拠するので、ＷＳＤＬ(Web Services Description Language)を自動生成することできる。
【図面の簡単な説明】
【００４４】
【図１】本発明の一実施例を示す構成図である。
【図２】コンポーネントをメッセージバスに接続する手順を示すフローチャートである。
【図３】コンポーネントをメッセージバスから切り離す手順を示すフローチャートである。
【図４】コンポーネント間の通信手順を示すフローチャートである。
【図５】従来の制御システムの概要図である。
【符号の説明】
【００４５】
２０、３０  プロセス
２１〜２４、３１〜３４  コンポーネント
２５、３５  名前サービスコンポーネント
２６、３６  通信コンポーネント
２７、３７  メッセージバス
４０  通信バス
【図１】
2007334724.tif 000003
【図２】
2007334724.tif 000004
【図３】
2007334724.tif 000005
【図４】
2007334724.tif 000006
【図５】
2007334724.tif 000007