(57)【要約】【課題】スレーブ装置のアドレスを効率的に適正な状態とすること。【解決手段】通信システムは、マスタ装置として機能する通信装置と、通信装置と通信線を介して通信可能に接続される複数のスレーブ装置とを含み、通信装置は、複数のスレーブ装置からなるトポロジにおける追加スレーブ装置の位置に基づいて追加スレーブ装置に所定のアドレスを設定し（ステップＳ１１２）、追加スレーブ装置に所定のアドレスが設定されるときにトポロジに変化が生じた可能性があるか否かを判断し（ステップＳ１１３）、変化が生じた可能性があると判断されたときに、アドレスが誤って設定された誤設定スレーブ装置があれば特定し（ステップＳ１１４からステップＳ１１６）、特定された誤設定スレーブ装置のアドレスを元のアドレスに再設定する（ステップＳ１１７）。【選択図】図４
2018093382.tif 000002
【特許請求の範囲】
【請求項１】
マスタ装置として機能する通信装置と、前記通信装置と通信線を介して通信可能に接続される複数のスレーブ装置とを含む通信システムであって、
前記通信装置は、
複数の前記スレーブ装置からなるトポロジにおける追加スレーブ装置の位置に基づいて前記追加スレーブ装置に所定のアドレスを設定する設定部と、
前記設定部によって前記追加スレーブ装置に前記所定のアドレスが設定されるときに前記トポロジに変化が生じた可能性があるか否かを判断する判断部と、
前記判断部によって変化が生じた可能性があると判断されたときに、前記設定部によってアドレスが誤って設定された誤設定スレーブ装置があれば特定する特定部と、
前記特定部によって特定された前記誤設定スレーブ装置のアドレスを元のアドレスに再設定する再設定部とを含む、通信システム。
【請求項２】
複数のスレーブ装置と通信線を介して通信可能に接続されるマスタ装置として機能する通信装置であって、
複数の前記スレーブ装置からなるトポロジにおける追加スレーブ装置の位置に基づいて前記追加スレーブ装置に所定のアドレスを設定する設定部と、
前記設定部によって前記追加スレーブ装置に前記所定のアドレスが設定されるときに前記トポロジに変化が生じた可能性があるか否かを判断する判断部と、
前記判断部によって変化が生じた可能性があると判断されたときに、前記設定部によってアドレスが誤って設定された誤設定スレーブ装置があれば特定する特定部と、
前記特定部によって特定された前記誤設定スレーブ装置のアドレスを元のアドレスに再設定する再設定部とを含む、通信装置。
【請求項３】
前記設定部は、
前記トポロジに含まれる複数の前記スレーブ装置の位置を示す設定情報を予め記憶する設定記憶部と、
前記設定記憶部に記憶された前記設定情報に基づいて前記追加スレーブ装置の位置を特定する位置特定部と、
前記位置特定部によって特定された位置のスレーブ装置に対して、前記所定のアドレスを設定するための命令を送信する送信部とを含む、請求項２に記載の通信装置。
【請求項４】
前記特定部は、
前記設定部によってアドレスが設定された設定スレーブ装置から、固有情報を取得する取得部と、
前記取得部によって取得された固有情報が、前記所定のアドレスに対応する固有情報と異なるか判定する固有情報判定部とを含み、
前記固有情報判定部によって異なると判定された場合、前記設定スレーブ装置を前記誤設定スレーブ装置として特定する、請求項２に記載の通信装置。
【請求項５】
前記判断部は、前記スレーブ装置において前記通信線の抜き差しがあったことを検知することによって前記トポロジに変化が生じた可能性があるか否かを判断する、請求項２に記載の通信装置。
【請求項６】
前記判断部は、前記スレーブ装置の数に変化があったか否かを検知することによって前記トポロジに変化が生じた可能性があるか否かを判断する、請求項２に記載の通信装置。
【請求項７】
複数のスレーブ装置と通信線を介して通信可能に接続されるマスタ装置として機能する通信装置において実行される通信プログラムであって、
複数の前記スレーブ装置からなるトポロジにおける追加スレーブ装置の位置に基づいて前記追加スレーブ装置に所定のアドレスを設定するステップと、
前記追加スレーブ装置に前記所定のアドレスが設定されるときに前記トポロジに変化が生じた可能性があるか否かを判断するステップと、
前記トポロジに変化が生じた可能性があると判断されたときに、アドレスが誤って設定された誤設定スレーブ装置があれば特定するステップと、
特定された前記誤設定スレーブ装置のアドレスを元のアドレスに再設定するステップとを実行させる、通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、通信システム、通信装置および通信プログラムに関し、特に、機械や設備などの動作を制御するために用いられる制御システムにおける通信システム、通信装置および通信プログラムに関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備は、典型的には、プログラマブルロジックコントローラ（Programmable Logic Controller；以下「ＰＬＣ」とも称す）などからなる制御システムによって制御される。このような制御システムは、外部のスイッチやセンサなどからフィールド情報を収集し、機械や設備に対して所定の制御をするために、収集された情報に基づく演算によって得られる指令値を出力する。
【０００３】
このようなフィールド情報の収集および指令値の出力は、ネットワークを介して行われる場合が多い。例えば、特開２０１２−１９４６３１号公報（以下特許文献１という）には、少なくとも１つ以上のマスタ装置と複数のスレーブ装置が、ネットワークを介して接続されて成るネットワークシステムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９４６３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のようなネットワークのトポロジに新たにスレーブ装置を追加する場合に、追加したスレーブ装置に、当該スレーブ装置のトポロジにおける位置に基づいて、自動的に、ノードアドレスの設定値が書き込まれるように構成されているシステムがある。このようなシステムにおいて、ノードアドレスの設定値が書き込まれる処理が行われているときに、トポロジに変化が生じると、ノードアドレスの設定値が意図しないスレーブ装置に書き込まれてしまう場合がある。このような場合、それまで正常に動作していたスレーブ装置のノードアドレスの設定値が書換えられてしまうため、ネットワークに異常を来たしたり、誤ったノードアドレスの設定値によるスレーブ装置の誤動作を引き起こしたりする。
【０００６】
また、このような異常や誤動作が発生した場合に、ノードアドレスの設定値が誤って書換えられたことが原因と分かったとしても、誤って書換えたスレーブ装置の特定や再設定等の作業が必要なため、システムの復旧に時間が掛かる。
【０００７】
この発明は、上述の問題を解決するためになされたものであり、その目的は、スレーブ装置のアドレスを効率的に適正な状態とすることが可能な通信システム、通信装置および通信プログラムを提供することである。
【課題を解決するための手段】
【０００８】
この発明のある局面によれば、通信システムは、マスタ装置として機能する通信装置と、通信装置と通信線を介して通信可能に接続される複数のスレーブ装置とを含む。通信装置は、設定部と、判断部と、特定部と、再設定部とを含む。設定部は、複数のスレーブ装置からなるトポロジにおける追加スレーブ装置の位置に基づいて追加スレーブ装置に所定のアドレスを設定する。判断部は、設定部によって追加スレーブ装置に所定のアドレスが設定されるときにトポロジに変化が生じた可能性があるか否かを判断する。特定部は、判断部によって変化が生じた可能性があると判断されたときに、設定部によってアドレスが誤って設定された誤設定スレーブ装置があれば特定する。再設定部は、特定部によって特定された誤設定スレーブ装置のアドレスを元のアドレスに再設定する。
【０００９】
この発明の別の局面によれば、通信装置は、複数のスレーブ装置と通信線を介して通信可能に接続されるマスタ装置として機能し、設定部と、判断部と、特定部と、再設定部とを含む。設定部は、複数のスレーブ装置からなるトポロジにおける追加スレーブ装置の位置に基づいて追加スレーブ装置に所定のアドレスを設定する。判断部は、設定部によって追加スレーブ装置に所定のアドレスが設定されるときにトポロジに変化が生じた可能性があるか否かを判断する。特定部は、判断部によって変化が生じた可能性があると判断されたときに、設定部によってアドレスが誤って設定された誤設定スレーブ装置があれば特定する。再設定部は、特定部によって特定された誤設定スレーブ装置のアドレスを元のアドレスに再設定する。
【００１０】
好ましくは、設定部は、トポロジに含まれる複数のスレーブ装置の位置を示す設定情報を予め記憶する設定記憶部と、設定記憶部に記憶された設定情報に基づいて追加スレーブ装置の位置を特定する位置特定部と、位置特定部によって特定された位置のスレーブ装置に対して、所定のアドレスを設定するための命令を送信する送信部とを含む。
【００１１】
好ましくは、特定部は、設定部によってアドレスが設定された設定スレーブ装置から、固有情報を取得する取得部と、取得部によって取得された固有情報に対応するアドレスが、所定のアドレスと異なるか判定するアドレス判定部とを含み、アドレス判定部によって異なると判定された場合、設定スレーブ装置を誤設定スレーブ装置として特定する。
【００１２】
好ましくは、判断部は、スレーブ装置において通信線の抜き差しがあったことを検知することによってトポロジに変化が生じた可能性があるか否かを判断する。
【００１３】
好ましくは、判断部は、スレーブ装置の数に変化があったか否かを検知することによってトポロジに変化が生じた可能性があるか否かを判断する。
【００１４】
この発明のさらに別の局面によれば、通信プログラムは、複数のスレーブ装置と通信線を介して通信可能に接続されるマスタ装置として機能する通信装置において実行され、複数のスレーブ装置からなるトポロジにおける追加スレーブ装置の位置に基づいて追加スレーブ装置に所定のアドレスを設定するステップと、追加スレーブ装置に所定のアドレスが設定されるときにトポロジに変化が生じた可能性があるか否かを判断するステップと、トポロジに変化が生じた可能性があると判断されたときに、アドレスが誤って設定された誤設定スレーブ装置があれば特定するステップと、特定された誤設定スレーブ装置のアドレスを元のアドレスに再設定するステップとを実行させる。
【発明の効果】
【００１５】
この発明によれば、スレーブ装置のアドレスを効率的に適正な状態とすることが可能な通信システム、通信装置および通信プログラムを提供することが可能である。
【図面の簡単な説明】
【００１６】
【図１】本実施の形態に係るＰＬＣシステムの全体構成を示す模式図である。
【図２】本実施の形態に係るＰＬＣシステムに含まれるＣＰＵユニットの装置構成を示す模式図である。
【図３】本実施の形態に係るＰＬＣシステムに含まれるスレーブ装置の装置構成の一例を示す模式図である。
【図４】本実施の形態に係るアドレス設定処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１７】
この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００１８】
本実施の形態では、制御システムの一例として、ＰＬＣを中心とするシステムについて例示する。但し、このような制御システムとしては、ＰＬＣだけではなく、各種の産業用コンピュータを中心として構成を採用することもできる。さらに、技術の進展によって、新たな処理装置（演算装置）が開発された場合には、そのような新たな処理装置を採用することもできる。
【００１９】
＜Ａ．ＰＬＣシステムの全体構成＞
まず、制御システムの一形態である、本実施の形態に係るＰＬＣシステム１の全体構成について説明する。図１は、本実施の形態に係るＰＬＣシステム１の全体構成を示す模式図である。
【００２０】
図１を参照して、ＰＬＣシステム１は、制御対象を制御するための制御システムであって、マスタ装置２と、１つ以上のスレーブ装置４０Ａ〜４０Ｇ（以下、「スレーブ装置４０」と総称する場合もある。）とを含む。マスタ装置２およびスレーブ装置４０は、ＰＬＣシステム１の少なくとも一部を構成する制御装置であり、フィールドネットワーク４を介して接続されている。
【００２１】
フィールドネットワーク４を介した通信は、マスタ装置２によって主体的に制御される。具体的には、マスタ装置２は、予め定められたタイミングまたは規則に従って、フィールドネットワーク４上を順次伝送されるデータを送出する。以下の説明においては、フィールドネットワーク４上を順次伝送されるデータを「通信フレーム」とも称す。このような意味において、マスタ装置２を「マスタ装置」と称し、スレーブ装置４０Ａ〜４０Ｇの各々を「スレーブ装置」とも称す。
【００２２】
マスタ装置２は、制御対象を制御するために必要なプログラム（後述するように、ユーザプログラムやシステムプログラムなどを含む）を実行することで、外部のスイッチやセンサなどからの入力信号（以下、「フィールド情報」とも称す。）を収集処理、収集したフィールド情報に基づいて制御演算を行う処理、制御演算によって算出された指令信号を外部のリレーやアクチュエータへ与える処理などを実現する。
【００２３】
マスタ装置２は、その装置構成として、ＣＰＵユニット１０と、１つ以上の機能ユニット２０と、電源ユニット３０とを含む。ＣＰＵユニット１０および機能ユニット２０は、図示しない内部バスを介して互いにデータ通信可能に接続されている。電源ユニット３０は、ＣＰＵユニット１０および機能ユニット２０へ適切な電圧の電力を供給する。機能ユニット２０は、ＩＯユニットや特殊ユニットを含む。
【００２４】
ＩＯユニットは、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。すなわち、ＩＯユニットは、検出スイッチなどのセンサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニットは、リレーやアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力する。
【００２５】
特殊ユニットは、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニットではサポートしない機能を有する。
【００２６】
ＣＰＵユニット１０は、制御対象を制御するために必要なプログラムを実行する演算部と、フィールドネットワーク４を介したスレーブ装置４０との通信を制御するための通信処理部に相当する通信コントローラ１１０とを含む。
【００２７】
スレーブ装置４０は、外部のスイッチやセンサからのフィールド情報を受信し、フィールドネットワーク４を介して、その受信したフィールド情報に応じた通信フレーム（ＩＮデータ）をマスタ装置２へ送信する。併せて、スレーブ装置４０は、マスタ装置２からフィールドネットワーク４を介して受信した通信フレーム（ＯＵＴデータ）に応じた指令信号を、外部のリレーやアクチュエータへ出力する。あるいは、スレーブ装置４０は、フィールドネットワーク４を介して受信したＯＵＴデータに応じた指令値に従って自身で動作するものであってもよい。例えば、スレーブ装置４０としては、演算機能を持たない単純な機能ユニット、演算機能を有する機能ユニット、モーションコントローラのようなアクチュエータを含む装置、などが想定される。ここでは、スレーブ装置４０Ａは、ハブとして機能する分岐スレーブ装置である。
【００２８】
ＣＰＵユニット１０の通信コントローラ１１０は、マスタ装置２および１つ以上のスレーブ装置４０が扱うデータを含むデータ列（本実施の形態では、「通信フレーム」とも称す。）のフィールドネットワーク４上での巡回的な伝送を管理するように構成されている。なお、図１には、いわゆるデイジーチェーン接続のネットワークを模式的に示すが、リング形式のネットワークであってもよい。つまり、本実施の形態に係るネットワークとしては、データ列（通信フレーム）を巡回的に伝送できる構成であれば、どのような構成を採用してもよい。典型的には、本実施の形態に係る通信処理は、トータルフレーム方式のネットワークにも適用できる。
【００２９】
＜Ｂ．ＣＰＵユニット１０の装置構成＞
次に、本実施の形態に係るＰＬＣシステム１に含まれるＣＰＵユニット１０の装置構成について説明する。図２は、本実施の形態に係るＰＬＣシステム１に含まれるＣＰＵユニット１０の装置構成を示す模式図である。
【００３０】
図２を参照して、ＣＰＵユニット１０は、通信処理部である通信コントローラ１１０に加えて、演算部であるプロセッサ１００と、主メモリ１０２と、不揮発性メモリ１０４と、内部バスコントローラ１０６とを含む。これらのコンポーネントは、内部バス１０８を介して、互いにデータ通信可能に構成される。
【００３１】
プロセッサ１００は、制御に係るプログラムを実行する。プロセッサ１００は、不揮発性メモリ１０４などから必要なプログラムを読み出すとともに、主メモリ１０２に展開して実行する。制御に係るプログラムとしては、典型的には、ユーザプログラムおよびシステムプログラムを含む。
【００３２】
内部バスコントローラ１０６は、内部バス１０９を介して機能ユニット２０と接続され、プロセッサ１００と機能ユニット２０との間のデータ（ＩＮデータおよびＯＵＴデータ）の遣り取りを仲介する。
【００３３】
通信コントローラ１１０は、フィールドネットワーク４を介してスレーブ装置４０と接続され、ＣＰＵユニット１０とスレーブ装置４０との間のデータ（ＩＮデータおよびＯＵＴデータ）の遣り取りを仲介する。
【００３４】
通信コントローラ１１０は、上述したＣＰＵユニット１０とスレーブ装置４０との間のデータの遣り取りを仲介する機能を含む通信コントローラ１１０の機能の一部または全部を、ソフトウェアを用いて実現してもよい。あるいは、ＡＳＩＣ（Application Specific Integrated Circuit：特定用途向集積回路）やＦＰＧＡ（Field-Programmable Gate Array）などのハード回路を用いて、通信コントローラ１００の機能の一部または全部を実現してもよい。
【００３５】
＜Ｃ．スレーブ装置４０の装置構成＞
次に、本実施の形態に係るＰＬＣシステム１に含まれるスレーブ装置４０の装置構成について説明する。図３は、本実施の形態に係るＰＬＣシステム１に含まれるスレーブ装置４０の装置構成の一例を示す模式図である。
【００３６】
本実施の形態に係るスレーブ装置４０としては、各種の構成を採用することができるが、図３には、演算機能およびＩＯ機能を有する構成例を示す。図３を参照して、スレーブ装置４０は、演算処理部４００と、入力回路４０２と、出力回路４０４と、通信コントローラ４１０とを含む。
【００３７】
演算処理部４００は、フィールドネットワーク４を介して送信されたデータに基づいて、予め定められた処理を実行するとともに、処理の結果得られるデータを、フィールドネットワーク４を介して送出させる。
【００３８】
入力回路４０２は、フィールド側から入力された信号を示す情報を演算処理部４００へ出力する。出力回路は、演算処理部４００から与えられたＯＵＴデータに応じた信号をフィールド側へ出力する。
【００３９】
通信コントローラ４１０は、フィールドネットワーク４を介してＣＰＵユニット１０と接続され、スレーブ装置４０とＣＰＵユニット１０との間のデータ（ＩＮデータおよびＯＵＴデータ）の遣り取りを仲介する。
【００４０】
不揮発性メモリ４０６は、演算処理部４００に接続され、スレーブ装置４０の固有情報などの情報を記憶する。不揮発性メモリ４０６に記憶される固有情報は、たとえば、当該スレーブ装置４０のノードアドレス、シリアル番号、形式名、および、製品名称などである。なお、不揮発性メモリ４０６は、通信コントローラ４１０に接続されるようにしてもよい。また、不揮発性メモリ４０６は、演算処理部４００または通信コントローラ４１０に内蔵されるようにしてもよい。
【００４１】
ハードウェアスイッチ４０８は、たとえば、ディップスイッチやロータリスイッチで構成され、演算処理部４００に接続される。ハードウェアスイッチ４０８で示される値が、スレーブ装置４０の固有情報の１つであるノードアドレスとして設定される。スレーブ装置４０のノードアドレスは、ハードウェアスイッチ４０８によってノードアドレスが示されない場合は、不揮発性メモリ４０６に記憶されるノードアドレスで示されるように設定される。なお、ハードウェアスイッチ４０８は、通信コントローラ４１０に接続されるようにしてもよい。
【００４２】
スレーブ装置４０の演算処理部４００、入力回路４０２、出力回路４０４、および通信コントローラ４１０については、それらの機能の全部または一部をソフトウェアを用いて実現してもよいが、ＡＳＩＣやＦＰＧＡなどのハード回路を用いて、それらの機能の一部または全部を実現するのが好ましい。
【００４３】
＜Ｄ．フィールドネットワーク＞
次に、フィールドネットワーク４における通信処理について説明する。
【００４４】
フィールドネットワーク４での通信方式としては、予め定められた通信周期でデータ伝送が可能な（つまり、リアルタイム通信可能な）方式が好ましい。一例として、フィールドネットワーク４としては、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）の具体例としては、例えば、ＥｔｈｅｒＣＡＴ（登録商標）、ＰＲＯＦＩＮＥＴ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどがある。以下の説明では、典型例として、ＥｔｈｅｒＣＡＴ（登録商標）を用いた構成例について説明する。
【００４５】
通信フレームは、フィールドネットワーク４上で巡回的に伝送される。つまり、マスタ装置２から送出された通信フレームは、スレーブ装置４０Ａ〜４０Ｇに順次転送されることになる。すべてのスレーブ装置４０を転送された通信フレームは、マスタ装置２へ戻る。つまり、通信フレームは、マスタ装置２およびスレーブ装置４０Ａ〜４０Ｇを巡回的に伝送される。
【００４６】
より具体的には、通信フレームは、ヘッダと、各スレーブ装置４０に割り当てられたデータエリアと、フッタとを含む。ヘッダには、その通信フレームの宛先や各種属性情報が格納される。データエリアの各々には、対応するスレーブ装置４０についてのＯＵＴデータおよびＩＮデータが格納される。フッタには、通信フレームの内容の誤りを検出および訂正するための情報が格納される。
【００４７】
また、通信フレームのデータエリアには、ＯＵＴデータおよびＩＮデータ以外にも、マスタ装置２とスレーブ装置４０との間のメッセージデータが格納される場合がある。
【００４８】
マスタ装置２は、各スレーブ装置４０に対して与えるＯＵＴデータを対象のスレーブ装置４０に割り当てられたデータエリアへ書き込むことで通信フレームを生成して送出する。各スレーブ装置４０は、上位側から通信フレームを受信すると、当該受信した通信フレームのうち、自局に割り当てられたデータエリアから自局宛のＯＵＴデータを抽出するとともに、自局で収集しているＩＮデータを自局に割り当てられたデータエリアに書き込んで通信フレームを再生成し、下位側へ送出する。このように、通信フレームが巡回的に転送されることで、ＯＵＴデータおよびＩＮデータが順次更新される。
【００４９】
つまり、本実施の形態に係るフィールドネットワーク４では、すべてのスレーブ装置４０宛のＯＵＴデータ（指令値）を格納した通信フレームがマスタ装置から送出されるとともに、各スレーブ装置４０において、ＯＵＴデータ（指令値）およびＩＮデータ（フィードバック値）が交換された後の通信フレームがマスタ装置２へ戻される。つまり、通信フレームが一巡することで、マスタ装置２と各スレーブ装置４０との間でのデータの遣り取りが完了する。
【００５０】
＜Ｅ．アドレス設定処理＞
次に、上述したＰＬＣシステム１にスレーブ装置４０を追加するときに、当該スレーブ装置４０にノードアドレスを設定する処理について説明する。上述したようなＩＮデータおよびＯＵＴデータの遣り取りをするための設定またはメッセージ通信においては各スレーブ装置４０に割振られたノードアドレスが用いられる。このため、各スレーブ装置４０にはノードアドレスが適切に設定されている必要がある。
【００５１】
ＰＬＣシステム１の各種設定は、ＰＬＣシステム１を管理するための管理ソフトウェアが組込まれた汎用的なＰＣ（Personal Computer）であるサポート装置によって実行される。たとえば、フィールドネットワーク４のトポロジ（スレーブ装置４０の接続形態）を示すネットワーク構成はサポート装置で作成される。作成されたネットワーク構成は、サポート装置をマスタ装置２に接続して、マスタ装置側にダウンロードされ、マスタ装置２の不揮発性メモリ１０４に記憶される。
【００５２】
図４は、本実施の形態に係るアドレス設定処理の流れを示すフローチャートである。このアドレス設定処理は、他のプログラムから呼出されて、マスタ装置２のＣＰＵユニット１０のプロセッサ１００によって実行される。
【００５３】
図４を参照して、プロセッサ１００は、不揮発性メモリ１０４に記憶されているネットワーク構成に含まれるスレーブ装置４０であって実機にノードアドレスが設定されていないスレーブ装置４０を検出したか否かを判断する（ステップＳ１１１）。検出していない（ステップＳ１１１でＮＯ）と判断した場合、プロセッサ１００は、このアドレス設定処理を終了して、実行する処理を呼出元のプログラムに戻す。
【００５４】
アドレス未設定のスレーブ装置４０を検出した（ステップＳ１１１でＹＥＳ）と判断した場合、プロセッサ１００は、当該スレーブ装置４０に所定のノードアドレスを書き込むコマンド（以下、指令をするための通信フレームをコマンドと呼ぶ）を送信する（ステップＳ１１２）。
【００５５】
このときには、当該スレーブ装置４０はノードアドレスが未設定のため、プロセッサ１００は、当該スレーブ装置４０の位置情報を、ネットワーク構成で示されるトポロジに基づいて特定し、特定された位置情報のスレーブ装置に対するコマンドを前述した通信フレームに含めて送信する。この位置情報は、たとえば、通信フレームが巡回する順番であるオートインクリメントアドレスである。このオートインクリメントアドレスは、ネットワークのトポロジが定められると所定のルールにしたがって自動的に定まる。たとえば、図１の場合、スレーブ装置４０Ａ，スレーブ装置４０Ｂ，スレーブ装置４０Ｃ，スレーブ装置４０Ｄ，スレーブ装置４０Ｅ，スレーブ装置４０Ｆ，スレーブ装置４０Ｇのオートインクリメントアドレスは、それぞれ、「１」〜「７」と定まる。
【００５６】
次に、プロセッサ１００は、トポロジの変化の可能性がある事象を検出したか否かを判断する（ステップＳ１１３）。この事象は、いずれかのスレーブ装置４０におけるフィールドネットワーク４の通信ケーブルの抜き差しである。通信ケーブルの抜き差しがあるとそれをプロセッサ１００が検知可能なようにＰＬＣシステム１が構成されている。
【００５７】
なお、トポロジの変化の可能性がある事象はこれに限定されず、トポロジに含まれるスレーブ装置４０の数の変化であってもよい。スレーブ装置４０の数の変化があるとそれをプロセッサ１００が検知可能なようにＰＬＣシステム１が構成されている。
【００５８】
トポロジの変化の可能性がある事象を検出していない（ステップＳ１１３でＮＯ）と判断した場合、プロセッサ１００は、このアドレス設定処理を終了して、実行する処理を呼出元のプログラムに戻す。このように、トポロジの変化の可能性が無ければ、ノードアドレスの設定は、非常に少ないステップの処理が実行されるだけで終了する。
【００５９】
一方、トポロジの変化の可能性がある事象を検出した（ステップＳ１１３でＹＥＳ）と判断した場合、プロセッサ１００は、ステップＳ１１２でノードアドレスを書き込んだスレーブ装置４０の位置情報と同じ位置情報のスレーブ装置に対し、スレーブ装置４０の固有情報を読み出すコマンドを送信する（ステップＳ１１４）。読み出す固有情報は、たとえば、スレーブ装置４０の不揮発性メモリ４０６にノードアドレスを書き込む前に記憶されていたノードアドレスや、スレーブ装置４０のハードウェアスイッチ４０８で設定されているノードアドレスや、スレーブ装置４０のシリアル番号、形式名、製品名称などである。固有情報は、マスタ装置２の不揮発性メモリ１０４に記憶されているネットワーク構成において、位置情報に対応付けられて記憶されている。なお、ここでは、マスタ装置４の不揮発性メモリ１０４に記憶されるスレーブ装置４０のノードアドレスは、当該スレーブ装置４０のハードウェアスイッチ４０８で設定されているノードアドレスと同じとなるようにされることとするが、これに限定されず、両者は対応付けがされていればよい。
【００６０】
そして、プロセッサ１００は、読込んだスレーブ装置４０の固有情報と、不揮発性メモリ１０４に記憶されているネットワーク構成における所定のノードアドレスのスレーブ装置４０の固有情報とを比較して、対応関係があるか否かを判断し、固有情報が異なっていれば、対応関係が不一致であると判断する（ステップＳ１１６）。
【００６１】
対応関係が一致している（ステップＳ１１６でＮＯ）と判断した場合、プロセッサ１００は、このアドレス設定処理を終了して、実行する処理を呼出元のプログラムに戻す。
【００６２】
一方、対応関係が不一致である（ステップＳ１１６でＹＥＳ）と判断した場合、プロセッサ１００は、読込んだ固有情報に対応して不揮発性メモリ１０４に記憶されているネットワーク構成におけるノードアドレス（当該スレーブ装置４０の元のノードアドレス）を当該スレーブ装置に、再度、書き込むコマンドを送信する（ステップＳ１１７）。その後、プロセッサ１００は、実行する処理をステップＳ１１２に戻す。
【００６３】
たとえば、図１のスレーブ装置４０Ｅを新たに追加した場合に、当該スレーブ装置４０Ｅにノードアドレスとして「７」を設定する場合に、ステップＳ１１２で、オートインクリメントアドレス「５」のスレーブ装置にノードアドレス「７」を書き込むコマンドが送信される。
【００６４】
この直前（ステップＳ１１２の直前）に、たとえば、新規のスレーブ装置４０Ｅの上流側のスレーブ装置４０Ｄの通信ケーブルが取り外されると、オートインクリメントアドレス「５」のスレーブ装置がスレーブ装置４０Ｆとなってしまい、このスレーブ装置４０Ｆにノードアドレス「７」が書き込まれる。
【００６５】
このような場合に、ステップＳ１１３でトポロジの変化の可能性がある事象としてケーブルの取り外しが検出される。ステップＳ１１４でスレーブ装置４０Ｆから固有情報として、ノードアドレスが書き込まれる前に記憶されていたノードアドレス「５」が読出される。ステップＳ１１５で、読出された固有情報としてのノードアドレス「５」と、書き込まれたノードアドレス「７」との対応関係が判断される。その結果、対応関係が不一致であると判断され、ステップＳ１１７で、読込んだ固有情報に対応するノードアドレスである「５」が当該スレーブ装置４０Ｆに再度、書き込まれる。
【００６６】
そして、ステップＳ１１２で、オートインクリメントアドレス「５」のスレーブ装置にノードアドレス「７」を書き込むコマンドが送信され、今度は、トポロジ変化の可能性がある事象が検出されず、正しいスレーブ装置４０Ｅにノードアドレス「７」が書き込まれる。
【００６７】
＜Ｆ．変形例＞
（１）  前述した実施の形態においては、マスタ装置２は、図１で示した構成とした。しかし、これに限定されず、マスタ装置２としての機能を有するハードウェア基板を備えた工業用ＰＣであってもよいし、マスタ装置２としての機能を有するソフトウェアを組込んだ工業用ＰＣであってもよい。
【００６８】
（２）  前述した実施の形態においては、図２で示したように、マスタ装置２のＣＰＵユニット１０に通信コントローラ１１０が備えられ、図４で示したアドレス設定処理がマスタ装置２のＣＰＵユニット１０によって実行されることとした。しかし、これに限定されず、通信コントローラ１１０がいずれかの機能ユニット２０に備えられ、その機能ユニット２０によって図４で示したアドレス設定処理が実行されるようにしてもよい。
【００６９】
（３）  前述した実施の形態においては、フィールドネットワーク４の通信方式が産業用イーサネット（登録商標）であることとした。しかし、これに限定されず、ＩＰ（Internet Protocol）ネットワークなど他の通信方式であってもよい。この場合は、前述のノードアドレスは、ＩＰアドレスに対応し、前述の固有情報は、ＭＡＣ（Media Access Control）アドレスに対応する。
【００７０】
（４）  前述した実施の形態においては、通信装置の一例であるマスタ装置として発明の実施の形態を説明した。しかし、これに限定されず、前述した発明の実施の形態は、通信システムの一例であるＰＬＣシステム１としての発明の実施の形態と捉えることができる。また、前述した発明の実施の形態は、通信プログラムの発明の実施の形態と捉えることができる。
【００７１】
＜Ｇ．利点＞
（１）  以上説明したように、図１で示したように、マスタ装置２は、複数のスレーブ装置４０と通信ケーブルを介して通信可能に接続される。図４のステップＳ１１２で示したように、マスタ装置２は、複数のスレーブ装置４０からなるトポロジにおける追加スレーブ装置の位置情報に基づいて追加スレーブ装置に所定のノードアドレスを設定する。
【００７２】
図４のステップＳ１１３で示したように、マスタ装置２は、追加スレーブ装置に所定のノードアドレスが設定されるときにトポロジに変化が生じた可能性があるか否かを判断する。図４のステップＳ１１４からステップＳ１１５で示したように、マスタ装置２は、変化が生じた可能性があると判断されたときに、ノードアドレスが誤って設定された誤設定スレーブ装置があれば特定する。図４のステップＳ１１７で示したように、マスタ装置２は、特定された誤設定スレーブ装置のノードアドレスを元のノードアドレスに再設定する。
【００７３】
これにより、ノードアドレスが誤って設定された可能性があるときに、誤設定スレーブ装置のノードアドレスが元のノードアドレスに再設定され、その後、追加スレーブ装置に所定のノードアドレスが設定される。スレーブ装置４０のノードアドレスを効率的に適正な状態とすることができる。
【００７４】
（２）  マスタ装置２は、トポロジに含まれる複数のスレーブ装置４０の位置を示すネットワーク構成を予め記憶する不揮発性メモリ１０４を備える。図４のステップＳ１１２で示したように、マスタ装置２は、不揮発性メモリ１０４に記憶されたネットワーク構成に基づいて追加スレーブ装置の位置情報を特定する。図４のステップＳ１１２で示したように、マスタ装置２は、特定された位置情報のスレーブ装置４０に対して、所定のノードアドレスを設定するための命令を送信する。
【００７５】
これにより、ノードアドレスが設定されていないスレーブ装置４０に対して位置情報に基づいてノードアドレスを設定することができる。
【００７６】
（３）  図４のステップＳ１１４で示したように、マスタ装置２は、ノードアドレスが設定された設定スレーブ装置から、固有情報を取得する。図４のステップＳ１１５で示したように、マスタ装置２は、取得された固有情報に対応するノードアドレスが、所定のノードアドレスと異なるか判定する。マスタ装置２は、異なると判定された場合、設定スレーブ装置を誤設定スレーブ装置として特定する。
【００７７】
これにより、ノードアドレスが誤って設定されたスレーブ装置を確実に特定することができる。
【００７８】
（４）  図４のステップＳ１１３で示したように、マスタ装置２は、スレーブ装置４０において通信ケーブルの抜き差しがあったことを検知することによってトポロジに変化が生じた可能性があるか否かを判断する。これにより、トポロジに変化が生じた可能性を的確に判断することができる。
【００７９】
（５）  図４のステップＳ１１３で示したように、マスタ装置２は、スレーブ装置４０の数に変化があったか否かを検知することによってトポロジに変化が生じた可能性があるか否かを判断する。これにより、トポロジに変化が生じた可能性を的確に判断することができる。
【００８０】
（６）  また、不意のケーブル誤接続があっても、ノイズによるケーブルの瞬断が発生しても、意図しないトポロジの変更があっても、スレーブ装置４０の瞬断があっても、フィールドネットワーク４の通信ケーブルの誤配線があっても、スレーブ装置４０の制御に影響が発生する前に自動復旧が可能であり、マスタ装置２による制御を継続することができる。その結果、ＰＬＣシステム１の堅牢性および耐環境性を向上することができ、ＰＬＣシステム１の高い稼働効率（とまらない）を実現することができる。
【００８１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００８２】
１  ＰＬＣシステム、２  マスタ装置、４  フィールドネットワーク、１０  ＣＰＵユニット、２０  機能ユニット、３０  電源ユニット、４０  スレーブ装置、１００  プロセッサ、１０２  主メモリ、１０４  不揮発性メモリ、１０６  内部バスコントローラ、１０８，１０９  内部バス、１１０，４１０  通信コントローラ、４００  演算処理部、４０２  入力回路、４０４  出力回路、４０６  不揮発性メモリ、４０８  ハードウェアスイッチ。
【図１】
2018093382.tif 000003
【図２】
2018093382.tif 000004
【図３】
2018093382.tif 000005
【図４】
2018093382.tif 000006