(57)【要約】【課題】スレーブの識別情報の再設定あるいは変更を容易に実現するための構成が要望されている。【解決手段】制御システムは、マスタとして機能する制御装置と、制御装置とネットワーク接続された複数のスレーブとを含む。複数のスレーブの各々は識別情報を有している。制御装置は、複数のスレーブのうちいずれかのスレーブが基準として指定された第１の命令を実行することで、指定された他のスレーブに対して、指定された識別情報を設定する識別情報設定手段を含む。【選択図】図１
2020150451.tif 000002
【特許請求の範囲】
【請求項１】
制御システムであって、
マスタとして機能する制御装置と、
前記制御装置とネットワーク接続された複数のスレーブとを備え、
前記複数のスレーブの各々は識別情報を有しており、
前記制御装置は、前記複数のスレーブのうちいずれかのスレーブが基準として指定された第１の命令を実行することで、指定された他のスレーブに対して、指定された識別情報を設定する識別情報設定手段を備える、制御システム。
【請求項２】
前記制御装置は、前記複数のスレーブの接続状態を管理する管理手段をさらに備え、
前記識別情報設定手段により識別情報が設定される他のスレーブは、前記複数のスレーブの接続状態を参照することで、接続されている位置が特定される、請求項１に記載の制御システム。
【請求項３】
前記第１の命令は、前記他のスレーブが接続されるポートの指定を含む、請求項１または２に記載の制御システム。
【請求項４】
前記第１の命令は、複数の前記他のスレーブに対してそれぞれ識別情報を指定可能である、請求項１〜３のいずれか１項に記載の制御システム。
【請求項５】
前記複数のスレーブの各々は、識別情報を保持するための不揮発性メモリと、設定されている識別情報を保持する揮発性メモリとを備え、
前記識別情報設定手段は、前記他のスレーブの前記不揮発性メモリおよび前記揮発性メモリの両方に、指定された識別情報を書き込む、請求項１〜４のいずれか１項に記載の制御システム。
【請求項６】
前記第１の命令は、前記制御装置で実行されるユーザプログラムの一部として実行される、請求項１〜５のいずれか１項に記載の制御システム。
【請求項７】
前記識別情報設定手段は、識別情報の設定に失敗したスレーブを特定する情報を出力する、請求項１〜６のいずれか１項に記載の制御システム。
【請求項８】
前記制御装置は、前記複数のスレーブのうちいずれかのスレーブが基準として指定された第２の命令を実行することで、指定された他のスレーブに設定されている識別情報を読み出す識別情報読出手段をさらに備える、請求項１〜７のいずれか１項に記載の制御システム。
【請求項９】
前記制御装置は、前記複数のスレーブの接続構成を定義する構成情報を有しており、
前記制御装置は、第３の命令を実行することで、前記構成情報による定義に含まれる一部または全部のスレーブを無効化する無効化手段をさらに備える、請求項１〜８のいずれか１項に記載の制御システム。
【請求項１０】
マスタとして機能する制御装置であって、
複数のスレーブとネットワーク接続するためのコントローラを備え、前記複数のスレーブの各々は識別情報を有しており、
前記複数のスレーブのうちいずれかのスレーブが基準として指定された第１の命令を実行することで、指定された他のスレーブに対して、指定された識別情報を設定する識別情報設定手段を備える、制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク接続されたスレーブを含む制御システムおよびその制御システムに用いられる制御装置に関する。
【背景技術】
【０００２】
ＦＡ（ファクトリオートメーション）分野においては、制御装置と、当該制御装置にネットワーク接続された１または複数のスレーブとからなる制御システムが普及している。スレーブとしては、入出力装置やロボット制御や視覚センサといった任意の処理機能を提供する装置などが想定される。通常、制御装置はマスタとして機能する。
【０００３】
制御装置は、各スレーブとの間でデータを遣り取りするため、各スレーブを特定する必要がある。スレーブを特定するための情報としては、スレーブＩＤ（識別情報）、ネットワークＩＤ（識別情報）、ネットワークアドレス、ノードアドレスと称される。
【０００４】
制御対象に応じて、スレーブの数および接続構成は適宜決定され、また、事後的に追加または変更されることもある。このような場合、各スレーブを特定するための情報についても、適宜更新する必要がある。
【０００５】
例えば、特開２０１５−１７６３６９号公報（特許文献１）は、サポート装置が提供するグループを設定するためのユーザインターフェイス画面において、各デバイスについて、グループ名、デバイス名、ネットワークアドレスおよびノードアドレスを任意に設定できる構成を開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−１７６３６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、多品種少量生産の製造ラインでは、段取り替えと呼ばれる装置の組み換えが頻繁に行われることがある。このような段取り替えが発生した場合には、スレーブの識別情報を再設定あるいは変更する必要がある。このような識別情報の再設定あるいは変更を容易に実現するための構成が要望されている。
【課題を解決するための手段】
【０００８】
本発明のある局面に従う制御システムは、マスタとして機能する制御装置と、制御装置とネットワーク接続された複数のスレーブとを含む。複数のスレーブの各々は識別情報を有している。制御装置は、複数のスレーブのうちいずれかのスレーブが基準として指定された第１の命令を実行することで、指定された他のスレーブに対して、指定された識別情報を設定する識別情報設定手段を含む。
【０００９】
この局面によれば、段取り替えなどにより制御システムの構成が変更された場合であっても、識別情報の再設定あるいは変更を容易に行うことができる。
【００１０】
制御装置は、複数のスレーブの接続状態を管理する管理手段をさらに含んでいてもよい。識別情報設定手段により識別情報が設定される他のスレーブは、複数のスレーブの接続状態を参照することで、接続されている位置が特定されてもよい。この構成によれば、実際の接続構成に基づいて、設定対象のスレーブの接続されている位置を決定できる。
【００１１】
第１の命令は、他のスレーブが接続されるポートの指定を含んでいてもよい。この構成によれば、基準となるスレーブに実際に接続されているポートを指定すればよいので、容易に指定できる。
【００１２】
第１の命令は、複数の他のスレーブに対してそれぞれ識別情報を指定可能であってもよい。この構成によれば、複数のスレーブに対する識別情報の設定に要する時間を短縮できる。
【００１３】
複数のスレーブの各々は、識別情報を保持するための不揮発性メモリと、設定されている識別情報を保持する揮発性メモリとを含む。識別情報設定手段は、他のスレーブの不揮発性メモリおよび揮発性メモリの両方に、指定された識別情報を書き込むようにしてもよい。この構成によれば、スレーブが有している不揮発性メモリおよび揮発性メモリの内容を更新できる。
【００１４】
第１の命令は、制御装置で実行されるユーザプログラムの一部として実行されてもよい。この構成によれば、サポート装置などを用いることなく、スレーブに対して識別情報を設定できる。
【００１５】
識別情報設定手段は、識別情報の設定に失敗したスレーブを特定する情報を出力するようにしてもよい。この構成によれば、識別情報の設定の失敗に係るトラブルシュートを容易化できる。
【００１６】
制御装置は、複数のスレーブのうちいずれかのスレーブが基準として指定された第２の命令を実行することで、指定された他のスレーブに設定されている識別情報を読み出す識別情報読出手段をさらに含んでいてもよい。この構成によれば、識別情報が不明な任意のスレーブから識別情報を読み出すことができる。
【００１７】
制御装置は、複数のスレーブの接続構成を定義する構成情報を有していてもよい。制御装置は、第３の命令を実行することで、構成情報による定義に含まれる一部または全部のスレーブを無効化する無効化手段をさらに含んでいてもよい。この構成によれば、構成情報と実際の接続構成とが一致しない場合であっても、異常などを発生させることなく、処理を継続させることができる。
【００１８】
本発明の別の局面に従えば、マスタとして機能する制御装置が提供される。制御装置は、複数のスレーブとネットワーク接続するためのコントローラを含む。複数のスレーブの各々は識別情報を有している。制御装置は、複数のスレーブのうちいずれかのスレーブが基準として指定された第１の命令を実行することで、指定された他のスレーブに対して、指定された識別情報を設定する識別情報設定手段を含む。
【発明の効果】
【００１９】
本発明によれば、段取り替えなどにより制御システムの構成が変更された場合であっても、識別情報の再設定あるいは変更を容易に行うことができる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に係る制御システムの全体構成例を示す模式図である。
【図２】本実施の形態に係る背景技術を説明するための模式図である。
【図３】図２に示される制御装置が保持する構成情報の一例を示す図である。
【図４】図２に示される段取り替えに応じた構成情報の変化を説明するための図である。
【図５】本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示す模式図である。
【図６】本実施の形態に係る制御システムを構成するスレーブのハードウェア構成例を示す模式図である。
【図７】本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示す模式図である。
【図８】段取り替えにおいて生じるスレーブＩＤの変化を説明するための図である。
【図９】ポジションアドレスを用いたスレーブＩＤの設定を説明するための図である。
【図１０】本実施の形態に係るスレーブＩＤ設定命令の一例を説明するための図である。
【図１１】本実施の形態に係る制御システムを構成するスレーブにおけるスレーブＩＤの設定処理を説明するための模式図である。
【図１２】本実施の形態に係る制御装置のユーザプログラムで利用可能なスレーブＩＤ設定命令のファンクションブロックを説明するための図である。
【図１３】本実施の形態に係る制御装置のユーザプログラムで利用可能なスレーブＩＤ読出命令のファンクションブロックを説明するための図である。
【図１４】本実施の形態に係るスレーブＩＤ設定命令がユーザプログラムから実行された場合の処理手順を示すシーケンス図である。
【図１５】図１４に示す実構成管理コンポーネントが保持している実構成情報の一例を示す模式図である。
【図１６】本実施の形態に係るスレーブＩＤ設定命令が出力する異常終了結果の一例を示す模式図である。
【図１７】本実施の形態に係るスレーブＩＤ設定命令を用いた段取り替えの内容を説明するための図である。
【図１８】図１７に示す段取り替えに対応するユーザプログラムの要部を示す図である。
【図１９】図１７に示す段取り替え対応する接続状態の変化を説明するための図である。
【図２０】図１７に示す段取り替え対応する構成情報の変化を説明するための図である。
【図２１】本実施の形態に従うスレーブＩＤ設定命令を用いたスレーブの再起動を促すためのユーザプログラムの一例を示す図である。
【図２２】本実施の形態に従うスレーブＩＤ設定命令の実行が失敗したときの情報提示を実現するためのユーザプログラムの一例を示す図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２２】
＜Ａ．適用例＞
まず、図１を参照して、本発明が適用される場面の一例について説明する。
【００２３】
図１は、本実施の形態に係る制御システム１の全体構成例を示す模式図である。図１を参照して、制御システム１は、主たるコンポーネントとして、マスタとして機能する制御装置１００と、制御装置１００とネットワーク接続された１または複数のスレーブ２００−１，２００−２，・・・（以下、「スレーブ２００」とも総称する。）とを含む。
【００２４】
制御装置１００と１または複数のスレーブ２００とを接続するネットワークには、典型的には、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などの産業用ネットワークを採用することが好ましい。以下の説明においては、典型例として、ＥｔｈｅｒＣＡＴを採用した場合について説明するが、他の規格あるいはプロトコルを採用してもよい。
【００２５】
制御システム１において、スレーブ２００の各々は、マスタとして機能する制御装置１００から特定可能な識別情報を有している。以下では、このような識別情報として「スレーブＩＤ」を用いる（詳細については後述する）場合について説明する。但し、「スレーブＩＤ」に限定されることなく、任意の識別情報を用いることができる。
【００２６】
本実施の形態に従う制御装置は、任意のスレーブ２００に設定されているスレーブＩＤ（識別情報）を任意に再設定あるいは変更（以下、単に「設定」とも総称する。）できる。このようなスレーブＩＤの設定を実現するために、制御装置１００は、複数のスレーブ２００のうちいずれかのスレーブ２００を基準として指定し、指定されたスレーブ２００に基づいて設定対象のスレーブ２００を特定する。そして、制御装置１００は、特定されたスレーブ２００に対して、指定されたスレーブＩＤを設定する。このような識別情報設定処理を実装することで、段取り替えなどにより制御システムの構成が変更された場合であっても、識別情報の再設定あるいは変更を容易に行うことができる。
【００２７】
以下、本明細書において用いられる用語について先に説明する。
本明細書において、「マスタ」は、注目しているネットワークにおけるデータ伝送を管理する主体または機能を総称する用語である。「マスタ」は、データ伝送を管理する装置（デバイス）自体を含み得る。
【００２８】
本明細書において、「スレーブ」は、マスタと対になる用語であり、注目しているネットワークにおいて、当該ネットワークのマスタの管理下でデータ伝送を行う主体または機能を総称する用語である。「スレーブ」は、データ伝送を行う装置（デバイス）自体を含み得る。
【００２９】
本明細書において、「マスタ」および「スレーブ」との用語は、注目しているネットワークにおけるデータ伝送に関する機能差を区別するための用語であり、データ伝送以外の機能や関係性については特に限定されるものではない。
【００３０】
本明細書において、「構成情報」は、制御装置あるいは別のデバイスが保持する構成などの定義を示す情報を意味する。
【００３１】
本明細書において、「ポジションアドレス」（Position Address）は、ネットワーク上のトポロジに応じて予め定められた規則に従って決定されるアドレスを意味する。例えば、マスタから近い順に、「０」，「０ｘｆｆｆｆ」，「０ｘｆｆｆｅ」，・・と割り当てられてもよい。
【００３２】
本明細書において、「スレーブＩＤ」（Slave ID）は、マスタが構成情報と対比することでデバイス間の取り違えを防止するために、各スレーブに対して付与する識別情報を意味する。「スレーブＩＤ」は、マスタによって任意に設定され、これによって正しい位置にスレーブが接続されているか否かが判断される。「スレーブＩＤ」は、「ノードアドレス」とも称される。「ノードアドレス」は、スレーブに配置されているロータリースイッチなどによって設定されることもあるが、以下では、「スレーブＩＤ」はマスタ側から再設定あるいは変更可能であるとしてされるとして説明する。
【００３３】
本明細書において、「未知スレーブ」は、実際の構成がマスタの構成情報の対応する設定とは一致していないスレーブを意味する。すなわち、「未知スレーブ」は、構成情報によって定義される本来の位置とは異なった位置に配置されているスレーブを意味する。
【００３４】
＜Ｂ．背景技術およびニーズ＞
次に、本実施の形態に係る背景技術およびニーズについて概略する。
【００３５】
例えば、食品、化粧品、医薬品などの製造現場では、多品種少量生産となっていることが多い。生産する製品に応じて、製品の形状、製品に付与するラベルの種類、製品に付与するラベルの位置などが異なるため、製品毎に製造ラインの組み替え（いわゆる、「段取り替え」）が行われることも多い。このような製造現場においては、汎用的な製造モジュールを用意しておき、これらの製造モジュールのレイアウトや位置などを適宜変更することで、段取り替えを実現する。
【００３６】
図２は、本実施の形態に係る背景技術を説明するための模式図である。図２には、２つの制御装置１００−１，１００−２がそれぞれ製造ラインを制御する構成例を示す。図２（Ａ）には、コンベア２０に製造モジュール３０が配置され、コンベア２２に製造モジュール４０が配置されている例を示す。図２（Ａ）に示す構成例では、制御装置１００−１が製造モジュール３０を制御し、制御装置１００−２が製造モジュール４０を制御する。
【００３７】
一方、図２（Ｂ）には、製造モジュール３０がコンベア２０からコンベア２２に移された構成例を示す。図２（Ｂ）に示す構成例では、制御装置１００−２が製造モジュール３０および製造モジュール４０を制御する。
【００３８】
図２に示すような段取り替えが生じる場合には、制御装置１００の制御対象および接続されるデバイスは変化し得る。以下、このような段取り替えへの対応について説明する。
【００３９】
図３は、図２に示される制御装置１００が保持する構成情報の一例を示す図である。図４は、図２に示される段取り替えに応じた構成情報の変化を説明するための図である。
【００４０】
制御装置１００−１および１００−２の各々は、図３に示すような、複数のスレーブ２００の接続構成を定義する構成情報（図５に示す構成情報１３４に対応）を有している。より具体的には、図３に示す構成情報は、制御装置１００にジャンクションスレーブ２００Ｊが接続されており、ジャンクションスレーブ２００Ｊの一つのポートには、製造モジュール３０を構成するスレーブが接続されており、別のポートには、製造モジュール４０を構成するスレーブが接続されている。
【００４１】
図４（Ａ）は、図２（Ａ）に示される構成例に対応する制御装置１００−１および１００−２の設定例を示し、図４（Ｂ）は、図２（Ｂ）に示される構成例に対応する制御装置１００−１および１００−２の設定例を示す。
【００４２】
図４（Ａ）および（Ｂ）に示すように、制御装置１００−１および１００−２の各々においては、実際には存在しない製造モジュールに対応するスレーブの設定が無効化される。より具体的には、図４（Ａ）の場合には、制御装置１００−１の製造モジュール４０に関する設定が無効化されるとともに、制御装置１００−２の製造モジュール３０に関する設定が無効化される。また、図４（Ｂ）の場合には、制御装置１００−１の製造モジュール３０および４０に関する設定が無効化される。
【００４３】
このように、制御装置１００の構成情報には、接続され得る最大の構成に対応する情報を含めておき、実際に接続される構成に応じて、不要なスレーブについての設定を無効化することで、様々な段取り替えに対応できる。
【００４４】
本実施の形態に係る制御装置１００は、上述したような構成情報の一部または全部の無効化に加えて、スレーブＩＤの再設定や変更が可能になっている。このようなスレーブＩＤの再設定や変更を実現することで、段取り替えに対する適応性をより高めることができる。
【００４５】
＜Ｃ．ハードウェア構成例＞
本実施の形態に係る制御システムを構成する主たる装置のハードウェア構成例について説明する。
【００４６】
（ｃ１：制御装置１００）
図５は、本実施の形態に係る制御システムを構成する制御装置１００のハードウェア構成例を示す模式図である。図５を参照して、制御装置１００は、プロセッサ１０２と、チップセット１０４と、メインメモリ１０６と、ストレージ１０８と、ネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、内部バスコントローラ１１８と、フィールドネットワークコントローラ１２０と、カウンタ１２６と、ＲＴＣ（Real Time Clock）１２８とを含む。
【００４７】
プロセッサ１０２は、制御演算などを実行する演算処理部に相当し、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）などで構成される。具体的には、プロセッサ１０２は、ストレージ１０８に格納されたプログラム（一例として、システムプログラム１３０およびユーザプログラム１３２）を読み出して、メインメモリ１０６に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。
【００４８】
メインメモリ１０６は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性メモリなどで構成される。ストレージ１０８は、例えば、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）などの不揮発性メモリなどで構成される。
【００４９】
チップセット１０４は、プロセッサ１０２と各デバイスを制御することで、制御装置１００全体としての処理を実現する。
【００５０】
ストレージ１０８には、基本的な機能を実現するためのシステムプログラム１３０に加えて、設備や機械などの制御対象に応じて作成されるユーザプログラム１３２が格納される。
【００５１】
ネットワークコントローラ１１０は、情報系ネットワークを介して、ゲートウェイやデータベースサーバといった任意の情報処理装置との間でデータを遣り取りする。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介して、サポート装置３００との間でデータを遣り取りする。
【００５２】
メモリカードインターフェイス１１４は、メモリカード１１６を着脱可能に構成されており、メモリカード１１６に対してデータを書き込み、メモリカード１１６から各種データを読み出すことが可能になっている。
【００５３】
カウンタ１２６は、制御装置１００で実行される各種プログラムの実行タイミングを管理するための時刻基準として用いられる。カウンタ１２６は、プロセッサ１０２を駆動するシステムバス上に配置された、高精度イベントタイマー（ＨＰＥＴ：High Precision Event Timer）などを用いて実装してもよいし、あるいは、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field-Programmable Gate Array）などの専用回路を用いて実装してもよい。
【００５４】
ＲＴＣ１２８は、計時機能を有する一種のカウンタであり、現在時刻をプロセッサ１０２などへ提供する。
【００５５】
内部バスコントローラ１１８は、内部バス６を介して１または複数の機能ユニット１５０−１，１５０−２，・・・（以下、「機能ユニット１５０」とも総称する。）と制御装置１００とを電気的に接続するための通信インターフェイスに相当する。内部バスコントローラ１１８は、内部バス６を介して定周期通信を行うためのマスタとして機能する。
【００５６】
機能ユニット１５０は、制御装置１００に接続されて、制御対象との間で各種の信号を遣り取りする装置を総称する。機能ユニット１５０は、ＩＯユニットと、通信ユニットと、ＰＩＤ制御やモーション制御といった特殊機能を実装したコントローラユニットとを含み得る。ＩＯユニットは、例えば、制御対象からのデジタル入力信号を受取るＤＩ（Digital Input）機能、制御対象に対してデジタル出力信号を送出するＤＯ（Digital Output）機能、制御対象からのアナログ入力信号を受取るＡＩ（Analog Input）機能、制御対象に対してアナログ出力信号を送出するＡＯ（Analog Output）機能のうち１または複数の機能を有している。
【００５７】
フィールドネットワークコントローラ１２０は、ネットワーク４を介して１または複数のスレーブ２００−１，２００−２，・・・（スレーブ２００）と制御装置１００とを電気的に接続するための通信インターフェイスに相当する。このように、フィールドネットワークコントローラ１２０は、複数のスレーブ２００と接続するためのコントローラであり、ネットワーク４を介して定周期通信を行うためのマスタとして機能する。
【００５８】
図５には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００５９】
また、制御装置１００に表示装置やサポート装置などの機能を統合した構成を採用してもよい。
【００６０】
（ｃ２：スレーブ２００）
図６は、本実施の形態に係る制御システムを構成するスレーブ２００のハードウェア構成例を示す模式図である。図６を参照して、スレーブ２００は、フィールドネットワークコントローラ２０２と、メインコントローラ２１０と、機能回路２３０とを含む。
【００６１】
フィールドネットワークコントローラ２０２は、ネットワーク４を介して制御装置１００（マスタ）とスレーブ２００とを電気的に接続するための通信インターフェイスに相当する。フィールドネットワークコントローラ２０２は、マスタの管理下でデータを遣り取りするための通信スレーブとして機能する。
【００６２】
メインコントローラ２１０は、スレーブ２００の主たる制御を担当する回路であり、例えば、プロセッサ２１２と、メインメモリ２１４と、不揮発性メモリ２２０とを含む。
【００６３】
不揮発性メモリ２２０には、プロセッサ２１２により実行されるファームウェア２２６と、スレーブＩＤ２２４とが格納されている。
【００６４】
機能回路２３０は、スレーブ２００の固有機能を提供する。例えば、スレーブ２００がモータドライブ装置である場合には、機能回路２３０は、インバータ回路や制御回路などを含む。また、スレーブ２００がリモートＩＯ装置である場合には、接続される機能ユニットとの間で内部バスを介してデータを遣り取りするための通信インターフェイスなどを含む。
【００６５】
図６には、プロセッサ２１２を含むメインコントローラ２１０を示すが、メインコントローラ２１０が提供する機能の全部または一部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００６６】
（ｃ３：サポート装置３００）
図７は、本実施の形態に係る制御システムを構成するサポート装置３００のハードウェア構成例を示す模式図である。サポート装置３００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いてプログラムを実行することで実現される。
【００６７】
図７を参照して、サポート装置３００は、プロセッサ３０２と、メインメモリ３０４と、ストレージ３０６と、入力部３０８と、表示部３１０と、光学ドライブ３１２と、ＵＳＢコントローラ３１６とを含む。これらのコンポーネントは、プロセッサバス３１８を介して接続されている。
【００６８】
プロセッサ３０２は、ＣＰＵやＧＰＵなどで構成され、ストレージ３０６に格納されたプログラム（一例として、ＯＳ３２０およびサポートプログラム３２６）を読み出して、メインメモリ３０４に展開して実行することで、後述するような各種処理を実現する。
【００６９】
メインメモリ３０４は、例えば、ＤＲＡＭやＳＲＡＭなどの揮発性メモリなどで構成される。ストレージ３０６は、例えば、ＨＤＤやＳＳＤなどの不揮発性メモリなどで構成される。
【００７０】
ストレージ３０６には、基本的な機能を実現するためのＯＳ３２０に加えて、サポート装置３００としての機能を提供するためのサポートプログラム３２６が格納される。さらに、ストレージ３０６には、構成情報１３４が格納される。これらの情報の取得および利用については、後述する。
【００７１】
入力部３０８は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部３１０は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ３０２からの処理結果などを出力する。
【００７２】
ＵＳＢコントローラ３１６は、ＵＳＢ接続を介して、制御装置１００などとの間のデータの遣り取りを制御する。
【００７３】
サポート装置３００は、光学ドライブ３１２を有しており、コンピュータ読み出し可能なプログラムを非一過的に格納する記録媒体３１４（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読み出されてストレージ３０６などにインストールされる。
【００７４】
サポート装置３００で実行されるプログラムは、コンピュータ読み出し可能な記録媒体３１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置３００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００７５】
図７には、プロセッサ３０２がプログラムを実行することで、サポート装置３００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００７６】
＜Ｄ．スレーブＩＤについての課題および解決手段＞
次に、スレーブＩＤについての課題および解決手段について説明する。
【００７７】
図８は、段取り替えにおいて生じるスレーブＩＤの変化を説明するための図である。図８（Ａ）においては、マスタである制御装置１００には、ジャンクションスレーブ２００Ｊを介して、製造モジュール３０（スレーブ２００−１および２００−２）、ならびに、製造モジュール４０（スレーブ２００−３および２００−４）が接続されている例を示す。図８（Ａ）に示す接続構成において、スレーブ２００−１および２００−２には、スレーブＩＤとして「１」および「２」がそれぞれ設定されている。また、スレーブ２００−３および２００−４には、スレーブＩＤとして「３」および「４」がそれぞれ設定されている。
【００７８】
段取り替えによって、図８（Ａ）に示す接続構成から図８（Ｂ）に示す接続構成に変化したとする。このとき、製造モジュール３０（スレーブ２００−１および２００−２）は、ジャンクションスレーブ２００Ｊの当初接続されていたポートとは異なるポートに接続される。制御装置１００から見ると、図８（Ａ）に示す接続構成における設定構成とは異なった構成となっている。すなわち、スレーブＩＤとして「１」および「２」がそれぞれ設定されているスレーブ２００−１および２００−２は、マスタである制御装置１００の構成情報１３４に規定されている位置とは異なった位置に接続されていることになる。
【００７９】
その結果、図８（Ｂ）に示す接続構成において、スレーブ２００−１および２００−２は「未知スレーブ」となる。
【００８０】
このような「未知スレーブ」になったスレーブに対しては、スレーブＩＤを再設定あるいは変更する必要がある。しかしながら、このようなスレーブＩＤの再設定あるいは変更には、以下のような課題が想定される。
【００８１】
（１）ユーザプログラム１３２からの参照不可
マスタである制御装置１００で実行されるユーザプログラム１３２においては、構成情報１３４と実際の構成とが一致しているスレーブ２００に設定されているスレーブＩＤを参照可能になっている。すなわち、ユーザプログラム１３２は、未知スレーブのスレーブＩＤを参照および指定できない。その結果、ユーザプログラム１３２では、対象となる未知スレーブを特定できないので、未知スレーブのスレーブＩＤを再設定あるいは変更することはできない。
【００８２】
（２）ポジションアドレスの不便性
上述したように、ユーザプログラム１３２においては未知スレーブのスレーブＩＤを参照および指定できないので、未知スレーブを特定するためには、接続されている位置（すなわち、ポジションアドレス）を用いる必要がある。
【００８３】
図９は、ポジションアドレスを用いたスレーブＩＤの設定を説明するための図である。図９（Ａ）においては、マスタである制御装置１００には、ジャンクションスレーブ２００Ｊを介して、製造モジュール３０（スレーブ２００−１および２００−２）、ならびに、製造モジュール４０（スレーブ２００−３および２００−４）が接続されている例を示す。
【００８４】
段取り替えによって、図９（Ａ）に示す接続構成から図９（Ｂ）に示す接続構成に変化したとする。このとき、製造モジュール３０（スレーブ２００−１および２００−２）は、ジャンクションスレーブ２００Ｊの当初接続されていたポートとは異なるポートに接続される。さらに、製造モジュール３０（スレーブ２００−１および２００−２）が接続されていたジャンクションスレーブ２００Ｊのポートには、さらに別の製造モジュール５０（スレーブ２００−５および２００−６）が接続される。
【００８５】
図９に示すように、一例として、特定のポジションアドレスにあるスレーブ２００に対して、任意のスレーブＩＤを設定するために、以下のような命令が用意されている。
【００８６】
ＳｌａｖｅＩＤＡｄｄｒｅｓｓ＿ｓｅｔ（［設定対象のスレーブのポジションアドレス］，［設定すべきスレーブＩＤ］）
このようなスレーブＩＤを設定する命令を実行する場合には、各スレーブ２００の接続位置を把握して、適切なポジションアドレスを指定する必要がある。しかしながら、このようなポジションアドレスを適切に把握するためには十分な知識が必要である。このような知識が不足していると、スレーブ２００に対して意図しないスレーブＩＤを設定してしまう可能性もある。
【００８７】
上述したような課題に対して、本実施の形態においては、ユーザプログラム１３２に含まれる命令を用いて、任意のスレーブ２００に対して、容易な方法で任意のスレーブＩＤを設定できる方法を提供する。
【００８８】
＜Ｅ．ユーザプログラム１３２でスレーブＩＤの設定＞
本実施の形態に係る制御装置１００においては、ユーザプログラム１３２において実行可能な、スレーブＩＤを再設定あるいは変更するための命令（以下、「スレーブＩＤ設定命令」とも称す。）が提供される。このようなスレーブＩＤ設定命令を用いることで、各スレーブ２００に対してスレーブＩＤを設定する際に、サポート装置３００などを用いる必要はない。さらに、ユーザプログラム１３２の一部として実行されるので、例えば、ユーザが表示装置を操作することをトリガとして、段取り替えおよびスレーブＩＤの設定を並行して行うこともできる。
【００８９】
上述したように、ユーザプログラム１３２では、未知スレーブのスレーブＩＤを特定できないので、スレーブＩＤ設定命令においては、未知スレーブの近傍に存在し、スレーブＩＤを取得できているスレーブを基準として、未知スレーブを特定する。そして、その特定した未知スレーブに対して、任意のスレーブＩＤを設定する。
【００９０】
図１０は、本実施の形態に係るスレーブＩＤ設定命令の一例を説明するための図である。図１０には、ジャンクションスレーブ２００ＪのｐｏｒｔＣに接続されている製造モジュール３０（スレーブ２００−１および２００−２）に対してスレーブＩＤを設定する例を示す。
【００９１】
図１０を参照して、スレーブＩＤ設定命令４００は、有効なスレーブＩＤを有しているジャンクションスレーブ２００Ｊとして、未知スレーブであるスレーブ２００−１および２００−２に対して、スレーブＩＤをそれぞれ設定する。具体的には、スレーブＩＤ設定命令４００（ＥＣ＿ＳｅｔＳｌａｖｅＳｌａｖｅＩＤ）は、以下のような形式で規定される。
【００９２】
ＥＣ＿ＳｅｔＳｌａｖｅＳｌａｖｅＩＤ（［基準となるスレーブのスレーブＩＤ］，［ポート名］，［設定されるスレーブＩＤ］，［対象スレーブ数］）
図１０に示す例では、命令ＥＣ＿ＳｅｔＳｌａｖｅＳｌａｖｅＩＤに対して、引数として、（１００，ｐｏｒｔＣ，［５，６］，２）が指定されている。第１引数である「１００」は、基準となるスレーブのスレーブＩＤを示すものであり、図１０に示す例では、ジャンクションスレーブ２００ＪのスレーブＩＤが格納される。第２引数である「ｐｏｒｔＣ」は、スレーブＩＤを設定する対象であるスレーブ２００−１および２００−２が接続されているジャンクションスレーブ２００Ｊのポート名を指定するものである。第３引数である「［５，６］」は、対象のスレーブ２００−１および２００−２に対して設定するスレーブＩＤの値を示す。第４引数である「２」は、設定対象のスレーブ２００−１および２００−２の数を示す。
【００９３】
このように、本実施の形態に係る制御装置１００は、複数のスレーブ２００のうちいずれかのスレーブ２００が基準として指定されたスレーブＩＤ設定命令４００を実行することで、指定された他のスレーブ２００に対して、指定されたスレーブＩＤ（識別情報）を設定する。このようないずれかのスレーブ２００が基準としてスレーブＩＤ（識別情報）を設定できる処理が識別情報設定機能に相当する。
【００９４】
スレーブＩＤの設定対象のスレーブ２００を特定するために、スレーブＩＤ設定命令４００は、当該スレーブ２００が接続されるポートの指定（ＥＣ＿ＳｅｔＳｌａｖｅＳｌａｖｅＩＤの［ポート名］の引数）を含んでいてもよい。あるいは、ポートの指定に代えて、基準となるスレーブ２００に接続されているネットワークを特定できる情報であれば、どのような情報を用いてもよい。
【００９５】
本実施の形態に係る制御装置１００においては、任意の未知スレーブに対してスレーブＩＤの設定を行う場合に、ユーザに対して、当該未知スレーブのポジションアドレスを意識させることがない。その結果、ユーザは、段取り替え等に伴ってスレーブＩＤの設定を行わなければならない場合に、ユーザプログラム１３２を容易に作成できる。
【００９６】
また、本実施の形態に係る制御装置１００において、スレーブＩＤ設定命令４００は、複数の設定対象のスレーブ２００に対してそれぞれスレーブＩＤを指定可能である。すなわち、本実施の形態に係る制御装置１００は、スレーブＩＤ設定命令４００を実行することで、１つ以上の指定されたスレーブ２００に対して、それぞれ指定されたスレーブＩＤ（識別情報）を設定することもできる。
【００９７】
このような構成を採用することで、複数のスレーブ２００に対して一括してスレーブＩＤを設定できるので、スレーブＩＤの設定に要する時間を短縮できる。
【００９８】
なお、図１０には、説明の便宜上、２つのスレーブ２００に対してスレーブＩＤを設定するスレーブＩＤ設定命令４００の例を示すが、これに限らず、１つのスレーブ２００に対してスレーブＩＤを設定することもできるし、より多くのスレーブ２００に対してスレーブＩＤを設定することもできる。
【００９９】
また、図１０には、製造モジュール３０（スレーブ２００−１および２００−２）と直接接続される、すなわち設定対象のスレーブ２００と直接接続されたスレーブを基準となるスレーブに設定したが、これに限らない。例えば、有効なスレーブＩＤを有している任意のスレーブを基準として、当該基準とされたスレーブからの経路（パスやホップ数）により任意の未知スレーブを特定して、スレーブＩＤを設定することもできる。なお、基準となるスレーブは、設定対象のスレーブ２００よりマスタ側に位置していることが好ましい。
【０１００】
さらに、スレーブＩＤ設定命令４００は、任意の表現形式で規定できる。例えば、後述するようなファンクションブロック形式で規定してもよい（詳細については、後述する）。
【０１０１】
＜Ｆ．スレーブにおけるスレーブＩＤの設定処理＞
次に、スレーブ２００におけるスレーブＩＤの設定処理について説明する。
【０１０２】
図１１は、本実施の形態に係る制御システムを構成するスレーブ２００におけるスレーブＩＤの設定処理を説明するための模式図である。図１１を参照して、スレーブ２００は、不揮発性メモリ２２０にスレーブＩＤ２２４を格納している。また、スレーブ２００の動作中においては、メインメモリ２１４上にスレーブＩＤ格納レジスタ２１６が用意される。スレーブＩＤ格納レジスタ２１６にもスレーブＩＤが書き込まれている。
【０１０３】
図１１に示すように、スレーブ２００は、スレーブＩＤ（識別情報）を保持するための不揮発性メモリ２２０と、設定されているスレーブＩＤ（識別情報）を保持する揮発性メモリであるメインメモリ２１４とを有している。
【０１０４】
本実施の形態においては、スレーブＩＤ格納レジスタ２１６へのスレーブＩＤの書き込み方法として２種類が用意されている。
【０１０５】
第１番目の方法は、マスタからスレーブ２００の不揮発性メモリ２２０内の内容を書き換える方法である。不揮発性メモリ２２０は、外部からのアクセスを受け入れ可能な領域を有しており、その領域内にスレーブＩＤ２２４が格納されている。なお、不揮発性メモリ２２０は、ＥＥＰＲＯＭとして実装されてもよい。マスタからのアクセスによって、不揮発性メモリ２２０にスレーブＩＤが書き込まれる（シーケンスＳＱ１）。この書き込みは、ＳＩＩ（Slave Information Interface）を用いて実行されるので、「ＳＩＩ書き込み」とも称される。すなわち、制御装置１００は、スレーブＩＤの設定処理において、ＳＩＩを用いて、指定されたスレーブ２００の不揮発性メモリ２２０に指定されたスレーブＩＤを書き込む。
【０１０６】
但し、不揮発性メモリ２２０に書き込まれたスレーブＩＤは、そのままではスレーブＩＤ格納レジスタ２１６に反映されない。スレーブ２００が再起動するときに、不揮発性メモリ２２０に格納されたスレーブＩＤが読み出されて、スレーブＩＤ格納レジスタ２１６に反映される（シーケンスＳＱ２）。そのため、スレーブＩＤを設定対象のスレーブ２００の不揮発性メモリ２２０に書き込んだ場合には、スレーブ２００の再起動が必要となる。
【０１０７】
第２番目の方法は、スレーブＩＤ更新オブジェクト２１８（Slave Identification Reload Object）を用いる方法である。スレーブＩＤ更新オブジェクト２１８は、ＥｔｈｅｒＣＡＴにおいてＳＤＯ（Service Data Object）として規定されるオブジェクトであり、外部からのアクセスに応じて処理が可能になっている。メインメモリ２１４上にインスタンス化されているオブジェクトであり、外部からの指令に従って、スレーブＩＤ格納レジスタ２１６に格納されているスレーブＩＤを更新できる。この書き込みは、ＣｏＥ（CANopen over EtherCAT）プロトコルを用いて実行されるので、「ＣｏＥ書き込み」とも称される。
【０１０８】
すなわち、制御装置１００は、スレーブＩＤの設定処理において、ＣｏＥプロトコルを用いて、指定されたスレーブ２００のメインメモリ２１４（揮発性メモリ）に指定されたスレーブＩＤを書き込む。
【０１０９】
第２番目の方法においては、スレーブＩＤ更新オブジェクト２１８に対して、マスタから設定すべきスレーブＩＤを書き込むと（シーケンスＳＱ２）、スレーブＩＤ更新オブジェクト２１８がスレーブＩＤ格納レジスタ２１６に格納されている値を更新する（シーケンスＳＱ３）。
【０１１０】
このように、スレーブ２００のメインメモリ２１４（揮発性メモリ）へ指定されたスレーブＩＤ（識別情報）が書き込まれた場合、書き込み先のスレーブ２００にスレーブＩＤ更新オブジェクト２１８が実装されていれば、スレーブＩＤ更新オブジェクト２１８がメインメモリ２１４に格納されているスレーブＩＤの値を更新する。
【０１１１】
スレーブＩＤ更新オブジェクト２１８を用いる方法によれば、スレーブＩＤを反映するために、スレーブ２００の電源を一旦遮断して再起動する必要はない。但し、設定対象のスレーブ２００がスレーブＩＤ更新オブジェクト２１８を実装している必要がある。逆に言えば、スレーブＩＤ更新オブジェクト２１８を実装していないスレーブ２００に対しては、スレーブＩＤを反映するために、電源遮断および再起動が必要となる。
【０１１２】
後述するように、本実施の形態に係るスレーブＩＤ設定命令４００が実行されると、第１番目および第２番目の両方の方法でスレーブＩＤが設定される。すなわち、制御装置１００は、スレーブＩＤの設定処理において、設定対象のスレーブ２００の不揮発性メモリ２２０およびメインメモリ２１４（揮発性メモリ）の両方に、指定されたスレーブＩＤを書き込む。このとき、制御装置１００は、指定されたスレーブＩＤの書き込みの成否に応じて、指定されたスレーブ２００の再起動の要否を示す情報（後述の図１２に示す「ＳｈｏｕｌｄＲｅｂｏｏｔ４１５」など）を出力する。
【０１１３】
但し、第１番目および第２番目のいずれか一方の方法のみを実行するようにしてもよい。あるいは、第２番目の方法を実行し、その実行が失敗した場合（典型的には、スレーブＩＤ更新オブジェクト２１８が実装されていない場合）に限って、第１番目の方法を実行するようにしてもよい。
【０１１４】
＜Ｇ．命令の記述例＞
本実施の形態に係るスレーブＩＤ設定命令４００および関連する命令については、任意の形式で規定できるが、例えば、ファンクションブロック形式で規定してもよい。
【０１１５】
図１２は、本実施の形態に係る制御装置１００のユーザプログラム１３２で利用可能なスレーブＩＤ設定命令４００のファンクションブロックを説明するための図である。図１２を参照して、スレーブＩＤ設定命令４００のファンクションブロックは、入力として、Ｅｘｅｃｕｔｅ４０１と、ＰｒｅｖｉｏｕｓＳｌａｖｅＩＤ４０２と、ＰｒｅｖｉｏｕｓＳｌａｖｅＰｏｒｔ４０３と、ＮｅｗＳｌａｖｅＩＤＴａｂｌｅ４０４と、ＮｕｍＯｆＳｌａｖｅｓ４０５と、ＦａｉｌｕｒｅＴａｂｌｅ４０６とを含む。
【０１１６】
Ｅｘｅｃｕｔｅ４０１には、実行条件となるブール変数が指定される。ＰｒｅｖｉｏｕｓＳｌａｖｅＩＤ４０２には、基準となるスレーブのスレーブＩＤが指定される。ＰｒｅｖｉｏｕｓＳｌａｖｅＰｏｒｔ４０３には、基準となるスレーブのポート名が指定される。ＮｅｗＳｌａｖｅＩＤＴａｂｌｅ４０４には、設定される１または複数のスレーブＩＤが指定される。ＮｕｍＯｆＳｌａｖｅｓ４０５には、設定対象のスレーブの数が指定される。ＦａｉｌｕｒｅＴａｂｌｅ４０６には、設定に失敗したスレーブを格納するテーブル名が指定される。
【０１１７】
また、スレーブＩＤ設定命令４００のファンクションブロックは、出力として、Ｄｏｎｅ４１１と、Ｂｕｓｙ４１２と、Ｅｒｒｏｒ４１３と、ＥｒｒｏｒＩＤ４１４と、ＳｈｏｕｌｄＲｅｂｏｏｔ４１５と、ＦａｉｌｕｒｅＴａｂｌｅ４１６とを含む。
【０１１８】
Ｄｏｎｅ４１１からは、スレーブＩＤ設定命令４００の正常終了の有無を示すブール値が出力される。Ｂｕｓｙ４１２からは、スレーブＩＤ設定命令４００の処理中の有無を示すブール値が出力される。Ｅｒｒｏｒ４１３からは、スレーブＩＤ設定命令４００の異常終了の有無を示すブール値が出力される。ＥｒｒｏｒＩＤ４１４からは、スレーブＩＤ設定命令４００が異常終了したときのエラー値が出力される。ＳｈｏｕｌｄＲｅｂｏｏｔ４１５からは、設定対象のスレーブの再起動が必要であるか否かを示すブール値が出力される。ＦａｉｌｕｒｅＴａｂｌｅ４１６からは、設定に失敗したスレーブが格納された配列が出力される。このように、スレーブＩＤ設定命令４００には、いずれのスレーブにおいてスレーブＩＤの設定が失敗したのかを示すエラー情報を出力する先のテーブル名が指定される。
【０１１９】
図１２に示す、ＰｒｅｖｉｏｕｓＳｌａｖｅＩＤ４０２、ＰｒｅｖｉｏｕｓＳｌａｖｅＰｏｒｔ４０３、ＮｅｗＳｌａｖｅＩＤＴａｂｌｅ４０４、および、ＮｕｍＯｆＳｌａｖｅｓ４０５は、図１０を参照して説明したように、任意のスレーブを基準となるスレーブとして設定した上で、１または複数の未知スレーブに対してそれぞれスレーブＩＤを設定するためのパラメータに相当する。
【０１２０】
図１２に示すＦａｉｌｕｒｅＴａｂｌｅ４０６および４１６には、未知スレーブに対するスレーブＩＤの設定の成否を示す情報が格納される。
【０１２１】
図１２に示すＳｈｏｕｌｄＲｅｂｏｏｔ４１５として出力される値は、上述の図１１を参照して説明したように、スレーブＩＤ更新オブジェクト２１８が実装されていないスレーブに対してスレーブＩＤを設定した場合に、当該スレーブを再起動することが必要であることを示す情報に相当する。
【０１２２】
上述の基準となるスレーブを利用した応用例として、未知スレーブのスレーブＩＤを設定するのではなく、未知スレーブのスレーブＩＤを取得する命令（以下、「スレーブＩＤ読出設令」とも称す。）が提供されてもよい。
【０１２３】
図１３は、本実施の形態に係る制御装置１００のユーザプログラム１３２で利用可能なスレーブＩＤ読出命令４２０のファンクションブロックを説明するための図である。図１３を参照して、スレーブＩＤ読出命令４２０のファンクションブロックは、入力として、Ｅｘｅｃｕｔｅ４２１と、ＰｒｅｖｉｏｕｓＳｌａｖｅＩＤ４２２と、ＰｒｅｖｉｏｕｓＳｌａｖｅＰｏｒｔ４２３と、ＮｕｍＯｆＳｌａｖｅｓ４２４とを含む。
【０１２４】
Ｅｘｅｃｕｔｅ４２１には、実行条件となるブール変数が指定される。ＰｒｅｖｉｏｕｓＳｌａｖｅＩＤ４２２には、基準となるスレーブのスレーブＩＤが指定される。ＰｒｅｖｉｏｕｓＳｌａｖｅＰｏｒｔ４２３には、基準となるスレーブのポート名が指定される。ＮｕｍＯｆＳｌａｖｅｓ４２４には、読出対象のスレーブの数が指定される。
【０１２５】
また、スレーブＩＤ読出命令４２０のファンクションブロックは、出力として、Ｄｏｎｅ４３１と、Ｂｕｓｙ４３２と、Ｅｒｒｏｒ４３３と、ＥｒｒｏｒＩＤ４３４と、ＧｅｔＳｌａｖｅＩＤＴａｂｌｅ４３５と、ＩｓＳｌａｖｅＩＤＴａｂｌｅ４３６とを含む。
【０１２６】
Ｄｏｎｅ４３１からは、スレーブＩＤ読出命令４２０の正常終了の有無を示すブール値が出力される。Ｂｕｓｙ４３２からは、スレーブＩＤ読出命令４２０の処理中の有無を示すブール値が出力される。Ｅｒｒｏｒ４３３からは、スレーブＩＤ読出命令４２０の異常終了の有無を示すブール値が出力される。ＥｒｒｏｒＩＤ４３４からは、スレーブＩＤ読出命令４２０が異常終了したときのエラー値が出力される。ＧｅｔＳｌａｖｅＩＤＴａｂｌｅ４３５からは、読出対象のスレーブから読み出されたスレーブＩＤが格納された配列が出力される。ＩｓＳｌａｖｅＩＤＴａｂｌｅ４３６からは、スレーブＩＤの取得の成否を示すブール値が格納された配列が出力される。
【０１２７】
このように、本実施の形態に係る制御装置１００は、複数のスレーブ２００のうちいずれかのスレーブ２００が基準として指定されたスレーブＩＤ読出命令４２０を実行することで、指定された他のスレーブ２００に設定されているスレーブＩＤ（識別情報）を読み出す。このようないずれかのスレーブ２００が基準としてスレーブＩＤ（識別情報）を読み出すことができる処理が識別情報読出機能に相当する。
【０１２８】
上述したようなスレーブＩＤ設定命令４００およびスレーブＩＤ読出命令４２０は、制御装置１００で実行されるユーザプログラム１３２の一部として実行されてもよい。すなわち、ユーザプログラム１３２は、スレーブＩＤ設定命令４００またはスレーブＩＤ読出命令４２０の実行を指定するコードを含み得る。
【０１２９】
＜Ｈ．処理手順＞
本実施の形態に係るスレーブＩＤ設定命令４００がユーザプログラム１３２から実行された場合の処理手順について説明する。
【０１３０】
図１４は、本実施の形態に係るスレーブＩＤ設定命令４００がユーザプログラム１３２から実行された場合の処理手順を示すシーケンス図である。図１４に示す処理手順は、制御装置１００のプロセッサ１０２が実行するユーザプログラム１３２と、制御装置１００によるマスタとしての機能を提供するフィールドネットワークコントローラ１２０と、スレーブ２００との間で実行される。
【０１３１】
フィールドネットワークコントローラ１２０は、ユーザプログラム１３２からの指令を受け付ける命令インターフェイス１２２と、ネットワーク４に接続されているスレーブ２００の実際の接続状態（以下「実構成情報」とも称す。）を管理する実構成管理コンポーネント１２４とを有している。スレーブＩＤ設定命令４００の実行においてスレーブＩＤが設定される設定対象のスレーブ２００は、複数のスレーブ２００の接続状態（実構成情報）を参照することで、接続されている位置が特定される。
【０１３２】
より具体的には、ユーザプログラム１３２が順次実行される過程で、スレーブＩＤ設定命令４００が実行されると（シーケンスＳＱ１００）、フィールドネットワークコントローラ１２０の命令インターフェイス１２２に命令実行指示が与えられる（シーケンスＳＱ１０２）。命令実行指示は、図１２に示すスレーブＩＤ設定命令４００に対して設定される入力情報を含む。
【０１３３】
命令インターフェイス１２２は、実構成管理コンポーネント１２４が管理している実際の実構成情報を参照して、指定された基準となるスレーブのスレーブＩＤおよびポート名に基づいて、設定対象となる未知スレーブのスレーブＩＤを取得する（シーケンスＳＱ１０４）。
【０１３４】
続いて、命令インターフェイス１２２は、シーケンスＳＱ１０４において取得したスレーブＩＤに基づいて設定対象のスレーブ２００を特定した上で、当該特定したスレーブ２００の不揮発性メモリ２２０に指定されたスレーブＩＤを書き込む（シーケンスＳＱ１０６）。さらに、命令インターフェイス１２２は、スレーブＩＤの不揮発性メモリ２２０への書き込みの実行結果（書込結果）を取得し（シーケンスＳＱ１０８）、その取得した書込結果を内部に格納する（シーケンスＳＱ１１０）。
【０１３５】
続いて、命令インターフェイス１２２は、シーケンスＳＱ１０４において取得したスレーブＩＤに基づいて設定対象のスレーブ２００を特定した上で、当該特定したスレーブ２００のスレーブＩＤ更新オブジェクト２１８に指定されたスレーブＩＤを書き込む（シーケンスＳＱ１１２）。さらに、命令インターフェイス１２２は、スレーブＩＤのスレーブＩＤ更新オブジェクト２１８への書き込みの実行結果（書込結果）を取得し（シーケンスＳＱ１１４）、その取得した書込結果を内部に格納する（シーケンスＳＱ１１６）。
【０１３６】
なお、複数のスレーブ２００が設定対象として指定されている場合には、シーケンスＳＱ１０４からＳＱ１１６の処理は、対象のスレーブ２００の数だけ繰り返される。
【０１３７】
最終的に、命令インターフェイス１２２は、命令の実行結果をユーザプログラム１３２へ返す（シーケンスＳＱ１１８）。
【０１３８】
ユーザプログラム１３２へ返される命令の実行結果は、設定対象のスレーブの再起動が必要であるか否かを示すブール値（ＳｈｏｕｌｄＲｅｂｏｏｔ４１５）を含む。具体的には、不揮発性メモリ２２０への書き込み（シーケンスＳＱ１０６）の成否によらず、スレーブＩＤ更新オブジェクト２１８への書き込みが成功した場合には、設定対象のスレーブの再起動は不要であることを示す値が返される。一方、不揮発性メモリ２２０への書き込み（シーケンスＳＱ１０６）は成功したものの、スレーブＩＤ更新オブジェクト２１８への書き込み（シーケンスＳＱ１１２）が失敗した場合には、設定対象のスレーブの再起動が必要であることを示す値が返される。
【０１３９】
このように、制御装置１００は、スレーブＩＤの設定処理において、指定されたスレーブ２００の不揮発性メモリ２２０への指定されたスレーブＩＤの書き込みが成功したものの、メインメモリ２１４（揮発性メモリ）への指定されたスレーブＩＤの書き込みが成功しなかったときに、指定されたスレーブの再起動が必要であることを出力する。
【０１４０】
なお、不揮発性メモリ２２０への書き込み（シーケンスＳＱ１０６）およびスレーブＩＤ更新オブジェクト２１８への書き込み（シーケンスＳＱ１１２）の両方が失敗した場合には、スレーブＩＤ設定命令４００は異常終了とされてもよい。
【０１４１】
図１５は、図１４に示す実構成管理コンポーネント１２４が保持している実構成情報の一例を示す模式図である。図１５には、一例として、図１０に示す接続構成に対応する実構成情報を示す。
【０１４２】
図１５を参照して、実構成管理コンポーネント１２４は、マスタとして機能する制御装置１００に最も近いジャンクションスレーブ２００Ｊのデバイス情報と、ジャンクションスレーブ２００Ｊの各ポートに接続されているスレーブ２００−１および２００−２のデバイス情報とを含む。これらの情報は、接続関係を反映した形で管理される。
【０１４３】
実構成管理コンポーネント１２４は、実構成情報を参照することで、ジャンクションスレーブ２００ＪのｐｏｒｔＣに接続されているスレーブ２００−１および２００−２を特定できる。
【０１４４】
なお、図１５に具現化された情報は説明の便宜上のものであり、どのような形で管理されていてもよい。
【０１４５】
＜Ｉ．異常発生時の解析支援機能＞
本実施の形態に係る制御装置１００のユーザプログラム１３２で利用可能なスレーブＩＤ設定命令４００およびスレーブＩＤ読出命令４２０は、１または複数のスレーブに対して、スレーブＩＤの設定あるいは読み出しを行う。複数のスレーブに対して処理を実行した場合には、いずれかのスレーブで実行失敗（異常終了）が生じると、その異常が発生したスレーブおよびその原因を特定することは容易ではない。そこで、本実施の形態においては、以下のような異常発生時の解析支援機能を提供する。
【０１４６】
図１６は、本実施の形態に係るスレーブＩＤ設定命令４００が出力する異常終了結果の一例を示す模式図である。図１６には、一例として、ジャンクションスレーブ２００Ｊに接続される４つのスレーブ２００−１〜２００−４に対してそれぞれスレーブＩＤを設定する例を示す。
【０１４７】
この場合には、スレーブＩＤ設定命令４００から出力されるＦａｉｌｕｒｅＴａｂｌｅ４１６は、各スレーブ２００に対する設定の成否を示す４つのブール値を含む。例えば、４つのスレーブ２００−１〜２００−４に対するそれぞれのスレーブＩＤの設定が異常なく実行されると、配列［０，０，０，０］が出力される。
【０１４８】
これに対して、ジャンクションスレーブ２００Ｊから２番目のスレーブ２００−２に対するスレーブＩＤの設定が失敗した場合には、２番目のスレーブ２００−２に対応する位置の値が「１」に変更されたＦａｉｌｕｒｅＴａｂｌｅ４１６が出力される。すなわち、ＦａｉｌｕｒｅＴａｂｌｅ４１６として、配列［０，０，０，０］が出力される。
【０１４９】
このように、制御装置１００は、スレーブＩＤの設定処理において、スレーブＩＤの設定に失敗したスレーブ２００を特定する情報を出力する。より具体的には、制御装置１００は、スレーブＩＤの設定処理において、１つ以上の指定されたスレーブ２００のうち、いずれのスレーブにおいてスレーブＩＤの設定が失敗したのかを示すエラー情報（ＦａｉｌｕｒｅＴａｂｌｅ４１６）を出力する。エラー情報として出力されるＦａｉｌｕｒｅＴａｂｌｅ４１６には、１つ以上の指定されたスレーブ２００に対応するメンバを有する配列が格納される。
【０１５０】
このように、制御装置１００により実行されるスレーブＩＤ設定命令４００は、基準となるスレーブからの相対位置に対応付けられた異常終了結果を出力するので、異常が発生したスレーブの位置を容易に特定できる。すなわち、スレーブＩＤの設定あるいは読み出しが失敗した場合の原因を特定するために、設定あるいは読み出しが失敗したスレーブ２００の位置を示す情報が出力される。
【０１５１】
また、１つ以上の指定されたスレーブ２００に対するスレーブＩＤの設定が失敗したか否かを示すＥｒｒｏｒ４１３（図１２）をさらに出力するようにしてもよい。例えば、Ｅｒｒｏｒ４１３がスレーブＩＤの設定が失敗したことを示す値になっている場合に、ＦａｉｌｕｒｅＴａｂｌｅ４１６を参照するような処理を実装してもよい。
【０１５２】
さらに、設定または読み出しが失敗した理由を示すエラーコードを出力するようにしてもよい。典型的には、スレーブＩＤ設定命令４００のファンクションブロックが、ＥｒｒｏｒＩＤ４１４（図１２参照）として出力することができる。すなわち、スレーブＩＤ設定命令４００は、１つ以上の指定されたスレーブ２００に対するスレーブＩＤの設定が失敗した理由を示すＥｒｒｏｒＩＤ４１４（図１２参照）をさらに出力するようにしてもよい。なお、複数のスレーブ２００を設定対象とした場合には、スレーブ２００毎にエラーコードを出力するようにしてもよいし、複数のエラーコードが発生した場合には、優先度の高い順にエラーコードを出力するようにしてもよい。
【０１５３】
なお、スレーブＩＤ設定命令４００のファンクションブロックは、Ｅｒｒｏｒ４１３として、スレーブＩＤの設定の成否を示す情報を出力してもよい。
【０１５４】
このように、本実施の形態に係るスレーブＩＤ設定命令およびスレーブＩＤ読出設令によれば、命令実行の成否（成功／失敗）の情報を取得できるとともに、失敗した理由を示すエラーコードを取得することもできる。さらに、本実施の形態に係るスレーブＩＤ設定命令およびスレーブＩＤ読出設令によれば、失敗したスレーブの位置についても特定ができる。これらの情報を用いることで、スレーブＩＤの設定あるいは読み出しが失敗した場合に、対象のスレーブおよびその原因などを容易に特定できる。
【０１５５】
さらに、本実施の形態に係る制御装置１００は、スレーブＩＤの設定あるいは読み出しにおいて対象のスレーブに送信された指令（パケット）の内容を格納しておき、いずれかの処理が失敗したときには、その格納された指令（パケット）の内容を出力するようにしてもよい。
【０１５６】
さらに、本実施の形態に係る制御装置１００は、スレーブＩＤの設定あるいは読み出し処理に係るログを蓄積しておき、いずれかの処理が失敗したときには、その格納されたログの内容を出力するようにしてもよい。
【０１５７】
＜Ｊ．ユーザプログラム例＞
次に、本実施の形態に係るスレーブＩＤ設定命令４００を用いたいくつかのユーザプログラム例について説明する。
【０１５８】
（ｊ１：段取り替え）
まず、スレーブＩＤ設定命令４００を用いた段取り替え用のユーザプログラム１３２について説明する。
【０１５９】
図１７は、本実施の形態に係るスレーブＩＤ設定命令４００を用いた段取り替えの内容を説明するための図である。図１７（Ａ）に示す接続構成から図１７（Ｂ）に示す接続構成に変更する場合を想定する。より具体的には、ジャンクションスレーブ２００ＪのポートＸ４に接続されている４つのスレーブ２００−１，２００−２，２００−３，２００−４を取り外して、ジャンクションスレーブ２００ＪのポートＸ５に接続し直す場合を想定する。
【０１６０】
図１８は、図１７に示す段取り替えに対応するユーザプログラム１３２の要部を示す図である。図１８を参照して、ユーザプログラム１３２は、行番号０〜６までの７行分のコードを含む。
【０１６１】
ユーザプログラム１３２において、命令ＥＣ＿ＣｈａｎｇｅＥｎａｂｌｅＳｅｔｔｉｎｇは、スレーブの有効および無効を切り替えるための命令である。行番号０，１，２，３に記述されている、スレーブ有効／無効切替命令４５０，４５１，４５２，４５３は、対象のスレーブを有効化する命令であり、行番号６に記述されている、スレーブ有効／無効切替命令４５４，４５５，４５６，４５７は、対象のスレーブを無効化する命令である。制御装置１００は、これらの対象のスレーブを無効化する命令を実行することで、構成情報１３４による定義に含まれる一部または全部のスレーブを無効化する。
【０１６２】
命令ＲｅｓｅｔＥＣＥｒｒｏｒは、スレーブの異常を解除するための命令である。行番号５に記述されている、スレーブ異常解除命令４６０が命令ＲｅｓｅｔＥＣＥｒｒｏｒに相当する。
【０１６３】
図１９は、図１７に示す段取り替え対応する接続状態の変化を説明するための図である。図２０は、図１７に示す段取り替え対応する構成情報１３４の変化を説明するための図である。
【０１６４】
図１７に示す段取り替えは、以下の手順１〜７に従って実行される。なお、スレーブＩＤの値であることを意味する場合には、数字に「＃」を付して記載している。
（手順１）
事前準備の局面において、図１９（Ａ）に示されるように、ジャンクションスレーブ２００ＪのポートＸ４に４つのスレーブ２００−１，２００−２，２００−３，２００−４を接続する。そして、サポート装置３００からスレーブ２００−１，２００−２，２００−３，２００−４に対して、スレーブＩＤとして「３」，「４」，「５」，「６」を設定する。
【０１６５】
また、サポート装置３００から図２０（Ａ）に示される構成情報１３４をマスタとして機能する制御装置１００に転送する。このとき、スレーブ＃３〜＃１０は、すべて「無効」（Ｄｉｓａｂｌｅ）に設定されている。
（手順２）
運転開始の局面において、制御装置１００、ジャンクションスレーブ２００Ｊ、およびスレーブ２００−１，２００−２，２００−３，２００−４の電源が投入される。併せて、ユーザプログラム１３２のスレーブ有効／無効切替命令（図１８には図示されていない）が実行されることで、構成情報１３４のスレーブ＃３〜＃６が有効化（Ｅｎａｂｌｅｄ）される（図２０（Ｂ）参照）。これにより、図１７（Ａ）に示される接続構成での運転が開始される。
（手順３）
その後、段取り替えが開始されたとする。まず、スレーブ有効／無効切替命令４５０，４５１，４５２，４５３（図１８参照）が実行されることで、構成情報１３４のスレーブ＃３〜＃６が無効化（Ｄｉａｂｌｅｄ）される。すなわち、図２０（Ａ）に示される状態に戻る。
（手順４）
続いて、図１９（Ｂ）に示されるように、スレーブ２００−１，２００−２，２００−３，２００−４の電源が遮断された上で、ジャンクションスレーブ２００ＪのポートＸ４から切り離される。
（手順５）
続いて、図１９（Ｃ）に示されるように、ジャンクションスレーブ２００ＪのポートＸ５に４つのスレーブ２００−１，２００−２，２００−３，２００−４を接続する。そして、スレーブ２００−１，２００−２，２００−３，２００−４の電源が再投入される。
【０１６６】
このとき、制御装置１００が管理する構成情報１３４の内容と実際の構成とが一致しないので、「ネットワーク構成照合異常(スレーブ不一致)」が発生する。
（手順６）
図１９（Ｃ）に示される接続状態で運転を開始するために、スレーブＩＤ設定命令４００が実行される（図１８に示されるユーザプログラム１３２の４行目）。スレーブＩＤ設定命令４００においては、ジャンクションスレーブ２００Ｊを基準として、ポートＸ４に接続されたスレーブ２００−１，２００−２，２００−３，２００−４を対象として特定した上で、スレーブＩＤとして「７」，「８」，「９」，「１０」を設定する。
（手順７）
そして、「ネットワーク構成照合異常(スレーブ不一致)」を解除するために、スレーブ異常解除命令４６０が実行される（図１８に示されるユーザプログラム１３２の５行目）。さらに、スレーブ有効／無効切替命令４５４，４５５，４５６，４５７が実行される（図１８に示されるユーザプログラム１３２の６〜９行目）ことで、構成情報１３４のスレーブ＃７〜＃１０が有効化（Ｅｎａｂｌｅｄ）される（図２０（Ｃ）参照）。これにより、図１７（Ｂ）に示される接続構成での運転が開始される。
【０１６７】
以上のように、本実施の形態に係るスレーブＩＤ設定命令４００および関連する命令が提供されることで、ユーザプログラム１３２を用いて段取り替えを実現できる。
【０１６８】
（ｊ２：再起動）
上述したように、スレーブＩＤ更新オブジェクト２１８が実装されていないスレーブ２００に対してスレーブＩＤを設定した場合には、対象のスレーブ２００を再起動（電源遮断および再投入）する必要がある。このようなスレーブ２００の再起動をオペレータに促すようにユーザプログラム１３２を作成することもできる。
【０１６９】
図２１は、本実施の形態に従うスレーブＩＤ設定命令４００を用いたスレーブ２００の再起動を促すためのユーザプログラム１３２の一例を示す図である。図２１に示されるユーザプログラム１３２においては、スレーブＩＤ設定命令４００からのＳｈｏｕｌｄＲｅｂｏｏｔ４１５の値が「ＳｈｏｕｌｄＲｅｂｏｏｔ」という変数（ブール値）に出力されている。「ＳｈｏｕｌｄＲｅｂｏｏｔ」は、変数「ＲｅｂｏｏｔＲａｍｐＯｎ」という変数（ブール値）の値を決定する。すなわち、変数「ＳｈｏｕｌｄＲｅｂｏｏｔ」が「ｔｒｕｅ」に設定されると、変数「ＲｅｂｏｏｔＲａｍｐＯｎ」も「ｔｒｕｅ」になる。
【０１７０】
変数「ＲｅｂｏｏｔＲａｍｐＯｎ」を設定対象のスレーブ２００に設けられたインジケータ２５０を駆動するための指令として関連付けることで、設定対象のスレーブ２００を再起動しなければならない場合に、オペレータにその旨を提示できる。
【０１７１】
このように、各スレーブ２００の再起動の要否をオペレータに提示できるので、安全に配慮した段取り替えを実現できる。さらに、複数のスレーブ２００が存在する場合には、例えば、再起動（電源の再投入）の順番をオペレータに提示することもできる。
【０１７２】
（ｊ３：異常検知）
上述したように、本実施の形態に従うスレーブＩＤ設定命令４００は、複数のスレーブ２００に対してそれぞれスレーブＩＤを設定する場合において、いずれかのスレーブ２００に対する実行が失敗すると、その失敗したスレーブ２００の位置を特定できる情報を出力する。このような位置を特定できる情報をオペレータに提示するためのユーザプログラム１３２を作成することもできる。
【０１７３】
図２２は、本実施の形態に従うスレーブＩＤ設定命令４００の実行が失敗したときの情報提示を実現するためのユーザプログラム１３２の一例を示す図である。図２２に示すユーザプログラム１３２は、オペレータに対するユーザインターフェイス装置である表示装置５００と関連付けられる。
【０１７４】
より具体的には、スレーブＩＤ設定命令４００からのＦａｉｌｕｒｅＴａｂｌｅ４１６の値（配列）が「ｆａｉｌＡｄｒｓ［４］」という４つのメンバからなる配列に出力されている。図２２に示す例では、スレーブＩＤ設定命令４００は、４つのスレーブ２００に対してスレーブＩＤを設定することが規定されており、この４つのスレーブ２００に対する設定の成否を示す値が変数「ｆａｉｌＡｄｒｓ［４］」に格納される。
【０１７５】
各メンバの値「ｆａｉｌＡｄｒｓ（１）」，「ｆａｉｌＡｄｒｓ（２）」，「ｆａｉｌＡｄｒｓ（３）」，「ｆａｉｌＡｄｒｓ（４）」を表示装置５００上の各スレーブ２００を示す表示オブジェクトに関連付けることができる。表示態様と対応する変数値とを関連付けることで、スレーブＩＤの設定に失敗したスレーブ２００に対応する表示オブジェクトの表示態様（例えば、色など）を他の表示オブジェクトとは異ならせることができる。
【０１７６】
すなわち、表示装置５００は、ＦａｉｌｕｒｅＴａｂｌｅ４１６に格納される値（配列）に基づいて、１つ以上の指定されたスレーブ２００のうちスレーブＩＤの設定が失敗したスレーブ２００の位置を視覚的に提示する。これにより、オペレータは、いずれのスレーブに異常が発生したのかを一見して把握できる。
【０１７７】
さらに別の情報と関連付けることで、何らかの異常が発生したスレーブの位置を特定するとともに、その異常が発生した原因を容易に決定できる。
【０１７８】
＜Ｋ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
制御システム（１）であって、
マスタとして機能する制御装置（１００）と、
前記制御装置とネットワーク接続された複数のスレーブ（２００）とを備え、
前記複数のスレーブの各々は識別情報（２２４）を有しており、
前記制御装置は、前記複数のスレーブのうちいずれかのスレーブが基準として指定された第１の命令（４００）を実行することで、指定された他のスレーブに対して、指定された識別情報を設定する識別情報設定手段（１０２，１２２）を備える、制御システム。
［構成２］
前記制御装置は、前記複数のスレーブの接続状態を管理する管理手段（１２４）をさらに備え、
前記識別情報設定手段により識別情報が設定される他のスレーブは、前記複数のスレーブの接続状態を参照することで、接続されている位置が特定される、構成１に記載の制御システム。
［構成３］
前記第１の命令は、前記他のスレーブが接続されるポートの指定（４２３）を含む、構成１または２に記載の制御システム。
［構成４］
前記第１の命令は、複数の前記他のスレーブに対してそれぞれ識別情報（４０４）を指定可能である、構成１〜３のいずれか１項に記載の制御システム。
［構成５］
前記複数のスレーブの各々は、識別情報を保持するための不揮発性メモリ（２２０）と、設定されている識別情報を保持する揮発性メモリ（２１４）とを備え、
前記識別情報設定手段は、前記他のスレーブの前記不揮発性メモリおよび前記揮発性メモリの両方に、指定された識別情報を書き込む、構成１〜４のいずれか１項に記載の制御システム。
［構成６］
前記第１の命令は、前記制御装置で実行されるユーザプログラム（１３０）の一部として実行される、構成１〜５のいずれか１項に記載の制御システム。
［構成７］
前記識別情報設定手段は、識別情報の設定に失敗したスレーブを特定する情報（４１６）を出力する、構成１〜６のいずれか１項に記載の制御システム。
［構成８］
前記制御装置は、前記複数のスレーブのうちいずれかのスレーブが基準として指定された第２の命令（４２０）を実行することで、指定された他のスレーブに設定されている識別情報を読み出す識別情報読出手段（１０２，１２２）をさらに備える、構成１〜７のいずれか１項に記載の制御システム。
［構成９］
前記制御装置は、前記複数のスレーブの接続構成を定義する構成情報（１３４）を有しており、
前記制御装置は、第３の命令（４５０，４５１，４５２，４５３，４５４，４５５，４５６，４５７）を実行することで、前記構成情報による定義に含まれる一部または全部のスレーブを無効化する無効化手段（１０２，１２２）をさらに備える、構成１〜８のいずれか１項に記載の制御システム。
［構成１０］
マスタとして機能する制御装置（１００）であって、
複数のスレーブ（２００）とネットワーク接続するためのコントローラ（１２０）を備え、前記複数のスレーブの各々は識別情報（２２４）を有しており、
前記複数のスレーブのうちいずれかのスレーブが基準として指定された第１の命令（４００）を実行することで、指定された他のスレーブに対して、指定された識別情報を設定する識別情報設定手段（１０２，１２２）を備える、制御装置。
【０１７９】
＜Ｌ．利点＞
本実施の形態に係る制御システムにおいては、ユーザプログラム上で実行されるスレーブＩＤ設定命令を用いて、任意の未知スレーブに対して任意のスレーブＩＤ（あるいは、ノードアドレス）を設定できる。そのため、段取り替えなどが発生して、同一のスレーブに対して異なるスレーブＩＤを設定しなければならないような状況においても、サポート装置などを用いることなく、ユーザプログラムだけで必要な設定を実現できる。
【０１８０】
また、本実施の形態に係るスレーブＩＤ設定命令は、有効なスレーブＩＤを有している任意のスレーブを基準として、任意の未知スレーブを特定した上で、任意のスレーブＩＤを設定できる。任意のスレーブを基準として任意の未知スレーブを特定する方法を採用したことで、ポジションアドレスなどを意識しなくても、スレーブＩＤの再設定あるいは変更を容易に実現できる。
【０１８１】
また、本実施の形態に係るスレーブＩＤ設定命令は、複数のスレーブに対して、それぞれスレーブＩＤを一括設定できるので、スレーブＩＤの再設定あるいは変更に要する時間を短縮できる。
【０１８２】
また、本実施の形態に係るスレーブＩＤ設定命令は、設定したスレーブＩＤを即時に反映可能なスレーブと、スレーブＩＤの反映に再起動が必要なスレーブとを区別することができる。その上で、再起動が必要なスレーブについては、その情報がスレーブＩＤ設定命令から出力される。そのため、段取り替えなどを担当するオペレータに対する操作支援などを容易に行うことができる。
【０１８３】
また、本実施の形態に従うスレーブＩＤ設定命令は、スレーブＩＤの設定に失敗したスレーブの位置を特定するための情報を出力する。そのため、トラブルシュートを容易化できる。さらに、本実施の形態に従うスレーブＩＤ設定命令は、スレーブＩＤの設定が失敗した理由を示すエラーコードを出力するので、設定に失敗したスレーブの位置と併せて、よりトラブルシュートを容易化できる。
【０１８４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１８５】
１  制御システム、４  ネットワーク、６  内部バス、２０，２２  コンベア、３０，４０，５０  製造モジュール、１００  制御装置、１０２，２１２，３０２  プロセッサ、１０４  チップセット、１０６，２１４，３０４  メインメモリ、１０８，３０６  ストレージ、１１０  ネットワークコントローラ、１１２，３１６  ＵＳＢコントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１１８  内部バスコントローラ、１２０，２０２  フィールドネットワークコントローラ、１２２  命令インターフェイス、１２４  実構成管理コンポーネント、１２６  カウンタ、１２８  ＲＴＣ、１３０  システムプログラム、１３２  ユーザプログラム、１３４  構成情報、１５０  機能ユニット、２００  スレーブ、２００Ｊ  ジャンクションスレーブ、２１０  メインコントローラ、２１６  格納レジスタ、２１８  更新オブジェクト、２２０  不揮発性メモリ、２２４  スレーブＩＤ、２２６  ファームウェア、２３０  機能回路、２５０  インジケータ、３００  サポート装置、３０８  入力部、３１０  表示部、３１２  光学ドライブ、３１４  記録媒体、３１８  プロセッサバス、３２０  ＯＳ、３２６  サポートプログラム、４００  設定命令、４２０  読出命令、４５０，４５１，４５２，４５３，４５４，４５５，４５６，４５７  スレーブ有効／無効切替命令、４６０  スレーブ異常解除命令、５００  表示装置。
【図１】
2020150451.tif 000003
【図２】
2020150451.tif 000004
【図３】
2020150451.tif 000005
【図４】
2020150451.tif 000006
【図５】
2020150451.tif 000007
【図６】
2020150451.tif 000008
【図７】
2020150451.tif 000009
【図８】
2020150451.tif 000010
【図９】
2020150451.tif 000011
【図１０】
2020150451.tif 000012
【図１１】
2020150451.tif 000013
【図１２】
2020150451.tif 000014
【図１３】
2020150451.tif 000015
【図１４】
2020150451.tif 000016
【図１５】
2020150451.tif 000017
【図１６】
2020150451.tif 000018
【図１７】
2020150451.tif 000019
【図１８】
2020150451.tif 000020
【図１９】
2020150451.tif 000021
【図２０】
2020150451.tif 000022
【図２１】
2020150451.tif 000023
【図２２】
2020150451.tif 000024