説明

ロボット制御装置

【課題】ロボットの異常動作、誤動作を防止する。
【解決手段】ロボット110を駆動するサーボモータ116を位置検出手段117からの検出出力に応じて制御するサーボ制御部10,20と、サーボモータに対する通電と遮断とを切り替え可能な切り替え部31,32と、サーボモータを監視する監視部50とを備え、監視部は二つの処理演算部51,52を有し、当該各処理演算部は、それぞれ個別に、位置検出手段が示す動作位置が許容動作位置を越えるか否かを判定して許容動作位置を越える場合に切り替え部によりサーボモータの通電を遮断する処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、産業用ロボットの位置、速度、トルクを監視するロボット制御装置に関する。
【背景技術】
【0002】
一般的に産業用ロボットは、各部の動作の駆動源となるサーボモータと、各サーボモータの動作量を検出するパルスジェネレータ等の位置検出器とを備えている。
そして、従来のロボット制御装置は、前記位置検出器からのデータを読み取ることでロボットの位置や速度を監視していた。
即ち、従来のロボット制御装置は、パルスジェネレータからのパルスを計測するカウンタ回路と、設定されたモータ速度の上限値とカウントパルス数とを比較する比較回路と、比較回路における比較タイミングの異常をチェックするタイミングチェック回路と、サーボモータへの電源の接続又は遮断を切り替えるリレーなどを有し、速度異常或いはタイミング異常などが発生するとサーボモータと電源との接続を遮断していた(例えば、特許文献1参照)。
【特許文献1】特開平10−254521号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記従来例では、位置検出器からのパルスの計測及び監視を、単一の系統からなる監視手段で行っているため、当該監視手段に異常を生じた場合、モータの速度が許容される上限値を超える等の異常を検出することができなくなるおそれがあり、ロボットを緊急停止させることができない可能性があるという不都合があった。
【0004】
本発明は、ロボットの位置、速度、トルクを常に的確に監視することをその目的とする。
【課題を解決するための手段】
【0005】
請求項1記載の発明は、ロボットを駆動するサーボモータをロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、所定の監視条件に応じて切り替え部を通じてサーボモータを停止させる監視部とを備え、監視部は二つの処理演算部を有し、当該各処理演算部は、それぞれ個別に、監視条件として、位置検出手段からの検出出力を適正に受信したか否かを判定すると共に適正に受信していないと判定した場合に切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【0006】
請求項2記載の発明は、ロボットを駆動するサーボモータをロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、所定の監視条件に応じて切り替え部を通じてサーボモータを停止させる監視部とを備え、監視部は二つの処理演算部を有し、当該各処理演算部は、それぞれ個別に、監視条件として、位置検出手段からの検出出力に基づく動作位置が許容動作位置を越えるか否かを判定すると共に許容動作位置を越える場合に切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【0007】
請求項3記載の発明は、請求項2記載の発明と同様の構成を備えると共に、各処理演算部は、それぞれ個別に、監視条件として、位置検出手段からの検出出力に基づく動作速度が許容速度を越えるか否かを判定すると共に許容速度を越える場合に切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【0008】
請求項4記載の発明は、ロボットを駆動するサーボモータをロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、所定の監視条件に応じて切り替え部を通じてサーボモータを停止させる監視部とを備え、監視部は二つの処理演算部を有し、当該各処理演算部は、それぞれ個別に、監視条件として、サーボ制御部が制御するサーボアンプによるトルク出力が許容値内を越えるか否かを判定すると共に許容値内を越える場合に切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【0009】
請求項5記載の発明は、請求項2,3又は4記載の発明と同様の構成を備えると共に、監視部は、二つの処理演算部が取得した監視条件の判断の対象となるものの値が一致しないときに、切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【0010】
請求項6記載の発明は、請求項1から5のいずれか一項に記載の発明と同様の構成を備えると共に、各処理演算部に対して処理の不良停止状態の発生を検出するウォッチドッグ回路が各処理演算部ごとに併設され、各処理演算部が、他方の処理演算部の監視回路を通じて不良停止状態を検知すると、切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【発明の効果】
【0011】
請求項1記載の発明では、サーボ制御部の動作制御によりロボットのサーボモータが駆動を行い、これに伴い位置検出部はサーボモータの駆動に伴い変化する動作位置(サーボモータにより変化するロボットの各部の位置、角度、位置変化量又は角度変化量等)を検出する。
そして、各処理演算部は、位置検出部から送信された検出信号に付された内容の確認用のコードを読み取り、コードの示す内容と受信した内容との一致判定をそれぞれが個別に行い、いずれか一方の処理演算部のみが不一致と判定した場合でもサーボモータが停止される。
つまり、サーボモータの動作の監視が二つの処理演算部により二系統で行われるので、いずれか一方が故障や不良を生じても、他方の処理演算部がサーボモータを停止させることができ、位置検出部から正しく検出出力が伝わらないことによる異常動作をより確実に防止することが可能となる。
【0012】
請求項2記載の発明では、サーボ制御部の動作制御によりロボットのサーボモータが駆動を行い、これに伴い位置検出部はサーボモータの駆動に伴い変化する動作位置(サーボモータにより変化するロボットの各部の位置、角度、位置変化量又は角度変化量等)を検出する。
そして、各処理演算部は、検出された動作位置が予め設定された許容動作位置内か否かの判定をそれぞれが個別に行い、いずれか一方の処理演算部のみが許容動作位置外と判定した場合でもサーボモータが停止される。
つまり、サーボモータの動作の監視が二つの処理演算部により二系統で行われるので、いずれか一方が故障や不良を生じても、他方の処理演算部がサーボモータを停止させることができ、許容動作位置を超える異常動作をより確実に防止することが可能となる。
なお、許容動作位置とは、サーボモータの仕様や特性等のロボットの内的要因で定まるものでも良いし、作動時の接触防止など周囲環境やロボットの外的要因で定まるものであっても良い。
【0013】
請求項3記載の発明では、位置検出部の検出出力からサーボモータの駆動に伴うロボットの各部の動作速度が求められると、各処理演算部は、動作速度が許容速度内か否かの判定をそれぞれが個別に行い、いずれか一方の処理演算部のみが許容速度範囲外と判定した場合でもサーボモータが停止される。
つまり、サーボモータの速度の監視が二つの処理演算部により二系統で行われるので、いずれか一方が故障や不良を生じても、他方の処理演算部がサーボモータを停止させることができ、許容速度を超える異常動作をより確実に防止することが可能となる。
【0014】
請求項4記載の発明では、サーボアンプからサーボモータの駆動に伴うロボットの各部のトルク出力が求められると、各処理演算部は、トルク出力が許容値を越えるか否かの判定をそれぞれが個別に行い、いずれか一方の処理演算部のみが許容値を越えると判定した場合でもサーボモータが停止される。
つまり、サーボモータのトルク出力の監視が二つの処理演算部により二系統で行われるので、いずれか一方が故障や不良を生じても、他方の処理演算部がサーボモータを停止させることができ、許容トルク値を超える異常動作をより確実に防止することが可能となる。
【0015】
請求項5記載の発明では、二つの処理演算部が、算出或いは外部からの入力により、監視条件の判断の対象となるものの値(サーボモータの動作位置、動作速度又はトルク値のいずれか)を取得した場合に、各々が取得した監視対象の値の比較を行い、一致しない場合にサーボモータが停止される。
つまり、各処理演算部が取得する監視対象の値の不一致を監視することで、情報伝達系統の異常やいずれか一方の処理演算部の故障を検知することができ、監視部の異常によるサーボモータの異常動作をより確実に防止することが可能となる。
なお、監視対象の値の一致の判断はいずれか一方の処理演算部が行っても良いし、双方の処理演算部が行っても良い。
【0016】
請求項6記載の発明では、各処理演算部ごとに設けられたウォッチドッグ回路が、処理演算部の不良停止状態の検知を行う。不良停止状態とは、処理演算部が処理を実行すべき際に処理を行わなくなった状態をいう。
そして、いずれか一方の処理演算部が他方の処理演算部を監視するウォッチドッグ回路を通じて不良停止状態の発生を検知すると、サーボモータを停止させる。
これにより、いずれか一方の処理演算部が不良停止して、残り一方の処理演算部のみによるサーボモータの監視状態が回避され、二系統による監視状態でのみサーボモータを駆動させることができ、サーボモータの異常動作をより確実に防止することが可能となる。
【発明を実施するための最良の形態】
【0017】
(発明の実施形態の全体構成)
本発明の実施の形態を図1乃至図6に基づいて説明する。図1は、本発明の実施形態の概略構成図である。
上記実施形態では、作業目的に応じたツール115を先端部で保持すると共に当該ツール115を任意の位置に移動させ或いは任意の向きに向ける動作を行うロボット110の動作制御を行うロボット制御装置100を示している。
【0018】
(ロボット)
制御対象となるロボット110は、土台となるベース111と、複数の関節113で連結された複数のアーム112と、各関節113ごとに設けられた駆動源としてのサーボモータ116と、各サーボモータの軸角度をそれぞれ検出する位置検出手段としてのエンコーダ117とを備えている。そして、連結されたアーム112の最先端部にはロボット110の用途に応じたツール115(例えば溶接ガンやハンド等)が装備される。
上記各関節113は、アーム112の一端部を揺動可能として他端部を軸支する揺動関節と、アーム112自身をその長手方向を中心に回転可能に軸支する回転関節とのいずれかから構成される。つまり、本実施形態におけるロボット110はいわゆる多関節型ロボットに相当する。
また、ロボット110は、六つの関節113を具備しており、その先端部のツール115を任意の位置に位置決めし任意の姿勢を取らせることが可能となっている。
【0019】
(ロボット制御装置)
ロボット制御装置100は、ティーチング或いはプログラミングにより設定されたロボットの教示動作データに従ってロボットの制御指令を出力する位置制御部10と、位置制御部10からの制御指令に従ってロボット110の各サーボモータ116の制御を行うサーボアンプ20と、電源から各サーボモータ116への電力の供給と遮断とを切り替え可能な切り替え部としてのマグネットスイッチ31,32と、ロボット110の制御情報を監視して所定条件に応じて各マグネットスイッチ31,32を通じてサーボモータ116を停止させる監視部50と、監視部50により異常検知が行われた場合にオペレータに異常発生を報知するための報知部33とを備えている。
【0020】
(位置制御部)
位置制御部10は、ロボット110の動作制御を行うために各サーボモータ116に対する制御指令を生成するための各種の処理プログラム及び各種のデータが記憶されたメモリと、処理プログラムを実行するCPUと、サーボアンプ20との指令やデータの送受信を行うためのインターフェイスとを主に備えている。
【0021】
上記メモリには、ロボット110の各種の処理プログラムの他、設定されたロボットの教示動作データ、ロボット110に関する各種のパラメータ(各部の寸法、重量、イナーシャ、エンコーダ117の出力コードと当該出力コードが示す関節角度(角度位置)との対応関係を示すテーブル、ロボットの各関節113における関節角度の上限値、下限値(許容動作位置)、各関節113の関節動作速度の上限値(許容速度)、各関節113のトルクの上限値(許容値)等)が記憶されている。
上記教示動作データは、ロボット110が所定の動作を実行するための制御指令であり、例えば、事前にロボット110に目的となる動作(ティーチング)を行わせ、当該動作軌跡の各点で関節角度のサンプリングを行い、その実行動作を再現するために演算により求められた移動軌跡のデータである。
位置制御部10のCPUは、ロボット110の制御の際には、上記教示動作データに基づいて、サーボアンプ20に対して各サーボモータの位置指令を所定の周期で順番に出力する。
なお、上記教示動作データは、ティーチングに限らず、記録メディアの読み出し装置、オペレータによる入力装置又は外部に対する通信手段によりロボット制御装置100の外部からを取得される場合もある。
【0022】
また、メモリ内の各種のパラメータである各部の寸法、重量、イナーシャ、エンコーダ117の出力コードと当該出力コードが示す関節角度との対応関係を示すテーブル、ロボットの各関節113における関節角度の上限値、下限値、各関節113の関節動作速度の上限値、各関節113のトルクの上限値等のデータは、監視部50に出力される。その際、CPUは、各データについて所定のデータ単位ごとにCRCコード(Cyclic Redundancy Check)を生成し、これを添付して監視部50に送信する。
【0023】
(サーボアンプ)
サーボアンプ20は、ロボット110の各関節113のエンコーダ117から回転角度位置の検出信号を受信する受信回路と、各サーボモータ116に対する制御信号と帰還信号の送受信を行うモータ制御回路とを備えている。そして、サーボアンプ20は、位置制御部10から入力される位置指令と各エンコーダ117の検出信号と各サーボモータ116からの帰還信号とに基づいて、各サーボモータ116の位置、速度、トルクについてフィードバック制御を行う。
なお、このサーボアンプ20と位置制御部10とが、サーボモータ116をエンコーダ117からの検出出力に応じて制御するサーボ制御部として機能する。
【0024】
(報知部)
報知部33は、後述する監視部50の処理において異常を検知したときに、その異常をオペレータに報知するための表示手段である。具体的には、異常発生を表示するモニタ、報知ランプ又は警報機等が報知部33として使用される。
【0025】
(監視部)
図2は監視部50のより詳細な構成を示すブロック図である。即ち、この監視部50は、後述する各種の処理を実行する二つの処理演算部としての第一及び第二のCPU51,52と、ロボット110の各エンコーダ117から各種信号を受信すると共に各CPU51,52からの各種コマンド及びデータを送信する送受信回路53と、各サーボモータ116から帰還信号の受信を行うトルク検出回路54と、第一と第二のCPU51,52の演算処理の実行状態を個別に監視するウォッチドッグ回路55,56とを備えている。
【0026】
上記各CPU51,52は、それぞれ内部メモリ57,58を有しており、各内部メモリ57,58は、CPU51,52がそれぞれ実行する処理プログラムを記憶すると共に各処理における作業領域として機能する。
また、第一のCPU51と第二のCPU52とは、それぞれのデータの送受信を行う通信手段であるバスにより互いに接続されている。
なお、各CPU51,52が行う処理の詳細については、図3〜図6のフローチャートにより後述することとする。
【0027】
送受信回路53は、第一のCPU51からの指令に従い、エンコーダ117に対する検出信号出力の要求コマンドと当該要求コマンドを一意に識別するためのシーケンス番号データとをエンコーダ117に送信する。このシーケンス番号は、周期的に行われる位置データの要求コマンド出力のたびに順次1ずつ加算されて付加されるので、各要求コマンドごとに重複するシーケンス番号が付加されないようになっている。
一方、エンコーダ117は、シーケンス番号が付加された要求コマンドを受けると同じシーケンス番号を付加して検出した位置データの返信を行う。これにより、送受信回路53では、位置データに付加されたシーケンス番号を参照することで、いずれの要求コマンドに対する検出位置データなのかを識別することができる。また、シーケンス番号の不一致により、エンコーダ117の異常を検知することが可能となっている。
【0028】
トルク検出回路54は、サーボアンプ20においてサーボモータ116に通電される電流値の検出を行い、これに基づくサーボモータ116のトルク値を求めて第一のCPU51に出力を行う。
【0029】
ウォッチドッグ回路55は第一のCPU51を監視し、ウォッチドッグ回路56は第二のCPU52の監視を行う。
即ち、各ウォッチドッグ回路55,56は、ロボット110の制御実行時において、それぞれが監視対象とするCPU51,52に対して周期的にウォッチドッグ要求信号を出力し、これに対して各CPU51,52が所定期間内に応答信号を返信しないときには、監視対象であるCPU51,52が停止しているものとして、タイムアップ信号を監視対象ではないCPU52,51に出力する機能を有している。
【0030】
(監視部におけるパラメータ送信監視処理)
図3は監視部50の各CPU51,52が行うロボット制御における各種のパラメータ(各部の寸法、重量、イナーシャ、エンコーダ117の出力コードと当該出力コードが示す関節角度の対応関係を示すテーブル、ロボットの各関節113における関節角度の上限値、下限値、各関節113の関節動作速度の上限値、各関節113のトルクの上限値等)の送信監視処理を示している。
監視部50は、ロボット110の動作開始前に、予め後述する監視処理を行うための各種パラメータを位置制御部10から送信される。
【0031】
まず、第一のCPU51は、位置制御部10のCPUに対してパラメータの要求を行い、その結果、位置制御部10から各種のパラメータを受信する(ステップS101)。
【0032】
このとき、位置制御部10のCPUは各パラメータについて所定のデータ単位でCRCコードを付与して送信する。これに対して、第一のCPUは受信したパラメータデータについて位置制御部10と同じ条件でCRCコードを生成すると共に、位置制御部10で生成されたCRCコードと一致するか判定を行う(ステップS102)。
このCRCコードは、生成する元となるデータが1ビットでも異なればコードも変化してしまう性質があるので、上記処理において送信前のパラメータのデータが何らかの異常により送信後に異なるデータに変化し或いは破損したかを判定することができる。
【0033】
そして、CRCコードが一致しない場合には、第一のCPU51は報知部33に対してパラメータの受信エラーを示す異常報知表示を行うように制御する(ステップS103)。異常報知後は第一及び第二のCPU51、52は他の処理を行わず、電源を再投入しない限り復旧しない状態となる。
一方、CRCコードが一致した場合には、第一のCPU51は、内部メモリ57に受信した各種パラメータのデータを格納し(ステップS104)、さらに、第二のCPU52に対して受信した各種パラメータのデータとそのCRCコードを送信する(ステップS105)。
【0034】
第一のCPU51からの各種パラメータのデータとCRCコードを受信すると、第二のCPU52は、受信したパラメータデータについて位置制御部10と同じ条件でCRCコードを生成すると共に、受信データのCRCコードと一致するか判定を行う(ステップS106)。
そして、CRCコードが一致しない場合には、第二のCPU52は報知部33に対してパラメータの受信エラーを示す異常報知表示を行うように制御する(ステップS107)。このときも、異常報知後は第一及び第二のCPU51、52は他の処理を行わず、電源を再投入しない限り復旧しない状態となる。
一方、CRCコードが一致した場合には、第二のCPU52は、内部メモリ58に受信した各種パラメータのデータを格納する(ステップS108)。
【0035】
また、第一のCPU51は、パラメータデータを内部メモリ57に格納後、バスを介して第二のCPU52に送信したパラメータデータとの相互比較を行い(ステップS109)、第二のCPU52は、パラメータデータを内部メモリ58に格納後、バスを介して第一のCPU51が保有するパラメータデータとの相互比較を行う(ステップS110)。
【0036】
そして、第一のCPU51は自己のパラメータデータと第二のCPU52のパラメータデータとの一致を判定し(ステップS111)、一致する場合にはパラメータ送信監視処理を終了し、一致しない場合には、第一のCPU51は報知部33に対してパラメータの受信エラーを示す異常報知表示を行うように制御する(ステップS113)。このときも、異常報知後は第一及び第二のCPU51、52は他の処理を行わず、電源を再投入しない限り復旧しない状態となる。
【0037】
また、同様にして、第二のCPU52は自己のパラメータデータと第一のCPU51のパラメータデータとの一致を判定し(ステップS112)、一致する場合にはパラメータ送信監視処理を終了し、一致しない場合には、第二のCPU52は報知部33に対してパラメータの受信エラーを示す異常報知表示を行うように制御する(ステップS114)。このときも、異常報知後は第一及び第二のCPU51、52は他の処理を行わず、電源を再投入しない限り復旧しない状態となる。
【0038】
(監視部におけるモータ制御監視処理)
図4は監視部50の各CPU51,52が行うロボット制御におけるサーボモータ制御の監視処理を示している。この処理はロボット110の動作制御時において、各CPU51,52のサンプリング周期に応じて定期的に実行される。
【0039】
まず、第一のCPU51は、送受信回路53を介してエンコーダ117に対して現在の検出角度位置を示す位置データの要求コマンドを送信する(ステップS201)。このとき、要求コマンドは、当該コマンドを一意に識別するためのシーケンス番号データを付加されてエンコーダ117に送信される。
【0040】
エンコーダ117は、要求コマンドを受信すると、エンコーダ117の現在の位置データを第一のCPU51へ返信する。このとき、エンコーダ117は要求コマンドに付加されたシーケンス番号と同じシーケンス番号のデータを付加して返信を行う。また、エンコーダ117は、前述したパラメータデータの送信エラーの判定に用いられたCRCコードと同じように、位置データについて所定のデータ単位でCRCコードを生成し、位置データに付与して送信する。
【0041】
そして、これにより、エンコーダ117から位置データを受信すると(ステップS202)、第一のCPU51は、受信した位置データに付加されたシーケンス番号が要求コマンドのシーケンス番号と一致するか判定を行う(ステップS203)。
かかるシーケンス番号判定により、エンコーダ117から返信された位置データが第一のCPU51からの要求コマンドに対して行われたものか識別することができる。例えば、返信されたシーケンス番号が以前の要求コマンドのシーケンス番号のものである場合には、前回の要求コマンドに対する返信が遅れたか、或いは、エンコーダ117が検出を停止してしまっている等の異常が発生していると判断することができる。
【0042】
従って、返信位置データに付加されたシーケンス番号が要求コマンドのシーケンス番号と一致しない状態が一定期間続いたときには、第一のCPU51は、マグネットスイッチ31に切替信号を出力し、サーボモータ116への通電を遮断させる(ステップS204)。
なお、マグネットスイッチ31は、複数あるサーボモータ116の全ての通電を遮断する。これにより、ロボット110は動作を停止する。
【0043】
一方、シーケンス番号が一致する場合は、第一のCPU51は受信した位置データについてエンコーダ117と同じ条件でCRCコードを生成すると共に、エンコーダ117で生成されたCRCコードと一致するか判定を行う(ステップS205)。
そして、CRCコードが一致しない場合には、送受信回路53に異常が発生しているか送受信回路53と第一のCPU51との間の回路に異常が生じているものとして、マグネットスイッチ31に切替信号を出力し、全てのサーボモータ116への通電を遮断して、ロボット110を停止させる(ステップS206)。
【0044】
一方、CRCコードが一致した場合には、第一のCPU51は、第二のCPU52に対して受信した位置データとそのCRCコードを送信する(ステップS207)。
そして、第一のCPU51からの位置データとCRCコードを受信すると、第二のCPU52は、受信した位置データについてエンコーダ117と同じ条件でCRCコードを生成すると共に、当該生成したCRCコードと受信したCRCコードとが一致するか判定を行う(ステップS208)。
そして、CRCコードが一致しない場合には、第一のCPU51と第二のCPU52の通信手段であるバスか通信処理を行うソフトウェアに異常を生じているものとして第二のCPU52はマグネットスイッチ32に切替信号を出力し、全てのサーボモータ116への通電を遮断して、ロボット110を停止させる(ステップS209)。
【0045】
一方、第一のCPU51は、位置データを第二のCPU52に送信後、前述したステップS104の処理(図3)で位置制御部10から受信して内部メモリ57に格納したパラメータに含まれるエンコーダ117の出力コードと当該出力コードが示す検出角度位置との対応関係を示すテーブルを参照して、エンコーダ117の位置データを関節角度(角度位置)に変換すると共に内部メモリ57に記憶する(ステップS210)。
また、第二のCPU52も、位置データのCRCコードに異常がない場合に、前述したステップS108の処理(図3)で内部メモリ58に格納したパラメータ中のエンコーダ117の出力コードと関節角度との対応テーブルから、エンコーダ117の位置データを関節角度に変換すると共に内部メモリ58に記憶する(ステップS211)。
【0046】
そして、第一のCPU51は、関節角度の算出後、バスを介して、第二のCPU52が算出した関節角度との相互比較を行い(ステップS212)、第一のCPU51で求めた関節角度と第二のCPU52で求めた関節角度との一致を判定する(ステップS214)。
そして、相互の関節角度が一致しない場合には、第一のCPU51は、マグネットスイッチ31に切替信号を出力し、全てのサーボモータ116への通電を遮断して、ロボット110を停止させる(ステップS216)。
また、相互の関節角度が一致する場合には、第一のCPU51は、位置・速度監視処理、トルク監視処理、CPUの相互監視処理(いずれも詳細は後述する)を実行した後に、モータ制御監視処理を終了する。
【0047】
一方、第二のCPU52は、関節角度の算出後、バスを介して、第一のCPU51が算出した関節角度との相互比較を行い(ステップS213)、第二のCPU52で求めた関節角度と第一のCPU51で求めた関節角度との一致判定を行う(ステップS215)。
そして、相互の関節角度が一致しない場合には、第二のCPU52は、マグネットスイッチ32に切替信号を出力し、全てのサーボモータ116への通電を遮断して、ロボット110を停止させる(ステップS217)。
また、相互の関節角度が一致する場合には、第二のCPU52は、位置・速度監視処理、トルク監視処理、CPUの相互監視処理(いずれも詳細は後述する)を実行した後に、モータ制御監視処理を終了する。
【0048】
(監視部における位置・速度監視処理)
図5は監視部50の各CPU51,52が行うサーボモータ制御の監視処理の中で行われる位置・速度監視処理を示している。
まず、第一のCPU51は自己の演算により求められた関節角度が、第二のCPU52で求めた関節角度と一致する場合(図4のステップS214参照)に、その演算関節角度の値を、内部メモリ57に格納していたパラメータに含まれる関節角度の動作上限値と比較する(ステップS301)。
同様に、第二のCPU52は、自己の演算により求められた関節角度が、第一のCPU51で求めた関節角度と一致する場合(図4のステップS215参照)に、演算関節角度の値を、内部メモリ58に格納していたパラメータに含まれる関節角度の動作上限値と比較する(ステップS302)。
【0049】
そして、第一のCPU51は、関節角度の値が動作上限値を超えていた場合に、マグネットスイッチ31に切替信号を出力し、ロボット110を停止させる(ステップS303)。
同様に、第二のCPU52は、関節角度の値が動作上限値を超えていた場合に、マグネットスイッチ32に切替信号を出力し、ロボット110を停止させる(ステップS304)。
【0050】
一方、第一のCPU51は、演算関節角度の値が動作上限値を超えていない場合には、その演算関節角度の値を、内部メモリ57に格納していたパラメータに含まれる関節角度の動作下限値と比較する(ステップS305)。
同様に、第二のCPU52は、演算関節角度の値が動作上限値を超えていない場合には、その演算関節角度の値を、内部メモリ58に格納していたパラメータに含まれる関節角度の動作下限値と比較する(ステップS306)。
【0051】
そして、第一のCPU51は、演算関節角度の値が動作下限値に満たない場合に、マグネットスイッチ31に切替信号を出力し、ロボット110を停止させる(ステップS307)。
同様に、第二のCPU52は、演算関節角度の値が動作下限値に満たない場合に、マグネットスイッチ32に切替信号を出力し、ロボット110を停止させる(ステップS308)。
【0052】
また、第一のCPU51は、演算関節角度の値が動作下限値以上の場合には、前回の処理で内部メモリ57に記憶された関節角度との差分を求め、前回の処理からの経過時間と差分とから関節動作速度を算出する(ステップS309)。
同様に、第二のCPU52は、演算関節角度の値が動作下限値以上の場合には、前回の処理で内部メモリ58に記憶された関節角度との差分を求め、前回の処理からの経過時間と差分とから関節動作速度を算出する(ステップS310)。
【0053】
そして、第一のCPU51は、関節動作速度の算出後、バスを介して、第二のCPU52で算出した関節動作速度との相互比較を行い(ステップS311)、第一のCPU51で求めた関節動作速度と第二のCPU52で求めた関節動作速度との一致判定を行う(ステップS313)。
同様に、第二のCPU52は、関節動作速度の算出後、バスを介して、第一のCPU51が算出した関節動作速度との相互比較を行い(ステップS312)、第二のCPU52で求めた関節動作速度と第一のCPU51で求めた関節動作速度との一致判定を行う(ステップS314)。
【0054】
そして、相互の関節動作速度が一致しない場合には、第一のCPU51は、マグネットスイッチ31に切替信号を出力し、全てのサーボモータ116への通電を遮断して、ロボット110を停止させる(ステップS315)。
同様に、相互の関節動作速度が一致しない場合には、第二のCPU52は、マグネットスイッチ32に切替信号を出力し、全てのサーボモータ116への通電を遮断して、ロボット110を停止させる(ステップS316)。
【0055】
一方、相互の関節動作速度が一致した場合には、第一のCPU51は関節動作速度の値を、内部メモリ57に格納していたパラメータに含まれる関節動作速度の上限値と比較する(ステップS317)。
同様に、相互の関節動作速度が一致した場合には、第二のCPU52は関節動作速度の値を、内部メモリ58に格納していたパラメータに含まれる関節動作速度の上限値と比較する(ステップS318)。
【0056】
そして、第一のCPU51は、関節動作速度の値が上限値を超えていた場合に、マグネットスイッチ31に切替信号を出力し、ロボット110を停止させる(ステップS319)。また、関節動作速度の値が上限値を超えていない場合には、第一のCPU51は位置・速度監視処理を終了する。
同様に、第二のCPU52は、関節動作速度の値が上限値を超えていた場合に、マグネットスイッチ32に切替信号を出力し、ロボット110を停止させる(ステップS320)。また、関節動作速度の値が上限値を超えていない場合には、第二のCPU52は位置・速度監視処理を終了する。
【0057】
(監視部におけるトルク監視処理)
図6は監視部50の各CPU51,52が行うサーボモータ制御の監視処理の中で行われるトルク監視処理を示している。
まず、第一のCPU51は、位置・速度監視処理の後に、トルク検出回路54を通じてサーボアンプ20で制御されているサーボモータ116のトルクを検出する(ステップS401)。
そして、検出されたサーボモータ116のトルクデータを第一のCPU51はバスを介して第二のCPU51に送信する(ステップS402,S403)。
【0058】
そして、第一のCPU51は、トルクデータの送信後、バスを介して、第二のCPU52が受信したトルクデータとの相互比較を行い(ステップS404)、第一のCPU51の送信前のトルクデータと第二のCPU52に送信されたトルクデータとの一致判定を行う(ステップS406)。
同様に、第二のCPU52は、トルクデータの受信後、バスを介して、第一のCPU51の保有するトルクデータとの相互比較を行い(ステップS405)、第一のCPU51の送信前のトルクデータと第二のCPU52が受信したトルクデータとの一致判定を行う(ステップS407)。
【0059】
そして、相互のトルクデータの示す値が一致しない場合には、第一のCPU51は、マグネットスイッチ31に切替信号を出力し、全てのサーボモータ116への通電を遮断して、ロボット110を停止させる(ステップS408)。
同様に、相互のトルクデータの示す値が一致しない場合には、第二のCPU52は、マグネットスイッチ32に切替信号を出力し、全てのサーボモータ116への通電を遮断して、ロボット110を停止させる(ステップS409)。
【0060】
一方、相互のトルクデータの示す値が一致した場合には、第一のCPU51はトルクデータの示す値を、内部メモリ57に格納していたパラメータに含まれるトルクの上限値と比較する(ステップS410)。
同様に、相互のトルクデータの示す値が一致した場合には、第二のCPU52はトルクデータの示す値を、内部メモリ58に格納していたパラメータに含まれるトルクの上限値と比較する(ステップS411)。
【0061】
そして、第一のCPU51は、トルクデータの示す値が上限値を超えていた場合に、マグネットスイッチ31に切替信号を出力し、ロボット110を停止させる(ステップS412)。また、トルクデータの示す値が上限値を超えていない場合には、第一のCPU51はトルク監視処理を終了する。
同様に、第二のCPU52は、トルクデータの示す値が上限値を超えていた場合に、マグネットスイッチ32に切替信号を出力し、ロボット110を停止させる(ステップS413)。また、トルクデータの示す値が上限値を超えていない場合には、第二のCPU52はトルク監視処理を終了する。
【0062】
(監視部におけるCPUの相互監視処理)
サーボモータ制御の監視処理において、トルク監視処理が終了すると、最後にCPUの相互監視処理が実行される。
かかる処理では、第一のCPU51が、第二のCPU52の監視を行っているウォッチドッグ回路56にアクセスし、第二のCPU52の停止状態を示すエラー信号を出力しているかを判定する。その結果、ウォッチドッグ回路56がエラー信号を出力している場合に、第一のCPU51は、マグネットスイッチ31に切替信号を出力し、ロボット110を停止させる。また、ウォッチドッグ回路56がタイムアップ信号を出力していない場合には、第一のCPU51はCPUの相互監視処理を終了する。
一方、第二のCPU52が、第一のCPU51の監視を行っているウォッチドッグ回路55にアクセスし、第一のCPU51の停止状態を示すエラー信号を出力しているかを判定する。その結果、ウォッチドッグ回路55がエラー信号を出力している場合に、第二のCPU52は、マグネットスイッチ32に切替信号を出力し、ロボット110を停止させる。また、ウォッチドッグ回路55がタイムアップ信号を出力していない場合には、第二のCPU52はCPUの相互監視処理を終了する。
【0063】
(ロボット制御装置の全体的な動作)
上記構成により、ロボット制御装置100の位置制御部10は、教示動作データに基づく動作を行うように制御指令を順番に出力し、サーボアンプ20を介してロボット110の各関節113のサーボモータ116の動作制御を行う。このとき、サーボアンプ20では、各関節113のエンコーダ117からの検出信号に基づいてフィードバック制御が実行される。
【0064】
一方、監視部50は、ロボット110の動作開始前に、ロボット制御における各種のパラメータを位置制御部から取得し、ロボット110の動作制御の際には、所定のサンプリング間隔で、各エンコーダ117から関節角度(位置データ)の受信を行う。そして、データ受信の異常の発生、関節角度、動作速度、トルクの異常の発生、各CPU51,52の異常の発生の監視がロボット110の動作中においてサンプリング間隔で繰り返し実行される。
【0065】
(実施形態の効果)
以上のように、ロボット制御装置100では、監視部50の二つのCPU51,52のそれぞれが、位置制御部から取得したロボット制御における各種のパラメータをCRCコードを用いてデータの破損確認を行うと共に、二つのCPU51,52が相互の各パラメータの一致確認を行うため、エンコーダから各CPU51,52まで伝達されるまでの過程での位置データの異常の発生が厳重に監視され、異常のあるパラメータに基づくロボット110の誤動作の発生を効果的に抑制することが可能となる。
【0066】
また、監視部50の第一のCPU51が、各エンコーダ117からの位置データの受信に際し、シーケンス番号による要求コマンドとの一致の確認が行われるため、エンコーダ117の異常により誤った位置データに基づくロボット110の誤動作の発生を効果的に抑制することが可能となる。
さらに、エンコーダ117からの位置データに対してCRCコードを用いて、データの破損確認を二つのCPU51,52でそれぞれが行い、さらには、二つのCPU51,52が相互の位置データの一致確認を行うため、エンコーダから各CPU51,52まで伝達されるまでの過程での位置データの異常の発生が厳重に監視され、異常のある位置データに基づくロボット110の誤動作の発生をより効果的に抑制することが可能となる。
【0067】
また、エンコーダ117からの位置データに基づいて各CPU51,52が求め或いは取得した各関節の関節角度、動作速度、サーボモータ116のトルクについて、各CPU51,52の相互間で一致確認が行われ、さらには、関節角度、動作速度、トルクのそれぞれに設定された上限値を越えるか(或いは下限値を下回るか)否かの判定が二つのCPU51,52により行われるので、それぞれの監視が二系統で行われることとなり、いずれか一方のCPUが故障や不良を生じても、他方のCPUがサーボモータ116を停止させることができ、関節角度、動作速度、トルクのそれぞれが許容値を超える異常動作をより確実に防止することが可能となる。
【0068】
また、監視部50には、各CPU51,52を個別に監視するウォッチドッグ回路55,56が設けられているので、いずれか一方のCPUが不慮の停止状態に陥っても、他方のCPUが速やかにこれを検出し、ロボットの動作制御の監視が単一系統に陥る状態を回避し、常に二系統による監視状態でのみ各サーボモータ116を駆動させることができ、ロボットの異常動作をより確実に防止することが可能となる。
【0069】
(その他)
上記構成では、図1において、サーボモータ116及びエンコーダ117が一組しか図示されていないが、これらは各関節113ごとに設けられている。従って、監視部50は、図3から図6に示す全ての処理を、タイミングをずらして各サーボモータ116ごとに実行していることはいうまでもない。
【0070】
また、上記構成では、監視部50の第二のCPU52が各エンコーダ117からの位置データを第一のCPU51を介して受信する構成となっているが、第二のCPU52が第一のCPU51を介することなくエンコーダ117から直接受信する構成としても良い。その場合、第二のCPU52もエンコーダ117からの位置データに対してシーケンス番号による確認処理を実行することが望ましい。
【0071】
また、制御対象となるロボットは回動、回転関節のみを有するものに限られず、例えば直動式の関節を有するロボットを制御対象としても良い。その場合、関節角度ではなく、位置データから直進方向の移動量を求め、これを監視する構成とすることが望ましい。
【図面の簡単な説明】
【0072】
【図1】本発明の実施形態たるロボット制御装置の全体構成図である。
【図2】図1に開示した監視部のより詳細なブロック図である。
【図3】監視部の各CPUが行う各種のパラメータの送信監視処理のフローチャートを示す。
【図4】監視部の各CPUが行うサーボモータ制御の監視処理のフローチャートを示す。
【図5】監視部の各CPUが行うの監視処理中で行われる位置・速度監視処理のフローチャートを示す。
【図6】監視部の各CPUが行うの監視処理中で行われるトルク監視処理のフローチャートを示す。
【符号の説明】
【0073】
10 位置制御部(サーボ制御部)
20 サーボアンプ(サーボ制御部)
31,32 マグネットスイッチ(切り替え部)
50 監視部
51 第一のCPU(処理演算部)
52 第二のCPU(処理演算部)
100 ロボット制御装置
110 ロボット
116 サーボモータ
117 エンコーダ

【特許請求の範囲】
【請求項1】
ロボットを駆動するサーボモータを前記ロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、
前記サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、
所定の監視条件に応じて前記切り替え部を通じてサーボモータを停止させる監視部とを備え、
前記監視部は二つの処理演算部を有し、
当該各処理演算部は、それぞれ個別に、前記監視条件として、前記位置検出手段からの検出出力を適正に受信したか否かを判定すると共に適正に受信していないと判定した場合に前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とするロボット制御装置。
【請求項2】
ロボットを駆動するサーボモータを前記ロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、
前記サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、
所定の監視条件に応じて前記切り替え部を通じてサーボモータを停止させる監視部とを備え、
前記監視部は二つの処理演算部を有し、
当該各処理演算部は、それぞれ個別に、前記監視条件として、前記位置検出手段からの検出出力に基づく動作位置が許容動作位置を越えるか否かを判定すると共に許容動作位置を越える場合に前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とするロボット制御装置。
【請求項3】
前記各処理演算部は、それぞれ個別に、前記監視条件として、前記位置検出手段からの検出出力に基づく動作速度が許容速度を越えるか否かを判定すると共に許容速度を越える場合に前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とする請求項2記載のロボット制御装置。
【請求項4】
ロボットを駆動するサーボモータを前記ロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、
前記サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、
所定の監視条件に応じて前記切り替え部を通じてサーボモータを停止させる監視部とを備え、
前記監視部は二つの処理演算部を有し、
当該各処理演算部は、それぞれ個別に、前記監視条件として、前記サーボ制御部が制御するサーボアンプによるトルク出力が許容値内を越えるか否かを判定すると共に許容値内を越える場合に前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とするロボット制御装置。
【請求項5】
前記監視部は、前記二つの処理演算部が取得した前記監視条件の判断の対象となるものの値が一致しないときに、前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とする請求項2,3又は4記載のロボット制御装置。
【請求項6】
前記各処理演算部に対して処理の不良停止状態の発生を検出するウォッチドッグ回路が前記各処理演算部ごとに併設され、
前記各処理演算部が、他方の処理演算部の監視回路を通じて不良停止状態を検知すると、前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とする請求項1から5のいずれか一項に記載のロボット制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2007−136617(P2007−136617A)
【公開日】平成19年6月7日(2007.6.7)
【国際特許分類】
【出願番号】特願2005−334152(P2005−334152)
【出願日】平成17年11月18日(2005.11.18)
【出願人】(000005197)株式会社不二越 (625)
【出願人】(000000262)株式会社ダイヘン (990)
【Fターム(参考)】