(57)【特許請求の範囲】
【請求項１】
所定速度でカウントを行う第１タイムカウンタを有し、前記第１タイムカウンタの値により変化する１ビットの参照値を所定規則で算出し、前記第１タイムカウンタの値が所定値になった時に入力された１ビットの信号値と前記参照値とが一致しないことを条件として異常であることを検出する異常検出回路と、
前記所定速度でカウントを行う第２タイムカウンタを有し、前記第２タイムカウンタの値により変化する１ビットの信号値を前記所定規則で算出し、前記第２タイムカウンタの値が前記所定値になった時に、前記算出した１ビットの信号値を前記異常検出回路へ出力する被検出回路と、
前記第１タイムカウンタの値及び前記第２タイムカウンタの値を一致させた後に、前記異常検出回路に前記異常の検出を開始させるＣＰＵと、
を備えることを特徴とするロボットのコントローラ。
【請求項２】
前記所定値は、前記第１タイムカウンタの値及び前記第２タイムカウンタの値において、一定値間隔の値である請求項１に記載のロボットのコントローラ。
【請求項３】
前記ＣＰＵから指令を受信して第１モータを駆動する信号に変換する第１ロジック回路と、前記第１ロジック回路に接続され、前記ＣＰＵから指令を受信して第２モータを駆動する信号に変換する第２ロジック回路とを備え、
前記第１ロジック回路は、前記異常検出回路を形成して前記第２ロジック回路から前記信号値を入力するとともに、前記被検出回路を形成して前記第２ロジック回路へ前記信号値を出力するものであり、
前記第２ロジック回路は、前記被検出回路を形成して前記第１ロジック回路へ前記信号値を出力するとともに、前記異常検出回路を形成して前記第１ロジック回路から前記信号値を入力するものである請求項１又は２に記載のロボットのコントローラ。
【請求項４】
前記第２ロジック回路に接続され、前記ＣＰＵから指令を受信して第３モータを駆動する信号に変換する第３ロジック回路を備え、
前記第２ロジック回路は、前記異常検出回路を形成して前記第３ロジック回路から前記信号値を入力するとともに、前記被検出回路を形成して前記第３ロジック回路へ前記信号値を出力するものであり、
前記第３ロジック回路は、前記被検出回路を形成して前記第２ロジック回路へ前記信号値を出力するとともに、前記異常検出回路を形成して前記第２ロジック回路から前記信号値を入力するものである請求項３に記載のロボットのコントローラ。
【請求項５】
前記所定規則は、２進数で表したタイムカウンタの値に対して、全てのビットを入力値として排他的論理和を求める演算である請求項１〜４のいずれか１項に記載のロボットのコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットのコントローラに関する。
【背景技術】
【０００２】
従来、産業ロボットのコントローラ等、モータのコントローラは、数値演算を行って指令を送信するメインのプロセッサ（ＣＰＵ）と、その指令を受信してモータを駆動する信号に変換するロジック回路と、その信号に基づいて制御されるパワー回路とにより構成されている。ロジック回路は、ゲートロジックで形成され、一般にＦＰＧＡ（Field Programmable Gate Array）をはじめとしたゲートアレイ（Ｇ／Ａ）が用いられている。
【０００３】
ＣＰＵやＧ／Ａが停止すると、パワー回路へ異常信号が伝達され、モータが異常動作を行うおそれがある。そこで、モータの異常動作を防ぐために、ＣＰＵやＧ／Ａで相互に異常の検出を行い、異常であることを検出した場合には、直ちにモータを停止させる処理を実行する必要がある。
【０００４】
相互に異常の検出を行う手段として、一般にウォッチドッグ回路が用いられている。ウォッチドッグ回路では、検出間隔を容易に設定でき、且つ構成が簡単であることから、タイムアップカウンタが用いられている（例えば、特許文献１，２参照）。特許文献１，２に記載のものでは、被検出対象がクリア信号を送信してタイマを設定時間内にクリアした場合に正常と判定し、タイマをカウントアップすることでタイムアップを検出する（単純タイマクリア方式）。そして、タイムアップカウンタが、オーバフローに至った場合に異常であると判定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２３７９８１号公報
【特許文献２】特開２００７−２６５１０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、単純タイマクリア方式では、被検出対象に異常が生じた場合であっても、外部ノイズの混入や、スイッチングノイズの混入、クロストーク等により、タイムアップカウンタが定期的にクリアされるおそれがある。この場合、ウォッチドッグ回路は、正常であると判定することとなり、被検出対象が異常であると判定することが困難となる。
【０００７】
特にロボットでは、こうした状態が継続すると問題を誘発するおそれがあるため、被検出対象が異常であることを確実に検出する必要がある。ただし、被検出対象が異常であることを確実に検出するために、特別なハードウェアを追加することはコストアップを招くこととなる。
【０００８】
本発明は、こうした実情に鑑みてなされたものであり、ロボットのコントローラにおいて、特別なハードウェアを追加することを抑制しつつ、被検出対象が異常であることをより確実に検出することにある。
【課題を解決するための手段】
【０００９】
本発明は、上記課題を解決するために、以下の手段を採用した。
【００１０】
第１の発明は、ロボットのコントローラであって、所定速度でカウントを行う第１タイムカウンタを有し、前記第１タイムカウンタの値に基づいて所定規則で１ビットの参照値を算出し、前記第１タイムカウンタの値が所定値になった時に入力された１ビットの信号値と前記参照値とが一致しないことを条件として異常であることを検出する異常検出回路と、前記所定速度でカウントを行う第２タイムカウンタを有し、前記第２タイムカウンタの値に基づいて前記所定規則で１ビットの信号値を算出し、前記第２タイムカウンタの値が前記所定値になった時に、前記算出した１ビットの信号値を前記異常検出回路へ出力する被検出回路と、前記第１タイムカウンタの値及び前記第２タイムカウンタの値を一致させた後に、前記異常検出回路に前記異常の検出を開始させるＣＰＵと、を備えることを特徴とする。
【００１１】
上記構成によれば、異常検出回路の第１タイムカウンタ及び被検出回路の第２タイムカウンタにより、同一の所定速度でカウントが行われる。そして、異常検出回路及び被検出回路により、それぞれのタイムカウンタの値に基づいて、同一の所定規則で１ビットの参照値及び信号値がそれぞれ算出される。また、第1タイムカウンタの値が所定値になった時に、異常検出回路により１ビットの信号値が入力され、第２タイムカウンタの値が同じく所定値になった時に、被検出回路により、算出された１ビットの信号値が異常検出回路へ出力される。
【００１２】
ここで、ＣＰＵにより、第１タイムカウンタの値及び第２タイムカウンタの値が一致させられるため、同一の所定速度でカウントを行う第１タイムカウンタ及び第２タイムカウンタでは、カウンタの値が互いに等しくなる。このため、それぞれタイムカウンタの値に基づいて、同一の所定規則で算出される１ビットの参照値及び信号値は互いに等しくなる。その後、第１タイムカウンタの値及び第２タイムカウンタの値が同時に所定値となり、被検出回路により異常検出回路へ１ビットの信号値が出力され、異常検出回路によりその１ビットの信号値が入力される。そして、入力された１ビットの信号値が、算出された１ビットの参照値と一致しない場合に、異常検出回路により異常であることが検出される。このため、被検出回路に異常が生じて、参照値と一致する信号値が算出されない場合や、信号値が適切に出力されない場合には、異常であることが検出される。一方、入力された１ビットの信号値が、算出された１ビットの参照値と一致する場合には、異常であることが検出されない。
【００１３】
すなわち、変化しない一定のクリア信号（１ビット）が、設定時間内に入力されない場合に異常であることが検出される単純タイマクリア方式と異なり、タイムカウンタの値により変化する参照値（１ビット）と同一の信号値（１ビット）が、所定時に入力されない場合に異常であることが検出される。外部ノイズの混入や、スイッチングノイズの混入、クロストーク等が生じたとしても、それらのノイズが参照値と同一の変化をする可能性は極めて低いため、それらのノイズにより、異常であることの検出が阻害されることを抑制することができる。しかも、上記の異常検出では、タイムカウンタの値を用いて１ビットの参照値及び信号値を算出し、それらの値が一致しない場合に異常であることを検出するため、１ビットのクリア信号を処理する場合と同様のハードウェアにより、異常の検出を行うことができる。その結果、ロボットのコントローラにおいて、特別なハードウェアを追加することを抑制しつつ、被検出回路が異常であることをより確実に検出することができる。
【００１４】
なお、被検出回路は、第２タイムカウンタの値が上記所定値になった時以外にも、信号値の算出及び出力を行ってもよい。また、異常検出回路は、第２タイムカウンタの値が上記所定値になった時以外にも、参照値の算出と信号値の入力とを行ってもよい。
【００１５】
第２の発明では、前記所定値は、前記第１タイムカウンタの値及び前記第２タイムカウンタの値において、一定値間隔の値である。
【００１６】
上記構成によれば、第１タイムカウンタの値及び第２タイムカウンタの値が、一定値間隔で上記所定値になった時に、被検出回路により異常検出回路へ１ビットの信号値が出力され、異常検出回路によりその１ビットの信号値が入力される。そして、入力された１ビットの信号値が、算出された１ビットの参照値と一致しない場合に、異常検出回路により異常であることが検出される。このため、それぞれのタイムカウンタによりカウントが行われる度に、信号値や参照値の算出、信号値の出力や入力、及び異常の検出を行う必要がない。したがって、処理負荷を軽減することができるとともに、異常検出の間隔が短過ぎることに起因して、異常であることが誤検出されることを抑制することができる。
【００１７】
第３の発明では、前記ＣＰＵから指令を受信して第１モータを駆動する信号に変換する第１ロジック回路と、前記第１ロジック回路に接続され、前記ＣＰＵから指令を受信して第２モータを駆動する信号に変換する第２ロジック回路とを備え、前記第１ロジック回路は、前記異常検出回路を形成して前記第２ロジック回路から前記信号値を入力するとともに、前記被検出回路を形成して前記第２ロジック回路へ前記信号値を出力するものであり、前記第２ロジック回路は、前記被検出回路を形成して前記第１ロジック回路へ前記信号値を出力するとともに、前記異常検出回路を形成して前記第１ロジック回路から前記信号値を入力するものである。
【００１８】
上記構成によれば、異常検出回路としての第１ロジック回路により、被検出回路としての第２ロジック回路が異常であることが検出されるとともに、異常検出回路としての第２ロジック回路により、被検出回路としての第１ロジック回路が異常であることが検出される。このため、ロボットのコントローラにおいて、簡易な構成により複数のロジック回路で相互に異常の検出を行うことができる。
【００１９】
第４の発明では、前記第２ロジック回路に接続され、前記ＣＰＵから指令を受信して第３モータを駆動する信号に変換する第３ロジック回路を備え、前記第２ロジック回路は、前記異常検出回路を形成して前記第３ロジック回路から前記信号値を入力するとともに、前記被検出回路を形成して前記第３ロジック回路へ前記信号値を出力するものであり、前記第３ロジック回路は、前記被検出回路を形成して前記第２ロジック回路へ前記信号値を出力するとともに、前記異常検出回路を形成して前記第２ロジック回路から前記信号値を入力するものである。
【００２０】
上記構成によれば、異常検出回路としての第２ロジック回路により、被検出回路としての第３ロジック回路が異常であることが検出されるとともに、異常検出回路としての第３ロジック回路により、被検出回路としての第２ロジック回路が異常であることが検出される。すなわち、第２ロジック回路に接続された第１，第３ロジック回路の双方により、第２ロジック回路が異常であることが検出される。このため、第１〜第３ロジック回路を１列に配置して隣同士で接続した場合に、両側の第１，第３ロジック回路により、それらの間に配置された第２ロジック回路が異常であることを二重に検出することができる。その結果、第１〜第３ロジック回路を効率的に配置しつつ、被検出回路が異常であることをより確実に検出することができる。
【００２１】
具体的には、第５の発明のように、前記所定規則は、２進数で表したタイムカウンタの値に対して、全てのビットを入力値として排他的論理和（ＸＯＲ）を求める演算であるといった構成を採用することができる。例えば、２進数で表したタイムカウンタのビット数が４（１０進数で０〜１５）である場合には、この演算結果は以下のようになる。すなわち、４ビットの２進数に対して、全てのビットを入力値として排他的論理和（“１”の数が奇数個である場合に“１”、偶数個である場合に“０”）を求めると、２進数の“００００”では“０”、２進数の“０００１”では“１”、２進数の“００１０”では“１”、２進数の“００１１”では“０”となる。こうした構成によれば、簡易な処理によって、参照値（信号値）が“０”と“１”との単純な繰り返しになることを避けつつ、参照値に“０”と“１”とをバランスよく設定することができる。
【図面の簡単な説明】
【００２２】
【図１】ロボットのコントローラ及びその周辺構成を示す模式図。
【図２】異常検出回路の処理及び被検出回路の処理の手順を示すフローチャート。
【図３】タイムカウンタの値と信号値との関係を示す図。
【図４】タイムカウンタの値と信号値と異常信号との関係を示すタイミングチャート。
【発明を実施するための形態】
【００２３】
以下、一実施形態について、図面を参照しつつ説明する。本実施形態は、機械組立工場等において、機械等の組み立てを行うロボットシステムとして具体化している。
【００２４】
図１は、ロボットのコントローラ２０及びその周辺構成を示す模式図である。同図に示すように、ロボットシステム（生産機器システム）は、ロボットの各関節を駆動するモータ１１、各モータ１１に電力を供給する三相交流電源１２（電源）、電源１２からの交流電流を直流電流に整流するダイオード１３及びコンデンサ１４、電源１２から全てのモータ１１への電力供給をＯＮ・ＯＦＦするモータリレー１５、及びロボットのコントローラ２０を備えている。モータリレー１５は、正側の接点と負側の接点とを有しており、正側の接点と負側の接点とが同時にＯＮ又はＯＦＦへ切り換えられる。
【００２５】
コントローラ２０は、メイン制御基板２１、第１サブ制御基板２２、第２サブ制御基板２３、３つの第１コネクタ２５、３つの第２コネクタ２６、及び端部コネクタ２４を備えている。メイン制御基板２１は、第１ＣＰＵ３４、第２ＣＰＵ３５、演算回路３６、フォトカプラ３７、及びトランジスタ３８を備えている。制御基板２１，２２，２３は、それぞれＦＰＧＡ３１とパワー回路３２と演算回路３３とを備えている。
【００２６】
各ＦＰＧＡ３１（ロジック回路）は、制御回路４１とウォッチドッグ回路４３とを備えている。各ＦＰＧＡ３１では、制御回路４１とウォッチドッグ回路４３とが接続され、ウォッチドッグ回路４３と演算回路３３とが接続されている。また、各制御基板の制御回路４１及びウォッチドッグ回路４３は、第１ＣＰＵ３４にそれぞれ並列に接続されている。
【００２７】
隣り合う制御基板では、ＦＰＧＡ３１同士が第１コネクタ２５によって接続されている。メイン制御基板２１のＦＰＧＡ３１と第１サブ制御基板２２のＦＰＧＡ３１とが、第１コネクタ２５によって接続され、第１サブ制御基板２２のＦＰＧＡ３１と第２サブ制御基板２３のＦＰＧＡ３１とが、第１コネクタ２５によって接続されている。コントローラ２０において終端のサブ基板である第２サブ制御基板２３では、終端側の第１コネクタ２５に上記端部コネクタ２４が接続されている。
【００２８】
詳しくは、隣り合う制御基板では、ウォッチドッグ回路４３同士が第１コネクタ２５によって接続されている。すなわち、メイン制御基板２１のウォッチドッグ回路４３と第１サブ制御基板２２のウォッチドッグ回路４３とが接続され、第１サブ制御基板２２のウォッチドッグ回路４３と第２サブ制御基板２３のウォッチドッグ回路４３とが接続されている。第２サブ制御基板２３では、終端側の第１コネクタ２５にウォッチドッグ回路４３が接続されている。
【００２９】
また、隣り合う制御基板では、パワー回路３２同士が第２コネクタ２６によって接続されている。メイン制御基板２１のパワー回路３２と第１サブ制御基板２２のパワー回路３２とが、第２コネクタ２６によって接続され、第１サブ制御基板２２のパワー回路３２と第２サブ制御基板２３のパワー回路３２とが、第２コネクタ２６によって接続されている。第２サブ制御基板２３では、終端側の第２コネクタ２６に上記モータリレー１５が接続されている。各パワー回路３２は、第２コネクタ２６を介して、モータリレー１５に並列に接続されている。そして、各パワー回路３２には、上記の各モータ１１が接続されている。
【００３０】
各パワー回路３２は、トランジスタやダイオード等を備え、上記電源１２から各モータ１１へ供給される電流を切り換える。これにより、各モータ１１は、正回転及び逆回転に駆動される。各パワー回路３２は、各制御回路４１からの駆動信号により制御される。
【００３１】
各制御回路４１は、送受信回路、位置検出回路、信号変換回路、及びウォッチドッグ制御回路を備えている。各送受信回路は、各モータ１１に設けられたエンコーダからの検出信号を受信するとともに、各パワー回路３２へ駆動信号を送信する。各送受信回路は、各ウォッチドッグ回路４３との間で信号を送受信する。各位置検出回路は、各エンコーダからの検出信号に基づいて、各モータ１１の回転角度を検出する。各信号変換回路は、上記第１ＣＰＵ３４からの指令を受信して各モータ１１を駆動する駆動信号に変換する。各ウォッチドッグ制御回路は、第１ＣＰＵ３４からの指令に基づいて、各ウォッチドッグ回路４３を制御する。
【００３２】
各ウォッチドッグ回路４３は、送受信回路、タイムカウンタＴＣ等を備えている。各送受信回路は、各制御回路４１からの信号を受信するとともに、各制御回路４１へタイムカウンタＴＣの値を送信する。各送受信回路は、第１ＣＰＵ３４からの指令を受信するとともに、隣り合う制御基板のウォッチドッグ回路４３と信号を送受信する。タイムカウンタＴＣは、０から１５まで所定速度でカウンタの値を１ずつ増加させる（インクリメント）。カウンタの値が１５になった場合には、次にカウンタの値を０に戻す。
【００３３】
そして、各ウォッチドッグ回路４３は、自己を監視する（異常であることを検出する）ウォッチドッグ回路へ信号値ＰＯＵＴを送信する。各ウォッチドッグ回路４３は、隣り合う制御基板のウォッチドッグ回路４３へ信号値ＰＯＵＴを送信するとともに、隣り合う制御基板のウォッチドッグ回路４３から信号値ＰＯＵＴを受信する。
【００３４】
詳しくは、メイン制御基板２１のウォッチドッグ回路４３は、第１ＣＰＵ３４のウォッチドッグ回路、及び第１サブ制御基板２２のウォッチドッグ回路４３へ、信号値ＰＯＵＴを送信する。一方、メイン制御基板２１のウォッチドッグ回路４３は、第１ＣＰＵ３４のウォッチドッグ回路、及び第１サブ制御基板２２のウォッチドッグ回路４３から、信号値ＰＯＵＴを受信する。第１サブ制御基板２２のウォッチドッグ回路４３は、メイン制御基板２１のウォッチドッグ回路４３、及び第２サブ制御基板２３のウォッチドッグ回路４３へ、信号値ＰＯＵＴを送信する。一方、第１サブ制御基板２２のウォッチドッグ回路４３は、メイン制御基板２１のウォッチドッグ回路４３、及び第２サブ制御基板２３のウォッチドッグ回路４３から、信号値ＰＯＵＴを受信する。第２サブ制御基板２３のウォッチドッグ回路４３は、第１サブ制御基板２２のウォッチドッグ回路４３へ、信号値ＰＯＵＴを送信する。一方、第２サブ制御基板２３のウォッチドッグ回路４３は、第１サブ制御基板２２のウォッチドッグ回路４３から、信号値ＰＯＵＴを受信する。このとき、信号値ＰＯＵＴの論理レベル（「Ｈ」又は「Ｌ」）は、各制御回路４１により制御される。
【００３５】
また、各ウォッチドッグ回路４３は、各演算回路３３の一方の入力端子にそれぞれ接続されており、各入力端子へ信号値ＴＩＭＥＵＰを送信する。このとき、信号値ＴＩＭＥＵＰの論理レベルは、各制御回路４１により制御され、その論理レベルが「Ｈ」の場合に異常が発生していることを示す（異常信号）。各演算回路３３の他方の入力端子には、下流側の制御基板における演算回路３３の出力端子がそれぞれ接続されている。詳しくは、メイン制御基板２１における演算回路３３の入力端子の１つには、第１サブ制御基板２２における演算回路３３の出力端子が接続されている。第１サブ制御基板２２における演算回路３３の入力端子の１つには、第２サブ制御基板２３における演算回路３３の出力端子が接続されている。第２サブ制御基板２３における演算回路３３の入力端子の１つは、接地されている。
【００３６】
演算回路３３は、負論理で動作する論理積回路であり、２つの入力端子からの入力が共に「Ｌ」である場合に「Ｌ」を出力し、それ以外の場合に「Ｈ」を出力する。ここで、第２サブ制御基板２３では、演算回路３３の一方の入力端子は接地されているため、その入力は常に「Ｌ」である。このため、ウォッチドッグ回路４３からの信号値ＴＩＭＥＵＰが「Ｌ」の場合のみ、演算回路３３の出力が「Ｌ」となる。そして、第１サブ制御基板２２では、第２サブ制御基板２３の演算回路３３からの出力が「Ｌ」であり、ウォッチドッグ回路４３からの信号値ＴＩＭＥＵＰが「Ｌ」の場合のみ、演算回路３３の出力が「Ｌ」となる。さらに、メイン制御基板２１では、第１サブ制御基板２２の演算回路３３からの出力が「Ｌ」であり、ウォッチドッグ回路４３からの信号値ＴＩＭＥＵＰが「Ｌ」の場合のみ、演算回路３３における出力端子Ａの出力が「Ｌ」となる。すなわち、制御基板２１，２２，２３の全てのウォッチドッグ回路４３において、信号値ＴＩＭＥＵＰが「Ｌ」の場合のみ、メイン制御基板２１における演算回路３３の出力端子Ａの出力が「Ｌ」となる。なお、上記の各信号を送信する信号線には、適宜プルアップ抵抗が接続されている。
【００３７】
ＣＰＵ３４，３５は、それぞれ内部メモリを有しており、内部メモリに記憶されたプログラムを実行する。ＣＰＵ３４，３５には、ＲＯＭ、ＲＡＭ、ＦＰＧＡ３１等が接続されている。ＲＯＭは、ロボットのシステムプログラムや動作プログラム等を記憶している。ＲＡＭは、これらのプログラムを実行する際にパラメータの値等を記憶する。そして、第１ＣＰＵ３４は、動作プログラムを実行することにより、上記各制御回路４１の位置検出回路から入力される位置情報に基づいて、各制御回路４１へ各モータ１１の位置や速度等の指令を送信し、ロボットの各関節の回転角度を目標回転角度にフィードバック制御する。なお、第１ＣＰＵ３４と第２ＣＰＵ３５とは、データバスにより互いに接続されており、それぞれを相互に監視して、一方に異常が生じた場合には他方がそれを補償するように動作する。
【００３８】
ＣＰＵ３４，３５は、各演算回路３６の一方の入力端子にそれぞれ接続されている。各演算回路３６の他方の入力端子は、メイン制御基板２１における演算回路３３の上記出力端子Ａに接続されている。各演算回路３６は、負論理で動作する論理積回路であり、両入力が「Ｌ」である場合に「Ｈ」を出力し、それ以外の場合に「Ｌ」を出力する。各演算回路３６の出力端子は、フォトカプラ３７の信号入力端子に接続されている。
【００３９】
各フォトカプラ３７は、各トランジスタ３８のベースにそれぞれ接続されており、各演算回路３６から「Ｈ」出力を入力した場合に、各トランジスタ３８のエミッタとベースとの間に電流を流す。これにより、２つのトランジスタ３８のエミッタとコレクタとの間に電流が流れると、上記モータリレー１５がＯＮとなる。すなわち、２つの演算回路３６の出力が共に「Ｈ」である場合にモータリレー１５がＯＮとなり、いずれか一方の演算回路３６の出力が「Ｌ」である場合にはモータリレー１５がＯＦＦとなる。ＣＰＵ３４，３５は、いずれかのモータ１１を駆動する場合に、各演算回路３６へそれぞれ「Ｌ」を出力し、いずれのモータ１１も駆動しない場合には、各演算回路３６へそれぞれ「Ｈ」を出力する。
【００４０】
次に、制御基板２１，２２，２３において、１つの制御基板のＦＰＧＡ３１が、他の制御基板のＦＰＧＡ３１の異常を検出する異常検出回路を形成し、その異常検出回路により異常の検出される制御基板のＦＰＧＡ３１が、被検出回路を形成する場合の処理を説明する。図２は、異常検出回路の処理及び被検出回路の処理の手順を示すフローチャートである。これらの処理は、各ＦＰＧＡ３１において、ウォッチドッグ回路４３のタイムカウンタＴＣがカウンタの値をインクリメントする毎に、繰り返し実行される。また、これらの処理を開始するにあたって、第１ＣＰＵ３４（ＣＰＵ）は、制御基板２１，２２，２３の各ウォッチドッグ回路４３のタイムカウンタＴＣの値をリセットする。すなわち、全てのウォッチドッグ回路４３において、タイムカウンタＴＣの値を一致させる。
【００４１】
同図に示すように、まず、異常検出回路は、異常の検出を行うタイミングであるか否か判定する（Ｓ１１）。具体的には、制御回路４１は、タイムカウンタＴＣ（第１タイムカウンタ）の値が、０から始まる４（一定値）間隔の値、すなわち０，４，８，１２のいずれかの値（所定値）であるか否か判定する。
【００４２】
上記判定において、異常の検出を行うタイミングでないと判定した場合には（Ｓ１１：ＮＯ）、異常検出回路は、この一連の処理を一旦終了する（ＥＮＤ）。一方、上記判定において、異常の検出を行うタイミングであると判定した場合には（Ｓ１１：ＹＥＳ）、異常検出回路は、タイムカウンタＴＣの値に基づいて所定規則で１ビットの参照値を算出する（Ｓ１２）。
【００４３】
これと並行して、被検出回路は、タイムカウンタＴＣの値に基づいて、所定規則で１ビットの信号値ＰＯＵＴを算出する（Ｓ２１）。なお、被検出回路は、タイムカウンタＴＣ（第２タイムカウンタ）の値が、０，４，８，１２のいずれかの値（所定値）である場合に限らず、タイムカウンタＴＣの値がインクリメントされる毎に信号値ＰＯＵＴを算出する。
【００４４】
上記所定規則として、図３に示すように、制御回路４１は、２進数で表したタイムカウンタＴＣの値（４ｂｉｔ）に対して、全てのビットを入力値として排他的論理和（ＸＯＲ）を求める。すなわち、制御回路４１は、Ｂｉｔ０〜Ｂｉｔ３において、“１”の数が奇数個である場合に参照値（信号値ＰＯＵＴ）を“１”とし、偶数個である場合に参照値（信号値ＰＯＵＴ）を“０”とする。すなわち、異常検出回路及び被検出回路は、それぞれのタイムカウンタＴＣの値に基づいて、同一の所定規則でそれぞれ１ビットの参照値及び信号値ＰＯＵＴを算出する。
【００４５】
図２に戻り、続いて、被検出回路は信号値ＰＯＵＴを異常検出回路へ出力し（Ｓ２２）、異常検出回路は被検出回路からの信号値ＰＯＵＴを入力する（Ｓ１３）。具体的には、被検出回路の制御回路４１は、ウォッチドッグ回路４３に対して、異常検出回路のウォッチドッグ回路４３へと信号値ＰＯＵＴを出力させる。また、異常検出回路の制御回路４１は、ウォッチドッグ回路４３から、被検出回路のウォッチドッグ回路４３からの信号値ＰＯＵＴを入力する。ここで、被検出回路は、タイムカウンタＴＣの値が、０，４，８，１２のいずれかの値である場合に限らず、タイムカウンタＴＣの値がインクリメントされる毎に信号値ＰＯＵＴを出力する。これに対して、異常検出回路は、タイムカウンタＴＣの値が、０，４，８，１２のいずれかの値である場合にのみ、被検出回路からの信号値ＰＯＵＴを入力する。その後、被検出回路は、この一連の処理を一旦終了する（ＥＮＤ）。
【００４６】
続いて、異常検出回路の制御回路４１は、参照値と信号値ＰＯＵＴとが不一致であるか否か判定する（Ｓ１４）。この判定において、参照値と信号値ＰＯＵＴとが不一致でないと判定した場合には（Ｓ１４：ＮＯ）、異常検出回路は、この一連の処理を一旦終了する（ＥＮＤ）。一方、この判定において、参照値と信号値ＰＯＵＴとが不一致であると判定した場合には（Ｓ１４：ＹＥＳ）、異常検出回路は、信号値ＴＩＭＥＵＰを「Ｈ」として出力する（異常信号を出力）。具体的には、制御回路４１は、信号値ＴＩＭＥＵＰの論理レベルを「Ｈ」として、ウォッチドッグ回路４３から演算回路３３へ信号値ＴＩＭＥＵＰを出力させる。その後、異常検出回路は、この一連の処理を一旦終了する（ＥＮＤ）。
【００４７】
コントローラ２０では、上記の異常検出回路の処理と被検出回路の処理とが、複数のＦＰＧＡ３１の間で相互に行われている。具体的には、メイン制御基板２１（第１モータの制御基板）のＦＰＧＡ３１（第１ロジック回路）が異常検出回路を形成し、第１サブ制御基板２２（第２モータの制御基板）のＦＰＧＡ３１（第２ロジック回路）が、それに対応する被検出回路を形成している。第１サブ制御基板２２のＦＰＧＡ３１が異常検出回路を形成し、メイン制御基板２１のＦＰＧＡ３１が、それに対応する被検出回路を形成している。また、第１サブ制御基板２２のＦＰＧＡ３１が異常検出回路を形成し、第２サブ制御基板２３（第３モータの制御基板）のＦＰＧＡ３１（第３ロジック回路）が、それに対応する被検出回路を形成している。第２サブ制御基板２３のＦＰＧＡ３１が異常検出回路を形成し、第１サブ制御基板２２のＦＰＧＡ３１が、それに対応する被検出回路を形成している。なお、第１ＣＰＵ３４が異常検出回路を形成し、メイン制御基板２１のＦＰＧＡ３１が、それに対応する被検出回路を形成している。メイン制御基板２１のＦＰＧＡ３１が異常検出回路を形成し、第１ＣＰＵ３４がそれに対応する被検出回路を形成している。
【００４８】
次に、異常検出回路及び被検出回路による処理の態様について説明する。図４はむ、タイムカウンタＴＣの値と信号値ＰＯＵＴと信号値ＴＩＭＥＵＰとの関係を示すタイミングチャートである。なお、異常検出回路及び被検出回路による処理は、それぞれのタイムカウンタＴＣの値が、第１ＣＰＵ３４により一致させられた後に開始される。
【００４９】
同図に示すように、まず、タイミングｔ１では、異常検出回路及び被検出回路の双方のタイムカウンタＴＣの値は０になっている。矢印で示すように、タイミングｔ１は、異常の検出を行うタイミングであるチェックタイミングとなっている。このため、図３に示すように、異常検出回路及び被検出回路は、それぞれ１ビットの参照値及び信号値ＰＯＵＴを“０”として算出する。
【００５０】
図４に戻り、被検出回路は信号値ＰＯＵＴとして“０”を出力し、異常検出回路はこの信号値ＰＯＵＴを入力する。ここで、被検出回路が正常であれば、被検出回路から入力された信号値ＰＯＵＴと、異常検出回路の算出した参照値とが一致し、異常検出回路の出力する信号値ＴＩＭＥＵＰは“０”となる。
【００５１】
続いて、タイムカウンタＴＣの値がインクリメントされる毎に、被検出回路は、図３に示す所定規則に従って信号値ＰＯＵＴを算出し、その信号値ＰＯＵＴを異常検出回路へ出力する。しかし、異常検出回路は、矢印で示すチェックタイミング以外では、信号値ＰＯＵＴの入力及び異常の検出を行わない。
【００５２】
タイミングｔ２では、タイムカウンタＴＣの値が４となり、チェックタイミングに相当する。このため、図３に示すように、異常検出回路及び被検出回路は、それぞれ１ビットの参照値及び信号値ＰＯＵＴを“１”として算出する。そして、上記と同様にして、被検出回路は信号値ＰＯＵＴとして“１”を出力し、異常検出回路はこの信号値ＰＯＵＴを入力する。この場合も、被検出回路が正常であれば、被検出回路から入力された信号値ＰＯＵＴと、異常検出回路の算出した参照値とが一致し、異常検出回路の出力する信号値ＴＩＭＥＵＰは“０”となる。
【００５３】
このようにして、各チェックタイミングにおいて、異常検出回路により被検出回路の異常検出が行われる。そして、タイムカウンタＴＣの値が１５になった後は、タイミングｔ３においてタイムカウンタＴＣの値が０に戻される。
【００５４】
ここで、タイミングｔ４において被検出回路に異常が発生すると、被検出回路から入力された信号値ＰＯＵＴが、異常検出回路の算出した参照値と一致しなくなる。例えば、異常検出回路の算出した参照値が“１”であるのに対して、被検出回路から入力された信号値ＰＯＵＴが“０”となる。このため、異常検出回路の出力する信号値ＴＩＭＥＵＰが“１”（異常信号）となる。
【００５５】
その結果、メイン制御基板２１において、演算回路３３の出力端子Ａの出力が「Ｈ」となり、演算回路３６の出力が「Ｌ」となる。このため、モータリレー１５がＯＦＦになり、電源１２から全てのモータ１１への電力供給が停止される。なお、第１ＣＰＵ３４又は第２ＣＰＵ３５により、所定の解除処理が実行されるまでこの状態が維持される。
【００５６】
以上詳述した本実施形態は以下の利点を有する。
【００５７】
・第１ＣＰＵ３４により、異常検出回路のタイムカウンタＴＣの値及び被検出回路のタイムカウンタＴＣの値が一致させられるため、同一の所定速度でカウントを行うこれらタイムカウンタＴＣでは、カウンタの値が互いに等しくなる。このため、それぞれタイムカウンタＴＣの値に基づいて、同一の所定規則で算出される１ビットの参照値及び信号値ＰＯＵＴは互いに等しくなる。その後、異常検出回路のタイムカウンタＴＣの値及び被検出回路のタイムカウンタＴＣの値が同時に所定値となり、被検出回路により異常検出回路へ１ビットの信号値ＰＯＵＴが出力され、異常検出回路によりその１ビットの信号値ＰＯＵＴが入力される。そして、入力された１ビットの信号値ＰＯＵＴが、算出された１ビットの参照値と一致しない場合に、異常検出回路により異常であることが検出される。このため、被検出回路に異常が生じて、参照値と一致する信号値ＰＯＵＴが算出されない場合や、信号値ＰＯＵＴが適切に出力されない場合には、異常であることが検出される。一方、入力された１ビットの信号値ＰＯＵＴが、算出された１ビットの参照値と一致する場合には、異常であることが検出されない。
【００５８】
すなわち、変化しない一定のクリア信号（１ビット）が、設定時間内に入力されない場合に異常であることが検出される単純タイマクリア方式と異なり、タイムカウンタＴＣの値により変化する参照値（１ビット）と同一の信号値ＰＯＵＴ（１ビット）が、所定時に入力されない場合に異常であることが検出される。外部ノイズの混入や、スイッチングノイズの混入、クロストーク等が生じたとしても、それらのノイズが参照値と同一の変化をする可能性は極めて低いため、それらのノイズにより、異常であることの検出が阻害されることを抑制することができる。しかも、上記の異常検出では、タイムカウンタＴＣの値を用いて１ビットの参照値及び信号値ＰＯＵＴを算出し、それらの値が一致しない場合に異常であることを検出するため、１ビットのクリア信号を処理する場合と同様のハードウェアにより異常の検出を行うことができる。その結果、ロボットのコントローラ２０において、特別なハードウェアを追加することを抑制しつつ、被検出回路が異常であることをより確実に検出することができる。
【００５９】
・異常検出回路のタイムカウンタＴＣの値及び被検出回路のタイムカウンタＴＣの値が、０から始まる４（一定値）間隔の値になった時に、被検出回路により異常検出回路へ１ビットの信号値ＰＯＵＴが出力され、異常検出回路によりその１ビットの信号値ＰＯＵＴが入力される。そして、入力された１ビットの信号値ＰＯＵＴが、算出された１ビットの参照値と一致しない場合に、異常検出回路により異常であることが検出される。このため、それぞれのタイムカウンタＴＣによりカウントが行われる度に、参照値の算出や信号値ＰＯＵＴの入力、及び異常の検出を行う必要がない。したがって、ＦＰＧＡ３１の処理負荷を軽減することができるとともに、異常検出の間隔が短過ぎることに起因して、異常であることが誤検出されることを抑制することができる。
【００６０】
・異常検出回路としてのメイン制御基板２１のＦＰＧＡ３１により、被検出回路としての第１サブ制御基板２２のＦＰＧＡ３１が異常であることが検出されるとともに、異常検出回路としての第１サブ制御基板２２のＦＰＧＡ３１により、被検出回路としてのメイン制御基板２１のＦＰＧＡ３１が異常であることが検出される。このため、ロボットのコントローラ２０において、簡易な構成により複数のＦＰＧＡ３１で相互に異常の検出を行うことができる。
【００６１】
・さらに、異常検出回路としての第１サブ制御基板２２のＦＰＧＡ３１により、被検出回路としての第２サブ制御基板２３のＦＰＧＡ３１が異常であることが検出されるとともに、異常検出回路としての第２サブ制御基板２３のＦＰＧＡ３１により、被検出回路としての第１サブ制御基板２２のＦＰＧＡ３１が異常であることが検出される。すなわち、第１サブ制御基板２２のＦＰＧＡ３１に接続された制御基板２１，２３のＦＰＧＡ３１の双方により、第１サブ制御基板２２のＦＰＧＡ３１が異常であることが検出される。このため、制御基板２１，２２，２３のＦＰＧＡ３１を１列に配置して隣同士で接続した場合に、両側の制御基板２１，２３のＦＰＧＡ３１により、それらの間に配置された第１サブ制御基板２２のＦＰＧＡ３１が異常であることを二重に検出することができる。その結果、制御基板２１，２２，２３のＦＰＧＡ３１を効率的に配置しつつ、被検出回路が異常であることをより確実に検出することができる。
【００６２】
・所定規則として、２進数で表したタイムカウンタＴＣの値に対して、全てのビットを入力値として排他的論理和（ＸＯＲ）を求めている。こうした構成によれば、簡易な処理によって、参照値が“０”と“１”との単純な繰り返しになることを避けつつ、参照値（信号値ＰＯＵＴ）に“０”と“１”とをバランスよく設定することができる。
【００６３】
なお、上記実施形態に限定されず、例えば次のように変形して実施することもできる。
【００６４】
・上記実施形態では、所定規則として、２進数で表したタイムカウンタＴＣの値に対して、全てのビットを入力値として排他的論理和を求める演算を採用した。しかしながら、所定の規則として、上記演算を行った後にその論理レベルを反転させる演算や、その他の演算を採用することもできる。
【００６５】
・上記実施形態では、制御基板２１，２２，２３を１列に配置したが、４つ以上の制御基板を一列に配置したり、４つ以上の制御基板を二列に配置したりしてもよい。また、第２サブ制御基板２３を備えず、メイン制御基板２１と第１サブ制御基板２２とを備える構成であってもよい。
【００６６】
・異常検出回路は、タイムカウンタＴＣの値が、０から始まる４（一定値）間隔の値になった時以外にも、参照値の算出と信号値ＰＯＵＴの入力とを行ってもよい。
【００６７】
・タイムカウンタＴＣは、カウンタの値をインクリメントするものに限らず、カウンタの値をデクリメントするものであってもよい。
【符号の説明】
【００６８】
１１…モータ、１２…三相交流電源、１５…モータリレー、２０…コントローラ、２１…メイン制御基板、２２…第１サブ制御基板、２３…第２サブ制御基板、３１…ＦＰＧＡ（異常検出回路、被検出回路）、３２…パワー回路、３４…第１ＣＰＵ（ＣＰＵ）、３３，３６…演算回路、４１…制御回路、４３…ウォッチドッグ回路。
【図１】
0005803170.tif 000002
【図２】
0005803170.tif 000003
【図３】
0005803170.tif 000004
【図４】
0005803170.tif 000005