Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP6806019B2 - 制御装置 - Google Patents
[go: Go Back, main page]

JP6806019B2 - 制御装置 - Google Patents

制御装置 Download PDF

Info

Publication number
JP6806019B2
JP6806019B2 JP2017185146A JP2017185146A JP6806019B2 JP 6806019 B2 JP6806019 B2 JP 6806019B2 JP 2017185146 A JP2017185146 A JP 2017185146A JP 2017185146 A JP2017185146 A JP 2017185146A JP 6806019 B2 JP6806019 B2 JP 6806019B2
Authority
JP
Japan
Prior art keywords
priority
task
program
analysis unit
unit
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
JP2017185146A
Other languages
English (en)
Other versions
JP2019061466A (ja
JP2019061466A5 (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 JP2017185146A priority Critical patent/JP6806019B2/ja
Priority to EP18176808.6A priority patent/EP3477405B1/en
Priority to US16/004,432 priority patent/US10761884B2/en
Priority to CN201810595167.5A priority patent/CN109557890B/zh
Publication of JP2019061466A publication Critical patent/JP2019061466A/ja
Publication of JP2019061466A5 publication Critical patent/JP2019061466A5/ja
Application granted granted Critical
Publication of JP6806019B2 publication Critical patent/JP6806019B2/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/00Program-control systems
    • G05B19/02Program-control systems electric
    • G05B19/42Recording and playback systems, i.e. in which the program is recorded from a cycle of operations, e.g. the cycle of operations being manually controlled, after which this record is played back on the same machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Program-control systems
    • G05B19/02Program-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 program 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 program 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/00Program-control systems
    • G05B19/02Program-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 program data in numerical form
    • G05B19/414Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller
    • G05B19/4145Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller characterised by using same processor to execute programmable controller and numerical controller function [CNC] and PC controlled NC [PCNC]
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Program-control systems
    • G05B19/02Program-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 program data in numerical form
    • G05B19/414Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller
    • G05B19/4148Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller characterised by using several processors for different functions, distributed (real-time) systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Program-control systems
    • G05B19/02Program-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/41865Total 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 job scheduling, process planning, material flow
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/12Plc mp multi processor system
    • G05B2219/1215Leader-follower system
    • 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/15Plc structure of the system
    • G05B2219/15079Multitasking, real time multitasking
    • 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/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23275Use of parser
    • 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/34287Plc and motion controller combined
    • 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/37Measurements
    • G05B2219/37137Encoder combined with barcode label, reader

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Manufacturing & Machinery (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Programmable Controllers (AREA)
  • Stored Programmes (AREA)

Description

本発明は、制御対象を制御するための制御装置に関する。
生産現場においては、様々なFA(Factory Automation)技術が広く普及している。このようなFAシステムは、PLC(プログラマブルコントローラ)といった制御装置だけではなく、CNC(Computer Numerical Control:コンピュータ数値制御)およびロボットなどの高度な動作が可能な各種アクチュエータなどを含む。このようなFAシステムはますます大規模化する傾向にある。
例えば、特開2001−027904号公報(特許文献1)は、複数のCNC装置を連結させることで、制御する軸数を増大させ、かつ、複数のCNC装置間の同期を取ることができる数値制御システムを開示する。この数値制御システムにおいて、マスタユニットおよび1または複数のスレーブユニットがケーブルを介して接続されている。マスタユニットおよびスレーブユニットの各々は、ラダープログラムを実行するPMC用プロセッサおよびCNC用プロセッサを有している。
また、特開2016−092544号公報(特許文献2)は、マスタ制御装置により第1制御対象物を制御するとともに、当該マスタ制御装置とネットワークを介して接続されるスレーブ制御装置により第1制御対象物と異なる第2制御対象物を制御する制御システムを開示する。この制御システムは、マスタ制御装置およびスレーブ制御装置を含む。マスタ制御装置およびスレーブ制御装置の各々は、演算処理部を有するコントローラとは別に、別の演算処理部を有するロボットコントローラを含んでいる。
近年のICT(Information and Communication Technology)の進歩に伴って、制御装置の処理能力も飛躍的に向上しつつある。従来技術においては複数の専用装置を用いて実現されていたFAシステムをより少ない数の制御装置で実現したいというニーズも生じている。
特開2001−027904号公報 特開2016−092544号公報
上述した特許文献1および特許文献2に開示される構成においては、複数のプロセッサまたは演算処理部が分散配置された構成が採用されており、それぞれのプロセッサまたは演算処理部の間で同期処理を実現するために構成が冗長になり得る。
一方で、実行形式の異なる複数種類のプログラム(例えば、ラダープログラム、CNCプログラム、ロボットプログラムなど)を単一の制御装置で実現しようとすると、限られた処理リソースを効率的に利用する必要がある。本発明は、このようなニーズに対応できる制御装置を提供することを一つの目的としている。
本開示の一例によれば、1または複数のプロセッサを有する制御装置が提供される。制御装置は、実行毎に全体がスキャンされる第1のプログラムと、逐次実行される第2のプログラムとを格納する記憶部と、第1の周期毎に第1のプログラムを実行して第1の制御指令を出力するプログラム実行部と、第1の周期より長い第2の周期毎に第2のプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成する解析部と、解析部により生成された内部コマンドに従って第1の周期毎に第2の制御指令を出力する指令演算部と、予め設定された優先度に基づいて、1または複数のタスクに対してプロセッサリソースを割当てるスケジューラとを含む。スケジューラには、少なくとも、プログラム実行部および指令演算部による処理実行を含む第1の優先度を有する第1のタスクと、解析部による処理実行を含む第1の優先度より低い第2の優先度を有する第2のタスクと、第1のタスクおよび第2のタスクとは異なる処理内容の実行を含む第3の優先度を有する第3のタスクとが設定されている。制御装置は、さらに、解析部における処理状況を監視するとともに、解析部における処理状況が予め定められた条件を満たすと、第2のタスクに設定されている第2の優先度を当該条件に応じて変更する優先度変更部を含む。
この開示によれば、複数のタスクが共通のプロセッサリソースを共有する場合に、制御指令を生成するためのソースとなる内部コマンドの生成が間に合わないといった事態を防止して、第1のプログラムおよび第2のプログラムに従う制御指令の第1の周期毎の出力を保障できる。
上述の開示において、優先度変更部は、解析部による内部コマンドの生成処理に係る負荷を示す情報に基づいて、解析部における処理状況を判断してもよい。
この開示によれば、実質的に優先度の変更対象となる解析部の負荷状況を評価することができるので、優先度変更の処理の安定性を高めることができる。
上述の開示において、負荷を示す情報は、解析部による第2のプログラムの構文解析に要する時間を含んでいてもよい。
この開示によれば、解析部による第2のプログラムの構文解析の負荷状況を客観的あるは定量的に評価できるので、解析部の負荷が過大になってしまう前に優先度を高めて、内部コマンドの生成が間に合わないといった事態の発生を予防できる。
上述の開示において、負荷を示す情報は、解析部による第2のプログラムの構文解析に要する時間が第2の周期の長さを超過したか否かの情報を含んでいてもよい。
この開示によれば、解析部による第2のプログラムの構文解析が本来の周期を超えているという事実に基づいて優先度が変更されるので、本来的に必要な状況にはないときに、優先度を変更してしまうといった事態を防止できる。
上述の開示において、解析部は、第2のプログラムを構文解析して軌跡上の通過点を算出し、算出した通過点に基づいて内部コマンドを生成するように構成されていてもよい。負荷を示す情報は、解析部が内部コマンドを生成するために事前に算出した通過点の数を含んでいてもよい。
この開示によれば、解析部による第2のプログラムを構文解析自体の処理負荷を評価することができ、内部コマンドの生成が間に合わないといった事態を防止できる。
上述の開示において、負荷を示す情報は、解析部により生成された内部コマンドのうち、指令演算部により未だ処理されていない内部コマンドの数を含んでいてもよい。
この開示によれば、内部コマンドの生成が追い付かずに、解析部による制御指令の出力が中断してしまうような事態を防止できる。
上述の開示において、負荷を示す情報は、第2のプログラムに記述される特殊コマンドを含んでいてもよい。
この開示によれば、第2のプログラムに記述されるコマンドのうち特定のコマンドについて、優先度を高めて処理することを直接的に命令できるので、第2のプログラムの構文解析および内部コマンドの生成をより確実に実現できる。
上述の開示において、優先度変更部は、第2のタスクに設定されている第2の優先度を上げた後に、予め定められた別の条件が満たされると、第2の優先度を元に戻すようにしてもよい。
この開示によれば、第2のプログラムを構文解析するにあたって、必要なときだけ、解析部に対してより多くのプロセッサリソースを割当てる一方で、必要ないときには、解析部がプロセッサリソースを占有することなく、他のタスクに対してプロセッサリソースを割当てることができる。
上述の開示において、解析部は、複数の第2のプログラムのそれぞれについて構文解析を実行してそれぞれの内部コマンドを逐次生成するように構成されていてもよい。優先度変更部は、複数の第2のプログラムのそれぞれの構文解析に関連付けられた複数の第2のタスクの間で、優先度を変更してもよい。
この開示によれば、制御装置において、複数の第2のプログラムに従う制御を並列的に実行するにあたって、第2のプログラム間で優先度を調停できる。
本発明によれば、単一の制御装置上で実行形式の異なる複数種類のプログラムを効率的に動作させることができる。
本実施の形態に係る制御装置における処理の概要を説明するためのタイムチャートである。 本実施の形態に係る制御システムの全体構成例を示す模式図である。 本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。 本実施の形態に係る制御装置の機能構成例を示すブロック図である。 本実施の形態に係る制御装置における内部コマンドの生成処理を説明するための模式図である。 本実施の形態に係る制御装置におけるタスクの実行タイミングの一例を示すタイムチャートである。 本実施の形態に係る制御装置における低優先タスクのタスク実行周期超過の一例を示すタイムチャートである。 本実施の形態に係る制御装置における処理実行に要する時間を示す変数リストの一例を示す図である。 本実施の形態に係る制御装置における内部コマンドの生成処理の一例を説明するための模式図である。 本実施の形態に係る制御装置における内部コマンドを生成するための通過点の処理例を示す模式図である。 本実施の形態に係る制御装置における内部コマンドから制御指令を演算する処理例を示す模式図である。 本実施の形態に係る制御装置において処理されるアプリケーションプログラムの一例を示す模式図である。 本実施の形態に係る制御装置における優先度変更の処理手順を示すフローチャートである。 本実施の形態に係る制御装置における複数のアプリケーションプログラムを並列的に実行させる場合の実行タイミングの一例を示すタイムチャートである。 本実施の形態に係る制御装置が提供するオーバーラップ動作を説明するための模式図である。 本実施の形態に係る制御装置におけるオーバーラップ動作を実現するためのプログラム例を示す模式図である。 時間をオーバーラップ条件とした場合のオーバーラップ動作の一例を示す模式図である。 位置をオーバーラップ条件とした場合のオーバーラップ動作の一例を示す模式図である。 本実施の形態に係る制御装置においてオーバーラップ動作を実現するための機能構成を示す模式図である。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.適用例>
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御装置100における処理の概要を説明するためのタイムチャートである。
図1を参照して、本実施の形態に係る制御装置100においては、少なくとも、実行毎に全体がスキャンされる第1のプログラムと、逐次実行される第2のプログラムとのいずれもが実行される。
本実施の形態においては、第1のプログラムの一例として、「IECプログラム」を想定する。制御装置100は、予め定められた制御周期T1(第1の周期)毎にIECプログラムを実行して制御指令を出力する。
本明細書において、IECプログラムは、実行毎に全体がスキャンされて、実行毎に制御指令を出力できるプログラムを包含する概念である。IECプログラムは、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131−3に従って記述された1または複数の命令からなるプログラムを包含する。IECプログラムには、シーケンス命令および/またはモーション命令を含み得る。なお、IECプログラムとしては、国際規格IEC61131−3に従って記述された命令に限らず、PLC(プログラマブルコントローラ)の製造メーカまたはベンダーなどが独自に規定した命令を含むようにしてもよい。このように、IECプログラムは、即時性および高速性が要求される制御に好適である。
IECプログラムは、制御対象やアプリケーションに応じて、ユーザによって任意に作成されるものであるため、以下の説明においては、便宜上、IECプログラムを「ユーザプログラム」とも称す。
本明細書において、「シーケンス命令」は、入力値、出力値、内部値などを演算する1または複数の論理回路により記述される1または複数の命令を包含する用語である。1回の制御周期T1において、「シーケンス命令」は、先頭から最終まで実行され、次の制御周期T1において、「シーケンス命令」は、先頭から最終までが再度実行される。
本明細書において、「モーション命令」は、サーボモータなどのアクチュエータに対して、位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などの数値を制御指令として演算するための1または複数の命令を包含する用語である。「モーション命令」についても、1回の制御周期T1において、ファンクションブロックや数値演算式などにより記述されるモーション命令のプログラム(モーションプログラム)の先頭から最終までが実行される。
制御周期T1毎にユーザプログラムを実行することで出力される制御指令は、典型的には、シーケンス命令に従って決定されるデジタル出力のオン/オフ、ならびに、モーション命令に従って演算されるアナログ出力を含む。
本実施の形態においては、第2のプログラムの一例として、「アプリケーションプログラム」を想定する。
本明細書において、「アプリケーションプログラム」は、逐次実行される任意のプログラムを包含する。典型的には、「アプリケーションプログラム」は、1行ずつ逐次実行して実行するインタプリタ方式で実行可能な任意の言語で記述されたプログラムを包含する。以下の説明においては、このような「アプリケーションプログラム」の一例として、CNC(Computer Numerical Control:コンピュータ数値制御)における挙動を記述するプログラム(以下、「NCプログラム」とも称する。)がある。また、「アプリケーションプログラム」の別の一例として、ロボットを制御するためのプログラムがある。
NCプログラムは、予め定められた言語に従って記述される。一例として、NCプログラムは「G言語」を用いて記述され、ロボットを制御するためのプログラムは、専用のロボット言語を用いて記述されることが多い。
以下の説明において、例えば、CNC(Computer Numerical Control:コンピュータ数値制御)および/またはおよびロボットを用いた、特定の加工または動作を行う装置または機械ならびにそれらの制御を包含して、「制御アプリケーション」と称することもある。
制御装置100は、制御周期T1(第1の周期)より長いアプリケーション実行周期T2(第2の周期)毎にアプリケーションプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成し、生成された内部コマンドに従って制御周期T1毎に制御指令を出力する。このように、制御装置100は、アプリケーションプログラムを構文解析して内部コマンドを逐次生成し、その内部コマンドに基づいて、制御周期T1毎に制御指令を出力する。
逐次実行されるアプリケーションプログラムは、本来的に、一定周期毎に制御指令を出力する処理には不向きであるため、制御周期T1毎の制御指令の出力に適した内部コマンドが生成される。このような内部コマンドは、制御周期T1毎に制御指令を出力できるものであれば、どのようなコードであってもよい。典型的には、内部コマンドは、時間を入力変数とする1または複数の関数、あるいは、時間を引数とする1または複数の命令であってもよい。
制御装置100においては、ユーザプログラムに含まれるシーケンス命令に従って制御指令を出力する処理、ユーザプログラムに含まれるモーション命令に従って制御指令を出力する処理、アプリケーションプログラムを構文解析して内部コマンドを生成する処理、内部コマンドに従って制御指令を出力する処理が実行される。制御装置100においては、これらの処理に加えて、関連する処理も実行される。すなわち、制御装置100においては、共通の処理資源を用いて、複数の処理が実行される。
このような複数の処理の実行は、スケジューラと称される機能によって管理される。スケジューラは、制御装置100が有している1または複数のプロセッサの処理時間(以下、「プロセッサリソース」とも称す。)を対象の処理に割当てる。
本実施の形態においては、1または複数の処理からなる「タスク」の単位でプロセッサリソースの割当てが管理される。各タスクには、優先度が予め設定されており、スケジューラは、予め設定された優先度に基づいて、1または複数のタスクにプロセッサリソースを割当てる。
各タスクには、実行周期を設定してもよい。実行周期が設定されている場合には、スケジューラは、予め設定された実行周期に従って、タスクに設定されている処理をトリガする。
図1(A)には、優先度別に設定された5つのタスク(第1〜第5タスク)の例を示す。
第1タスク10は、フィールドとの間で入力値および制御指令を更新する入出力リフレッシュ処理(図1において「O/I」と記載する。)を含む。
第2タスク18は、シーケンス命令実行処理12と、アプリケーションプログラムに従って制御指令を出力する出力処理14と、ユーザプログラムに含まれるモーション命令に従って制御指令を出力する出力処理16とを含む。スケジューラには、相対的に高い優先度を有する第2タスク18として、アプリケーションプログラム実行および制御指令出力の処理実行が設定されている。
第1タスク10および第2タスク18は、制御周期T1毎にトリガされる。そのため、第1タスク10および第2タスク18に対しては、相対的に高い優先度が設定されている。以下の説明においては、第1タスク10および第2タスク18を、「高優先タスク」とも称す。
第3タスク20は、アプリケーションプログラムを構文解析して内部コマンドを逐次生成する処理を含む。すなわち、スケジューラには、相対的に低い優先度を有する第3タスク20として、アプリケーションプログラムの構文解析の処理実行が設定されている。
第4タスク22は、制御装置100が提供する任意の処理を含む。すなわち、スケジューラには、相対的に低い優先度を有する第3タスク20として、第2タスク18および第3タスク20とは異なる処理内容の実行が設定されている。
第5タスク24は、制御装置100と外部装置との間のデータ通信などの処理(以下、「システムサービス」とも称す。)を含む。
第3タスク20、第4タスク22、および第5タスク24は、高優先タスクが実行されていない期間に実行される。以下の説明においては、第3タスク20、第4タスク22、および第5タスク24を、「低優先タスク」とも称す。
第1〜第5タスクについては、それぞれ優先度が設定されており、各設定された優先度に従って、プロセッサリソースが割当てられる。
図1(A)には、第4タスク22に対して、第3タスク20より高い優先度が設定されている例を示す。図1(A)に示す例においては、第1タスク10および第2タスク18が制御周期T1毎に繰返し実行される。各制御周期T1において、第1タスク10および第2タスク18が実行されていない期間において、第3〜第5タスクが優先度に応じて実行される。
図1(A)に示す例においては、第4タスク22に対しては、制御周期T1毎にプロセッサリソースが割当てられている。一方、第3タスク20に対しては、第1タスク10、第2タスク18、第4タスク22のいずれもが実行されていない期間においてのみ、プロセッサリソースが割当てられるので、第3タスク20の1回の処理完了には、3回の制御周期T1に相当する時間が必要になっている。すなわち、第3タスク20がトリガされてから、指定された処理を完了するまでには、制御周期T1の3倍の時間が必要である。
上述したように、第3タスク20として設定されている処理は、アプリケーションプログラムを構文解析して内部コマンドを逐次生成するものであり、この逐次生成される内部コマンドは、制御指令の出力に用いられる。
このように、第3タスク20においては、アプリケーションプログラムを構文解析して内部コマンドが生成され、第2タスク18においては、第3タスク20において生成される内部コマンドが制御指令の演算に逐次使用される(すなわち、制御周期T1毎に「消費」される)。すなわち、第3タスク20による内部コマンドの生成と、第2タスク18による内部コマンドの使用との間で競争が生じる。
第3タスク20に対して十分なプロセッサリソースが割当てられている場合においては、第2タスク18による内部コマンドの使用に先だって、ある程度の量の内部コマンドが事前に生成できる。一方、第3タスク20に対して十分なプロセッサリソースを割当てることができない場合においては、第2タスク18による内部コマンドの使用が勝り、第3タスク20による内部コマンドの生成を待つような事態も生じ得る。
そこで、本実施の形態に係る制御装置100においては、第3タスク20(アプリケーションプログラムに対する構文解析処理)における処理状況を監視するとともに、当該処理状況が予め定められた条件を満たすと、第3タスク20に設定されている優先度を当該条件に応じて変更する。
例えば、内部コマンドの生成に余裕がなくなった場合などには、第3タスク20に設定されている優先度を上げ、逆に、内部コマンドの生成に十分な余裕が生じた場合などには、第3タスク20に設定されている優先度を下げるような処理が可能である。
図1(B)には、第3タスク20の優先度を図1(A)の場合の優先度より高く設定したときの処理例を示す。図1(B)においては、第3タスク20の優先度は、第4タスク22より高く設定されている。
図1(B)に示す例においては、第1タスク10および第2タスク18のいずれもが実行されていない期間において、第3タスク20に対して、プロセッサリソースが優先的に割当てられる。その結果、図1(A)の場合に比較して、より多くのプロセッサリソースが第3タスク20に割当てられるようになり、第3タスク20がトリガされてから制御周期T1の2倍の時間で指定された処理を完了できる。すなわち、アプリケーションプログラムの処理対象のコードから内部コマンドをより短い時間で生成できる。
図1(B)においては、図1(A)の場合に比較して、より多くのプロセッサリソースを割当てることもでき、この場合には、1回の処理実行によって、より多くの内部コマンドの量を生成できる。
以上のように、アプリケーションプログラムを構文解析して内部コマンドを生成する処理を含む第3タスク20の優先度を、その処理状況に応じて動的に変更することで、途中途切れることなく、制御周期T1毎の制御指令の出力を継続できる。
本実施の形態に係る制御装置100によれば、例えば、CNC工作機械やロボットなどをアプリケーションプログラムに従って制御するような場合において、ユーザプログラムに従う制御指令の更新周期と同期して、位置や速度などの制御指令を出力することができる。そのため、CNC工作機械および/またはロボットと関連する搬送装置などとを同期させた制御を実現できる。このとき、上述したような構成を採用することで、CNC工作機械および/またはロボットに対する制御指令を出力するための内部コマンドを、切れ目なく生成することができ、CNC工作機械および/またはロボットが途中で一旦停止するような事態を生じさせることなく、正確かつ高速な制御および生産を実現できる。
図1においては、説明を簡素化するために、単一のプロセッサリソースを時分割して、複数のタスクに割当てる構成を説明したが、本発明の適用はこのような環境に限定されることはなく、公知のプログラム実行環境に適用できる。例えば、マルチコアまたはマルチプロセッサ環境においては、複数のプロセッサリソースをそれぞれ時分割して、必要なタスクに割当てることもできる。このような場合であっても、プロセッサリソースの割当ては、優先度に基づいて行われるため、上述したような優先度の変更処理を適用することによって、上述したのと同様の作用効果を奏することができる。
以下、本発明のより具体的な応用例として、本実施の形態に係る制御装置100のより詳細な構成および処理について説明する。
<B.制御システムの全体構成例>
まず、本実施の形態に係る制御装置100を含む制御システム1の全体構成例について説明する。図2は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。図2には、本実施の形態に係る制御装置100を中心とした制御システム1を示す。
図2を参照して、制御装置100は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置100は、後述するような制御演算を実行する一種のコンピュータであり、典型的には、PLC(プログラマブルコントローラ)として具現化されてもよい。制御装置100は、フィールドネットワーク2を介して各種のフィールド機器500と接続されてもよい。制御装置100は、フィールドネットワーク2などを介して、1または複数のフィールド機器500との間でデータを遣り取りする。一般的に「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドネットワーク」と総称する。すなわち、本明細書の「フィールドネットワーク」は、狭義の「フィールドネットワーク」に加えて「フィールドバス」を含み得る概念である。
フィールドネットワーク2は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが知られている。
フィールドネットワーク2には、任意のフィールド機器500を接続することができる。フィールド機器500は、製造装置や生産ラインなど(以下、「フィールド」とも総称する。)に対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報を遣り取りする入出力装置などを含む。
フィールドネットワーク2を介して、制御装置100とフィールド機器500との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数100μsecオーダ〜数10msecオーダのごく短い周期で更新されることになる。このようなデータの遣り取りは、フィールド機器500において収集または生成されたデータ(以下、「入力データ」とも称す。)を制御装置100へ送信する処理、および、制御装置100からフィールド機器500に対する制御指令などのデータ(以下、「出力データ」とも称す。)を送信する処理を含む。このような遣り取りされるデータの更新処理が上述の「入出力リフレッシュ処理」に相当する。
図2に示す構成例においては、フィールド機器500は、リモートI/O(Input/Output)装置510と、ロボット520およびロボットコントローラ522と、CNC工作機械530と、サーボドライバ540およびサーボモータ542とを含む。
サーボモータ542は、コンベア544を駆動して、CNC工作機械530の前に配置されたワークテーブル546にワークWを搬送する。ロボット520は、ワークテーブル546上の処理前のワークWをCNC工作機械530内に配置し、CNC工作機械530での処理済ワークWを取り出してワークテーブル546上に配置する。
フィールド機器500としては、これらに限られることなく、入力データを収集する任意のデバイス(例えば、視覚センサなど)、ならびに、出力データに従う何らかの作用を与える任意のデバイス(例えば、インバータ装置など)などを採用することができる。
リモートI/O装置510は、典型的には、フィールドネットワーク2を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。
リモートI/O装置510には、入力リレーや各種センサ(例えば、アナログセンサ、温度センサ、振動センサなど)などの入力データを収集する装置、および、出力リレー、コンタクタ、サーボドライバ、および、その他任意のアクチュエータなどのフィールドに対して何らかの作用を与える装置が接続される。
ロボットコントローラ522は、制御装置100からの制御指令(位置指令または速度指令など)に従って、軌跡計算および各軸の角度計算などを行うとともに、計算結果に従って、ロボット520を構成するサーボモータなどを駆動する。
CNC工作機械530は、位置や速度などを指定するプログラムに従って、マシニングセンタなどを制御することで、任意の対象物を加工する。CNC工作機械530は、典型的には、旋盤加工、フライス盤、放電加工などの加工装置を含む。
サーボドライバ540は、制御装置100からの制御指令(例えば、位置指令または速度指令など)に従って、サーボモータ542を駆動する。
制御装置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を複数配置してもよい。すなわち、制御装置100は、1または複数のプロセッサ102、および/または、1または複数のコアを有するプロセッサ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(図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上で必要なアプリケーションを実行させるようにしてもよい。
図2に示す制御システム1においては、制御装置100、サポート装置200および表示装置400がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
<D.制御装置の機能構成例>
次に、本実施の形態に係る制御装置100の機能構成例について説明する。図4は、本実施の形態に係る制御装置100の機能構成例を示すブロック図である。
図4には、制御装置100が制御アプリケーション1および制御アプリケーション2を制御する構成例を示す。制御アプリケーション1および制御アプリケーション2の各々は、典型的には、リレーやコンタクタなどのI/Oデバイスおよびサーボモータなどの各種アクチュエータを含む。制御アプリケーション1および制御アプリケーション2に加えて、他のI/Oデバイスおよび各種センサについても、フィールドネットワーク2を介して制御装置100と接続されている。
制御装置100は、上位ネットワーク6を介して接続されているサーバ装置300などから、生産の開始/終了といった指示を受ける。サーバ装置300は、レシピ情報38(生産品種や生産に適したパラメータなどの情報)を制御装置100に送信することもある。制御装置100は、図示しない他の制御装置100とネットワーク接続されていてもよい。
図4を参照して、制御装置100は、PLC処理エンジン150と、アプリケーション解析部160と、アプリケーション調停部162と、制御指令演算部164と、共有メモリ170と、共有メモリ制御部172と、表示機能部174と、フィールドネットワークインターフェイス176と、上位ネットワークインターフェイス178とを含む。
PLC処理エンジン150は、ユーザプログラム30の実行および制御装置100全体の処理を管理する。より具体的には、PLC処理エンジン150は、シーケンスプログラム実行部152と、スケジューラ154と、優先度変更部156とを含む。
シーケンスプログラム実行部152は、制御周期T1毎にユーザプログラム30を実行(スキャン)して制御指令を出力する。
スケジューラ154は、制御装置100において実行される処理の順序を調停するものであり、具体的には、予め設定された優先度に基づいて、1または複数のタスクに対してプロセッサリソースを割当てる。
優先度変更部156は、アプリケーション解析部160における処理状況を監視するとともに、アプリケーション解析部160における処理状況が予め定められた条件を満たすと、アプリケーション解析部160の処理を含むタスクに設定されている優先度を当該条件に応じて変更する。優先度変更部156は、アプリケーション解析部160による内部コマンドの生成が余裕をもって実行されるように、優先度変更部156に対するプロセッサリソースの割当てを調整する。
優先度変更部156は、優先度を変更するための条件設定情報158を有している。条件設定情報158は、後述するような、条件および当該条件が満たされた場合の優先度変更処理の内容を含む。
アプリケーション解析部160は、アプリケーションプログラム32の少なくとも一部を解析して、内部コマンド40を生成する。アプリケーション解析部160には、異なる種類のアプリケーションプログラム32が提供されることもある。アプリケーション解析部160は、予め格納されたアプリケーションプログラム32を実行するようにしてもよいし、サーバ装置300から適宜送信されるアプリケーションプログラム32を実行するようにしてもよい。
制御指令演算部164は、ユーザプログラム30に含まれるモーション命令に従って、制御指令を制御周期T1毎に演算する。また、制御指令演算部164は、アプリケーション解析部160により逐次生成される内部コマンド40に従って、制御指令を制御周期T1毎に演算する。
シーケンスプログラム実行部152および制御指令演算部164は、制御周期T1毎に処理を実行する(高優先タスク)。一方、アプリケーション解析部160によるアプリケーションプログラム32に対する処理は、制御周期T1の整数倍であるアプリケーション実行周期T2(第2の周期)毎に実行される(低優先タスク)。
アプリケーション調停部162は、アプリケーション解析部160において複数のアプリケーションプログラム32が処理される場合に、その処理順序などを調停する。
共有メモリ170は、PLC処理エンジン150、アプリケーション解析部160、および制御指令演算部164の間で共有されるデータを保持する。共有されるデータは、構造体変数として格納されるようにしてもよい。例えば、アプリケーション解析部160により逐次生成される内部コマンド40は、共有メモリ170の構造体変数に逐次書込まれる。
共有メモリ制御部172は、共有メモリ170に対するデータ読書きの排他制御、および、外部からの要求に応じた共有メモリ170へのアクセスなどを行う。例えば、共有メモリ制御部172は、共有メモリ170上のデータをフィールドネットワークインターフェイス176へ与えることで、フィールドネットワーク2を介して接続される任意のフィールド機器500へ送信される。
表示機能部174は、共有メモリ170に格納されるデータおよびアプリケーション解析部160による処理結果などをユーザなどへ出力する。
フィールドネットワークインターフェイス176は、フィールドネットワーク2を介して接続されているフィールド機器500との間のデータの遣り取りを仲介する。
上位ネットワークインターフェイス178は、上位ネットワーク6を介して接続されている装置との間のデータの遣り取りを仲介する。
<E.内部コマンドの一例>
次に、制御装置100のアプリケーション解析部160がアプリケーションプログラム32を解析して生成する内部コマンド40の一例について説明する。アプリケーションプログラム32としては、インタプリタ方式で実行可能な任意の言語で記述されたどのようなプログラムを採用することもできるが、以下の説明においては、NCプログラムまたはロボットプログラムのように、1または複数のコマンドのより予め軌跡を規定するプログラムを想定する。
図5は、本実施の形態に係る制御装置100における内部コマンド40の生成処理を説明するための模式図である。図5(A)を参照して、アプリケーション解析部160がアプリケーションプログラム32を構文解析して、アプリケーションプログラム32に含まれる各命令が解析される((1)アプリケーションプログラム解析)。アプリケーションプログラム32を構文解析によって、規定された軌跡が内部的に生成される((2)軌跡生成)。アプリケーションプログラム32は、区間毎に軌跡を規定する命令を含むことが多いので、各命令に対応する区間毎に軌跡が生成される。
複数の軸からなるグループが規定される場合には、軸毎に軌跡を生成してもよいし、当該グループに属する軸の全体の挙動を規定する軌跡を生成してもよい。
アプリケーション解析部160は、生成した軌跡を示す内部コマンド40(典型的には、1または複数の関数)を生成する((3)内部コマンド生成)。軌跡が区間毎に規定される場合には、各区間に対応する内部コマンド40が生成される。
以上のように、アプリケーション解析部160は、アプリケーションプログラム32を構文解析して軌跡上の通過点を算出し、算出した通過点に基づいて内部コマンドを生成するようになっている。
複数の区間を共通の内部コマンド40で規定してもよいし、1つの区間をさらに分割して個別の内部コマンド40をそれぞれ生成してもよい。すなわち、アプリケーションプログラム32の命令または当該命令によって規定される軌跡の区間と、生成される内部コマンド40の数とを一致させる必要はなく、任意に生成すればよい。また、内部コマンド40の出力形態についても、要求される制御周期T1の時間幅などを考慮して、適宜設計されてもよい。
図5(A)に示すように、内部コマンド40の一例としては、時間と指令値との関係を規定する関数であってもよい。図5(A)に示す例では、内部的に生成された軌跡は、直線の組合せで規定できる。一例として、X軸に関して、直線区間毎(区間1〜区間3)の軌跡を時間と速度との関係を示すFx1(t),Fx2(t),Fx3(t)を出力できる。同一のグループに属する他の軸(例えば、Y軸およびZ軸)についても、それぞれ同様に関数が出力されてもよい。
図5(B)に示すように、制御指令演算部164が、制御周期T1毎に、生成された内部コマンド40に従って制御指令を演算することで、制御周期T1毎に制御指令が出力される((4)指令値演算)。すなわち、各区間に対応する関数に、各制御周期の時刻を入力することで、当該時刻における指令値を一意に決定できる。何らかのグループが設定されている場合には、当該グループに属する各軸について、指令値を同期して出力することが好ましい。
上述の図5には、一例として、CNCで用いられるG言語により記述されたコマンドの一例を示すが、これに限らず、任意のインタプリタ方式で実行されるプログラムであれば、どのような言語を用いてもよい。また、処理対象の言語形式に応じて、生成される内部コマンド40の形式を異ならせてもよい。
<F.タスクの実行タイミング>
次に、本実施の形態に係る制御装置100におけるそれぞれのタスクの実行タイミングについて説明する。図6は、本実施の形態に係る制御装置100におけるタスクの実行タイミングの一例を示すタイムチャートである。
図6を参照して、高優先タスクとして、第1タスク10(入出力リフレッシュ処理)および第2タスク18(シーケンス命令実行処理12と、アプリケーションプログラムに従う制御指令の出力処理14と、ユーザプログラムに含まれるモーション命令に従う制御指令の出力処理16とを含む)が設定されている。低優先タスクとして、第3タスク20(アプリケーションプログラム32を構文解析して内部コマンド40を逐次生成する処理)が設定されている。
高優先タスクは、制御周期T1毎に実行される。アプリケーションプログラムに従う制御指令の出力処理14においては、アプリケーション解析部160により生成される内部コマンド40が、共有メモリ170から内部コマンド40が読出されて(デキューされて)、当該制御周期T1における制御指令が算出される。
低優先タスクは、アプリケーション実行周期T2毎に実行される。アプリケーション実行周期T2は、制御周期T1の整数倍(図6に示す例では、2倍)の単位で設定される。すなわち、アプリケーション解析部160は、アプリケーション実行周期T2毎に、アプリケーションプログラム32の少なくとも一部を構文解析して内部コマンド40を逐次生成する。生成される内部コマンド40は、逐次、共有メモリ170内のバッファにキューイング(エンキュー)される。
低優先タスクは、アプリケーション実行周期T2内に処理を完了できればよい。低優先タスクは、高優先タスクが実行される期間中には、プロセッサリソースが割当てられないので、中断(サスペンド)状態で待機する。
図6に示すようなそれぞれのタスクの実行タイミング、すなわちプロセッサリソースの割当ては、スケジューラ154によって実行される。スケジューラ154は、各タスクに設定されている優先度に基づいて、各タスクに対するプロセッサリソースの割当てを行う。
<G.優先度変更>
次に、低優先タスクに設定される優先度の変更処理について説明する。上述の図1に示したように、高優先タスク以外の複数のタスクが並列的に実行されており、これらのタスクの間では、優先度に応じて、プロセッサリソースが割当てられる。
このような低優先タスクは、他の低優先タスクとの間でプロセッサリソースを共有することになる。一方で、アプリケーションプログラム32はインタプリタ方式のコマンドを含むため、構文解析に要する時間は、コマンドの種類および組合せによって変化する。そのため、要求される構文解析の処理をアプリケーション実行周期T2内に処理を完了できない場合もある。このようなアプリケーション実行周期T2内での処理を完了できない状態を、「タスク実行周期超過」とも称す。
図7は、本実施の形態に係る制御装置100における低優先タスクのタスク実行周期超過の一例を示すタイムチャートである。図7を参照して、時刻t1から始まるアプリケーション実行周期T2において開始された第3タスク20は、本来の周期の終わりである時刻t3までに処理を完了することができず、次のアプリケーション実行周期T2において処理が完了している。
このようなタスク実行周期超過が生じた場合には、アプリケーション実行周期T2を長くする、および/または、より高い優先度に変更する、といった対処が必要となる。
本実施の形態に係る制御装置100は、第3タスク20(アプリケーションプログラム32に対する構文解析処理)における処理状況を監視するとともに、当該処理状況が予め定められた条件を満たすと、第3タスク20に設定されている優先度を当該条件に応じて変更する。この条件に応じた変更は、優先度を上げる、および、優先度を下げる、のいずれをも含み得る。
典型的には、制御装置100の優先度変更部156は、上述したようなタスク実行周期超過が生じた場合には、第3タスク20に設定されている優先度を上げ、その優先度を上げた後に、予め定められた別の条件が満たされると、当該優先度を戻してもよい。
優先度を変更するための「タスクの処理状況」とは、高優先タスクとして設定されている、内部コマンドを用いた制御指令の算出処理へ影響を与え得る状況を包含する概念である。「タスクの処理状況」は、アプリケーションプログラム32に従う制御指令の制御周期T1毎の出力を保証できなくなる事態を回避するために必要な任意の情報を含み得る。
制御装置100の優先度変更部156は、アプリケーション解析部160による内部コマンドの生成処理に係る負荷を示す情報に基づいて、アプリケーション解析部160における処理状況を判断する。内部コマンドの生成処理に係る負荷を示す情報の一例として、以下のような情報が挙げられる。
(1)低優先タスクの処理実行に要する時間
(2)タスク実行周期超過の発生有無
(3)内部コマンドを生成するための通過点のバッファ数
(4)内部コマンドのバッファ数
(5)アプリケーションプログラム内の特殊コマンド
以下、各情報に基づく優先度変更処理について説明する。
(g1.低優先タスクの処理実行に要する時間)
上述したタスクの処理状況として、対象となる低優先タスクの処理実行に要する時間に基づいてもよい。このように、内部コマンドの生成処理に係る負荷を示す情報は、アプリケーション解析部160によるアプリケーションプログラム32の構文解析に要する時間を含んでいてもよい。
低優先タスクの処理実行に要する時間としては、低優先タスクが処理開始してから処理完了までに要した時間の直前値、最大値、最小値、平均値、中間値などを用いることができる。
また、対象の低優先タスクにおいてタスク実行周期超過が生じているか否か、および、タスク実行周期超過が生じた回数などを用いてもよい。
図8は、本実施の形態に係る制御装置100における処理実行に要する時間を示す変数リストの一例を示す図である。図8を参照して、制御装置100は、システム変数として、特定のタスクの処理実行に要する情報を保持している。
図8に示す例では、システム変数群600として、タスク実行回数変数601(_CNC_ServiceExecCount)と、実行時間直前値変数602(_CNC_ServiceLastExecTime)と、実行時間最大値603(_CNC_ServiceMaxExecTime)と、実行時間最小値604(_CNC_ServiceMinExecTime)とが示されている。
タスク実行回数変数601は、制御装置100が起動してから(あるいは、任意のリセットタイミングから)対象タスクが実行された総回数を示す。実行時間直前値変数602は、対象タスクの直前の実行において処理に要した時間を示す。実行時間最大値603は、制御装置100が起動してから(あるいは、任意のリセットタイミングから)のタスクの実行に要した時間の最大値を示す。実行時間最小値604は、制御装置100が起動してから(あるいは、任意のリセットタイミングから)のタスクの実行に要した時間の最小値を示す。
このような低優先タスクの処理実行に要する時間に基づいて、対象タスクの負荷状況などを評価し、その評価結果に基づいて、当該対象タスクの優先度を変更できる。
図8に示すような処理実行に要する時間を用いる場合の条件としては、例えば、対象タスク処理実行の直前値が、予め設定されているアプリケーション実行周期T2の所定比率(例えば、90%)まで到達した場合などを採用できる。この条件が満たされると、当該対象タスクの優先度を上げるようにしてもよい。
逆に、対象タスク処理実行の直前値が、複数回に亘って、予め設定されているアプリケーション実行周期T2の所定比率(例えば、30%)以下である場合などを採用できる。この条件が満たされると、当該対象タスクの優先度を下げるようにしてもよい。
また、対象タスクの優先度をどの程度まで上げるのかについても、アプリケーション実行周期T2の長さと、対象タスク処理実行に要した時間との差分または比率に基づいて決定してもよい。
このように、低優先タスクの処理実行に要する時間を監視することで、対象タスクの負荷状況を直接的に評価できる。
(g2.タスク実行周期超過の発生有無)
上述したタスクの処理状況として、対象となる低優先タスクにおけるタスク実行周期超過の発生有無に基づいてもよい。すなわち、内部コマンドの生成処理に係る負荷を示す情報は、アプリケーション解析部160によるアプリケーションプログラム32の構文解析に要する時間がアプリケーション実行周期T2(第2の周期)の長さを超過したか否かの情報を含んでいてもよい。
再度図8を参照して、システム変数群600は、タスク実行周期超過有無変数605(_CNC_ServiceExceeded)と、タスク実行周期超過回数変数606(_CNC_ServiceExceedCount)とがさらに示されている。タスク実行周期超過有無変数605は、対象タスクの直前の実行において、タスク実行周期超過が発生したか否かを示す。タスク実行周期超過回数変数606は、制御装置100が起動してから(あるいは、任意のリセットタイミングから)のタスク実行周期超過が発生した総回数を示す。
このようなタスク実行周期超過の発生有無に基づいて、対象タスクの負荷状況などを評価し、その評価結果に基づいて、当該対象タスクの優先度を変更できる。タスク実行周期超過の発生有無の情報を用いる場合には、対象タスクの直前の実行において、タスク実行周期超過が生じたことを条件として、当該対象タスクの優先度を上げるようにしてもよい。
逆に、予め定められた実行回数に亘って、タスク実行周期超過が生じていないことを条件として、当該対象タスクの優先度を下げるようにしてもよい。
このように、タスク実行周期超過の発生有無を監視することで、対象タスクの負荷状況を直接的に評価できる。
(g3.内部コマンドを生成するための通過点のバッファ数)
上述したタスクの処理状況として、アプリケーションプログラム32を構文解析して算出される目標軌跡上の通過点のバッファ数に基づいてもよい。すなわち、内部コマンドの生成処理に係る負荷を示す情報は、アプリケーション解析部160が内部コマンドを生成するために事前に算出した通過点の数を含んでいてもよい。
ここで、アプリケーションプログラム32を構文解析して内部コマンド40を生成する処理について説明する。図9は、本実施の形態に係る制御装置100における内部コマンド40の生成処理の一例を説明するための模式図である。図9(A)には、時刻t0から時刻t1までの期間における内部コマンド40を生成する処理手順を示し、図9(B)には、時刻t1から時刻t2までの期間における内部コマンド40を生成する処理手順を示す。
図9(A)を参照して、アプリケーション解析部160は、アプリケーションプログラム32を構文解析して目標軌跡を逐次決定する。アプリケーション解析部160は、逐次決定される目標軌跡に対して、予め定められた期間毎の通過点を逐次算出する。それぞれの通過点は、目標軌跡上の移動距離および目標軌跡上の移動速度に基づいて算出される。
図9(A)に示す例において、時刻t0における初期位置である通過点P0(t0)に加えて、時刻t1における通過点P1(t1)、時刻t2における通過点P2(t2)、時刻t3における通過点P3(t3)が算出されたとする。
アプリケーション解析部160は、少なくとも、通過点P0(t0)および通過点P1(t1)の情報に基づいて、通過点P0(t0)から通過点P1(t1)までの移動経路44を算出する。アプリケーション解析部160は、算出した移動経路44から内部コマンドFx1(t)を生成する。なお、図9(A)には、内部コマンドFx1(t)のみを示すが、実際には、同時に制御しなければならないモータの数だけ内部コマンド40が生成されることになる。
移動経路44の算出には、通過点P0(t0)および通過点P1(t1)の情報に加えて、通過点P1(t1)に引き続く1または複数の通過点の情報を反映してもよい。より多くの通過点の情報を参照することで、内部コマンドの生成精度を高めることができる。
図9(B)を参照して、時刻t1から時刻t2までの期間について、アプリケーション解析部160は、アプリケーションプログラム32をさらに構文解析してさらに先の目標軌跡を決定する。アプリケーション解析部160は、決定されたさらに先の目標軌跡に対して、新たな通過点P4(t4)を算出する。
そして、アプリケーション解析部160は、通過点P1(t1)および通過点P2(t2)の情報に基づいて、通過点P1(t1)から通過点P2(t2)までの移動経路44を算出する。アプリケーション解析部160は、算出した移動経路44から内部コマンドFx2(t)を生成する。なお、図9(B)には、内部コマンドFx2(t)のみを示すが、実際には、同時に制御しなければならないモータの数だけ内部コマンド40が生成されることになる。
以上のような処理手順を繰返すことで、目標軌跡を実現するための内部コマンド40が逐次生成される。
図10は、本実施の形態に係る制御装置100における内部コマンド40を生成するための通過点の処理例を示す模式図である。図10を参照して、アプリケーション解析部160においては、通過点バッファ50が用意されている。通過点バッファ50には、逐次算出される通過点の情報(典型的には、座標値)がその算出順序に従ってキューイング(エンキュー)される。通過点バッファ50からは、算出順序に従って、通過点の情報が読出されて(デキューされて)、対応する内部コマンド40が逐次生成される。
図10に示す通過点バッファ50に格納されている通過点の情報の数を「通過点バッファ数」とも称す。通過点バッファ数は、内部コマンド40を逐次生成するための尤度を示すものである。すなわち、通過点バッファ数が多いほど、アプリケーション解析部160によるアプリケーションプログラム32の構文解析処理において、処理時間のバラツキが発生したとしても、内部コマンド40の生成処理が中断されることなく、継続させることができる。
このようなアプリケーション解析部160の通過点バッファ50に格納される通過点の数に基づいて、対象タスクの負荷状況などを評価し、その評価結果に基づいて、当該対象タスクの優先度を変更できる。
図10に示すような通過点バッファ50に格納されている通過点の情報の数(通過点バッファ数)を用いる場合には、例えば、通過点バッファ数が、予め定められたしきい値を下回るか否かといった条件を採用できる。この条件が満たされると、当該対象タスクの優先度を上げるようにしてもよい。
逆に、通過点バッファ数が、所定期間に亘って、予め定められたしきい値を超えている状態が継続した場合には、当該対象タスクの優先度を下げるようにしてもよい。
このように、アプリケーション解析部160の通過点バッファ50に格納される通過点の数を監視することで、対象タスクの負荷状況を評価できる。
(g4.内部コマンドのバッファ数)
上述したタスクの処理状況として、アプリケーションプログラム32から生成される内部コマンド40のバッファ数に基づいてもよい。すなわち、内部コマンドの生成処理に係る負荷を示す情報は、アプリケーション解析部160により生成された内部コマンドのうち、制御指令演算部164により未だ処理されていない内部コマンドの数を含んでいてもよい。
制御装置100の制御指令演算部164は、アプリケーション解析部160により逐次生成される内部コマンド40に従って、制御周期T1毎に制御指令を演算する。
図11は、本実施の形態に係る制御装置100における内部コマンド40から制御指令を演算する処理例を示す模式図である。図11を参照して、共有メモリ170においては、アプリケーション解析部160により逐次生成される内部コマンドを格納するための内部コマンドバッファ60が用意されている。内部コマンドバッファ60には、逐次算出される内部コマンドがその生成順序に従ってキューイング(エンキュー)される。内部コマンドバッファ60からは、生成順序に従って、内部コマンドが読出されて(デキューされて)、制御指令演算部164が制御指令の演算に使用する。
図11に示す内部コマンドバッファ60に格納されている内部コマンド40の数を「内部コマンドバッファ数」とも称す。内部コマンドバッファ数は、制御指令演算部164が制御指令を制御周期T1毎に演算するための尤度を示すものである。すなわち、内部コマンドバッファ数が多いほど、アプリケーション解析部160による内部コマンド40の生成処理において、処理時間のバラツキが発生したとしても、制御指令の制御周期T1毎の演算処理が中断されることなく、制御指令の出力を継続させることができる。
このような内部コマンドバッファ60に格納される内部コマンド40の数に基づいて、対象タスクの負荷状況などを評価し、その評価結果に基づいて、当該対象タスクの優先度を変更できる。
図11に示すような内部コマンドバッファ60に格納されている内部コマンドの数(内部コマンドバッファ数)を用いる場合には、例えば、内部コマンドバッファ数が、予め定められたしきい値を下回るか否かといった条件を採用できる。この条件が満たされると、当該対象タスクの優先度を上げるようにしてもよい。
逆に、内部コマンドバッファ数が、所定期間に亘って、予め定められたしきい値を超えている状態が継続した場合には、当該対象タスクの優先度を下げるようにしてもよい。
このように、共有メモリ170の内部コマンドバッファ60に格納される内部コマンドの数を監視することで、対象タスクの負荷状況を評価できる。
(g5.アプリケーションプログラム内の特殊コマンド)
上述したタスクの処理状況として、アプリケーションプログラム32内に記述された特殊コマンドを実行すると、その特殊コマンドに基づいて、対象タスクまたは関連するタスクの優先度を変更するようにしてもよい。すなわち、内部コマンドの生成処理に係る負荷を示す情報は、アプリケーションプログラム32に明示的に記述される特殊コマンドを含んでいてもよい。
図12は、本実施の形態に係る制御装置100において処理されるアプリケーションプログラムの一例を示す模式図である。図12(A)には、G言語で記述されたアプリケーションプログラム32Aの一例を示し、図12(B)には、ロボット言語で記述されたアプリケーションプログラム32Bの一例を示す。
図12(A)を参照して、アプリケーションプログラム32Aは、「050」ブロックに特殊コマンド320を含む。特殊コマンド320は、内部コマンド40の生成精度を2倍にするための命令である。アプリケーション解析部160が特殊コマンド320を実行すると、優先度変更部156に対してメッセージが通知される。優先度変更部156は、アプリケーション解析部160からのメッセージの内容に基づいて、アプリケーションプログラム32Aを処理するタスクについての優先度を変更する。
同様に、図12(B)を参照して、アプリケーションプログラム32Bは、一連のコマンド群の途中に特殊コマンド322を含む。特殊コマンド322は、アプリケーションプログラム32Bと、他のアプリケーションプログラムとを連係して動作させるための命令である。すなわち、特殊コマンド322が実行されることで、別のアプリケーションプログラムに対する処理が開始される。
アプリケーション解析部160が特殊コマンド322を実行すると、優先度変更部156に対してメッセージが通知される。優先度変更部156は、アプリケーション解析部160からのメッセージの内容に基づいて、アプリケーションプログラム32Bから新たに起動されるアプリケーションプログラムを処理するタスクについての優先度を変更する。あるいは、アプリケーションプログラム32Bを処理するタスクについても優先度を変更してもよい。
なお、図12に示すアプリケーションプログラム32A,32Bは、一例であり、どのような特殊コマンドを定義してもよい。
このように、アプリケーション解析部160により処理されるアプリケーションプログラム内に特殊コマンドを明示的に規定することで、当該アプリケーションプログラムを処理するタスクの優先度を事前に変更することができ、対象タスクの将来的な負荷を推定した正確な優先度の調整を実現できる。
(g6.その他)
上述の説明においては、内部コマンドの生成処理に係る負荷を示す情報となり得る複数のファクタについて例示したが、これらのうちいずれか1つのファクタのみを用いるようにしてもよいし、任意の複数のファクタを組み合わせて用いてもよい。さらに、複数のファクタを組み合わせるにあたって、ファクタに応じた重み付けを適用してもよい。これらのファクタの利用形態としては、状況に応じた方法を適用できる。
<H.優先度変更に係る処理手順>
次に、低優先タスクに設定される優先度の変更に係る処理手順について説明する。図13は、本実施の形態に係る制御装置100における優先度変更の処理手順を示すフローチャートである。図13に示す各ステップは、典型的には、制御装置100のプロセッサ102がシステムプログラム34を実行することで実現される。
図13を参照して、PLC処理エンジン150の優先度変更部156は、条件設定情報158に規定されている条件に関連する情報を収集する(ステップS100)。そして、優先度変更部156は、収集した情報が条件設定情報158に規定されているいずれかの条件を満たすか否かを判断する(ステップS102)。
収集した情報が条件設定情報158に規定されているいずれの条件も満たさなければ(ステップS102においてNO)、ステップS100以下の処理が繰返される。
一方、収集した情報が条件設定情報158に規定されているいずれかの条件を満たすと(ステップS102においてYES)、優先度変更部156は、当該満たされた条件に対応する内容に従って、対象のタスクについての優先度を変更する(ステップS104)。そして、ステップS100以下の処理が繰返される。
例えば、図13に示すような一連の処理は、制御周期T1毎に繰返し実行されてもよい。
<I.複数のアプリケーションプログラム間の優先度調停>
説明の便宜上、上述の説明においては、制御装置100において、1つのアプリケーションプログラム32が実行される場合について例示したが、複数のアプリケーションプログラム32を並列的に実行させることもできる。このような場合には、各アプリケーションプログラムを処理するタスクについての優先度を変更するのみならず、それぞれのアプリケーションプログラムを処理するタスク間の優先度を相対的に変更(すなわち、優先度の調停)してもよい。
図14は、本実施の形態に係る制御装置100における複数のアプリケーションプログラムを並列的に実行させる場合の実行タイミングの一例を示すタイムチャートである。図14に示すタイムチャートにおいては、アプリケーション実行周期T21毎に構文解析されるアプリケーションプログラム1と、アプリケーション実行周期T22毎に構文解析されるアプリケーションプログラム2とが並列的に実行される例を示す。
図14を参照して、高優先タスクとして、第1タスク10(入出力リフレッシュ処理)に加えて、シーケンス命令実行処理12、ユーザプログラムに含まれるモーション命令に従う制御指令の出力処理16、アプリケーションプログラム1に従う制御指令の出力処理14−1、および、アプリケーションプログラム2に従う制御指令の出力処理14−2が設定されている。
アプリケーションプログラム1およびアプリケーションプログラム2の構文解析は、低有線タスクとして設定されている。
なお、図14に示す例では、高優先タスクおよび低優先タスクに対してそれぞれ独立したプロセッサリソースを割当てることができるようになっている。
より具体的には、アプリケーション解析部160は、アプリケーション実行周期T21(図14に示す例では、制御周期の2倍)毎に、アプリケーションプログラム1の少なくとも一部を構文解析して内部コマンド40を逐次生成する。生成される内部コマンド40は、逐次、共有メモリ170−1内のバッファにキューイング(エンキュー)される。
また、アプリケーション解析部160は、アプリケーション実行周期T22(図14に示す例では、制御周期の2倍)毎に、アプリケーションプログラム1の少なくとも一部を構文解析して内部コマンド40を逐次生成する。生成される内部コマンド40は、逐次、共有メモリ170−2内のバッファにキューイング(エンキュー)される。
なお、アプリケーションプログラム1およびアプリケーションプログラム2をそれぞれ処理する互いに独立した2つのアプリケーション解析部160を用意してもよい。
このような構成においては、低優先タスクの間で、共通のプロセッサリソースを共有することになる。すなわち、低優先タスク用のプロセッサリソースは、低優先タスクにそれぞれ設定されている優先度の相対的な関係に基づいて配分されることになる。そのため、上述したような優先度の変更処理については、低優先タスクとして設定されているそれぞれのタスクに対して適用してもよいし、タスク間の優先度の相対的な関係を調整するように適合してもよい。
タスク間の優先度の相対的な関係を調整するとは、例えば、一方のタスクの優先度を上げる条件が満たされた場合には、当該タスクの優先度を上げてもよいが、他方のタスクの優先度を下げるようにしてもよい。すなわち、複数のタスクのうちいずれかのタスクを優先的に処理すべきとの条件が満たされると、当該対象のタスクの優先度を他のタスクの優先度より相対的に高くすればよく、その実現方法についてはどのようなものであってもよい。
このように、低優先タスクとして複数のタスクが設定されている場合には、タスク間の優先度を調停するようにしてもよい。すなわち、アプリケーション解析部160が複数のアプリケーションプログラム32のそれぞれについて構文解析を実行してそれぞれの内部コマンドを逐次生成する場合には、優先度変更部156は、複数のアプリケーションプログラム32のそれぞれの構文解析に関連付けられた複数のタスクの間で、優先度を変更するようにしてもよい。このような優先度の調停は、アプリケーション調停部162および優先度変更部156(いずれも図4)が連係することで実現されてもよい。
<J.オーバーラップ動作>
次に、本実施の形態に係る制御装置100を用いた複数の制御アプリケーション間のオーバーラップ動作について説明する。
図15は、本実施の形態に係る制御装置100が提供するオーバーラップ動作を説明するための模式図である。図15には、例えば、図2に示すようなロボット520およびCNC工作機械530を含む構成への適用例を示す。具体的な動作として、ロボット520は、コンベア544により搬送されるワークWをピックアップして、CNC工作機械530の内部に配置する。CNC工作機械530は、ワークWに対して加工処理を実施する。そして、ロボット520は、CNC工作機械530の内部からワークWを取り出して、次工程の受入れ位置へ当該ワークWを配置する。
このような一連の動作において、生産性を向上させるためには、例えば、CNC工作機械530でのワークWに対する加工が終了する前に、ロボット520をワークWの取出位置まで移動させておくことが好ましい。すなわち、CNC工作機械530およびロボット520を、ある関係を維持した状態で、並列的に動作させる必要がある。このような複数の制御アプリケーションをある関係を維持した状態で動作させることを、以下では「オーバーラップ動作」とも称す。
より具体的には、「オーバーラップ動作」は、あるアプリケーションプログラムに従う動作が開始した後に、別のアプリケーションプログラムに従う動作が後追いで開始される状態を含む。別のアプリケーションプログラムに従う動作を開始する条件(以下、「オーバーラップ条件」とも称す。)は、動作開始からの予め定められた時間の経過、および、所定位置への到達などを含む。
図15には、CNC工作機械530においてワークWに対する加工が終了する直前の動作例を示す。CNC工作機械530のワークWに対する加工処理が時刻t2に終了するとすれば、ロボット520は、時刻t2において加工処理が終了したワークWを取り出すことが好ましい。そのため、ロボット520は、時刻t2において、CNC工作機械530のワーク取出位置に到着できるように、時刻t1から動作を開始する。そして、ロボット520は、時刻t2においてワークWを取り出し、時刻t3から次工程への移動を開始する。一方、CNC工作機械530は、ワークWがロボット520により取り出されるとすぐに、新たなワークWを受入れるための受入位置までの移動を開始する。
このように、CNC工作機械530およびロボット520を互いに連係させて、並列的に動作させることで、生産性を高めることができる。
以下、このようなオーバーラップ動作を実現するための構成および処理について説明する。なお、本明細書における「オーバーラップ動作」は、複数の制御アプリケーションが任意のタイミングを基準にして同時に動作を開始する場合を含み得る。
図16は、本実施の形態に係る制御装置100におけるオーバーラップ動作を実現するためのプログラム例を示す模式図である。図16に示すユーザプログラム30は、図2に示す、コンベア544、CNC工作機械530、およびロボット520の制御に向けられる。
より具体的には、ユーザプログラム30は、コンベア544を駆動するサーボモータ542を制御するためのモーション命令を規定するファンクションブロック302と、CNC工作機械530を制御するためのアプリケーションプログラム32−1(NCプログラム)の実行開始を指示するファンクションブロック304と、ロボット520を制御するためのアプリケーションプログラム32−2(ロボットプログラム)の実行開始を指示するファンクションブロック306とを含む。
ファンクションブロック302,304,306の各々は、運転開始フラグがTRUEになることで、指定された処理を実行する。
アプリケーションプログラム32−1およびアプリケーションプログラム32−2には、オーバーラップ動作を行うための特殊コマンドが付加されている。図16には、アプリケーションプログラム32−1の049ブロック目に規定されている「G01 X−10 Y−50」とのコマンドに従う動作に、アプリケーションプログラム32−2の3行目に規定されている「MOVE X200 Y100」をオーバーラップ動作させる例を示している。
このようなオーバーラップ動作を実現するために、先行する動作を規定するコマンド(049ブロック目の「G01 X−10 Y−50」)の直後に、特殊コマンド342が規定される。特殊コマンド342は、「OverlapMove」との命令に加えて、当該命令を特定するための識別情報(図16に示す例では、引数としての「1」)が付加されている。
一方、アプリケーションプログラム32−2には、オーバーラップさせたい動作を規定するコマンド(図16に示す例では、「MOVE X200 Y100」)の直前に、特殊コマンド344が規定される。特殊コマンド344は、「OverlapStart」との命令に加えて、当該命令を特定するための識別情報(図16に示す例では、「1」)、および、オーバーラップ条件(図16に示す例では、「100ms」)が付加されている。オーバーラップ条件としては、時間および位置に加えて、任意の情報を用いることができる。
図17は、時間をオーバーラップ条件とした場合のオーバーラップ動作の一例を示す模式図である。図17を参照して、アプリケーションプログラム32−1の049ブロック目に記載されたコマンドに従う動作が開始された後、オーバーラップ条件である「100ms」の経過後に、アプリケーションプログラム32−2の「MOVE X200 Y100」とのコマンドに従う動作が開始される。すなわち、アプリケーションプログラム32−2に従う動作は、アプリケーションプログラム32−1の指定された動作の開始から、オーバーラップ条件に規定された時間の経過後に開始されることとなり、両者をオーバーラップして動作させることができる。
図18は、位置をオーバーラップ条件とした場合のオーバーラップ動作の一例を示す模式図である。図18を参照して、アプリケーションプログラム32−1の049ブロック目に記載されたコマンドに従う動作が開始された後、オーバーラップ条件である所定の位置への到着(あるいは、所定の範囲内への進入)を条件として、アプリケーションプログラム32−2の「MOVE X200 Y100」とのコマンドに従う動作が開始される。すなわち、アプリケーションプログラム32−2に従う動作は、アプリケーションプログラム32−1の指定された動作の開始から、オーバーラップ条件に規定された位置の条件が成立すると開始されることとなり、両者をオーバーラップして動作させることができる。
図19は、本実施の形態に係る制御装置100においてオーバーラップ動作を実現するための機能構成を示す模式図である。図19を参照して、制御装置100は、2つのアプリケーション解析部160−1,160−2を有している。アプリケーション解析部160−1および160−2は、それぞれNCプログラムおよびロボットプログラムを処理する。
アプリケーション解析部160−1,160−2がアプリケーションプログラムを構文解析して生成される内部コマンドは、共有メモリ170に逐次格納される。制御指令演算部164は、共有メモリ170に逐次格納されるそれぞれの内部コマンドを逐次読出して、制御指令1および制御指令2を出力する。
制御指令演算部164は、読出した内部コマンドの処理にどの程度の時間を要するのかを判断できる。例えば、各内部コマンドは、ある時間範囲についての時間と制御指令との関係を規定する関数であり、このような関数に入力可能な時間範囲を参照することで、指定された目的位置に到達するのに要する時間を算出できる。
制御指令演算部164は、現在実行中の内部コマンドの処理に要する時間、すなわち現在位置から指定された目的位置までの移動に要する移動時間を逐次算出することができる。制御指令演算部164は、逐次算出される移動時間を逐次アプリケーション解析部160−1,160−2へ出力する。
アプリケーション解析部160−1,160−2は、アプリケーションプログラムに含まれるコマンドをある程度余分に構文解析(すなわち、先読み(Look Ahead))しており、オーバーラップ動作を指示するための特殊コマンドの存在を予め知ることができる。
また、アプリケーション解析部160−1とアプリケーション解析部160−2との間では、オーバーラップ動作に関する情報(典型的には、オーバーラップ条件)を互いに遣り取り可能になっている。
アプリケーション解析部160−1,160−2は、オーバーラップ動作を指示するための特殊コマンドが存在する行の直前まで処理が進むと、制御指令演算部164からの移動時間に基づいて、オーバーラップ条件を成立させることができるか否かを判断する。すなわち、アプリケーション解析部160−1,160−2は、オーバーラップ動作をどの時点で開始しなければならないのかを知ることができる。
アプリケーション解析部160−1,160−2は、指定されたオーバーラップ条件に基づいてオーバーラップ動作を開始できないと事前に判断すると、優先度変更部156に対して、アプリケーション解析部160−1,160−2による構文解析処理を含む低優先タスクの優先度を上げるように、優先度変更部156へ要求(優先度変更要求)を発する。その結果、優先度変更部156によるアプリケーションプログラムの構文解析に対して、より多くのプロセッサリソースが割当てられることとなり、これによって、指定されたタイミングでオーバーラップ動作を開始できる。
すなわち、オーバーラップ動作の開始時刻前に、必要なアプリケーションプログラムの解析処理を完了させることができる。
以上のように、アプリケーションプログラムの構文解析に係るタスクの優先度を動的に変更することで、オーバーラップ動作を確実に実行できる。
一般的に、CNC工作機械を制御するためのアプリケーションプログラムおよびロボットを制御するためのアプリケーションプログラムは、1行ずつ逐次実行して実行するインタプリタ方式の言語で記述されている。このようなインタプリタ方式のプログラムは、各コマンドによって指定される移動距離などは、コマンドの種類および引数などによって変化するため、各行の処理に要する時間はコマンド毎に異なる。
さらに、CNC工作機械およびロボットをそれぞれ専用のコントローラで制御する場合いは、各コントローラの制御周期およびコントローラ間の通信周期などの影響を受けて、緻密なオーバーラップ動作を実現することは困難であった。
これに対して、本実施の形態に係る制御装置100においては、複数のアプリケーションプログラムをそれぞれ構文解析し、制御指令を制御周期毎に出力するとともに、アプリケーション間の同期動作あるいはオーバーラップ動作させることができる。
このような同期動作あるいはオーバーラップ動作によって、CNC工作機械とロボットとが連係するような生産装置をより効率的に稼動させることができ、生産能力を高めることができる。
<K.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
1または複数のプロセッサを有する制御装置(100)であって、
実行毎に全体がスキャンされる第1のプログラム(30)と、逐次実行される第2のプログラム(32)とを格納する記憶部(108)と、
第1の周期毎に前記第1のプログラムを実行して第1の制御指令を出力するプログラム実行部(152)と、
前記第1の周期より長い第2の周期毎に前記第2のプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成する解析部(160)と、
前記解析部により生成された内部コマンドに従って前記第1の周期毎に第2の制御指令を出力する指令演算部(164)と、
予め設定された優先度に基づいて、1または複数のタスクに対してプロセッサリソースを割当てるスケジューラ(154)とを備え、
前記スケジューラには、少なくとも、前記プログラム実行部および前記指令演算部による処理実行を含む第1の優先度を有する第1のタスクと、前記解析部による処理実行を含む前記第1の優先度より低い第2の優先度を有する第2のタスクと、前記第1のタスクおよび前記第2のタスクとは異なる処理内容の実行を含む第3の優先度を有する第3のタスクとが設定されており、
前記解析部における処理状況を監視するとともに、前記解析部における処理状況が予め定められた条件を満たすと、前記第2のタスクに設定されている前記第2の優先度を当該条件に応じて変更する優先度変更部(156)とを備える、制御装置。
[構成2]
前記優先度変更部は、前記解析部による内部コマンドの生成処理に係る負荷を示す情報に基づいて、前記解析部における処理状況を判断する、構成1に記載の制御装置。
[構成3]
前記負荷を示す情報は、前記解析部による前記第2のプログラムの構文解析に要する時間(602;603;604)を含む、構成2に記載の制御装置。
[構成4]
前記負荷を示す情報は、前記解析部による前記第2のプログラムの構文解析に要する時間が前記第2の周期の長さを超過したか否かの情報(605)を含む、構成2または3に記載の制御装置。
[構成5]
前記解析部は、前記第2のプログラムを構文解析して軌跡上の通過点を算出し、算出した通過点に基づいて内部コマンドを生成するように構成されており、
前記負荷を示す情報は、前記解析部が前記内部コマンドを生成するために事前に算出した通過点の数を含む、構成2〜4のいずれか1項に記載の制御装置。
[構成6]
前記負荷を示す情報は、前記解析部により生成された内部コマンドのうち、前記指令演算部により未だ処理されていない内部コマンドの数を含む、構成2〜5のいずれか1項に記載の制御装置。
[構成7]
前記負荷を示す情報は、前記第2のプログラムに記述される特殊コマンドを含む、構成2〜6のいずれか1項に記載の制御装置。
[構成8]
前記優先度変更部は、前記第2のタスクに設定されている前記第2の優先度を上げた後に、予め定められた別の条件が満たされると、前記第2の優先度を元に戻す、構成1〜7のいずれか1項に記載の制御装置。
[構成9]
前記解析部は、複数の前記第2のプログラムのそれぞれについて構文解析を実行してそれぞれの内部コマンドを逐次生成するように構成されており、
前記優先度変更部は、前記複数の第2のプログラムのそれぞれの構文解析に関連付けられた複数の前記第2のタスクの間で、優先度を変更する、構成1〜8のいずれか1項に記載の制御装置。
<L.利点>
本実施の形態に係る制御装置は、プロセッサリソースをスケジューリングすることで、シーケンス命令およびモーション命令を含むユーザプログラムに加えて、1または複数のアプリケーションプログラムを並列的に実行できる。このような並列実行において、制御指令を制御周期毎に出力できるので、アプリケーションプログラムに従う制御においても、ユーザプログラムに従う制御と同じ制御精度を実現できる。
本実施の形態に係る制御装置は、インタプリタ方式の言語で記述された1または複数のコマンドからなるアプリケーションプログラムを構文解析して内部コマンドを生成するとともに、生成された内部コマンドに基づいて制御指令を演算する。このようなアプリケーションプログラムの構文解析の処理および制御指令の演算処理は、互いに連係して実行する必要がある。そのため、本実施の形態に係る制御装置は、アプリケーションプログラムの構文解析に係る処理の負荷状況などに応じて、当該構文解析のタスクに設定されている優先度を動的に変化させる。これによって、各コマンドの構文解析に要する時間が異なるアプリケーションプログラムを処理する場合であっても、制御指令の制御周期毎の出力を保障できる。
本実施の形態に係る制御装置は、複数のアプリケーションプログラム間で、一方のアプリケーションプログラムに従う動作が開始した後、遅れて、別のアプリケーションプログラムに従う動作が開始するといった、オーバーラップ動作を実現できる。このようなオーバーラップ動作を実現するために、制御装置は、必要な内部コマンドの生成を事前に完了できるように、必要に応じて、タスクの優先度を変更する。このようなタスクの優先度の動的な変更を活用しつつ、オーバーラップ動作を実現することで、設備をより効率的に動作させることもでき、これによって生産効率を高めることもできる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、2 フィールドネットワーク、6 上位ネットワーク、10 第1タスク、12 シーケンス命令実行処理、14,16 出力処理、18 第2タスク、20 第3タスク、22 第4タスク、24 第5タスク、30 ユーザプログラム、32,32A,32B アプリケーションプログラム、34 システムプログラム、38 レシピ情報、40 内部コマンド、44 移動経路、50 通過点バッファ、60 内部コマンドバッファ、100 制御装置、102 プロセッサ、104 チップセット、106 主メモリ、108 ストレージ、110 上位ネットワークコントローラ、112 USBコントローラ、114 メモリカードインターフェイス、116 メモリカード、120 内部バスコントローラ、122 I/Oユニット、130 フィールドネットワークコントローラ、150 PLC処理エンジン、152 シーケンスプログラム実行部、154 スケジューラ、156 優先度変更部、158 条件設定情報、160 アプリケーション解析部、162 アプリケーション調停部、164 制御指令演算部、170 共有メモリ、172 共有メモリ制御部、174 表示機能部、176 フィールドネットワークインターフェイス、178 上位ネットワークインターフェイス、200 サポート装置、300 サーバ装置、302,304,306 ファンクションブロック、320,322,342,344 特殊コマンド、400 表示装置、500 フィールド機器、510 リモートI/O装置、520 ロボット、522 ロボットコントローラ、530 工作機械、540 サーボドライバ、542 サーボモータ、544 コンベア、546 ワークテーブル、600 システム変数群、601 タスク実行回数変数、602 実行時間直前値変数、603 実行時間最大値、604 実行時間最小値、605 タスク実行周期超過有無変数、606 タスク実行周期超過回数変数、P0,P1,P2,P3,P4 通過点、T1 制御周期、T2,T21,T22 アプリケーション実行周期、W ワーク。

Claims (8)

  1. 1または複数のプロセッサを有する制御装置であって、
    実行毎に全体がスキャンされる第1のプログラムと、逐次実行される第2のプログラムとを格納する記憶部と、
    第1の周期毎に前記第1のプログラムを実行して第1の制御指令を出力するプログラム実行部と、
    前記第1の周期より長い第2の周期毎に前記第2のプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成する解析部と、
    前記解析部により生成された内部コマンドに従って前記第1の周期毎に第2の制御指令を出力する指令演算部と、
    予め設定された優先度に基づいて、1または複数のタスクに対してプロセッサリソースを割当てるスケジューラとを備え、
    前記スケジューラには、少なくとも、前記プログラム実行部および前記指令演算部による処理実行を含む第1の優先度を有する第1のタスクと、前記解析部による処理実行を含む前記第1の優先度より低い第2の優先度を有する第2のタスクと、前記第1のタスクおよび前記第2のタスクとは異なる処理内容の実行を含む第3の優先度を有する第3のタスクとが設定されており、
    前記解析部における処理状況を監視するとともに、前記解析部における処理状況が予め定められた条件を満たすと、前記第2のタスクに設定されている前記第2の優先度と前記第3のタスクに設定されている前記第3の優先度との間で、優先順位を当該条件に応じて変更する優先度変更部とを備え、
    前記優先度変更部は、前記解析部による内部コマンドの生成処理に係る負荷を示す情報に基づいて、前記解析部における処理状況を判断し、
    前記負荷を示す情報は、前記解析部による前記第2のプログラムの構文解析に要する時間を含む、制御装置。
  2. 1または複数のプロセッサを有する制御装置であって、
    実行毎に全体がスキャンされる第1のプログラムと、逐次実行される第2のプログラムとを格納する記憶部と、
    第1の周期毎に前記第1のプログラムを実行して第1の制御指令を出力するプログラム実行部と、
    前記第1の周期より長い第2の周期毎に前記第2のプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成する解析部と、
    前記解析部により生成された内部コマンドに従って前記第1の周期毎に第2の制御指令を出力する指令演算部と、
    予め設定された優先度に基づいて、1または複数のタスクに対してプロセッサリソースを割当てるスケジューラとを備え、
    前記スケジューラには、少なくとも、前記プログラム実行部および前記指令演算部による処理実行を含む第1の優先度を有する第1のタスクと、前記解析部による処理実行を含む前記第1の優先度より低い第2の優先度を有する第2のタスクと、前記第1のタスクおよび前記第2のタスクとは異なる処理内容の実行を含む第3の優先度を有する第3のタスクとが設定されており、
    前記解析部における処理状況を監視するとともに、前記解析部における処理状況が予め定められた条件を満たすと、前記第2のタスクに設定されている前記第2の優先度と前記第3のタスクに設定されている前記第3の優先度との間で、優先順位を当該条件に応じて変更する優先度変更部とを備え、
    前記優先度変更部は、前記解析部による内部コマンドの生成処理に係る負荷を示す情報に基づいて、前記解析部における処理状況を判断し、
    前記負荷を示す情報は、前記解析部による前記第2のプログラムの構文解析に要する時間が前記第2の周期の長さを超過したか否かの情報を含む、制御装置。
  3. 1または複数のプロセッサを有する制御装置であって、
    実行毎に全体がスキャンされる第1のプログラムと、逐次実行される第2のプログラムとを格納する記憶部と、
    第1の周期毎に前記第1のプログラムを実行して第1の制御指令を出力するプログラム実行部と、
    前記第1の周期より長い第2の周期毎に前記第2のプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成する解析部と、
    前記解析部により生成された内部コマンドに従って前記第1の周期毎に第2の制御指令を出力する指令演算部と、
    予め設定された優先度に基づいて、1または複数のタスクに対してプロセッサリソースを割当てるスケジューラとを備え、
    前記スケジューラには、少なくとも、前記プログラム実行部および前記指令演算部による処理実行を含む第1の優先度を有する第1のタスクと、前記解析部による処理実行を含む前記第1の優先度より低い第2の優先度を有する第2のタスクと、前記第1のタスクおよび前記第2のタスクとは異なる処理内容の実行を含む第3の優先度を有する第3のタスクとが設定されており、
    前記解析部における処理状況を監視するとともに、前記解析部における処理状況が予め定められた条件を満たすと、前記第2のタスクに設定されている前記第2の優先度と前記第3のタスクに設定されている前記第3の優先度との間で、優先順位を当該条件に応じて変更する優先度変更部とを備え、
    前記優先度変更部は、前記解析部による内部コマンドの生成処理に係る負荷を示す情報に基づいて、前記解析部における処理状況を判断し、
    前記解析部は、前記第2のプログラムを構文解析して軌跡上の通過点を算出し、算出した通過点に基づいて内部コマンドを生成するように構成されており、
    前記負荷を示す情報は、前記解析部が前記内部コマンドを生成するために事前に算出した通過点の数を含む、制御装置。
  4. 1または複数のプロセッサを有する制御装置であって、
    実行毎に全体がスキャンされる第1のプログラムと、逐次実行される第2のプログラムとを格納する記憶部と、
    第1の周期毎に前記第1のプログラムを実行して第1の制御指令を出力するプログラム実行部と、
    前記第1の周期より長い第2の周期毎に前記第2のプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成する解析部と、
    前記解析部により生成された内部コマンドに従って前記第1の周期毎に第2の制御指令を出力する指令演算部と、
    予め設定された優先度に基づいて、1または複数のタスクに対してプロセッサリソースを割当てるスケジューラとを備え、
    前記スケジューラには、少なくとも、前記プログラム実行部および前記指令演算部による処理実行を含む第1の優先度を有する第1のタスクと、前記解析部による処理実行を含む前記第1の優先度より低い第2の優先度を有する第2のタスクと、前記第1のタスクおよび前記第2のタスクとは異なる処理内容の実行を含む第3の優先度を有する第3のタスクとが設定されており、
    前記解析部における処理状況を監視するとともに、前記解析部における処理状況が予め定められた条件を満たすと、前記第2のタスクに設定されている前記第2の優先度と前記第3のタスクに設定されている前記第3の優先度との間で、優先順位を当該条件に応じて変更する優先度変更部とを備え、
    前記優先度変更部は、前記解析部による内部コマンドの生成処理に係る負荷を示す情報に基づいて、前記解析部における処理状況を判断し、
    前記負荷を示す情報は、前記第2のプログラムに記述される特殊コマンドを含む、制御装置。
  5. 前記優先度変更部は、
    前記解析部による内部コマンドの生成処理の余裕がなくなった場合に、前記第2のタスクに設定されている前記第2の優先度を、前記第3のタスクに設定されている前記第3の優先度よりも高め、
    前記解析部による内部コマンドの生成処理の余裕が生じた場合に、前記第2のタスクに設定されている前記第2の優先度を、前記第3のタスクに設定されている前記第3の優先度よりも低くする、請求項1〜4のいずれか1項に記載の制御装置。
  6. 前記負荷を示す情報は、前記解析部により生成された内部コマンドのうち、前記指令演算部により未だ処理されていない内部コマンドの数を含む、請求項1〜5のいずれか1項に記載の制御装置。
  7. 前記優先度変更部は、前記第2のタスクに設定されている前記第2の優先度を上げた後に、予め定められた別の条件が満たされると、前記第2の優先度を元に戻す、請求項1〜6のいずれか1項に記載の制御装置。
  8. 前記解析部は、複数の前記第2のプログラムのそれぞれについて構文解析を実行してそれぞれの内部コマンドを逐次生成するように構成されており、
    前記優先度変更部は、前記複数の第2のプログラムのそれぞれの構文解析に関連付けられた複数の前記第2のタスクの間で、優先度を変更する、請求項1〜7のいずれか1項に記載の制御装置。
JP2017185146A 2017-09-26 2017-09-26 制御装置 Active JP6806019B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017185146A JP6806019B2 (ja) 2017-09-26 2017-09-26 制御装置
EP18176808.6A EP3477405B1 (en) 2017-09-26 2018-06-08 Control device
US16/004,432 US10761884B2 (en) 2017-09-26 2018-06-11 Control device for operating multiple types of programs in different execution formats
CN201810595167.5A CN109557890B (zh) 2017-09-26 2018-06-11 控制装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017185146A JP6806019B2 (ja) 2017-09-26 2017-09-26 制御装置

Publications (3)

Publication Number Publication Date
JP2019061466A JP2019061466A (ja) 2019-04-18
JP2019061466A5 JP2019061466A5 (ja) 2019-06-13
JP6806019B2 true JP6806019B2 (ja) 2020-12-23

Family

ID=62684597

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017185146A Active JP6806019B2 (ja) 2017-09-26 2017-09-26 制御装置

Country Status (4)

Country Link
US (1) US10761884B2 (ja)
EP (1) EP3477405B1 (ja)
JP (1) JP6806019B2 (ja)
CN (1) CN109557890B (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10756990B1 (en) 2017-09-22 2020-08-25 Equinix, Inc. Monitoring and performance improvement of enterprise applications using correlated data associated with a plurality of service layers
US10558541B1 (en) * 2017-09-22 2020-02-11 Equinix, Inc. Agent-based monitoring of network resources
JP6493506B1 (ja) * 2017-12-15 2019-04-03 オムロン株式会社 産業用制御システムとその支援装置、制御支援方法およびプログラム
JP7087585B2 (ja) * 2018-03-30 2022-06-21 日本電気株式会社 情報処理装置、制御方法、及びプログラム
CN110729006B (zh) * 2018-07-16 2022-07-05 超威半导体(上海)有限公司 存储器控制器中的刷新方案
JP6950665B2 (ja) * 2018-11-02 2021-10-13 横河電機株式会社 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
JP7236939B2 (ja) * 2019-06-03 2023-03-10 日立Astemo株式会社 制御装置および制御方法
JP7230703B2 (ja) * 2019-06-20 2023-03-01 オムロン株式会社 制御装置
JP7277292B2 (ja) * 2019-07-08 2023-05-18 ファナック株式会社 Plc装置
JP7364428B2 (ja) * 2019-10-30 2023-10-18 ファナック株式会社 プログラマブルコントローラ
JP7294078B2 (ja) * 2019-11-12 2023-06-20 オムロン株式会社 制御装置
JP7414494B2 (ja) * 2019-12-04 2024-01-16 ファナック株式会社 ロボット作業システム
JP6761158B1 (ja) * 2019-12-16 2020-09-23 株式会社安川電機 プログラム作成装置、プログラム作成方法、及びプログラム
CN113126567A (zh) * 2019-12-30 2021-07-16 苏州谷夫道自动化科技有限公司 一种数控系统及其印刷线路板
JP7381711B2 (ja) * 2020-02-27 2023-11-15 ファナック株式会社 情報処理装置
JP2021142625A (ja) * 2020-03-13 2021-09-24 オムロン株式会社 ロボット制御システムおよび制御方法
US11513498B2 (en) * 2020-08-03 2022-11-29 Caterpillar Paving Products Inc. Transitioning between manned control mode and unmanned control mode based on assigned priority
CN116249944A (zh) * 2020-10-09 2023-06-09 发那科株式会社 控制装置
JP7522219B2 (ja) * 2020-11-09 2024-07-24 ファナック株式会社 数値制御システム及び産業機械の制御方法
EP4258645A4 (en) * 2020-12-04 2024-08-28 Nippon Telegraph And Telephone Corporation Control device, control method, and program
TW202224877A (zh) * 2020-12-15 2022-07-01 日商發那科股份有限公司 數值控制系統及產業機械的控制方法
JP7657618B2 (ja) * 2021-03-08 2025-04-07 キヤノン株式会社 制御装置、システム、基板処理装置、物品の製造方法、制御方法及びプログラム
CN117480457A (zh) * 2021-06-18 2024-01-30 发那科株式会社 控制装置以及控制方法
DE102021211731A1 (de) * 2021-10-18 2023-04-20 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zur Verarbeitung von Daten mit einem Datenverarbeitungsnetzwerk umfassend eine Mehrzahl von Datenverarbeitungsmodulen, Datenverarbeitungsmodul und Datenverarbeitungsnetzwerk
JP7844882B2 (ja) * 2022-01-14 2026-04-14 オムロン株式会社 制御システム及びプログラム
JPWO2024257172A1 (ja) * 2023-06-12 2024-12-19

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3727637B2 (ja) * 1994-12-26 2005-12-14 三菱電機株式会社 制御ソフトウェア実行システムの制御方法
JP3386777B2 (ja) 1999-05-11 2003-03-17 ファナック株式会社 数値制御システム
JP3723015B2 (ja) * 1999-07-26 2005-12-07 三菱電機株式会社 数値制御装置
US6594541B1 (en) * 2000-01-10 2003-07-15 Siemens Aktiengesellschaft Universal motion control
WO2001082075A2 (en) * 2000-04-25 2001-11-01 Icplanet Acquisition Corporation System and method for scheduling execution of cross-platform computer processes
US6408277B1 (en) * 2000-06-21 2002-06-18 Banter Limited System and method for automatic task prioritization
KR20030000081A (ko) * 2001-06-22 2003-01-06 주식회사 미라콤아이앤씨 엠이에스에서 로트의 우선 순위 제어 시스템 및 그 방법
US20030037091A1 (en) * 2001-08-09 2003-02-20 Kozo Nishimura Task scheduling device
US8117530B2 (en) * 2007-02-19 2012-02-14 International Business Machines Corporation Extensible markup language parsing using multiple XML parsers
US20080244592A1 (en) * 2007-03-27 2008-10-02 Kabushiki Kaisha Toshiba Multitask processing device and method
JP5210070B2 (ja) * 2008-07-25 2013-06-12 オークマ株式会社 数値制御工作機械
US8769543B2 (en) * 2010-09-27 2014-07-01 Throughputer, Inc. System and method for maximizing data processing throughput via application load adaptive scheduling and context switching
US8719415B1 (en) * 2010-06-28 2014-05-06 Amazon Technologies, Inc. Use of temporarily available computing nodes for dynamic scaling of a cluster
JP2012048471A (ja) * 2010-08-26 2012-03-08 Toshiba Mach Co Ltd 数値制御装置およびマクロプログラム実行方法
US8924981B1 (en) * 2010-11-12 2014-12-30 Teradat US, Inc. Calculating priority indicators for requests in a queue
JP4894961B1 (ja) * 2011-03-15 2012-03-14 オムロン株式会社 Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体
US9483306B2 (en) * 2011-08-26 2016-11-01 Hitachi, Ltd. Predictive sequential calculation device
JP6626240B2 (ja) * 2014-03-13 2019-12-25 オムロン株式会社 コントローラ
JP6151669B2 (ja) * 2014-06-27 2017-06-21 ファナック株式会社 加工プログラム指令内容に応じてcpu負荷を分散可能な数値制御装置
JP6465620B2 (ja) 2014-10-31 2019-02-06 ヤマハ発動機株式会社 制御システムおよび制御方法
DE102015105436A1 (de) * 2015-04-09 2016-10-13 Beckhoff Automation Gmbh Übersetzungsmodul, Verarbeitungsmodul und Steuerungssystem
JP6578857B2 (ja) * 2015-09-30 2019-09-25 ブラザー工業株式会社 数値制御装置と数値制御装置の制御方法
WO2017080613A1 (en) * 2015-11-13 2017-05-18 Telefonaktiebolaget Lm Ericsson (Publ) Trainer of many core systems for adaptive resource control
JP6333796B2 (ja) * 2015-11-25 2018-05-30 ファナック株式会社 複数のcpuコアで最適な負荷配分を行う数値制御装置
DE102017001765B4 (de) * 2016-02-29 2024-08-08 Fanuc Corporation Numerische steuerung für werkzeugmaschine
WO2018104799A1 (en) * 2016-12-07 2018-06-14 Tata Consultancy Services Limited Systems and methods for scheduling tasks and managing computing resource allocation for closed loop control systems
CN108700885B (zh) * 2017-09-30 2022-03-01 深圳市大疆创新科技有限公司 一种飞行控制方法、遥控装置、遥控系统

Also Published As

Publication number Publication date
JP2019061466A (ja) 2019-04-18
CN109557890B (zh) 2021-06-18
US10761884B2 (en) 2020-09-01
EP3477405B1 (en) 2023-10-18
EP3477405A3 (en) 2019-05-15
US20190095247A1 (en) 2019-03-28
CN109557890A (zh) 2019-04-02
EP3477405A2 (en) 2019-05-01

Similar Documents

Publication Publication Date Title
JP6806019B2 (ja) 制御装置
JP6946909B2 (ja) 制御システムおよび制御装置
JP6919404B2 (ja) 制御装置
JP6903275B2 (ja) 制御装置および制御方法
CN109581976B (zh) 控制装置
JP6950385B2 (ja) 制御装置および制御方法
JP6962099B2 (ja) 制御システムおよび制御装置
JP2019061467A (ja) サポート装置およびサポートプログラム
JP7020198B2 (ja) 制御装置および制御システム
CN109542046B (zh) 控制装置、控制方法及控制系统
JP6881174B2 (ja) 制御装置および制御方法
JP7456165B2 (ja) 制御装置
JP2022048289A (ja) 制御装置および制御システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190508

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190508

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200908

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201005

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201117

R150 Certificate of patent or registration of utility model

Ref document number: 6806019

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250