JP2019061467A - サポート装置およびサポートプログラム - Google Patents
サポート装置およびサポートプログラム Download PDFInfo
- Publication number
- JP2019061467A JP2019061467A JP2017185147A JP2017185147A JP2019061467A JP 2019061467 A JP2019061467 A JP 2019061467A JP 2017185147 A JP2017185147 A JP 2017185147A JP 2017185147 A JP2017185147 A JP 2017185147A JP 2019061467 A JP2019061467 A JP 2019061467A
- Authority
- JP
- Japan
- Prior art keywords
- task
- priority
- load
- control device
- calculation
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/052—Linking several PLC's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/42—Recording and playback systems, i.e. in which the programme 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
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/041—Function-oriented details
- G05B19/0415—Function-oriented details adapting phase duration according to measured parameters
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/18—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
- G05B19/408—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by data handling or data format, e.g. reading, buffering or conversion of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Manufacturing & Machinery (AREA)
- Programmable Controllers (AREA)
Abstract
【課題】単一の制御装置により提供可能な限られた処理リソースを効率的に利用するためのサポート装置およびそのサポート装置を実現するためのサポートプログラムを提供する。【解決手段】サポート装置は、アプリケーションプログラムに含まれるコマンドの構文解析に要する負荷の度合いを算出する負荷推定手段と、算出された負荷の度合いに基づいて、第2のタスクに設定すべき優先度を算出する優先度算出手段とを含む。【選択図】図2
Description
本発明は、制御対象を制御するための制御装置に接続されるサポート装置およびそのサポート装置を実現するためのサポートプログラムに関する。
生産現場においては、様々なFA(Factory Automation)技術が広く普及している。このようなFAシステムは、PLC(プログラマブルコントローラ)といった制御装置だけではなく、CNC(Computer Numerical Control:コンピュータ数値制御)およびロボットなどの高度な動作が可能な各種アクチュエータなどを含む。このようなFAシステムはますます大規模化する傾向にある。
例えば、特開2001−027904号公報(特許文献1)は、複数のCNC装置を連結させることで、制御する軸数を増大させ、かつ、複数のCNC装置間の同期を取ることができる数値制御システムを開示する。この数値制御システムにおいて、マスタユニットおよび1または複数のスレーブユニットがケーブルを介して接続されている。マスタユニットおよびスレーブユニットの各々は、ラダープログラムを実行するPLC用プロセッサおよびCNC用プロセッサを有している。
また、特開2016−092544号公報(特許文献2)は、マスタ制御装置により第1制御対象物を制御するとともに、当該マスタ制御装置とネットワークを介して接続されるスレーブ制御装置により第1制御対象物と異なる第2制御対象物を制御する制御システムを開示する。この制御システムは、マスタ制御装置およびスレーブ制御装置を含む。マスタ制御装置およびスレーブ制御装置の各々は、演算処理部を有するコントローラとは別に、別の演算処理部を有するロボットコントローラを含んでいる。
近年のICT(Information and Communication Technology)の進歩に伴って、制御装置の処理能力も飛躍的に向上しつつある。従来技術においては複数の専用装置を用いて実現されていたFAシステムをより少ない数の制御装置で実現したいというニーズも生じている。
上述した特許文献1および特許文献2に開示される構成においては、複数のプロセッサまたは演算処理部が分散配置された構成が採用されており、それぞれのプロセッサまたは演算処理部の間で同期処理を実現するために構成が冗長になり得る。
本発明は、このようなニーズに対応するものであり、複数のタスクを並列的に実行可能な制御装置を提供する。特に、本発明は、単一の制御装置により提供可能な限られた処理リソースを効率的に利用するためのサポート装置およびそのサポート装置を実現するためのサポートプログラムを提供することを一つの目的としている。
本開示の一例によれば、1または複数のプロセッサを有する制御装置に接続されるサポート装置が提供される。制御装置は、複数のタスクを各タスクに設定された優先度に基づいて処理するように構成されている。複数のタスクは、内部コマンドに従って第1の周期毎に制御指令を出力する処理を含む第1のタスクと、第1の周期より長い第2の周期毎に、インタプリタ言語で記述されたアプリケーションプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成する処理を含む第2のタスクと、第1のタスクおよび第2のタスクとは異なる処理を含む第3のタスクとを含む。サポート装置は、アプリケーションプログラムに含まれるコマンドの構文解析に要する負荷の度合いを算出する負荷推定手段と、算出された負荷の度合いに基づいて、第2のタスクに設定すべき優先度を算出する優先度算出手段とを含む。
この開示によれば、第1〜第3のタスクが制御装置において実行される場合に、第1のタスクで使用される内部コマンドの生成が適切に行われるように、第2のタスクの優先度を最適化できる。これによって、単一の制御装置において互いに連携する複数のタスクを、処理リソースを効率的に配分しながら実行させることができる。
上述の開示において、サポート装置は、第2のタスクに設定すべき優先度をユーザへ提示する提示手段をさらに含んでいてもよい。
この開示によれば、ユーザは算出された優先度を確認しながら、最終的に設定すべき優先度を決定できる。
上述の開示において、サポート装置は、ユーザ入力に応答して、第2のタスクに対する優先度の設定を反映する設定手段をさらに含んでいてもよい。
この開示によれば、ユーザが入力した任意の優先度を設定できる。
上述の開示において、アプリケーションプログラムは、目標軌跡を定義する1または複数のコマンドを含んでいる。第2のタスクは、目標軌跡上の通過点を逐次算出する処理、および、当該算出される複数の通過点を含む移動経路に基づいて内部コマンドを生成する処理を含んでいてもよい。負荷推定手段は、第2の周期の長さ、内部コマンドの生成に用いる通過点の数、および、算出する通過点の間隔の少なくとも一つを反映して、負荷の度合いを算出するようにしてもよい。
上述の開示において、アプリケーションプログラムは、目標軌跡を定義する1または複数のコマンドを含んでいる。第2のタスクは、目標軌跡上の通過点を逐次算出する処理、および、当該算出される複数の通過点を含む移動経路に基づいて内部コマンドを生成する処理を含んでいてもよい。負荷推定手段は、第2の周期の長さ、内部コマンドの生成に用いる通過点の数、および、算出する通過点の間隔の少なくとも一つを反映して、負荷の度合いを算出するようにしてもよい。
この開示によれば、第2のタスクでの演算負荷に影響を及ぼすパラメータを考慮した上で、負荷の度合いをより正確に算出できる。
上述の開示において、負荷推定手段は、コマンド毎に演算負荷係数を規定した演算負荷係数情報を参照することで、負荷の度合いを算出するようにしてもよい。
この開示によれば、アプリケーションプログラムに含まれるコマンド毎に異なる演算負荷のバラツキを考慮して、負荷の度合いを算出できる。
上述の開示において、サポート装置は、制御装置における第2のタスクの実行状況を取得するとともに、取得した実行状況に基づいて演算負荷係数情報を更新する学習手段をさらに含んでいてもよい。
この開示によれば、予め論理的に決定された演算負荷係数情報の値を、実際の制御装置で生じる演算負荷の状況を反映して決定できるので、より正確な演算負荷係数情報を生成できる。
上述の開示において、サポート装置は、制御装置を模擬するエミュレータと、エミュレータにおいて複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、第2のタスクに設定すべき優先度を算出する第2の優先度算出手段とをさらに含んでいてもよい。
この開示によれば、制御装置により近い環境でプログラムを実行させて生じる演算負荷を考慮して、優先度を算出できるので、より適切な優先度の算出が期待できる。
上述の開示において、サポート装置は、制御装置において複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、第2のタスクに設定すべき優先度を算出する第3の優先度算出手段をさらに含んでいてもよい。
この開示によれば、実際の制御装置でプログラムを実行させて生じる演算負荷を考慮して、優先度を算出できるので、より適切な優先度を算出できる。
本開示の別の一例によれば、1または複数のプロセッサを有する制御装置に接続されるサポート装置を実現するためのサポートプログラムが提供される。制御装置は、複数のタスクを各タスクに設定された優先度に基づいて処理するように構成されている。複数のタスクは、内部コマンドに従って第1の周期毎に制御指令を出力する処理を含む第1のタスクと、第1の周期より長い第2の周期毎に、インタプリタ言語で記述されたアプリケーションプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成する処理を含む第2のタスクと、第1のタスクおよび第2のタスクとは異なる処理を含む第3のタスクとを含む。サポートプログラムは、コンピュータに、アプリケーションプログラムに含まれるコマンドの構文解析に要する負荷の度合いを算出するステップと、算出された負荷の度合いに基づいて、第2のタスクに設定すべき優先度を算出するステップとを実行させる。
この開示によれば、第1〜第3のタスクが制御装置において実行される場合に、第1のタスクで使用される内部コマンドの生成が適切に行われるように、第2のタスクの優先度を最適化できる。これによって、単一の制御装置において互いに連携する複数のタスクを、処理リソースを効率的に配分しながら実行させることができる。
本発明によれば、単一の制御装置により提供可能な限られた処理リソースを効率的に利用して、複数のタスクを並列的に実行できる。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.適用例>
まず、図1および図2を参照して、本発明が適用される場面の一例について説明する。
まず、図1および図2を参照して、本発明が適用される場面の一例について説明する。
本実施の形態に係る制御装置100は、ユーザプログラムおよびアプリケーションプログラムを並列的に実行可能になっている。
本明細書において、「ユーザプログラム」は、実行毎に全体がスキャンされて、実行毎に制御指令を出力できるプログラムを包含する。ユーザプログラムは、基本的には、制御対象やアプリケーションに応じて、ユーザによって任意に作成される。ユーザプログラムの一例として、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131−3に従って記述された1または複数の命令からなるプログラムを包含する。ユーザプログラムには、シーケンス命令および/またはモーション命令を含み得る。なお、ユーザプログラムとしては、国際規格IEC61131−3に従って記述された命令に限らず、PLC(プログラマブルコントローラ)の製造メーカまたはベンダーなどが独自に規定した命令を含むようにしてもよい。このように、ユーザプログラムは、即時性および高速性が要求される制御に好適である。
本明細書において、「シーケンス命令」は、入力値、出力値、内部値などを演算する1または複数の論理回路により記述される1または複数の命令を包含する用語である。1回の制御周期において、シーケンス命令は、先頭から最終まで実行され、次の制御周期において、「シーケンス命令」は、先頭から最終までが再度実行される。
本明細書において、「モーション命令」は、サーボモータなどのアクチュエータに対して、位置、速度、加速度、加加速度、角度、角速度、角加速度、角加加速度などの数値を制御指令として演算するための1または複数の命令を包含する用語である。モーション命令についても、1回の制御周期において、ファンクションブロックや数値演算式などにより記述されるモーション命令のプログラム(モーションプログラム)の先頭から最終までが実行される。
制御周期毎にユーザプログラムを実行することで出力される制御指令は、典型的には、シーケンス命令に従って決定されるデジタル出力のオン/オフ、ならびに、モーション命令に従って演算されるアナログ出力を含む。
本明細書において、「アプリケーションプログラム」は、インタプリタ言語で記述された任意のプログラムを包含する。制御装置100は、アプリケーションプログラム内のインタプリタ言語で記述されたコマンドを構文解析しつつ処理を実行する。アプリケーションプログラムの一例として、CNC(Computer Numerical Control:コンピュータ数値制御)における挙動を記述するプログラム(以下、「NCプログラム」とも称する。)、ならびに、ロボットを制御するためのプログラムがある。一般的には、NCプログラムは「G言語」を用いて記述され、ロボットを制御するためのプログラムは、専用のロボット言語(例えば、「M言語」)を用いて記述されることが多い。このアプリケーションプログラムは、目標軌跡を定義する1または複数のコマンドを含むことになる。
以下の説明において、例えば、CNC(Computer Numerical Control:コンピュータ数値制御)および/またはおよびロボットを用いた、特定の加工または動作を行う装置または機械ならびにそれらの制御を包含して、「制御アプリケーション」と称することもある。
インタプリタ言語で記述されたアプリケーションプログラムは、本来的に、一定周期毎に制御指令を出力する処理には不向きである。そのため、本実施の形態においては、制御周期毎の制御指令の出力に適した内部コマンドが生成される。このような内部コマンドは、制御周期毎に制御指令を出力できるものであれば、どのようなコードであってもよい。典型的には、内部コマンドは、時間を入力変数とする1または複数の関数、あるいは、時間を引数とする1または複数の命令であってもよい。
図1は、本実施の形態に係る制御装置100におけるタスク実行の一例を示すタイムチャートである。図1を参照して、本実施の形態に係る制御装置100は、複数のタスクを各タスクに設定された優先度に基づいて処理する。
本明細書において、「タスク」は、1または複数の処理を含む処理の実行単位を意味する。各タスクには、優先度に加えて、実行周期が設定されることもある。実行周期が設定されている場合には、スケジューラは、当該設定された実行周期に従って、タスクの実行をトリガする。
このような複数のタスクの実行は、スケジューラと称される制御装置100の機能によって管理される。スケジューラは、制御装置100が有している1または複数のプロセッサの処理時間(以下、「プロセッサリソース」とも称す。)を対象のタスクに割当てる。
複数のタスクは、典型的には、制御周期T1毎に繰返し実行されるタスク、および、制御周期T1より長い周期で実行されるタスクを含む。
図1には、優先度別に設定された5つのタスク(第1〜第5タスク)の例を示す。
第1タスク10は、フィールドとの間で入力値および制御指令を更新する入出力リフレッシュ処理(図1において「O/I」と記載する。)を含む。
第1タスク10は、フィールドとの間で入力値および制御指令を更新する入出力リフレッシュ処理(図1において「O/I」と記載する。)を含む。
第2タスク18は、シーケンス命令実行処理12と、アプリケーションプログラムから生成される内部コマンドに従って制御指令を出力する出力処理14と、ユーザプログラムに含まれるモーション命令に従って制御指令を出力する出力処理16とを含む。すなわち、第2タスク18は、内部コマンドに従って制御周期T1(第1の周期)毎に制御指令を出力する処理を含む。
第1タスク10および第2タスク18は、制御周期T1毎にトリガされる。そのため、第1タスク10および第2タスク18に対しては、相対的に高い優先度が設定されている。以下の説明においては、第1タスク10および第2タスク18を、「高優先タスク」とも称す。
第3タスク20は、アプリケーションプログラムを構文解析して内部コマンドを逐次生成する処理を含む。アプリケーションプログラムの構文解析は、制御周期T1(第1の周期)より長いアプリケーション実行周期(第2の周期)毎に実行される。すなわち、第3タスク20は、制御周期T1(第1の周期)より長いアプリケーション実行周期(第2の周期)毎に、インタプリタ言語で記述されたアプリケーションプログラムの少なくとも一部を構文解析して内部コマンドを逐次生成する処理を含む。
第4タスク22は、制御装置100が提供する任意の処理を含む。第5タスク24は、制御装置100と外部装置との間のデータ通信などの処理(以下、「システムサービス」とも称す。)を含む。このように、第4タスク22および第5タスク24は、第2タスク18および第3タスク20とは異なる処理を含む。
第1〜第5タスクについては、それぞれ優先度が設定されており、各設定された優先度に従って、プロセッサリソースが割当てられる。このようなプロセッサリソースが割当ての典型例として、第3タスク20、第4タスク22、および第5タスク24は、高優先タスクが実行されていない期間に実行される。以下の説明においては、第1タスク10および第2タスク18(高優先タスク)との比較として、第3タスク20、第4タスク22、および第5タスク24を、「低優先タスク」とも称す。
図1(A)には、第4タスク22に対して、第3タスク20より高い優先度が設定されている例を示す。図1(B)には、第3タスク20の優先度を図1(A)の場合の優先度より高く設定したときの処理例を示す。
図1(A)に示す例においては、第1タスク10および第2タスク18が制御周期T1毎に繰返し実行される。各制御周期T1において、第1タスク10および第2タスク18が実行されていない期間において、第3〜第5タスクが優先度に応じて実行される。
第4タスク22に対しては、制御周期T1毎にプロセッサリソースが割当てられている。一方、第3タスク20に対しては、第1タスク10、第2タスク18、第4タスク22のいずれもが実行されていない期間においてのみ、プロセッサリソースが割当てられるので、第3タスク20の1回の処理完了には、3回の制御周期T1に相当する時間が必要になっている。すなわち、第3タスク20がトリガされてから、指定された処理を完了するまでには、制御周期T1の3倍の時間が必要である。
図1(B)に示す例においては、第1タスク10および第2タスク18のいずれもが実行されていない期間において、第3タスク20に対して、プロセッサリソースが優先的に割当てられる。その結果、図1(A)の場合に比較して、より多くのプロセッサリソースが第3タスク20に割当てられるようになり、第3タスク20がトリガされてから制御周期T1の2倍の時間で指定された処理を完了できる。すなわち、アプリケーションプログラムの処理対象のコードから内部コマンドをより短い時間で生成できる。
図1(B)においては、図1(A)の場合に比較して、より多くのプロセッサリソースを割当てることもでき、この場合には、1回の処理実行によって、より多くの内部コマンドを生成できる。
本実施の形態に係る制御装置100において、第3タスク20は、アプリケーションプログラムを構文解析して内部コマンドを生成し、第2タスク18は、第3タスク20において生成される内部コマンドを制御指令の演算に逐次使用する(すなわち、制御周期T1毎に「消費」される)。このように、第3タスク20による内部コマンドの生成と、第2タスク18による内部コマンドの使用との間で競争が生じる。
図1(B)に示すように、第3タスク20に対して十分なプロセッサリソースが割当てられている場合においては、第2タスク18による内部コマンドの使用に先だって、ある程度の量の内部コマンドを事前に生成できる。一方、図1(A)に示すように、第3タスク20に対して十分なプロセッサリソースを割当てることができない場合においては、第2タスク18による内部コマンドの使用が勝り、第3タスク20による内部コマンドの生成を待つような事態も生じ得る。
そこで、本実施の形態においては、アプリケーションプログラムの構文解析に要する負荷の度合いを事前に算出し、算出された負荷の度合いに基づいて、第3タスク20に設定すべき優先度を算出する。より具体的には、上述の図1において、図1(A)に示す優先度を設定すべきか、あるいは、図1(B)に示す優先度を設定すべきかを事前に推定する。
図2は、本実施の形態に係る優先度の算出処理の適用例を示す模式図である。図2を参照して、アプリケーションプログラム32は、1または複数のコマンドにより構成される。アプリケーションプログラム32に対する構文解析処理にどの程度の負荷処理が生じるのかを推定する負荷推定処理50が実行される。負荷推定処理50により出力される負荷の度合いに基づいて、優先度を算出する優先度算出処理60が実行される。これらの処理によって、対象のアプリケーションプログラム32を制御装置100で実行させる場合において、アプリケーションプログラム32を構文解析して内部コマンドを生成する処理を含むタスクに設定すべき優先度が算出される。
このように、負荷推定処理50は、アプリケーションプログラム32に含まれるコマンドの構文解析に要する負荷の度合いを算出する。そして、優先度算出処理60は、算出された負荷の度合いに基づいて、図1に示す第3タスク20(第2のタスク)に設定すべき優先度を算出する。算出された優先度は、ユーザへ提示されてもよいし、対象のタスクの優先度として自動的に設定されてもよい。
負荷推定処理50および優先度算出処理60の機能は、制御装置100自体に実装されてもよいが、制御装置100に接続されるサポート装置に実装されてもよい。あるいは、制御装置100とは全く独立した情報処理装置に実装されてもよい。
本実施の形態においては、アプリケーションプログラム32に含まれるコマンドの構文解析に要する負荷の度合いを推定し、その推定した負荷の度合いに応じて、アプリケーションプログラム32を構文解析するタスクに設定される適切な優先度を事前に決定できる。
適切な優先度を事前に決定できるので、優先度が低すぎるために、アプリケーションプログラム32を構文解析して内部コマンドを生成する処理が間に合わないといった事態を防止でき、かつ、優先度が高すぎるために、他のタスクに対して十分なプロセッサリソースが割当てられずに、必要な処理速度が得られないといった事態を防止できる。
また、適切な優先度を事前に決定できるので、試行錯誤的に各タスクの優先度を設定する必要はなく、複数種類のプログラムが実行される制御装置100の調整作業を効率化できる。すなわち、制御装置100にて実行される各タスクの優先度を調整するための工数などを削減できる。
以下、本発明のより具体的な応用例として、本実施の形態に係る制御装置100およびサポート装置のより詳細な構成および処理について説明する。
<B.制御システムの全体構成例>
まず、本実施の形態に係る制御装置100を含む制御システム1の全体構成例について説明する。図3は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。図3には、本実施の形態に係る制御装置100を中心とした制御システム1を示す。
まず、本実施の形態に係る制御装置100を含む制御システム1の全体構成例について説明する。図3は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。図3には、本実施の形態に係る制御装置100を中心とした制御システム1を示す。
図3を参照して、制御装置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に対する制御指令などのデータ(以下、「出力データ」とも称す。)を送信する処理を含む。このような遣り取りされるデータの更新処理が上述の「入出力リフレッシュ処理」に相当する。
図3に示す構成例においては、フィールド機器500は、リモートI/O(Input/Output)装置510と、ロボット520およびロボットコントローラ522と、CNC工作機械530と、サーボドライバ538およびサーボモータ532とを含む。
サーボモータ532は、コンベア534を駆動して、CNC工作機械530の前に配置されたワークテーブル536にワークWを搬送する。ロボット520は、ワークテーブル536上の処理前のワークWをCNC工作機械530内に配置し、CNC工作機械530での処理済ワークWを取り出してワークテーブル536上に配置する。
フィールド機器500としては、これらに限られることなく、入力データを収集する任意のデバイス(例えば、視覚センサなど)、ならびに、出力データに従う何らかの作用を与える任意のデバイス(例えば、インバータ装置など)などを採用することができる。
リモートI/O装置510は、典型的には、フィールドネットワーク2を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。
リモートI/O装置510には、入力リレーや各種センサ(例えば、アナログセンサ、温度センサ、振動センサなど)などの入力データを収集する装置、および、出力リレー、コンタクタ、サーボドライバ、および、その他任意のアクチュエータなどのフィールドに対して何らかの作用を与える装置が接続される。
ロボットコントローラ522は、制御装置100からの制御指令(位置指令または速度指令など)に従って、軌跡計算および各軸の角度計算などを行うとともに、計算結果に従って、ロボット520を構成するサーボモータなどを駆動する。
CNC工作機械530は、位置や速度などを指定するプログラムに従って、マシニングセンタなどを制御することで、任意の対象物を加工する。CNC工作機械530は、典型的には、旋盤加工、フライス盤、放電加工などの加工装置を含む。
サーボドライバ538は、制御装置100からの制御指令(例えば、位置指令または速度指令など)に従って、サーボモータ532を駆動する。
制御装置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上で実行されるユーザプログラムなどをオンラインで修正・変更する機能、などを提供する。本実施の形態に係るサポート装置200は、上述の図2に示す優先度の算出処理の機能を提供することもできる。優先度の算出処理については、後に詳述する。
<C.制御装置のハードウェア構成例>
次に、本実施の形態に係る制御装置100のハードウェア構成例について説明する。図4は、本実施の形態に係る制御装置100のハードウェア構成例を示すブロック図である。
次に、本実施の形態に係る制御装置100のハードウェア構成例について説明する。図4は、本実施の形態に係る制御装置100のハードウェア構成例を示すブロック図である。
図4を参照して、制御装置100は、CPUユニットと称される演算処理部であり、プロセッサ102と、チップセット104と、主メモリ106と、ストレージ108と、上位ネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、内部バスコントローラ120と、フィールドネットワークコントローラ130とを含む。
プロセッサ102は、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などで構成される。プロセッサ102としては、複数のコアを有する構成を採用してもよいし、プロセッサ102を複数配置してもよい。すなわち、制御装置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(図4参照)などとの間のデータの遣り取りを制御する。USBコントローラ112は、USB接続を介してサポート装置200との間のデータの遣り取りを制御する。
メモリカードインターフェイス114は、メモリカード116が着脱可能に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データ(ユーザプログラムやトレースデータなど)を読出すことが可能になっている。
内部バスコントローラ120は、制御装置100に装着されるI/Oユニット122との間のデータの遣り取りを制御する。フィールドネットワークコントローラ130は、フィールドネットワーク2を介したフィールドデバイスとの間のデータの遣り取りを制御する。
図4には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
図4に示す制御システム1においては、制御装置100、サポート装置200および表示装置400がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
<D.制御装置の機能構成例>
次に、本実施の形態に係る制御装置100の機能構成例について説明する。図5は、本実施の形態に係る制御装置100の機能構成例を示すブロック図である。
次に、本実施の形態に係る制御装置100の機能構成例について説明する。図5は、本実施の形態に係る制御装置100の機能構成例を示すブロック図である。
図5には、制御装置100が制御アプリケーション1および制御アプリケーション2を制御する構成例を示す。制御アプリケーション1および制御アプリケーション2の各々は、典型的には、リレーやコンタクタなどのI/Oデバイスおよびサーボモータなどの各種アクチュエータを含む。制御アプリケーション1および制御アプリケーション2に加えて、他のI/Oデバイスおよび各種センサについても、フィールドネットワーク2を介して制御装置100と接続されている。
制御装置100は、上位ネットワーク6を介して接続されているサーバ装置300などから、生産の開始/終了といった指示を受ける。サーバ装置300は、レシピ情報38(生産品種や生産に適したパラメータなどの情報)を制御装置100に送信することもある。制御装置100は、図示しない他の制御装置100とネットワーク接続されていてもよい。
図5を参照して、制御装置100は、PLC処理エンジン150と、アプリケーション解析部160と、アプリケーション調停部162と、制御指令演算部164と、共有メモリ170と、共有メモリ制御部172と、表示機能部174と、フィールドネットワークインターフェイス176と、上位ネットワークインターフェイス178とを含む。
PLC処理エンジン150は、ユーザプログラム30の実行および制御装置100全体の処理を管理する。より具体的には、PLC処理エンジン150は、シーケンスプログラム実行部152と、スケジューラ154とを含む。
シーケンスプログラム実行部152は、制御周期T1毎にユーザプログラム30を実行(スキャン)して制御指令を出力する。
スケジューラ154は、制御装置100において実行される処理の順序を調停するものであり、具体的には、予め設定された優先度に基づいて、1または複数のタスクに対してプロセッサリソースを割当てる。スケジューラ154は、各タスクに含まれる処理および各タスクに設定される優先度の情報を含むタスク設定情報156を有している。タスク設定情報156は、典型的には、サポート装置200を介して設定または更新される。
アプリケーション解析部160は、アプリケーションプログラム32の少なくとも一部を構文解析して、内部コマンド40を生成する。アプリケーション解析部160には、異なる種類のアプリケーションプログラム32が提供されることもある。アプリケーション解析部160は、予め格納されたアプリケーションプログラム32を実行するようにしてもよいし、サーバ装置300から適宜送信されるアプリケーションプログラム32を実行するようにしてもよい。
制御指令演算部164は、ユーザプログラム30に含まれるモーション命令に従って、制御指令を制御周期T1毎に演算する。また、制御指令演算部164は、アプリケーション解析部160により逐次生成される内部コマンド40に従って、制御指令を制御周期T1毎に演算する。
シーケンスプログラム実行部152および制御指令演算部164は、制御周期T1毎に処理を実行する(高優先タスク)。一方、アプリケーション解析部160によるアプリケーションプログラム32に対する処理は、制御周期T1の整数倍であるアプリケーション実行周期(第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を生成する処理例について説明する。
次に、制御装置100のアプリケーション解析部160がアプリケーションプログラム32を構文解析して内部コマンド40を生成する処理例について説明する。
本実施の形態に係る制御装置100においては、アプリケーション解析部160が、アプリケーションプログラム32に記述された1または複数のコマンドを構文解析し、その構文解析された内容に基づいて、制御周期毎に指令値を算出するための内部コマンド40を生成する。生成される内部コマンド40は、共有メモリ170に順次キューイングされる。
内部コマンド40は、時間に関する変数を入力として、指令値を算出できる関数が用いられてもよい。すなわち、内部コマンド40は、制御指令演算部164が制御周期毎に指令値を出力する関数であってもよい。より具体的には、内部コマンド40は、時間と指令値との関係を規定する関数であってもよい。内部コマンド40を規定するための時間に関する変数としては、時刻、ある基準タイミングからの経過時間、制御周期の累積サイクル数などを用いることができる。
このような関数を用いることで、制御指令演算部164は、生成される内部コマンド40を順次参照して、各制御周期に指令値を出力できる。
図6は、本実施の形態に係る制御装置100における内部コマンド40の生成処理の一例を説明するための模式図である。図6(A)には、時刻t0から時刻t1までの期間における内部コマンド40を生成する処理手順を示し、図6(B)には、時刻t1から時刻t2までの期間における内部コマンド40を生成する処理手順を示す。
図6(A)を参照して、アプリケーション解析部160は、アプリケーションプログラム32を逐次解析して目標軌跡を順次決定する。アプリケーション解析部160は、順次決定する目標軌跡に対して、予め定められた期間毎の通過点を順次算出する。それぞれの通過点は、目標軌跡上の移動距離および目標軌跡上の移動速度に基づいて算出される。
図6(A)に示す例において、時刻t0における初期位置である通過点P0(t0)に加えて、時刻t1における通過点P1(t1)、時刻t2における通過点P2(t2)、時刻t3における通過点P3(t3)が算出される。
アプリケーション解析部160は、通過点P0(t0),P1(t1),P2(t2),P3(t3)の情報に基づいて、通過点P0(t0)から通過点P1(t1)までの移動経路44を算出する。アプリケーション解析部160は、算出した移動経路44から関数Fx1(t)を生成する。なお、図6(A)には、関数Fx1(t)のみを示すが、実際には、同時に制御しなければならないモータの数だけ内部コマンド40が生成されることになる。
移動経路44の算出には、通過点P0(t0)および通過点P1(t1)の情報のみを用いるようにしてもよい。但し、より滑らかで正確な移動経路44を算出するために、通過点P1(t1)に引き続く1または複数の通過点の情報を反映してもよい。すなわち、「先読み」動作により内部コマンド40を生成することで制御精度を高めることができる。
図6(B)を参照して、時刻t1から時刻t2までの期間について、アプリケーション解析部160は、アプリケーションプログラム32をさらに解析してさらに先の目標軌跡を決定する。アプリケーション解析部160は、決定されたさらに先の目標軌跡に対して、新たな通過点を算出する。すなわち、アプリケーション解析部160は、新たに通過点P4(t4)を算出する。
アプリケーション解析部160は、通過点P1(t1),P2(t2),P3(t3),P4(t4)の情報に基づいて、通過点P1(t1)から通過点P2(t2)までの移動経路44を算出する。アプリケーション解析部160は、算出した移動経路44から関数Fx2(t)を生成する。なお、図6(B)には、関数Fx2(t)のみを示すが、実際には、同時に制御しなければならないモータの数だけ内部コマンド40が生成されることになる。
図6に示すように、「先読み」動作において、アプリケーション解析部160は、目標軌跡上の隣接する通過点42間に対応する内部コマンド40を、目標軌跡上の当該隣接する通過点42に引き続く複数の通過点42の情報に基づいて生成する。
以上のような処理手順を繰返すことで、目標軌跡を実現するための内部コマンドが順次生成される。このように、アプリケーションプログラム32を構文解析するタスクは、目標軌跡上の通過点を逐次算出する処理、および、当該算出される複数の通過点を含む移動経路に基づいて内部コマンドを生成する処理を含む。
<F.サポート装置のハードウェア構成例>
次に、本実施の形態に係るサポート装置200のハードウェア構成例について説明する。図7は、本実施の形態に係るサポート装置200のハードウェア構成例を示すブロック図である。
次に、本実施の形態に係るサポート装置200のハードウェア構成例について説明する。図7は、本実施の形態に係るサポート装置200のハードウェア構成例を示すブロック図である。
図7を参照して、サポート装置200は、典型的には、汎用的なアーキクテチャを有するパーソナルコンピュータ上で、サポートプログラム218が実行されることで実現される。より具体的には、図7を参照して、サポート装置200は、プロセッサ202と、ディスプレイ204と、主メモリ206と、ストレージ208と、USBコントローラ212と、入力装置214とを含む。これらのコンポーネントは内部バス210を介して接続されている。
プロセッサ202は、CPU、MPU、GPUなどで構成され、ストレージ208に格納されたOS216およびサポートプログラム218を含む各種プログラムを読出して、主メモリ206に展開して実行することで、後述したような各種機能を実現する。主メモリ206は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ208は、例えば、HDDやSSDなどの不揮発性記憶装置などで構成される。
ディスプレイ204は、プロセッサ202などによる演算結果を表示するデバイスであり、例えば、LCD(Liquid Crystal Display)などで構成される。
USBコントローラ212は、USB接続を介して、制御装置100との間でデータを遣り取りする。
入力装置214は、ユーザの操作を受付けるデバイスであり、例えば、キーボードやメモリなどで構成される。
以下に説明するように、本実施の形態に係るサポート装置200は、アプリケーションプログラム32の構文解析に要する負荷の度合いを事前に算出し、算出された負荷の度合いに基づいて、第3タスク20に設定すべき優先度を算出する。
<G.サポート装置の機能構成例>
次に、本実施の形態に係るサポート装置200の機能構成例について説明する。図8は、本実施の形態に係るサポート装置200の機能構成例を示すブロック図である。図8に示す各モジュールは、典型的には、サポート装置200のプロセッサ202がサポートプログラム218を実行することで実現される。
次に、本実施の形態に係るサポート装置200の機能構成例について説明する。図8は、本実施の形態に係るサポート装置200の機能構成例を示すブロック図である。図8に示す各モジュールは、典型的には、サポート装置200のプロセッサ202がサポートプログラム218を実行することで実現される。
図8を参照して、サポート装置200は、負荷推定処理50に関するモジュールとして、構文解析モジュール52および演算負荷算出モジュール54を含む。サポート装置200は、さらに、優先度算出処理60に関するモジュールとして、優先度算出モジュール62を含む。サポート装置200は、さらに、対話モジュール66および設定モジュール68を含む。
構文解析モジュール52は、アプリケーションプログラム32を構文解析して、アプリケーションプログラム32に含まれる1または複数のコマンドを出力する。演算負荷算出モジュール54は、演算負荷係数テーブル56を参照して、構文解析モジュール52から出力される各コマンドについての演算負荷係数を取得する。演算負荷係数テーブル56は、コマンド毎に演算負荷係数を規定した演算負荷係数情報に相当する。演算負荷算出モジュール54は、演算負荷係数テーブル56を参照することで、負荷の度合いである演算負荷値を算出する。演算負荷係数テーブル56のデータ構造の一例については、後述する。
構文解析モジュール52は、演算負荷値の算出に際して、内部コマンド生成設定情報58を参照する。内部コマンド生成設定情報58は、アプリケーションプログラム32に従って内部コマンド40を生成する際のパラメータを含む。
内部コマンド40を生成する際のパラメータの一例としては、(1)アプリケーションプログラムを構文解析する第3タスク20(図1参照)の実行周期であるアプリケーション実行周期の長さ、(2)内部コマンド40の生成に用いる通過点の数(図6参照)、(3)算出する通過点の間隔(図6に示す時刻t0から時刻t1までの期間の長さ)が挙げられる。
上述の(1)に示す実行周期が短くなるほど演算負荷は増大し、(2)に示す通過点の数が多くなるほど演算負荷は増大し、(3)に示す通過点の間隔が短くなるほど演算負荷は増大する。したがって、演算負荷算出モジュール54は、演算負荷係数テーブル56に対して、上述の(1)〜(3)に示すパラメータに依存した重みを乗じることで、演算負荷値を算出する。これらのパラメータの一部または全部は、アプリケーションプログラム32の実行中に動的に変化することもある。そのため、アプリケーションプログラム32に含まれるコマンド群のある部分に適用されるパラメータと、他の部分に適用されるパラメータとは異なったものとなる場合もある。
一方、上述の(1)〜(3)に示すパラメータのすべてを反映する必要はなく、一部のパラメータのみを反映するようにしてもよい。このように、演算負荷算出モジュール54は、上述の(1)〜(3)に示すパラメータの少なくとも一つを反映して、演算負荷値(負荷の度合い)を算出する。
演算負荷算出モジュール54は、算出した演算負荷値を出力する。演算負荷値は、アプリケーションプログラム32全体の構文解析によって逐次算出される値の平均値、最大値、最小値、中間値などの統計データであってもよいし、全体または一部の区間についての積算値であってもよい。あるいは、コマンド毎に処理に要する時間が異なる可能性もあるため、各コマンドについて算出される演算負荷値を各コマンドの構文解析に要する時間で規格化した値を用いてもよい。
演算負荷値は、無次元の値であってもよいし、プロセッサを占有する時間であってもよいし、プロセッサを占有する時間割合であってもよい。
優先度算出モジュール62は、演算負荷算出モジュール54により算出される演算負荷値に基づいて、対応するアプリケーションプログラム32の構文解析に係るタスクの優先度を算出する。より具体的には、優先度算出モジュール62は、タスク設定情報64を参照して、算出された演算負荷値を満たすために必要なプロセッサリソースを確保するための優先度を算出する。
タスク設定情報64は、現在設定されている各タスクに登録されている処理、および、各タスクに設定されている優先度などを含む。タスク設定情報64は、制御装置100において各タスクがどの程度の演算時間を要しているのかの統計情報を含んでいてもよい。
優先度算出モジュール62が算出する優先度は、現在設定されているタスクの間での相対的な順位を示すものである。優先度算出モジュール62は、制御装置100において利用可能なプロセッサリソースのうち、他のタスクが使用するプロセッサリソースなどを考慮して、適切な優先度を算出してもよい。
優先度算出モジュール62により算出された優先度は、対話モジュール66および設定モジュール68へ出力される。対話モジュール66は、ユーザに対して、優先度算出モジュール62が算出した優先度を提示するとともに、ユーザからの指示を受付ける。
すなわち、対話モジュール66は、アプリケーションプログラム32を構文解析するタスクに設定すべき優先度をユーザへ提示する。より具体的には、対話モジュール66は、サポート装置200のディスプレイ204などに算出された優先度を表示する。算出された優先度に加えて、優先度の算出に用いた情報および任意の負荷情報を併せて表示してもよい。
ユーザは、サポート装置200の入力装置214などを操作して、提示された優先度に対する承諾、あるいは、提示された優先度を変更する指示などを入力する。対話モジュール66は、ユーザからの指示を設定モジュール68へ出力する。
設定モジュール68は、ユーザ入力に応答して、アプリケーションプログラム32を構文解析するタスクに対する優先度の設定を反映する。より具体的には、設定モジュール68は、優先度算出モジュール62からの優先度および対話モジュール66からのユーザ指示に基づいて、タスク設定情報64に対して、対象のタスクの優先度を設定する。
以上のような処理によって、対象のアプリケーションプログラム32を構文解析するためのタスクへの優先度の設定が完了する。更新後のタスク設定情報64は、任意の方法によって、制御装置100へ与えられる。
<H.演算負荷算出モジュールおよび優先度算出モジュール>
次に、図8に示す演算負荷算出モジュール54および優先度算出モジュール62におけるより詳細な処理内容について説明する。図9は、本実施の形態に係るサポート装置200の演算負荷算出モジュール54の機能構成例を示すブロック図である。
次に、図8に示す演算負荷算出モジュール54および優先度算出モジュール62におけるより詳細な処理内容について説明する。図9は、本実施の形態に係るサポート装置200の演算負荷算出モジュール54の機能構成例を示すブロック図である。
図9を参照して、演算負荷算出モジュール54は、演算負荷係数参照モジュール541と、係数算出モジュール542,544,546と、係数乗算モジュール543,545,547と、統計処理モジュール548とを含む。
演算負荷係数参照モジュール541は、演算負荷係数テーブル56を参照して、入力されたコマンドの種類に対応する演算負荷係数を取得する。演算負荷係数テーブル56には、コマンド毎に演算負荷係数が規定されている。
演算負荷係数テーブル56において規定される演算負荷係数は、コマンド毎(例えば、G言語やM言語で記述される)に規定されてもよいし、また、算術演算子や論理演算子について規定されてもよい。さらに、複数のコマンドの組み合せについて演算負荷係数を規定してもよい。演算負荷係数を規定する単位は言語に応じて任意に設定できる。
また、演算負荷係数テーブル56は、制御装置100で実行させるプログラム群(「プロジェクト」とも称す。)の間で共通化してもよいし、プログラム群を実行させる制御装置100の性能などに応じて個別に作成してもよい。
係数算出モジュール542は、アプリケーション実行周期(内部コマンド生成設定情報58に含まれる)の入力に対応する補正係数αを出力する。係数乗算モジュール543は、演算負荷係数参照モジュール541からの演算負荷係数に補正係数αを乗じて、その結果を出力する。
係数算出モジュール544は、内部コマンド40の生成に用いる通過点の数(内部コマンド生成設定情報58に含まれる)の入力に対応する補正係数βを出力する。係数乗算モジュール545は、係数乗算モジュール543からの出力結果に補正係数βを乗じて、その結果を出力する。
係数算出モジュール546は、内部コマンド40の生成において算出する通過点の間隔(内部コマンド生成設定情報58に含まれる)の入力に対応する補正係数γを出力する。係数乗算モジュール547は、係数乗算モジュール545からの出力結果に補正係数γを乗じて、その結果を出力する。
統計処理モジュール548は、アプリケーションプログラム32に含まれるコマンド毎に算出される補正後の演算負荷係数を統計処理することで、演算負荷値を出力する。より具体的には、統計処理モジュール548は、コマンド毎に算出される補正後の演算負荷係数についての平均値、最大値、最小値、中間値などを算出する。
以上のような機能構成によって、演算負荷値が出力される。
次に、優先度算出モジュール62は、制御装置100において利用可能なプロセッサリソースのうち、他のタスクが使用するプロセッサリソースなどを考慮して、適切な優先度を算出する。より具体的には、優先度算出モジュール62は、他のタスクの実行に必要なプロセッサリソースの大きさを推定し、その推定したプロセッサリソースに基づいて、優先度を算出する。
次に、優先度算出モジュール62は、制御装置100において利用可能なプロセッサリソースのうち、他のタスクが使用するプロセッサリソースなどを考慮して、適切な優先度を算出する。より具体的には、優先度算出モジュール62は、他のタスクの実行に必要なプロセッサリソースの大きさを推定し、その推定したプロセッサリソースに基づいて、優先度を算出する。
あるいは、優先度算出モジュール62は、算出される演算負荷値の大きさに基づいて、予め定められた規則に従って優先度を算出してもよい。
図10は、本実施の形態に係るサポート装置200の優先度算出モジュール62が参照する優先度を決定するためのテーブルの一例である。図10を参照して、優先度テーブル621においては、演算負荷値の範囲と対応する優先度が予め規定されており、優先度算出モジュール62は、演算負荷算出モジュール54により算出された演算負荷値に対応する優先度を一意に決定することができる。
なお、優先度の算出方法については、上述したような方法に限定されるものではなく、任意の方法を採用できる。
<I.ユーザインターフェイス画面例>
次に、優先度算出モジュール62および対話モジュール66により提供されるユーザインターフェイス画面の一例について説明する。
次に、優先度算出モジュール62および対話モジュール66により提供されるユーザインターフェイス画面の一例について説明する。
図11は、本実施の形態に係るサポート装置200が提供するユーザインターフェイス画面の一例を示す模式図である。図11を参照して、ユーザインターフェイス画面600は、アプリケーションプログラム32に含まれる各コマンドについて算出された演算負荷値の変化を示す。トレンドグラフ602は、コマンドが記述されたブロックNo.毎の演算負荷値を示す。ユーザは、トレンドグラフ602を参照することで、アプリケーションプログラム32のいずれのブロックにおいて演算負荷が相対的に高いのかを一見して把握できる。
ユーザインターフェイス画面600は、アプリケーション実行周期の長さを示す表示窓604と、内部コマンド40の生成に用いる通過点の数を示す表示窓606と、内部コマンド40を生成する際に算出する通過点の間隔を示す表示窓608とを含む。
ユーザは表示窓604,606,608の設定値を自在に変更することもできる。いずれかの設定値が変更されることに応答して、演算負荷値を再度算出するようにしてもよい。
図12は、本実施の形態に係るサポート装置200が提供するユーザインターフェイス画面の別の一例を示す模式図である。図12を参照して、ユーザインターフェイス画面610は、制御装置100で実行される各タスクが使用するプロセッサリソースの大きさを示す。棒グラフ612は、タスク毎のプロセッサ時間の長さを示す。各タスクには、タスクの番号および設定されている優先度などを示すタスク属性情報624が表示されている。
棒グラフ612において、評価対象のタスクについては、算出された演算負荷値の変化に基づいて、プロセッサ時間の平均値614に加えて、最小値616および最大値618が示されている。
ユーザは、棒グラフ612を参照することで、制御装置100において実行される複数のタスクのうち、いずれのタスクの演算負荷が相対的に高いのかを一見して把握できる。
ユーザインターフェイス画面610は、優先度算出モジュール62により算出された推奨される優先度を示す表示窓620と、対象のアプリケーションプログラム32の構文解析処理を定められたアプリケーション実行周期内に完了できる確率(以下、「実行周期内処理完了確率」とも称す。)を示す表示窓622とを含む。
実行周期内処理完了確率は、開始タイミング毎に開始されるアプリケーションプログラム32に対する構文解析の処理が予め定められたアプリケーション実行周期内に完了できる可能性を示すものであり、対象のアプリケーションプログラム32について算出される演算負荷値の大きさおよびバラツキなどに基づいて算出される。実行周期内処理完了確率は、統計的に算出されてもよい。ユーザは、実行周期内処理完了確率の値を参照することで、アプリケーションプログラム32の解析処理に対して設定した優先度がどの程度の確実性を有しているのかを一見して把握できる。
ユーザは表示窓620に表示される優先度を自在に変更することもできる。優先度が変更されることに応答して、実行周期内処理完了確率を再度算出するようにしてもよい。
ユーザインターフェイス画面610についても、アプリケーション実行周期の長さを示す表示窓604と、内部コマンド40の生成に用いる通過点の数を示す表示窓606と、内部コマンド40を生成する際に算出する通過点の間隔を示す表示窓608とを含んでいてもよい。
図13は、本実施の形態に係るサポート装置200が提供するユーザインターフェイス画面のさらに別の一例を示す模式図である。図13に示すユーザインターフェイス画面630は、ユーザが各種パラメータを調整するためのインターフェイスを提供する。
図13(A)を参照して、より具体的には、ユーザインターフェイス画面630は、優先度を示す表示窓632と、アプリケーション実行周期の長さを示す表示窓634と、内部コマンド40の生成に用いる通過点の数を示す表示窓636と、内部コマンド40を生成する際に算出する通過点の間隔を示す表示窓638とを含む。
表示窓640には、表示窓632,634,636,638にそれぞれ設定された値に応じた実行周期内処理完了確率の値が表示されている。
ユーザは、表示窓632,634,636,638にそれぞれ設定された値を任意に変更可能になっている。
図13(B)を参照して、例えば、表示窓632に表示される優先度の値を変更すると、変更後の優先度に従って、実行周期内処理完了確率が再度算出され、表示窓640に更新後の実行周期内処理完了確率の値が表示される。
また、表示窓634,636,638に表示される任意の値を変更することで、対象のアプリケーションプログラム32についての演算負荷値が再度算出されるとともに、更新後の演算負荷値に基づいて、実行周期内処理完了確率が再度算出される。
ユーザは、図13に示すユーザインターフェイス画面630上において、任意のパラメータを任意の値に変更して、そのときの実行周期内処理完了確率の値を確認することで、いずれの優先度および内部コマンドを生成するためのパラメータが最適であるかを容易に知ることができる。
<J.処理手順>
次に、本実施の形態に係る優先度の算出処理の処理手順の一例について説明する。
次に、本実施の形態に係る優先度の算出処理の処理手順の一例について説明する。
図14は、本実施の形態に係る優先度の算出処理の処理手順を示すフローチャートである。図14に示す各ステップは、典型的には、サポート装置200のプロセッサ202がサポートプログラム218を実行することで実現される。
図14を参照して、サポート装置200は、優先度の算出対象となるアプリケーションプログラム32を読込む(ステップS100)。また、サポート装置200は、内部コマンド生成設定情報58を参照して、内部コマンドの生成に係る設定値を取得する(ステップS102)。内部コマンドの生成に係る設定値は、アプリケーション実行周期の長さ、内部コマンド40の生成に用いる通過点の数、算出する通過点の間隔などを含む。
サポート装置200は、読込んだアプリケーションプログラム32を構文解析して、当該アプリケーションプログラム32に含まれるコマンドを抽出し(ステップS104)、演算負荷係数テーブル56を参照して、抽出したコマンドに対応する演算負荷係数を取得する(ステップS106)。さらに、サポート装置200は、取得した演算負荷係数に対して、ステップS102において取得した内部コマンドの生成に係る設定値に応じた補正係数を乗じて、演算負荷値を算出する(ステップS108)。算出された演算負荷値は逐次格納される。
続いて、サポート装置200は、対象のアプリケーションプログラム32に含まれるすべてのコマンドの抽出が完了したか否かを判断する(ステップS110)。対象のアプリケーションプログラム32に含まれるコマンドの抽出が完了していなければ(ステップS110においてNO)、ステップS104以下の処理が繰返される。
対象のアプリケーションプログラム32に含まれるすべてのコマンドの抽出が完了していれば(ステップS110においてYES)、サポート装置200は、ステップS108において算出した演算負荷値、および、タスク設定情報64に設定されている他のタスクの情報に基づいて、対象のアプリケーションプログラム32についての優先度を算出する(ステップS112)。そして、サポート装置200は、算出した優先度に対応する実行周期内処理完了確率を算出する(ステップS114)。
続いて、サポート装置200は、算出した優先度、算出した実行周期内処理完了確率、および、現在の内部コマンドの生成に係る設定値をユーザなどへ提示し(ステップS116)、ユーザからの操作を受付ける。
ユーザから内部コマンドの生成に係る設定値の変更指示を受付けると(ステップS118においてYES)、ステップS104以下の処理が繰返される。これにより、優先度および実行周期内処理完了確率が再度算出される。
また、ユーザから優先度の変更指示を受付けると(ステップS120においてYES)、ステップS114以下の処理が繰返される。これにより、実行周期内処理完了確率が再度算出される。
また、ユーザから優先度の承諾指示を受付けると(ステップS122においてYES)、サポート装置200は、対象のアプリケーションプログラム32の構文解析に係るタスクの優先度として現在の優先度を設定する(ステップS124)。より具体的には、設定された優先度は内部コマンド生成設定情報58に登録される。そして、処理は終了する。
以上のような処理手順によって、任意のアプリケーションプログラム32に対して適切な優先度を設定できる。
<K.演算負荷係数テーブルの学習処理>
次に、実際の負荷情報に基づいて演算負荷係数テーブル56を学習する処理の一例について説明する。
次に、実際の負荷情報に基づいて演算負荷係数テーブル56を学習する処理の一例について説明する。
上述したように、本実施の形態に係る優先度の算出処理においては、演算負荷係数テーブル56を参照して、アプリケーションプログラム32の演算負荷値を算出する。一般的に、演算負荷係数テーブル56に規定される演算負荷係数の値は理論値であり、実際の演算負荷係数の値はプログラムの実行環境などに依存して変化することもある。
そこで、実際の負荷情報に基づいて演算負荷係数テーブル56を学習することで、演算負荷係数テーブル56に規定される演算負荷係数の値の精度を高めるようにしてもよい。
図15は、本実施の形態に係る優先度の算出処理における演算負荷係数テーブル56の学習処理を説明するための模式図である。図15を参照して、例えば、演算負荷係数テーブル56を参照して、複数のアプリケーションプログラム32_1,32_2,・・・,32_Nからそれぞれ演算負荷値1,2,・・・,Nを算出したとする。
一方、複数のアプリケーションプログラム32_1,32_2,・・・,32_Nのそれぞれを制御装置100において実行させたときの実際の演算負荷の度合いを示す実負荷値1,2,・・・,Nを測定する。実負荷値1,2,・・・,Nは、例えば、構文解析処理に要するプロセッサ時間やプロセッサ時間から算出される負荷の度合いを示す。
演算負荷値1,2,・・・,Nと実負荷値1,2,・・・,Nとをそれぞれ比較して得られる比較結果1,2,・・・,Nに基づいて、演算負荷係数テーブル56に対する修正(学習)が実施されてもよい。この学習においては、比較結果1,2,・・・,N(すなわち、誤差)がゼロとなるように、演算負荷係数テーブル56に記述された演算負荷係数の値が調整される。
このように、サポート装置200は、制御装置100におけるアプリケーションプログラム32を構文解析するタスクの実行状況を取得するとともに、取得した実行状況に基づいて演算負荷係数テーブル56(演算負荷係数情報)を更新する学習機能を有していてもよい。
このような演算負荷係数テーブル56に記述された演算負荷係数の値の調整が繰返されることで、演算負荷係数テーブル56の精度を高めることができる。
なお、図15には、説明の便宜上、複数のアプリケーションプログラム32_1,32_2,・・・,32_Nを並列的に処理する例を示すが、これに限らず、1つのアプリケーションプログラム32について、複数回の学習処理を実施してもよい。
さらに、複数の制御装置100からの情報に基づいて、演算負荷係数テーブル56を学習するようにしてもよい。この場合、複数の制御装置100の各々において取得された比較結果をサーバなどに集約した上で、サーバ上で、演算負荷係数テーブル56に記述された演算負荷係数の値を調整するようにしてもよい。
このように、複数の制御装置100からの情報を利用することで、演算負荷係数テーブル56の精度を高めるとともに、汎化された演算負荷係数を得ることができる。
<L.エミュレータを用いた優先度の算出>
上述の説明においては、アプリケーションプログラム32を構文解析して演算負荷を算出する方法について例示したが、このような構文解析による方法に加えて、あるいは、それに代えて、エミュレータを用いて実際の負荷情報(実負荷情報)を推定した上で、優先度を算出するようにしてもよい。
上述の説明においては、アプリケーションプログラム32を構文解析して演算負荷を算出する方法について例示したが、このような構文解析による方法に加えて、あるいは、それに代えて、エミュレータを用いて実際の負荷情報(実負荷情報)を推定した上で、優先度を算出するようにしてもよい。
図16は、本実施の形態に係るエミュレータを用いた優先度の算出処理を説明するための模式図である。図16を参照して、サポート装置200はPLCエミュレータ70を有している。PLCエミュレータ70は、図5に示す制御装置100を模擬する機能構成であり、制御装置100が提供する機能と実質的に同一の機能を仮想的に提供するソフトウェアである。すなわち、PLCエミュレータ70は、制御装置100と同様の処理を実行することが可能である。
図16に示すように、制御装置100におけるプログラムの実行と同様に、PLCエミュレータ70にて、ユーザプログラム30およびアプリケーションプログラム32を実行する。PLCエミュレータ70によるこれらのプログラムの実行によって生じる、実際の演算負荷の度合いを示す実負荷情報がPLCエミュレータ70から出力される。
サポート装置200は、優先度算出モジュール62Aを有している。優先度算出モジュール62Aは、上述の図8に示す優先度算出モジュール62と同様の機能を有しており、PLCエミュレータ70からの実負荷情報に基づいて、アプリケーションプログラム32を構文解析するタスクに設定される適切な優先度を算出する。このように、優先度算出モジュール62Aは、PLCエミュレータ70において複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、アプリケーションプログラム32を構文解析するタスクに設定すべき優先度を算出する。
上述したように、エミュレータを用いて優先度を算出することで、より実際の制御装置100におけるアプリケーションプログラム32の実行の状況を反映した優先度を算出できる。
<M.実装置を用いた優先度の算出>
上述の説明においては、エミュレータを用いて実際の負荷情報(実負荷情報)を推定することで優先度を算出する方法について説明したが、実際の制御装置100でのプログラム実行において生じる実際の負荷情報(実負荷情報)を取得して、優先度を算出するようにしてもよい。
上述の説明においては、エミュレータを用いて実際の負荷情報(実負荷情報)を推定することで優先度を算出する方法について説明したが、実際の制御装置100でのプログラム実行において生じる実際の負荷情報(実負荷情報)を取得して、優先度を算出するようにしてもよい。
図17は、本実施の形態に係る実装置を用いた優先度の算出処理を説明するための模式図である。図17を参照して、制御装置100は、ユーザプログラム30およびアプリケーションプログラム32を実行する。制御装置100によるこれらのプログラムの実行によって生じる、実際の演算負荷の度合いを示す実負荷情報が制御装置100から出力される。
サポート装置200は、優先度算出モジュール62Bを有している。優先度算出モジュール62Bは、上述の図8に示す優先度算出モジュール62と同様の機能を有しており、制御装置100からの実負荷情報に基づいて、アプリケーションプログラム32を構文解析するタスクに設定される適切な優先度を算出する。このように、優先度算出モジュール62Bは、制御装置100において複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、アプリケーションプログラム32を構文解析するタスクに設定すべき優先度を算出する。
上述したように、実際の制御装置100においてプログラムを実行することで得られる実負荷情報に基づいて優先度を算出することで、アプリケーションプログラム32の実際の実行状況を反映した優先度を算出できる。
<N.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
1または複数のプロセッサを有する制御装置(100)に接続されるサポート装置(200)であって、前記制御装置は、複数のタスクを各タスクに設定された優先度に基づいて処理するように構成されており、
前記複数のタスクは、
内部コマンドに従って第1の周期毎に制御指令を出力する処理を含む第1のタスク(10,18)と、
前記第1の周期より長い第2の周期毎に、インタプリタ言語で記述されたアプリケーションプログラムの少なくとも一部を構文解析して前記内部コマンドを逐次生成する処理を含む第2のタスク(20)と、
前記第1のタスクおよび前記第2のタスクとは異なる処理を含む第3のタスク(22,24)とを含み、
前記サポート装置は、
前記アプリケーションプログラムに含まれるコマンドの構文解析に要する負荷の度合いを算出する負荷推定手段(52,54)と、
算出された負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出する優先度算出手段(62)とを備える、サポート装置。
[構成2]
前記第2のタスクに設定すべき優先度をユーザへ提示する提示手段(66)をさらに備える、構成1に記載のサポート装置。
[構成3]
ユーザ入力に応答して、前記第2のタスクに対する優先度の設定を反映する設定手段(68)をさらに備える、構成1または2に記載のサポート装置。
[構成4]
前記アプリケーションプログラムは、目標軌跡を定義する1または複数のコマンドを含んでおり、
前記第2のタスクは、前記目標軌跡上の通過点を逐次算出する処理、および、当該算出される複数の通過点を含む移動経路に基づいて前記内部コマンドを生成する処理を含み、
前記負荷推定手段は、前記第2の周期の長さ、前記内部コマンドの生成に用いる通過点の数、および、算出する通過点の間隔の少なくとも一つを反映して、前記負荷の度合いを算出する、構成1〜3のいずれか1項に記載のサポート装置。
[構成5]
前記負荷推定手段は、コマンド毎に演算負荷係数を規定した演算負荷係数情報(56)を参照することで、前記負荷の度合いを算出する、構成1〜4のいずれか1項に記載のサポート装置。
[構成6]
前記制御装置における前記第2のタスクの実行状況を取得するとともに、取得した実行状況に基づいて前記演算負荷係数情報を更新する学習手段をさらに備える、構成5に記載のサポート装置。
[構成7]
前記制御装置を模擬するエミュレータ(70)と、
前記エミュレータにおいて前記複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出する第2の優先度算出手段(62A)とをさらに備える、構成1〜6のいずれか1項に記載のサポート装置。
[構成8]
前記制御装置において前記複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出する第3の優先度算出手段(62B)をさらに備える、構成1〜7のいずれか1項に記載のサポート装置。
[構成9]
1または複数のプロセッサ(102)を有する制御装置(100)に接続されるサポート装置(200)を実現するためのサポートプログラムであって、前記制御装置は、複数のタスクを各タスクに設定された優先度に基づいて処理するように構成されており、
前記複数のタスクは、
内部コマンドに従って第1の周期毎に制御指令を出力する処理を含む第1のタスク(10,18)と、
前記第1の周期より長い第2の周期毎に、インタプリタ言語で記述されたアプリケーションプログラムの少なくとも一部を構文解析して前記内部コマンドを逐次生成する処理を含む第2のタスク(20)と、
前記第1のタスクおよび前記第2のタスクとは異なる処理を含む第3のタスク(22,24)とを含み、
前記サポートプログラムは、コンピュータに
前記アプリケーションプログラムに含まれるコマンドの構文解析に要する負荷の度合いを算出するステップ(S104,S106,S108)と、
算出された負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出するステップ(S112)とを実行させる、サポートプログラム。
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
1または複数のプロセッサを有する制御装置(100)に接続されるサポート装置(200)であって、前記制御装置は、複数のタスクを各タスクに設定された優先度に基づいて処理するように構成されており、
前記複数のタスクは、
内部コマンドに従って第1の周期毎に制御指令を出力する処理を含む第1のタスク(10,18)と、
前記第1の周期より長い第2の周期毎に、インタプリタ言語で記述されたアプリケーションプログラムの少なくとも一部を構文解析して前記内部コマンドを逐次生成する処理を含む第2のタスク(20)と、
前記第1のタスクおよび前記第2のタスクとは異なる処理を含む第3のタスク(22,24)とを含み、
前記サポート装置は、
前記アプリケーションプログラムに含まれるコマンドの構文解析に要する負荷の度合いを算出する負荷推定手段(52,54)と、
算出された負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出する優先度算出手段(62)とを備える、サポート装置。
[構成2]
前記第2のタスクに設定すべき優先度をユーザへ提示する提示手段(66)をさらに備える、構成1に記載のサポート装置。
[構成3]
ユーザ入力に応答して、前記第2のタスクに対する優先度の設定を反映する設定手段(68)をさらに備える、構成1または2に記載のサポート装置。
[構成4]
前記アプリケーションプログラムは、目標軌跡を定義する1または複数のコマンドを含んでおり、
前記第2のタスクは、前記目標軌跡上の通過点を逐次算出する処理、および、当該算出される複数の通過点を含む移動経路に基づいて前記内部コマンドを生成する処理を含み、
前記負荷推定手段は、前記第2の周期の長さ、前記内部コマンドの生成に用いる通過点の数、および、算出する通過点の間隔の少なくとも一つを反映して、前記負荷の度合いを算出する、構成1〜3のいずれか1項に記載のサポート装置。
[構成5]
前記負荷推定手段は、コマンド毎に演算負荷係数を規定した演算負荷係数情報(56)を参照することで、前記負荷の度合いを算出する、構成1〜4のいずれか1項に記載のサポート装置。
[構成6]
前記制御装置における前記第2のタスクの実行状況を取得するとともに、取得した実行状況に基づいて前記演算負荷係数情報を更新する学習手段をさらに備える、構成5に記載のサポート装置。
[構成7]
前記制御装置を模擬するエミュレータ(70)と、
前記エミュレータにおいて前記複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出する第2の優先度算出手段(62A)とをさらに備える、構成1〜6のいずれか1項に記載のサポート装置。
[構成8]
前記制御装置において前記複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出する第3の優先度算出手段(62B)をさらに備える、構成1〜7のいずれか1項に記載のサポート装置。
[構成9]
1または複数のプロセッサ(102)を有する制御装置(100)に接続されるサポート装置(200)を実現するためのサポートプログラムであって、前記制御装置は、複数のタスクを各タスクに設定された優先度に基づいて処理するように構成されており、
前記複数のタスクは、
内部コマンドに従って第1の周期毎に制御指令を出力する処理を含む第1のタスク(10,18)と、
前記第1の周期より長い第2の周期毎に、インタプリタ言語で記述されたアプリケーションプログラムの少なくとも一部を構文解析して前記内部コマンドを逐次生成する処理を含む第2のタスク(20)と、
前記第1のタスクおよび前記第2のタスクとは異なる処理を含む第3のタスク(22,24)とを含み、
前記サポートプログラムは、コンピュータに
前記アプリケーションプログラムに含まれるコマンドの構文解析に要する負荷の度合いを算出するステップ(S104,S106,S108)と、
算出された負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出するステップ(S112)とを実行させる、サポートプログラム。
<O.利点>
本実施の形態に係るサポート装置は、プロセッサリソースを共有して複数のタスクを実行させるにあたって、注目しているタスクに設定されている処理によって実際に生じる負荷の度合いを考慮した上で、当該タスクに設定すべき優先度を事前に推定できる。このような優先度の事前推定によって、制御装置において試行錯誤的にプログラムを実行させて優先度を決定するような手間を省略できる。また、事前知識の乏しいユーザであっても、タスクに設定すべき適切な優先度を知ることができる。
本実施の形態に係るサポート装置は、プロセッサリソースを共有して複数のタスクを実行させるにあたって、注目しているタスクに設定されている処理によって実際に生じる負荷の度合いを考慮した上で、当該タスクに設定すべき優先度を事前に推定できる。このような優先度の事前推定によって、制御装置において試行錯誤的にプログラムを実行させて優先度を決定するような手間を省略できる。また、事前知識の乏しいユーザであっても、タスクに設定すべき適切な優先度を知ることができる。
本実施の形態に係るサポート装置は、アプリケーションプログラムを構文解析して、それに含まれる各コマンドに応じた負荷の度合いを算出できるので、より正確な負荷の度合いの算出、および、それに基づく優先度の算出を実現できる。
本実施の形態に係るサポート装置は、アプリケーションプログラムの実行に係る負荷の度合いおよび設定される優先度の情報などをユーザへ提示できるので、ユーザは、タスクに対する優先度を設定するにあたって、より有益な情報を容易に取得できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、2 フィールドネットワーク、6 上位ネットワーク、10 第1タスク、12 シーケンス命令実行処理、14,16 出力処理、18 第2タスク、20 第3タスク、22 第4タスク、24 第5タスク、30 ユーザプログラム、32 アプリケーションプログラム、34 システムプログラム、38 レシピ情報、40 内部コマンド、42 通過点、44 移動経路、50 負荷推定処理、52 構文解析モジュール、54 演算負荷算出モジュール、56 演算負荷係数テーブル、58 内部コマンド生成設定情報、60 優先度算出処理、62,62A,62B 優先度算出モジュール、64,156 タスク設定情報、66 対話モジュール、68 設定モジュール、70 エミュレータ、100 制御装置、200 サポート装置、102,202 プロセッサ、104 チップセット、106,206 主メモリ、108,208 ストレージ、110 上位ネットワークコントローラ、112,212 USBコントローラ、114 メモリカードインターフェイス、116 メモリカード、120 内部バスコントローラ、122 I/Oユニット、130 フィールドネットワークコントローラ、150 PLC処理エンジン、152 シーケンスプログラム実行部、154 スケジューラ、160 アプリケーション解析部、162 アプリケーション調停部、164 制御指令演算部、170 共有メモリ、172 共有メモリ制御部、174 表示機能部、176 フィールドネットワークインターフェイス、178 上位ネットワークインターフェイス、204 ディスプレイ、210 内部バス、214 入力装置、216 OS、218 サポートプログラム、300 サーバ装置、400 表示装置、500 フィールド機器、510 リモートI/O装置、520 ロボット、522 ロボットコントローラ、530 工作機械、532 サーボモータ、534 コンベア、536 ワークテーブル、538 サーボドライバ、541 演算負荷係数参照モジュール、542,544,546 係数算出モジュール、543,545,547 係数乗算モジュール、548 統計処理モジュール、621 優先度テーブル、624 タスク属性情報、W ワーク。
図6に示すように、「先読み」動作において、アプリケーション解析部160は、目標軌跡上の隣接する通過点間に対応する内部コマンド40を、目標軌跡上の当該隣接する通過点に引き続く複数の通過点の情報に基づいて生成する。
1 制御システム、2 フィールドネットワーク、6 上位ネットワーク、10 第1タスク、12 シーケンス命令実行処理、14,16 出力処理、18 第2タスク、20 第3タスク、22 第4タスク、24 第5タスク、30 ユーザプログラム、32 アプリケーションプログラム、34 システムプログラム、38 レシピ情報、40 内部コマンド、44 移動経路、50 負荷推定処理、52 構文解析モジュール、54 演算負荷算出モジュール、56 演算負荷係数テーブル、58 内部コマンド生成設定情報、60 優先度算出処理、62,62A,62B 優先度算出モジュール、64,156 タスク設定情報、66 対話モジュール、68 設定モジュール、70 エミュレータ、100 制御装置、200 サポート装置、102,202 プロセッサ、104 チップセット、106,206 主メモリ、108,208 ストレージ、110 上位ネットワークコントローラ、112,212 USBコントローラ、114 メモリカードインターフェイス、116 メモリカード、120 内部バスコントローラ、122 I/Oユニット、130 フィールドネットワークコントローラ、150 PLC処理エンジン、152 シーケンスプログラム実行部、154 スケジューラ、160 アプリケーション解析部、162 アプリケーション調停部、164 制御指令演算部、170 共有メモリ、172 共有メモリ制御部、174 表示機能部、176 フィールドネットワークインターフェイス、178 上位ネットワークインターフェイス、204 ディスプレイ、210 内部バス、214 入力装置、216 OS、218 サポートプログラム、300 サーバ装置、400 表示装置、500 フィールド機器、510 リモートI/O装置、520 ロボット、522 ロボットコントローラ、530 工作機械、532 サーボモータ、534 コンベア、536 ワークテーブル、538 サーボドライバ、541 演算負荷係数参照モジュール、542,544,546 係数算出モジュール、543,545,547 係数乗算モジュール、548 統計処理モジュール、621 優先度テーブル、624 タスク属性情報、W ワーク。
Claims (9)
- 1または複数のプロセッサを有する制御装置に接続されるサポート装置であって、前記制御装置は、複数のタスクを各タスクに設定された優先度に基づいて処理するように構成されており、
前記複数のタスクは、
内部コマンドに従って第1の周期毎に制御指令を出力する処理を含む第1のタスクと、
前記第1の周期より長い第2の周期毎に、インタプリタ言語で記述されたアプリケーションプログラムの少なくとも一部を構文解析して前記内部コマンドを逐次生成する処理を含む第2のタスクと、
前記第1のタスクおよび前記第2のタスクとは異なる処理を含む第3のタスクとを含み、
前記サポート装置は、
前記アプリケーションプログラムに含まれるコマンドの構文解析に要する負荷の度合いを算出する負荷推定手段と、
算出された負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出する優先度算出手段とを備える、サポート装置。 - 前記第2のタスクに設定すべき優先度をユーザへ提示する提示手段をさらに備える、請求項1に記載のサポート装置。
- ユーザ入力に応答して、前記第2のタスクに対する優先度の設定を反映する設定手段をさらに備える、請求項1または2に記載のサポート装置。
- 前記アプリケーションプログラムは、目標軌跡を定義する1または複数のコマンドを含んでおり、
前記第2のタスクは、前記目標軌跡上の通過点を逐次算出する処理、および、当該算出される複数の通過点を含む移動経路に基づいて前記内部コマンドを生成する処理を含み、
前記負荷推定手段は、前記第2の周期の長さ、前記内部コマンドの生成に用いる通過点の数、および、算出する通過点の間隔の少なくとも一つを反映して、前記負荷の度合いを算出する、請求項1〜3のいずれか1項に記載のサポート装置。 - 前記負荷推定手段は、コマンド毎に演算負荷係数を規定した演算負荷係数情報を参照することで、前記負荷の度合いを算出する、請求項1〜4のいずれか1項に記載のサポート装置。
- 前記制御装置における前記第2のタスクの実行状況を取得するとともに、取得した実行状況に基づいて前記演算負荷係数情報を更新する学習手段をさらに備える、請求項5に記載のサポート装置。
- 前記制御装置を模擬するエミュレータと、
前記エミュレータにおいて前記複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出する第2の優先度算出手段とをさらに備える、請求項1〜6のいずれか1項に記載のサポート装置。 - 前記制御装置において前記複数のタスクを実行することで取得される実際の演算負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出する第3の優先度算出手段をさらに備える、請求項1〜7のいずれか1項に記載のサポート装置。
- 1または複数のプロセッサを有する制御装置に接続されるサポート装置を実現するためのサポートプログラムであって、前記制御装置は、複数のタスクを各タスクに設定された優先度に基づいて処理するように構成されており、
前記複数のタスクは、
内部コマンドに従って第1の周期毎に制御指令を出力する処理を含む第1のタスクと、
前記第1の周期より長い第2の周期毎に、インタプリタ言語で記述されたアプリケーションプログラムの少なくとも一部を構文解析して前記内部コマンドを逐次生成する処理を含む第2のタスクと、
前記第1のタスクおよび前記第2のタスクとは異なる処理を含む第3のタスクとを含み、
前記サポートプログラムは、コンピュータに
前記アプリケーションプログラムに含まれるコマンドの構文解析に要する負荷の度合いを算出するステップと、
算出された負荷の度合いに基づいて、前記第2のタスクに設定すべき優先度を算出するステップとを実行させる、サポートプログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017185147A JP2019061467A (ja) | 2017-09-26 | 2017-09-26 | サポート装置およびサポートプログラム |
US15/892,431 US20190095246A1 (en) | 2017-09-26 | 2018-02-09 | Support device and non-transitory storage medium |
CN201810147709.2A CN109557889A (zh) | 2017-09-26 | 2018-02-12 | 支持装置及记录媒体 |
EP18156398.2A EP3460596A1 (en) | 2017-09-26 | 2018-02-13 | Support device and support program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017185147A JP2019061467A (ja) | 2017-09-26 | 2017-09-26 | サポート装置およびサポートプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019061467A true JP2019061467A (ja) | 2019-04-18 |
Family
ID=61256559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017185147A Withdrawn JP2019061467A (ja) | 2017-09-26 | 2017-09-26 | サポート装置およびサポートプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190095246A1 (ja) |
EP (1) | EP3460596A1 (ja) |
JP (1) | JP2019061467A (ja) |
CN (1) | CN109557889A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021043750A (ja) * | 2019-09-12 | 2021-03-18 | ファナック株式会社 | サーボ制御装置、サーボ制御システム及びサーボ制御方法 |
JP2021144627A (ja) * | 2020-03-13 | 2021-09-24 | オムロン株式会社 | 制御システムおよびサポート装置 |
WO2021235324A1 (ja) * | 2020-05-18 | 2021-11-25 | ファナック株式会社 | ロボット制御装置及びロボットシステム |
WO2022264424A1 (ja) * | 2021-06-18 | 2022-12-22 | ファナック株式会社 | 制御装置及び制御方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7277292B2 (ja) * | 2019-07-08 | 2023-05-18 | ファナック株式会社 | Plc装置 |
JP6761158B1 (ja) * | 2019-12-16 | 2020-09-23 | 株式会社安川電機 | プログラム作成装置、プログラム作成方法、及びプログラム |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA951412A (en) * | 1970-08-06 | 1974-07-16 | John E. Stevenson | Stored program numerical control system |
JP3273600B2 (ja) * | 1999-03-10 | 2002-04-08 | セイコーエプソン株式会社 | プリンタ、プリンタ制御方法及びプログラムを記録した記憶媒体 |
JP3386777B2 (ja) | 1999-05-11 | 2003-03-17 | ファナック株式会社 | 数値制御システム |
US7072805B2 (en) * | 2003-10-17 | 2006-07-04 | International Business Machines Corporation | Mechanism for on-line prediction of future performance measurements in a computer system |
JP2007140655A (ja) * | 2005-11-15 | 2007-06-07 | Yaskawa Electric Corp | モーションコントローラ |
US20080244592A1 (en) * | 2007-03-27 | 2008-10-02 | Kabushiki Kaisha Toshiba | Multitask processing device and method |
JP4877423B1 (ja) * | 2011-03-15 | 2012-02-15 | オムロン株式会社 | Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体 |
EP2778915A1 (de) * | 2013-03-13 | 2014-09-17 | Siemens Aktiengesellschaft | Verfahren zum Betrieb einer Industriesteuerung und Industriesteuerung |
CN103399798A (zh) * | 2013-07-29 | 2013-11-20 | 深圳市汇川控制技术有限公司 | Plc的多任务控制方法和装置 |
JP6465620B2 (ja) | 2014-10-31 | 2019-02-06 | ヤマハ発動機株式会社 | 制御システムおよび制御方法 |
CN104597832B (zh) * | 2014-12-31 | 2017-04-19 | 浙江中控研究院有限公司 | 一种基于amba总线的plc程序调度器ip核 |
JP2016224883A (ja) * | 2015-06-04 | 2016-12-28 | 富士通株式会社 | 異常検出方法、情報処理装置および異常検出プログラム |
JP6333796B2 (ja) * | 2015-11-25 | 2018-05-30 | ファナック株式会社 | 複数のcpuコアで最適な負荷配分を行う数値制御装置 |
CN205210868U (zh) * | 2015-12-07 | 2016-05-04 | 武汉海默自控股份有限公司 | 一种基于多核cpu的多任务分配 |
DE102017001765B4 (de) * | 2016-02-29 | 2024-08-08 | Fanuc Corporation | Numerische steuerung für werkzeugmaschine |
JP7035858B2 (ja) * | 2018-07-03 | 2022-03-15 | 富士通株式会社 | マイグレーション管理プログラム、マイグレーション方法およびマイグレーションシステム |
-
2017
- 2017-09-26 JP JP2017185147A patent/JP2019061467A/ja not_active Withdrawn
-
2018
- 2018-02-09 US US15/892,431 patent/US20190095246A1/en not_active Abandoned
- 2018-02-12 CN CN201810147709.2A patent/CN109557889A/zh active Pending
- 2018-02-13 EP EP18156398.2A patent/EP3460596A1/en not_active Withdrawn
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021043750A (ja) * | 2019-09-12 | 2021-03-18 | ファナック株式会社 | サーボ制御装置、サーボ制御システム及びサーボ制御方法 |
US11687055B2 (en) | 2019-09-12 | 2023-06-27 | Fanuc Corporation | Servo control device, servo control system, and servo control method |
JP7444566B2 (ja) | 2019-09-12 | 2024-03-06 | ファナック株式会社 | サーボ制御装置、サーボ制御システム及びサーボ制御方法 |
JP2021144627A (ja) * | 2020-03-13 | 2021-09-24 | オムロン株式会社 | 制御システムおよびサポート装置 |
JP7375632B2 (ja) | 2020-03-13 | 2023-11-08 | オムロン株式会社 | 制御システムおよびサポート装置 |
WO2021235324A1 (ja) * | 2020-05-18 | 2021-11-25 | ファナック株式会社 | ロボット制御装置及びロボットシステム |
JPWO2021235324A1 (ja) * | 2020-05-18 | 2021-11-25 | ||
JP7448647B2 (ja) | 2020-05-18 | 2024-03-12 | ファナック株式会社 | ロボット制御装置及びロボットシステム |
WO2022264424A1 (ja) * | 2021-06-18 | 2022-12-22 | ファナック株式会社 | 制御装置及び制御方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109557889A (zh) | 2019-04-02 |
EP3460596A1 (en) | 2019-03-27 |
US20190095246A1 (en) | 2019-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10761515B2 (en) | Control system for controlling control object and control device for linking control applications in control system | |
CN109388107B (zh) | 控制装置 | |
EP3477405B1 (en) | Control device | |
JP6903275B2 (ja) | 制御装置および制御方法 | |
JP2019061467A (ja) | サポート装置およびサポートプログラム | |
US10908577B2 (en) | Control device | |
JP6900863B2 (ja) | 制御装置、制御方法および制御プログラム | |
US10606246B2 (en) | Control device and control method with various command values in a shared memory providing access to various program execution and command value operation parts in each control cycle | |
JP7310465B2 (ja) | 同期制御装置、同期制御システム、同期制御方法、及びシミュレーション装置 | |
CN109491324B (zh) | 控制装置及控制方法 | |
JP7077848B2 (ja) | 制御装置 | |
WO2021095466A1 (ja) | 制御装置 | |
JP2021114019A (ja) | データ処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180205 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200304 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20200716 |