JP2019049947A - 制御装置および制御方法 - Google Patents

制御装置および制御方法 Download PDF

Info

Publication number
JP2019049947A
JP2019049947A JP2017174922A JP2017174922A JP2019049947A JP 2019049947 A JP2019049947 A JP 2019049947A JP 2017174922 A JP2017174922 A JP 2017174922A JP 2017174922 A JP2017174922 A JP 2017174922A JP 2019049947 A JP2019049947 A JP 2019049947A
Authority
JP
Japan
Prior art keywords
command value
program
control cycle
control
data
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.)
Granted
Application number
JP2017174922A
Other languages
English (en)
Other versions
JP6950385B2 (ja
Inventor
英詞 山本
Eiji Yamamoto
英詞 山本
征彦 仲野
Masahiko Nakano
征彦 仲野
純児 島村
Junji Shimamura
純児 島村
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
Omron Tateisi Electronics Co
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, Omron Tateisi Electronics Co filed Critical Omron Corp
Priority to JP2017174922A priority Critical patent/JP6950385B2/ja
Priority to US15/893,700 priority patent/US10606246B2/en
Priority to EP18156422.0A priority patent/EP3454144B1/en
Priority to CN201810151258.XA priority patent/CN109491307B/zh
Publication of JP2019049947A publication Critical patent/JP2019049947A/ja
Application granted granted Critical
Publication of JP6950385B2 publication Critical patent/JP6950385B2/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
    • G05B19/056Programming the PLC
    • 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
    • G05B19/054Input/output
    • 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/418Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM]
    • G05B19/41835Total factory control, i.e. centrally controlling a plurality of machines, e.g. direct or distributed numerical control [DNC], flexible manufacturing systems [FMS], integrated manufacturing systems [IMS] or computer integrated manufacturing [CIM] characterised by programme execution
    • 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/11Plc I-O input output
    • G05B2219/1103Special, intelligent I-O processor, also plc can only access via processor
    • 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/11Plc I-O input output
    • G05B2219/1105I-O
    • 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/11Plc I-O input output
    • G05B2219/1134Fieldbus
    • 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/13Plc programming
    • G05B2219/13152Modification of program
    • 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/34288Plc as main controller for cnc

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • General Engineering & Computer Science (AREA)
  • Manufacturing & Machinery (AREA)
  • Quality & Reliability (AREA)
  • Programmable Controllers (AREA)
  • Numerical Control (AREA)

Abstract

【課題】制御周期毎に全体をスキャンして指令値を更新する第1のプログラムと、逐次解釈される第2のプログラムとを実行可能な制御装置において、より高い制御性能を実現するための環境を提供する。【解決手段】制御装置は、第1のプログラムの全体を制御周期毎にスキャンして指令値を更新する第1のプログラム実行部と、逐次解釈される第2のプログラムに従って制御周期毎に指令値を更新する第2のプログラム実行部とを含む。第2のプログラム実行部は、中間コードを生成するインタプリタと、中間コードに従って制御周期毎に指令値を算出する指令値演算部とを含む。指令値演算部は、他の処理での利用が可能な態様で、制御周期毎に指令値を出力する。【選択図】図1

Description

本開示は、制御対象を制御するための制御装置および制御方法に関する。
様々な生産現場において、PLC(プログラマブルコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。このような制御装置は、直接的に制御対象を制御するだけではなく、他の装置に制御指令を与えることで、間接的に制御対象を制御する場合もある。例えば、特開2012−160180号公報(特許文献1)は、工作物を機械加工する数値制御工作機械を開示する。この構成においては、NC制御装置とPLC制御装置との間は信号線を介して接続されており、NC制御装置の情報は信号線を介してPLC制御装置へ伝えられる。
特開2012−160180号公報
上述の特開2012−160180号公報(特許文献1)に開示される構成においては、NCプログラムを逐次実行するNC制御装置と、定周期でプログラムを実行するPLC制御装置とは、互いに非同期でプログラムを実行することになる。そのため、PLC制御装置においては、自装置が制御周期毎に収集する入力データと、NC制御装置からの情報(例えば、NCプログラムの実行により算出された指令値など)とは収集タイミングが異なったものとなっている。収集タイミングが一致していないので、衝突防止などの監視には利用できるものの、例えば、リアルタイムに指令値を補正するといった処理を実現することはできなかった。
本開示は、制御周期毎に全体をスキャンして指令値を更新する第1のプログラムと、逐次解釈される第2のプログラムとを実行可能な制御装置において、より高い制御性能を実現するための環境を提供することを一つの目的とする。
本開示の一例では、制御対象を制御するための制御装置が提供される。制御装置は、制御周期毎に入力データおよび出力データを更新するデータ更新部と、第1のプログラムの全体を制御周期毎にスキャンして指令値を更新する第1のプログラム実行部と、逐次解釈される第2のプログラムに従って制御周期毎に指令値を更新する第2のプログラム実行部とを含む。第2のプログラム実行部は、第2のプログラムの少なくとも一部を解釈して中間コードを生成するインタプリタと、インタプリタにより生成される中間コードに従って制御周期毎に指令値を算出する指令値演算部とを含む。指令値演算部は、他の処理での利用が可能な態様で、制御周期毎に指令値を出力する。
この開示によれば、第1のプログラムに従う指令値および第2のプログラムに従う指令値を制御周期毎に算出することができ、さらに、これらの指令値を容易に二次利用できる。制御周期毎に算出されるそれぞれのプログラムからの指令値を利用または加工することで、より高い制御性能を実現できる。
上述の開示において、制御装置は、指令値演算部が制御周期毎に算出する指令値を第1のプログラム実行部から参照するための共有メモリをさらに含んでいてもよい。
この開示によれば、それぞれのプログラムを実行する主体および他の処理を実行する主体は、共有メモリにアクセスすることで、必要な指令値を参照でき、実装を簡素化できる。
上述の開示において、制御装置は、指令値演算部が制御周期毎に算出する指令値と、データ更新部により更新されるデータとに基づく演算処理を実行する実行部をさらに含んでいてもよい。
この開示によれば、例えば、装置の状況を入力データとして取得するとともに、当該取得した入力データに基づいて指令値を補正することができる。このような指令値の補正処理によって、より状況に応じた高精度な制御を実現できる。
上述の開示において、指令値演算部が制御周期毎に算出する指令値に対する数値処理を含んでいてもよい。
この開示によれば、例えば、何らかの方法で取得されたずれ量などを指令値に容易に反映できる。
上述の開示において、制御装置は、データ更新部により更新されるデータおよび第1のプログラム実行部により更新される指令値の少なくとも一方と、指令値演算部が制御周期毎に算出する指令値とをデータセットとして生成する生成部をさらに含んでいてもよい。
この開示によれば、同時に取得された、データ更新部により更新されるデータおよび第1のプログラム実行部により更新される指令値の少なくとも一方と、指令値演算部が算出する指令値とを互いに関連付けて取得できるので、事後的なデータ解析などを効率的に行うことができる。
上述の開示において、制御装置は、制御周期毎に生成されるデータセットを外部出力する出力部をさらに含んでいてもよい。
この開示によれば、制御装置内で同期して収集されたデータセットを外部装置にて効率的に解析できる。
上述の開示において、中間コードは、指令値演算部が制御周期毎に指令値を更新するための関数を含んでいてもよい。
この開示によれば、指令値演算部は、関数に従う演算を行うことで、指令値を算出できるので、制御周期毎の指令値の算出処理を簡素化できる。
上述の開示において、中間コードは、時間と指令値との関係を規定する関数を含んでいてもよい。
この開示によれば、指令値演算部は、指令値を演算するタイミングを示す時間を関数に入力すれば、当該タイミングにおける指令値を算出できるので、指令値の算出に係る処理をより簡素化できる。
上述の開示において、インタプリタは、生成した中間コードをバッファに逐次キューイングし、指令値演算部は、バッファにキューイングされた順に中間コードを読出すようにしてもよい。
上述の開示によれば、第2のプログラムの複雑性や処理速度などに応じて、事前に第2のプログラムを逐次解釈しておくことで、第2のプログラム実行部において指令値を演算できないという事態の発生を防止できる。
上述の開示において、データ更新部、第1のプログラム実行部、および指令値演算部は、高優先タスクとして実行され、インタプリタは、低優先タスクとして実行されてもよい。
この開示によれば、インタプリタは、他の処理を実行する主体に比較して、優先度が低く設定されるので、第2のプログラムを逐次解釈する処理によって、指令値を演算する処理自体が影響を受けることを防止できる。
本開示の別の一例では、制御装置による制御方法が提供される。制御方法は、制御周期毎に入力データおよび出力データを更新するステップと、第1のプログラムの全体を制御周期毎にスキャンして指令値を更新するステップと、逐次解釈される第2のプログラムの少なくとも一部を解釈して中間コードを生成するステップと、生成される中間コードに従って制御周期毎に指令値を算出するステップとを含む。中間コードに従う指令値を算出するステップは、他の処理での利用が可能な態様で、制御周期毎に指令値を出力する。
上述の開示によれば、第1のプログラムに従う指令値および第2のプログラムに従う指令値を制御周期毎に算出することができ、さらに、これらの指令値を容易に二次利用できる。制御周期毎に算出されるそれぞれのプログラムからの指令値を利用または加工することで、より高い制御性能を実現できる。
本開示の一例によれば、制御周期毎に全体をスキャンして指令値を更新する第1のプログラムと、逐次解釈される第2のプログラムとを実行可能な制御装置において、より高い制御性能を実現するための環境を提供できる。
本実施の形態に係る制御装置の適用場面の一例を示す模式図である。 本実施の形態に係る制御システムの全体構成例を示す模式図である。 本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。 本実施の形態に係る制御装置の機能構成例を示す模式図である。 本実施の形態に係る制御装置におけるNCプログラムの実行処理を概念的に示す模式図である。 本実施の形態に係る制御装置における中間コードの生成例を説明するための模式図である。 本実施の形態に係る制御装置におけるプログラムの実行動作例を示すタイムチャートである。 本実施の形態に係る制御装置を含む制御システムの全体構成例を示す模式図である。 図8に示す制御システムにおける制御構造の要部を示す模式図である。 図9に示す制御構造を実現するためのIECプログラムのコード例を示す図である。 図8に示す制御システムの制御装置において実行される処理手順を示すフローチャートである。 本実施の形態に係る制御装置を含む制御システムの全体構成例を示す模式図である。 図12に示す制御システムにおける制御構造の要部を示す模式図である。 図13に示す制御構造を実現するためのIECプログラムのコード例を示す図である。 図12に示す制御システムの制御装置において実行される処理手順を示すフローチャートである。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.適用例>
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御装置100の適用場面の一例を示す模式図である。本実施の形態に係る制御装置100は、任意の制御対象(例えば、製造装置や設備)を制御する。
図1に示すように、制御装置100は、制御周期毎に入力データおよび出力データを更新するデータ更新部50と、少なくともシーケンス命令を含む第1のプログラム62の全体を制御周期毎にスキャンして指令値72を更新する第1のプログラム実行部54と、逐次解釈される第2のプログラムに従って制御周期毎に指令値74を更新する第2のプログラム実行部56とを含む。第2のプログラム実行部56は、第2のプログラムの少なくとも一部を解釈して中間コードを生成するインタプリタ58と、インタプリタ58により生成される中間コードに従って制御周期毎に指令値74を算出する指令値演算部60とを含む。指令値演算部60は、他の処理での利用が可能な態様で、制御周期毎に指令値74を出力する。指令値72および指令値74は、入力データおよび出力データが一時的に格納される共有メモリ52に併せて保持される。
本発明の「第1のプログラム」は、実行毎に全体がスキャンされて、実行毎に1または複数の指令値が算出されるプログラムを包含する。以下の説明においては、このような「第1のプログラム」の一例として、「IECプログラム」を想定する。「IECプログラム」は、典型的には、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131−3に従って記述された1または複数の命令からなるプログラムを包含する。「IECプログラム」には、シーケンス命令および/またはモーション命令を含み得る。「IECプログラム」は、制御周期毎にすべてのプログラムが実行(スキャン)される。「IECプログラム」は、即時性および高速性が要求される制御に好適である。なお、「IECプログラム」としては、国際規格IEC61131−3に従って記述された命令に限らず、PLC(プログラマブルコントローラ)の製造メーカまたはベンダーなどが独自に規定した命令を含むようにしてもよい。
本明細書において、「シーケンス命令」は、基本的には、入力値、出力値、内部値などを算出する1または複数の論理回路により記述される1または複数の命令を包含する用語である。基本的には、1回の制御周期において、「シーケンス命令」は、先頭から最終まで実行され、次の制御周期において、「シーケンス命令」は、先頭から最終までが再度実行される。
本明細書において、「モーション命令」は、サーボモータなどのアクチュエータに対して、位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などの数値を指令として算出するための1または複数の命令を包含する用語である。「モーション命令」についても、1回の制御周期において、ファンクションブロックや数値算出式などにより記述されるモーション命令のプログラム(モーションプログラム)の先頭から最終までが実行される。すなわち、制御周期毎に指令値は算出(更新)されることになる。
本発明の「第2のプログラム」は、逐次解釈される任意のプログラムを包含する。すなわち、「第2のプログラム」は、1行ずつ逐次解釈して実行するインタプリタ方式で実行可能な任意の言語で記述されたプログラムを包含する。以下の説明においては、このような「第2のプログラム」の一例として、CNC(Computer Numerical Control:コンピュータ数値制御)における挙動を記述するプログラム(以下、「NCプログラム」とも称する。)を想定する。但し、このようなNCプログラムに限定されることなく、例えば、ロボットを制御するためのプログラムなどにも適用可能である。一例として、NCプログラムは「G言語」を用いて記述され、ロボットを制御するためのプログラムは、専用のロボット言語を用いて記述されることが多い。
本発明の「中間コード」は、逐次解釈されるプログラム(本来的に、一定周期毎に指令値が更新されるという処理には不向きである)に従って、制御周期毎に指令値を算出するための任意の命令を包含する概念である。すなわち、中間コードは、指令値演算部60が制御周期毎に指令値を算出できるものであれば、どのようなコードであってもよい。典型的には、「中間コード」は、1または複数の命令、あるいは、1または複数の関数を含む。
本発明の「他の処理での利用が可能な態様」とは、更新される指令値が排他的あるいは参照不能といった、二次利用できない態様を除外する趣旨である。すなわち、指令値演算部60がある制御周期において算出した指令値については、制御装置100において実行される任意の処理、プロセス、タスクなどからアクセスして、その値の参照や更新が可能になっている。「他の処理での利用が可能な態様」の実装方法については、公知技術を採用することもできる。
本実施の形態に係る制御装置100においては、第1のプログラム62(すなわち、実行毎に全体がスキャンされて、実行毎に1または複数の指令値が算出されるプログラム)と、第2のプログラム64(すなわち、逐次解釈される任意のプログラム)とを実行させて、それぞれのプログラムに従う指令値を制御周期毎に算出する。第2のプログラム64は、インタプリタ方式で実行されるため、本来的に一定周期毎の指令値を更新することは保証されないが、本実施の形態においては、インタプリタ58により事前に中間コードを生成しておき、この中間コードを利用して、制御周期毎の指令値を算出する。
したがって、制御周期毎に、第1のプログラム62に従う指令値および第2のプログラム64に従う指令値が算出されて、いずれにもアクセス可能になっているので、後述するような、指令値に対する補正処理や、異なるプログラムにより算出される複数の指令値を同期してサンプリングする処理などを容易に実現できる。
このようなデータアクセスの容易性を提供することで、より精度の高い制御動作を実現できる。また、異なるプログラムに従う指令値を同期して収集することで、事後的なデータ解析の精度を高めることができる。
また、本実施の形態に従う制御装置100は、性質の異なる複数種類のプログラムを並行して実行させることができ、従来のように、第1のプログラム62を実行するための装置と、第2のプログラム64を実行するための装置とをそれぞれ個別に配置する必要がない。すなわち、従来は、個別の複数の装置で実現されていたシステムを単一の制御装置100により実現できるので、スペース的およびコスト的なメリットを享受できる。
以下、本発明のより具体的な応用例として、本実施の形態に係る制御装置100のより詳細な構成および処理について説明する。
<B.制御システムの全体構成例>
次に、本実施の形態に係る制御装置を含む制御システム1の全体構成例について説明する。図2は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。図2には、本実施の形態に係る制御装置100を中心とした制御システム1を示す。
制御装置100は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置100は、後述するような制御演算を実行する一種のコンピュータであり、典型的には、PLC(プログラマブルコントローラ)として具現化されてもよい。制御装置100は、フィールドネットワーク2を介して各種のフィールドデバイス500と接続されてもよい。制御装置100は、フィールドネットワーク2などを介して、1または複数のフィールドデバイス500との間でデータを遣り取りする。一般的に「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドネットワーク」と総称する。すなわち、本明細書の「フィールドネットワーク」は、狭義の「フィールドネットワーク」に加えて「フィールドバス」を含み得る概念である。
制御装置100において実行される制御演算は、フィールドデバイス500において収集または生成されたデータ(以下、「入力データ」とも称す。)を収集する処理(入力処理)、フィールドデバイス500に対する指令などのデータ(以下、「出力データ」とも称す。)を生成する処理(演算処理)、生成した出力データを対象のフィールドデバイス500へ送信する処理(出力処理)などを含む。
フィールドネットワーク2は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが知られている。
フィールドネットワーク2には、任意のフィールドデバイス500を接続することができる。フィールドデバイス500は、製造装置や生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報を遣り取りする入出力装置などを含む。
フィールドネットワーク2を介して、制御装置100とフィールドデバイス500との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数100μsecオーダ〜数10msecオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理は、入出力リフレッシュ処理とも称される。
図2に示す構成例においては、フィールドデバイス500は、リモートI/O(Input/Output)装置510と、サーボドライバ520およびサーボモータ522と、CNC加工装置530とを含む。フィールドデバイス500としては、これらに限られることなく、入力データを収集する任意のデバイス(例えば、視覚センサなど)、出力データに従う何らかの作用を与える任意のデバイス(例えば、インバータ装置など)、各種ロボットなどを採用することができる。
リモートI/O装置510は、典型的には、フィールドネットワーク2を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。
リモートI/O装置510には、入力リレーや各種センサ(例えば、アナログセンサ、温度センサ、振動センサなど)などの入力データを収集する装置、および、出力リレー、コンタクタ、サーボドライバ、および、その他任意のアクチュエータなどのフィールドに対して何らかの作用を与える装置が接続される。
サーボドライバ520は、制御装置100からの出力データ(例えば、位置指令や速度指令など)に従って、サーボモータ522を駆動する。
CNC加工装置530は、位置や速度などを指定するプログラムに従って、マシニングセンタなどを制御することで、任意の対象物を加工する。CNC加工装置530は、典型的には、旋盤加工、フライス盤、放電加工などの加工装置を含む。
制御装置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のハードウェア構成例について説明する。
図3は、本実施の形態に係る制御装置100のハードウェア構成例を示すブロック図である。図3を参照して、制御装置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に加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラム(IECプログラム30およびNCプログラム32)が格納される。
上位ネットワークコントローラ110は、上位ネットワーク6を介して、サーバ装置300や表示装置400(図3参照)などとの間のデータの遣り取りを制御する。USBコントローラ112は、USB接続を介してサポート装置200との間のデータの遣り取りを制御する。
メモリカードインターフェイス114は、メモリカード116が着脱可能に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データ(ユーザプログラムやトレースデータなど)を読出すことが可能になっている。
内部バスコントローラ120は、制御装置100に装着されるI/Oユニット122との間のデータの遣り取りを制御する。フィールドネットワークコントローラ130は、フィールドネットワーク2を介したフィールドデバイスとの間のデータの遣り取りを制御する。
図3には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
図3に示す制御システム1においては、制御装置100、サポート装置200および表示装置400がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
<D.制御装置の機能構成例>
次に、本実施の形態に係る制御装置100の機能構成例について説明する。
図4は、本実施の形態に係る制御装置100の機能構成例を示す模式図である。図4を参照して、制御装置100は、プログラム実行に係る機能構成として、IECプログラム実行部140と、NCプログラム実行部150と、共有メモリ160と、入出力インターフェイス処理部162と、上位ネットワークインターフェイス処理部164とを含む。
IECプログラム実行部140は、IECプログラム30(第1のプログラム)の全体を制御周期毎にスキャンして指令値を更新する第1のプログラム実行部に相当する。すなわち、IECプログラム実行部140は、予め定められた制御周期毎にIECプログラム30を実行(スキャン)して1または複数の指令値を更新する。IECプログラム30は、シーケンス命令およびモーション命令を含み得る。シーケンス命令は、入力値、出力値、内部値などを含む1または複数の論理演算を規定する。モーション命令は、サーボモータなどのアクチュエータに対して、位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度といった数値としての指令値の演算手順を規定する。
IECプログラム実行部140は、制御周期毎に、IECプログラム30の全体を実行する。すなわち、1回の制御周期において、IECプログラム実行部140は、IECプログラム30の先頭から最終までを実行して、各制御周期における指令値を更新する。但し、モーション命令は、1つのコマンドによって複数の制御周期に亘って指令値を算出できるものもある。IECプログラム実行部140は、このようなモーション命令を実行するために、モーション指令値演算部142を有している。
モーション指令値演算部142は、制御周期毎に、モーション命令に従って指令値を算出する。
このように、IECプログラム実行部140は、制御周期毎に、当該制御周期における入力データを用いてIECプログラム30を実行して、当該制御周期における指令値を算出する。
NCプログラム実行部150は、逐次解釈されるNCプログラム32(第2のプログラム)に従って制御周期毎に指令値を更新する第2のプログラム実行部に相当する。より具体的には、NCプログラム実行部150は、NCプログラム32をインタプリタ方式で実行する。但し、NCプログラム実行部150による指令値の算出(更新)は、制御周期毎に繰返し実行される。このように、NCプログラム実行部150は、IECプログラム実行部140による指令値の算出に同期して、NCプログラム32に従う指令値を算出する。このような制御周期毎の指令値の算出を実現するために、NCプログラム実行部150は、インタプリタ152と、中間コードバッファ154と、NC指令値演算部158とを含む。
インタプリタ152は、NCプログラム32の少なくとも一部を解釈して、中間コード156を生成する。すなわち、インタプリタ152は、NCプログラム32を逐次解釈して中間コード156を生成するとともに、生成した中間コード156を中間コードバッファ154に順次格納する。インタプリタ152は、NCプログラム32から中間コード156の生成をある程度事前に行う。そのため、中間コードバッファ154には、複数の中間コード156が格納されることもある。本実施の形態において、インタプリタ152は、指令値を算出するための軌道を生成するため、「プランナー」と称されることもある。
NC指令値演算部158は、インタプリタ152が事前に生成した中間コード156に従って、制御周期毎に指令値を算出する。一般的に、NCプログラムに記述される命令(コード)は、逐次解釈されるために、演算周期毎に指令値を算出できる保証はないが、中間コード156を利用することで、制御周期毎の指令値の算出を実現できる。
インタプリタ152は、生成した中間コード156を中間コードバッファ154に逐次キューイングし、NC指令値演算部158は、中間コードバッファ154にキューイングされた順に中間コード156を読出す。
共有メモリ160は、制御演算に用いる内部変数などを格納する記憶領域を提供し、IECプログラム実行部140およびNCプログラム実行部150のいずれからもアクセス可能になっている。すなわち、共有メモリ160には、IECプログラム実行部140により制御周期毎に更新される1または複数の指令値、および、NCプログラム実行部150により制御周期毎に更新される1または複数の指令値が格納される。共有メモリ160は、NCプログラム実行部150(NC指令値演算部158)が制御周期毎に算出する指令値をIECプログラム実行部140から参照するために用いられ、あるいは、その逆の参照にも用いられる。
より具体的には、NCプログラム実行部150による処理結果の一部または全部が共有メモリ160に格納され、IECプログラム実行部140は、共有メモリ160に格納されたデータを参照することができる。一方、IECプログラム実行部140による処理結果の一部または全部が共有メモリ160に格納され、NCプログラム実行部150は、共有メモリ160に格納されたデータを参照することができる。このように、IECプログラム実行部140およびNCプログラム実行部150(NC指令値演算部158)は、他の処理での利用が可能な態様で、制御周期毎に指令値を出力する。なお、共有メモリ160にデータを格納する際には、構造体変数を採用してもよい。
入出力インターフェイス処理部162は、制御周期毎に入力データおよび出力データを更新するデータ更新部に相当する。すなわち、入出力インターフェイス処理部162は、入出力リフレッシュ処理を実現するための機能構成であり、内部バスコントローラ120を介して接続されるI/Oユニット122、および/または、フィールドネットワークコントローラ130を介して接続されるフィールドデバイス500との間で入力データおよび出力データを遣り取りする。このような遣り取りされるデータは、数100μsecオーダ〜数10msecオーダのごく短い周期(一定周期)で更新されることになる。
より具体的には、入出力インターフェイス処理部162は、IECプログラム実行部140より算出された1または複数の指令値(基本的には、論理値)、IECプログラム実行部140のモーション指令値演算部142により算出された1または複数の指令値(基本的には、数値)、ならびに、NCプログラム実行部150のNC指令値演算部158により算出された1または複数の指令値(基本的には、数値)を、制御周期毎にフィールド側へ出力する。また、入出力インターフェイス処理部162は、I/Oユニット122により収集された入力データ、および、フィールドデバイス500により収集された入力データを、制御周期毎に取得する。
制御装置100は、上位ネットワーク6を介して接続されているサーバ装置300などから、生産の開始/終了といった指示を受ける。サーバ装置300は、レシピ情報(生産に適したパラメータなどの情報)などを制御装置100に送信するようにしてもよいし、NCプログラム自体を制御装置100にダウンロードするようにしてもよい。
上位ネットワークインターフェイス処理部164は、IECプログラム実行部140およびNCプログラム実行部150と、上位ネットワークコントローラ110を介して接続されている装置(サーバ装置300および表示装置400)との間のデータの遣り取りを仲介する。
図4に示す構成においては、説明の便宜上、NCプログラム実行部150が1つだけ配置される構成例を示すが、これに限らず、NCプログラム実行部150を複数配置してもよい。この場合には、NCプログラム実行部150の各々が、互いに独立してNCプログラムを解釈および実行することになる。
上述の説明においては、制御周期毎に、IECプログラム実行部140およびNCプログラム実行部150が指令値を算出することに言及したが、これに加えて、制御周期より長い周期で実行されるプログラムも存在し得る。このようなプログラムは、例えば、システムサービスなどと称される。このようなシステムサービスは、いずれのタスクも実行されていない空時間に実行される。但し、入力データおよび出力データの更新は、制御周期毎に繰返し実行される入出力リフレッシュ処理のタイミングで実行される。典型的には、システムサービスについての入力データおよび出力データの更新は、制御周期の整数倍毎に実行されてもよい。
<E.中間コード>
次に、NCプログラム実行部150のインタプリタ152がNCプログラム32を解釈して生成される中間コードの一例について説明する。
図5は、本実施の形態に係る制御装置100におけるNCプログラム32の実行処理を概念的に示す模式図である。図5を参照して、NCプログラム32は、NCプログラム実行部150において逐次解釈された上で、制御周期毎の指令値が算出される。
一般的に、NCプログラム32は、インタプリタ方式で逐次解釈されるコードを含んでおり、各コードを逐次解釈した場合に必要となる時間は、各コードが記述する内容に応じて変化する。すなわち、インタプリタ方式で逐次解釈されるため、制御周期毎に指令値を算出することは容易ではない。
そこで、本実施の形態に係る制御装置100においては、NCプログラム実行部150のインタプリタ152が、NCプログラム32に記述された1または複数のコードを解釈し、その解釈された内容に基づいて、制御周期毎に指令値を算出するための中間コード156を生成する。中間コード156は、NCプログラム32に記述された1または複数のコード毎に生成されるので、通常は、1つのNCプログラム32から複数の中間コード156が生成される。
生成される中間コード156は、NCプログラム実行部150の中間コードバッファ154に順次キューイングされる。
中間コード156の各々においては、時間に関する変数を入力として、指令値を算出できる関数が規定されていてもよい。すなわち、中間コード156は、NCプログラム実行部150のNC指令値演算部158が制御周期毎に指令値を更新するための関数であってもよい。このような関数を用いることで、NC指令値演算部158は、生成される中間コード156を順次参照して、各制御周期における指令値を算出できる。
より具体的には、中間コード156は、時間と指令値との関係を規定する関数であってもよい。中間コード156を規定するための時間に関する変数としては、時刻、ある基準タイミングからの経過時間、制御周期の累積サイクル数などを用いることができる。
例えば、1番目の中間コード1が制御周期の10倍分の期間に亘って指令値を規定するものであるとすると、NCプログラム実行部150のNC指令値演算部158は、中間コード1をキューイングして、10制御周期分の期間に亘って指令値を周期的に算出する。同様に、他の中間コード2および中間コード3についても、基本的には、複数の制御周期に亘って指令値を算出できるものとなる。
したがって、NCプログラム実行部150のインタプリタ152によるNCプログラム32から中間コードの生成処理が、NCプログラム実行部150のNC指令値演算部158による指令値の演算処理に比較して、十分に先だって実行されれば、IECプログラム30に従う処理と同期して、NCプログラム32に従う処理を同期実行できる。
図6は、本実施の形態に係る制御装置100における中間コードの生成例を説明するための模式図である。図6(A)を参照して、NCプログラム実行部150のインタプリタ152がNCプログラム32を逐次実行すると、NCプログラム32に含まれる各命令が解釈される((1)プログラム解釈)。この命令の解釈によって、規定された軌道が内部的に生成される((2)軌道生成)。最終的に、インタプリタ152は、生成した軌道を所定の区間に分割した上で、各区間の軌道を規定する1または複数の関数(中間コード)を生成する((3)中間コード生成)。
なお、複数の区間を共通の中間コードで規定してもよいし、1つの区間をさらに分割してそれぞれの共通コードを生成してもよい。すなわち、NCプログラム32の命令または当該命令によって規定される軌道の区間と、生成される中間コードの数とを一致させる必要はなく、任意に生成すればよい。また、中間コード156の出力形態についても、要求される制御周期の時間幅などを考慮して、適宜設計されてもよい。
図6(A)に示すように、中間コード156の一例としては、時間と指令値との関係を規定する関数であってもよい。図6(A)に示す例では、内部的に生成された軌道は、直線の組み合わせで規定できるので、一例として、直線区間毎(区間1〜区間3)の軌道を時間と速度との関係を示す関数F1(t),F2(t),F3(t)が出力される。
図6(B)に示すように、NCプログラム実行部150のNC指令値演算部158が、制御周期毎に、生成された中間コード156に従って指令値を算出することで、制御周期毎に指令値が算出される。すなわち、各区間に対応する関数に、各制御周期の時刻を入力することで、当該時刻における指令値を一意に決定できる。
上述の図5および図6には、一例として、CNCで用いられるG言語により記述されたコードの一例を示すが、これに限らず、任意のインタプリタ方式で実行されるプログラムであれば、どのような言語を用いてもよい。また、処理対象の言語形式に応じて、生成される中間コードの形式を異ならせてもよい。
<F.プログラムの実行動作例>
次に、本実施の形態に係る制御装置100におけるプログラムの実行動作例について説明する。
図7は、本実施の形態に係る制御装置100におけるプログラムの実行動作例を示すタイムチャートである。図7には、一例として、優先度別に複数のタスクが設定され、各タスクがそれぞれの優先度に応じてプロセッサ102のリソースを共有する例を示す。
図7に示す例では、高優先タスクとして、(1)入出力インターフェイス処理部162により実行される入出力リフレッシュ処理20と、(2)IECプログラム実行部140によるIECプログラム30の実行と、(3)NCプログラム実行部150のNC指令値演算部158による指令値の算出処理と、(4)IECプログラム実行部140のモーション指令値演算部142による指令値の算出処理との4つの処理が設定されている。
また、低優先タスクとして、NCプログラム実行部150のインタプリタ152によるNCプログラム32の逐次解釈が設定されているとする。
高優先タスクは、予め定められた制御周期T1毎に繰返し実行される。低優先タスクは、高優先タスクが実行されていない期間に適宜実行される。すなわち、制御周期毎に、高優先タスクの実行時間が割当てられ、高優先タスクの実行時間以外の時間において、低優先タスクが実行される。
まず、高優先タスクについて説明すると、各制御周期が到来すると、まず、入出力リフレッシュ処理20が実行された後、IECプログラム実行部140は、IECプログラム30の全体を実行(スキャン)して、シーケンス命令に従う1または複数の指令値を算出する。併せて、NCプログラム実行部150のNC指令値演算部158は、中間コードバッファ154から中間コード156を読出して(デキューして)、当該制御周期における指令値を算出する。また、IECプログラム実行部140のモーション指令値演算部142は、IECプログラム30に含まれるモーション命令に従って、モーション命令についての1または複数の指令値を算出する。以下、同様の処理が制御周期毎に繰返される。
なお、NC指令値演算部158が中間コードバッファ154から中間コード156を読出すタイミング(デキューするタイミング)は、各制御周期でなくともよい。これは、読出された中間コードが複数の制御周期に亘って指令値を算出できるだけの命令を含むことが多いからである。
このように、ある制御周期における高優先タスクの実行が完了すると、シーケンス命令に従う指令値、モーション命令に従う指令値、制御アプリケーションについての指令値のセットが用意される。これらの指令値は、基本的には、次の制御周期が到来すると、フィールド側に反映される。すなわち、IECプログラム実行部140およびNCプログラム実行部150は、同一の制御周期で入力データに応じた指令値を算出するので、入力に同期した出力を実現できる。
図7には、説明の便宜上、IECプログラム30の実行、NC指令値演算部158による指令値の算出処理、および、モーション指令値演算部142による指令値の算出処理が順番に実行される例を示すが、実行順番については適宜変更してもよいし、各処理をさらに細分化して交互に実行するようにしてもよい。すなわち、先行の入出力リフレッシュ処理20の実行完了後から次の入出力リフレッシュ処理20の実行開始前までの間に、指令値を含む外部データとして出力すべきデータが算出できていればよい。
一方、低優先タスクについて説明すると、NCプログラム実行部150のインタプリタ152は、NCプログラム32を逐次解釈する。すなわち、NCプログラム実行部150のインタプリタ152は、NCプログラム32の読込みおよび解析を低優先で実行する。インタプリタ152がNCプログラム32を解析処理して生成された中間コードは、逐次、中間コードバッファ154にキューイング(エンキュー)される。中間コードバッファ154にキューイングされた中間コードは、NCプログラム実行部150のNC指令値演算部158により都度参照されて、指令値の生成に用いられる。
NCプログラム実行部150のインタプリタ152は、高優先タスクの演算周期である制御周期の整数倍分の中間コードを予めキューイングしておくことで、NCプログラム実行部150のNC指令値演算部158による制御周期毎の指令値の算出を実現できる。
NCプログラム実行部150のインタプリタ152は、NCプログラム32を事前に解析処理することで、NCプログラム実行部150のNC指令値演算部158が指令値の演算に参照する中間コードを、十分余分に生成しておくようにしてもよい。
NCプログラム実行部150のインタプリタ152は、予め定められたインタプリタ制御周期T2(基本的には、制御周期T1の整数倍)毎に、IECプログラム実行部140との間でデータ同期処理を行う。そのため、インタプリタ152は、各プログラム実行動作において、NCプログラム32に含まれるコードのうち、インタプリタ制御周期T2内に処理可能なコードだけを読込んで解釈する。
図7に示すように、高優先タスクとして、IECプログラム実行部140によるIECプログラム30の実行と、NCプログラム実行部150のNC指令値演算部158による指令値の算出処理と、IECプログラム実行部140のモーション指令値演算部142による指令値の算出処理とは、いずれも制御周期毎に実行されるため、互いに演算結果を各制御周期で反映することもできる。
例えば、ある制御周期において、IECプログラム30の実行により算出される指令値を、同一の制御周期においてNC指令値演算部158が算出する指令値に反映することができる。また、ある制御周期においてIECプログラム30の実行により算出される指令値と、同一の制御周期においてNC指令値演算部158が算出する指令値とを同一のデータセットとして、外部のサーバ装置300などへ送信することもできる。
このように、本実施の形態に係る制御装置100においては、繰返し実行(スキャン)されるIECプログラム30および逐次解釈されるNCプログラム32のいずれについても、制御周期毎に指令値を算出する処理が実行されるので、このような性質の異なる2つのプログラム間で互いに演算結果を参照し合うといった処理や、それぞれのプログラムが出力する演算結果をまとめるといった処理を容易に行うことができる。
以下、図7に示すような、本実施の形態に係る制御装置100におけるプログラムの実行動作を利用した応用例のいくつかについて説明する。
<G.応用例その1>
次に、本実施の形態に係る制御装置100における応用例の一つとして、NCプログラム32に従って算出される指令値に対して、動的な補正を行う処理例について説明する。
(g1:制御システムの全体構成例)
図8は、本実施の形態に係る制御装置100を含む制御システム1Aの全体構成例を示す模式図である。図8を参照して、制御装置100は、フィールドネットワーク2を介して、リモートI/O装置510と、CNC加工装置540と、視覚センサ550と接続されている。これらの装置は、フィールドデバイス500の一例である。
CNC加工装置540は、コンベアなどによって搬送されるワークに対して、任意の加工を行う装置であり、制御装置100において制御周期毎に算出される指令値に従って動作する。
視覚センサ550は、CNC加工装置540の加工部材(例えば、バイト)を視野範囲内に含むように配置されており、例えば、画像認識処理によって、加工部材の位置あるいは変位を検出できる。視覚センサ550により検出される位置あるいは変位を示す情報は、制御装置100にてアクセス可能である。
例えば、加工中にCNC加工装置540の加工部材の位置ずれが生じた場合などであっても、加工部材を適切な位置に配置したいというニーズがある。一般的に、CNC加工装置540は、NCプログラム32によって予め規定された軌道に沿って動作するように制御される。そのため、動作中に生じ得る外乱に対する補正を行うことは容易ではない。
これに対して、本実施の形態に係る制御装置100を含む制御システム1Aにおいては、CNC加工装置540に生じ得る外乱などに対して、制御周期毎での動的な補正が可能である。すなわち、CNC加工装置540の加工部材の位置ずれなどを適宜補正できる。
(g2:制御構造)
図9は、図8に示す制御システム1Aにおける制御構造の要部を示す模式図である。図9を参照して、NC指令値演算部158は、制御周期毎に指令値を出力するとともに、視覚センサ550は、制御周期毎に補正量を出力する。なお、視覚センサ550自身が補正量を算出するのではなく、制御装置100において実行される演算処理によって補正量を算出するようにしてもよい。
加算部170において、NC指令値演算部158からの指令値に視覚センサ550からの補正量が加算されて、補正後の指令値が算出される。この補正後の指令値がCNC加工装置540へ与えられる。
このように、制御装置100においては、NC指令値演算部158が制御周期毎に算出する指令値と、入出力リフレッシュ処理により更新されるデータ(入力データ/出力データ)とに基づく演算処理が実行可能になっている。図9に示すように、補正処理においては、NC指令値演算部158が制御周期毎に算出する指令値に対する数値処理が採用されるが、これに限らず、論理的処理や条件判断処理などを適用することもできる。
上述したように、NCプログラム実行部150のNC指令値演算部158による指令値の算出は制御周期毎に繰返されるので、図9に示す指令値の補正処理は、制御周期毎に実行することができる。すなわち、CNC加工装置540へ与える指令値を制御周期毎に動的に補正することができる。
このような制御周期毎の動的な補正によって、より正確な加工処理などを実現できる。
なお、上述の説明においては、視覚センサ550が出力する補正量を加算する処理について例示したが、これに限られることなく、任意の補正量を用いて、任意の補正処理を適用できる。
(g3:プログラムコード例)
図9に示す制御構造については、IECプログラム実行部140において実行されるIECプログラム30と、NCプログラム実行部150のNC指令値演算部158で実行される付加処理との組み合わせによって実現してもよいし、IECプログラム30にまとめて記述してもよい。一例として、IECプログラム30にまとめて記述する場合について説明する。
図10は、図9に示す制御構造を実現するためのIECプログラムのコード例を示す図である。図10を参照して、IECプログラムコード600は、視覚センサ550から補正量を取得するためのファンクションブロック610と、NCプログラム実行部150にNCプログラム32を実行させるためのファンクションブロック620と、2つの入力を加算するファンクションブロック630とを含む。
ファンクションブロック610は、何らかの接点612(IN01)を実行条件として規定されており、接点612が「オン」に駆動されることで、視覚センサ550から取得した補正量は変数616(Res1)に格納される。ファンクションブロック610に関連付けられているコイル614(C1)には、ファンクションブロック610での処理の実行状態を示す値が格納される。
ファンクションブロック620は、何らかの接点622(IN02)を実行条件として規定されており、接点622が「オン」に駆動されることで、NCプログラム実行部150でのNCプログラム32の実行が指示される。NCプログラム実行部150のNC指令値演算部158により制御周期毎に算出される指令値は、ファンクションブロック620の出力ノードに関連付けられている変数628(Res2)に格納される。
ファンクションブロック620に関連付けられているコイル624(C2)には、ファンクションブロック620での処理の実行状態を示す値が格納される。ファンクションブロック620に関連付けられている変数626(Num)は、実行すべきNCプログラム32を特定する。すなわち、変数626に格納される数値または文字に従って、NC指令値演算部158が実行すべきNCプログラム32が特定される。変数626に格納される数値または文字を適切な条件に従って更新または切換えることで、状況に応じた加工処理などを実現できる。
ファンクションブロック630は、第1入力ノードに関連付けられている変数616(Res1)と、第2入力ノードに関連付けられている変数628(Res2)とを合算して、最終的な補正後の指令値632(Our_Val01)として出力する。
上述の図10に示すIECプログラムコード600は、制御周期毎に全体が実行(スキャン)されることで、図9に示すような位置指令の制御周期毎の補正を実現できる。なお、IECプログラムコード600のファンクションブロック620が実行されると、NCプログラム実行部150のNC指令値演算部158による指令値の算出を待って、後続の命令の実行を行うようにしてもよい。
(g4:処理手順)
図11は、図8に示す制御システム1Aの制御装置100において実行される処理手順を示すフローチャートである。図11には、高優先タスクおよび低優先タスクの実行をそれぞれ示す。
図11を参照して、高優先タスクに関して、制御周期が到来する(ステップS100においてYES)と、入出力インターフェイス処理部162が入出力リフレッシュ処理を実行する(ステップS102)。これによって、直前の制御周期において算出された指令値がアクチュエータなどへ出力されるとともに、フィールドから入力データが取得される。
IECプログラム実行部140は、IECプログラム30の全体をスキャンすることで、今回の制御周期における1または複数の指令値を算出する(ステップS104)。すなわち、IECプログラム30のシーケンス命令に従う指令値が内部的に算出される。
NCプログラム実行部150のNC指令値演算部158は、指令値を算出するために必要な中間コードが有効に読込まれているか否かを判断する(ステップS106)。中間コードが有効に読込まれていなければ(ステップS106においてNO)、NC指令値演算部158は、中間コードバッファ154から中間コードを読込む(ステップS108)。中間コードが有効に読込まれていれば(ステップS106においてYES)、ステップS108の処理はスキップされる。
NCプログラム実行部150のNC指令値演算部158は、中間コードに従って、今回の制御周期における指令値を算出する(ステップS110)。さらに、IECプログラム実行部140は、算出された指令値に対して今回の制御周期において取得された補正量を加算して、補正後の指令値を算出する(ステップS112)。なお、ステップS112の処理は、NC指令値演算部158により実行されてもよい。このようにして、NCプログラム32に従う指令値が内部的に算出される。
IECプログラム実行部140のモーション指令値演算部142は、IECプログラム30に含まれるモーション命令に従って、今回の制御周期における指令値を算出する(ステップS114)。
なお、ステップS106〜S112の処理は、ステップS104におけるIECプログラム30の実行途中に割込み実行されることもある。
以上の処理により、今回の制御周期における指令値が演算される。そして、ステップS100以下の処理が繰返される。すなわち、次の制御周期が到来すると、ステップS104,S112,S114において算出される指令値がフィードへ出力される。なお、ステップS112の後、次の制御周期が到来するまでの期間は、低優先タスクが実行されることになる。
一方、低優先タスクに関して、制御周期が到来する(ステップS200においてYES)と、今回の制御周期がインタプリタ制御周期T2と一致するか否かが判断される(ステップS202)。今回の制御周期がインタプリタ制御周期T2と一致すれば(ステップS202においてYES)、NCプログラム実行部150のインタプリタ152は、IECプログラム実行部140との間でデータ同期が実行される(ステップS204)。そして、NCプログラム実行部150のインタプリタ152は、NCプログラム32のうち、今回のインタプリタ制御周期T2内において実行可能な範囲のコードを読込む(ステップS206)。
今回の制御周期がインタプリタ制御周期T2と一致しなければ(ステップS202においてNO)、ステップS204およびS206の処理はスキップされる。
低優先タスクに対してプログラムの実行時間が割当てられている期間において、NCプログラム実行部150のインタプリタ152は、ステップS206において読込んだコードを解釈し(ステップS208)、何らかの中間コードが生成されると(ステップS210においてYES)、生成された中間コードを中間コードバッファ154に格納する(ステップS212)。そして、ステップS200以下の処理が繰返される。
すなわち、インタプリタ制御周期T2内においては、低優先タスクに対するプログラムの実行時間が割当てられている期間において、ステップS208〜S212の処理が繰返される。
(g5:利点)
本実施の形態によれば、逐次解釈されるNCプログラム32に従って指令値を生成する処理において、制御装置100の制御周期毎に取得される補正量を用いて、NCプログラム32に従って算出される指令値を補正することができる。
NCプログラムを逐次解釈して実行する工作機械と、シーケンスプログラムを定周期実行するPLCとを組み合わせたシステムにおいては、工作機械が指令値を算出する周期およびタイミングは、PLCが入出力リフレッシュ処理を実行する周期およびタイミングとは一致しておらず、工作機械が算出する指令値に対して、補正値をリアルタイムで反映するような処理はできなかった。
これに対して、本実施の形態に係る制御装置100においては、シーケンス命令およびモーション命令を含むIECプログラムを制御周期毎に実行するとともに、NCプログラムについても、中間コードを利用して、制御周期毎に指令値を算出する。このように、シーケンス命令およびモーション命令だけではなく、NCプログラムに従う指令値の算出を制御周期毎に行うことができるので、制御周期毎に算出される指令値をさらに補正することもできる。
上述したように、カメラなどで現在の指令軌跡を観測しながら、制御装置100の制御周期毎に収集される入力データを用いて、指令値をリアルタイムで補正できるので、工作機械の加工精度を高めることができる。
<H.応用例その2>
次に、本実施の形態に係る制御装置100における応用例の別の一つとして、IECプログラム30およびNCプログラム32に従って算出される指令値ならびに各種の入出力データを収集する処理例について説明する。
(h1:制御システムの全体構成例)
図12は、本実施の形態に係る制御装置100を含む制御システム1Bの全体構成例を示す模式図である。図12を参照して、制御装置100は、フィールドネットワーク2を介して、リモートI/O装置510と、サーボドライバ520およびサーボモータ522と、CNC加工装置540と接続されている。これらの装置は、フィールドデバイス500の一例である。
リモートI/O装置510は、フィールドから入力データを取得するとともに、制御装置100において算出された指令値をフィールドへ出力する。
サーボドライバ520は、制御装置100において算出された指令値(例えば、位置指令や速度指令など)に従って、サーボモータ522を駆動する。
CNC加工装置540は、コンベアなどによって搬送されるワークに対して、任意の加工を行う装置であり、制御装置100において制御周期毎に算出される指令値に従って動作する。
このような制御システム1Bにおいて、生産管理、トレーサビリティ管理、異常検知、異常原因解析、機械学習などを利用した各種解析といった様々な用途で、制御装置100が管理するデータを収集したいというニーズが存在する。このような場合、制御装置100において周期的または所定イベント毎に収集したデータを上位のサーバ装置300へ送信する、制御装置100に内蔵または装着される任意の記憶媒体に格納する、サポート装置などを利用して内部データを取得する、といった形態を採用できる。
いずれの場合であっても、周期的または所定イベント毎にデータを収集する必要があり、また、対象データの収集タイミングを一致させることが重要である。
本実施の形態に係る制御装置100を含む制御システム1Aにおいては、シーケンス命令およびモーション命令に従う指令値、ならびに、NCプログラムに従う指令値は、いずれも制御周期毎に同期して算出され、また、制御周期毎に入力データも更新される。そのため、入力データおよび出力データ(指令値)のいずれについても、制御周期毎に収集することが可能であり、このように収集されたデータ群を用いることで、事後的な解析を容易化できる。
(h2:制御構造)
図13は、図12に示す制御システム1Bにおける制御構造の要部を示す模式図である。図14を参照して、シーケンス演算部182およびモーション演算部184の各々は、入力データおよび出力データ(指令値)の少なくとも一方を制御周期毎に出力する。また、NC指令値演算部186は、算出した指令値を制御周期毎に出力する。
データ収集部180は、シーケンス演算部182、モーション演算部184およびNC指令値演算部186からそれぞれ出力されるデータを制御周期毎に収集し、まとめたデータを上位のサーバ装置300などへ送信する。
このように、制御装置100においては、入出力リフレッシュ処理により更新されるデータ(入力データ/出力データ)およびIECプログラム実行部140により更新される指令値の少なくとも一方と、NC指令値演算部158が制御周期毎に算出する指令値とをデータセットとして生成することが可能になっている。また、データ収集部180は、制御周期毎に生成されるデータセットを外部出力する出力部として機能する。
なお、上位のサーバ装置300へのデータ送信は、制御周期毎に実行する必要はなく、複数の制御周期においてそれぞれ収集されたデータをまとめて、制御周期より長い周期毎に送信するようにしてもよい。この場合には、データを送信するタスクには、制御周期毎に実行されるタスクに比較してより低い優先度を設定するようにしてもよい。このような優先度の区別によって、制御周期毎に実行される処理に対する影響を与えることなく、高精度な管理を可能にするデータを収集および送信できる。
このような異なる制御演算に用いられるデータを同期して収集することで、事後的な解析を容易化できる。
(h3:プログラムコード例)
図13に示す制御構造については、IECプログラム実行部140において実行されるIECプログラム30と、NCプログラム実行部150のNC指令値演算部158で実行される付加処理との組み合わせによって実現してもよいし、IECプログラム30にまとめて記述してもよい。一例として、IECプログラム30にまとめて記述する場合について説明する。
図14は、図13に示す制御構造を実現するためのIECプログラムのコード例を示す図である。図14を参照して、IECプログラムコード650は、シーケンス命令と、モーション命令と、NCプログラムに従う指令値の算出命令とを含む。
より具体的には、IECプログラムコード650は、コイル658(C1)を「オン」または「オフ」するためのシーケンスロジックを含む。コイル658は、接点652(IN01)と接点654(IN02)との論理積と、接点656(IN03)との論理和によって駆動される。
モーション命令を規定するファンクションブロック660は、何らかの接点662(IN04)を実行条件として規定されており、接点662が「オン」に駆動されることで、予め規定されたモーション命令を実行し、その実行により算出される指令値は、2つの変数666,668(AXIS1,AXIS2)に格納される。ファンクションブロック660に関連付けられているコイル664(C2)には、ファンクションブロック660での処理の実行状態を示す値が格納される。
ファンクションブロック670は、何らかの接点672(IN05)を実行条件として規定されており、接点672が「オン」に駆動されることで、NCプログラム実行部150でのNCプログラム32の実行が指示される。NCプログラム実行部150のNC指令値演算部158により制御周期毎に算出される指令値は、ファンクションブロック670の出力ノードに関連付けられている変数678(Res1)に格納される。
ファンクションブロック670に関連付けられているコイル674(C3)には、ファンクションブロック670での処理の実行状態を示す値が格納される。ファンクションブロック670に関連付けられている変数676(Num)は、実行すべきNCプログラム32を特定する。すなわち、変数676に格納される数値または文字に従って、NC指令値演算部158が実行すべきNCプログラム32が特定される。変数676に格納される数値または文字を適切な条件に従って更新または切換えることで、状況に応じた加工処理などを実現できる。
ファンクションブロック680は、何らかの接点682(IN06)を実行条件として規定されており、接点682が「オン」に駆動されることで、入力変数群684として規定されている各変数値を収集して、データベースとして機能するサーバ装置300などへ、その収集したデータを送信する。
上述の図14に示すIECプログラムコード650は、制御周期毎に全体が実行(スキャン)されることで、図13に示すような位置指令の制御周期毎の補正を実現できる。なお、IECプログラムコード650のファンクションブロック670が実行されると、NCプログラム実行部150のNC指令値演算部158による指令値の算出を待って、後続の命令の実行を行うようにしてもよい。
(h4:処理手順)
図15は、図12に示す制御システム1Bの制御装置100において実行される処理手順を示すフローチャートである。図15には、高優先タスクおよび低優先タスクの実行をそれぞれ示す。図15に示す処理のうち、図11に示す処理と実質的に同一の処理については、図11と同じステップ番号を付与している。
図15を参照して、高優先タスクに関して、制御周期が到来する(ステップS100においてYES)と、入出力インターフェイス処理部162が入出力リフレッシュ処理を実行する(ステップS102)。これによって、直前の制御周期において算出された指令値がアクチュエータなどへ出力されるとともに、フィールドから入力データが取得される。
IECプログラム実行部140は、IECプログラム30の全体をスキャンすることで、今回の制御周期における1または複数の指令値を算出する(ステップS104)。すなわち、IECプログラム30のシーケンス命令に従う指令値が内部的に算出される。
NCプログラム実行部150のNC指令値演算部158は、指令値を算出するために必要な中間コードが有効に読込まれているか否かを判断する(ステップS106)。中間コードが有効に読込まれていなければ(ステップS106においてNO)、NC指令値演算部158は、中間コードバッファ154から中間コードを読込む(ステップS108)。中間コードが有効に読込まれていれば(ステップS106においてYES)、ステップS108の処理はスキップされる。
IECプログラム実行部140のモーション指令値演算部142は、IECプログラム30に含まれるモーション命令に従って、今回の制御周期における指令値を算出する(ステップS114)。
NCプログラム実行部150のNC指令値演算部158は、中間コードに従って、今回の制御周期における指令値を算出する(ステップS110)。
なお、ステップS106〜S114の処理は、ステップS104におけるIECプログラム30の実行途中に割込み実行されることもある。
さらに、IECプログラム実行部140は、指定された変数値に対応するデータを収集する(ステップS120)。なお、ステップS120において収集されたデータは、同一の制御周期において送信されてもよいし、一旦キューイングされた上で、別のタスク(より低い優先度が設定されたタスク)にて外部へ送信されるようにしてもよい。
以上の処理により、今回の制御周期における指令値が演算される。そして、ステップS100以下の処理が繰返される。なお、ステップS120の後、次の制御周期が到来するまでの期間は、低優先タスクが実行されることになる。
一方、低優先タスクに関しては、図11に示す対応するステップの処理と同様であるので、詳細な説明は繰返さない。
(h5:利点)
本実施の形態によれば、制御周期毎に更新される入力データおよび制御周期毎に算出される指令値を含む出力データのうち1または複数を制御周期毎に同期して収集できる。また、このように収集されるデータを上位のサーバ装置などへ送信することもできる。なお、データの送信は、より低い優先度が設定されたタスクによって実行される。
このように、本実施の形態によれば、NCプログラム32に従って制御される工作機械に関するデータと、制御装置100によって直接制御されるフィールドデバイスに関するデータを同期して収集することができる。
NCプログラムを逐次解釈して実行する工作機械と、シーケンスプログラムを定周期実行するPLCとを組み合わせたシステムにおいては、それぞれの装置において収集されるデータを別々に取得せざるを得ず、また、データの収集タイミングも一致していないので、データの成形および加工に必要以上の手間をようしていた。また、データの収集間隔も装置によって異なる場合が多く、完全に同期したデータを取得することが難しかった。その結果、取得したデータの活用範囲やその解析の効果が限られており、予兆保全等に利用することが難しかった。
これに対して、本実施の形態に係る制御装置100においては、シーケンス処理およびモーション処理に関するデータだけではなく、NCプログラム32に従って算出される指令値などについても、制御周期毎に同期して収集できる。そして、これらの収集されるデータは、上位のサーバ装置および他の外部装置へ出力できる。
このように、本実施の形態に係る制御装置100を用いることで、工作機械を含む製造ライン全体のデータを1つの装置で収集できるようになる。また、このような同期されたデータを利用することで、工作機械の工具寿命、予兆保全、加工物の品質分析といった緻密なデータ解析が可能となる。
また、制御装置100は必要なデータのすべてを有しているので、例えば、上位のサーバ装置へ送信するデータフォーマットを容易に生産ライン毎に固有なものとすることができる。この結果、上位側のサーバ装置でのデータ管理を容易化できる。
<I.変形例>
上述の説明においては、IECプログラム30とNCプログラム32とを実行する制御装置100について説明したが、インタプリタ方式で記述されたプログラムであれば、どのようなプログラムについても同様に適用できる。
<J.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
制御対象を制御するための制御装置(100)であって、
制御周期毎に入力データおよび出力データを更新するデータ更新部(50;162)と、
第1のプログラム(62;30)の全体を制御周期毎にスキャンして指令値(62)を更新する第1のプログラム実行部(54;140)と、
逐次解釈される第2のプログラム(64;32)に従って制御周期毎に指令値(64)を更新する第2のプログラム実行部(56;150)とを備え、
前記第2のプログラム実行部は、
前記第2のプログラムの少なくとも一部を解釈して中間コードを生成するインタプリタ(58;152)と、
前記インタプリタにより生成される中間コードに従って制御周期毎に指令値(64)を算出する指令値演算部(54;140)とを含み、
前記指令値演算部(54;140)は、他の処理での利用が可能な態様で、制御周期毎に指令値を出力する、制御装置。
[構成2]
前記指令値演算部が制御周期毎に算出する指令値を前記第1のプログラム実行部から参照するための共有メモリ(52;160)をさらに備える、構成1に記載の制御装置。
[構成3]
前記指令値演算部が制御周期毎に算出する指令値と、前記データ更新部により更新されるデータとに基づく演算処理を実行する実行部(140;150;600)をさらに備える、構成1または2に記載の制御装置。
[構成4]
前記演算処理は、前記指令値演算部が制御周期毎に算出する指令値に対する数値処理を含む、構成3に記載の制御装置。
[構成5]
前記データ更新部により更新されるデータおよび前記第1のプログラム実行部により更新される指令値の少なくとも一方と、前記指令値演算部が制御周期毎に算出する指令値とをデータセットとして生成する生成部(140;150;650)をさらに備える、構成1〜4のいずれか1項に記載の制御装置。
[構成6]
制御周期毎に生成されるデータセットを外部出力する出力部(164)をさらに備える、構成5に記載の制御装置。
[構成7]
前記中間コードは、前記指令値演算部が制御周期毎に指令値を更新するための関数を含む、構成1〜6のいずれか1項に記載の制御装置。
[構成8]
前記中間コードは、時間と指令値との関係を規定する関数を含む、構成7に記載の制御装置。
[構成9]
前記インタプリタは、生成した中間コードをバッファに逐次キューイングし、
前記指令値演算部は、前記バッファにキューイングされた順に中間コードを読出すように構成されている、構成1〜8のいずれか1項に記載の制御装置。
[構成10]
前記データ更新部、前記第1のプログラム実行部、および前記指令値演算部は、高優先タスクとして実行され、
前記インタプリタは、低優先タスクとして実行される、構成1〜9のいずれか1項に記載の制御装置。
[構成11]
制御装置による制御方法であって、
制御周期毎に入力データおよび出力データを更新するステップ(S102)と、
第1のプログラムの全体を制御周期毎にスキャンして指令値を更新するステップ(S104)と、
逐次解釈される第2のプログラムの少なくとも一部を解釈して中間コードを生成するステップ(S208,S210)と、
前記生成される中間コードに従って制御周期毎に指令値を算出するステップ(S110)とを備え、
前記中間コードに従う指令値を算出するステップは、他の処理での利用が可能な態様で、制御周期毎に指令値を出力する、制御方法。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1,1A,1B 制御システム、2 フィールドネットワーク、6 上位ネットワーク、20 入出力リフレッシュ処理、30 IECプログラム、32 NCプログラム、34 システムプログラム、50 データ更新部、52,160 共有メモリ、54 第1のプログラム実行部、56 第2のプログラム実行部、58,152 インタプリタ、60 指令値演算部、62 第1のプログラム、64 第2のプログラム、72,74,632 指令値、100 制御装置、102 プロセッサ、104 チップセット、106 主記憶装置、108 二次記憶装置、110 上位ネットワークコントローラ、112 USBコントローラ、114 メモリカードインターフェイス、116 メモリカード、120 内部バスコントローラ、122 I/Oユニット、130 フィールドネットワークコントローラ、140 IECプログラム実行部、142 モーション指令値演算部、150 NCプログラム実行部、154 バッファ、156 中間コード、158,186 NC指令値演算部、162 入出力インターフェイス処理部、164 上位ネットワークインターフェイス処理部、170 加算部、180 データ収集部、182 シーケンス演算部、184 モーション演算部、200 サポート装置、300 サーバ装置、400 表示装置、500 フィールドデバイス、510 リモートI/O装置、520 サーボドライバ、522 サーボモータ、530,540 CNC加工装置、550 視覚センサ、T1 制御周期、T2 インタプリタ制御周期。

Claims (11)

  1. 制御対象を制御するための制御装置であって、
    制御周期毎に入力データおよび出力データを更新するデータ更新部と、
    第1のプログラムの全体を制御周期毎にスキャンして指令値を更新する第1のプログラム実行部と、
    逐次解釈される第2のプログラムに従って制御周期毎に指令値を更新する第2のプログラム実行部とを備え、
    前記第2のプログラム実行部は、
    前記第2のプログラムの少なくとも一部を解釈して中間コードを生成するインタプリタと、
    前記インタプリタにより生成される中間コードに従って制御周期毎に指令値を算出する指令値演算部とを含み、
    前記指令値演算部は、他の処理での利用が可能な態様で、制御周期毎に指令値を出力する、制御装置。
  2. 前記指令値演算部が制御周期毎に算出する指令値を前記第1のプログラム実行部から参照するための共有メモリをさらに備える、請求項1に記載の制御装置。
  3. 前記指令値演算部が制御周期毎に算出する指令値と、前記データ更新部により更新されるデータとに基づく演算処理を実行する実行部をさらに備える、請求項1または2に記載の制御装置。
  4. 前記演算処理は、前記指令値演算部が制御周期毎に算出する指令値に対する数値処理を含む、請求項3に記載の制御装置。
  5. 前記データ更新部により更新されるデータおよび前記第1のプログラム実行部により更新される指令値の少なくとも一方と、前記指令値演算部が制御周期毎に算出する指令値とをデータセットとして生成する生成部をさらに備える、請求項1〜4のいずれか1項に記載の制御装置。
  6. 制御周期毎に生成されるデータセットを外部出力する出力部をさらに備える、請求項5に記載の制御装置。
  7. 前記中間コードは、前記指令値演算部が制御周期毎に指令値を更新するための関数を含む、請求項1〜6のいずれか1項に記載の制御装置。
  8. 前記中間コードは、時間と指令値との関係を規定する関数を含む、請求項7に記載の制御装置。
  9. 前記インタプリタは、生成した中間コードをバッファに逐次キューイングし、
    前記指令値演算部は、前記バッファにキューイングされた順に中間コードを読出すように構成されている、請求項1〜8のいずれか1項に記載の制御装置。
  10. 前記データ更新部、前記第1のプログラム実行部、および前記指令値演算部は、高優先タスクとして実行され、
    前記インタプリタは、低優先タスクとして実行される、請求項1〜9のいずれか1項に記載の制御装置。
  11. 制御装置による制御方法であって、
    制御周期毎に入力データおよび出力データを更新するステップと、
    第1のプログラムの全体を制御周期毎にスキャンして指令値を更新するステップと、
    逐次解釈される第2のプログラムの少なくとも一部を解釈して中間コードを生成するステップと、
    前記生成される中間コードに従って制御周期毎に指令値を算出するステップとを備え、
    前記中間コードに従う指令値を算出するステップは、他の処理での利用が可能な態様で、制御周期毎に指令値を出力する、制御方法。
JP2017174922A 2017-09-12 2017-09-12 制御装置および制御方法 Active JP6950385B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017174922A JP6950385B2 (ja) 2017-09-12 2017-09-12 制御装置および制御方法
US15/893,700 US10606246B2 (en) 2017-09-12 2018-02-12 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
EP18156422.0A EP3454144B1 (en) 2017-09-12 2018-02-13 Control device and control method
CN201810151258.XA CN109491307B (zh) 2017-09-12 2018-02-13 控制装置及控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017174922A JP6950385B2 (ja) 2017-09-12 2017-09-12 制御装置および制御方法

Publications (2)

Publication Number Publication Date
JP2019049947A true JP2019049947A (ja) 2019-03-28
JP6950385B2 JP6950385B2 (ja) 2021-10-13

Family

ID=61226388

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017174922A Active JP6950385B2 (ja) 2017-09-12 2017-09-12 制御装置および制御方法

Country Status (4)

Country Link
US (1) US10606246B2 (ja)
EP (1) EP3454144B1 (ja)
JP (1) JP6950385B2 (ja)
CN (1) CN109491307B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021019818A1 (ja) * 2019-07-31 2021-02-04 オムロン株式会社 制御システム、解析方法およびプログラム
WO2022162959A1 (ja) * 2021-01-27 2022-08-04 オムロン株式会社 制御システム、ロボットコントローラおよび制御方法
WO2022162958A1 (ja) * 2021-01-27 2022-08-04 オムロン株式会社 制御装置、プログラム実行方法およびプログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7230703B2 (ja) * 2019-06-20 2023-03-01 オムロン株式会社 制御装置
JP7277292B2 (ja) * 2019-07-08 2023-05-18 ファナック株式会社 Plc装置
JP7294078B2 (ja) * 2019-11-12 2023-06-20 オムロン株式会社 制御装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000020114A (ja) * 1998-07-07 2000-01-21 Yaskawa Electric Corp モーションコントローラのプログラム作成および実行方法
WO2012124141A1 (ja) * 2011-03-15 2012-09-20 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
JP5099251B1 (ja) * 2011-07-15 2012-12-19 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
EP2902862A1 (en) * 2014-01-30 2015-08-05 Omron Corporation Control device and method for controlling motion of a machine, motion program and recording medium storing the same
JP2015176191A (ja) * 2014-03-13 2015-10-05 オムロン株式会社 コントローラ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5912814A (en) 1997-05-07 1999-06-15 Allen-Bradley Company, Llc Redundant multitasking industrial controllers synchronized data tables
JP3801545B2 (ja) * 2002-08-02 2006-07-26 松下電器産業株式会社 コンパイラ用プログラム、コンパイラ装置及びコンパイル方法
DE102011003374A1 (de) 2011-01-31 2012-08-02 Deckel Maho Pfronten Gmbh Werkzeugmaschine mit einer Vorrichtung zur Kollisionsüberwachung
US8504176B2 (en) 2011-03-15 2013-08-06 Omron Corporation CPU unit of PLC, system program for PLC, and recording medium storing system program for PLC
JP4877423B1 (ja) * 2011-03-15 2012-02-15 オムロン株式会社 Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US10739746B2 (en) * 2014-10-30 2020-08-11 Siemens Aktiengesellschaft Using soft-sensors in a programmable logic controller
JP6519458B2 (ja) * 2015-12-01 2019-05-29 オムロン株式会社 制御装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000020114A (ja) * 1998-07-07 2000-01-21 Yaskawa Electric Corp モーションコントローラのプログラム作成および実行方法
WO2012124141A1 (ja) * 2011-03-15 2012-09-20 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
JP5099251B1 (ja) * 2011-07-15 2012-12-19 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体
EP2902862A1 (en) * 2014-01-30 2015-08-05 Omron Corporation Control device and method for controlling motion of a machine, motion program and recording medium storing the same
JP2015176191A (ja) * 2014-03-13 2015-10-05 オムロン株式会社 コントローラ

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021019818A1 (ja) * 2019-07-31 2021-02-04 オムロン株式会社 制御システム、解析方法およびプログラム
JP2021026309A (ja) * 2019-07-31 2021-02-22 オムロン株式会社 制御システム、解析方法およびプログラム
JP7247808B2 (ja) 2019-07-31 2023-03-29 オムロン株式会社 制御システム、解析方法およびプログラム
WO2022162959A1 (ja) * 2021-01-27 2022-08-04 オムロン株式会社 制御システム、ロボットコントローラおよび制御方法
WO2022162958A1 (ja) * 2021-01-27 2022-08-04 オムロン株式会社 制御装置、プログラム実行方法およびプログラム

Also Published As

Publication number Publication date
JP6950385B2 (ja) 2021-10-13
US20190079499A1 (en) 2019-03-14
EP3454144B1 (en) 2022-02-09
US10606246B2 (en) 2020-03-31
CN109491307B (zh) 2022-02-15
CN109491307A (zh) 2019-03-19
EP3454144A1 (en) 2019-03-13

Similar Documents

Publication Publication Date Title
US10761515B2 (en) Control system for controlling control object and control device for linking control applications in control system
CN109507980B (zh) 控制装置及控制方法
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
US10761884B2 (en) Control device for operating multiple types of programs in different execution formats
US10678218B2 (en) Control device
US20190095246A1 (en) Support device and non-transitory storage medium
JP2019057253A (ja) 制御装置、制御方法およびサポート装置
US11269313B2 (en) Controller and control system that stores data in current control cycle for output in next control cycle
US10509393B2 (en) Control device and control method
WO2021095466A1 (ja) 制御装置
US20230359487A1 (en) Control device, non-transitory computer-readable medium, and control method
JP7456165B2 (ja) 制御装置
WO2021024523A1 (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: 20210127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210319

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: 20210824

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210906

R150 Certificate of patent or registration of utility model

Ref document number: 6950385

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150