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