(57)【要約】【課題】第１の産業機器に、第２の産業機器の状態データが取得された時間を正確に把握させる。【解決手段】通信システム（１）は、第１の産業機器（２０）と第２の産業機器（３０）とが通信し、第１の産業機器（２０）が更新する第１の時間情報と、第２の産業機器（３０）が更新する第２の時間情報と、を同期させる同期部を有する。第２の産業機器（３０）は、第２の産業機器（３０）の状態データを取得する取得部（３０３）と、第１の産業機器（２０）に対し、状態データが取得された場合の第２の時間情報と、状態データと、を送信する送信部（３０４）と、を有する。【選択図】図３
2020135183.tif 000002
【特許請求の範囲】
【請求項１】
第１の産業機器と第２の産業機器とが通信する通信システムであって、
前記第１の産業機器が更新する第１の時間情報と、前記第２の産業機器が更新する第２の時間情報と、を同期させる同期部を有し、
前記第２の産業機器は、
前記第２の産業機器の状態データを取得する取得部と、
前記第１の産業機器に対し、前記状態データが取得された場合の前記第２の時間情報と、前記状態データと、を送信する送信部と、
を有する通信システム。
【請求項２】
前記第１の産業機器は、前記第２の産業機器に対し、前記状態データの読出要求をする読出要求部を有し、
前記送信部は、前記第１の産業機器から前記読出要求を受信した場合に、前記第２の時間情報と前記状態データとを送信する、
請求項１に記載の通信システム。
【請求項３】
前記同期部は、同期通信を利用して、前記第１の時間情報と、前記第２の時間情報と、を同期させ、
前記第１の産業機器は、非同期通信を利用して、前記第２の産業機器に対し、前記状態データの取得開始要求をする取得開始要求部を有し、
前記取得部は、前記第１の産業機器から前記非同期通信を利用して前記取得開始要求を受信した場合に、前記状態データを取得する、
請求項１又は２に記載の通信システム。
【請求項４】
前記第２の産業機器は、所定のトリガ条件が満たされたか否かを判定する判定部を有し、
前記取得部は、前記トリガ条件が満たされた場合に、前記状態データを取得する、
請求項１〜３の何れかに記載の通信システム。
【請求項５】
前記第２の産業機器は、所定期限までに前記トリガ条件が満たされなかった場合に、前記状態データの取得を制限する制限部を有する、
請求項４に記載の通信システム。
【請求項６】
前記同期部は、前記第１の産業機器により実現され、
前記同期部は、前記第２の産業機器に対し、前記第１の時間情報を含む同期要求を送信し、
前記第２の産業機器は、前記同期要求に含まれる前記第１の時間情報に基づいて、前記第２の時間情報を更新する更新部を有する、
請求項１〜５の何れかに記載の通信システム。
【請求項７】
前記第１の産業機器は、前記第２の産業機器に対し、前記状態データの取得条件を設定する設定部を有し、
前記取得部は、前記取得条件に基づいて、前記状態データを取得する、
請求項１〜６の何れかに記載の通信システム。
【請求項８】
前記第１の産業機器は、前記第１の時間情報とは別の時間情報を更新し、
前記第１の産業機器は、前記第２の産業機器から受信した前記第２の時間情報を前記別の時間情報に変換し、前記第２の産業機器から受信した前記状態データに関連付けて記憶部に記録する記録部を有する、
請求項１〜７の何れかに記載の通信システム。
【請求項９】
前記第１の産業機器は、マスタ機器であり、
前記第２の産業機器は、前記マスタ機器からの指令に基づいて動作するスレーブ機器であり、
前記取得部は、前記スレーブ機器の前記状態データを取得し、
前記送信部は、前記マスタ機器に対し、前記状態データが取得された場合の前記第２の時間情報と、前記状態データと、を送信する、
請求項１〜８の何れかに記載の通信システム。
【請求項１０】
前記通信システムは、前記指令が送信された場合の前記第１の時間情報と、前記第２の産業機器から受信した前記第２の時間情報と、に基づいて、前記指令と前記状態データとを比較して表示させる表示制御部を有する、
請求項９に記載の通信システム。
【請求項１１】
前記取得部は、前記状態データとして、前記第２の産業機器の時系列的な状態変化が示されたトレースデータを取得し、
前記送信部は、前記第１の産業機器に対し、前記トレースデータが取得された場合の前記第２の時間情報と、前記トレースデータと、を送信する、
請求項１〜１０の何れかに記載の通信システム。
【請求項１２】
第１の産業機器と第２の産業機器との間の通信方法であって、
前記第１の産業機器が更新する第１の時間情報と、前記第２の産業機器が更新する第２の時間情報と、を同期させ、
前記第２の産業機器に状態データを取得させ、
前記第１の産業機器に対し、前記状態データが取得された場合の前記第２の時間情報と、前記状態データと、を送信させる、
通信方法。
【請求項１３】
第１の産業機器が更新する第１の時間情報と、第２の産業機器が更新する第２の時間情報と、が同期される場合に、前記第２の産業機器を、
前記第２の産業機器の状態データを取得する取得部、
前記第１の産業機器に対し、前記状態データが取得された場合の前記第２の時間情報と、前記状態データと、を送信する送信部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、通信方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、コントローラと、当該コントローラの指示に応じて動作するモータ制御装置と、を有するシステムにおいて、モータ制御装置が、コントローラに対し、状態データの一例であるトレースデータを送信するシステムが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１５−０６８２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、例えば、第１の産業機器に、第２の産業機器の状態データが取得された時間を正確に把握させることである。
【課題を解決するための手段】
【０００５】
本発明の一側面に係る通信システムは、第１の産業機器と第２の産業機器とが通信する通信システムであって、前記第１の産業機器が更新する第１の時間情報と、前記第２の産業機器が更新する第２の時間情報と、を同期させる同期部を有し、前記第２の産業機器は、前記第２の産業機器の状態データを取得する取得部と、前記第１の産業機器に対し、前記状態データが取得された場合の前記第２の時間情報と、前記状態データと、を送信する送信部と、を有する。
【０００６】
本発明の一側面に係る通信方法は、第１の産業機器と第２の産業機器との間の通信方法であって、前記第１の産業機器が更新する第１の時間情報と、前記第２の産業機器が更新する第２の時間情報と、を同期させ、前記第２の産業機器に状態データを取得させ、前記第１の産業機器に対し、前記状態データが取得された場合の前記第２の時間情報と、前記状態データと、を送信させる。
【０００７】
本発明の一側面に係るプログラムは、第１の産業機器が更新する第１の時間情報と、第２の産業機器が更新する第２の時間情報と、が同期される場合に、前記第２の産業機器を、前記第２の産業機器の状態データを取得する取得部、前記第１の産業機器に対し、前記状態データが取得された場合の前記第２の時間情報と、前記状態データと、を送信する送信部、として機能させる。
【０００８】
本発明の一側面によれば、前記第１の産業機器は、前記第２の産業機器に対し、前記状態データの読出要求をする読出要求部を有し、前記送信部は、前記第１の産業機器から前記読出要求を受信した場合に、前記第２の時間情報と前記状態データとを送信する。
【０００９】
本発明の一側面によれば、前記同期部は、同期通信を利用して、前記第１の時間情報と、前記第２の時間情報と、を同期させ、前記第１の産業機器は、非同期通信を利用して、前記第２の産業機器に対し、前記状態データの取得開始要求をする取得開始要求部を有し、前記取得部は、前記第１の産業機器から前記非同期通信を利用して前記取得開始要求を受信した場合に、前記状態データを取得する。
【００１０】
本発明の一側面によれば、前記第２の産業機器は、所定のトリガ条件が満たされたか否かを判定する判定部を有し、前記取得部は、前記トリガ条件が満たされた場合に、前記状態データを取得する。
【００１１】
本発明の一側面によれば、前記第２の産業機器は、所定期限までに前記トリガ条件が満たされなかった場合に、前記状態データの取得を制限する制限部を有する。
【００１２】
本発明の一側面によれば、前記同期部は、前記第１の産業機器により実現され、前記同期部は、前記第２の産業機器に対し、前記第１の時間情報を含む同期要求を送信し、前記第２の産業機器は、前記同期要求に含まれる前記第１の時間情報に基づいて、前記第２の時間情報を更新する更新部を有する。
【００１３】
本発明の一側面によれば、前記第１の産業機器は、前記第２の産業機器に対し、前記状態データの取得条件を設定する設定部を有し、前記取得部は、前記取得条件に基づいて、前記状態データを取得する。
【００１４】
本発明の一側面によれば、前記第１の産業機器は、前記第１の時間情報とは別の時間情報を更新し、前記第１の産業機器は、前記第２の産業機器から受信した前記第２の時間情報を前記別の時間情報に変換し、前記第２の産業機器から受信した前記状態データに関連付けて記憶部に記録する記録部を有する。
【００１５】
本発明の一側面によれば、前記第１の産業機器は、マスタ機器であり、前記第２の産業機器は、前記マスタ機器からの指令に基づいて動作するスレーブ機器であり、前記取得部は、前記スレーブ機器の前記状態データを取得し、前記送信部は、前記マスタ機器に対し、前記状態データが取得された場合の前記第２の時間情報と、前記状態データと、を送信する。
【００１６】
本発明の一側面によれば、前記通信システムは、前記指令が送信された場合の前記第１の時間情報と、前記第２の産業機器から受信した前記第２の時間情報と、に基づいて、前記指令と前記状態データとを比較して表示させる表示制御部を有する。
【００１７】
本発明の一側面によれば、前記取得部は、前記状態データとして、前記第２の産業機器の時系列的な状態変化が示されたトレースデータを取得し、前記送信部は、前記第１の産業機器に対し、前記トレースデータが取得された場合の前記第２の時間情報と、前記トレースデータと、を送信する。
【発明の効果】
【００１８】
上記発明によれば、例えば、第１の産業機器に、第２の産業機器の状態データが取得された時間を正確に把握させることができる。
【図面の簡単な説明】
【００１９】
【図１】実施形態に係る通信システムの全体構成の一例を示す図である。
【図２】グローバルタイマの同期が取られる様子を示す図である。
【図３】通信システムで実現される機能を示す機能ブロック図である。
【図４】タイマデータのデータ格納例を示す図である。
【図５】ロギングファイルのデータ格納例を示す図である。
【図６】データ収集装置に表示される解析画面の一例を示す図である。
【図７】通信システムで実行される処理を示すフロー図である。
【図８】変形例における通信システムの全体構成を示す図である。
【発明を実施するための形態】
【００２０】
［１．通信システムの全体構成］
本発明の発明者の見地によれば、第１の産業機器と第２の産業機器とが通信する通信システムにおいて、第２の産業機器の故障予知や故障診断などをするために、第１の産業機器に、第２の産業機器の状態データを取得させることがある。しかしながら、従来の技術では、第１の産業機器は、第２の産業機器から状態データを取得しても、それがどの時点の状態を示すのかを特定することができなかった。そこで本発明の発明者は、第１の産業機器に、第２の産業機器の状態データが取得された時間を正確に把握させるために鋭意研究開発を行った結果、新規かつ独創的な通信システム等に想到した。以降、本実施形態に係る通信システム等を詳細に説明する。
【００２１】
図１は、実施形態に係る通信システムの全体構成の一例を示す図である。図１に示すように、通信システム１は、データ収集装置１０、コントローラ２０、モータ制御装置３０、モータ４０、センサ５０、及びエンコーダ６０を含む。なお、ここでは、説明の簡略化のために、これらを１台ずつ示しているが、通信システム１は、これらを複数台含んでいてもよい。例えば、複数のデータ収集装置１０が通信システム１に含まれていてもよいし、後述する変形例のように、１台のデータ収集装置１０に対し、複数のコントローラ２０が接続されていてもよい。
【００２２】
データ収集装置１０は、状態データを収集するコンピュータである。状態データとは、機器の状態を示すデータであり、例えば、ある時点における状態を示すデータであってもよいし、時系列的な状態変化を示すトレースデータであってもよい。機器の状態とは、機器の動作を表す情報であり、例えば、センサ５０又はエンコーダ６０が検出した物理量であってもよいし、コントローラ２０又はモータ制御装置３０内部の状態（例えば、ＣＰＵ使用率、メモリ使用率、又は通信負荷など）であってもよい。
【００２３】
本実施形態では、状態データの一例としてトレースデータを説明する。このため、本実施形態でトレースデータと記載した箇所は、状態データと読み替えることができる。例えば、トレースデータには、センサ５０又はエンコーダ６０により検出された物理量の時系列的な変化が示される。トレースデータは、動作のログ（履歴）を示すのでロギングデータと呼ばれることもある。例えば、トレースデータには、トルク信号、温度情報、フィードバック速度、位置偏差、速度偏差、又は電流偏差などが時系列的に示されている。
【００２４】
例えば、データ収集装置１０は、サーバコンピュータ、パーソナルコンピュータ、携帯電話（スマートフォンを含む）、又は携帯端末（タブレット型端末を含む）である。データ収集装置１０は、ＣＰＵ１１、記憶部１２、通信部１３、操作部１４、及び表示部１５を含む。
【００２５】
ＣＰＵ１１は、少なくとも１つのプロセッサを含む。記憶部１２は、ＲＡＭ、ＥＥＰＲＯＭ、及びハードディスクを含み、各種プログラムやデータを記憶する。ＣＰＵ１１は、これらプログラムやデータに基づいて各種処理を実行する。通信部１３は、ネットワークカードや各種通信コネクタ等の通信インタフェースを含み、他の装置との通信を行う。操作部１４は、マウスやキーボード等の入力デバイスである。表示部１５は、液晶ディスプレイ又は有機ＥＬディスプレイ等であり、ＣＰＵ１１の指示により各種画面を表示する。
【００２６】
コントローラ２０は、モータ制御装置３０を制御する装置である。本実施形態では、コントローラ２０が１台のモータ制御装置３０を制御する場合を説明するが、コントローラ２０は、複数台のモータ制御装置３０を制御してもよい。更に、コントローラ２０には、モータ制御装置３０だけでなく、センサ類又は入出力機器などが接続されていてもよい。
【００２７】
本実施形態では、コントローラ２０は、第１の産業機器の一例である。このため、本実施形態でコントローラ２０と記載した箇所は、第１の産業機器と読み替えることができる。産業機器は、人間が行う作業の補助又は代行をする機器及びその周辺機器の総称である。例えば、コントローラ２０以外にも、後述するモータ制御装置３０も産業機器に相当する。他にも例えば、ロボットコントローラ、産業用ロボット、インバータ、コンバータ、工作機械、又はＰＬＣ等は、産業機器に相当する。
【００２８】
例えば、コントローラ２０は、ＣＰＵ２１、記憶部２２、及び通信部２３を含む。ＣＰＵ２１、記憶部２２、及び通信部２３の物理的構成は、それぞれＣＰＵ１１、記憶部１２、及び通信部１３と同様である。なお、コントローラ２０は、モータ制御などの特定用途向けの集積回路（ＡＳＩＣ）を有していてもよい。
【００２９】
モータ制御装置３０は、モータ４０を制御する装置である。モータ制御装置３０は、サーボアンプ又はサーボパック（登録商標）と呼ばれることもある。本実施形態では、モータ制御装置３０が１台のモータ４０を制御する場合を説明するが、モータ制御装置３０は、複数台のモータ４０を制御してもよい。更に、モータ制御装置３０には、モータ４０、センサ５０、及びエンコーダ６０だけでなく、入出力機器などが接続されていてもよい。
【００３０】
モータ制御装置３０は、第２の産業機器の一例である。このため、本実施形態でモータ制御装置３０と記載した箇所は、第２の産業機器と読み替えることができる。産業機器の意味は先述した通りであり、第２の産業機器は、第１の産業機器と通信可能に接続される機器である。第１の産業機器は、第２の産業機器からトレースデータを受信する側の機器（トレースデータの送信先の機器）であり、第２の産業機器は、トレースデータを送信する側の機器（トレースデータの送信元の機器）である。第２の作業機器は、トレースデータを生成する機器、又は、動作の解析対象の機器ということもできる。
【００３１】
本実施形態では、第１の産業機器がマスタ機器であり、第２の産業機器は、スレーブ機器である場合を説明するが、後述する変形例のように、第１の産業機器と第２の産業機器は、マスタとスレーブの関係になくてもよい。別の言い方をすれば、第１の作業機器と第２の産業機器との間には、主従関係又は上下関係が存在しなくてもよい。
【００３２】
マスタ機器とは、スレーブ機器を制御する機器であり、スレーブ機器に対して指令を送信する機器である。別の言い方をすれば、マスタ機器は、スレーブ機器から動作状態を取得する機器である。スレーブ機器とは、マスタ機器からの指令に基づいて動作する機器であり、マスタ機器により制御される機器である。別の言い方をすれば、スレーブ機器は、マスタ機器に対して自身の動作状態を送信する機器である。本実施形態では、モータ制御装置３０は、コントローラ２０からの指令に基づいて動作するので、コントローラ２０がマスタ機器に相当し、モータ制御装置３０がスレーブ機器に相当する。
【００３３】
例えば、モータ制御装置３０は、ＣＰＵ３１、記憶部３２、及び通信部３３を含む。ＣＰＵ３１、記憶部３２、及び通信部３３の物理的構成は、それぞれＣＰＵ１１、記憶部１２、及び通信部１３と同様である。なお、モータ制御装置３０は、モータ制御などの特定用途向けの集積回路（ＡＳＩＣ）を有していてもよい。モータ制御装置３０は、コントローラ２０から受信した指令に基づいて、電力線で接続されたモータ４０に対する電圧を制御する。モータ４０は、回転式であってもよいしリニア式であってもよい。
【００３４】
センサ５０は、物理量を検出可能なセンサであればよく、例えば、トルクセンサ、温度センサ、力センサ、又はモーションセンサなどである。エンコーダ６０は、モータ４０の位置又は速度を検出する機器であり、例えば、光学式又は磁気式のモータエンコーダである。エンコーダ６０もセンサの一種である。モータ制御装置３０は、センサ５０により検出された物理量やエンコーダ６０により検出されたフィードバック速度を、任意のタイミングでコントローラ２０に送信する。
【００３５】
なお、データ収集装置１０、コントローラ２０、及びモータ制御装置３０の各々に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されるようにしてもよい。また、データ収集装置１０、コントローラ２０、及びモータ制御装置３０の各々のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部（例えば、光ディスクドライブやメモリカードスロット）や外部機器と直接的に接続するための入出力部（例えば、ＵＳＢ端子）が含まれていてもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが読取部又は入出力部を介して供給されるようにしてもよい。
【００３６】
［２．通信システムの概要］
通信システム１では、コントローラ２０とモータ制御装置３０とが通信する。コントローラ２０は、モータ制御装置３０に対して指令を送信し、モータ制御装置３０は、指令に基づいてモータ４０を動作させる。コントローラ２０とモータ制御装置３０とは、いわゆるフィールドネットワークによって接続され、任意の通信プロトコルを利用して通信が行われる。本実施形態の通信システム１は、同期通信を利用可能であり、コントローラ２０は、同期通信を利用して、モータ制御装置３０に指令を送信する。
【００３７】
同期通信とは、送信側の機器がデータを送信するタイミングと、受信側の機器がデータを受信するタイミングと、を合わせる通信方式である。同期通信では、データ通信のリクエストが送信されてからレスポンスを受信するまでの間は、原則として他の処理は実行されない。このため、送信側の機器は、受信側の機器にデータを送信した後は、レスポンスを受信するのを待機する。受信側の機器は、送信側の機器からデータを受信すると、すぐに処理を実行し、送信側の機器にレスポンスとして処理結果を返す。送信側の機器は、処理結果を受信すると、次の処理に移行する。同期通信が行われない場合には、非同期通信を利用して通信が行われる。
【００３８】
非同期通信とは、送信側の機器がデータを送信するタイミングと、受信側の機器がデータを受信するタイミングと、を合わせずに通信を行う通信方式である。非同期通信では、データ通信のリクエストが送信されてからレスポンスを受信するまでの間に、他の処理を実行可能である。このため、非同期通信では、送信側の機器は、受信側の機器にデータを送信してからレスポンスを受信するまでの間に、他の処理を実行可能である。また、非同期通信では、受信側の機器は、送信側の機器からデータを受信しても、すぐに処理を実行するとは限らない。受信側の機器は、所定の条件が充足されるまで処理の実行を待機したり、同期通信の処理を優先して実行したりする。
【００３９】
本実施形態では、同期通信を利用して送信される指令を同期タスクと記載し、非同期通信を利用して送信される指令を非同期タスクと記載する。例えば、コントローラ２０がモータ制御装置３０に同期タスクを送信した場合、コントローラ２０は、モータ制御装置３０からのレスポンスを受信するまでは、他の処理を実行せずに待機する。モータ制御装置３０は、コントローラ２０から同期タスクを受信すると、すぐに同期タスクを実行し、コントローラ２０に処理結果を送信する。
【００４０】
一方、コントローラ２０がモータ制御装置３０に非同期タスクを送信した場合、コントローラ２０は、モータ制御装置３０からのレスポンスを受信しなくても、他の処理を実行可能となる。例えば、コントローラ２０は、非同期タスクのレスポンスを受信するまでの間に、別の非同期タスクを送信したり、同期タスクを送信したりすることができる。モータ制御装置３０は、コントローラ２０から非同期タスクを受信した場合、すぐに非同期タスクを実行するとは限らない。
【００４１】
例えば、非同期タスクを実行するための条件が設定されている場合、モータ制御装置３０は、当該条件が充足されるまで、非同期タスクを実行しない。他にも例えば、タスクに優先順位が付けられている場合、モータ制御装置３０は、非同期タスクよりも優先順位の高い他のタスクを優先して実行し、非同期タスクの実行を後回しにする。モータ制御装置３０は、非同期タスクを実行すると、コントローラ２０に処理結果を送信する。
【００４２】
もし仮に、コントローラ２０が、同期タスクとして、トレースデータの取得開始をモータ制御装置３０に指示したとすると、モータ制御装置３０は、すぐにトレースデータの取得を開始し、コントローラ２０にトレースデータを送信する。このため、トレースデータの取得開始が同期タスクとして処理されるのであれば、コントローラ２０は、受信したトレースデータがどの時点のものなのかを特定することができる。
【００４３】
しかしながら、同期通信は、モータ４０の動作に直結する重要なデータの送信で利用されることが多く、トレースデータのために同期通信を利用できないことがある。例えば、トレースデータは、主に故障予知や故障診断に利用され、動作指令等に比べると緊急性及び重要度が低いので、後でゆっくりと取得すればよい。このため、緊急性及び重要度がより高い他のデータのために、同期通信を利用させた方がよいと考えられる。また、トレースデータは、時系列的な情報であり比較的データサイズが大きいので、同期通信を利用してトレースデータを送信しようとすると、ネットワークを占有する時間が長くなってしまう。
【００４４】
そこで、本実施形態では、トレースデータの取得開始を、非同期タスクとして処理するようにしている。この点、非同期タスクは、すぐに実行されるとは限られず、いつ実行されるか分からないので、コントローラ２０は、トレースデータを受信しても、それがいつの時点の状態を示すのかを特定することができない。
【００４５】
例えば、モータ制御装置３０が、非同期タスクとしてトレースデータの取得開始の指示を受信した場合、当該非同期タスクを実行するための条件がすぐに充足されることもあれば、条件がなかなか充足されないこともある。また、モータ制御装置３０は、トレースデータの取得が完了した後に、すぐにトレースデータを送信するとは限らないので、コントローラ２０は、トレースデータを受信しても、それがいつの時点の状態を示すのかを特定することができない。
【００４６】
そこで、本実施形態では、コントローラ２０とモータ制御装置３０との間で時間情報の同期を取らせて、モータ制御装置３０に、時間情報とともにトレースデータを送信させることによって、コントローラ２０に、モータ制御装置３０のトレースデータが取得された時間を正確に把握させるようにしている。
【００４７】
時間情報は、機器が管理する時間を示す数値であり、例えば、タイマ又はカウンタと呼ばれることもある。本実施形態では、コントローラ２０とモータ制御装置３０との間で時間情報の同期が取られるので、時間情報は、これらの機器の共通の時間を示すことになる。時間情報は、任意のビット数であってよいが、本実施形態では、メモリ消費量を抑えるために数十ビット程度（例えば、１６ビット〜６４ビット程度）とする。また、時間情報は、整数で示されてもよいし、小数点以下を含む数値で示されてもよい。
【００４８】
時間情報の同期とは、複数の機器間で時間情報を合わせることであり、ある機器の時間情報に他の機器の時間情報を合わせることである。別の言い方をすれば、時間情報の同期は、ある機器の時間情報に基づいて、他の機器の時間情報を上書き、修正、又は更新することである。時間情報の同期では、完全に値を一致させなくてもよく、僅かな誤差が許容されてもよい。
【００４９】
以降、コントローラ２０とモータ制御装置３０との間で同期が取られる時間情報を、グローバルタイマと記載する。このため、本実施形態でグローバルタイマと記載した箇所は、時間情報と読み替えることができる。
【００５０】
本実施形態では、コントローラ２０のグローバルタイマは第１の時間情報の一例であり、モータ制御装置３０のグローバルタイマは第２の時間情報の一例である。このため、本実施形態でコントローラ２０のグローバルタイマを説明している箇所は、第１の時間情報と読み替えることができ、モータ制御装置３０のグローバルタイマを説明している箇所は、第２の時間情報と読み替えることができる。
【００５１】
図２は、グローバルタイマの同期が取られる様子を示す図である。図２の横軸は、時間軸である。本実施形態では、コントローラ２０とモータ制御装置３０との間で、定周期通信が行われる場合を説明するが、特に周期的な通信が行われなくてもよい。コントローラ２０は、記憶部２２にグローバルタイマを記憶し、モータ制御装置３０は、記憶部３２にグローバルタイマを記憶する。
【００５２】
本実施形態では、伝送周期の開始直後に、グローバルタイマの同期を取る同期タスクが実行される場合を説明するが、伝送周期内の任意のタイミングで当該同期タスクが実行されるようにすればよい。例えば、伝送周期の終了間際に当該同期タスクが実行されてもよいし、伝送周期の開始直後又は終了間際以外のタイミングで当該同期タスクが実行されてもよい。また、当該同期タスクは、毎回実行されなくてもよく、例えば、２伝送周期ごと又は５伝送周期ごとに実行されてもよい。
【００５３】
図２の例では、「伝送周期１」において、コントローラ２０は、記憶部２２のグローバルタイマが示す「１００．００」の数値を、モータ制御装置３０に送信する。モータ制御装置３０は、コントローラ２０から当該数値を受信すると、同期タスクとして処理し、記憶部３２のグローバルタイマの値を「１００．００」に上書きし、レスポンスとして処理結果を送信する。これにより、コントローラ２０のグローバルタイマと、モータ制御装置３０のグローバルタイマと、を一致させることができる。なお、上記のレスポンスは、送信されなくてもよい。この点は、以降の説明も同様である。
【００５４】
その後、コントローラ２０は、記憶部２２のグローバルタイマをカウントアップし、モータ制御装置３０は、記憶部２２のグローバルタイマをカウントアップする。１回のカウントアップあたりのグローバルタイマの増加量は、任意であってよく、本実施形態では「０．０１」とするが、「０．０２」などの他の単位で増加してもよい。なお、グローバルタイマは、所定ルールのもとで更新すればよく、カウントアップされるのではなく、カウントダウンされてもよい。グローバルタイマの更新は、ＣＰＵ１１又は２１により行われてもよいし、ＡＳＩＣにより行われてもよい。
【００５５】
グローバルタイマの更新周期（カウントアップ速度）は、クロック周波数などのハードウェアの性能やその時の動作環境に依存する。コントローラ２０とモータ制御装置３０は、互いに全く同じ性能や動作環境を有するわけではないため、コントローラ２０のグローバルタイマとモータ制御装置３０のグローバルタイマとの間には、次第にずれが生じる。このため、「伝送周期１」の冒頭でグローバルタイマの同期を取ったとしても、次の「伝送周期２」が訪れた時点では、例えば、コントローラ２０のグローバルタイマが「１０１．２５」を示し、モータ制御装置３０のグローバルタイマが「１０１．１９」を示すといったことが起こりうる。
【００５６】
「伝送周期２」が訪れると、「伝送周期１」と同様の同期タスクが実行され、モータ制御装置３０のグローバルタイマが、コントローラ２０のグローバルタイマの「１０１．２５」に上書きされる。これにより、グローバルタイマがずれたとしても、コントローラ２０とモータ制御装置３０との間でグローバルタイマを再び同期させることができる。その後、コントローラ２０とモータ制御装置３０は、各自でグローバルタイマをカウントアップする。
【００５７】
「伝送周期３」が訪れた場合も同様に、コントローラ２０は、自身の記憶部２２に記憶されたグローバルタイマが示す「１０２．５０」の数値を、モータ制御装置３０に送信する。ただし、通信障害等によって同期タスクが正確に実行されず、コントローラ２０とモータ制御装置３０との間でグローバルタイマの同期を取ることができないことがある。この場合、図２に示すように、モータ制御装置３０のグローバルタイマは、例えば、「１０２．１７」となり、グローバルタイマがずれたままとなる。その後、次の「伝送周期４」が訪れるまでは、コントローラ２０とモータ制御装置３０との間でグローバルタイマを同期させることができず、グローバルタイマのずれが徐々に広がる。
【００５８】
「伝送周期４」が訪れた場合に、通信障害等が解消されて同期タスクが正確に実行されると、コントローラ２０とモータ制御装置３０との間でグローバルタイマを再び同期させることができる。このため、図２に示すように、「伝送周期３」では同期を取ることができなかったモータ制御装置３０のグローバルタイマは、「伝送周期４」でコントローラ２０と同じ「１０３．７５」となる。このように、グローバルタイマの同期を取れなかったとしても、次の伝送周期ですぐに同期を取ることができるので、さほどずれが大きくならないようにすることができる。以降の伝送周期も同様にして、グローバルタイマの同期が取られる。
【００５９】
なお、本実施形態では、モータ制御装置３０のグローバルタイマを、コントローラ２０のグローバルタイマに合わせる場合を説明するが、これとは逆に、コントローラ２０のグローバルタイマを、モータ制御装置３０のグローバルタイマに合わせてもよい。この場合例えば、コントローラ２０は、モータ制御装置３０にグローバルタイマを送信させる同期タスクを送信する。コントローラ２０は、モータ制御装置３０からグローバルタイマを受信し、モータ制御装置３０のグローバルタイマに合うように、記憶部２２のグローバルタイマを上書きしてもよい。
【００６０】
以上のように、通信システム１は、コントローラ２０とモータ制御装置３０との間でグローバルタイマの同期が取らせている。本実施形態では、モータ制御装置３０は、トレースデータの取得を開始する場合に、その時点のグローバルタイマを保持し、保持したグローバルタイマをトレースデータとともに送信する。これにより、トレースデータの取得開始が非同期タスクとして処理されたとしても、コントローラ２０は、トレースデータとともに受信したグローバルタイマにより、どの時点のトレースデータなのかを容易に把握できるようになる。以降、通信システム１の詳細を説明する。
【００６１】
［３．通信システムで実現される機能］
図３は、通信システム１で実現される機能を示す機能ブロック図である。ここでは、データ収集装置１０、コントローラ２０、及びモータ制御装置３０の各々において実現される機能について説明する。
【００６２】
［３−１．コントローラにおいて実現される機能］
図３に示すように、コントローラ２０では、データ記憶部２００、同期部２０１、設定部２０２、取得開始要求部２０３、読出要求部２０４、及び記録部２０５が実現される。データ記憶部２００は、記憶部２２を主として実現され、同期部２０１、設定部２０２、取得開始要求部２０３、読出要求部２０４、及び記録部２０５は、ＣＰＵ２１を主として実現される。
【００６３】
［データ記憶部］
データ記憶部２００は、グローバルタイマの同期を取ったりトレースデータを取得したりするために必要なデータを記憶する。例えば、データ記憶部２００は、グローバルタイマの現在値が格納されたタイマデータＤと、過去に取得されたトレースデータが格納されたロギングファイルＦと、を記憶する。
【００６４】
図４は、タイマデータＤのデータ格納例を示す図である。本実施形態では、コントローラ２０は、グローバルタイマとは別の時間情報を有しており、以降では、この時間情報をコントローラカウンタと記載する。図４に示すように、例えば、タイマデータＤには、グローバルタイマの現在値、コントローラカウンタの現在値、及びグローバルタイマとコントローラカウンタの対応関係が格納される。
【００６５】
グローバルタイマの現在値は、コントローラ２０がカウントアップ中のグローバルタイマの値である。グローバルタイマの現在値は、グローバルタイマのビット数の最大値までカウントアップされると初期値に戻る。グローバルタイマは、他の機器と同期を取るための時間情報であるのに対し、コントローラカウンタは、コントローラ２０が管理する絶対時間であり、原則として外部からの補正が入らない時間情報である。
【００６６】
コントローラカウンタのビット数は、任意のビット数であってよく、グローバルタイマと同じであってもよいし異なってもよい。本実施形態では、コントローラカウンタのビット数は、グローバルタイマよりもビット数が多く、より長い時間を表現可能となっている。例えば、コントローラカウンタは、十分なビット数が確保されており、グローバルタイマが初期値に戻ったとしても、コントローラカウンタは初期値に戻らないようになっている。このため、トレースデータに付随するグローバルタイマをコントローラカウンタに変換することで、コントローラ２０の中での絶対時間に変換することができる。グローバルタイマは、人間が目で見て分かる時間（年月日及び時刻）に変換するために利用されてもよい。
【００６７】
コントローラ２０は、グローバルタイマだけではなく、グローバルタイマとは別の時間情報であるコントローラカウンタを更新する。本実施形態では、コントローラカウンタがカウントアップされる場合を説明するが、コントローラカウンタは、カウントダウンされることによって更新されてもよい。また、コントローラカウンタの更新周期と、グローバルタイマの更新周期と、は同じであってもよいし異なっていてもよい。また、１回のカウントアップ当たりのコントローラカウンタの増加量とグローバルタイマの増加量とは、同じであってもよいし異なっていてもよい。
【００６８】
グローバルタイマとコントローラカウンタの対応関係は、グローバルタイマをコントローラカウンタに変換するために用いられる。例えば、コントローラ２０は、グローバルタイマ及びコントローラをカウントアップすると、その時点でのグローバルタイマ及びコントローラを互いに関連付けてタイマデータＤに格納する。これにより、コントローラ２０がトレースデータを受信した場合に、一緒に受信したグローバルタイマをコントローラカウンタに変換することができるようになる。即ち、コントローラ２０の時間的な物差し（絶対時間）でトレースデータを表示させることができるようになる。なお、グローバルタイマが初期値に戻った場合には、グローバルタイマに関連付けられるコントローラカウンタが上書きされるようにしてよい。
【００６９】
図５は、ロギングファイルＦのデータ格納例を示す図である。ロギングファイルＦは、トレースデータが格納されたファイルであり、本実施形態では、トレースデータとは異なる名前で呼ぶことにするが、トレースデータとは特に区別しなくてもよい。図５に示すように、ロギングファイルＦには、トレースデータに含まれる個々の数値が、当該数値が取得された時間と関連付けられて格納されている。本実施形態では、コントローラカウンタとグローバルタイマが用意されているので、トレースデータに含まれる個々の数値には、コントローラカウンタとグローバルタイマが関連付けられている。
【００７０】
なお、データ記憶部２００が記憶するデータは、上記の例に限られない。例えば、データ記憶部２００は、後述するトレースデータの取得条件を記憶してもよい。他にも例えば、データ記憶部２００は、コントローラ２０に接続された機器の構成を示す機器情報を記憶してもよいし、データ収集装置１０及びモータ制御装置３０のＩＰアドレスを記憶してもよい。また例えば、データ記憶部２００は、モータ制御装置３０に対する指令を時系列的に記憶してもよい。例えば、データ記憶部２００は、モータ４０の動作指令（例えば、位置指令速度）が送信された時点を示すコントローラカウンタ又はグローバルタイマと、当該動作指令の内容と、の関係を時系列的に記憶してもよい。これらの関係は、プログラム又はパラメータに定義されていてもよく、データ記憶部２００は、当該プログラム又はパラメータを記憶してもよい。
【００７１】
［同期部］
同期部２０１は、コントローラ２０が更新するグローバルタイマと、モータ制御装置３０が更新するグローバルタイマと、を同期させる。本実施形態では、同期部２０１は、モータ制御装置３０に、コントローラ２０のグローバルタイマを送信し、モータ制御装置３０のグローバルタイマを、コントローラ２０のグローバルタイマに合わせる。これとは逆に、同期部２０１は、モータ制御装置３０からグローバルタイマを受信し、コントローラ２０のグローバルタイマを、モータ制御装置３０のグローバルタイマに合わせてもよい。
【００７２】
本実施形態では、通信システム１が同期通信可能なので、同期部２０１は、同期通信を利用して、コントローラ２０のグローバルタイマと、モータ制御装置３０のグローバルタイマと、を同期させる。同期部２０１は、同期タスクを実行させることにより、これらグローバルタイマを同期させる。本実施形態では、同期タスクは、モータ制御装置３０のグローバルタイマを、コントローラ２０のグローバルタイマで上書きする指令であるが、同期タスクは、モータ制御装置３０のグローバルタイマを送信させる指令であってもよい。この場合、同期部２０１は、モータ制御装置３０から受信したグローバルタイマで、データ記憶部２００のグローバルタイマを上書きする。
【００７３】
例えば、同期部２０１は、モータ制御装置３０に対し、コントローラ２０のグローバルタイマを含む同期要求を送信する。同期要求は、グローバルタイマを同期させるための要求である。同期要求は、所定形式のデータが送信されることによって行われるようにすればよく、同期要求であることを識別する識別子を含む。本実施形態では、同期要求が同期タスクとして処理されるので、モータ制御装置３０は、同期要求を受信してすぐに、後述する更新部３０１により、データ記憶部３００のグローバルタイマを、同期要求に含まれるコントローラ２０のグローバルタイマで上書きする。
【００７４】
［設定部］
設定部２０２は、モータ制御装置３０に対し、トレースデータの取得条件を設定する。取得条件は、トレースデータの取得時に参照される条件であり、例えば、トレースデータの取得を開始するトリガ条件、トレース対象となる軸、トレース対象の情報（信号）の種類、サンプリング周期、又はトレース期間などである。
【００７５】
トリガ条件は、任意の条件を設定可能であり、例えば、センサ５０又はエンコーダ６０により検出される物理量に関する条件であってもよいし、モータ制御装置３０の内部状態に関する条件であってもよい。例えば、トリガ条件は、フィードバック速度が所定範囲になること、トルク信号の値が所定範囲になること、トルク信号が立ち上がること、トルク信号が収束すること、トルク波形が基準範囲から外れること、温度が所定範囲になること、又はＣＰＵ使用率が所定範囲になることなどである。
【００７６】
トレース対象となる軸は、物理量を計測すべきモータ４０の識別情報である。トレース対象の情報の種類は、トレースデータに格納すべき情報の種類であり、例えば、トルク信号、温度情報、フィードバック速度、位置偏差、速度偏差、電流偏差、ＣＰＵ使用率、メモリ使用率、又は通信負荷といった情報の種類である。サンプリング周期は、数値の計測間隔である。トレースデータには、サンプリング周期ごとに数値が格納される。トレース期間は、トレースデータの取得開始から取得完了までの期間である。
【００７７】
設定部２０２は、データ記憶部２００に記憶された取得条件を読み出し、モータ制御装置３０に送信することによって、取得条件を設定する。本実施形態では、設定部２０２は、非同期通信を利用して、非同期タスクとして取得条件を設定する場合を説明するが、設定部２０２は、同期通信を利用して、同期タスクとして取得条件を設定してもよい。設定部２０２は、後述する取得開始要求部２０３によりトレースデータの取得開始要求が送信される前に、取得条件の設定を行う。
【００７８】
［取得開始要求部］
取得開始要求部２０３は、モータ制御装置３０に対し、トレースデータの取得開始要求をする。取得開始要求は、モータ制御装置３０にトレースデータの取得を開始させるための要求である。取得開始要求は、所定形式のデータが送信されることによって行われるようにすればよく、取得開始要求であることを示す識別子を含む。本実施形態では、取得開始要求部２０３は、非同期通信を利用して、モータ制御装置３０に対し、トレースデータの取得開始要求をする場合を説明するが、通信システム１が同期通信を利用しない場合には、取得開始要求部２０３は、特に非同期通信を利用せずに、トレースデータの取得開始要求をする。
【００７９】
なお、本実施形態では、トレースデータの取得条件の設定と、トレースデータの取得開始要求と、が別々に行われる場合を説明するが、これらは、一連の処理として行われてもよい。例えば、コントローラ２０がモータ制御装置３０にトレースデータの取得条件を設定した場合に、モータ制御装置３０は、取得開始要求を待つことなく、トリガ条件が満たされたか否かを判定してもよい。この場合、トレースデータの取得開始要求が特に行われることなく、トリガ条件が満たされると、モータ制御装置３０は、トレースデータの取得を開始する。
【００８０】
［読出要求部］
読出要求部２０４は、モータ制御装置３０に対し、トレースデータの読出要求をする。読出要求は、トレースデータを読み出すための要求であり、トレースデータを送信させるための要求である。読出要求は、所定形式のデータが送信されることによって行われるようにすればよく、読出要求であることを示す識別子を含む。トレースデータがモータ制御装置３０の特定のレジスタに格納される場合には、読出要求には、レジスタアドレスが含まれていてもよい。本実施形態では、読出要求部２０４は、非同期通信を利用して、モータ制御装置３０に対し、トレースデータの読出要求をする場合を説明するが、通信システム１が同期通信を利用しない場合には、読出要求部２０４は、特に非同期通信を利用せずに、トレースデータの読出要求をする。
【００８１】
なお、本実施形態では、モータ制御装置３０は、自発的にトレースデータを送信せず、コントローラ２０からの読出要求に応じてトレースデータを送信する場合を説明するが、モータ制御装置３０は、トレースデータの取得が完了した場合に、自発的にトレースデータを送信してもよい。この場合、コントローラ２０は、特に読出要求をすることなく、モータ制御装置３０からトレースデータを取得する。
【００８２】
［記録部］
記録部２０５は、モータ制御装置３０から受信したトレースデータをデータ記憶部２００に記録する。本実施形態では、コントローラカウンタが用意されているので、記録部２０５は、モータ制御装置３０から受信したモータ制御装置３０のグローバルタイマをコントローラカウンタに変換し、モータ制御装置３０から受信したトレースデータに関連付けてデータ記憶部２００に記録する。
【００８３】
例えば、コントローラ２０がグローバルタイマとトレースデータを受信した場合、記録部２０５は、タイマデータＤの対応関係を参照し、受信したグローバルタイマをコントローラカウンタに変換する。そして、記録部２０５は、変換したコントローラカウンタ、受信したグローバルタイマ、及び受信したトレースデータを関連付けてロギングファイルＦに格納する。図５のデータ格納例であれば、コントローラ２０は、「１０１」「９５」「８０」・・・といった数値が時系列的に格納されたトレースデータを、取得開始時点を示す「１００．００」のグローバルタイマとともに受信する。記録部２０５は、タイマデータＤの対応関係を参照し、グローバルタイマ「１００．００」をコントローラカウンタ「５００００」に変換し、取得開始時点の数値「１０１」とともにロギングファイルＦに格納する。
【００８４】
本実施形態では、トレースデータのサンプリング周期が決められているので、記録部２０５は、取得開始時点以降の数値に対し、サンプリング周期に応じた値だけコントローラカウンタ及びグローバルタイマを増加させてロギングファイルＦに格納する。例えば、サンプリング周期が、コントローラカウンタで表現すると「１０」であり、グローバルタイマで表現すると「０．０２」だったとすると、図５のデータ格納例に示すように、取得開始時点の次の時点に取得された数値「９５」は、コントローラカウンタ「５００１０」及びグローバルタイマ「１００．０２」に関連付けられる。以降の数値についても同様に、サンプリング周期に対応する値だけ増加されたコントローラカウンタ及びグローバルタイマに関連付けられる。
【００８５】
［３−２．モータ制御装置において実現される機能］
図３に示すように、モータ制御装置３０では、データ記憶部３００、更新部３０１、判定部３０２、取得部３０３、送信部３０４、及び制限部３０５が実現される。データ記憶部３００は、記憶部３２を主として実現され、更新部３０１、判定部３０２、取得部３０３、送信部３０４、及び制限部３０５は、ＣＰＵ３１を主として実現される。
【００８６】
［データ記憶部］
データ記憶部３００は、グローバルタイマの同期を取ったりトレースデータを取得したりするために必要なデータを記憶する。例えば、データ記憶部３００は、グローバルタイマの現在値を記憶する。モータ制御装置３０は、グローバルタイマをカウントアップすることによって、グローバルタイマの現在値を更新する。
【００８７】
なお、データ記憶部３００が記憶するデータは、上記の例に限られない。例えば、データ記憶部３００は、コントローラ２０から受信したトレースデータの取得条件を記憶してもよい。また例えば、データ記憶部３００は、トリガ条件が満たされた後に、トレースデータの取得開始時点のグローバルタイマに関連付けて、計測中の数値を時系列的に記憶する。また例えば、データ記憶部３００は、コントローラ２０のＩＰアドレスを記憶してもよい。
【００８８】
［更新部］
更新部３０１は、同期要求に含まれるコントローラ２０のグローバルタイマに基づいて、モータ制御装置３０のグローバルタイマを更新する。本実施形態では、更新部３０１は、データ記憶部３００に記憶されたグローバルタイマを、コントローラ２０のグローバルタイマで上書きする場合を説明するが、先述したように、必ずしもこれらを一致させる必要はなく、多少の誤差を許容してもよい。
【００８９】
［判定部］
判定部３０２は、所定のトリガ条件が満たされたか否かを判定する。判定部３０２は、センサ５０若しくはエンコーダ６０により検出された物理量又はモータ制御装置３０の内部状態に基づいて、トリガ条件が満たされたか否かを判定する。例えば、判定部３０２は、エンコーダ６０により検出されたフィードバック速度が所定範囲になったか否かを判定する。また例えば、センサ５０により検出されたトルク信号の値が所定範囲になったか否か、トルク信号が立ち上がったか否か、トルク信号が収束したか否か、又はトルク波形が基準範囲から外れたか否かを判定する。また例えば、判定部３０２は、センサ５０により検出された温度が所定範囲になったか否かを判定する。また例えば、判定部３０２は、モータ制御装置３０のＣＰＵ使用率、メモリ使用率、又は通信負荷が所定範囲になったか否かを判定する。これらの判定結果が肯定又は否定された場合に、トリガ条件が満たされたと判定されるようにすればよい。
【００９０】
［取得部］
取得部３０３は、モータ制御装置３０の状態データを取得する。本実施形態では、トレースデータが状態データに相当するので、取得部３０３は、状態データとして、モータ制御装置３０の時系列的な状態変化が示されたトレースデータを取得する。例えば、取得部３０３は、センサ５０若しくはエンコーダ６０により検出された物理量又はモータ制御装置３０の内部状態に基づいて、トレースデータを取得する。
【００９１】
本実施形態では、取得部３０３は、コントローラ２０から非同期通信を利用して取得開始要求を受信した場合に、トレースデータを取得する。即ち、取得部３０３は、取得開始要求を受信したことに応じて、トレースデータの取得を開始する。別の言い方をすれば、取得部３０３は、取得開始要求を受信するまではトレースデータの取得を開始せず、取得開始要求を受信した場合に、トレースデータの取得を開始する。
【００９２】
本実施形態では、取得開始要求が受信されてもトリガ条件が満たされなければトレースデータの取得が開始されないので、取得部３０３は、トリガ条件が満たされた場合に、トレースデータを取得する。即ち、取得部３０３は、トリガ条件が満たされたと判定されたことに応じて、トレースデータの取得を開始する。取得部３０３は、トリガ条件が満たされたと判定されない場合にはトレースデータの取得を開始せず、トリガ条件が満たされたと判定された場合に、トレースデータの取得を開始する。
【００９３】
本実施形態では、取得部３０３は、取得条件に基づいて、トレースデータを取得する。例えば、取得条件にトレース対象となる軸が示されている場合、取得部３０３は、トレース対象となる軸の状態に基づいて、トレースデータを取得する。また例えば、取得条件にトレース対象の情報（信号）の種類が示されている場合、取得部３０３は、当該種類の情報に基づいて、トレースデータを取得する。また例えば、取得条件にサンプリング周期が示されている場合、取得部３０３は、当該サンプリング周期に基づいて、トレースデータを取得する。また例えば、取得条件にトレース期間が示されている場合、取得部３０３は、当該トレース期間に基づいて、トレースデータを取得する。
【００９４】
［送信部］
送信部３０４は、コントローラ２０に対し、状態データが取得された場合のグローバルタイマと、トレースデータと、を送信する。本実施形態では、トレースデータが状態データに相当するので、送信部３０４は、コントローラ２０に対し、トレースデータが取得された場合のモータ制御装置３０のグローバルタイマと、トレースデータと、を送信する。グローバルタイマとトレースデータは、データとして一体化された状態で送信されてもよいし、データとしては別体の状態で送信されてもよい。
【００９５】
トレースデータが取得された場合のグローバルタイマとは、トレースデータの取得が開始されてから終了するまでの間の任意のグローバルタイマである。本実施形態では、送信部３０４は、トレースデータの取得を開始した時点におけるグローバルタイマを送信する場合を説明するが、トレースデータの取得を完了した時点のグローバルタイマを送信してもよい。また例えば、送信部３０４は、トレースデータの取得を開始した時点よりも後であり、かつ、トレースデータの取得を完了した時点よりも前の時点におけるグローバルタイマを送信してもよい。他にも例えば、送信部３０４は、ある一時点のグローバルタイマだけでなく、トレースデータに含まれる数値が計測された全時点のグローバルタイマを送信してもよい。
【００９６】
本実施形態では、モータ制御装置３０は自発的にはトレースデータを送信しないので、送信部３０４は、コントローラ２０から読出要求を受信した場合に、モータ制御装置３０のグローバルタイマとトレースデータとを送信する。即ち、送信部３０４は、コントローラ２０から読出要求を受信したことに応じて、モータ制御装置３０のグローバルタイマとトレースデータとを送信する。送信部３０４は、コントローラ２０から読出要求を受信しない場合には、グローバルタイマとトレースデータの送信を待機し、コントローラ２０から読出要求を受信した場合に、グローバルタイマとトレースデータとを送信する。
【００９７】
［制限部］
制限部３０５は、所定期限までにトリガ条件が満たされなかった場合に、トレースデータの取得を制限する。所定期限は、予め定められた期限であればよく、例えば、グローバルタイマで表現可能な最大時間又はそれよりも短い時間である。トレースデータの取得を制限するとは、モータ制御装置３０にトレースデータを取得させないこと、又は、モータ制御装置３０にトレースデータを送信させないことである。
【００９８】
例えば、制限部３０５は、取得条件が設定されてから、又は、取得開始要求が受信されてから計時処理を開始し、所定期限が訪れたか否かを判定する。制限部３０５は、所定期限が訪れるまでの間にトリガ条件が満たされた場合には、トレースデータの取得を制限せず、所定期限が訪れてもトリガ条件が満たされなかった場合に、トレースデータの取得を制限する。
【００９９】
［３−３．データ収集装置において実現される機能］
図３に示すように、データ収集装置１０では、データ記憶部１００及び表示制御部１０１が実現される。データ記憶部１００は、記憶部１２を主として実現され、表示制御部１０１は、ＣＰＵ１１を主として実現される。
【０１００】
［データ記憶部］
データ記憶部１００は、データ収集装置１０がコントローラ２０から受信したロギングファイルＦを記憶する。他にも例えば、データ記憶部１００は、コントローラ２０に接続されたモータ制御装置３０やセンサ類などの構成を示す機器情報を記憶してもよいし、コントローラ２０のＩＰアドレスを記憶してもよい。また例えば、データ記憶部１００は、トレースデータの取得条件を記憶してもよい。この場合、データ収集装置１０からコントローラ２０に対して取得条件が展開されるようにしてもよい。
【０１０１】
また例えば、データ記憶部１００は、コントローラ２０のモータ制御装置３０に対する指令を時系列的に記憶してもよい。例えば、データ記憶部１００は、モータ４０の動作指令（例えば、位置指令速度）が送信された時点を示すコントローラカウンタ又はグローバルタイマと、当該動作指令の内容と、の関係を時系列的に記憶してもよい。これらの関係は、プログラム又はパラメータに定義されていてもよく、データ記憶部１００は、当該プログラム又はパラメータを記憶してもよい。
【０１０２】
［表示制御部］
表示制御部１０１は、指令が送信された場合のコントローラ２０のグローバルタイマと、モータ制御装置３０から受信したモータ制御装置３０のグローバルタイマと、に基づいて、指令とトレースデータとを比較して表示させる。例えば、表示制御部１０１は、コントローラ２０がモータ制御装置３０に送信した指令の時系列的な変化と、トレースデータが示す数値の時系列的な変化（指令に対する実測値の時系列的な変化）と、を比較可能に表示させる。
【０１０３】
図６は、データ収集装置１０に表示される画面の一例を示す図である。図６に示す例では、モータ４０の位置指令速度の時系列的な変化と、トレースデータが示すフィードバック速度及びトルクの時系列的な変化と、が画面Ｇに表示される。表示制御部１０１は、データ記憶部１００を参照して指令の時系列的な変化を取得し、ロギングファイルＦを参照して実際の動作を示す数値の時系列的な変化を取得する。これらの情報は、共通のグローバルタイマが関連付けられているので、表示制御部１０１は、同じ時間軸で指令に対する実測値を比較可能に表示させる。例えば、表示制御部１０１は、図６のように上下に並べて表示させてもよいし、同じグラフ上に重ねて表示させてもよい。
【０１０４】
［４．通信システムで実行される処理］
図７は、通信システム１で実行される処理を示すフロー図である。図７に示す処理は、ＣＰＵ１１，２１，３１がそれぞれ記憶部１２，２２，３２に記憶されたプログラムに従って動作することによって実行される。以降説明する処理は、図３に示す機能ブロックにより実行される処理の一例である。なお、コントローラ２０は、記憶部２２のグローバルタイマ及びコントローラカウンタをカウントアップし、モータ制御装置３０は、記憶部３２のグローバルタイマをカウントアップしているものとする。また、図７では、コントローラ２０からモータ制御装置３０へのモータ４０の動作指令については省略している。
【０１０５】
図７に示すように、まず、コントローラ２０は、同期タスクとして、モータ制御装置３０にグローバルタイマの同期要求を送信する（Ｓ１）。Ｓ１においては、コントローラ２０は、計時処理を実行し、伝送周期の開始時点が訪れたか否かを判定する。コントローラ２０は、伝送周期の開始時点が訪れたと判定した場合に、記憶部２２のグローバルタイマを含む同期要求を、同期タスクとして送信する。モータ制御装置３０は、同期要求を同期タスクとして処理し、記憶部３２のグローバルタイマを上書きする。
【０１０６】
データ収集装置１０は、コントローラ２０に、ロギング開始要求を送信する（Ｓ２）。ロギング開始要求は、ロギングファイルＦに格納するトレースデータの取得を開始させるための要求であり、ここでは、コントローラ２０に取得条件を設定させるための要求である。ロギング開始要求は、所定形式のデータが送信されることによって行われるようにすればよく、ロギング開始要求であることを示す識別子を含む。ロギング開始要求は、任意のタイミングで送信され、例えば、コントローラ２０でアラームが発生した場合に送信されてもよいし、ユーザが指定したタイミングで送信されてもよい。
【０１０７】
コントローラ２０は、ロギング開始要求を受信すると、非同期タスクとして、モータ制御装置３０に取得条件を設定する（Ｓ３）。取得条件は、データ収集装置１０からコントローラ２０に予め展開されてもよいし、ロギング開始要求に含まれていてもよい。Ｓ３においては、コントローラ２０は、記憶部２２に記憶された取得条件をモータ制御装置３０に送信する。モータ制御装置３０は、取得条件を受信すると記憶部３２に格納する。
【０１０８】
その後、次の伝送周期が訪れると、コントローラ２０は、同期タスクとして、モータ制御装置３０にグローバルタイマの同期要求を送信する（Ｓ４）。Ｓ４の処理は、Ｓ１の処理と同様である。以降、伝送周期が訪れるたびに、同期要求が送信される。
【０１０９】
コントローラ２０は、非同期タスクとして、モータ制御装置３０に取得開始要求を送信する（Ｓ５）。Ｓ５においては、例えば、コントローラ２０は、Ｓ３において送信された非同期タスクである取得条件の設定が完了した旨のレスポンスをモータ制御装置３０から受信した場合に取得開始要求を送信してもよいし、Ｓ３の取得条件の設定に関する非同期タスクを送信した後すぐに、取得開始要求を送信してもよい。
【０１１０】
モータ制御装置３０は、取得開始要求を受信すると、非同期タスクとして処理し、トリガ条件が満たされたか否かを判定する（Ｓ６）。Ｓ６においては、モータ制御装置３０は、Ｓ３で設定された取得条件の一つであるトリガ条件が満たされたか否かを判定する。なお、所定の制限期間までにトリガ条件が満たされなかった場合には、以降のＳ７〜Ｓ１１の処理は実行されない。
【０１１１】
トリガ条件が満たされたと判定された場合（Ｓ６；Ｙ）、モータ制御装置３０は、トレースデータの取得を開始し、トレースデータを取得する（Ｓ７）。Ｓ７においては、モータ制御装置３０は、グローバルタイマの現在値を記憶部３２に保持し、Ｓ３で設定された取得条件とセンサ５０又はエンコーダ６０等の信号とに基づいて、トレースデータの取得を開始する。以降、モータ制御装置３０は、トレース期間が終了するまでの間、サンプリング周期ごとに計測対象の数値の取得を繰り返す。
【０１１２】
コントローラ２０は、非同期タスクとして、モータ制御装置３０にトレースデータの読出要求を送信する（Ｓ８）。Ｓ８においては、コントローラ２０は、Ｓ５において送信された取得開始要求の非同期タスクが完了した旨のレスポンスをモータ制御装置３０から受信した場合に読出要求を送信してもよいし、Ｓ５の取得開始要求の非同期タスクを送信してから一定時間が経過した後に、読出要求を送信してもよい。
【０１１３】
モータ制御装置３０は、読出要求を受信すると、非同期タスクとして処理し、取得開始時点のグローバルタイマとともにトレースデータをコントローラ２０に送信する（Ｓ９）。Ｓ９においては、モータ制御装置３０は、Ｓ７で保持したグローバルタイマと、Ｓ７で取得したトレースデータと、を送信する。
【０１１４】
コントローラ２０は、トレースデータを受信すると、ロギングファイルＦを作成して記憶部２２に保存する（Ｓ１０）。Ｓ１０においては、コントローラ２０は、タイマデータＤに基づいて、トレースデータの取得開始時点を示すグローバルタイマをコントローラカウンタに変換し、トレースデータの最初の数値と関連付ける。また、コントローラ２０は、当該コントローラカウンタ及びグローバルタイマをサンプリング周期に応じた値だけ増加させつつ、トレースデータの２個目以降の数値と関連付ける。コントローラ２０は、これらコントローラカウンタ、グローバルタイマ、及びトレースデータの数値をロギングファイルＦに格納する。
【０１１５】
コントローラ２０は、データ収集装置１０にロギングファイルＦを送信し（Ｓ１１）、本処理は終了する。例えば、データ収集装置１０は、ＦＴＰ等を利用してロギングファイルＦを受信し、記憶部１２に格納する。以降、データ収集装置１０は、ユーザが操作部１４から所定の操作をした場合に、ロギングファイルＦに基づいて、画面Ｇを表示部１５に表示される。
【０１１６】
上記説明した通信システム１によれば、コントローラ２０が更新するグローバルタイマと、モータ制御装置３０が更新するグローバルタイマと、の同期が取れているため、コントローラ２０は、トレースデータが取得された時間を正確に把握することができる。例えば、コントローラ２０がトレースデータの取得要求を送信してから、実際にトレースデータが取得されるまでに時間がかかったり、トレースデータが取得されてからコントローラ２０がそれを読み出しに行くまでに時間がかかったりしたとしても、コントローラ２０のグローバルタイマとモータ制御装置３０のグローバルタイマの同期が取れているので、コントローラ２０は、いつの時点のトレースデータなのかを正確に把握することができる。
【０１１７】
また、トレースデータは、モータ制御装置３０により取得されてすぐにコントローラ２０に送信されるのではなく、コントローラ２０からの読出要求があって初めて送信されるため、トレースデータが取得されてから読出要求が受信されるまでに時間がかかることがある。この場合、コントローラ２０は、トレースデータだけが送られてきてもいつの時点のものなのかを特定することが難しいが、通信システム１によれば、コントローラ２０のグローバルタイマとモータ制御装置３０のグローバルタイマの同期が取れているので、トレースデータが取得されてから読出要求が受信されるまでに時間がかかったとしても、コントローラ２０は、いつの時点のトレースデータなのかを正確に把握することができる。
【０１１８】
また、非同期通信を利用すると、コントローラ２０がトレースデータの取得開始要求を送信しても、それがいつ実行されるのか分からないので、取得開始要求が送信されてからトレースデータが実際に取得されるまでに時間がかかることがある。この場合、コントローラ２０は、トレースデータだけが送られてきてもいつの時点のものなのかを特定することが難しいが、通信システム１によれば、コントローラ２０のグローバルタイマとモータ制御装置３０のグローバルタイマの同期が取れているので、取得開始要求が送信されてからトレースデータが実際に取得されるまでに時間がかかったとしても、コントローラ２０は、いつの時点のトレースデータなのかを正確に把握することができる。
【０１１９】
また、モータ制御装置３０の内部でトリガ条件が満たされた場合にトレースデータが取得されると、コントローラ２０は、いつトリガ条件が満たされたかを把握することができないので、トレースデータだけが送られてきてもいつの時点のものなのかを特定することが難しいが、通信システム１によれば、コントローラ２０のグローバルタイマとモータ制御装置３０のグローバルタイマの同期が取れているので、トリガ条件が満たされた場合にトレースデータが取得されるようにしたとしても、コントローラ２０は、いつの時点のトレースデータなのかを正確に把握することができる。
【０１２０】
また、コントローラ２０とモータ制御装置３０の間の通信が切断された場合には、時間情報の同期を取ることができないので、互いの時間のずれが次第に大きくなる。この場合に、トリガ条件がなかなか満たされなかったとすると、時間的に大きくずれた状態のモータ制御装置３０のグローバルタイマとともにトレースデータが送信されてしまう可能性があるが、通信システム１によれば、このような場合にはトレースデータの取得が制限されるので、時間的に大きくずれた状態のモータ制御装置３０のグローバルタイマとともにトレースデータが送信されるといったことを防止できる。
【０１２１】
また、コントローラ２０のグローバルタイマに基づいてモータ制御装置３０のグローバルタイマを更新することで、コントローラ２０側の時間にモータ制御装置３０を合わせることができ、コントローラ２０は、トレースデータが取得された時間をより正確に把握することができる。
【０１２２】
また、コントローラ２０がトレースデータの取得条件を設定することで、所望の内容のトレースデータを取得することができる。
【０１２３】
また、コントローラ２０が、同期用のコントローラ２０のグローバルタイマとは別の時間情報としてコントローラカウンタを有しており、モータ制御装置３０のグローバルタイマをコントローラカウンタに変換してトレースデータと関連付けておくことで、他の機器に影響されない独自の時間情報を利用してトレースデータを管理することができ、トレースデータの管理が容易になる。
【０１２４】
また、マスタ機器であるコントローラ２０が更新するコントローラ２０のグローバルタイマと、スレーブ機器であるモータ制御装置３０が更新するモータ制御装置３０のグローバルタイマと、の同期が取れているため、マスタ機器であるコントローラ２０は、スレーブ機器であるモータ制御装置３０においてトレースデータが取得された時間を正確に把握することができる。
【０１２５】
また、コントローラ２０のグローバルタイマとモータ制御装置３０のグローバルタイマの同期が取れており、マスタ機器であるコントローラ２０からの指令とトレースデータと、の時間的な関係も対応付けが取られているので、これらを比較して表示させることで、指令に対する実測値がどのような状態であるかを分かりやすく表示させることができる。このため、産業機器の動作の解析を効果的に支援することができる。
【０１２６】
また、コントローラ２０が更新するグローバルタイマと、モータ制御装置３０が更新するグローバルタイマと、の同期が取れているため、コントローラ２０は、状態データの一例であるトレースデータが取得された時間を正確に把握することができる。
【０１２７】
［５．変形例］
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【０１２８】
例えば、実施形態では、コントローラ２０と、１台のモータ制御装置３０と、の間でグローバルタイマの同期が取られる場合を説明したが、コントローラ２０は、複数台のモータ制御装置３０とグローバルタイマの同期を取ってもよい。この場合、これら複数台のモータ制御装置３０の各々は、コントローラ２０からグローバルタイマの同期要求を受信すると、自身のグローバルタイマを、同期要求に含まれるコントローラ２０のグローバルタイマで上書きすればよい。
【０１２９】
また例えば、第１の産業機器はコントローラ２０に限られず、第２の産業機器はモータ制御装置３０に限られない。例えば、コントローラ２０同士でグローバルタイマの同期が取られてもよく、あるコントローラ２０が第１の産業機器に相当し、別のコントローラ２０が第２の産業機器に相当してもよい。
【０１３０】
図８は、変形例における通信システム１の全体構成を示す図である。図８に示すように、データ収集装置１０には、複数のコントローラ２０Ａ，２０Ｂが接続されており、これら複数のコントローラ２０Ａ，２０Ｂの各々からロギングファイルＦを収集可能としてもよい。更に、コントローラ２０Ａとコントローラ２０Ｂとの間でグローバルタイマの同期が取られてもよい。この場合、コントローラ２０Ａが第１の産業機器に相当し、コントローラ２０Ｂが第２の産業機器に相当してもよいし、これとは逆にコントローラ２０Ｂが第１の産業機器に相当し、コントローラ２０Ａが第２の産業機器に相当してもよい。
【０１３１】
例えば、コントローラ２０Ａは、コントローラ２０Ｂに、グローバルタイマの同期要求を送信する。コントローラ２０Ｂは、同期要求に基づいて、自身のグローバルタイマを、コントローラ２０Ａのグローバルタイマで上書きする。コントローラ２０Ａ，２０Ｂの各々が自身に接続されたモータ制御装置３０Ａ〜３０Ｃの各々からトレースデータを受信する処理については、実施形態で説明した処理と同様の処理が実行されるようにすればよい。
【０１３２】
例えば、コントローラ２０Ｂは、コントローラ２０Ａと同期をとったグローバルタイマに基づいて、自身に接続されたモータ制御装置３０Ｂ，３０Ｃと同期を取り、トレースデータの取得開始時点のグローバルタイマとトレースデータをモータ制御装置３０Ｂ，３０Ｃから取得する。コントローラ２０Ｂは、取得したグローバルタイマとトレースデータをコントローラ２０Ａ又はデータ収集装置１０に送信してもよい。この場合、コントローラ２０Ｂは、独自にコントローラカウンタを用意し、グローバルタイマを自身のコントローラカウンタに変換してもよい。
【０１３３】
なお、コントローラ２０Ａは、モータ制御装置３０と同期を取る用のグローバルタイマと、コントローラ２０Ｂと同期を取る用のグローバルタイマと、を別々に有していてもよい。同様に、コントローラ２０Ｂは、モータ制御装置３０と同期を取る用のグローバルタイマと、コントローラ２０Ａと同期を取る用のグローバルタイマと、を有していてもよい。コントローラ２０Ｂがトレースデータをコントローラ２０Ａに送信する場合には、モータ制御装置３０と同期を取る用のグローバルタイマを、コントローラ２０Ａと同期を取る用のグローバルタイマに変換したうえで送信すればよい。
【０１３４】
また例えば、状態データとしてトレースデータが取得される場合を説明したが、状態データは、ある特定のレジスタに格納された一時点のデータであってもよい。この場合、コントローラ２０は、モータ制御装置３０の特定のレジスタを読み出す要求を送信する。また例えば、トレースデータのトリガ条件は特に設定されなくてもよい。また例えば、コントローラ２０及びモータ制御装置３０とは異なる第三者の機器により、グローバルタイマの同期が行われてもよい。また例えば、コントローラカウンタは、省略してもよい。また例えば、トレースデータは、表示させるのではなく、解析用のアプリケーションに入力させるために用いられてもよい。また例えば、コントローラ２０がモータ制御装置３０のグローバルタイマに合わせてもよく、同期部２０１は、モータ制御装置３０で実現されてもよい。また例えば、データ収集装置１０は、クラウドサーバ等であってもよい。
【０１３５】
また、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
【符号の説明】
【０１３６】
１  通信システム、Ｄ  タイマデータ、Ｆ  ロギングファイル、１０  データ収集装置、１１，２１，３１  ＣＰＵ、１２，２２，３２  記憶部、１３，２３，３３  通信部、１４  操作部、１５  表示部、２０，２０Ａ，２０Ｂ  コントローラ、３０  モータ制御装置、４０  モータ、５０  センサ、６０  エンコーダ、１００  データ記憶部、１０１  表示制御部、２００  データ記憶部、２０１  同期部、２０２  設定部、２０３  取得開始要求部、２０４  読出要求部、２０５  記録部、３００  データ記憶部、３０１  更新部、３０２  判定部、３０３  取得部、３０４  送信部、３０５  制限部。
【図１】
2020135183.tif 000003
【図２】
2020135183.tif 000004
【図３】
2020135183.tif 000005
【図４】
2020135183.tif 000006
【図５】
2020135183.tif 000007
【図６】
2020135183.tif 000008
【図７】
2020135183.tif 000009
【図８】
2020135183.tif 000010