(57)【要約】【課題】ロボットの異常動作、誤動作を防止する。【解決手段】ロボット１１０を駆動するサーボモータ１１６を位置検出手段１１７からの検出出力に応じて制御するサーボ制御部１０，２０と、サーボモータに対する通電と遮断とを切り替え可能な切り替え部３１，３２と、サーボモータを監視する監視部５０とを備え、監視部は二つの処理演算部５１，５２を有し、当該各処理演算部は、それぞれ個別に、位置検出手段が示す動作位置が許容動作位置を越えるか否かを判定して許容動作位置を越える場合に切り替え部によりサーボモータの通電を遮断する処理を行う。【選択図】図２
2007136617.tif 000002
【特許請求の範囲】
【請求項１】
ロボットを駆動するサーボモータを前記ロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、
前記サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、
所定の監視条件に応じて前記切り替え部を通じてサーボモータを停止させる監視部とを備え、
前記監視部は二つの処理演算部を有し、
当該各処理演算部は、それぞれ個別に、前記監視条件として、前記位置検出手段からの検出出力を適正に受信したか否かを判定すると共に適正に受信していないと判定した場合に前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とするロボット制御装置。
【請求項２】
ロボットを駆動するサーボモータを前記ロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、
前記サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、
所定の監視条件に応じて前記切り替え部を通じてサーボモータを停止させる監視部とを備え、
前記監視部は二つの処理演算部を有し、
当該各処理演算部は、それぞれ個別に、前記監視条件として、前記位置検出手段からの検出出力に基づく動作位置が許容動作位置を越えるか否かを判定すると共に許容動作位置を越える場合に前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とするロボット制御装置。
【請求項３】
前記各処理演算部は、それぞれ個別に、前記監視条件として、前記位置検出手段からの検出出力に基づく動作速度が許容速度を越えるか否かを判定すると共に許容速度を越える場合に前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とする請求項２記載のロボット制御装置。
【請求項４】
ロボットを駆動するサーボモータを前記ロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、
前記サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、
所定の監視条件に応じて前記切り替え部を通じてサーボモータを停止させる監視部とを備え、
前記監視部は二つの処理演算部を有し、
当該各処理演算部は、それぞれ個別に、前記監視条件として、前記サーボ制御部が制御するサーボアンプによるトルク出力が許容値内を越えるか否かを判定すると共に許容値内を越える場合に前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とするロボット制御装置。
【請求項５】
前記監視部は、前記二つの処理演算部が取得した前記監視条件の判断の対象となるものの値が一致しないときに、前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とする請求項２，３又は４記載のロボット制御装置。
【請求項６】
前記各処理演算部に対して処理の不良停止状態の発生を検出するウォッチドッグ回路が前記各処理演算部ごとに併設され、
前記各処理演算部が、他方の処理演算部の監視回路を通じて不良停止状態を検知すると、前記切り替え部により前記サーボモータに対する電力の供給を遮断する処理を行うことを特徴とする請求項１から５のいずれか一項に記載のロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、産業用ロボットの位置、速度、トルクを監視するロボット制御装置に関する。
【背景技術】
【０００２】
一般的に産業用ロボットは、各部の動作の駆動源となるサーボモータと、各サーボモータの動作量を検出するパルスジェネレータ等の位置検出器とを備えている。
そして、従来のロボット制御装置は、前記位置検出器からのデータを読み取ることでロボットの位置や速度を監視していた。
即ち、従来のロボット制御装置は、パルスジェネレータからのパルスを計測するカウンタ回路と、設定されたモータ速度の上限値とカウントパルス数とを比較する比較回路と、比較回路における比較タイミングの異常をチェックするタイミングチェック回路と、サーボモータへの電源の接続又は遮断を切り替えるリレーなどを有し、速度異常或いはタイミング異常などが発生するとサーボモータと電源との接続を遮断していた（例えば、特許文献１参照）。
【特許文献１】特開平１０−２５４５２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記従来例では、位置検出器からのパルスの計測及び監視を、単一の系統からなる監視手段で行っているため、当該監視手段に異常を生じた場合、モータの速度が許容される上限値を超える等の異常を検出することができなくなるおそれがあり、ロボットを緊急停止させることができない可能性があるという不都合があった。
【０００４】
本発明は、ロボットの位置、速度、トルクを常に的確に監視することをその目的とする。
【課題を解決するための手段】
【０００５】
請求項１記載の発明は、ロボットを駆動するサーボモータをロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、所定の監視条件に応じて切り替え部を通じてサーボモータを停止させる監視部とを備え、監視部は二つの処理演算部を有し、当該各処理演算部は、それぞれ個別に、監視条件として、位置検出手段からの検出出力を適正に受信したか否かを判定すると共に適正に受信していないと判定した場合に切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【０００６】
請求項２記載の発明は、ロボットを駆動するサーボモータをロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、所定の監視条件に応じて切り替え部を通じてサーボモータを停止させる監視部とを備え、監視部は二つの処理演算部を有し、当該各処理演算部は、それぞれ個別に、監視条件として、位置検出手段からの検出出力に基づく動作位置が許容動作位置を越えるか否かを判定すると共に許容動作位置を越える場合に切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【０００７】
請求項３記載の発明は、請求項２記載の発明と同様の構成を備えると共に、各処理演算部は、それぞれ個別に、監視条件として、位置検出手段からの検出出力に基づく動作速度が許容速度を越えるか否かを判定すると共に許容速度を越える場合に切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【０００８】
請求項４記載の発明は、ロボットを駆動するサーボモータをロボットに設けられた位置検出手段からの検出出力に応じて制御するサーボ制御部と、サーボモータに対する電力の供給と遮断とを切り替え可能な切り替え部と、所定の監視条件に応じて切り替え部を通じてサーボモータを停止させる監視部とを備え、監視部は二つの処理演算部を有し、当該各処理演算部は、それぞれ個別に、監視条件として、サーボ制御部が制御するサーボアンプによるトルク出力が許容値内を越えるか否かを判定すると共に許容値内を越える場合に切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【０００９】
請求項５記載の発明は、請求項２，３又は４記載の発明と同様の構成を備えると共に、監視部は、二つの処理演算部が取得した監視条件の判断の対象となるものの値が一致しないときに、切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【００１０】
請求項６記載の発明は、請求項１から５のいずれか一項に記載の発明と同様の構成を備えると共に、各処理演算部に対して処理の不良停止状態の発生を検出するウォッチドッグ回路が各処理演算部ごとに併設され、各処理演算部が、他方の処理演算部の監視回路を通じて不良停止状態を検知すると、切り替え部によりサーボモータに対する電力の供給を遮断する処理を行う、という構成を採っている。
【発明の効果】
【００１１】
請求項１記載の発明では、サーボ制御部の動作制御によりロボットのサーボモータが駆動を行い、これに伴い位置検出部はサーボモータの駆動に伴い変化する動作位置（サーボモータにより変化するロボットの各部の位置、角度、位置変化量又は角度変化量等）を検出する。
そして、各処理演算部は、位置検出部から送信された検出信号に付された内容の確認用のコードを読み取り、コードの示す内容と受信した内容との一致判定をそれぞれが個別に行い、いずれか一方の処理演算部のみが不一致と判定した場合でもサーボモータが停止される。
つまり、サーボモータの動作の監視が二つの処理演算部により二系統で行われるので、いずれか一方が故障や不良を生じても、他方の処理演算部がサーボモータを停止させることができ、位置検出部から正しく検出出力が伝わらないことによる異常動作をより確実に防止することが可能となる。
【００１２】
請求項２記載の発明では、サーボ制御部の動作制御によりロボットのサーボモータが駆動を行い、これに伴い位置検出部はサーボモータの駆動に伴い変化する動作位置（サーボモータにより変化するロボットの各部の位置、角度、位置変化量又は角度変化量等）を検出する。
そして、各処理演算部は、検出された動作位置が予め設定された許容動作位置内か否かの判定をそれぞれが個別に行い、いずれか一方の処理演算部のみが許容動作位置外と判定した場合でもサーボモータが停止される。
つまり、サーボモータの動作の監視が二つの処理演算部により二系統で行われるので、いずれか一方が故障や不良を生じても、他方の処理演算部がサーボモータを停止させることができ、許容動作位置を超える異常動作をより確実に防止することが可能となる。
なお、許容動作位置とは、サーボモータの仕様や特性等のロボットの内的要因で定まるものでも良いし、作動時の接触防止など周囲環境やロボットの外的要因で定まるものであっても良い。
【００１３】
請求項３記載の発明では、位置検出部の検出出力からサーボモータの駆動に伴うロボットの各部の動作速度が求められると、各処理演算部は、動作速度が許容速度内か否かの判定をそれぞれが個別に行い、いずれか一方の処理演算部のみが許容速度範囲外と判定した場合でもサーボモータが停止される。
つまり、サーボモータの速度の監視が二つの処理演算部により二系統で行われるので、いずれか一方が故障や不良を生じても、他方の処理演算部がサーボモータを停止させることができ、許容速度を超える異常動作をより確実に防止することが可能となる。
【００１４】
請求項４記載の発明では、サーボアンプからサーボモータの駆動に伴うロボットの各部のトルク出力が求められると、各処理演算部は、トルク出力が許容値を越えるか否かの判定をそれぞれが個別に行い、いずれか一方の処理演算部のみが許容値を越えると判定した場合でもサーボモータが停止される。
つまり、サーボモータのトルク出力の監視が二つの処理演算部により二系統で行われるので、いずれか一方が故障や不良を生じても、他方の処理演算部がサーボモータを停止させることができ、許容トルク値を超える異常動作をより確実に防止することが可能となる。
【００１５】
請求項５記載の発明では、二つの処理演算部が、算出或いは外部からの入力により、監視条件の判断の対象となるものの値（サーボモータの動作位置、動作速度又はトルク値のいずれか）を取得した場合に、各々が取得した監視対象の値の比較を行い、一致しない場合にサーボモータが停止される。
つまり、各処理演算部が取得する監視対象の値の不一致を監視することで、情報伝達系統の異常やいずれか一方の処理演算部の故障を検知することができ、監視部の異常によるサーボモータの異常動作をより確実に防止することが可能となる。
なお、監視対象の値の一致の判断はいずれか一方の処理演算部が行っても良いし、双方の処理演算部が行っても良い。
【００１６】
請求項６記載の発明では、各処理演算部ごとに設けられたウォッチドッグ回路が、処理演算部の不良停止状態の検知を行う。不良停止状態とは、処理演算部が処理を実行すべき際に処理を行わなくなった状態をいう。
そして、いずれか一方の処理演算部が他方の処理演算部を監視するウォッチドッグ回路を通じて不良停止状態の発生を検知すると、サーボモータを停止させる。
これにより、いずれか一方の処理演算部が不良停止して、残り一方の処理演算部のみによるサーボモータの監視状態が回避され、二系統による監視状態でのみサーボモータを駆動させることができ、サーボモータの異常動作をより確実に防止することが可能となる。
【発明を実施するための最良の形態】
【００１７】
（発明の実施形態の全体構成）
本発明の実施の形態を図１乃至図６に基づいて説明する。図１は、本発明の実施形態の概略構成図である。
上記実施形態では、作業目的に応じたツール１１５を先端部で保持すると共に当該ツール１１５を任意の位置に移動させ或いは任意の向きに向ける動作を行うロボット１１０の動作制御を行うロボット制御装置１００を示している。
【００１８】
（ロボット）
制御対象となるロボット１１０は、土台となるベース１１１と、複数の関節１１３で連結された複数のアーム１１２と、各関節１１３ごとに設けられた駆動源としてのサーボモータ１１６と、各サーボモータの軸角度をそれぞれ検出する位置検出手段としてのエンコーダ１１７とを備えている。そして、連結されたアーム１１２の最先端部にはロボット１１０の用途に応じたツール１１５（例えば溶接ガンやハンド等）が装備される。
上記各関節１１３は、アーム１１２の一端部を揺動可能として他端部を軸支する揺動関節と、アーム１１２自身をその長手方向を中心に回転可能に軸支する回転関節とのいずれかから構成される。つまり、本実施形態におけるロボット１１０はいわゆる多関節型ロボットに相当する。
また、ロボット１１０は、六つの関節１１３を具備しており、その先端部のツール１１５を任意の位置に位置決めし任意の姿勢を取らせることが可能となっている。
【００１９】
（ロボット制御装置）
ロボット制御装置１００は、ティーチング或いはプログラミングにより設定されたロボットの教示動作データに従ってロボットの制御指令を出力する位置制御部１０と、位置制御部１０からの制御指令に従ってロボット１１０の各サーボモータ１１６の制御を行うサーボアンプ２０と、電源から各サーボモータ１１６への電力の供給と遮断とを切り替え可能な切り替え部としてのマグネットスイッチ３１，３２と、ロボット１１０の制御情報を監視して所定条件に応じて各マグネットスイッチ３１，３２を通じてサーボモータ１１６を停止させる監視部５０と、監視部５０により異常検知が行われた場合にオペレータに異常発生を報知するための報知部３３とを備えている。
【００２０】
（位置制御部）
位置制御部１０は、ロボット１１０の動作制御を行うために各サーボモータ１１６に対する制御指令を生成するための各種の処理プログラム及び各種のデータが記憶されたメモリと、処理プログラムを実行するＣＰＵと、サーボアンプ２０との指令やデータの送受信を行うためのインターフェイスとを主に備えている。
【００２１】
上記メモリには、ロボット１１０の各種の処理プログラムの他、設定されたロボットの教示動作データ、ロボット１１０に関する各種のパラメータ（各部の寸法、重量、イナーシャ、エンコーダ１１７の出力コードと当該出力コードが示す関節角度（角度位置）との対応関係を示すテーブル、ロボットの各関節１１３における関節角度の上限値、下限値（許容動作位置）、各関節１１３の関節動作速度の上限値（許容速度）、各関節１１３のトルクの上限値（許容値）等）が記憶されている。
上記教示動作データは、ロボット１１０が所定の動作を実行するための制御指令であり、例えば、事前にロボット１１０に目的となる動作（ティーチング）を行わせ、当該動作軌跡の各点で関節角度のサンプリングを行い、その実行動作を再現するために演算により求められた移動軌跡のデータである。
位置制御部１０のＣＰＵは、ロボット１１０の制御の際には、上記教示動作データに基づいて、サーボアンプ２０に対して各サーボモータの位置指令を所定の周期で順番に出力する。
なお、上記教示動作データは、ティーチングに限らず、記録メディアの読み出し装置、オペレータによる入力装置又は外部に対する通信手段によりロボット制御装置１００の外部からを取得される場合もある。
【００２２】
また、メモリ内の各種のパラメータである各部の寸法、重量、イナーシャ、エンコーダ１１７の出力コードと当該出力コードが示す関節角度との対応関係を示すテーブル、ロボットの各関節１１３における関節角度の上限値、下限値、各関節１１３の関節動作速度の上限値、各関節１１３のトルクの上限値等のデータは、監視部５０に出力される。その際、ＣＰＵは、各データについて所定のデータ単位ごとにＣＲＣコード（Cyclic Redundancy Check）を生成し、これを添付して監視部５０に送信する。
【００２３】
（サーボアンプ）
サーボアンプ２０は、ロボット１１０の各関節１１３のエンコーダ１１７から回転角度位置の検出信号を受信する受信回路と、各サーボモータ１１６に対する制御信号と帰還信号の送受信を行うモータ制御回路とを備えている。そして、サーボアンプ２０は、位置制御部１０から入力される位置指令と各エンコーダ１１７の検出信号と各サーボモータ１１６からの帰還信号とに基づいて、各サーボモータ１１６の位置、速度、トルクについてフィードバック制御を行う。
なお、このサーボアンプ２０と位置制御部１０とが、サーボモータ１１６をエンコーダ１１７からの検出出力に応じて制御するサーボ制御部として機能する。
【００２４】
（報知部）
報知部３３は、後述する監視部５０の処理において異常を検知したときに、その異常をオペレータに報知するための表示手段である。具体的には、異常発生を表示するモニタ、報知ランプ又は警報機等が報知部３３として使用される。
【００２５】
（監視部）
図２は監視部５０のより詳細な構成を示すブロック図である。即ち、この監視部５０は、後述する各種の処理を実行する二つの処理演算部としての第一及び第二のＣＰＵ５１，５２と、ロボット１１０の各エンコーダ１１７から各種信号を受信すると共に各ＣＰＵ５１，５２からの各種コマンド及びデータを送信する送受信回路５３と、各サーボモータ１１６から帰還信号の受信を行うトルク検出回路５４と、第一と第二のＣＰＵ５１，５２の演算処理の実行状態を個別に監視するウォッチドッグ回路５５，５６とを備えている。
【００２６】
上記各ＣＰＵ５１，５２は、それぞれ内部メモリ５７，５８を有しており、各内部メモリ５７，５８は、ＣＰＵ５１，５２がそれぞれ実行する処理プログラムを記憶すると共に各処理における作業領域として機能する。
また、第一のＣＰＵ５１と第二のＣＰＵ５２とは、それぞれのデータの送受信を行う通信手段であるバスにより互いに接続されている。
なお、各ＣＰＵ５１，５２が行う処理の詳細については、図３〜図６のフローチャートにより後述することとする。
【００２７】
送受信回路５３は、第一のＣＰＵ５１からの指令に従い、エンコーダ１１７に対する検出信号出力の要求コマンドと当該要求コマンドを一意に識別するためのシーケンス番号データとをエンコーダ１１７に送信する。このシーケンス番号は、周期的に行われる位置データの要求コマンド出力のたびに順次1ずつ加算されて付加されるので、各要求コマンドごとに重複するシーケンス番号が付加されないようになっている。
一方、エンコーダ１１７は、シーケンス番号が付加された要求コマンドを受けると同じシーケンス番号を付加して検出した位置データの返信を行う。これにより、送受信回路５３では、位置データに付加されたシーケンス番号を参照することで、いずれの要求コマンドに対する検出位置データなのかを識別することができる。また、シーケンス番号の不一致により、エンコーダ１１７の異常を検知することが可能となっている。
【００２８】
トルク検出回路５４は、サーボアンプ２０においてサーボモータ１１６に通電される電流値の検出を行い、これに基づくサーボモータ１１６のトルク値を求めて第一のＣＰＵ５１に出力を行う。
【００２９】
ウォッチドッグ回路５５は第一のＣＰＵ５１を監視し、ウォッチドッグ回路５６は第二のＣＰＵ５２の監視を行う。
即ち、各ウォッチドッグ回路５５，５６は、ロボット１１０の制御実行時において、それぞれが監視対象とするＣＰＵ５１，５２に対して周期的にウォッチドッグ要求信号を出力し、これに対して各ＣＰＵ５１，５２が所定期間内に応答信号を返信しないときには、監視対象であるＣＰＵ５１，５２が停止しているものとして、タイムアップ信号を監視対象ではないＣＰＵ５２，５１に出力する機能を有している。
【００３０】
（監視部におけるパラメータ送信監視処理）
図３は監視部５０の各ＣＰＵ５１，５２が行うロボット制御における各種のパラメータ（各部の寸法、重量、イナーシャ、エンコーダ１１７の出力コードと当該出力コードが示す関節角度の対応関係を示すテーブル、ロボットの各関節１１３における関節角度の上限値、下限値、各関節１１３の関節動作速度の上限値、各関節１１３のトルクの上限値等）の送信監視処理を示している。
監視部５０は、ロボット１１０の動作開始前に、予め後述する監視処理を行うための各種パラメータを位置制御部１０から送信される。
【００３１】
まず、第一のＣＰＵ５１は、位置制御部１０のＣＰＵに対してパラメータの要求を行い、その結果、位置制御部１０から各種のパラメータを受信する（ステップＳ１０１）。
【００３２】
このとき、位置制御部１０のＣＰＵは各パラメータについて所定のデータ単位でＣＲＣコードを付与して送信する。これに対して、第一のＣＰＵは受信したパラメータデータについて位置制御部１０と同じ条件でＣＲＣコードを生成すると共に、位置制御部１０で生成されたＣＲＣコードと一致するか判定を行う（ステップＳ１０２）。
このＣＲＣコードは、生成する元となるデータが1ビットでも異なればコードも変化してしまう性質があるので、上記処理において送信前のパラメータのデータが何らかの異常により送信後に異なるデータに変化し或いは破損したかを判定することができる。
【００３３】
そして、ＣＲＣコードが一致しない場合には、第一のＣＰＵ５１は報知部３３に対してパラメータの受信エラーを示す異常報知表示を行うように制御する（ステップＳ１０３）。異常報知後は第一及び第二のＣＰＵ５１、５２は他の処理を行わず、電源を再投入しない限り復旧しない状態となる。
一方、ＣＲＣコードが一致した場合には、第一のＣＰＵ５１は、内部メモリ５７に受信した各種パラメータのデータを格納し（ステップＳ１０４）、さらに、第二のＣＰＵ５２に対して受信した各種パラメータのデータとそのＣＲＣコードを送信する（ステップＳ１０５）。
【００３４】
第一のＣＰＵ５１からの各種パラメータのデータとＣＲＣコードを受信すると、第二のＣＰＵ５２は、受信したパラメータデータについて位置制御部１０と同じ条件でＣＲＣコードを生成すると共に、受信データのＣＲＣコードと一致するか判定を行う（ステップＳ１０６）。
そして、ＣＲＣコードが一致しない場合には、第二のＣＰＵ５２は報知部３３に対してパラメータの受信エラーを示す異常報知表示を行うように制御する（ステップＳ１０７）。このときも、異常報知後は第一及び第二のＣＰＵ５１、５２は他の処理を行わず、電源を再投入しない限り復旧しない状態となる。
一方、ＣＲＣコードが一致した場合には、第二のＣＰＵ５２は、内部メモリ５８に受信した各種パラメータのデータを格納する（ステップＳ１０８）。
【００３５】
また、第一のＣＰＵ５１は、パラメータデータを内部メモリ５７に格納後、バスを介して第二のＣＰＵ５２に送信したパラメータデータとの相互比較を行い（ステップＳ１０９）、第二のＣＰＵ５２は、パラメータデータを内部メモリ５８に格納後、バスを介して第一のＣＰＵ５１が保有するパラメータデータとの相互比較を行う（ステップＳ１１０）。
【００３６】
そして、第一のＣＰＵ５１は自己のパラメータデータと第二のＣＰＵ５２のパラメータデータとの一致を判定し（ステップＳ１１１）、一致する場合にはパラメータ送信監視処理を終了し、一致しない場合には、第一のＣＰＵ５１は報知部３３に対してパラメータの受信エラーを示す異常報知表示を行うように制御する（ステップＳ１１３）。このときも、異常報知後は第一及び第二のＣＰＵ５１、５２は他の処理を行わず、電源を再投入しない限り復旧しない状態となる。
【００３７】
また、同様にして、第二のＣＰＵ５２は自己のパラメータデータと第一のＣＰＵ５１のパラメータデータとの一致を判定し（ステップＳ１１２）、一致する場合にはパラメータ送信監視処理を終了し、一致しない場合には、第二のＣＰＵ５２は報知部３３に対してパラメータの受信エラーを示す異常報知表示を行うように制御する（ステップＳ１１４）。このときも、異常報知後は第一及び第二のＣＰＵ５１、５２は他の処理を行わず、電源を再投入しない限り復旧しない状態となる。
【００３８】
（監視部におけるモータ制御監視処理）
図４は監視部５０の各ＣＰＵ５１，５２が行うロボット制御におけるサーボモータ制御の監視処理を示している。この処理はロボット１１０の動作制御時において、各ＣＰＵ５１，５２のサンプリング周期に応じて定期的に実行される。
【００３９】
まず、第一のＣＰＵ５１は、送受信回路５３を介してエンコーダ１１７に対して現在の検出角度位置を示す位置データの要求コマンドを送信する（ステップＳ２０１）。このとき、要求コマンドは、当該コマンドを一意に識別するためのシーケンス番号データを付加されてエンコーダ１１７に送信される。
【００４０】
エンコーダ１１７は、要求コマンドを受信すると、エンコーダ１１７の現在の位置データを第一のＣＰＵ５１へ返信する。このとき、エンコーダ１１７は要求コマンドに付加されたシーケンス番号と同じシーケンス番号のデータを付加して返信を行う。また、エンコーダ１１７は、前述したパラメータデータの送信エラーの判定に用いられたＣＲＣコードと同じように、位置データについて所定のデータ単位でＣＲＣコードを生成し、位置データに付与して送信する。
【００４１】
そして、これにより、エンコーダ１１７から位置データを受信すると（ステップＳ２０２）、第一のＣＰＵ５１は、受信した位置データに付加されたシーケンス番号が要求コマンドのシーケンス番号と一致するか判定を行う（ステップＳ２０３）。
かかるシーケンス番号判定により、エンコーダ１１７から返信された位置データが第一のＣＰＵ５１からの要求コマンドに対して行われたものか識別することができる。例えば、返信されたシーケンス番号が以前の要求コマンドのシーケンス番号のものである場合には、前回の要求コマンドに対する返信が遅れたか、或いは、エンコーダ１１７が検出を停止してしまっている等の異常が発生していると判断することができる。
【００４２】
従って、返信位置データに付加されたシーケンス番号が要求コマンドのシーケンス番号と一致しない状態が一定期間続いたときには、第一のＣＰＵ５１は、マグネットスイッチ３１に切替信号を出力し、サーボモータ１１６への通電を遮断させる（ステップＳ２０４）。
なお、マグネットスイッチ３１は、複数あるサーボモータ１１６の全ての通電を遮断する。これにより、ロボット１１０は動作を停止する。
【００４３】
一方、シーケンス番号が一致する場合は、第一のＣＰＵ５１は受信した位置データについてエンコーダ１１７と同じ条件でＣＲＣコードを生成すると共に、エンコーダ１１７で生成されたＣＲＣコードと一致するか判定を行う（ステップＳ２０５）。
そして、ＣＲＣコードが一致しない場合には、送受信回路５３に異常が発生しているか送受信回路５３と第一のＣＰＵ５１との間の回路に異常が生じているものとして、マグネットスイッチ３１に切替信号を出力し、全てのサーボモータ１１６への通電を遮断して、ロボット１１０を停止させる（ステップＳ２０６）。
【００４４】
一方、ＣＲＣコードが一致した場合には、第一のＣＰＵ５１は、第二のＣＰＵ５２に対して受信した位置データとそのＣＲＣコードを送信する（ステップＳ２０７）。
そして、第一のＣＰＵ５１からの位置データとＣＲＣコードを受信すると、第二のＣＰＵ５２は、受信した位置データについてエンコーダ１１７と同じ条件でＣＲＣコードを生成すると共に、当該生成したＣＲＣコードと受信したＣＲＣコードとが一致するか判定を行う（ステップＳ２０８）。
そして、ＣＲＣコードが一致しない場合には、第一のＣＰＵ５１と第二のＣＰＵ５２の通信手段であるバスか通信処理を行うソフトウェアに異常を生じているものとして第二のＣＰＵ５２はマグネットスイッチ３２に切替信号を出力し、全てのサーボモータ１１６への通電を遮断して、ロボット１１０を停止させる（ステップＳ２０９）。
【００４５】
一方、第一のＣＰＵ５１は、位置データを第二のＣＰＵ５２に送信後、前述したステップＳ１０４の処理（図３）で位置制御部１０から受信して内部メモリ５７に格納したパラメータに含まれるエンコーダ１１７の出力コードと当該出力コードが示す検出角度位置との対応関係を示すテーブルを参照して、エンコーダ１１７の位置データを関節角度（角度位置）に変換すると共に内部メモリ５７に記憶する（ステップＳ２１０）。
また、第二のＣＰＵ５２も、位置データのＣＲＣコードに異常がない場合に、前述したステップＳ１０８の処理（図３）で内部メモリ５８に格納したパラメータ中のエンコーダ１１７の出力コードと関節角度との対応テーブルから、エンコーダ１１７の位置データを関節角度に変換すると共に内部メモリ５８に記憶する（ステップＳ２１１）。
【００４６】
そして、第一のＣＰＵ５１は、関節角度の算出後、バスを介して、第二のＣＰＵ５２が算出した関節角度との相互比較を行い（ステップＳ２１２）、第一のＣＰＵ５１で求めた関節角度と第二のＣＰＵ５２で求めた関節角度との一致を判定する（ステップＳ２１４）。
そして、相互の関節角度が一致しない場合には、第一のＣＰＵ５１は、マグネットスイッチ３１に切替信号を出力し、全てのサーボモータ１１６への通電を遮断して、ロボット１１０を停止させる（ステップＳ２１６）。
また、相互の関節角度が一致する場合には、第一のＣＰＵ５１は、位置・速度監視処理、トルク監視処理、ＣＰＵの相互監視処理（いずれも詳細は後述する）を実行した後に、モータ制御監視処理を終了する。
【００４７】
一方、第二のＣＰＵ５２は、関節角度の算出後、バスを介して、第一のＣＰＵ５１が算出した関節角度との相互比較を行い（ステップＳ２１３）、第二のＣＰＵ５２で求めた関節角度と第一のＣＰＵ５１で求めた関節角度との一致判定を行う（ステップＳ２１５）。
そして、相互の関節角度が一致しない場合には、第二のＣＰＵ５２は、マグネットスイッチ３２に切替信号を出力し、全てのサーボモータ１１６への通電を遮断して、ロボット１１０を停止させる（ステップＳ２１７）。
また、相互の関節角度が一致する場合には、第二のＣＰＵ５２は、位置・速度監視処理、トルク監視処理、ＣＰＵの相互監視処理（いずれも詳細は後述する）を実行した後に、モータ制御監視処理を終了する。
【００４８】
（監視部における位置・速度監視処理）
図５は監視部５０の各ＣＰＵ５１，５２が行うサーボモータ制御の監視処理の中で行われる位置・速度監視処理を示している。
まず、第一のＣＰＵ５１は自己の演算により求められた関節角度が、第二のＣＰＵ５２で求めた関節角度と一致する場合（図４のステップＳ２１４参照）に、その演算関節角度の値を、内部メモリ５７に格納していたパラメータに含まれる関節角度の動作上限値と比較する（ステップＳ３０１）。
同様に、第二のＣＰＵ５２は、自己の演算により求められた関節角度が、第一のＣＰＵ５１で求めた関節角度と一致する場合（図４のステップＳ２１５参照）に、演算関節角度の値を、内部メモリ５８に格納していたパラメータに含まれる関節角度の動作上限値と比較する（ステップＳ３０２）。
【００４９】
そして、第一のＣＰＵ５１は、関節角度の値が動作上限値を超えていた場合に、マグネットスイッチ３１に切替信号を出力し、ロボット１１０を停止させる（ステップＳ３０３）。
同様に、第二のＣＰＵ５２は、関節角度の値が動作上限値を超えていた場合に、マグネットスイッチ３２に切替信号を出力し、ロボット１１０を停止させる（ステップＳ３０４）。
【００５０】
一方、第一のＣＰＵ５１は、演算関節角度の値が動作上限値を超えていない場合には、その演算関節角度の値を、内部メモリ５７に格納していたパラメータに含まれる関節角度の動作下限値と比較する（ステップＳ３０５）。
同様に、第二のＣＰＵ５２は、演算関節角度の値が動作上限値を超えていない場合には、その演算関節角度の値を、内部メモリ５８に格納していたパラメータに含まれる関節角度の動作下限値と比較する（ステップＳ３０６）。
【００５１】
そして、第一のＣＰＵ５１は、演算関節角度の値が動作下限値に満たない場合に、マグネットスイッチ３１に切替信号を出力し、ロボット１１０を停止させる（ステップＳ３０７）。
同様に、第二のＣＰＵ５２は、演算関節角度の値が動作下限値に満たない場合に、マグネットスイッチ３２に切替信号を出力し、ロボット１１０を停止させる（ステップＳ３０８）。
【００５２】
また、第一のＣＰＵ５１は、演算関節角度の値が動作下限値以上の場合には、前回の処理で内部メモリ５７に記憶された関節角度との差分を求め、前回の処理からの経過時間と差分とから関節動作速度を算出する（ステップＳ３０９）。
同様に、第二のＣＰＵ５２は、演算関節角度の値が動作下限値以上の場合には、前回の処理で内部メモリ５８に記憶された関節角度との差分を求め、前回の処理からの経過時間と差分とから関節動作速度を算出する（ステップＳ３１０）。
【００５３】
そして、第一のＣＰＵ５１は、関節動作速度の算出後、バスを介して、第二のＣＰＵ５２で算出した関節動作速度との相互比較を行い（ステップＳ３１１）、第一のＣＰＵ５１で求めた関節動作速度と第二のＣＰＵ５２で求めた関節動作速度との一致判定を行う（ステップＳ３１３）。
同様に、第二のＣＰＵ５２は、関節動作速度の算出後、バスを介して、第一のＣＰＵ５１が算出した関節動作速度との相互比較を行い（ステップＳ３１２）、第二のＣＰＵ５２で求めた関節動作速度と第一のＣＰＵ５１で求めた関節動作速度との一致判定を行う（ステップＳ３１４）。
【００５４】
そして、相互の関節動作速度が一致しない場合には、第一のＣＰＵ５１は、マグネットスイッチ３１に切替信号を出力し、全てのサーボモータ１１６への通電を遮断して、ロボット１１０を停止させる（ステップＳ３１５）。
同様に、相互の関節動作速度が一致しない場合には、第二のＣＰＵ５２は、マグネットスイッチ３２に切替信号を出力し、全てのサーボモータ１１６への通電を遮断して、ロボット１１０を停止させる（ステップＳ３１６）。
【００５５】
一方、相互の関節動作速度が一致した場合には、第一のＣＰＵ５１は関節動作速度の値を、内部メモリ５７に格納していたパラメータに含まれる関節動作速度の上限値と比較する（ステップＳ３１７）。
同様に、相互の関節動作速度が一致した場合には、第二のＣＰＵ５２は関節動作速度の値を、内部メモリ５８に格納していたパラメータに含まれる関節動作速度の上限値と比較する（ステップＳ３１８）。
【００５６】
そして、第一のＣＰＵ５１は、関節動作速度の値が上限値を超えていた場合に、マグネットスイッチ３１に切替信号を出力し、ロボット１１０を停止させる（ステップＳ３１９）。また、関節動作速度の値が上限値を超えていない場合には、第一のＣＰＵ５１は位置・速度監視処理を終了する。
同様に、第二のＣＰＵ５２は、関節動作速度の値が上限値を超えていた場合に、マグネットスイッチ３２に切替信号を出力し、ロボット１１０を停止させる（ステップＳ３２０）。また、関節動作速度の値が上限値を超えていない場合には、第二のＣＰＵ５２は位置・速度監視処理を終了する。
【００５７】
（監視部におけるトルク監視処理）
図６は監視部５０の各ＣＰＵ５１，５２が行うサーボモータ制御の監視処理の中で行われるトルク監視処理を示している。
まず、第一のＣＰＵ５１は、位置・速度監視処理の後に、トルク検出回路５４を通じてサーボアンプ２０で制御されているサーボモータ１１６のトルクを検出する（ステップＳ４０１）。
そして、検出されたサーボモータ１１６のトルクデータを第一のＣＰＵ５１はバスを介して第二のＣＰＵ５１に送信する（ステップＳ４０２，Ｓ４０３）。
【００５８】
そして、第一のＣＰＵ５１は、トルクデータの送信後、バスを介して、第二のＣＰＵ５２が受信したトルクデータとの相互比較を行い（ステップＳ４０４）、第一のＣＰＵ５１の送信前のトルクデータと第二のＣＰＵ５２に送信されたトルクデータとの一致判定を行う（ステップＳ４０６）。
同様に、第二のＣＰＵ５２は、トルクデータの受信後、バスを介して、第一のＣＰＵ５１の保有するトルクデータとの相互比較を行い（ステップＳ４０５）、第一のＣＰＵ５１の送信前のトルクデータと第二のＣＰＵ５２が受信したトルクデータとの一致判定を行う（ステップＳ４０７）。
【００５９】
そして、相互のトルクデータの示す値が一致しない場合には、第一のＣＰＵ５１は、マグネットスイッチ３１に切替信号を出力し、全てのサーボモータ１１６への通電を遮断して、ロボット１１０を停止させる（ステップＳ４０８）。
同様に、相互のトルクデータの示す値が一致しない場合には、第二のＣＰＵ５２は、マグネットスイッチ３２に切替信号を出力し、全てのサーボモータ１１６への通電を遮断して、ロボット１１０を停止させる（ステップＳ４０９）。
【００６０】
一方、相互のトルクデータの示す値が一致した場合には、第一のＣＰＵ５１はトルクデータの示す値を、内部メモリ５７に格納していたパラメータに含まれるトルクの上限値と比較する（ステップＳ４１０）。
同様に、相互のトルクデータの示す値が一致した場合には、第二のＣＰＵ５２はトルクデータの示す値を、内部メモリ５８に格納していたパラメータに含まれるトルクの上限値と比較する（ステップＳ４１１）。
【００６１】
そして、第一のＣＰＵ５１は、トルクデータの示す値が上限値を超えていた場合に、マグネットスイッチ３１に切替信号を出力し、ロボット１１０を停止させる（ステップＳ４１２）。また、トルクデータの示す値が上限値を超えていない場合には、第一のＣＰＵ５１はトルク監視処理を終了する。
同様に、第二のＣＰＵ５２は、トルクデータの示す値が上限値を超えていた場合に、マグネットスイッチ３２に切替信号を出力し、ロボット１１０を停止させる（ステップＳ４１３）。また、トルクデータの示す値が上限値を超えていない場合には、第二のＣＰＵ５２はトルク監視処理を終了する。
【００６２】
（監視部におけるＣＰＵの相互監視処理）
サーボモータ制御の監視処理において、トルク監視処理が終了すると、最後にＣＰＵの相互監視処理が実行される。
かかる処理では、第一のＣＰＵ５１が、第二のＣＰＵ５２の監視を行っているウォッチドッグ回路５６にアクセスし、第二のＣＰＵ５２の停止状態を示すエラー信号を出力しているかを判定する。その結果、ウォッチドッグ回路５６がエラー信号を出力している場合に、第一のＣＰＵ５１は、マグネットスイッチ３１に切替信号を出力し、ロボット１１０を停止させる。また、ウォッチドッグ回路５６がタイムアップ信号を出力していない場合には、第一のＣＰＵ５１はＣＰＵの相互監視処理を終了する。
一方、第二のＣＰＵ５２が、第一のＣＰＵ５１の監視を行っているウォッチドッグ回路５５にアクセスし、第一のＣＰＵ５１の停止状態を示すエラー信号を出力しているかを判定する。その結果、ウォッチドッグ回路５５がエラー信号を出力している場合に、第二のＣＰＵ５２は、マグネットスイッチ３２に切替信号を出力し、ロボット１１０を停止させる。また、ウォッチドッグ回路５５がタイムアップ信号を出力していない場合には、第二のＣＰＵ５２はＣＰＵの相互監視処理を終了する。
【００６３】
（ロボット制御装置の全体的な動作）
上記構成により、ロボット制御装置１００の位置制御部１０は、教示動作データに基づく動作を行うように制御指令を順番に出力し、サーボアンプ２０を介してロボット１１０の各関節１１３のサーボモータ１１６の動作制御を行う。このとき、サーボアンプ２０では、各関節１１３のエンコーダ１１７からの検出信号に基づいてフィードバック制御が実行される。
【００６４】
一方、監視部５０は、ロボット１１０の動作開始前に、ロボット制御における各種のパラメータを位置制御部から取得し、ロボット１１０の動作制御の際には、所定のサンプリング間隔で、各エンコーダ１１７から関節角度（位置データ）の受信を行う。そして、データ受信の異常の発生、関節角度、動作速度、トルクの異常の発生、各ＣＰＵ５１，５２の異常の発生の監視がロボット１１０の動作中においてサンプリング間隔で繰り返し実行される。
【００６５】
（実施形態の効果）
以上のように、ロボット制御装置１００では、監視部５０の二つのＣＰＵ５１，５２のそれぞれが、位置制御部から取得したロボット制御における各種のパラメータをＣＲＣコードを用いてデータの破損確認を行うと共に、二つのＣＰＵ５１，５２が相互の各パラメータの一致確認を行うため、エンコーダから各ＣＰＵ５１，５２まで伝達されるまでの過程での位置データの異常の発生が厳重に監視され、異常のあるパラメータに基づくロボット１１０の誤動作の発生を効果的に抑制することが可能となる。
【００６６】
また、監視部５０の第一のＣＰＵ５１が、各エンコーダ１１７からの位置データの受信に際し、シーケンス番号による要求コマンドとの一致の確認が行われるため、エンコーダ１１７の異常により誤った位置データに基づくロボット１１０の誤動作の発生を効果的に抑制することが可能となる。
さらに、エンコーダ１１７からの位置データに対してＣＲＣコードを用いて、データの破損確認を二つのＣＰＵ５１，５２でそれぞれが行い、さらには、二つのＣＰＵ５１，５２が相互の位置データの一致確認を行うため、エンコーダから各ＣＰＵ５１，５２まで伝達されるまでの過程での位置データの異常の発生が厳重に監視され、異常のある位置データに基づくロボット１１０の誤動作の発生をより効果的に抑制することが可能となる。
【００６７】
また、エンコーダ１１７からの位置データに基づいて各ＣＰＵ５１，５２が求め或いは取得した各関節の関節角度、動作速度、サーボモータ１１６のトルクについて、各ＣＰＵ５１，５２の相互間で一致確認が行われ、さらには、関節角度、動作速度、トルクのそれぞれに設定された上限値を越えるか（或いは下限値を下回るか）否かの判定が二つのＣＰＵ５１，５２により行われるので、それぞれの監視が二系統で行われることとなり、いずれか一方のＣＰＵが故障や不良を生じても、他方のＣＰＵがサーボモータ１１６を停止させることができ、関節角度、動作速度、トルクのそれぞれが許容値を超える異常動作をより確実に防止することが可能となる。
【００６８】
また、監視部５０には、各ＣＰＵ５１，５２を個別に監視するウォッチドッグ回路５５，５６が設けられているので、いずれか一方のＣＰＵが不慮の停止状態に陥っても、他方のＣＰＵが速やかにこれを検出し、ロボットの動作制御の監視が単一系統に陥る状態を回避し、常に二系統による監視状態でのみ各サーボモータ１１６を駆動させることができ、ロボットの異常動作をより確実に防止することが可能となる。
【００６９】
（その他）
上記構成では、図１において、サーボモータ１１６及びエンコーダ１１７が一組しか図示されていないが、これらは各関節１１３ごとに設けられている。従って、監視部５０は、図３から図６に示す全ての処理を、タイミングをずらして各サーボモータ１１６ごとに実行していることはいうまでもない。
【００７０】
また、上記構成では、監視部５０の第二のＣＰＵ５２が各エンコーダ１１７からの位置データを第一のＣＰＵ５１を介して受信する構成となっているが、第二のＣＰＵ５２が第一のＣＰＵ５１を介することなくエンコーダ１１７から直接受信する構成としても良い。その場合、第二のＣＰＵ５２もエンコーダ１１７からの位置データに対してシーケンス番号による確認処理を実行することが望ましい。
【００７１】
また、制御対象となるロボットは回動、回転関節のみを有するものに限られず、例えば直動式の関節を有するロボットを制御対象としても良い。その場合、関節角度ではなく、位置データから直進方向の移動量を求め、これを監視する構成とすることが望ましい。
【図面の簡単な説明】
【００７２】
【図１】本発明の実施形態たるロボット制御装置の全体構成図である。
【図２】図１に開示した監視部のより詳細なブロック図である。
【図３】監視部の各ＣＰＵが行う各種のパラメータの送信監視処理のフローチャートを示す。
【図４】監視部の各ＣＰＵが行うサーボモータ制御の監視処理のフローチャートを示す。
【図５】監視部の各ＣＰＵが行うの監視処理中で行われる位置・速度監視処理のフローチャートを示す。
【図６】監視部の各ＣＰＵが行うの監視処理中で行われるトルク監視処理のフローチャートを示す。
【符号の説明】
【００７３】
１０  位置制御部（サーボ制御部）
２０  サーボアンプ（サーボ制御部）
３１，３２  マグネットスイッチ（切り替え部）
５０  監視部
５１  第一のＣＰＵ（処理演算部）
５２  第二のＣＰＵ（処理演算部）
１００  ロボット制御装置
１１０  ロボット
１１６  サーボモータ
１１７  エンコーダ
【図１】
2007136617.tif 000003
【図２】
2007136617.tif 000004
【図３】
2007136617.tif 000005
【図４】
2007136617.tif 000006
【図５】
2007136617.tif 000007
【図６】
2007136617.tif 000008