特許第6973427号(P6973427)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社安川電機の特許一覧

特許6973427通信システム、通信方法、及びプログラム
<>
  • 特許6973427-通信システム、通信方法、及びプログラム 図000002
  • 特許6973427-通信システム、通信方法、及びプログラム 図000003
  • 特許6973427-通信システム、通信方法、及びプログラム 図000004
  • 特許6973427-通信システム、通信方法、及びプログラム 図000005
  • 特許6973427-通信システム、通信方法、及びプログラム 図000006
  • 特許6973427-通信システム、通信方法、及びプログラム 図000007
  • 特許6973427-通信システム、通信方法、及びプログラム 図000008
  • 特許6973427-通信システム、通信方法、及びプログラム 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6973427
(24)【登録日】2021年11月8日
(45)【発行日】2021年11月24日
(54)【発明の名称】通信システム、通信方法、及びプログラム
(51)【国際特許分類】
   G05B 19/042 20060101AFI20211111BHJP
【FI】
   G05B19/042
【請求項の数】13
【全頁数】25
(21)【出願番号】特願2019-25387(P2019-25387)
(22)【出願日】2019年2月15日
(65)【公開番号】特開2020-135183(P2020-135183A)
(43)【公開日】2020年8月31日
【審査請求日】2019年9月12日
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】110000154
【氏名又は名称】特許業務法人はるか国際特許事務所
(72)【発明者】
【氏名】橋本 純香
(72)【発明者】
【氏名】新見 宏隆
(72)【発明者】
【氏名】吉良 俊信
(72)【発明者】
【氏名】野▲崎▼ 航
(72)【発明者】
【氏名】工藤 正臣
(72)【発明者】
【氏名】上遠野 優
(72)【発明者】
【氏名】岡本 弘
(72)【発明者】
【氏名】長田 武
(72)【発明者】
【氏名】正垣 隆章
(72)【発明者】
【氏名】安田 恵
【審査官】 大古 健一
(56)【参考文献】
【文献】 特開2010−198600(JP,A)
【文献】 国際公開第2015/136971(WO,A1)
【文献】 特開2017−79009(JP,A)
【文献】 特開2002−95068(JP,A)
【文献】 特開2018−151918(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/04−19/05
(57)【特許請求の範囲】
【請求項1】
第1の産業機器と第2の産業機器とが通信する通信システムであって、
同期通信を利用して、前記第1の産業機器が更新する第1の時間情報と、前記第2の産業機器が更新する第2の時間情報と、を同期させる同期部を有し、
前記第1の産業機器は、非同期通信を利用して、前記第2の産業機器に対し、前記第2の産業機器の状態データの取得開始要求をする取得開始要求部を有し、
前記第2の産業機器は、
前記第1の産業機器から前記非同期通信を利用して前記取得開始要求を受信した場合に、前記状態データを取得する取得部と、
前記第1の産業機器に対し、前記状態データが取得された場合の前記第2の時間情報と、前記状態データと、を送信する送信部と、
を有する通信システム。
【請求項2】
前記送信部は、前記非同期通信を利用して前記第1の産業機器に対し、前記状態データが取得された場合の前記第2の時間情報と、前記状態データと、を送信する、
請求項1に記載の通信システム。
【請求項3】
前記第1の産業機器は、前記第2の産業機器に対し、前記状態データの読出要求をする読出要求部を有し、
前記送信部は、前記第1の産業機器から前記読出要求を受信した場合に、前記第2の時間情報と前記状態データとを送信する、
請求項1又は2に記載の通信システム。
【請求項4】
前記第2の産業機器は、所定のトリガ条件が満たされたか否かを判定する判定部を有し、
前記取得部は、前記トリガ条件が満たされた場合に、前記状態データを取得する、
請求項1〜3の何れかに記載の通信システム。
【請求項5】
前記第2の産業機器は、所定期限までに前記トリガ条件が満たされなかった場合に、前記状態データの取得を制限する制限部を有する、
請求項に記載の通信システム。
【請求項6】
前記同期部は、前記第1の産業機器により実現され、
前記同期部は、前記第2の産業機器に対し、前記第1の時間情報を含む同期要求を送信し、
前記第2の産業機器は、前記同期要求に含まれる前記第1の時間情報に基づいて、前記第2の時間情報を更新する更新部を有する、
請求項1〜の何れかに記載の通信システム。
【請求項7】
前記第1の産業機器は、前記第2の産業機器に対し、前記状態データの取得条件を設定する設定部を有し、
前記取得部は、前記取得条件に基づいて、前記状態データを取得する、
請求項1〜の何れかに記載の通信システム。
【請求項8】
前記第1の産業機器は、前記第1の時間情報とは別の時間情報を更新し、
前記第1の産業機器は、前記第2の産業機器から受信した前記第2の時間情報を前記別の時間情報に変換し、前記第2の産業機器から受信した前記状態データに関連付けて記憶部に記録する記録部を有する、
請求項1〜の何れかに記載の通信システム。
【請求項9】
前記第1の産業機器は、マスタ機器であり、
前記第2の産業機器は、前記マスタ機器からの指令に基づいて動作するスレーブ機器であり、
前記取得部は、前記スレーブ機器の前記状態データを取得し、
前記送信部は、前記マスタ機器に対し、前記状態データが取得された場合の前記第2の時間情報と、前記状態データと、を送信する、
請求項1〜の何れかに記載の通信システム。
【請求項10】
前記通信システムは、前記指令が送信された場合の前記第1の時間情報と、前記第2の産業機器から受信した前記第2の時間情報と、に基づいて、前記指令と前記状態データとを比較して表示させる表示制御部を有する、
請求項に記載の通信システム。
【請求項11】
前記取得部は、前記状態データとして、前記第2の産業機器の時系列的な状態変化が示されたトレースデータを取得し、
前記送信部は、前記第1の産業機器に対し、前記トレースデータが取得された場合の前記第2の時間情報と、前記トレースデータと、を送信する、
請求項1〜10の何れかに記載の通信システム。
【請求項12】
第1の産業機器と第2の産業機器との間の通信方法であって、
同期通信を利用して、前記第1の産業機器が更新する第1の時間情報と、前記第2の産業機器が更新する第2の時間情報と、を同期させ、
前記第1の産業機器に、非同期通信を利用して、前記第2の産業機器に対し、前記第2の産業機器の状態データの取得開始要求をさせ、
前記第2の産業機器に、
前記第1の産業機器から前記非同期通信を利用して前記取得開始要求を受信した場合に、前記状態データを取得させ、
前記第1の産業機器に対し、前記状態データが取得された場合の前記第2の時間情報と、前記状態データと、を送信させる、
通信方法。
【請求項13】
同期通信を利用して、第1の産業機器が更新する第1の時間情報と、第2の産業機器が更新する第2の時間情報と、が同期される場合に、前記第2の産業機器を、
前記第1の産業機器から、非同期通信を利用して、前記第2の産業機器の状態データの取得開始要求を受信した場合に、前記状態データを取得する取得部、
前記第1の産業機器に対し、前記状態データが取得された場合の前記第2の時間情報と、前記状態データと、を送信する送信部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信システム、通信方法、及びプログラムに関する。
【背景技術】
【0002】
特許文献1には、コントローラと、当該コントローラの指示に応じて動作するモータ制御装置と、を有するシステムにおいて、モータ制御装置が、コントローラに対し、状態データの一例であるトレースデータを送信するシステムが記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】国際公開第2015−068210号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、例えば、第1の産業機器に、第2の産業機器の状態データが取得された時間を正確に把握させることである。
【課題を解決するための手段】
【0005】
本発明の一側面に係る通信システムは、第1の産業機器と第2の産業機器とが通信する通信システムであって、前記第1の産業機器が更新する第1の時間情報と、前記第2の産業機器が更新する第2の時間情報と、を同期させる同期部を有し、前記第2の産業機器は、前記第2の産業機器の状態データを取得する取得部と、前記第1の産業機器に対し、前記状態データが取得された場合の前記第2の時間情報と、前記状態データと、を送信する送信部と、を有する。
【0006】
本発明の一側面に係る通信方法は、第1の産業機器と第2の産業機器との間の通信方法であって、前記第1の産業機器が更新する第1の時間情報と、前記第2の産業機器が更新する第2の時間情報と、を同期させ、前記第2の産業機器に状態データを取得させ、前記第1の産業機器に対し、前記状態データが取得された場合の前記第2の時間情報と、前記状態データと、を送信させる。
【0007】
本発明の一側面に係るプログラムは、第1の産業機器が更新する第1の時間情報と、第2の産業機器が更新する第2の時間情報と、が同期される場合に、前記第2の産業機器を、前記第2の産業機器の状態データを取得する取得部、前記第1の産業機器に対し、前記状態データが取得された場合の前記第2の時間情報と、前記状態データと、を送信する送信部、として機能させる。
【0008】
本発明の一側面によれば、前記第1の産業機器は、前記第2の産業機器に対し、前記状態データの読出要求をする読出要求部を有し、前記送信部は、前記第1の産業機器から前記読出要求を受信した場合に、前記第2の時間情報と前記状態データとを送信する。
【0009】
本発明の一側面によれば、前記同期部は、同期通信を利用して、前記第1の時間情報と、前記第2の時間情報と、を同期させ、前記第1の産業機器は、非同期通信を利用して、前記第2の産業機器に対し、前記状態データの取得開始要求をする取得開始要求部を有し、前記取得部は、前記第1の産業機器から前記非同期通信を利用して前記取得開始要求を受信した場合に、前記状態データを取得する。
【0010】
本発明の一側面によれば、前記第2の産業機器は、所定のトリガ条件が満たされたか否かを判定する判定部を有し、前記取得部は、前記トリガ条件が満たされた場合に、前記状態データを取得する。
【0011】
本発明の一側面によれば、前記第2の産業機器は、所定期限までに前記トリガ条件が満たされなかった場合に、前記状態データの取得を制限する制限部を有する。
【0012】
本発明の一側面によれば、前記同期部は、前記第1の産業機器により実現され、前記同期部は、前記第2の産業機器に対し、前記第1の時間情報を含む同期要求を送信し、前記第2の産業機器は、前記同期要求に含まれる前記第1の時間情報に基づいて、前記第2の時間情報を更新する更新部を有する。
【0013】
本発明の一側面によれば、前記第1の産業機器は、前記第2の産業機器に対し、前記状態データの取得条件を設定する設定部を有し、前記取得部は、前記取得条件に基づいて、前記状態データを取得する。
【0014】
本発明の一側面によれば、前記第1の産業機器は、前記第1の時間情報とは別の時間情報を更新し、前記第1の産業機器は、前記第2の産業機器から受信した前記第2の時間情報を前記別の時間情報に変換し、前記第2の産業機器から受信した前記状態データに関連付けて記憶部に記録する記録部を有する。
【0015】
本発明の一側面によれば、前記第1の産業機器は、マスタ機器であり、前記第2の産業機器は、前記マスタ機器からの指令に基づいて動作するスレーブ機器であり、前記取得部は、前記スレーブ機器の前記状態データを取得し、前記送信部は、前記マスタ機器に対し、前記状態データが取得された場合の前記第2の時間情報と、前記状態データと、を送信する。
【0016】
本発明の一側面によれば、前記通信システムは、前記指令が送信された場合の前記第1の時間情報と、前記第2の産業機器から受信した前記第2の時間情報と、に基づいて、前記指令と前記状態データとを比較して表示させる表示制御部を有する。
【0017】
本発明の一側面によれば、前記取得部は、前記状態データとして、前記第2の産業機器の時系列的な状態変化が示されたトレースデータを取得し、前記送信部は、前記第1の産業機器に対し、前記トレースデータが取得された場合の前記第2の時間情報と、前記トレースデータと、を送信する。
【発明の効果】
【0018】
上記発明によれば、例えば、第1の産業機器に、第2の産業機器の状態データが取得された時間を正確に把握させることができる。
【図面の簡単な説明】
【0019】
図1】実施形態に係る通信システムの全体構成の一例を示す図である。
図2】グローバルタイマの同期が取られる様子を示す図である。
図3】通信システムで実現される機能を示す機能ブロック図である。
図4】タイマデータのデータ格納例を示す図である。
図5】ロギングファイルのデータ格納例を示す図である。
図6】データ収集装置に表示される解析画面の一例を示す図である。
図7】通信システムで実行される処理を示すフロー図である。
図8】変形例における通信システムの全体構成を示す図である。
【発明を実施するための形態】
【0020】
[1.通信システムの全体構成]
本発明の発明者の見地によれば、第1の産業機器と第2の産業機器とが通信する通信システムにおいて、第2の産業機器の故障予知や故障診断などをするために、第1の産業機器に、第2の産業機器の状態データを取得させることがある。しかしながら、従来の技術では、第1の産業機器は、第2の産業機器から状態データを取得しても、それがどの時点の状態を示すのかを特定することができなかった。そこで本発明の発明者は、第1の産業機器に、第2の産業機器の状態データが取得された時間を正確に把握させるために鋭意研究開発を行った結果、新規かつ独創的な通信システム等に想到した。以降、本実施形態に係る通信システム等を詳細に説明する。
【0021】
図1は、実施形態に係る通信システムの全体構成の一例を示す図である。図1に示すように、通信システム1は、データ収集装置10、コントローラ20、モータ制御装置30、モータ40、センサ50、及びエンコーダ60を含む。なお、ここでは、説明の簡略化のために、これらを1台ずつ示しているが、通信システム1は、これらを複数台含んでいてもよい。例えば、複数のデータ収集装置10が通信システム1に含まれていてもよいし、後述する変形例のように、1台のデータ収集装置10に対し、複数のコントローラ20が接続されていてもよい。
【0022】
データ収集装置10は、状態データを収集するコンピュータである。状態データとは、機器の状態を示すデータであり、例えば、ある時点における状態を示すデータであってもよいし、時系列的な状態変化を示すトレースデータであってもよい。機器の状態とは、機器の動作を表す情報であり、例えば、センサ50又はエンコーダ60が検出した物理量であってもよいし、コントローラ20又はモータ制御装置30内部の状態(例えば、CPU使用率、メモリ使用率、又は通信負荷など)であってもよい。
【0023】
本実施形態では、状態データの一例としてトレースデータを説明する。このため、本実施形態でトレースデータと記載した箇所は、状態データと読み替えることができる。例えば、トレースデータには、センサ50又はエンコーダ60により検出された物理量の時系列的な変化が示される。トレースデータは、動作のログ(履歴)を示すのでロギングデータと呼ばれることもある。例えば、トレースデータには、トルク信号、温度情報、フィードバック速度、位置偏差、速度偏差、又は電流偏差などが時系列的に示されている。
【0024】
例えば、データ収集装置10は、サーバコンピュータ、パーソナルコンピュータ、携帯電話(スマートフォンを含む)、又は携帯端末(タブレット型端末を含む)である。データ収集装置10は、CPU11、記憶部12、通信部13、操作部14、及び表示部15を含む。
【0025】
CPU11は、少なくとも1つのプロセッサを含む。記憶部12は、RAM、EEPROM、及びハードディスクを含み、各種プログラムやデータを記憶する。CPU11は、これらプログラムやデータに基づいて各種処理を実行する。通信部13は、ネットワークカードや各種通信コネクタ等の通信インタフェースを含み、他の装置との通信を行う。操作部14は、マウスやキーボード等の入力デバイスである。表示部15は、液晶ディスプレイ又は有機ELディスプレイ等であり、CPU11の指示により各種画面を表示する。
【0026】
コントローラ20は、モータ制御装置30を制御する装置である。本実施形態では、コントローラ20が1台のモータ制御装置30を制御する場合を説明するが、コントローラ20は、複数台のモータ制御装置30を制御してもよい。更に、コントローラ20には、モータ制御装置30だけでなく、センサ類又は入出力機器などが接続されていてもよい。
【0027】
本実施形態では、コントローラ20は、第1の産業機器の一例である。このため、本実施形態でコントローラ20と記載した箇所は、第1の産業機器と読み替えることができる。産業機器は、人間が行う作業の補助又は代行をする機器及びその周辺機器の総称である。例えば、コントローラ20以外にも、後述するモータ制御装置30も産業機器に相当する。他にも例えば、ロボットコントローラ、産業用ロボット、インバータ、コンバータ、工作機械、又はPLC等は、産業機器に相当する。
【0028】
例えば、コントローラ20は、CPU21、記憶部22、及び通信部23を含む。CPU21、記憶部22、及び通信部23の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様である。なお、コントローラ20は、モータ制御などの特定用途向けの集積回路(ASIC)を有していてもよい。
【0029】
モータ制御装置30は、モータ40を制御する装置である。モータ制御装置30は、サーボアンプ又はサーボパック(登録商標)と呼ばれることもある。本実施形態では、モータ制御装置30が1台のモータ40を制御する場合を説明するが、モータ制御装置30は、複数台のモータ40を制御してもよい。更に、モータ制御装置30には、モータ40、センサ50、及びエンコーダ60だけでなく、入出力機器などが接続されていてもよい。
【0030】
モータ制御装置30は、第2の産業機器の一例である。このため、本実施形態でモータ制御装置30と記載した箇所は、第2の産業機器と読み替えることができる。産業機器の意味は先述した通りであり、第2の産業機器は、第1の産業機器と通信可能に接続される機器である。第1の産業機器は、第2の産業機器からトレースデータを受信する側の機器(トレースデータの送信先の機器)であり、第2の産業機器は、トレースデータを送信する側の機器(トレースデータの送信元の機器)である。第2の作業機器は、トレースデータを生成する機器、又は、動作の解析対象の機器ということもできる。
【0031】
本実施形態では、第1の産業機器がマスタ機器であり、第2の産業機器は、スレーブ機器である場合を説明するが、後述する変形例のように、第1の産業機器と第2の産業機器は、マスタとスレーブの関係になくてもよい。別の言い方をすれば、第1の作業機器と第2の産業機器との間には、主従関係又は上下関係が存在しなくてもよい。
【0032】
マスタ機器とは、スレーブ機器を制御する機器であり、スレーブ機器に対して指令を送信する機器である。別の言い方をすれば、マスタ機器は、スレーブ機器から動作状態を取得する機器である。スレーブ機器とは、マスタ機器からの指令に基づいて動作する機器であり、マスタ機器により制御される機器である。別の言い方をすれば、スレーブ機器は、マスタ機器に対して自身の動作状態を送信する機器である。本実施形態では、モータ制御装置30は、コントローラ20からの指令に基づいて動作するので、コントローラ20がマスタ機器に相当し、モータ制御装置30がスレーブ機器に相当する。
【0033】
例えば、モータ制御装置30は、CPU31、記憶部32、及び通信部33を含む。CPU31、記憶部32、及び通信部33の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様である。なお、モータ制御装置30は、モータ制御などの特定用途向けの集積回路(ASIC)を有していてもよい。モータ制御装置30は、コントローラ20から受信した指令に基づいて、電力線で接続されたモータ40に対する電圧を制御する。モータ40は、回転式であってもよいしリニア式であってもよい。
【0034】
センサ50は、物理量を検出可能なセンサであればよく、例えば、トルクセンサ、温度センサ、力センサ、又はモーションセンサなどである。エンコーダ60は、モータ40の位置又は速度を検出する機器であり、例えば、光学式又は磁気式のモータエンコーダである。エンコーダ60もセンサの一種である。モータ制御装置30は、センサ50により検出された物理量やエンコーダ60により検出されたフィードバック速度を、任意のタイミングでコントローラ20に送信する。
【0035】
なお、データ収集装置10、コントローラ20、及びモータ制御装置30の各々に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されるようにしてもよい。また、データ収集装置10、コントローラ20、及びモータ制御装置30の各々のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器と直接的に接続するための入出力部(例えば、USB端子)が含まれていてもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが読取部又は入出力部を介して供給されるようにしてもよい。
【0036】
[2.通信システムの概要]
通信システム1では、コントローラ20とモータ制御装置30とが通信する。コントローラ20は、モータ制御装置30に対して指令を送信し、モータ制御装置30は、指令に基づいてモータ40を動作させる。コントローラ20とモータ制御装置30とは、いわゆるフィールドネットワークによって接続され、任意の通信プロトコルを利用して通信が行われる。本実施形態の通信システム1は、同期通信を利用可能であり、コントローラ20は、同期通信を利用して、モータ制御装置30に指令を送信する。
【0037】
同期通信とは、送信側の機器がデータを送信するタイミングと、受信側の機器がデータを受信するタイミングと、を合わせる通信方式である。同期通信では、データ通信のリクエストが送信されてからレスポンスを受信するまでの間は、原則として他の処理は実行されない。このため、送信側の機器は、受信側の機器にデータを送信した後は、レスポンスを受信するのを待機する。受信側の機器は、送信側の機器からデータを受信すると、すぐに処理を実行し、送信側の機器にレスポンスとして処理結果を返す。送信側の機器は、処理結果を受信すると、次の処理に移行する。同期通信が行われない場合には、非同期通信を利用して通信が行われる。
【0038】
非同期通信とは、送信側の機器がデータを送信するタイミングと、受信側の機器がデータを受信するタイミングと、を合わせずに通信を行う通信方式である。非同期通信では、データ通信のリクエストが送信されてからレスポンスを受信するまでの間に、他の処理を実行可能である。このため、非同期通信では、送信側の機器は、受信側の機器にデータを送信してからレスポンスを受信するまでの間に、他の処理を実行可能である。また、非同期通信では、受信側の機器は、送信側の機器からデータを受信しても、すぐに処理を実行するとは限らない。受信側の機器は、所定の条件が充足されるまで処理の実行を待機したり、同期通信の処理を優先して実行したりする。
【0039】
本実施形態では、同期通信を利用して送信される指令を同期タスクと記載し、非同期通信を利用して送信される指令を非同期タスクと記載する。例えば、コントローラ20がモータ制御装置30に同期タスクを送信した場合、コントローラ20は、モータ制御装置30からのレスポンスを受信するまでは、他の処理を実行せずに待機する。モータ制御装置30は、コントローラ20から同期タスクを受信すると、すぐに同期タスクを実行し、コントローラ20に処理結果を送信する。
【0040】
一方、コントローラ20がモータ制御装置30に非同期タスクを送信した場合、コントローラ20は、モータ制御装置30からのレスポンスを受信しなくても、他の処理を実行可能となる。例えば、コントローラ20は、非同期タスクのレスポンスを受信するまでの間に、別の非同期タスクを送信したり、同期タスクを送信したりすることができる。モータ制御装置30は、コントローラ20から非同期タスクを受信した場合、すぐに非同期タスクを実行するとは限らない。
【0041】
例えば、非同期タスクを実行するための条件が設定されている場合、モータ制御装置30は、当該条件が充足されるまで、非同期タスクを実行しない。他にも例えば、タスクに優先順位が付けられている場合、モータ制御装置30は、非同期タスクよりも優先順位の高い他のタスクを優先して実行し、非同期タスクの実行を後回しにする。モータ制御装置30は、非同期タスクを実行すると、コントローラ20に処理結果を送信する。
【0042】
もし仮に、コントローラ20が、同期タスクとして、トレースデータの取得開始をモータ制御装置30に指示したとすると、モータ制御装置30は、すぐにトレースデータの取得を開始し、コントローラ20にトレースデータを送信する。このため、トレースデータの取得開始が同期タスクとして処理されるのであれば、コントローラ20は、受信したトレースデータがどの時点のものなのかを特定することができる。
【0043】
しかしながら、同期通信は、モータ40の動作に直結する重要なデータの送信で利用されることが多く、トレースデータのために同期通信を利用できないことがある。例えば、トレースデータは、主に故障予知や故障診断に利用され、動作指令等に比べると緊急性及び重要度が低いので、後でゆっくりと取得すればよい。このため、緊急性及び重要度がより高い他のデータのために、同期通信を利用させた方がよいと考えられる。また、トレースデータは、時系列的な情報であり比較的データサイズが大きいので、同期通信を利用してトレースデータを送信しようとすると、ネットワークを占有する時間が長くなってしまう。
【0044】
そこで、本実施形態では、トレースデータの取得開始を、非同期タスクとして処理するようにしている。この点、非同期タスクは、すぐに実行されるとは限られず、いつ実行されるか分からないので、コントローラ20は、トレースデータを受信しても、それがいつの時点の状態を示すのかを特定することができない。
【0045】
例えば、モータ制御装置30が、非同期タスクとしてトレースデータの取得開始の指示を受信した場合、当該非同期タスクを実行するための条件がすぐに充足されることもあれば、条件がなかなか充足されないこともある。また、モータ制御装置30は、トレースデータの取得が完了した後に、すぐにトレースデータを送信するとは限らないので、コントローラ20は、トレースデータを受信しても、それがいつの時点の状態を示すのかを特定することができない。
【0046】
そこで、本実施形態では、コントローラ20とモータ制御装置30との間で時間情報の同期を取らせて、モータ制御装置30に、時間情報とともにトレースデータを送信させることによって、コントローラ20に、モータ制御装置30のトレースデータが取得された時間を正確に把握させるようにしている。
【0047】
時間情報は、機器が管理する時間を示す数値であり、例えば、タイマ又はカウンタと呼ばれることもある。本実施形態では、コントローラ20とモータ制御装置30との間で時間情報の同期が取られるので、時間情報は、これらの機器の共通の時間を示すことになる。時間情報は、任意のビット数であってよいが、本実施形態では、メモリ消費量を抑えるために数十ビット程度(例えば、16ビット〜64ビット程度)とする。また、時間情報は、整数で示されてもよいし、小数点以下を含む数値で示されてもよい。
【0048】
時間情報の同期とは、複数の機器間で時間情報を合わせることであり、ある機器の時間情報に他の機器の時間情報を合わせることである。別の言い方をすれば、時間情報の同期は、ある機器の時間情報に基づいて、他の機器の時間情報を上書き、修正、又は更新することである。時間情報の同期では、完全に値を一致させなくてもよく、僅かな誤差が許容されてもよい。
【0049】
以降、コントローラ20とモータ制御装置30との間で同期が取られる時間情報を、グローバルタイマと記載する。このため、本実施形態でグローバルタイマと記載した箇所は、時間情報と読み替えることができる。
【0050】
本実施形態では、コントローラ20のグローバルタイマは第1の時間情報の一例であり、モータ制御装置30のグローバルタイマは第2の時間情報の一例である。このため、本実施形態でコントローラ20のグローバルタイマを説明している箇所は、第1の時間情報と読み替えることができ、モータ制御装置30のグローバルタイマを説明している箇所は、第2の時間情報と読み替えることができる。
【0051】
図2は、グローバルタイマの同期が取られる様子を示す図である。図2の横軸は、時間軸である。本実施形態では、コントローラ20とモータ制御装置30との間で、定周期通信が行われる場合を説明するが、特に周期的な通信が行われなくてもよい。コントローラ20は、記憶部22にグローバルタイマを記憶し、モータ制御装置30は、記憶部32にグローバルタイマを記憶する。
【0052】
本実施形態では、伝送周期の開始直後に、グローバルタイマの同期を取る同期タスクが実行される場合を説明するが、伝送周期内の任意のタイミングで当該同期タスクが実行されるようにすればよい。例えば、伝送周期の終了間際に当該同期タスクが実行されてもよいし、伝送周期の開始直後又は終了間際以外のタイミングで当該同期タスクが実行されてもよい。また、当該同期タスクは、毎回実行されなくてもよく、例えば、2伝送周期ごと又は5伝送周期ごとに実行されてもよい。
【0053】
図2の例では、「伝送周期1」において、コントローラ20は、記憶部22のグローバルタイマが示す「100.00」の数値を、モータ制御装置30に送信する。モータ制御装置30は、コントローラ20から当該数値を受信すると、同期タスクとして処理し、記憶部32のグローバルタイマの値を「100.00」に上書きし、レスポンスとして処理結果を送信する。これにより、コントローラ20のグローバルタイマと、モータ制御装置30のグローバルタイマと、を一致させることができる。なお、上記のレスポンスは、送信されなくてもよい。この点は、以降の説明も同様である。
【0054】
その後、コントローラ20は、記憶部22のグローバルタイマをカウントアップし、モータ制御装置30は、記憶部22のグローバルタイマをカウントアップする。1回のカウントアップあたりのグローバルタイマの増加量は、任意であってよく、本実施形態では「0.01」とするが、「0.02」などの他の単位で増加してもよい。なお、グローバルタイマは、所定ルールのもとで更新すればよく、カウントアップされるのではなく、カウントダウンされてもよい。グローバルタイマの更新は、CPU11又は21により行われてもよいし、ASICにより行われてもよい。
【0055】
グローバルタイマの更新周期(カウントアップ速度)は、クロック周波数などのハードウェアの性能やその時の動作環境に依存する。コントローラ20とモータ制御装置30は、互いに全く同じ性能や動作環境を有するわけではないため、コントローラ20のグローバルタイマとモータ制御装置30のグローバルタイマとの間には、次第にずれが生じる。このため、「伝送周期1」の冒頭でグローバルタイマの同期を取ったとしても、次の「伝送周期2」が訪れた時点では、例えば、コントローラ20のグローバルタイマが「101.25」を示し、モータ制御装置30のグローバルタイマが「101.19」を示すといったことが起こりうる。
【0056】
「伝送周期2」が訪れると、「伝送周期1」と同様の同期タスクが実行され、モータ制御装置30のグローバルタイマが、コントローラ20のグローバルタイマの「101.25」に上書きされる。これにより、グローバルタイマがずれたとしても、コントローラ20とモータ制御装置30との間でグローバルタイマを再び同期させることができる。その後、コントローラ20とモータ制御装置30は、各自でグローバルタイマをカウントアップする。
【0057】
「伝送周期3」が訪れた場合も同様に、コントローラ20は、自身の記憶部22に記憶されたグローバルタイマが示す「102.50」の数値を、モータ制御装置30に送信する。ただし、通信障害等によって同期タスクが正確に実行されず、コントローラ20とモータ制御装置30との間でグローバルタイマの同期を取ることができないことがある。この場合、図2に示すように、モータ制御装置30のグローバルタイマは、例えば、「102.17」となり、グローバルタイマがずれたままとなる。その後、次の「伝送周期4」が訪れるまでは、コントローラ20とモータ制御装置30との間でグローバルタイマを同期させることができず、グローバルタイマのずれが徐々に広がる。
【0058】
「伝送周期4」が訪れた場合に、通信障害等が解消されて同期タスクが正確に実行されると、コントローラ20とモータ制御装置30との間でグローバルタイマを再び同期させることができる。このため、図2に示すように、「伝送周期3」では同期を取ることができなかったモータ制御装置30のグローバルタイマは、「伝送周期4」でコントローラ20と同じ「103.75」となる。このように、グローバルタイマの同期を取れなかったとしても、次の伝送周期ですぐに同期を取ることができるので、さほどずれが大きくならないようにすることができる。以降の伝送周期も同様にして、グローバルタイマの同期が取られる。
【0059】
なお、本実施形態では、モータ制御装置30のグローバルタイマを、コントローラ20のグローバルタイマに合わせる場合を説明するが、これとは逆に、コントローラ20のグローバルタイマを、モータ制御装置30のグローバルタイマに合わせてもよい。この場合例えば、コントローラ20は、モータ制御装置30にグローバルタイマを送信させる同期タスクを送信する。コントローラ20は、モータ制御装置30からグローバルタイマを受信し、モータ制御装置30のグローバルタイマに合うように、記憶部22のグローバルタイマを上書きしてもよい。
【0060】
以上のように、通信システム1は、コントローラ20とモータ制御装置30との間でグローバルタイマの同期が取らせている。本実施形態では、モータ制御装置30は、トレースデータの取得を開始する場合に、その時点のグローバルタイマを保持し、保持したグローバルタイマをトレースデータとともに送信する。これにより、トレースデータの取得開始が非同期タスクとして処理されたとしても、コントローラ20は、トレースデータとともに受信したグローバルタイマにより、どの時点のトレースデータなのかを容易に把握できるようになる。以降、通信システム1の詳細を説明する。
【0061】
[3.通信システムで実現される機能]
図3は、通信システム1で実現される機能を示す機能ブロック図である。ここでは、データ収集装置10、コントローラ20、及びモータ制御装置30の各々において実現される機能について説明する。
【0062】
[3−1.コントローラにおいて実現される機能]
図3に示すように、コントローラ20では、データ記憶部200、同期部201、設定部202、取得開始要求部203、読出要求部204、及び記録部205が実現される。データ記憶部200は、記憶部22を主として実現され、同期部201、設定部202、取得開始要求部203、読出要求部204、及び記録部205は、CPU21を主として実現される。
【0063】
[データ記憶部]
データ記憶部200は、グローバルタイマの同期を取ったりトレースデータを取得したりするために必要なデータを記憶する。例えば、データ記憶部200は、グローバルタイマの現在値が格納されたタイマデータDと、過去に取得されたトレースデータが格納されたロギングファイルFと、を記憶する。
【0064】
図4は、タイマデータDのデータ格納例を示す図である。本実施形態では、コントローラ20は、グローバルタイマとは別の時間情報を有しており、以降では、この時間情報をコントローラカウンタと記載する。図4に示すように、例えば、タイマデータDには、グローバルタイマの現在値、コントローラカウンタの現在値、及びグローバルタイマとコントローラカウンタの対応関係が格納される。
【0065】
グローバルタイマの現在値は、コントローラ20がカウントアップ中のグローバルタイマの値である。グローバルタイマの現在値は、グローバルタイマのビット数の最大値までカウントアップされると初期値に戻る。グローバルタイマは、他の機器と同期を取るための時間情報であるのに対し、コントローラカウンタは、コントローラ20が管理する絶対時間であり、原則として外部からの補正が入らない時間情報である。
【0066】
コントローラカウンタのビット数は、任意のビット数であってよく、グローバルタイマと同じであってもよいし異なってもよい。本実施形態では、コントローラカウンタのビット数は、グローバルタイマよりもビット数が多く、より長い時間を表現可能となっている。例えば、コントローラカウンタは、十分なビット数が確保されており、グローバルタイマが初期値に戻ったとしても、コントローラカウンタは初期値に戻らないようになっている。このため、トレースデータに付随するグローバルタイマをコントローラカウンタに変換することで、コントローラ20の中での絶対時間に変換することができる。グローバルタイマは、人間が目で見て分かる時間(年月日及び時刻)に変換するために利用されてもよい。
【0067】
コントローラ20は、グローバルタイマだけではなく、グローバルタイマとは別の時間情報であるコントローラカウンタを更新する。本実施形態では、コントローラカウンタがカウントアップされる場合を説明するが、コントローラカウンタは、カウントダウンされることによって更新されてもよい。また、コントローラカウンタの更新周期と、グローバルタイマの更新周期と、は同じであってもよいし異なっていてもよい。また、1回のカウントアップ当たりのコントローラカウンタの増加量とグローバルタイマの増加量とは、同じであってもよいし異なっていてもよい。
【0068】
グローバルタイマとコントローラカウンタの対応関係は、グローバルタイマをコントローラカウンタに変換するために用いられる。例えば、コントローラ20は、グローバルタイマ及びコントローラをカウントアップすると、その時点でのグローバルタイマ及びコントローラを互いに関連付けてタイマデータDに格納する。これにより、コントローラ20がトレースデータを受信した場合に、一緒に受信したグローバルタイマをコントローラカウンタに変換することができるようになる。即ち、コントローラ20の時間的な物差し(絶対時間)でトレースデータを表示させることができるようになる。なお、グローバルタイマが初期値に戻った場合には、グローバルタイマに関連付けられるコントローラカウンタが上書きされるようにしてよい。
【0069】
図5は、ロギングファイルFのデータ格納例を示す図である。ロギングファイルFは、トレースデータが格納されたファイルであり、本実施形態では、トレースデータとは異なる名前で呼ぶことにするが、トレースデータとは特に区別しなくてもよい。図5に示すように、ロギングファイルFには、トレースデータに含まれる個々の数値が、当該数値が取得された時間と関連付けられて格納されている。本実施形態では、コントローラカウンタとグローバルタイマが用意されているので、トレースデータに含まれる個々の数値には、コントローラカウンタとグローバルタイマが関連付けられている。
【0070】
なお、データ記憶部200が記憶するデータは、上記の例に限られない。例えば、データ記憶部200は、後述するトレースデータの取得条件を記憶してもよい。他にも例えば、データ記憶部200は、コントローラ20に接続された機器の構成を示す機器情報を記憶してもよいし、データ収集装置10及びモータ制御装置30のIPアドレスを記憶してもよい。また例えば、データ記憶部200は、モータ制御装置30に対する指令を時系列的に記憶してもよい。例えば、データ記憶部200は、モータ40の動作指令(例えば、位置指令速度)が送信された時点を示すコントローラカウンタ又はグローバルタイマと、当該動作指令の内容と、の関係を時系列的に記憶してもよい。これらの関係は、プログラム又はパラメータに定義されていてもよく、データ記憶部200は、当該プログラム又はパラメータを記憶してもよい。
【0071】
[同期部]
同期部201は、コントローラ20が更新するグローバルタイマと、モータ制御装置30が更新するグローバルタイマと、を同期させる。本実施形態では、同期部201は、モータ制御装置30に、コントローラ20のグローバルタイマを送信し、モータ制御装置30のグローバルタイマを、コントローラ20のグローバルタイマに合わせる。これとは逆に、同期部201は、モータ制御装置30からグローバルタイマを受信し、コントローラ20のグローバルタイマを、モータ制御装置30のグローバルタイマに合わせてもよい。
【0072】
本実施形態では、通信システム1が同期通信可能なので、同期部201は、同期通信を利用して、コントローラ20のグローバルタイマと、モータ制御装置30のグローバルタイマと、を同期させる。同期部201は、同期タスクを実行させることにより、これらグローバルタイマを同期させる。本実施形態では、同期タスクは、モータ制御装置30のグローバルタイマを、コントローラ20のグローバルタイマで上書きする指令であるが、同期タスクは、モータ制御装置30のグローバルタイマを送信させる指令であってもよい。この場合、同期部201は、モータ制御装置30から受信したグローバルタイマで、データ記憶部200のグローバルタイマを上書きする。
【0073】
例えば、同期部201は、モータ制御装置30に対し、コントローラ20のグローバルタイマを含む同期要求を送信する。同期要求は、グローバルタイマを同期させるための要求である。同期要求は、所定形式のデータが送信されることによって行われるようにすればよく、同期要求であることを識別する識別子を含む。本実施形態では、同期要求が同期タスクとして処理されるので、モータ制御装置30は、同期要求を受信してすぐに、後述する更新部301により、データ記憶部300のグローバルタイマを、同期要求に含まれるコントローラ20のグローバルタイマで上書きする。
【0074】
[設定部]
設定部202は、モータ制御装置30に対し、トレースデータの取得条件を設定する。取得条件は、トレースデータの取得時に参照される条件であり、例えば、トレースデータの取得を開始するトリガ条件、トレース対象となる軸、トレース対象の情報(信号)の種類、サンプリング周期、又はトレース期間などである。
【0075】
トリガ条件は、任意の条件を設定可能であり、例えば、センサ50又はエンコーダ60により検出される物理量に関する条件であってもよいし、モータ制御装置30の内部状態に関する条件であってもよい。例えば、トリガ条件は、フィードバック速度が所定範囲になること、トルク信号の値が所定範囲になること、トルク信号が立ち上がること、トルク信号が収束すること、トルク波形が基準範囲から外れること、温度が所定範囲になること、又はCPU使用率が所定範囲になることなどである。
【0076】
トレース対象となる軸は、物理量を計測すべきモータ40の識別情報である。トレース対象の情報の種類は、トレースデータに格納すべき情報の種類であり、例えば、トルク信号、温度情報、フィードバック速度、位置偏差、速度偏差、電流偏差、CPU使用率、メモリ使用率、又は通信負荷といった情報の種類である。サンプリング周期は、数値の計測間隔である。トレースデータには、サンプリング周期ごとに数値が格納される。トレース期間は、トレースデータの取得開始から取得完了までの期間である。
【0077】
設定部202は、データ記憶部200に記憶された取得条件を読み出し、モータ制御装置30に送信することによって、取得条件を設定する。本実施形態では、設定部202は、非同期通信を利用して、非同期タスクとして取得条件を設定する場合を説明するが、設定部202は、同期通信を利用して、同期タスクとして取得条件を設定してもよい。設定部202は、後述する取得開始要求部203によりトレースデータの取得開始要求が送信される前に、取得条件の設定を行う。
【0078】
[取得開始要求部]
取得開始要求部203は、モータ制御装置30に対し、トレースデータの取得開始要求をする。取得開始要求は、モータ制御装置30にトレースデータの取得を開始させるための要求である。取得開始要求は、所定形式のデータが送信されることによって行われるようにすればよく、取得開始要求であることを示す識別子を含む。本実施形態では、取得開始要求部203は、非同期通信を利用して、モータ制御装置30に対し、トレースデータの取得開始要求をする場合を説明するが、通信システム1が同期通信を利用しない場合には、取得開始要求部203は、特に非同期通信を利用せずに、トレースデータの取得開始要求をする。
【0079】
なお、本実施形態では、トレースデータの取得条件の設定と、トレースデータの取得開始要求と、が別々に行われる場合を説明するが、これらは、一連の処理として行われてもよい。例えば、コントローラ20がモータ制御装置30にトレースデータの取得条件を設定した場合に、モータ制御装置30は、取得開始要求を待つことなく、トリガ条件が満たされたか否かを判定してもよい。この場合、トレースデータの取得開始要求が特に行われることなく、トリガ条件が満たされると、モータ制御装置30は、トレースデータの取得を開始する。
【0080】
[読出要求部]
読出要求部204は、モータ制御装置30に対し、トレースデータの読出要求をする。読出要求は、トレースデータを読み出すための要求であり、トレースデータを送信させるための要求である。読出要求は、所定形式のデータが送信されることによって行われるようにすればよく、読出要求であることを示す識別子を含む。トレースデータがモータ制御装置30の特定のレジスタに格納される場合には、読出要求には、レジスタアドレスが含まれていてもよい。本実施形態では、読出要求部204は、非同期通信を利用して、モータ制御装置30に対し、トレースデータの読出要求をする場合を説明するが、通信システム1が同期通信を利用しない場合には、読出要求部204は、特に非同期通信を利用せずに、トレースデータの読出要求をする。
【0081】
なお、本実施形態では、モータ制御装置30は、自発的にトレースデータを送信せず、コントローラ20からの読出要求に応じてトレースデータを送信する場合を説明するが、モータ制御装置30は、トレースデータの取得が完了した場合に、自発的にトレースデータを送信してもよい。この場合、コントローラ20は、特に読出要求をすることなく、モータ制御装置30からトレースデータを取得する。
【0082】
[記録部]
記録部205は、モータ制御装置30から受信したトレースデータをデータ記憶部200に記録する。本実施形態では、コントローラカウンタが用意されているので、記録部205は、モータ制御装置30から受信したモータ制御装置30のグローバルタイマをコントローラカウンタに変換し、モータ制御装置30から受信したトレースデータに関連付けてデータ記憶部200に記録する。
【0083】
例えば、コントローラ20がグローバルタイマとトレースデータを受信した場合、記録部205は、タイマデータDの対応関係を参照し、受信したグローバルタイマをコントローラカウンタに変換する。そして、記録部205は、変換したコントローラカウンタ、受信したグローバルタイマ、及び受信したトレースデータを関連付けてロギングファイルFに格納する。図5のデータ格納例であれば、コントローラ20は、「101」「95」「80」・・・といった数値が時系列的に格納されたトレースデータを、取得開始時点を示す「100.00」のグローバルタイマとともに受信する。記録部205は、タイマデータDの対応関係を参照し、グローバルタイマ「100.00」をコントローラカウンタ「50000」に変換し、取得開始時点の数値「101」とともにロギングファイルFに格納する。
【0084】
本実施形態では、トレースデータのサンプリング周期が決められているので、記録部205は、取得開始時点以降の数値に対し、サンプリング周期に応じた値だけコントローラカウンタ及びグローバルタイマを増加させてロギングファイルFに格納する。例えば、サンプリング周期が、コントローラカウンタで表現すると「10」であり、グローバルタイマで表現すると「0.02」だったとすると、図5のデータ格納例に示すように、取得開始時点の次の時点に取得された数値「95」は、コントローラカウンタ「50010」及びグローバルタイマ「100.02」に関連付けられる。以降の数値についても同様に、サンプリング周期に対応する値だけ増加されたコントローラカウンタ及びグローバルタイマに関連付けられる。
【0085】
[3−2.モータ制御装置において実現される機能]
図3に示すように、モータ制御装置30では、データ記憶部300、更新部301、判定部302、取得部303、送信部304、及び制限部305が実現される。データ記憶部300は、記憶部32を主として実現され、更新部301、判定部302、取得部303、送信部304、及び制限部305は、CPU31を主として実現される。
【0086】
[データ記憶部]
データ記憶部300は、グローバルタイマの同期を取ったりトレースデータを取得したりするために必要なデータを記憶する。例えば、データ記憶部300は、グローバルタイマの現在値を記憶する。モータ制御装置30は、グローバルタイマをカウントアップすることによって、グローバルタイマの現在値を更新する。
【0087】
なお、データ記憶部300が記憶するデータは、上記の例に限られない。例えば、データ記憶部300は、コントローラ20から受信したトレースデータの取得条件を記憶してもよい。また例えば、データ記憶部300は、トリガ条件が満たされた後に、トレースデータの取得開始時点のグローバルタイマに関連付けて、計測中の数値を時系列的に記憶する。また例えば、データ記憶部300は、コントローラ20のIPアドレスを記憶してもよい。
【0088】
[更新部]
更新部301は、同期要求に含まれるコントローラ20のグローバルタイマに基づいて、モータ制御装置30のグローバルタイマを更新する。本実施形態では、更新部301は、データ記憶部300に記憶されたグローバルタイマを、コントローラ20のグローバルタイマで上書きする場合を説明するが、先述したように、必ずしもこれらを一致させる必要はなく、多少の誤差を許容してもよい。
【0089】
[判定部]
判定部302は、所定のトリガ条件が満たされたか否かを判定する。判定部302は、センサ50若しくはエンコーダ60により検出された物理量又はモータ制御装置30の内部状態に基づいて、トリガ条件が満たされたか否かを判定する。例えば、判定部302は、エンコーダ60により検出されたフィードバック速度が所定範囲になったか否かを判定する。また例えば、センサ50により検出されたトルク信号の値が所定範囲になったか否か、トルク信号が立ち上がったか否か、トルク信号が収束したか否か、又はトルク波形が基準範囲から外れたか否かを判定する。また例えば、判定部302は、センサ50により検出された温度が所定範囲になったか否かを判定する。また例えば、判定部302は、モータ制御装置30のCPU使用率、メモリ使用率、又は通信負荷が所定範囲になったか否かを判定する。これらの判定結果が肯定又は否定された場合に、トリガ条件が満たされたと判定されるようにすればよい。
【0090】
[取得部]
取得部303は、モータ制御装置30の状態データを取得する。本実施形態では、トレースデータが状態データに相当するので、取得部303は、状態データとして、モータ制御装置30の時系列的な状態変化が示されたトレースデータを取得する。例えば、取得部303は、センサ50若しくはエンコーダ60により検出された物理量又はモータ制御装置30の内部状態に基づいて、トレースデータを取得する。
【0091】
本実施形態では、取得部303は、コントローラ20から非同期通信を利用して取得開始要求を受信した場合に、トレースデータを取得する。即ち、取得部303は、取得開始要求を受信したことに応じて、トレースデータの取得を開始する。別の言い方をすれば、取得部303は、取得開始要求を受信するまではトレースデータの取得を開始せず、取得開始要求を受信した場合に、トレースデータの取得を開始する。
【0092】
本実施形態では、取得開始要求が受信されてもトリガ条件が満たされなければトレースデータの取得が開始されないので、取得部303は、トリガ条件が満たされた場合に、トレースデータを取得する。即ち、取得部303は、トリガ条件が満たされたと判定されたことに応じて、トレースデータの取得を開始する。取得部303は、トリガ条件が満たされたと判定されない場合にはトレースデータの取得を開始せず、トリガ条件が満たされたと判定された場合に、トレースデータの取得を開始する。
【0093】
本実施形態では、取得部303は、取得条件に基づいて、トレースデータを取得する。例えば、取得条件にトレース対象となる軸が示されている場合、取得部303は、トレース対象となる軸の状態に基づいて、トレースデータを取得する。また例えば、取得条件にトレース対象の情報(信号)の種類が示されている場合、取得部303は、当該種類の情報に基づいて、トレースデータを取得する。また例えば、取得条件にサンプリング周期が示されている場合、取得部303は、当該サンプリング周期に基づいて、トレースデータを取得する。また例えば、取得条件にトレース期間が示されている場合、取得部303は、当該トレース期間に基づいて、トレースデータを取得する。
【0094】
[送信部]
送信部304は、コントローラ20に対し、状態データが取得された場合のグローバルタイマと、トレースデータと、を送信する。本実施形態では、トレースデータが状態データに相当するので、送信部304は、コントローラ20に対し、トレースデータが取得された場合のモータ制御装置30のグローバルタイマと、トレースデータと、を送信する。グローバルタイマとトレースデータは、データとして一体化された状態で送信されてもよいし、データとしては別体の状態で送信されてもよい。
【0095】
トレースデータが取得された場合のグローバルタイマとは、トレースデータの取得が開始されてから終了するまでの間の任意のグローバルタイマである。本実施形態では、送信部304は、トレースデータの取得を開始した時点におけるグローバルタイマを送信する場合を説明するが、トレースデータの取得を完了した時点のグローバルタイマを送信してもよい。また例えば、送信部304は、トレースデータの取得を開始した時点よりも後であり、かつ、トレースデータの取得を完了した時点よりも前の時点におけるグローバルタイマを送信してもよい。他にも例えば、送信部304は、ある一時点のグローバルタイマだけでなく、トレースデータに含まれる数値が計測された全時点のグローバルタイマを送信してもよい。
【0096】
本実施形態では、モータ制御装置30は自発的にはトレースデータを送信しないので、送信部304は、コントローラ20から読出要求を受信した場合に、モータ制御装置30のグローバルタイマとトレースデータとを送信する。即ち、送信部304は、コントローラ20から読出要求を受信したことに応じて、モータ制御装置30のグローバルタイマとトレースデータとを送信する。送信部304は、コントローラ20から読出要求を受信しない場合には、グローバルタイマとトレースデータの送信を待機し、コントローラ20から読出要求を受信した場合に、グローバルタイマとトレースデータとを送信する。
【0097】
[制限部]
制限部305は、所定期限までにトリガ条件が満たされなかった場合に、トレースデータの取得を制限する。所定期限は、予め定められた期限であればよく、例えば、グローバルタイマで表現可能な最大時間又はそれよりも短い時間である。トレースデータの取得を制限するとは、モータ制御装置30にトレースデータを取得させないこと、又は、モータ制御装置30にトレースデータを送信させないことである。
【0098】
例えば、制限部305は、取得条件が設定されてから、又は、取得開始要求が受信されてから計時処理を開始し、所定期限が訪れたか否かを判定する。制限部305は、所定期限が訪れるまでの間にトリガ条件が満たされた場合には、トレースデータの取得を制限せず、所定期限が訪れてもトリガ条件が満たされなかった場合に、トレースデータの取得を制限する。
【0099】
[3−3.データ収集装置において実現される機能]
図3に示すように、データ収集装置10では、データ記憶部100及び表示制御部101が実現される。データ記憶部100は、記憶部12を主として実現され、表示制御部101は、CPU11を主として実現される。
【0100】
[データ記憶部]
データ記憶部100は、データ収集装置10がコントローラ20から受信したロギングファイルFを記憶する。他にも例えば、データ記憶部100は、コントローラ20に接続されたモータ制御装置30やセンサ類などの構成を示す機器情報を記憶してもよいし、コントローラ20のIPアドレスを記憶してもよい。また例えば、データ記憶部100は、トレースデータの取得条件を記憶してもよい。この場合、データ収集装置10からコントローラ20に対して取得条件が展開されるようにしてもよい。
【0101】
また例えば、データ記憶部100は、コントローラ20のモータ制御装置30に対する指令を時系列的に記憶してもよい。例えば、データ記憶部100は、モータ40の動作指令(例えば、位置指令速度)が送信された時点を示すコントローラカウンタ又はグローバルタイマと、当該動作指令の内容と、の関係を時系列的に記憶してもよい。これらの関係は、プログラム又はパラメータに定義されていてもよく、データ記憶部100は、当該プログラム又はパラメータを記憶してもよい。
【0102】
[表示制御部]
表示制御部101は、指令が送信された場合のコントローラ20のグローバルタイマと、モータ制御装置30から受信したモータ制御装置30のグローバルタイマと、に基づいて、指令とトレースデータとを比較して表示させる。例えば、表示制御部101は、コントローラ20がモータ制御装置30に送信した指令の時系列的な変化と、トレースデータが示す数値の時系列的な変化(指令に対する実測値の時系列的な変化)と、を比較可能に表示させる。
【0103】
図6は、データ収集装置10に表示される画面の一例を示す図である。図6に示す例では、モータ40の位置指令速度の時系列的な変化と、トレースデータが示すフィードバック速度及びトルクの時系列的な変化と、が画面Gに表示される。表示制御部101は、データ記憶部100を参照して指令の時系列的な変化を取得し、ロギングファイルFを参照して実際の動作を示す数値の時系列的な変化を取得する。これらの情報は、共通のグローバルタイマが関連付けられているので、表示制御部101は、同じ時間軸で指令に対する実測値を比較可能に表示させる。例えば、表示制御部101は、図6のように上下に並べて表示させてもよいし、同じグラフ上に重ねて表示させてもよい。
【0104】
[4.通信システムで実行される処理]
図7は、通信システム1で実行される処理を示すフロー図である。図7に示す処理は、CPU11,21,31がそれぞれ記憶部12,22,32に記憶されたプログラムに従って動作することによって実行される。以降説明する処理は、図3に示す機能ブロックにより実行される処理の一例である。なお、コントローラ20は、記憶部22のグローバルタイマ及びコントローラカウンタをカウントアップし、モータ制御装置30は、記憶部32のグローバルタイマをカウントアップしているものとする。また、図7では、コントローラ20からモータ制御装置30へのモータ40の動作指令については省略している。
【0105】
図7に示すように、まず、コントローラ20は、同期タスクとして、モータ制御装置30にグローバルタイマの同期要求を送信する(S1)。S1においては、コントローラ20は、計時処理を実行し、伝送周期の開始時点が訪れたか否かを判定する。コントローラ20は、伝送周期の開始時点が訪れたと判定した場合に、記憶部22のグローバルタイマを含む同期要求を、同期タスクとして送信する。モータ制御装置30は、同期要求を同期タスクとして処理し、記憶部32のグローバルタイマを上書きする。
【0106】
データ収集装置10は、コントローラ20に、ロギング開始要求を送信する(S2)。ロギング開始要求は、ロギングファイルFに格納するトレースデータの取得を開始させるための要求であり、ここでは、コントローラ20に取得条件を設定させるための要求である。ロギング開始要求は、所定形式のデータが送信されることによって行われるようにすればよく、ロギング開始要求であることを示す識別子を含む。ロギング開始要求は、任意のタイミングで送信され、例えば、コントローラ20でアラームが発生した場合に送信されてもよいし、ユーザが指定したタイミングで送信されてもよい。
【0107】
コントローラ20は、ロギング開始要求を受信すると、非同期タスクとして、モータ制御装置30に取得条件を設定する(S3)。取得条件は、データ収集装置10からコントローラ20に予め展開されてもよいし、ロギング開始要求に含まれていてもよい。S3においては、コントローラ20は、記憶部22に記憶された取得条件をモータ制御装置30に送信する。モータ制御装置30は、取得条件を受信すると記憶部32に格納する。
【0108】
その後、次の伝送周期が訪れると、コントローラ20は、同期タスクとして、モータ制御装置30にグローバルタイマの同期要求を送信する(S4)。S4の処理は、S1の処理と同様である。以降、伝送周期が訪れるたびに、同期要求が送信される。
【0109】
コントローラ20は、非同期タスクとして、モータ制御装置30に取得開始要求を送信する(S5)。S5においては、例えば、コントローラ20は、S3において送信された非同期タスクである取得条件の設定が完了した旨のレスポンスをモータ制御装置30から受信した場合に取得開始要求を送信してもよいし、S3の取得条件の設定に関する非同期タスクを送信した後すぐに、取得開始要求を送信してもよい。
【0110】
モータ制御装置30は、取得開始要求を受信すると、非同期タスクとして処理し、トリガ条件が満たされたか否かを判定する(S6)。S6においては、モータ制御装置30は、S3で設定された取得条件の一つであるトリガ条件が満たされたか否かを判定する。なお、所定の制限期間までにトリガ条件が満たされなかった場合には、以降のS7〜S11の処理は実行されない。
【0111】
トリガ条件が満たされたと判定された場合(S6;Y)、モータ制御装置30は、トレースデータの取得を開始し、トレースデータを取得する(S7)。S7においては、モータ制御装置30は、グローバルタイマの現在値を記憶部32に保持し、S3で設定された取得条件とセンサ50又はエンコーダ60等の信号とに基づいて、トレースデータの取得を開始する。以降、モータ制御装置30は、トレース期間が終了するまでの間、サンプリング周期ごとに計測対象の数値の取得を繰り返す。
【0112】
コントローラ20は、非同期タスクとして、モータ制御装置30にトレースデータの読出要求を送信する(S8)。S8においては、コントローラ20は、S5において送信された取得開始要求の非同期タスクが完了した旨のレスポンスをモータ制御装置30から受信した場合に読出要求を送信してもよいし、S5の取得開始要求の非同期タスクを送信してから一定時間が経過した後に、読出要求を送信してもよい。
【0113】
モータ制御装置30は、読出要求を受信すると、非同期タスクとして処理し、取得開始時点のグローバルタイマとともにトレースデータをコントローラ20に送信する(S9)。S9においては、モータ制御装置30は、S7で保持したグローバルタイマと、S7で取得したトレースデータと、を送信する。
【0114】
コントローラ20は、トレースデータを受信すると、ロギングファイルFを作成して記憶部22に保存する(S10)。S10においては、コントローラ20は、タイマデータDに基づいて、トレースデータの取得開始時点を示すグローバルタイマをコントローラカウンタに変換し、トレースデータの最初の数値と関連付ける。また、コントローラ20は、当該コントローラカウンタ及びグローバルタイマをサンプリング周期に応じた値だけ増加させつつ、トレースデータの2個目以降の数値と関連付ける。コントローラ20は、これらコントローラカウンタ、グローバルタイマ、及びトレースデータの数値をロギングファイルFに格納する。
【0115】
コントローラ20は、データ収集装置10にロギングファイルFを送信し(S11)、本処理は終了する。例えば、データ収集装置10は、FTP等を利用してロギングファイルFを受信し、記憶部12に格納する。以降、データ収集装置10は、ユーザが操作部14から所定の操作をした場合に、ロギングファイルFに基づいて、画面Gを表示部15に表示される。
【0116】
上記説明した通信システム1によれば、コントローラ20が更新するグローバルタイマと、モータ制御装置30が更新するグローバルタイマと、の同期が取れているため、コントローラ20は、トレースデータが取得された時間を正確に把握することができる。例えば、コントローラ20がトレースデータの取得要求を送信してから、実際にトレースデータが取得されるまでに時間がかかったり、トレースデータが取得されてからコントローラ20がそれを読み出しに行くまでに時間がかかったりしたとしても、コントローラ20のグローバルタイマとモータ制御装置30のグローバルタイマの同期が取れているので、コントローラ20は、いつの時点のトレースデータなのかを正確に把握することができる。
【0117】
また、トレースデータは、モータ制御装置30により取得されてすぐにコントローラ20に送信されるのではなく、コントローラ20からの読出要求があって初めて送信されるため、トレースデータが取得されてから読出要求が受信されるまでに時間がかかることがある。この場合、コントローラ20は、トレースデータだけが送られてきてもいつの時点のものなのかを特定することが難しいが、通信システム1によれば、コントローラ20のグローバルタイマとモータ制御装置30のグローバルタイマの同期が取れているので、トレースデータが取得されてから読出要求が受信されるまでに時間がかかったとしても、コントローラ20は、いつの時点のトレースデータなのかを正確に把握することができる。
【0118】
また、非同期通信を利用すると、コントローラ20がトレースデータの取得開始要求を送信しても、それがいつ実行されるのか分からないので、取得開始要求が送信されてからトレースデータが実際に取得されるまでに時間がかかることがある。この場合、コントローラ20は、トレースデータだけが送られてきてもいつの時点のものなのかを特定することが難しいが、通信システム1によれば、コントローラ20のグローバルタイマとモータ制御装置30のグローバルタイマの同期が取れているので、取得開始要求が送信されてからトレースデータが実際に取得されるまでに時間がかかったとしても、コントローラ20は、いつの時点のトレースデータなのかを正確に把握することができる。
【0119】
また、モータ制御装置30の内部でトリガ条件が満たされた場合にトレースデータが取得されると、コントローラ20は、いつトリガ条件が満たされたかを把握することができないので、トレースデータだけが送られてきてもいつの時点のものなのかを特定することが難しいが、通信システム1によれば、コントローラ20のグローバルタイマとモータ制御装置30のグローバルタイマの同期が取れているので、トリガ条件が満たされた場合にトレースデータが取得されるようにしたとしても、コントローラ20は、いつの時点のトレースデータなのかを正確に把握することができる。
【0120】
また、コントローラ20とモータ制御装置30の間の通信が切断された場合には、時間情報の同期を取ることができないので、互いの時間のずれが次第に大きくなる。この場合に、トリガ条件がなかなか満たされなかったとすると、時間的に大きくずれた状態のモータ制御装置30のグローバルタイマとともにトレースデータが送信されてしまう可能性があるが、通信システム1によれば、このような場合にはトレースデータの取得が制限されるので、時間的に大きくずれた状態のモータ制御装置30のグローバルタイマとともにトレースデータが送信されるといったことを防止できる。
【0121】
また、コントローラ20のグローバルタイマに基づいてモータ制御装置30のグローバルタイマを更新することで、コントローラ20側の時間にモータ制御装置30を合わせることができ、コントローラ20は、トレースデータが取得された時間をより正確に把握することができる。
【0122】
また、コントローラ20がトレースデータの取得条件を設定することで、所望の内容のトレースデータを取得することができる。
【0123】
また、コントローラ20が、同期用のコントローラ20のグローバルタイマとは別の時間情報としてコントローラカウンタを有しており、モータ制御装置30のグローバルタイマをコントローラカウンタに変換してトレースデータと関連付けておくことで、他の機器に影響されない独自の時間情報を利用してトレースデータを管理することができ、トレースデータの管理が容易になる。
【0124】
また、マスタ機器であるコントローラ20が更新するコントローラ20のグローバルタイマと、スレーブ機器であるモータ制御装置30が更新するモータ制御装置30のグローバルタイマと、の同期が取れているため、マスタ機器であるコントローラ20は、スレーブ機器であるモータ制御装置30においてトレースデータが取得された時間を正確に把握することができる。
【0125】
また、コントローラ20のグローバルタイマとモータ制御装置30のグローバルタイマの同期が取れており、マスタ機器であるコントローラ20からの指令とトレースデータと、の時間的な関係も対応付けが取られているので、これらを比較して表示させることで、指令に対する実測値がどのような状態であるかを分かりやすく表示させることができる。このため、産業機器の動作の解析を効果的に支援することができる。
【0126】
また、コントローラ20が更新するグローバルタイマと、モータ制御装置30が更新するグローバルタイマと、の同期が取れているため、コントローラ20は、状態データの一例であるトレースデータが取得された時間を正確に把握することができる。
【0127】
[5.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0128】
例えば、実施形態では、コントローラ20と、1台のモータ制御装置30と、の間でグローバルタイマの同期が取られる場合を説明したが、コントローラ20は、複数台のモータ制御装置30とグローバルタイマの同期を取ってもよい。この場合、これら複数台のモータ制御装置30の各々は、コントローラ20からグローバルタイマの同期要求を受信すると、自身のグローバルタイマを、同期要求に含まれるコントローラ20のグローバルタイマで上書きすればよい。
【0129】
また例えば、第1の産業機器はコントローラ20に限られず、第2の産業機器はモータ制御装置30に限られない。例えば、コントローラ20同士でグローバルタイマの同期が取られてもよく、あるコントローラ20が第1の産業機器に相当し、別のコントローラ20が第2の産業機器に相当してもよい。
【0130】
図8は、変形例における通信システム1の全体構成を示す図である。図8に示すように、データ収集装置10には、複数のコントローラ20A,20Bが接続されており、これら複数のコントローラ20A,20Bの各々からロギングファイルFを収集可能としてもよい。更に、コントローラ20Aとコントローラ20Bとの間でグローバルタイマの同期が取られてもよい。この場合、コントローラ20Aが第1の産業機器に相当し、コントローラ20Bが第2の産業機器に相当してもよいし、これとは逆にコントローラ20Bが第1の産業機器に相当し、コントローラ20Aが第2の産業機器に相当してもよい。
【0131】
例えば、コントローラ20Aは、コントローラ20Bに、グローバルタイマの同期要求を送信する。コントローラ20Bは、同期要求に基づいて、自身のグローバルタイマを、コントローラ20Aのグローバルタイマで上書きする。コントローラ20A,20Bの各々が自身に接続されたモータ制御装置30A〜30Cの各々からトレースデータを受信する処理については、実施形態で説明した処理と同様の処理が実行されるようにすればよい。
【0132】
例えば、コントローラ20Bは、コントローラ20Aと同期をとったグローバルタイマに基づいて、自身に接続されたモータ制御装置30B,30Cと同期を取り、トレースデータの取得開始時点のグローバルタイマとトレースデータをモータ制御装置30B,30Cから取得する。コントローラ20Bは、取得したグローバルタイマとトレースデータをコントローラ20A又はデータ収集装置10に送信してもよい。この場合、コントローラ20Bは、独自にコントローラカウンタを用意し、グローバルタイマを自身のコントローラカウンタに変換してもよい。
【0133】
なお、コントローラ20Aは、モータ制御装置30と同期を取る用のグローバルタイマと、コントローラ20Bと同期を取る用のグローバルタイマと、を別々に有していてもよい。同様に、コントローラ20Bは、モータ制御装置30と同期を取る用のグローバルタイマと、コントローラ20Aと同期を取る用のグローバルタイマと、を有していてもよい。コントローラ20Bがトレースデータをコントローラ20Aに送信する場合には、モータ制御装置30と同期を取る用のグローバルタイマを、コントローラ20Aと同期を取る用のグローバルタイマに変換したうえで送信すればよい。
【0134】
また例えば、状態データとしてトレースデータが取得される場合を説明したが、状態データは、ある特定のレジスタに格納された一時点のデータであってもよい。この場合、コントローラ20は、モータ制御装置30の特定のレジスタを読み出す要求を送信する。また例えば、トレースデータのトリガ条件は特に設定されなくてもよい。また例えば、コントローラ20及びモータ制御装置30とは異なる第三者の機器により、グローバルタイマの同期が行われてもよい。また例えば、コントローラカウンタは、省略してもよい。また例えば、トレースデータは、表示させるのではなく、解析用のアプリケーションに入力させるために用いられてもよい。また例えば、コントローラ20がモータ制御装置30のグローバルタイマに合わせてもよく、同期部201は、モータ制御装置30で実現されてもよい。また例えば、データ収集装置10は、クラウドサーバ等であってもよい。
【0135】
また、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
【符号の説明】
【0136】
1 通信システム、D タイマデータ、F ロギングファイル、10 データ収集装置、11,21,31 CPU、12,22,32 記憶部、13,23,33 通信部、14 操作部、15 表示部、20,20A,20B コントローラ、30 モータ制御装置、40 モータ、50 センサ、60 エンコーダ、100 データ記憶部、101 表示制御部、200 データ記憶部、201 同期部、202 設定部、203 取得開始要求部、204 読出要求部、205 記録部、300 データ記憶部、301 更新部、302 判定部、303 取得部、304 送信部、305 制限部。
図1
図2
図3
図4
図5
図6
図7
図8