(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【0011】
〔コントロールシステム〕
本実施形態に係るコントロールシステム1は、一連の工程を実行するように複数種類の制御対象を制御するものである。
図1に示すように、コントロールシステム1は、複数の制御対象を制御する第一コントローラ100と、第一コントローラからの指令に応じて多軸ロボット10を制御する第二コントローラ200と、第一コントローラからの指令に応じて多軸ロボット10の周辺装置20を制御する第三コントローラ300とを備える。
【0012】
多軸ロボット10は、例えばシリアルリンク型の垂直多関節ロボットであり、複数(例えば6軸)の関節軸J1〜J6と、関節軸J1〜J6をそれぞれ駆動する複数のアクチュエータ11〜16とを有する。周辺装置20は、例えばサーボモータ21を有し、これを動力源として動作する。例えば周辺装置20は、多軸ロボット10による作業対象のワークを保持し、多軸ロボット10の作業と協調してワークの位置・姿勢を調節する。
【0013】
第一コントローラ100は、例えばPLC(Programmable Logic Controler)であり、所定の信号入力に応じて、第二コントローラ200及び第三コントローラ300を介した複数の制御処理を所定の順序で実行する。各々の制御処理において、第一コントローラ100は、所定の制御周期で第二コントローラ200及び第三コントローラ300に動作指令(例えば位置制御の目標値)を出力する。第一コントローラ100は、複数の制御対象を制御するものであればいかなるものであってもよく、所謂マシンコントローラであってもよい。
【0014】
第一コントローラ100は、機能的な構成(以下、「機能モジュール」という。)として、モーション記憶部110と、通信部120,130,140と、制御処理部150とを有する。
【0015】
モーション記憶部110は、多軸ロボット10及び周辺装置20の動作内容を規定する情報(以下、「モーション情報」という。)を記憶する。モーション情報は、例えば、多軸ロボット10の制御に用いるべき座標変換プログラムを指定する情報(以下、「プログラム指定情報」という。)と、多軸ロボット10及び周辺装置20に出力すべき動作指令を時系列で並べたリストとを含む。
【0016】
通信部120は、第二コントローラ200との間で情報の入出力を行う。通信部130は、第三コントローラ300との間で情報の入出力を行う。通信部140は、端末装置30との間で情報の入出力を行う。端末装置30は、モーション情報のプログラミングに用いられる。
【0017】
制御処理部150は、上記プログラム指定情報と、多軸ロボット10を動作させる第一動作指令とを通信部120により第二コントローラ200に出力することと、第二動作指令を通信部130により第三コントローラ300に出力することと、を実行するように構成されている。
【0018】
例えば制御処理部150は、より細分化された機能モジュールとして、指令生成部151と、プログラム指定部152と、指令出力部153,154と、モーション取得部155とを有する。
【0019】
指令生成部151は、モーション記憶部110に記憶されたモーション情報からプログラム指定情報を取得し、モーション情報に基づいて制御周期ごとに上記第一動作指令及び第二動作指令を生成する。プログラム指定情報は、例えば座標変換プログラムの識別番号である。第一動作指令は、例えば直交座標系等のシステム制御用の座標系(以下、「第一座標系」という。)にて、多軸ロボット10の先端部の位置・姿勢目標値を特定する数値データである。第二動作指令は、例えば周辺装置20のサーボモータ21の角度目標値を定める数値データである。
【0020】
プログラム指定部152は、プログラム指定情報を通信部120により第二コントローラ200に出力する。指令出力部153は、第一動作指令を通信部120により第二コントローラ200に出力する。指令出力部154は、第二動作指令を通信部130により第三コントローラ300に出力する。
【0021】
モーション取得部155は、所定の言語(以下、「第一プログラミング言語」という。)でプログラミングされたモーション情報を通信部140により端末装置30から取得し、当該モーション情報をモーション記憶部110に書き込む。第一プログラミング言語は、例えば産業用のプログラミング言語である。産業用プログラミング言語の具体例としては、LD(Ladder Diagram)、FBD(Function Block Diagram)、SFC(Sequential Function Chart)、IL(Instruction List)、及びST(Structured Text)等が挙げられる。
【0022】
第二コントローラ200は、例えばロボットコントローラであり、第一コントローラ100からの指令に応じて多軸ロボット10を制御する。第二コントローラ200は、機能的な構成(以下、「機能モジュール」という。)として、プログラム記憶部210と、モデル情報記憶部260と、通信部220,230と、制御処理部240と、電力出力部250とを有する。
【0023】
プログラム記憶部210は、複数の座標変換プログラムを記憶する。座標変換プログラムは、第一プログラミング言語によりプログラミングされたモーション情報内で指定することができ、上記第一座標系を多軸ロボット10の制御用の座標系(例えば、関節軸J1〜J6の関節座標系。以下、「第二座標系」という。)に変換するためのAPI(Application Programming Interface)である。座標変換プログラムは、第一コントローラ100の制御内容をプログラミングするための上記第一プログラミング言語とは異なる第二プログラミング言語によりプログラミングされている。座標変換プログラムは、第二プログラミング言語によりハードコーディングされていてもよい。ハードコーディングとは、座標変換の内容がユーザにより編集不能な形式でコーディングされていることを意味する。第二プログラミング言語の具体例としては、C言語、Basic、アセンブラ、又はパスカル等が挙げられる。
【0024】
複数の座標変換プログラムは、基準とする座標系が互いに異なる複数種類の第一コントローラ100にそれぞれ対応する複数の座標変換プログラムを含んでいてもよい。複数の座標変換プログラムは、複数種類の多軸ロボット10にそれぞれ対応する複数の座標変換プログラムを含んでいてもよい。また、複数の座標変換プログラムは、上記複数種類の第一コントローラ100と、上記複数種類の多軸ロボット10との組み合わせにそれぞれ対応する複数の座標変換プログラムを含んでいてもよい。
【0025】
モデル情報記憶部260は、多軸ロボット10のモデル情報を記憶する。モデル情報は、例えば、多軸ロボット10の構造、大きさ、質量等の他、アクチュエータ11〜16の定格出力及び制御ゲイン等のような、多軸ロボット10の機構パラメータ及び制御パラメータを示す数値データの集合である。
【0026】
モデル情報記憶部260についても、複数種類の多軸ロボット10にそれぞれ対応する複数のモデル情報を含んでいてもよい。なお複数種類の多軸ロボット10は、第二コントローラ200でが制御可能であればいかなる種類の多軸ロボットを含んでいてもよい。例えば複数種類の多軸ロボット10は、上述したシリアルリンク型の垂直多関節ロボットの他、水平多関節型のロボット、パラレルリンク型のロボット等を含んでいてもよい。
【0027】
通信部220(第一通信部)は、第一コントローラ100との間で情報の入出力を行う。通信部230(第二通信部)は、端末装置40との間で情報の入出力を行う。端末装置40は、座標変換プログラムの登録に用いられる。
【0028】
電力出力部250は、多軸ロボット10の複数の関節軸J1〜J6に駆動電力を出力する。
【0029】
制御処理部240は、複数の座標変換プログラムのいずれかを指定するプログラム指定情報を通信部120により第一コントローラ100から取得することと、第一コントローラ100用の座標系での動作指令(上記第一動作指令)を通信部120により第一コントローラ100から取得することと、プログラム指定情報に従った座標変換プログラムを用い、第一動作指令を多軸ロボット10の複数の関節軸J1〜J6の動作目標値に変換することと、当該動作目標値に応じた駆動電力を電力出力部250により複数の関節軸J1〜J6に出力することと、を実行するように構成されている。制御処理部240は、通信部230により端末装置40から座標変換プログラムを取得してプログラム記憶部210に書き込むことを更に実行するように構成されていてもよい。
【0030】
例えば制御処理部240は、より細分化された機能モジュールとして、指令取得部241と、プログラム設定部242と、座標変換部243と、出力処理部244と、プログラム取得部245とを有する。
【0031】
指令取得部241は、上記第一動作指令等、多軸ロボット10の制御に関する指令を通信部220により第一コントローラ100から取得する。
【0032】
プログラム設定部242は、上記プログラム指定情報を通信部120により第一コントローラ100から取得し、プログラム記憶部210に記憶された複数の座標変換プログラムのいずれかを当該プログラム指定情報に従って選定する。
【0033】
座標変換部243は、プログラム設定部242により選定された座標変換プログラムを用い、上記第一動作指令を多軸ロボット10の複数の関節軸J1〜J6の動作目標値に変換する。例えば座標変換部243は、プログラム設定部242により選定された座標変換プログラムを用い、上記第一座標系における第一動作指令を上記第二座標系における動作指令に変換し、当該動作指令と、モデル情報記憶部260に記憶されたモデル情報とを用いた逆運動学演算により関節軸J1〜J6の動作目標値を生成する。
【0034】
出力処理部244は、座標変換部243により生成された動作目標値に応じた駆動電力を電力出力部250により関節軸J1〜J6に出力する。
【0035】
プログラム取得部245は、通信部230により端末装置40から座標変換プログラムを取得してプログラム記憶部210に書き込む。
【0036】
第三コントローラ300は、例えばサーボコントローラであり、第一コントローラ100から出力された上記第二動作指令に応じて周辺装置20を動作させるようにサーボモータ21を制御する。
【0037】
図2は、コントロールシステムのハードウェア構成を示すブロック図である。
図2に示すように、第一コントローラ100は回路190を有し、回路190は、一つ又は複数のプロセッサ191と、記憶部192と、通信ポート193,194,195とを有する。
【0038】
記憶部192は、メモリ196及びストレージ197を含む。ストレージ197は、上記モーション記憶部110として機能し、且つ上記制御処理部150の各機能モジュールを構成するためのプログラムを記録している。ストレージ197は、コンピュータ読み取り可能であればどのようなものであってもよい。具体例として、ハードディスク、不揮発性の半導体メモリ、磁気ディスク及び光ディスク等が挙げられる。メモリ196は、ストレージ197からロードしたプログラム及びプロセッサ191の演算結果等を一時的に記憶する。プロセッサ191は、メモリ196と協働してプログラムを実行することで、制御処理部150の各機能モジュールを構成する。すなわち、プロセッサ191は制御処理部150として機能する。
【0039】
通信ポート193は、プロセッサ191からの指令に応じ、第二コントローラ200の通信ポート
294(後述)との間で情報通信(例えば高速シリアル通信)を行う。通信ポート193は、上記通信部120として機能する。
【0040】
通信ポート194は、プロセッサ191からの指令に応じ、第三コントローラ300の通信ポート393(後述)との間で情報通信(例えば高速シリアル通信)を行う。通信ポート194は上記通信部130として機能する。
【0041】
通信ポート195は、プロセッサ191からの指令に応じ、端末装置30との間で情報通信(例えば高速シリアル通信)を行う。通信ポート195は上記通信部140として機能する。
【0042】
第二コントローラ200は回路290を有し、回路290は、一つ又は複数のプロセッサ291と、記憶部292と、通信ポート293,294と、入出力ポート295と、ドライバ296とを有する。
【0043】
記憶部292は、メモリ297及びストレージ298を含む。ストレージ298は、上記プログラム記憶部210及びモデル情報記憶部260として機能し、且つ上記制御処理部240の各機能モジュールを構成するためのプログラムを記録している。ストレージ298は、コンピュータ読み取り可能であればどのようなものであってもよい。具体例として、ハードディスク、不揮発性の半導体メモリ、磁気ディスク及び光ディスク等が挙げられる。メモリ297は、ストレージ298からロードしたプログラム及びプロセッサ291の演算結果等を一時的に記憶する。プロセッサ291は、メモリ297と協働してプログラムを実行することで、制御処理部240の各機能モジュールを構成する。すなわち、プロセッサ291は制御処理部240として機能する。
【0044】
通信ポート
294は、プロセッサ291からの指令に応じ、第一コントローラ100の通信ポート193との間で情報通信を行う。通信ポート
294は上記通信部220として機能する。
【0045】
通信ポート
293は、プロセッサ291からの指令に応じ、端末装置40との間で情報通信(例えば高速シリアル通信)を行う。通信ポート
293は上記通信部230として機能する。
【0046】
入出力ポート295は、プロセッサ291からの指令に応じ、関節軸J1〜J6の角度を示す電気信号をアクチュエータ11〜16から取得する。ドライバ296は、プロセッサ291からの指令に応じ、アクチュエータ11〜16に駆動電力を出力する。入出力ポート295は、上記電力出力部250として機能する。
【0047】
第三コントローラ300は回路390を有し、回路390は、一つ又は複数のプロセッサ391と、記憶部392と、通信ポート393と、入出力ポート394と、ドライバ395とを有する。
【0048】
記憶部392は、メモリ396及びストレージ397を含む。ストレージ397は、周辺装置20を制御するためのプログラムを記録している。ストレージ397は、コンピュータ読み取り可能であればどのようなものであってもよい。具体例として、ハードディスク、不揮発性の半導体メモリ、磁気ディスク及び光ディスク等が挙げられる。メモリ396は、ストレージ397からロードしたプログラム及びプロセッサ391の演算結果等を一時的に記憶する。プロセッサ391は、メモリ396と協働してプログラムを実行することで、上記第二動作指令に応じた周辺装置20の制御を実行する。
【0049】
通信ポート393は、プロセッサ391からの指令に応じ、第一コントローラ100の通信部130との間で情報通信を行う。
【0050】
入出力ポート394は、プロセッサ391からの指令に応じ、サーボモータ21の回転角度を示す電気信号を取得する。ドライバ395は、プロセッサ391からの指令に応じ、サーボモータ21に駆動電力を出力する。
【0051】
なお、コントローラ100,200,300のハードウェア構成は、必ずしもプログラムにより各機能ブロックを構成するものに限られない。例えばコントローラ100,200,300の上記機能モジュールの少なくとも一部は、専用の論理回路又はこれを集積したASIC(Application Specific Integrated Circuit)により構成されていてもよい。
【0052】
〔制御方法〕
続いて、制御方法の一例として、第一コントローラ100における制御処理手順、第二コントローラ200における制御処理手順及び第二コントローラ200における座標変換プログラムの登録手順を説明する。
【0053】
(第一コントローラにおける制御処理手順)
図3に示すように、第一コントローラ100は、まずステップS01を実行する。ステップS01では、指令生成部151が、指令出力部153及び通信部120を介して多軸ロボット10の制御の開始指令を第二コントローラ200に出力し、指令出力部154及び通信部130を介して周辺装置20の制御の開始指令を第三コントローラ300に出力する。
【0054】
次に、第一コントローラ100はステップS02を実行する。ステップS02では、指令生成部151が、モーション記憶部110に記憶されたモーション情報からプログラム指定情報を取得し、当該プログラム指定情報をプログラム指定部152が通信部120により第二コントローラ200に出力する。
【0055】
次に、第一コントローラ100はステップS03を実行する。ステップS03では、指令生成部151が、モーション記憶部110に記憶されたモーション情報に基づいて、制御開始後の最初の第一動作指令及び第二動作指令を生成する。
【0056】
次に、第一コントローラ100はステップS04を実行する。ステップS04では、指令出力部153が、指令生成部151により生成された第一動作指令を通信部120により第二コントローラ200に出力し、指令出力部154が、指令生成部151により生成された第二動作指令を通信部130により第三コントローラ300に出力する。
【0057】
次に、第一コントローラ100はステップS05を実行する。ステップS05では、上記モーション情報により規定される全ての動作指令の出力が完了したか否かを指令生成部151が確認する。
【0058】
ステップS05において、出力すべき動作指令が残っていると判定した場合、第一コントローラ100はステップS06を実行する。ステップS06では、指令生成部151が制御周期の経過を待機する。
【0059】
次に、第一コントローラ100はステップS07を実行する。ステップS07では、指令生成部151が、モーション記憶部110に記憶されたモーション情報に基づいて、次の制御周期用の第一動作指令及び第二動作指令を生成する。
【0060】
その後、第一コントローラ100は処理をステップS04に戻す。以後、全ての動作指令の出力が完了するまで、第一動作指令の出力、第二動作指令の出力、及び動作指令の更新が制御周期で繰り返される。
【0061】
ステップS05において、全ての動作指令の出力が完了したと判定した場合、第一コントローラ100はステップS08を実行する。ステップS08では、指令生成部151が、指令出力部153及び通信部120を介して多軸ロボット10の制御の完了指令を第二コントローラ200に出力し、指令出力部154及び通信部130を介して周辺装置20の制御の完了指令を第三コントローラ300に出力する。以上で第一コントローラ100における制御処理手順が完了する。
【0062】
(第二コントローラにおける制御処理手順)
図4に示すように、第二コントローラ200は、まずステップS11を実行する。ステップS11では、指令取得部241が、通信部120から通信部220への指令の受信状況を確認し、多軸ロボット10の制御の開始指令の入力を待機する。
【0063】
次に、第二コントローラ200はステップS12を実行する。ステップS12では、プログラム設定部242が、通信部120から通信部220への指令の受信状況を確認し、上記プログラム指定情報の入力を待機する。
【0064】
次に、第二コントローラ200はステップS13を実行する。ステップS13では、プログラム設定部242が、上記プログラム指定情報を通信部220により第一コントローラ100から取得し、プログラム記憶部210に記憶された複数の座標変換プログラムのいずれかを当該プログラム指定情報に従って選定する。
【0065】
次に、第二コントローラ200はステップS14を実行する。ステップS14では、指令取得部241が、通信部120から通信部220への指令の受信状況を確認し、上記第一動作指令の入力を待機する。
【0066】
次に、第二コントローラ200はステップS15を実行する。ステップS15では、指令取得部241が当該第一動作指令を取得する。その後、座標変換部243が、プログラム設定部242により選定された座標変換プログラムを用い、上記第一動作指令を多軸ロボット10の複数の関節軸J1〜J6の動作目標値に変換する。例えば座標変換部243は、プログラム設定部242により選定された座標変換プログラムを用い、上記第一座標系における第一動作指令を上記第二座標系における動作指令に変換し、当該動作指令と、モデル情報記憶部260に記憶されたモデル情報とを用いた逆運動学演算により関節軸J1〜J6の動作目標値を生成する。
【0067】
次に、第二コントローラ200はステップS16を実行する。ステップS16では、出力処理部244が、座標変換部243により生成された動作目標値に応じた駆動電力を電力出力部250により関節軸J1〜J6に出力する。
【0068】
次に、第二コントローラ200はステップS17を実行する。ステップS17では、指令取得部241が、通信部120から通信部220への指令の受信状況を確認し、多軸ロボット10の制御の完了指令を入力されているかを確認する。
【0069】
ステップS17において、上記完了指令は入力されていないと判定した場合、第二コントローラ200は処理をステップS14に戻す。以後、上記完了指令を受信するまで、第一動作指令の取得、座標変換、及び駆動電力の出力が制御周期で繰り返される。
【0070】
ステップS17において、上記完了指令を受信したと判定した場合、第二コントローラ200は処理を完了する。以上で第二コントローラ200における制御処理手順が完了する。
【0071】
(第二コントローラにおける座標変換プログラムの登録手順)
図5に示すように、第二コントローラ200はまずステップS21を実行する。ステップS21では、プログラム取得部245が、端末装置40から通信部230へのデータの受信状況を確認し、座標変換プログラムの登録要求の入力を待機する。
【0072】
次に、第二コントローラ200はステップS22を実行する。ステップS22では、プログラム取得部245が、座標変換プログラムを端末装置40から取得する。
【0073】
次に、第二コントローラ200はステップS23を実行する。ステップS23では、取得したプログラムのデータ形式が、座標変換部243において利用可能な形式であるか否かをプログラム取得部245が確認する。例えばプログラム取得部245は、プログラムの引数の形式が第一座標系のデータ形式に一致しているか、及びプログラムの出力データ数が第二座標系のデータ形式に一致しているか等を確認する。
【0074】
ステップS23において、プログラムのデータ形式が座標変換部243において利用可能な形式ではないと判定した場合、第二コントローラ200はステップS24を実行する。ステップS24では、データ形式が不適切である旨を通知するメッセージをプログラム取得部245が端末装置40に出力する。
【0075】
ステップS23において、プログラムのデータ形式が座標変換部243において利用可能な形式であると判定した場合、第二コントローラ200はステップS25を実行する。ステップS25では、プログラム取得部245が、取得したプログラムをプログラム記憶部210に書き込む。以上で座標変換プログラムの取得処理が完了する。
【0076】
〔本実施形態の効果〕
以上に説明したように、コントロールシステム1は、複数の制御対象を制御する第一コントローラ100と、第一コントローラ100からの指令に応じて多軸ロボット10を制御する第二コントローラ200と、を備える。第二コントローラ200は、多軸ロボット10の複数の関節軸J1〜J6に駆動電力を出力する電力出力部250と、複数の座標変換プログラムを記憶したプログラム記憶部210と、第一コントローラ100との間で情報の入出力を行う通信部220と、複数の座標変換プログラムのいずれかを指定するプログラム指定情報を通信部220により第一コントローラ100から取得することと、第一コントローラ100用の座標系での第一動作指令を通信部220により第一コントローラ100から取得することと、プログラム指定情報に従った座標変換プログラムを用い、第一動作指令を多軸ロボット10の複数の関節軸J1〜J6の動作目標値に変換することと、動作目標値に応じた駆動電力を電力出力部250により複数の関節軸J1〜J6に出力することと、を実行するように構成された制御処理部240と、を有する。
【0077】
多軸ロボット10の動作プログラミングを第二コントローラ200にて行う場合、当該プログラミングのためのユーザインタフェースは第二コントローラ200のユーザインタフェースに限られることとなる。第一コントローラ100のユーザインタフェースにて多軸ロボット10の動作プログラミングを可能とするための一手法として、第一コントローラ100のユーザインタフェース用の入力内容を、第二コントローラ200のユーザインタフェース用の入力内容に自動変換する変換プログラムを導入することが考えられる。しかしながら、そのような変換プログラムを第一コントローラ100のユーザインタフェースの種類ごとに準備するのには限界がある。
【0078】
これに対し、本コントロールシステムでは、第二コントローラ200の制御処理部240が、上記プログラム指定情報、及び上記第一動作指令を第一コントローラ100から取得することと、プログラム指定情報に従った座標変換プログラムを用い、動作指令を多軸ロボット10の複数の関節軸J1〜J6の動作目標値に変換することと、動作目標値に応じた駆動電力を電力出力部250により複数の関節軸J1〜J6に出力することと、を実行する。このため、プログラム指定情報及び第一動作指令を出力する限り、ユーザインタフェースの種類によらず、第一コントローラ100において多軸ロボット10の動作プログラミングを行うことが可能である。また、プログラム指定情報により、多軸ロボット10の種別に応じた座標変換プログラムを指定可能であるため、多様な多軸ロボット10の動作プログラミングが可能となる。従って、多様なユーザインタフェースにて、多様なロボットの動作プログラミングを可能とするのに有効である。
【0079】
第二コントローラ200は、端末装置40との間で情報の入出力を行う通信部230を更に備え、制御処理部240は、通信部230により端末装置40から座標変換プログラムを取得してプログラム記憶部210に書き込むことを更に実行するように構成されていてもよい。この場合、座標変換プログラムの追加登録を可能とすることで、より多様なロボットの動作プログラミングが可能となる。
【0080】
複数の座標変換プログラムは、第一コントローラ100の制御内容をプログラミングするための第一プログラミング言語とは異なる第二プログラミング言語によりプログラミングされた座標変換プログラムを含んでもよい。この場合、第一プログラミング言語に束縛されることなく、第二コントローラ200におけるローカル処理に適した言語を第二プログラミング言語として用いることにより、座標変換の高速化・効率化を図ることができる。
【0081】
複数の座標変換プログラムは、互いに座標系の異なる複数種類の第一コントローラ100にそれぞれ対応する複数の座標変換プログラムを含んでもよい。この場合、より多様なユーザインタフェースにてロボットの動作プログラミングが可能となる。
【0082】
複数の座標変換プログラムは、複数種類の多軸ロボット10にそれぞれ対応する複数の座標変換プログラムを含んでもよい。この場合、より多様なロボットの動作プログラミングが可能となる。
【0083】
以上、実施形態について説明したが、本発明は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である。