(57)【特許請求の範囲】
【請求項１】
中継装置のデータ変換方法において、
パケットを受信し、
受信されたパケットの送信元情報に基づいてテーブルから変換要否情報を取得し、
取得された変換要否情報が変換要であるか変換否であるかの第１の判定を行い、
第１の判定において、取得された変換要否情報が変換要および変換否のいずれでもないと判定した場合、受信されたパケットのデータを変換し、受信されたパケットのデータと変換されたデータとが一致するかの第２の判定を行い、第２の判定において一致すると判定した場合、送信元情報に基づいて前記テーブルの変換要否情報に変換否を設定し、第２の判定において一致しないと判定した場合、送信元情報に基づいて前記テーブルの変換要否情報に変換要を設定し、
第１の判定において、取得された変換要否情報が変換要であると判定した場合、受信されたパケットのデータを変換すること
を特徴とする中継装置のデータ変換方法。
【請求項２】
請求項１に記載の中継装置のデータ変換方法において、
第１の判定において、取得された変換要否情報が変換要および変換否のいずれでもないと判定した場合、変換されたデータを送信し、
第１の判定において、取得された変換要否情報が変換要であると判定した場合、変換されたデータを送信し、
第１の判定において、取得された変換要否情報が変換否であると判定した場合、受信されたパケットのデータを送信すること
を特徴とする中継装置のデータ変換方法。
【請求項３】
請求項２に記載の中継装置のデータ変換方法において、
受信されたパケットの送信元情報が前記テーブルに設定されているかの第３の判定を行い、
第３の判定において、設定されていないと判定した場合、変換要否情報として変換要でも変換否でもない情報を、受信されたパケットの送信元情報ともに前記テーブルへ設定すること
を特徴とする中継装置のデータ変換方法。
【請求項４】
請求項３に記載の中継装置のデータ変換方法において、
受信されたパケットのデータは、データ構造を有するオブジェクトであり、
受信されたパケットのデータの変換は、データ構造を変換するデータモデル変換であり、
受信されたパケットのデータと変換されたデータとの一致は、ビット列の一致であること
を特徴とする中継装置のデータ変換方法。
【請求項５】
請求項４に記載の中継装置のデータ変換方法において、
受信されたパケットのデータの変換は、受信されたパケットのデータを共通の構造のデータへ変換し、変換された共通の構造のデータを送信先で処理する構造のデータへ変換すること
を特徴とする中継装置のデータ変換方法。
【請求項６】
請求項３に記載の中継装置のデータ変換方法において、
パケットの送信元情報に基づいてテーブルから変換要否情報を取得し、
取得された変換要否情報が変換要であるか変換否であるかの第４の判定を行い、
第４の判定において、取得された変換要否情報が変換要であると判定した場合、変換されたデータを高優先キューに格納し、
第４の判定において、取得された変換要否情報が変換否であると判定した場合、変換されたデータを低優先キューに格納すること
を特徴とする中継装置のデータ変換方法。
【請求項７】
請求項６に記載の中継装置のデータ変換方法において、
前記高優先キューが空であるかの第５の判定を行い、
第５の判定において空でないと判定した場合、高優先キューに格納されたデータを取得して送信し、
第５の判定において空でないと判定した場合、前記低優先キューが空であるかの第６の判定を行い、
第６の判定において空でないと判定した場合、低優先キューに格納されたデータを取得して送信すること
を特徴とする中継装置のデータ変換方法。
【請求項８】
請求項７に記載の中継装置のデータ変換方法において、
送信元情報と宛先情報と変換要否情報の入力を受け付け、
受け付けられた送信元情報と宛先情報と変換要否情報を前記テーブルに設定すること
を特徴とする中継装置のデータ変換方法。
【請求項９】
請求項８に記載の中継装置のデータ変換方法において、
受信されたパケットの送信元情報に基づいて宛先情報を取得し、
取得された宛先情報の個数を繰り返しの回数として、受信されたパケットの送信元情報と取得された宛先情報の１つとに基づくテーブルからの変換要否情報の取得、取得された変換要否情報が変換要であるか変換否であるかの第１の判定、を繰り返すこと
を特徴とする中継装置のデータ変換方法。
【請求項１０】
請求項９に記載の中継装置のデータ変換方法において、
受信されたパケットのデータは、データ構造を有するオブジェクトであり、
受信されたパケットの送信元情報およびオブジェクトＩＤと、取得された宛先情報の１つと、に基づくテーブルからの変換要否情報の取得、取得された変換要否情報が変換要であるか変換否であるかの第１の判定、を繰り返すこと
を特徴とする中継装置のデータ変換方法。
【請求項１１】
中継装置において、
パケットを受信する第１のプラグインと、
前記第１のプラグインにより受信されたパケットを入力し、
入力されたパケットの送信元情報に基づいてテーブルから変換要否情報を取得し、
取得された変換要否情報が変換要であるか変換否であるかの第１の判定を行い、
第１の判定において、取得された変換要否情報が変換要および変換否のいずれでもないと判定した場合、入力されたパケットのデータを変換し、入力されたパケットのデータと変換されたデータとが一致するかの第２の判定を行い、第２の判定において一致すると判定した場合、送信元情報に基づき前記テーブルの変換要否情報に変換否を設定して、変換されたデータを出力し、第２の判定において一致しないと判定した場合、送信元情報に基づき前記テーブルの変換要否情報に変換要を設定して、変換されたデータを出力し、
第１の判定において、取得された変換要否情報が変換要であると判定した場合、入力されたパケットのデータを変換して、変換されたデータを出力し、
第１の判定において、取得された変換要否情報が変換否であると判定した場合、入力されたパケットのデータを出力する転送部と、
前記転送部により出力されたデータを含むパケットを送信する第２のプラグインと、
を備えたことを特徴とする中継装置。
【請求項１２】
請求項１１に記載の中継装置において、
入力されたパケットの送信元情報が前記テーブルに設定されているかの第３の判定を行い、
第３の判定において、設定されていないと判定した場合、変換要否情報として変換要でも変換否でもない情報を、入力されたパケットの送信元情報ともに前記テーブルへ設定すること
を特徴とする中継装置。
【請求項１３】
センサノードと中継装置を有する中継システムにおいて、
前記センサノードは、
センサを示す送信元情報と、前記センサによりセンスされたデータと、データの構造を識別するオブジェクトＩＤとを含むパケットを送信し、
前記中継装置は、
前記センサノードにより送信されたパケットを受信し、
受信されたパケットの送信元情報とオブジェクトＩＤとに基づいてテーブルから変換要否情報を取得し、
取得された変換要否情報が変換要であるか変換否であるかの第１の判定を行い、
第１の判定において、取得された変換要否情報が変換要および変換否のいずれでもないと判定した場合、受信されたパケットのデータを変換し、受信されたパケットのデータと変換されたデータとが一致するかの第２の判定を行い、第２の判定において一致すると判定した場合、送信元情報に基づき前記テーブルの変換要否情報に変換否を設定して、変換されたデータを送信し、第２の判定において一致しないと判定した場合、送信元情報に基づき前記テーブルの変換要否情報に変換要を設定して、変換されたデータを送信し、
第１の判定において、取得された変換要否情報が変換要であると判定した場合、受信されたパケットのデータを変換して、変換されたデータを送信し、
第１の判定において、取得された変換要否情報が変換否であると判定した場合、受信されたパケットのデータを送信すること
を特徴とする中継システム。
【請求項１４】
請求項１３に記載の中継システムにおいて、
前記中継装置は、さらに、
受信されたパケットの送信元情報とオブジェクトＩＤが前記テーブルに設定されているかの第３の判定を行い、
第３の判定において、設定されていないと判定した場合、変換要否情報として変換要でも変換否でもない情報を、入力されたパケットの送信元情報ともに前記テーブルへ設定すること
を特徴とする中継システム。
【請求項１５】
請求項１４に記載の中継システムにおいて、
受信されたパケットのデータの変換は、データ構造を変換するデータモデル変換であり、
受信されたパケットのデータと変換されたデータとの一致は、ビット列の一致であること
を特徴とする中継システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継システム、中継装置、およびそのデータ変換方法に関する。
【背景技術】
【０００２】
特許文献１には、撮像手段による撮影により生成された第１のフォーマットの画像データを、第１の格納手段によって記憶手段の第１の記憶領域に格納するため、この画像データを第１の記憶領域から第２の記憶領域に移動させるとき、画像データを第１のフォーマットから第２のフォーマットに変換することが開示されている。
【０００３】
また、特許文献２には、第１のエンドポイントの端末から前記第１の構造化文書を受信して、前記第１の変換文書を参照して、第２のエンドポイントの端末へ出力される前記第２の構造化文書に変換して出力する変換文書実行手段が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２３５７３２号公報
【特許文献２】特開２０１２−２７６２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１、２に開示された技術を用いれば、フォーマットや構造化文書を変換することは可能となる。しかしながら、特許文献１、２には多様なデータ構造を変換する技術、特に多様なデータ構造を効率よく変換する技術の開示は見当たらない。近年のネットワークでは多様なデータ構造（データモデル）のデータが通信されており、通信における送信元のデータモデルから宛先のデータモデルへのデータモデル変換が必要とされている。
【０００６】
そこで、本発明は低変換コストで多様なデータモデルを変換することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る代表的な中継装置のデータ変換方法は、パケットを受信し、受信されたパケットの送信元情報に基づいてテーブルから変換要否情報を取得し、取得された変換要否情報が変換要であるか変換否であるかの第１の判定を行い、第１の判定において、取得された変換要否情報が変換要および変換否のいずれでもないと判定した場合、受信されたパケットのデータを変換し、受信されたパケットのデータと変換されたデータとが一致するかの第２の判定を行い、第２の判定において一致すると判定した場合、送信元情報に基づいて前記テーブルの変換要否情報に変換否を設定し、第２の判定において一致しないと判定した場合、送信元情報に基づいて前記テーブルの変換要否情報に変換要を設定し、第１の判定において、取得された変換要否情報が変換要であると判定した場合、受信されたパケットのデータを変換することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、低変換コストで多様なデータモデルを変換することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】システムの例を示す図である。
【図２】転送処理の例を示す図である。
【図３】パケットの例を示す図である。
【図４】データモデル変換の例を示すフローチャートである。
【図５】経路テーブルの例を示す図である。
【図６】変換要否管理テーブルの例を示す図である。
【図７】データモデル変換テーブルの例を示す図である。
【図８】経路情報登録の処理の例を示すフローチャートである。
【図９】経路情報削除の処理の例を示すフローチャートである。
【図１０】データモデルの変換処理の例を示すフローチャートである。
【図１１】クラシファイアの処理の例を示すフローチャートである。
【図１２】送出処理の例を示すフローチャートである。
【図１３】中継装置のブロック構成の例を示す図である。
【図１４】システムのブロック構成の例を示す図である。
【図１５】経路情報を登録するシーケンスの例を示す図である。
【図１６】経路情報を削除するシーケンスの例を示す図である。
【図１７】センサを制御するシーケンスの例を示す図である。
【図１８】センサから観測データを取得するシーケンスの例を示す図である。
【発明を実施するための形態】
【００１０】
図１は、システム構成の例を示しており、現場側に位置する複数のセンサ１００、１０１、１０２や、図示を省略した複数のアクチュエータが混在して接続されるセンサノード２００、２０１、センタ側に位置するクラウドや遠隔地に配備されるサーバなどの計算機システム４００で動作する複数のアプリケーション４０１、４０２、およびそれら現場側とセンタ側のデータ通信を中継する中継装置３００から構成される。
【００１１】
中継装置３００は、現場側に配備されるセンサノード２００、２０１で使用される多様なプロトコルを終端するためのプラグインインスタンス３１１、３１２を実行し、センタ側に配備されるクラウドなどの計算機システム４００で実行されるアプリケーション４０１、４０２で利用される多様なプロトコルを終端するためのプラグインインスタンス３４１、３４２を実行する。
【００１２】
ここで、プロトコルを終端するとは、それまでのプロトコルとは異なるプロトコルにするということである。異なるプロトコルとは、例えばパケット内に含まれる情報は同じであっても、ネットワークのシリアル通信と装置内部バスのパラレル通信とのプロトコルの違いであってもよく、通信の手順の違いであってもよい。
【００１３】
中継装置３００は、中継装置３００が有する転送処理３２０を外部のアプリケーション４０１、４０２から制御するための管理ポート３３０を有する。アプリケーション４０１，４０２の例えばアプリケーション４０１は、センサ１００、１０１、１０２の例えばセンサ１００から観測データを取得するため、取得対象のセンサ１００が接続されているセンサノード２００との通信路が確立するように、管理ポート３３０を介して、アプリケーション４０１が接続されているプラグインインスタンス３４１と、センサノード２００が接続されているプラグインインスタンス３１１とを接続するための経路情報を登録する。
【００１４】
この登録の際には、プラグインインスタンス３１１、３４１のそれぞれが使用するデータモデル変換の変換ルールを記述したファイルも併せて指定される。このとき、アプリケーション４０１とセンサノード２００が、あるオブジェクトのデータ形式の異なるデータモデルを用いていても、転送処理３２０がデータモデル変換を行うか否かを判定する。
【００１５】
このような、データモデル変換を行うか否かを判定するためには、一般的には交換されるオブジェクトのレイアウトや構成されるデータ型を、送信元と宛先の計算機環境の違いに基づいて比較する必要がある。これに対して、転送処理３２０は、特定の送信元から特定の宛先へ特定のオブジェクトが初めて交換される際に、データモデル変換を行って、データモデル変換の前後のビット列を比較し、完全に一致しているか、１ビットでも異なっているかを管理テーブルに記録し、それ以降は、記録された管理テーブルを参照することにより、データモデル変換を行うか否かを判定する。
【００１６】
これにより、ある送信元から宛先へオブジェクトを中継する際は、記録された管理テーブルを参照して、データモデル変換を行っても変換前後のビット列が一致する場合は、データモデル変換処理を省く。一方、データモデル変換が変換前後のビット列が一致しない場合は、データモデル変換の変換ルールにしたがい、送信元で使用されるデータモデルから共通のデータモデルに変換し、その後、共通のデータモデルから宛先で使用されるデータモデルに変換するというデータモデル変換により、アプリケーション４０１とセンサノード２００との間でオブジェクトを交換することが可能になる。
【００１７】
アプリケーション４０１は、センサ１００からの観測データを受信せず、センサ１００が接続されるセンサノード２００を今後使用しない場合、アプリケーション４０１が接続されるプラグインインスタンス３４１と、センサノード２００が接続されるプラグインインスタンス３１１との間に確立された通信路の経路情報を、管理ポート３３０を介して、削除する。
【００１８】
現場側のセンサノード２００とセンタ側のアプリケーション４０１の間に通信路が確立されている間、センサノード２００はアプリケーション４０１に対して観測されたセンサデータを送出することが可能であり、一方、アプリケーション４０１はセンサノード２００に対してセンサ１００およびセンサノード２００の制御命令を送出することが可能である。
【００１９】
アプリケーション４０１、４０２は、現場側に配備されるセンサノード２００、２０１と中継装置３００を接続するためのプラグインインスタンス３１１、３１２、およびセンタ側の計算機システム４００で実行されるアプリケーション４０１、４０２と中継装置３００を接続するためのプラグインインスタンス３４１、３４２を生成するためのプラグインプログラムそれぞれを、使用する前に、中継装置３００にダウンロードする。また、アプリケーション４０１、４０２は、ダウンロードされたプラグインプログラムからプラグインインスタンス３１１、３１２、３４１、３４２を生成するように制御したり、生成されたプラグインインスタンス３１１、３１２、３４１、３４２の実行状態を制御したりする。
【００２０】
なお、プラグインインスタンス３１１、３１２と転送処理３２０との間の通信路、転送処理３２０とプラグインインスタンス３４１、３４２との間の通信路、これらの通信路により構成されるプラグインインスタンス３１１、３１２とプラグインインスタンス３４１、３４２との間の通信路は、図１３を用いて説明するように、プログラムの実行により実現されるインスタンス間通信、プロセス間通信などの通信路であってもよい。
【００２１】
また、センサノード２００とプラグインインスタンス３１１は対応し、センサノード２０１とプラグインインスタンス３１２は対応してもよい。このため、センサ１００とプラグインインスタンス３１１は対応し、センサ１０１とプラグインインスタンス３１１は対応し、センサ１０２とプラグインインスタンス３１２は対応してもよい。さらに、アプリケーション４０１とプラグインインスタンス３４１は対応し、アプリケーション４０２とプラグインインスタンス３４２は対応してもよい。
【００２２】
これらの対応があるため、例えばアプリケーション４０１に対して、複数のプラグインインスタンスの中からプラグインインスタンス３４１が一意に特定されてもよく、これらの対応が情報として中継装置３００あるいは計算機システム４００に記憶されてもよい。
【００２３】
図２は、図１に示す中継装置３００が有する転送処理３２０のブロックの例を示している。転送処理３２０は、データモデル変換を行うデータモデル変換３２１、送信元、宛先、転送するオブジェクトの種別に応じた転送優先度付けを行うクラシファイア３２２、メモリ上に転送データを一時的に格納するキューを優先度毎に構成するバッファ３２３、バッファ３２３に構成される複数の優先度別に構成されているキューからデータを取り出して、宛先に送出する送出処理３２４から構成される。なお、転送処理３２０は転送部と称してもよい。
【００２４】
図３は、図１に示す中継装置３００が扱うデータをやり取りするときに交換されるパケットＰ１０のレイアウトの例を示している。パケットＰ１０は、ヘッダＰ１１とペイロードＰ１５から構成される。ヘッダＰ１１は、パケットＰ１０の宛先を示す宛先Ｐ１２、パケットＰ１０の送信元を示す送信元Ｐ１３、パケットＰ１０のペイロードＰ１５に格納されているオブジェクトの種別を示すオブジェクトＩＤ  Ｐ１４から構成される。
【００２５】
なお、宛先Ｐ１２と送信元Ｐ１３のそれぞれは、センサ１００、１０１、１０２のアドレスとアプリケーション４０１、４０２のアドレスであってもよい。また、宛先Ｐ１２と送信元Ｐ１３のそれぞれが示すアプリケーション４０１、４０２のアドレスは、アプリケーション４０１、４０２のそれぞれを実行する計算機のアドレスであってもよい。
【００２６】
ペイロードＰ１５は、パケットＰ１０のオブジェクト本体であるデータＰ１６で構成される。データＰ１６はいわゆるデータであり、観測された温度のデータや、観測を制御するための観測の間隔などが含まれてもよい。オブジェクトは、例えば観測された温度と湿度の両方を含むためのデータ構造や、観測されたデータか制御のためのデータかの情報も含まれ、これらを含むオブジェクトが識別されるためのオブジェクトのＩＤが予め設定される。
【００２７】
図４は、図２に示す転送処理３２０を構成するデータモデル変換３２１において実施されるデータモデル変換処理のフローチャートＳ１００を示す。データモデル変換３２１は、図１に示すプラグインインスタンス３１１、３１２、３４１、３４２からパケットＰ１０を受信し（ステップＳ１０１）、受信されたパケットＰ１０のヘッダＰ１１の送信元Ｐ１３から送信元の通信路ＩＤを取得し、オブジェクトＩＤ  Ｐ１４を取得し、ペイロードＰ１５のデータＰ１６を取得する（ステップＳ１０２）。この送信元の通信路ＩＤの取得において、パケットＰ１０に含まれる送信ポート番号などが使用されてもよい。
【００２８】
各データモデルの変換ルールが登録され、各宛先通信路および送信元通信路毎に管理されているので、転送処理３２０は、ステップＳ１０２で取得された送信元通信路ＩＤに対応する変換ルールを取得する（ステップＳ１０３）。また、アプリケーション４０１、４０２によって事前に作成された経路テーブルＴ１００から、ステップＳ１０２で取得された送信元通信路ＩＤに対応する１つまたは複数の宛先通信路ＩＤを示すエントリを検索し、送信元通信路ＩＤに対応する各宛先通信路ＩＤを１つずつ選択して以下の処理を繰り返す（ステップＳ１０４）。なお、経路テーブルＴ１００については、図５を用いて後で説明する。
【００２９】
転送処理３２０は、各データモデルの変換ルールが登録され各宛先通信路および送信元通信路毎に管理されているので、ステップＳ１０４で検索により発見された宛先通信路ＩＤの変換ルールを取得し（ステップＳ１０５）、変換要否管理テーブルＴ２００から、ステップＳ１０２で取得された送信元通信路ＩＤとオブジェクトＩＤ、ステップＳ１０４で選択された宛先通信路ＩＤに一致するエントリを検索する（ステップＳ１０６）。なお、検索対象のエントリには、比較の対象となる送信元通信路ＩＤ  Ｔ２０２、宛先通信路ＩＤ  Ｔ２０３、オブジェクトＩＤ  Ｔ２０５が含まれるが、変換要否管理テーブルＴ２００については、図６を用いて後で説明する。
【００３０】
一致するエントリが発見されない場合、転送処理３２０は、変換要否管理テーブルＴ２００にステップＳ１０６で検索に使用された送信元通信路ＩＤ、宛先通信路ＩＤ、オブジェクトＩＤを登録して新規のエントリを追加し（ステップＳ１０７）、追加された新規のエントリの変換要否フラグＴ２０５を“０”に設定する（ステップＳ１０８）。ステップＳ１０６で、一致するエントリが発見された場合、ステップＳ１０７とステップＳ１０８は実施されない。
【００３１】
次に、ステップＳ１０２で取得された送信元通信路ＩＤとオブジェクトＩＤ、ステップＳ１０４で選択された宛先通信路ＩＤに対応する変換要否管理テーブルＴ２００のエントリの変換要否フラグＴ２０５を“−１”、“０”、“１”と比較する（ステップＳ１０９）。変換要否フラグＴ２０５が“−１”であると判定した場合、変換が必要であるので、データＰ１６のオブジェクトに対して変換処理を実施する（ステップＳ１１０）。
【００３２】
変換要否フラグが“０”であると判定した場合、ステップＳ１０８で設定された送信元通信路から宛先通信路へオブジェクトを初めて転送するケースであるので、転送処理３２０は、ステップＳ１０２で取得されたペイロードＰ１５のデータＰ１６を一時的に保存し（ステップＳ１１１）、データＰ１６のオブジェクトに対して変換処理を実施し（ステップＳ１１２）、ステップＳ１１１により一時的に保存された変換前のデータと、ステップＳ１１２による変換後のデータのビット列の比較を行う（ステップＳ１１３）。
【００３３】
比較された２つビット列が完全に一致すると判定されると、転送処理３２０は、変換要否管理テーブルＴ２００の“０”と判定された変換要否フラグＴ２０５に“１”を設定し（ステップＳ１１４）、比較された２つのビット列が１ビットでも異なると判定されると、変換要否管理テーブルＴ２００の“０”と判定された変換要否フラグＴ２０５に“−１”を設定する（ステップＳ１１５）。また、ステップＳ１０９で変換要否フラグＴ２０５が“１”であると判定した場合、データＰ１６のオブジェクトの変換は不要であるので、転送処理３２０は、変換処理を行わずにステップＳ１１６へ進む。
【００３４】
その後、転送処理３２０は、変換されたあるいは変換されなかったオブジェクトをデータＰ１６とするパケットＰ１０をクラシファイア３２２へ送信する（ステップＳ１１６）。ステップＳ１０４に対応して、以上の処理をアプリケーション４０１、４０２によって事前に作成された経路テーブルＴ１００を検索することにより発見された宛先通信路ＩＤを１つずつ選択しながら繰り返す（ステップＳ１１７）。
【００３５】
図５は、図４に示すデータモデル変換処理で参照される経路テーブルＴ１００の構成の例を示す。経路テーブルＴ１００は、各エントリに一意に割り当てられる番号Ｔ１０１、送信元であるプラグインインスタンス３１１、３１２、３４１、３４２と転送処理３２０が接続される通信路を識別する送信元通信路ＩＤ  Ｔ１０２、通信路を介して受信したオブジェクトに対して適用してデータモデル変換を行うための変換ルール（受信時）ＩＤ  Ｔ１０３から構成される
ここで、センサ１００、１０２とプラグインインスタンス３１１、３１２と２つの送信元通信路とは一意に対応しており、送信元通信路ＩＤを特定することにより、センサ１００、１０２のいずれであるかが特定される対応関係であってもよい。このため、送信元通信路ＩＤ  Ｔ１０２のＩＤにより、センサおよびセンサに固有な変換前のデータＰ１６のオブジェクトの構造が特定されてもよい。また、データモデル変換による変換後のオブジェクトは、センサなどに固有でない共通の構造のオブジェクトであってもよい。
【００３６】
さらに、経路テーブルＴ１００は、宛先となるプラグインインスタンス３１１、３１２、３４１、３４２と転送処理３２０が接続される通信路を識別するための宛先通信路ＩＤ  Ｔ１０４、通信路を介して送信されるオブジェクトに対して適用してデータモデル変換を行うための変換ルール（送信時）ＩＤ  Ｔ１０５から構成される。固有と共通は、送信元通信路の説明と同じである。
【００３７】
図５の例では、番号Ｔ１０１が“１”において送信元通信路ＩＤ  Ｔ１０２が“１００”、変換ルール（受信時）ＩＤ  Ｔ１０３が“ｒ１０”であり、番号Ｔ１０１が“２”において宛先通信路ＩＤ  Ｔ１０４が“１００”、変換ルール（送信時）ＩＤ  Ｔ１０５が“ｓ１０”であるので、通信路ＩＤが同じ“１００”の通信路であっても、受信時と送信時で変換ルールが異なる。
【００３８】
また、番号Ｔ１０１が“４”と“５”では送信通信路ＩＤ  Ｔ１０２が“１２０”であっても、宛先通信路ＩＤ  Ｔ１０４が“１２１”と“１２３”で異なり、図４を用いて説明したステップＳ１０４からステップＳ１１７までの繰り返しの対象となる。
【００３９】
経路テーブルＴ１００の各エントリの情報は、アプリケーション４０１、４０２により、データ交換が行われる前に登録される。
【００４０】
図６は、図４に示すデータモデル変換処理で使用される変換要否管理テーブルＴ２００の構成の例を示す。変換要否管理テーブルＴ２００は、各エントリに一意に割り当てられる番号Ｔ２０１、送信元であるプラグインインスタンス３１１、３１２、３４１、３４２と転送処理３２０が接続される通信路を識別するための送信元通信路ＩＤ  Ｔ２０２、宛先となるプラグインインスタンス３１１、３１２、３４１、３４２と転送処理３２０が接続される通信路を識別するための宛先通信路ＩＤ  Ｔ２０３から構成される。これらは、経路テーブルＴ１００の送信元通信路ＩＤ  Ｔ１０２、宛先通信路ＩＤ  Ｔ１０４に対応する。
【００４１】
さらに、変換要否管理テーブルＴ２００は、データＰ１６のオブジェクトの種別を識別するためのオブジェクトＩＤ  Ｔ２０４、図４を用いて説明したようにデータモデル変換を実施するか否かを示す変換要否フラグＴ２０５から構成される。変換要否管理テーブルＴ２００のエントリは、図４に示した例ではステップＳ１０７にて、エントリが無い状態でオブジェクトが初めて交換される際に作成される。
【００４２】
また、アプリケーション４０１、４０２は変換要否管理テーブルＴ２００のエントリを事前に作成してもよい。このように事前にエントリを作成することにより、ステップＳ１１３で１回は必ず実施されるデータモデル変換前後のデータの比較は行われずに済む。そして、データモデル変換が不要なオブジェクトに対してエントリを事前に作成することにより、ステップＳ１１２で必ず実施されるデータモデル変換が省かれて、転送処理３２０の処理負荷を低減することが可能になる。この事前のエントリの作成のために、中継装置３００の外部から入力された情報が、番号Ｔ２０１から変換要否フラグＴ２０５までの各項目に設定されてもよい。
【００４３】
図６の例では、番号Ｔ２０１が“１”から“４”において送信元通信路ＩＤ  Ｔ２０２が“１００”、宛先通信路ＩＤ  Ｔ２０３が“１０２”であるが、オブジェクトＩＤ  Ｔ２０４のＩＤに応じて、変換要否フラグＴ２０５の値が異なり、同じ通信路であっても、変換をする場合と変換をしない場合のあることを示す。なお、オブジェクトの種別については後で説明する。
【００４４】
図７は、図４に示すデータモデル変換処理で実施される変換処理Ｓ１１０、Ｓ１１２で参照されるデータモデル変換テーブルＴ３００の構成の例を示す。データモデル変換テーブルＴ３００は、各エントリに一意に割り当てられる番号Ｔ３０１、変換ルールを適用するプラグインインスタンス３１１、３１２、３４１、３４２を特定するためのプラグインスタンスＩＤ  Ｔ３０２、特定されたプラグインインスタンスに接続される通信路を特定する通信路ＩＤ  Ｔ３０３から構成される。
【００４５】
さらに、データモデル変換テーブルＴ３００は、特定されたプラグインインスタンスにおいてデータモデル変換を実施する際に、特定されたプラグインインスタンスへオブジェクトを送信するときに適用する変換ルールなのか、特定されたプラグインインスタンスからオブジェクトを受信したときに適用する変換ルールなのかを示す適用方向Ｔ３０４、変換ルールを識別するための変換ルールＩＤ  Ｔ３０５、識別された変換ルールのファイル名を示す変換ルールファイル名Ｔ３０６から構成される。
【００４６】
図７の例では、番号Ｔ３０１が“１”において通信路ＩＤ  Ｔ３０３が“１００”であり、変換ルールＩＤ  Ｔ３０５が“ｓ１０”であることは、図５に示した経路テーブルＴ１００の番号Ｔ１０１が“２”の情報に対応しており、適用方向Ｔ３０４が“送信時”であり、プラグインインスタンスＩＤ  Ｔ３０２が“３１１”であり、変換ルールファイル名Ｔ３０６が“ｆｓ１０”であることを示す。
【００４７】
番号Ｔ３０１が“２”において通信路ＩＤ  Ｔ３０３が“１００”であり、変換ルールＩＤ  Ｔ３０５が“ｒ１０”であることは、図５に示した経路テーブルＴ１００の番号Ｔ１０１が“１”の情報に対応しており、適用方向Ｔ３０４が“受信時”であり、プラグインインスタンスＩＤ  Ｔ３０２が“３１１”であり、変換ルールファイル名Ｔ３０６が“ｆｒ１０”であることを示す。なお、データモデル変換テーブルＴ３００の各エントリの情報は、アプリケーション４０１、４０２により、データ交換が行われる前に登録される。
【００４８】
図８は、図１に示すアプリケーション４０１、４０２による経路情報の登録要求に対して、転送処理３２０で実施される経路情報登録処理のフローチャートＳ２００を示す。まず転送処理３２０は、アプリケーション４０１、４０２から経路情報登録要求を受信する（ステップＳ２０１）。この経路情報登録要求は、送信元となるプラグインプログラム、送信元のプラグインプログラムから受信したオブジェクトに適用される変換ルール、宛先となるプラグインプログラム、宛先のプラグインプログラムに送信するオブジェクトに適用される変換ルールが含まれる。
【００４９】
また、経路情報登録要求は、要求の発行元の情報として、アプリケーション４０１またはアプリケーション４０２を識別する情報を含む。この情報は、これらのアプリケーションを実行する計算機を識別する情報であってもよい。転送処理３２０は、受信された経路情報登録要求の発行元の情報が、事前に登録された正しい発行元の情報かを比較する（ステップＳ２０２）。そして、比較の結果が、登録されておらず正しくない発行元の情報であると判定した場合、登録処理は行われず、権限が無いという情報を返信する（ステップＳ２１０）。
【００５０】
次に、転送処理３２０は、経路情報登録要求に含まれるプラグインプログラムが中継装置３００へ既にダウンロードされて登録されているかを判定する（ステップＳ２０３）。中継装置３００にプラグインプログラムが登録されていないと判定した場合は、登録処理は行われず、要求されたプラグインが無いと返信する（ステップＳ２０９）。
【００５１】
また、転送処理３２０は、経路情報登録要求に含まれるプラグインプログラムの実行中インスタンスがあるかを判定する（ステップＳ２０４）。プラグインプログラムの実行中インスタンスが無いと判定した場合は、登録処理は行われず、要求されたプラグインが無いと返信する（ステップＳ２０９）。
【００５２】
転送処理３２０は、実行中インスタンスのプラグインインスタンスＩＤに基づき、送信元通信路ＩＤと宛先通信路ＩＤを特定し、特定された２つの通信路ＩＤと経路情報登録要求に含まれる２つの変換ルールが一致するエントリが経路テーブルＴ１００に登録されているかを判定する（ステップＳ２０５）。送信元通信路ＩＤ  Ｔ１０２、変換ルール（受信時）ＩＤ  Ｔ１０３、宛先通信路ＩＤ  Ｔ１０４、変換ルール（送信時）ＩＤ  Ｔ１０５のそれぞれがすべて一致するエントリが経路テーブルＴ１００に登録されている、すなわち登録未済みではないと判定した場合、登録処理は行われず、設定済みと返信する（ステップＳ２０８）。
【００５３】
登録されていない、すなわち登録未済みであると判定した場合、転送処理３２０は、既登録でない新たな番号を番号Ｔ１０１に設定して新たなエントリを生成し、ステップＳ２０５で特定された送信元通信路ＩＤと宛先通信路ＩＤのそれぞれを送信元通信路ＩＤ  Ｔ１０２と宛先通信路ＩＤ  Ｔ１０４のそれぞれに設定し、経路情報登録要求に含まれる２つの変換ルールのそれぞれを変換ルール（受信時）ＩＤ  Ｔ１０３と変換ルール（送信時）ＩＤ  Ｔ１０５のそれぞれに設定することにより、経路テーブルＴ１００に登録する（ステップＳ２０７）。
【００５４】
図９は、図１に示すアプリケーション４０１、４０２による経路情報の削除要求に対して、転送処理３２０で実施される経路情報削除処理のフローチャートＳ３００を示す。まず転送処理３２０は、アプリケーション４０１、４０２から経路情報削除要求を受信する（ステップＳ３０１）。この経路情報削除要求は、送信元となるプラグインプログラム、送信元のプラグインプログラムから受信したオブジェクトに適用される変換ルール、宛先となるプラグインプログラム、宛先のプラグインプログラムに送信するオブジェクトに適用される変換ルールが含まれる。
【００５５】
また、経路情報削除要求は、要求の発行元の情報として、アプリケーション４０１またはアプリケーション４０２を識別する情報を含む。この情報は、これらのアプリケーションを実行する計算機を識別する情報であってもよい。転送処理３２０は、受信された経路情報削除要求の発行元の情報が、事前に登録された正しい発行元の情報かを比較する（ステップＳ３０２）。そして、比較の結果が、登録されておらず正しくない発行元の情報であると判定した場合、削除処理は行われず、権限が無いという情報を返信する（ステップＳ３１０）。
【００５６】
次に、転送処理３２０は、経路情報削除要求に含まれるプラグインプログラムが中継装置３００へ既にダウンロードされて登録されているかを判定する（ステップＳ３０３）。中継装置３００にプラグインプログラムが登録されていないと判定した場合は、削除処理は行われず、要求されたプラグインが無いと返信する（ステップＳ３０９）。
【００５７】
また、転送処理３２０は、経路情報削除要求に含まれるプラグインプログラムの実行中インスタンスがあるかを判定する（ステップＳ３０４）。プラグインプログラムの実行中インスタンスが無いと判定した場合は、削除処理は行われず、要求されたプラグインが無いと返信する（ステップＳ３０９）。
【００５８】
転送処理３２０は、実行中インスタンスのプラグインインスタンスＩＤに基づき、送信元通信路ＩＤと宛先通信路ＩＤを特定し、特定された２つの通信路ＩＤと経路情報削除要求に含まれる２つの変換ルールが一致するエントリが経路テーブルＴ１００に登録されているかを判定する（ステップＳ３０５）。送信元通信路ＩＤ  Ｔ１０２、変換ルール（受信時）ＩＤ  Ｔ１０３、宛先通信路ＩＤ  Ｔ１０４、変換ルール（送信時）ＩＤ  Ｔ１０５のそれぞれがすべて一致するエントリが経路テーブルＴ１００に登録されていないと判定した場合、削除処理は行われず、登録なしと返信する（ステップＳ３０８）。
【００５９】
登録されていると判定した場合、転送処理３２０は、ステップＳ３０５で登録されていると判定されたエントリを経路テーブルＴ１００から削除し（ステップＳ３０７）、削除されたエントリの送信元通信路ＩＤ  Ｔ１０２と宛先通信路ＩＤ  Ｔ１０４それぞれの両方が一致する送信元通信路ＩＤ  Ｔ２０２と宛先通信路ＩＤ  Ｔ２０３のエントリを変換要否管理テーブルＴ２００からすべて削除する。
【００６０】
図１０は、図４に示すデータモデル変換処理で実施される変換処理Ｓ１１０、Ｓ１１２のフローチャートＳ４００を示す。転送処理３２０は、データモデル変換テーブルＴ３００を参照し、ステップＳ１０２で取得された送信元通信路ＩＤと一致する通信路ＩＤ  Ｔ３０３であって、適用方向Ｔ３０４が“受信時”であるエントリの変換ルールファイル名Ｔ３０６を取得し、取得されたファイル名のファイルとして格納された変換ルールの内容にしたがって、ステップＳ１０１で受信されたパケットＰ１０に含まれるデータＰ１６のオブジェクトから新しいオブジェクトに変換する（ステップＳ４０１）。
【００６１】
次に転送処理３２０は、データモデル変換テーブルＴ３００を参照し、ステップＳ１０４で選択された宛先通信路ＩＤと一致する通信路ＩＤ  Ｔ３０３であって、適用方向Ｔ３０４が“送信時”であるエントリの変換ルールファイル名Ｔ３０６を取得し、取得されたファイル名のファイルとして格納された変換ルールの内容にしたがって、ステップＳ４０１で変換されたオブジェクトから、さらに新しいオブジェクトに変換する（ステップＳ４０２）。
【００６２】
ここで、ステップＳ４０１とステップＳ４０２それぞれの変換ルールは、図４を用いて説明したステップＳ１０３とステップＳ１０５のそれぞれで取得された変換ルールであってもよい。ステップＳ４０１で変換された新しいオブジェクトは、共通の構造のオブジェクトであってもよく、共通の構造のオブジェクトとして、本実施例では説明を省略した処理に使用されてもよい。
【００６３】
データモデル変換処理は、例えばエンディアン（バイトオーダ）の変換であってもよい。エンディアンを変換するライブラリプログラムが提供されており、中継装置３００内の共通のエンディアンとしてビックエンディアンが設定され、アプリケーション４０１のエンディアンとしてリトルエンディアンが設定されている場合、センサノード２００がビックエンディアンのオブジェクトを送信すると、ライブラリプログラムを利用したステップＳ４０１の実行により、共通のビックエンディアンの新しいオブジェクトが作成され、ライブラリプログラムを利用したステップＳ４０２の実行により、アプリケーション４０１のためのリトルエンディアンのオブジェクトが作成される。
【００６４】
このデータモデル変換処理の例では、センサノード２００のビックエンディアンがアプリケーション４０１のリトルエンディアンに変換され、変換前後でエンディアンが異なるので、変換前後のデータのビット列が一致しない。これに対して、センサノード２００がリトルエンディアンのオブジェクトを送信すると、センサノード２００のリトルエンディアンがアプリケーション４０１のリトルエンディアンに変換され、変換前後のエンディアンが一致するので、変換前後のデータのビット列が一致する。さらに、データモデル変換処理は、例えば文字コードの変換であってもよい。
【００６５】
図１１は、図２に示す転送処理３２０に含まれるクラシファイア３２２の処理のフローチャートＳ５００を示す。クラシファイア３２２は、転送処理３２０に含まれるデータモデル変換３２１からパケットＰ１０を受信し（ステップＳ５０１）、受信されたパケットＰ１０の送信元Ｐ１３を取得し（ステップＳ５０２）、宛先Ｐ１２を取得し（ステップＳ５０３）、オブジェクトＩＤを取得する（ステップＳ５０４）。
【００６６】
そして、クラシファイア３２２は、ステップＳ５０２からステップＳ５０４で取得された情報に基づき、予め設定されたルールにしたがって優先度を算出する（ステップＳ５０５）。ここで、送信元と宛先とオブジェクトＩＤの組み合せに優先度が予め付与されたルールが設定されており、このルールの優先度が読み出されることにより算出されてもよい。
【００６７】
また、ステップＳ５０２からステップＳ５０４で取得された情報を使用せず、図４に示したステップＳ１１０により変換処理されるか否かに応じて、優先度が算出されてもよい。例えば、変換要否管理テーブルＴ２００の変換要否フラグＴ２０５が読み出されて、その読み出された値が“−１”であると判定された場合は高優先度と算出され、その読み出された値が“１”であると判定された場合は低優先度と算出されてもよい。
【００６８】
値が“−１”の場合は変換処理が実施されて、データモデル変換３２１に時間がかかるため高優先度とし、値が“１”の場合は変換処理が実施されず、データモデル変換３２１に時間がかからないため低優先度とすることにより、中継装置３００により中継する時間を均等化することが可能となる。そして、クラシファイア３２２は、算出された優先度に基づき、次段のバッファ３２３の優先度毎のキューにパケットＰ１０を格納する（ステップＳ５０６）。
【００６９】
図１２は、図２に示す転送処理３２０に含まれる送出処理３２４のフローチャートＳ６００を示す。送出処理３２４は、予め設定された時刻あるいは時間間隔で、バッファ３２３のキューにデータ（パケットＰ１０）が格納されているかに基づき以下の処理を繰り返す（ステップＳ６０１）。
【００７０】
最初に送出処理３２４は、バッファ３２３の最も優先度が高く設定された高優先キューにデータが格納されているかを判定する（ステップＳ６０２）。高優先キューにデータが格納されていると判定した場合、送出処理３２４は、高優先キューからデータを取り出して（ステップＳ６０３）、宛先となるプラグインインスタンス３１１、３１２、３４１、３４２に送信する（ステップＳ６０４）。
【００７１】
高優先キューにデータが格納されていないと判定した場合、送出処理３２４は、バッファ３２３の中程度の優先度が設定された中優先キューにデータが格納されていないかを判定する（ステップＳ６０５）。中優先キューにデータが格納されていると判定した場合、送出処理３２４は、中優先キューからデータを取り出して（ステップＳ６０６）、宛先となるプラグインインスタンス３１１、３１２、３４１、３４２に送信する（ステップＳ６０７）。
【００７２】
中優先キューにデータが格納されていないと判定した場合、送出処理３２４は、バッファ３２３の最も低い優先度が設定された低優先キューにデータが格納されていないかを判定する（ステップＳ６０８）、低優先キューにデータが格納されていると判定した場合、低優先キューからデータを取り出して（ステップＳ６０９）、宛先となるプラグインインスタンスに送信する（ステップＳ６１０）。そして、送出処理３２４は、ステップＳ６０２からステップＳ６１０までの一連の処理を繰り返す（ステップＳ６１１）。
【００７３】
図１３は、中継装置３００のブロックの例を示す。中継装置３００は、演算処理を行うＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３９２、ＣＰＵ３９２に接続されてプログラムやデータが格納されるメモリ３９１、ＣＰＵ３９２に接続されたＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）インターフェース３９３、Ｉ／Ｏインターフェース３９３に接続されてデータを保持する不揮発性のストレージ３９４、Ｉ／Ｏインターフェース３９３に接続されてセンタ側ネットワークとの間で通信を行うセンタ側通信部３９６、Ｉ／Ｏインターフェース３９３に接続されて現場側ネットワークとの間で通信を行う現場側通信部３９５から構成される。
【００７４】
Ｉ／Ｏインターフェース３９３は、例えば、ＰＣＩｅｘｐｒｅｓｓ（登録商標）のバスアダプタであり、ＣＰＵ３９２とＩ／Ｏデバイスとの間の通信を行う。メモリ３９１には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）３６０がロードされてＣＰＵ３９２によって実行される。
【００７５】
また、メモリ３９１には、転送処理プログラム３５４がロードされてＣＰＵ３９２によって実行される。転送処理プログラム３５４は、ＣＰＵ３９２の実行により、転送処理３２０を実現するためのプログラムであり、データモデル変換処理のフローチャートＳ１００、経路情報登録処理のフローチャートＳ２００、経路情報削除処理のフローチャートＳ３００、変換処理のフローチャートＳ４００、クラシファイア処理のフローチャートＳ５００、送出処理のフローチャートＳ６００で表されるプログラムである。
【００７６】
転送処理プログラム３５４がＣＰＵ３９２により実行されると、メモリ３９１に格納された経路テーブル３５１、変換要否管理テーブル３５２、データモデル変換テーブル３５３が使用される。経路テーブル３５１の内容は経路テーブルＴ１００、変換要否管理テーブル３５２の内容は変換要否管理テーブルＴ２００、データモデル変換テーブル３５３の内容はデータモデル変換テーブルＴ３００である。
【００７７】
また、メモリ３９１にプラグインプログラムの実行時のインスタンスとしてプラグインインスタンス３１１、３１２、３４１、３４２などが生成され、ＣＰＵ３９２によって実行される。転送処理プログラム３５４とプラグインインスタンス３１１、３１２、３４１、３４２は、ＯＳ３６０が提供する通信機能を利用することで相互に通信するように作成されており、この通信機能はいわゆるパイプやポートで実現され、通信路はパイプやポートであって、通信路ＩＤはパイプ番号やポート番号であってもよい。
【００７８】
プラグインインスタンス３１１、３１２、３４１、３４２はＣＰＵ３９２により実行されて、Ｉ／Ｏインターフェース３９３を介して現場側通信部３９５やセンタ側通信部３９６と通信し、現場側通信部はセンサノード２００、２０１と通信し、センタ側通信部３９６はアプリケーション４０１、４０２と通信する。なお、図１に示した管理ポート３３０は論理的なポートであり、物理的にはセンタ側通信部３９６を使用するポートである。
【００７９】
図１４は、システムの特に現場側とセンタ側のブロックの例を示す。このシステムはセンタ側でクラウドやサーバなどで提供される計算機システム４００、現場側でセンサ１００、１０１やアクチュエータ１０３に接続しているセンサノード２００、計算機システム４００とネットワーク６００を介して接続し、センサノード２００とネットワーク５００を介して接続する中継装置３００から構成される。
【００８０】
計算機システム４００は、クラウドやサーバなどで提供され、プログラムやデータが格納されるメモリ４９１と、メモリ４９１に格納されたプログラムを実行して演算処理を行うＣＰＵ４９２と、ＣＰＵ４９２に接続されたＩ／Ｏインターフェース４９３と、Ｉ／Ｏインターフェース４９３に接続されてデータを保持する不揮発性のストレージ４９４と、Ｉ／Ｏインターフェース４９３に接続されてセンタ側のネットワーク６００との間で通信を行うセンタ側通信部４９６から構成される。
【００８１】
Ｉ／Ｏインターフェース４９３は、例えば、ＰＣＩｅｘｐｒｅｓｓのバスアダプタであり、ＣＰＵ４９２とＩ／Ｏデバイスとの間の通信を行う。メモリ４９１には、ＯＳ４６０がロードされてＣＰＵ４９２によって実行される。また、メモリ４９１には、アプリケーション４０１、４０２がロードされてＣＰＵ３９２によって実行される。
【００８２】
ここで、計算機システム４００には、図示の省略されたキーボード、マウス、ディスプレイなどの入出力装置が接続され、アプリケーション４０１、４０２のＣＰＵ４９２による実行に応じてデータが入出力されてもよい。また、ネットワーク６００に他の計算機システムが接続され、計算機システム４００はネットワーク６００を介して他の計算機システムからデータが入出力されてもよい。
【００８３】
中継装置３００は、図１４を用いて説明したとおりであり、図１４に示した構成と同じ構成には同じ符号を付して説明を省略する。センタ側通信部３９６はセンタ側のネットワーク６００に接続されて、計算機システム４００と通信する。現場側通信部３９５は現場側のネットワーク５００に接続されて、センサノード２００と通信する。
【００８４】
図１４では、ネットワーク５００とネットワーク５００はそれぞれ１個の例を示すが、それぞれが複数のネットワークから構成されてもよい。また、例えば、１つのネットワーク６００において、２つの仮想的なネットワークあるいは２つの論理的なパスを生成し、生成された２つのそれぞれを、図１に示したプラグインインスタンス３４１とアプリケーション４０１との通信路、およびプラグインインスタンス３４２とアプリケーション４０２との通信路としてもよい。
【００８５】
センサノード２００は、プログラムやデータを格納するメモリ２９１と、メモリ２９１に格納されたプログラムを実行して演算処理を行うＣＰＵ２９２と、ＣＰＵ２９２に接続されたＩ／Ｏインターフェース２９３と、Ｉ／Ｏインターフェース２９３に接続されてデータを保持する不揮発性のストレージ２９４と、Ｉ／Ｏインターフェース２９３に接続されてセンタ側のネットワーク５００との間で通信を行う現場側通信部２９６と、Ｉ／Ｏインターフェース２９３に接続されてセンサ１００、１０１およびアクチュエータ１０３と通信を行うフィールド側通信部２９５から構成される。
【００８６】
Ｉ／Ｏインターフェース２９３は、例えば、ＰＣＩｅｘｐｒｅｓｓのバスアダプタであり、ＣＰＵ２９２とＩ／Ｏデバイスと間の通信を行う。メモリ２９１には、ＯＳ２６０がロードされてＣＰＵ２９２によって実行される。また、メモリ２９１には、観測プログラム２１２がロードされてＣＰＵ２９２によって実行される。さらに、メモリ２９１には、オブジェクトＩＤ管理プログラム２１１がロードされてＣＰＵ２９２によって実行される。
【００８７】
観測プログラム２１２は、センサノード２００にフィールド側通信部２９５を介して接続されたセンサ１００、１０１からの観測データの取得、観測頻度や観測精度などの観測条件の設定、およびアクチュエータ１０３の動作制御などを実施するためのプログラムである。
【００８８】
オブジェクトＩＤ管理プログラム２１１は、観測プログラム２１２の実行によりセンサ１００、１０１から取得されたセンサ１００、１０１が観測した生データを、予め設定されたオブジェクトＩＤに対応したオブジェクトのフォーマットに整形してメモリ２９１またはストレージ２９４に格納するプログラムであり、このためのオブジェクトＩＤを管理するプログラムである。例えば、センサ１００、１０１が観測した生データはアナログ信号のデータであり、整形されたデータはデジタル信号のデータであってビット列であってもよい。
【００８９】
そして、観測プログラム２１２は、予め設定された観測条件に基づいてセンサ１００、１０１から取得し、オブジェクトＩＤ管理プログラム２１１によってオブジェクトＩＤが示す形式に整形されたデータを、現場側通信部２９６を使い、ネットワーク５００を介して、中継装置３００に送信するプログラムでもある。
【００９０】
図１５は、経路情報を登録するシーケンスの例を示す。これはシステムの初期設定でもあり、システムが、センサ１００、センサノード２００、（現場側）プラグインインスタンス３１１、転送処理３２０、（センタ側）プラグインインスタンス３４１、アプリケーション４０１で構成される例である。
【００９１】
アプリケーション４０１は、複数のセンサの中から利用するセンサ１００を決定し（ステップＦ１０１）、利用するセンサ１００が接続されており、利用するセンサノード２００を特定し（ステップＦ１０２）、センサノード２００と通信を行うために使用するプラグインインスタンス３１１、３４１を特定する（ステップＦ１０３）。
【００９２】
ここで、センサ１００の決定は、計算機システム４００の外部から入力されることによる決定であってもよいし、アプリケーション４０１のプログラムに、センサ１００のＩＤを変数へ代入するステップがあることによる決定であってもよい。センサノード２００とプラグインインスタンス３１１、３４１の特定は、図１に示した各部の接続構成の情報が予め設定され、その接続構成の情報に基づいた特定であってもよいし、計算機システム４００の外部から入力されることによる特定であってもよい。
【００９３】
アプリケーション４０１は、さらにデータモデル変換ルールを特定し（ステップＦ１０４）、センサ１００と通信をするために追加する経路情報を作成し（ステップＦ１０５）、作成された経路情報の登録要求を中継装置３００の転送処理３２０に送信する（ステップＦ１０６）。
【００９４】
ここで、データモデル変換ルールの特定は、センサ１００とアプリケーション４０１との組み合せ、あるいはプラグインインスタンス３１１とプラグインインスタンス３４１との組み合せに対して予め設定されたデータモデル変換ルールと、ステップＦ１０１やステップＦ１０３により特定された情報とに基づいて特定であってもよいし、計算機システム４００の外部から入力されることによる特定であってもよい。
【００９５】
また、ステップＦ１０５の経路情報の作成は、図５に示した経路テーブルＴ１００の各項目の作成であり、図８を用いて処理が実施されてもよい。
【００９６】
転送処理３２０は、アプリケーション４０１から送信された経路情報の登録要求を管理ポート３３０から受信して、経路情報の登録処理を実施し（ステップＦ１０７）、経路情報の登録処理の実行結果を、アプリケーション４０１に送信する（ステップＦ１０８）。アプリケーション４０１は、実行結果を受信し（ステップＦ１０９）、受信された実行結果が成功であると判定すれば、転送処理３２０を含む中継装置３００を介してセンサ１００と通信する。
【００９７】
経路情報の登録は、メモリ３９１の経路テーブル３５１への書き込みであって、経路テーブルＴ１００の各項目が登録されてもよい。また、ステップＦ１０７において、メモリ３９１のデータモデル変換テーブル３５３への書き込みが実施され、データモデル変換テーブルＴ３００の各項目が登録されてもよい。
【００９８】
図１６は、経路情報を削除するシーケンスの例を示す。これはシステム内のリソースの解放でもあり、システムは図１５に示した構成と同じ構成の例である。アプリケーション４０１は、複数のセンサの中から利用を中止するセンサ１００を決定し（ステップＦ２０１）、利用を中止するセンサ１００が接続されており、利用を中止するセンサノード２００を特定し（ステップＦ２０２）、センサノード２００と通信を行うために使用されていたプラグインインスタンス３１１、３４１を特定し（ステップＦ２０３）、利用されていたデータモデル変換ルールを特定する（ステップＦ２０４）。
【００９９】
ここで、ステップＦ２０１からステップＦ２０４の決定および特定は、プログラムとしては、図１５を用いて説明したステップＦ１０１からステップＦ１０４の決定および特定と同じ処理であってもよい。アプリケーション４０１は、センサ１００との通信に利用されていた経路情報の削除要求を作成し（ステップＦ２０５）、作成された経路情報の削除要求を中継装置３００の転送処理３２０に送信する（ステップＦ２０６）。ステップＦ２０５の経路情報の作成は、図５に示した経路テーブルＴ１００の各項目の作成であり、図９を用いて処理が実施されてもよい。
【０１００】
転送処理３２０は、アプリケーション４０１から送信された経路情報の削除要求を管理ポート３３０から受信して、経路情報の削除処理を実施し（ステップＦ２０７）、経路情報の削除処理の実行結果を、アプリケーション４０１に送信する（ステップＦ２０８）。アプリケーション４０１は、実行結果を受信し（ステップＦ２０９）、受信された実行結果が成功でないと判定すれば、計算機システム４００の外部へ警告を出力してもよい。
【０１０１】
経路情報の削除は、メモリ３９１の経路テーブル３５１への無効を示す情報の書き込みであって、経路テーブルＴ１００の各項目が削除されてもよい。また、ステップＦ２０７において、メモリ３９１のデータモデル変換テーブル３５３への無効を示す情報の書き込みが実施されることにより、データモデル変換テーブルＴ３００の各項目が削除されてもよい。
【０１０２】
図１７は、センサ１００をアプリケーション４０１から制御するシーケンスの例を示す。これはセンサ１００の観測頻度などの観測条件を設定する例であり、システムは図１５に示した構成と同じ構成の例である。アプリケーション４０１は、センサ１００の観測条件を決定し（ステップＦ３０１）、センサ１００に観測条件を設定するための命令を示すオブジェクトＩＤを選択し（ステップＦ３０２）、選択されたオブジェクトＩＤにしたがって設定されるパラメータ値などを用いてオブジェクトを整形し（ステップＦ３０３）、プラグインインスタンス３４１に送信する（ステップＦ３０４）。
【０１０３】
観測条件の決定は、例えば他の観測データに基づく観測頻度の決定であってもよく、温度が予め設定された閾値以上になったことを判定し、温度の観測頻度を高くするような検定であってもよい。このため、オブジェクトＩＤは観測頻度を設定するための命令を示すＩＤであってもよく、設定されるパラメータ値は予め設定された時間内の観測の回数であってもよく、回数の採り得る最大値に応じて、回数を表すために割り当てられるビット数に整形されてもよい。
【０１０４】
プラグインインスタンス３４１は、アプリケーション４０１との通信のプロトコルを終端してデータを受信し（ステップＦ３０５）、受信されたデータを転送処理３２０に送信する（ステップＦ３０６）。
【０１０５】
転送処理３２０は、プラグインインスタンス３４１からデータを受信し（ステップＦ３０７）、経路テーブル３５１を参照してデータモデル変換のための変換ルールを取得し（ステップＦ３０８）、変換要否フラグＴ２０５に応じてデータモデル変換を実施し（ステップＦ３０９）、ステップＦ３０９で出力されるデータをプラグインインスタンス３１１に送信する（ステップＦ３１０）。ここで、ステップＦ３０８とステップＦ３０９は、図４、１０を用いて説明した処理であってもよい。
【０１０６】
プラグインインスタンス３１１は、転送処理３２０からデータを受信し（ステップＦ３１１）、センサノード２００が使用する通信のプロトコルにしたがって、受信されたデータをセンサノード２００に送信する（ステップＦ３１２）。
【０１０７】
センサノード２００は、プラグインインスタンス３１１からデータを受信し（ステップＦ３１３）、観測プログラム２１２を実行して、受信されたデータを解析し（ステップＦ３１４）、解析結果に応じたオブジェクトＩＤ管理プログラムの実行により、センサ１００に送信するオブジェクトへ整形する（ステップＦ３１５）。この整形は、例えば、受信されたデータに含まれる回数のビット数より、センサ１００内のデータとして回数のビット数が多い場合、受信されたデータに含まれる回数のビット数をセンサ１００内のデータの回数のビット数に変更する整形である。
【０１０８】
そして、センサノード２００は、観測プログラム２１２を実行して、整形されたデータを設定命令としてセンサ１００に送信する（ステップＦ３１６）。センサ１００は、センサノード２００から送信された設定命令を受信し（ステップＦ３１７）、設定命令にしたがってセンサ１００の機器設定を行う（ステップＦ３１８）。
【０１０９】
図１８は、センサ１００の観測データを取得して、アプリケーション４０１が分析処理を行うシーケンスの例を示す。システムは図１５に示した構成と同じ構成の例である。センサ１００は、予め設定された観測条件にしたがって観測し（ステップＦ４０１）、観測された生データをセンサノード２００に送信する（ステップＦ４０２）。センサノード２００は、センサ１００により観測された生データを受信する（ステップＦ４０３）。
【０１１０】
センサノード２００は、観測プログラム２１２を実行して、観測された生データが準拠すべきオブジェクトＩＤを選定し（ステップＦ４０４）、オブジェクトＩＤ管理プログラム２１１を実行して、観測された生データを、選定されたオブジェクトＩＤに準拠したオブジェクトに整形し（ステップＦ４０５）、観測プログラム２１２を実行して、整形されたオブジェクトをプラグインインスタンス３１１に送信する（ステップＦ４０６）。
【０１１１】
ここで、例えば、観測された生データが温度のデータであり、オブジェクトＩＤは温度のＩＤであってもよく、温度の採り得る最大値に応じて、温度を表すために割り当てられるビット数に整形されてもよい。
【０１１２】
プラグインインスタンス３１１は、センサノード２００が使用する通信のプロトコルを終端して、データを受信し（ステップＦ４０７）、受信されたデータを転送処理３２０に送信する（ステップＦ４０８）。
【０１１３】
転送処理３２０は、プラグインインスタンス３１１から送信されたデータを受信し（ステップＦ４０９）、経路テーブル３５１を参照してデータモデル変換のための変換ルールを取得し（ステップＦ４１０）、変換要否フラグＴ２０５に応じてデータモデル変換を実施し（ステップＦ４１１）、ステップＦ４１１で出力されるデータをプラグインインスタンス３４１に送信する（ステップＦ４１２）ここで、ステップＦ４１０とステップＦ４１１は、図４、１０を用いて説明した処理であってもよく、ステップＦ４１１とステップＦ１２は、図１１、１２を用いて説明した処理を含んでもよい。
【０１１４】
プラグインインスタンス３４１は、転送処理３２０から送信されたデータを受信し（ステップＦ４１３）、アプリケーション４０１が使用する通信のプロトコルにしたがって、受信されたデータをアプリケーション４０１に送信する（ステップＦ４１４）。
【０１１５】
アプリケーション４０１は、プラグインインスタンス３４１から送信されたデータを受信し（ステップＦ４１５）、受信されたデータからセンサ１００の観測したデータを抽出して分析処理を実施する（ステップＦ４１６）。そして、アプリケーション４０１は、分析処理の結果に応じて、センサノード２００に接続されるセンサ１００、１０１やアクチュエータ１０３に実施するフィードバック制御の内容を決定する（ステップＦ４１７）。フィードバック制御の内容については、データモデル変換などとは関係がないため、説明を省略する。
【０１１６】
以上で説明したように、データモデル変換の必要な送信元と宛先とを含む多様なデータモデルの通信において、データモデル変換を１度実行し、データモデル変換の効果がないと、その送信元と宛先の関係に対してデータモデル変換を省略することができるため、低変換コストで通信を可能にすることができる。また、データモデル変換の有無に応じて優先度を設定することができ、中継装置による中継の遅延を均一化できる。
【符号の説明】
【０１１７】
１００、１０１、１０２  センサ
２００、２０１  センサノード
３００  中継装置
３１１、３１２、３４１、３４２  プラグインインスタンス
３２０  転送処理
３２１  データモデル変換
４００  計算機システム
４０１、４０２  アプリケーション
【図１】
0006461845.tif 000002
【図２】
0006461845.tif 000003
【図３】
0006461845.tif 000004
【図４】
0006461845.tif 000005
【図５】
0006461845.tif 000006
【図６】
0006461845.tif 000007
【図７】
0006461845.tif 000008
【図８】
0006461845.tif 000009
【図９】
0006461845.tif 000010
【図１０】
0006461845.tif 000011
【図１１】
0006461845.tif 000012
【図１２】
0006461845.tif 000013
【図１３】
0006461845.tif 000014
【図１４】
0006461845.tif 000015
【図１５】
0006461845.tif 000016
【図１６】
0006461845.tif 000017
【図１７】
0006461845.tif 000018
【図１８】
0006461845.tif 000019