(57)【要約】【課題】処理状況に応じて収集の対象を適宜異ならせることで効率的な記憶容量の利用が可能な技術が望まれている。【解決手段】制御装置は、任意に作成されるユーザプログラムに従って、制御対象に対する制御命令を生成するプログラム実行部と、ネットワークを介して外部装置との間で通信データを送受信する通信部と、通信部に接続されネットワークに伝送される前記通信データのうち、フィルタリング条件を満たすデータを収集する収集部とを備える。収集部は、前記ユーザプログラムに含まれる命令に従って、前記フィルタリング条件を変更可能に構成される。【選択図】図１
2019161388.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するための制御装置であって、
任意に作成されるユーザプログラムに従って、前記制御対象に対する制御命令を生成するプログラム実行部と、
ネットワークを介して外部装置との間で通信データを送受信する通信部と、
前記通信部に接続され前記ネットワークに伝送される前記通信データのうち、フィルタリング条件を満たすデータを収集する収集部とを備え、
前記収集部は、前記ユーザプログラムに含まれる命令に従って、前記フィルタリング条件を変更可能に構成される、制御装置。
【請求項２】
前記ユーザプログラムに含まれる命令は、前記フィルタリング条件の内容を明示する命令を含む、請求項１に記載の制御装置。
【請求項３】
予め設定された複数のフィルタリング条件を格納する格納部をさらに備え、
前記ユーザプログラムに含まれる命令は、前記複数のフィルタリング条件のうちのいずれの条件が有効であるかを示す情報を含む、請求項１に記載の制御装置。
【請求項４】
前記フィルタリング条件は、ＩＰアドレス、プロトコル、および、ポート番号の少なくとも１つを含む、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記ユーザプログラムで利用可能な変数が所定値であることを条件に、前記収集部による前記通信データの収集を開始させる、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
前記変数の値は、前記外部装置による作業工程の状態を示す値である、請求項５に記載の制御装置。
【請求項７】
制御対象を制御するための制御方法であって、
任意に作成されるユーザプログラムに従って、前記制御対象に対する制御命令を生成するステップと、
ネットワークを介して外部装置との間で通信データを送受信するステップと、
前記ネットワークに伝送される前記通信データのうち、フィルタリング条件を満たすデータを収集するステップとを備え、
前記収集するステップは、前記ユーザプログラムに含まれる命令に従って、前記フィルタリング条件を変更可能に構成される、制御方法。
【請求項８】
制御対象を制御するための制御装置の制御プログラムであって、
前記制御ブログラムは、前記制御装置に、
任意に作成されるユーザプログラムに従って、前記制御対象に対する制御命令を生成するステップと、
ネットワークを介して外部装置との間で通信データを送受信するステップと、
前記ネットワークに伝送される前記通信データのうち、フィルタリング条件を満たすデータを収集するステップとを実行させ、
前記収集するステップは、前記ユーザプログラムに含まれる命令に従って、前記フィルタリング条件を変更可能に構成される、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御装置により通信データを収集する技術に関する。
【背景技術】
【０００２】
ＦＡ（Factory Automation）を用いた生産現場では、ＰＬＣ（Programmable Logic Controller）やロボットコントローラなどの産業用の制御装置が導入されている。制御装置は、ネットワークにより通信可能な種々の産業用の駆動機器である外部装置を制御することで、生産工程を自動化することができる。このような制御装置に関して、特開２０１１−３５６６４号公報（特許文献１）は、制御装置にプロトコル機能を内蔵して、フレーム等の通信データをキャプチャするといったデータの収集が行える設備システムを開示している。
【０００３】
また、特開２０１２−１５６６９５号公報（特許文献２）は、パケット等の通信データの転送エンジンは、ユーザが予め設定したフィルタ条件に一致したパケットが存在した場合に、そのデータをコピーし、制御用プロセッサに出力する通信データの収集装置を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−３５６６４号公報
【特許文献２】特開２０１２−１５６６９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ネットワークにおける通信に異常が生じた場合、その異常要因を特定するための有効な機能の一つとして通信データを収集する機能がある。ＦＡにおけるネットワークでは高速で定周期に通信する必要があることから通信データのデータ量が多くなる場合がある。このような場合、制御装置の限られたメモリ容量では異常要因を特定できるだけのデータを取得できないことがある。
【０００６】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、処理状況に応じて収集の対象を適宜異ならせることで効率的な記憶容量の利用が可能な技術を提供することである。
【課題を解決するための手段】
【０００７】
本開示の一例では、制御装置は、任意に作成されるユーザプログラムに従って、上記制御対象に対する制御命令を生成するプログラム実行部と、ネットワークを介して外部装置との間で通信データを送受信する通信部と、上記通信部に接続され上記ネットワークに伝送される上記通信データのうち、フィルタリング条件を満たすデータを収集する収集部とを含む。上記収集部は、上記ユーザプログラムに含まれる命令に従って、上記フィルタリング条件を変更可能に構成される。
【０００８】
この開示によれば、制御装置は、ユーザプログラムに含まれる命令に従って、フィルタリング条件を任意に変更できる。
【０００９】
本開示の一例では、上記ユーザプログラムに含まれる命令は、上記フィルタリング条件の内容を明示する命令を含む。
【００１０】
この開示によれば、制御装置は、ユーザプログラムに含まれる命令に従って、フィルタリング条件を直接的に変更できる。
【００１１】
本開示の一例では、予め設定された複数のフィルタリング条件を格納する格納部をさらに含む。上記ユーザプログラムに含まれる命令は、上記複数のフィルタリング条件のうちのいずれの条件が有効であるかを示す情報を含む。
【００１２】
この開示によれば、制御装置は、ユーザプログラムに含まれる命令に従って、フィルタリング条件を間接的に変更できる。
【００１３】
本開示の一例では、上記フィルタリング条件は、ＩＰアドレス、プロトコル、および、ポート番号の少なくとも１つを含む。
【００１４】
この開示によれば、制御装置は、ユーザプログラムに含まれる命令に従って、フィルタリング条件を項目ごとに任意に変更できる。
【００１５】
本開示の一例では、上記ユーザプログラムで利用可能な変数が所定値であることを条件に、上記収集部による上記通信データの収集を開始させる。
【００１６】
この開示によれば、制御装置は、通信データの収集タイミングを任意のタイミングに調整できる。
【００１７】
本開示の一例では、上記変数の値は、上記外部装置による作業工程の状態を示す値である。
【００１８】
この開示によれば、制御装置は、通信データの収集タイミングを作業工程の状態に応じて調整できる。
【００１９】
本開示の他の例では、制御対象を制御するための制御方法は、任意に作成されるユーザプログラムに従って、上記制御対象に対する制御命令を生成するステップと、ネットワークを介して外部装置との間で通信データを送受信するステップと、上記ネットワークに伝送される上記通信データのうち、フィルタリング条件を満たすデータを収集するステップとを含む。上記収集するステップは、上記ユーザプログラムに含まれる命令に従って、上記フィルタリング条件を変更可能に構成される。
【００２０】
この開示によれば、制御方法は、ユーザプログラムに含まれる命令に従って、フィルタリング条件を任意に変更できる。
【００２１】
本開示の他の例では、制御対象を制御するための制御装置の制御プログラムは、上記制御装置に、任意に作成されるユーザプログラムに従って、上記制御対象に対する制御命令を生成するステップと、ネットワークを介して外部装置との間で通信データを送受信するステップと、上記ネットワークに伝送される上記通信データのうち、フィルタリング条件を満たすデータを収集するステップとを実行させる。上記収集するステップは、上記ユーザプログラムに含まれる命令に従って、上記フィルタリング条件を変更可能に構成される。
【００２２】
この開示によれば、制御プログラムは、ユーザプログラムに含まれる命令に従って、フィルタリング条件を任意に変更できる。
【発明の効果】
【００２３】
ある局面において、ユーザプログラムに含まれる命令に従って、フィルタリング条件を任意に変更できる。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態に従うＦＡシステム１の構成例を示す図である。
【図２】本実施の形態に従う制御装置１０のハードウェア構成例を示すブロック図である。
【図３】本実施の形態に従うファンクションブロックＦＢの説明図である。
【図４】図３で説明したファンクションブロックＦＢを組み込んだユーザプログラムの例を示す図である。
【図５】作業工程の開始から終了とフィルタリング条件の変更の対応関係を示す図である。
【図６】本実施の形態に従うＦＡシステム１の概略構成を示す模式図である。
【図７】本実施の形態に従うフィルタリング対象の通信データの一例を示す図である。
【図８】本実施の形態に従うコントローラ１０が実行する処理の一部を表わすフローチャートである。
【図９】本実施の形態に従うユーザプログラム１１０と収集機能２０１との処理が実行される場所を示す図である。
【図１０】本実施の形態に従うコントローラ１０のハードウェア構成例を示すブロック図である。
【図１１】フィルタリング条件テーブル５０１の一例を示す図である。
【図１２】本実施の形態に従うファンクションブロックＦＢａの説明図である。
【図１３】本実施の形態に従う図１２で説明したファンクションブロックＦＢａを組み込んだユーザプログラムの例を示す図である。
【図１４】本実施の形態に従うサポート装置３００を用いたフィルタリング条件の生成処理の流れの一例を示す図である。
【図１５】本実施の形態に従う複数の外部装置２００（ＩＰアドレス）の通信データの通信速度変化の時間推移を示す図である。
【図１６】本実施の形態に従う複数のプロトコルの通信データの通信速度変化の時間推移を示す図である。
【図１７】本実施の形態に従うフィルタリング条件に関する各項目の選択により生成されるフィルタリング条件の一例を説明するための図である。
【図１８】本実施の形態に従うサポート装置３００を用いたフィルタリング条件の生成処理の流れの他の例を示す図である。
【図１９】本実施の形態に従うサポート装置３００の表示部３１０に表示される画像であって、通信データの異常発生回数に関する画像の一例を示す図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
【００２６】
＜Ａ．適用例＞
図１を参照して、本発明の適用例について説明する。図１は、本実施の形態に従うＦＡシステム１の構成例を示す図である。
【００２７】
ＦＡシステム１は、設備および装置などの制御対象を制御し、生産工程を自動化するためのシステムである。ＦＡシステム１は、制御装置１０と、外部装置２００とで構成されている。
【００２８】
外部装置２００は、生産工程を搬送されるワークを撮影するためのカメラを用いた画像センサ、および、ワークに対する加工処理等を実行するアームロボット等の生産工程で利用される機器や、データベースシステム、製造実行システム（ＭＥＳ：Manufacturing Execution System）等のサーバ装置を含む。制御装置１０と外部装置２００とを接続するネットワークＮｅとしては、例えば、一般的なネットワークプロトコルであるＥｔｈｅｒＮＥＴ（登録商標）や、産業用ネットワークプロトコルとして用いられるＥｔｈｅｒＣＡＴ（登録商標）やＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）等が採用されてもよい。
【００２９】
制御装置１０は、ネットワークコントローラ１００と、プログラム実行部１０３と、収集機能２０１と、記憶装置１０８とを含む。
【００３０】
ネットワークコントローラ１００は、制御装置１０がネットワークＮｅを介して外部装置２００との間で通信データを送受信するためのインターフェイスを提供する。ネットワークコントローラ１００は、主たるコンポーネントとして、Ｔｘ（送信)バッファ１０１２と、Ｒｘ（受信）バッファ１０１４と、Ｔｘ（送信）回路１０１６と、Ｒｘ（受信）回路１０１８と、送受信コントローラ１０１０とを含む。受信回路１０１８は、外部装置２００から伝送される通信データを受信して、そのデータを受信バッファ１０１４に書込む。通信データは、ネットワーク上伝送されるデータを総括する用語であって、パケットおよびフレームの少なくともいずれかを含む。
【００３１】
送受信コントローラ１０１０は、受信バッファ１０１４に書込まれた通信データを順次読出す。送受信コントローラ１０１０は、読出された通信データをプログラム実行部１０３に出力する。
【００３２】
また、送受信コントローラ１０１０は、外部装置２００へ送信すべきデータを送信バッファ１０１２に順次書込む。送信回路１０１６は、送信バッファ１０１２に格納されているデータを順次ネットワークＮｅへ出力する。
【００３３】
プログラム実行部１０３は、通信アプリケーション１１１によりネットワークコントローラ１００との間で通信データを送受信する。プログラム実行部１０３は、任意に作成されるユーザプログラム１１０に従って、制御対象に対する制御命令を生成する。
【００３４】
ユーザプログラム１１０は、設計者によって実装された制御プログラムである。ユーザプログラム１１０の開発ツールは、たとえば、ＰＣとしてのサポート装置（例えば、図６に示すサポート装置３００）にインストールされている。サポート装置３００の説明は後述する。設計者は、予め規定されている複数種類の命令を開発ツール上で組み合わせることで、外部装置２００の構成に合わせたユーザプログラム１１０を設計することができる。開発ツール上で組み合わせることが可能な命令は、通信データのフィルタリング条件と外部装置２００に対する制御命令とを含む。
【００３５】
上記の構成を含む制御装置１０は、ネットワークＮｅを介して外部装置２００との間で通信データを送受信し、予め定められたフィルタリング条件を満たす通信データを収集（キャプチャ）する。
【００３６】
図１の例では、フィルタリング条件に関しては、ユーザプログラム１１０が、通信アプリケーション１１１と、複数のフィルタリング条件１１２（フィルタリング条件１１２ａ,ｂ等）を含む。
【００３７】
通信アプリケーション１１１は、ネットワークコントローラ１００と通信して通信データを送受信するためのアプリケーションである。フィルタリング条件１１２は、通信データをフィルタリングするため条件であり、収集機能２０１が通信データをフィルタリングして収集する場合に用いられる。
【００３８】
収集機能２０１は、ユーザプログラム１１０に含まれる命令に従って、フィルタリング条件１１２を変更して通信データの収集（キャプチャ）を実行する。このように、収集機能２０１はフィルタリング条件１１２に応じてフィルタリング対象となる通信データを適宜変更できる。なお、収集機能２０１は、通信データを収集するためのプログラムであり、種々のプログラムで規定され得る。
【００３９】
記憶装置１０８は、フィルタリング条件１１２に応じて収集された収集データ２０２（収集データ２０２ａ,ｂ等）を格納する。
【００４０】
このように、ユーザプログラム１１０のフィルタリング条件１１２が異なる条件に切替えられた場合、切替え前のフィルタリング条件１１２により収集した収集データ２０２と、切替え後のフィルタリング条件１１２により収集した収集データ２０２とは異なるデータとなる。具体的には、収集機能２０１が最初の命令に従って設定したフィルタリング条件１１２ａにより収集した収集データ２０２ａと、次の命令に従って設定したフィルタリング条件１１２ｂにより収集した収集データ２０２ｂとは異なる内容のデータとなり得る。
【００４１】
このため、制御装置１０は、ユーザプログラム１１０に含まれる命令に従って、フィルタリング条件１１２を任意に変更できる。
【００４２】
また、制御装置１０は、ユーザプログラムに含まれる命令に従って、収集機能２０１のフィルタリング条件を変更可能とすることで、収集する通信データの内容を動的に変化させることができ、処理状況に応じて収集する通信データを適宜異ならせることができる。そのため、通信データに異常が発生した場合には、異常要因を特定するためのデータのみを収集でき、制御装置１０の限られた記憶容量に対して効率的な利用が可能となる。
【００４３】
＜Ｂ．制御装置のハードウェア構成＞
図２は、本実施の形態に従う制御装置（以下、「コントローラ」ともいう。）１０のハードウェア構成例を示すブロック図である。図２を参照して、コントローラ１０は、プロセッサ１０２と、チップセット１０４と、主メモリ１０６と、記憶装置１０８と、タイマー１１６と、ＵＳＢ（Universal Serial Bus）インターフェイス１１８と、メモリカードインターフェイス１２０と、内部バスコントローラ１３０と、上位ネットワークコントローラ１００Ｐ１と、フィールドネットワークコントローラ１００Ｐ２とを含む。
【００４４】
プロセッサ１０２は、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＧＰＵ（Graphics Processing Unit）などで構成される。プロセッサ１０２としては、複数のコアを有する構成を採用してもよいし、プロセッサ１０２を複数配置してもよい。このように、コントローラ１０は、１または複数のプロセッサ１０２、および／または、１または複数のコアを有するプロセッサ１０２を有している。
【００４５】
チップセット１０４は、プロセッサ１０２および周辺エレメントを制御することで、コントローラ１０全体としての処理を実現する。主メモリ１０６は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。記憶装置１０８は、たとえば、フラッシュメモリなどの不揮発性記憶装置などで構成される。
【００４６】
プロセッサ１０２は、記憶装置１０８に格納された各種プログラムを読出して、主メモリ１０６に展開して実行することで、制御対象に応じた制御を実現する。記憶装置１０８には、制御装置１０の基本的な処理を実行するためのユーザプログラム１１０に加えて、システムプログラム１１５を含む。ユーザプログラム１１０にはフィルタリング条件１１２が含まれ、システムプログラム１１５には収集機能２０１が含まれる。
【００４７】
また、記憶装置１０８は、フィルタリング条件１１２を満たす通信データである収集データ２０２を格納する。
【００４８】
タイマー１１６は、外部装置２００との時刻が同期された装置であり、このタイマーの時間情報に従ってカメラやアームロボット等の外部装置２００が駆動する。タイマー１１６によって示される時間情報と対応づけられる情報の一例としては、外部装置２００の座標位置を示す情報を含む。
【００４９】
ＵＳＢインターフェイス１１８は、ＵＳＢ接続を介した装置との間のデータ通信を仲介する。ＵＳＢインターフェイス１１８は一例として、サポート装置３００との接続を可能とする。
【００５０】
メモリカードインターフェイス１２０は、メモリカード１２２が着脱可能に構成されており、メモリカード１２２に対してデータを書込み、メモリカード１２２から各種データ（ユーザプログラムやトレースデータなど）を読出すことが可能になっている。
【００５１】
上位ネットワークコントローラ１００Ｐ１（１００）は、サーバ装置等の外部装置２００とのネットワークＮ１を介した通信データの仲介が可能になっている。サーバ装置は、データベースシステム、製造実行システム（ＭＥＳ）を含む。
【００５２】
フィールドネットワークコントローラ１００Ｐ２（１００）は、生産工程で利用される機器等の外部装置２００とのネットワークＮ２を介した通信データの仲介が可能になっている。生産工程で利用される機器は、画像センサおよびカメラと、リモートＩ／Ｏ装置およびアームロボット等である。
【００５３】
内部バスコントローラ１３０は、コントローラ１０に装着される機能ユニットとの間の通信データの送受信を仲介する。
【００５４】
図２には、プロセッサ１０２がプログラムを実行することで必要な処理が実現される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００５５】
＜Ｃ．フィルタリング条件の変更＞
次に、ユーザプログラムに含まれる命令に従って、収集機能２０１がフィルタリング条件１１２を変更する処理の一例について説明する。この処理では、ファンクションブロックダイアグラム（ＦＢＤ：Function Block Diagram）を用いた処理として説明を行うが、ラダーダイアグラム（ＬＤ：Ladder Diagram）、命令リスト（ＩＬ：Instruction List）、構造化テキスト（ＳＴ：Structured Text）、および、シーケンシャルファンクションチャート（ＳＦＣ：Sequential Function Chart）のいずれか、あるいは、これらの組み合わせにより処理を行ってもよい。また、ＪａｖａＳｃｒｉｐｔ（登録商標）やＣ言語のような汎用的なプログラミング言語等の他のプログラム言語で処理を行ってもよい。
【００５６】
図３は、本実施の形態に従うファンクションブロックＦＢの説明図である。
収集機能２０１は、ユーザプログラム１１０に含まれる命令に従って、フィルタリング条件を変更する。ユーザプログラム１１０に含まれる命令は、例えばファンクションブロックＦＢで規定される。
【００５７】
ファンクションブロックＦＢは、フィルタリング条件１１２の設定を受け付ける入力部１５５Ａ〜１５５Ｄと、フィルタリング条件の設定処理を行った結果を出力するための出力部１５７Ａ〜１５７Ｄとを含む。
【００５８】
入力部１５５Ａ〜１５５Ｄは、フィルタリング条件１１２の設定の入力を受け付ける。すなわち、入力部１５５Ａ〜１５５Ｄに入力される値に応じてフィルタリング条件１１２が変更される。この値の例としては、以下で説明するように「Ｐｒｏｔｏｃｏｌ」や「ＩＰ  Ａｄｄｒｅｓｓ」や「Ｐｏｒｔ」等の具体的な値である。このように、ユーザプログラムに含まれる命令は、フィルタリング条件１１２の内容を明示する命令を含む。収集機能２０１は、このような直接的な命令により通信データを収集するフィルタリング条件を任意に変更できる。
【００５９】
「Ｅｘｅｃｕｔｅ」として示される入力部１５５Ａは、フィルタリング条件１１２の変更処理を実行するか否かを指定するための設定を受け付ける。一例として、入力部１５５Ａは、「Ｔｒｕｅ」または「Ｆａｌｓｅ」の入力を受け付ける。入力部１５５Ａに「Ｆａｌｓｅ」が入力されている限り、収集機能２０１はフィルタリング条件１１２を変更しない。一方で、入力部１５５Ａに「Ｔｒｕｅ」が入力された場合には、収集機能２０１はフィルタリグ条件の変更処理を実行する。この場合、他の入力部１５５Ｂ〜１５５Ｄに入力されたフィルタリング条件１１２を新たなフィルタリング条件１１２として設定する。このようにコントローラ１０は、ユーザプログラム１１０に含まれる命令に従って、フィルタリング条件１１２を直接的に変更できる。
【００６０】
「Ｐｒｏｔｏｃｏｌ」として示される入力部１５５Ｂは、フィルタリング対象とする通信データの通信プロトコルを指定するための入力を受け付ける。一例として、入力部１５５Ｂは、通信プロトコルの識別情報の入力を受け付ける。当該識別情報は、通信プロトコル名で指定されてよいし、通信プロトコルのＩＤ（Identification）で指定されてもよい。一例として、入力部１５５Ｂは、「ＴＣＰ」または「ＦＴＰ」の入力を受け付ける。入力部１５５Ｂに「ＴＣＰ」が入力された場合、収集機能２０１は、ＴＣＰプロトコルに従った通信データをフィルタリング対象とするようにフィルタリング条件１１２を変更する。入力部１５５Ｂに「ＦＴＰ」が入力された場合、収集機能２０１は、ＦＴＰプロトコルに従った通信データをフィルタリング対象とするようにフィルタリング条件を変更する。このようにコントローラ１０は、通信データを収集する条件の一つであるプロトコルの条件を任意に変更できる。
【００６１】
「ＩＰ  Ａｄｄｒｅｓｓ」として示される入力部１５５Ｃは、フィルタリング対象とする通信データの装置に対応したＩＰアドレスを指定するための入力を受け付ける。たとえば、「１０．０．０．１」が入力部１５５Ｃに入力された場合、収集機能２０１は、ＩＰアドレス「１０．０．０．１」の装置（送信先装置）に送られる通信データをフィルタリング対象とするようにフィルタリング条件１１２を変更する。このようにコントローラ１０は、通信データを収集する条件の一つであるＩＰアドレスの条件を任意に変更できる。
【００６２】
「Ｐｏｒｔ」として示される入力部１５５Ｄは、フィルタリング対象とする通信データの装置のポート番号を指定するための入力を受け付ける。一例として、「８０」が入力部１５５Ｄに入力された場合、収集機能２０１は、送信先機器のポート番号「８０」に送られる通信データをフィルタリング対象とするようにフィルタリング条件１１２を変更する。このようにコントローラ１０は、通信データを収集する条件の一つであるポート番号を任意に変更できる。
【００６３】
このように、コントローラ１０は、ユーザプログラム１１０に含まれる命令に従って、フィルタリング条件１１２を項目ごとに任意に変更できる。
【００６４】
なお、フィルタリング条件１１２として「Ｐｒｏｔｏｃｏｌ」、「ＩＰ  Ａｄｄｒｅｓｓ」、および、「Ｐｏｒｔ」の３つ条件の設定が可能であるとして説明を行ったが、これらの条件のうちの少なくとも１つの条件が設定されてもよいし、これら以外の条件を含む４つ以上の条件が設定されてもよい。
【００６５】
フィルタリング条件１１２が正常に設定された場合には、正常終了を示す信号が、「Ｄｏｎｅ」として示される出力部１５７Ａから出力される。フィルタリング条件１１２の変更中には、変更処理中を示す信号が、「Ｂｕｓｙ」として示される出力部１５７Ｂから出力される。フィルタリング条件１１２が適切に設定されなかった場合には、異常終了を示す信号が、「Ｅｒｒｏｒ」として示される出力部１５７Ｃから出力される。この場合には、さらに、エラーの内容を識別するためのエラーＩＤが、「ＥｒｒｏｒＩＤ」として示される出力部１５７Ｄから出力される。
【００６６】
なお、ファンクションブロックＦＢには、入力部１５５Ａ〜１５５Ｄおよび出力部１５７Ａ〜１５７Ｄの他にも様々な入力部および出力部が設けられもよい。一例として、複数の通信インターフェイスが存在する場合には、通信インターフェイスを指定するための入力部がファンクションブロックＦＢに設けられてもよい。
【００６７】
＜Ｄ．プログラム例＞
図４を参照して、図３で説明したファンクションブロックＦＢの使用例について説明する。図４は、図３で説明したファンクションブロックＦＢを組み込んだユーザプログラムの例を示す図である。
【００６８】
図４の例では、ユーザプログラム１１０は、ラダープログラムで規定されている。当該ユーザプログラム１１０は、外部装置２００の作業工程に応じて通信データのフィルタリング条件１１２を変えるように規定されている。具体的には、作業工程の状態を示すユーザプログラムで利用可能な変数が所定値であることを条件に、収集機能２０１が通信データの収集を開始する。作業工程は、１または複数の外部装置２００が目的とする処理の作業を開始してから終了するまでの工程を指す。
【００６９】
なお、図４に示されるユーザプログラム１１０は、コントローラ１０における全処理を示しているわけではなく、たとえば、各作業工程の切り替え時における一部のロジックが省略されている。
【００７０】
ユーザプログラム１１０は、入力要素ＩＮ０〜ＩＮ１０と、ファンクションブロックＦＢ０〜ＦＢ２と、出力要素ＯＵＴ０〜ＯＵＴ２とで規定されている。ファンクションブロックＦＢ１，ＦＢ２は、図３で説明した、ファンクションブロックＦＢに相当する。
【００７１】
入力要素ＩＮ０〜ＩＮ１０の値は、割付けられている変数に応じて変化する。より具体的には、入力要素ＩＮ０には、変数「ＣｈａｎｇｅＴｒｉｇｇｅｒ」が割り当てられている。変数「ＣｈａｎｇｅＴｒｉｇｇｅｒ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。変数「ＣｈａｎｇｅＴｒｉｇｇｅｒ」の値は、コントローラ１０が起動されたことに基づいて、「Ｔｒｕｅ」（ＯＮ）に変化する。その他の場合、変数「ＣｈａｎｇｅＴｒｉｇｇｅｒ」の値は、「Ｆａｌｓｅ」（ＯＦＦ）となる。
【００７２】
入力要素ＩＮ１には、変数「Ｂｕｓｙ０」が割り当てられている。変数「Ｂｕｓｙ０」は、ＢＯＯＬ型である。また、変数「Ｂｕｓｙ０」は、ファンクションブロックＦＢ１の出力「Ｂｕｓｙ」に関連付けられている。そのため、入力要素ＩＮ１の値は、ファンクションブロックＦＢ１の出力「Ｂｕｓｙ」の値に応じて変化する。上述したように、ファンクションブロックＦＢ１の出力「Ｂｕｓｙ」からは、フィルタリング条件１１２の変更中において変更処理中を示す信号「Ｔｒｕｅ」（＝ＯＮ）が出力される。入力要素ＩＮ１における変数「Ｂｕｓｙ０」の値は、ファンクションブロックＦＢ１の出力「Ｂｕｓｙ」の値と反対になるので、ファンクションブロックＦＢ１の出力「Ｂｕｓｙ」が「Ｔｒｕｅ」（＝ＯＮ）となる場合、入力要素ＩＮ１の値は、「Ｆａｌｓｅ」（＝ＯＦＦ）となる。一方で、出力「Ｂｕｓｙ」が「Ｆａｌｓｅ」（＝ＯＦＦ）となる場合、入力要素ＩＮ１の値は、「Ｔｒｕｅ」（＝ＯＮ）となる。
【００７３】
入力要素ＩＮ２には、変数「Ｂｕｓｙ１」が割り当てられている。変数「Ｂｕｓｙ１」は、ＢＯＯＬ型である。また、変数「Ｂｕｓｙ１」は、ファンクションブロックＦＢ２の出力「Ｂｕｓｙ」に関連付けられている。そのため、入力要素ＩＮ２の値は、ファンクションブロックＦＢ２の出力「Ｂｕｓｙ」の値に応じて変化する。上述したように、ファンクションブロックＦＢ２の出力「Ｂｕｓｙ」からは、フィルタリング条件１１２の変更中において変更処理中を示す信号「Ｔｒｕｅ」（＝ＯＮ）が出力される。入力要素ＩＮ２における変数「Ｂｕｓｙ１」の値は、ファンクションブロックＦＢ２の出力「Ｂｕｓｙ」の値と反対になるので、ファンクションブロックＦＢ２の出力「Ｂｕｓｙ」が「Ｔｒｕｅ」（＝ＯＮ）となる場合、入力要素ＩＮ２の値は、「Ｆａｌｓｅ」（＝ＯＦＦ）となる。一方で、出力「Ｂｕｓｙ」が「Ｆａｌｓｅ」（＝ＯＦＦ）となる場合、入力要素ＩＮ２の値は、「Ｔｒｕｅ」（＝ＯＮ）となる。
【００７４】
入力要素ＩＮ３には、変数「Ｄｏｎｅ０」が割り当てられている。変数「Ｄｏｎｅ０」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。また、変数「Ｄｏｎｅ０」は、ファンクションブロックＦＢ１の出力「Ｄｏｎｅ」に関連付けられている。上述したように、フィルタリング条件１１２が正常に変更された場合には、ファンクションブロックＦＢ１の出力「Ｄｏｎｅ」からは、正常終了を示す信号「Ｔｒｕｅ」（＝ＯＮ）が出力される。ファンクションブロックＦＢ１の出力「Ｄｏｎｅ」が「Ｔｒｕｅ」（＝ＯＮ）となると、入力要素ＩＮ３の値は、「Ｔｒｕｅ」（＝ＯＮ）となる。一方で、ファンクションブロックＦＢ１の出力「Ｄｏｎｅ」が「Ｆａｌｓｅ」（＝ＯＦＦ）となると、入力要素ＩＮ３の値は、「Ｆａｌｓｅ」（＝ＯＦＦ）となる。
【００７５】
入力要素ＩＮ４には、変数「Ｄｏｎｅ１」が割り当てられている。変数「Ｄｏｎｅ１」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。また、変数「Ｄｏｎｅ１」は、ファンクションブロックＦＢ２の出力「Ｄｏｎｅ」に関連付けられている。上述したように、フィルタリング条件１１２が正常に変更された場合には、ファンクションブロックＦＢ２の出力「Ｄｏｎｅ」からは、正常終了を示す信号「Ｔｒｕｅ」（＝ＯＮ）が出力される。ファンクションブロックＦＢ２の出力「Ｄｏｎｅ」が「Ｔｒｕｅ」（＝ＯＮ）となると、入力要素ＩＮ３の値は、「Ｔｒｕｅ」（＝ＯＮ）となる。一方で、ファンクションブロックＦＢ２の出力「Ｄｏｎｅ」が「Ｆａｌｓｅ」（＝ＯＦＦ）となると、入力要素ＩＮ４の値は、「Ｆａｌｓｅ」（＝ＯＦＦ）となる。
【００７６】
入力要素ＩＮ５には、変数「Ｅｒｒｏｒ０」が割り当てられている。変数「Ｅｒｒｏｒ０」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。また、変数「Ｅｒｒｏｒ０」は、ファンクションブロックＦＢ１の出力「Ｅｒｒｏｒ」に関連付けられている。上述したように、フィルタリング条件１１２の変更処理が異常終了した場合には、ファンクションブロックＦＢ１の出力「Ｅｒｒｏｒ」からは、異常を示す信号「Ｔｒｕｅ」（＝ＯＮ）が出力される。ファンクションブロックＦＢ１の出力「Ｅｒｒｏｒ」が「Ｔｒｕｅ」（＝ＯＮ）となると、入力要素ＩＮ５の値は、「Ｔｒｕｅ」（＝ＯＮ）となる。一方で、ファンクションブロックＦＢ１の出力「Ｅｒｒｏｒ」が「Ｆａｌｓｅ」（＝ＯＦＦ）となると、入力要素ＩＮ５の値は、「Ｆａｌｓｅ」（＝ＯＦＦ）となる。
【００７７】
入力要素ＩＮ６には、変数「Ｅｒｒｏｒ１」が割り当てられている。変数「Ｅｒｒｏｒ１」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。また、変数「Ｅｒｒｏｒ１」は、ファンクションブロックＦＢ２の出力「Ｅｒｒｏｒ」に関連付けられている。上述したように、フィルタリング条件１１２の変更処理が異常終了した場合には、ファンクションブロックＦＢ２の出力「Ｅｒｒｏｒ」からは、異常を示す信号「Ｔｒｕｅ」（＝ＯＮ）が出力される。ファンクションブロックＦＢ２の出力「Ｅｒｒｏｒ」が「Ｔｒｕｅ」（＝ＯＮ）となると、入力要素ＩＮ６の値は、「Ｔｒｕｅ」（＝ＯＮ）となる。一方で、ファンクションブロックＦＢ２の出力「Ｅｒｒｏｒ」が「Ｆａｌｓｅ」（＝ＯＦＦ）となると、入力要素ＩＮ６の値は、「Ｆａｌｓｅ」（＝ＯＦＦ）となる。
【００７８】
入力要素ＩＮ７には、変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」が割り当てられている。変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。また、変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」は、ファンクションブロックＦＢ０の出力「Ｑ１」に関連付けられている。ファンクションブロックＦＢ０の出力「Ｑ１」が「Ｔｒｕｅ」（＝ＯＮ）となると、入力要素ＩＮ７の値は、「Ｔｒｕｅ」（＝ＯＮ）となる。一方で、ファンクションブロックＦＢ０の出力「Ｑ１」が「Ｆａｌｓｅ」（＝ＯＦＦ）となると、入力要素ＩＮ７の値は、「Ｆａｌｓｅ」（＝ＯＦＦ）となる。
【００７９】
入力要素ＩＮ８には、変数「ＰＡ」が割り当てられている。変数「ＰＡ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。図４には示されていないが、作業工程Ａを実現するための制御機能がユーザプログラム１１０に規定されている。当該制御機能は、規定されている制御内容に従って外部装置２００に制御命令を出力する。制御機能は、作業工程Ａの実行中に変数「ＰＡ」の値を「Ｔｒｕｅ」（＝ＯＮ）とし、作業工程Ａの実行中でない場合に変数「ＰＡ」の値を「Ｆａｌｓｅ」（＝ＯＦＦ）とするように規定されている。このように、ユーザプログラム１１０で利用可能な変数「ＰＡ」が所定値（例えば「Ｔｒｕｅ」）であることを条件に、ファンクションブロックＦＢ１により作業工程Ａに応じたフィルタリング条件１１２が設定される。
【００８０】
入力要素ＩＮ９には、変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」が割り当てられている。変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」は、ファンクションブロックＦＢ０の出力「Ｑ１」に関連付けられている。ファンクションブロックＦＢ０の出力「Ｑ１」が「Ｔｒｕｅ」（＝ＯＮ）となると、入力要素ＩＮ９の値は、「Ｔｒｕｅ」（＝ＯＮ）となる。一方で、ファンクションブロックＦＢ０の出力「Ｑ１」が「Ｆａｌｓｅ」（＝ＯＦＦ）となると、入力要素ＩＮ９の値は、「Ｆａｌｓｅ」（＝ＯＦＦ）となる。
【００８１】
入力要素ＩＮ１０には、変数「ＰＢ」が割り当てられている。変数「ＰＢ」は、ＢＯＯＬ型であり、初期値は、「Ｆａｌｓｅ」（＝ＯＦＦ）である。図４には示されていないが、作業工程Ｂを実現するための制御機能がユーザプログラム１１０に規定されている。当該制御機能は、規定されている制御内容に従って外部装置２００に制御命令を出力する。制御機能は、作業工程Ｂの実行中に変数「ＰＢ」の値を「Ｔｒｕｅ」（＝ＯＮ）とし、作業工程Ｂの実行中でない場合に変数「ＰＢ」の値を「Ｆａｌｓｅ」（＝ＯＦＦ）とするように規定されている。このように、ユーザプログラム１１０で利用可能な変数「ＰＢ」が所定値（例えば「Ｔｒｕｅ」）であることを条件に、ファンクションブロックＦＢ２により作業工程Ｂに応じたフィルタリング条件１１２が設定される。
【００８２】
次にファンクションブロックＦＢ０、ＦＢ１、および、ＦＢ２についての詳細な説明を行う。
【００８３】
ファンクションブロックＦＢ０は、作業工程Ａの開始時、または、作業工程Ｂの開始時に実行されるリセット処理を実行するためのプログラムである。ファンクションブロックＦＢ０は、入力部「Ｓｅｔ」，「Ｒｅｓｅｔ１」と、出力部「Ｑ１」とを有する。変数「ＣｈａｎｇｅＴｒｉｇｇｅｒ」が「Ｔｒｕｅ」（＝ＯＮ）になり、かつ、変数「Ｂｕｓｙ０」および変数「Ｂｕｓｙ１」が「Ｆａｌｓｅ」（＝ＯＦＦ）になった場合に、有効を示す信号「Ｔｒｕｅ」（＝ＯＮ）が入力部「Ｓｅｔ」に入力される。それ以外の場合には、有効を示す信号「Ｆａｌｓｅ」（＝ＯＦＦ）が入力部「Ｓｅｔ」に入力される。
【００８４】
また、変数「Ｄｏｎｅ０」が「Ｔｒｕｅ」（＝ＯＮ）になった場合、または、変数「Ｄｏｎｅ１」が「Ｔｒｕｅ」（＝ＯＮ）になった場合、または、変数「Ｅｒｒｏｒ０」が「Ｔｒｕｅ」（＝ＯＮ）になった場合、または、変数「Ｅｒｒｏｒ１」が「Ｔｒｕｅ」（＝ＯＮ）になった場合は、有効を示す信号「Ｔｒｕｅ」（＝ＯＮ）が入力部「Ｒｅｅｓｔ１」に入力される。それ以外の場合には、有効を示す信号「Ｆａｌｓｅ」（＝ＯＦＦ）が入力部「Ｒｅｅｓｔ１」に入力される。有効を示す信号が入力部「Ｓｅｔ」，「Ｒｅｓｅｔ１」の両方に入力されたことに基づいて、ファンクションブロックＦＢ０は、作業工程Ａに関するリセット処理を開始する。当該リセット処理が正常に終了した場合には、ファンクションブロックＦＢ０の出力部「Ｑ１」の値は、「Ｔｒｕｅ」（＝ＯＮ）となる。
【００８５】
ファンクションブロックＦＢ１は、通信データのフィルタリング条件１１２を変更するためのプログラムであり、ユーザプログラム１１０に含まれる命令に相当する。変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」が「Ｔｒｕｅ」（＝ＯＮ）になり、かつ、変数「ＰＡ」が「Ｔｒｕｅ」（＝ＯＮ）になったことに基づいて、有効を示す信号「Ｔｒｕｅ」（＝ＯＮ）がファンクションブロックＦＢ１の入力部「Ｅｘｅｃｕｔｅ」に入力される。このことに基づいて、ファンクションブロックＦＢ１は、フィルタリング条件１１２の変更処理を実行する。
【００８６】
より具体的には、ファンクションブロックＦＢ１は、入力部「Ｐｒｏｔｏｃｏｌ」に入力される「ＴＣＰ」、入力部「ＩＰ  Ａｄｄｒｅｓｓ」に入力される「１０．０．０．１」、および、入力部「Ｐｏｒｔ」に入力される「８０」に従ったフィルタリング条件１１２を新たなフィルタリング条件１１２として設定する。フィルタリング条件１１２の変更方法の詳細については図３で説明した通りであるので、その説明については繰り返さない。
【００８７】
ファンクションブロックＦＢ２は、通信データのフィルタリング条件１１２を変更するためのプログラムの一例であり、ユーザプログラム１１０に含まれる命令に相当するプログラムである。変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」が「Ｔｒｕｅ」（＝ＯＮ）になり、かつ、変数「ＰＢ」が「Ｔｒｕｅ」（＝ＯＮ）になったことに基づいて、有効を示す信号「Ｔｒｕｅ」（＝ＯＮ）がファンクションブロックＦＢ２の入力部「Ｅｘｅｃｕｔｅ」に入力される。このことに基づいて、ファンクションブロックＦＢ２は、フィルタリング条件１１２の変更処理を実行する。
【００８８】
より具体的には、ファンクションブロックＦＢ２は、入力部「Ｐｒｏｔｏｃｏｌ」に入力される「ＦＴＰ」、入力部「ＩＰ  Ａｄｄｒｅｓｓ」に入力される「１０．０．０．２」、および、入力部「Ｐｏｒｔ」に入力される「２０」に従ったフィルタリング条件１１２を新たなフィルタリング条件１１２として設定する。すなわち、ファンクションブロックＦＢ２で設定されたフィルタリング条件１１２ｂは、ファンクションブロックＦＢ１で設定されたフィルタリング条件１１２ａとは異なる条件となる。
【００８９】
これにより、コントローラ１０は、通信データの収集タイミングを任意のタイミングに調整できる。具体的には、コントローラ１０は、通信データの収集タイミングを作業工程の状態に応じて調整できる。
【００９０】
このため、コントローラ１０の限られた記憶容量であっても、通信異常が生じた場合に異常要因を特定できるだけの通信データを効率的に取得できる。
【００９１】
出力要素ＯＵＴ０〜ＯＵＴ２の値は、それぞれ、関連付けられているファンクションブロックの出力値に応じて変化する。出力要素ＯＵＴ０には、変数「ＳｅｔｔｉｎｇＴｒｉｇｇｅｒ」が割付けられている。また、出力要素ＯＵＴ０は、ファンクションブロックＦＢ０の出力「Ｑ１」に関連付けられている。その結果、出力要素ＯＵＴ０の値は、出力「Ｑ１」の値に応じて変化する。
【００９２】
出力要素ＯＵＴ１には、変数「Ｄｏｎｅ０」が割付けられている。また、出力要素ＯＵＴ１は、ファンクションブロックＦＢ１の出力「Ｄｏｎｅ」に関連付けられている。その結果、出力要素ＯＵＴ１の値は、ファンクションブロックＦＢ１の出力「Ｄｏｎｅ」の値に応じて変化する。
【００９３】
出力要素ＯＵＴ２には、変数「Ｄｏｎｅ１」が割付けられている。また、出力要素ＯＵＴ２は、ファンクションブロックＦＢ２の出力「Ｄｏｎｅ」に関連付けられている。その結果、出力要素ＯＵＴ２の値は、ファンクションブロックＦＢ２の出力「Ｄｏｎｅ」の値に応じて変化する。
【００９４】
以上のようにして、作業工程の状態を示す変数の値に応じて、作業工程Ａにおいては、ファンクションブロックＦＢ１に入力されるフィルタリング条件１１２ａが設定され、作業工程Ｂにおいては、ファンクションブロックＦＢ２のフィルタリング条件１１２ｂが適宜設定される。
【００９５】
このようなフィルタリング条件の変更について図５を用いて説明する。図５は、作業工程の開始から終了とフィルタリング条件の変更の対応関係を示す図である。図５では、時間（ｍｓｅｃ）の経過に伴う作業工程の実行状態と、作業工程の開始と終了とを示す変数の値と、作業工程に応じて設定されるフィルタリング条件とが示されている。最初に時刻ｔ１において、作業工程Ａが実行されると、作業工程Ａの変数「ＰＡ」の値が「Ｔｒｕｅ」（作業開始＝工程ＡフラグＯＮ）になると、ユーザプログラムに含まれる命令に従って、収集機能２０１にフィルタリング条件１１２ａ（フィルタリング条件１）が設定される。
【００９６】
その後の時刻ｔ２において、作業工程Ａの実行が終了して作業工程Ａの変数「ＰＡ」の値が「Ｆａｌｓｅ」（作業終了＝工程ＡフラグＯＦＦ）になると、収集機能２０１はフィルタリング条件１１２ａに基づく通信データの収集を終了する。
【００９７】
その後の時刻ｔ３において、作業工程Ｂが実行されると、作業工程Ｂの変数「ＰＢ」の値が「Ｔｒｕｅ」（作業開始＝工程ＢフラグＯＮ）になると、ユーザプログラムに含まれる命令に従って、収集機能２０１にフィルタリング条件１１２ｂ（フィルタリング条件２）が設定される。
【００９８】
その後の時刻ｔ４において、作業工程Ｂが終了して作業工程Ｂの変数「ＰＢ」の値が「Ｆａｌｓｅ」（作業終了＝工程ＢフラグＯＦＦ）になると、収集機能２０１はフィルタリング条件１１２ｂに基づく通信データの収集を終了する。
【００９９】
このように、各作業工程に応じたフィルタリング条件に切替えて設定することで、作業工程ごとの異常発生要因を特定し得る通信データを容易に収集できる。
【０１００】
次に、本実施の形態に従うＦＡシステム１の具体例について説明する。図６は、本実施の形態に従うＦＡシステム１の概略構成を示す模式図である。
【０１０１】
ＦＡシステム１は、コントローラ１０と、外部装置２００と、サポート装置３００とを有する。
【０１０２】
コントローラ１０は、複数のネットワークに接続され得る。図６の例では、コントローラ１０の通信ポート２００Ｐ１は上位のネットワークＮ１に接続され、通信ポート２００Ｐ２は下位のネットワークＮ２に接続されている。上位のネットワークＮ１には、例えば、ＥｔｈｅｒＮＥＴ（登録商標）が採用される。下位のネットワークＮ２には、例えば、データの到達時間が保証されるような定周期通信を行うネットワークを採用することが好ましいことから、例えば、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）や、ＥｔｈｅｒＣＡＴ（登録商標）などが採用される。但し、ネットワークＮ１およびＮ２においては、これらに限定されず、任意の通信手段が採用され得る。
【０１０３】
上位のネットワークＮ１における外部装置２００は、例えば、サーバ装置２００Ａと、表示器２００Ｂとの少なくとも１つで構成される。具体的には、サーバ装置２００Ａは、データベースシステム、製造実行システム（ＭＥＳ）などが想定される。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これらに限らず、情報系サービス（制御対象から各種情報を取得して、マクロ的またはミクロ的な分析などを行う処理）を提供する装置をネットワークＮ１に接続するようにしてもよい。コントローラ１０は、サーバ装置２００Ａが実行する作業工程に応じて取得する通信データをユーザプログラム１１０と収集機能２０１との協働によるフィルタリングの対象とする。
【０１０４】
具体的には、サーバ装置２００Ａの作業工程の状態を示すユーザプログラム１１０で利用可能な変数が所定値であることを条件に、サーバ装置２００Ａの作業工程に応じたフィルタリング条件１１２が変更される。これにより、ファンクションブロックのフィルタリング条件１１２が変更される。収集機能２０１は、変更されたフィルタリング条件に基づいて、通信データをフィルタリングして収集する。
【０１０５】
表示器２００Ｂは、コントローラ１０での演算結果などをグラフィカルに表示し、ユーザからの操作を受けて、コントローラ１０に対してユーザ操作に応じたコマンドなどを出力する。コントローラ１０は、表示器２００Ｂが実行する作業工程に応じて取得する通信データをユーザプログラム１１０と収集機能２０１との協働によるフィルタリングの対象とする。
【０１０６】
具体的には、表示器２００Ｂの作業工程の状態を示すユーザプログラム１１０で利用可能な変数が所定値であることを条件に、表示器２００Ｂの作業工程に応じたフィルタリング条件１１２が設定される。これにより、ファンクションブロックのフィルタリング条件１１２が変更される。収集機能２０１は、変更されたフィルタリング条件１１２に基づいて、通信データをフィルタリングして収集する。
【０１０７】
サポート装置３００は、ユーザプログラム１１０を設計するための開発環境を設計者に提供する。サポート装置３００は、たとえば、ノート型ＰＣ、デスクトップ型ＰＣ、タブレット端末、または、スマートフォンなどである。設計者は、サポート装置３００上でユーザプログラム１１０を設計し、当該ユーザプログラム１１０をＵＳＢインターフェイス１１２を介してコントローラ１０にダウンロードすることができる。
【０１０８】
下位のネットワークＮ２における外部装置２００は、例えば、画像センサ２００Ｃおよびカメラ２００Ｄと、リモートＩ／Ｏ装置２００Ｅおよびアームロボット２００Ｆの少なくとも一つで構成される。コントローラ１０と下位のネットワークＮ２における外部装置２００とは例えばデイジーチェーンで順次接続されている。
【０１０９】
画像センサ２００Ｃは、例えば、カメラ２００Ｄによって撮像されたワークＷの画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果をコントローラ１０へ送信する作業工程を実行する。
【０１１０】
具体的には、画像センサ２００Ｃの作業工程の状態を示すユーザプログラム１１０で利用可能な変数が所定値であることを条件に、画像センサ２００Ｃの作業工程に応じたフィルタリング条件１１２に変更される。収集機能２０１は、変更されたフィルタリング条件１１２に基づいて、通信データをフィルタリングして収集する。
【０１１１】
リモートＩ／Ｏ装置２００Ｅは、コントローラ１０の制御指令に従ってアームロボット２００Ｆを制御する。一例として、コントローラ１０は、画像センサ２００Ｃによる作業工程に従って、アームロボット２００Ｆに所定の作業工程を行わせるための制御指令をリモートＩ／Ｏ装置２００Ｅに出力する。リモートＩ／Ｏ装置２００Ｅは、当該制御指令に従ってアームロボット２００Ｆを制御する。一例として、リモートＩ／Ｏ装置２００Ｅは、検査品質が不良と判断されたワークＷをコンベアから除去するように制御指令を与える。アームロボット２００Ｆの状態（たとえば、各関節の位置や角度など）は、リモートＩ／Ｏ装置２００Ｅからコントローラ１０に順次フィードバックされる。
【０１１２】
具体的には、リモートＩ／Ｏ装置２００Ｅの作業工程の状態を示すユーザプログラム１１０で利用可能な変数が所定値であることを条件に、リモートＩ／Ｏ装置２００Ｅの作業工程に応じたフィルタリング条件１１２に変更される。収集機能２０１は、変更されたフィルタリング条件に基づいて、通信データをフィルタリングして収集する。
【０１１３】
＜Ｅ．通信データのデータ構造＞
コントローラ１０によるフィルタリング対象の通信データの種類は、ネットワークにおいて伝送される通信データであれば特に限定されない。図７は、本実施の形態に従うフィルタリング対象の通信データの一例を示す図である。以下では、図７を参照して、コントローラ１０によるフィルタリング対象の通信データの一例について説明する。
【０１１４】
コントローラ１０によるフィルタリング対象の通信データは、たとえば、ＴＣＰ／ＩＰプロトコルに従う通信パケットを含む。
【０１１５】
送信元機器である外部装置２００は、送信対象のデータを複数の通信パケットに分割して、各通信パケットをコントローラ１０に順次送信する。図７には、送信元機器によって分割された通信パケットの１つが通信パケットＰＡとして示されている。
【０１１６】
通信パケットＰＡは、Ｅｔｈｅｒｎｅｔプロトコルのヘッダ部分であるＥｔｈｅｒｎｅｔヘッダと、Ｅｔｈｅｒｎｅｔプロトコルのデータ部分であるＥｔｈｅｒｎｅｔデータとで構成されている。Ｅｔｈｅｒｎｅｔデータは、ＩＰプロトコルのヘッダ部分であるＩＰヘッダと、ＩＰプロトコルのデータ部分であるＩＰデータとで構成されている。ＩＰデータは、ＴＣＰプロトコルのヘッダ部分であるＴＣＰヘッダと、ＴＣＰプロトコルのデータ部分であるＴＣＰデータとで構成されている。
【０１１７】
通信パケットＰＡのＩＰヘッダは、送信元機器である外部装置２００（例えば、サーバ装置２００Ａ）のＩＰアドレスと、送信先機器であるコントローラ１０のＩＰアドレスと、通信プロトコルとを含む。通信パケットＰＡのＴＣＰヘッダは、送信元機器のポート番号と、送信先機器のポート番号とを含む。通信パケットＰＡのＴＣＰデータは、送信対象のデータの内容を含む。送信対象のデータは、たとえば、外部装置２００の状態を表わす各種変数や、各種変数の取得命令などを含む。ここでいう変数とは、ユーザプログラム１１０に含まれる各種変数のこという。当該変数は、外部装置２００の各種コンポーネントの状態に応じて変化する。
【０１１８】
コントローラ１０は、通信パケットＰＡを受信したことに基づいて、当該通信パケットＰＡからフィルタリング条件１１２と比較するための情報を抽出する。当該情報は、たとえば、送信元機器のＩＰアドレスと、送信先機器のＩＰアドレスと、通信プロトコルと、送信元機器のポート番号と、送信先機器のポート番号との少なくとも１つを含む。コントローラ１０は、通信パケットＰＡから抽出した情報がフィルタリング条件１１２を満たすか否かを判断する。通信パケットＰＡから抽出した情報がフィルタリング条件１１２を満たすと判断した場合、コントローラ１０は、通信パケットＰＡをフィルタリング対象とする。
【０１１９】
＜Ｆ．コントローラ１０の制御構造＞
図８を参照して、コントローラ１０の制御構造について説明する。図８は、本実施の形態に従うコントローラ１０が実行する処理の一部を表わすフローチャートである。図８に示される処理は、コントローラ１０のユーザプログラム１１０に含まれる命令に従って、収集機能２０１がフィルタリング条件変更することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
【０１２０】
ステップＳ１１０において、コントローラ１０のプログラム実行部１０３は、ユーザプログラム１１０の実行命令を受け付けたか否かを判断する。プログラム実行部１０３は、ユーザプログラム１１０の実行命令を受け付けたと判断した場合（ステップＳ１１０においてＹＥＳ）、制御をステップＳ１１２に切り替える。そうでない場合には（ステップＳ１１０においてＮＯ）、プログラム実行部１０３は、ステップＳ１１０の処理を再び実行する。
【０１２１】
ステップＳ１１２において、プログラム実行部１０３は、外部装置２００との通信の確立など初期化処理を実行する。その後、プログラム実行部１０３は、ユーザプログラム１１０に規定されている制御機能を実行し、外部装置２００の制御を開始する。
【０１２２】
ステップＳ１２０において、プログラム実行部１０３は、通信データのフィルタリング条件１１２を変更するための実行命令を受け付けたか否かを判断する。一例として、プログラム実行部１０３は、上述の「Ｅｘｅｃｕｔｅ」として示される入力部１５５Ａ（図３参照）に「Ｔｒｕｅ」（＝ＯＮ）が入力されたことに基づいて、フィルタリング条件１１２を変更するための実行命令を受け付けたと判断する。
【０１２３】
プログラム実行部１０３は、フィルタリング条件１１２を変更するための実行命令を受け付けたと判断した場合（ステップＳ１２０においてＹＥＳ）、制御をステップＳ１２２に切り替える。そうでない場合には（ステップＳ１２０においてＮＯ）、プロセッサ１０２は、制御をステップＳ１３０に切り替える。
【０１２４】
ステップＳ１２２において、プログラム実行部１０３は、ユーザプログラム１１０に含まれる命令を収集機能２０１に出力する。収集機能２０１は、ユーザプログラム１１０に含まれる命令に従って、フィルタリング条件を変更する。一例として、収集機能は２０１は、図３に示される入力部１５５Ｂ〜１５５Ｄに入力される値を変更する。フィルタリング条件の変更方法については図３で説明した通りであるので、その説明については繰り返さない。
【０１２５】
ステップＳ１３０において、プログラム実行部１０３は、外部装置２００から何らかの通信データを受信したか否かを判断する。プログラム実行部１０３は、外部装置２００から何らかの通信データを受信したと判断した場合（ステップＳ１３０においてＹＥＳ）、制御をステップＳ１４０に切り替える。プログラム実行部１０３は、そうでない場合には（ステップＳ１３０においてＮＯ）、制御をステップＳ１５０に切り替える。
【０１２６】
ステップＳ１４０において、収集機能２０１は、通信データが現在設定されているフィルタリング条件を満たすか否かを判断する。この通信データは例えば、外部装置２００からネットワークコントローラ１００を介してプログラム実行部１０３に送信されるデータである。収集機能２０１は、一例として外部装置２００の識別情報（例えば、ＩＰアドレス）と、外部装置２００のポート番号と、通信データの受信時に利用された通信プロトコルの少なくとも一つを、フィルタリング条件と比較する比較情報として通信データから抽出する。
【０１２７】
プログラム実行部１０３は、比較情報がフィルタリング条件に合致している場合（ステップＳ１４０においてＹＥＳ）、制御をステップＳ１４２に切り替える。そうでない場合には（ステップＳ１４０においてＮＯ）、プログラム実行部１０３は、制御をステップＳ１５０に切り替える。
【０１２８】
ステップＳ１４２において、収集機能２０１は、設定されているフィルタリング条件に従って通信データを収集する。収集機能２０１は、収集した通信データを記憶装置１０８に格納する。
【０１２９】
ステップＳ１５０において、プログラム実行部１０３は、ユーザプログラム１１０の停止命令を受け付けたか否かを判断する。プログラム実行部１０３は、ユーザプログラム１１０の停止命令を受け付けたと判断した場合（ステップＳ１５０においてＹＥＳ）、図８に示される処理を終了する。そうでない場合には（ステップＳ１５０においてＮＯ）、プログラム実行部１０３は、制御をステップＳ１２０に戻す。
【０１３０】
＜Ｇ．収集機能を有する構成例の説明＞
図９は、本実施の形態に従うユーザプログラム１１０と収集機能２０１との処理が実行される場所を示す図である。
【０１３１】
図９を参照して、コントローラ１０のユーザプログラム１１０と収集機能２０１とを有する具体的な構成例について説明する。図９（ａ）および（ｂ）に示すネットワークコントローラ１００（１００Ｐ１,１００Ｐ２）とプロセッサ１０２とは図１および図２で説明した構成と基本的な構成は同一である。図９（ａ）および図９（ｂ）では、ユーザプログラム１１０と、ユーザプログラム１１０に含まれる命令に従って、フィルタリング処理を実行する収集機能２０１とを有する具体的な構成例を示す。
【０１３２】
図９（ａ）に示す例では、ユーザプログラム１１０の処理はプロセッサ１０２で実行される。すなわち、プロセッサ１０２が、ユーザプログラムに含まれる命令に従って、収集機能２０１のフィルタリング条件を変更可能とする。そのため、収集機能２０１の処理は、ユーザプログラム１１０と同様にプロセッサ１０２で実行される。
【０１３３】
図９（ｂ）に示す例では、ユーザプログラム１１０の処理はプロセッサ１０２で実行される。すなわち、プロセッサ１０２が、ユーザプログラムに含まれる命令に従って、収集機能２０１のフィルタリング条件を変更可能とする。収集機能２０１の処理は、ユーザプログラム１１０と異なり、ネットワークコントローラ１００の送受信コントローラ１０１０で実行される。
【０１３４】
このように、収集機能２０１は、プロセッサ１０２およびネットワークコントローラ１００のどちらでも実行可能であり、各装置の処理負荷やユーザの利用目的に応じて機能を柔軟に置き換えることが可能となる。
【０１３５】
＜Ｈ．まとめ＞
以上のようにして、コントローラ１０のプログラム実行部１０３は、ネットワークコントローラ１００との間で通信データを送受信するとともに、ユーザによって任意に作成されるユーザプログラム１１０に従って、制御対象に対する制御命令を生成する。収集機能２０１は、ユーザプログラム１１０に含まれる命令に従って、通信データのフィルタリング条件１１２を変更可能とする。
【０１３６】
これにより、制御装置１０は、ユーザプログラムに含まれる命令に従って、収集機能２０１のフィルタリング条件を変更可能とすることで、収集する通信データの内容を動的に変化させることができ、処理状況に応じて収集する通信データを適宜異ならせることができる。そのため、通信データに異常が発生した場合には、異常要因を特定するためのデータのみを収集でき、制御装置１０の限られた記憶容量に対して効率的な利用が可能となる。
【０１３７】
＜Ｉ．応用例＞次に、本実施の形態に係るＦＡシステム１のいくつかの応用例について説明する。
【０１３８】
＜Ｉ−１：フィルタリング条件テーブルによるフィルタリング条件の変更＞
第１の応用例について説明する。
【０１３９】
図１０は、本実施の形態に従うコントローラ１０のハードウェア構成例を示すブロック図である。図１０の構成は前述の図２のハードウェア構成例と同一の構成を含む。この図１０の説明では、図２の構成と同一の構成についての説明は繰り返さずに、異なる構成について説明する。
【０１４０】
図１０の記憶装置１０８ａはユーザプログラム１１０と、システムプログラム１１５と、収集データ２０２とに加えて、フィルタリング条件テーブル５０１を含む。
【０１４１】
フィルタリング条件テーブル５０１は、ユーザがサポート装置３００を用いて生成するフィルタリング条件を管理するテーブルである。コントローラ１０の記憶装置１０８は、生成されたフィルタリング条件テーブル５０１を格納する。なお、図１０では、記憶装置１０８は、フィルタリング条件テーブル５０１をユーザプログラム１１０とは別に格納するものとして説明するが、ユーザプログラム１１０内にフィルタリング条件テーブル５０１を含めてもよい。
【０１４２】
図１１は、フィルタリング条件テーブル５０１の一例を示す図である。フィルタリング条件テーブル５０１は、Ｎｕｍｂｅｒ項目５０２、指定方法項目５０３、ＩＰアドレス項目５０４、サブネットマスク項目５０５、プロトコル項目５０６、Ｒａｎｇｅ項目５０７、Ｐｏｒｔ１項目５０８、Ｐｏｒｔ２項目５０９の各項目（パラメータ）を有する。
【０１４３】
Ｎｕｍｂｅｒ項目５０２は、フィルタリング条件の複数の項目の値（パラメータの値）を１つのグループとした指標である。上記の実施の形態では、フィルタリング条件１１２はユーザプログラム１１０においてその内容が明示されており、収集機能２０１はこのような直接的にフィルタリング条件のパラメータの値を示す命令に従って、フィルタリング条件を変更する処理を説明した。
【０１４４】
これに対して、本応用例では、フィルタリング条件の異なるパラメータの値を１つのグループとし、複数のグループのそれぞれを指標（例えば番号）で規定する。このように規定された指標は、複数のフィルタリング条件のうちのいずれの条件が有効であるかを示す情報であって、ユーザプログラム１１０に含まれる命令に相当する。収集機能２０１は、このような間接的にフィルタリング条件のパラメータの値を示す命令に従って、フィルタリング条件を任意に変更できる。
【０１４５】
なお、以下では複数の項目（パラメータ）を１つの指標に対応づけて説明を行うが、項目の数は一つであってもよい。この場合、一つの項目の値に対して１つの指標が対応づけられる。
【０１４６】
図１１のテーブルに含まれる指定方法項目５０３、ＩＰアドレス項目５０４、サブネットマスク項目５０５の各項目はレイヤー３（Ｌ３）であるネットワーク層に関する項目である。サポート装置３００は、ユーザの操作により指定方法項目５０３を指定することでその他の項目の入力を可能とする。指定方法項目５０３の内容の具体例としては、ＩＰアドレスを指定する「ＩＰ指定」や、特定の項目の指定を行わない「Ｉｎｔｅｒｆａｃｅ  Ｎｅｔｗｏｒｋ」や「ａｎｙ」等である。ＩＰアドレス項目５０４、および、サブネットマスク項目５０５は、指定方法項目５０３で「ＩＰ指定」が選択されることで、ユーザによる具体的な値の入力が可能となる。サポート装置３００は、これらの項目に対するユーザからのＩＰアドレス、および、サブネットマスクの値を入力を受け付けることで、フィルタリング条件テーブル５０１のレイヤー３に関する項目の値を設定する。
【０１４７】
図１１のテーブルに含まれるプロトコル項目５０６、Ｒａｎｇｅ項目５０７、Ｐｏｒｔ１項目５０８、Ｐｏｒｔ２項目５０９の各項目はレイヤー４（Ｌ４）であるトランスポート層に関する項目である。図１１では、ユーザの操作によりＲａｎｇｅ項目５０７にチェックを入力することで、ポート間の設定が可能となる。例えば、ユーザの操作によりＲａｎｇｅ項目５０７にチェックを入力した後に、Ｐｏｒｔ１の項目に「８０」を入力し、Ｐｏｒｔ２の項目に「１００」を入力することで、ポート８０〜１００の間の通信データがフィルタリングの対象となる条件設定が可能となる。なお、このようなポート間の入力は、Ｒａｎｇｅ項目５０７にチェックを入力する以外の方法で行うようにしてもよい。例えば、Ｒａｎｇｅ項目を設けることなく、ユーザが複数の数値をＰｏｒｔ１およびＰｏｒｔ２の各項目に直接入力するようにしてもよいし、「８０−１００」等のようにポート間を示す値を１つの項目にユーザが直接入力するようにしてもよい。
【０１４８】
サポート装置３００は、これらの項目に対するユーザからのプロトコルの種類と、ポート番号の範囲設定の有無と、ポート番号とのユーザからの入力を受け付けることで、フィルタリング条件テーブル５０１のレイヤー４に関する項目の値を設定する。なお、プロトコル項目５０６において「ＴＣＰ」が選択された場合は、レイヤー４においてＴＣＰを使用する任意のプロトコル（例えば、ＨＴＴＰ）が選択されたことを意味する。
【０１４９】
このようにして生成されたフィルタリング条件テーブル５０１は、複数のフィルタリング条件を含む。サポート装置３００は、フィルタリング条件テーブル５０１をコントローラ１０の記憶装置１０８に格納する。
【０１５０】
なお、このフィルタリング条件テーブル５０１の例ではレイヤー３とレイヤー４に関する項目についての設定について説明したが、アプリケーション層や、データリンク層等の他のレイヤーに関する項目についての値を設定可能としてもよい。
【０１５１】
図１２は、本実施の形態に従うファンクションブロックＦＢａの説明図である。図１２のファンクションブロックＦＢａの基本的な構成は図３で説明したファンクションブロックＦＢと同一である。
【０１５２】
図１２のファンクションブロックＦＢａが図３のファンクションブロックＦＢと異なる構成は、入力部１５５Ｅと、入力部１５５Ｆとを含むことである。「Ｎｕｍｂｅｒ］として示される入力部１５５Ｆは、フィルタリング条件テーブル５０１に設定されている複数の項目を１つのグループにした指標（例えば、番号）の入力を受け付ける。入力部１５５Ｆは、フィルタリング条件を間接的に示す値を受け付けて、フィルタリング条件を設定することが可能である。
【０１５３】
また、「Ｓｕｂｎｅｔ  Ｍａｓｋ」として示される入力部１５５Ｅは、フィルタリング条件テーブル５０１のサブネットマスクを指定するための値の入力を受け付ける。
【０１５４】
図１３を参照して、図１２で説明したファンクションブロックＦＢａの使用例について説明する。図１３は、本実施の形態に従う図１２で説明したファンクションブロックＦＢａを組み込んだユーザプログラムの例を示す図である。
【０１５５】
なお、図１３のラダープログラムは図４で説明したラダープログラムと同一の内容であり、ファンクションブロックの一部の構成が異なる。このような一部の構成に該当する入力部「Ｎｕｍｂｅｒ」と、入力部「Ｓｕｂｎｅｔ  Ｍａｓｋ」との内容を図１３に示すファンクションブロックＦＢ３およびＦＢ４を用いて説明する。
【０１５６】
ファンクションブロックＦＢ３は、入力部「Ｎｕｍｂｅｒ」に入力される値により、他の入力部に入力される値を設定する。具体的には、入力部「Ｎｕｍｂｅｒ」に入力される値が「１」の場合、図１１で説明したフィルタリング条件テーブル５１０のＮｕｍｂｅｒ「１」に対応する各項目の値が他の入力部に設定される。具体的には、図１３のファンクションブロックＦＢ３で示すように入力部「Ｐｒｏｔｏｃｏｌ」に「ＴＣＰ」、入力部「ＩＰ  Ａｄｄｒｅｓｓ」に「１０．０．０．１」、入力部「Ｐｏｒｔ」に「８０」、および、入力部「Ｓｕｂｎｅｔ  Ｍａｓｋ」に「２５５．２５５．２５５．０」が設定される。
【０１５７】
ファンクションブロックＦＢ４は、入力部「Ｎｕｍｂｅｒ」に入力される値により、他の入力部に入力される値を設定する。具体的には、入力部「Ｎｕｍｂｅｒ」に入力される値が「２」の場合、図１１で説明したフィルタリング条件テーブル５０１のＮｕｍｂｅｒ「２」に対応する各項目の値が他の入力部に設定される。具体的には、入力部「Ｐｒｏｔｏｃｏｌ」に「ＦＴＰ」、入力部「ＩＰ  Ａｄｄｒｅｓｓ」に「１０．０．０．２」、入力部「Ｐｏｒｔ」に「２０」、および、入力部「Ｓｕｂｎｅｔ  Ｍａｓｋ」に「２５５．２５５．２５５．０」が設定される。
【０１５８】
このように、フィルタリング条件を間接的に示す値である番号を入力部に入力することで、予めテーブルに規定されている複数のパラメータの値が他の入力部の入力値として設定される。
【０１５９】
このように、ユーザプログラム１１０に含まれる命令には、記憶装置１０８に予め格納されたフィルタリング条件テーブル５１０に含まれる複数のフィルタリング条件のうち、いずれの条件が有効かを示す情報（例えば、Ｎｕｍｂｅｒの値）が含まれている。このようなフィルタリング条件を間接的に示す情報により、フィルタリング条件を変更可能となるため、作業工程の処理の状況に応じて収集すべき通信データの対象をユーザの任意の対象に容易に設定できる。
【０１６０】
なお、記憶装置１０８ａに格納されているフィルタリング条件テーブル５０１に基づくフィルタリング条件の変更処理は、プロセッサ１０２が実行してもよいし、ネットワークコントローラ１００が実行してもよい。
【０１６１】
＜Ｉ−２：サポート装置を用いたフィルタリング条件の生成例（その１）＞
図１４〜図１７を参照して、サポート装置３００を用いたフィルタリング条件の生成の一例について説明する。
【０１６２】
図１４は、本実施の形態に従うサポート装置３００を用いたフィルタリング条件の生成処理の流れの一例を示す図である。最初にサポート装置３００は、コントローラ１０から出力される通信データを取得する。[(1)通信データ取得]
次に、コントローラ１０のプロセッサ１０２は、ネットワークコントローラ１００が受信した通信データを記憶装置１０８に格納する。コントローラ１０は、記憶装置１０８に格納された通信データ１５６をサポート装置３００に出力する処理を実行する。
【０１６３】
サポート装置３００は、コントローラ１０から取得した通信データ１５６を表示部３１０に表示する。[(2)通信データ表示]
図１５および図１６は、サポート装置３００の表示部３１０に表示される画像であって、通信データの速度の時間推移を示す画像の一例を示す図である。具体的には、図１５は、本実施の形態に従う複数の外部装置２００（ＩＰアドレス）の通信データの通信速度変化の時間推移を示す図である。具体的には、図１６は、本実施の形態に従う複数のプロトコルの通信データの通信速度変化の時間推移を示す図である。図１５および図１６の縦軸は単位時間当たりの通信データの通信速度（ｂｐｓ）を示し、横軸は時間（ｍｓｅｃ）を示す。図１５では３つの外部装置２００（外部装置Ａ〜Ｃ）の通信速度の推移線Ｌ１〜Ｌ３を示す。具体的には、外部装置Ａが推移線Ｌ１に対応し、外部装置Ｂが推移線Ｌ２に対応し、外部装置Ｃが推移線Ｌ３に対応する。また、図１６では３つのプロトコル（ＦＴＰ、データリンク、ＣＩＰメッセージ）の通信速度の推移線Ｌ４〜Ｌ６を示す。具体的には、ＦＴＰが推移線Ｌ４に対応し、データリンクが推移線Ｌ５に対応し、ＣＩＰメッセージが推移線Ｌ６に対応する。サポート装置３００の表示部３１０は、図１５および図１６の複数の推移線Ｌ１〜Ｌ６をユーザに対して表示する。サポート装置３００を操作するユーザは、例えば複数の外部装置２００のうち他の外部装置２００と比べて通信速度が遅い推移線Ｌ３に対応する装置（例えば、外部装置Ｃ）を選択する。また、サポート装置３００を操作するユーザは、例えば複数のプロトコルのうち通信速度の変動幅が他のプロトコルと比べて大きい推移線Ｌ４に対応するプロトコル（例えば、ＦＴＰのプロトコル）を選択する。このようにして、サポート装置３００はユーザの操作によりフィルタリング条件の生成に用いる各項目の値を選択する。[(3)ユーザによる選択]
なお、図１５および図１６ではそれぞれ３つの外部装置（ＩＰアドレス）と、３つのプロトコルについて例を挙げて説明したが、装置およびプロトコルの数や選択の対象とする種別はこれ以外であってもよい。具体的には装置およびプロトコルの数は２つ以下や４つ以上でもよいし、選択の対象とする種別はＭＡＣアドレス等であってもよい。
【０１６４】
また、上述のようにサポート装置３００がフィルタリング条件を生成する場合においては、プロセッサ１０２は通信データ１５６のフィルタリングを実施することなくすべての通信データをサポート装置３００に出力してもよいし、特定のフィルタリング条件を設定してフィルタリングされた後の通信データをサポート装置３００に出力するようにしてもよい。
【０１６５】
図１４の説明に戻り、サポート装置３００は、ユーザが選択したフィルタリング条件に関する各項目を用いてフィルタリング条件を生成する。[(4)フィルタリング条件生成]
図１７は、本実施の形態に従うフィルタリング条件に関する各項目の選択により生成されるフィルタリング条件の一例を説明するための図である。
【０１６６】
図１７に示すフィルタリング条件テーブル５０１ａは、図１１を用いて説明したフィルタリング条件テーブル５０１と基本的には同一の構成であり一部の構成が異なる。異なる構成としては次の内容である。図１７に示すフィルタリング条件テーブル５０１ａでは、図１１のフィルタリング条件テーブル５０１におけるＮｕｍｂｅｒ項目５０２の「１」〜「５」に加えて、「６」が追加されている。このＮｕｍｂｅｒ項目５０２の「６」におけるレイヤー３（Ｌ３）とレイヤー４（Ｌ４）の各項目には、図１５および図１６の説明において、ユーザがサポート装置３００を操作して選択した外部装置ＡのＩＰアドレス（１９２．２６８．２５１．０）と、プロトコル（ＦＴＰ）との値が、ＩＰアドレス項目５０４とプロトコル項目５０６とに入力されている。また、ＩＰアドレスとプロトコルの選択に伴い、関連する項目であるサブネットマスク項目５０５とＰｏｒｔ１項目５０８の値も入力されている。なお、プロトコル項目５０６において「ＴＣＰ」が選択された場合は、レイヤー４においてＴＣＰを使用する任意のプロトコル（例えば、ＨＴＴＰ）が選択されたことを意味する。
【０１６７】
サポート装置３００は、生成したフィルタリング条件テーブル５０１ａをコントローラ１０へ転送する。[(5)フィルタリング条件テーブル転送]
コントローラ１０は、サポート装置３００から取得したフィルタリング条件テーブル５０１ａを記憶装置１０８に格納する。
【０１６８】
このようにユーザは、サポート装置３００を用いて通信データの通信速度の状態を確認しながら、通信状態に応じたフィルタリング条件を任意に生成できる。
【０１６９】
なお、上記の説明では、サポート装置３００は、ユーザの選択によりフィルタリング条件を生成することについて説明した。これに対して、ユーザの選択によらずにサポート装置３００が自動的にフィルタリング条件に関する項目を選択するようにしてもよい。具体的には、通信速度が予め定めた速度以下のプロトコルの項目を自動的に選択する。これにより、サポート装置３００は通信状況に応じた最適なフィルタリング条件を生成できる。また、コントローラ１０は、通信状況に応じた最適なフィルタリング条件に変更して、通信データを収集することが可能となる。
【０１７０】
＜Ｉ−３：サポート装置を用いたフィルタリング条件の生成例（その２）＞
図１８は、本実施の形態に従うサポート装置３００を用いたフィルタリング条件の生成処理の流れの他の例を示す図である。上述の図１４でのフィルタリング条件の生成処理では、ユーザがサポート装置３００を用いて、通信データ１５６の通信速度変化に基づきフィルタリング条件を生成する例について説明した。これに対して、図１８では、通信異常の発生回数（頻度）に基づきフィルタリング条件を生成する例について説明する。
【０１７１】
最初にサポート装置３００は、コントローラ１０から出力される異常発生データを取得する。[(1)通信データ取得]
図１８のコントローラ１０のプロセッサ１０２は、ネットワークコントローラ１００が受信した通信データを記憶装置１０８に格納するとともに、異常発生データ１５８をサポート装置３００に出力する処理を実行する。
【０１７２】
異常発生データは、通信データの異常発生回数を示す値であり、例えば通信データに関するタイムアウト回数やリトライ回数を示す値である。このような異常発生回数を示す値は、コントローラ１０が自動で通信データに関するタイムアウト回数やリトライ回数をカウントしてもよいし、ユーザが通信の状況をサポート装置３００を用いて確認しながら、サポート装置３００を操作してカウントしてもよい。
【０１７３】
次に、サポート装置３００は、コントローラ１０から取得した異常発生データ１５８を表示部３１０に表示する。[(2)通信データ表示]
図１９は、本実施の形態に従うサポート装置３００の表示部３１０に表示される画像であって、通信データの異常発生回数に関する画像の一例を示す図である。
【０１７４】
図１９の異常発生回数に関する画像は、時間項目６０２と、選択項目６０３と、タイムアウト回数項目６０５と、リトライ回数項目６０６とを含む。
【０１７５】
時間項目６０２は、ユーザの操作により現在から過去数分〜数時間前の間の時間帯を設定できる。具体的には、時間項目６０２は「直近３０分」、「直近１時間」、「直近２時間」等の複数の時間帯の中からユーザが任意の時間帯を設定可能である。なお、上記の時間項目６０２の３０分ごとや１時間ごとの時間帯は例示であり、ユーザが設定可能な時間帯は１０分ごとや２時間ごと等であってもよい。図１９では一例として時間項目６０２の「直近１時間」がユーザにより選択され、現在から過去１時間の間に発生した通信データのプロトコルの種類と、プロトコル種類に応じた異常発生回数が種類ごとに示される。
【０１７６】
具体的には、プロトコル項目６０４の「ＴＣＰ」のタイムアウト回数項目には「１０」が示され、リトライ回数項目６０６には「８」が示される。また、プロトコル項目６０４の「ＦＴＰ」のタイムアウト回数項目には「５」が示され、リトライ回数項目６０６には「０」が示される。これらの異常発生回数を確認したユーザは、選択項目６０３において、異常発生回数の多いプロトコル項目（例えば、ＴＣＰ）を選択する。[(3)ユーザによる選択]
図１８の説明に戻り、サポート装置３００は、ユーザが選択したフィルタリング条件に関する項目を用いてフィルタリング条件を生成する。[(4)フィルタリング条件生成]
フィルタリング条件の生成は、図１７を用いて説明した処理と同様であるので説明は省略する。
【０１７７】
サポート装置３００は生成したフィルタリング条件テーブル５０１ａをコントローラ１０へ転送する。[(5)フィルタリング条件テーブル転送]
コントローラ１０は、サポート装置３００から取得したフィルタリング条件テーブル５０１ａを記憶装置１０８に格納する。このようにユーザは、サポート装置３００を用いて通信データの異常発生回数を確認しながら、通信状態に応じたフィルタリング条件を生成できる。
【０１７８】
なお、上記の説明では、サポート装置３００は、ユーザの選択によりフィルタリング条件を生成することについて説明した。これに対して、ユーザの選択によらずにサポート装置３００が自動的にフィルタリング条件に関する項目を選択するようにしてもよい。具体的には、異常発生回数が予め定めた回数以上のプロトコルの項目を自動的に選択するようにしてもよい。なお、図１９の例では項目の一つをプロトコルとして説明したが、項目はプロトクルに限らずＩＰアドレスやポート番号やＭＡＣアドレス等のその他の項目を含んでもよい。これにより、サポート装置３００は通信状況に応じた最適なフィルタリング条件を生成できる。また、コントローラ１０は、通信状況に応じた最適なフィルタリング条件に変更して、通信データを収集することが可能となる。
【０１７９】
＜Ｊ：変形例＞
なお、上述では、作業工程に応じてフィルタリング条件が変えられる例について説明を行ったが、ユーザプログラム１１０は、その他の状況に応じてフィルタリング条件を変更するように規定されてもよい。一例として、ユーザプログラム１１０は、ＦＡシステム１における外部装置２００の装置構成が変化した場合に、ＦＡシステム１の装置構成に応じたフィルタリング条件を設定するように規定されてもよい。これにより、たとえば、意図しない通信機器がコントローラ１０に接続された場合に、コントローラ１０は、当該通信機器をブロックすることができる。通信機器の接続／非接続を検知する方法として、ネットワークの状態を監視するファンクションブロックなどを利用する方法が考えられる。当該ファンクションブロックは、ネットワークテーブルの状態を定期的に監視し、当該ネットワークテーブルの変化情報から通信機器の接続／非接続を検知する。
【０１８０】
他の例として、ユーザプログラム１１０は、外部機器からの悪意の攻撃を受けた場合、当該悪意の攻撃を防ぐためのフィルタリング条件を設定するように規定されてもよい。一例として、コントローラ１０の通信ドライバが単位時間当たりの受信データ量（たとえば、単位時間当たりの受信パケット数）を監視し、当該受信データ量が所定閾値を超えた場合に、外部機器からの悪意の攻撃を受けていると判断する。外部機器からの悪意の攻撃が検知された場合、収集機能２０１は、ＩＰアドレスやポート番号などの情報に基づいて、悪意の攻撃を行っている外部機器をブロックする。あるいは、外部機器からの悪意の攻撃が検知された場合、収集機能２０１は、全ての通信パケットの受信をブロックしてもよい。
【０１８１】
他の例として、ユーザプログラム１１０は、コントローラ１０の通信の接続状況が変化した場合、接続状況に応じたフィルタリング条件を設定するように規定されてもよい。たとえば、収集機能２０１は、送信元機器との通信が確立されてから非接続状態になるまでの間のみ、当該送信元機器からの受信データを通過させ、それ以外の場合は当該送信元機器からの受信データをブロックする。これにより、収集機能２０１は、必要な期間のみ通信データを通過させるので、セキュリティを向上させることができる。
【０１８２】
＜Ｋ．付記＞
以上のように、本実施形態は以下のような開示を含む。
【０１８３】
［構成１］
制御対象を制御するための制御装置（１０）であって、
任意に作成されるユーザプログラム（１１０）に従って、前記制御対象に対する制御命令を生成するプログラム実行部（１０３）と、
ネットワーク（Ｎｅ）を介して外部装置（２００）との間で通信データを送受信する通信部（１００）と、
前記通信部（１００）に接続され前記ネットワーク（Ｎｅ）に伝送される前記通信データのうち、フィルタリング条件（１１２）を満たすデータを収集する収集部（２０１）とを備え、
前記収集部（２０１）は、前記ユーザプログラム（１１０）に含まれる命令に従って、前記フィルタリング条件（１１２）を変更可能に構成される、制御装置。
【０１８４】
［構成２］
前記ユーザプログラム（１１０）に含まれる命令は、前記フィルタリング条件（１１２）の内容を明示する命令を含む、構成１に記載の制御装置。
【０１８５】
［構成３］
予め設定された複数のフィルタリング条件（１１２）を格納する格納部（１０８）をさらに備え、
前記ユーザプログラム（１１０）に含まれる命令は、前記複数のフィルタリング条件（１１２）のうちのいずれの条件が有効であるかを示す情報を含む、構成１に記載の制御装置。
【０１８６】
［構成４］
前記フィルタリング条件（１１２）は、ＩＰアドレス、プロトコル、および、ポート番号の少なくとも１つを含む、構成１〜３のいずれか１項に記載の制御装置。
【０１８７】
［構成５］
前記ユーザプログラム（１１０）で利用可能な変数が所定値であることを条件に、前記収集部（２０１）による前記通信データの収集を開始させる、構成１〜４のいずれか１項に記載の制御装置。
【０１８８】
［構成６］
前記変数の値は、前記外部装置（２００）による作業工程の状態を示す値である、構成５に記載の制御装置。
【０１８９】
［構成７］
制御対象を制御するための制御方法であって、
任意に作成されるユーザプログラム（１１０）に従って、前記制御対象に対する制御命令を生成するステップ（Ｓ１１２）と、
ネットワーク（Ｎｅ）を介して外部装置（２００）との間で通信データを送受信するステップ（Ｓ１１２）と、
前記ネットワーク（Ｎｅ）に伝送される前記通信データのうち、フィルタリング条件（１１２）を満たすデータを収集するステップ（Ｓ１４２）とを備え、
前記収集するステップ（Ｓ１４２）は、前記ユーザプログラム（１１０）に含まれる命令に従って、前記フィルタリング条件（１１２）を変更可能に構成される、制御方法。
【０１９０】
［構成８］
制御対象を制御するための制御装置の制御プログラムであって、
前記制御ブログラムは、前記制御装置に、
任意に作成されるユーザプログラム（１１０）に従って、前記制御対象に対する制御命令を生成するステップ（Ｓ１１２）と、
ネットワーク（Ｎｅ）を介して外部装置との間で通信データを送受信するステップ（Ｓ１１２）と、
前記ネットワーク（Ｎｅ）に伝送される前記通信データのうち、フィルタリング条件（１１２）を満たすデータを収集するステップ（Ｓ１４２）とを実行させ、
前記収集するステップ（Ｓ１４２）は、前記ユーザプログラム（１１０）に含まれる命令に従って、前記フィルタリング条件（１１２）を変更可能に構成される、制御プログラム。
【０１９１】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１９２】
１  ＦＡシステム、１０  制御装置、１００  ネットワークコントローラ、１００Ｐ１  上位ネットワークコントローラ、１００Ｐ２  フィールドネットワークコントローラ
１０２  プロセッサ、１０３  プログラム実行部、１０４  チップセット、１０６  主メモリ、１０８，１０８ａ  記憶装置、１１０  ユーザプログラム、１１１  通信アプリケーション、５０１，５０１ａ  フィルタリング条件テーブル、１１５  システムプログラム、１１６  タイマー、１２０  メモリカードインターフェイス、１２２  メモリカード、１３０  内部バスコントローラ、１５５Ａ，１５５Ｂ，１５５Ｃ，１５５Ｄ，１５５Ｅ，１５５Ｆ  入力部、１５６  通信データ、１５７Ａ，１５７Ｂ，１５７Ｃ，１５７Ｄ  出力部、１５８  異常発生データ、２００  外部装置、２００Ａ  サーバ装置、２００Ｂ  表示器、２００Ｃ  画像センサ、２００Ｄ  カメラ、２００Ｅ  リモートＩ／Ｏ装置、２００Ｆ  アームロボット、２００Ｐ１，２００Ｐ２  通信ポート、２０１  収集機能、２０２，２０２ａ，２０２ｂ  収集データ、３００  サポート装置、３１０  表示部、５０２  Ｎｕｍｂｅｒ項目、５０３  指定方法項目、５０４  アドレス項目、５０５  サブネットマスク項目、５０６  プロトコル項目、６０２  時間項目、６０３  選択項目、６０４  プロトコル項目、６０５  タイムアウト回数項目、６０６  リトライ回数項目、１０１０  送受信コントローラ、１０１２  送信バッファ、１０１４  受信バッファ、１０１６  送信回路、１０１８  受信回路。
【図１】
2019161388.tif 000003
【図２】
2019161388.tif 000004
【図３】
2019161388.tif 000005
【図４】
2019161388.tif 000006
【図５】
2019161388.tif 000007
【図６】
2019161388.tif 000008
【図７】
2019161388.tif 000009
【図８】
2019161388.tif 000010
【図９】
2019161388.tif 000011
【図１０】
2019161388.tif 000012
【図１１】
2019161388.tif 000013
【図１２】
2019161388.tif 000014
【図１３】
2019161388.tif 000015
【図１４】
2019161388.tif 000016
【図１５】
2019161388.tif 000017
【図１６】
2019161388.tif 000018
【図１７】
2019161388.tif 000019
【図１８】
2019161388.tif 000020
【図１９】
2019161388.tif 000021