(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-04
(45)【発行日】2023-12-12
(54)【発明の名称】ロボット制御システム
(51)【国際特許分類】
B25J 9/16 20060101AFI20231205BHJP
B25J 9/22 20060101ALI20231205BHJP
G05B 19/18 20060101ALI20231205BHJP
【FI】
B25J9/16
B25J9/22 A
G05B19/18 Y
(21)【出願番号】P 2022543939
(86)(22)【出願日】2021-08-16
(86)【国際出願番号】 JP2021029930
(87)【国際公開番号】W WO2022039130
(87)【国際公開日】2022-02-24
【審査請求日】2023-03-08
(31)【優先権主張番号】P 2020139400
(32)【優先日】2020-08-20
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100112357
【氏名又は名称】廣瀬 繁樹
(74)【代理人】
【識別番号】100169856
【氏名又は名称】尾山 栄啓
(72)【発明者】
【氏名】加藤 友樹
【審査官】牧 初
(56)【参考文献】
【文献】特開2004-82216(JP,A)
【文献】特開平7-72920(JP,A)
【文献】米国特許出願公開第2014/0142754(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00-21/02
G05B 19/04-19/05
G05B 19/18-19/416
G05B 19/42-19/46
(57)【特許請求の範囲】
【請求項1】
上位コントローラと、該上位コントローラに接続されたロボット制御装置とを備えるロボット制御システムにおいて、
前記上位コントローラは、
ロボットを制御するための制御プログラムに基づいて、前記ロボットに対する動作命令を表す命令情報及び該動作命令に付随する位置データと共に、該位置データの名称を表す名称情報を前記ロボット制御装置に送信する制御実行部を備え、
前記ロボット制御装置は、
受信した前記命令情報と前記位置データとに基づいて前記ロボットに対する動作プログラムを生成するプログラム生成部と、
受信した前記名称情報が表す前記名称を、前記動作プログラム内の前記位置データに対して付加する名称情報付加部と、を備えるロボット制御システム。
【請求項2】
前記制御実行部は、前記名称情報として前記名称を表す文字情報を送信する、請求項1に記載のロボット制御システム。
【請求項3】
前記上位コントローラは、プログラマブルロジックコントローラである、請求項1又は2に記載のロボット制御システム。
【請求項4】
前記制御実行部は、前記名称情報として、前記制御プログラムにおいて前記位置データに対応付けられた変数名を送信する、請求項3に記載のロボット制御システム。
【請求項5】
前記上位コントローラは数値制御装置である、請求項1又は2に記載のロボット制御システム。
【請求項6】
前記制御実行部は、前記名称情報として、前記制御プログラムにおいて前記位置データに対応付けられたラベルを送信する、請求項5に記載のロボット制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットを制御するロボット制御システムに関する。
【背景技術】
【0002】
産業用ロボットは、教示操作盤或いはプログラミング装置を用いて作成された動作プログラムをロボット制御装置にローディングし、ロボット制御装置から制御して動作させるのが一般的である。他方、近年、PLC(プログラマブルロジックコントローラ)により産業ロボットを制御するシステムも普及しつつある(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
近年、PLCopen(登録商標)規格等の普及により、産業用ロボットの制御のためのPLCプログラムの開発環境の整備も進展している。PLCを用いたロボット制御システムでは、一般に、PLCプログラムの実行によりPLCからロボット制御装置にロボットに対する動作命令が送信され、ロボット制御装置側でPLCからの動作命令に基づいて動作プログラムを生成しロボットを制御する。このようなロボット制御システムにおいて、PLCプログラムを用いたロボットの教示設定や、PLCプログラム開発時の動作確認を行う場面を想定すると、PLCプログラムとロボット制御装置側の動作プログラムとは異なるプログラム仕様であるため、PLCプログラムとロボット制御装置の動作プログラムとの対応はユーザにとって分かりづらく、エラー発生時の調査等に時間を要することとなる。
【課題を解決するための手段】
【0005】
本開示の一態様は、上位コントローラと、該上位コントローラに接続されたロボット制御装置とを備えるロボット制御システムにおいて、前記上位コントローラは、ロボットを制御するための制御プログラムに基づいて、前記ロボットに対する動作命令を表す命令情報及び該動作命令に付随する位置データと共に、該位置データの名称を表す名称情報を前記ロボット制御装置に送信する制御実行部を備え、前記ロボット制御装置は、受信した前記命令情報と前記位置データとに基づいて前記ロボットに対する動作プログラムを生成するプログラム生成部と、受信した前記名称情報が表す前記名称を、前記動作プログラム内の前記位置データに対して付加する名称情報付加部と、を備えるロボット制御システムである。
【発明の効果】
【0006】
上記構成によれば、ユーザは、上位コントローラの制御プログラムとロボット制御装置の動作プログラムとがどのように対応しているかを容易に把握することができる。それにより、教示設定やプログラミングを行う際のエラー調査やデバッグを効率的に行うことが可能となる。
【0007】
添付図面に示される本発明の典型的な実施形態の詳細な説明から、本発明のこれらの目的、特徴および利点ならびに他の目的、特徴および利点がさらに明確になるであろう。
【図面の簡単な説明】
【0008】
【
図1】
図1は一実施形態に係るロボット制御システムの全体構成を表す図である。
【
図2】上位コントローラとしてPLCが用いられる場合のPLCプログラムの例を表す図である。
【
図3】
図2の構成においてロボット制御装置に生成される動作プログラムを表す図である。
【
図4】上位コントローラとしてCNCが用いられる場合のCNCプログラムの例を表す図である。
【
図5】
図4の構成においてロボット制御装置に生成される動作プログラムを表す図である。
【発明を実施するための形態】
【0009】
次に、本開示の実施形態について図面を参照して説明する。参照する図面において、同様の構成部分または機能部分には同様の参照符号が付けられている。理解を容易にするために、これらの図面は縮尺を適宜変更している。また、図面に示される形態は本発明を実施するための一つの例であり、本発明は図示された形態に限定されるものではない。
【0010】
図1は一実施形態に係るロボット制御システム100の全体構成を表す図である。ロボット制御システム100は、上位コントローラ20と、ロボット制御装置50と、ロボット10とを備え、ロボット10を制御するロボット制御装置50と、上位コントローラ20とが通信可能に接続された構成となっている。ロボット制御システム100は、上位コントローラ20上でロボット10に対する制御プログラムを作成することができるシステムである。上位コントローラ20は、上位コントローラ20上で構築されたロボット10の制御プログラムにしたがって、ロボット10に対する動作命令をロボット制御装置50に対して送信する。ロボット制御装置50は、上位コントローラ20から送信されてきた動作命令に基づいてロボット10の動作プログラムを生成してロボット10を動作させる。
【0011】
上位コントローラ20は、CPU、ROM、RAM、記憶装置、操作部、表示部、入出力インタフェース、ネットワークインタフェース等を有する一般的なコンピュータとしての構成を有していても良い。上位コントローラ20は、例えば、PLC(プログラマブルロジックコントローラ)、或いはCNC(数値制御装置)である。なお、上位コントローラ20としては、PLC、CNC以外にもPC等の各種情報処理装置を用いることができる。ロボット制御装置50は、CPU、ROM、RAM、記憶装置、操作部、表示部、入出力インタフェース、ネットワークインタフェース等を有する一般的なコンピュータとしての構成を有していても良い。なお、上位コントローラ20とロボット制御装置50間の接続には、フィールドバス、有線又は無線LAN、その他各種ネットワークを用いることができる。
【0012】
図1に示すように上位コントローラ20は、記憶装置内に、上位コントローラ20上のソフトウェア環境上で構築されたロボット10を制御するための制御プログラム21を保有している。更に、上位コントローラ20は、制御実行部22と、通信インタフェース23とを有する。制御実行部22は、制御プログラム21を解釈し、ロボット10に対する動作命令を表す命令情報を通信インタフェース23を介してロボット制御装置50に送信する。制御プログラム21における命令が位置データを伴う動作命令である場合、制御実行部22は、ロボット10に対する動作命令を表す命令情報及び該動作命令に付随する位置データと共に、該位置データの名称を表す名称情報をロボット制御装置50に送信する。
【0013】
ロボット制御装置50は、プログラム生成部51と、名称情報付加部52と、プログラム実行部53と、通信インタフェース54とを有する。ロボット制御装置50においてプログラム生成部51は、上位コントローラ20から送信されてきた命令情報に基づいてロボット10の動作命令を生成し動作プログラム56として作成する。この際、動作命令に付随して位置データと、該位置データに関連付けて名称情報が送信されてきている場合、名称情報付加部52は、位置データの名称を、例えば、コメント文として位置データに対して付加する。プログラム実行部53は、プログラム生成部51によって生成された動作プログラム56を実行してロボット10を動作させる。
【0014】
以下では、上位コントローラ20が、PLCである場合と、CNCである場合の二例について具体的な構成を説明する。
【0015】
図2-
図3を参照して上位コントローラ20がPLC20Aである場合の構成例について説明する。
図2は、PLC20A上で作成された制御プログラム(以下、PLC上で構築された制御プログラムをPLCプログラムとも記載する)の一例を示している。PLC上の制御プログラムは、ラダー言語や構造化テキスト言語で作成することができる。ここでは、構造化テキスト言語で作成された制御プログラムの例を示す。
図2のPLCプログラムは、変数定義24と、PLCプログラム本体21A(以下、単にPLCプログラム21Aと記載する)と、二つのファンクションブロック(FB)25a、25bとを含む。
【0016】
変数定義24は、2つの構造体変数HOME.POSITION、PICK.POSITIONを含み、これら各々の構造体変数は、X,Y,Z位置の3つの変数からなる。これら変数の値は、それぞれ、HOME.POSITION.X=0、HOME.POSITION.Y=0、HOME.POSITION.Z=0、及びPICK.POSITION.X=30、PICK.POSITION.Y=20、PICK.POSITION.Z=15に設定されている。
【0017】
PLCプログラム21Aは、ロボットを直線動作させる命令であるMoveLinear関数、及びロボットを各軸動作させる命令であるMoveAxes関数を含む。MoveLinear関数、及びMoveAxes関数の動作はファンクションブロック(FB)25a、25bにそれぞれ定義されている。MoveLinear関数は、目標位置の引数DestPosにロボットの位置データの構造体HOME.POSITIONを入力する。これにより、ロボット10に対しては、MoveLinear命令(直線動作)の目標位置データとしてX=0,Y=0,Z=0が指令される。MoveLinear関数のファンクションブロック25aには、MoveLinear関数に対応するコマンドIDとして数値1を設定することが定義されている。この場合、制御実行部22は、ファンクションブロック25aを解釈し、動作命令MoveLinearに対応する命令情報として“コマンドID=1”をロボット制御装置50に送信すると共に、位置データ(DestPos)をロボット制御装置50に送信する。
【0018】
制御実行部22は、更に、動作命令MoveLinearに付随する位置データの変数名である‘HOME.POSITION’を送信データに含める。すなわち、この場合、制御実行部22は、以下のデータをロボット制御装置に送信する。
・コマンドID=1
・位置データ(X,Y,Z)=(0,0,0)
・‘HOME.POSITION’
【0019】
MoveAxes関数は、目標位置の引数DestPosにロボットの位置データの構造体PICK.POSITIONを入力する。これにより、ロボット10に対しては、MoveAxes命令(直線動作)の目標位置データとしてX=30,Y=20,Z=15が指令される。MoveAxes関数のファンクションブロック25bには、MoveAxes関数に対応するコマンドIDとして数値2を設定することが定義されている。この場合、制御実行部22は、ファンクションブロック25bの内容を解釈し、動作命令MoveAxesに対応する命令情報として“コマンドID=2”をロボット制御装置50に送信すると共に、位置データ(DestPos)をロボット制御装置50に送信する。
【0020】
制御実行部22は、更に、動作命令MoveAxesに付随する位置データの変数名である‘PICK.POSITION’を送信データに含める。すなわち、この場合、制御実行部22は、以下のデータをロボット制御装置50に送信する。
・コマンドID=2
・位置データ(X,Y,Z)=(30,20,15)
・‘PICK.POSITION’
【0021】
PLC20から送信されたデータは、ロボット制御装置50の例えばRAM内の一次記憶領域55に格納される。プログラム生成部51は、PLC20Aから送信されたデータに基づいてロボット10の動作プログラムを生成する。一例として、ロボット制御装置50は、下記表1のようなコマンドIDと動作命令とを対応付けたテーブルを保有していても良い。この場合、プログラム生成部51は、このテーブルを参照することで、PLC20から送信されてきたコマンドIDに対応する動作命令を認識することができる。なお、この場合、PLC20Aも表1と同様のテーブルを保有する。下記表1のテーブルでは、コマンドID=1,2,3,4に、それぞれ直線動作、各軸動作、一時停止、動作再開が対応付けられている。
【0022】
【0023】
PLC20Aから送信されたデータがコマンドID=1であるとする。この場合、プログラム生成部51は、コマンドID=1から、動作命令が直線動作であることを認識する。そして、プログラム生成部51は、コマンドID=1と共に送信されてきた位置データ(0,0,0)を位置レジスタP[1]に格納して、ロボット10の直線動作の命令‘L P[1]’を生成すると共に、位置データ(0,0,0)と共に送付されてきた当該位置データの名称としてのテキストHOME.POSITIONを、位置レジスタP[1]に対しコメント文として挿入する。これにより、プログラム生成部51は、直線動作の命令文として、
‘L P[1:HOME.POSITION]’
を生成する。
【0024】
プログラム実行部53は、一例として動作プログラム56A内に新たな命令文が生成される毎に動作命令を実行するよう構成され、上記‘L P[1:HOME.POSITION]’が動作プログラム56Aに挿入されると、プログラム実行部53は、ロボット10の可動部に設定された制御対象部位を位置レジスタP[1]に設定された目標位置(ホームポシション)に直線移動させる。
【0025】
PLC20AからさらにコマンドID=2が送信されてくると、プログラム生成部51は、コマンドID=2から、動作命令が各軸動作であることを認識する。そして、プログラム生成部51は、コマンドID=2と共に送信されてきた位置データ(30,20,15)を位置レジスタP[2]に格納して、ロボット10の各軸動作の命令‘J P[2]’を生成すると共に、位置データ(30,20,15)と共に送付されてきた当該位置データの名称としてのテキストPICK.POSITIONを、位置レジスタP[2]に対しコメント文として挿入する。これにより、プログラム生成部51は、各軸動作の命令文として、
‘J P[2:PICK.POSITION]’
を生成する。
【0026】
上記命令‘J P[2:PICK.POSITION]’が動作プログラム56Aに挿入されると、プログラム実行部53は、ロボット10の制御対象部位を位置レジスタP[2]に設定された目標位置(ピックポジション)に移動させる。
【0027】
このようにPLCプログラムにおいて位置データを表す変数名が、ロボット制御装置50側の動作プログラムに位置データを表すコメント文として挿入される。すなわち、PLCプログラムにおいて位置データに割り当てたテキスト情報が、ロボット制御装置50側の動作プログラムにおいて位置データを表すテキスト情報として反映される。したがって、ユーザは、PLCプログラムと動作プログラムとがどのように対応しているかを容易に把握することができる。例えば、PLCからロボット制御装置に入力される位置データに誤りがあった状況を想定する。この場合、ロボットが意図しない位置に停止することでユーザは入力データの誤りに気付くが、多量の命令がPLCからロボット制御装置に入力されていると、動作プログラム内のどの命令文に誤りがあるかを見つけ出すことは難しい。このような場合にも、動作プログラム内の位置データに、PLCプログラム内の変数名と共通の名称が付加されていると、誤りのある位置データを検索して容易に見つけ出すことができる。すなわち、ロボット制御システムにおいて教示設定やプログラミングを行う際のエラー調査やデバッグを効率的に行うことができる。
【0028】
次に、
図4-
図5を参照して上位コントローラ20がCNC(数値制御装置)20Bである場合の構成例について説明する。
図4は、CNC20B上で作成された制御プログラム(以下、CNC上で構築された制御プログラムをCNCプログラムとも記載する)の一例を示している。
図4のGコードによるCNCプログラム21Bは以下の内容を含む。
G90:アブソリュート指令であり、座標を絶対値で指定することを指定する。
G01:直線動作を指令する。以下の位置、速度で動作する。
座標位置:X_、Y_、Z_
姿勢(X,Y,Z軸回りの回転角):A_,B_,C_
速度:F_
D001:メモリ上の特定の領域の位置番号‘001’にあるラベル(文字情報)を位置X,Y,Z、に関する名称情報としてロボット制御装置50に送信することを指定する。
M30:メインプログラムの終了を表す。
【0029】
図4のCNCプログラム21Bを実行すると、制御実行部22は、CNCプログラム21Bを解釈し、命令G01が直線動作を指令していることを把握する。なお、CNC20Bは、上記表1に示したテーブルを保有しており、このテーブルを参照することで動作命令に対応するコマンドIDを認識する。そして、制御実行部22は、直線動作を表すコマンドID=1と共に、X、Y、Z、A、B、Cに設定された位置姿勢データ、及び速度データを送信する。更に、制御実行部22は、‘D001’で指定されたアドレスに割り当てられているラベルを、位置データの名称情報としてロボット制御装置50に送信する。ここでは、 ‘D001’で指定されたアドレスにラベルとして‘HOME.POSITION’が設定されているとする。この場合、制御実行部22は、位置データの名称情報として、‘HOME.POSITION’をロボット制御装置50に送信する。コマンドID、位置データ、及びラベルは、ロボット制御装置50において一次記憶領域55に一旦格納される。
【0030】
ロボット制御装置50のプログラム生成部51は、コマンドID=1から、動作命令が直線動作であることを認識する。そして、プログラム生成部51は、コマンドID=1と共に送信されてきた位置姿勢データ(X、Y、Z、A、B、C)(10.0,20.0,30.0,40.0,50.0,60.0)を位置レジスタP[1]に格納して、ロボット10の直線動作の命令‘L P[1]’を動作プログラム56Bとして生成すると共に、位置姿勢データと共に送付されてきた当該位置データの名称としてのテキストHOME.POSITIONを、位置レジスタP[1]に対しコメント文として挿入する。これにより、プログラム生成部51は、直線動作の命令文として、
‘L P[1:HOME.POSITION]’
を生成する。なお、CNCプログラム21Bで指定された速度については、速度オーバーライドを指定する数値として上記命令文に追加しても良い。
【0031】
このようにCNCプログラム21Bにおいて位置データを表すラベルが、ロボット制御装置50側の動作プログラム56Bに位置データを表すコメント文として挿入される。すなわち、CNCプログラム21Bにおいて位置データに割り当てたテキスト情報が、ロボット制御装置50側の動作プログラム56Bにおいて位置データを表すテキスト情報として反映される。したがって、ユーザは、CNCプログラムと動作プログラムとがどのように対応しているかを容易に把握することができる。すなわち、PLCプログラムに関して上述した場合と同様に、教示設定やプログラミングを行う際のエラー調査やデバッグを効率的に行うことができる。
【0032】
また、CNCプログラムの場合には、命令コード‘D001’で指定されるメモリ領域においてユーザが自由に設定したラベルを、ロボット制御装置側の位置データの名称として反映させることができるので、ユーザの利便性をいっそう高めることができる。
【0033】
以上説明したように、本実施形態によれば、ユーザは、上位コントローラの制御プログラムとロボット制御装置の動作プログラムとがどのように対応しているかを容易に把握することができる。それにより、教示設定やプログラミングを行う際のエラー調査やデバッグを効率的に行うことが可能となる。
【0034】
以上、典型的な実施形態を用いて本発明を説明したが、当業者であれば、本発明の範囲から逸脱することなしに、上述の各実施形態に変更及び種々の他の変更、省略、追加を行うことができるのを理解できるであろう。
【0035】
上述の実施形態では、上位コントローラからロボット制御装置に対して名称情報としてテキスト情報(変数名、ラベル)自体を送付する例を示したが、このような構成に替えて、名称情報として名称を表す識別情報(ID)を送信するようにしても良い。なお、この場合、上位コントローラ及びロボット制御装置の各々は識別情報と文字情報を対応付けるテーブルを保有するよう構成される。
【0036】
図1に示した上位コントローラの機能(制御実行部)は、上位コンとローラのCPUが各種ソフトウェアを実行することで実現されても良く、或いは、ASIC(Application Specific Integrated Circuit)等のハードウェアを主体とした構成により実現されても良い。また、
図1に示したロボット制御装置50の機能(プログラム生成部、名称情報付加部、プログラム実行部)は、ロボット制御装置のCPUが各種ソフトウェアを実行することで実現されても良く、或いは、ASIC等のハードウェアを主体とした構成により実現されても良い。
【符号の説明】
【0037】
10 ロボット
20 上位コントローラ
21 制御プログラム
22 制御実行部
23 通信インタフェース
24 変数定義
25a、25b ファンクションブロック
20A プログラマブルロジックコントローラ
20B 数値制御装置
21A PLCプログラム
21B CNCプログラム
50 ロボット制御装置
51 プログラム生成部
52 名称情報付加部
53 プログラム実行部
54 通信インタフェース
55 一次記憶領域
56、56A、56B 動作プログラム
100 ロボット制御システム