(57)【特許請求の範囲】
【請求項１】
マスター装置と複数のスレーブ装置とから構成されるネットワークシステムにおけるアドレス設定方法であって、
前記ネットワークシステムは、各スレーブ装置に一意に割り当てられるノードアドレスを用いて通信先のノードを特定した通信を行うモードを有しており、
前記ノードアドレスは、前記マスター装置に内蔵され、又は、前記マスター装置に接続された処理装置によって、各スレーブ装置自身に予め設定されているアドレス値に従って自動的に割り当てられるものであり、
前記アドレス設定方法は、
前記処理装置が、ネットワーク上のすべてのスレーブ装置から、各スレーブ装置に設定されているアドレス値を取得する取得ステップと、
前記処理装置が、他のスレーブ装置に設定されているアドレス値と重複するアドレス値が設定されているスレーブ装置を、異常スレーブ装置として抽出する異常抽出ステップと、
前記処理装置が、異常スレーブ装置でないスレーブ装置に対しては各スレーブ装置に設定されていたアドレス値をそのままノードアドレスとして割り当て、異常スレーブ装置に対しては他のスレーブ装置に割り当てられてないアドレス値を仮のノードアドレスとして割り当てるアドレス設定ステップと、
前記処理装置が、前記異常スレーブ装置に割り当てた仮のノードアドレスを用いた通信により、前記異常スレーブ装置に設定されているアドレス値を、他のスレーブ装置に設定されているアドレス値と重複しないアドレス値に変更する変更ステップと、
を含むことを特徴とするアドレス設定方法。
【請求項２】
前記変更ステップにより異常スレーブ装置のアドレス値を変更した後、前記処理装置が、前記取得ステップ、前記異常抽出ステップ、及び前記アドレス設定ステップを再び実行することを特徴とする請求項１に記載のアドレス設定方法。
【請求項３】
前記異常抽出ステップでは、アドレス値が設定されていないスレーブ装置も異常スレーブ装置として抽出されることを特徴とする請求項１又は２に記載のアドレス設定方法。
【請求項４】
前記処理装置は、ネットワーク上の各スレーブ装置に割り当てるべきノードアドレスが記載されている設定情報を予め記憶しており、
前記異常抽出ステップでは、前記設定情報に記載されているノードアドレスに一致するものがないアドレス値が設定されているスレーブ装置も異常スレーブ装置として抽出されることを特徴とする請求項１〜３のうちいずれか１項に記載のアドレス設定方法。
【請求項５】
前記ネットワークシステムは、マスター装置から見たときの接続順によって決まるポジションアドレスを用いて通信を行うモードを有しており、
ネットワーク上のすべてのスレーブ装置から、各スレーブ装置に設定されているアドレス値を取得する処理は、前記ポジションアドレスを用いた通信により行われることを特徴とする請求項１〜４のうちいずれか１項に記載のアドレス設定方法。
【請求項６】
マスター装置と複数のスレーブ装置とから構成されるネットワークシステムであって、
ネットワーク上のすべてのスレーブ装置から、各スレーブ装置に予め設定されているアドレス値を取得する取得手段と、
他のスレーブ装置に設定されているアドレス値と重複するアドレス値が設定されているスレーブ装置を、異常スレーブ装置として抽出する異常抽出手段と、
異常スレーブ装置でないスレーブ装置に対しては各スレーブ装置に設定されていたアドレス値をそのままノードアドレスとして割り当て、異常スレーブ装置に対しては他のスレーブ装置に割り当てられてないアドレス値を仮のノードアドレスとして割り当てるアドレス設定手段と、
前記アドレス設定手段で割り当てられたノードアドレス又は仮のノードアドレスを用いて、通信先のノードを特定した通信を行う通信手段と、
を有し、
前記取得手段は、マスター装置から見たときの接続順によって決まるポジションアドレスを用いた通信により、ネットワーク上のすべてのスレーブ装置から各スレーブ装置に予め設定されているアドレス値を取得する処理を行う
ことを特徴とするネットワークシステム。
【請求項７】
マスター装置と複数のスレーブ装置とから構成されるネットワークシステムで用いられるマスター装置であって、
ネットワーク上のすべてのスレーブ装置から、各スレーブ装置に予め設定されているアドレス値を取得する取得手段と、
他のスレーブ装置に設定されているアドレス値と重複するアドレス値が設定されているスレーブ装置を、異常スレーブ装置として抽出する異常抽出手段と、
異常スレーブ装置でないスレーブ装置に対しては各スレーブ装置に設定されていたアドレス値をそのままノードアドレスとして割り当て、異常スレーブ装置に対しては他のスレーブ装置に割り当てられてないアドレス値を仮のノードアドレスとして割り当てるアドレス設定手段と、
前記アドレス設定手段で割り当てられたノードアドレス又は仮のノードアドレスを用いて、通信先のノードを特定した通信を行う通信手段と、
を有し、
前記取得手段は、マスター装置から見たときの接続順によって決まるポジションアドレスを用いた通信により、ネットワーク上のすべてのスレーブ装置から各スレーブ装置に予め設定されているアドレス値を取得する処理を行う
ことを特徴とするマスター装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスター装置とスレーブ装置を有するネットワークシステムにおけるアドレス設定方法に関する。
【背景技術】
【０００２】
ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）においては、工場内に設置される生産設備のデータ収集及び制御を行う各種のスレーブ装置と、複数のスレーブ装置を集中管理するマスター装置（ＰＬＣ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）などから構成されるネットワークシステムにより生産設備の制御が行われる。
【０００３】
ＦＡの分野を対象とした産業用ネットワークシステムの一例として、イーサネット（登録商標）の技術を適用した産業用イーサネットと呼ばれる技術の開発が進んでいる。産業用イーサネットは、工業用イーサネットまたはリアルタイムイーサネットとも呼ばれ、イーサネットの技術や機器を様々なレイヤーでＦＡ分野に導入したネットワークである。産業用イーサネットとして様々な団体がオープンな規格を制定し公開しており、ＥＴＧ（ＥｔｈｅｒＣＡＴ  Ｔｅｃｈｎｏｌｏｇｙ  Ｇｒｏｕｐ）が推進するＥｔｈｅｒＣＡＴ（Ｅｔｈｅｒｎｅｔ  ｆｏｒ  Ｃｏｎｔｒｏｌ  Ａｕｔｏｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ：登録商標）もその一つである。
【０００４】
この種の産業用ネットワークシステムにおいては、ネットワーク上の各スレーブ装置（ネットワークノード）に対して割り当てたネットワークアドレスを用いて、各種のメッセージ通信が行われる。ネットワークアドレスの設定の仕方には、予め設定された静的なアドレスを用いるもの、動的にアドレスを割り当てるものなど、いくつかの方法が知られているが、いずれの場合であっても、各スレーブ装置にアドレスが適切に設定されていることがネットワークシステムの正常運用の前提となる。アドレス異常で最も多いケースは、複数のスレーブ装置に同一のアドレスが割り当てられてしまう「アドレス重複」である。
【０００５】
また、産業用ネットワークシステムでは、各スレーブ装置の確実な動作を保証するため、ネットワーク構成を設計する段階で各スレーブ装置に割り当てるアドレスを一元的に決定してしまい、そのアドレス値をスレーブ装置自体に設定しておく、という設計手法が採られることが多い。このような構成にあっては、例えば、スレーブ装置にアドレス値が設定されていない「アドレス未定」や、設計段階で決めたアドレスと異なるアドレス値が設定されたスレーブ装置が存在する「アドレス未知」といったアドレス異常も発生し得る。
【０００６】
従来、このようなアドレス異常が発生した場合には、ネットワークシステムを停止し、異常のあるスレーブ装置を特定し、当該スレーブ装置をネットワークから物理的に離脱してアドレスの再設定を行い、ネットワークシステムを再起動する必要があり、この一連の復旧作業に要する労力及び時間が問題となっていた。特に、工場などで既に実運用されているシステムの場合には、復旧作業のために一時的に生産ラインを停めなければならず、それによる生産効率の低下は甚大である。なお、アドレス異常の問題は、ＥｔｈｅｒＣＡＴに限らず、既存の他のネットワークシステム（例えば、ＴＣＰ／ＩＰ、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔなど）でも同様に生じ得る。
【０００７】
アドレス重複の検知や事前防止に関しては、様々な手法が提案されている。例えば、特許文献１では、ＰＣネットワークに接続されたプリンタのアドレス設定を支援するための方法が提案されている。また、特許文献２には、不正なＩＰアドレスが設定された端末の存在を検知するための方法が開示されている。
【０００８】
しかしながら、アドレス異常が生じた場合に、作業者の手を煩わせることなく、自動でアドレス異常を復旧するような仕組みは、従来存在していなかった。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１１−２８２６４４号公報
【特許文献２】特開２００８−２５２９２４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、マスター装置と複数のスレーブ装置とから構成されるネットワークシステムにおいて、アドレス異常が生じた場合に、簡単に且つオンラインでアドレス異常を復旧するための技術を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１態様は、マスター装置と複数のスレーブ装置とから構成されるネットワークシステムにおけるアドレス設定方法であって、前記ネットワークシステムは、各スレーブ装置に一意に割り当てられるノードアドレスを用いて通信先のノードを特定した通信を行うモードを有しており、前記ノードアドレスは、前記マスター装置に内蔵され、又は、前記マスター装置に接続された処理装置によって、各スレーブ装置自身に予め設定されているアドレス値に従って自動的に割り当てられるものであり、前記アドレス設定方法は、前記処理装置が、ネットワーク上のすべてのスレーブ装置から、各スレーブ装置に設定されているアドレス値を取得する取得ステップと、前記処理装置が、他のスレーブ装置に設定されているアドレス値と重複するアドレス値が設定されているスレーブ装置を、異常スレーブ装置として抽出する異常抽出ステップと、前記処理装置が、異常スレーブ装置でないスレーブ装置に対しては各スレーブ装置に設定されていたアドレス値をそのままノードアドレスとして割り当て、異常スレーブ装置に対しては他のスレーブ装置に割り当てられてないアドレス値を仮のノードアドレスとして割り当てるアドレス設定ステップと、を含むことを特徴とするアドレス設定方法である。
【００１２】
このネットワークシステムにおいては、スレーブ装置自身に予め設定されているアドレス値に従ってノードアドレスが自動的に割り当てられる「静的なアドレス付与」が基本となる。このような静的なアドレス付与の場合、例えば、他のスレーブ装置と重複するアドレス値をもつスレーブ装置をネットワークに加入してしまったりすると、複数のスレーブ装置に同一のノードアドレスを割り当てようとしてアドレス重複によるシステムエラーが発生する。
【００１３】
そこで本発明では、最初に、すべてのスレーブ装置のアドレス値を収集して、重複がないかを確認する。そして、重複が検出された場合は、アドレス値をそのままノードアドレスとして割り当てるのではなく、他のアドレス値と重複が生じないように、仮のノードアドレスを割り当てる。これにより、アドレス重複（ノードアドレスの衝突）が自動的に回避され、ノードアドレスを用いた通信（通信先のノードを特定した通信）を行うことが可能となる。
【００１４】
本発明のアドレス設定方法においては、前記処理装置が、異常スレーブ装置に設定されているアドレス値を、他のスレーブ装置に設定されているアドレス値と重複しないアドレス値に変更する変更ステップをさらに含むことが好ましい。これにより、アドレス異常が生じていたスレーブ装置に対し、他のスレーブ装置と重複しない適切なアドレス値が設定
される。したがって、少なくとも次回のネットワーク起動時には、変更後の適切なアドレス値が反映され、当該スレーブ装置に対して（「仮」ではない）正式なノードアドレスが割り当てられることとなる。
【００１５】
好ましくは、前記変更ステップにより異常スレーブ装置のアドレス値を変更した後、前記処理装置が、前記取得ステップ、前記異常抽出ステップ、及び前記アドレス設定ステップを再び実行するとよい。これにより、自動的かつ速やかに、変更後のアドレス値に従った正式なノードアドレスが各スレーブ装置に割り当てられる。
【００１６】
なお、異常スレーブ装置に設定するアドレス値については、処理装置が自動で決定することもできるし、処理装置を操作するユーザが選択（入力）することもできる。また、アドレス値変更後のアドレス設定の再実行に関しても、処理装置が自動で行うのではなく、ユーザの指示により行ってもよい。もちろん全てを自動化するほうが復旧作業に要する労力及び時間をより短縮することができるが、たとえユーザ操作の場合であっても、本発明によれば処理装置からオンラインで指示が可能であるため、システムの停止やスレーブ装置の離脱・設定変更などのオフライン作業を排除でき、復旧作業が格段に効率化される。
【００１７】
異常スレーブ装置のアドレス値を変更する処理は、当該異常スレーブ装置に割り当てられた仮のノードアドレスを用いた通信により行われるものであることが好ましい。また、前記ネットワークシステムは、マスター装置から見たときの接続順によって決まるポジションアドレスを用いて通信を行うモードを有しており、ネットワーク上のすべてのスレーブ装置から、各スレーブ装置に設定されているアドレス値を取得する処理は、前記ポジションアドレスを用いた通信により行われることが好ましい。
【００１８】
また、前記異常抽出ステップでは、アドレス値が設定されていないスレーブ装置も異常スレーブ装置として抽出されることが好ましい。これにより、所謂「アドレス未定」の異常についても復旧することができる。
【００１９】
また、前記処理装置は、ネットワーク上の各スレーブ装置に割り当てるべきノードアドレスが記載されている設定情報を予め記憶しており、前記異常抽出ステップでは、前記設定情報に記載されているノードアドレスに一致するものがないアドレス値が設定されているスレーブ装置も異常スレーブ装置として抽出されることが好ましい。これにより、所謂「アドレス未知」の異常についても復旧することができる。
【００２０】
なお、本発明は、上記処理の少なくとも一部を含むアドレス設定方法として特定することもできるし、上記処理を実現する手段の少なくとも一部を含むネットワークシステム又はマスター装置として特定することもできる。上記処理や手段の各々は、技術的な矛盾が生じない限りにおいて、自由に組み合わせることが可能である。
【００２１】
例えば、本発明の第２態様は、マスター装置と複数のスレーブ装置とから構成されるネットワークシステムであって、ネットワーク上のすべてのスレーブ装置から、各スレーブ装置に予め設定されているアドレス値を取得する取得手段と、他のスレーブ装置に設定されているアドレス値と重複するアドレス値が設定されているスレーブ装置を、異常スレーブ装置として抽出する異常抽出手段と、異常スレーブ装置でないスレーブ装置に対しては各スレーブ装置に設定されていたアドレス値をそのままノードアドレスとして割り当て、異常スレーブ装置に対しては他のスレーブ装置に割り当てられてないアドレス値を仮のノードアドレスとして割り当てるアドレス設定手段と、前記アドレス設定手段で割り当てられたノードアドレス又は仮のノードアドレスを用いて、通信先のノードを特定した通信を行う通信手段と、を有することを特徴とするネットワークシステムである。
【００２２】
また、本発明の第３態様は、マスター装置と複数のスレーブ装置とから構成されるネットワークシステムで用いられるマスター装置であって、ネットワーク上のすべてのスレーブ装置から、各スレーブ装置に予め設定されているアドレス値を取得する取得手段と、他のスレーブ装置に設定されているアドレス値と重複するアドレス値が設定されているスレーブ装置を、異常スレーブ装置として抽出する異常抽出手段と、異常スレーブ装置でないスレーブ装置に対しては各スレーブ装置に設定されていたアドレス値をそのままノードアドレスとして割り当て、異常スレーブ装置に対しては他のスレーブ装置に割り当てられてないアドレス値を仮のノードアドレスとして割り当てるアドレス設定手段と、前記アドレス設定手段で割り当てられたノードアドレス又は仮のノードアドレスを用いて、通信先のノードを特定した通信を行う通信手段と、を有することを特徴とするマスター装置である。
【発明の効果】
【００２３】
本発明によれば、マスター装置と複数のスレーブ装置とから構成されるネットワークシステムにおいて、アドレス異常が生じた場合に、簡単に且つオンラインでアドレス異常を復旧することができる。
【図面の簡単な説明】
【００２４】
【図１】アドレス設定処理の一例を示す図である。
【図２】産業用ネットワークシステムの構成例を説明するブロック図である。
【図３】ポジションアドレスモードの通信方式を説明する図である。
【図４】マスター装置により実行されるスレーブ情報収集処理の流れを示すフローチャートである。
【図５】（Ａ）はアドレス管理テーブルの一例を示す図であり、（Ｂ）は実構成情報の一例を示す図であり、（Ｃ）はネットワーク構成情報の一例を示す図である。
【図６】アドレス検査・割当処理の流れを示すフローチャートである。
【図７】エイリアス変更処理の流れを示すフローチャートである。
【図８】アドレス設定処理の変形例を示す図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照しつつ、本発明の好適な実施の形態を説明する。以下の実施形態ではＥｔｈｅｒＣＡＴの規格に即したネットワークシステムにおけるアドレス設定方法を取り上げるが、本発明の対象はこれに限られない。マスター装置と複数のスレーブ装置とから構成され、各スレーブ装置に一意に割り当てられるノードアドレスを用いて通信先のノードを特定した通信を行うモードを有しており、且つ、そのノードアドレスがスレーブ装置の設定値に従って自動的に（静的に）割り当てられる仕組みのネットワークシステムであれば、本発明を適用する対象とすることができる。
【００２６】
（産業用ネットワークシステムの構成）
まず、図２を用いて本発明が対象とする産業用ネットワークシステムの構成例を示す。本図において、産業用ネットワークシステム１００は、マスター装置２００（ＰＬＣ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）と複数のスレーブ装置３００とが、ケーブル４００や装置に備わるＩ／Ｏユニット５００、ハブ装置７００を介して直接的又は間接的に接続されることにより形成される。スレーブ装置３００には、電源ユニット，モータユニット，カウンタユニット，画像ユニット，通信ユニット，Ｉ／Ｏユニット等がある。マスター装置２００には、ユーザがマスター装置２００の動作設定、産業用ネットワークシステム１００の動作状態の表示、ネットワークの設計など行うための管理装置６００が接続されることもある。管理装置６００は設計支援ツールや管理ツールがインストールされたパーソナルコンピュータなどにより構成される。
【００２７】
後述するアドレス設定処理は、マスター装置２００若しくは管理装置６００により実行され、又は、マスター装置２００と管理装置６００の協働により実行される。すなわち、本実施形態では、マスター装置２００及び／又は管理装置６００が、本発明のアドレス設定方法の実行主体である処理装置に対応する。
【００２８】
ハブ装置７００は、マスター装置側を上流としたときに、上流側に接続する１つのポート（ＩＮポート）７０１と、下流側に接続する複数のポート（ＯＵＴポート）７０２ａ〜７０２ｃを有している。利用者は各装置をケーブルやハブ装置を用いて順序や分岐を設定しながら接続することにより、所望のトポロジを作ることができる。分岐構造は、ハブ装置だけではなく、スレーブ装置が下流側に複数のスレーブ装置を接続することによっても作ることができる。
【００２９】
ＥｔｈｅｒＣＡＴにおいてはケーブル４００に関して、一般のイーサネットの規格で使用されるものの転用や、イーサネット用機器の製造設備での製造が可能である。これにより費用削減を実現している。
【００３０】
このような産業用ネットワークシステム１００は、例えば工場等に敷設されＦＡシステムとして利用される。マスター装置２００は、プログラムやオペレーションに従い、ネットワークを通じて制御データを含む情報信号を送信する。スレーブ装置３００は、情報信号に含まれるマスター装置からのリクエストへの応答として、受信した情報信号に基づく装置動作や、受信した情報信号の書き換えおよび返送処理を行う。産業用ネットワークシステム１００を含む工場における生産は、マスター装置が動作の内容やタイミングを制御することによりスレーブ装置全体が連動して作業を分担することにより達成される。
【００３１】
なお、産業用ネットワークシステム１００を設計する際にはスレーブ装置間の接続順序やハブ装置におけるポート番号といったようなトポロジを意識した設計を行うことが必要になる。しかし通常のユーザがＳＥやカスタマーエンジニアのような専門知識や経験を有しているとは限らない。そこで、グラフィカルな表示によりトポロジを理解しやすくして設計作業を助けるための設計支援ツールを提供することが好ましい。設計支援ツールは、管理装置６００の一機能として提供される。設計支援ツールでは、管理装置６００のディスプレイに表示されたＧＵＩを使って、スレーブ装置の機種選択、接続順序や接続ポートの選択（トポロジの設計）、各スレーブ装置に割り当てるノードアドレスの指定などを簡単に行うことのできる設計環境をユーザに提供する。
【００３２】
（マスター−スレーブ間通信のモード）
本実施形態の産業用ネットワークシステム１００では、マスター装置２００とスレーブ装置３００との間の通信方式として、ポジションアドレスモード、ノードアドレスモード、論理アドレスモードの３つのモードが用意されている。以下、詳しく説明する。
【００３３】
（１）ポジションアドレスモード
このモードは、ポジションアドレスを用いてマスター−スレーブ間通信を行うものである。ポジションアドレスとは、マスター装置から見たときの接続順でアドレッシングされるネットワークアドレスである。
【００３４】
図３は、ポジションアドレスモードの通信方式を説明する図である。この例では、説明の簡単のために、マスター装置２００に対して４台のスレーブ装置３００ａ〜３００ｄが直列状に接続された単純なトポロジを示している。このようなトポロジの場合、マスター装置２００に近い順に、０ｘ００００，０ｘＦＦＦＦ，０ｘＦＦＦＥ，０ｘＦＦＦＤというポジションアドレスが割り当てられる。
【００３５】
ポジションアドレスモードでは、マスター装置２００は、宛先となるスレーブ装置のポジションアドレスをメッセージに付加し、メッセージを送信する。各スレーブ装置は、メッセージを受信すると、付加されているアドレスを確認し、それが「０ｘ００００」であれば自分宛てのメッセージであると判断する。一方、自分宛てのメッセージでない場合は、スレーブ装置は、メッセージに付加されているアドレスをインクリメントする（１を足す）。
【００３６】
例えば、３番目のスレーブ装置３００ｃ宛てにメッセージを送る場合は、「０ｘＦＦＦＥ」がメッセージに付加される。そうすると、１番目のスレーブ装置３００ａ、２番目のスレーブ装置３００ｂを通過する過程で、メッセージに付加されているアドレスが順次インクリメントされ、３番目のスレーブ装置３００ｃに到達する際に「０ｘ００００」となる。その結果、スレーブ装置３００ｃが当該メッセージを自分宛てのものとして受信することになる。
【００３７】
なお、ポジションアドレスは、スレーブ装置の物理的な接続順で決まるため、アドレス重複などのアドレス異常が発生しないという利点がある。しかし、ポジションアドレスはネットワーク状態（スレーブ装置の接続順や数、トポロジなど）に依存して変動してしまうため、クリティカルな通信を行うのには適していない。したがって、ポジションアドレスによる通信は、例えばネットワーク起動時のスレーブ情報の収集等の低レベルの通信処理にのみ利用され、スレーブ装置の監視や管理に関わる通信処理やタスク実行に関わる通信処理などには、次に述べるノードアドレスや論理アドレスを用いた通信が利用される。
【００３８】
（２）ノードアドレスモード
このモードは、マスター装置２００が各スレーブ装置３００に割り当てるノードアドレスを用いてマスター−スレーブ間通信を行うものである。各スレーブ装置３００には、ユーザによって予めアドレス値が設定されており、このアドレス値はスレーブ装置内の不揮発性メモリに保持されている。マスター装置２００は、ネットワークの起動時に各スレーブ装置３００からアドレス値を読み取り、原則、そのアドレス値と同じ値のノードアドレスを各スレーブ装置３００に割り当てる。なお、スレーブ装置に設定されている設定値としてのアドレス値を、スレーブ装置に割り当てられ通信に利用されるノードアドレスのアドレス値と明確に区別するため、設定値としてのアドレス値を以下「エイリアス」と称する。
【００３９】
このようにノードアドレスは静的に付与されるアドレスであるため、ネットワーク状態に依存しない通信が可能である（つまり、たとえネットワーク状態が変化してもノードアドレスは変化しない。）。したがって、例えば、スレーブ装置の監視や管理に関わる通信処理など、通信相手先のスレーブ装置（ノード）を特定したイベント型のメッセージ通信が必要な場合に、このモードが利用される。
【００４０】
ただし、静的なアドレス付与に関しては、前述したようなアドレス異常が発生する可能性がある。すなわち、ネットワーク上に同じエイリアス設定のスレーブ装置が存在している場合や、稼働中のネットワークに新たに追加したスレーブ装置が他のスレーブ装置と同じエイリアス設定であった場合には、アドレス重複（ノードアドレスの衝突）によるシステムエラーが発生する。また、スレーブ装置にエイリアスが設定されていない場合（アドレス未定）は、スレーブ装置に対しノードアドレスを付与できないというエラーが発生する。
【００４１】
（３）論理アドレスモード
このモードは、フレームと呼ばれるデータを用いたサイクリック通信に用いられるものである。フレームは所定長のデータからなり、フレーム内には各スレーブ装置３００にそ
れぞれ割り当てられたデータ領域が設けられている。本モードにおける論理アドレスとは、フレーム内の自分のデータ領域を指し示すアドレスに対応するものである。
【００４２】
マスター装置２００から周期的に発信されるフレームは、すべてのスレーブ装置３００を順に通過した後、後端（最下流）のスレーブ装置で折り返され、マスター装置２００に戻される。各スレーブ装置３００は、フレームが自装置内を通過する際に、フレーム内の自分のデータ領域に対しデータの読み書きを行う。これにより、高速なデータ伝送とリアルタイム性を実現している。タスク実行に関わる通信処理はもっぱら論理アドレスモードで行われる。
【００４３】
（アドレス設定処理）
次に、図１、図４〜図７を参照して、本発明の実施形態に係るアドレス設定処理について詳しく説明する。
【００４４】
（１）スレーブ情報の収集
図４は、マスター装置２００により実行されるスレーブ情報収集処理（ネットワークスキャン処理）の流れを示すフローチャートである。また、図１（Ａ）〜図１（Ｄ）は、アドレス設定処理の一例を示す図である。
【００４５】
ネットワーク起動時や、ネットワーク構成の変更（スレーブ装置の加入や離脱）があった時などに、図４に示す処理がマスター装置２００により実行される。まず、マスター装置２００は、ネットワーク上に存在するスレーブ装置の数を確認する（ステップＳ１００）。例えば、マスター装置２００から送出されたデータ（初期値＝０）を各スレーブ装置３００ａ〜３００ｃでカウントアップし、結果をマスター装置２００に返送することで、スレーブ装置の総数を取得可能である。この処理はポジションアドレスモードで実行される。図１（Ａ）の例では、スレーブ数は「３」となる。
【００４６】
次に、マスター装置２００は、各々のスレーブ装置３００ａ〜３００ｃから、プロファイル情報とスレーブ接続情報を読み出す（ステップＳ１０１）。プロファイル情報とは、スレーブ装置を識別するための情報であって、例えば、スレーブ装置のプロダクトコード、ベンダＩＤ、リビジョン番号などを含んでいる。また、スレーブ接続情報とは、スレーブ装置の接続構成（トポロジ）を理解するための情報であって、例えば、スレーブ装置の接続先の装置とポートを特定する情報などを含んでいる。これらの情報に基づき、ネットワーク全体の構成要素とそのトポロジを把握することができる。
【００４７】
次に、マスター装置２００は、各々のスレーブ装置３００ａ〜３００ｃから、スレーブ装置内に設定されているエイリアスを読み出し、アドレス管理テーブルを更新する（ステップＳ１０２）。アドレス管理テーブルとは、すべてのスレーブ装置３００ａ〜３００ｃのエイリアスがリストされた情報であり、後述するアドレス異常の判定やノードアドレスの割り当てに利用されるものである。
【００４８】
図５（Ａ）は、図１（Ａ）のネットワークから得られたアドレス管理テーブルの例であり、ポジションアドレス順に「０ｘ１，０ｘ２，０ｘ１」のようにエイリアスが記述されている。なお、アドレス管理テーブルは、スレーブ装置のエイリアスの情報に加え、スレーブ装置に割り当てられたノードアドレスの値の情報も含んでいる（ただし、ノードアドレスの割り当てはこの後の処理で行われるため、ステップＳ１０２の時点ではノードアドレスの値は空欄となっている。）。ステップＳ１０１、Ｓ１０２の処理もポジションアドレスモードで実行される。
【００４９】
ステップＳ１０１、Ｓ１０２の処理をすべてのスレーブ装置３００ａ〜３００ｃに対し
て実行した後、マスター装置２００は、プロファイル情報、スレーブ接続情報、及びアドレス管理テーブルを元に、当該ネットワークの構成を表す実構成情報を作成する（ステップＳ１０３）。
【００５０】
図５（Ｂ）は、図１（Ａ）のネットワークから得られた実構成情報の例である。この例では、１番目のスレーブ装置３００ａは、「プロダクトコード：ａ１、ベンダＩＤ：Ａ、リビジョン番号：００２（ａ１−Ａ−００２）」で識別される装置であり、装置「ＭＡＳＴＥＲ」（マスター装置）の「Ｏｕｔ１」ポートに接続されており、エイリアス設定が「０ｘ１」であることが示されている。また、２番目のスレーブ装置３００ｂは、「ａ３−Ａ−０００」で識別され、装置「ａ１−Ａ−００２」（スレーブ装置３００ａ）の「Ｏｕｔ１」ポートに接続されており、エイリアス設定が「０ｘ２」である。また、３番目のスレーブ装置３００ｃは、「ｂ０−Ｂ−００５」で識別され、装置「ａ３−Ａ−０００」（スレーブ装置３００ｂ）の「Ｏｕｔ２」ポートに接続されており、エイリアス設定が「０ｘ１」である。
【００５１】
（２）アドレス異常の検査とアドレスの割り当て
図６は、アドレス検査・割当処理の流れを示すフローチャートである。この処理は、図４のスレーブ情報収集処理に続いて、マスター装置２００により実行されるものである。
【００５２】
マスター装置２００は、まず１番目のスレーブ装置３００ａについて、アドレス管理テーブルを参照することにより、当該スレーブ装置３００ａのエイリアスが他のスレーブ装置３００ｂ、３００ｃのエイリアスと重複していないかを確認する（ステップＳ２００）。重複が無い場合はステップＳ２０１の処理、重複が検出された場合はステップＳ２０４の処理へ進む。
【００５３】
図１（Ａ）、図５（Ａ）に示すように、スレーブ装置３００ａのエイリアスは「０ｘ１」であり、スレーブ装置３００ｃのエイリアスと同一である。それゆえ、マスター装置２００は、ステップＳ２０４において、アドレス管理テーブルを参照して他のスレーブ装置に割り当てられていないアドレス値を選び、そのアドレス値を「仮のノードアドレス」としてスレーブ装置３００ａに設定する。本実施形態では、アドレス管理テーブルに記述されたエイリアス及びノードアドレス（つまり、割り当て予定のアドレス値と割り当て済みのアドレス値）を除いた空きアドレスの中で、最も小さな値のものを、仮のノードアドレスとして選択する。したがって、スレーブ装置３００ａには、仮のノードアドレス「０ｘ３」が割り当てられる。このノードアドレスの割り当てもポジションアドレスモードで実行される。割り当てられたノードアドレスの値は、図５（Ａ）の右側に示すように、アドレス管理テーブルに書き込まれる。
【００５４】
なお、仮のノードアドレスの選び方は上記のアルゴリズムに限られず、他のスレーブ装置とのアドレス重複が回避できさえすればどのようなアルゴリズムを用いてもよい。例えば、空きアドレスの中で最も大きい値のものを選んでもよいし、予め一定数のアドレス値を仮のノードアドレス用に確保しておき、その中から選んでもよい。
【００５５】
次に、マスター装置２００は、２番目のスレーブ装置３００ｂに対しても同様に、エイリアスの重複がないかを確認する（ステップＳ２００）。図５（Ａ）に示すように、スレーブ装置３００ｂのエイリアスは「０ｘ２」であり、アドレス重複は無い。それゆえ、マスター装置２００は、ステップＳ２０１に進み、ネットワーク構成情報（設定情報）に記載されているノードアドレスの中にスレーブ装置３００ｂのエイリアスと一致するものが含まれているか否かを確認する。
【００５６】
ネットワーク構成情報の一例を図５（Ｃ）に示す。ネットワーク構成情報とは、管理装
置６００の設計支援ツール又は管理ツールから取得されるデータであって、ネットワークシステムを構成する各スレーブ装置のプロファイル情報、スレーブ接続情報、アドレス情報などが記述されているデータである。ネットワーク構成情報に含まれる情報の種類は、図５（Ｂ）に示す実構成情報に含まれるものと実質的に同じであるが、実構成情報が実際のネットワークシステムから収集した情報であるのに対し、ネットワーク構成情報は設計上の情報（ユーザが意図するネットワーク構成を示している情報）である点で異なる。ネットワークシステムが設計通りに組み上げられている場合は両者の内容は同じになるが、スレーブ装置の機種や接続先を間違えたり、エイリアス設定を間違えたりすると、ネットワーク構成情報と実構成情報とが不一致となる。
【００５７】
ステップＳ２０１において、スレーブ装置のエイリアスと一致するものがネットワーク構成情報に存在しなかった場合（アドレス未知）は、ステップＳ２０４の処理に進み、仮のノードアドレスが割り当てられる。またスレーブ装置にエイリアスが設定されていなかった場合（アドレス未定）も、やはりネットワーク構成情報に同じものが存在しないことから、ステップＳ２０４の処理に進み、仮のノードアドレスが割り当てられる。
【００５８】
スレーブ装置３００ｂのエイリアス「０ｘ２」と一致するものがネットワーク構成情報に含まれていたら、マスター装置２００は、プロファイル情報とスレーブ接続情報についても照合する（ステップＳ２０２）。図示はしていないが、プロファイル情報やスレーブ接続情報が不一致であった場合は、確認を要する旨のエラーメッセージを管理装置６００のディスプレイなどに出力したり、アドレス設定処理を中断したりしてもよい。
【００５９】
その後、マスター装置２００は、スレーブ装置３００ｂに対して、当該スレーブ装置３００ｂに設定されていたエイリアスと同じ値「０ｘ２」をノードアドレスとして割り当てる（ステップＳ２０３）。割り当てられたノードアドレスの値は、アドレス管理テーブルに書き込まれる。
【００６０】
次に、マスター装置２００は、３番目のスレーブ装置３００ｃに対しても同様に、エイリアスの重複がないかを確認する（ステップＳ２００）。図５（Ａ）に示すように、スレーブ装置３００ｃのエイリアスは「０ｘ１」であり、アドレス重複がある。それゆえ、ステップＳ２０４において、仮のノードアドレス「０ｘ４」がスレーブ装置３００ｃに対して割り当てられる。
【００６１】
図１（Ｂ）は、すべてのスレーブ装置３００ａ〜３００ｃにノードアドレスの設定が完了した状態を示している。上記のように、アドレス重複を起こしていた１番目と３番目のスレーブ装置３００ａ、３００ｃには、エイリアスとは異なる、仮のノードアドレスが設定されていることが分かる。
【００６２】
以上の処理によってアドレス重複の無いノードアドレスの割り当てが行われ、以降は、ポジションアドレスモードだけでなく、ノードアドレスモードでのメッセージ通信も行えるようになる。
【００６３】
（３）エイリアスの変更
図７は、エイリアス変更処理の流れを示すフローチャートである。この処理は、図６のアドレス検査・割当処理において仮のノードアドレスが割り当てられたスレーブ装置（異常スレーブ装置と称す。）が存在した場合に、各異常スレーブ装置に対して適用される処理である。本実施形態では、マスター装置２００に接続された管理装置６００によって、以下の処理が実行されるものとする。
【００６４】
管理装置６００は、異常スレーブ装置のエイリアス設定を、新たなアドレス値に書き換
える（ステップＳ３００）。本実施形態では、管理装置６００を操作するユーザによって新たなアドレス値が指定されるものとする。新たなアドレス値は、他のスレーブ装置のエイリアスと重複しない限りどのような値を選んでもよい。もちろん、ユーザが指定するのではなく、管理装置６００が自動で決定することもできる（例えば、図６のステップＳ２０４で選ばれた仮のノードアドレスをそのまま新たなアドレス値に選んでもよい。）。なお、エイリアス設定を書き換える処理は、仮のノードアドレスを利用したノードアドレスモードの通信により行われる。
【００６５】
次に、管理装置６００は、異常スレーブ装置に対してｍａｉｌｂｏｘ通信設定を行い、ｍａｉｌｂｏｘ通信状態にする（ステップＳ３０１）。そして、管理装置６００は、ｍａｉｌｂｏｘ通信により異常スレーブ装置にスレーブリスタート要求を送信し、異常スレーブ装置を再起動する（ステップＳ３０２）。これにより、当該スレーブ装置において、ステップＳ３００で書き換えたエイリアスが有効化される。なお、ステップＳ３０２、Ｓ３０３の処理も、仮のノードアドレスを利用したノードアドレスモードの通信により行われる。
【００６６】
以上の処理によって、管理装置６００からのオンライン作業により、異常スレーブ装置のエイリアス設定を、他のスレーブ装置のエイリアスと重複しない値に変更することができる。図１（Ｃ）は、エイリアス変更処理後の各スレーブ装置のエイリアス設定を示している。アドレス重複を起こしていたスレーブ装置３００ａと３００ｃのエイリアスが別の値に変更されていることが分かる。なお、スレーブ装置のエイリアスを変更した場合には、それに合わせて、管理装置６００に記憶されているネットワーク構成情報のアドレス情報も自動又はユーザ操作により更新する。
【００６７】
（４）アドレスの再設定
図７で述べた方法により異常スレーブ装置のエイリアス設定を変更した後、マスター装置２００は、図６のアドレス検査・割当処理を再実行する。これにより、自動的かつ速やかに、変更後のエイリアス設定に従った正式なノードアドレスが各スレーブ装置３００ａ〜３００ｃに割り当てられる（図１（Ｄ）参照）。
【００６８】
以上述べたように、本実施形態のアドレス設定方法では、エイリアスの重複が検出された場合は、エイリアスをそのままノードアドレスとして割り当てるのではなく、別のアドレス値を仮のノードアドレスとして割り当てる。これにより、アドレス重複（ノードアドレスの衝突）が自動的に回避され、ノードアドレスモードによる通信を行うことが可能となる。そして、ノードアドレスモードによる通信を利用して、スレーブ装置のエイリアス設定の書き換えとスレーブ装置のリスタートを行うことで、オンラインによりエイリアスの変更（アドレス異常原因の解消）が可能となる。したがって、ネットワークシステムの停止やスレーブ装置の離脱・設定変更などのオフライン作業を排除できるため、従来に比べてアドレス異常の復旧作業が格段に効率化される。
【００６９】
（変形例）
上記実施形態では、スレーブ情報収集処理（図４）においてアドレス重複が検出されたすべてのスレーブ装置、すなわち図１（Ｂ）の例ではスレーブ装置３００ａと３００ｃの両方に対して、仮のノードアドレスを割り当てるようにしている。しかし、アドレスが重複しているスレーブ装置のうち、１つはエイリアス設定どおりのノードアドレスを割り当て、残りのものに仮のノードアドレスを割り当てるようにしても、アドレス重複は解消される。
【００７０】
例えば、図８（Ａ）に示すように、稼働中のネットワークシステムに対し、重複アドレスをもつ新たなスレーブ装置３００ｃを加入するケースを想定する。このような場合、既
に稼働中の部分（スレーブ装置３００ａ、３００ｂ）には影響を及ぼさないようにすべきである。そこで、既に稼働中のスレーブ装置の場合は図６のステップＳ２００をスキップし、新たに加入したスレーブ装置についてのみステップＳ２００のアドレス重複判定を行うようにするとよい。そうすると、図８（Ｂ）に示すように、スレーブ装置３００ａ、３００ｂに対してはエイリアスどおりのノードアドレスが割り当てられ、スレーブ装置３００ｃに対してのみ仮のノードアドレス「０ｘ３」が割り当てられることとなる。その後のエイリアス変更処理等は上記実施形態のものと同様である。この方法によれば、稼働中のスレーブ装置のノードアドレスを変更することなく、アドレス重複を回避できるため、生産ライン等に影響を及ぼすリスクを最小限に抑えることができる。
【符号の説明】
【００７１】
１００：産業用ネットワークシステム
２００：マスター装置
３００、３００ａ、３００ｂ、３００ｃ、３００ｄ：スレーブ装置
６００：管理装置
【図１】
0005212509.tif 000002
【図２】
0005212509.tif 000003
【図３】
0005212509.tif 000004
【図４】
0005212509.tif 000005
【図５】
0005212509.tif 000006
【図６】
0005212509.tif 000007
【図７】
0005212509.tif 000008
【図８】
0005212509.tif 000009