(57)【要約】【課題】  サーバーを使用せず多数のクライアント機器のみで自律的にグループ間通信機能を実現する非同期型マルチキャストミドルウェアを用いた機械設備間通信システムを提供する。【解決手段】  ネットワーク２００には少なくとも１つ以上の産業ロボットなどの機械設備１００が接続されている。各機械設備１００にはデータ通信Ｉ／Ｆ１０とアプリケーションプログラム３０に加え、マシンツーマシン型非同期マルチキャストを可能とするミドルウェアプログラムを備えている。ミドルウェアプログラム２０はミドルウェアプログラム２０間において論理チャンネル管理機能２１と、論理チャンネルに属する機械設備１００が存在するセグメント２１０に対して通信データを配信する論理チャンネルデータ配信機能２２、データスクリーニング機能２３とを備え、マシンツーマシン型非同期マルチキャスト通信を可能とした。【選択図】  図１
2011053978.tif 000002
【特許請求の範囲】
【請求項１】
２台以上の機械設備において、前記機械設備間のデータ通信手段となるネットワークリソースと、アプリケーションプログラムと、マシンツーマシン型非同期マルチキャストを可能とするミドルウェアプログラムを装備し、前記機械設備間に構築した論理チャンネルに属する前記機械設備同士がデータの送受信を行う機械設備間通信システムであって、
前記ミドルウェアプログラムのすべてにおいて、前記論理チャンネルごとに存在する論理チャンネル・オーナーに関するデータを格納する論理チャンネル・オーナー管理テーブルと備え、
前記論理チャンネル・オーナーとなっている前記ミドルウェアプログラムにおいて、当該論理チャンネルに属するノードである論理チャンネル・Subscriberに関するデータを格納する論理チャンネル・Subscriber管理テーブルを備え、
送信データを持ち論理チャンネル・Publisherとなる前記ミドルウェアプログラムが、前記論理チャンネル・オーナー管理テーブルを検索して前記論理チャンネル・オーナーのノードに前記送信データを送信する論理チャンネルデータ送受信処理を実行し、
前記論理チャンネル・オーナーである前記ミドルウェアプログラムが、前記論理チャンネル・Subscriber管理テーブルを用いて登録先のノードに対して前記送信データを配信する論理チャンネルデータ集配信処理を実行することにより、マシンツーマシン型非同期マルチキャスト通信を可能としたことを特徴とする機械設備間通信システム。
【請求項２】
前記論理チャンネル・オーナー管理テーブルの検索の結果、前記検索にかかる論理チャンネル・オーナーが存在しない場合、前記論理チャンネル・オーナーとなりたいノードのミドルウェアプログラムが、論理チャンネル・オブジェクトを生成し、自らを前記論理チャンネル・オーナーのノードとして自ら管理する前記論理チャンネル・オーナー管理テーブルに登録するとともに、他のノードのミドルウェアプログラムに対して自らが前記論理チャンネル・オーナーであることを宣言するデータをブロードキャスト送信し、論理チャンネルを構築することを特徴とする請求項１に記載の機械設備間通信システム。
【請求項３】
既存の論理チャンネルに参加したいノードの前記ミドルウェアプログラムは、自らの前記論理チャンネル・オーナー管理テーブルを検索し、検索された論理チャンネル・オーナーに対して参加要求を示すデータをユニキャスト送信し、前記論理チャンネル・オーナーから参加許可を示すデータを受信した場合に、自ら管理する前記論理チャンネル・オーナー管理テーブルに前記論理チャンネル・オーナーのノードを登録し、
前記論理チャンネル・オーナーは、前記参加許可を出す際に、自ら管理する前記論理チャンネル・Subscriber管理テーブルに前記参加要求を示すデータを送信した前記ノードを登録することを特徴とする請求項１または２に記載の機械設備間通信システム。
【請求項４】
ノードが既に参加している論理チャンネルから離脱する場合、前記ノードのミドルウェアプログラムは、自らの前記論理チャンネル・オーナー管理テーブルを検索し、検索された論理チャンネル・オーナーに対して離脱要求を示すデータをユニキャスト送信し、前記論理チャンネル・オーナーから離脱許可を示すデータを受信した場合、自ら管理する前記論理チャンネル・オーナー管理テーブルから前記論理チャンネル・オーナーのノードを削除し、
前記論理チャンネル・オーナーは、前記離脱許可を出す際に、自ら管理する前記論理チャンネル・Subscriber管理テーブルから前記離脱要求を示すデータを送信した前記ノードを削除することを特徴とする請求項１から３のいずれか１項に記載の機械設備間通信システム。
【請求項５】
ノードが既に参加している論理チャンネルから一時離脱する場合、前記ノードのミドルウェアプログラムは、自らの前記論理チャンネル・オーナー管理テーブルを検索し、検索された論理チャンネル・オーナーに対して一時離脱要求を示すデータをユニキャスト送信し、前記論理チャンネル・オーナーから一時離脱許可を示すデータを受信した場合、自ら管理する前記論理チャンネル・オーナー管理テーブルにおいて前記論理チャンネル・オーナーのノードを一時停止状態と扱い、
前記論理チャンネル・オーナーは、前記離脱許可を出す際に、自ら管理する前記論理チャンネル・Subscriber管理テーブルから前記一時離脱要求を示すデータを送信した前記ノードを一時停止状態と扱うことを特徴とする請求項１から４のいずれか１項に記載の機械設備間通信システム。
【請求項６】
機械装置がネットワーク自体から離脱する場合、前記論理チャンネル・オーナーテーブルを検索し、自らのノードが論理チャンネル・オーナーとなっている論理チャンネル・オブジェクトが存在するか否か検知し、存在する場合、前記論理チャンネル・Subscriber管理テーブルに登録されている全てのSubscriberのノードに対して論理チャンネル・オーナー代替希望を示すデータを送信し、前記論理チャンネル・オーナー代替希望に応じるノードから送信されるチャンネル・オーナー適合性情報を受信し、最適であると判断したSubscriberのノードを一つ選択し、前記論理チャンネル・Subscriber管理テーブルデータを全て送信する、論理チャンネル・オーナー移転処理を実行し、
前記論理チャンネル・オーナー管理テーブルを検索し、自らがSubscriberのノードとして参加している論理チャンネルを検知し、当該論理チャンネルからの前記離脱または前記一時離脱処理を実行する請求項４または５に記載の機械設備間通信システム。
【請求項７】
２台以上の機械設備において、前記機械設備間のデータ通信手段となるネットワークリソースと、アプリケーションプログラムと、マシンツーマシン型非同期マルチキャストを可能とするミドルウェアプログラムを装備し、前記機械設備間に構築した論理チャンネルに属する前記機械設備同士がデータの送受信を行う機械設備間通信方法であって、
前記ミドルウェアプログラムのすべてにおいて、前記論理チャンネルごとに存在する論理チャンネル・オーナーに関するデータを格納する論理チャンネル・オーナー管理テーブルと備え、
前記論理チャンネル・オーナーとなっている前記ミドルウェアプログラムにおいて、当該論理チャンネルに属するノードである論理チャンネル・Subscriberに関するデータを格納する論理チャンネル・Subscriber管理テーブルを備え、
送信データを持ち論理チャンネル・Publisherとなる前記ミドルウェアプログラムが、前記論理チャンネル・オーナー管理テーブルを検索して前記論理チャンネル・オーナーのノードに前記送信データを送信する論理チャンネルデータ送受信処理を実行し、
前記論理チャンネル・オーナーである前記ミドルウェアプログラムが、前記論理チャンネル・Subscriber管理テーブルを用いて登録先のノードに対して前記送信データを配信する論理チャンネルデータ集配信処理を実行することにより、マシンツーマシン型非同期マルチキャスト通信を可能としたことを特徴とする機械設備間通信方法。
【請求項８】
２台以上の機械設備において、前記機械設備間のデータ通信手段となるネットワークリソースと、アプリケーションプログラムと、マシンツーマシン型非同期マルチキャストを可能とするミドルウェアプログラムを装備し、前記機械設備間に構築した論理チャンネルに属する前記機械設備同士がデータの送受信を行う機械設備間通信プログラムであって、
前記ミドルウェアプログラムのすべてにおいて、前記論理チャンネルごとに存在する論理チャンネル・オーナーに関するデータを格納する論理チャンネル・オーナー管理テーブルと備え、
前記論理チャンネル・オーナーとなっている前記ミドルウェアプログラムにおいて、当該論理チャンネルに属するノードである論理チャンネル・Subscriberに関するデータを格納する論理チャンネル・Subscriber管理テーブルを備え、
送信データを持ち論理チャンネル・Publisherとなる前記ミドルウェアプログラムが、前記論理チャンネル・オーナー管理テーブルを検索して前記論理チャンネル・オーナーのノードに前記送信データを送信する論理チャンネルデータ送受信処理を実行し、
前記論理チャンネル・オーナーである前記ミドルウェアプログラムが、前記論理チャンネル・Subscriber管理テーブルを用いて登録先のノードに対して前記送信データを配信する論理チャンネルデータ集配信処理を実行することにより、マシンツーマシン型非同期マルチキャスト通信を可能としたことを特徴とする機械設備間通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製造現場の産業用ロボット等の機械設備間に構築したネットワークシステムを用いて、サーバーを用意することなく当該機械設備同士が連携し合って制御データや計測データなどのやりとりを行う、機械設備間通信システムおよび通信方法に関する。
【背景技術】
【０００２】
製造現場などに導入された産業用ロボット等の機械設備は、旧来はスタンドアローン形態で稼働していたが、近年は製造現場等の一層の効率化を図るべく、産業用ロボット等の機械設備間にネットワークシステムが構築され、当該ネットワーク通信機能を利用し、作業指示データや作業報告データなどの制御データや、作業環境データなどの計測データをやり取りし、作業工程の効率的管理や機械設備間の連携による生産性向上が図られつつある。
【０００３】
機械設備間にネットワーク通信システムを構築する場合、問題となるのは、ネットワークの構成要素が動的に変動しやすい点である。もし、ネットワーク構成要素が固定的で変動しないものであれば各機器は一度割り振られたアドレス情報を保持しておけば通信相手を個別に指定して送受するいわゆるユニキャスト方式の通信手法で足りる。しかし、産業用ロボット等の機械設備の制御には、短期間に産業用ロボット等の機械設備の組み替えが発生し、また、製造作業手順を与える制御プログラム組み替えや製造指示データの変更が発生するなど、ネットワークの構成要素が変動しやすいという特徴がある。このような環境下でのネットワーク構築は、通信相手を固定化できず長期間にわたって安定運用することは容易ではない。
【０００４】
従来技術において、上記の状況下でネットワーク構築を行う手法として想定されるものとしては、外部サーバーを使用せず、ネットワークのリソースであるルーターが備えるＩＰマルチキャスト機能を活用し、多数のクライアント機器である機械設備のみで自律的にグループ間通信機能を実現する手法がある。ＩＰマルチキャストとは、ネットワーク上でのデータのやりとりであるキャストの方式のひとつで、参加を表明した特定複数の相手に同じ内容のデータを送信する方式のことである。ＩＰマルチキャストはＴＣＰ／ＩＰネットワークを前提とし、マルチキャストアドレスと呼ばれる特殊なＩＰアドレスにデータを送信する方式である。ＩＰマルチキャストでは、ルーターが重要な役割を演じる。データはネットワークの途中のルーターなどによって、配信先の数に応じて自動的に複製された上で配信される。通信バスが分岐する個所にあるルーターなどで効率的にデータが複製されるので、音声や動画などの容量の大きなデータでも効率よく、また回線の通信帯域を圧迫することなく配信することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上記第１の手法の場合には以下の問題がある。
まず、第１には、機械設備の稼働率が低下しやすいという問題である。上記第１の手法では、各々の機械設備のアドレス情報も含めて管理情報はすべてサーバーで一括管理されることになるため、サーバーが障害を起こして停止した場合や、サーバーの保守メンテナンスを行う場合にはサーバーが有効に機能しないため、結局システム全体が機能停止してしまうこととなり、産業ロボットなどの機械設備が稼働できなくなる。工場などでは産業ロボットなどの機械設備の不具合がないのにサーバーの障害や保守メンテナンスによりシステム全体が停止することは許容されるものではない。
【０００６】
第２の問題は、第１の手法により機械設備をネットワーク化してシステム化する場合、サーバーが必要となってしまう点である。ネットワークに参加するロボットが要求に応じて頻繁に変更されるような環境では、サーバー上の変更管理、システム構築などが複雑になるため、簡便にネットワークシステムを構築することができない。
【０００７】
第３の問題は、スケーラビリティ要件を満足できない可能性が残る点である。第１の手法では、すべてのパケット送受信がサーバーに集中するため、負荷が集中した時にサーバーの処理が重くなってしまい、負荷をうまくネットワークシステム内のリソースに分散させることができず、スケーラビリティが向上しない。
【０００８】
次に、上記第２の手法の場合にも以下の問題がある。
第１には、ＩＰマルチキャストを実現するには、ルーターなどの通信機器を含めてネットワーク内の全ての機器がＩＰマルチキャスト対応でなければならないという問題がある。つまり、既存のルーターが導入済みでネットワークが構築されている場合であってもルーター２２０をＩＰマルチキャスト対応のものに改造する必要がある。
【０００９】
第２には、通信の信頼性の問題である。ネットワーク通信においてパケット損失などの不具合が発生する可能性がある。しかし、ＩＰマルチキャスト方式では、パケット損失などに対応するための再送機能などは基本機能には盛り込まれておらず、パケット損失時の再送処理は個別に実装することとなり、その実装は容易ではない。
【００１０】
第３には、現場要件に応じた高度機能の実装、例えばパケット遅配処理などができないという問題である。工場などの生産現場の産業ロボット等の機械設備では組み替え等により一時離脱が頻繁に起こり得る。一時離脱した後にネットワークシステムに復帰した場合、その間に送信されたパケットを機器に遅配する必要があるが、ＩＰマルチキャストではパケットを遅配することは出来ない。そのため、機械設備が一時離脱した場合にはシステム全体の稼働を止めて当該機械設備がネットワークシステムに復帰するまで一時停止したり、機械設備が一時離脱・復帰した場合に関連するパケットを洗い出して再送するというパケット再送処理を実装したりする必要がある。
【００１１】
上記問題点に鑑み、本発明は、基本的にはサーバーを使用せず、多数のクライアント機器のみで自律的にグループ間通信機能を実現する非同期型マルチキャストミドルウェアを用いた機械設備間通信システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明の非同期型マルチキャストミドルウェアを用いた機械設備間通信システムは、２台以上の機械設備において、前記機械設備間のデータ通信手段となるネットワークリソースと、アプリケーションプログラムと、マシンツーマシン型非同期マルチキャストを可能とするミドルウェアプログラムを装備し、前記機械設備間に構築した論理チャンネルに属する前記機械設備同士がデータの送受信を行う機械設備間通信システムであって、
前記ミドルウェアプログラムのすべてにおいて、前記論理チャンネルごとに存在する論理チャンネル・オーナーに関するデータを格納する論理チャンネル・オーナー管理テーブルと備え、  前記論理チャンネル・オーナーとなっている前記ミドルウェアプログラムにおいて、当該論理チャンネルに属するノードである論理チャンネル・Subscriberに関するデータを格納する論理チャンネル・Subscriber管理テーブルを備え、送信データを持ち論理チャンネル・Publisherとなる前記ミドルウェアプログラムが、前記論理チャンネル・オーナー管理テーブルを検索して前記論理チャンネル・オーナーのノードに前記送信データを送信する論理チャンネルデータ送受信処理を実行し、前記論理チャンネル・オーナーである前記ミドルウェアプログラムが、前記論理チャンネル・Subscriber管理テーブルを用いて登録先のノードに対して前記送信データを配信する論理チャンネルデータ集配信処理を実行することにより、マシンツーマシン型非同期マルチキャスト通信を可能としたことを特徴とする。
【００１３】
上記構成の機械設備間通信システムにおいて、論理チャンネルを用いたデータの送受信のほか、以下に示すような様々な処理が可能である。
【００１４】
第１は、機械設備間通信システムにおいて論理チャンネルを構築する処理である。前記論理チャンネル・オーナー管理テーブルの検索の結果、前記検索にかかる論理チャンネル・オーナーが存在しない場合、前記論理チャンネル・オーナーとなりたいノードのミドルウェアプログラムが、論理チャンネル・オブジェクトを生成し、自らを前記論理チャンネル・オーナーのノードとして自ら管理する前記論理チャンネル・オーナー管理テーブルに登録するとともに、他のノードのミドルウェアプログラムに対して自らが前記論理チャンネル・オーナーであることを宣言するデータをブロードキャスト送信し、論理チャンネルを構築する処理とする。
【００１５】
第２は、機械設備間通信システムにおいて既存の論理チャンネルに参加する処理である。参加希望のノードの前記ミドルウェアプログラムは、自らの前記論理チャンネル・オーナー管理テーブルを検索し、検索された論理チャンネル・オーナーに対して参加要求を示すデータをユニキャスト送信し、前記論理チャンネル・オーナーから参加許可を示すデータを受信した場合に、自ら管理する前記論理チャンネル・オーナー管理テーブルに前記論理チャンネル・オーナーのノードを登録し、前記論理チャンネル・オーナーは、前記参加許可を出す際に、自ら管理する前記論理チャンネル・Subscriber管理テーブルに前記参加要求を示すデータを送信した前記ノードを登録する処理とする。
【００１６】
第３は、機械設備間通信システムにおいて既に参加している論理チャンネルからノードが離脱する処理である。離脱を希望するノードのミドルウェアプログラムは、自らの前記論理チャンネル・オーナー管理テーブルを検索し、検索された論理チャンネル・オーナーに対して離脱要求を示すデータをユニキャスト送信し、前記論理チャンネル・オーナーから離脱許可を示すデータを受信した場合、自ら管理する前記論理チャンネル・オーナー管理テーブルから前記論理チャンネル・オーナーのノードを削除し、前記論理チャンネル・オーナーは、前記離脱許可を出す際に、自ら管理する前記論理チャンネル・Subscriber管理テーブルから前記離脱要求を示すデータを送信した前記ノードを削除する処理とする。
【００１７】
第４は、機械設備間通信システムにおいて、既に参加している論理チャンネルからノードが一時離脱する処理である。一時処理を希望するノードのミドルウェアプログラムは、自らの前記論理チャンネル・オーナー管理テーブルを検索し、検索された論理チャンネル・オーナーに対して一時離脱要求を示すデータをユニキャスト送信し、前記論理チャンネル・オーナーから一時離脱許可を示すデータを受信した場合、自ら管理する前記論理チャンネル・オーナー管理テーブルにおいて前記論理チャンネル・オーナーのノードを一時停止状態と扱い、前記論理チャンネル・オーナーは、前記離脱許可を出す際に、自ら管理する前記論理チャンネル・Subscriber管理テーブルから前記一時離脱要求を示すデータを送信した前記ノードを一時停止状態と扱う処理である。
【００１８】
第５は、機械設備間通信システムにおいて、機械装置がネットワーク自体から離脱する場合の処理である。離脱する機械設備のノードのミドルウェアプログラムが、前記論理チャンネル・オーナーテーブルを検索し、自らのノードが論理チャンネル・オーナーとなっている論理チャンネル・オブジェクトが存在するか否か検知し、存在する場合、前記論理チャンネル・Subscriber管理テーブルに登録されている全てのSubscriberのノードに対して論理チャンネル・オーナー代替希望を示すデータを送信し、前記論理チャンネル・オーナー代替希望に応じるノードから送信されるチャンネル・オーナー適合性情報を受信し、最適であると判断したSubscriberのノードを一つ選択し、前記論理チャンネル・Subscriber管理テーブルデータを全て送信する、論理チャンネル・オーナー移転処理を実行し、前記論理チャンネル・オーナー管理テーブルを検索し、自らがSubscriberのノードとして参加している論理チャンネルを検知し、当該論理チャンネルからの前記離脱または前記一時離脱処理を実行する処理である。
なお、本発明の機械設備間通信システムを実現する処理ステップはプログラムの形で提供することができる。
【発明の効果】
【００１９】
本発明にかかる非同期型マルチキャストミドルウェアを用いた機械設備間通信システムによれば、産業用ロボット等の機械設備にネットワークリソースを搭載し、ネットワークを介した通信を行う上で、アプリケーションが固定的なアドレス情報を指定することなく、動的にミドルウェアにより管理される論理的な“論理チャンネル”を指定することによりミドルウェアに通信を任せ、ミドルウェア間で、マシンツーマシンの通信を非同期にて実行し、当該論理チャンネルに属するすべてのセグメントに対して配信を行えば、当該論理チャンネルに属するノードのミドルウェアを介してアプリケーションに渡され、所望の通信を行うことが可能となる。また、特定のサーバーを必要とせず、マシンツーマシン方式であるのでサーバー障害によるシステム全体停止を回避することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の機械設備間通信システムおよび機械設備間通信方法を添付図面に示す実施例に基づいて詳細に説明する。なお、本発明はこれらの実施例に限定されるものではない。
【実施例１】
【００２１】
本発明の実施例１に係る非同期型マルチキャストミドルウェアを用いた機械設備間通信システム１００について説明する。以下の構成例では、機械設備１００として産業ロボットを想定した説明とする。
【００２２】
図１は、本発明の実施例１に係る機械設備間通信システムの構成例を模式的に示す図である。図１に示すように、本発明の機械設備間通信システムは、少なくとも１つ以上の機械設備１００が、データ通信手段となるネットワークリソース２００を介して接続されてネットワークシステムが構築されている。ネットワーク構成は多様な構成が可能であるが、図１の例では、ごく簡単にネットワーク２００の一つのセグメントのみを示し、機械設備１００ａ、機械設備１００ｂ、機械設備１００ｃの３つのみが示されている。なお、図中では各構成要素の付番には適宜添字ａ，ｂ，ｃなどが付されている。
【００２３】
本発明の機械設備間通信システムにおいて通信データは、配信すべき１つまたは複数の宛先へミドルウェアの仲介によって確実に配信される。つまり、本発明ではアプリケーションは、配信先が複数宛先であるか単一宛先であるかにかかわらずデータ配信要求を行う際には常にユニキャスト方式を用いて要求を発行するが、ミドルウェアプログラム２０はその要求をブロードキャスト方式や各宛先へのユニキャスト方式へ内部的に変換して配信処理を行う。ミドルウェア２０内部において各論理チャンネルに関する宛先を動的に管理しておりアプリケーションレベルでは配信相手のアドレス情報を把握する必要がない。よって機械設備１００は生産計画に応じた変更や不具合による一時離脱にデータ集配信の宛先が動的に変化するような環境では構成変更をミドルウェア２０が全て自律的に管理してアプリケーションには透過的に処理されるのでこのような環境において適した通信方式となる。
【００２４】
ここで、従来技術および解決しようとする課題の欄で触れたように、従来技術のＩＰマルチキャスト方式ではパケット損失時の再送処理ができないなどの課題点があり、機械設備間通信システムの移動時などにネットワークから短時間離脱しまたネットワーク接続されるといった使用環境ではデータを受信できない状況が頻繁に発生している。一方、本発明の機械設備間通信システムではミドルウェア２０を導入するのみでネットワークリソースに影響を与えることなくマルチキャスト方式を実現することができる上、後述するようにパケット損失の不具合時に適切に再送または遅配処理を行うことができデータ受信損失の課題を解決することができる。
【００２５】
本発明の機械設備間通信システム１００では、データ通信は各機械設備間にビルドされる論理チャンネルを介して行う。各機械設備内に“論理チャンネル・オブジェクト”と呼ばれるソフトウェアオブジェクトを生成・記憶させておき、同じ論理チャンネル・オブジェクト同士でデータ通信し合うことにより機械設備間で選択的なデータ通信を可能とする。
【００２６】
論理チャンネル・オブジェクトは、チャンネルｍ、チャンネルｎといった論理チャンネル単位に生成されるソフトウェアオブジェクトであり、後述する種々のテーブル（論理チャンネル・オーナー管理テーブル、論理チャンネル・Subscriber管理テーブル）そして遅配などを実現するために一時キュー機構などを内包するものである。
【００２７】
このようにネットワーク内には複数の論理チャンネルが存在可能であり、これらの論理チャンネル・オブジェクトは別々の機械装置に存在することも可能であり、単一機械装置上で複数の論理チャンネル・オブジェクトが存在することも可能である。一時キューに蓄えられるデータは、メモリ上に存在する場合と、不揮発性媒体上に存在する場合、そしてその両方に存在する場合などが可能である。不揮発性媒体上に存在する場合は、その機械装置をリセットした場合においても一時キューに蓄えられたデータは損失せずリセットから復旧後にデータ配信を継続することが可能である。
【００２８】
各論理チャンネルには、ネットワーク内の１つの論理チャンネル・オブジェクトが論理チャンネル・オーナーとして位置づけられる。論理チャンネル・オブジェクトは、各チャンネルに対してそのオーナーはネットワーク内に１つのみ存在する。論理チャンネル・オーナーは論理チャンネル作成処理（Build）により動的に決定され、また動的に他の機械設備間通信システムへ論理チャンネル・オーナーの役割とその論理チャンネル・オブジェクト・コンテンツを委譲することも可能である。Publisherからのデータはオーナーが受け取り、当該論理チャンネルの登録Subscriberへ論理チャンネル・オーナーが配信を行う。  ある１つのノードが複数の論理チャンネル・オーナーであることも可能、逆にある１つのノードが論理チャンネル・オーナー機能を全く果さない場合もありうる。ネットワーク内に同一論理チャンネルに対して複数の論理チャンネル・オーナーが存在する状況を回避する為に後述するようなプロトコルを採用する。
【００２９】
各々の機械設備１００の構成を図１を参照しつつ説明する。
図１に示すように、機械設備１００は、データ通信インターフェイス１０、ミドルウェアプログラム２０と、アプリケーションプログラム３０、機械設備機能４０を備えている。なお、オペレーティングシステムプログラムの図示は省略している。オペレーティングシステムは機械設備１００に搭載されているオペレーティングシステムで良いがネットワーク対応のものが好ましい。
【００３０】
データ通信インターフェイス１０は、コネクタやネットワークカードなどのネットワーク接続に必要な物理的なモジュール類も含んでいる。データ通信インターフェイス１０は、例えば、ＬＡＮなどで広く用いられるイーサネットなど従来技術のものでも良く、また、今後開発されるインターフェイス技術も適用することができる。
【００３１】
アプリケーションプログラム３０は、機械設備１００の本来の機械設備機能４０を稼働させるためのプログラムである。本発明ではアプリケーションプログラム３０の構成について特に限定されず、言語も限定されない。ただし、ミドルウェアプログラム２０との間でデータやり取りのインターフェイスが合っている必要がある。例えば、アプリケーションプログラム３０は既存のままとし、新しく導入するミドルウェアプログラム２０側においてアプリケーションプログラム３０とのインターフェイスが合うように製作することで対処できる。
【００３２】
機械設備機能４０は、各々の機械設備の本来機能であり、産業ロボットであれば当該ロボットが提供する機能等である。機械設備１００の目的・構成に応じて様々な機能があり得る。この機械設備機能４０はアプリケーションプログラム３０により駆動される。
【００３３】
ミドルウェアプログラム２０は、マシンツーマシン型非同期マルチキャストを可能とするミドルウェアプログラムである。ミドルウェアプログラム２０はアプリケーション３０からの通信データを受け取った場合には、アプリケーションが指定した論理チャンネル識別子を付された形でネットワークを介して他の機械設備１００のミドルウェア２０に対してデータ通信を送信する。また、他の機械設備１００のミドルウェア２０からの通信データをデータ通信インターフェイス１０を介して受信した場合、自らの機械設備１００に搭載されているアプリケーション３０に対して受信した通信データを受け渡す役割を果たす。
【００３４】
ミドルウェアプログラム２０は、論理チャンネル管理機能２１、論理チャンネルデータ送受信機能２２、論理チャンネルデータ集配信機能２３を備えている。
まず、論理チャンネル管理機能２１について説明する。
論理チャンネル管理機能２１は、ミドルウェアプログラムが提供する機能であり、論理チャンネル・オーナー管理テーブル２１１と論理チャンネル・Subscriber管理テーブル２１２を維持管理し、アプリケーション層から渡されたデータ送信要求とそのデータをその論理チャンネルの論理チャンネル・オーナーへ送信する。また自ノードが論理チャンネル・オーナーである場合はネットワークを通じて受信したデータをこの論理チャンネルに登録されているSubscriber（１つまたは複数）へ配信する。この処理において送達確認や、一時的にネットワークから離脱した機械設備についてはデータを一時的に保留し機械設備がネットワークに復帰した時点で遅配を行うといった処理も行う。例えば、ネットワーク内の機械設備で情報を交換することで以下のような情報を保有するテーブルを構築し常時動的に維持管理している。
【００３５】
論理チャンネル・オーナー管理テーブル２１１は、［表１］で示すように、複数の｛論理チャンネル名、宛先アドレス、ステータス｝エントリで構成されるテーブルである。
【表１】
2011053978.tif 000003
【００３６】
論理チャンネル・Subscriber管理テーブル２１２は、［表２］で示すように、各論理チャンネルに属する論理チャンネル・subscriberの情報を管理するテーブルである。論理チャンネル・オーナーはデータを論理チャンネル・Publisherから受信した際に、当テーブルを検索し該当する論理チャンネルに属する全てのSubscriberに対してデータ配信を行う。各論理チャンネルのオーナーは自らが所有する論理チャンネルのSubscriberリストを当テーブルで管理する。自らが管理しない論理チャンネルのSubscriberリストを管理することも可能であるが必須ではない。
【００３７】
【表２】
2011053978.tif 000004
【００３８】
次に、論理チャンネルデータ送受信機能２２は、アプリケーション層から送信要求をうけた際、論理チャンネル・データ送信機能は論理チャンネル管理機能が管理する論理チャンネル・オーナー管理テーブルを検索し、獲得した当該論理チャンネル・オーナーの宛先アドレスを使ってデータを当該論理チャンネル・オーナーへ向けて送信を行う。この際、送信データにくわえて送信シーケンス番号など付け加えて送信を行うことでデータを確実に論理チャンネル・オーナーへ受け渡す。論理チャンネル・Publisherの論理チャンネル・データ送受信機能はＡｃｋ（Acknowledge）メッセージを受領した場合は、当該データは論理チャンネル・オーナーによって確かに受領されたと見なして当該データを破棄する。一定時間内にＡｃｋ（Acknowledge）メッセージを受領しなかった場合、当該データは論理チャンネル・オーナーによって確かに受領されなかったとみなして再送を行う。
【００３９】
次に、論理チャンネルデータ集配信機能２３は、論理チャンネル・オーナーがデータを受信または配信する際に使用する機能である。論理チャンネル・オーナーは論理チャンネル・Publisherから送信されてきたデータを当該機能を使って受信する。その際に、送信データに含まれる送信シーケンス番号を読み取り、そのシーケンス番号を含むＡｃｋ（Acknowledge）データを論理チャンネル・Publisherへ返信する。
【００４０】
以上の諸機能を基本として、機械設備１００間に構築される通信データネットワークにおいて、様々なデータ通信処理が実行される。
以下、本発明の機械設備間通信システム１００における基本的な処理を説明する。
【００４１】
まず、論理チャンネル作成処理（Build）を説明し、次に、作成されている論理チャンネルに対して他のノードが参加する論理チャンネル参加処置（Join）、参加している論理チャンネルからノードが離脱する論理チャンネル離脱処理（Leave）、参加している論理チャンネルからノードが一時離脱する論理チャンネル一時離脱処理（Suspend）を説明し、次に、論理チャンネルを用いたデータ通信として、論理チャンネルへの発信処理（Publish）および論理チャンネルからの受信処理（Subscribe）を説明する。
【００４２】
＜論理チャンネル作成処理（Build）＞
論理チャンネル作成処理のデータの流れを、図２〜図４のデータの流れを示す図と図１６のフローチャートとを参照しつつ説明する。
【００４３】
まず、図２の(1)のデータの流れに示すように、この例では、機械設備１００ａにおいて、アプリケーションプログラム３０からチャンネル作成要求を受けると（図１６ステップＳ１）、論理チャンネル管理機能２１は論理チャンネル・オーナー管理テーブル２１１を検索し、当該論理チャンネルが既存で在るか否かを確認する（図１６ステップＳ２）。
【００４４】
ここで、論理チャンネル・オーナー管理テーブル２１１において既に当該論理チャンネルが存在しておれば（図１６ステップＳ２：Ｙ）、アプリケーションプログラム３０へエラーを返す（図１６終了へ）。論理チャンネル・オーナー管理テーブル２１１にエントリが未だ存在していない場合（図１６ステップＳ２：Ｎ）は、図２の(1)に示すように、同一ＬＡＮセグメントへ[Build Channel Request]をブロードキャスト送信する（図１６ステップＳ３）。この例では、機械設備１００ｂ、機械設備１００ｃに対して[Build Channel Request]が受信されることとなる。
【００４５】
この機械設備１００ａからネットワークの各ノードに対して送信された論理チャンネルの作成要求に対して、以下の２通りのケースがある。
【００４６】
第１のケースは、ネットワーク上に論理チャンネル・オーナーが存在する場合である。
[Build Channel Request]メッセージを受信した同一ＬＡＮセグメント内の各機械設備の論理チャンネル管理機能２１は、自らが当該論理チャンネルの論理チャンネル・オーナーであれば、図３の(2)の流れに示すように、[Channel Exist]メッセージをブロードキャスト送信により返信する。この構成例では、機械設備１００ｂが当該論理チャンネルの論理チャンネル・オーナーであり[Channel Exist]メッセージをBroadcastメッセージ送信で返送している。
【００４７】
一方、[Channel Exist]メッセージをBroadcastで受信した他のノードは、当該論理チャンネルは既存として扱うよう、自らの各論理チャンネル管理機能２１が管理する論理チャンネル・オーナー管理テーブル２１１に登録する。この構成例では、機械設備１００ｃは、機械設備１００ａからの[Build Channel Request]メッセージを受信後に、機械設備１００ｂから受信した[Channel Exist]メッセージに応じて論理チャンネル・オーナー管理テーブル２１１に当該チャンネルを既存として登録する。なお、このテーブルのエントリは一定期間後に削除される（一定期間のみ有効）。
【００４８】
機械設備１００ａの論理チャンネル管理機能２１ａは、[Channel Exist]メッセージを受信すれば（図１６ステップＳ４：Ｙ）、図３の(3)のデータの流れに示すように、[Channel Exist]メッセージに対してACKメッセージを返送する（図１６ステップＳ６）。この構成例では、[Build Channel Request]メッセージを送信した機械設備１００ａは、機械設備１００ｂより返された[Channel Exist]メッセージに対してACKメッセージを返送し、機械設備１００ｂは当該ACKメッセージを受信する。
【００４９】
第２のケースは、ネットワーク上に論理チャンネル・オーナーが存在しない場合である。
一定時間内にネットワーク上の他のノードから[Channel Exist]メッセージを受信しない場合は（図３ステップＳ４：Ｎ）、機械設備１００ａは、現在アクティブな当該論理チャンネルはセグメント内に存在しないものと判断し、論理チャンネル・オブジェクトを生成し、自らを論理チャンネル・オーナーとして自ら管理する論理チャンネル・オーナー管理テーブル２１１に登録し（図３ステップＳ５）、図４の(4)のデータの流れに示すように、自らが論理チャンネル・オーナーであることを確保すべく、[Channel Already Exist]メッセージをセグメント内の他ノードに対してBroadcastメッセージ送信を行う（図３ステップＳ５）。
【００５０】
機械設備１００ａの論理チャンネル管理機能２１は、図４の(5)のデータの流れに示すように、自らが論理チャンネル・オーナーであるチャンネルの情報を一定期間ごとに[Channel Exist]メッセージとしてセグメントへBroadcastメッセージ送信を行う。
以上の手順により、論理チャンネル作成処理（Build）を実行する。
これ以降、後述するように、この論理チャンネルを利用したデータ通信が可能となる。
【００５１】
＜論理チャンネル参加処理（Join）＞
次に、既に作成されている論理チャンネルに対して他のノードが参加する論理チャンネル参加処理（Join）を説明する。
論理チャンネル参加処理のデータの流れを、図５〜図６のデータの流れを示す図と図１７のフローチャートとを参照しつつ説明する。例として機械設備１００ａが、機械設備１００ｂが論理チャンネル・オーナーになっている論理チャンネルに参加する処理を説明する。
【００５２】
機械設備１００ａにおいて、アプリケーションプログラム３０から論理チャンネル参加要求を受けた場合（図１７ステップＳ１）、まず、論理チャンネル管理機能２１は論理チャンネル・オーナー管理テーブル２１１を検索する。ここで、論理チャンネル・オーナー管理テーブル２１１にエントリが既に存在している場合（図１７ステップＳ２：Ｙ）、その論理チャンネル・オーナー宛先情報に従い、[Join Channel Request]をユニキャストメッセージ送信する（図１７ステップＳ３）。なお、図５では論理チャンネル・オーナー管理テーブル２１１にエントリが存在している場合のユニキャスト通信の場合の図示は省略している。
【００５３】
論理チャンネル・オーナー管理テーブル２１１にエントリが存在していない場合は（図１７ステップＳ２：Ｎ）、図５の(1)に示すように、同一ＬＡＮセグメントに[Join Channel Request]をブロードキャストで送信する（図１７ステップＳ４）。
【００５４】
なお、[Join Channel Request]のBroadcastメッセージ送信に代えて、[Search Channel Request] をブロードキャストで送信し、当チャンネル・オーナーから[Notify Channelオーナー]メッセージが返信されるのを待って、その返信で得たチャンネル・オーナー宛てに[Join Channel Request]をユニキャストメッセージ送信することでも良い。
【００５５】
[Join Channel Request]メッセージを受信したセグメント内の機械装置１００内の論理チャンネル管理機能２１は、当該論理チャンネル・オーナーである場合、[Join Accept]メッセージをBroadcastメッセージ送信で返送する。この例では、図６の(2)に示すように、機械設備１００ｂが[Join Accept]メッセージをBroadcastメッセージ送信で返送し、並行して自ら管理する論理チャンネル・Subscriber管理テーブル２１２に[Join Channel Request]メッセージ送信を行った機械装置１００ａのアドレスをSubscriber・アドレス欄に登録する。
【００５６】
機械設備１００ａが一定時間内に他のノードから[Join Accept]メッセージを受信しない場合は（図４ステップＳ５：Ｎ）、同一セグメント内に当該論理チャンネル・オーナーは存在しないと判断してエラーをアプリケーションへ返す（図１７ステップＳ８）。
【００５７】
機械設備１００ａが、図６の(2)に示すように、一定時間内に他のノードから[Join Accept]メッセージを受信した場合は（図１７ステップＳ５：Ｙ）、論理チャンネル管理機能２１が当該論理チャンネル・オーナーの宛先アドレスを受信メッセージから獲得して自ら管理する論理チャンネル・オーナー管理テーブル２１１に登録し、アプリケーションに要求処理は成功したことをアプリケーションプログラム３０に対して返す（図１７ステップＳ６）。
【００５８】
[Join Accept]メッセージを受信した機械設備１００ａ以外のノード（ここでは機械設備１００ｂ）ではその論理チャンネル管理機能２１が論理チャンネル・オーナー管理テーブル２１１に当該論理チャンネル・オーナーの宛先アドレスを登録する。このテーブルのエントリは一定期間の後満了し削除される（一定期間のみ有効）。
【００５９】
[Join Accept]メッセージを受信した機械設備１００ａは、図６(4)に示すように[Join Accept]メッセージを送信した当該チャンネル・オーナーへACKメッセージを返送する（図１７ステップＳ７）。
以上の手順により、論理チャンネルへの参加処理（Join）が実行される。
これ以降、後述するように、この論理チャンネルを利用したデータ通信が可能となる。
【００６０】
＜論理チャンネル離脱処理（Leave）＞
次に、あるノードが既に参加している論理チャンネルから離脱する論理チャンネル離脱処理（Leave）を説明する。
論理チャンネル離脱処理のデータの流れを、図７〜図８のデータの流れを示す図と図１８のフローチャートとを参照しつつ説明する。例として機械設備１００ａが、機械設備１００ｂが論理チャンネル・オーナーになっている論理チャンネルから離脱する処理を説明する。
【００６１】
機械設備１００ａにおいて、アプリケーションプログラム３０から論理チャンネル離脱要求を受けた論理チャンネル管理機能２１は（図１８ステップＳ１）、まず、自ら管理する論理チャンネル・オーナーテーブル２１１を検索する。当該論理チャンネル情報が論理チャンネル・オーナーテーブル２１１内に存在する場合（図１８ステップＳ２：Ｙ）は、エントリ情報が示す論理チャンネル・オーナー宛て[Leave Channel Request]を直接ユニキャスト送信する（図１８ステップＳ６）。
【００６２】
なお、図７では論理チャンネル・オーナー管理テーブル２１１にエントリが存在している場合のユニキャスト通信の場合の図示は省略している。
【００６３】
一方、当該チャンネル情報が論理チャンネル・オーナーテーブル２１１内に存在しない場合（図１８ステップＳ２：Ｎ）は、図７の(1)に示すように、同一LANセグメントへ[Search Channel Request]をブロードキャスト送信し（図１８ステップＳ３）、論理チャンネル・オーナーからの[Notify Channel Owner]メッセージの返信を待つ。
【００６４】
[Search Channel Request]をブロードキャスト送信した機械設備１００ａは、図８(2)に示すように、論理チャンネル・オーナーから[Notify Channel Owner]メッセージを受信した場合（図１８ステップＳ４：Ｙ）、図８(3)に示すように、論理チャンネル・オーナーテーブル２１１にチャンネル・オーナー情報を反映し、[Leave Channel Request]をユニキャスト送信する（図１８ステップＳ６）。
一定期間内に論理チャンネル・オーナーから[Notify Channel Owner]メッセージが戻ってこない場合は（図６ステップＳ４：Ｎ）、[Search Channel Request]を再送信して試行を何度か行い、エラーを数回繰り返した場合はアプリケーションへエラーを返す（図１８ステップＳ５）。
【００６５】
[Leave Channel Request]メッセージを受信した同一LANセグメント内の当該論理チャンネル・オーナーである機械設備１００ｂの論理チャンネル管理機能２１はその論理チャンネル・Subscriberテーブル２１２から当Leave処理要求者のエントリを削除すると同時に、図８の(4)に示すように、[Accept leave request] メッセージをユニキャストメッセージで機械設備１００ａに返信する。
機械設備１００ａは[Accept leave request] メッセージを受信すれば（図１８ステップＳ７：Ｙ）、論理チャンネルの離脱成功を確認する（図１８ステップＳ８）。[Accept leave request] メッセージを受信しなければ（図１８ステップＳ７：Ｎ）、アプリケーション４０にエラーを返す（図１８ステップＳ９）。
【００６６】
以上の手順により、論理チャンネルからの離脱処理（Leave）が実行される。
これ以降、後述するように、機械設備１００ｂはこの論理チャンネルを利用したデータ通信には関与しなくなる。
【００６７】
＜論理チャンネル一時離脱処理（Suspend）＞
次に、あるノードが既に参加している論理チャンネルから一時的に離脱する論理チャンネル一時離脱処理（Suspend）を説明する。
論理チャンネル一時離脱処理のデータの流れを、図９〜図１０のデータの流れを示す図と図１９のフローチャートとを参照しつつ説明する。例として機械設備１００ａが、機械設備１００ｂが論理チャンネル・オーナーになっている論理チャンネルから一時離脱する処理を説明する。
【００６８】
論理チャンネル一時離脱処理（Suspend）の基本的な処理は、論理チャンネル離脱処理（Leave）と同じである。異なる点は、チャンネル・オーナー側でLeave要求を受信した際は送信者のエントリを論理チャンネル・Subscriberテーブル２１２から削除するが、Suspend要求を受信した際は論理チャンネル・Subscriberテーブル２１２内の送信者エントリを「受信停止中」にステータスを変更する点である。
【００６９】
機械設備１００ａにおいて、アプリケーションプログラム３０から論理チャンネル一時離脱要求を受けた論理チャンネル管理機能２１は（図１９ステップＳ１）、まず、自ら管理する論理チャンネル・オーナーテーブル２１１を検索する。当該論理チャンネル情報が論理チャンネル・オーナーテーブル２１１内に存在する場合（図１９ステップＳ２：Ｙ）は、エントリ情報が示す論理チャンネル・オーナー宛に[Suspend Channel Request]を直接ユニキャスト送信する（図１９ステップＳ６）。なお、図９では論理チャンネル・オーナー管理テーブル２１１にエントリが存在している場合のユニキャスト通信の場合の図示は省略している。
【００７０】
一方、当該チャンネル情報が論理チャンネル・オーナーテーブル２１１内に存在しない場合（図１９ステップＳ２：Ｎ）は、図９の(1)に示すように、同一LANセグメントへ[Search Channel Request]をブロードキャスト送信し（図１９ステップＳ３）、論理チャンネル・オーナーからの[Notify Channel Owner]メッセージの返信を待つ（図１９ステップＳ４）。
【００７１】
[Search Channel Request]をブロードキャスト送信した機械設備１００ａは、図１０(2)に示すように、論理チャンネル・オーナーから[Notify Channel Owner]メッセージを受信した場合（図１９ステップＳ４：Ｙ）、図１０(3)に示すように、論理チャンネル・オーナーテーブル２１１にチャンネル・オーナー情報を反映し、[Suspend Channel Request]をユニキャスト送信する（図１９ステップＳ６）。
一定期間内に論理チャンネル・オーナーから[Notify Channel Owner]メッセージが戻ってこない場合は（図１９ステップＳ４：Ｎ）、[Search Channel Request]を再送信して試行を何度か行い、エラーを数回繰り返した場合はアプリケーションへエラーを返す（図１９ステップＳ５）。
【００７２】
[Suspend Channel Request]メッセージを受信した同一LANセグメント内の当該論理チャンネル・オーナーである機械設備１００ｂの論理チャンネル管理機能２１は、その論理チャンネル・Subscriberテーブル２１２から当Suspend処理要求者のエントリ内のステータス欄を「受信停止中」と変更し、図８の(4)に示すように、[Accept suspend request] メッセージをユニキャスト送信にてメッセージ送信者である機械設備１００ａへ返信する。
機械設備１００ａは[Accept suspend request]メッセージを受信すれば（図１９ステップＳ７：Ｙ）、論理チャンネルの離脱成功を確認する（図１８ステップＳ８）。[Accept suspend request]メッセージを受信しなければ（図１８ステップＳ７：Ｎ）、アプリケーション４０にエラーを返す（図１８ステップＳ９）。
【００７３】
以上の手順により、論理チャンネルからの一時離脱処理（Suspend）が実行される。
これ以降、後述するように、機械設備１００ｂは一時的にこの論理チャンネルを利用したデータ通信には関与しなくなる。
【００７４】
＜論理チャンネルを用いたデータの送受信処理（Publish/Subscribe）＞
次に、構築されている論理チャンネルを用いたデータ送受信のデータの流れについて説明する。
構築されている論理チャンネルを用いて、機械設備１００同士の間でデータ送信する処理（Publish/Subscribe）を図１１〜図１２のデータの流れを示す図と図２０〜図２２のフローチャートを参照しつつ説明する。例として機械設備１００ａが、機械設備１００ｂが論理チャンネル・オーナーになっている論理チャンネルを用いてデータ送信を行う場合の処理を説明する。
【００７５】
機械設備１００ａにおいて、アプリケーションプログラム３０から論理チャンネル・データ送信要求を受けた論理チャンネル管理機能２１は（図２０ステップＳ１）、論理チャンネル・オーナー管理テーブル２１１を検索する。論理チャンネル・オーナー管理テーブル２１１内に当チャンネルに関するチャンネル・オーナー情報が存在しない場合は（図２０ステップＳ２：Ｎ）、論理チャンネル管理機能２１はエラーをアプリケーションプログラム３０に返す（図２０ステップＳ３）。このときアプリケーションプログラム３０は上記した［Join Channel Request］処理を再実行することが可能である。
【００７６】
当該テーブルにエントリが存在している場合（図１０ステップＳ２：Ｙ）、図１１(1)に示すように、その論理チャンネル・オーナー宛先情報に従い[Publish Channel data]メッセージをユニキャスト送信する（図１０ステップＳ４）。アプリケーションプログラム３０にはこの時点で処理が成功したことを伝える。この例では論理チャンネル・オーナー管理テーブル２１１内には機械設備１００ｂが登録されているものとする。機械設備１００ａは当データに関する論理チャンネル・Publisherと呼ぶ。データ通信を行う機械設備１００ａは [Publish Channel data]メッセージを送信する際、論理チャンネル単位に設定管理する送信者シーケンス番号を付与して送る。送信者シーケンス番号は送信メッセージごとにその値が１増加する。
【００７７】
次に、図１１の(2)に示すように、[Publish Channel data]メッセージを受信したチャンネル・オーナーである機械設備１００ｂはその論理チャンネル・データ集配信機能２３により論理チャンネル・オブジェクトの一時キューに受信した送信メッセージを保管し、受信データに含まれる送信者シーケンス番号を読み取り、そのシーケンス番号情報を含むＡｃｋ（Acknowledge）メッセージを論理チャンネル・Publisherである機械設備１００ａへ返信する。
【００７８】
論理チャンネル・Publisherである機械設備１００ａは一定時間内に論理チャンネル・オーナーである機械設備１００ｂからＡｃｋメッセージを受信できなかった場合は（図２０ステップＳ５：Ｎ）、当データの再送処理を何度か試行し、成功しない場合はアプリケーション３０にエラーを返す（図２０ステップＳ６）。論理チャンネル・Publisherである機械設備１００ａが一定時間内に機械設備１００ｂからＡｃｋメッセージを受信できた場合は（図２０ステップＳ５：Ｙ）、そのメッセージに含まれる送信者シーケンス番号と送信処理要求済みメッセージの送信者シーケンス番号を照合し一致していればそのメッセージは論理チャンネル・オーナーに届けることができたと見なして当データを処理済とみなしてバッファーから消去する（図２０ステップＳ７）。論理チャンネル管理機能２１はアプリケーション３０に対してはデータ送信が完了したことを通知する（図２０ステップＳ８）。
【００７９】
一方、一時キューに送信メッセージを受信した論理チャンネル・オーナー（この例では機械設備１００ｂ）は（図２１ステップＳ１：Ｙ）、論理チャンネル・Subscriber管理テーブル２１２を検索し、図１２の(3)に示すように、登録されているSubscriberリストのアドレスを得て送信ノード（この例では機械設備１００ａ）を除く全てのSubscriberアドレス（この例では機械設備１００ｃのみ）へ、各チャンネル・オブジェクト単位に管理されているシーケンス番号をつけて一時キューに保管した受信データを[Deliver Channel data]メッセージとして送信する（図２１ステップＳ２）。
【００８０】
論理チャンネルの各々のSubscriber（この例では機械設備１００ｃ）は、図１２の(3)に示すように、配信された[Deliver Channel data]メッセージを受信する（図２２ステップＳ１）と、各Subscriberの論理チャンネル・データ送受信機能２３は、データに付与されているチャンネル配信シーケンス番号をチェックし、当該データを受信する前に受信した当論理チャンネルの配信シーケンス番号と受信した最新データのチャンネルの配信シーケンス番号を比較し、シーケンス番号が連番である場合（図２２ステップＳ２：Ｙ）は、図１２の(4)に示すように、論理チャンネル・オーナーである機械設備１００ｂに対して[ACK Deliver Channel data]をユニキャスト返信し（図２２ステップＳ３）、アプリケーション３０ｃへ受信データを渡す（図２２ステップＳ４）。
【００８１】
シーケンス番号が連番ではない場合（図２２ステップＳ２：Ｎ）、連番であった最後のシーケンス番号とそれに続くビットマップ情報（ビットがOFFであれば該当データは未受信であること、ビットがONであれば該当データは受信済みであることを示す）をふくめて[NACK Deliver Channel data]を論理チャンネル・オーナーである機械設備１００ｂに対してユニキャスト返信する（図２２ステップＳ４）。
【００８２】
論理チャンネル・オーナーである機械設備１００ｂは配信を行った各SubscriberからのACKまたはNACK返答受信を待ち、一定時間内にACKも受信できず（図２１ステップＳ３：Ｎ）、NACKも受信できなかった場合（図２１ステップＳ４：Ｎ）、Subscriberへデータ配信を何度か試行し、失敗すればエラーを機械設備１００ａに対して返す（図２１ステップＳ５）。
【００８３】
[Deliver Channel data]メッセージを配信した論理チャンネル・オーナーである機械設備１００ｂがSubscriberからのACKを受信した場合（図２１ステップＳ３：Ｙ）は、そのACKメッセージに含まれるチャンネル配信シーケンス番号を論理チャンネル・Subscriber管理テーブル２１２の当Subscriber該当エントリの配信済みシーケンス番号欄に反映させる（図２１ステップＳ６）。なお、図２５（ａ）にＡｃｋメッセージのビットデータ列の例を示す。
【００８４】
[Deliver Channel data]メッセージを配信した論理チャンネル・オーナーである機械設備１００ｂがSubscriberからのNACKを受信した場合（図２１ステップＳ４：Ｙ）は、そのNACKメッセージに含まれるチャンネル配信シーケンス番号とビットマップを参照し、論理チャンネル・Subscriber管理テーブルの当Subscriber該当エントリの配信済みシーケンス番号欄に反映させると同時に未受信の配信データをこのSubscriberへ再配信する（図２１ステップＳ７）。なお、図２５（ｂ）にＡｃｋメッセージのビットデータ列の例を示す。
【００８５】
論理チャンネル・オーナーである機械設備１００ｂは  論理チャンネル・Subscriber管理テーブル２１２の当チャンネルに属する全てのSubscriber該当エントリの配信済みシーケンス番号欄を定期的にチェックし、全てのSubscriberによって受信完了を確認した配信データ（図２１ステップＳ８）は、正常終了し、一時キューから削除する（図２１ステップＳ９）。
【００８６】
[Deliver Channel data]メッセージの再配信は一定回数を上限に行い、それでもACKもNACKも受信できない場合は当該Subscriberのステータスを一時停止中に変更する。ステータスが一時停止中となったSubscriberに対してはある一定時間間隔を置いて未送達のメッセージを[Deliver Channel data]メッセージとして配信する、または[Send Heart Beat]メッセージを定期的に送り合うといった方法で、一時停止中から活動中にステータスを復帰させる。
以上の手順により、論理チャンネルを用いてデータ送受信を行う。
【００８７】
＜機械装置がネットワークから離脱する際の処理＞
最後に、機械装置１００がネットワーク自体から離脱する際の処理の流れについて図１３〜図１５のデータの流れを示す図と、図２３〜図２４のフローチャートを参照しつつ説明する。
機械装置１００がネットワーク自体から離脱する際には、論理チャンネル・オーナー移転処理と、論理チャンネルからの離脱または一時離脱処理を行う。機械装置１００の論理チャンネル管理機能２１はネットワークから一時離脱または離脱する要求をアプリケーション３０から受けると（図２３ステップＳ１）、自らがチャンネル・オーナーとなっているチャンネル・オブジェクトが存在するか否かについて論理チャンネル・オーナーテーブル２１１を検索して判定を行う（図２３ステップＳ２）。
【００８８】
論理チャンネル・オーナーテーブル２１１を検索した判定の結果、自らがチャンネル・オーナーであるチャンネル・オブジェクトが存在する場合（図２３ステップＳ２：Ｙ）は、図１３(1)に示すように、そのチャンネル・オブジェクトに登録されている全てのSubscriberに対して [Channel ownership検討]メッセージをユニキャスト送信する（図２３ステップＳ３）。
一方、自らがチャンネル・オーナーであるチャンネル・オブジェクトが存在しない場合は（図２３ステップＳ２：Ｎ）、終了する。
【００８９】
ネットワーク離脱予定の機械設備１００ｂの論理チャンネル管理機能２１は、[Channel ownership検討]メッセージを送付した一又は複数のSubscriberから [Channel ownership希望]メッセージが返送されてくるのを一定時間待つ（図２３ステップＳ４）。[Channel ownership希望]メッセージが返送されない場合（図２３ステップＳ４：Ｎ）、再度全てのSubscriberに対して [Channel ownership検討]メッセージをユニキャスト送信し、論理チャンネル・オーナーとなる希望を出すノードを募る（図２３ステップＳ３に戻る）。なお、何度か繰り返しても成功しない場合、エラーと扱って終了する。
【００９０】
一方、[Channel ownership検討]メッセージを受信したSubscriberは（図２４ステップＳ１：Ｙ）、図１３(2)に示すように、自ノードが代替チャンネル・オーナーに適合している指標となる情報を[Channel ownership希望]メッセージに付与して返信する（図２４ステップＳ２）。代替チャンネル・オーナーに適合している指標となる情報としては、起動完了からの経過時間や配信メッセージを一時保管するための不揮発性メディアの有無とその記憶容量といった属性情報が考えられる。この構成例では機械設備１００ｂからのみ[Channel ownership希望]メッセージが返信されている。
【００９１】
ネットワーク離脱予定の機械設備１００ｂの論理チャンネル管理機能２１は、ネットワーク上のSubscriberから[Channel ownership希望]メッセージが返信されると（図２３ステップＳ４：Ｙ）、[Channel ownership希望]メッセージに含まれている「チャンネル・オーナー適合性情報」を各々比較し、最適であると判断したSubscriberを一つ選択する（図２３ステップＳ５）。このSubscriberを「next チャンネル・オーナー」と以降呼ぶ。
【００９２】
ネットワーク離脱予定の機械設備１００ｂの論理チャンネル管理機能２１は、図１４の(3)に示すように、選定した「next チャンネル・オーナー」に[Channel ownership委譲]メッセージを送信し、図１４の(4)に示すように、チャンネル・オブジェクト内の一時キューに保管されている配信データ、論理チャンネル・Subscriber管理テーブルデータを全て「next チャンネル・オーナー」へ送信する（図２３ステップＳ６）。この送信にあたっては、全ての情報を「next チャンネル・オーナー」に受け渡す為に、各送信データにシーケンス番号を付与して送達確認を実施するか、または送達確認機能を有するOSの通信機能（例えばTCP）を利用することが好ましい。
【００９３】
next チャンネル・オーナーとなる機械設備１００ｃは配信データ、論理チャンネル・Subscriber管理テーブルデータの受け渡しに成功すれば（図２４ステップＳ３：Ｙ）、図１４の(5)に示すように、Ａｃｋ信号を返信する（図２４ステップＳ４）。一定時間経過してもデータの受け渡しに成功しなければ（図２４ステップＳ３：Ｎ）、Ｎａｃｋ信号を返信する（図２４ステップＳ５）。
【００９４】
ネットワーク離脱予定の機械設備１００ｂの論理チャンネル管理機能２１は、配信データ、論理チャンネル・Subscriber管理テーブルデータをすべて受け渡す処理が完了した時点で（図２３ステップＳ７：Ｙ）、図１５の(6)に示すように、チャンネル・オブジェクトに登録されていた全てのSubscriberに対して チャンネル・オーナーが変更となった旨を伝達する（図２３ステップＳ８）。例えば[Notify Channelオーナー]メッセージに「next チャンネル・オーナー」のアドレスを含めて伝達する。この一連の流れによりチャンネル・オーナーの移転作業は完了する。
【００９５】
一定時間が経過しても配信データ、論理チャンネル・Subscriber管理テーブルデータをすべて受け渡す処理が完了しない場合、「next チャンネル・オーナー」として選択した送信ノードが不適切であったり、データ通信上の不具合があるとして、他のノードを選択し直すため、再度、図２３のステップＳ５に戻る。
【００９６】
次に、ネットワーク離脱予定の機械設備１００ｂの論理チャンネル管理機能２１は、自らがSubscriberとして参加している論理チャンネルの情報を論理チャンネル・オーナー管理テーブル２１１等を検索して獲得し、各論理チャンネル離脱処理を行う（図２３ステップＳ９）。即ち各チャンネルのチャンネル・オーナーへ[Leave Channel Request]または[Suspend Channel Request]をユニキャスト送信する。
【００９７】
ネットワーク離脱予定の機械設備１００ｂが参加していた各論理チャンネル離脱処理が完了すれば、当機械装置１００ｂはネットワークから離脱可能となる。
以上の手順により、機械装置１００ｂがネットワーク自体から離脱することができ、仮にネットワークから離脱する機械装置１００ｂが論理チャンネル・オーナーとなっていた場合も当該論理チャンネルに影響がない形で機械装置１００ｂのみを離脱させることができる。
【００９８】
以上、本発明の機械設備間通信システムの構成例における好ましい実施例を図示して説明してきたが、本発明の技術的範囲を逸脱することなく種々の変更が可能であることは理解されるであろう。
【産業上の利用可能性】
【００９９】
本発明の機械設備間通信システムは、産業ロボットを導入した生産システムなどに広く適応することができる。
【図面の簡単な説明】
【０１００】
【図１】本発明の実施例１に係る機械設備間通信システムの構成例を模式的に示す図
【図２】論理チャンネル作成処理のデータの流れを説明する図（その１）
【図３】論理チャンネル作成処理のデータの流れを説明する図（その２）
【図４】論理チャンネル作成処理のデータの流れを説明する図（その３）
【図５】論理チャンネル参加処理のデータの流れを説明する図（その１）
【図６】論理チャンネル参加処理のデータの流れを説明する図（その２）
【図７】論理チャンネル離脱処理のデータの流れを説明する図（その１）
【図８】論理チャンネル離脱処理のデータの流れを説明する図（その２）
【図９】論理チャンネル一時離脱処理のデータの流れを説明する図（その１）
【図１０】論理チャンネル一時離脱処理のデータの流れを説明する図（その２）
【図１１】論理チャンネルを用いたデータ送信処理のデータの流れを説明する図（その１）
【図１２】論理チャンネルを用いたデータ送信処理のデータの流れを説明する図（その２）
【図１３】ネットワーク離脱処理の流れを説明する図（その１）
【図１４】ネットワーク離脱処理の流れを説明する図（その２）
【図１５】ネットワーク離脱処理の流れを説明する図（その３）
【図１６】論理チャンネル作成処理の流れを示すフローチャート
【図１７】論理チャンネル参加処理の流れを示すフローチャート
【図１８】論理チャンネル離脱処理の流れを示すフローチャート
【図１９】論理チャンネル一時離脱処理の流れを示すフローチャート
【図２０】データ送信を依頼した送信ノードにおける処理の流れを示すフローチャート
【図２１】論理チャンネル・オーナーとなっている送信ノードにおける処理の流れを示すフローチャート
【図２２】該当する論理チャンネルのSubscriberとなっている送信ノードにおける処理の流れを示すフローチャート
【図２３】ネットワークを離脱するノードにおける処理の流れを示すフローチャート
【図２４】新たに論理チャンネル・オーナーとなるノードにおける処理の流れを示すフローチャート
【図２５】Ａｃｋメッセージのビットデータ列の例およびＮａｃｋメッセージのビットデータ列の例を示す図
【符号の説明】
【０１０１】
１０  データ通信インターフェイス
２０  ミドルウェアプログラム
２１  論理チャンネル管理機能
２２  論理チャンネルデータ送受信機能
２３  論理チャンネルデータ集配信機能
３０  アプリケーションプログラム
４０  機械設備機能
１００  機械設備
２００  ネットワーク
【図１】
2011053978.tif 000005
【図２】
2011053978.tif 000006
【図３】
2011053978.tif 000007
【図４】
2011053978.tif 000008
【図５】
2011053978.tif 000009
【図６】
2011053978.tif 000010
【図７】
2011053978.tif 000011
【図８】
2011053978.tif 000012
【図９】
2011053978.tif 000013
【図１０】
2011053978.tif 000014
【図１１】
2011053978.tif 000015
【図１２】
2011053978.tif 000016
【図１３】
2011053978.tif 000017
【図１４】
2011053978.tif 000018
【図１５】
2011053978.tif 000019
【図１６】
2011053978.tif 000020
【図１７】
2011053978.tif 000021
【図１８】
2011053978.tif 000022
【図１９】
2011053978.tif 000023
【図２０】
2011053978.tif 000024
【図２１】
2011053978.tif 000025
【図２２】
2011053978.tif 000026
【図２３】
2011053978.tif 000027
【図２４】
2011053978.tif 000028
【図２５】
2011053978.tif 000029