(58)【調査した分野】(Int.Cl.,DB名)
前記停止モジュールは、バッファリング機能を停止する停止命令を前記他のコントローラから受信したことに基づいて、前記自コントローラにおける前記パケットモニタモジュールのバッファリング機能を停止する、請求項1に記載のFAシステム。
前記表示部は、送信元情報が一致し、かつ送信先情報が一致する対のパケットデータが存在しないパケットデータを他のパケットデータとは異なる表示態様で表示する、請求項4に記載のFAシステム。
【発明を実施するための形態】
【0025】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
【0026】
<A.適用例>
図1を参照して、本発明の適用例について説明する。
図1は、FAシステム10の概略を示す図である。
【0027】
FAシステム10は、設備および装置などの制御対象を制御し、生産工程を自動化するためのシステムである。FAシステム10は、複数のコントローラを含む。
図1には、複数のコントローラの例として、2つのコントローラ100A,100Bが示されている。以下では、複数のコントローラを総称してコントローラ100ともいう。
【0028】
コントローラ100A、100Bは、同一のネットワークN1に接続され得る。ネットワークN1には、たとえば、EtherNet/IP(登録商標)などが採用される。
【0029】
コントローラ100A、100Bは、それぞれ、バッファ150と、通信モジュール152、パケットモニタモジュール154と、停止モジュール156とを含む。
【0030】
バッファ150は、たとえば、コントローラ100内における揮発性の記憶領域である。一例として、バッファ150は、RAM(Random Access Memory)やキャッシュメモリなどの記憶領域である。
【0031】
通信モジュール152は、パケット通信により他の通信装置との通信を実現するための機能モジュールである。「他の通信装置」とは、自コントローラを除く、任意の通信装置を含む概念である。たとえば、他の通信装置は、他のコントローラや、自コントローラによる制御対象の駆動機器300(
図2参照)や、コントローラに接続されるサーバなどの情報処理端末を含む。
【0032】
パケットモニタモジュール154は、送受信されるパケットデータをキャプチャリングするための機能モジュールである。より具体的には、パケットモニタモジュール154は、他の通信装置に送信するために自コントローラで生成されたパケットデータと、自コントローラが他の通信装置から受信したパケットデータとをバッファ150に順次バッファリングする。バッファ150のサイズは、制限されており、パケットモニタモジュール154は、たとえば、FIFO(First In First Out)形式またはLIFO(Last In First Out)形式でバッファ150を管理する。
【0033】
「パケットデータ」とは、コントローラ100を伝送される一定サイズの任意の通信データを含む概念である。一例として、パケットデータは、EtherNet/IPの通信プロトコルに従って生成された通信データや、EtherNET(登録商標)の通信プロトコルに従って生成された通信データや、EtherCATの通信プロトコルに従って生成された通信データや、CompoNet(登録商標)の通信プロトコルに従って生成された通信データや、OPC−UA(Object Linking and Embedding for Process Control Unified Architecture)の通信プロトコルに従って生成された通信データなどを含む。
【0034】
停止モジュール156は、パケットモニタモジュール154によるパケットデータのバッファリング機能を停止するための機能モジュールである。より具体的には、停止モジュール156は、予め定められた停止条件108が満たされたことに基づいて、ネットワークN1に接続されているコントローラの内の指定されているコントローラについて、パケットモニタモジュール154のバッファリング機能を停止する。停止条件108は、たとえば、自コントローラにエラーが発生したことに基づいて満たされる。停止条件108の詳細については後述する。
【0035】
自コントローラが停止対象として指定されている場合には、停止モジュール156は、バッファリング機能を停止するための停止命令を自コントローラのパケットモニタモジュール154に出力する。パケットモニタモジュール154は、当該停止命令を受け付けたことに基づいて、パケットデータのバッファリング処理を停止する。
【0036】
一方で、他のコントローラが停止対象として指定されている場合には、停止モジュール156は、バッファリング機能の停止命令を生成し、通信モジュール152を介して当該停止命令を他のコントローラに送信する。当該停止命令を受信した他のコントローラは、パケットデータのバッファリング機能を停止する。
【0037】
バッファ150の容量は、限られているため、バッファ150が溢れた場合には、バッファ150内のいずれかのパケットデータが削除される。本実施の形態に従うFAシステム10は、自コントローラにおけるバッファリング機能だけでなく、他のコントローラにおけるバッファリング機能も停止することができる。これにより、自コントローラにバッファリングされたパケットデータの損失を防ぐことができるだけでなく、他のコントローラにバッファリングされたパケットデータの損失を防ぐことができる。
【0038】
<B.FAシステム10の装置構成>
図2を参照して、FAシステム10の装置構成の一例について説明する。
図2は、FAシステム10の装置構成を概略的に示す模式図である。
【0039】
FAシステム10は、1つ以上のコントローラ100と、1つ以上の開発支援装置200と、1つ以上の駆動機器300とを含む。
図2の例では、3つのコントローラ100A〜100Cと、1つの開発支援装置200とが示されている。
【0040】
コントローラ100は、複数の物理的な通信ポートを有する。それぞれの通信ポートには異なるネットワークが接続され得る。
図2の例では、コントローラ100は、2つの通信ポートP1,P2を有する。通信ポートP1には、ネットワークN1が接続されている。通信ポートP2には、ネットワークN2が接続されている。
【0041】
コントローラ100および開発支援装置200は、ハブ90を介してネットワークN1に接続されている。他にも、ネットワークN1には、任意の情報処理装置が接続され得る。一例として、ネットワークN1には、HMI(Human Machine Interface)などの表示器やサーバ装置などが接続され得る。
【0042】
開発支援装置200は、たとえば、ノート型PC(Personal Computer)、デスクトップ型PC、タブレット端末、または、スマートフォンなどである。開発支援装置200には、開発ツール30がインストールされ得る。開発ツール30は、コントローラ100用の制御プログラムの開発を支援するためのアプリケーションである。一例として、開発ツール30は、オムロン社製の「Sysmac Studio」である。ユーザは、開発ツール30上でコントローラ100用の制御プログラムを設計し、設計した制御プログラムをコントローラ100にインストールすることができる。作成された制御プログラムは、開発支援装置200によってコンパイルされた実行形式のファイルとしてコントローラ100に送られる。
【0043】
下位のネットワークN2には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、EtherCAT、CompoNetなどが知られている。コントローラ100は、開発支援装置200上で作成された制御プログラムに従って制御対象の駆動機器300を制御する。
【0044】
駆動機器300は、直接的または間接的にワークに対して所定の作業を行うための機器の集合である。
図2の例では、駆動機器300は、ロボットコントローラ300Aや、サーボドライバ300Bや、ロボットコントローラ300Aに制御されるアームロボット301Aや、サーボドライバ300Bによって制御されるサーボモータ301Bなどを含む。また、駆動機器300は、ワークを撮影するための視覚センサや、生産工程で利用されるその他の機器などを含んでもよい。
【0045】
<C.FAシステム10の機能>
典型的には、FAシステム10は、以下の設定機能A〜Cを有する。
【0046】
(機能A)パケットモニタモジュール154(
図1参照)に関する各種設定を開発支援装置200が受け付ける機能。
【0047】
(機能B)上記機能(a)で受け付けた設定に従って各コントローラが自コントローラおよび他のコントローラのパケットモニタモジュール154の動作態様を切り替える機能。
【0048】
(機能C)各コントローラのパケットモニタモジュール154によりバッファリングされたパケットデータを開発支援装置200が収集する機能。
【0049】
典型的な使用例では、これらの機能A〜Cが順に実行される。以下では、これらの上記機能A〜Cについて順に説明する。
【0050】
[C1.設定機能]
まず、
図3〜
図5を参照して、FAシステム10の上記機能Aについて説明する。
図3は、パケットモニタモジュール154(
図1参照)に対する設定処理の流れを示すシーケンス図である。
【0051】
ステップS10において、開発支援装置200は、開発ツール30の起動操作を受け付けたとする。このことに基づいて、開発支援装置200は、プログラム作成画面を表示する。
図4は、開発ツール30が提供するユーザインターフェイスの一例であるプログラム作成画面31を示す図である。プログラム作成画面31は、たとえば、開発支援装置200の表示部221に表示される。
【0052】
ユーザは、プログラム作成画面31上でコントローラ100用の制御プログラムを開発することができる。
図4には、コントローラ100用の制御プログラムの一例であるユーザプログラム210が示されている。ユーザプログラム210は、任意のプログラミング言語で記述され得る。一例として、ユーザプログラム210は、ラダーダイアグラム(LD:Ladder Diagram)で規定されてもよいし、命令リスト(IL:Instruction List)、構造化テキスト(ST:Structured Text)、および、シーケンシャルファンクションチャート(SFC:Sequential Function Chart)のいずれか、あるいは、これらの組み合わせで規定される。あるいは、ユーザプログラム210は、JavaScript(登録商標)やC言語のような汎用的なプログラミング言語で規定されていてもよい。
【0053】
図4の例では、ユーザプログラム210は、ラダーダイアグラムで記述されている。設計者は、プログラム作成画面31上で、任意のファンクションブロックを組み合わせたり、変数やファンクションブロックの入出力関係を規定することで、制御対象の駆動機器300に合わせたユーザプログラム210を設計することができる。ファンクションブロックとは、ユーザプログラム210内で繰り返し使用される機能が部品化されたものである。
【0054】
図4の例では、ユーザプログラム210は、変数「A」〜「C」と、ファンクションブロックFB1,FB2とを含む。ファンクションブロックF
B1は、その入力部に関連付けられている変数「A」の値に基づいて、ファンクションブロックFB1に規定されている予め定められた機能を実行する。当該実行結果は、ファンクションブロックF
B1の出力部に関連付けられている変数「B」に反映される。ファンクションブロックFB2は、その入力部に関連付けられている変数「B」の値に基づいて、ファンクションブロックFB2に規定されている予め定められた機能を実行する。当該実行結果は、ファンクションブロックF
B2の出力部に関連付けられている変数「C」に反映される。このように、設計者は、プログラム作成画面31上で、変数やファンクションブロックを組み合わせることで、任意のユーザプログラム210を設計することができる。
【0055】
開発ツール30は、種々のファンクションブロックを提供する。一例として、パケットデータのバッファリング機能を停止するための上述の停止モジュール156(
図1参照)がファンクションブロックとして提供される。他にも、パケットデータのバッファリング機能の実行を開始するための開始モジュールがファンクションブロックとして提供される。他にも、バッファ150にバッファリングされたパケットデータを外部記憶装置(たとえば、メモリカードなど)に保存するための保存モジュールがファンクションブロックとして提供される。
【0056】
再び
図3を参照して、ステップS12において、開発ツール30は、パケットモニタモジュール154(
図1参照)に関する各種設定を行うための設定画面を呼び出したとする。このことに基づいて、設定画面が開発支援装置200の表示部221に表示される。
【0057】
図5は、開発ツール30が提供するユーザインターフェイスの一例である設定画面33を示す図である。設定画面33は、パケットモニタモジュール154に関する各種設定を受け付けるユーザインターフェイスである。
【0058】
図5に示されるように、設定画面33は、設定欄41,42,45,47と、保存ボタン50と、キャンセルボタン51とを含む。設定画面33に入力された設定によって、パケットデータのバッファリング処理の開始条件や、パケットデータのバッファリング処理の停止条件や、パケットデータの保存条件や、パケットデータの転送条件などが設定される。
【0059】
より具体的には、設定欄41は、パケットモニタモジュール154の動作態様を指定するための設定を受け付ける。指定可能な動作態様としては、たとえば、「開始」、「停止」、「保存」、「転送」などが挙げられる。一例として、ボタン41Aが押下されたことに基づいて、指定可能な動作対象が一覧表示される。ユーザは、表示された動作態様の一覧から一の動作態様を選択することで、パケットモニタモジュール154の動作態様を指定することができる。
【0060】
設定欄42は、実行条件を指定するための設定を受け付ける。設定欄42には、たとえば、コントローラ100内で発生し得るイベントログのエラー種別や、パケットデータによって示されるエラー種別などが指定され得る。典型的には、設定欄42で指定可能な実行条件の候補は、予め規定されている。たとえば、ボタン42Aが押下されたことに基づいて、指定可能な実行条件の候補が一覧表示される。ユーザは、表示された実行条件の候補の一覧から一の実行条件を選択することで、実行条件を指定することができる。
【0061】
以下では、設定欄41に「開始」が指定されている実行条件を「開始条件」ともいう。設定欄41に「停止」が指定されている実行条件を「停止条件」ともいう。設定欄41に「保存」が指定されている実行条件を「保存条件」ともいう。設定欄41に「転送」が指定されている実行条件を「転送条件」ともいう。
【0062】
設定欄45は、命令対象のコントローラを指定するための設定を受け付ける。命令対象のコントローラは、予め定められた候補の中から選択されてもよいし、コントローラの識別情報(たとえば、コントローラ名やIPアドレスなど)の入力により指定されてもよい。一例として、ボタン45Aが押下されたことに基づいて、命令対象として指定可能なコントローラの候補が一覧表示される。ユーザは、表示されたコントローラの候補の一覧から一のコントローラを選択することで、命令対象のコントローラを指定することができる。
【0063】
コントローラ100は、設定欄42で指定された実行条件が満たされたことに基づいて、設定欄45で指定されたコントローラのパケットモニタモジュール154を、設定欄41で指定された動作態様で動作させる。
【0064】
一例として、開始条件が満たされた場合には、コントローラ100は、当該開始条件に対応付けられている命令対象のコントローラについてパケットモニタモジュール154の実行を開始させる。
【0065】
停止条件が満たされた場合には、コントローラ100は、当該停止条件に対応付けられている命令対象のコントローラについてパケットモニタモジュール154を停止させる。当該停止条件は、上述の停止条件108(
図1参照)に対応する。
【0066】
保存条件が満たされた場合には、コントローラ100は、当該
保存条件に対応付けられている命令対象のコントローラについてバッファリングされているパケットデータを自コントローラに保存させる。
【0067】
転送条件が満たされた場合には、コントローラ100は、当該転送条件に対応付けられている命令対象のコントローラについてバッファリングされているパケットデータを指定された送信先に転送させる。
【0068】
設定欄47は、報知機能のON/OFFを指定するための設定を受け付ける。設定欄47においてONが指定された場合には、設定欄42で指定された実行条件が満たされたときに、エラーの発生が報知される。エラーの発生は、警告音などの音によって報知されてもよいし、メッセージなどの表示によって報知されてもよい。設定欄47においてOFFが指定された場合には、設定欄42で指定された実行条件が満たされたときであっても、エラーの発生が報知されない。
【0069】
保存ボタン50が押下された場合には、開発支援装置200は、設定画面33に入力された設定情報212を保存する。設定画面33のキャンセルボタン51が押下された場合には、開発支援装置200は、設定画面33に入力された設定情報212を保存せずに設定画面33を閉じる。
【0070】
再び図
3を参照して、ステップS14において、開発ツール30は、コンパイル操作を受け付けたとする。このことに基づいて、開発ツール30は、プログラム作成画面31上で作成されたユーザプログラム210をコンパイルする。その後、開発ツール30は、コンパイル結果のダウンロード操作を受け付けたとする。このことに基づいて、開発ツール30は、コンパイルされたユーザプログラム210とともに、ステップS12で保存された設定情報212をコントローラ100に転送する。コントローラ100は、受信したユーザプログラム210と設定情報212とを内部の記憶装置に保存する。
【0071】
[C2.パケットモニタモジュール154の停止機能]
次に、
図6および
図7を参照して、FAシステム10の上記機能Bの一例について説明する。
図6は、停止条件108が満たされた場合におけるコントローラ100A〜100C間のデータの流れを示すシーケンス図である。
図7は、停止条件108が満たされた場合におけるコントローラ100A〜100Cの動作態様を概略的に示す概念図である。
【0072】
図6に示されるステップ番号と、
図7に示されるステップ番号とは、互いに対応している。
【0073】
ステップS30Aにおいて、コントローラ100Aが起動されたとする。このことに基づいて、コントローラ100Aは、パケットモニタモジュール154によるパケットモニタリング機能の実行を開始する。
【0074】
ステップS30Bにおいて、コントローラ100Bが起動されたとする。このことに基づいて、コントローラ100Bは、パケットモニタモジュール154によるパケットモニタリング機能の実行を開始する。
【0075】
ステップS30Cにおいて、コントローラ100Cが起動されたとする。このことに基づいて、コントローラ100Cは、パケットモニタモジュール154によるパケットモニタリング機能の実行を開始する。
【0076】
ステップS31Aにおいて、コントローラ100Aは、自コントローラに格納されているユーザプログラム210の実行命令を受け付けたとする。このことに基づいて、コントローラ100Aは、ユーザプログラム210の実行を開始する。
【0077】
ステップS31Bにおいて、コントローラ100Bは、自コントローラに格納されているユーザプログラム210の実行命令を受け付けたとする。このことに基づいて、コントローラ100Bは、ユーザプログラム210の実行を開始する。
【0078】
ステップS31Cにおいて、コントローラ100Cは、自コントローラに格納されているユーザプログラム210の実行命令を受け付けたとする。このことに基づいて、コントローラ100Cは、ユーザプログラム210の実行を開始する。
【0079】
ステップS32において、コントローラ100Aは、設定情報212に規定されている実行条件のいずれかが満たされたか否かを判断する。たとえば、実行条件の一例である停止条件が満たされたとする。この場合(ステップS32においてYES)、コントローラ100Aは、制御をステップS34に切り替える。コントローラ100Aは、設定情報212に規定されている実行条件のいずれも満たされていないと判断した場合(ステップS32においてNO)、ステップS32の処理を再び実行する。
【0080】
一例として、命令対象のコントローラとして、コントローラ100A〜100Cが指定されていたとする。この場合、コントローラ100Aは、自コントローラにおけるパケットデータのバッファリング処理と、他のコントローラ100B,100Cにおけるパケットデータのバッファリング処理とを停止する。
【0081】
より具体的には、ステップS34において、コントローラ100Aの停止モジュール156は、自コントローラにおけるパケットモニタモジュール154についてバッファリング機能を停止する。これにより、コントローラ100Aのバッファ150へのパケットデータの蓄積が停止される。
【0082】
ステップS36において、コントローラ100Aの停止モジュール156は、バッファリング機能の停止命令を生成し、当該停止命令を他のコントローラ100B,100Cに送信する。コントローラ100Bの停止モジュール156は、コントローラ100Aから停止命令を受信したことに基づいて、コントローラ100Bのパケットモニタモジュール154のバッファリング機能を停止する。これにより、コントローラ100Bのバッファ150へのパケットデータの蓄積が停止される。同様に、コントローラ100Cの停止モジュール156は、コントローラ100Aから停止命令を受信したことに基づいて、コントローラ100Cのパケットモニタモジュール154のバッファリング機能を停止する。これにより、コントローラ100Cのバッファ150へのパケットデータの蓄積が停止される。
【0083】
このように、コントローラ100は、予め定められた停止条件が満たされたことに基づいて、自コントローラと他のコントローラとのバッファリング機能を停止する機能を有する。好ましくは、自コントローラおよび他のコントローラのバッファリング機能は、同時または略同時に停止される。これにより、各コントローラは、同期間内にバッファリングされたパケットデータをバッファ150に残すことができる。
【0084】
[C3.パケットデータの収集処理]
次に、
図8〜
図11を参照して、FAシステム10の上記機能Cについて説明する。
図8は、バッファリングされたパケットデータを各コントローラから収集する処理の流れを示すシーケンス図である。
【0085】
ステップS50において、開発支援装置200は、イベントログ画面の表示操作を受け付けたとする。このことに基づいて、開発支援装置200は、イベントログ画面を表示する。
図9は、開発ツール30が提供するユーザインターフェイスの一例であるイベントログ画面35を示す図である。イベントログ画面35は、たとえば、開発支援装置200の表示部221に表示される。
【0086】
開発支援装置200は、各コントローラ100から収集したイベントログをイベントログ画面35に表示する。イベントログ画面35は、表示欄60〜65を有する。表示欄60には、発生しているエラーの重要度が表示される。表示欄61には、エラーが発生した通信プロトコルが表示される。表示欄62には、エラーの発生源の通信ポートが表示される。表示欄63には、イベント名が表示される。表示欄64には、イベントコードが表示される。表示欄65には、詳細ボタンが表示される。
【0087】
再び
図8を参照して、ステップS52において、開発支援装置200は、表示欄65に表示される詳細ボタンのいずれかが押下されたことに基づいて、パケット収集を開始するか否か受け付けるための確認画面を表示する。
図10は、確認画面の一例を示す図である。
【0088】
図10には、確認画面の一例として確認画面70が示されている。確認画面70は、「はい」を示すボタン71と、「いいえ」を示すボタン72とを有する。「はい」を示すボタン71が押下された場合、開発支援装置200は、各コントローラ100におけるパケットデータの収集を開始する。「いいえ」を示すボタン72が押下された場合、開発支援装置200は、何もせずに確認画面70を閉じる。
【0089】
再び
図8を参照して、ステップS60において、開発支援装置200は、確認画面70における「はい」を示すボタン71が押下されたことに基づいて、指定されたコントローラ100A〜100Cのそれぞれにパケットデータの取得要求を送信する。
【0090】
ステップS62において、コントローラ100A〜100Cは、それぞれ、自コントローラのバッファ150(
図1参照)に格納されているパケットデータを取得し、当該パケットデータを開発支援装置200に送信する。
【0091】
ステップS70において、開発支援装置200は、コントローラ100A〜100Cのそれぞれから収集したパケットデータの収集結果を表示する。
図11は、開発ツール30が提供するユーザインターフェイスの一例であるパケットデータの収集結果画面37Aを示す図である。
【0092】
EtherCAT
、EtherNet/IPなどに従うパケットデータは、EtherNETヘッダを含む。このEtherNETヘッダは、送信元のコントローラを特定するための送信元情報(たとえば、IPアドレス)と、送信先のコントローラを特定するための送信先情報(たとえば、IPアドレス)とを含む。他にも、当該パケットデータは、送信先のポート番号などの情報を含む。
【0093】
収集結果画面37Aは、パケットデータに規定されている情報に基づいて、収集された各パケットデータについて送信元のIPアドレスと送信先のIPアドレスとを表示する。パケットデータの記録は、送信元のコントローラおよび送信先のコントローラの両方に残るので、仮に、対の記録が残っていないコントローラについては、何らかの原因でパケットデータが損失したこととなる。送信元のIPアドレスと送信先のIPアドレスとが各パケットデータについて表示されることで、ユーザは、どのパケットデータがどのコントローラで損失したのかを容易に把握することができ、通信エラーの解析が容易になる。
【0094】
好ましくは、収集結果画面37Aは、送信元情報が一致し、かつ送信先情報が一致するパケットデータ同士を対応させて表示する。
図11の例では、これらのパケットデータ同士が一列に並べて表示されている。たとえば、破線部分81に示されるように、IPアドレス「A」のコントローラ100AからIPアドレス「B」のコントローラ100Bに送信されたパケットデータの記録は、コントローラ100Aおよびコントローラ100Bの両方に残っている。開発支援装置200は、コントローラ100Aおよびコントローラ100Bのそれぞれから収集したこれらの対応するパケットデータを並べて表示する。これにより、ユーザは、どのパケットデータがどのコントローラで損失したのかをより簡単に発見することができ、通信エラーの解析がさらに容易になる。
【0095】
好ましくは、収集結果画面37Aは、送信元情報が一致し、かつ送信先情報が一致する対のパケットデータが存在しないパケットデータを他のパケットデータとは異なる表示態様で表示する。すなわち、対のパケットデータが存在しないパケットデータが強調表示される。強調表示は、たとえば、ハッチング表示、特定色(たとえば、赤色)での表示、点滅表示などで実現される。
図11の例では、強調表示がハッチング表示で実現されている(破線部分82,83)。対のパケットデータが存在しないパケットデータが強調表示されることで、ユーザは、どのパケットデータが損失したのかを即座に発見することができる。
【0096】
なお、パケットデータの収集結果画面37Aは、
図11の例に限定されない。
図12は、収集結果画面37Aの変形例である収集結果画面37Bを示す図である。
図12に示されるように、収集結果画面37Bは、検索条件の入力領域85と、検索結果の表示領域86とを有する。
【0097】
検索条件の入力領域85は、パケットデータを検索するための種々の条件を受け付ける。一例として、入力領域85は、コントローラの識別情報を検索条件として受け付ける。なお、入力領域85で指定可能な検索条件は、コントローラの識別情報に限定されない。一例として、検索条件として、通信プロトコル、ポート番号などが入力されてもよい。
【0098】
検索条件が入力領域85に入力されたことに基づいて、開発支援装置200は、収集したパケットデータの中から、指定された検索条件に合致するパケットデータを検索し、指定された検索条件に合致するパケットデータを検索結果の表示領域86に一覧表示する。検索結果として、たとえば、送信元のコントローラのIPアドレスと、送信先のコントローラのIPアドレスと、通信時に利用された通信プロトコルと、送信先のポート番号と、備考とが表示される。
【0099】
<D.パケットデータの保存機能>
図13を参照して、バッファリングされたパケットデータを保存するための保存機能について説明する。
図13は、パケットデータの保存機能が実行された場合における制御フローを示すシーケンス図である。
【0100】
ステップS80において、コントローラ100Aは、設定情報212(
図5参照)に規定されている保存条件が満たされたか否かを判断する。コントローラ100Aは、設定情報212に規定されている保存条件が満たされたと判断した場合(ステップS80においてYES)、制御をステップS82に切り替える。そうでない場合には(ステップS80においてNO)、ステップS80の処理を再び実行する。
【0101】
設定情報212に規定されている保存条件には、命令対象のコントローラが対応付けられている。一例として、命令対象のコントローラとして、コントローラ100A〜100Cが対応付けられていたとする。この場合、コントローラ100Aは、自コントローラにバッファリングされたパケットデータの保存処理と、他のコントローラ100B,100Cにバッファリングされたパケットデータの保存処理とを実行する。
【0102】
より具体的には、ステップS82において、コントローラ100Aは、自コントローラのバッファ150にバッファリングされているパケットデータを外部記憶装置(たとえば、後述のメモリカード140)に保存する。これにより、コントローラ100Aにおけるパケットデータがログデータとして保存される。
【0103】
ステップS84において、コントローラ100Aは、パケットデータの保存命令を生成し、当該保存命令を他のコントローラ100B,100Cに送信する。コントローラ100Bは、コントローラ100Aから保存命令を受信したことに基づいて、コントローラ100Bのバッファ150にバッファリングされているパケットデータを外部記憶装置(たとえば、後述のメモリカード140)に保存する。これにより、コントローラ100Bにおけるパケットデータが外部記憶装置に残される。同様に、コントローラ100Cは、コントローラ100Aから保存命令を受信したことに基づいて、コントローラ100Cのバッファ150にバッファリングされているパケットデータを外部記憶装置(たとえば、後述のメモリカード140)に保存する。これにより、コントローラ100Cにおけるパケットデータが外部記憶装置に保存される。
【0104】
<E.バッファリング処理の開始機能>
図14を参照して、パケットモニタモジュール154にバッファリング処理を開始させるための開始機能について説明する。
図14は、パケットモニタモジュール154によるバッファリング処理の開始機能が実行された場合における制御フローを示すシーケンス図である。
【0105】
ステップS90において、コントローラ100Aは、設定情報212(
図5参照)に規定されている開始条件が満たされたか否かを判断する。コントローラ100Aは、設定情報212に規定されている開始条件が満たされたと判断した場合(ステップS90においてYES)、制御をステップS92に切り替える。そうでない場合には(ステップS90においてNO)、ステップS90の処理を再び実行する。
【0106】
設定情報212に規定されている開始条件には、命令対象のコントローラが対応付けられている。一例として、命令対象のコントローラとして、コントローラ100A〜100Cが対応付けられていたとする。この場合、コントローラ100Aは、自コントローラにおけるパケットデータのバッファリング処理
と、他のコントローラ100B,100Cにおけるパケットデータのバッファリング処理とを開始する。
【0107】
より具体的には、ステップS92において、コントローラ100Aは、自コントローラにおけるパケットモニタモジュール154にバッファリング機能を開始させる。これにより、自コントローラのバッファ150へのパケットデータのバッファリング処理が開始される。
【0108】
ステップS94において、コントローラ100Aは、バッファリング機能の開始命令を生成し、当該開始命令を他のコントローラ100B,100Cに送信する。コントローラ100Bは、コントローラ100Aから開始命令を受信したことに基づいて、コントローラ100Bのパケットモニタモジュール154にバッファリング機能を開始させる。これにより、コントローラ100Bのバッファ150へのパケットデータの蓄積が開始される。同様に、コントローラ100Cは、コントローラ100Aから開始命令を受信したことに基づいて、コントローラ100Cのパケットモニタモジュール154にバッファリング機能を開始させる。これにより、コントローラ100Cのバッファ150へのパケットデータの蓄積が開始される。
【0109】
このように、コントローラ100は、予め定められた開始条件が満たされたことに基づいて、自コントローラと他のコントローラとのバッファリング機能を開始する機能を有する。好ましくは、自コントローラおよび他のコントローラのバッファリング機能は、同時または略同時に開始される。
【0110】
<F.ハードウェア構成>
図15および
図16を参照して、コントローラ100および開発支援装置200のハードウェア構成について順に説明する。
【0111】
(F1.コントローラ100のハードウェア構成)
まず、
図15を参照して、コントローラ100のハードウェア構成について説明する。
図15は、コントローラ100のハードウェア構成の一例を示す模式図である。
【0112】
コントローラ100は、通信インターフェイス101と、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などの制御装置102と、チップセット104と、主メモリ106と、不揮発性の記憶装置110と、内部バスコントローラ122と、フィールドバスコントローラ124と、メモリカードインターフェイス139とを含む。
【0113】
制御装置102は、記憶装置110に格納された制御プログラム111を読み出して、主メモリ106に展開して実行することで、制御対象の駆動機器300などに対する任意の制御を実現する。制御プログラム111は、コントローラ100を制御するための各種プログラムを含む。一例として、制御プログラム111は、システムプログラム109およびユーザプログラム210などを含む。システムプログラム109は、データの入出力処理や実行タイミング制御などの、コントローラ100の基本的な機能を提供するための命令コードを含む。ユーザプログラム210は、開発支援装置200からダウンロードされたものである。ユーザプログラム210は、制御対象に応じて任意に設計され、シーケンス制御を実行するためのシーケンスプログラム210Aおよびモーション制御を実行するためのモーションプログラム210Bとを含む。
【0114】
チップセット104は、各コンポーネントを制御することで、コントローラ100全体としての処理を実現する。
【0115】
記憶装置110は、制御プログラム111の他にも種々のデータを格納する。一例として、記憶装置110は、上述の設定情報212(
図5参照)などを格納する。
【0116】
内部バスコントローラ122は、コントローラ100と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、I/Oユニット126が接続されている。
【0117】
フィールドバスコントローラ124は、コントローラ100とフィールドバスを通じて連結される各種
デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、ロボットコントローラ300Aやサーボドライバ300Bが接続されている。他にも、視覚センサなどの駆動機器が接続されてもよい。
【0118】
内部バスコントローラ122およびフィールドバスコントローラ124は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータを取得することができる。また、内部バスコントローラ122および/またはフィールドバスコントローラ124は、ロボットコントローラ300Aやサーボドライバ300Bとの間でデータを遣り取りするためのインターフェイスとしても機能する。
【0119】
通信インターフェイス101は、各種の有線/無線ネットワークを通じたデータの遣り取りを制御する。コントローラ100は、通信インターフェイス101を介して、開発支援装置200などの外部機器と通信を行う。コントローラ100は、通信インターフェイス101を介して他の通信装置とパケット通信を行う。
【0120】
メモリカードインターフェイス139は、外部記憶媒体の一例であるメモリカード140(たとえば、SDカード)を接続するためのインターフェイス部である。メモリカードインターフェイス139は、メモリカード140を着脱可能に構成されており、メモリカード140に対してデータを書き込み、メモリカード140からデータを読出すことが可能になっている。
【0121】
(F2.開発支援装置200のハードウェア構成)
次に、
図16を参照して、開発支援装置200のハードウェア構成について説明する。
図16は、開発支援装置200のハードウェア構成を示す模式図である。
【0122】
開発支援装置200は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。開発支援装置200は、CPUやMPUなどの制御装置202と、主メモリ204と、不揮発性の記憶装置208と、通信インターフェイス211と、I/O(Input/Output)インターフェイス214と、表示インターフェイス220とを含む。これらのコンポーネントは、内部バス225を介して互いに通信可能に接続されている。
【0123】
制御装置202は、記憶装置208に格納されている開発支援プログラム208Aを主メモリ204に展開して実行することで、開発ツール30における各種処理を実現する。開発支援プログラム208Aは、ユーザプログラム210の開発環境を提供するためのプログラムである。記憶装置208は、開発支援プログラム208Aの他にも、開発ツール30で生成された各種データなどを格納する。当該データは、たとえば、開発ツール30上で作成された上述のユーザプログラム210や、上述の設定情報212などを含む。
【0124】
通信インターフェイス211は、他の通信機器との間でネットワークを介してデータを遣り取りする。当該他の通信機器は、たとえば、コントローラ100、サーバなどの外部機器を含む。開発支援装置200は、通信インターフェイス211を介して、当該他の通信機器から、開発支援プログラム208Aなどの各種プログラムをダウンロード可能なように構成されてもよい。
【0125】
I/Oインターフェイス214は、操作部215に接続され、操作部215からのユーザ操作を示す信号を取り込む。操作部215は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。
【0126】
表示インターフェイス220は、表示部221と接続され、制御装置202などからの指令に従って、表示部221に対して、画像を表示するための画像信号を送出する。表示部221は、LCD(Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイなどからなり、ユーザに対して各種情報を提示する。表示部221には、開発ツール30によって提供される各種画面(たとえば、上述のプログラム作成画面31や設定画面33)が表示され得る。なお、
図16の例では、開発支援装置200および表示部221が別体として示されているが、開発支援装置200および表示部221は、一体的に構成されてもよい。
【0127】
<G.機能構成>
図17を参照して、コントローラ100および開発支援装置200の機能について説明する。
図17は、コントローラ100および開発支援装置200の機能構成の一例を示す図である。
【0128】
図17に示されるように、コントローラ100A,100Bは、それぞれ、機能構成として、通信命令実行モジュール151と、通信モジュール152と、通信ドライバ153と、パケットモニタモジュール154とを含む。これらの機能モジュールは、たとえば、システムプログラム109(
図15参照)内に実装される。通信モジュール152は、クライアント機能152Aと、サーバ機能152Bとを含む。
【0129】
また、コントローラ100A,100Bには、開発支援装置200上でユーザプログラム210がインストールされている。ユーザプログラム210は、たとえば、その一機能として、パケットモニタモジュール154によるパケットデータのバッファリング処理を停止するための停止モジュール156と、パケットモニタモジュール154によるパケットデータのバッファリング処理を開始するための開始モジュール157と、バッファリングされたパケットデータを外部記憶装置に保存するための保存モジュール15
9とを含む。典型的には、コントローラ100の機能モジュールは、制御装置102(
図15参照)によって実行される。
【0130】
通信モジュール152、パケットモニタモジュール154、および停止モジュール156の機能については上述の通りであるので、以下では、それらの機能の説明については繰り返さない。
【0131】
通信命令実行モジュール151は、通信モジュール152を制御するための機能モジュールである。一例として、通信命令実行モジュール151は、停止モジュール156からバッファリング停止命令を受け付けたことに基づいて、CIPメッセージを生成するためのCIPパラメータを生成し、CIPパラメータをクライアント機能152Aに出力する。CIPパラメータの詳細については後述する。
【0132】
通信ドライバ153は、通信インターフェイス101(
図15参照)用のソフトウェアである。通信ドライバ153は、通信インターフェイス101の種類に応じてメーカーによって提供されるものであり、予めインストールされていてもよいし、必要に応じてインストールされてもよい。コントローラ100は、通信ドライバ153を介して、他のコントローラや開発支援装置200との通信を実現する。
【0133】
サーバ機能152Bは、たとえば、停止命令を受け付けたことに基づいて、自コントローラのパケットモニタモジュール154を停止する。停止命令は、自コントローラから自発的に発せられることもあるし、他のコントローラや開発支援装置200から発せられることもある。
【0134】
一例として、停止命令が開発支援装置200から発せられる場合について説明する。ユーザは、いずれかのコントローラ100にエラーが発生していることを開発支援装置200上で確認し、バッファリング機能を停止するコントローラ100を開発支援装置200上で選択する。このことに基づいて、開発支援装置200は、指定されたコントローラ100にバッファリング機能の停止命令をコントローラ100Aに送信する。
【0135】
開発支援装置200は、機能モジュールとして、通信モジュール252と、通信ドライバ253とを有する。通信モジュール252は、クライアント機能252Aを含む。典型的には、開発支援装置200の機能モジュールは、制御装置202(
図16参照)によって実行される。
【0136】
通信ドライバ253は、通信インターフェイス211(
図16参照)用のソフトウェアである。通信ドライバ253は、通信インターフェイス211の種類に応じてメーカーによって提供されるものであり、予めインストールされていてもよいし、必要に応じてインストールされてもよい。開発支援装置200は、通信ドライバ253を介して、コントローラ100との通信を実現する。
【0137】
<H.CIPメッセージ>
上述のように、通信モジュール152は、CIPパラメータに基づいて、パケットモニタモジュール154に対する制御指令を規定するCIPメッセージを生成する。以下では、
図18〜
図20を参照して、CIPパラメータの具体例について説明する。
【0138】
図18は、パケットモニタモジュール154に関する設定を行うためのCIPパラメータを示す図である。
【0139】
一例として、CIPパラメータは、パケットモニタモジュール154の有効/無効の設定に関するサービスコードを含む。たとえば、サービスコードとして「0x4E」が入力された場合には、パケットモニタモジュール154の有効/無効を示す現在の設定値が取得される。サービスコードとして「0x4F」が入力された場合には、パケットモニタモジュール154の有効/無効が入力に応じてセットされる。
【0140】
他にも、CIPパラメータは、パケットモニタモジュール154の各種設定に関するサービスコードを含む。たとえば、たとえば、サービスコードとして「0x50」が入力された場合には、パケットモニタモジュール154の現在の各種設定が取得される。サービスコードとして「0x51」が入力された場合には、パケットモニタモジュール154の各種設定が入力に応じてセットされる。
【0141】
図19は、パケットモニタモジュール154の実行命令を指定するためのCIPパラメータを示す図である。
【0142】
一例として、CIPパラメータは、パケットモニタモジュール154のパケットモニタリング処理(すなわち、パケットデータのバッファリング処理)を開始するためのサービスコードを含む。たとえば、サービスコードとして「0x4B」が入力された場合には、パケットモニタモジュール154によるパケットモニタリング処理が開始される。
【0143】
他にも、CIPパラメータは、パケットモニタモジュール154のパケットモニタリング処理を停止するためのサービスコードを含む。たとえば、サービスコードとして「0x4C」が入力された場合には、パケットモニタモジュール154によるパケットモニタリング処理が停止する。
【0144】
他にも、CIPパラメータは、パケットモニタモジュール154によってバッファリングされたパケットデータを外部記憶装置に保存するためのCIPパラメータを含む。たとえば、サービスコードとして「0x4D」が入力された場合には、バッファリングされたパケットデータが外部記憶装置に保存される。
【0145】
図20は、パケットモニタモジュール154の現状態を取得するためのCIPパラメータを示す図である。
【0146】
一例として、CIPパラメータは、パケットモニタモジュール154の現状態を取得するためのサービスコードを含む。たとえば、サービスコードとして「0x52」が入力された場合には、パケットモニタモジュール154の現状態が得られる。パケットモニタモジュール154の状態は、たとえば、パケットモニタリングが無効に設定されている状態、パケットモニタリングの停止中を示す状態、パケットモニタリングの実行中を示す状態などを含む。
【0147】
<I.まとめ>
以上のようにして、コントローラ100は、予め定められた停止条件が満たされたことに基づいて、指定されているコントローラについて、パケットモニタモジュール154のバッファリング機能を停止する。すなわち、コントローラ100は、自コントローラにおけるバッファリング機能だけでなく、他のコントローラにおけるバッファリング機能も停止することができる。これにより、自コントローラにバッファリングされたパケットデータの損失を防ぐことができるだけでなく、他のコントローラにバッファリングされたパケットデータの損失を防ぐことができる。
【0148】
<J.付記>
以上のように、本実施形態は以下のような開示を含む。
【0149】
[構成1]
それぞれが制御対象の駆動機器を制御する複数のコントローラ(100A〜100C)を備え、
前記複数のコントローラ(100A〜100C)は、それぞれ、
バッファ(150)と、
他のコントローラとパケット通信を行うための通信モジュール(152)と、
自コントローラで生成されたパケットデータと、自コントローラが受信したパケットデータとを前記バッファ(150)にバッファリングするためのパケットモニタモジュール(154)と、
予め定められた停止条件(108)が満たされたことに基づいて、前記複数のコントローラ(100A〜100C)の内の指定されているコントローラについて、前記パケットモニタモジュール(154)のバッファリング機能を停止するための停止モジュール(156)とを含む、FA(Factory Automation)システム。
【0150】
[構成2]
前記停止モジュール(156)は、バッファリング機能を停止する停止命令を前記他のコントローラから受信したことに基づいて、前記自コントローラにおける前記パケットモニタモジュール(154)のバッファリング機能を停止する、構成1に記載のFAシステム。
【0151】
[構成3]
前記パケットデータは、送信元のコントローラを特定するための送信元情報と、送信先のコントローラを特定するための送信先情報とを有し、
前記FAシステムは、前記複数のコントローラ(100A〜100C)と通信可能に構成されている外部機器(200)をさらに備え、
前記外部機器(200)は、
前記複数のコントローラ(100A〜100C)のそれぞれのバッファ(150)に格納されているパケットデータを前記複数のコントローラ(100A〜100C)のそれぞれから受信するための通信モジュール(252)と、
前記複数のコントローラ(100A〜100C)のそれぞれから受信したパケットデータの各々について送信元情報と送信先情報とを表示するための表示部(221)とを含む、構成1または2に記載のFAシステム。
【0152】
[構成4]
前記表示部(221)は、送信元情報が一致し、かつ送信先情報が一致するパケットデータ同士を対応させて表示する、構成3に記載のFAシステム。
【0153】
[構成5]
前記表示部(221)は、送信元情報が一致し、かつ送信先情報が一致する対のパケットデータが存在しないパケットデータを他のパケットデータとは異なる表示態様で表示する、構成4に記載のFAシステム。
【0154】
[構成6]
前記複数のコントローラ(100A〜100C)は、それぞれ、外部記憶装置を接続するためのインターフェイス部(139)を含み、
予め定められた保存条件が満たされたことに基づいて、前記複数のコントローラ(100A〜100C)の内の指定されているコントローラのバッファ(150)に格納されているパケットデータを、それぞれ、当該コントローラに接続されている前記外部記憶装置(140)に格納するための保存モジュール(159)とを含む、構成1〜5のいずれか1項に記載のFAシステム。
【0155】
[構成7]
制御対象の駆動機器を制御するコントローラであって、
バッファ(150)と、
他のコントローラとパケット通信を行うための通信モジュール(152)と、
前記コントローラで生成されたパケットデータと、前記他のコントローラが受信したパケットデータとを前記バッファ(150)にバッファリングするためのパケットモニタモジュール(154)と、
予め定められた停止条件(108)が満たされたことに基づいて、前記コントローラまたは前記他のコントローラの内の指定されているコントローラについて、前記パケットモニタモジュール(154)のバッファリング機能を停止するための停止モジュール(156)とを含む、コントローラ。
【0156】
[構成8]
制御対象の駆動機器を制御するコントローラの制御方法であって、
他のコントローラとパケット通信を行うステップと、
前記コントローラで生成されたパケットデータと、前記他のコントローラが受信したパケットデータとを前記コントローラのバッファ(150)にバッファリングするステップと、
予め定められた停止条件(108)が満たされたことに基づいて、前記コントローラまたは前記他のコントローラの内の指定されているコントローラについて、前記バッファリングするステップでのバッファリングを停止するステップとを含む、制御方法。
【0157】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。