JP6927089B2 - 制御装置、システムプログラム、制御方法 - Google Patents

制御装置、システムプログラム、制御方法 Download PDF

Info

Publication number
JP6927089B2
JP6927089B2 JP2018038665A JP2018038665A JP6927089B2 JP 6927089 B2 JP6927089 B2 JP 6927089B2 JP 2018038665 A JP2018038665 A JP 2018038665A JP 2018038665 A JP2018038665 A JP 2018038665A JP 6927089 B2 JP6927089 B2 JP 6927089B2
Authority
JP
Japan
Prior art keywords
program
execution
processor
notification
instruction
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
JP2018038665A
Other languages
English (en)
Other versions
JP2019153144A (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 JP2018038665A priority Critical patent/JP6927089B2/ja
Priority to CN201811510452.9A priority patent/CN110231781B/zh
Priority to EP18211652.5A priority patent/EP3557345B1/en
Priority to US16/221,589 priority patent/US10877803B2/en
Publication of JP2019153144A publication Critical patent/JP2019153144A/ja
Application granted granted Critical
Publication of JP6927089B2 publication Critical patent/JP6927089B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/25Pc structure of the system
    • G05B2219/25343Real time multitasking

Landscapes

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

Description

本技術は、優先度の異なる複数のプログラムを実行する制御装置におけるプログラム実行に係る制御方法に関する。
様々な生産現場において、PLC(プログラマブルコントローラ)などの制御装置を用いたFA(Factory Automation)技術が広く普及している。近年の情報通信技術(ICT:Information and Communication Technology)の発展に伴って、このようなFA分野における制御装置においても、従来のシーケンスプログラムだけではなく、各種のアプリケーションプログラムが実行されるようになっている。
例えば、特開2012−194662号公報(特許文献1)は、第1のユーザプログラム実行サイクルで、ユーザプログラムおよびモーション演算プロセッサを繰返し実行する構成を開示する。
特開2012−194662号公報
特開2012−194662号公報(特許文献1)においては、ユーザプログラムは、モーション制御サイクルで繰返し実行される高優先ユーザプログラムと、モーション制御サイクルの周期の整数倍で繰返し実行される低優先ユーザプログラム(一例として、他の処理P、他の処理Q、他の処理R)とに分類される。このように、低優先ユーザプログラムとしては、複数のプログラムが含まれることがあり、これらのプログラムが予め定められた順序で実行されることになる。
しかしながら、低優先ユーザプログラムとして実行されるプログラムの高度化および情報化に伴って、低優先ユーザプログラムに含まれる複数の処理のうち、特定の処理の実行に多くの時間を消費して、残りの処理を実行するための時間を十分に確保できないという新たな課題が生じるようになってきた。
本技術は、制御装置で優先度の異なる複数のプログラムを実行させるにあたって、相対的に優先度の低いプログラムの実行状況も適切に評価できる仕組みを提供することを目的とする。
本開示の一例に従えば、制御対象を制御するための制御装置が提供される。制御装置は、プロセッサと、プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラムと、第1のプログラムより実行の優先度が低い第2のプログラムと、第2のプログラムより実行の優先度が低い第3のプログラムと、プロセッサに実行させるプログラムを管理するスケジューラプログラムとを含む。第2のプログラムは、プロセッサでの実行の開始に応じて開始通知を出力するとともに、プロセッサでの実行の完了に応じて終了通知を出力する通知命令を含む。スケジューラプログラムは、第1のプログラムの実行を妨げないように、プロセッサで第2および第3のプログラムを実行させるための命令と、予め定められた監視サイクル毎に、第2のプログラムからの開始通知および終了通知に基づいて、第2のプログラムの実行状況を判断するための命令とを含む。
この開示によれば、スケジューラプログラムは、第2のプログラムからの開始通知および終了通知に基づいて、第2のプログラムの実行状況を判断できるので、第1のプログラムに多くのコンピューティング資源が割当てられており、第2のプログラムが適切に実行できていない状況などを適切に把握できる。
上述の開示において、制御装置は、第2のプログラムより実行の優先度が高い第4のプログラムをさらに含む。スケジューラプログラムは、第2のプログラムの実行状況が予め定められた設定を満たしていない場合に、第4のプログラムの実行を一時的に中断させるための命令を含む。
この開示によれば、第2のプログラムが適切に実行できていない状況であると判断されると、第4のプログラムの実行を一時的に中断させて、第2のプログラムに対して、より多くのコンピューティング資源を割当てることができる。
上述の開示において、実行状況を判断するための命令は、監視サイクルにおける第3のプログラムの実行状況を判断する命令を含む。スケジューラプログラムは、第3のプログラムの実行状況が予め定められた設定を満たしていない場合に、第2のプログラムの実行を一時的に中断させるための命令を含む。
この開示によれば、第3のプログラムが適切に実行できていない状況であると判断されると、第2のプログラムの実行を一時的に中断させて、第3のプログラムに対して、より多くのコンピューティング資源を割当てることができる。
上述の開示において、通知命令は、API(Application Programming Interface)を利用して、第2のプログラムに組込まれる。
この開示によれば、APIを用いて共通のライブラリを呼出すような実装が可能となるので、第2のプログラムに対して、本実施の形態に係る機能を容易に実装できる。
上述の開示において、スケジューラプログラムは、第1のプログラムを予め定められた制御サイクル毎に繰返し実行させる。
この開示によれば、本実施の形態に係る機能を定周期実行される環境に適用できる。
上述の開示において、スケジューラプログラムは、第1のプログラムが実行されていない空き時間に、第2のプログラムおよび第3のプログラムを実行させる。
この開示によれば、本実施の形態に係る機能を第1のプログラムが定周期実行されるとともに、第2のプログラムおよび第3のプログラムが可能な範囲で実行される環境下において、本実施の形態に係る機能を適用できる。
上述の開示において、実行状況を判断するための命令は、監視サイクルにおける第2のプログラムの動作時間の比率を算出する命令を含む。
この開示によれば、監視サイクル毎に、第2のプログラムについて予め設定された目標の動作時間を満たしているか否かを判断できる。
上述の開示において、実行状況を判断するための命令は、監視サイクルより長い第2の監視サイクルにおける第3のプログラムの動作時間の比率を算出する命令をさらに含む。
この開示によれば、第2の監視サイクル毎に、第3のプログラムについて予め設定された目標の動作時間を満たしているか否かを判断できる。
本開示の別の一例に従えば、制御対象を制御するためのプロセッサを有する制御装置で実行されるシステムプログラムが提供される。制御装置は、プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラムと、第1のプログラムより実行の優先度が低い第2のプログラムと、第2のプログラムより実行の優先度が低い第3のプログラムとを含む。第2のプログラムは、プロセッサでの実行の開始に応じて開始通知を出力するとともに、プロセッサでの実行の完了に応じて終了通知を出力する通知命令を含む。システムプログラムは、プロセッサに実行させるプログラムを管理するスケジューラプログラムを含む。スケジューラプログラムは、第1のプログラムの実行を妨げないように、プロセッサで第2および第3のプログラムを実行させるための命令と、予め定められた監視サイクル毎に、第2のプログラムからの開始通知および終了通知に基づいて、第2のプログラムの実行状況を判断するための命令とを含む。
この開示によれば、スケジューラプログラムは、第2のプログラムからの開始通知および終了通知に基づいて、第2のプログラムの実行状況を判断できるので、第1のプログラムに多くのコンピューティング資源が割当てられており、第2のプログラムが適切に実行できていない状況などを適切に把握できる。
本開示のさらに別の一例に従えば、制御対象を制御するためのプロセッサを有する制御装置の制御方法が提供される。制御装置は、プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラムと、第1のプログラムより実行の優先度が低い第2のプログラムと、第2のプログラムより実行の優先度が低い第3のプログラムとを含む。第2のプログラムは、プロセッサでの実行の開始に応じて開始通知を出力するとともに、プロセッサでの実行の完了に応じて終了通知を出力する通知命令を含む。制御方法は、第1のプログラムの実行を妨げないように、プロセッサで第2および第3のプログラムを実行させるステップと、予め定められた監視サイクル毎に、第2のプログラムからの開始通知および終了通知に基づいて、第2のプログラムの実行状況を判断するステップとを含む。
この開示によれば、第2のプログラムからの開始通知および終了通知に基づいて、第2のプログラムの実行状況を判断できるので、第1のプログラムに多くのコンピューティング資源が割当てられており、第2のプログラムが適切に実行できていない状況などを適切に把握できる。
本発明によれば、制御装置で優先度の異なる複数のプログラムを実行させるにあたって、相対的に優先度の低いプログラムの実行状況も適切に評価できる。
本実施の形態に係る制御装置におけるプログラム実行の一例を示す模式図である。 本実施の形態に係る制御システムの構成例を示す模式図である。 本実施の形態に係る制御装置を構成する演算ユニットのハードウェア構成の一例を示す模式図である。 本実施の形態に係る制御装置を構成する演算ユニットのソフトウェア構成の一例を示す模式図である。 本実施の形態に係る演算ユニットにおける優先度に応じた処理の一例を示す模式図である。 本実施の形態に係る演算ユニットにおける通知機能および監視機能を説明するための図である。 本実施の形態に係る演算ユニットにおける介入機能を説明するための図である。 本実施の形態に係るシステムサービスに対するコンピューティング資源割当ての管理機能を説明するためのシーケンス図である。 本実施の形態に係る演算ユニットにおいて、プライマリタスクおよびセカンダリタスクが設定されている場合の実行状況の一例を示す図である。 本実施の形態に係る演算ユニットにおいて、プライマリタスクのみが設定されている場合の実行状況の一例を示す図である。 本実施の形態に係る演算ユニットにおいて、プライマリタスクおよびセカンダリタスクが設定されている場合の実行状況の別の一例を示す図である。 本実施の形態に係る演算ユニットにおいて、プライマリタスクおよびセカンダリタスクが設定されている場合の実行状況のさらに別の一例を示す図である。 本実施の形態に係る演算ユニットにおいて、プライマリタスクおよびセカンダリタスクが非定周期実行されている場合の実行状況の一例を示す図である。 本実施の形態に係る演算ユニットにおける処理手順を示すフローチャートである。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
図1は、本実施の形態に係る制御装置1におけるプログラム実行の一例を示す模式図である。図1を参照して、制御装置1は、任意の制御対象を制御するためのコンピュータであり、1または複数のプロセッサを有している。
図1には、制御装置1において、プライマリタスク240およびシステムサービスタスク250がシーケンシャルに実行されている例を示す。本明細書において、「タスク」との用語は、コンピューティング資源を割当てる制御の対象となる基本単位であり、各タスクに、実行させるべき1または複数のプログラムが登録または設定される。すなわち、いずれかのタスクに対してコンピューティング資源が割当てられ、当該タスクが実行できる状態になると、当該タスクに登録または設定されている1または複数のプログラムの実行が開始または再開されることになる。
プライマリタスク240は、制御装置1のプロセッサで実行される最も実行の優先度(以下、単に「優先度」とも称す。)の高いプログラムを含むことになり、例えば、入出力データの更新処理(以下、「IOリフレッシュ」とも称す。)および最優先で実行されるべきシーケンス演算処理などを含む。プライマリタスク240が定周期実行される場合には、プライマリタスク240の処理完了に要する時間は、定周期実行されるサイクルの長さ以下になるように保証される。
一方、システムサービスタスク250は、プライマリタスク240に比較して優先度が低い、1または複数のプログラムを含む。本実施の形態においては、システムサービスタスク250は、優先度の異なる複数のプログラムを含む。より具体的には、システムサービスタスク250は、高優先度サービス252および低優先度サービス256を含む。高優先度サービス252は、プライマリタスク240に含まれるプログラムに比較して優先度が低いプログラムを含むことになり、低優先度サービス256は、高優先度サービス252に含まれるプログラムに比較して優先度が低いプログラムを含むことになる。
これらのタスク(に含まれる各プログラム)の実行タイミングは、スケジューラプログラム212がプロセッサで実行されることで実現される実行管理機能(以下、「スケジューラ」とも称す。)によって管理される。すなわち、制御装置1は、プロセッサに実行させるプログラムを管理するスケジューラプログラム212を含むことになる。
スケジューラプログラム212は、プライマリタスク240に含まれるプログラムを繰返し実行させるとともに、プライマリタスク240に含まれるプログラムの実行を妨げないように、プロセッサにシステムサービスタスク250に含まれるプログラム(高優先度サービス252および低優先度サービス256にそれぞれ登録されているプログラム)を実行させる。スケジューラプログラム212によるプログラムの実行管理は、適時のタイミングおよび期間で、コンピューティング資源を各プログラムに割当てることで実現できる。
ここで、システムサービスタスク250は、プライマリタスク240を実行するために使用されるコンピューティング資源以外のコンピューティング資源を用いて実行されるため、実行サイクルは保証されず、実行時に利用可能なコンピューティング資源に応じて実行される。
本実施の形態に係る制御装置1は、システムサービスタスク250についても、ある程度の実行時間管理を実現する方法を提供する。具体的には、高優先度サービス252に含まれるプログラムには通知機能254が実装されており、通知機能254は、高優先度サービス252の対応するプログラムのプロセッサでの実行の開始に応じて開始通知270を出力するとともに、プロセッサでの実行の完了に応じて終了通知272を出力する。通知機能254は、対応のプログラムに必要な命令コードを組込むような方法で実現できる。
スケジューラプログラム212は、予め定められた監視サイクル262毎にプログラムの実行状況を監視するための監視機能2122を有している。監視機能2122は、スケジューラプログラム212に含まれる命令コードによって実現されてもよい。
監視機能2122は、高優先度サービス252に含まれるプログラムの通知機能254からの開始通知270および終了通知272に基づいて、監視サイクル262毎に、対応するプログラム(高優先度サービス252に含まれるプログラム)の実行状況を判断する。実行状況としては、対応するプログラムの動作有無、および、監視サイクル262毎の動作時間割合などを含む。
本実施の形態に係る制御装置1においては、図1に示す監視機能2122を用いることで、従来は動作時間などを保証することができなかった、システムサービスタスク250に含まれるプログラムについても、コンピューティング資源の適切な割当てなどを制御できる。
<B.制御システムの構成>
まず、本実施の形態に係る制御システムSYSの構成について説明する。
図2は、本実施の形態に係る制御システムSYSの構成例を示す模式図である。図2を参照して、制御システムSYSは、制御装置1と、制御装置1とフィールドネットワーク2を介して接続されるサーボモータドライバ3およびリモートIOターミナル5と、フィールド機器である検出スイッチ6およびリレー7とを含む。制御装置1には、接続ケーブル10などを介してサポート装置8が接続される。
制御装置1は、主たる演算処理を実行する演算ユニット13と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、PLCシステムバス11を介して、データを互いに遣り取りできるように構成される。これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。
IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。具体的には、IOユニット14は、検出スイッチ6などのセンサが何らかの対象物を検出している状態(オン)および何らの対象物も検出していない状態(オフ)のいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令(オン)および不活性化するための指令(オフ)のいずれかを出力することもある。
特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。
フィールドネットワーク2は、演算ユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、例えば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)−III、Powerlink、SERCOS(登録商標)−III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワークを用いてもよい。例えば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを用いてもよい。
図1には、PLCシステムバス11およびフィールドネットワーク2の両方を有する制御装置1を例示するが、一方のみを搭載するシステム構成を採用することもできる。
サーボモータドライバ3は、フィールドネットワーク2を介して演算ユニット13と接続されるとともに、演算ユニット13からの指令値に従ってサーボモータ4を駆動する。具体的には、サーボモータドライバ3は、制御装置1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ3は、サーボモータ4の軸に接続されている位置センサ(ロータリーエンコーダ)やトルクセンサといった検出器から、位置、速度、トルクといったサーボモータ4の動作に係る実測値を取得してサーボモータ4を駆動するための電流を調整する。なお、サーボモータドライバ3は、サーボモータアンプと称されることもある。
図1に示す制御システムSYSのフィールドネットワーク2には、さらに、リモートIOターミナル5が接続されている。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル5は、フィールドネットワーク2でのデータ伝送に係る処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。
<C.演算ユニットのハードウェア構成>
次に、図2に示す制御装置1を構成する演算ユニット13のハードウェア構成について説明する。図3は、本実施の形態に係る制御装置1を構成する演算ユニット13のハードウェア構成の一例を示す模式図である。
図3を参照して、演算ユニット13は、プロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、PLCシステムバスコントローラ120と、フィールドネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
プロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、プロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、プロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、プロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
図3には、説明の便宜上、1つのプロセッサ100が描かれているが、複数のプロセッサ100を配置してもよいし、1つのプロセッサ100に複数のコアが実装されていてもよい。プロセッサ100の性能や構成は、要求されるコンピューティング資源に応じて決定されてもよい。
演算ユニット13は、記憶手段として、メインメモリ104および不揮発性メモリ106を有する。
メインメモリ104は、揮発性の記憶領域(RAM)であり、演算ユニット13への電源投入後にプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、プロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)といったデバイスが用いられる。
不揮発性メモリ106は、リアルタイムOS(Operating System)、制御装置1のシステムプログラム、ユーザプログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、プロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体などを用いてもよい。
システムタイマ108は、一定周期毎に割り込み信号を発生してプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OS(Operating System)やBIOS(Basic Input Output System)などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するような制御サイクル毎の制御動作が実現される。
演算ユニット13は、通信回路として、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140を有する。これらの通信回路は、任意の指令値といった出力データを送信するとともに、任意のセンサから得られた検出値といった入力データを受信する。
PLCシステムバスコントローラ120は、PLCシステムバス11を介したデータの遣り取りを制御する。より具体的には、PLCシステムバスコントローラ120は、DMA(Dynamic Memory Access)制御回路122と、PLCシステムバス制御回路124と、バッファメモリ126とを含む。PLCシステムバスコントローラ120は、PLCシステムバスコネクタ130を介してPLCシステムバス11と内部的に接続される。
バッファメモリ126は、PLCシステムバス11を介して他のユニットへ出力されるデータ(出力データ)用の送信バッファ、および、PLCシステムバス11を介して他のユニットから入力されるデータ(入力データ)用の受信バッファとして機能する。DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行う。PLCシステムバス制御回路124は、PLCシステムバス11に接続される他のユニットとの間で、バッファメモリ126の出力データを送信する処理および入力データを受信してバッファメモリ126に格納する処理を行う。
フィールドネットワークコントローラ140は、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ140は、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。より具体的には、フィールドネットワークコントローラ140は、DMA制御回路142と、フィールドネットワーク制御回路144と、バッファメモリ146とを含む。
バッファメモリ146は、フィールドネットワーク2を介して他の装置などへ出力されるデータ(出力データ)用の送信バッファ、および、フィールドネットワーク2を介して他の装置などから入力されるデータ(入力データ)用の受信バッファとして機能する。DMA制御回路142は、メインメモリ104からバッファメモリ146への出力データの転送、および、バッファメモリ146からメインメモリ104への入力データの転送を行う。フィールドネットワーク制御回路144は、フィールドネットワーク2に接続される他の装置との間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行う。
USBコネクタ110は、サポート装置8と演算ユニット13とを接続するためのインターフェイスである。典型的には、サポート装置8から転送される、演算ユニット13のプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介して制御装置1に取込まれる。
<D.演算ユニットのソフトウェア構成>
次に、図2に示す制御装置1を構成する演算ユニット13のハードウェア構成について説明する。図4は、本実施の形態に係る制御装置1を構成する演算ユニット13のソフトウェア構成の一例を示す模式図である。図4には、本実施の形態に係る各種機能を提供するためのソフトウェア群の一例を示す。これらのソフトウェア群に含まれる命令コードは、適切なタイミングで読み出され、演算ユニット13のプロセッサ100によって実行される。
図4を参照して、演算ユニット13で実行されるソフトウェアとしては、基本的には、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236との3階層になっている。なお、仮想化技術を適用した場合には、同一のハードウェア資源を複数のOSで共有することができ、このような構成を採用した場合には、ハイパーバイザの階層が追加されることになる。
リアルタイムOS200は、演算ユニット13のコンピュータアーキテクチャに応じて設計されており、プロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。このリアルタイムOSは、典型的には、制御装置のメーカあるいは専門のソフトウェア会社などによって提供される。
システムプログラム210は、制御装置1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、スケジューラプログラム212と、IO処理プログラム214(入力処理プログラム216および出力処理プログラム218を含む)と、シーケンス命令演算プログラム232と、モーション演算プログラム234と、システムサービスプログラム220とを含む。
ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、制御システムSYSを用いて制御する制御対象に応じて、任意に作成されるプログラムである。
ユーザプログラム236は、シーケンス命令およびモーション命令などの命令コードからなる。典型的には、ユーザプログラム236は、演算ユニット13のプロセッサ100で実行可能なオブジェクトプログラム形式になっている。ユーザプログラム236は、サポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム236は、サポート装置8から接続ケーブル10を介して演算ユニット13へ転送され、不揮発性メモリ106などに格納される。
シーケンス命令演算プログラム232は、ユーザプログラム236で使用されるある種のシーケンス命令が実行されるときに呼出されて、その命令の内容を実現するために実行されるプログラムである。モーション演算プログラム234は、ユーザプログラム236による指令に従って実行され、サーボモータドライバ3やパルスモータドライバといったモータドライバに対して出力する指令値を算出するプログラムである。
シーケンス命令演算プログラム232およびモーション演算プログラム234は、命令、関数、機能モジュールなどを提供する。ユーザプログラム236が演算ユニット13のプロセッサ100によって実行されることで、シーケンス命令演算プログラム232およびモーション演算プログラム234と協働して、ユーザにより指定された制御目的を実現する。
このように、ユーザプログラム236、シーケンス命令演算プログラム232、およびモーション演算プログラム234は、互いに連係して制御目的を実現するため、これらのプログラムを制御プログラム230と総称する場合もある。
システムサービスプログラム220は、図4に個別に示したプログラム以外の、制御装置1の各種機能を実現するためのプログラム群をまとめて示すものである。システムサービスプログラム220は、例えば、外部装置との間でファイルやデータを送受信する処理を実現するプログラム(すなわち、通信処理に係るプログラム)や、異常監視処理や各種解析処理などを実現するプログラムなどが想定される。
本実施の形態に係る演算ユニット13においては、システムサービスプログラム220に含まれるプログラムは、少なくとも2つに優先度が区別されている。図4には、一例として、システムサービスプログラム220は、高優先度サービスプログラム222と、低優先度サービスプログラム226とを含む。高優先度サービスプログラム222は、低優先度サービスプログラム226に比較して、高い優先度が設定されている。
スケジューラプログラム212は、タスク毎に設置された優先度に応じて、各タスクに含まれるプログラムをプロセッサ100に実行させる。すなわち、スケジューラプログラム212は、IO処理プログラム214、制御プログラム230、およびシステムサービスプログラム220について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。
具体的には、スケジューラプログラム212は、制御機能2120と、監視機能2122と、介入機能2124とを含む。制御機能2120は、各処理に対してコンピューティング資源を割当てるための制御を司る。監視機能2122は、システムサービスプログラム220に含まれる各プログラムの実行状況を監視する。監視機能2122は、システムサービスプログラム220に含まれる高優先度サービスプログラム222の通知機能プログラム224による通知などに基づいて、各サービスの実行状況を把握する。
介入機能2124は、監視機能2122による監視結果に基づいて、システムサービスプログラム220に含まれる1または複数のサービスに係る処理の実行が阻害されていると判断されると、当該他のサービスに係る処理の実行を妨げている処理の実行に介入する。すなわち、介入機能2124は、他のサービスに係る処理に比較して、相対的に多くの時間を消費しているサービスに係る処理を一旦中断させて、当該他のサービスに係る処理を実行する時間を確保する。
本実施の形態に係る演算ユニット13においては、スケジューラプログラム212に含まれる監視機能2122および介入機能2124によって、上述したようなシステムサービスプログラム220に含まれる各プログラムの実行時間を管理する。システムサービスプログラム220に含まれる各プログラムの実行時間の管理については、後に詳述する。
IO処理プログラム214は、演算ユニット13において利用可能なデータ(入力データおよび出力データ)を更新する処理を司る。IO処理プログラム214の入力処理プログラム216は、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140によって受信された入力データを、制御プログラム230が使用するのに適した形式に再配置する。
出力処理プログラム218は、ユーザプログラム236(制御プログラム230)の実行によって生成された出力データを、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140へ転送するのに適した形式に再配置する。PLCシステムバスコントローラ120またはフィールドネットワークコントローラ140が、プロセッサ100からの、送信を実行するための指令を必要とする場合は、出力処理プログラム218がそのような指令を発行する。
なお、プロセッサ100が図4に示されるプログラムを実行することで後述するような機能および処理を実現する実装形態に代えて、その一部または全部を、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)などのハードワイヤードな回路を用いて実装してもよい。
<E.優先度に応じた処理>
次に、本実施の形態に係る演算ユニット13における優先度に応じた処理の一例について説明する。
図5は、本実施の形態に係る演算ユニット13における優先度に応じた処理の一例を示す模式図である。図5を参照して、演算ユニット13においては、実行サイクルが保証されるプライマリタスク240およびセカンダリタスク242に加えて、実行サイクルが必ずしも保証されないシステムサービスタスク250とが実行されるとする。すなわち、図5には、少なくともプライマリタスク240を定周期実行させる構成を示す。
このような定周期実行を実現するにあたって、プロセッサ100が提供可能なコンピューティング資源は、まず、プライマリタスク240に割当てられ、その後、セカンダリタスク242に割当てられる。その上で、残ったコンピューティング資源がシステムサービスタスク250に割当てられる。なお、コンピューティング資源の割当ては、スケジューラプログラム212により提供されるスケジューラによって管理される。
プライマリタスク240には、IO処理プログラム214(図4)およびユーザプログラム236(図4)の全部または一部が登録されており、予め定められた制御サイクル260毎に対応する処理が実行される。制御サイクル260は、演算ユニット13において管理される最も短い周期であり、例えば、数100μsから数msの範囲で設定される。図5に示す例では、制御サイクル260が1msである例を示す。すなわち、プライマリタスク240の実行サイクルは制御サイクル260と一致しており、制御サイクル260毎にプライマリタスク240に含まれるプログラム全体が実行される。
一方、セカンダリタスク242の優先度は、プライマリタスク240の優先度より低く設定されており、実行サイクルは保証されるものの、一般的にその実行サイクルは制御サイクル260の複数倍になっている。例えば、プライマリタスク240の実行サイクルが制御サイクル260の4倍に設定されている場合には、4回分の制御サイクル260の間に、セカンダリタスク242に含まれるプログラムが一回実行される。
また、システムサービスタスク250には、定時実行性の要求が相対的に低いプログラムが登録される。図5に示す処理例においては、システムサービスタスク250は、高優先度サービス252および低優先度サービス256を含む。低優先度サービス256の優先度は、高優先度サービス252の優先度より低いことになる。
例えば、図5に示すような異なる優先度が設定された複数のタスクをシングルコアのプロセッサ100を用いて並列実行させる場合には、スケジューラプログラム212は、プライマリタスク240に含まれるプログラムを予め定められた制御サイクル260毎に繰返し実行させる。そして、スケジューラプログラム212は、プライマリタスク240に含まれるプログラムが実行されていない空き時間に、セカンダリタスク242ならびにシステムサービスタスク250(高優先度サービス252および低優先度サービス256)を実行させる。
高優先度サービス252に含まれる処理としては、制御装置1からの指令によりロボットを制御するような場合におけるロボットに対する指令値の算出処理や、制御装置1における制御動作を視覚化するシミュレータ用のデータ生成処理などが想定される。高優先度サービス252に含まれる処理については、ある実行サイクル(制御サイクル260に比較して十分に長い)毎に処理の実行を完了させたいという要求がある。
低優先度サービス256に含まれる処理としては、HMI(Human Machine Interface)の画面更新を行うためのデータ生成処理や、制御装置1からデータベースへのデータ送信処理などが想定される。低優先度サービス256に含まれる処理については、任意のサービスサイクル264(制御サイクル260に比較して十分に長い)のうち所定時間についてコンピューティング資源を割当てたいという要求がある。
このようなシステムサービスタスク250に含まれる高優先度サービス252および低優先度サービス256のそれぞれの要求を考慮して、本実施の形態においては、サービスサイクル264に加えて、監視サイクル262を規定する。
図5には、監視サイクル262が20ms(制御サイクル260の20倍)に設定され、サービスサイクル264が100ms(制御サイクル260の100倍)に設定されている例を示す。監視サイクル262の長さは、例えば、高優先度サービス252に登録されているプログラムの実行結果を更新すべき周期などに応じて決定されてもよい。サービスサイクル264の長さは、例えば、HMIの要求される応答時間性能などに応じて決定されてもよい。
本実施の形態に係る演算ユニット13においては、コンピューティング資源を、監視サイクル262毎に高優先度サービス252に割当てるように制御するとともに、サービスサイクル264毎に所定の時間割合において、コンピューティング資源を低優先度サービス256に割当てるように制御する。このように、本実施の形態に係る演算ユニット13は、システムサービスタスク250に対するコンピューティング資源割当ての管理機能を有している。
<F.システムサービスに対するコンピューティング資源割当ての管理機能>
次に、本実施の形態に係る演算ユニット13における、システムサービスタスク250に対するコンピューティング資源割当ての管理機能について説明する。
図6は、本実施の形態に係る演算ユニット13における通知機能254および監視機能2122を説明するための図である。図6を参照して、高優先度サービス252は、通知機能254を有しており、高優先度サービス252に含まれる処理の実行開始を監視機能2122へ通知する(開始通知270)とともに、当該処理が完了するとそれを通知する(終了通知272)。このように、高優先度サービス252の通知機能254は、自身の処理開始および処理終了を監視機能2122へ通知する。
高優先度サービス252には複数の処理(すなわち、複数の通知機能254)が配置されることもあるので、各処理を特定するための識別情報を開始通知270および/または終了通知272に組込んでもよい。
コンピューティング資源割当ての監視対象とすべき高優先度サービス252に含まれる処理に対して、通知機能254を実現するためのAPI(Application Programming Interface)を組込むことで実現してもよい。すなわち、通知機能254を実現するための命令コードは、APIを利用して、高優先度サービスプログラム222の通知機能プログラム224に組込まれてもよい。あるいは、高優先度サービス252に含まれる処理の命令コード自体に、通知機能254を実現するための命令コードを直接埋込むようにしてもよい。
監視機能2122は、スケジューラプログラム212の一部またはスケジューラプログラム212の付加機能として実装され、通知機能254からの開始通知270および終了通知272に基づいて、高優先度サービス252の実行状況を監視する。スケジューラプログラム212は、プライマリタスク240およびセカンダリタスク242の実行状況を管理しているので、監視機能2122は、制御プロセス(プライマリタスク240およびセカンダリタスク242)、高優先度サービス252、および、低優先度サービス256の各実行時間を算出できる。このような算出される実行時間に基づいて、監視機能2122は、システムサービスタスク250(高優先度サービス252、および、低優先度サービス256)が予め定められた時間比率で動作できているか否かを監視できる。
より具体的には、監視機能2122は、監視サイクル262の期間内において、高優先度サービス252がどれだけの時間比率で動作できているかを監視できる。図6において、監視機能2122は、高優先度サービス252が監視サイクル262(20ms)毎に、何%動作できているかを監視する。同様に、監視機能2122は、任意のサービスサイクル264の期間内において、低優先度サービス256がどれだけの時間比率で動作できているかを監視できる。図6において、監視機能2122は、低優先度サービス256がサービスサイクル264(100ms)毎に、何%動作できているかを監視する。
このように、監視機能2122は、監視サイクル262における高優先度サービス252に含まれるプログラムの動作時間の比率を算出するようにしてもよい。併せて、監視機能2122は、監視サイクル262より長い別の監視サイクルであるサービスサイクル264における低優先度サービス256に含まれるプログラムの動作時間の比率を算出するようにしてもよい。
なお、監視機能2122により監視される実行状況の具体例としては、上述したような動作時間の比率に限らず、高優先度サービス252および/または低優先度サービス256の動作の有無であってもよい。
図7は、本実施の形態に係る演算ユニット13における介入機能2124を説明するための図である。図7を参照して、監視機能2122に関連付けて、介入機能2124が配置される。監視機能2122および介入機能2124は、スケジューラプログラム212の一部またはスケジューラプログラム212の付加機能として実装される。
介入機能2124は、システムサービスタスク250(高優先度サービス252および低優先度サービス256)が予め定められた時間比率で動作できていない場合に、他の処理またはサービスに介入して、実行時間を制限させることで、システムサービスタスク250の実行時間を確保する。介入機能2124は、監視機能2122からの介入依頼を受けて、他の処理またはサービスへの介入を開始する。
本実施の形態に係る演算ユニット13の介入機能2124は、高優先度サービス252が予め定められた時間比率で動作できていない場合には、高優先度サービス252より優先度の高いセカンダリタスク242の動作に対して介入する。また、低優先度サービス256が予め定められた時間比率で動作できていない場合には、低優先度サービス256より優先度の高い高優先度サービス252の動作に対して介入する。
このように、介入機能2124は、ある処理またはサービスが適切に実行されていないと判断されると、当該処理またはサービスより優先度の高い処理またはサービスに対して介入する。
説明の便宜上、以下では、主として、高優先度サービス252が予め定められた時間比率で動作できていない場合に、セカンダリタスク242の動作に対して介入する例を示すが、低優先度サービス256が予め定められた時間比率で動作できていない場合に、高優先度サービス252の動作に対して介入するようにしてもよい。
図7には、一例として、セカンダリタスク242の実行時間が長く、高優先度サービス252が実行できない場合を示す。このような実行状況において、監視機能2122は、監視サイクル262毎にシステムサービスタスク250の実行状況を確認し、システムサービスタスク250が予め定められた時間比率で動作できていないと判断すると、介入機能2124に対して介入依頼274を出力する。
介入機能2124は、監視機能2122からの介入依頼274を受けて、セカンダリタスク242に対して中断指令276を出力する。この中断指令276により、セカンダリタスク242の実行は一時的に中断される、あるいは、それ以降の制御サイクル260において実質的に実行されないようになる。
このようなセカンダリタスク242の実行中断によって、システムサービスタスク250の高優先度サービス252に対して、コンピューティング資源が割当てられることになる。システムサービスタスク250が実行を開始すると、システムサービスタスク250の通知機能254は監視機能2122へ開始通知270を出力する。その後、システムサービスタスク250の実行が完了すると、システムサービスタスク250の通知機能254は監視機能2122へ終了通知272を出力する。また、セカンダリタスク242の実行中断によって、低優先度サービス256に対しても、コンピューティング資源が割当てられることになる。
その後、監視機能2122は、現在の監視サイクル262が終了したタイミングで、システムサービスタスク250の実行状況を確認する。先に、セカンダリタスク242の実行を中断させることで、システムサービスタスク250に含まれる各処理は実行されることになるので、システムサービスタスク250は予め定められた時間比率で動作できていると判断される。そして、監視機能2122は、介入機能2124に対して介入終了依頼278を出力する。
介入機能2124は、監視機能2122からの介入終了依頼278を受けて、セカンダリタスク242に対して再開指令280を出力する。この再開指令280により、セカンダリタスク242の実行は再開される。すなわち、セカンダリタスク242は、介入機能2124から中断指令276が出力される前と同様に実行される。
このように、高優先度サービス252より高い優先度を有するセカンダリタスク242が実行されている状況において、介入機能2124は、高優先度サービス252の実行状況が予め定められた設定を満たしていない場合に、セカンダリタスク242に含まれるプログラムの実行を一時的に中断させるようにしてもよい。
また、監視機能2122が低優先度サービス256の実行状況を監視する場合には、介入機能2124は、低優先度サービス256の実行状況が予め定められた設定を満たしていない場合に、高優先度サービス252に含まれるプログラムの実行を一時的に中断させるようにしてもよい。
なお、中断指令276によるセカンダリタスク242の実行中断は、スケジューラプログラム212が、セカンダリタスク242に対するコンピューティング資源の割当てを中止することで実現してもよいし、セカンダリタスク242自体が各実行タイミングにおいて、実質的な処理を実行することなく、処理の完了をスケジューラプログラム212へ通知することで実現してもよい。
上述したような介入機能2124を用いることで、制御プロセス(プライマリタスク240およびセカンダリタスク242)に対するコンピューティング資源の割当てが多く、システムサービスタスク250(高優先度サービス252および低優先度サービス256)が予め定められた時間比率で動作できていない場合であっても、コンピューティング資源の割当てを一時的に変更することで、システムサービスタスク250に対するコンピューティング資源を確保することができる。
図8は、本実施の形態に係るシステムサービスに対するコンピューティング資源割当ての管理機能を説明するためのシーケンス図である。図8に示すシーケンス図は、図7に示すタイムチャートに対応するように描かれている。説明の便宜上、図8には、プライマリタスク240については図示していない。
図8を参照して、セカンダリタスク242は、コンピューティング資源が割当てられると、処理開始をスケジューラプログラム212(監視機能2122)に通知し(シーケンスSQ2)、処理を実行する(シーケンスSQ4)。セカンダリタスク242の処理の実行が完了すると、処理完了をスケジューラプログラム212(監視機能2122)に通知する(シーケンスSQ6)。
監視機能2122は、現在の監視サイクル262が終了すると、次の監視サイクル262が開始される前に、当該現在の監視サイクル262におけるシステムサービスタスク250(高優先度サービス252、および、低優先度サービス256)の処理時間を算出する。監視機能2122は、算出したシステムサービスタスク250の処理時間に基づいて、高優先度サービス252の未実行を検知する(シーケンスSQ8)と、介入機能2124に対して、介入依頼274を出力する(シーケンスSQ10)。
介入機能2124は、監視機能2122からの介入依頼274を受けて、セカンダリタスク242に対して中断指令276を出力する(シーケンスSQ12)。中断指令276により、セカンダリタスク242の実行は一時的に中断される。
すると、高優先度サービス252にコンピューティング資源が割当てられ、高優先度サービス252(通知機能254)は、開始通知270を監視機能2122に通知し(シーケンスSQ14)、処理を実行する(シーケンスSQ16)。高優先度サービス252に係る処理の実行が完了すると、高優先度サービス252(通知機能254)は、終了通知272を監視機能2122に通知する(シーケンスSQ18)。
また、低優先度サービス256にコンピューティング資源が割当てられると、低優先度サービス256は、処理開始をスケジューラプログラム212(監視機能2122)に通知し(シーケンスSQ20)、処理を実行する(シーケンスSQ22)。低優先度サービス256の処理の実行が完了すると、処理完了をスケジューラプログラム212(監視機能2122)に通知する(シーケンスSQ24)。
監視機能2122は、現在の監視サイクル262が終了すると、次の監視サイクル262が開始される前に、当該現在の監視サイクル262におけるシステムサービスタスク250(高優先度サービス252、および、低優先度サービス256)の処理時間を算出する。監視機能2122は、算出したシステムサービスタスク250の処理時間に基づいて、高優先度サービス252が事項されたことを検知する(シーケンスSQ26)と、介入機能2124に対して、介入終了依頼278を出力する(シーケンスSQ28)。
介入機能2124は、監視機能2122からの介入終了依頼278を受けて、セカンダリタスク242に対して再開指令280を出力する(シーケンスSQ30)。再開指令280により、セカンダリタスク242の実行は回復される。
すると、セカンダリタスク242にコンピューティング資源が割当てられ、セカンダリタスク242は、処理開始をスケジューラプログラム212(監視機能2122)に通知し(シーケンスSQ32)、処理を実行する(シーケンスSQ34)。セカンダリタスク242の処理の実行が完了すると、処理完了をスケジューラプログラム212(監視機能2122)に通知する(シーケンスSQ36)。以下、図8に示す処理と同様の処理が繰返される。
<G.コンピューティング資源割当ての管理機能の動作例>
次に、制御プロセス(プライマリタスク240およびセカンダリタスク242)、高優先度サービス252、および、低優先度サービス256の実行状況に応じた、コンピューティング資源割当ての管理機能の動作例について説明する。説明の便宜上、以下に示す実行状況は、シングルコアのプロセッサ100により実行される例を示す。
(g1:開始通知270が出力されない場合)
まず、高優先度サービス252から開始通知270が出力されない場合について説明する。高優先度サービス252から開始通知270が出力されない場合は、より優先度の高い処理またはサービスに対して、コンピューティング資源が制御プロセスに割当てられていると判断できる。
図9は、本実施の形態に係る演算ユニット13において、プライマリタスク240およびセカンダリタスク242が設定されている場合の実行状況の一例を示す図である。図9を参照して、プライマリタスク240、セカンダリタスク242、システムサービスタスク250(高優先度サービス252および低優先度サービス256)がその順序で優先度を設定されて実行されている例を示す。
図9に示す実行状況において、高優先度サービス252から開始通知270が出力されない場合には、監視サイクル262の終了時点で、高優先度サービス252が監視サイクル262内に実行できなかったことが検知され、高優先度サービス252を実行させるために、高優先度サービス252より優先度の高いセカンダリタスク242に対して、実行中断が指示される。
そして、セカンダリタスク242の実行中断により、高優先度サービス252(および、低優先度サービス256)の実行が確認されると、中断していたセカンダリタスク242の実行再開が指示される。
図10は、本実施の形態に係る演算ユニット13において、プライマリタスク240のみが設定されている場合の実行状況の一例を示す図である。図10を参照して、プライマリタスク240、および、システムサービスタスク250(高優先度サービス252および低優先度サービス256)がその順序で優先度を設定されて実行されている例を示す。
図10には、プライマリタスク240に設定されている処理が制御サイクル260内で終了できない実行状況を示す。このような実行状況においても、高優先度サービス252から開始通知270が出力されないので、監視サイクル262の終了時点で、高優先度サービス252が監視サイクル262内に実行できなかったことが検知される。但し、この実行状況においては、プライマリタスク240に対して実行中断を指示することはできない。
図10に示す例は、1回の制御サイクル260内では、利用可能なコンピューティング資源を用いても、プライマリタスク240の全体を処理できない実行状況を示す。そのため、基本的には、プライマリタスク240の設定自体を見直すことになる。
なお、監視サイクル262毎の検知だけではなく、例えば、タスクの実行周期超過、タスクの実行タイムアウト、IOリフレッシュ周期超過、システムサービス時間不足、といったスケジューラプログラム212の基本的な時間管理に係る異常が出力されることになる。
(g2:終了通知272が出力されない場合)
次に、高優先度サービス252から開始通知270が出力されたものの、次に続く終了通知272が出力されない場合について説明する。高優先度サービス252から終了通知272が出力されない場合は、当該高優先度サービス252の処理が継続している(実行状態が継続している)と判断できる。
図11は、本実施の形態に係る演算ユニット13において、プライマリタスク240およびセカンダリタスク242が設定されている場合の実行状況の別の一例を示す図である。図11を参照して、プライマリタスク240、セカンダリタスク242、システムサービスタスク250(高優先度サービス252および低優先度サービス256)がその順序で優先度を設定されて実行されている例を示す。
図11に示す実行状況において、高優先度サービス252から開始通知270が出力された後、終了通知272が出力されない場合には、監視サイクル262の終了時点で、高優先度サービス252の実行が継続しており、低優先度サービス256が監視サイクル262内に実行できなかったことが検知される。そして、低優先度サービス256を実行させるために、低優先度サービス256より優先度の高い高優先度サービス252に対して、実行中断が指示される。
そして、高優先度サービス252の実行中断により、低優先度サービス256の実行が確認されると、中断していた高優先度サービス252の実行再開が指示される。
上述の説明においては、システムサービスタスク250に高優先度サービス252および低優先度サービス256の2種類が含まれる例を挙げたが、システムサービスタスク250に複数の高優先度サービス252が含まれる場合もある。この場合においても、各サービスに対するコンピューティング資源の割当てが管理される。
図12は、本実施の形態に係る演算ユニット13において、プライマリタスク240およびセカンダリタスク242が設定されている場合の実行状況のさらに別の一例を示す図である。図12を参照して、プライマリタスク240、セカンダリタスク242、システムサービスタスク250(高優先度サービス252A、高優先度サービス252Bおよび低優先度サービス256)がその順序で優先度を設定されて実行されている例を示す。
図12に示す実行状況において、高優先度サービス252Aから開始通知270が出力された後、終了通知272が出力されない場合には、監視サイクル262の終了時点で、高優先度サービス252Aの実行が継続しており、高優先度サービス252Bが監視サイクル262内に実行できなかったことが検知される。そして、高優先度サービス252Bを実行させるために、高優先度サービス252Aに対して、実行中断が指示される。
そして、高優先度サービス252Aの実行中断により、高優先度サービス252Bおよび低優先度サービス256の実行が確認されると、中断していた高優先度サービス252Aの実行再開が指示される。
<H.変形例>
上述の実施の形態においては、プライマリタスク240が制御サイクル260毎に繰返し実行される実行状況(定周期実行)を中心に説明したが、プライマリタスク240が不特定な周期毎に繰返し実行される実行状況(非定周期実行)にも適用可能である。
図13は、本実施の形態に係る演算ユニット13において、プライマリタスク240およびセカンダリタスク242が非定周期実行されている場合の実行状況の一例を示す図である。図13を参照して、非定周期実行においては、プライマリタスク240は、演算ユニット13におけるコンピューティング資源などに依存して、ベストエフォートのサイクルで繰返し実行される。そのため、あるサイクルにおけるプライマリタスク240の実行が完了してから次のサイクルでプライマリタスク240の実行が開始されるまでの時間の長さは、一定ではなく変動することになる。
このような実行状況においても、監視サイクル262毎に、高優先度サービス252からの開始通知270から終了通知272までの時間に基づいて、システムサービスタスク250の実行時間を算出できるので、この算出される実行時間から、介入機能2124を用いた、処理またはサービスへの介入を利用して、システムサービスタスク250に対して、適切なコンピューティング資源の割当てを管理できる。
<I.処理手順>
次に、本実施の形態に係る演算ユニット13における処理手順について説明する。
図14は、本実施の形態に係る演算ユニット13における処理手順を示すフローチャートである。図14に示す各ステップは、典型的には、演算ユニット13のプロセッサ100がシステムプログラム210(図4参照)を実行することで実現される。特に、図14に示される処理は、スケジューラプログラム212(図4参照)に含まれる命令コード群によって実現される。そのため、図14には、スケジューラプログラム212が実行されることで実現されるスケジューラを実行主体として各処理を記述する。
図14を参照して、新たな制御サイクルが到来すると(ステップS100においてYES)、スケジューラは、プライマリタスク240に対してコンピューティング資源を割当てる(ステップS102)。プライマリタスク240に登録されているプログラムの実行が完了すると(ステップS104においてYES)、スケジューラは、セカンダリタスク242に対して中断指令276が与えられているか否かを判断する(ステップS106)。
セカンダリタスク242に対して中断指令276が与えられていなければ(ステップS106においてNO)、スケジューラは、セカンダリタスク242に対してコンピューティング資源を割当てる(ステップS108)。
セカンダリタスク242に対して中断指令276が与えられていれば(ステップS106においてYES)、セカンダリタスク242に登録されているプログラムの実行が完了すると(ステップS110においてYES)、または、セカンダリタスク242に対して割当てたコンピューティング資源の時間が終了すると(ステップS112においてYES)、スケジューラは、システムサービスタスク250に対してコンピューティング資源を割当てる(ステップS114)。そして、スケジューラは、開始通知270または終了通知272を受信すると(ステップS116においてYES)、受信した開始通知270または終了通知272を一時的に記録する(ステップS118)。
新たな制御サイクルが到来すると(ステップS120においてYES)、スケジューラは、システムサービスタスク250に対してコンピューティング資源の割当てを終了する(ステップS122)。
このとき、直前の制御サイクルの終了タイミングが監視サイクル262の終了タイミングであれば(ステップS124においてYES)、スケジューラは、受信した開始通知270および終了通知272に基づいて、監視サイクル262における高優先度サービス252の動作時間割合を算出する(ステップS126)。
算出された監視サイクル262における高優先度サービス252の動作時間割合が予め定められた設定を満たしていなければ(ステップS128においてNO)、スケジューラは、介入依頼274を発行し、セカンダリタスク242に対して中断指令276を出力する(ステップS130)。
算出された監視サイクル262における高優先度サービス252の動作時間割合が予め定められた設定を満たしており(ステップS128においてYES)、かつ、セカンダリタスク242に対する中断指令276の出力が継続していれば(ステップS132においてYES)、スケジューラは、セカンダリタスク242に対して再開指令280を出力する(ステップS134)。
また、直前の制御サイクルの終了タイミングがサービスサイクル264直前の制御サイクルの終了タイミングが(ステップS136においてYES)、スケジューラは、受信した開始通知270および終了通知272に基づいて、サービスサイクル264における低優先度サービス256の動作時間割合を算出する(ステップS138)。
算出されたサービスサイクル264における低優先度サービス256の動作時間割合が予め定められた設定を満たしていなければ(ステップS140においてNO)、スケジューラは、介入依頼274を発行し、高優先度サービス252に対して中断指令276を出力する(ステップS142)。
算出されたサービスサイクル264における低優先度サービス256の動作時間割合が予め定められた設定を満たしており(ステップS140においてYES)、かつ、高優先度サービス252に対する中断指令276の出力が継続していれば(ステップS144においてYES)、スケジューラは、高優先度サービス252に対して再開指令280を出力する(ステップS146)。
以下同様にして、ステップS102以下の処理が繰返される。
<J.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
制御対象を制御するための制御装置(1)であって、
プロセッサ(100)と、
前記プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラム(240)と、
前記第1のプログラムより実行の優先度が低い第2のプログラム(252)と、
前記第2のプログラムより実行の優先度が低い第3のプログラム(256)と、
前記プロセッサに実行させるプログラムを管理するスケジューラプログラム(212)とを備え、
前記第2のプログラムは、前記プロセッサでの実行の開始に応じて開始通知(270)を出力するとともに、前記プロセッサでの実行の完了に応じて終了通知(272)を出力する通知命令(224)を含み、
前記スケジューラプログラム(212)は、
前記第1のプログラムの実行を妨げないように、前記プロセッサで前記第2および第3のプログラムを実行させるための命令(2120)と、
予め定められた監視サイクル(262)毎に、前記第2のプログラムからの前記開始通知および前記終了通知に基づいて、前記第2のプログラムの実行状況を判断するための命令(2122)とを含む、制御装置。
[構成2]
前記第2のプログラムより実行の優先度が高い第4のプログラム(242)をさらに備え、
前記スケジューラプログラムは、前記第2のプログラムの実行状況が予め定められた設定を満たしていない場合に、前記第4のプログラムの実行を一時的に中断させるための命令(2124)を含む、構成1に記載の制御装置。
[構成3]
前記実行状況を判断するための命令は、前記監視サイクルにおける前記第3のプログラムの実行状況を判断する命令を含み、
前記スケジューラプログラムは、前記第3のプログラムの実行状況が予め定められた設定を満たしていない場合に、前記第2のプログラムの実行を一時的に中断させるための命令(2124)を含む、構成1または2に記載の制御装置。
[構成4]
前記通知命令は、API(Application Programming Interface)を利用して、前記第2のプログラムに組込まれる、構成1〜3のいずれか1項に記載の制御装置。
[構成5]
前記スケジューラプログラムは、前記第1のプログラムを予め定められた制御サイクル(260)毎に繰返し実行させる、構成1〜4のいずれか1項に記載の制御装置。
[構成6]
前記スケジューラプログラムは、前記第1のプログラムが実行されていない空き時間に、前記第2のプログラムおよび前記第3のプログラムを実行させる、構成5に記載の制御装置。
[構成7]
前記実行状況を判断するための命令は、前記監視サイクルにおける前記第2のプログラムの動作時間の比率を算出する命令を含む、構成1〜6のいずれか1項に記載の制御装置。
[構成8]
前記実行状況を判断するための命令は、前記監視サイクルより長い第2の監視サイクル(264)における前記第3のプログラムの動作時間の比率を算出する命令をさらに含む、構成7に記載の制御装置。
[構成9]
制御対象を制御するためのプロセッサ(100)を有する制御装置(1)で実行されるシステムプログラム(210)であって、
前記制御装置は、前記プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラム(240)と、前記第1のプログラムより実行の優先度が低い第2のプログラム(252)と、前記第2のプログラムより実行の優先度が低い第3のプログラム(256)とを備え、
前記第2のプログラムは、前記プロセッサでの実行の開始に応じて開始通知(270)を出力するとともに、前記プロセッサでの実行の完了に応じて終了通知(272)を出力する通知命令(224)を含み、
前記システムプログラムは、前記プロセッサに実行させるプログラムを管理するスケジューラプログラム(212)を備え、
前記スケジューラプログラムは、
前記第1のプログラムの実行を妨げないように、前記プロセッサで前記第2および第3のプログラムを実行させるための命令(2120)と、
予め定められた監視サイクル(262)毎に、前記第2のプログラムからの前記開始通知および前記終了通知に基づいて、前記第2のプログラムの実行状況を判断するための命令(2122)とを含む、システムプログラム。
[構成10]
制御対象を制御するためのプロセッサ(100)を有する制御装置(1)の制御方法であって、
前記制御装置は、前記プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラム(240)と、前記第1のプログラムより実行の優先度が低い第2のプログラム(252)と、前記第2のプログラムより実行の優先度が低い第3のプログラム(256)とを備え、
前記第2のプログラムは、前記プロセッサでの実行の開始に応じて開始通知(270)を出力するとともに、前記プロセッサでの実行の完了に応じて終了通知(272)を出力する通知命令(224)を含み、
前記制御方法は、
前記第1のプログラムの実行を妨げないように、前記プロセッサで前記第2および第3のプログラムを実行させるステップ(S108,S114)と、
予め定められた監視サイクル毎に、前記第2のプログラムからの前記開始通知および前記終了通知に基づいて、前記第2のプログラムの実行状況を判断するステップ(S126)とを備える、制御方法。
<K.利点>
本実施の形態によれば、実行時間が管理される制御プロセス(プライマリタスク240およびセカンダリタスク242)ではない、システムサービスタスク250に対しても、プログラムの実行状況を確認することができる。より具体的には、システムサービスタスク250に含まれる高優先度サービス252について、予め定められた監視サイクル262毎に実行状況を監視し、監視サイクル262内において、高優先度サービス252に対してどれだけのコンピューティング資源が割当てられたかを監視できる。
さらに、高優先度サービス252に対するコンピューティング資源の割当てが十分ではないと判断された場合には、高優先度サービス252に対してコンピューティング資源を優先的に割当てることができる仕組みが提供される。
このような構成を採用することで、制御プロセス(プライマリタスク240およびセカンダリタスク242)に対するコンピューティング資源の割当てをユーザが手動で調整する必要なく、状況に応じて、システムサービスタスク250に含まれる高優先度サービス252に対して、適切なコンピューティング資源の割当てを実現できる。
例えば、本実施の形態に係るコンピューティング資源の割当て機能を利用することで、システムサービスタスク250に含まれる高優先度サービス252に対するコンピューティング資源の割当て要求(例えば、20ms毎に動作させる)に加えて、低優先度サービス256に対するコンピューティング資源の割当て要求(例えば、100ms毎に必ず1回は動作させる)を満足させることができる。
また、本実施の形態に係るコンピューティング資源の割当て機能を利用することで、シングルコアのプロセッサを採用した場合であっても、プロセッサが提供するコンピューティング資源を効率的に利用して、制御プロセス(プライマリタスク240およびセカンダリタスク242)およびシステムサービスタスク250の両方を適切に実行させることができる。さらに、マルチコアのプロセッサを用いた場合や、複数のプロセッサを利用できる場合には、より多くのプログラムがシステムサービスタスク250に登録されたとしても、コンピューティング資源の効率的な割当てを実現できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御装置、2 フィールドネットワーク、3 サーボモータドライバ、4 サーボモータ、5 リモートIOターミナル、6 検出スイッチ、7 リレー、8 サポート装置、10 接続ケーブル、11 PLCシステムバス、12 電源ユニット、13 演算ユニット、14,53 IOユニット、15 特殊ユニット、51 リモートIOターミナルバス、52 通信カプラ、100 プロセッサ、102 チップセット、104 メインメモリ、106 不揮発性メモリ、108 システムタイマ、110 USBコネクタ、120 PLCシステムバスコントローラ、122,142 DMA制御回路、124 PLCシステムバス制御回路、126,146 バッファメモリ、130 PLCシステムバスコネクタ、140 フィールドネットワークコントローラ、144 フィールドネットワーク制御回路、200 リアルタイムOS、210 システムプログラム、212 スケジューラプログラム、214 処理プログラム、216 入力処理プログラム、218 出力処理プログラム、220 システムサービスプログラム、222 高優先度サービスプログラム、224 通知機能プログラム、226 低優先度サービスプログラム、230 制御プログラム、232 シーケンス命令演算プログラム、234 モーション演算プログラム、236 ユーザプログラム、240 プライマリタスク、242 セカンダリタスク、250 システムサービスタスク、252,252A,252B 高優先度サービス、254 通知機能、256 低優先度サービス、260 制御サイクル、262 監視サイクル、264 サービスサイクル、270 開始通知、272 終了通知、274 介入依頼、276 中断指令、278 介入終了依頼、280 再開指令、2120 制御機能、2122 監視機能、2124 介入機能、SYS 制御システム。

Claims (11)

  1. 制御対象を制御するための制御装置であって、
    プロセッサと、
    前記プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラムと、
    前記第1のプログラムより実行の優先度が低い第2のプログラムと、
    前記第2のプログラムより実行の優先度が低い第3のプログラムと、
    前記第2のプログラムより実行の優先度が高い第4のプログラムと、
    前記プロセッサに実行させるプログラムを管理するスケジューラプログラムとを備え、
    前記第2のプログラムは、前記プロセッサでの実行の開始に応じて開始通知を出力するとともに、前記プロセッサでの実行の完了に応じて終了通知を出力する通知命令を含み、
    前記スケジューラプログラムは、
    前記第1のプログラムの実行を妨げないように、前記プロセッサで前記第2および第3のプログラムを実行させるための命令と、
    予め定められた監視サイクル毎に、前記第2のプログラムからの前記開始通知および前記終了通知に基づいて、前記第2のプログラムの実行状況を判断するための命令と
    前記第2のプログラムの実行状況が予め定められた設定を満たしていない場合に、前記第4のプログラムの実行を一時的に中断させるための命令とを含む、制御装置。
  2. 制御対象を制御するための制御装置であって、
    プロセッサと、
    前記プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラムと、
    前記第1のプログラムより実行の優先度が低い第2のプログラムと、
    前記第2のプログラムより実行の優先度が低い第3のプログラムと、
    前記プロセッサに実行させるプログラムを管理するスケジューラプログラムとを備え、
    前記第2のプログラムは、前記プロセッサでの実行の開始に応じて開始通知を出力するとともに、前記プロセッサでの実行の完了に応じて終了通知を出力する通知命令を含み、
    前記スケジューラプログラムは、
    前記第1のプログラムの実行を妨げないように、前記プロセッサで前記第2および第3のプログラムを実行させるための命令と、
    予め定められた監視サイクル毎に、前記第2のプログラムからの前記開始通知および前記終了通知に基づいて、前記第2のプログラムの実行状況を判断するための命令とを含み、
    前記実行状況を判断するための命令は、前記監視サイクルにおける前記第3のプログラムの実行状況を判断する命令を含み、
    前記スケジューラプログラムは、前記第3のプログラムの実行状況が予め定められた設定を満たしていない場合に、前記第2のプログラムの実行を一時的に中断させるための命令をさらに含む、制御装置。
  3. 前記通知命令は、API(Application Programming Interface)を利用して、前記第2のプログラムに組込まれる、請求項1または2に記載の制御装置。
  4. 前記スケジューラプログラムは、前記第1のプログラムを予め定められた制御サイクル毎に繰返し実行させる、請求項1〜のいずれか1項に記載の制御装置。
  5. 前記スケジューラプログラムは、前記第1のプログラムが実行されていない空き時間に、前記第2のプログラムおよび前記第3のプログラムを実行させる、請求項に記載の制御装置。
  6. 前記実行状況を判断するための命令は、前記監視サイクルにおける前記第2のプログラムの動作時間の比率を算出する命令を含む、請求項1〜のいずれか1項に記載の制御装置。
  7. 前記実行状況を判断するための命令は、前記監視サイクルより長い第2の監視サイクルにおける前記第3のプログラムの動作時間の比率を算出する命令をさらに含む、請求項に記載の制御装置。
  8. 制御対象を制御するためのプロセッサを有する制御装置で実行されるシステムプログラムであって、
    前記制御装置は、前記プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラムと、前記第1のプログラムより実行の優先度が低い第2のプログラムと、前記第2のプログラムより実行の優先度が低い第3のプログラムと、前記第2のプログラムより実行の優先度が高い第4のプログラムとを備え、
    前記第2のプログラムは、前記プロセッサでの実行の開始に応じて開始通知を出力するとともに、前記プロセッサでの実行の完了に応じて終了通知を出力する通知命令を含み、
    前記システムプログラムは、前記プロセッサに実行させるプログラムを管理するスケジューラプログラムを備え、
    前記スケジューラプログラムは、
    前記第1のプログラムの実行を妨げないように、前記プロセッサで前記第2および第3のプログラムを実行させるための命令と、
    予め定められた監視サイクル毎に、前記第2のプログラムからの前記開始通知および前記終了通知に基づいて、前記第2のプログラムの実行状況を判断するための命令と
    前記第2のプログラムの実行状況が予め定められた設定を満たしていない場合に、前記第4のプログラムの実行を一時的に中断させるための命令とを含む、システムプログラム。
  9. 制御対象を制御するためのプロセッサを有する制御装置で実行されるシステムプログラムであって、
    前記制御装置は、前記プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラムと、前記第1のプログラムより実行の優先度が低い第2のプログラムと、前記第2のプログラムより実行の優先度が低い第3のプログラムとを備え、
    前記第2のプログラムは、前記プロセッサでの実行の開始に応じて開始通知を出力するとともに、前記プロセッサでの実行の完了に応じて終了通知を出力する通知命令を含み、
    前記システムプログラムは、前記プロセッサに実行させるプログラムを管理するスケジューラプログラムを備え、
    前記スケジューラプログラムは、
    前記第1のプログラムの実行を妨げないように、前記プロセッサで前記第2および第3のプログラムを実行させるための命令と、
    予め定められた監視サイクル毎に、前記第2のプログラムからの前記開始通知および前記終了通知に基づいて、前記第2のプログラムの実行状況を判断するための命令とを含み、
    前記実行状況を判断するための命令は、前記監視サイクルにおける前記第3のプログラムの実行状況を判断する命令を含み、
    前記スケジューラプログラムは、前記第3のプログラムの実行状況が予め定められた設定を満たしていない場合に、前記第2のプログラムの実行を一時的に中断させるための命令をさらに含む、システムプログラム。
  10. 制御対象を制御するためのプロセッサを有する制御装置の制御方法であって、
    前記制御装置は、前記プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラムと、前記第1のプログラムより実行の優先度が低い第2のプログラムと、前記第2のプログラムより実行の優先度が低い第3のプログラムと、前記第2のプログラムより実行の優先度が高い第4のプログラムとを備え、
    前記第2のプログラムは、前記プロセッサでの実行の開始に応じて開始通知を出力するとともに、前記プロセッサでの実行の完了に応じて終了通知を出力する通知命令を含み、
    前記制御方法は、
    前記第1のプログラムの実行を妨げないように、前記プロセッサで前記第2および第3のプログラムを実行させるステップと、
    予め定められた監視サイクル毎に、前記第2のプログラムからの前記開始通知および前記終了通知に基づいて、前記第2のプログラムの実行状況を判断するステップと
    前記第2のプログラムの実行状況が予め定められた設定を満たしていない場合に、前記第4のプログラムの実行を一時的に中断させるステップとを備える、制御方法。
  11. 制御対象を制御するためのプロセッサを有する制御装置の制御方法であって、
    前記制御装置は、前記プロセッサで繰返し実行される最も実行の優先度の高い第1のプログラムと、前記第1のプログラムより実行の優先度が低い第2のプログラムと、前記第2のプログラムより実行の優先度が低い第3のプログラムとを備え、
    前記第2のプログラムは、前記プロセッサでの実行の開始に応じて開始通知を出力するとともに、前記プロセッサでの実行の完了に応じて終了通知を出力する通知命令を含み、
    前記制御方法は、
    前記第1のプログラムの実行を妨げないように、前記プロセッサで前記第2および第3のプログラムを実行させるステップと、
    予め定められた監視サイクル毎に、前記第2のプログラムからの前記開始通知および前記終了通知に基づいて、前記第2のプログラムの実行状況を判断するステップとを備え、前記実行状況を判断するためのステップは、前記監視サイクルにおける前記第3のプログラムの実行状況を判断するステップを含み、
    前記第3のプログラムの実行状況が予め定められた設定を満たしていない場合に、前記第2のプログラムの実行を一時的に中断させるステップを備える、制御方法。
JP2018038665A 2018-03-05 2018-03-05 制御装置、システムプログラム、制御方法 Active JP6927089B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018038665A JP6927089B2 (ja) 2018-03-05 2018-03-05 制御装置、システムプログラム、制御方法
CN201811510452.9A CN110231781B (zh) 2018-03-05 2018-12-11 控制装置、存储介质、控制方法
EP18211652.5A EP3557345B1 (en) 2018-03-05 2018-12-11 Control apparatus, system program, and control method
US16/221,589 US10877803B2 (en) 2018-03-05 2018-12-17 Control apparatus, control method and non-transitory storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018038665A JP6927089B2 (ja) 2018-03-05 2018-03-05 制御装置、システムプログラム、制御方法

Publications (2)

Publication Number Publication Date
JP2019153144A JP2019153144A (ja) 2019-09-12
JP6927089B2 true JP6927089B2 (ja) 2021-08-25

Family

ID=64900742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018038665A Active JP6927089B2 (ja) 2018-03-05 2018-03-05 制御装置、システムプログラム、制御方法

Country Status (4)

Country Link
US (1) US10877803B2 (ja)
EP (1) EP3557345B1 (ja)
JP (1) JP6927089B2 (ja)
CN (1) CN110231781B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7141905B2 (ja) * 2018-10-12 2022-09-26 株式会社日立産機システム コントロール装置及びコントロール方法
JP7063292B2 (ja) * 2019-03-15 2022-05-09 オムロン株式会社 制御システム、設定装置、および設定プログラム
JP7230703B2 (ja) * 2019-06-20 2023-03-01 オムロン株式会社 制御装置
JP7380390B2 (ja) * 2020-03-31 2023-11-15 オムロン株式会社 制御装置、プログラムおよび制御方法
JP7512886B2 (ja) 2020-12-23 2024-07-09 オムロン株式会社 制御装置、制御方法および制御プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10335989B4 (de) * 2003-08-01 2019-07-11 Kw-Software Gmbh Online-Änderungen von CIL-Code-Programmen für die Industrieautomatisierung
US7689838B2 (en) * 2005-12-22 2010-03-30 Intel Corporation Method and apparatus for providing for detecting processor state transitions
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
JP5423635B2 (ja) * 2009-11-09 2014-02-19 株式会社デンソー スケジューリング方法,スケジューリングプログラム,スケジューリング装置
JP5136695B2 (ja) * 2011-01-31 2013-02-06 トヨタ自動車株式会社 安全制御装置および安全制御方法
EP2672344B1 (en) * 2011-01-31 2017-06-28 Toyota Jidosha Kabushiki Kaisha Safety control device and safety control method
JP5747584B2 (ja) * 2011-03-15 2015-07-15 オムロン株式会社 制御装置およびシステムプログラム
JP4957853B1 (ja) * 2011-03-15 2012-06-20 オムロン株式会社 Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
JP4877423B1 (ja) * 2011-03-15 2012-02-15 オムロン株式会社 Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体
US8706262B2 (en) * 2011-03-15 2014-04-22 Omron Corporation CPU unit of PLC, system program for PLC, and recording medium storing system program for PLC
JP4973792B1 (ja) * 2011-03-15 2012-07-11 オムロン株式会社 演算ユニット、出力制御方法、およびプログラム
JP5633501B2 (ja) * 2011-11-04 2014-12-03 トヨタ自動車株式会社 制御装置および制御方法
CN103592894B (zh) * 2012-07-11 2016-10-26 Dmg森精机株式会社 工作机械的控制装置
JP6488830B2 (ja) * 2015-03-31 2019-03-27 オムロン株式会社 制御装置
JP6540166B2 (ja) * 2015-03-31 2019-07-10 オムロン株式会社 制御装置
CN107577185B (zh) * 2017-09-14 2019-10-25 浙江国自机器人技术有限公司 一种任务执行方法及基于多核处理器的控制器

Also Published As

Publication number Publication date
US20190272197A1 (en) 2019-09-05
CN110231781B (zh) 2022-04-05
EP3557345A1 (en) 2019-10-23
EP3557345B1 (en) 2020-07-08
CN110231781A (zh) 2019-09-13
JP2019153144A (ja) 2019-09-12
US10877803B2 (en) 2020-12-29

Similar Documents

Publication Publication Date Title
JP6927089B2 (ja) 制御装置、システムプログラム、制御方法
JP6540166B2 (ja) 制御装置
JP4752984B1 (ja) Plcのcpuユニット、plc用のシステムプログラムおよびplc用のシステムプログラムを格納した記録媒体
CN107272549B (zh) 控制装置、控制方法以及记录介质
US11061377B2 (en) Control device
JP6488830B2 (ja) 制御装置
JP6406466B1 (ja) 制御装置、制御方法および制御プログラム
WO2018186358A1 (ja) 制御装置、制御方法および制御プログラム
JP7067406B2 (ja) 制御システム、制御装置および制御方法
JP2016194831A (ja) 制御装置
US9568905B2 (en) CPU of PLC, system program for PLC, and recording medium storing system program for PLC
US11855907B2 (en) Robot control system and control method
WO2022137577A1 (ja) 制御装置、制御方法および制御プログラム
WO2022190424A1 (ja) 情報処理装置およびプログラム
WO2022190425A1 (ja) 制御装置および制御方法
JP2017139876A (ja) 制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210520

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210719

R150 Certificate of patent or registration of utility model

Ref document number: 6927089

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150