(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-28
(45)【発行日】2022-11-08
(54)【発明の名称】生産システム、通信方法、及びプログラム
(51)【国際特許分類】
H04L 12/28 20060101AFI20221031BHJP
【FI】
H04L12/28 400
(21)【出願番号】P 2020026176
(22)【出願日】2020-02-19
【審査請求日】2020-02-20
【審判番号】
【審判請求日】2022-02-01
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】110000154
【氏名又は名称】弁理士法人はるか国際特許事務所
(72)【発明者】
【氏名】松村 勇
(72)【発明者】
【氏名】吉良 俊信
(72)【発明者】
【氏名】吉浦 泰史
(72)【発明者】
【氏名】正垣 隆章
(72)【発明者】
【氏名】新見 宏隆
【合議体】
【審判長】稲葉 和生
【審判官】石井 則之
【審判官】富澤 哲生
(56)【参考文献】
【文献】特開2019-062467(JP,A)
【文献】特開2018-064245(JP,A)
【文献】特開2019-140603(JP,A)
【文献】特開2019-139631(JP,A)
【文献】特開2016-063236(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/28
(57)【特許請求の範囲】
【請求項1】
第1産業装置と、
前記第1産業装置と定周期で通信する第2産業装置と、
を有し、
前記第2産業装置は、1周期内における複数の定周期領域の
うちの第1定周期領域を利用して、前記第1産業装置に、制御用の第1データ
を1の第1フレームの第1データ領域に含み、かつ、自身に関する第2データの一部
を前記第1フレームの第2データ領域に含む前記第1フレームを送信
し、同じ周期における第2定周期領域を利用して、少なくとも前記第2データの一部を1の第2フレームの所定のデータ領域に含む前記第2フレームを送信する送信部を有する、
生産システム。
【請求項2】
前記第1産業装置と前記第2産業装置との間では、1周期内において少なくとも1回、前記複数の定周期領域のうちの少なくとも1つを利用して、前記第1データが送受信される、
請求項
1に記載の生産システム。
【請求項3】
前記第1産業装置は、1周期内で複数の通信相手と通信可能であり、
1周期内には、通信相手ごとに前記定周期領域があり、
前記送信部は、前記第2産業装置の前記定周期領域と、前記第2産業装置に対応する仮想的な産業装置の前記定周期領域と、を含む前記複数の定周期領域の各々を利用する、
請求項1
又は2に記載の生産システム。
【請求項4】
前記生産システムは、複数の前記第2産業装置を有し、
前記第1産業装置は、1周期内において、前記複数の第2産業装置の各々と順番に通信し、
前記複数の第2産業装置の各々の前記送信部は、自身の順番が訪れた場合に、自身に応じた数の前記定周期領域を利用して、少なくとも前記第2データを送信する、
請求項1~
3の何れかに記載の生産システム。
【請求項5】
前記送信部は、前記複数の定周期領域の各々を利用して、複数の種類の前記第2データを送信する、
請求項1~
4の何れかに記載の生産システム。
【請求項6】
前記送信部は、1つの前記第2データを、前記複数の定周期領域に分けて送信する、
請求項1~
5の何れかに記載の生産システム。
【請求項7】
前記複数の定周期領域の各々に分けられたデータ部分には、識別情報が付与されており、
前記第1産業装置は、前記識別情報に基づいて、前記複数の定周期領域の各々を利用して受信した前記データ部分を結合する結合部を有する、
請求項
6に記載の生産システム。
【請求項8】
前記第1産業装置は、複数の通信相手と通信可能であり、
前記生産システムは、前記送信部が利用する前記定周期領域の数に基づいて、通信相手の上限数を設定する上限数設定部を有する、
請求項1~
7の何れかに記載の生産システム。
【請求項9】
前記生産システムは、前記送信部が利用する前記定周期領域の数に基づいて、周期の長さを設定する周期設定部を有する、
請求項1~
8の何れかに記載の生産システム。
【請求項10】
前記生産システムは、前記定周期通信における周期の長さに基づいて、前記送信部が利用する前記定周期領域の数を決定する決定部を有する、
請求項1~
9の何れかに記載の生産システム。
【請求項11】
前記第2データは、前記第2産業装置により生成されたトレースデータ、前記第2産業装置により解析された解析データ、又は前記第2産業装置に接続された機器に関する機器データである、
請求項1~1
0の何れかに記載の生産システム。
【請求項12】
前記第1産業装置は、指令を送信するマスタ機器であり、
前記第2産業装置は、前記指令に応じて動作するスレーブ機器である、
請求項1~1
1の何れかに記載の生産システム。
【請求項13】
第1産業装置と、前記第1産業装置と定周期で通信する第2産業装置と、の間における通信方法であって、
前記第2産業装置が、1周期内における複数の定周期領域の
うちの第1定周期領域を利用して、前記第1産業装置に、制御用の第1データ
を1の第1フレームの第1データ領域に含み、かつ、自身に関する第2データの一部
を前記第1フレームの第2データ領域に含む前記第1フレームを送信
し、同じ周期における第2定周期領域を利用して、少なくとも前記第2データの一部を1の第2フレームの所定のデータ領域に含む前記第2フレームを送信する、
通信方法。
【請求項14】
第1産業装置と定周期で通信する第2産業装置を、
1周期内における複数の定周期領域の
うちの第1定周期領域を利用して、前記第1産業装置に、制御用の第1データ
を1の第1フレームの第1データ領域に含み、かつ、自身に関する第2データの一部
を前記第1フレームの第2データ領域に含む前記第1フレームを送信
し、同じ周期における第2定周期領域を利用して、少なくとも前記第2データの一部を1の第2フレームの所定のデータ領域に含む前記第2フレームを送信する送信部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、生産システム、通信方法、及びプログラムに関する。
【背景技術】
【0002】
特許文献1には、第1産業装置と第2産業装置との間で、所定の送信周期で定期送信データの授受を行うようにした生産システムにおいて、第2産業装置が、定期送信データの授受が行われていない空き時間に、定期送信する必要のない非定期送信データの授受を行うようにすることが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示の目的の1つは、例えば、データの送信に要する時間を保証することである。
【課題を解決するための手段】
【0005】
本開示の一側面に係る生産システムは、第1産業装置と、前記第1産業装置と定周期で通信する第2産業装置と、を有し、前記第2産業装置は、1周期内における複数の定周期領域の各々を利用して、前記第1産業装置に、自身に関するデータを送信する送信部を有する。
【0006】
本開示の一側面に係る通信方法は、第1産業装置と、前記第1産業装置と定周期で通信する第2産業装置と、の間における通信方法であって、前記第2産業装置が、1周期内における複数の定周期領域の各々を利用して、前記第1産業装置に、自身に関するデータを送信する。
【0007】
本開示の一側面に係るプログラムは、第1産業装置と定周期で通信する第2産業装置を、前記第2産業装置は、1周期内における複数の定周期領域の各々を利用して、前記第1産業装置に、自身に関するデータを送信する送信部、として機能させる。
【0008】
本開示の一側面によれば、前記第1産業装置と前記第2産業装置との間では、1周期内において少なくとも1回、前記複数の定周期領域のうちの少なくとも1つを利用して、制御用のデータが送受信される。
【0009】
本開示の一側面によれば、前記第1産業装置は、1周期内で複数の通信相手と通信可能であり、1周期内には、通信相手ごとに前記定周期領域があり、前記送信部は、前記第2産業装置の前記定周期領域と、前記第2産業装置に対応する仮想的な産業装置の前記定周期領域と、を含む前記複数の定周期領域の各々を利用する。
【0010】
本開示の一側面によれば、前記生産システムは、複数の前記第2産業装置を有し、前記第1産業装置は、1周期内において、前記複数の第2産業装置の各々と順番に通信し、前記複数の第2産業装置の各々の前記送信部は、自身の順番が訪れた場合に、自身に応じた数の前記定周期領域を利用して、自身に関するデータを送信する。
【0011】
本開示の一側面によれば、前記送信部は、前記複数の定周期領域の各々を利用して、複数の種類の前記データを送信する。
【0012】
本開示の一側面によれば、前記送信部は、1つの前記データを、前記複数の定周期領域に分けて送信する。
【0013】
本開示の一側面によれば、前記複数の定周期領域の各々に分けられたデータ部分には、識別情報が付与されており、前記第1産業装置は、前記識別情報に基づいて、前記複数の定周期領域の各々を利用して受信した前記データ部分を結合する結合部を有する。
【0014】
本開示の一側面によれば、前記第1産業装置は、複数の通信相手と通信可能であり、前記生産システムは、前記送信部が利用する前記定周期領域の数に基づいて、通信相手の上限数を設定する上限数設定部を有する。
【0015】
本開示の一側面によれば、前記生産システムは、前記送信部が利用する前記定周期領域の数に基づいて、周期の長さを設定する周期設定部を有する。
【0016】
本開示の一側面によれば、前記生産システムは、前記定周期通信における周期の長さに基づいて、前記送信部が利用する前記定周期領域の数を決定する決定部を有する。
【0017】
本開示の一側面によれば、前記データは、前記第2産業装置により生成されたトレースデータ、前記第2産業装置により解析された解析データ、又は前記第2産業装置に接続された機器に関する機器データである。
【0018】
本開示の一側面によれば、前記第1産業装置は、指令を送信するマスタ機器であり、前記第2産業装置は、前記指令に応じて動作するスレーブ機器である。
【発明の効果】
【0019】
本開示によれば、例えば、データの送信に要する時間を保証することである。
【図面の簡単な説明】
【0020】
【
図1】実施形態に係る生産システムの全体構成の一例を示す図である。
【
図2】従来の1周期内における通信手順を示す図である。
【
図3】本実施形態の1周期内における通信手順を示す図である。
【
図4】生産システムで実現される機能を示す機能ブロック図である。
【
図5】定周期通信の通信フェーズで送受信されるデータのデータフォーマットを示す図である。
【
図6】トレースデータ及び一次解析データの内容を示す図である。
【
図8】生産システムで送信対象データが送受信される様子を示すフロー図である。
【発明を実施するための形態】
【0021】
発明者達の見地によれば、第1産業装置と第2産業装置とが定周期で通信する生産システムでは、定周期通信用の通信領域を利用して制御用のデータが送受信され、非定周期通信用の通信領域を利用して他のデータが送受信されていた。しかしながら、非定周期通信用の通信領域は、ある特定の産業装置専用というわけではなく、どの産業装置が何の目的で利用するか決まっておらず、比較的低速なこともあり、当該他のデータの送信に要する時間を保証することができなかった。そこで発明者達は、例えば、データの送信に要する時間を保証するために鋭意研究開発を行った結果、新規かつ独創的な生産システム等に想到した。以降、本実施形態に係る生産システム等を詳細に説明する。
【0022】
[1.生産システムの全体構成]
図1は、実施形態に係る生産システムの全体構成の一例を示す図である。
図1に示すように、生産システム1は、データ収集装置10、コントローラ20、モータ制御装置30-1~30-n、モータ40-1~40-n、及びセンサ50-1~50-nを含む。nは自然数であり、
図1の場合、nは4以上の任意の整数である。
【0023】
本実施形態では、モータ制御装置30-1~30-n、モータ40-1~40-n、及びセンサ50-1~50-nの各々を特に区別する必要のないときは、単にモータ制御装置30、モータ40、及びセンサ50と記載する。同様に、CPU31-1~31-n、記憶部32-1~32-n、及び通信部33-1~33-nの各々を特に区別する必要のないときは、単にCPU31、記憶部32、及び通信部33と記載する。
【0024】
データ収集装置10は、データを収集するコンピュータである。データ収集装置10は、CPU11、記憶部12、及び通信部13を含む。CPU11は、少なくとも1つのプロセッサを含む。記憶部12は、RAM、EEPROM、及びハードディスクを含み、各種プログラムやデータを記憶する。CPU11は、これらプログラムやデータに基づいて各種処理を実行する。通信部13は、有線通信又は無線通信用の通信インタフェースを含み、他の装置との通信を行う。
【0025】
コントローラ20は、モータ制御装置30を制御する装置である。コントローラ20は、第1産業装置の一例である。このため、本実施形態でコントローラ20と記載した箇所は、第1産業装置と読み替えることができる。産業装置は、人間が行う作業の補助又は代行をする機器及びその周辺機器の総称である。例えば、コントローラ20以外にも、後述するモータ制御装置30も産業装置に相当する。他にも例えば、ロボットコントローラ、産業用ロボット、インバータ、コンバータ、工作機械、又はPLC等は、産業装置に相当する。
【0026】
本実施形態では、コントローラ20が4台以上のモータ制御装置30を制御する場合を説明するが、コントローラ20が制御するモータ制御装置30の台数は、任意の数であってよく、例えば、3台以下であってもよい。また例えば、コントローラ20には、モータ制御装置30だけでなく、センサ類又は入出力機器などが接続されていてもよい。また例えば、生産システム1には、複数台のコントローラ20が含まれていてもよい。例えば、コントローラ20は、CPU21、記憶部22、及び通信部23を含む。CPU21、記憶部22、及び通信部23の各々の物理的構成は、CPU11、記憶部12、及び通信部13と同様である。
【0027】
モータ制御装置30は、モータ40を制御する装置である。モータ制御装置30は、第2産業装置の一例である。このため、本実施形態でモータ制御装置30と記載した箇所は、第2産業装置と読み替えることができる。本実施形態の生産システム1は、複数の第2産業装置を有する場合を説明するが、第2産業装置は、1台だけであってもよい。
【0028】
例えば、第2産業装置は、第1産業装置と定周期で通信する産業装置である。産業装置の意味は先述した通りである。第2産業装置は、第1産業装置と常に定周期で通信しなければならないわけではなく、第1産業装置と非定周期で通信してもよい。第1産業装置と第2産業装置とは、定周期の通信が可能であればよい。本実施形態では、第1産業装置は、第2産業装置からデータを受信する側の装置(データの送信先の装置)であり、第2産業装置は、データを送信する側の装置(データの送信元の装置)である。第2産業装置は、データを生成する装置、又は、動作の解析対象の装置ということもできる。
【0029】
本実施形態では、第1産業装置が指令を送信するマスタ機器であり、第2産業装置が指令に応じて動作するスレーブ機器である場合を説明するが、第1産業装置がスレーブ機器であり、第2産業装置がマスタ機器であってもよい。更に、第1産業装置と第2産業装置は、マスタとスレーブの関係になくてもよい。別の言い方をすれば、第1作業機器と第2産業装置との間には、主従関係又は上下関係が存在しなくてもよい。
【0030】
マスタ機器とは、スレーブ機器を制御する機器である。別の言い方をすれば、マスタ機器は、スレーブ機器からデータを取得する機器である。スレーブ機器とは、マスタ機器により制御される機器である。別の言い方をすれば、スレーブ機器は、マスタ機器に対して自身の動作状態を送信する機器である。本実施形態では、モータ制御装置30は、コントローラ20からの指令に基づいて動作するので、コントローラ20がマスタ機器に相当し、モータ制御装置30がスレーブ機器に相当する。
【0031】
モータ制御装置30は、サーボアンプ又はサーボパック(登録商標)と呼ばれることもある。本実施形態では、モータ制御装置30が1つのモータ40を制御する場合を説明するが、モータ制御装置30は、複数のモータ40を制御してもよい。更に、モータ制御装置30には、モータ40、及びセンサ50だけでなく、入出力機器などの他の機器が接続されていてもよい。
【0032】
図1に示すように、モータ制御装置30-1~30-nの各々は、所定の接続順で直列的に接続されている。接続順とは、コントローラ20から数えた順番である。接続順は、階層ということもできる。モータ制御装置30-k(kは1以上n以下の整数)の接続順はk番目となる。直列的に接続とは、モータ制御装置30の上位及び下位の少なくとも一方に、少なくとも1台の他のモータ制御装置30が接続されていることである。いわゆるマルチドロップ接続、カスケード接続、又はデイジーチェーン接続と呼ばれる接続形態は、直列的な接続の一例である。例えば、モータ制御装置30は、CPU31、記憶部32、及び通信部33を含む。CPU31、記憶部32、及び通信部33の各々の物理的構成は、CPU11、記憶部12、及び通信部13と同様である。
【0033】
モータ制御装置30は、コントローラ20から受信した指令に基づいて、電力線で接続されたモータ40に対する電流を制御する。モータ40は、回転式であってもよいしリニア式であってもよい。センサ50は、物理量を検出可能なセンサであり、例えば、モータエンコーダ、トルクセンサ、温度センサ、力センサ、ビジョンセンサ、モーションセンサ、ジャイロセンサ、又は加速度センサなどである。
図1では、1台のモータ制御装置30あたり1個のセンサ50を示しているが、1台のモータ制御装置に対し、複数個のセンサ50が接続されていてもよい。
【0034】
なお、データ収集装置10、コントローラ20、及びモータ制御装置30の各々に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されるようにしてもよい。また、データ収集装置10、コントローラ20、及びモータ制御装置30の各々のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器と直接的に接続するための入出力部(例えば、USB端子)が含まれていてもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが読取部又は入出力部を介して供給されるようにしてもよい。また例えば、ASIC又はFPGAと呼ばれる集積回路が含まれていてもよい。
【0035】
[2.生産システムの概要]
生産システム1では、コントローラ20とモータ制御装置30との間で定周期通信が行われる。定周期通信とは、周期的(定期的)に行われる通信である。別の言い方をすれば、定周期通信は、1周期内の通信手順が予め定められており、一定の周期ごとに、当該通信手順で行われる通信である。本実施形態では、コントローラ20とモータ制御装置30とを接続する産業用のネットワーク(いわゆるフィールドネットワークを含む)において、定周期通信が行われる。
【0036】
図2は、従来の1周期内における通信手順を示す図である。
図2に示すように、定周期通信では、1周期の時間Tが予め定められている。1周期の時間Tは、任意の長さであってよく、例えば、数十μs~数百μs程度であってもよいし、それ以上又はそれ以下であってもよい。1周期の時間Tは、モータ制御装置30の台数(いわゆる軸数)に応じて定めればよく、例えば、台数が多いほど時間Tは長くなる。例えば、コントローラ20は、記憶部22に記憶された時間をカウントアップし、各周期の開始時点が訪れたか否か(時間Tが経過したか否か)を判定する。
【0037】
図2の例では、1周期内において、同期、定周期通信、定周期通信のリトライ、非定周期通信の順番に通信フェーズが訪れる。同期の通信フェーズでは、コントローラ20とモータ制御装置30との間で同期(
図1では「SYNC」)が取られる。同期により、コントローラ20が管理する時間と、モータ制御装置30が管理する時間と、の整合が取られる。例えば、コントローラ20とモータ制御装置30の各々は、タイマによって時間を管理する。
【0038】
定周期通信の通信フェーズでは、定周期通信が行われる。例えば、コントローラ20からモータ制御装置30に対し、指令が送信される。指令は、コントローラ20からモータ制御装置30への出力ということもできる。モータ制御装置30は、コントローラ20からの指令を受信して実行し、コントローラ20に対し、応答を送信する。応答は、モータ制御装置30からコントローラ20への入力ということもできる。コントローラ20は、指令を送信してから応答を受信するまでの間は、原則として、モータ制御装置30から他のデータを受信しない。このため、本実施形態の定周期通信の通信フェーズは、同期通信の通信フェーズということもできる。例えば、定周期通信の通信フェーズにおける指令は、同期タスクとして処理される。
【0039】
コントローラ20は、モータ制御装置30-1~30-nの各々と順番に通信する。例えば、定周期通信の通信フェーズが訪れると、コントローラ20は、接続順が1番目のモータ制御装置30-1に対し、指令(
図1では「CMD#1」)を送信する。モータ制御装置30-1は、指令を受信して実行し、コントローラ20に対し、応答(
図1では「RSP#1」)を送信する。この場合、モータ制御装置30-2~30-nは、モータ制御装置30-1よりも下位に配置されているので、コントローラ20とは通信しない。
【0040】
次に、コントローラ20は、接続順が2番目のモータ制御装置30-2に対し、指令(
図1では「CMD#2」)を送信する。コントローラ20とモータ制御装置30-2との間には、モータ制御装置30-1が配置されているので、モータ制御装置30-1は、コントローラ20から受信した指令を、モータ制御装置30-2に転送する。モータ制御装置30-2は、転送された指令を受信して実行し、コントローラ20に対し、応答(
図1では「RSP#2」)を送信する。モータ制御装置30-1は、モータ制御装置30-2から受信した応答を、コントローラ20に転送する。この場合、モータ制御装置30-3~30-nは、モータ制御装置30-2よりも下位に配置されているので、コントローラ20とは通信しない。
【0041】
以降同様にして、接続順が上位のモータ制御装置30から順番にコントローラ20との通信が行われる。コントローラ20と通信対象のモータ制御装置30との間に配置された他のモータ制御装置30は、通信対象のモータ制御装置30に対する指令と、コントローラ20に対する応答を転送すればよい。なお、本実施形態では、モータ制御装置30-1~30-nの通信順とこれらの接続順とが一致する場合を説明するが、通信順と接続順は異なってもよい。例えば、モータ制御装置30-2が最初にコントローラ20と通信してもよい。
【0042】
リトライの通信フェーズでは、定周期通信の通信フェーズにおいて失敗した通信のリトライが行われる。
図2の例では、コントローラ20と、モータ制御装置30-1,30-m(mは2以上n以下の整数)と、の通信が失敗してリトライが行われた場合を示しているが、失敗した通信が存在しなければ、リトライは行われない。
【0043】
非定周期通信の通信フェーズでは、非定周期通信が行われる。非定周期通信とは、定周期通信ではない通信であり、周期的(定期的)には行われない通信である。非定周期通信は、メッセージ通信と呼ばれることもある。例えば、非定周期通信は、定周期通信の通信フェーズではない空き時間に行われる。例えば、非定周期通信は、定周期通信よりも低速であり、一度に送信されるデータのサイズが定周期通信よりも大きい。非定周期通信では、一度に数百バイト程度のサイズのデータが非定周期に読み書きされる。例えば、非定周期通信では、コントローラ20は、全てのモータ制御装置30と通信するのではなく、一部のモータ制御装置30と通信する。このため、非定周期通信では、コントローラ20と通信しないモータ制御装置30も存在する。
【0044】
図2の例では、コントローラ20は、非定周期通信における通信相手のモータ制御装置30を指定し、当該モータ制御装置30に対し、指令(例えば、
図1の1回目の非定周期通信では「MSG#n」)を送信する。通信相手のモータ制御装置30は、指令を受信して実行し、コントローラ20に対し、応答(例えば、
図1の1回目の非定周期通信では「ACKorMSG#n」)を送信する。モータ制御装置30-2~30-nの何れかが通信相手になる場合には、定周期通信と同様の転送が行われるようにすればよい。
【0045】
なお、非定周期通信において、コントローラ20は、特定のモータ制御装置30ではなく、モータ制御装置30全体と同報通信をしてもよい。また、
図2の例では、非定周期通信の通信フェーズが2つ存在する場合を示しているが、非定周期通信の通信フェーズは、1つだけであってもよいし、3つ以上であってもよい。特に非定周期通信をする必要がない周期については、非定周期通信の通信フェーズがなくてもよい。また、他の通信フェーズについても同様に、同じ通信フェーズが複数存在してもよい。
【0046】
図2に示すように、ある周期が終了すると、次の周期が開始する。次の周期が開始すると、同期、定周期通信、定周期通信のリトライ、非定周期通信の順番に通信フェーズが訪れる。以降、コントローラ20とモータ制御装置30との間で、周期的な通信が繰り返される。
【0047】
コントローラ20からモータ制御装置30には、モータ40の制御用の指令以外にも、トレース開始の指令も送信される。例えば、モータ制御装置30は、コントローラ20からトレース開始の指令を受信すると、所定のトリガ条件が満たされた場合にトレースを開始し、トレースデータを生成する。本実施形態では、モータ制御装置30は、トレースデータを生成するだけではなく、トレースデータの一次解析も行って一次解析データを生成する。
【0048】
モータ制御装置30は、コントローラ20に対し、トレースデータ及び一次解析データを1つにまとめたデータ(以降、送信対象データと記載する。)を送信する。この点、全てのモータ制御装置30の送信対象データを、非定周期通信の通信領域を利用して送信しようとすると時間がかかり、その時間も保証されないことがある。
【0049】
例えば、送信対象データのデータサイズを8キロバイト(即ち、8*1024=8192バイト)とし、非定周期通信における最大のメッセージサイズを512バイトとすると、1台のモータ制御装置30の送信対象データを送信するのに、16回かかる。非定周期通信が1回あたり10msであったとすると、1台のモータ制御装置30の送信対象データを送信するのに160msかかる。30台のモータ制御装置30が接続されていた場合(nの値が30であった場合)には、全てのモータ制御装置30の送信対象データを送信するのに4.8秒かかる。非定周期通信は、他の目的でも利用されるため、4.8秒以上かかることもある。このため、非定周期通信を利用すると、送信対象データを送信する時間がかかる。更に、送信対象データを送信する時間が保証されず、送信対象データをタイムリーに読み出すことができない。
【0050】
そこで、本実施形態では、1台のモータ制御装置30を2台のスレーブ機器とみなし、仮想の2台目のスレーブ機器との定周期通信を、送信対象データの送受信に活用するようにしている。
【0051】
図3は、本実施形態の1周期内における通信手順を示す図である。
図3では、モータ制御装置30が、コントローラ20に対し、送信対象データを送信する場合の通信手順を示している。
図3に示すように、例えば、定周期通信の通信フェーズが訪れると、コントローラ20は、接続順が1番目のモータ制御装置30-1に対し、指令(
図1では「CMD#1」)を送信する。モータ制御装置30-1は、指令を受信して実行し、コントローラ20に対し、応答(
図1では「RSP#1」)を送信する。この点については、従来の通信手順と同様である。
【0052】
次に、コントローラ20は、モータ制御装置30-1に対応する仮想のスレーブ機器に対し、指令(
図1では「CMD#v1」)を送信する。この指令「CMD#v1」は、先述した指令「CMD#1」とは異なる。例えば、指令「CMD#1」は、モータ40の制御用の指令であり、指令「CMD#v1」は、送信対象データを送信させるための指令である。モータ制御装置30-1は、指令を受信して実行し、コントローラ20に対し、仮想のスレーブ機器としての応答(
図1では「RSP#v2」)を送信する。この応答には、送信対象データが分割された個々のデータが含まれている。以降の通信手順については、
図2と同様である。
【0053】
例えば、送信対象データのデータサイズを8キロバイトとし、定周期通信における通信領域を32バイトとすると、1台のモータ制御装置30の送信対象データを送信するのに、256回かかる。各周期の時間Tが125μsであったとすると、1台のモータ制御装置30の送信対象データを送信するのに32msかかる。
【0054】
定周期通信で送受信される個々のデータのサイズは小さいが、定周期通信では、コントローラ20は、全てのモータ制御装置30がコントローラ20と通信する。このため、30台のモータ制御装置30が接続されていたとしても(nの値が30であったとしても)、30台の全てに仮想のスレーブ機器としての通信領域を設定できるのであれば、全てのモータ制御装置30の送信対象データを送信するのに32msで済む。即ち、同じデータサイズの送信対象データだったとしても、非定周期通信の通信領域を利用する場合よりも短い時間で済む。更に、定周期通信は、コントローラ20が全てのモータ制御装置30と通信し、個々のモータ制御装置30専用の通信領域が確保されている。このため、送信対象データを送信する時間が保証され、送信対象データをタイムリーに読み出すことができる。
【0055】
以上のように、本実施形態では、モータ制御装置30の送信対象データを、仮想のスレーブ機器としての通信領域を利用して送信することによって、データの送信に要する時間を短縮し、かつ、その時間を保証するようにしている。以降、生産システム1の詳細を説明する。
【0056】
[3.生産システムで実現される機能]
図4は、生産システム1で実現される機能を示す機能ブロック図である。ここでは、コントローラ20及びモータ制御装置30の各々において実現される機能について説明する。
【0057】
[3-1.コントローラにおいて実現される機能]
図4に示すように、コントローラ20では、データ記憶部200、動作制御部201、送信部202、及び受信部203が実現される。データ記憶部200は、記憶部22を主として実現され、動作制御部201、送信部202、及び受信部203は、CPU21を主として実現される。
【0058】
[データ記憶部]
データ記憶部200は、モータ制御装置30を制御するために必要なデータを記憶する。例えば、データ記憶部200は、モータ制御装置30に対する指令内容(モータ制御装置30の動作内容)が記述された制御プログラムと、モータ制御装置30に記憶されるパラメータと、を記憶する。
【0059】
また例えば、データ記憶部200は、定周期通信をするために必要なデータを記憶する。このデータは、各周期の時間T、現在の時間を示すタイマなどの情報、及び1周期内における各通信フェーズで送受信されるデータフォーマットの情報などである。
図2を参照して説明した通信手順が制御プログラムに記述されている場合、制御プログラムも定周期通信をするために必要なデータの一例である。なお、通信手順は、他のプログラムに記述されていてもよい。
【0060】
図5は、定周期通信の通信フェーズで送受信されるデータのデータフォーマットを示す図である。
図5では、コントローラ20が送信する指令のデータフォーマットと、モータ制御装置30が送信する応答のデータフォーマットと、の各々を示している。本実施形態では、指令のデータサイズと、応答のデータサイズと、が同じである場合を説明するが、これらのデータサイズは異なってもよい。
【0061】
以降、
図5に示すデータフォーマットにより規定される32バイトのデータ領域を、定周期領域と記載する。指令の32バイトのデータ領域は定周期領域の一例であり、応答の32バイトのデータ領域も定周期領域の一例である。定周期領域は、定周期通信用の通信領域である。例えば、通信領域は、送受信されるデータの単位(データ領域)である。いわゆるパケット又はフレームは、通信領域の一例である。本実施形態では、定周期領域のデータサイズが固定されているものとするが、定周期領域のデータサイズは可変であってもよい。なお、通信領域は、データの単位ではなく、通信が行われる期間(データが送受信される期間)を意味してもよい。例えば、
図2に示す定周期通信の通信フェーズの期間を定周期領域と呼んでもよい。
【0062】
本実施形態では、モータ制御装置30ごとに定周期領域が定められている。
図2の例であれば、定周期通信の通信フェーズにおいて、各モータ制御装置30がコントローラ20と1回ずつ通信し、
図5に示す32バイトのデータを送受信する。このため、1周期内には、モータ制御装置30用の定周期領域が1つずつ存在する。
【0063】
図5に示すように、指令のデータフォーマットは、32バイトの定周期領域が10個に区切られており、個々の領域に指令の内容が格納される。例えば、指令の内容は、データ記憶部200に記憶された制御プログラムに記述されている。指令の内容は、モータ制御装置30の動作に関する任意の内容であってよく、例えば、モータ40の方向及び速度に関する内容、モータ40を動作させずに待機するか否か、又は、モータ制御装置30が取得すべきデータの種類などである。
【0064】
図5のデータ格納例では、最初の1バイト(
図5では0バイト目)に指令1が格納され、次の1バイト(
図5では1バイト目)に指令2が格納される。その次の2バイト(
図5では2バイト目~3バイト目)に指令3が格納され、それ以降は、4バイトずつに区切られたデータ領域に指令4~10が格納される。なお、指令の定周期領域は、任意の目的で利用可能なデータ領域(後述する未指定領域に相当する領域)が存在してもよい。
【0065】
また例えば、応答のデータフォーマットは、32バイトの定周期領域が10個に区切られており、個々の領域に応答の内容が格納される。応答の内容は、コントローラ20が送信した指令に応じた内容となる。例えば、応答の内容は、センサ50が検出した物理量、センサ50により撮影された画像データ若しくは動画データ、又はモータ制御装置30の内部情報などである。
【0066】
例えば、物理量は、モータエンコーダにより検出されるモータ40の位置情報(例えば、回転数又は回転角)、トルクセンサにより検出されるトルク値、又は温度センサにより検出される温度情報である。また例えば、画像データ又は動画データは、カメラ(ビジョンセンサ)により撮影された画像のデータである。画像データ又は動画データには、ワークの状態、モータ制御装置30の状態、又はモータ制御装置30の周辺機器(例えば、他のモータ制御装置30又は搬送機器など)が示される。また例えば、モータ制御装置30の内部情報は、CPU31の負荷率、記憶部32の使用状況、又は通信部33の使用状況である。
【0067】
図5のデータ格納例では、最初の1バイト(
図5では0バイト目)に応答1が格納され、次の1バイト(
図5では1バイト目)に応答2が格納される。その次の2バイト(
図5では3バイト目~4バイト目)に応答3が格納され、それ以降は、4バイトずつに区切られたデータ領域に応答4~7が格納される。これら応答1~7は、一度に送信が可能な内容である。例えば、応答1~7の各々は、上記説明した物理量や内部情報などの瞬時値である。瞬時値は、時系列的な変化ではなく、ある一時点における値である。
図5の20バイト目(応答8~10)は、指令に対して設ける応答領域であるが、サーボ制御の設定に応じて物理量や内部情報を適宜指定可能な未指定の領域となっている。以降、応答8~10を区別しないときは、未指定領域と記載する。
【0068】
未指定領域は、任意の種類のデータを格納可能な領域である。別の言い方をすれば、未指定領域は、用途が固定されておらず、格納されるデータの種類が動的に変わる領域である。例えば、未指定領域には、コントローラ20が指定した種類のデータが格納される。コントローラ20がトルク値を指定すると、未指定領域には、トルクセンサにより検出されたトルク値が格納される。また例えば、コントローラ20が画像データを指定すると、未指定領域には、カメラにより生成された画像データが格納される。個々の未指定領域には収まりきらないデータ(4バイトよりも大きいデータ)が指定されることもあるので、この場合には、データが4バイトずつ細切れに分割され、個々のデータが未指定領域に格納される。
【0069】
本実施形態では、モータ制御装置30は、複数のスレーブ機器とみなされ、実在のモータ制御装置30に対応する定周期領域と、仮想のモータ制御装置30に対応する定周期領域と、が存在する。これらの定周期領域が互いに同じデータフォーマットである場合を説明するが、互いに異なるデータフォーマットであってもよく、全体のデータサイズや個々の領域の区切り方が異なってもよい。例えば、実在のモータ制御装置30に対応する定周期領域には、モータ制御装置30及びモータ40を制御するための指令と応答が格納される。また例えば、仮想のモータ制御装置30に対応する定周期領域には、送信対象データを送受信するための指令と応答が格納される。
【0070】
以上の通り、定周期通信の通信フェーズでは、定周期領域を利用してデータが送受信される。一方、本実施形態では、非定周期通信の通信フェーズにおいて送受信されるデータを格納するためのデータ領域を、非定周期領域と記載する。非定周期領域は、非定周期通信用の通信領域である。本実施形態では、非定周期領域のデータサイズが可変であるものとするが、非定周期領域のデータサイズは固定されていてもよい。なお、通信領域がデータの単位ではなく、通信が行われる期間を意味する場合、
図2に示す非定周期通信の通信フェーズの期間を非定周期領域と呼んでもよい。
【0071】
例えば、特定のモータ制御装置30だけがコントローラ20と非定周期通信をする場合、このモータ制御装置30にだけ非定周期領域が存在することになる。
図2の例における1回目の非定周期通信の通信フェーズであれば、コントローラ20とモータ制御装置30-nとが通信するので、モータ制御装置30-nの非定周期領域だけが存在することになる。
図2の例では、1周期内には、定周期領域と、非定周期領域と、が存在しているが、非定周期領域が存在しない周期があってもよい。
【0072】
なお、データ記憶部200が記憶するデータは、上記の例に限られない。例えば、データ記憶部200は、コントローラ20の制御対象となるモータ制御装置30に関する基本情報(例えば、装置名及びIPアドレス)を記憶してもよい。また例えば、データ記憶部200は、モータ制御装置30に対応する仮想スレーブに関する基本情報(例えば、装置名及びIPアドレス)を記憶してもよい。また例えば、データ記憶部200は、モータ制御装置30から受信したトレースデータ及び一次解析データを記憶してもよい。また例えば、データ記憶部200は、コントローラ20に直接的に接続されたセンサにより検出された物理量を記憶してもよい。
【0073】
[動作制御部]
動作制御部201は、データ記憶部200に記憶された制御プログラムを実行し、モータ制御装置30を制御する。例えば、制御プログラムには、モータ制御装置30に対する指令の内容が時系列的に記述されており、動作制御部201は、モータ制御装置30に対し、制御プログラムに記述された指令の内容を特定する。動作制御部201は、特定した指定の内容を含むデータ(
図5の32バイトのデータ)を生成する。このデータは、後述する送信部202により送信される。なお、
図5では省略しているが、このデータには、ヘッダ部が存在し、送信先のモータ制御装置30のIPアドレス等の対象を識別するためのアドレス情報が格納されているものとする。
【0074】
本実施形態では、モータ制御装置30が複数の種類のデータを取得可能であり、動作制御部201は、当該複数の種類のうちの少なくとも1つを指定する。データの種類とは、データが示す内容である。例えば、モータ制御装置30が、モータエンコーダにより検出された位置情報、トルクセンサにより検出されたトルク値、及び温度センサにより検出された温度情報を取得可能なのであれば、データの種類は3種類となる。これらのデータは、応答となりうるデータであり、例えば、未指定領域に格納されるデータである。動作制御部201により指定される種類は、コントローラ20の取得対象となる種類である。どの種類が指定されるかは、制御プログラムに定められていてもよいし、他のプログラムに定められていてもよい。
【0075】
例えば、モータ制御装置30で発生したアラームに応じた種類のデータが取得される場合には、動作制御部201は、発生したアラームに応じたデータの種類を指定する。この場合、アラームコードと、取得すべきデータの種類と、の関係がデータ記憶部200に記憶されているものとする。この関係は、任意のデータ形式で定義されてよく、例えば、テーブル形式又は数式形式であってもよいし、プログラムコードの一部として記述されていてもよい。動作制御部201は、モータ制御装置30から発生したアラームのアラームコードを受信した場合に、この関係を参照し、アラームコードに応じたデータの種類を指定する。
【0076】
本実施形態では、定周期領域は、送信対象データの一部を格納可能な複数の領域を有し、動作制御部201は、複数の領域のうちの少なくとも1つを指定する。送信対象データの一部とは、送信対象データを複数に分割した個々のデータである。送信対象データの一部を格納可能な領域とは、定周期領域の一部の領域である。これら複数の領域の各々は、データサイズが同じであってもよいし、異なっていてもよい。本実施形態では、
図5に示すデータフォーマットにおける未指定領域が、送信対象データの一部を格納可能な領域に相当する。このため、本実施形態で未指定領域と記載した箇所は、送信対象データの一部を格納可能な領域と読み替えることができる。なお、動作制御部201が指定する領域は、未指定領域以外の他の名称で呼ばれる領域であってもよい。例えば、動作制御部201は、定周期領域のうちの何バイト目から何バイト目までを利用するかを指定する。
【0077】
本実施形態では、コントローラ20は、1周期内で複数の通信相手と通信可能であり、1周期内には、通信相手ごとに定周期領域がある。通信相手は、コントローラ20と通信する装置である。例えば、コントローラ20が送信するデータの送信先は、通信相手である。また例えば、コントローラ20が受信するデータの送信元は、通信相手である。本実施形態では、コントローラ20が各通信相手と通信する順番が予め定められているものとするが、この順番は特に定められていなくてもよい。各通信相手の定周期領域の数は、互いに同じであってもよいし、異なってもよい。通信相手は、少なくとも1つの定周期領域を有する。
【0078】
[送信部]
送信部202は、モータ制御装置30に対し、任意のデータを送信する。例えば、送信部202は、モータ制御装置30に対し、動作制御部201によって生成された指令の内容を示すデータを送信する。送信部202は、モータ制御装置30に対し、動作制御部201により指定された種類の識別情報を含むデータを送信する。送信部202は、モータ制御装置30に対し、動作制御部201により指定された領域の識別情報を含むデータを送信する。定周期通信の通信フェーズでは、送信部202は、定周期領域にデータを格納し、モータ制御装置30に送信する。非定周期通信の通信フェーズでは、送信部202は、非定周期領域にデータを格納し、モータ制御装置30に送信する。
【0079】
[受信部]
受信部203は、モータ制御装置30から、任意のデータを受信する。例えば、受信部203は、モータ制御装置30から、後述する動作制御部301によって生成された応答の内容を示すデータを送信する。受信部203は、モータ制御装置30から、動作制御部201により指定された種類のデータを受信する。受信部203は、モータ制御装置30から、動作制御部201により指定された領域に格納された送信対象データを受信する。定周期通信の通信フェーズでは、受信部203は、モータ制御装置30から、定周期領域に格納されたデータを受信する。非定周期通信の通信フェーズでは、受信部203は、モータ制御装置30から、非定周期領域に格納されたデータを受信する。
【0080】
[3-2.モータ制御装置において実現される機能]
図4に示すように、モータ制御装置30では、データ記憶部300、動作制御部301、送信部302、及び受信部303が実現される。データ記憶部300は、記憶部32を主として実現される。動作制御部301、送信部302、及び受信部303は、CPU31を主として実現される。
【0081】
[データ記憶部]
データ記憶部300は、モータ40を制御するために必要なデータを記憶する。例えば、データ記憶部300は、モータ40の制御プログラムと、コントローラ20から受信したパラメータと、を記憶する。この制御プログラムには、指令の内容と、モータ制御装置30が行うべき動作の内容(例えば、モータ40に対する出力)と、の関係が記述されている。また例えば、データ記憶部300は、定周期通信を行うために必要なデータとして、現在の時間を示すタイマなどの情報と、1周期内における各通信フェーズで送受信されるデータフォーマットの情報と、を記憶する。また例えば、データ記憶部300は、トレースデータ及び一次解析データを含む送信対象データを記憶する。トレースデータ及び一次解析データが生成中である場合には、データ記憶部300は、これらの生成途中のデータを記憶する。
【0082】
図6は、トレースデータ及び一次解析データの内容を示す図である。
図6では、トレースデータの内容を破線で示し、一次解析データの内容を実線で示している。例えば、トレースデータには、センサ50により検出されたモータ40の状態を示す物理量が時系列的に示されている。
図6のグラフの横軸は時間軸であり、縦軸は物理量を示す。また例えば、一次解析データには、トレースデータに含まれる物理量に所定の演算が施された演算結果が示されている。
図6の例では、一次解析されたデータが示されている。例えば、解析値についての閾値(
図6では点線)が設定されている場合、閾値以上になった時間が一次解析データに含まれていてもよい。なお、一次解析データは、時系列的な情報ではなくてもよい。
【0083】
図7は、送信対象データの全体構成を示す図である。
図7に示すように、送信対象データは、ヘッダ部、トレースデータ、及び一次解析データを含む。トレースデータと一次解析データの順序は入れ替えてもよい。送信対象データは、所定のデータ長ごとに分割され、分割された個々のデータごとに送信される。例えば、
図5に示すデータフォーマットのうちの「応答8」を利用して送信対象データを送信する場合、「応答8」は4バイトなので、送信対象データは、4バイトずつ送信される。
【0084】
なお、データ記憶部300が記憶するデータは、上記の例に限られない。例えば、データ記憶部300は、コントローラ20に関する基本情報(例えば、装置名及びIPアドレス)を記憶してもよい。また例えば、データ記憶部300は、生成中のトレースデータ及び一次解析データを記憶してもよいし、完成した送信対象データを記憶してもよい。送信が完了した送信対象データは、データ記憶部300から消去されてもよいし、データ記憶部300に残ってもよい。
【0085】
[動作制御部]
動作制御部301は、コントローラ20からの指令に基づいて、モータ40の動作を制御する。動作制御部301は、制御プログラムに基づいて、指令に応じた動作を行う。例えば、動作制御部301は、指令に応じた方向及び速度で回転又は移動するように、モータ40に対する電力を制御する。動作制御部301は、センサ50により検出された物理量を含む応答を生成する。動作制御部301は、センサ50により検出された物理量を時系列的に格納したトレースデータを生成する。動作制御部301は、トレースデータに対して所定の演算処理を施し、一次解析データを生成する。動作制御部301は、トレースデータ及び一次解析データに対し、ヘッダ部を付与して送信対象データを生成する。ヘッダ部には、コントローラ20のIPアドレスなどの情報が含まれる。
【0086】
[送信部]
送信部302は、コントローラ20に対し、任意のデータを送信する。送信部302は、1周期内における複数の定周期領域の各々を利用して、コントローラ20に、自身に関するデータを送信する。
【0087】
1周期内における複数の定周期領域とは、1周期内に含まれる複数の定周期領域である。本実施形態では、全てのモータ制御装置30が複数の定周期領域を有する場合を説明するが、1つの定周期領域しか有しないモータ制御装置30が存在してもよい。例えば、1台のモータ制御装置30が、定周期通信を利用して、
図5のデータフォーマットのデータを複数個送信することは、1周期内に複数の定周期領域が存在することに相当する。定周期領域がデータ領域ではなく期間を意味する場合には、1台のモータ制御装置30が、1周期内における複数の期間の各々で、
図5のデータフォーマットのデータを送信することは、1周期内に複数の定周期領域が存在することに相当する。
【0088】
定周期領域を利用するとは、定周期領域の一部又は全部にデータを格納することである。定周期領域がデータ領域ではなく期間を意味する場合には、定周期領域のうちの一部又は全部の期間においてデータを送信することは、定周期領域を利用することに相当する。自身とは、送信部302を含むモータ制御装置30である。
図7に示す送信対象データは、自身に関するデータの一例である。このため、本実施形態で送信対象データと記載した箇所は、自身に関するデータと読み替えることができる。
【0089】
なお、自身に関するデータは、送信対象データに限られず、モータ制御装置30が生成可能又は取得可能なデータであればよい。例えば、自身に関するデータは、モータ制御装置30により生成されたトレースデータ、モータ制御装置30により解析された解析データ、又はモータ制御装置30に接続された機器に関する機器データである。トレースデータと一次解析データのペアが送信対象データに相当するのではなく、これらの一方だけが送信対象データに相当してもよい。機器データは、機器に関する任意の情報であればよく、例えば、機器の名称、型番、シリアル番号、機器の設定情報(ファームウェア又はパラメータなど)である。モータ制御装置30に記憶されたプログラム及びパラメータ、モータ制御装置30の名称、型番、又はシリアル番号が自身に関するデータに相当してもよい。
【0090】
なお、1台のモータ制御装置30に対応する一の定周期領域に格納されるデータと、他の定周期領域に格納されるデータと、は同じであってもよいし異なってもよい。これらのデータがモータ制御装置30に関するデータであればよい。例えば、実際のモータ制御装置30に対応する定周期領域に制御用のデータが格納され、仮想のモータ制御装置30に対応する定周期領域にトレースデータの一部又は全部が格納されてもよい。また例えば、実際のモータ制御装置30に対応する定周期領域に制御用のデータとトレースデータの一部が格納され、仮想のモータ制御装置30に対応する定周期領域にトレースデータの一部が格納されてもよい。
【0091】
本実施形態では、送信部302は、モータ制御装置30の定周期領域と、モータ制御装置30に対応する仮想的なモータ制御装置30の定周期領域と、を含む複数の定周期領域の各々を利用する。仮想的なモータ制御装置30は、実在しないモータ制御装置30である。コントローラ20から見ると、実在するモータ制御装置30と、当該モータ制御装置30に対応する仮想的なモータ制御装置30と、が存在する。仮想的なモータ制御装置30は、仮想マシン技術を利用して実現すればよい。例えば、1台のモータ制御装置30に対し、実在するモータ制御装置30用のIPアドレス(あるいは対象を識別するための別のアドレス情報)と、仮想的なモータ制御装置30用のIPアドレスと、が割り当てられる。また例えば、1台のモータ制御装置30に割り当てられたIPアドレスが1つだけであってもよく、この場合には、実在するモータ制御装置30用の装置名と、仮想的なモータ制御装置30用の装置名と、が割り当てられる。
【0092】
なお、送信部302は、送信対象データの送信を1周期で完了させてもよいし、1つの送信対象データを、複数の定周期領域に分けて送信してもよい。複数の周期に分けて送信するとは、複数の周期を利用して送信対象データを送信することである。別の言い方をすれば、複数の周期にまたがって送信対象データを送信することは、複数の周期に分けて送信することに相当する。送信部302は、ある周期において、送信対象データの一部分を送信し、他の周期において、送信対象データの残りの部分を送信する。例えば、送信部302は、送信対象データを複数に分割し、各周期において、分割された個々のデータを送信する。
【0093】
送信部302は、データを格納する領域のデータサイズに基づいて、送信対象データを分割する。例えば、仮想のモータ制御装置30に対応する定周期領域の全部を利用して送信対象データを送信する場合、
図5に示すデータフォーマットは32バイトなので、送信部302は、送信対象データを32バイトずつに分割する。この場合、送信部302は、1周期で1つの分割データを送信する。なお、送信部302は、定周期領域のうちの一部の領域を利用して、送信対象データを送信してもよい。この場合には、当該一部の領域のデータサイズに応じて送信対象データが分割されるようにすればよい。
【0094】
送信部302は、送信対象データの生成が完了した後の任意のタイミングで、定周期領域を利用して、送信対象データを送信する。例えば、送信対象データの生成が完了した後に、コントローラ20とモータ制御装置30との間でハンドシェイクが実行され、送信部302は、ハンドシェイクの実行後に、定周期領域を利用して、送信対象データを送信する。送信対象データは、他のタイミングで送信されてもよく、例えば、コントローラ20から所定の指令を受信したタイミング、又は、所定の時間が訪れたタイミングで送信されてもよい。
【0095】
本実施形態では、コントローラ20とモータ制御装置30との間では、1周期内において少なくとも1回、複数の定周期領域のうちの少なくとも1つを利用して、制御用のデータが送受信される。制御用のデータとは、モータ制御装置30の制御に直接的に係るデータである。例えば、モータ40の方向及び速度に関する指令は、制御用のデータの一例である。
図2の通信手順であれば、1周期内において、1台のモータ制御装置30あたり1回ずつ定周期領域を利用して、制御用のデータが送受信される。なお、ここでの送受信とは、コントローラ20が制御用のデータを送信し、モータ制御装置30がそれを受信することである。コントローラ20とモータ制御装置30との間では、制御用のデータの送受信と、トレースデータ及び一次解析データを含む送信対象データの送受信と、が並行して行われることになる。
【0096】
本実施形態では、コントローラ20は、1周期内において、複数のモータ制御装置30の各々と順番に通信し、複数のモータ制御装置30の各々の送信部302は、自身の順番が訪れた場合に、自身に応じた数の定周期領域を利用して、自身に関するデータを送信する。先述した通り、モータ制御装置30との通信順は、制御プログラム等のプログラムに記述されているものとする。自身に対応する定周期領域とは、送信部302を含むモータ制御装置30が定周期通信でデータを送信する際に利用する定周期領域である。
【0097】
例えば、送信部302は、複数の定周期領域の各々を利用して、複数の種類のデータを送信する。本実施形態では、動作制御部201により、送信対象データに含まれるデータの種類が指定されるので、送信部302は、コントローラ20に、指定された種類のデータを送信する。動作制御部201により指定されなかった種類のデータについては、コントローラ20に送信されない。例えば、送信部302は、ある定周期領域を利用して、ある種類のデータを送信し、他の定周期領域を利用して、他の種類のデータを送信する。また例えば、送信部302は、複数の定周期領域の各々に、複数の種類の各々のデータを混合して送信する。
【0098】
また、本実施形態では、動作制御部201により、送信対象データが分割された個々のデータが格納される領域が指定されるので、送信部302は、指定された少なくとも1つの領域を利用して、コントローラ20にデータを送信する。動作制御部201により指定されなかった領域は、送信対象データの送信で利用されない。
【0099】
[受信部]
受信部303は、コントローラ20から、任意のデータを受信する。例えば、受信部303は、コントローラ20から、動作制御部201によって生成された指令の内容を示すデータを送信する。受信部303は、コントローラ20から、動作制御部201により指定された種類の識別情報を含むデータを受信する。受信部303は、コントローラ20から、動作制御部201により指定された領域の識別情報を含むデータを受信する。定周期通信の通信フェーズでは、受信部303は、コントローラ20から、定周期領域に格納されたデータを受信する。非定周期通信の通信フェーズでは、受信部303は、コントローラ20から、非定周期領域に格納されたデータを受信する。
【0100】
[4.生産システムで実行される処理]
図8は、生産システム1で送信対象データが送受信される様子を示すフロー図である。
図8に示す処理は、CPU21,31がそれぞれ記憶部22,32に記憶されたプログラムに従って動作することによって実行される。以降説明する処理は、
図4に示す機能ブロックにより実行される処理の一例である。なお、
図8では、1台のモータ制御装置30だけを示しているが、複数のモータ制御装置30の各々で同様の処理が実行される。また、
図8では、モータ制御装置30がモータ40を制御する処理については省略する。
【0101】
図8に示すように、まず、コントローラ20は、モータ制御装置30に対し、トレース開始の指令を送信する(S1)。トレース開始の指令は、予め定められた形式のデータであり、例えば、トレース対象となるデータの種類の識別情報が含まれる。S1においては、コントローラ20は、制御プログラムを実行してトレース対象となるデータの種類を決定し、当該決定された種類の識別情報を含む指令を送信する。なお、トレース開始のトリガやトレース時間などの条件が設定される場合には、S1において送信される指令にこれらの条件が含まれているものとする。これらの条件は、記憶部22に記憶されているものとする。
【0102】
モータ制御装置30は、トレース開始の指令を受信すると、所定のトリガを検出したか否かを判定する(S2)。トリガは、トレース開始の条件である。任意のトリガを設定可能であり、例えば、アラームが発生すること、センサ50により検出された物理量が所定値になること、又は現在の時間が所定の時間になることである。トリガは、予め定められていてもよいし、S1において送信される指令に含まれていてもよい。S2においては、モータ制御装置30は、センサ50の検出信号又は記憶部32に記憶されたタイマに基づいて、トリガを検出したか否かを判定する。
【0103】
トリガが検出された場合(S2;Y)、モータ制御装置30は、センサ50の検出信号に基づいて、トレース開始の指令に含まれる種類のデータをトレースする(S3)。S3においては、モータ制御装置30は、センサ50により検出された物理量を、時系列的にトレースデータに格納する。例えば、モータ制御装置30は、センサ50により検出された物理量を、現在の時間と関連付けてトレースデータに格納する。
【0104】
モータ制御装置30は、トレースを完了したか否かを判定する(S4)。トレース完了の条件は、任意の条件であってよく、例えば、トレース開始から一定時間が経過すること、アラームが停止すること、センサ50により検出された物理量が所定値になること、又はトレースデータのサイズが所定値になることである。S4においては、モータ制御装置30は、記憶部32に記憶されたタイマ、センサ50の検出信号、又はトレースデータのサイズに基づいて、トレースが完了したか否かを判定する。
【0105】
トレースが完了したと判定されない場合(S4;N)、S3の処理に戻り、トレースが継続される。一方、トレースが完了したと判定された場合(S4;Y)、モータ制御装置30は、トレースデータの一次解析を実行する(S5)。一次解析は、トレースデータに応じた解析が行われるようにすればよい。一時解析のためのプログラムは、記憶部32に予め記憶されているものとする。S5においては、モータ制御装置30は、当該プログラムを実行し、トレースデータの一次解析を実行する。モータ制御装置30は、一時解析の実行結果に基づいて、一時解析データを生成して記憶部32に記録する。モータ制御装置30は、トレースデータと一時解析データにヘッダ部を付与し、送信対象データを生成する。
【0106】
モータ制御装置30は、コントローラ20に対し、ハンドシェイクを要求する(S6)。ハンドシェイクの要求は、予め定められた形式のデータが送信されることによって行われる。コントローラ20は、ハンドシェイクの要求を受信すると、モータ制御装置30とハンドシェイクをしてデータの受信準備をする(S7)。S7においては、モータ制御装置30は、通信プロトコルに定められた手順に沿ってハンドシェイクを実行すればよい。
【0107】
モータ制御装置30は、コントローラ20に対し、送信対象データの送信を開始する(S8)。例えば、ハンドシェイクが完了すると、コントローラ20は、モータ制御装置30に対し、送信対象データを要求する旨の指令を送信する。モータ制御装置30は、仮想のモータ制御装置30に対応する定周期領域のバイト数(
図5のデータフォーマットの場合には32バイト)ごとに送信対象データを分割する。モータ制御装置30は、仮想のモータ制御装置30に対応する定周期領域に分割したデータ部分を格納する。なお、仮想のモータ制御装置30に対応する定周期領域の一部だけを送信対象データの送信で利用する場合には、モータ制御装置30は、当該定周期領域のうち、他の部分に制御用のデータを格納してもよい。
【0108】
モータ制御装置30は、送信対象データの送信が完了したか否かを判定する(S9)。S9においては、モータ制御装置30は、送信対象データの最後のデータ部分までの送信が完了したか否かを判定する。
【0109】
送信対象データの送信が完了したと判定されない場合(S9;N)、モータ制御装置30は、送信対象データの送信を継続し(S10)、S9の処理に戻る。S10においては、周期が訪れるたびに、コントローラ20は、実在のモータ制御装置30に対し、制御用の指令を送信する。実在のモータ制御装置30は、制御用の指令を受信して実行し、コントローラ20に対し、制御用の応答を送信する。また、コントローラ20は、仮想のモータ制御装置30に対し、送信対象データを送信するための指令を送信する。仮想のモータ制御装置30は、指令を受信して実行し、コントローラ20に対し、送信対象データが分割された個々のデータを、定周期領域のうちの指定された領域に格納して送信する。以降、送信対象データの送信が完了するまで、定周期通信領域を利用した指令の実行とデータ送信が継続される。
【0110】
一方、送信対象データの送信が完了したと判定された場合(S9;Y)、モータ制御装置30は、所定の完了処理を実行し、コントローラ20に対し、データ送信の完了通知を送信する(S11)。完了処理は、予め定められた形式のデータが送信されることによって行われる。例えば、送信対象データの末尾であることを示す文字列が送信されることによってなされる。
【0111】
コントローラ20は、完了通知を受信すると、それまでに受信したデータに基づいてファイルを作成し(S12)、本処理は終了する。S12においては、コントローラ20は、モータ制御装置30から受信した個々のデータを1つにまとめて、ファイルとして記憶部22に記録する。コントローラ20は、データ収集装置10に対し、記憶部22に記録されたファイルを送信してもよい。データ収集装置10は、ファイルを受信して記憶部12に記録する。データ収集装置10は、記憶部12に記録されたファイルを解析してもよいし、ファイルに含まれる一次解析データに基づいて、コントローラ20に対して制御内容の修正や障害復旧を指示してもよい。
【0112】
本実施形態の生産システム1によれば、1周期内における複数の定周期領域の各々を利用して、コントローラ20に、送信対象データを送信することにより、送信対象データの送信に要する時間を保証できる。例えば、非定周期領域を利用して送信対象データを送信することも可能であるが、非定周期領域は、他の産業装置の通信で利用されたり、他のデータの送信に利用されたりすることがあるので、送信対象データの送信に要する時間が不安定になることがある。この点、定周期領域は、モータ制御装置30のために用意された専用の通信領域なので、送信対象データの送信に要する時間を安定させることができる。その結果、送信対象データの送信に要する時間を短くすることもできる。
【0113】
また、コントローラ20とモータ制御装置30との間では、各周期に少なくとも1回、複数の定周期領域の少なくとも1つを利用して、制御用のデータが送受信されることにより、制御用のデータを送受信しつつ、送信対象データも送信し、定周期領域を有効活用できる。例えば、定周期領域の全てを送信対象データの送信で利用すると、制御用のデータを送信できなくなり、動作に支障が出る可能性があるが、各周期に少なくとも1回は制御用のデータを送信し、動作に支障が出ることを防止できる。
【0114】
また、生産システム1は、モータ制御装置30の定周期領域と、モータ制御装置30に対応する仮想的な産業装置の定周期領域と、を含む複数の定周期領域の各々を利用することによって、送信対象データの送信に要する時間を保証できる。例えば、1周期内において、装置ごとに1つの定周期領域が割り当てるといった規則が定められていたとすると、仮想的な産業装置の定周期領域とすることで、規則を変更することなく、モータ制御装置30に対して実質的に複数の定周期領域を割り当てることができる。
【0115】
また、生産システム1は、複数のモータ制御装置30の各々が、自身の通信順が訪れた場合に、自身に対応する定周期領域を利用して、自身の送信対象データを送信することにより、生産システム1が複数のモータ制御装置30を有する場合であったとしても、送信対象データを送信する時間を保証できる。1周期内には、個々のモータ制御装置30に応じた数の定周期領域が存在するので、モータ制御装置30に応じた通信を実現できる。例えば、比較的サイズが大きいデータを送信するモータ制御装置30については、定周期領域を多く割り当ててデータの送信を効率化することができる。
【0116】
また、生産システム1は、複数の定周期領域の各々を利用して、複数の種類のデータを送信することにより、多様なデータを送信できる。
【0117】
また、生産システム1は、1つのデータを複数の定周期領域に分けて送信することにより、1つの定周期領域では収まりきらない送信対象データであったとしても、送信に要する時間を保証できる。また、複数の定周期領域を利用することで、送信対象データの送信に要する時間を短縮できる。
【0118】
また、生産システム1は、送信対象データとして、トレースデータ、一次解析データ、又は機器データが送信されるので、これらのデータの送信に要する時間を保証できる。
【0119】
また、生産システム1は、コントローラ20がマスタ機器に相当し、モータ制御装置30がスレーブ機器に相当するので、スレーブ機器からマスタ機器に送信されるデータの送信に要する時間を保証できる。
【0120】
[5.変形例]
なお、本開示は、以上に説明した実施の形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
【0121】
図9は、変形例の機能ブロック図である。
図9に示すように、以降説明する変形例では、コントローラ20において、結合部204、上限数設定部205、周期設定部206、及び決定部207が実現される。これらの機能は、CPU21を主として実現される。
【0122】
(1)例えば、実施形態で説明したように、送信対象データが、仮想のモータ制御装置30に対応する定周期領域に収まらない場合、複数の定周期領域に分けられて送信される。複数の定周期領域は、1周期内に存在してもよいし、複数の周期にまたがって存在してもよい。例えば、1台のモータ制御装置30に複数台の仮想のモータ制御装置30が存在するとみなす場合(即ち、1台のモータ制御装置30を複数台のスレーブ機器とみなす場合)には、当該複数台の仮想のモータ制御装置30にそれぞれ対応する複数の定周期領域に分けられて、送信対象データが送信されてもよい。この場合、複数の定周期領域の各々に分けられたデータ部分には、識別情報が付与されてもよい。
【0123】
識別情報は、送信対象データを識別可能な情報であればよく、例えば、送信対象データの名称などの文字列によって示される。コントローラ20は、識別情報に基づいて、どの送信対象データの分割データなのかを特定し、分割データを結合してもよい。識別情報は、コントローラ20により生成されてもよいし、モータ制御装置30により生成されてもよい。
【0124】
結合部204は、識別情報に基づいて、複数の定周期領域の各々を利用して受信したデータ部分を結合する。送信対象データを構成する個々のデータ部分は、複数の定周期領域に分けて送信されるので、結合部204は、個々のデータ部分に付与された識別情報に基づいて、これらのデータ部分が同じ送信対象データの一部であると判定し、1つのファイルとしてまとめる。
【0125】
変形例(1)によれば、コントローラ20が、送信対象データの識別情報に基づいて、複数の定周期領域の各々を利用して受信した個々のデータを結合することにより、分割して受信した送信対象データを1つにまとめることができる。
【0126】
(2)また例えば、定周期領域が多くなると、1周期内で全てのモータ制御装置30との通信が完了しないことがある。このため、定周期領域の数に応じて、コントローラ20の通信相手の数に制限をかけてもよい。本変形例のコントローラ20は、上限数設定部205を有する。上限数設定部205は、送信部302が利用する定周期領域の数に基づいて、通信相手の上限数を設定する。
【0127】
送信部302が利用する定周期領域の数とは、1周期内に存在する定周期領域の数である。例えば、モータ制御装置30-1~30-nの全てが2台のスレーブ機器とみなされる場合には、送信部302が利用する定周期領域の数は、2nとなる。また例えば、モータ制御装置30-1だけが2台のスレーブ機器とみなされる場合には、送信部302が利用する定周期領域の数は、n+1となる。
【0128】
送信部302が利用する定周期領域の数と、通信相手の上限数と、の関係は、予めデータ記憶部200に記憶されているものとする。この関係は、数式形式又はテーブル形式のデータであってもよいし、プログラムコードの一部として記述されていてもよい。上限数設定部205は、送信部302が利用する定周期領域の数が多いほど、通信相手の上限数を少なく設定する。例えば、定周期領域1つあたりの予想される通信時間をtとすると、送信部302が利用する定周期領域の数にtを乗じた値が、
図2及び
図3に示す定周期通信の通信フェーズに定められた上限値を超えないように、通信相手の上限数が設定される。
【0129】
変形例(2)によれば、モータ制御装置30が利用する定周期領域の数に基づいて、コントローラ20の通信相手の上限数を設定することにより、通信相手との通信が周期内に終わらないといったことを防止できる。また、通信相手の上限数を設定することにより、1周期内の通信量が多くなりすぎることを防止し、通信負荷を軽減できる。
【0130】
(3)また例えば、変形例(2)では、送信部302が利用する定周期領域の数に応じて通信相手の数を制限したが、送信部302が利用する定周期領域の数に応じて周期の長さTが設定されるようにしてもよい。本変形例のコントローラ20は、周期設定部206を有する。周期設定部206は、送信部が利用する定周期領域の数に基づいて、周期の長さを設定する。
【0131】
送信部302が利用する定周期領域の数と、周期の長さTと、の関係は、予めデータ記憶部200に記憶されているものとする。この関係は、数式形式又はテーブル形式のデータであってもよいし、プログラムコードの一部として記述されていてもよい。周期設定部206は、送信部302が利用する定周期領域の数が多いほど、周期の長さTを長く設定する。例えば、定周期領域1つあたりの予想される通信時間をtとすると、送信部302が利用する定周期領域の数にtを乗じた以上となるように、周期の長さTが設定される。
【0132】
変形例(3)によれば、モータ制御装置30が利用する定周期領域の数に基づいて、周期の長さを設定することにより、コントローラ20が全ての通信相手と通信するために十分な長さの周期とすることができる。このため、コントローラ20と通信相手との通信が周期内に終わらないといったことを防止できる。
【0133】
(4)また例えば、1周期の長さTに収まるように、送信部302が利用する定周期領域の数が設定されてもよい。本変形例のコントローラ20は、決定部207を有する。決定部207は、定周期通信における周期の長さに基づいて、送信部302が利用する定周期領域の数を決定する。
【0134】
周期の長さTと、送信部302が利用する定周期領域の数と、の関係は、予めデータ記憶部200に記憶されているものとする。この関係は、数式形式又はテーブル形式のデータであってもよいし、プログラムコードの一部として記述されていてもよい。決定部207は、周期の長さTが長くなるほど、送信部302が利用する定周期領域の数を多くなるように、定周期領域の数を決定する。例えば、定周期領域1つあたりの予想される通信時間をtとすると、送信部302が利用する定周期領域の数にtを乗じた値が、周期の長さTを超えないように、定周期領域の数が決定される。
【0135】
変形例(4)によれば、定周期通信における周期の長さに基づいて、モータ制御装置30が利用する定周期領域の数を決定することにより、1周期内に収まらないほどの定周期領域が設定されることを防止できる。例えば、1周期内で可能な限り多くの定周期領域を利用した場合には、データの送信を効率化できる。
【0136】
(5)また例えば、上記変形例を組み合わせてもよい。
【0137】
また例えば、実施形態では、コントローラ20が、1台のモータ制御装置30を、実在のモータ制御装置30と仮想のモータ制御装置30とにみなす場合を説明したが、コントローラ20は、特に仮想のモータ制御装置30とはみなさなくてもよい。例えば、コントローラ20は、定周期通信の通信フェーズにおいて、1台のモータ制御装置30との間で、複数回の指令と応答を送受信してもよい。また例えば、コントローラ20は、全てのモータ制御装置30ではなく、特定のモータ制御装置30との間で、複数回の指令と応答を送受信してもよい。例えば、送信制御データの生成が完了したモータ制御装置30についてのみ、1周期内において複数の定周期領域が存在するようにしてもよい。この場合、コントローラ20は、
図8のS6におけるハンドシェイクの要求を受信したモータ制御装置30についてのみ、1周期内で複数回の定周期通信を行ってもよい。
【0138】
また例えば、モータ制御装置30がコントローラ20に送信するデータが、複数の定周期領域の各々を利用して送信される場合を説明したが、コントローラ20がモータ制御装置30に送信するデータが、複数の定周期領域の各々を利用して送信されてもよい。例えば、コントローラ20が、非定周期通信ではなく、複数の定周期領域の各々を利用して、パラメータなどのデータをモータ制御装置30に送信してもよい。即ち、スレーブ機器からマスタ機器にデータが送信される場面だけではなく、マスタ機器からスレーブ機器にデータが送信される場面についても、実施形態で説明した流れと同様にして、データが複数の定周期領域の各々に分けられて送信されてもよい。
【0139】
また例えば、コントローラ20とモータ制御装置30との間で、定周期通信が利用されて、送信対象データが複数の周期に分けられて送信される場合を説明したが、他の産業装置間で同様の通信が行われてもよい。モータ制御装置30とセンサ50との間で定周期通信が行われる場合、センサ50により生成された送信対象データが、複数の定周期領域の各々を利用してモータ制御装置30に送信されてもよい。他にも例えば、セルと呼ばれる単位を管理するセルコントローラとロボットコントローラとの間の通信に、上記と同様の通信を利用してもよいし、PLCと被制御装置との間の通信に、上記と同様の通信を利用してもよい。また例えば、産業用のネットワークを例に挙げたが、定周期通信が可能なネットワークであればよく、他のネットワークで上記と同様の通信が行われてもよい。
【0140】
また、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
【符号の説明】
【0141】
1 生産システム、10 データ収集装置、11,21,31 CPU、12,22,32 記憶部、13,23,33 通信部、20 コントローラ、30 モータ制御装置、40 モータ、50 センサ、200 データ記憶部、201 動作制御部、202 送信部、203 受信部、204 結合部、205 上限数設定部、206 周期設定部、207 決定部、300 データ記憶部、301 動作制御部、302 送信部、303 受信部。