JP6900863B2 - 制御装置、制御方法および制御プログラム - Google Patents

制御装置、制御方法および制御プログラム Download PDF

Info

Publication number
JP6900863B2
JP6900863B2 JP2017182885A JP2017182885A JP6900863B2 JP 6900863 B2 JP6900863 B2 JP 6900863B2 JP 2017182885 A JP2017182885 A JP 2017182885A JP 2017182885 A JP2017182885 A JP 2017182885A JP 6900863 B2 JP6900863 B2 JP 6900863B2
Authority
JP
Japan
Prior art keywords
command
application program
internal
control
special
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017182885A
Other languages
English (en)
Other versions
JP2019057253A (ja
Inventor
征彦 仲野
征彦 仲野
英詞 山本
英詞 山本
純児 島村
純児 島村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Omron Corp
Original Assignee
Omron Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Omron Corp filed Critical Omron Corp
Priority to JP2017182885A priority Critical patent/JP6900863B2/ja
Priority to US15/894,869 priority patent/US20190094831A1/en
Priority to CN201810151489.0A priority patent/CN109542046B/zh
Priority to EP18156433.7A priority patent/EP3460602B1/en
Publication of JP2019057253A publication Critical patent/JP2019057253A/ja
Application granted granted Critical
Publication of JP6900863B2 publication Critical patent/JP6900863B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/408Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by data handling or data format, e.g. reading, buffering or conversion of data
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/41Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by interpolation, e.g. the computation of intermediate points between programmed end points to define the path to be followed and the rate of travel along that path
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/19Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by positioning or contouring control systems, e.g. to control position from one programmed point to another or to control movement along a programmed continuous path
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4155Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by programme execution, i.e. part programme or machine function execution, e.g. selection of a programme
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/16Plc to applications
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34093Real time toolpath generation, no need for large memory to store values
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/43Speed, acceleration, deceleration control ADC
    • G05B2219/43185Speed invariant motions, path accuracy independent of speed
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/45Nc applications
    • G05B2219/45083Manipulators, robot

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Programmable Controllers (AREA)
  • Numerical Control (AREA)
  • Control Of Position Or Direction (AREA)

Description

本開示は、1または複数のモータを制御可能な制御装置および制御方法、ならびに、それらに向けられたサポート装置に関する。
様々な生産現場において、PLC(プログラマブルコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。近年のICT(Information and Communication Technology)の進歩に伴って、制御装置の処理能力も飛躍的に向上しつつある。
複数の専用装置を用いて実現されていた従来の制御装置を、より少ない数の制御装置に統合したいというニーズも生じている。例えば、特開2012−194662号公報(特許文献1)は、PLCのCPUユニットにおいて、モーション演算プログラムおよびユーザプログラムが同期して実行される構成を開示する。特開2012−194662号公報(特許文献1)に開示される構成によれば、シーケンスプログラムなどのユーザプログラムとモーション演算プログラムとを連携/互いに動機して実行させることができる。このようなPLCユニットを採用することで、モーション演算処理を実現するための専用装置が不要となる。
特開2012−194662号公報
上述したようなモーション演算に加えて、例えば、工作機械やロボットといった予め定められた目標軌跡に従う制御についても単一の制御装置を用いて実現することが要求されている。
PLCを用いて目標軌跡に従う制御を実現する場合には、定義された目標軌跡をモデル化した上で、制御周期毎に指令値を算出する必要がある。このような処理において、モデル化の精度が高すぎると演算量が増加して予め定められた制御周期毎の指令値の算出を実現できず、逆に、モデル化の精度が低すぎると要求される目標軌跡からのずれが大きくなる。このように、目標軌跡に従う制御においては、処理速度および制御精度の要求を両立させることが難しい。
本開示は、このような課題の解決に向けられており、その一つの目的は、アプリケーションプログラムを逐次解釈して目標軌跡に従う制御を行う場合において、処理速度および制御精度の要求を両立させることのできる制御装置および制御方法を提供することである。また、本開示の別の目的は、処理速度および制御精度の要求を両立させたアプリケーションプログラムを作成可能なサポート装置を提供することである。
本開示の一例によれば、1または複数のモータを制御可能な制御装置が提供される。制御装置は、1または複数のモータに対する指令値を制御周期毎に出力する指令値出力部と、目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラムを逐次解釈して、指令値出力部による制御周期毎の指令値の出力に必要な内部コマンドを生成するコマンド解釈部とを含む。コマンド解釈部は、アプリケーションプログラムに含まれるコマンドに従って、予め定められた期間毎の目標軌跡上の通過点を算出するとともに、当該算出した通過点に応じて内部コマンドを生成し、アプリケーションプログラムの逐次解釈において、予め定義された特殊コマンドを実行すると、通過点を算出する期間を当該特殊コマンドにより指定された長さに変更する。
この開示によれば、目標軌跡の複雑性などに応じて、対象のコマンドに関連付けて特殊コマンドを追加することで、特定の区間についての制御精度を高めるとともに、それ以外については、処理速度を優先させるような実行態様を実現できる。これによって、処理速度および制御精度の要求の両立が可能となる。
上述の開示において、コマンド解釈部は、特殊コマンドを実行すると、アプリケーションプログラムにおいて当該特殊コマンドの後に記述されている1または複数のコマンドを、当該特殊コマンドによる指定に従って解釈してもよい。
この開示によれば、指定を変更したいコマンドの前に特殊コマンドを追加するだけで、目的の指定に従った処理を実現でき、特殊コマンドの設定を容易化できる。
上述の開示において、特殊コマンドは、通過点を算出する期間の変更を元に戻すための命令を含んでいてもよい。
この開示によれば、特定のコマンドに対して、特定の設定を指定した後に、その後のコマンドに対して通常の設定で処理したいような場合に、通常の設定を都度入力する必要がなく、特殊コマンドを利用する際の工数を低減できる。
上述の開示において、コマンド解釈部は、目標軌跡上の隣接する通過点間に対応する内部コマンドを、目標軌跡上の当該隣接する通過点に引き続く複数の通過点の情報に基づいて生成してもよい。
この開示によれば、内部コマンドの生成精度を高めることができる。
上述の開示において、特殊コマンドは、内部コマンドの生成に必要な通過点の数を指定する命令を含んでいてもよい。
この開示によれば、通過点を算出する期間を調整するだけではなく、内部コマンドの生成に用いる通過点の数についても調整できるので、制御精度をより柔軟に調整できる。
上述の開示において、制御装置は、コマンド解釈部により生成される内部コマンドを順次格納するバッファをさらに含んでいてもよい。特殊コマンドは、バッファに格納される内部コマンドの数を指定する命令を含んでいてもよい。
この開示によれば、事前に用意しておくべき内部コマンドの数を調整できるので、目標軌跡が複雑であり、内部コマンドを短時間で更新しなければならない事態が予想される場合などに、内部コマンドの生成が間に合わず、指令値の出力が停止するような事態を防止できる。
上述の開示において、特殊コマンドは、アプリケーションプログラムを記述するための言語形式に沿って定義されてもよい。
この開示によれば、アプリケーションプログラムの開発者は、違和感なく、特殊コマンドを利用できる。
上述の開示において、内部コマンドは、目標軌跡上に設定される隣接する通過点間毎の各モータの挙動を示す関数として定義されてもよい。
この開示によれば、指令値出力部における指令値を出力するための演算量を低減できる。
本開示の別の一例によれば、1または複数のモータを制御可能な制御方法が提供される。制御方法は、1または複数のモータに対する指令値を制御周期毎に出力するステップと、目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラムを逐次解釈して、制御周期毎の指令値の出力に必要な内部コマンドを生成するステップとを含む。内部コマンドを生成するステップは、アプリケーションプログラムに含まれるコマンドに従って、予め定められた期間毎の目標軌跡上の通過点を算出するとともに、当該算出した通過点に応じて内部コマンドを生成するステップと、アプリケーションプログラムの逐次解釈において、予め定義された特殊コマンドを実行すると、通過点を算出する期間を当該特殊コマンドにより指定された長さに変更するステップとを含む。
この開示によれば、目標軌跡の複雑性などに応じて、対象のコマンドに関連付けて特殊コマンドを追加することで、特定の区間についての制御精度を高めるとともに、それ以外については、処理速度を優先させるような実行態様を実現できる。これによって、処理速度および制御精度の要求の両立が可能となる。
本開示のさらに別の一例によれば、目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラムを処理するサポート装置が提供される。サポート装置は、アプリケーションプログラムを逐次解釈することで生成される内部コマンドに基づいて算出される、制御周期毎の指令値に従う制御対象の軌跡を示す実挙動を取得する第1の取得手段と、目標軌跡に従う制御対象の本来の軌跡である理想挙動を取得する第2の取得手段と、実挙動と理想挙動との誤差が予め定められた許容誤差範囲を超える部分を抽出するとともに、アプリケーションプログラムに含まれる当該抽出した部分に対応するコマンドを特定する特定手段と、ユーザ操作に従って、特定されたコマンドの前に、アプリケーションプログラムに含まれるコマンドから内部コマンドを生成する際の処理精度を変更するための特殊コマンドを追加する修正手段とを含む。
この開示によれば、ユーザは、実挙動と理想挙動との比較結果を参照しつつ、内部コマンドの生成条件を変更すべき箇所を特定できる。そして、その特定した箇所を指定することで、アプリケーションプログラムの対象となるコマンドに対して、特殊コマンドを追加できる。その結果、事前知識の乏しいユーザであっても、本発明の特殊コマンドを適切に利用できる。
上述の開示において、内部コマンドは、アプリケーションプログラムを逐次解釈して算出される目標軌跡上に設定される複数の通過点の情報に基づいて生成されてもよい。特殊コマンドは、目標軌跡上の通過点の設定間隔を変更する命令を含んでいてもよい。
この開示によれば、内部コマンドを生成する際に算出される通過点の粒度を調整することができ、これによって、目的の制御精度を実現できる。
上述の開示において、内部コマンドは、目標軌跡上の隣接する通過点間に対応付けられるとともに、当該隣接する通過点に引き続く複数の通過点の情報に基づいて生成されてもよい。特殊コマンドは、内部コマンドの生成に必要な通過点の数を指定する命令を含んでいてもよい。
この開示によれば、通過点を算出する期間を調整するだけではなく、内部コマンドの生成に用いる通過点の数についても調整できるので、制御精度をより柔軟に調整できる。
上述の開示において、サポート装置は、特殊コマンドが追加された後のアプリケーションプログラムに基づいて、実挙動を更新する更新手段をさらに含んでいてもよい。
この開示によれば、ユーザは、アプリケーションプログラムに対して特殊コマンドを挿入した結果を確認することができ、必要に応じて、特殊コマンドにおける条件の見直しなども行うことができる。
上述の開示において、サポート装置は、実挙動および理想挙動を重ねて表示するとともに、許容誤差範囲を超える誤差が生じている部分に関連付けて、第1のオブジェクトを表示する表示手段をさらに含んでいてもよい。
この開示によれば、ユーザは、理想挙動に対して、実挙動が予め許容誤差範囲を超えてずれている部分を容易に特定できる。
上述の開示において、表示手段は、特殊コマンドが追加された後のアプリケーションプログラムに基づいて算出された実挙動において、許容誤差範囲を超える誤差が生じていた部分が許容誤差範囲以内になると、第1のオブジェクトを第2のオブジェクトに更新してもよい。
この開示によれば、ユーザは、特殊コマンドを挿入されたアプリケーションプログラムによる実挙動の演算結果を容易に把握できる。
本開示の一例によれば、アプリケーションプログラムを逐次解釈して目標軌跡に従う制御を行う場合において、処理速度および制御精度の要求を両立させることができる。
本開示の別の例によれば、処理速度および制御精度の要求を両立させたアプリケーションプログラムを作成可能なサポート装置を提供できる。
本実施の形態に係る制御装置の適用場面の一例を示す模式図である。 本実施の形態に係る制御装置における処理内容を説明するための模式図である。 本実施の形態に係る制御システムの全体構成例を示す模式図である。 本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。 本実施の形態に係る制御装置のプログラム実行機構の一例を示す模式図である。 本実施の形態に係る制御装置におけるプログラムの実行動作例を示すタイムチャートである。 本実施の形態に係る制御装置における内部コマンドの生成処理の一例を説明するための模式図である。 本実施の形態に係る制御装置における内部コマンドの生成処理に係るファクタを説明するための模式図である。 本実施の形態に係る制御装置に入力されるアプリケーションプログラムに含まれる特殊コマンドの一例を説明するための図である。 本実施の形態に係る制御装置におけるアプリケーションプログラムに従う内部コマンドの生成処理手順を示すフローチャートである。 本実施の形態に係るサポート装置のハードウェア構成の一例を示す模式図である。 本実施の形態に係るサポート装置の機能構成の一例を示す模式図である。 本実施の形態に係るサポート装置が提供する画面ユーザインターフェイスの一例を示す模式図である。 図13に示す画面ユーザインターフェイスに対するユーザ操作によるアプリケーションプログラムの変更処理を説明するための模式図である。 本実施の形態に係るサポート装置によるアプリケーションプログラムの変更処理手順を示すフローチャートである。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.適用例>
まず、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御装置100の適用場面の一例を示す模式図である。
本実施の形態に係る制御装置100は、1または複数のモータを制御可能である。具体的には、制御装置100は、目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラム32を逐次解釈して、制御対象の1または複数のモータに対する指令値を制御周期毎に出力する。
本発明の「モータ」は、サーボモータ、同期モータおよび誘導モータなどの任意の種類の駆動装置を包含する概念である。また、本発明の「モータ」は、例えば、リニアモータのような、回転運動ではなく直線運動するような装置も含み得る。例えば、サーボモータを駆動する場合には、サーボドライバが利用されるが、モータの種類に応じてモータを駆動する装置も適切なものが選択される。
本明細書において、アプリケーションプログラム32を用いて1または複数のモータを含む装置を制御する処理および機能を、「制御アプリケーション」と総称する。この「制御アプリケーション」との用語は、例えば、CNC(Computer Numerical Control:コンピュータ数値制御)および/またはおよびロボットを用いた、特定の加工または動作を行う装置または機械ならびにそれらの制御を包含する概念である。
本明細書において、「アプリケーションプログラム」は、「制御アプリケーション」を実現するための1または複数の命令からなるプログラムを包含する。「アプリケーションプログラム」は、制御アプリケーションの手順を表現するプログラムであり、一例として、CNCではGコードと称されるコマンド群を用いて記述され、ロボット制御ではMコードと称されるコマンド群を用いて記述される。「アプリケーションプログラム」は、目標軌跡を定義する1または複数のコマンドで記述され、実行時には、1ブロックずつ逐次解釈されるインタプリタ方式が採用される。
制御装置100は、主たる機能構成として、コマンド解釈部162および指令値出力部168を含む。コマンド解釈部162には、アプリケーションプログラム32が入力される。図1には、アプリケーションプログラム32の一例として、コンピュータ数値制御を行うための数値制御プログラム(以下、「NCプログラム」とも略称する。)を示す。
アプリケーションプログラム32は、目標軌跡を定義する1または複数のコマンドを含む。図1に示す例では、「G00 X10 Y10」、「G01 X20 Y20」、「G01 X30 Y30」といった各ブロックのコマンドによって、目標軌跡が定義される。より具体的には、「G00」、「G01」といった記述が動作(例えば、直線移動、曲線移動、スプライン移動など)を定義するコマンドであり、その後に続く「X10 Y10」、「X20 Y20」、「X30 Y30」といった記述が一種の引数(この例では、移動先を示す座標)となっている。
コマンド解釈部162は、アプリケーションプログラム32を逐次解釈して、指令値出力部168による制御周期毎の指令値の出力に必要な内部コマンド166を生成する。コマンド解釈部162は、アプリケーションプログラム32用の「インタプリタ」に相当する。
より具体的には、まず、コマンド解釈部162は、アプリケーションプログラム32を逐次解釈する((1)アプリケーションプログラム逐次解釈)。アプリケーションプログラム32に含まれるコマンドを逐次解釈することで、目標軌跡40が算出される。コマンド解釈部162は、算出した目標軌跡40上の予め定められた期間毎の通過点42を算出する。通過点42は、目標軌跡40上を移動する目標速度も考慮した上で、予め定められた時間毎に存在すべき位置として算出される。時刻t=0で移動を開始した場合に、t=Tにおける通過点42、t=2Tにおける通過点42、t=3Tにおける通過点42、・・・といった具合に、通過点42が逐次設定される。
このように、コマンド解釈部162は、アプリケーションプログラム32に含まれるコマンドに従って、予め定められた期間毎の目標軌跡40上の通過点42を算出する((2)目標軌跡・通過点算出)。
そして、コマンド解釈部162は、目標軌跡40上の隣接する通過点42を結ぶ移動経路44を算出し、その算出した移動経路44を実現するための内部コマンド166を生成する((3)内部コマンド生成)。
本明細書において、「内部コマンド」は、指令値出力部168が予め定められた時間(制御周期)毎に指令値を出力するための命令または関数などを包含する概念である。図1に示す例では、内部コマンド166は、目標軌跡40上に設定される通過点42に対応する時間(経過時間)区間毎の各モータの挙動を示す関数として定義されてもよい。「内部コマンド」は、典型的には、時間と指令値との関係を定義する関数の形で定義されてもよい。指令値としては、例えば、モータの位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などが用いられる。
このように、コマンド解釈部162は、算出した通過点42に応じて内部コマンド166を生成する。図1に示す例では、X軸およびY軸をそれぞれ駆動するためのモータが2つある場合の例を示す。すなわち、目標軌跡40上に設定される通過点42に基づいて、2つのモータ(X軸用モータおよびY軸用モータ)のそれぞれに対する内部コマンド166が生成される。
指令値出力部168は、コマンド解釈部162により生成される内部コマンド166に従って、1または複数のモータに対する指令値を制御周期毎に出力する((4)指令値出力)。図1に示すように、基本的には、内部コマンド166は時間区間(1つの制御周期より長い)毎に定義されており、指令値出力部168は、対応する内部コマンド166に従って、制御周期毎の指令値を算出する。
なお、コマンド解釈部162はアプリケーションプログラム32を逐次解釈するため、目標軌跡40の算出および通過点の算出についても逐次算出されることになる。後述するように、内部コマンド166の精度を高めるために、ある通過点42に対応する内部コマンド166を生成する場合には、目標軌跡40上にある当該通過点42に引き続く1または複数の通過点42の情報を参照することが好ましい。
このように、任意の通過点42に対応する内部コマンド166を生成する際に、当該通過点42に引き続く1または複数の通過点42の情報を参照することを、以下では「先読み(look ahead)」とも称す。この「先読み」動作の詳細については後述する。
図1の目標軌跡40に示すように、隣接する通過点42の間の区間に比較して、アプリケーションプログラム32により定義される目標軌跡40が複雑である(すなわち、局所的な変化が相対的に大きい)場合には、移動経路44が目標軌跡40から乖離する場合がある。図1に示す例では、目標軌跡40には、2つの誤差発生区間が生じている例を示す。このような誤差発生区間が生じることで、内部コマンド166の精度が低下し、制御精度が低下し得る。
このような制御精度の低下を防止するために、目標軌跡40上に通過点42を設定する区間幅を小さくすることも可能であるが、区間幅を小さくすることで、設定される通過点42の数が増大し、内部コマンド166を生成するための演算量が増加し得る。そこで、本実施の形態に係る制御装置100は、アプリケーションプログラム32に含まれる特殊コマンドに従って、アプリケーションプログラム32に含まれるコマンドから内部コマンド166を生成する際の処理精度を変更する。このような特殊コマンドは、典型的に、通過点42を設定する区間幅(すなわち、通過点42を設定する時間間隔)を調整する命令を含む。
図2は、本実施の形態に係る制御装置100における処理内容を説明するための模式図である。図2(A)には、図1と同様のアプリケーションプログラム32に対する逐次解釈の処理例を示す。この場合には、目標軌跡40上に、予め定められた期間毎に通過点42が設定される。
これに対して、図2(B)には、アプリケーションプログラム32に特殊コマンド33A,33Bが追加されたアプリケーションプログラム32Aを逐次解釈する場合の処理例を示す。
特殊コマンド33Aである「G99 0.5」とのコマンドは、当該コマンド以降のコマンド解釈において、通過点42を設定する区間幅を「0.5」に設定することを定義するものである。一方、特殊コマンド33Bである「G99 default」とのコマンドは、当該コマンド以降のコマンド解釈において、通過点42を設定する区間幅をデフォルト値に戻すことを定義するものである。このように、特殊コマンド33Bは、通過点42を算出する期間の変更を元に戻すための命令を含んでいてもよい。
なお、区間幅の設定方法は、絶対値であってもよいし、相対値であってよい。例えば、通過点42を設定する区間幅を「0.5msec」に設定するようなコマンドであってもよいし、デフォルト値に対して「50%」に縮めるように設定するコマンドであってもよい。また、区間幅を短くするためのコマンドであってもよいし、区間幅を長くするためのコマンドであってもよい。
図2(B)に示す例においては、アプリケーションプログラム32の2ブロック目にある「G01 X20 Y20」とのコマンドの前に、特殊コマンド33Aが追加されている。この特殊コマンド33Aによって、「G01 X20 Y20」とのコマンドの実行により算出される目標軌跡の区間に対しては、通過点42の設定間隔が特殊コマンド33Aにより指定された長さに変更される。
また、アプリケーションプログラム32の3ブロック目にある「G00 X30 Y30」とのコマンドの前に、特殊コマンド33Bが追加されている。この特殊コマンド33Bによって、「G00 X30 Y30」とのコマンドの実行により算出される目標軌跡の区間に対しては、通過点42の設定間隔が特殊コマンド33Bにより指定された元の長さに戻される。
アプリケーションプログラム32Aに特殊コマンド33A,33Bが追加されることで、目標軌跡上に設定される通過点42の区間幅を必要に応じて調整できる。このように、コマンド解釈部162は、特殊コマンド33A,33Bを実行すると、アプリケーションプログラム32において当該特殊コマンド33A,33Bの後に記述されている1または複数のコマンドを、当該特殊コマンド33A,33Bによる指定に従って解釈する。
図2に示す例において、コマンド解釈部162は、アプリケーションプログラム32Aの逐次解釈において、予め定義された特殊コマンド33A,33Bを実行する(すなわち、遭遇する)と、通過点42を算出する期間(区間幅)を特殊コマンド33A,33Bにより指定された長さに変更する。
このように、目標軌跡の複雑性に応じて、通過点42を設定する時間間隔を調整することで、処理速度および制御精度の要求を両立させることができる。すなわち、目標軌跡の複雑性が相対的に低い場合には、通過点42を設定する時間間隔を相対的に長くして、処理速度を優先するとともに、目標軌跡の複雑性が相対的に高い場合には、通過点42を設定する時間間隔を相対的に短くして、制御精度を優先することができる。
このような処理速度および制御精度の要求を両立させるための構成を採用することで、制御装置100の演算リソースを最適化できる。すなわち、制御アプリケーションを実現するために、不必要に高い演算リソースが要求されることはない。
<B.制御システムの全体構成例>
次に、本実施の形態に係る制御装置100を含む制御システム1の全体構成例について説明する。図3は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。図3には、本実施の形態に係る制御装置100を中心とした制御システム1を示す。
制御装置100は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置100は、後述するような制御演算を実行する一種のコンピュータであり、典型的には、PLC(プログラマブルコントローラ)として具現化されてもよい。制御装置100は、フィールドネットワーク2を介して各種のフィールドデバイス500と接続されてもよい。制御装置100は、フィールドネットワーク2などを介して、1または複数のフィールドデバイス500との間でデータを遣り取りする。一般的に「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドネットワーク」と総称する。すなわち、本明細書の「フィールドネットワーク」は、狭義の「フィールドネットワーク」に加えて「フィールドバス」を含み得る概念である。
制御装置100において実行される制御演算は、フィールドデバイス500において収集または生成されたデータ(入力データ)を収集する処理(入力処理)、フィールドデバイス500に対する指令値などのデータ(出力データ)を生成する処理(演算処理)、生成した出力データを対象のフィールドデバイス500へ送信する処理(出力処理)などを含む。
フィールドネットワーク2は、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが知られている。データの到達時間が保証される点において、EtherCAT(登録商標)が好ましい。
フィールドネットワーク2には、任意のフィールドデバイス500を接続することができる。フィールドデバイス500は、フィールド側にある製造装置や生産ラインなどに対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報を遣り取りする入出力装置などを含む。
フィールドネットワーク2を介して、制御装置100とフィールドデバイス500との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数100μsecオーダ〜数10msecオーダのごく短い周期で更新されることになる。
図3に示す全体構成例においては、制御装置100は、CNC工作機械540と、CNC工作機械540に対してワークWを供給する搬送装置550とを制御する。
CNC工作機械540は、位置や速度などを指定するNCプログラムに従って、マシニングセンタなどを制御することで、任意の対象物を加工する。CNC工作機械540としては、図示のものに限られず、旋盤加工、フライス盤、放電加工などの任意の加工装置に適用できる。
CNC工作機械540および搬送装置550は、制御装置100からの指令値に従って駆動される。搬送装置550により搬送されるワークWは、作業台554の上に配置され、CNC工作機械540により指定された加工が行われる。
図3に示す全体構成例においては、フィールドデバイス500は、リモートI/O(Input/Output)装置510と、サーボドライバ520_1,520_2,520_3およびサーボモータ522_1,522_2,522_3と、サーボドライバ530とを含む。制御装置100は、これらのモータを制御可能になっている。
リモートI/O装置510は、典型的には、フィールドネットワーク2を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。リモートI/O装置510には、入力リレーや各種センサ(例えば、アナログセンサ、温度センサ、振動センサなど)などの入力データを収集する装置、および、出力リレー、コンタクタ、サーボドライバ、および、その他任意のアクチュエータなどのフィールドに対して何らかの作用を与える装置が接続される。
フィールドデバイス500としては、これらに限られることなく、入力データを収集する任意のデバイス(例えば、視覚センサなど)、出力データに従う何らかの作用を与える任意のデバイス(例えば、インバータ装置など)、各種ロボットなどを採用することができる。
サーボモータ522_1,522_2,522_3は、CNC工作機械540の一部として組み込まれており、サーボドライバ530は、搬送装置550のコンベアに連結されたサーボモータ532を駆動する。サーボドライバ520_1〜520_3,530は、制御装置100からの指令値(例えば、位置指令値や速度指令値など)に従って、対応するサーボモータを駆動する。
一例として、図3に示す全体構成例において、サーボモータ522_1,522_2,522_3は、CNC工作機械540のX軸,Y軸,Z軸の駆動源であり、例えば、これらの軸については、一体的に制御されることが多い。
本実施の形態に係る制御装置100は、シーケンスプログラム30およびアプリケーションプログラム32を並列的に実行できる。すなわち、制御装置100は、シーケンスプログラム30を実行することで、シーケンス命令およびモーション命令に従って決定される指令値を出力するとともに、アプリケーションプログラム32を実行することで、CNC工作機械540やロボットの挙動を制御するための指令値を出力する。なお、シーケンスプログラム30に含まれる制御命令により、アプリケーションプログラム32の実行開始および実行終了などが制御されてもよい。
本明細書において、「シーケンスプログラム」は、実行毎に全体がスキャンされて、実行毎に1または複数の指令値が算出されるプログラムを包含する概念である。「シーケンスプログラム」は、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131−3に従って記述された1または複数の命令からなるプログラムを包含する。「シーケンスプログラム」には、シーケンス命令および/またはモーション命令を含み得る。なお、「シーケンスプログラム」としては、国際規格IEC61131−3に従って記述された命令に限らず、PLC(プログラマブルコントローラ)の製造メーカまたはベンダーなどが独自に規定した命令を含むようにしてもよい。このように、「シーケンスプログラム」は、即時性および高速性が要求される制御に好適である。
本明細書において、「シーケンス命令」は、基本的には、入力値、出力値、内部値などを算出する1または複数の論理回路により記述される1または複数の命令を包含する用語である。基本的には、1回の制御周期において、「シーケンス命令」は、先頭から最終まで実行され、次の制御周期において、「シーケンス命令」は、先頭から最終までが再度実行される。本明細書において、「モーション命令」は、サーボモータなどのアクチュエータに対して、位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などの数値を指令として算出するための1または複数の命令を包含する用語である。「モーション命令」についても、1回の制御周期において、ファンクションブロックや数値算出式などにより記述されるモーション命令のプログラム(モーションプログラム)の先頭から最終までが実行される。すなわち、制御周期毎に指令値は算出(更新)されることになる。
制御装置100は、上位ネットワーク6を介して、他の装置にも接続されている。上位ネットワーク6には、一般的なネットワークプロトコルであるイーサネット(登録商標)やEtherNet/IP(登録商標)が採用されてもよい。より具体的には、上位ネットワーク6には、1または複数のサーバ装置300および1または複数の表示装置400が接続されてもよい。
サーバ装置300としては、データベースシステム、製造実行システム(MES:Manufacturing Execution System)などが想定される。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これに限らず、情報系サービスを提供する装置を上位ネットワーク6に接続するようにしてもよい。情報系サービスとしては、制御対象の製造装置や設備からの情報を取得して、マクロ的またはミクロ的な分析などを行う処理が想定される。例えば、制御対象の製造装置や設備からの情報に含まれる何らかの特徴的な傾向を抽出するデータマイニングや、制御対象の設備や機械からの情報に基づく機械学習を行うための機械学習ツールなどが想定される。
表示装置400は、ユーザからの操作を受けて、制御装置100に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置100での演算結果などをグラフィカルに表示する。
制御装置100には、サポート装置200が接続可能になっている。サポート装置200は、制御装置100が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置200は、制御装置100で実行されるプログラムの開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)、制御装置100および制御装置100に接続される各種デバイスの構成情報(コンフィギュレーション)を設定するための設定環境、生成したユーザプログラムを制御装置100へ出力する機能、制御装置100上で実行されるユーザプログラムなどをオンラインで修正・変更する機能、などを提供する。
<C.制御装置のハードウェア構成例>
次に、本実施の形態に係る制御装置100のハードウェア構成例について説明する。図4は、本実施の形態に係る制御装置100のハードウェア構成例を示すブロック図である。
図4を参照して、制御装置100は、CPUユニットと称される演算処理部であり、プロセッサ102と、チップセット104と、主メモリ106と、ストレージ108と、上位ネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、内部バスコントローラ120と、フィールドネットワークコントローラ130とを含む。
プロセッサ102は、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などで構成される。プロセッサ102としては、複数のコアを有する構成を採用してもよいし、プロセッサ102を複数配置してもよい。チップセット104は、プロセッサ102および周辺エレメントを制御することで、制御装置100全体としての処理を実現する。主メモリ106は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ108は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置などで構成される。
プロセッサ102は、ストレージ108に格納された各種プログラムを読出して、主メモリ106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。ストレージ108には、基本的な機能を実現するためのシステムプログラム34に加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラム(シーケンスプログラム30およびアプリケーションプログラム32)が格納される。
上位ネットワークコントローラ110は、上位ネットワーク6を介して、サーバ装置300や表示装置400(図4参照)などとの間のデータの遣り取りを制御する。USBコントローラ112は、USB接続を介してサポート装置200との間のデータの遣り取りを制御する。
メモリカードインターフェイス114は、メモリカード116が着脱可能に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データ(ユーザプログラムやトレースデータなど)を読出すことが可能になっている。
内部バスコントローラ120は、制御装置100に装着されるI/Oユニット122との間のデータの遣り取りを制御する。フィールドネットワークコントローラ130は、フィールドネットワーク2を介したフィールドデバイスとの間のデータの遣り取りを制御する。
図4には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
図3に示す制御システム1においては、制御装置100、サポート装置200および表示装置400がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
<D.プログラム実行機構>
次に、本実施の形態に係る制御装置100のプログラム実行機構例について説明する。図5は、本実施の形態に係る制御装置100のプログラム実行機構の一例を示す模式図である。
図5を参照して、制御装置100は、シーケンスプログラム30を実行して指令値を出力するシーケンスプログラム実行部150と、アプリケーションプログラム32を実行して指令値を出力するアプリケーションプログラム実行部160とを有している。
より具体的には、シーケンスプログラム実行部150は、シーケンス命令解釈部152と、ライブラリ154と、モーション指令値出力部156とを有している。
シーケンス命令解釈部152は、シーケンスプログラム30に含まれるシーケンス命令を解釈し、指定されたシーケンス演算(論理演算)を実行する。ライブラリ154は、シーケンスプログラム30に含まれる単純なシーケンス以外の制御命令に対応するコードを提供する。例えば、シーケンスプログラム30は、複合的な処理が可能なファンクションブロックを用いて記述することができるような場合には、シーケンスプログラム30を参照することで、当該ファンクションブロックを解釈して実行するために必要なコードが取得される。
モーション指令値出力部156は、シーケンスプログラム30に含まれるモーション命令に従って指令値を算出する。モーション命令は、1つのコマンドによって複数の制御周期に亘って指令値の算出を定義しており、モーション指令値出力部156は、このようなモーション命令を解釈して、モーション指令値を制御周期毎に更新する。
シーケンスプログラム実行部150のシーケンス命令解釈部152およびモーション指令値出力部156により制御周期毎に算出される1または複数の指令値172は、共有メモリ170へ出力される。1または複数の指令値172は、典型的には、シーケンス命令に従って決定されるデジタル出力のオン/オフ、および、モーション命令に従って算出されるアナログ出力を含む。
アプリケーションプログラム実行部160は、アプリケーションプログラム32をインタプリタ方式で実行して、各モータに対する指令値を出力する。アプリケーションプログラム実行部160による指令値の算出(更新)は、制御周期毎に繰返し実行される。このように、アプリケーションプログラム実行部160は、シーケンスプログラム実行部150による指令値の算出に同期して、アプリケーションプログラム32に従う指令値を算出する。このような制御周期毎の指令値の算出を実現するために、アプリケーションプログラム実行部160においては、指令値を算出するための内部コマンド166が生成される。
より具体的には、アプリケーションプログラム実行部160は、コマンド解釈部162と、バッファ164と、指令値出力部168とを含む。
コマンド解釈部162は、アプリケーションプログラム32を逐次解釈して、内部コマンド166を生成する。コマンド解釈部162は、生成した内部コマンド166をバッファ164に順次格納する。コマンド解釈部162は、アプリケーションプログラム32から内部コマンド166の生成をある程度事前に行う。バッファ164には、コマンド解釈部162により生成される内部コマンド166を順次格納する。そのため、バッファ164には、複数の内部コマンド166が格納されている状態も存在し得る。本実施の形態において、コマンド解釈部162は、指令値174を算出するための目標軌跡および内部コマンド166を生成するため、「プランナー」と称されることもある。
指令値出力部168は、コマンド解釈部162が事前に生成した内部コマンド166に従って、制御周期毎に指令値174を算出する。一般的に、アプリケーションプログラム32に記述される命令(コード)は、逐次解釈されるために、制御周期毎に指令値174を出力できる保証はないが、内部コマンド166を利用することで、制御周期毎の指令値174の出力を実現できる。
コマンド解釈部162は、生成した内部コマンド166をバッファ164に逐次キューイングし、指令値出力部168は、バッファ164にキューイングされた順に内部コマンド166を読出す。
アプリケーションプログラム実行部160の指令値出力部168により制御周期毎に算出される指令値174は、共有メモリ170へ出力される。
入出力リフレッシュ処理部180は、制御周期毎に、指令値172および指令値174を含む出力データをフィールド側へ送信するとともに、フィールド側から計測値などの入力データを取得する。本明細書において、制御装置100とフィールド側との間の入力データおよび出力データの遣り取りを、「入出力リフレッシュ処理」とも称す。
図5に示すような構成を採用することで、シーケンスプログラム30の実行により算出される指令値172、および、アプリケーションプログラム32の実行により算出される指令値174を制御周期毎に同期して出力することができる。これにより、工作機械やロボットを含む制御対象全体に対しても、高精度な制御を実現できる。
<E.プログラムの実行動作例>
次に、本実施の形態に係る制御装置100におけるプログラムの実行動作例について説明する。図6は、本実施の形態に係る制御装置100におけるプログラムの実行動作例を示すタイムチャートである。図6には、一例として、優先度別に複数のタスクが設定され、各タスクがそれぞれの優先度に応じてプロセッサ102のリソースを共有する例を示す。
図6を参照して、高優先タスクとして、(1)入出力リフレッシュ処理部180により実行される入出力リフレッシュ処理と、(2)シーケンスプログラム実行部150のシーケンス命令解釈部152によるシーケンスプログラム30の実行による指令値の出力処理と、(3)アプリケーションプログラム実行部160の指令値出力部168による指令値の出力処理と、(4)シーケンスプログラム実行部150のモーション指令値出力部156による指令値の出力処理との4つの処理が設定されている。
低優先タスクとして、アプリケーションプログラム実行部160のコマンド解釈部162によるアプリケーションプログラム32の逐次解釈および内部コマンド生成処理が設定されている。
高優先タスクは、予め定められた制御周期T1毎に繰返し実行される。低優先タスクは、高優先タスクが実行されていない期間に適宜実行される。すなわち、制御周期毎に、高優先タスクの実行時間が割当てられ、高優先タスクの実行時間以外の時間において、低優先タスクが実行される。低優先タスクは、予め定められたアプリケーション実行周期T2(基本的には、制御周期T1の整数倍)毎に逐次実行される。
まず、高優先タスクについて説明すると、各制御周期が到来すると、まず、入出力リフレッシュ処理が実行された後、シーケンス命令解釈部152は、シーケンスプログラム30の全体を実行(スキャン)して、シーケンス命令に従う1または複数の指令値172を出力する。併せて、指令値出力部168は、バッファ164から内部コマンド166を読出して(デキューして)、当該制御周期における指令値を算出する。また、モーション指令値出力部156は、シーケンスプログラム30に含まれるモーション命令に従って、モーション命令についての1または複数の指令値を算出する。以下、同様の処理が制御周期毎に繰返される。
なお、指令値出力部168がバッファ164から内部コマンド166を読出すタイミング(デキューするタイミング)は、制御周期T1毎でなくともよい。これは、読出された内部コマンド166が複数の制御周期に亘って指令値を算出できるだけの命令を含むことが多いからである。
このように、ある制御周期T1における高優先タスクの実行が完了すると、シーケンス命令に従う指令値、モーション命令に従う指令値、制御アプリケーションに従う指令値のセットが用意される。これらの指令値は、基本的には、次の制御周期T1が到来すると、フィールド側に反映される。すなわち、シーケンスプログラム実行部150およびアプリケーションプログラム実行部160は、同一の制御周期で入力データに応じた指令値を算出するので、入力に同期した出力を実現できる。
図6には、説明の便宜上、シーケンスプログラム30の実行、指令値出力部168による指令値の算出処理、および、モーション指令値出力部156による指令値の算出処理が順番に実行される例を示すが、実行順番については適宜変更してもよいし、各処理をさらに細分化して交互に実行するようにしてもよい。すなわち、先行の入出力リフレッシュ処理の実行完了後から次の入出力リフレッシュ処理の実行開始前までの間に、指令値を含む外部データとして出力すべきデータが算出できていればよい。
一方、低優先タスクについて説明すると、アプリケーションプログラム実行部160のコマンド解釈部162は、アプリケーションプログラム32を逐次解釈する。すなわち、コマンド解釈部162は、アプリケーションプログラム32の読込みおよび解析を低優先で実行する。コマンド解釈部162がアプリケーションプログラム32を解析処理して生成された内部コマンド166は、逐次、バッファ164にキューイング(エンキュー)される。バッファ164にキューイングされた内部コマンド166は、指令値出力部168により都度参照されて、指令値の生成に用いられる。
コマンド解釈部162は、高優先タスクの演算周期である制御周期の整数倍分の内部コマンド166を予めキューイングしておくことで、指令値出力部168による制御周期毎の指令値の算出を実現できる。
アプリケーションプログラム実行部160のコマンド解釈部162は、アプリケーションプログラム32を事前に解析処理することで、指令値出力部168が指令値の演算に参照する内部コマンド166を、十分余分に生成しておくようにしてもよい。
アプリケーションプログラム実行部160のコマンド解釈部162は、予め定められたアプリケーション実行周期T2毎に、シーケンスプログラム実行部150との間でデータ同期処理を行う。そのため、コマンド解釈部162は、各プログラム実行動作において、アプリケーションプログラム32に含まれるコマンドのうち、アプリケーション実行周期T2内に処理可能なコマンドだけを読込んで解釈する。
本実施の形態に係る制御装置100においては、繰返し実行(スキャン)されるシーケンスプログラム30および逐次解釈されるアプリケーションプログラム32のいずれについても、制御周期毎に指令値を算出する処理が実行されるので、このような性質の異なる2つのプログラム間で互いに演算結果を参照し合うといった処理や、それぞれのプログラムが出力する演算結果をまとめるといった処理を容易に行うこともできる。
<F.内部コマンドの生成処理>
次に、アプリケーションプログラム実行部160のコマンド解釈部162によるアプリケーションプログラム32の逐次解釈および内部コマンド166の生成に係る処理の一例について説明する。
制御装置100は、アプリケーションプログラム32に含まれるコマンドを逐次解釈することで目標軌跡を算出する。定義される目標軌跡上の区間長さなどはコマンド毎に変化する。そのため、アプリケーションプログラム32を逐次解釈しつつ、制御周期毎に指令値を算出することは容易ではない。
そこで、本実施の形態に係る制御装置100においては、アプリケーションプログラム実行部160のコマンド解釈部162が、アプリケーションプログラム32に記述された1または複数のコマンドを解釈し、その解釈された内容に基づいて、制御周期毎に指令値を算出するための内部コマンド166を生成する。生成される内部コマンド166は、アプリケーションプログラム実行部160のバッファ164に順次キューイングされる。
内部コマンド166は、時間に関する変数を入力として、指令値を算出できる関数が用いられてもよい。すなわち、内部コマンド166は、指令値出力部168が制御周期毎に指令値を出力する関数であってもよい。より具体的には、内部コマンド166は、時間と指令値との関係を規定する関数であってもよい。内部コマンド166を規定するための時間に関する変数としては、時刻、ある基準タイミングからの経過時間、制御周期の累積サイクル数などを用いることができる。
このような関数を用いることで、指令値出力部168は、生成される内部コマンド166を順次参照して、各制御周期に指令値を出力できる。
図7は、本実施の形態に係る制御装置100における内部コマンド166の生成処理の一例を説明するための模式図である。図7(A)には、時刻t0から時刻t1までの期間における内部コマンド166を生成する処理手順を示し、図7(B)には、時刻t1から時刻t2までの期間における内部コマンド166を生成する処理手順を示す。
図7(A)を参照して、コマンド解釈部162は、アプリケーションプログラム32を逐次解釈して目標軌跡を順次決定する。コマンド解釈部162は、順次決定する目標軌跡に対して、予め定められた期間毎の通過点を順次算出する。それぞれの通過点は、目標軌跡上の移動距離および目標軌跡上の移動速度に基づいて算出される。
図7(A)に示す例において、時刻t0における初期位置である通過点P0(t0)に加えて、時刻t1における通過点P1(t1)、時刻t2における通過点P2(t2)、時刻t3における通過点P3(t3)が算出される。
コマンド解釈部162は、通過点P0(t0),P1(t1),P2(t2),P3(t3)の情報に基づいて、通過点P0(t0)から通過点P1(t1)までの移動経路44を算出する。コマンド解釈部162は、算出した移動経路44から内部コマンドFx1(t)を生成する。なお、図7(A)には、内部コマンドFx1(t)のみを示すが、実際には、同時に制御しなければならないモータの数だけ内部コマンド166が生成されることになる。
なお、移動経路44の算出には、通過点P0(t0)および通過点P1(t1)の情報のみを用いるようにしてもよい。但し、より滑らかで正確な移動経路44を算出するために、通過点P1(t1)に引き続く1または複数の通過点の情報を反映してもよい。すなわち、「先読み」動作により内部コマンド166を生成することで制御精度を高めることができる。
図7(B)を参照して、時刻t1から時刻t2までの期間について、コマンド解釈部162は、アプリケーションプログラム32をさらに解釈してさらに先の目標軌跡を決定する。コマンド解釈部162は、決定されたさらに先の目標軌跡に対して、新たな通過点を算出する。すなわち、コマンド解釈部162は、新たに通過点P4(t4)を算出する。
そして、コマンド解釈部162は、通過点P1(t1),P2(t2),P3(t3),P4(t4)の情報に基づいて、通過点P1(t1)から通過点P2(t2)までの移動経路44を算出する。コマンド解釈部162は、算出した移動経路44から内部コマンドFx2(t)を生成する。なお、図7(B)には、内部コマンドFx2(t)のみを示すが、実際には、同時に制御しなければならないモータの数だけ内部コマンド166が生成されることになる。
図7に示すように、「先読み」動作において、コマンド解釈部162は、目標軌跡40上の隣接する通過点42間に対応する内部コマンド166を、目標軌跡40上の当該隣接する通過点42に引き続く複数の通過点42の情報に基づいて生成する。
以上のような処理手順を繰返すことで、目標軌跡を実現するための内部コマンドが順次生成される。
このような内部コマンドの生成処理を採用することで、アプリケーションプログラムにより定義される目標軌跡を実現するための制御指令を制御周期毎に出力できる。
<G.内部コマンド生成に係るファクタおよび特殊コマンド>
上述したような内部コマンド166の生成にあたっては、区間毎に複数の通過点の情報が必要となる。以下、内部コマンド166生成に係るファクタについて説明する。図8は、本実施の形態に係る制御装置100における内部コマンド166の生成処理に係るファクタを説明するための模式図である。
図8を参照して、各区間の内部コマンド166を生成するにあたって、当該区間に対応する通過点および当該区間より先にある通過点の情報が必要となる。内部コマンド166を生成する対象となる区間を逐次進めるために、通過点の情報を逐次更新する必要がある。
上述の図1および図2を参照して説明したように、本実施の形態においては、通過点42を設定する区間幅(通過点42を設定する時間間隔)を調整できる。このような区間幅を「先読み単位」と称する。この時間間隔を短くすることで、目標軌跡の実現精度を高めることができる。
また、上述したような先読み動作を行うためには、複数の通過点の情報を保持しておく必要がある。先読み動作を行うために用いる通過点の数を「先読み数」と称する。この先読み数を多く確保することで、精度の高い内部コマンド166の生成を実現できる。
さらに、指令値出力部168は、内部コマンド166を参照することで指令値を出力する。そのため、予め多くの内部コマンド166がバッファ164にキューイングされることが好ましい。また、指令値出力部168は、現在参照すべき内部コマンド166だけではなく、それ以降の内部コマンド166を参照することで、より滑らかで正確な指令値を出力することもできる。このようなバッファ164にキューイングされる内部コマンド166の数を「内部コマンドバッファ数」と称する。
図8に示す、「先読み単位」、「先読み数」、「内部コマンドバッファ数」は、目標軌跡に沿った移動を実現するために重要なファクタである。本実施の形態においては、これらのファクタをアプリケーションプログラム32に含まれる特殊コマンドに従って、制御できる。
図9は、本実施の形態に係る制御装置100に入力されるアプリケーションプログラム32に含まれる特殊コマンドの一例を説明するための図である。
図9(A)には、先読み単位のみを変更する特殊コマンドの一例を示す。図9(A)に示す特殊コマンドは、上述の図2に示す特殊コマンド33Aと同様であり、通過点42を設定する先読み単位を「0.5」に設定することを定義するものである。
図9(B)には、先読み単位、先読み数、内部コマンドバッファ数のそれぞれを設定する特殊コマンドの一例を示す。図9(B)に示す「G99」とのコマンドに引き続く、「0.5」、「5」、「6」は、それぞれ先読み単位、先読み数、内部コマンドバッファ数を示す。
図9(C)〜(E)には、先読み単位、先読み数、内部コマンドバッファ数をそれぞれ設定する特殊コマンドの一例を示す。
図9(C)に示す「G991」は先読み単位を設定するためのコマンドであり、「G991」に引き続く「0.5」が設定すべき先読み単位の値を示す。
図9(D)に示す「G992」は先読み数を設定するためのコマンドであり、「G992」に引き続く「5」が設定すべき先読み数の値を示す。このように、特殊コマンドは、内部コマンド166の生成に必要な通過点42の数を指定する命令を含んでいてもよい。
図9(E)に示す「G993」は内部コマンドバッファ数を設定するためのコマンドであり、「G993」に引き続く「6」が設定すべき内部コマンドバッファ数の値を示す。このように、特殊コマンドは、バッファ164に格納される内部コマンド166の数を指定する命令を含んでいてもよい。
なお、図9(A)〜(E)に示す特殊コマンドはあくまでも一例であり、どのような特殊コマンドを規定してもよい。なお、特殊コマンドは、アプリケーションプログラム32を記述するための言語形式に沿って予め定義されてもよい。このような言語形式に沿った特殊コマンドを採用することで、アプリケーションプログラムの開発者が違和感なく特殊コマンドを利用できる。
以上のように、本実施の形態に係る制御装置100は、アプリケーションプログラム32に含まれる特殊コマンドによって、内部コマンドの生成に係る処理速度および生成される内部コマンドの制御精度を変化させることができる。
<H.アプリケーションプログラム32の解釈処理>
次に、本実施の形態に係る制御装置100におけるアプリケーションプログラム32の解釈処理について説明する。
図10は、本実施の形態に係る制御装置100におけるアプリケーションプログラム32に従う内部コマンド166の生成処理手順を示すフローチャートである。図10には、アプリケーションプログラム実行部160のコマンド解釈部162がアプリケーションプログラム32を逐次解釈する際の示す処理手順を示し、コマンド解釈部162は、典型的には、制御装置100のプロセッサ102がシステムプログラム34を実行することで実現される。図10に示す処理手順は、アプリケーション実行周期T2毎に繰返される。
図10を参照して、アプリケーション実行周期T2の開始タイミングが到来すると(ステップS100においてYESの場合)、コマンド解釈部162は、アプリケーションプログラム32に含まれる1または複数のコマンドを読込む(ステップS102)。コマンド解釈部162は、読込んだ1または複数のコマンドに従った目標軌跡を算出する(ステップS104)。
コマンド解釈部162は、読込んだ1または複数のコマンドに特殊コマンドが含まれるか否かを判断する(ステップS106)。特殊コマンドが含まれる場合(ステップS106においてYESの場合)には、コマンド解釈部162は、当該特殊コマンドに従って、通過点42を算出するための条件を変更する(ステップS108)。特殊コマンドが含まれない場合(ステップS106においてNOの場合)には、ステップS108の処理はスキップされる。
コマンド解釈部162は、現在設定されている条件(先読み単位)に従って、算出した目標軌跡上にある1または複数の通過点を算出する(ステップS110)。そして、コマンド解釈部162は、対象の区間について、現在設定されている先読み数以上の通過点が算出されているか否かを判断する(ステップS112)。
先読み数以上の通過点が算出されていれば(ステップS112においてYESの場合)、コマンド解釈部162は、現在設定されている先読み数に相当する通過点の情報に基づいて、対象の通過点から次の通過点までの移動経路44を算出し(ステップS114)、算出した移動経路44に基づいて内部コマンド166を生成する(ステップS116)。コマンド解釈部162は、生成した内部コマンド166をバッファ164へ格納する(ステップS118)。
コマンド解釈部162は、内部コマンド166を生成する対象の区間を次の区間に更新する(ステップS120)。続いて、コマンド解釈部162は、新たな対象の区間についての内部コマンド166の生成条件が満たされているか否かを判断する(ステップS122)。新たな対象の区間についての内部コマンド166の生成条件が満たされていれば(ステップS122においてYESの場合)、ステップS112以下の処理が繰返される。
新たな対象の区間についての内部コマンド166の生成条件が満たされていなければ(ステップS122においてNOの場合)、処理は終了する。
また、先読み数以上の通過点が算出されていなければ(ステップS112においてNOの場合)、ステップS114〜S122の処理はスキップされる。そして、処理は終了する。
以上のような処理がアプリケーション実行周期T2毎に繰返されることで、内部コマンド166が逐次生成される。アプリケーションプログラム実行部160の指令値出力部168は、逐次生成される内部コマンド166に基づいて制御周期毎に指令値を出力する。
<I.アプリケーションプログラム32に対する特殊コマンドの追加>
次に、上述したような特殊コマンドをアプリケーションプログラム32に追加する方法の一例について説明する。
アプリケーションプログラム32の任意の位置に特殊コマンドを追加することができるが、いずれの位置に特殊コマンドを追加すべきかについては、直感的には理解し難い場合も多い。そこで、本実施の形態においては、シミュレーションまたは実際に測定された挙動(以下、「トレースデータ」とも称す。)に基づいて、目標軌跡に対して誤差が発生している区間を特定し、その誤差を抑制するための特殊コマンドを追加する構成が提供される。以下の説明においては、サポート装置200によりこのような機能を提供する構成について説明する。
(i1:サポート装置のハードウェア構成)
次に、サポート装置200のハードウェア構成の一例について説明する。図11は、本実施の形態に係るサポート装置200のハードウェア構成の一例を示す模式図である。
図11を参照して、サポート装置200は、典型的には、汎用的なアーキクテチャを有するパーソナルコンピュータ上で、サポートプログラム218が実行されることで実現される。より具体的には、図11を参照して、サポート装置200は、プロセッサ202と、ディスプレイ204と、主メモリ206と、ストレージ208と、USBコントローラ212と、入力装置214とを含む。これらのコンポーネントは内部バス210を介して接続されている。
プロセッサ202は、CPU、MPU、GPUなどで構成され、ストレージ208に格納されたOS216およびサポートプログラム218を含む各種プログラムを読出して、主メモリ206に展開して実行することで、後述したような各種機能を実現する。主メモリ206は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ208は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
ディスプレイ204は、プロセッサ202などによる演算結果を表示するデバイスであり、例えば、LCD(Liquid Crystal Display)などで構成される。
USBコントローラ212は、USB接続を介して、制御装置100との間でデータを遣り取りする。
入力装置214は、ユーザの操作を受付けるデバイスであり、例えば、キーボードやメモリなどで構成される。
以下に説明するように、本実施の形態に係るサポート装置200は、目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラム32を処理する。
(i2:サポート装置の機能構成)
次に、サポート装置200の機能構成の一例について説明する。図12は、本実施の形態に係るサポート装置200の機能構成の一例を示す模式図である。図12に示す各機能は、典型的には、サポート装置200のプロセッサ202がサポートプログラム218を実行することで実現される。
図12を参照して、サポート装置200は、コマンド解釈モジュール262と、バッファ264と、指令値出力モジュール268と、比較表示モジュール270と、誤差算出モジュール274と、描画モジュール280と、変更受付モジュール290と、ブロック番号特定モジュール292と、コマンド修正モジュール294とを含む。
サポート装置200は、制御装置100がアプリケーションプログラム32に基づいて制御周期毎に出力する指令値に従う、1または複数のモータからなる制御対象の軌跡を取得する。すなわち、サポート装置200は、アプリケーションプログラム32を逐次解釈することで生成される内部コマンドに基づいて算出される、制御周期毎の指令値に従う制御対象の軌跡(以下、「実挙動」とも称す。)を取得する。
本実施の形態において、このような実挙動の取得方法として、シミュレーションに基づく方法、および、実際に測定された挙動(トレースデータ)に基づく方法が可能となっている。現実の製品においては、一方のみを実装するようにしてもよい。
コマンド解釈モジュール262、バッファ264、および指令値出力モジュール268は、アプリケーションプログラム32に基づいて制御対象が移動するであろう軌跡(実挙動)を算出するシミュレータとして機能する。
より具体的には、コマンド解釈モジュール262は、制御装置100のコマンド解釈部162と同様の処理を実行する。すなわち、コマンド解釈モジュール262は、入力されるアプリケーションプログラム32を逐次解釈して、内部コマンド266を生成する。コマンド解釈モジュール262が生成する内部コマンド266はバッファ264に逐次格納される。指令値出力モジュール268は、制御装置100の指令値出力部168と同様の処理を実行する。すなわち、指令値出力モジュール268は、生成される内部コマンド166に従って制御対象のモータに対する指令値を制御周期毎に出力する。
このようなシミュレータによって出力される制御周期毎の指令値に基づいて、制御対象の実挙動が取得される。
あるいは、制御装置100により現実に制御される制御対象から測定されたトレースデータをそのまま利用してもよい。
サポート装置200は、目標軌跡に従う制御対象の本来の軌跡(以下、「理想挙動」とも称す。)を取得する。本実施の形態において、このような理想挙動の取得方法として、完成品の設計データに基づく方法、および、アプリケーションプログラム32に基づく方法が可能となっている。現実の製品においては、一方のみを実装するようにしてもよい。
描画モジュール280は、完成品の設計データに基づいて理想挙動を算出する。制御対象が移動すべき軌跡(理想挙動)を生成する。設計データとしては、典型的には、CAD/CAMデータなどが用いられる。
また、アプリケーションプログラム32に基づく場合には、アプリケーションプログラム32に含まれる1または複数のコマンドを解釈して目標軌跡を直接描画するようにしてもよい。
比較表示モジュール270は、実挙動と理想挙動とを比較し、その比較結果をディスプレイ204などに出力する。なお、比較表示モジュール270は、指令値出力モジュール268からの指令値またはトレースデータを実座標に対応付けるために、設定データ272を参照してもよい。
比較表示モジュール270は、後述するような検証画面600を生成および提供する機能も有している。
誤差算出モジュール274は、実挙動と理想挙動との誤差を算出し、その位置(座標)および誤差の大きさを出力する。
変更受付モジュール290は、ユーザ操作に従って、アプリケーションプログラム32に対する変更指示を受付ける。ブロック番号特定モジュール292は、変更受付モジュール290からの変更指示に従って、アプリケーションプログラム32内の対象となるブロックを特定する。
ブロック番号特定モジュール292は、指令値出力モジュール268が処理中の内部コマンド266の情報、および、誤差算出モジュール274からの対象となる位置(座標)の情報などに基づいて、対象となるブロックの番号を特定する。すなわち、誤差算出モジュール274が、実挙動と理想挙動との誤差が予め定められた許容誤差範囲を超える部分を抽出し、ブロック番号特定モジュール292が、アプリケーションプログラム32に含まれる当該抽出した部分に対応するコマンドを特定する。
コマンド修正モジュール294は、ブロック番号特定モジュール292からのコマンドの変更指示および対象となるブロック番号の指示に従って、アプリケーションプログラム32に含まれるコマンドを修正し、修正後のアプリケーションプログラムを出力する。
(i3:サポート装置の画面ユーザインターフェイス例)
次に、図12に示すような機能構成によって提供される画面ユーザインターフェイスの一例について説明する。
図13は、本実施の形態に係るサポート装置200が提供する画面ユーザインターフェイスの一例を示す模式図である。図13(A)を参照して、検証画面600は、実挙動に対応するトレース612と、理想挙動に対応するトレース614とを含む軌跡表示領域610を含む。トレース612とトレース614との間の誤差の大きさが予め定められた条件(許容誤差範囲)を超える部分に、注意表示オブジェクト620,622が表示される。このように、サポート装置200は、記実挙動および理想挙動を重ねて表示するとともに、許容誤差範囲を超える誤差が生じている部分に関連付けて、注意表示オブジェクト620,622を表示する。
図13(A)に示す例では、許容誤差範囲を超える誤差が生じている箇所が2ヶ所存在しており、注意表示オブジェクト620,622によりそれぞれの部分が示されている。予め定められた条件(許容誤差範囲)は、許容誤差範囲入力領域630に設定される値によって任意に調整できる。
詳細表示領域640には、許容誤差範囲を超える箇所についての情報が表示される。具体的には、詳細表示領域640は、許容誤差範囲を超える箇所に対応するアプリケーションプログラム32のブロック番号を示すブロック番号表示領域642と、当該ブロック番号に記述されているコードの内容を示すコード表示領域644と、当該ブロック番号に記述されているコードに対して設定されている先読み単位の大きさを示す先読み単位表示領域646と、変更後の先読み単位の大きさを受付ける先読み単位受付示領域648とを含む。
図13(A)に示すような検証画面600において、ユーザが1番目の誤差発生箇所に対して先読み単位を変更した場合を想定する。図13(B)には、ユーザが入力領域649に、現在の先読み単位である「1ms」に代えて、「0.5ms」を入力した例を示す。上述したように、内部コマンドは、アプリケーションプログラム32を逐次解釈して算出される目標軌跡40上に設定される複数の通過点42の情報に基づいて生成される。このとき、追加される特殊コマンドは、目標軌跡40上に設定される通過点42の設定間隔を変更することになる。
ユーザが先読み単位を変更することに応じて、シミュレータ(コマンド解釈モジュール262、バッファ264、および指令値出力モジュール268)がアプリケーションプログラム32を再度処理することで、実挙動に対応するトレース612が更新される。すなわち、サポート装置200は、特殊コマンドが追加された後のアプリケーションプログラム32に基づいて、実挙動を更新する。
更新後の実挙動と理想挙動とを比較して、1番目の誤差発生箇所における誤差が許容誤差範囲以下に収まっていれば、注意表示オブジェクト620は正常表示オブジェクト621に変更される。このように、サポート装置200は、特殊コマンドが追加された後のアプリケーションプログラム32に基づいて算出された実挙動において、許容誤差範囲を超える誤差が生じていた部分が許容誤差範囲以内になると、注意表示オブジェクト620を正常表示オブジェクト621に更新する。
なお、説明の便宜上、図13には、先読み単位のみを変更する例を示したが、これに限らず、先読み数、および/または、内部コマンドバッファ数についてもユーザが任意に変更できるようにしてもよい。例えば、先読み数については、内部コマンドの生成に必要な通過点42の数を指定する命令が追加されることになる。
このように、サポート装置200のコマンド修正モジュール294は、ユーザ操作に従って、特定されたコマンドの前に、アプリケーションプログラム32に含まれるコマンドから内部コマンドを生成する際の処理精度を変更するための特殊コマンドを追加する。
図14は、図13に示す画面ユーザインターフェイスに対するユーザ操作によるアプリケーションプログラム32の変更処理を説明するための模式図である。図14を参照して、アプリケーションプログラム32に含まれる複数のコマンドのうち、対象となるコマンドの直前に特殊コマンド33が追加されることになる。図13および図14に示す例では、対象となる10ブロック目のコマンドの前に特殊コマンド33が追加される。
このような対話型の検証画面600をユーザに提示することで、ユーザは、アプリケーションプログラム32を逐次実行する際の設定条件(先読み単位、先読み数、内部コマンドバッファ数)を適宜調整することができる。
(i4:処理手順)
次に、サポート装置200において特殊コマンドをアプリケーションプログラム32に追加する処理手順について説明する。図15は、本実施の形態に係るサポート装置200によるアプリケーションプログラム32の変更処理手順を示すフローチャートである。図15に示す各ステップは、典型的には、サポート装置200のプロセッサ202がストレージ208に格納されたサポートプログラム218を実行することで実現される。
図15を参照して、サポート装置200は、アプリケーションプログラム32を読込み(ステップS200)、アプリケーションプログラム32を逐次解釈して生成する内部コマンド266に基づいて、実挙動を算出する(ステップS202)。
なお、アプリケーションプログラム32に代えて、トレースデータが入力された場合には、ステップS202の処理に代えて、トレースデータに基づく実挙動の算出が行われる。
また、サポート装置200は、設計データを読込み、理想挙動を算出する(ステップS204)。そして、サポート装置200は、ステップS202において算出した実挙動と、ステップS204において算出した理想挙動とを比較して、予め定められた許容誤差範囲を超える部分が存在するか否かを判断する(ステップS206)。
実挙動と理想挙動との間で予め定められた許容誤差範囲を超える部分が存在すれば(ステップS206においてYESの場合)、サポート装置200は、アプリケーションプログラム32に含まれるコマンドのうち、当該許容誤差範囲を超える部分に対応するコマンドが存在するブロック番号を特定する(ステップS208)。実挙動と理想挙動との間で予め定められた許容誤差範囲を超える部分が存在しなければ(ステップS206においてNOの場合)、ステップS208の処理はスキップされる。
サポート装置200は、実挙動および理想挙動ならびに両者の比較結果を含む検証画面600を表示する(ステップS210)。
サポート装置200は、検証画面600において、ユーザからアプリケーションプログラム32に対する変更指示を受けると(ステップS212においてYESの場合)、サポート装置200は、変更指示に対応するブロック番号のコマンドの前に変更指示の内容を示す特殊コマンドを追加する(ステップS214)。そして、特殊コマンドを追加した後の実挙動をシミュレーションする。すなわち、サポート装置200は、特殊コマンドが追加された後のアプリケーションプログラム32を逐次解釈して生成する内部コマンド266に基づいて、変更後の実挙動を算出する(ステップS216)。そして、ステップS206以下の処理が繰返される。
ユーザからアプリケーションプログラム32に対する変更指示がなければ(ステップS212においてNOの場合)、サポート装置200は、必要に応じて変更後のアプリケーションプログラム32を出力して、処理を終了する。
<J.変形例>
上述の説明においては、シーケンスプログラム30とアプリケーションプログラム32とを実行する制御装置100について説明したが、インタプリタ方式で記述されたプログラムであれば、どのようなプログラムについても同様に適用できる。
また、本実施の形態に係る制御装置100のように、シーケンスプログラム30およびアプリケーションプログラム32を並列的に実行する構成に限定されることなく、アプリケーションプログラム32のみを逐次実行するような実行環境においても適用可能である。
<K.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
1または複数のモータを制御可能な制御装置(100)であって、
前記1または複数のモータに対する指令値を制御周期毎に出力する指令値出力部(168)と、
目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラムを逐次解釈して、前記指令値出力部による制御周期毎の指令値の出力に必要な内部コマンドを生成するコマンド解釈部(162)とを備え、
前記コマンド解釈部は、
前記アプリケーションプログラムに含まれるコマンドに従って、予め定められた期間毎の前記目標軌跡上の通過点を算出するとともに、当該算出した通過点に応じて前記内部コマンドを生成し(S102,S104,S110,S114,S116)、
前記アプリケーションプログラムの逐次解釈において、予め定義された特殊コマンドを実行すると、前記通過点を算出する期間を当該特殊コマンドにより指定された長さに変更する(S106,S108)、制御装置。
[構成2]
前記コマンド解釈部は、前記特殊コマンドを実行すると、前記アプリケーションプログラムにおいて当該特殊コマンドの後に記述されている1または複数のコマンドを、当該特殊コマンドによる指定に従って解釈する、構成1に記載の制御装置。
[構成3]
前記特殊コマンドは、前記通過点を算出する期間の変更を元に戻すための命令を含む、構成1または2に記載の制御装置。
[構成4]
前記コマンド解釈部は、前記目標軌跡上の隣接する通過点間に対応する内部コマンドを、前記目標軌跡上の当該隣接する通過点に引き続く複数の通過点の情報に基づいて生成する(S114,S116)、構成1〜3のいずれか1項に記載の制御装置。
[構成5]
前記特殊コマンドは、前記内部コマンドの生成に必要な通過点の数を指定する命令を含む、構成4に記載の制御装置。
[構成6]
前記コマンド解釈部により生成される内部コマンドを順次格納するバッファ(164)をさらに備え、
前記特殊コマンドは、前記バッファに格納される内部コマンドの数を指定する命令を含む、構成1〜5のいずれか1項に記載の制御装置。
[構成7]
前記特殊コマンドは、前記アプリケーションプログラムを記述するための言語形式に沿って定義される、構成1〜6のいずれか1項に記載の制御装置。
[構成8]
前記内部コマンドは、前記目標軌跡上に設定される隣接する通過点間毎の各モータの挙動を示す関数として定義される、構成1〜7のいずれか1項に記載の制御装置。
[構成9]
1または複数のモータを制御可能な制御方法であって、
前記1または複数のモータに対する指令値を制御周期毎に出力するステップ(168)と、
目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラムを逐次解釈して、前記制御周期毎の指令値の出力に必要な内部コマンドを生成するステップ(S100〜S122)とを備え、
前記内部コマンドを生成するステップは、
前記アプリケーションプログラムに含まれるコマンドに従って、予め定められた期間毎の前記目標軌跡上の通過点を算出するとともに、当該算出した通過点に応じて前記内部コマンドを生成するステップ(S102,S104,S110,S114,S116)と、
前記アプリケーションプログラムの逐次解釈において、予め定義された特殊コマンドを実行すると、前記通過点を算出する期間を当該特殊コマンドにより指定された長さに変更するステップ(S106,S108)とを含む、制御方法。
[構成10]
目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラムを処理するサポート装置(200)であって、
前記アプリケーションプログラムを逐次解釈することで生成される内部コマンドに基づいて算出される、制御周期毎の指令値に従う制御対象の軌跡を示す実挙動を取得する第1の取得手段(262,264,268)と、
目標軌跡に従う前記制御対象の本来の軌跡である理想挙動を取得する第2の取得手段(280)と、
前記実挙動と前記理想挙動との誤差が予め定められた許容誤差範囲を超える部分を抽出するとともに、前記アプリケーションプログラムに含まれる当該抽出した部分に対応するコマンドを特定する特定手段(270,274,292)と、
ユーザ操作に従って、前記特定されたコマンドの前に、前記アプリケーションプログラムに含まれるコマンドから前記内部コマンドを生成する際の処理精度を変更するための特殊コマンドを追加する修正手段(294)とを備える、サポート装置。
[構成11]
前記内部コマンドは、前記アプリケーションプログラムを逐次解釈して算出される目標軌跡上に設定される複数の通過点の情報に基づいて生成され、
前記特殊コマンドは、前記目標軌跡上の通過点の設定間隔を変更する命令を含む、構成10に記載のサポート装置。
[構成12]
前記内部コマンドは、前記目標軌跡上の隣接する通過点間に対応付けられるとともに、当該隣接する通過点に引き続く複数の通過点の情報に基づいて生成され、
前記特殊コマンドは、前記内部コマンドの生成に必要な通過点の数を指定する命令を含む、構成11に記載のサポート装置。
[構成13]
前記特殊コマンドが追加された後のアプリケーションプログラムに基づいて、前記実挙動を更新する更新手段(262,264,268)をさらに備える、構成10〜12のいずれか1項に記載のサポート装置。
[構成14]
前記実挙動および前記理想挙動を重ねて表示するとともに、前記許容誤差範囲を超える誤差が生じている部分に関連付けて、第1のオブジェクト(620)を表示する表示手段(270)をさらに備える、構成13に記載のサポート装置。
[構成15]
前記表示手段は、前記特殊コマンドが追加された後のアプリケーションプログラムに基づいて算出された実挙動において、前記許容誤差範囲を超える誤差が生じていた部分が前記許容誤差範囲以内になると、前記第1のオブジェクトを第2のオブジェクト(621)に更新する、構成14に記載のサポート装置。
<L.まとめ>
本実施の形態においては、制御装置は、アプリケーションプログラムに含まれるコマンドから内部コマンドを生成する際の処理精度を変更するための特殊コマンドを解釈可能になっている。このような特殊コマンドを用いることで、目標軌跡の複雑性などに応じて、局所的に制御精度を高めることができる。
このような処理精度を変更するための特殊コマンドを用いることで、アプリケーションプログラムの構文解析によって算出される通過点の粒度(先読み単位)、および、先読みのバッファサイズなどを動的に変更できる。
本実施の形態においては、サポート装置上などにおいて、実挙動と理想挙動とを比較し、そのずれ量が予め定められた基準を超える場合には、その箇所をユーザに通知する。ユーザは、基準を超える誤差が発生している箇所に応じて、制御精度を調整するための特殊コマンドをアプリケーションに追加できる。これによって、要求された制御精度を満たさない部分に対する制御精度を実現できる。また、ユーザは、特殊コマンドを追加した後のアプリケーションプログラムによる実軌跡を確認することができるので、特殊コマンドによる設定の妥当性などを一見して確認できる。
また、本実施の形態においては、アプリケーションプログラムから生成された複数の内部コマンドを、制御周期毎に指令値を算出する指令値出力部に対して、与えることができる。これによって、内部コマンドの生成が間に合わず、動作が停止するといった事態を回避できる。すなわち、動作間の切れ目をなくして、連続的な軌跡を実現できる。
上述のような構成を採用することで、従来技術に比較して、より滑らかな曲線加工および形状加工を実現できる。また、要求に応じて、加工の精度を容易に調整することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、2 フィールドネットワーク、6 上位ネットワーク、30 シーケンスプログラム、32,32A アプリケーションプログラム、33,33A,33B 特殊コマンド、34 システムプログラム、40 目標軌跡、42 通過点、44 移動経路、100 制御装置、102,202 プロセッサ、104 チップセット、106,206 主メモリ、108,208 ストレージ、110 上位ネットワークコントローラ、112,212 USBコントローラ、114 メモリカードインターフェイス、116 メモリカード、120 内部バスコントローラ、122 I/Oユニット、130 フィールドネットワークコントローラ、150 シーケンスプログラム実行部、152 シーケンス命令解釈部、154 ライブラリ、156 モーション指令値出力部、160 アプリケーションプログラム実行部、162 コマンド解釈部、164,264 バッファ、166,266 内部コマンド、168 指令値出力部、170 共有メモリ、172,174 指令値、180 入出力リフレッシュ処理部、200 サポート装置、204 ディスプレイ、210 内部バス、214 入力装置、216 OS、218 サポートプログラム、262 コマンド解釈モジュール、268 指令値出力モジュール、270 比較表示モジュール、272 設定データ、274 誤差算出モジュール、280 描画モジュール、290 変更受付モジュール、292 ブロック番号特定モジュール、294 コマンド修正モジュール、300 サーバ装置、400 表示装置、500 フィールドデバイス、510 リモートI/O装置、520,530 サーボドライバ、522,532 サーボモータ、540 工作機械、550 搬送装置、554 作業台、600 検証画面、T1 制御周期、T2 アプリケーション実行周期、W ワーク。

Claims (10)

  1. 1または複数のモータを制御可能な制御装置であって、
    前記1または複数のモータに対する指令値を制御周期毎に出力する指令値出力部と、
    目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラムを逐次解釈して、前記指令値出力部による制御周期毎の指令値の出力に必要な内部コマンドを生成するコマンド解釈部とを備え、
    前記コマンド解釈部は、
    前記アプリケーションプログラムに含まれるコマンドに従って、予め定められた期間毎の前記目標軌跡上の通過点を算出するとともに、当該算出した通過点に応じて前記内部コマンドを生成し、
    前記アプリケーションプログラムの逐次解釈において、予め定義された特殊コマンドを実行すると、前記通過点を算出する期間を当該特殊コマンドにより指定された長さに変更する、制御装置。
  2. 前記コマンド解釈部は、前記特殊コマンドを実行すると、前記アプリケーションプログラムにおいて当該特殊コマンドの後に記述されている1または複数のコマンドを、当該特殊コマンドによる指定に従って解釈する、請求項1に記載の制御装置。
  3. 前記特殊コマンドは、前記通過点を算出する期間の変更を元に戻すための命令を含む、請求項1または2に記載の制御装置。
  4. 前記コマンド解釈部は、前記目標軌跡上の隣接する通過点間に対応する内部コマンドを、前記目標軌跡上の当該隣接する通過点に引き続く複数の通過点の情報に基づいて生成する、請求項1〜3のいずれか1項に記載の制御装置。
  5. 前記特殊コマンドは、前記内部コマンドの生成に必要な通過点の数を指定する命令を含む、請求項4に記載の制御装置。
  6. 前記コマンド解釈部により生成される内部コマンドを順次格納するバッファをさらに備え、
    前記特殊コマンドは、前記バッファに格納される内部コマンドの数を指定する命令を含む、請求項1〜5のいずれか1項に記載の制御装置。
  7. 前記特殊コマンドは、前記アプリケーションプログラムを記述するための言語形式に沿って定義される、請求項1〜6のいずれか1項に記載の制御装置。
  8. 前記内部コマンドは、前記目標軌跡上に設定される隣接する通過点間毎の各モータの挙動を示す関数として定義される、請求項1〜7のいずれか1項に記載の制御装置。
  9. 1または複数のモータを制御可能な制御方法であって、
    前記1または複数のモータに対する指令値を制御周期毎に出力するステップと、
    目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラムを逐次解釈して、前記制御周期毎の指令値の出力に必要な内部コマンドを生成するステップとを備え、
    前記内部コマンドを生成するステップは、
    前記アプリケーションプログラムに含まれるコマンドに従って、予め定められた期間毎の前記目標軌跡上の通過点を算出するとともに、当該算出した通過点に応じて前記内部コマンドを生成するステップと、
    前記アプリケーションプログラムの逐次解釈において、予め定義された特殊コマンドを実行すると、前記通過点を算出する期間を当該特殊コマンドにより指定された長さに変更するステップとを含む、制御方法。
  10. 1または複数のモータを制御するための制御プログラムであって、前記制御プログラムは、コンピュータに、
    前記1または複数のモータに対する指令値を制御周期毎に出力するステップと、
    目標軌跡を定義する1または複数のコマンドを含むアプリケーションプログラムを逐次解釈して、前記制御周期毎の指令値の出力に必要な内部コマンドを生成するステップとを実行させ、
    前記内部コマンドを生成するステップは、
    前記アプリケーションプログラムに含まれるコマンドに従って、予め定められた期間毎の前記目標軌跡上の通過点を算出するとともに、当該算出した通過点に応じて前記内部コマンドを生成するステップと、
    前記アプリケーションプログラムの逐次解釈において、予め定義された特殊コマンドを実行すると、前記通過点を算出する期間を当該特殊コマンドにより指定された長さに変更するステップとを含む、制御プログラム。
JP2017182885A 2017-09-22 2017-09-22 制御装置、制御方法および制御プログラム Active JP6900863B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017182885A JP6900863B2 (ja) 2017-09-22 2017-09-22 制御装置、制御方法および制御プログラム
US15/894,869 US20190094831A1 (en) 2017-09-22 2018-02-12 Control apparatus, control method, and support apparatus
CN201810151489.0A CN109542046B (zh) 2017-09-22 2018-02-13 控制装置、控制方法及控制系统
EP18156433.7A EP3460602B1 (en) 2017-09-22 2018-02-13 Control apparatus and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017182885A JP6900863B2 (ja) 2017-09-22 2017-09-22 制御装置、制御方法および制御プログラム

Publications (2)

Publication Number Publication Date
JP2019057253A JP2019057253A (ja) 2019-04-11
JP6900863B2 true JP6900863B2 (ja) 2021-07-07

Family

ID=61226390

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017182885A Active JP6900863B2 (ja) 2017-09-22 2017-09-22 制御装置、制御方法および制御プログラム

Country Status (4)

Country Link
US (1) US20190094831A1 (ja)
EP (1) EP3460602B1 (ja)
JP (1) JP6900863B2 (ja)
CN (1) CN109542046B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7087316B2 (ja) * 2017-09-27 2022-06-21 オムロン株式会社 情報処理装置、情報処理方法およびプログラム
JP7207393B2 (ja) * 2018-02-28 2023-01-18 ソニーグループ株式会社 情報処理装置および情報処理方法
JP7247808B2 (ja) * 2019-07-31 2023-03-29 オムロン株式会社 制御システム、解析方法およびプログラム
CN111487927B (zh) * 2020-04-26 2022-02-15 华中科技大学 一种基于双代码联合作用的样条轨迹控制指令优化方法
US20230315034A1 (en) * 2020-09-07 2023-10-05 Fanuc Corporation Display device

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01147610A (ja) * 1987-12-03 1989-06-09 Fanuc Ltd 数値制御装置
JP3277947B2 (ja) * 1992-08-31 2002-04-22 株式会社安川電機 Nc制御装置の速度制御方法
JPH07175508A (ja) * 1993-12-20 1995-07-14 Ricoh Co Ltd ロボット制御装置
JPH10320026A (ja) * 1997-05-20 1998-12-04 Mitsubishi Electric Corp 数値制御装置及び方法
JPH11149306A (ja) * 1997-11-14 1999-06-02 Fanuc Ltd 加工機の制御装置
JP3904993B2 (ja) * 2002-08-16 2007-04-11 ファナック株式会社 曲線補間方法
JP4271487B2 (ja) * 2003-05-19 2009-06-03 東芝機械株式会社 数値制御装置及び数値制御方法
JP2006236243A (ja) * 2005-02-28 2006-09-07 Yaskawa Electric Corp モーションコントロールシステムとその同期方法
CN101673104B (zh) * 2009-10-10 2012-03-21 浙江工业大学 基于g代码转换方法的工业机器人加工控制方法
WO2011114457A1 (ja) * 2010-03-17 2011-09-22 トヨタ自動車株式会社 脚補助装置
JP5146512B2 (ja) * 2010-10-13 2013-02-20 オムロン株式会社 制御装置、制御システムおよび制御方法
CN102063088B (zh) * 2010-11-05 2013-05-01 江俊逢 一种计算机辅助离散运动规划方法
JP5573664B2 (ja) * 2010-12-27 2014-08-20 ブラザー工業株式会社 数値制御装置、移動制御方法、移動制御プログラム及び記憶媒体
JP4877423B1 (ja) 2011-03-15 2012-02-15 オムロン株式会社 Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体
CN103324141B (zh) * 2013-06-14 2015-04-29 浙江工业大学 一种高精度变插补周期的多轴联动运动控制方法
JP6376558B2 (ja) * 2013-09-13 2018-08-22 株式会社ソディック 加工データ演算装置および加工データ演算プログラム
CN103699056B (zh) * 2013-12-02 2016-06-01 嘉兴学院 高速高精度数控加工的小线段实时平滑过渡插补方法
US9744620B2 (en) * 2015-04-06 2017-08-29 Mitsubishi Electric Research Laboratories, Inc. Control of processing machines with redundant actuators
CN105388840A (zh) * 2015-12-24 2016-03-09 上海交通大学 实时自适应轮廓误差估计方法

Also Published As

Publication number Publication date
EP3460602B1 (en) 2021-05-05
EP3460602A1 (en) 2019-03-27
JP2019057253A (ja) 2019-04-11
US20190094831A1 (en) 2019-03-28
CN109542046A (zh) 2019-03-29
CN109542046B (zh) 2021-09-21

Similar Documents

Publication Publication Date Title
JP6900863B2 (ja) 制御装置、制御方法および制御プログラム
JP6903275B2 (ja) 制御装置および制御方法
JP6919404B2 (ja) 制御装置
US10761515B2 (en) Control system for controlling control object and control device for linking control applications in control system
EP3477405B1 (en) Control device
US10908577B2 (en) Control device
US20190095246A1 (en) Support device and non-transitory storage medium
US10606246B2 (en) Control device and control method with various command values in a shared memory providing access to various program execution and command value operation parts in each control cycle
JP7310465B2 (ja) 同期制御装置、同期制御システム、同期制御方法、及びシミュレーション装置
US10509393B2 (en) Control device and control method
US20220229416A1 (en) Control system, analysis method, and program
EP4036670A1 (en) Control device
JP7167516B2 (ja) 制御装置、制御方法、および制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200303

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210511

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210518

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210531

R150 Certificate of patent or registration of utility model

Ref document number: 6900863

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250