(57)【要約】【課題】同一のネットワークに接続される任意のコントローラについてパケットデータの損失を防ぐことができる技術を提供する。【解決手段】ＦＡシステムは、複数のコントローラを備える。各コントローラは、バッファと、他のコントローラとパケット通信を行う通信モジュールと、自コントローラで生成されたパケットデータと、自コントローラが受信したパケットデータとをバッファにバッファリングするパケットモニタモジュールと、予め定められた停止条件が満たされたことに基づいて、複数のコントローラの内の指定されているコントローラについて、パケットモニタモジュールのバッファリング機能を停止する停止モジュールとを含む。【選択図】図１
2019159634.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが制御対象の駆動機器を制御する複数のコントローラを備え、
前記複数のコントローラは、それぞれ、
バッファと、
他のコントローラとパケット通信を行うための通信モジュールと、
自コントローラで生成されたパケットデータと、自コントローラが受信したパケットデータとを前記バッファにバッファリングするためのパケットモニタモジュールと、
予め定められた停止条件が満たされたことに基づいて、前記複数のコントローラの内の指定されているコントローラについて、前記パケットモニタモジュールのバッファリング機能を停止するための停止モジュールとを含む、ＦＡ（Factory Automation）システム。
【請求項２】
前記停止モジュールは、バッファリング機能を停止する停止命令を前記他のコントローラから受信したことに基づいて、前記自コントローラにおける前記パケットモニタモジュールのバッファリング機能を停止する、請求項１に記載のＦＡシステム。
【請求項３】
前記パケットデータは、送信元のコントローラを特定するための送信元情報と、送信先のコントローラを特定するための送信先情報とを有し、
前記ＦＡシステムは、前記複数のコントローラと通信可能に構成されている外部機器をさらに備え、
前記外部機器は、
前記複数のコントローラのそれぞれのバッファに格納されているパケットデータを前記複数のコントローラのそれぞれから受信するための通信モジュールと、
前記複数のコントローラのそれぞれから受信したパケットデータの各々について送信元情報と送信先情報とを表示するための表示部とを含む、請求項１または２に記載のＦＡシステム。
【請求項４】
前記表示部は、送信元情報が一致し、かつ送信先情報が一致するパケットデータ同士を対応させて表示する、請求項３に記載のＦＡシステム。
【請求項５】
前記表示部は、送信元情報が一致し、かつ送信先情報が一致する対のパケットデータが存在しないパケットデータを他のパケットデータとは異なる表示態様で表示する、請求項４に記載のＦＡシステム。
【請求項６】
前記複数のコントローラは、それぞれ、
外部記憶装置を接続するためのインターフェイス部と、
予め定められた保存条件が満たされたことに基づいて、前記複数のコントローラの内の指定されているコントローラのバッファに格納されているパケットデータを、それぞれ、当該コントローラに接続されている前記外部記憶装置に格納するための保存モジュールとを含む、請求項１〜５のいずれか１項に記載のＦＡシステム。
【請求項７】
制御対象の駆動機器を制御するコントローラであって、
バッファと、
他のコントローラとパケット通信を行うための通信モジュールと、
前記コントローラで生成されたパケットデータと、前記他のコントローラが受信したパケットデータとを前記バッファにバッファリングするためのパケットモニタモジュールと、
予め定められた停止条件が満たされたことに基づいて、前記コントローラまたは前記他のコントローラの内の指定されているコントローラについて、前記パケットモニタモジュールのバッファリング機能を停止するための停止モジュールとを含む、コントローラ。
【請求項８】
制御対象の駆動機器を制御するコントローラの制御方法であって、
他のコントローラとパケット通信を行うステップと、
前記コントローラで生成されたパケットデータと、前記他のコントローラが受信したパケットデータとを前記コントローラのバッファにバッファリングするステップと、
予め定められた停止条件が満たされたことに基づいて、前記コントローラまたは前記他のコントローラの内の指定されているコントローラについて、前記バッファリングするステップでのバッファリングを停止するステップとを含む、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、任意のコントローラについてパケットデータのバッファリング処理を停止するための技術に関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（Programmable Logic Controller）やロボットコントローラなどの産業用の制御装置（以下、「コントローラ」ともいう。）が導入されている。コントローラが種々の産業用の駆動機器を制御することで、生産工程が自動化される。
【０００３】
コントローラは、ＥｔｈｅｒＣＡＴ（登録商標）などの定周期通信を行うフィールドネットワークを介して駆動機器を制御する。このフィールドネットワークには、パケットデータが伝送され、コントローラおよび駆動機器は、このパケットデータに対してデータを読み書きすることで互いに通信する。
【０００４】
パケットデータは、異常解析などのために、コントローラ内のバッファに保存される。バッファの容量には限りがあるため、バッファが溢れた場合には、バッファ内のいずれかのパケットデータが削除される。異常解析のためには、異常発生直前のパケットデータが重要となる。このようなパケットデータの損失を防ぐための技術に関し、特開２０１１−３５６６４号公報（特許文献１）は、「ＥｔｈｅｒＣＡＴのＦＡシステムにおいて、異常解析を簡単・確実に行えるようにすること」を目的とするコントローラを開示している。当該コントローラは、異常が発生した場合にパケットモニタリング機能を停止することで、重要なパケットデータの削除を防止する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−３５６６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
同一のネットワークに複数のコントローラが接続されることがある。より詳細な解析を行うためには、自コントローラにバッファリングされているパケットデータだけでなく、他のコントローラにバッファリングされているパケットデータも必要となることがある。そのため、同一のネットワークに接続される任意のコントローラについてパケットデータの損失を防ぐことが望まれている。
【０００７】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、同一のネットワークに接続される任意のコントローラについてパケットデータの損失を防ぐことができる技術を提供することである。
【課題を解決するための手段】
【０００８】
本開示の一例では、それぞれが制御対象の駆動機器を制御する複数のコントローラを備える。上記複数のコントローラは、それぞれ、バッファと、他のコントローラとパケット通信を行うための通信モジュールと、自コントローラで生成されたパケットデータと、自コントローラが受信したパケットデータとを上記バッファにバッファリングするためのパケットモニタモジュールと、予め定められた停止条件が満たされたことに基づいて、上記複数のコントローラの内の指定されているコントローラについて、上記パケットモニタモジュールのバッファリング機能を停止するための停止モジュールとを含む。
【０００９】
この開示によれば、各コントローラは、自コントローラにおけるバッファリング機能だけでなく、他のコントローラにおけるバッファリング機能も停止することができる。そのため、自コントローラにバッファリングされたパケットデータの損失を防ぐことができるだけでなく、他のコントローラにバッファリングされたパケットデータの損失を防ぐことができる。
【００１０】
本開示の一例では、上記停止モジュールは、バッファリング機能を停止する停止命令を上記他のコントローラから受信したことに基づいて、上記自コントローラにおける上記パケットモニタモジュールのバッファリング機能を停止する。
【００１１】
この開示によれば、上記停止モジュールは、バッファリング機能の停止命令を他のコントローラに送るだけでなく、他のコントローラからの停止命令を受けて、バッファリング機能を停止させることができる。
【００１２】
本開示の一例では、上記パケットデータは、送信元のコントローラを特定するための送信元情報と、送信先のコントローラを特定するための送信先情報とを有する。上記ＦＡシステムは、上記複数のコントローラと通信可能に構成されている外部機器をさらに備える。上記外部機器は、上記複数のコントローラのそれぞれのバッファに格納されているパケットデータを上記複数のコントローラのそれぞれから受信するための通信モジュールと、上記複数のコントローラのそれぞれから受信したパケットデータの各々について送信元情報と送信先情報とを表示するための表示部とを含む。
【００１３】
この開示によれば、パケットデータの記録は、送信元のコントローラおよび送信先のコントローラの両方に残るので、仮に、対の記録が残っていないコントローラについては、何らかの原因でパケットデータが損失したこととなる。送信元情報と送信先情報とが各パケットデータについて表示されることで、ユーザは、どのパケットデータがどのコントローラで損失したのかを容易に把握することができる。
【００１４】
本開示の一例では、上記表示部は、送信元情報が一致し、かつ送信先情報が一致するパケットデータ同士を対応させて表示する。
【００１５】
この開示によれば、ユーザは、どのパケットデータがどのコントローラで損失したのかをより簡単に発見することができ。
【００１６】
本開示の一例では、上記表示部は、送信元情報が一致し、かつ送信先情報が一致する対のパケットデータが存在しないパケットデータを他のパケットデータとは異なる表示態様で表示する。
【００１７】
この開示によれば、ユーザは、どのパケットデータが損失したのかを即座に発見することができる。
【００１８】
本開示の一例では、上記複数のコントローラは、それぞれ、外部記憶装置を接続するためのインターフェイス部と、予め定められた保存条件が満たされたことに基づいて、上記複数のコントローラの内の指定されているコントローラのバッファに格納されているパケットデータを、それぞれ、当該コントローラに接続されている上記外部記憶装置に格納するための保存モジュールとを含む。
【００１９】
この開示によれば、各コントローラは、バッファリングされたパケットデータを外部記憶装置に保存することができ、バッファリングされたパケットデータの損失を防ぐことができる。
【００２０】
本開示の一例では、制御対象の駆動機器を制御するコントローラは、バッファと、他のコントローラとパケット通信を行うための通信モジュールと、上記コントローラで生成されたパケットデータと、上記他のコントローラが受信したパケットデータとを上記バッファにバッファリングするためのパケットモニタモジュールと、予め定められた停止条件が満たされたことに基づいて、上記コントローラまたは上記他のコントローラの内の指定されているコントローラについて、上記パケットモニタモジュールのバッファリング機能を停止するための停止モジュールとを含む。
【００２１】
この開示によれば、各コントローラは、自コントローラにおけるバッファリング機能だけでなく、他のコントローラにおけるバッファリング機能も停止することができる。そのため、自コントローラにバッファリングされたパケットデータの損失を防ぐことができるだけでなく、他のコントローラにバッファリングされたパケットデータの損失を防ぐことができる。
【００２２】
本開示の一例では、制御対象の駆動機器を制御するコントローラの制御方法は、他のコントローラとパケット通信を行うステップと、上記コントローラで生成されたパケットデータと、上記他のコントローラが受信したパケットデータとを上記コントローラのバッファにバッファリングするステップと、予め定められた停止条件が満たされたことに基づいて、上記コントローラまたは上記他のコントローラの内の指定されているコントローラについて、上記バッファリングするステップでのバッファリングを停止するステップとを含む。
【００２３】
この開示によれば、各コントローラは、自コントローラにおけるバッファリング機能だけでなく、他のコントローラにおけるバッファリング機能も停止することができる。そのため、自コントローラにバッファリングされたパケットデータの損失を防ぐことができるだけでなく、他のコントローラにバッファリングされたパケットデータの損失を防ぐことができる。
【図面の簡単な説明】
【００２４】
【図１】実施の形態に従うＦＡシステムの概略を示す図である。
【図２】実施の形態に従うＦＡシステムの装置構成を概略的に示す模式図である。
【図３】パケットモニタモジュールに対する設定処理の流れを示すシーケンス図である。
【図４】開発ツールが提供するユーザインターフェイスの一例であるプログラム作成画面を示す図である。
【図５】開発ツールが提供するユーザインターフェイスの一例である設定画面を示す図である。
【図６】停止条件が満たされた場合におけるコントローラ間のデータの流れを示すシーケンス図である。
【図７】停止条件が満たされた場合におけるコントローラの動作態様を概略的に示す概念図である。
【図８】バッファリングされたパケットデータを各コントローラから収集する処理の流れを示すシーケンス図である。
【図９】開発ツールが提供するユーザインターフェイスの一例であるイベントログ画面を示す図である。
【図１０】開発ツールが提供するユーザインターフェイスの一例である確認画面を示す図である。
【図１１】開発ツールが提供するユーザインターフェイスの一例であるパケットデータの収集結果画面を示す図である。
【図１２】変形例に従う収集結果画面を示す図である。
【図１３】パケットデータの保存機能が実行された場合における制御フローを示すシーケンス図である。
【図１４】パケットモニタモジュールによるバッファリング処理の開始機能が実行された場合における制御フローを示すシーケンス図である。
【図１５】実施の形態に従うコントローラのハードウェア構成の一例を示す模式図である。
【図１６】実施の形態に従う開発支援装置のハードウェア構成を示す模式図である。
【図１７】実施の形態に従うコントローラおよび開発支援装置の機能構成の一例を示す図である。
【図１８】パケットモニタモジュールに対する設定を行うためのＣＩＰ（Common Industrial Protocol）パラメータを示す図である。
【図１９】パケットモニタモジュールの実行命令を指定するためのＣＩＰパラメータを示す図である。
【図２０】パケットモニタモジュールの現状態を取得するためのＣＩＰパラメータを示す図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
【００２６】
＜Ａ．適用例＞
図１を参照して、本発明の適用例について説明する。図１は、ＦＡシステム１０の概略を示す図である。
【００２７】
ＦＡシステム１０は、設備および装置などの制御対象を制御し、生産工程を自動化するためのシステムである。ＦＡシステム１０は、複数のコントローラを含む。図１には、複数のコントローラの例として、２つのコントローラ１００Ａ，１００Ｂが示されている。以下では、複数のコントローラを総称してコントローラ１００ともいう。
【００２８】
コントローラ１００Ａ、１００Ｂは、同一のネットワークＮ１に接続され得る。ネットワークＮ１には、たとえば、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）などが採用される。
【００２９】
コントローラ１００Ａ、１００Ｂは、それぞれ、バッファ１５０と、通信モジュール１５２、パケットモニタモジュール１５４と、停止モジュール１５６とを含む。
【００３０】
バッファ１５０は、たとえば、コントローラ１００内における揮発性の記憶領域である。一例として、バッファ１５０は、ＲＡＭ（Random Access Memory）やキャッシュメモリなどの記憶領域である。
【００３１】
通信モジュール１５２は、パケット通信により他の通信装置との通信を実現するための機能モジュールである。「他の通信装置」とは、自コントローラを除く、任意の通信装置を含む概念である。たとえば、他の通信装置は、他のコントローラや、自コントローラによる制御対象の駆動機器３００（図２参照）や、コントローラに接続されるサーバなどの情報処理端末を含む。
【００３２】
パケットモニタモジュール１５４は、送受信されるパケットデータをキャプチャリングするための機能モジュールである。より具体的には、パケットモニタモジュール１５４は、他の通信装置に送信するために自コントローラで生成されたパケットデータと、自コントローラが他の通信装置から受信したパケットデータとをバッファ１５０に順次バッファリングする。バッファ１５０のサイズは、制限されており、パケットモニタモジュール１５４は、たとえば、ＦＩＦＯ（First In First Out）形式またはＬＩＦＯ（Last In First Out）形式でバッファ１５０を管理する。
【００３３】
「パケットデータ」とは、コントローラ１００を伝送される一定サイズの任意の通信データを含む概念である。一例として、パケットデータは、ＥｔｈｅｒＮｅｔ／ＩＰの通信プロトコルに従って生成された通信データや、ＥｔｈｅｒＮＥＴ（登録商標）の通信プロトコルに従って生成された通信データや、ＥｔｈｅｒＣＡＴの通信プロトコルに従って生成された通信データや、ＣｏｍｐｏＮｅｔ（登録商標）の通信プロトコルに従って生成された通信データや、ＯＰＣ−ＵＡ（Object Linking and Embedding for Process Control Unified Architecture）の通信プロトコルに従って生成された通信データなどを含む。
【００３４】
停止モジュール１５６は、パケットモニタモジュール１５４によるパケットデータのバッファリング機能を停止するための機能モジュールである。より具体的には、停止モジュール１５６は、予め定められた停止条件１０８が満たされたことに基づいて、ネットワークＮ１に接続されているコントローラの内の指定されているコントローラについて、パケットモニタモジュール１５４のバッファリング機能を停止する。停止条件１０８は、たとえば、自コントローラにエラーが発生したことに基づいて満たされる。停止条件１０８の詳細については後述する。
【００３５】
自コントローラが停止対象として指定されている場合には、停止モジュール１５６は、バッファリング機能を停止するための停止命令を自コントローラのパケットモニタモジュール１５４に出力する。パケットモニタモジュール１５４は、当該停止命令を受け付けたことに基づいて、パケットデータのバッファリング処理を停止する。
【００３６】
一方で、他のコントローラが停止対象として指定されている場合には、停止モジュール１５６は、バッファリング機能の停止命令を生成し、通信モジュール１５２を介して当該停止命令を他のコントローラに送信する。当該停止命令を受信した他のコントローラは、パケットデータのバッファリング機能を停止する。
【００３７】
バッファ１５０の容量は、限られているため、バッファ１５０が溢れた場合には、バッファ１５０内のいずれかのパケットデータが削除される。本実施の形態に従うＦＡシステム１０は、自コントローラにおけるバッファリング機能だけでなく、他のコントローラにおけるバッファリング機能も停止することができる。これにより、自コントローラにバッファリングされたパケットデータの損失を防ぐことができるだけでなく、他のコントローラにバッファリングされたパケットデータの損失を防ぐことができる。
【００３８】
＜Ｂ．ＦＡシステム１０の装置構成＞
図２を参照して、ＦＡシステム１０の装置構成の一例について説明する。図２は、ＦＡシステム１０の装置構成を概略的に示す模式図である。
【００３９】
ＦＡシステム１０は、１つ以上のコントローラ１００と、１つ以上の開発支援装置２００と、１つ以上の駆動機器３００とを含む。図２の例では、３つのコントローラ１００Ａ〜１００Ｃと、１つの開発支援装置２００とが示されている。
【００４０】
コントローラ１００は、複数の物理的な通信ポートを有する。それぞれの通信ポートには異なるネットワークが接続され得る。図２の例では、コントローラ１００は、２つの通信ポートＰ１，Ｐ２を有する。通信ポートＰ１には、ネットワークＮ１が接続されている。通信ポートＰ２には、ネットワークＮ２が接続されている。
【００４１】
コントローラ１００および開発支援装置２００は、ハブ９０を介してネットワークＮ１に接続されている。他にも、ネットワークＮ１には、任意の情報処理装置が接続され得る。一例として、ネットワークＮ１には、ＨＭＩ（Human Machine Interface）などの表示器やサーバ装置などが接続され得る。
【００４２】
開発支援装置２００は、たとえば、ノート型ＰＣ（Personal Computer）、デスクトップ型ＰＣ、タブレット端末、または、スマートフォンなどである。開発支援装置２００には、開発ツール３０がインストールされ得る。開発ツール３０は、コントローラ１００用の制御プログラムの開発を支援するためのアプリケーションである。一例として、開発ツール３０は、オムロン社製の「Ｓｙｓｍａｃ  Ｓｔｕｄｉｏ」である。ユーザは、開発ツール３０上でコントローラ１００用の制御プログラムを設計し、設計した制御プログラムをコントローラ１００にインストールすることができる。作成された制御プログラムは、開発支援装置２００によってコンパイルされた実行形式のファイルとしてコントローラ１００に送られる。
【００４３】
下位のネットワークＮ２には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、ＥｔｈｅｒＣＡＴ、ＣｏｍｐｏＮｅｔなどが知られている。コントローラ１００は、開発支援装置２００上で作成された制御プログラムに従って制御対象の駆動機器３００を制御する。
【００４４】
駆動機器３００は、直接的または間接的にワークに対して所定の作業を行うための機器の集合である。図２の例では、駆動機器３００は、ロボットコントローラ３００Ａや、サーボドライバ３００Ｂや、ロボットコントローラ３００Ａに制御されるアームロボット３０１Ａや、サーボドライバ３００Ｂによって制御されるサーボモータ３０１Ｂなどを含む。また、駆動機器３００は、ワークを撮影するための視覚センサや、生産工程で利用されるその他の機器などを含んでもよい。
【００４５】
＜Ｃ．ＦＡシステム１０の機能＞
典型的には、ＦＡシステム１０は、以下の設定機能Ａ〜Ｃを有する。
【００４６】
（機能Ａ）パケットモニタモジュール１５４（図１参照）に関する各種設定を開発支援装置２００が受け付ける機能。
【００４７】
（機能Ｂ）上記機能（ａ）で受け付けた設定に従って各コントローラが自コントローラおよび他のコントローラのパケットモニタモジュール１５４の動作態様を切り替える機能。
【００４８】
（機能Ｃ）各コントローラのパケットモニタモジュール１５４によりバッファリングされたパケットデータを開発支援装置２００が収集する機能。
【００４９】
典型的な使用例では、これらの機能Ａ〜Ｃが順に実行される。以下では、これらの上記機能Ａ〜Ｃについて順に説明する。
【００５０】
［Ｃ１．設定機能］
まず、図３〜図５を参照して、ＦＡシステム１０の上記機能Ａについて説明する。図３は、パケットモニタモジュール１５４（図１参照）に対する設定処理の流れを示すシーケンス図である。
【００５１】
ステップＳ１０において、開発支援装置２００は、開発ツール３０の起動操作を受け付けたとする。このことに基づいて、開発支援装置２００は、プログラム作成画面を表示する。図４は、開発ツール３０が提供するユーザインターフェイスの一例であるプログラム作成画面３１を示す図である。プログラム作成画面３１は、たとえば、開発支援装置２００の表示部２２１に表示される。
【００５２】
ユーザは、プログラム作成画面３１上でコントローラ１００用の制御プログラムを開発することができる。図４には、コントローラ１００用の制御プログラムの一例であるユーザプログラム２１０が示されている。ユーザプログラム２１０は、任意のプログラミング言語で記述され得る。一例として、ユーザプログラム２１０は、ラダーダイアグラム（ＬＤ：Ladder Diagram）で規定されてもよいし、命令リスト（ＩＬ：Instruction List）、構造化テキスト（ＳＴ：Structured Text）、および、シーケンシャルファンクションチャート（ＳＦＣ：Sequential Function Chart）のいずれか、あるいは、これらの組み合わせで規定される。あるいは、ユーザプログラム２１０は、ＪａｖａＳｃｒｉｐｔ（登録商標）やＣ言語のような汎用的なプログラミング言語で規定されていてもよい。
【００５３】
図４の例では、ユーザプログラム２１０は、ラダーダイアグラムで記述されている。設計者は、プログラム作成画面３１上で、任意のファンクションブロックを組み合わせたり、変数やファンクションブロックの入出力関係を規定することで、制御対象の駆動機器３００に合わせたユーザプログラム２１０を設計することができる。ファンクションブロックとは、ユーザプログラム２１０内で繰り返し使用される機能が部品化されたものである。
【００５４】
図４の例では、ユーザプログラム２１０は、変数「Ａ」〜「Ｃ」と、ファンクションブロックＦＢ１，ＦＢ２とを含む。ファンクションブロックＦＡ１は、その入力部に関連付けられている変数「Ａ」の値に基づいて、ファンクションブロックＦＢ１に規定されている予め定められた機能を実行する。当該実行結果は、ファンクションブロックＦＡ１の出力部に関連付けられている変数「Ｂ」に反映される。ファンクションブロックＦＢ２は、その入力部に関連付けられている変数「Ｂ」の値に基づいて、ファンクションブロックＦＢ２に規定されている予め定められた機能を実行する。当該実行結果は、ファンクションブロックＦＡ２の出力部に関連付けられている変数「Ｃ」に反映される。このように、設計者は、プログラム作成画面３１上で、変数やファンクションブロックを組み合わせることで、任意のユーザプログラム２１０を設計することができる。
【００５５】
開発ツール３０は、種々のファンクションブロックを提供する。一例として、パケットデータのバッファリング機能を停止するための上述の停止モジュール１５６（図１参照）がファンクションブロックとして提供される。他にも、パケットデータのバッファリング機能の実行を開始するための開始モジュールがファンクションブロックとして提供される。他にも、バッファ１５０にバッファリングされたパケットデータを外部記憶装置（たとえば、メモリカードなど）に保存するための保存モジュールがファンクションブロックとして提供される。
【００５６】
再び図３を参照して、ステップＳ１２において、開発ツール３０は、パケットモニタモジュール１５４（図１参照）に関する各種設定を行うための設定画面を呼び出したとする。このことに基づいて、設定画面が開発支援装置２００の表示部２２１に表示される。
【００５７】
図５は、開発ツール３０が提供するユーザインターフェイスの一例である設定画面３３を示す図である。設定画面３３は、パケットモニタモジュール１５４に関する各種設定を受け付けるユーザインターフェイスである。
【００５８】
図５に示されるように、設定画面３３は、設定欄４１，４２，４５，４７と、保存ボタン５０と、キャンセルボタン５１とを含む。設定画面３３に入力された設定によって、パケットデータのバッファリング処理の開始条件や、パケットデータのバッファリング処理の停止条件や、パケットデータの保存条件や、パケットデータの転送条件などが設定される。
【００５９】
より具体的には、設定欄４１は、パケットモニタモジュール１５４の動作態様を指定するための設定を受け付ける。指定可能な動作態様としては、たとえば、「開始」、「停止」、「保存」、「転送」などが挙げられる。一例として、ボタン４１Ａが押下されたことに基づいて、指定可能な動作対象が一覧表示される。ユーザは、表示された動作態様の一覧から一の動作態様を選択することで、パケットモニタモジュール１５４の動作態様を指定することができる。
【００６０】
設定欄４２は、実行条件を指定するための設定を受け付ける。設定欄４２には、たとえば、コントローラ１００内で発生し得るイベントログのエラー種別や、パケットデータによって示されるエラー種別などが指定され得る。典型的には、設定欄４２で指定可能な実行条件の候補は、予め規定されている。たとえば、ボタン４２Ａが押下されたことに基づいて、指定可能な実行条件の候補が一覧表示される。ユーザは、表示された実行条件の候補の一覧から一の実行条件を選択することで、実行条件を指定することができる。
【００６１】
以下では、設定欄４１に「開始」が指定されている実行条件を「開始条件」ともいう。設定欄４１に「停止」が指定されている実行条件を「停止条件」ともいう。設定欄４１に「保存」が指定されている実行条件を「保存条件」ともいう。設定欄４１に「転送」が指定されている実行条件を「転送条件」ともいう。
【００６２】
設定欄４５は、命令対象のコントローラを指定するための設定を受け付ける。命令対象のコントローラは、予め定められた候補の中から選択されてもよいし、コントローラの識別情報（たとえば、コントローラ名やＩＰアドレスなど）の入力により指定されてもよい。一例として、ボタン４５Ａが押下されたことに基づいて、命令対象として指定可能なコントローラの候補が一覧表示される。ユーザは、表示されたコントローラの候補の一覧から一のコントローラを選択することで、命令対象のコントローラを指定することができる。
【００６３】
コントローラ１００は、設定欄４２で指定された実行条件が満たされたことに基づいて、設定欄４５で指定されたコントローラのパケットモニタモジュール１５４を、設定欄４１で指定された動作態様で動作させる。
【００６４】
一例として、開始条件が満たされた場合には、コントローラ１００は、当該開始条件に対応付けられている命令対象のコントローラについてパケットモニタモジュール１５４の実行を開始させる。
【００６５】
停止条件が満たされた場合には、コントローラ１００は、当該停止条件に対応付けられている命令対象のコントローラについてパケットモニタモジュール１５４を停止させる。当該停止条件は、上述の停止条件１０８（図１参照）に対応する。
【００６６】
保存条件が満たされた場合には、コントローラ１００は、当該停止条件に対応付けられている命令対象のコントローラについてバッファリングされているパケットデータを自コントローラに保存させる。
【００６７】
転送条件が満たされた場合には、コントローラ１００は、当該転送条件に対応付けられている命令対象のコントローラについてバッファリングされているパケットデータを指定された送信先に転送させる。
【００６８】
設定欄４７は、報知機能のＯＮ／ＯＦＦを指定するための設定を受け付ける。設定欄４７においてＯＮが指定された場合には、設定欄４２で指定された実行条件が満たされたときに、エラーの発生が報知される。エラーの発生は、警告音などの音によって報知されてもよいし、メッセージなどの表示によって報知されてもよい。設定欄４７においてＯＦＦが指定された場合には、設定欄４２で指定された実行条件が満たされたときであっても、エラーの発生が報知されない。
【００６９】
保存ボタン５０が押下された場合には、開発支援装置２００は、設定画面３３に入力された設定情報２１２を保存する。設定画面３３のキャンセルボタン５１が押下された場合には、開発支援装置２００は、設定画面３３に入力された設定情報２１２を保存せずに設定画面３３を閉じる。
【００７０】
再び図２を参照して、ステップＳ１４において、開発ツール３０は、コンパイル操作を受け付けたとする。このことに基づいて、開発ツール３０は、プログラム作成画面３１上で作成されたユーザプログラム２１０をコンパイルする。その後、開発ツール３０は、コンパイル結果のダウンロード操作を受け付けたとする。このことに基づいて、開発ツール３０は、コンパイルされたユーザプログラム２１０とともに、ステップＳ１２で保存された設定情報２１２をコントローラ１００に転送する。コントローラ１００は、受信したユーザプログラム２１０と設定情報２１２とを内部の記憶装置に保存する。
【００７１】
［Ｃ２．パケットモニタモジュール１５４の停止機能］
次に、図６および図７を参照して、ＦＡシステム１０の上記機能Ｂの一例について説明する。図６は、停止条件１０８が満たされた場合におけるコントローラ１００Ａ〜１００Ｃ間のデータの流れを示すシーケンス図である。図７は、停止条件１０８が満たされた場合におけるコントローラ１００Ａ〜１００Ｃの動作態様を概略的に示す概念図である。
【００７２】
図６に示されるステップ番号と、図７に示されるステップ番号とは、互いに対応している。
【００７３】
ステップＳ３０Ａにおいて、コントローラ１００Ａが起動されたとする。このことに基づいて、コントローラ１００Ａは、パケットモニタモジュール１５４によるパケットモニタリング機能の実行を開始する。
【００７４】
ステップＳ３０Ｂにおいて、コントローラ１００Ｂが起動されたとする。このことに基づいて、コントローラ１００Ｂは、パケットモニタモジュール１５４によるパケットモニタリング機能の実行を開始する。
【００７５】
ステップＳ３０Ｃにおいて、コントローラ１００Ｃが起動されたとする。このことに基づいて、コントローラ１００Ｃは、パケットモニタモジュール１５４によるパケットモニタリング機能の実行を開始する。
【００７６】
ステップＳ３１Ａにおいて、コントローラ１００Ａは、自コントローラに格納されているユーザプログラム２１０の実行命令を受け付けたとする。このことに基づいて、コントローラ１００Ａは、ユーザプログラム２１０の実行を開始する。
【００７７】
ステップＳ３１Ｂにおいて、コントローラ１００Ｂは、自コントローラに格納されているユーザプログラム２１０の実行命令を受け付けたとする。このことに基づいて、コントローラ１００Ｂは、ユーザプログラム２１０の実行を開始する。
【００７８】
ステップＳ３１Ｃにおいて、コントローラ１００Ｃは、自コントローラに格納されているユーザプログラム２１０の実行命令を受け付けたとする。このことに基づいて、コントローラ１００Ｃは、ユーザプログラム２１０の実行を開始する。
【００７９】
ステップＳ３２において、コントローラ１００Ａは、設定情報２１２に規定されている実行条件のいずれかが満たされたか否かを判断する。たとえば、実行条件の一例である停止条件が満たされたとする。この場合（ステップＳ３２においてＹＥＳ）、コントローラ１００Ａは、制御をステップＳ３４に切り替える。コントローラ１００Ａは、設定情報２１２に規定されている実行条件のいずれも満たされていないと判断した場合（ステップＳ３２においてＮＯ）、ステップＳ３２の処理を再び実行する。
【００８０】
一例として、命令対象のコントローラとして、コントローラ１００Ａ〜１００Ｃが指定されていたとする。この場合、コントローラ１００Ａは、自コントローラにおけるパケットデータのバッファリング処理と、他のコントローラ１００Ｂ，１００Ｃにおけるパケットデータのバッファリング処理とを停止する。
【００８１】
より具体的には、ステップＳ３４において、コントローラ１００Ａの停止モジュール１５６は、自コントローラにおけるパケットモニタモジュール１５４についてバッファリング機能を停止する。これにより、コントローラ１００Ａのバッファ１５０へのパケットデータの蓄積が停止される。
【００８２】
ステップＳ３６において、コントローラ１００Ａの停止モジュール１５６は、バッファリング機能の停止命令を生成し、当該停止命令を他のコントローラ１００Ｂ，１００Ｃに送信する。コントローラ１００Ｂの停止モジュール１５６は、コントローラ１００Ａから停止命令を受信したことに基づいて、コントローラ１００Ｂのパケットモニタモジュール１５４のバッファリング機能を停止する。これにより、コントローラ１００Ｂのバッファ１５０へのパケットデータの蓄積が停止される。同様に、コントローラ１００Ｃの停止モジュール１５６は、コントローラ１００Ａから停止命令を受信したことに基づいて、コントローラ１００Ｃのパケットモニタモジュール１５４のバッファリング機能を停止する。これにより、コントローラ１００Ｃのバッファ１５０へのパケットデータの蓄積が停止される。
【００８３】
このように、コントローラ１００は、予め定められた停止条件が満たされたことに基づいて、自コントローラと他のコントローラとのバッファリング機能を停止する機能を有する。好ましくは、自コントローラおよび他のコントローラのバッファリング機能は、同時または略同時に停止される。これにより、各コントローラは、同期間内にバッファリングされたパケットデータをバッファ１５０に残すことができる。
【００８４】
［Ｃ３．パケットデータの収集処理］
次に、図８〜図１１を参照して、ＦＡシステム１０の上記機能Ｃについて説明する。図８は、バッファリングされたパケットデータを各コントローラから収集する処理の流れを示すシーケンス図である。
【００８５】
ステップＳ５０において、開発支援装置２００は、イベントログ画面の表示操作を受け付けたとする。このことに基づいて、開発支援装置２００は、イベントログ画面を表示する。図９は、開発ツール３０が提供するユーザインターフェイスの一例であるイベントログ画面３５を示す図である。イベントログ画面３５は、たとえば、開発支援装置２００の表示部２２１に表示される。
【００８６】
開発支援装置２００は、各コントローラ１００から収集したイベントログをイベントログ画面３５に表示する。イベントログ画面３５は、表示欄６０〜６５を有する。表示欄６０には、発生しているエラーの重要度が表示される。表示欄６１には、エラーが発生した通信プロトコルが表示される。表示欄６２には、エラーの発生源の通信ポートが表示される。表示欄６３には、イベント名が表示される。表示欄６４には、イベントコードが表示される。表示欄６５には、詳細ボタンが表示される。
【００８７】
再び図８を参照して、ステップＳ５２において、開発支援装置２００は、表示欄６５に表示される詳細ボタンのいずれかが押下されたことに基づいて、パケット収集を開始するか否か受け付けるための確認画面を表示する。図１０は、確認画面の一例を示す図である。
【００８８】
図１０には、確認画面の一例として確認画面７０が示されている。確認画面７０は、「はい」を示すボタン７１と、「いいえ」を示すボタン７２とを有する。「はい」を示すボタン７１が押下された場合、開発支援装置２００は、各コントローラ１００におけるパケットデータの収集を開始する。「いいえ」を示すボタン７２が押下された場合、開発支援装置２００は、何もせずに確認画面７０を閉じる。
【００８９】
再び図８を参照して、ステップＳ６０において、開発支援装置２００は、確認画面７０における「はい」を示すボタン７１が押下されたことに基づいて、指定されたコントローラ１００Ａ〜１００Ｃのそれぞれにパケットデータの取得要求を送信する。
【００９０】
ステップＳ６２において、コントローラ１００Ａ〜１００Ｃは、それぞれ、自コントローラのバッファ１５０（図１参照）に格納されているパケットデータを取得し、当該パケットデータを開発支援装置２００に送信する。
【００９１】
ステップＳ７０において、開発支援装置２００は、コントローラ１００Ａ〜１００Ｃのそれぞれから収集したパケットデータの収集結果を表示する。図１１は、開発ツール３０が提供するユーザインターフェイスの一例であるパケットデータの収集結果画面３７Ａを示す図である。
【００９２】
ＥｔｈｅｒＣＡＴ、ＥｔｈｅｒＣＡＴ、ＥｔｈｅｒＮｅｔ／ＩＰなどに従うパケットデータは、ＥｔｈｅｒＮＥＴヘッダを含む。このＥｔｈｅｒＮＥＴヘッダは、送信元のコントローラを特定するための送信元情報（たとえば、ＩＰアドレス）と、送信先のコントローラを特定するための送信先情報（たとえば、ＩＰアドレス）とを含む。他にも、当該パケットデータは、送信先のポート番号などの情報を含む。
【００９３】
収集結果画面３７Ａは、パケットデータに規定されている情報に基づいて、収集された各パケットデータについて送信元のＩＰアドレスと送信先のＩＰアドレスとを表示する。パケットデータの記録は、送信元のコントローラおよび送信先のコントローラの両方に残るので、仮に、対の記録が残っていないコントローラについては、何らかの原因でパケットデータが損失したこととなる。送信元のＩＰアドレスと送信先のＩＰアドレスとが各パケットデータについて表示されることで、ユーザは、どのパケットデータがどのコントローラで損失したのかを容易に把握することができ、通信エラーの解析が容易になる。
【００９４】
好ましくは、収集結果画面３７Ａは、送信元情報が一致し、かつ送信先情報が一致するパケットデータ同士を対応させて表示する。図１１の例では、これらのパケットデータ同士が一列に並べて表示されている。たとえば、破線部分８１に示されるように、ＩＰアドレス「Ａ」のコントローラ１００ＡからＩＰアドレス「Ｂ」のコントローラ１００Ｂに送信されたパケットデータの記録は、コントローラ１００Ａおよびコントローラ１００Ｂの両方に残っている。開発支援装置２００は、コントローラ１００Ａおよびコントローラ１００Ｂのそれぞれから収集したこれらの対応するパケットデータを並べて表示する。これにより、ユーザは、どのパケットデータがどのコントローラで損失したのかをより簡単に発見することができ、通信エラーの解析がさらに容易になる。
【００９５】
好ましくは、収集結果画面３７Ａは、送信元情報が一致し、かつ送信先情報が一致する対のパケットデータが存在しないパケットデータを他のパケットデータとは異なる表示態様で表示する。すなわち、対のパケットデータが存在しないパケットデータが強調表示される。強調表示は、たとえば、ハッチング表示、特定色（たとえば、赤色）での表示、点滅表示などで実現される。図１１の例では、強調表示がハッチング表示で実現されている（破線部分８２，８３）。対のパケットデータが存在しないパケットデータが強調表示されることで、ユーザは、どのパケットデータが損失したのかを即座に発見することができる。
【００９６】
なお、パケットデータの収集結果画面３７Ａは、図１１の例に限定されない。図１２は、収集結果画面３７Ａの変形例である収集結果画面３７Ｂを示す図である。図１２に示されるように、収集結果画面３７Ｂは、検索条件の入力領域８５と、検索結果の表示領域８６とを有する。
【００９７】
検索条件の入力領域８５は、パケットデータを検索するための種々の条件を受け付ける。一例として、入力領域８５は、コントローラの識別情報を検索条件として受け付ける。なお、入力領域８５で指定可能な検索条件は、コントローラの識別情報に限定されない。一例として、検索条件として、通信プロトコル、ポート番号などが入力されてもよい。
【００９８】
検索条件が入力領域８５に入力されたことに基づいて、開発支援装置２００は、収集したパケットデータの中から、指定された検索条件に合致するパケットデータを検索し、指定された検索条件に合致するパケットデータを検索結果の表示領域８６に一覧表示する。検索結果として、たとえば、送信元のコントローラのＩＰアドレスと、送信先のコントローラのＩＰアドレスと、通信時に利用された通信プロトコルと、送信先のポート番号と、備考とが表示される。
【００９９】
＜Ｄ．パケットデータの保存機能＞
図１３を参照して、バッファリングされたパケットデータを保存するための保存機能について説明する。図１３は、パケットデータの保存機能が実行された場合における制御フローを示すシーケンス図である。
【０１００】
ステップＳ８０において、コントローラ１００Ａは、設定情報２１２（図５参照）に規定されている保存条件が満たされたか否かを判断する。コントローラ１００Ａは、設定情報２１２に規定されている保存条件が満たされたと判断した場合（ステップＳ８０においてＹＥＳ）、制御をステップＳ８２に切り替える。そうでない場合には（ステップＳ８０においてＮＯ）、ステップＳ８０の処理を再び実行する。
【０１０１】
設定情報２１２に規定されている保存条件には、命令対象のコントローラが対応付けられている。一例として、命令対象のコントローラとして、コントローラ１００Ａ〜１００Ｃが対応付けられていたとする。この場合、コントローラ１００Ａは、自コントローラにバッファリングされたパケットデータの保存処理と、他のコントローラ１００Ｂ，１００Ｃにバッファリングされたパケットデータの保存処理とを実行する。
【０１０２】
より具体的には、ステップＳ８２において、コントローラ１００Ａは、自コントローラのバッファ１５０にバッファリングされているパケットデータを外部記憶装置（たとえば、後述のメモリカード１４０）に保存する。これにより、コントローラ１００Ａにおけるパケットデータがログデータとして保存される。
【０１０３】
ステップＳ８４において、コントローラ１００Ａは、パケットデータの保存命令を生成し、当該保存命令を他のコントローラ１００Ｂ，１００Ｃに送信する。コントローラ１００Ｂは、コントローラ１００Ａから保存命令を受信したことに基づいて、コントローラ１００Ｂのバッファ１５０にバッファリングされているパケットデータを外部記憶装置（たとえば、後述のメモリカード１４０）に保存する。これにより、コントローラ１００Ｂにおけるパケットデータが外部記憶装置に残される。同様に、コントローラ１００Ｃは、コントローラ１００Ａから保存命令を受信したことに基づいて、コントローラ１００Ｃのバッファ１５０にバッファリングされているパケットデータを外部記憶装置（たとえば、後述のメモリカード１４０）に保存する。これにより、コントローラ１００Ｃにおけるパケットデータが外部記憶装置に保存される。
【０１０４】
＜Ｅ．バッファリング処理の開始機能＞
図１４を参照して、パケットモニタモジュール１５４にバッファリング処理を開始させるための開始機能について説明する。図１４は、パケットモニタモジュール１５４によるバッファリング処理の開始機能が実行された場合における制御フローを示すシーケンス図である。
【０１０５】
ステップＳ９０において、コントローラ１００Ａは、設定情報２１２（図５参照）に規定されている開始条件が満たされたか否かを判断する。コントローラ１００Ａは、設定情報２１２に規定されている開始条件が満たされたと判断した場合（ステップＳ９０においてＹＥＳ）、制御をステップＳ９２に切り替える。そうでない場合には（ステップＳ９０においてＮＯ）、ステップＳ９０の処理を再び実行する。
【０１０６】
設定情報２１２に規定されている開始条件には、命令対象のコントローラが対応付けられている。一例として、命令対象のコントローラとして、コントローラ１００Ａ〜１００Ｃが対応付けられていたとする。この場合、コントローラ１００Ａは、自コントローラにおけるパケットデータのバッファリング処理をと、他のコントローラ１００Ｂ，１００Ｃにおけるパケットデータのバッファリング処理とを開始する。
【０１０７】
より具体的には、ステップＳ９２において、コントローラ１００Ａは、自コントローラにおけるパケットモニタモジュール１５４にバッファリング機能を開始させる。これにより、自コントローラのバッファ１５０へのパケットデータのバッファリング処理が開始される。
【０１０８】
ステップＳ９４において、コントローラ１００Ａは、バッファリング機能の開始命令を生成し、当該開始命令を他のコントローラ１００Ｂ，１００Ｃに送信する。コントローラ１００Ｂは、コントローラ１００Ａから開始命令を受信したことに基づいて、コントローラ１００Ｂのパケットモニタモジュール１５４にバッファリング機能を開始させる。これにより、コントローラ１００Ｂのバッファ１５０へのパケットデータの蓄積が開始される。同様に、コントローラ１００Ｃは、コントローラ１００Ａから開始命令を受信したことに基づいて、コントローラ１００Ｃのパケットモニタモジュール１５４にバッファリング機能を開始させる。これにより、コントローラ１００Ｃのバッファ１５０へのパケットデータの蓄積が開始される。
【０１０９】
このように、コントローラ１００は、予め定められた開始条件が満たされたことに基づいて、自コントローラと他のコントローラとのバッファリング機能を開始する機能を有する。好ましくは、自コントローラおよび他のコントローラのバッファリング機能は、同時または略同時に開始される。
【０１１０】
＜Ｆ．ハードウェア構成＞
図１５および図１６を参照して、コントローラ１００および開発支援装置２００のハードウェア構成について順に説明する。
【０１１１】
（Ｆ１．コントローラ１００のハードウェア構成）
まず、図１５を参照して、コントローラ１００のハードウェア構成について説明する。図１５は、コントローラ１００のハードウェア構成の一例を示す模式図である。
【０１１２】
コントローラ１００は、通信インターフェイス１０１と、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などの制御装置１０２と、チップセット１０４と、主メモリ１０６と、不揮発性の記憶装置１１０と、内部バスコントローラ１２２と、フィールドバスコントローラ１２４と、メモリカードインターフェイス１３９とを含む。
【０１１３】
制御装置１０２は、記憶装置１１０に格納された制御プログラム１１１を読み出して、主メモリ１０６に展開して実行することで、制御対象の駆動機器３００などに対する任意の制御を実現する。制御プログラム１１１は、コントローラ１００を制御するための各種プログラムを含む。一例として、制御プログラム１１１は、システムプログラム１０９およびユーザプログラム２１０などを含む。システムプログラム１０９は、データの入出力処理や実行タイミング制御などの、コントローラ１００の基本的な機能を提供するための命令コードを含む。ユーザプログラム２１０は、開発支援装置２００からダウンロードされたものである。ユーザプログラム２１０は、制御対象に応じて任意に設計され、シーケンス制御を実行するためのシーケンスプログラム２１０Ａおよびモーション制御を実行するためのモーションプログラム２１０Ｂとを含む。
【０１１４】
チップセット１０４は、各コンポーネントを制御することで、コントローラ１００全体としての処理を実現する。
【０１１５】
記憶装置１１０は、制御プログラム１１１の他にも種々のデータを格納する。一例として、記憶装置１１０は、上述の設定情報２１２（図５参照）などを格納する。
【０１１６】
内部バスコントローラ１２２は、コントローラ１００と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、Ｉ／Ｏユニット１２６が接続されている。
【０１１７】
フィールドバスコントローラ１２４は、コントローラ１００とフィールドバスを通じて連結される各種の駆動機器３００とデータを遣り取りするインターフェイスである。このようなデバイスの一例として、ロボットコントローラ３００Ａやサーボドライバ３００Ｂが接続されている。他にも、視覚センサなどの駆動機器が接続されてもよい。
【０１１８】
内部バスコントローラ１２２およびフィールドバスコントローラ１２４は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータを取得することができる。また、内部バスコントローラ１２２および／またはフィールドバスコントローラ１２４は、ロボットコントローラ３００Ａやサーボドライバ３００Ｂとの間でデータを遣り取りするためのインターフェイスとしても機能する。
【０１１９】
通信インターフェイス１０１は、各種の有線／無線ネットワークを通じたデータの遣り取りを制御する。コントローラ１００は、通信インターフェイス１０１を介して、開発支援装置２００などの外部機器と通信を行う。コントローラ１００は、通信インターフェイス１０１を介して他の通信装置とパケット通信を行う。
【０１２０】
メモリカードインターフェイス１３９は、外部記憶媒体の一例であるメモリカード１４０（たとえば、ＳＤカード）を接続するためのインターフェイス部である。メモリカードインターフェイス１３９は、メモリカード１４０を着脱可能に構成されており、メモリカード１４０に対してデータを書き込み、メモリカード１４０からデータを読出すことが可能になっている。
【０１２１】
（Ｆ２．開発支援装置２００のハードウェア構成）
次に、図１６を参照して、開発支援装置２００のハードウェア構成について説明する。図１６は、開発支援装置２００のハードウェア構成を示す模式図である。
【０１２２】
開発支援装置２００は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。開発支援装置２００は、ＣＰＵやＭＰＵなどの制御装置２０２と、主メモリ２０４と、不揮発性の記憶装置２０８と、通信インターフェイス２１１と、Ｉ／Ｏ（Input/Output）インターフェイス２１４と、表示インターフェイス２２０とを含む。これらのコンポーネントは、内部バス２２５を介して互いに通信可能に接続されている。
【０１２３】
制御装置２０２は、記憶装置２０８に格納されている開発支援プログラム２０８Ａを主メモリ２０４に展開して実行することで、開発ツール３０における各種処理を実現する。開発支援プログラム２０８Ａは、ユーザプログラム２１０の開発環境を提供するためのプログラムである。記憶装置２０８は、開発支援プログラム２０８Ａの他にも、開発ツール３０で生成された各種データなどを格納する。当該データは、たとえば、開発ツール３０上で作成された上述のユーザプログラム２１０や、上述の設定情報２１２などを含む。
【０１２４】
通信インターフェイス２１１は、他の通信機器との間でネットワークを介してデータを遣り取りする。当該他の通信機器は、たとえば、コントローラ１００、サーバなどの外部機器を含む。開発支援装置２００は、通信インターフェイス２１１を介して、当該他の通信機器から、開発支援プログラム２０８Ａなどの各種プログラムをダウンロード可能なように構成されてもよい。
【０１２５】
Ｉ／Ｏインターフェイス２１４は、操作部２１５に接続され、操作部２１５からのユーザ操作を示す信号を取り込む。操作部２１５は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。
【０１２６】
表示インターフェイス２２０は、表示部２２１と接続され、制御装置２０２などからの指令に従って、表示部２２１に対して、画像を表示するための画像信号を送出する。表示部２２１は、ＬＣＤ（Liquid Crystal Display）や有機ＥＬ（Electro Luminescence）ディスプレイなどからなり、ユーザに対して各種情報を提示する。表示部２２１には、開発ツール３０によって提供される各種画面（たとえば、上述のプログラム作成画面３１や設定画面３３）が表示され得る。なお、図１６の例では、開発支援装置２００および表示部２２１が別体として示されているが、開発支援装置２００および表示部２２１は、一体的に構成されてもよい。
【０１２７】
＜Ｇ．機能構成＞
図１７を参照して、コントローラ１００および開発支援装置２００の機能について説明する。図１７は、コントローラ１００および開発支援装置２００の機能構成の一例を示す図である。
【０１２８】
図１７に示されるように、コントローラ１００Ａ，１００Ｂは、それぞれ、機能構成として、通信命令実行モジュール１５１と、通信モジュール１５２と、通信ドライバ１５３と、パケットモニタモジュール１５４とを含む。これらの機能モジュールは、たとえば、システムプログラム１０９（図１５参照）内に実装される。通信モジュール１５２は、クライアント機能１５２Ａと、サーバ機能１５２Ｂとを含む。
【０１２９】
また、コントローラ１００Ａ，１００Ｂには、開発支援装置２００上でユーザプログラム２１０がインストールされている。ユーザプログラム２１０は、たとえば、その一機能として、パケットモニタモジュール１５４によるパケットデータのバッファリング処理を停止するための停止モジュール１５６と、パケットモニタモジュール１５４によるパケットデータのバッファリング処理を開始するための開始モジュール１５７と、バッファリングされたパケットデータを外部記憶装置に保存するための保存モジュール１５８とを含む。典型的には、コントローラ１００の機能モジュールは、制御装置１０２（図１５参照）によって実行される。
【０１３０】
通信モジュール１５２、パケットモニタモジュール１５４、および停止モジュール１５６の機能については上述の通りであるので、以下では、それらの機能の説明については繰り返さない。
【０１３１】
通信命令実行モジュール１５１は、通信モジュール１５２を制御するための機能モジュールである。一例として、通信命令実行モジュール１５１は、停止モジュール１５６からバッファリング停止命令を受け付けたことに基づいて、ＣＩＰメッセージを生成するためのＣＩＰパラメータを生成し、ＣＩＰパラメータをクライアント機能１５２Ａに出力する。ＣＩＰパラメータの詳細については後述する。
【０１３２】
通信ドライバ１５３は、通信インターフェイス１０１（図１５参照）用のソフトウェアである。通信ドライバ１５３は、通信インターフェイス１０１の種類に応じてメーカーによって提供されるものであり、予めインストールされていてもよいし、必要に応じてインストールされてもよい。コントローラ１００は、通信ドライバ１５３を介して、他のコントローラや開発支援装置２００との通信を実現する。
【０１３３】
サーバ機能１５２Ｂは、たとえば、停止命令を受け付けたことに基づいて、自コントローラのパケットモニタモジュール１５４を停止する。停止命令は、自コントローラから自発的に発せられることもあるし、他のコントローラや開発支援装置２００から発せられることもある。
【０１３４】
一例として、停止命令が開発支援装置２００から発せられる場合について説明する。ユーザは、いずれかのコントローラ１００にエラーが発生していることを開発支援装置２００上で確認し、バッファリング機能を停止するコントローラ１００を開発支援装置２００上で選択する。このことに基づいて、開発支援装置２００は、指定されたコントローラ１００にバッファリング機能の停止命令をコントローラ１００Ａに送信する。
【０１３５】
開発支援装置２００は、機能モジュールとして、通信モジュール２５２と、通信ドライバ２５３とを有する。通信モジュール２５２は、クライアント機能２５２Ａを含む。典型的には、開発支援装置２００の機能モジュールは、制御装置２０２（図１６参照）によって実行される。
【０１３６】
通信ドライバ２５３は、通信インターフェイス２１１（図１６参照）用のソフトウェアである。通信ドライバ２５３は、通信インターフェイス２１１の種類に応じてメーカーによって提供されるものであり、予めインストールされていてもよいし、必要に応じてインストールされてもよい。開発支援装置２００は、通信ドライバ２５３を介して、コントローラ１００との通信を実現する。
【０１３７】
＜Ｈ．ＣＩＰメッセージ＞
上述のように、通信モジュール１５２は、ＣＩＰパラメータに基づいて、パケットモニタモジュール１５４に対する制御指令を規定するＣＩＰメッセージを生成する。以下では、図１８〜図２０を参照して、ＣＩＰパラメータの具体例について説明する。
【０１３８】
図１８は、パケットモニタモジュール１５４に関する設定を行うためのＣＩＰパラメータを示す図である。
【０１３９】
一例として、ＣＩＰパラメータは、パケットモニタモジュール１５４の有効／無効の設定に関するサービスコードを含む。たとえば、サービスコードとして「０ｘ４Ｅ」が入力された場合には、パケットモニタモジュール１５４の有効／無効を示す現在の設定値が取得される。サービスコードとして「０ｘ４Ｆ」が入力された場合には、パケットモニタモジュール１５４の有効／無効が入力に応じてセットされる。
【０１４０】
他にも、ＣＩＰパラメータは、パケットモニタモジュール１５４の各種設定に関するサービスコードを含む。たとえば、たとえば、サービスコードとして「０ｘ５０」が入力された場合には、パケットモニタモジュール１５４の現在の各種設定が取得される。サービスコードとして「０ｘ５１」が入力された場合には、パケットモニタモジュール１５４の各種設定が入力に応じてセットされる。
【０１４１】
図１９は、パケットモニタモジュール１５４の実行命令を指定するためのＣＩＰパラメータを示す図である。
【０１４２】
一例として、ＣＩＰパラメータは、パケットモニタモジュール１５４のパケットモニタリング処理（すなわち、パケットデータのバッファリング処理）を開始するためのサービスコードを含む。たとえば、サービスコードとして「０ｘ４Ｂ」が入力された場合には、パケットモニタモジュール１５４によるパケットモニタリング処理が開始される。
【０１４３】
他にも、ＣＩＰパラメータは、パケットモニタモジュール１５４のパケットモニタリング処理を停止するためのサービスコードを含む。たとえば、サービスコードとして「０ｘ４Ｃ」が入力された場合には、パケットモニタモジュール１５４によるパケットモニタリング処理が停止する。
【０１４４】
他にも、ＣＩＰパラメータは、パケットモニタモジュール１５４によってバッファリングされたパケットデータを外部記憶装置に保存するためのＣＩＰパラメータを含む。たとえば、サービスコードとして「０ｘ４Ｄ」が入力された場合には、バッファリングされたパケットデータが外部記憶装置に保存される。
【０１４５】
図２０は、パケットモニタモジュール１５４の現状態を取得するためのＣＩＰパラメータを示す図である。
【０１４６】
一例として、ＣＩＰパラメータは、パケットモニタモジュール１５４の現状態を取得するためのサービスコードを含む。たとえば、サービスコードとして「０ｘ５２」が入力された場合には、パケットモニタモジュール１５４の現状態が得られる。パケットモニタモジュール１５４の状態は、たとえば、パケットモニタリングが無効に設定されている状態、パケットモニタリングの停止中を示す状態、パケットモニタリングの実行中を示す状態などを含む。
【０１４７】
＜Ｉ．まとめ＞
以上のようにして、コントローラ１００は、予め定められた停止条件が満たされたことに基づいて、指定されているコントローラについて、パケットモニタモジュール１５４のバッファリング機能を停止する。すなわち、コントローラ１００は、自コントローラにおけるバッファリング機能だけでなく、他のコントローラにおけるバッファリング機能も停止することができる。これにより、自コントローラにバッファリングされたパケットデータの損失を防ぐことができるだけでなく、他のコントローラにバッファリングされたパケットデータの損失を防ぐことができる。
【０１４８】
＜Ｊ．付記＞
以上のように、本実施形態は以下のような開示を含む。
【０１４９】
［構成１］
それぞれが制御対象の駆動機器を制御する複数のコントローラ（１００Ａ〜１００Ｃ）を備え、
前記複数のコントローラ（１００Ａ〜１００Ｃ）は、それぞれ、
バッファ（１５０）と、
他のコントローラとパケット通信を行うための通信モジュール（１５２）と、
自コントローラで生成されたパケットデータと、自コントローラが受信したパケットデータとを前記バッファ（１５０）にバッファリングするためのパケットモニタモジュール（１５４）と、
予め定められた停止条件（１０８）が満たされたことに基づいて、前記複数のコントローラ（１００Ａ〜１００Ｃ）の内の指定されているコントローラについて、前記パケットモニタモジュール（１５４）のバッファリング機能を停止するための停止モジュール（１５６）とを含む、ＦＡ（Factory Automation）システム。
【０１５０】
［構成２］
前記停止モジュール（１５６）は、バッファリング機能を停止する停止命令を前記他のコントローラから受信したことに基づいて、前記自コントローラにおける前記パケットモニタモジュール（１５４）のバッファリング機能を停止する、構成１に記載のＦＡシステム。
【０１５１】
［構成３］
前記パケットデータは、送信元のコントローラを特定するための送信元情報と、送信先のコントローラを特定するための送信先情報とを有し、
前記ＦＡシステムは、前記複数のコントローラ（１００Ａ〜１００Ｃ）と通信可能に構成されている外部機器（２００）をさらに備え、
前記外部機器（２００）は、
前記複数のコントローラ（１００Ａ〜１００Ｃ）のそれぞれのバッファ（１５０）に格納されているパケットデータを前記複数のコントローラ（１００Ａ〜１００Ｃ）のそれぞれから受信するための通信モジュール（２５２）と、
前記複数のコントローラ（１００Ａ〜１００Ｃ）のそれぞれから受信したパケットデータの各々について送信元情報と送信先情報とを表示するための表示部（２２１）とを含む、構成１または２に記載のＦＡシステム。
【０１５２】
［構成４］
前記表示部（２２１）は、送信元情報が一致し、かつ送信先情報が一致するパケットデータ同士を対応させて表示する、構成３に記載のＦＡシステム。
【０１５３】
［構成５］
前記表示部（２２１）は、送信元情報が一致し、かつ送信先情報が一致する対のパケットデータが存在しないパケットデータを他のパケットデータとは異なる表示態様で表示する、構成４に記載のＦＡシステム。
【０１５４】
［構成６］
前記複数のコントローラ（１００Ａ〜１００Ｃ）は、それぞれ、外部記憶装置を接続するためのインターフェイス部（１３９）を含み、
予め定められた保存条件が満たされたことに基づいて、前記複数のコントローラ（１００Ａ〜１００Ｃ）の内の指定されているコントローラのバッファ（１５０）に格納されているパケットデータを、それぞれ、当該コントローラに接続されている前記外部記憶装置（１４０）に格納するための保存モジュール（１５９）とを含む、構成１〜５のいずれか１項に記載のＦＡシステム。
【０１５５】
［構成７］
制御対象の駆動機器を制御するコントローラであって、
バッファ（１５０）と、
他のコントローラとパケット通信を行うための通信モジュール（１５２）と、
前記コントローラで生成されたパケットデータと、前記他のコントローラが受信したパケットデータとを前記バッファ（１５０）にバッファリングするためのパケットモニタモジュール（１５４）と、
予め定められた停止条件（１０８）が満たされたことに基づいて、前記コントローラまたは前記他のコントローラの内の指定されているコントローラについて、前記パケットモニタモジュール（１５４）のバッファリング機能を停止するための停止モジュール（１５６）とを含む、コントローラ。
【０１５６】
［構成８］
制御対象の駆動機器を制御するコントローラの制御方法であって、
他のコントローラとパケット通信を行うステップと、
前記コントローラで生成されたパケットデータと、前記他のコントローラが受信したパケットデータとを前記コントローラのバッファ（１５０）にバッファリングするステップと、
予め定められた停止条件（１０８）が満たされたことに基づいて、前記コントローラまたは前記他のコントローラの内の指定されているコントローラについて、前記バッファリングするステップでのバッファリングを停止するステップとを含む、制御方法。
【０１５７】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１５８】
１０  ＦＡシステム、３０  開発ツール、３１  プログラム作成画面、３３  設定画面、３５  イベントログ画面、３７Ａ，３７Ｂ  収集結果画面、４１，４２，４５，４７  設定欄、４１Ａ，４２Ａ，４５Ａ，７１，７２  ボタン、５０  保存ボタン、５１  キャンセルボタン、６０，６１，６２，６３，６４，６５  表示欄、７０  確認画面、８１，８２，８３  破線部分、８５  入力領域、８６  表示領域、９０  ハブ、１００，１００Ａ，１００Ｂ，１００Ｃ  コントローラ、１０１，２１１  通信インターフェイス、１０２，２０２  制御装置、１０４  チップセット、１０６，２０４  主メモリ、１０８  停止条件、１０９  システムプログラム、１１０，２０８  記憶装置、１１１  制御プログラム、１２２  内部バスコントローラ、１２４  フィールドバスコントローラ、１２６  Ｉ／Ｏユニット、１３９  メモリカードインターフェイス、１４０  メモリカード、１５０  バッファ、１５１  通信命令実行モジュール、１５２，２５２  通信モジュール、１５２Ａ，２５２Ａ  クライアント機能、１５２Ｂ  サーバ機能、１５３，２５３  通信ドライバ、１５４  パケットモニタモジュール、１５６  停止モジュール、１５７  開始モジュール、１５８  保存モジュール、２００  開発支援装置、２０８Ａ  開発支援プログラム、２１０  ユーザプログラム、２１０Ａ  シーケンスプログラム、２１０Ｂ  モーションプログラム、２１２  設定情報、２１４  Ｉ／Ｏインターフェイス、２１５  操作部、２２０  表示インターフェイス、２２１  表示部、２２５  内部バス、３００  駆動機器、３００Ａ  ロボットコントローラ、３００Ｂ  サーボドライバ、３０１Ａ  アームロボット、３０１Ｂ  サーボモータ。
【図１】
2019159634.tif 000003
【図２】
2019159634.tif 000004
【図３】
2019159634.tif 000005
【図４】
2019159634.tif 000006
【図５】
2019159634.tif 000007
【図６】
2019159634.tif 000008
【図７】
2019159634.tif 000009
【図８】
2019159634.tif 000010
【図９】
2019159634.tif 000011
【図１０】
2019159634.tif 000012
【図１１】
2019159634.tif 000013
【図１２】
2019159634.tif 000014
【図１３】
2019159634.tif 000015
【図１４】
2019159634.tif 000016
【図１５】
2019159634.tif 000017
【図１６】
2019159634.tif 000018
【図１７】
2019159634.tif 000019
【図１８】
2019159634.tif 000020
【図１９】
2019159634.tif 000021
【図２０】
2019159634.tif 000022