(57)【特許請求の範囲】
【請求項１】
ネットワークに接続された複数の機器により構成される分散システムの設定方法であって、前記ネットワークに接続された機器を検出するステップと、検出された機器より情報を収集するステップと、収集された情報をもとに機器に設定する情報を判断するステップと、判断された情報を機器に設定するステップとからなり、
前記収集するステップは、ノードが前記ネットワークに接続されていた場合、前記ノードのアドレスをノード管理テーブルに登録するステップを含み、
前記判断するステップは、前記ノード管理テーブルに基づいてマスターノードを識別するステップと、前記マスターノードが識別できない場合、異常を通知するステップを含む、分散システムの設定方法。
【請求項２】
前記ネットワークに計算機を接続し、該計算機にインストールされた構築ツールにより機器を設定する、請求項１記載の分散システムの設定方法。
【請求項３】
前記構築ツールが機器に関する情報を持たず、前記機器より収集した情報のみに基づいて前記機器の設定を行う、請求項２記載の分散システムの設定方法。
【請求項４】
前記ネットワーク上にノードアドレスを格納したメッセージをブロードキャストし、該メッセージのノードアドレスと同じノードアドレスが設定されたノードが応答を送信し、該応答を受信することにより該ノードアドレスが設定されたノードがネットワークに接続されていると判断することにより、ネットワーク接続されたノードを自動的に検出する、請求項１記載の分散システムの設定方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークに接続された複数の機器と計算機により構成される分散システムにおいて、これらのノード間でデータを授受するのに必要な各ノードの設定を行う分散システムにおける設定方法に関する。
【０００２】
【従来の技術】
ネットワークに複数の計算機と少なくとも１つのプリンタが接続され、計算機にインストールされたアプリケーションプログラムより印刷要求があると、該計算機に接続されたローカルプリンタが存在するか否かを判断したのち、ローカルプリンタが存在しない場合には該計算機が自内のファイルを読み込んでネットワークに接続されたリモートプリンタの接続処理を自動的に行うパソコンネットワークにおけるプリンタ接続のための設定方式が、例えば特開平６−２４２９０３において示されている。
【０００３】
【発明が解決しようとする課題】
従来の設定方式により機器の設定を行った場合、該機器と通信を確立するために該機器に関する情報が必要であった。例えば、新しい機器をネットワークに接続した場合、該機器と通信するためには、機器の開発メーカーより通信ドライバなどのソフトウエアやデータを入手して、該機器と通信するための接続処理を行わなければならなかった。このため、多数の機器がネットワークに接続されるシステムでは入手しなければならない機器情報が増え、該情報の入手や管理が困難になるといった問題が生じた。特に、機器の追加やリプレースが頻繁に発生するシステムでは、頻繁に機器情報を入手し、これらの情報の追加や入れ替えも頻繁に行わなければならず、機器情報の管理が一層困難になる。また、管理している機器情報を更新せずに、機器の取り外しや変更を行うことにより、実際にネットワークに接続された機器とこれらの機器に関する機器情報とが一致しなくなるといった問題が生じ、システムの管理を非常に困難なものにしていた。
【０００４】
本発明では、多数の機器が接続された分散システムにおいて、機器の設定と機器の情報管理が困難であるという課題を解決することを目的とする。
【０００５】
【課題を解決するための手段】
上記課題を解決するため、本発明における設定方式では、
（１）ネットワーク接続された機器を自動的に認識し、
（２）認識された該機器から該機器が保持する情報を収集し、
（３）収集された該情報に基づいて機器の設定を行うのに必要な情報を生成し、
（４）生成された該情報を機器に設定することにより機器間の通信を実現すること、を特徴とする。
【０００６】
【発明の実施の形態】
本発明における第１の実施例を説明する。
【０００７】
本発明における第１の実施例では、生産システムにおける機器の設定方式を例に説明する。図１は本発明におけるシステムの構成例である。コントローラ１１０と機器１１１、機器１１２、機器１１３、機器１１４がネットワーク１００に接続されている。機器１１１と機器１１２はセンサーなどの生産ラインの情報を収集する入力機器であり、機器１１３と機器１１４はモーター制御などを行う生産ラインを動かす出力機器である。コントローラ１１０は、ネットワーク１００を介してこれらの機器と通信を行い、例えば生産ラインのコンベアを制御する。このシステムでは、コントローラ１１０により機器を集中制御する。計算機１２０は、ネットワーク１００に接続されたノードを設定するための構築ツールをインストールしており、計算機１２０の構築ツールはネットワーク１００を介して、コントローラ１００、機器１１１、機器１１２、機器１１３、機器１１４を設定する。計算機１２０は、ネットワーク１５０にも接続されている。ネットワーク１５０は、ゲートウエイ１５１を介してインターネットに接続され、他のゲートウエイ１５２を介して他のネットワーク１６０に接続された計算機１６１と通信することができる。ネットワーク１５０とネットワーク１６０は、例えばイーサネットなどの計算機間で通信を行うためのネットワークである。ここで、コントローラ１１０は制御プログラムを実行できるものであればよく、計算機であってもよい。また、機器と計算機を接続するネットワーク１００はノード間で相互にデータを交換できる手段であればバス型のネットワークでなくてもよく、無線通信などの手段を用いてもよい。
【０００８】
ネットワーク１００に接続された機器とコントローラの構成例を図２示す。ネットワーク２００に接続された機器２５０は、通信や機器の制御を行う制御部２６０と、機械的あるいは電気的に機器を駆動する機械部２７０により構成される。例えば、光センサーの場合、機械部２７０は赤外線などを送信して物体を検出する部分であり、検出結果を電気信号として制御部２６０に伝達する。制御部２６０は、この電気信号をデジタル信号に変換したり、工学値に変換するなどの処理を行い、メッセージにこの処理結果を格納してネットワーク２００に送信する。制御部２６０は、ネットワーク１００上の信号を処理するトランシーバ２０６、メッセージの組み立てなどの通信制御を行う通信プロセッサ２０１、機器の制御プログラムを実行するプロセッサ２０２、通信や機器の制御プログラムと種々のデータを格納するための不揮発性記憶装置であるＲＯＭ２０３、プログラムを実行する際に使用する揮発性記憶装置であるＲＡＭ２０４、機械部２７０とデータを交換するためのＩ／Ｏインターフェース２０５により構成される。Ｉ／Ｏインターフェース２０５には、Ｉ／Ｏ（２０７）が接続され、制御部２６０はこのＩ／Ｏインターフェース２０５を介して機械部２７０からの信号の入力および機械部２７０への信号の出力を行う。プロセッサ２０１、プロセッサ２０２、ＲＯＭ２０３、ＲＡＭ２０４、Ｉ／Ｏインターフェース２０５は内部バス２１０に接続されており、相互にデータを交換することができる。コントローラは、プロセッサ２０２の処理能力、ＲＯＭ２０３とＲＡＭ２０４の記憶容量が機器と異なる。またＩ／Ｏインターフェース２０５と機械部２７０は備えていない。他の構成は機器２５０と同じである。
【０００９】
ネットワーク１００を介して各ノードが送受信するメッセージのフォーマットを図３に示す。メッセージ３００は、識別子３０１、アドレス３０２、データ３０３により構成される。識別子３０１はメッセージを識別するために付与される文字列であり、アドレス３０２はネットワーク１００に接続された各ノードのノードアドレスであり、データ３０３はセンサーの測定結果やモーターを制御するための制御データなどである。アドレス３０２には、メッセージを送信したノードのノードアドレス、あるいはメッセージを送信する先のノードアドレスなどが設定される。メッセージ３００を受信したノードは、メッセージの識別子３０１により、アドレス３０２に設定されるノードアドレスが何を示すかを判断する。ネットワーク１００に接続された各ノードは、メッセージ３００に付与された識別子３０１、あるいは識別子３０１とアドレス３０２により、メッセージ３００を受信するか否かを判断する。
【００１０】
各ノードの設定を行う構築ツールは、ネットワーク１００に接続されたノードを自動的に認識する。このときのデータの流れを図４に示す。構築ツールは処理を開始すると、まずネットワークに接続されているノードを全て検出する。図４（ａ）に示すように、ネットワーク４００にコントローラ４１０、入力機器４１１、入力機器４１２、出力機器４１３、構築ツール４３０をインストールした計算機４２０が接続されている。ネットワーク４００に接続される各ノードには重複しないようノードアドレスが付与される。ノードアドレスは、ディプスイッチまたはローカルな端末などにより各ノードに事前に設定される。構築ツール４３０は、起動されるとメッセージ４０１をネットワーク４００に送信する。メッセージ４０１には、識別子３０１としてノード確認メッセージであることを示す識別子Ａが付与され、アドレス３０２には構築ツールが適当なノードアドレスを設定する。データ３０３は付与されない。
【００１１】
ネットワーク４００に接続された各ノードはメッセージ４０１を受信すると、メッセージ４０１の識別子３０１によりメッセージ４０１がノード確認メッセージであると判断する。これにより、ノード確認メッセージに適した処理を実行する。各ノードはメッセージ４０１内のアドレス３０２を読み出し、自ノードのノードアドレスと比較する。もしも、メッセージ４０１内のアドレス３０２と自ノードのノードアドレスが一致した場合、アドレス３０２に自ノードアドレスを設定し、メッセージ確認メッセージであることを示す識別子Ａを付与して応答メッセージ４０２をネットワーク４００に送信する。構築ツール４３０は、他ノードからの応答メッセージ４０２を受信することにより、自分がメッセージ４０１に設定したノードアドレスと同じノードアドレスを持つノードがネットワーク４００に接続されていると判断する。図４（ａ）の例では、構築ツール４３０がノード確認メッセージ４０１にノードアドレス１番を設定してネットワーク４００にブロードキャストしている。これを受信した各ノードは自ノードのノードアドレスがノードアドレス１番であるか否かを判断する。入力機器４１１には、ノードアドレス１番が割り当てられており、入力機器４１１は自ノードのノードアドレス１番を応答メッセージ４０２に設定してブロードキャストする。構築ツールは、ノードアドレス１番が設定された応答メッセージ４０２を受信することにより、ノードアドレス１番が設定されたノードがネットワーク４００に接続されていることを検出する。構築ツール４３０は、ノードアドレスの最小値からノードアドレスの最大値までの全てのアドレスに対して同じ処理を順次繰り返すことにより、ネットワークに接続されている全てのノードのノードアドレスを検出することができる。
【００１２】
また、定期的にこの処理を繰り返してネットワークに接続されている全ノードを検出し、新たに検出したノードと前回検出したノードとを比較することにより、ネットワークから切り離されたノードを検出できる。ここで、図３にて示したメッセージの識別子やアドレスのサイズは事前に決まっており、例えば各２バイトである。ノード確認メッセージであることを示す識別子Ａも事前に決まっており、例えば数次の１０００で表される。各ノードはメッセージの最初の２バイトに１０００が付与されたメッセージを受信すると、そのメッセージがノード確認メッセージであると判断する。ノード確認メッセージのメッセージフォーマットは事前に定義されており、ノード確認メッセージではアドレスとして２バイトのノードアドレスが設定され、データは存在しないことが事前に決まっている。新しいノードがネットワーク４００に接続されると、構築ツール４３０はこのノードを自動的に検出する。図４（ｂ）に示すように、図４（ａ）のシステム構成に新たに出力機器４１４が追加された場合、出力機器４１４は自ノードのノードアドレスにノード確認メッセージであることを示す識別子Ａを付与したメッセージ４０３をネットワーク４００にブロードキャストする。構築ツール４３０は、このメッセージを受信することにより、新しくノードが追加されたことを検出し、そのノードのノードアドレスを知ることができる。新たにネットワーク４００に接続されたノードは、必ず自ノードのノードアドレスを設定したノード確認メッセージを送信する。
【００１３】
構築ツール４３０は、ネットワーク４００に接続されたノードのノードアドレスを検出すると、そのノードアドレスを使い、そのノードにメッセージを送信する。メッセージのアドレスとして送信先ノードアドレスを指定してメッセージを送信することにより、そのノードに対してメッセージを送信することができる。そのノードに対してデータ送信を要求することにより、ノードが保持する情報を読み込む。機器を生産するメーカーは、機器の出荷時に機器に関する種々の情報をＲＯＭ２０３に格納している。機器に格納されたこれらの情報は、ネットワーク２００に接続された他のノードからトランシーバ２０６を介してプロセッサ２０１にデータ読み込み要求を送信することにより読み込むことができる。これらの情報へのアクセス方式は、標準規格などにより予め決められており、各メーカーから提供される機器の情報を同じように読み込むことが可能である。例えば、機器を開発したメーカー名は３０バイトで表現し、その情報の番号が３番であることが予め決まっている。機器Ａの開発メーカー名をネットワーク経由で読み込むためには、識別子としてデータを要求するメッセージであることを示す識別子、アドレスとして機器Ａのノードアドレス、そしてデータとして情報の番号を示す３というデータ（情報番号３番を指定）を設定してメッセージをブロードキャストする。これを受信した機器Ａの通信プロセッサ２０１は、ＲＯＭ２０３より開発メーカー名を読み出す。データを要求するメッセージの応答メッセージであることを示す識別子、自ノードのノードアドレス、データとして読み出した開発メーカー名をメッセージに設定してネットワークにブロードキャストする。
【００１４】
構築ツールは識別子とアドレスをもとに、この応答メッセージを受信し、機器Ａの開発メーカー名を受信することができる。このアクセス方式を用いて構築ツール４３０は検出したネットワークに接続される全てのノードからノードが保持する情報を読み出す。読み出された情報は、図５に示したノード管理テーブル５００に登録される。ノードアドレス５０１には検出したノードのノードアドレスが登録され、これらのノードより読み出した情報を順次ノード管理テーブル５００に登録する。入出力区分５０２は、ノードが入力機器であるか、出力機器であるかを示す情報であり、データ長５０３はノードが送信または受信できるデータのデータ長であり、メーカー５０４はノードを開発したメーカーのメーカー名であり、ファイルアドレス５０５は機器の情報が十分である場合にアクセスするファイルのインターネット上のアドレスであり、カタログ番号５０６はノードのカタログ番号であり、時間間隔５０７はノードがメッセージを送信する時間間隔またはメッセージを受信処理可能な時間間隔である。センサーのような機器の場合、コストや実装スペースの問題から計算機のように十分なＲＯＭを備えていない。このため、構築ツールが必要とする全てのデータをＲＯＭに格納しているとは限らない。したがって、構築ツールが必要とする情報を機器が保持していない場合もある。
【００１５】
生産ラインのようなシステムを動かすには、センサーなどの入力機器からの情報を読み込みんで処理し、その処理結果をモーターなどの出力機器に送ってモーターを駆動する。これを実行するには、センサーのプログラム、コントローラの制御プログラム、モーターのプログラム間で通信を行う必要がある。つまり、プログラム間の通信設定を行わなければならない。構築ツールはノード管理テーブルに登録された情報をもとに、通信設定を行うのに必要な構築情報を生成する。構築ツールの設定例を図６に示す。図６に示したシステムは、コントローラ６１０、入力機器６２０、出力機器６３０により構成され、これらのノードはネットワーク６００を介してメッセージを送受信する。このネットワーク６００には、構築ツールをインストールした計算機も接続されているが図中には記していない。コントローラ６１０にはプログラムがインストールされている。これらのプログラムは、機器を制御するための制御プログラムであるアプリケーションプログラム６１１と、通信を制御するプログラムであるプロトコル処理プログラム６１２である。同様に入力機器６２０には、入力機器を制御するアプリケーションプログラム６２１とプロトコル処理プログラム６２２がインストールされており、出力機器６３０には、出力機器を制御するアプリケーションプログラム６３１とプロトコル処理プログラム６３２がインストールされている。これらのプログラムはＲＯＭ２０３からプロセッサ２０２によりＲＡＭ２０４にインストールされるか、あるいはネットワークよりＲＡＭ２０４に直接インストールされる。入力機器６２０のアプリケーションプログラム６２１にて測定されたデータは、プロトコル処理プログラム６２２を介してネットワーク６００に送信される。このデータはコントローラ６１０のプロトコル処理プログラム６１２にて受信され、アプリケーションプログラム６１１にて処理される。処理結果はプロトコル処理プログラム６１２によりネットワーク６００に送信され、出力機器６３０のプロトコル処理プログラム６３２にて受信される。受信された処理結果は、アプリケーションプログラム６３１に渡され、出力機器６３０はこの処理結果をもとにモーターの回転数を変更するなどの制御を行う。
【００１６】
構築ツールは、構築情報に基づいてプロトコル処理プログラム６１２、６２２、６３２に情報を設定し、このデータの流れを実現する。情報の設定方法は、各ノードの情報へのアクセス方式と同様に、標準規格などにより予め決まっているものとする。入力機器６２０のプロトコル処理プログラム６２２には、構築ツールにより送信するメッセージの識別子、メッセージの送信時間間隔などが設定される。コントローラ６１０のプロトコル処理プログラム６１２には、入力機器６２０が送信したメッセージを受信するために必要な情報として、入力機器６２０が送信するメッセージの識別子、入力機器６２０のノードアドレス、メッセージのデータ長、メッセージの送信時間間隔などが設定される。これらの情報を設定することにより、入力機器６２０が送信したメッセージをコントローラ６１０が識別して受信することができ、通信が確立する。送信時間間隔は、入力機器６２０がメッセージを送信する時間間隔であり、コントローラ６１０では入力機器６２０のタイムアウト監視などを行うのに使用する。プロトコル処理プログラム６１２により受信されたメッセージは、アプリケーションプログラム６１１にて受信される。
【００１７】
アプリケーションプログラムは、ｒｅｃｅｉｖｅ（ｉｄ，  ａｄｄｒｅｓｓ，ｄａｔａ）といった関数を使って受信メッセージを受け取る。ｉｄはメッセージの識別子であり、例えばセンサーの情報であることを示す。ａｄｄｒｅｓｓは入力機器６２０のノードアドレスであり、例えばどのセンサーが測定した情報であるかを示す。ｄａｔａは、例えばセンサーの測定結果である。アプリケーションプログラム６１１は、入力機器６２０からのデータを処理し、出力機器６３０に送信する。コントローラ６１０から出力機器６３０へメッセージを送信するには、入力機器６２０からコントローラ６１０にメッセージを送信したときと同様に、コントローラ６１０のプロトコル処理プログラム６１２と出力機器６３０のプロトコル処理プログラム６３２に構築ツールが必要な情報を設定する。コントローラ６１０から出力機器６３０にメッセージを送信する場合、コントローラ６１０は出力機器６３０の時間間隔５０７以上の時間間隔を空けてメッセージを送信することにより、出力機器６３０の受信頻度が高まり、メッセージを受信しきれなくなるという状況を回避する。構築ツールがプロトコル処理プログラムに設定するこれらの構築情報は、ノード管理テーブル５００より構築ツールが自動的に生成する。
【００１８】
以下、この生成方式を説明する。まずノードの入出力区分５０２により、ノードがコントローラであるか、入力機器であるか、出力機器であるかを判断する。コントローラである場合には、入力と出力が設定されている。次にデータ長５０３を読み込み、入力機器が送信するデータ長と出力機器が受信するデータ長を判断する。コントローラの送受信データ長は、機器側のデータ長に合わせて設定する。例えば、入力機器の送信データ長が２バイトであった場合、コントローラの受信データ長は２バイトにする。さらに、時間間隔５０７を読みこむ。時間間隔５０７も機器に合わせてコントローラを設定する。例えば、入力機器の時間間隔５０７が１００ミリ秒であった場合、コントローラには受信時間間隔１００ミリ秒が設定され、この時間間隔をもとに入力機器のタイムアウト監視を行う。出力機器の時間間隔５０７が５００ミリ秒であった場合、出力機器の受信限界性能が５００ミリ秒であるため、コントローラには送信時間間隔として５００ミリ秒が設定され、コントローラは５００ミリ秒以上の時間間隔を空けて出力機器にメッセージを送信する。コントローラの設定を機器に合わせるのは、コントローラのプロセッサ性能の方が高く、ＲＯＭやＲＡＭといったリソースを十分持っているからである。さらにコントローラと機器間の通信に識別子を割り当てる。メッセージの識別子が、ノード確認メッセージを示す識別子やノード情報の読み込みを要求するメッセージであることを示す識別子のように、事前に決められていない場合、構築ツールが自動的に識別子を割り当てる。コントローラが入力機器Ａと入力機器Ｂからメッセージを受信して、出力機器Ｃと出力機器Dにメッセージを送信する場合、例えばメッセージの識別子を番号で表し、１番から順に番号で割り当てる。つまり、入力機器Ａからコントローラに送信するメッセージには識別子１を割り当て、入力機器Bからコントローラに送信するメッセージには識別子２を割り当てる。以上のようにして、構築情報が生成される。例えば、入力機器Ａでは送信するメッセージの識別子は１、２バイトのデータを１００ミリ秒間隔で送信するといった構築情報が生成される。入力機器Ａとコントローラのプロトコル処理プログラムに設定する。またコントローラ側に関しては、識別子１とノードアドレス１番が付与されたメッセージを受信し、データのデータ長は２バイトであり、１００ミリ秒周期で受信するという構築情報を生成する。これらの構築情報を入力機器Ａとコントローラに設定することにより、入力機器Ａより送信されたメッセージをコントローラにて受信できる。
【００１９】
構築ツールの処理フローを図７と図８に示す。構築ツールの処理は大きく４つのステップに分けられる。
【００２０】
（１）ネットワークに接続されたノードを自動的に検出するステップ１。
【００２１】
（２）検出したノードより情報を読み込むステップ２。
【００２２】
（３）読み込んだ情報をもとに構築情報を生成するステップ３。
【００２３】
（４）生成された構築情報を各ノードに設定するステップ４。
【００２４】
図７にステップ１とステップ２の処理を、図８にステップ３とステップ４の処理を示す。
【００２５】
構築ツールは起動すると、ノードのノード番号を表す変数Ｎに０を設定して初期化し（ステップ７０１）、ノードアドレスとしてＮを設定したノード確認メッセージをネットワークに送信する（ステップ７０２）。もしも、ノード確認メッセージの応答メッセージを受信できた場合、つまりノードアドレスＮのノードがネットワークに接続されていた場合（ステップ７０３）、ノードアドレスＮをノード管理テーブルに登録する（ステップ７０４）。もしも一定時間応答が得られなかった場合（ステップ７０３）、ノードアドレスＮはノード管理テーブルに登録されない。ノードアドレスＮが最後のノードアドレスでなければ（ステップ７０５）、ノードアドレスＮに１を加え（ステップ７０６）、次のノードアドレスに対して同じ処理を繰り返す。もしも最後のノードアドレスであった場合（ステップ７０５）、ノード管理テーブルに登録されたノードアドレスを１つ読み出し（ステップ７０７）、読み出したノードアドレスが示すノードよりネットワークを介して必要な情報を読み込む（ステップ７０８）。ノード管理テーブルに登録された全てのノードアドレスが示すノードに対して情報を読み込む処理を終了しているか否かを判断する（ステップ７０９）。全てのノードから読み込んでいなかった場合、次のノードアドレスを読み込んで同じ処理を繰り返す。ノード管理テーブルに登録された全てのノードアドレスが示すノードより情報を読み込む処理を終了した場合（ステップ７０９）、図８に示した次のステップに移行する。
【００２６】
ネットワークに接続したノードより収集した情報を登録したノード管理テーブルをもとに、まずマスターノードを決める（ステップ８０１）。マスターノードとは、機器を制御するコントローラや計算機であり、入出力区分５０２が入出力であることから判断される。スレーブとは、マスターノードにより制御される機器である。本実施例におけるシステムは集中制御システムであり、マスターノードとなりうるノードは１つしか存在しない。もしも、マスターノードとなりうるノードが２つ以上存在した場合（ステップ８０２）、つまり入出力区分５０２に入出力が登録されたノードが２つ以上存在した場合、オペレータに対して異常を通知し（ステップ８０７）、処理を終了する。マスターノードが識別できた場合（ステップ８０２）、スレーブノードの通信条件を確認する（ステップ８０３）。つまり、入出力機器のデータ長や時間間隔など、構築情報を生成するのに必要な情報が全て揃っているか否かを判断する。もしも必要な情報が揃っていない場合（ステップ８０４）、インターネットにアクセスして不足している情報を収集することを試みる（ステップ８０５）。各機器は保持できる情報量が限られているため、不足している情報を補うデータを格納したファイルにアクセスするためのファイルアドレス５０５を保持している。このファイルは、例えば機器を開発したメーカーが自社のサーバー上に保持している。ファイル名は、例えばカタログ番号５０６である。ファイルアドレス５０５は、例えばｆｔｐ：／／ｗｗｗ．ｈｉｔａｃｈｉ．ｃｏ．ｊｐ／Ｄｅｖｉｃｅ／Ｄａｔａ／であり、構築ツールはこのファイルアドレス５０５をもとにインターネットを介して図１で示された開発したメーカーのファイルサーバーである計算機１６１にアクセスする。機器に関する情報はカタログ番号５０６と同じ名称のＨ―ＸＹ３．ＴＸＴというテキストファイルで保存されている。このファイルフォーマットは各社同じであり、標準規格などで予め規定されている。構築ツールは、例えば機器が時間間隔５０７を保持していなかった場合、ファイルアドレス５０５で示されたアドレスよりファイルを読み込んで時間間隔５０７をノード管理テーブル５００に登録する。
【００２７】
もしも、ファイルが存在しないなどの理由により、構築情報を生成するのに必要なスレーブノードの情報が入手できなかった場合（ステップ８０６）、ノードの構築が行えないことをオペレータに通知し（ステップ８０７）、処理を終了する。もしも、必要な情報が入手できた場合には（ステップ８０６）、処理を継続する。構築情報を生成するのに必要なスレーブ情報が揃った場合（ステップ８０４、ステップ８０６）、図６で説明したように、構築情報を生成する（ステップ８０８）。生成された構築情報をもとにマスターノードのリソースが十分であるかを判断する。もしもリソースが不足している場合（ステップ８０９）、オペレータに対してリソースが不足していることを通知し（ステップ８０７）、処理を終了する。例えば、通信を行う機器の数が多く、マスターノードのプロトコル処理プログラムを実行するのに必要なメモリ容量が足りない場合、リソースが不足していると見なす。最後に、生成した構築情報を各ノードに設定し（ステップ８１０）、処理を終了する。なお、ここでは必要な情報が不足している場合、インターネットを介してファイルを読み込む例を示したが、この情報は構築ツールがインストールされている計算機のローカルなデータベース上にあってもよい。この場合、ファイルアドレス５０５は、例えばｆｉｌｅ：／／ｃ：￥／Ｄｅｖｉｃｅ／Ｄａｔａ／となりローカルなディレクトリを指定する。
【００２８】
図７と図８では、ネットワークに接続しているノードを自動的に検出し、これらのノードからノードが保持する情報を読み出し、これらのノードより読み込んだ情報をもとに構築情報を生成し、ノードを設定する方式を説明した。しかし、実際のシステムでは一旦ノードを設定したあとでシステムの拡張に伴うノードの追加が発生したり、機器の劣化に伴うリプレースが発生し、システムの状態は常に変化する。システム構成が変化により追加・変更されたノードを自動的に設定する方式がもとめられる。追加されたノードを自動的に検出して構築する処理を表す処理フローを図９に示す。図９の処理は、図７と図８で示した処理が終了したのち、継続して行われる。図４（ｂ）で説明したように構築ツールは常にネットワークを流れるメッセージを受信し、ノード確認メッセージが流れていないかを判断している。構築ツールは、ノード確認メッセージを受信すると（ステップ９０１）、ノード管理テーブル５００より受信したノード確認メッセージに設定してあるアドレスと同じノードアドレスがすでにノード管理テーブル５００に登録されているか否かを判断する。もしも、すでに同じアドレスが存在している場合（ステップ９０２）、追加されたノードのノードアドレスの設定が間違っているため、ノードの構築が行えない。ノードアドレスの設定が間違っていることをオペレータに通知し（ステップ９０３）、処理を終了する。アドレスが重複していない場合（ステップ９０２）、ノード管理テーブルにノードアドレスを追加する（ステップ９０４）。そして、ノードアドレスが示すノードより情報を収集してノード管理テーブルに登録する（ステップ９０５）。必要な情報が収集できたかどうかを判断し（ステップ９０６）、もしも必要な情報がない場合には（ステップ９０７）、インターネットにアクセスして（ステップ９０８）、不足している情報をファイルより読み込むことを試みる。もしも必要な情報を入手できない場合には（ステップ９０９）、必要情報が入手できないことをオペレータに通知し（ステップ９０３）、処理を終了する。もしも必要な情報が揃った場合（ステップ９０７、ステップ９０９）、構築情報を生成する（ステップ９１０）。新しくノードが追加されたことにより、マスターノードのリソースが不足するか否かを判断し、もしもリソースが不足する場合には（ステップ９１１）、その旨をオペレータに通知して（ステップ９０３）、処理を終了する。もしも、リソースが不足しない場合には（ステップ９１１）、各ノードに構築情報を設定し（ステップ９１２）、処理を終了する。
【００２９】
機器のリプレースは、ノードのネットワークからの切り離しとノードの追加という２つの処理が発生したと捉える。ノードの追加が行われた場合、図９に示したノード追加時の設定方式を用いればよい。切り離されたノードの検出は、先に説明した通り図７に示したネットワークに接続されたノードの自動検出を一定時間間隔で繰り返せばよい。ただし、自動検出されたノードのノードアドレスはノード管理テーブル５００とは別のテーブルを準備して管理する。ノード管理テーブル５００のノードアドレス５０１と新たに準備したテーブルに登録されたノードアドレスを比較し、前回の検出時に検出したノードと、新たに検出したノードを比較することにより、検出できなくなったノードが存在しないかを確認する。もしも、検出できなくなったノードが存在した場合、このノードはネットワークから切り離されたと見なし、ノード管理テーブル５００に登録されているこのノードに関する情報を消去する。このようにして切り離されたノードの情報をノード管理テーブル５００より消去したのち、図９に示した追加ノードの自動設定方式を用いれば、リプレースされた機器も自動的に設定することができる。
【００３０】
この実施例によれば、複数の機器を制御する１つのコントローラあるいは計算機と生産ラインを制御する複数の機器により構成される分散システムにおいて、構築ツールがネットワークに接続されたノードを自動検出するステップと、検出されたノードの情報を収集するステップと、この情報によりシステムの構築情報を生成するステップと、生成された構築情報を各ノードに設定するステップにより、分散システムを自動的に設定することができる。これにより、従来事前に通信ドライバや機器に関するデータファイルを準備しなければならなかった機器の通信設定が、事前情報を準備しなくても自動的に実行され、システム開発者の情報管理を行う負担が軽減される。また、通信ノウハウのないシステム開発者であってもシステムの構築を容易に行うことができ、システム開発者の通信に関する学習期間と学習コストが削減され、またシステム構築のための作業期間が大幅に短縮され、生産システム導入後すぐに生産を開始することができる。
【００３１】
本発明における第２の実施例を説明する。
【００３２】
本発明における第２の実施例は、集中制御を行うコントローラや計算機が存在しない点において第１の実施例と異なる。ネットワークに接続されたノードを自動検出する第１のステップと、検出されたノードより情報を収集する第２のステップは、第１の実施例と同じである。
【００３３】
第２の実施例では、家庭内の電化製品をネットワークで接続して制御するホームオートメーションシステムを例に説明する。システム構成を図１０に示す。監視パネル１０１０、ＡＶ機器コントローラ１０１１、テレビ１０１２、ビデオ１０１３、オーディオ１０１４、照明スイッチ１（１０１５）、照明スイッチ２（１０１６）、照明１（１０１７）、照明２（１０１８）、照明３（１０１９）がネットワーク１０００に接続され、ネットワーク１０００を介して相互にデータを交換することができる。各機器は図２にて説明した機器２５０と同様に、通信インターフェースを備え、機器を制御するプログラムを内蔵する。ＡＶ機器コントローラ１０１１は、テレビやオーディオなどのＡＶ機器を制御するコントローラであり、オーディオ１０１４はミニコンポのようなオーディオ機器である。監視パネル１０１０は、機器の動作状況を表示したり、機器を操作するためのコントローラであり、液晶ディスプレイのような表示装置を備える。監視パネル１０１０には構築ツール１０５０がインストールされており、この構築ツール１０５０が各ノードを構築する。ここでは、構築ツール１０５０が監視パネル１０１０にインストールされている例を示したが、表示装置を備え、ネットワークに接続されているノードであれば、テレビやパーソナルコンピュータなどの他の機器や計算機にインストールされていてもよい。また、ここではネットワーク１０００としてバス型のネットワークを使った例を示したが、データを送受信できる手段であれば無線通信や電力線を使った通信を用いてもよい。構築ツール１０５０がネットワーク１０００に接続されたノードを自動的に検出するステップと、検出されたノードより情報を読み込むステップは第１の実施例と同じである。しかし、ノードより読み出す情報は異なる。
【００３４】
第２の実施例におけるノード管理テーブルを図１１に示す。ノードアドレス１１０１は、ネットワークより自動的に検出されたノードのノードアドレスである。機器種別１１０２は、ＡＶ機器、照明機器、空調機器、セキュリティ機器といった機器の種類を表す。入出力区分１１０３、データ長１１０４、メーカー１１０６は、第１の実施例と同じである。設定位置１１０５は、機器の設置された場所を示す。機器名称１１０７は、機器の名称を表し、例えば「インバーターエアコン白くまくん」といった製品名称である。ノードアドレス１１０１、機器種別１１０２、入出力区分１１０３、データ長１１０４、メーカー１１０６、機器名称１１０７は、製品出荷時にＲＯＭに格納される情報であり、第１の実施例と同じ方式により構築ツールは機器より読み込むことができる。ノードアドレス１１０１は、例えば８バイトのアドレスであり、最初の４バイトがメーカー番号、次の４バイトが各メーカーにて管理する製品番号である。メーカー番号を各メーカー間で重複しないように調整することにより、全ての機器に重複しないノードアドレスを出荷時に割り当てることができる。
【００３５】
設置位置１１０５は機器のユーザが機器を購入し、設置したあとでないと決めることができない。設置位置１１０５の取得方式を図１２に示す。機器の設置位置は、各機器毎に自動的に取得し、自ノード内に保存する。家の中の部屋であるＢ室１２００には、赤外線通信の発信機能を持つ位置発信機器１２２０、照明スイッチ１（１２２１）、照明１（１２２２）、照明２（１２２３）、照明３（１２２４）が設置されている。照明スイッチ１（１２２１）、照明１（１２２２）、照明２（１２２３）、照明３（１２２４）は赤外線通信の受信機を備え、赤外線通信により得られたデータを自内に読み込み、内部のＲＡＭに格納する。位置発信機器１２２０は、位置発信機器１２２０出荷時に異なる識別子が割り当てられており、電源が供給されるとこの識別子を周期的に送信する。各部屋には、この位置発信機器１２２０が設置されており、異なる識別子を発信している。以下、この識別子を位置識別子と呼ぶ。照明スイッチ１（１２２１）、照明１（１２２２）、照明２（１２２３）、照明３（１２２４）は、位置発信機器１２２０が送信する位置識別子１２５０を受信し、ノード管理テーブル１１００に設置位置１１０５として登録する。これにより、同じ部屋に設置された機器は同じ設置位置１１０５を保持することができる。
【００３６】
構築ツールの処理フローを図１３に示す。ネットワークに接続されたノードを自動的に検出するステップと、検出されたノードより情報を読み出すステップは図７と同じである。構築ツールは、ノード管理テーブル１１００の情報をもとに各機器の設定を行う。まず、各ノードを機器種別１１０２により分類する（ステップ１３０１）。次に、入出力区分１１０３を読み込み、機器種別により分類した機器グループ毎に構築情報の生成を試みる（ステップ１３０２）。各グループに入力機器が１つで出力機器が複数、あるいは入力機器が複数で出力機器が１つであれば、通信する相手は一意に決まる。このため、データ長１１０４などの情報をもとに第１の実施例と同じように各機器グループ毎に構築情報を生成できる。しかし、入力機器と出力機器が各々複数存在する場合には、通信の関係が一意に決まらず、機器の設定を行えない。例えば、図１０に示したシステム構成例では、ＡＶ機器はＡＶ機器コントローラ１０１１、テレビ１０１２、ビデオ１０１３、オーディオ１０１４である。メッセージを送信する入力機器はＡＶ機器コントローラ１０１１のみであり、他は全てメッセージを受信する出力機器である。
【００３７】
このため、ＡＶ機器コントローラ１０１１より、テレビ１０１２、ビデオ１０１３、オーディオ１０１４にメッセージを送信するという通信の関係が一意に決まり、各機器の設定を行うことができる。しかし照明機器は、照明スイッチ１（１０１５）、照明スイッチ２（１０１６）、照明１（１０１７）、照明２（１０１８）、照明３（１０１９）があり、入力機器が照明スイッチ１（１０１５）、照明スイッチ２（１０１６）の２つであるのに対し、出力機器は照明１（１０１７）、照明２（１０１８）、照明３（１０１９）の３つである。このため、どの照明スイッチが送信したメッセージをどの照明が受信するのかが判断できず、通信の関係を一意に定義することができない。このように、機器種別１１０２と入出力区分１１０３により通信の関係が一意に決まり構築情報を生成できる場合（ステップ１３０３）、構築情報を各ノードに設定し（ステップ１３１１）、処理を終了する。もしも、構築情報を生成できない場合（ステップ１３０３）、さらに設置位置１１０５を使って通信の関係を判断する（ステップ１３０４）。機器種別１１０２、入出力区分１１０３、設置位置１１０５により、構築情報を生成できる場合（ステップ１３０６）、構築情報を各ノードに設定し（ステップ１３１１）、処理を終了する。例えば、図１０に示した照明スイッチ１（１０１５）、照明スイッチ２（１０１６）、照明１（１０１７）、照明２（１０１８）、照明３（１０１９）の中で、照明スイッチ１（１０１５）と照明１（１０１７）が同じ部屋に設置されていて、同じ位置識別子が設置位置１１０５としてノード管理テーブル１１００に登録されており、照明スイッチ２（１０１６）、照明２（１０１８）、照明３（１０１９）が同じ部屋に設置されていて、同じ位置識別子が設置位置１１０５としてノード管理テーブル１１００に登録されている場合、同じ部屋に設置している機器間で通信を行うと判断して構築情報を生成する。これらの２つの部屋には入力機器が１つずつしかなく、一意に通信の関係を定義できる。しかし、これらの機器が同じ部屋に設置されている場合、どの照明スイッチとどの照明で通信を行うかが判断できない。このように構築情報を生成できない場合（ステップ１３０６）、構築ツールはシステム構成を仮定して構築情報を生成する（ステップ１３０７）。
【００３８】
例えば、照明スイッチ１（１０１５）と照明スイッチ２（１０１６）が同数の照明を制御すると仮定し、照明１（１０１７）、照明２（１０１８）、照明３（１０１９）のうち、２つを照明スイッチ１（１０１５）に、１つを照明スイッチ２（１０１６）にて制御すると判断する。ノードアドレスの小さいに順に自動的に入力機器に対して出力機器を割り当てる。例えば、照明スイッチ１（１０１５）より照明１（１０１７）と照明２（１０１８）にメッセージを送信し、照明スイッチ２（１０１６）より照明３（１０１９）にメッセージを送信すると判断し、構築情報を生成する。しかし、このような仮定により判断した通信の関係が必ずしもユーザーの要求と一致するとは限らない。このため、ユーザーに通信の関係を提示し、判断結果が正しいか否かを確認する（ステップ１３０８）。ユーザーが正しいと判断した場合（ステップ１３０９）、生成した構築情報を各ノードに設置する（ステップ１３１１）。もしも、ユーザーが正しくないと判断した場合（ステップ１３０９）、ユーザーは通信の関係を変更する（ステップ１３１０）。構築ツールは、この変更結果により構築情報を修正し、この修正された構築情報を各ノードに設定し（ステップ１３１１）、処理を終了する。
【００３９】
ステップ１３０９におけるユーザーへの構築情報の確認画面の構成例を図１４に、ステップ１３１０における構築情報の変更画面の構成例を図１５に示す。図１４は、ユーザに対して構築ツールが生成した構築情報を表示する構築情報表示画面１４００である。ユーザーが構築情報が正しいか否かを判断するのに不要な識別子やメッセージのデータ長などは表示していないが、これらの情報を表示してもよい。構築情報表示画面１４００では、ノードを識別するための情報としてノード管理テーブル１１００に登録されているメーカー１１０６と機器名称１１０７を各機器毎に表示している。構築情報表示画面１４００は、Ａ社製ＡＶリモコン１４０１がＡ社製Ｘテレビ１４０２、Ｂ社製Ｙビデオ１４０３、Ｃ社製Ｚカセットプレーヤー１４０４にメッセージを送信して制御することを示している。同様に、Ｎ社製Ｙ照明スイッチ１４０５はＨ社製Ｙ照明１４０７とＪ社製Ｚ照明１４０８にメッセージを送信して制御し、Ｍ社製Ｘ照明スイッチ１４０６はＫ社製Ｘ照明スイッチ１４０９にメッセージを送信して制御する。ここで、制御とは電源のオン／オフ制御などである。この内容が正しければ、ユーザーはマウスやタッチパネルなどの入力手段を用いて「はい」を選択し、この内容が正しくなければ「いいえ」を選択する。「いいえ」が選択されると図１５に示す構築情報変更画面１５００に移行する。
【００４０】
構築情報変更画面１５００は、構築情報表示画面１４００と同じ情報を表示しているが、構築内容を変更できる点が異なる。例えば、Ｊ社製Ｚ照明をＮ社製Ｙ照明スイッチが押されたときに点灯されるのではなく、Ｍ社製Ｘ照明スイッチが押されたときに点灯するようにしたい場合には、マウスやタッチパネルなどの入力手段により、Ｍ社製Ｘ照明スイッチを示す図（１５５１）とＪ社製Ｚ照明を示す図（１５５２）を選択する。これにより、Ｊ社製Ｚ照明が通信する相手がＮ社製Ｙ照明スイッチからＭ社製Ｘ照明スイッチに変更される。構築ツールは、ユーザーにより終了ボタンが選択され、構築内容の変更作業が終了すると、ユーザーが変更した内容にしたがって構築情報を修正する。
【００４１】
この実施例によれば、複数の機器により構成される分散システムにおいて、構築ツールがネットワークに接続されたノードを自動検出するステップと、検出されたノードの情報を収集するステップと、この情報によりシステムの構築情報を生成するステップと、構築情報が生成できない場合にはユーザーが構築情報を変更するステップと、生成された構築情報を各ノードに設定するステップにより、分散システムを自動的に設定することができる。従来では、機器の通信設定を行うには通信に関する知識や機器自体に関する知識を必要としたが、これらの設定が自動的に行われるようになり、システムエンジニアなどのサポートなしにシステムを構築することができ、一般家庭などにもシステムを容易に導入できる。仮に、システムが複雑な構成をしているために自動設定が行えず、ユーザーによる設定補助を必要とした場合でも、ユーザーに分かりやすい形で構築内容を表示し、特別な通信や機器に関する知識無しに設定変更が行える。
【００４２】
【発明の効果】
本発明によれば、多数の機器が接続された分散システムにおいて、機器の設定と機器の管理を容易にすることができる。
【図面の簡単な説明】
【図１】本発明における第１の実施例を適応したシステムの構成図である。
【図２】第１の実施例を適応した機器の構成図である。
【図３】第１の実施例におけるメッセージのフォーマットである。
【図４】第１の実施例におけるノードの自動検出を説明する図である。
【図５】第１の実施例におけるノード管理テーブルの構成図である。
【図６】第１の実施例における各ノードに設定する構築情報である。
【図７】第１の実施例における構築ツールの処理フローである。
【図８】第１の実施例における構築ツールの処理フローである。
【図９】第１の実施例における構築ツールの処理フローである。
【図１０】本発明における第２の実施例を適用したシステム構成図である。
【図１１】第２の実施例におけるノード管理テーブルの構成図である。
【図１２】第２の実施例における機器の設置位置を検出するための説明図である。
【図１３】第２の実施例における構築ツールの処理フローである。
【図１４】第２の実施例におけるユーザーが構築ツールが生成した構築情報を確認する構築情報確認画面である。
【図１５】第２の実施例におけるユーザーが構築ツールが生成した構築情報を変更する構築情報変更画面である。
【符号の説明】
１００…ネットワーク、１１０…コントローラ、１２０…計算機。
【図１】
0003757669.tif 000002
【図２】
0003757669.tif 000003
【図３】
0003757669.tif 000004
【図４】
0003757669.tif 000005
【図５】
0003757669.tif 000006
【図６】
0003757669.tif 000007
【図７】
0003757669.tif 000008
【図８】
0003757669.tif 000009
【図９】
0003757669.tif 000010
【図１０】
0003757669.tif 000011
【図１１】
0003757669.tif 000012
【図１２】
0003757669.tif 000013
【図１３】
0003757669.tif 000014
【図１４】
0003757669.tif 000015
【図１５】
0003757669.tif 000016