(実施の形態1)
以下、図面を参照して本発明の実施の形態について説明する。
図1は、実施の形態1にかかるロボット制御システム1を示す図である。ロボット制御システム1は、ロボット10及び制御装置100を有する。制御装置100は、動作プログラムを用いてロボット10の動作を制御して、ロボット10を所望の位置に制御する。また、制御装置100は、ロボット10の異常を診断する異常診断装置としての機能を有する。詳しくは後述する。
ロボット10は、車両の製造ラインの近傍等に設置されている。ロボット10は、例えば、車両に対して溶接(例えばスポット溶接)等の予め定められた作業を行うためのロボットである。例えば、車両の製造時において、ロボット10は、エンドエフェクタ12に設けられた溶接ガン等を用いて溶接等を行う。また、ロボット10は、1つ以上の関節14と、その関節14を駆動するモータ(図示せず)及びモータの動力を関節14に伝達する減速機(図示せず)を有している。ロボット10は、制御装置100によりモータが制御されることで、所望の動作を行う。つまり、ロボット10は、関節14を駆動させて動作する関節駆動ロボットである。そして、制御装置100は、エンドエフェクタ12の先端部12aの位置が、動作プログラムにおける各工程において所望の位置(目標位置)となるように、ロボット10を制御する。つまり、本実施の形態において、ロボット10の制御対象は、先端部12aである。
制御装置100は、例えばコンピュータとしての機能を有する。制御装置100は、ロボット10の内部に搭載されてもよいし、ロボット10と有線又は無線を介して通信可能に接続されてもよい。制御装置100は、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、I/O(Input/Output)104及びUI(User Interface)105を有する。
CPU101は、制御処理及び演算処理等を行う処理デバイスとしての機能を有する。ROM102は、CPU101によって実行される制御プログラム及び演算プログラム等を記憶するための機能を有する。RAM103は、処理データ等を一時的に記憶するための機能を有する。I/O104は、入出力装置であり、外部からデータ及び信号を入力し、外部にデータ及び信号を出力する。UI105は、例えばキーボード等の入力デバイスと、例えばディスプレイ等の出力デバイスとから構成される。なお、UI105は、入力デバイスと出力デバイスとが一体となったタッチパネルとして構成されてもよい。ここで、ROM102は、ロボット10を制御するための動作プログラム(ティーチングデータ)を格納できるように構成されている。
ここで、本実施の形態においては、ロボット10の制御対象の実際位置は、制御装置100の制御によって、厳密に目標位置に一致するように制御されるわけではない。ロボット10の制御対象の実際位置と目標位置との間には、動作プログラムの各工程において予め定められた要求精度に応じて、ある程度の偏差があり得る。つまり、制御装置100は、目標位置を基準とした要求精度に対応する許容範囲内に実際位置が収束(到達)すれば、その工程においてロボット10の制御対象の位置を目標位置に制御できたものとして、その工程における制御を終了して次の工程の制御を行う。つまり、制御装置100は、各工程において、ロボット10の制御対象(先端部12a)の位置と目標位置との差分(偏差)が要求精度に対応する許容範囲内に収まるように、ロボット10を制御する。
なお、要求精度が高ければ、対応する許容範囲は小さく、要求精度が低ければ、対応する許容範囲は大きい。このような制御を行うことで、要求精度が低い工程においては早く許容範囲内に実際位置を収束させることができるので、作業時間を短縮することができる。
図2は、実施の形態1にかかる制御装置100の構成を示す機能ブロック図である。制御装置100は、動作プログラム格納部112、診断対象工程設定部114、ロボット制御部116、実際位置取得部118、作業時間測定部120、測定値管理部122、異常診断部124、及び警告出力部126を有する。なお、図2に示した制御装置100の各構成要素は、CPU101がROM102に記憶されたプログラムを実行することによって実現可能である。また、必要なプログラムを任意の不揮発性記録媒体に記録しておき、必要に応じてそのプログラムをインストールするようにしてもよい。なお、図2に示した各構成要素は、上記のようにソフトウェアによって実現されることに限定されず、何らかの回路素子等のハードウェアによって実現されてもよい。
また、図2に示した各構成要素の1つ以上は、制御装置100とは別の装置によって実現されてもよい。例えば、診断対象工程設定部114、作業時間測定部120、測定値管理部122、異常診断部124、及び警告出力部126は、制御装置100とは別の異常診断装置によって実現されてもよい。つまり、ロボット10の制御を行う装置と、ロボット10の異常を診断する装置とは、物理的に別の装置であってもよい。この場合、この異常診断装置は、図1に示した制御装置100のハードウェア構成と同様の構成を有しうる。
動作プログラム格納部112は、ロボット10を動作させるための動作プログラムを格納する。
図3は、実施の形態1にかかる動作プログラム格納部112によって格納されている動作プログラム200を例示する図である。動作プログラム200は、複数の工程「1」〜「M」(Mは2以上の整数)で構成されている。各工程は、その工程におけるロボットの動作速度、その工程における要求精度、その工程における目標位置、診断対象の設定(診断対象設定)の有無、及びI/O信号が対応付けられている。
ロボットの動作速度は、数字が大きいほど速い。図3の例では全ての工程において、最も速い速度「9」が設定されている。要求精度は、ロボット10の制御対象の位置をどれだけ目標位置に近づけるべきかを示す。要求精度が高いほど、その工程では、ロボット10の制御対象の位置を目標位置に近づけるように制御する必要がある。ここで、要求精度は、数字が小さいほど高い。図3の例では、要求精度は、最も精度の高い精度「0」から、最も精度の低い精度「4」が設けられている。例えば、工程「1」では、精度「1」で制御が行われ、工程「2」では、精度「2」で制御が行われる。また、工程「N」(Nは1以上M以下の整数)では、最も高い精度「0」で制御が行われる。また、工程「N」の1つ前の工程「N−1」では、精度「2」で制御が行われる。
目標位置Pt(Pt_1〜Pt_3、・・・、Pt_N−1〜Pt_N、・・・Pt_M)は、対応する工程におけるエンドエフェクタ12の先端部12aの所望の位置を示す。ここで、目標位置は、制御すべき先端部12aの三次元空間上の位置座標(x、y、z)を示してもよい。さらに、目標位置は、先端部12aが目標位置に到達するような、各関節14の関節角度(目標関節角度)を示してもよい。制御装置100は、各関節14を目標関節角度に制御することで、ロボット10の先端部12aを、目標位置に制御することができる。
診断対象設定は、その工程がロボット10の異常診断の対象であるか否かを示す。診断対象設定が「有」と設定された工程は、診断対象となる工程、つまり診断対象工程である。異常診断部124は、診断対象設定が「有」と設定された工程(診断対象工程)について測定された測定値を用いて、ロボット10の異常診断を行う。詳しくは後述する。
「I/O信号」は、制御装置100(又はロボット10)が各工程において他の装置(制御装置100及びロボット10以外の装置)と通信を行うときに送受信される信号を示す。「I/O信号」に何らかの信号が設定されている場合、その工程では、ロボット10は、他の装置(又は作業者)と連携して、又は他の装置(又は作業者)と協働して、作業を行う。一方、この「I/O信号」に何も設定されていない工程では、他の装置との通信が行われない。言い換えると、その工程では、診断対象となるロボット10は、単独で動作を行う。
工程「2」に設定された「インターロック信号」は、例えば、他の装置(又は作業者)が何らかの動作を行ってその動作を終了させるまで、ロボット10の動作を停止させるための信号である。工程「3」に設定された「溶接機通信」は、エンドエフェクタ12に取り付けられた溶接機に、溶接を実行させるために入出力される信号を示す。工程「M」に設定された「完了信号」は、動作プログラム200の工程が全て終了したことを、他の装置に通知するための信号である。
診断対象工程設定部114(設定手段)は、動作プログラム200の複数の工程の中から少なくとも1つを、診断対象工程と設定する。ここで、診断対象工程設定部114は、要求精度が予め定められた値よりも高い工程を、診断対象工程と設定する。ここで、「予め定められた値」とは、例えば精度「1」である。したがって、要求精度が予め定められた値よりも高い工程とは、精度「0」である工程である。図3の例では、工程「N」の要求精度が、最も高い精度「0」である。したがって、診断対象工程設定部114は、工程「N」を、診断対象工程と設定する。
ロボット制御部116は、動作プログラム200にしたがって、ロボット10を制御する。具体的には、ロボット制御部116は、先端部12aの位置を各工程における目標位置に制御するように、ロボット10に対して制御信号を送信する。例えば、制御信号は、各関節14の目標関節角度であってもよい。各関節14を駆動するモータは、その制御信号に応じて、各関節14の関節角度を調整する。詳しくは後述する。また、ロボット制御部116は、後述する実際位置取得部118によって取得されたロボット10の先端部12aの実際位置を用いてフィードバック制御を行ってもよい。
ここで、「ロボット制御部116は、先端部12aの位置を目標位置に制御する」と述べたが、上述したように、ロボット制御部116は、先端部12aの位置を厳密に目標位置に一致するように制御するわけではない。ロボット制御部116は、各工程における要求精度に対応する許容範囲内に先端部12aの実際位置が到達するように、ロボット10を制御する。つまり、ロボット制御部116は、各工程においてロボット10の先端部12aの位置と目標位置との差分が要求精度に関する許容範囲内に収まるように制御を行う。したがって、ロボット制御部116は、要求精度が高い工程ほど、先端部12aの実際位置が目標位置に近づくように、ロボット10を制御する。
実際位置取得部118は、ロボット10からの信号に応じて、先端部12aの実際位置を取得する。例えば、先端部12aの位置を測定するセンサが設けられている場合は、実際位置取得部118は、そのセンサからの信号を受信してもよい。また、各関節14に関節14の実際の関節角度を測定するエンコーダが設けられている場合は、実際位置取得部118は、そのエンコーダから信号を受信して、受信した信号から先端部12aの位置を算出してもよい。また、実際位置取得部118は、ロボット10の各工程が終了する前は、フィードバック制御のために、取得された実際位置を示す情報をロボット制御部116に出力してもよい。一方、実際位置取得部118は、ロボット10の各工程が終了したとき、先端部12aが到達した位置(到達位置)を示す情報を、測定値管理部122に出力する
作業時間測定部120(測定手段)は、診断対象工程と設定された工程についての作業時間(サイクルタイム)を測定する。具体的には、作業時間測定部120は、診断対象工程を含むサイクルタイムを測定する。さらに具体的には、作業時間測定部120は、診断対象工程の1つ前の工程が終了してから、診断対象工程が終了するまでの時間をサイクルタイム(工程サイクルタイム)として計測する。詳しくは後述する。作業時間測定部120は、測定された工程サイクルタイムを示す情報を、測定値管理部122に出力する。
測定値管理部122は、ロボット10の診断対象工程における動作に伴って測定された測定値を管理する。具体的には、測定値管理部122は、工程サイクルタイムと、先端部12aの位置に関する値とを管理する。以下、図を用いて説明する。
図4は、実施の形態1にかかる測定値管理部122によって管理される内容を示す図である。測定値管理部122は、診断対象工程である工程「N」について、測定値である工程サイクルタイム、到達位置、目標位置、及び到達偏差量を管理する。さらに、測定値管理部122は、診断対象工程である工程「N」について、異常診断の基準値である工程サイクルタイム、到達位置、目標位置、及び到達偏差量を管理する。ここで、「基準値」とは、ロボット10が正常である(理想的には劣化がない)ときの値である。また、「到達偏差量」は、工程における制御が終了した時点での到達位置と、目標位置との偏差量を示す。
図4に示すように、Tsは、工程「N」における工程サイクルタイムの基準値を示し、Tは、工程サイクルタイムの測定値を示す。また、Pt_Nは、工程「N」におけるロボット10の先端部12aの目標位置を示し、Pは、ロボット10の先端部12aの到達位置を示す。このとき、ロボット10が完全に正常であるような理想状態では、ロボット10の先端部12aは、目標位置に到達し得る。したがって、このときの到達偏差量は0である。一方、ロボット10が使用されるにつれて、ロボット10の減速機の劣化等により、ロボット10の先端部12aを目標位置に完全に一致させるように制御することは困難となっていく。したがって、測定時では、目標位置Pt_Nと到達位置Pとの間に、0でない到達偏差量ΔPが存在する。なお、到達偏差量ΔPは、工程「N」における要求精度に関する許容範囲内となっている。
異常診断部124(診断手段)は、診断対象工程についての測定値と基準値とを用いて、ロボット10の異常診断を行う。具体的には、異常診断部124は、診断対象工程についてのサイクルタイムに応じて、ロボット10の異常診断を行う。詳しくは後述する。そして、異常診断部124は、ロボット10に異常が発生していると判断した場合には、警告出力部126に対して、警告を出力する旨の命令を出力する。
警告出力部126は、異常診断部124による異常診断に応じて、ロボット10に異常が発生したことを示す警告を出力する。警告出力部126は、ロボット10の異常の度合に応じて異なる警告を出力してもよい。警告は、ランプ等の視覚で検知できるものであってもよいし、警報音等の聴覚で検知できるものであってもよい。
次に、実施の形態1にかかる異常診断のメカニズムについて説明する。
図5は、ロボット10の動作が診断対象工程の前の工程から診断対象工程に遷移する状態を示す図である。図5には、工程「N−1」から診断対象工程である工程「N」に工程が遷移する状態が例示されている。工程「N−1」においては、ロボット10は、(A)に例示するような位置(姿勢)に制御され、工程「N」においては、ロボット10は、(B)に例示するような位置(姿勢)に制御される。このとき、工程「N−1」から工程「N」に工程が遷移すると、ロボット10の先端部12aの位置は、矢印Aで示すように、到達位置P_N−1から到達位置P_Nに移動する。ここで、到達位置P_N−1は、目標位置Pt_N−1を基準とした工程「N−1」における許容範囲内にある。つまり、到達位置P_N−1と目標位置Pt_N−1との差分は、工程「N−1」における許容範囲内である。同様に、到達位置P_Nは、目標位置Pt_Nを基準とした工程「N」における許容範囲内にある。つまり、到達位置P_Nと目標位置Pt_Nとの差分は、工程「N」における許容範囲内である。
ここで、到達位置P_Nと目標位置Pt_Nとの差分(到達偏差量ΔP)とは、例えば、到達位置P_Nと目標位置Pt_Nとの距離であってもよい。この場合、「許容範囲」とは、到達位置P_Nと目標位置Pt_Nとの距離の許容される最大値であってもよい。また、工程「N−1」における要求精度は「2」であり、工程「N」における要求精度は「0」である。したがって、図5に示すように、工程「N」における許容範囲は、工程「N−1」における許容範囲よりも小さい。したがって、工程「N」の方が、工程「N−1」よりも、ロボット10の先端部12aの位置を、許容範囲内に到達させることは困難である。
図6は、ロボット10の制御動作を説明するための図である。ロボット制御部116は、工程「N−1」の位置から工程「N」の位置にロボット10の先端部12aを制御する過程で、ロボット制御周期Δtごとに、段階的に制御を行う。つまり、ロボット制御部116は、工程「N−1」から工程「N」に遷移する過程で、一回で指令値を目標位置Pt_Nとするのではなく、ロボット制御周期Δtごとに、異なる指令値で段階的に制御を行う。ロボット制御周期Δtが進むにつれて、指令値は目標位置Pt_Nに近づくようになっている。ここで、ロボット制御周期Δtは、ロボット10の制御を行う周期であり、制御装置100のCPU101の性能に応じて定められ得る。なお、ロボット制御周期Δtごとの指令値は、動作プログラムに含まれていてもよい。
ここで、使用期間が進んだロボット10は、減速機等の劣化に伴う負荷抵抗の増大によって、指令値通りに制御されなくなる傾向にある。したがって、ロボット制御周期Δtの間にロボット10が移動するとき、時刻t+Δtにおいて、指令値ptと実際値pとの間に偏差Δpが生じることとなる。この偏差Δpは、ロボット10の劣化が進むにつれて大きくなる傾向にある。
図7は、ロボット10の正常時と異常時とにおけるサイクルタイムの違いについて説明するための図である。図7には、工程「N−1」から工程「N」に工程が遷移する状態が例示されている。工程「N−1」において到達位置P_N−1にロボット10の先端部12aが移動して工程「N−1」における制御が終了した時点を時刻tとする。
正常時では、先端部12aは、時刻t+Δtで位置p1に移動し、時刻t+2Δtで位置p2に移動し、時刻t+3Δtで位置p3に移動する。この3回目のロボット制御周期Δtのときに、先端部12aは、工程「N」の許容範囲内である位置P_Nに到達する。したがって、正常時における工程「N」の工程サイクルタイムは、3Δtである。
一方、異常時では、先端部12aは、時刻t+Δtで位置p1’に移動するが、位置p1’と位置p1との間には偏差が生じている。次に、先端部12aは、時刻t+2Δtで位置p2’に移動するが、位置p2’と位置p2との間には偏差が生じている。次に、先端部12aは、時刻t+3Δtで位置p3’に移動するが、位置p3’と位置p3との間には偏差が生じている。
ここで、この3回目のロボット制御周期Δtのとき、先端部12aは、未だ、工程「N」の許容範囲内に到達しない。したがって、ロボット制御部116は、さらに次のロボット制御周期Δtで、先端部12aが許容範囲内に到達するように、ロボット10を制御する。そして、時刻t+4Δtで、位置p4’に移動する。この4回目のロボット制御周期Δtのときに、先端部12aは、工程「N」の許容範囲内である位置P_Nに到達する。したがって、異常時における工程「N」の工程サイクルタイムは、4Δtである。
このように、工程「N」の要求精度は「0」と最大であるので、許容範囲は非常に小さい。したがって、ロボット制御部116が先端部12aの位置を許容範囲内に到達させるのは容易ではない。そして、異常が発生しているロボット10であるほど、負荷抵抗の増大等によりロボット制御部116が先端部12aの位置を許容範囲内に到達させるように制御を行うのは容易ではなく、先端部12aの位置が許容範囲内に到達するまでに要する時間は長くなる。つまり、異常が発生したロボット10による工程「N」にかかる工程サイクルタイムは、正常なロボット10による工程「N」にかかる工程サイクルタイムよりも長くなる。このような、異常時における工程サイクルタイムの伸びを利用して、実施の形態1にかかる制御装置100は、異常診断を行う。つまり、実施の形態1においては、診断対象工程についての物理量として、工程サイクルタイムが測定される。そして、実施の形態1にかかる制御装置100は、測定された工程サイクルタイムと、工程サイクルタイムの基準値(正常時の工程サイクルタイム)との差分を用いて、ロボット10の異常診断を行う。
なお、要求精度がそれほど高くない工程では、許容範囲はそれほど小さくないので、異常が発生したロボット10であっても、ロボット制御部116が先端部12aの位置を許容範囲内に到達させるのは、それほど困難ではない。したがって、このような工程では、異常時と正常時とで工程サイクルタイムに違いが発生しにくくなる。つまり、このような工程では、異常が顕現化しない可能性がある。この場合、工程サイクルタイムを使用しても、異常を検出することができない可能性がある。一方、実施の形態1にかかる制御装置100は、要求精度が高い工程におけるサイクルタイムを測定して異常診断を行うので、ロボット10に異常が発生した場合、正常時と比較して工程サイクルタイムが伸びる可能性が高くなる。つまり、要求精度が高い工程では、異常が顕現化しやすい。したがって、実施の形態1にかかる制御装置100は、ロボット10の異常をより確実に検出することが可能となる。
つまり、要求精度が高い工程における測定値(サイクルタイム)は、要求精度が低い工程における測定値よりも、ロボット10に異常が発生したときに異常を示しやすい。言い換えると、要求精度が高い工程では、測定値(サイクルタイム)は、ロボット10に異常が発生したときと異常が発生していないときとで差異が生じやすい。したがって、実施の形態1にかかる制御装置100は、要求精度が高い工程における測定値及び基準値を用いて異常診断を行うことで、ロボット10の異常をより確実に検出することが可能となる。
図8は、実施の形態1にかかる制御装置100によってなされる異常診断方法を示すフローチャートである。制御装置100の動作プログラム格納部112は、動作プログラムを格納する(ステップS102)。制御装置100の診断対象工程設定部114は、動作プログラムの複数の工程の中から、要求精度が予め定められた閾値Th1よりも高い工程「N」を、診断対象工程と設定する(ステップS104)。
次に、制御装置100のロボット制御部116は、動作プログラムに従ってロボット10を制御する(ステップS110)。S110の処理については図9を用いて詳述する。次に、制御装置100は、診断対象工程である工程「N」についての診断対象工程についての物理量を測定して得られた測定値に基づいて、異常診断を行う(ステップS20)。S20の処理については図10を用いて詳述する。
図9は、図8に示したフローチャートにおけるロボット制御処理(S110)を示すフローチャートである。まず、ロボット制御部116は、制御対象の工程「K」を初期化する、つまり、K=1とする(ステップS112)。次に、ロボット制御部116は、工程「K」の動作を開始して(ステップS114)、ロボット10の先端部12aの位置が工程「K」の目標位置Pt_Kに近づくように、ロボット10を制御する(ステップS116)。
ロボット制御部116は、先端部12aの実際位置Pが工程「K」の許容範囲内に収束したか否かを判断する(ステップS118)。具体的には、ロボット制御部116は、実際位置Pと目標位置Pt_Kとの差分が工程「K」の許容範囲内であるか否かを判断する。そして、先端部12aの実際位置Pが工程「K」の許容範囲内に収束していないと判断された場合(S118のNO)、処理はS116に戻る。一方、先端部12aの実際位置Pが工程「K」の許容範囲内に収束していると判断された場合(S118のYES)、ロボット制御部116は、工程「K」における制御を終了する(ステップS120)。
次に、ロボット制御部116は、動作プログラムにおける最後の工程が終了したか否か、つまりK=Mであるか否かを判断する(ステップS122)。最後の工程が終了していないと判断された場合(S122のNO)、ロボット制御部116は、Kを1つインクリメントして(ステップS124)、次の工程について、S114〜S122の処理を繰り返す。一方、最後の工程が終了した、つまりK=Mであると判断された場合(S122のYES)、ロボット制御部116は、動作プログラムにおけるロボット10の制御を終了する(ステップS126)。
図10は、図8に示したフローチャートにおける異常診断処理(S20)を示すフローチャートである。まず、制御装置100の作業時間測定部120は、診断対象工程である工程「N」の1つ前の工程「N−1」の終了時点から、工程「N」の終了時点までの工程サイクルタイムTを測定する(ステップS202)。次に、制御装置100の異常診断部124は、測定値管理部122から、基準となる工程サイクルタイムTsを取得する(ステップS204)。次に、制御装置100の異常診断部124は、工程サイクルタイムの上昇率R[%]を算出する(ステップS206)。ここで、工程サイクルタイム上昇率Rは、以下の式で表される。
R=((T−Ts)/Ts)*100
次に、制御装置100の異常診断部124は、工程サイクルタイム上昇率Rが予め定められた閾値Aよりも大きいか否かを判断する(ステップS208)。工程サイクルタイム上昇率Rが閾値A以下であると判断された場合(S208のNO)、異常診断部124は、ロボット10に異常が発生していないと判断する(ステップS210)。一方、工程サイクルタイム上昇率Rが閾値Aよりも大きいと判断された場合(S208のYES)、異常診断部124は、工程サイクルタイム上昇率Rが予め定められた閾値Bよりも小さいか否かを判断する(ステップS212)。ここで、B>Aである。
工程サイクルタイム上昇率Rが閾値Bよりも小さいと判断された場合(S212のYES)、異常診断部124は、ロボット10に軽度の異常が発生していると判断する(ステップS214)。このとき、警告出力部126は、軽度の警告を出力する(ステップS216)。例えば、警告出力部126は、黄色のランプを点灯させてもよい。一方、工程サイクルタイム上昇率Rが閾値B以上であると判断された場合(S212のNO)、異常診断部124は、ロボット10に重度の異常が発生していると判断する(ステップS218)。このとき、ロボット10は、異常末期の状態であり、速やかに修理が必要な状態である。このとき、警告出力部126は、重度の警告を出力する(ステップS220)。例えば、警告出力部126は、赤色のランプを点灯させてもよい。
要求精度が高い診断対象工程において工程サイクルタイムを測定することで、ロボット10に異常が発生した場合に、より確実に、工程サイクルタイム上昇率Rが大きくなる。したがって、実施の形態1にかかる制御装置100は、より確実に、ロボット10の異常を検出することが可能となる。
つまり、要求精度が高い工程における測定値(工程サイクルタイム及び工程サイクルタイム上昇率R)は、要求精度が低い工程における測定値よりも、ロボット10に異常が発生したときに異常を示しやすい。言い換えると、要求精度が高い工程では、測定値(工程サイクルタイム及び工程サイクルタイム上昇率R)は、ロボット10に異常が発生したときと異常が発生していないときとで差異が生じやすい。したがって、実施の形態1にかかる制御装置100は、要求精度が高い工程における測定値を用いて異常診断を行うことで、ロボット10の異常をより確実に検出することが可能となる。
(変形例)
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、図8〜図10に示したフローチャートの各ステップの順序は、適宜変更可能である。また、フローチャートの各ステップの1つ以上は、省略されてもよい。
例えば、図10において、S210〜S220の処理は、省略されてもよい。そして、S208の判定がYESの場合に、警告を出力する処理を行ってもよい。また、図10のS202の処理は、S110の処理の間に行われてもよい。つまり、サイクルタイムの測定は、診断対象工程が実行されてロボット10が制御されているときに行われてもよい。
また、例えば、図8のS104の処理は、S110の処理の後で行われてもよい。この場合、ロボット10の制御工程が全て終了した後でどの工程が診断対象工程であるかが設定されるので、各工程における工程サイクルタイムを全て測定しておく必要がある。一方、図8のように、ロボット10の制御の前に診断対象工程を設定しておくことで、事前に設定された診断対象工程に関する工程サイクルタイムのみを測定するのみでよくなる。
また、上述した実施の形態においては、要求精度が高い工程のみにおけるサイクルタイム(工程サイクルタイム)を用いて異常診断を行うとしたが、このような構成に限られない。要求精度が高い工程だけでなく、例えばその工程の前後の1つ以上の工程におけるサイクルタイムを用いて異常診断を行ってもよい。例えば、図3の例では、工程「1」の開始から工程「N」の終了までの作業時間(サイクルタイム)を用いて、異常診断を行ってもよい。
一方、この場合、測定されるサイクルタイムには、ロボット10が他の装置(又は作業者)と連携又は協働して動作する工程「2」及び工程「3」における作業時間が含まれる。工程「2」及び工程「3」における作業時間は、他の装置(又は作業者)にかかる作業の影響を受け得る。これにより、サイクルタイムが上昇したとしても、その上昇した原因が、診断対象のロボット10の異常によるものではなく、他の装置(又は作業者)によるものである可能性がある。したがって、要求精度が高い工程のみにおけるサイクルタイム(工程サイクルタイム)、つまり、診断対象工程の前の工程の終了から診断対象工程が終了するまでの時間を測定して得られた測定値を用いて異常診断を行うことにより、測定されるサイクルタイムに対する他の装置等による影響を排除できる。したがって、さらに確実に、ロボット10の異常を検出することが可能となる。
また、上述した実施の形態においては、工程サイクルタイム上昇率Rを用いて異常診断を行うとしたが、このような構成に限られない。例えば、T/Tsの値が予め定められた閾値よりも大きくなったときに、異常と判断されるようにしてもよい。
また、上述した実施の形態においては、ロボット10の制御対象の位置と目標位置との差分が許容範囲内に収まるまでの時間を含むサイクルタイムを測定することで異常診断を行うとしたが、このような構成に限られない。例えば、予め定められた制限時間内にロボット10の制御対象の位置と目標位置との差分が許容範囲内に収まる確率を用いて、異常診断を行ってもよい。この場合、正常なロボット10における確率は、異常が発生しているロボット10における確率よりも高い。また、要求精度が高い工程における確率の方が、その傾向はより顕著となる。つまり、要求精度が低い工程では、正常なロボット10における確率と異常が発生しているロボット10における確率とであまり差がないことがあるが、要求精度が高い工程では、正常なロボット10における確率と異常が発生しているロボット10における確率とで差異が顕著となり得る。つまり、この例における制御装置100も、要求精度が高い工程における測定値(異常が発生している可能性のあるロボット10における確率)と基準値(正常なロボット10における確率)とを用いて異常診断を行うことで、ロボット10の異常をより確実に検出することが可能となる。
また、上述した実施の形態においては、サイクルタイム(工程サイクルタイム)を用いて異常診断を行うとしたが、このような構成に限られない。診断対象工程についての物理量として、サイクルタイムではなく、ロボット10の異常に伴って変動し得る任意の物理量を用いて、異常診断を行ってもよい。
また、例えば、図4に示した到達偏差量ΔPを用いて、異常診断を行ってもよい。具体的には、診断対象工程における許容範囲を±ΔAとすると、異常診断部124は、到達偏差量上昇率D(=(ΔP/ΔA)*100)[%]を算出する。そして、異常診断部124は、この到達偏差量上昇率Dが予め定められた閾値(基準値)よりも大きい場合に、ロボット10に異常が発生していると判断してもよい。診断対象工程では許容範囲ΔAは小さいので、到達偏差量ΔPが小さくても、到達偏差量上昇率Dは大きくなり得る。そして、到達偏差量ΔPは、ロボット10に異常が発生している場合に、大きくなり得る。したがって、要求精度が高い工程における測定値として到達偏差量ΔPを用いても、より確実に、ロボット10の異常を検出することが可能となる。
つまり、この例においても、要求精度が高い工程における測定値(到達偏差量ΔP及び到達偏差量上昇率D)は、要求精度が低い工程における測定値よりも、ロボット10に異常が発生したときに異常を示しやすい。言い換えると、要求精度が高い工程では、測定値(到達偏差量ΔP及び到達偏差量上昇率D)は、ロボット10に異常が発生したときと異常が発生していないときとで差異が生じやすい。したがって、この例における制御装置100も、要求精度が高い工程における測定値と基準値(予め定められた閾値)とを用いて異常診断を行うことで、ロボット10の異常をより確実に検出することが可能となる。
一方、考慮しなくてもよい程度のわずかな異常がロボット10に発生した場合であっても、到達偏差量上昇率Dが大きくなる可能性はある。一方、サイクルタイム(作業時間)は、ロボット10の異常の度合が大きくなるにつれて長くなり得る。したがって、サイクルタイムを用いて異常診断を行うことにより、さらに確実に、ロボット10の異常を検出することが可能となる。
また、上述した実施の形態においては、異常診断を行うための動作プログラムは、実際の実機ラインにおける作業に用いられるプログラム(ティーチングデータ)を用いるとしたが、このような構成に限られない。異常診断用のプログラムを別に準備して、そのプログラムを用いて異常診断を行ってもよい。しかしながら、実際の実機ラインにおける作業に用いられるプログラムにおいて要求精度が高い工程において異常診断を行うことで、異常診断用のプログラムを別に準備することが不要となる。また、実際の作業に用いられるプログラムに要求精度の高い工程が含まれていない場合は、意図的に要求精度の高い工程を動作プログラムに挿入してもよい。
また、上述した実施の形態においては、診断対象工程設定部114は、要求精度が高い工程「N」のみを診断対象工程と設定したが、このような構成に限られない。診断対象工程設定部114は、工程「N」の1つ前の工程「N−1」についても、サイクルタイムの開始を指定するための診断対象工程と設定してもよい。このように、工程「N−1」及び工程「N」が診断対象工程と設定されることで、作業時間測定部120は、工程「N−1」の終了時点を、サイクルタイムの測定開始時点であると、容易に判断することができる。
また、上述した実施の形態においては、診断対象工程設定部114は、要求精度が高い1つの工程「N」のみを診断対象工程と設定したが、このような構成に限られない。要求精度が高い工程(精度「0」の工程)が複数ある場合は、診断対象工程設定部114は、要求精度が高い複数の工程を診断対象工程と設定してもよい。この場合、複数の診断対象工程について、異常診断が行われる。この場合、複数の異常診断のうち少なくとも1つにおいて異常と判断された場合に警告が出力されてもよいし、複数の異常診断の全てが異常と判断された場合に警告が出力されてもよい。さらに、複数の異常診断において異常と判断されたものの個数に応じて異なる警告が出力されてもよい。
また、上述した実施の形態において、制御装置100は、ロボット10の制御対象(例えばロボット10の先端部12a)の「位置」を制御するとし、「目標位置」は、制御対象である先端部12aの三次元空間上の位置座標であるとしたが、このような構成に限られない。ロボット10の制御対象の「位置」を制御するとは、ロボット10の制御対象の位置が三次元空間上の所望の位置に移動させるようにロボット10を制御することだけでなく、その制御対象の位置にかかる箇所の姿勢が所望の姿勢となるようにロボット10を制御することを含み得る。したがって、「位置」とは、三次元空間上の位置座標(x、y、z)だけでなく、姿勢(向き)(ロール、ピッチ、ヨー)も含み得る。さらに、「目標位置」とは、三次元空間上の所望の位置座標だけでなく、所望の姿勢(向き)も含み得る。また、この場合、目標位置と実際位置との差分は、位置座標における差分と姿勢における差分とで分けて考慮されてもよい。そして、制御装置100は、両方の差分がそれぞれの許容範囲に収まるように、ロボット10を制御するようにしてもよい。
また、上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。