説明

ロボットのコントローラ

【課題】ロボットのコントローラにおいて、特別なハードウェアを追加することを抑制しつつ、被検出対象が異常であることをより確実に検出する。
【解決手段】ロボットのコントローラ20は、メイン制御基板21及び第1サブ制御基板22を備える。制御基板21,22の各FPGA31は、所定速度でカウントを行うタイムカウンタTCを有し、タイムカウンタTCの値に基づいて所定規則で1ビットの参照値及び信号値POUTをそれぞれ算出し、タイムカウンタTCの値が所定値になった時に、1ビットの信号値POUTの入力及び1ビットの信号値POUTの出力をそれぞれ行う。制御基板21のFPGA31は、信号値POUTが参照値と一致しないことを条件として異常であることを検出する。第1CPU34は、上記2つのタイムカウンタTCの値を一致させた後に、制御基板21のFPGA31に異常の検出を開始させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットのコントローラに関する。
【背景技術】
【0002】
従来、産業ロボットのコントローラ等、モータのコントローラは、数値演算を行って指令を送信するメインのプロセッサ(CPU)と、その指令を受信してモータを駆動する信号に変換するロジック回路と、その信号に基づいて制御されるパワー回路とにより構成されている。ロジック回路は、ゲートロジックで形成され、一般にFPGA(Field Programmable Gate Array)をはじめとしたゲートアレイ(G/A)が用いられている。
【0003】
CPUやG/Aが停止すると、パワー回路へ異常信号が伝達され、モータが異常動作を行うおそれがある。そこで、モータの異常動作を防ぐために、CPUやG/Aで相互に異常の検出を行い、異常であることを検出した場合には、直ちにモータを停止させる処理を実行する必要がある。
【0004】
相互に異常の検出を行う手段として、一般にウォッチドッグ回路が用いられている。ウォッチドッグ回路では、検出間隔を容易に設定でき、且つ構成が簡単であることから、タイムアップカウンタが用いられている(例えば、特許文献1,2参照)。特許文献1,2に記載のものでは、被検出対象がクリア信号を送信してタイマを設定時間内にクリアした場合に正常と判定し、タイマをカウントアップすることでタイムアップを検出する(単純タイマクリア方式)。そして、タイムアップカウンタが、オーバフローに至った場合に異常であると判定する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−237981号公報
【特許文献2】特開2007−265103号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、単純タイマクリア方式では、被検出対象に異常が生じた場合であっても、外部ノイズの混入や、スイッチングノイズの混入、クロストーク等により、タイムアップカウンタが定期的にクリアされるおそれがある。この場合、ウォッチドッグ回路は、正常であると判定することとなり、被検出対象が異常であると判定することが困難となる。
【0007】
特にロボットでは、こうした状態が継続すると問題を誘発するおそれがあるため、被検出対象が異常であることを確実に検出する必要がある。ただし、被検出対象が異常であることを確実に検出するために、特別なハードウェアを追加することはコストアップを招くこととなる。
【0008】
本発明は、こうした実情に鑑みてなされたものであり、ロボットのコントローラにおいて、特別なハードウェアを追加することを抑制しつつ、被検出対象が異常であることをより確実に検出することにある。
【課題を解決するための手段】
【0009】
本発明は、上記課題を解決するために、以下の手段を採用した。
【0010】
第1の発明は、ロボットのコントローラであって、所定速度でカウントを行う第1タイムカウンタを有し、前記第1タイムカウンタの値に基づいて所定規則で1ビットの参照値を算出し、前記第1タイムカウンタの値が所定値になった時に入力された1ビットの信号値と前記参照値とが一致しないことを条件として異常であることを検出する異常検出回路と、前記所定速度でカウントを行う第2タイムカウンタを有し、前記第2タイムカウンタの値に基づいて前記所定規則で1ビットの信号値を算出し、前記第2タイムカウンタの値が前記所定値になった時に、前記算出した1ビットの信号値を前記異常検出回路へ出力する被検出回路と、前記第1タイムカウンタの値及び前記第2タイムカウンタの値を一致させた後に、前記異常検出回路に前記異常の検出を開始させるCPUと、を備えることを特徴とする。
【0011】
上記構成によれば、異常検出回路の第1タイムカウンタ及び被検出回路の第2タイムカウンタにより、同一の所定速度でカウントが行われる。そして、異常検出回路及び被検出回路により、それぞれのタイムカウンタの値に基づいて、同一の所定規則で1ビットの参照値及び信号値がそれぞれ算出される。また、第1タイムカウンタの値が所定値になった時に、異常検出回路により1ビットの信号値が入力され、第2タイムカウンタの値が同じく所定値になった時に、被検出回路により、算出された1ビットの信号値が異常検出回路へ出力される。
【0012】
ここで、CPUにより、第1タイムカウンタの値及び第2タイムカウンタの値が一致させられるため、同一の所定速度でカウントを行う第1タイムカウンタ及び第2タイムカウンタでは、カウンタの値が互いに等しくなる。このため、それぞれタイムカウンタの値に基づいて、同一の所定規則で算出される1ビットの参照値及び信号値は互いに等しくなる。その後、第1タイムカウンタの値及び第2タイムカウンタの値が同時に所定値となり、被検出回路により異常検出回路へ1ビットの信号値が出力され、異常検出回路によりその1ビットの信号値が入力される。そして、入力された1ビットの信号値が、算出された1ビットの参照値と一致しない場合に、異常検出回路により異常であることが検出される。このため、被検出回路に異常が生じて、参照値と一致する信号値が算出されない場合や、信号値が適切に出力されない場合には、異常であることが検出される。一方、入力された1ビットの信号値が、算出された1ビットの参照値と一致する場合には、異常であることが検出されない。
【0013】
すなわち、変化しない一定のクリア信号(1ビット)が、設定時間内に入力されない場合に異常であることが検出される単純タイマクリア方式と異なり、タイムカウンタの値により変化する参照値(1ビット)と同一の信号値(1ビット)が、所定時に入力されない場合に異常であることが検出される。外部ノイズの混入や、スイッチングノイズの混入、クロストーク等が生じたとしても、それらのノイズが参照値と同一の変化をする可能性は極めて低いため、それらのノイズにより、異常であることの検出が阻害されることを抑制することができる。しかも、上記の異常検出では、タイムカウンタの値を用いて1ビットの参照値及び信号値を算出し、それらの値が一致しない場合に異常であることを検出するため、1ビットのクリア信号を処理する場合と同様のハードウェアにより、異常の検出を行うことができる。その結果、ロボットのコントローラにおいて、特別なハードウェアを追加することを抑制しつつ、被検出回路が異常であることをより確実に検出することができる。
【0014】
なお、被検出回路は、第2タイムカウンタの値が上記所定値になった時以外にも、信号値の算出及び出力を行ってもよい。また、異常検出回路は、第2タイムカウンタの値が上記所定値になった時以外にも、参照値の算出と信号値の入力とを行ってもよい。
【0015】
第2の発明では、前記所定値は、前記第1タイムカウンタの値及び前記第2タイムカウンタの値において、一定値間隔の値である。
【0016】
上記構成によれば、第1タイムカウンタの値及び第2タイムカウンタの値が、一定値間隔で上記所定値になった時に、被検出回路により異常検出回路へ1ビットの信号値が出力され、異常検出回路によりその1ビットの信号値が入力される。そして、入力された1ビットの信号値が、算出された1ビットの参照値と一致しない場合に、異常検出回路により異常であることが検出される。このため、それぞれのタイムカウンタによりカウントが行われる度に、信号値や参照値の算出、信号値の出力や入力、及び異常の検出を行う必要がない。したがって、処理負荷を軽減することができるとともに、異常検出の間隔が短過ぎることに起因して、異常であることが誤検出されることを抑制することができる。
【0017】
第3の発明では、前記CPUから指令を受信して第1モータを駆動する信号に変換する第1ロジック回路と、前記第1ロジック回路に接続され、前記CPUから指令を受信して第2モータを駆動する信号に変換する第2ロジック回路とを備え、前記第1ロジック回路は、前記異常検出回路を形成して前記第2ロジック回路から前記信号値を入力するとともに、前記被検出回路を形成して前記第2ロジック回路へ前記信号値を出力するものであり、前記第2ロジック回路は、前記被検出回路を形成して前記第1ロジック回路へ前記信号値を出力するとともに、前記異常検出回路を形成して前記第1ロジック回路から前記信号値を入力するものである。
【0018】
上記構成によれば、異常検出回路としての第1ロジック回路により、被検出回路としての第2ロジック回路が異常であることが検出されるとともに、異常検出回路としての第2ロジック回路により、被検出回路としての第1ロジック回路が異常であることが検出される。このため、ロボットのコントローラにおいて、簡易な構成により複数のロジック回路で相互に異常の検出を行うことができる。
【0019】
第4の発明では、前記第2ロジック回路に接続され、前記CPUから指令を受信して第3モータを駆動する信号に変換する第3ロジック回路を備え、前記第2ロジック回路は、前記異常検出回路を形成して前記第3ロジック回路から前記信号値を入力するとともに、前記被検出回路を形成して前記第3ロジック回路へ前記信号値を出力するものであり、前記第3ロジック回路は、前記被検出回路を形成して前記第2ロジック回路へ前記信号値を出力するとともに、前記異常検出回路を形成して前記第2ロジック回路から前記信号値を入力するものである。
【0020】
上記構成によれば、異常検出回路としての第2ロジック回路により、被検出回路としての第3ロジック回路が異常であることが検出されるとともに、異常検出回路としての第3ロジック回路により、被検出回路としての第2ロジック回路が異常であることが検出される。すなわち、第2ロジック回路に接続された第1,第3ロジック回路の双方により、第2ロジック回路が異常であることが検出される。このため、第1〜第3ロジック回路を1列に配置して隣同士で接続した場合に、両側の第1,第3ロジック回路により、それらの間に配置された第2ロジック回路が異常であることを二重に検出することができる。その結果、第1〜第3ロジック回路を効率的に配置しつつ、被検出回路が異常であることをより確実に検出することができる。
【0021】
具体的には、第5の発明のように、前記所定規則は、2進数で表したタイムカウンタの値に対して、全てのビットを入力値として排他的論理和(XOR)を求める演算であるといった構成を採用することができる。例えば、2進数で表したタイムカウンタのビット数が4(10進数で0〜15)である場合には、この演算結果は以下のようになる。すなわち、4ビットの2進数に対して、全てのビットを入力値として排他的論理和(“1”の数が奇数個である場合に“1”、偶数個である場合に“0”)を求めると、2進数の“0000”では“0”、2進数の“0001”では“1”、2進数の“0010”では“1”、2進数の“0011”では“0”となる。こうした構成によれば、簡易な処理によって、参照値(信号値)が“0”と“1”との単純な繰り返しになることを避けつつ、参照値に“0”と“1”とをバランスよく設定することができる。
【図面の簡単な説明】
【0022】
【図1】ロボットのコントローラ及びその周辺構成を示す模式図。
【図2】異常検出回路の処理及び被検出回路の処理の手順を示すフローチャート。
【図3】タイムカウンタの値と信号値との関係を示す図。
【図4】タイムカウンタの値と信号値と異常信号との関係を示すタイミングチャート。
【発明を実施するための形態】
【0023】
以下、一実施形態について、図面を参照しつつ説明する。本実施形態は、機械組立工場等において、機械等の組み立てを行うロボットシステムとして具体化している。
【0024】
図1は、ロボットのコントローラ20及びその周辺構成を示す模式図である。同図に示すように、ロボットシステム(生産機器システム)は、ロボットの各関節を駆動するモータ11、各モータ11に電力を供給する三相交流電源12(電源)、電源12からの交流電流を直流電流に整流するダイオード13及びコンデンサ14、電源12から全てのモータ11への電力供給をON・OFFするモータリレー15、及びロボットのコントローラ20を備えている。モータリレー15は、正側の接点と負側の接点とを有しており、正側の接点と負側の接点とが同時にON又はOFFへ切り換えられる。
【0025】
コントローラ20は、メイン制御基板21、第1サブ制御基板22、第2サブ制御基板23、3つの第1コネクタ25、3つの第2コネクタ26、及び端部コネクタ24を備えている。メイン制御基板21は、第1CPU34、第2CPU35、演算回路36、フォトカプラ37、及びトランジスタ38を備えている。制御基板21,22,23は、それぞれFPGA31とパワー回路32と演算回路33とを備えている。
【0026】
各FPGA31(ロジック回路)は、制御回路41とウォッチドッグ回路43とを備えている。各FPGA31では、制御回路41とウォッチドッグ回路43とが接続され、ウォッチドッグ回路43と演算回路33とが接続されている。また、各制御基板の制御回路41及びウォッチドッグ回路43は、第1CPU34にそれぞれ並列に接続されている。
【0027】
隣り合う制御基板では、FPGA31同士が第1コネクタ25によって接続されている。メイン制御基板21のFPGA31と第1サブ制御基板22のFPGA31とが、第1コネクタ25によって接続され、第1サブ制御基板22のFPGA31と第2サブ制御基板23のFPGA31とが、第1コネクタ25によって接続されている。コントローラ20において終端のサブ基板である第2サブ制御基板23では、終端側の第1コネクタ25に上記端部コネクタ24が接続されている。
【0028】
詳しくは、隣り合う制御基板では、ウォッチドッグ回路43同士が第1コネクタ25によって接続されている。すなわち、メイン制御基板21のウォッチドッグ回路43と第1サブ制御基板22のウォッチドッグ回路43とが接続され、第1サブ制御基板22のウォッチドッグ回路43と第2サブ制御基板23のウォッチドッグ回路43とが接続されている。第2サブ制御基板23では、終端側の第1コネクタ25にウォッチドッグ回路43が接続されている。
【0029】
また、隣り合う制御基板では、パワー回路32同士が第2コネクタ26によって接続されている。メイン制御基板21のパワー回路32と第1サブ制御基板22のパワー回路32とが、第2コネクタ26によって接続され、第1サブ制御基板22のパワー回路32と第2サブ制御基板23のパワー回路32とが、第2コネクタ26によって接続されている。第2サブ制御基板23では、終端側の第2コネクタ26に上記モータリレー15が接続されている。各パワー回路32は、第2コネクタ26を介して、モータリレー15に並列に接続されている。そして、各パワー回路32には、上記の各モータ11が接続されている。
【0030】
各パワー回路32は、トランジスタやダイオード等を備え、上記電源12から各モータ11へ供給される電流を切り換える。これにより、各モータ11は、正回転及び逆回転に駆動される。各パワー回路32は、各制御回路41からの駆動信号により制御される。
【0031】
各制御回路41は、送受信回路、位置検出回路、信号変換回路、及びウォッチドッグ制御回路を備えている。各送受信回路は、各モータ11に設けられたエンコーダからの検出信号を受信するとともに、各パワー回路32へ駆動信号を送信する。各送受信回路は、各ウォッチドッグ回路43との間で信号を送受信する。各位置検出回路は、各エンコーダからの検出信号に基づいて、各モータ11の回転角度を検出する。各信号変換回路は、上記第1CPU34からの指令を受信して各モータ11を駆動する駆動信号に変換する。各ウォッチドッグ制御回路は、第1CPU34からの指令に基づいて、各ウォッチドッグ回路43を制御する。
【0032】
各ウォッチドッグ回路43は、送受信回路、タイムカウンタTC等を備えている。各送受信回路は、各制御回路41からの信号を受信するとともに、各制御回路41へタイムカウンタTCの値を送信する。各送受信回路は、第1CPU34からの指令を受信するとともに、隣り合う制御基板のウォッチドッグ回路43と信号を送受信する。タイムカウンタTCは、0から15まで所定速度でカウンタの値を1ずつ増加させる(インクリメント)。カウンタの値が15になった場合には、次にカウンタの値を0に戻す。
【0033】
そして、各ウォッチドッグ回路43は、自己を監視する(異常であることを検出する)ウォッチドッグ回路へ信号値POUTを送信する。各ウォッチドッグ回路43は、隣り合う制御基板のウォッチドッグ回路43へ信号値POUTを送信するとともに、隣り合う制御基板のウォッチドッグ回路43から信号値POUTを受信する。
【0034】
詳しくは、メイン制御基板21のウォッチドッグ回路43は、第1CPU34のウォッチドッグ回路、及び第1サブ制御基板22のウォッチドッグ回路43へ、信号値POUTを送信する。一方、メイン制御基板21のウォッチドッグ回路43は、第1CPU34のウォッチドッグ回路、及び第1サブ制御基板22のウォッチドッグ回路43から、信号値POUTを受信する。第1サブ制御基板22のウォッチドッグ回路43は、メイン制御基板21のウォッチドッグ回路43、及び第2サブ制御基板23のウォッチドッグ回路43へ、信号値POUTを送信する。一方、第1サブ制御基板22のウォッチドッグ回路43は、メイン制御基板21のウォッチドッグ回路43、及び第2サブ制御基板23のウォッチドッグ回路43から、信号値POUTを受信する。第2サブ制御基板23のウォッチドッグ回路43は、第1サブ制御基板22のウォッチドッグ回路43へ、信号値POUTを送信する。一方、第2サブ制御基板23のウォッチドッグ回路43は、第1サブ制御基板22のウォッチドッグ回路43から、信号値POUTを受信する。このとき、信号値POUTの論理レベル(「H」又は「L」)は、各制御回路41により制御される。
【0035】
また、各ウォッチドッグ回路43は、各演算回路33の一方の入力端子にそれぞれ接続されており、各入力端子へ信号値TIMEUPを送信する。このとき、信号値TIMEUPの論理レベルは、各制御回路41により制御され、その論理レベルが「H」の場合に異常が発生していることを示す(異常信号)。各演算回路33の他方の入力端子には、下流側の制御基板における演算回路33の出力端子がそれぞれ接続されている。詳しくは、メイン制御基板21における演算回路33の入力端子の1つには、第1サブ制御基板22における演算回路33の出力端子が接続されている。第1サブ制御基板22における演算回路33の入力端子の1つには、第2サブ制御基板23における演算回路33の出力端子が接続されている。第2サブ制御基板23における演算回路33の入力端子の1つは、接地されている。
【0036】
演算回路33は、負論理で動作する論理積回路であり、2つの入力端子からの入力が共に「L」である場合に「L」を出力し、それ以外の場合に「H」を出力する。ここで、第2サブ制御基板23では、演算回路33の一方の入力端子は接地されているため、その入力は常に「L」である。このため、ウォッチドッグ回路43からの信号値TIMEUPが「L」の場合のみ、演算回路33の出力が「L」となる。そして、第1サブ制御基板22では、第2サブ制御基板23の演算回路33からの出力が「L」であり、ウォッチドッグ回路43からの信号値TIMEUPが「L」の場合のみ、演算回路33の出力が「L」となる。さらに、メイン制御基板21では、第1サブ制御基板22の演算回路33からの出力が「L」であり、ウォッチドッグ回路43からの信号値TIMEUPが「L」の場合のみ、演算回路33における出力端子Aの出力が「L」となる。すなわち、制御基板21,22,23の全てのウォッチドッグ回路43において、信号値TIMEUPが「L」の場合のみ、メイン制御基板21における演算回路33の出力端子Aの出力が「L」となる。なお、上記の各信号を送信する信号線には、適宜プルアップ抵抗が接続されている。
【0037】
CPU34,35は、それぞれ内部メモリを有しており、内部メモリに記憶されたプログラムを実行する。CPU34,35には、ROM、RAM、FPGA31等が接続されている。ROMは、ロボットのシステムプログラムや動作プログラム等を記憶している。RAMは、これらのプログラムを実行する際にパラメータの値等を記憶する。そして、第1CPU34は、動作プログラムを実行することにより、上記各制御回路41の位置検出回路から入力される位置情報に基づいて、各制御回路41へ各モータ11の位置や速度等の指令を送信し、ロボットの各関節の回転角度を目標回転角度にフィードバック制御する。なお、第1CPU34と第2CPU35とは、データバスにより互いに接続されており、それぞれを相互に監視して、一方に異常が生じた場合には他方がそれを補償するように動作する。
【0038】
CPU34,35は、各演算回路36の一方の入力端子にそれぞれ接続されている。各演算回路36の他方の入力端子は、メイン制御基板21における演算回路33の上記出力端子Aに接続されている。各演算回路36は、負論理で動作する論理積回路であり、両入力が「L」である場合に「H」を出力し、それ以外の場合に「L」を出力する。各演算回路36の出力端子は、フォトカプラ37の信号入力端子に接続されている。
【0039】
各フォトカプラ37は、各トランジスタ38のベースにそれぞれ接続されており、各演算回路36から「H」出力を入力した場合に、各トランジスタ38のエミッタとベースとの間に電流を流す。これにより、2つのトランジスタ38のエミッタとコレクタとの間に電流が流れると、上記モータリレー15がONとなる。すなわち、2つの演算回路36の出力が共に「H」である場合にモータリレー15がONとなり、いずれか一方の演算回路36の出力が「L」である場合にはモータリレー15がOFFとなる。CPU34,35は、いずれかのモータ11を駆動する場合に、各演算回路36へそれぞれ「L」を出力し、いずれのモータ11も駆動しない場合には、各演算回路36へそれぞれ「H」を出力する。
【0040】
次に、制御基板21,22,23において、1つの制御基板のFPGA31が、他の制御基板のFPGA31の異常を検出する異常検出回路を形成し、その異常検出回路により異常の検出される制御基板のFPGA31が、被検出回路を形成する場合の処理を説明する。図2は、異常検出回路の処理及び被検出回路の処理の手順を示すフローチャートである。これらの処理は、各FPGA31において、ウォッチドッグ回路43のタイムカウンタTCがカウンタの値をインクリメントする毎に、繰り返し実行される。また、これらの処理を開始するにあたって、第1CPU34(CPU)は、制御基板21,22,23の各ウォッチドッグ回路43のタイムカウンタTCの値をリセットする。すなわち、全てのウォッチドッグ回路43において、タイムカウンタTCの値を一致させる。
【0041】
同図に示すように、まず、異常検出回路は、異常の検出を行うタイミングであるか否か判定する(S11)。具体的には、制御回路41は、タイムカウンタTC(第1タイムカウンタ)の値が、0から始まる4(一定値)間隔の値、すなわち0,4,8,12のいずれかの値(所定値)であるか否か判定する。
【0042】
上記判定において、異常の検出を行うタイミングでないと判定した場合には(S11:NO)、異常検出回路は、この一連の処理を一旦終了する(END)。一方、上記判定において、異常の検出を行うタイミングであると判定した場合には(S11:YES)、異常検出回路は、タイムカウンタTCの値に基づいて所定規則で1ビットの参照値を算出する(S12)。
【0043】
これと並行して、被検出回路は、タイムカウンタTCの値に基づいて、所定規則で1ビットの信号値POUTを算出する(S21)。なお、被検出回路は、タイムカウンタTC(第2タイムカウンタ)の値が、0,4,8,12のいずれかの値(所定値)である場合に限らず、タイムカウンタTCの値がインクリメントされる毎に信号値POUTを算出する。
【0044】
上記所定規則として、図3に示すように、制御回路41は、2進数で表したタイムカウンタTCの値(4bit)に対して、全てのビットを入力値として排他的論理和(XOR)を求める。すなわち、制御回路41は、Bit0〜Bit3において、“1”の数が奇数個である場合に参照値(信号値POUT)を“1”とし、偶数個である場合に参照値(信号値POUT)を“0”とする。すなわち、異常検出回路及び被検出回路は、それぞれのタイムカウンタTCの値に基づいて、同一の所定規則でそれぞれ1ビットの参照値及び信号値POUTを算出する。
【0045】
図2に戻り、続いて、被検出回路は信号値POUTを異常検出回路へ出力し(S22)、異常検出回路は被検出回路からの信号値POUTを入力する(S13)。具体的には、被検出回路の制御回路41は、ウォッチドッグ回路43に対して、異常検出回路のウォッチドッグ回路43へと信号値POUTを出力させる。また、異常検出回路の制御回路41は、ウォッチドッグ回路43から、被検出回路のウォッチドッグ回路43からの信号値POUTを入力する。ここで、被検出回路は、タイムカウンタTCの値が、0,4,8,12のいずれかの値である場合に限らず、タイムカウンタTCの値がインクリメントされる毎に信号値POUTを出力する。これに対して、異常検出回路は、タイムカウンタTCの値が、0,4,8,12のいずれかの値である場合にのみ、被検出回路からの信号値POUTを入力する。その後、被検出回路は、この一連の処理を一旦終了する(END)。
【0046】
続いて、異常検出回路の制御回路41は、参照値と信号値POUTとが不一致であるか否か判定する(S14)。この判定において、参照値と信号値POUTとが不一致でないと判定した場合には(S14:NO)、異常検出回路は、この一連の処理を一旦終了する(END)。一方、この判定において、参照値と信号値POUTとが不一致であると判定した場合には(S14:YES)、異常検出回路は、信号値TIMEUPを「H」として出力する(異常信号を出力)。具体的には、制御回路41は、信号値TIMEUPの論理レベルを「H」として、ウォッチドッグ回路43から演算回路33へ信号値TIMEUPを出力させる。その後、異常検出回路は、この一連の処理を一旦終了する(END)。
【0047】
コントローラ20では、上記の異常検出回路の処理と被検出回路の処理とが、複数のFPGA31の間で相互に行われている。具体的には、メイン制御基板21(第1モータの制御基板)のFPGA31(第1ロジック回路)が異常検出回路を形成し、第1サブ制御基板22(第2モータの制御基板)のFPGA31(第2ロジック回路)が、それに対応する被検出回路を形成している。第1サブ制御基板22のFPGA31が異常検出回路を形成し、メイン制御基板21のFPGA31が、それに対応する被検出回路を形成している。また、第1サブ制御基板22のFPGA31が異常検出回路を形成し、第2サブ制御基板23(第3モータの制御基板)のFPGA31(第3ロジック回路)が、それに対応する被検出回路を形成している。第2サブ制御基板23のFPGA31が異常検出回路を形成し、第1サブ制御基板22のFPGA31が、それに対応する被検出回路を形成している。なお、第1CPU34が異常検出回路を形成し、メイン制御基板21のFPGA31が、それに対応する被検出回路を形成している。メイン制御基板21のFPGA31が異常検出回路を形成し、第1CPU34がそれに対応する被検出回路を形成している。
【0048】
次に、異常検出回路及び被検出回路による処理の態様について説明する。図4はむ、タイムカウンタTCの値と信号値POUTと信号値TIMEUPとの関係を示すタイミングチャートである。なお、異常検出回路及び被検出回路による処理は、それぞれのタイムカウンタTCの値が、第1CPU34により一致させられた後に開始される。
【0049】
同図に示すように、まず、タイミングt1では、異常検出回路及び被検出回路の双方のタイムカウンタTCの値は0になっている。矢印で示すように、タイミングt1は、異常の検出を行うタイミングであるチェックタイミングとなっている。このため、図3に示すように、異常検出回路及び被検出回路は、それぞれ1ビットの参照値及び信号値POUTを“0”として算出する。
【0050】
図4に戻り、被検出回路は信号値POUTとして“0”を出力し、異常検出回路はこの信号値POUTを入力する。ここで、被検出回路が正常であれば、被検出回路から入力された信号値POUTと、異常検出回路の算出した参照値とが一致し、異常検出回路の出力する信号値TIMEUPは“0”となる。
【0051】
続いて、タイムカウンタTCの値がインクリメントされる毎に、被検出回路は、図3に示す所定規則に従って信号値POUTを算出し、その信号値POUTを異常検出回路へ出力する。しかし、異常検出回路は、矢印で示すチェックタイミング以外では、信号値POUTの入力及び異常の検出を行わない。
【0052】
タイミングt2では、タイムカウンタTCの値が4となり、チェックタイミングに相当する。このため、図3に示すように、異常検出回路及び被検出回路は、それぞれ1ビットの参照値及び信号値POUTを“1”として算出する。そして、上記と同様にして、被検出回路は信号値POUTとして“1”を出力し、異常検出回路はこの信号値POUTを入力する。この場合も、被検出回路が正常であれば、被検出回路から入力された信号値POUTと、異常検出回路の算出した参照値とが一致し、異常検出回路の出力する信号値TIMEUPは“0”となる。
【0053】
このようにして、各チェックタイミングにおいて、異常検出回路により被検出回路の異常検出が行われる。そして、タイムカウンタTCの値が15になった後は、タイミングt3においてタイムカウンタTCの値が0に戻される。
【0054】
ここで、タイミングt4において被検出回路に異常が発生すると、被検出回路から入力された信号値POUTが、異常検出回路の算出した参照値と一致しなくなる。例えば、異常検出回路の算出した参照値が“1”であるのに対して、被検出回路から入力された信号値POUTが“0”となる。このため、異常検出回路の出力する信号値TIMEUPが“1”(異常信号)となる。
【0055】
その結果、メイン制御基板21において、演算回路33の出力端子Aの出力が「H」となり、演算回路36の出力が「L」となる。このため、モータリレー15がOFFになり、電源12から全てのモータ11への電力供給が停止される。なお、第1CPU34又は第2CPU35により、所定の解除処理が実行されるまでこの状態が維持される。
【0056】
以上詳述した本実施形態は以下の利点を有する。
【0057】
・第1CPU34により、異常検出回路のタイムカウンタTCの値及び被検出回路のタイムカウンタTCの値が一致させられるため、同一の所定速度でカウントを行うこれらタイムカウンタTCでは、カウンタの値が互いに等しくなる。このため、それぞれタイムカウンタTCの値に基づいて、同一の所定規則で算出される1ビットの参照値及び信号値POUTは互いに等しくなる。その後、異常検出回路のタイムカウンタTCの値及び被検出回路のタイムカウンタTCの値が同時に所定値となり、被検出回路により異常検出回路へ1ビットの信号値POUTが出力され、異常検出回路によりその1ビットの信号値POUTが入力される。そして、入力された1ビットの信号値POUTが、算出された1ビットの参照値と一致しない場合に、異常検出回路により異常であることが検出される。このため、被検出回路に異常が生じて、参照値と一致する信号値POUTが算出されない場合や、信号値POUTが適切に出力されない場合には、異常であることが検出される。一方、入力された1ビットの信号値POUTが、算出された1ビットの参照値と一致する場合には、異常であることが検出されない。
【0058】
すなわち、変化しない一定のクリア信号(1ビット)が、設定時間内に入力されない場合に異常であることが検出される単純タイマクリア方式と異なり、タイムカウンタTCの値により変化する参照値(1ビット)と同一の信号値POUT(1ビット)が、所定時に入力されない場合に異常であることが検出される。外部ノイズの混入や、スイッチングノイズの混入、クロストーク等が生じたとしても、それらのノイズが参照値と同一の変化をする可能性は極めて低いため、それらのノイズにより、異常であることの検出が阻害されることを抑制することができる。しかも、上記の異常検出では、タイムカウンタTCの値を用いて1ビットの参照値及び信号値POUTを算出し、それらの値が一致しない場合に異常であることを検出するため、1ビットのクリア信号を処理する場合と同様のハードウェアにより異常の検出を行うことができる。その結果、ロボットのコントローラ20において、特別なハードウェアを追加することを抑制しつつ、被検出回路が異常であることをより確実に検出することができる。
【0059】
・異常検出回路のタイムカウンタTCの値及び被検出回路のタイムカウンタTCの値が、0から始まる4(一定値)間隔の値になった時に、被検出回路により異常検出回路へ1ビットの信号値POUTが出力され、異常検出回路によりその1ビットの信号値POUTが入力される。そして、入力された1ビットの信号値POUTが、算出された1ビットの参照値と一致しない場合に、異常検出回路により異常であることが検出される。このため、それぞれのタイムカウンタTCによりカウントが行われる度に、参照値の算出や信号値POUTの入力、及び異常の検出を行う必要がない。したがって、FPGA31の処理負荷を軽減することができるとともに、異常検出の間隔が短過ぎることに起因して、異常であることが誤検出されることを抑制することができる。
【0060】
・異常検出回路としてのメイン制御基板21のFPGA31により、被検出回路としての第1サブ制御基板22のFPGA31が異常であることが検出されるとともに、異常検出回路としての第1サブ制御基板22のFPGA31により、被検出回路としてのメイン制御基板21のFPGA31が異常であることが検出される。このため、ロボットのコントローラ20において、簡易な構成により複数のFPGA31で相互に異常の検出を行うことができる。
【0061】
・さらに、異常検出回路としての第1サブ制御基板22のFPGA31により、被検出回路としての第2サブ制御基板23のFPGA31が異常であることが検出されるとともに、異常検出回路としての第2サブ制御基板23のFPGA31により、被検出回路としての第1サブ制御基板22のFPGA31が異常であることが検出される。すなわち、第1サブ制御基板22のFPGA31に接続された制御基板21,23のFPGA31の双方により、第1サブ制御基板22のFPGA31が異常であることが検出される。このため、制御基板21,22,23のFPGA31を1列に配置して隣同士で接続した場合に、両側の制御基板21,23のFPGA31により、それらの間に配置された第1サブ制御基板22のFPGA31が異常であることを二重に検出することができる。その結果、制御基板21,22,23のFPGA31を効率的に配置しつつ、被検出回路が異常であることをより確実に検出することができる。
【0062】
・所定規則として、2進数で表したタイムカウンタTCの値に対して、全てのビットを入力値として排他的論理和(XOR)を求めている。こうした構成によれば、簡易な処理によって、参照値が“0”と“1”との単純な繰り返しになることを避けつつ、参照値(信号値POUT)に“0”と“1”とをバランスよく設定することができる。
【0063】
なお、上記実施形態に限定されず、例えば次のように変形して実施することもできる。
【0064】
・上記実施形態では、所定規則として、2進数で表したタイムカウンタTCの値に対して、全てのビットを入力値として排他的論理和を求める演算を採用した。しかしながら、所定の規則として、上記演算を行った後にその論理レベルを反転させる演算や、その他の演算を採用することもできる。
【0065】
・上記実施形態では、制御基板21,22,23を1列に配置したが、4つ以上の制御基板を一列に配置したり、4つ以上の制御基板を二列に配置したりしてもよい。また、第2サブ制御基板23を備えず、メイン制御基板21と第1サブ制御基板22とを備える構成であってもよい。
【0066】
・異常検出回路は、タイムカウンタTCの値が、0から始まる4(一定値)間隔の値になった時以外にも、参照値の算出と信号値POUTの入力とを行ってもよい。
【0067】
・タイムカウンタTCは、カウンタの値をインクリメントするものに限らず、カウンタの値をデクリメントするものであってもよい。
【符号の説明】
【0068】
11…モータ、12…三相交流電源、15…モータリレー、20…コントローラ、21…メイン制御基板、22…第1サブ制御基板、23…第2サブ制御基板、31…FPGA(異常検出回路、被検出回路)、32…パワー回路、34…第1CPU(CPU)、33,36…演算回路、41…制御回路、43…ウォッチドッグ回路。

【特許請求の範囲】
【請求項1】
所定速度でカウントを行う第1タイムカウンタを有し、前記第1タイムカウンタの値に基づいて所定規則で1ビットの参照値を算出し、前記第1タイムカウンタの値が所定値になった時に入力された1ビットの信号値と前記参照値とが一致しないことを条件として異常であることを検出する異常検出回路と、
前記所定速度でカウントを行う第2タイムカウンタを有し、前記第2タイムカウンタの値に基づいて前記所定規則で1ビットの信号値を算出し、前記第2タイムカウンタの値が前記所定値になった時に、前記算出した1ビットの信号値を前記異常検出回路へ出力する被検出回路と、
前記第1タイムカウンタの値及び前記第2タイムカウンタの値を一致させた後に、前記異常検出回路に前記異常の検出を開始させるCPUと、
を備えることを特徴とするロボットのコントローラ。
【請求項2】
前記所定値は、前記第1タイムカウンタの値及び前記第2タイムカウンタの値において、一定値間隔の値である請求項1に記載のロボットのコントローラ。
【請求項3】
前記CPUから指令を受信して第1モータを駆動する信号に変換する第1ロジック回路と、前記第1ロジック回路に接続され、前記CPUから指令を受信して第2モータを駆動する信号に変換する第2ロジック回路とを備え、
前記第1ロジック回路は、前記異常検出回路を形成して前記第2ロジック回路から前記信号値を入力するとともに、前記被検出回路を形成して前記第2ロジック回路へ前記信号値を出力するものであり、
前記第2ロジック回路は、前記被検出回路を形成して前記第1ロジック回路へ前記信号値を出力するとともに、前記異常検出回路を形成して前記第1ロジック回路から前記信号値を入力するものである請求項1又は2に記載のロボットのコントローラ。
【請求項4】
前記第2ロジック回路に接続され、前記CPUから指令を受信して第3モータを駆動する信号に変換する第3ロジック回路を備え、
前記第2ロジック回路は、前記異常検出回路を形成して前記第3ロジック回路から前記信号値を入力するとともに、前記被検出回路を形成して前記第3ロジック回路へ前記信号値を出力するものであり、
前記第3ロジック回路は、前記被検出回路を形成して前記第2ロジック回路へ前記信号値を出力するとともに、前記異常検出回路を形成して前記第2ロジック回路から前記信号値を入力するものである請求項3に記載のロボットのコントローラ。
【請求項5】
前記所定規則は、2進数で表したタイムカウンタの値に対して、全てのビットを入力値として排他的論理和を求める演算である請求項1〜4のいずれか1項に記載のロボットのコントローラ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−190413(P2012−190413A)
【公開日】平成24年10月4日(2012.10.4)
【国際特許分類】
【出願番号】特願2011−55614(P2011−55614)
【出願日】平成23年3月14日(2011.3.14)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】