(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-01
(45)【発行日】2024-07-09
(54)【発明の名称】制御装置、制御方法および制御プログラム
(51)【国際特許分類】
G05B 19/05 20060101AFI20240702BHJP
【FI】
G05B19/05 F
(21)【出願番号】P 2020214052
(22)【出願日】2020-12-23
【審査請求日】2023-10-10
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100155712
【氏名又は名称】村上 尚
(72)【発明者】
【氏名】西垣 弘二
【審査官】田中 友章
(56)【参考文献】
【文献】特開2019-153144(JP,A)
【文献】特開2012-194669(JP,A)
【文献】特開2020-061055(JP,A)
【文献】特開2002-351509(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
ネットワークを介して接続される制御対象機器を制御する制御装置であって、
マイクロプロセッサと、
記憶部と、を備え、
前記記憶部は、
所定の制御周期において必ず実行されるべき定周期タスクを前記マイクロプロセッサに実行させる定周期プログラムと、
前記定周期タスクよりも優先度の低い情報処理タスクを前記マイクロプロセッサに実行させる情報処理プログラムと、
前記制御周期において実行する前記定周期プログラムおよび前記情報処理プログラムのスケジュール設定処理を前記マイクロプロセッサに実行させるスケジューラプログラムと、を格納し、
前記スケジューラプログラムは、所定の前記定周期プログラムを実行している前記制御周期である実行中制御周期において、次の前記制御周期である次制御周期に実行予定の前記定周期プログラムの実行時間を推測し、推測結果としての推測実行時間の長さに応じて、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定する、制御装置。
【請求項2】
前記スケジューラプログラムは、前記推測実行時間が所定の閾値を超えた場合に、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定する、請求項1に記載の制御装置。
【請求項3】
前記スケジューラプログラムは、前記推測実行時間が所定の閾値を超えた場合に、前記実行中制御周期に実行する前記情報処理プログラムの実行を中止する、請求項2に記載の制御装置。
【請求項4】
前記スケジューラプログラムは、前記推測実行時間が所定の閾値を超えた場合に、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を短くする、請求項2に記載の制御装置。
【請求項5】
前記スケジューラプログラムは、前記実行中制御周期に実行する前記情報処理プログラムの種類に応じて、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定する、請求項1~4のいずれか一項に記載の制御装置。
【請求項6】
前記スケジューラプログラムは、前記実行中制御周期に実行する前記情報処理プログラムの種類に応じて前記閾値を設定する、請求項2~4のいずれか一項に記載の制御装置。
【請求項7】
前記定周期タスクとして実行される前記定周期プログラムは複数であり、
前記スケジューラプログラムは、複数の前記定周期プログラムのそれぞれについて、前記次制御周期における前記推測実行時間を推測して合計時間を算出し、該合計時間の長さに応じて、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定する、請求項1~6のいずれか一項に記載の制御装置。
【請求項8】
ネットワークを介して接続される制御対象機器を制御する制御装置の制御方法であって、
所定の制御周期において必ず実行されるべき定周期タスクをマイクロプロセッサに実行させる定周期プログラムの実行ステップと、
前記定周期タスクよりも優先度の低い情報処理タスクを前記マイクロプロセッサに実行させる情報処理プログラムの実行ステップと、
前記制御周期において実行する前記定周期プログラムおよび前記情報処理プログラムのスケジュール設定処理を前記マイクロプロセッサに実行させるスケジューラプログラム実行ステップと、を有し、
前記スケジューラプログラム実行ステップは、所定の前記定周期プログラムを実行している前記制御周期である実行中制御周期において、次の前記制御周期である次制御周期に実行予定の前記定周期プログラムの実行時間を推測し、推測結果としての推測実行時間の長さに応じて、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定する、制御方法。
【請求項9】
請求項1から7のいずれか1項に記載の制御装置としてコンピュータを機能させるための制御プログラムであって、前記スケジューラプログラムを含む制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械や設備の動作を制御するために用いられる制御装置において、定周期プログラムおよび情報処理プログラムの実行のスケジューリングに関する。
【背景技術】
【0002】
機械、設備などの動作の制御としては、モータの運動を制御するためのモーション制御が含まれる場合がある。このようなモーション制御、典型的には、モータを駆動するモータドライバに対して周期的に指令値を出力するモーション演算プログラムの実行と、シーケンス演算とを1つのCPUで実行するプログラマブルコントローラ(以下PLCとも呼ぶ)が知られている。
PLCのようなリアルタイムシステムにおいて、定周期に実行する必要ある定周期タスクが制御周期毎に実行される。そのため、定周期タスクの実行時間を正確に算出する必要があり、様々な技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2012-194663号公報
【文献】特開2012-194669号公報
【文献】特開2012-194671号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
昨今では、PLCにおいて高速なCPUやリアルタイムOSを使用するようになっており、より多様な処理を実行することが可能となっている。よって、所定の制御周期において定周期タスクの他に、定周期に実行する必要はない高度な情報処理タスクを制御周期ごとに実行する技術が考えられる。制御周期において、実行中制御周期に情報処理タスクを実行することにより、高速なCPUを有効に活用することができる。
【0005】
図12は、上述した定周期タスクと定周期タスクより優先度の低い情報処理タスクを実行する場合のタイムチャートを示す。
【0006】
図12に示すように、制御装置1は、同じ内容の定周期タスク1,2,・・・Nを所定の制御周期、例えば1ミリ秒の制御周期で繰り返し実行する。定周期タスクは、リアルタイム性の必要なタスクであり、確実に、所定の制御周期(ここでは1ミリ秒)で実行することが必要である。また、制御装置1では実行中制御周期において、情報処理タスク(情報処理タスク1,2,・・・N)を実行する。ここで、情報処理タスクは、制御周期内で必ず処理を実行する必要はない処理を想定している。従って、情報処理タスクを、制御周期における定周期タスクの非実行期間に実行することにより、CPUなどのリソースを有効に活用することができる。
【0007】
しかし、ハードウェアやマイコンの様なOSを使用しないシステムと異なり、CPUやOSを用いたシステムは、タスクの実行に要する時間が不確定となる。よって、実行中制御周期内でCPUに負荷のかかる高度な情報処理タスクを行うと、次制御周期に実行される予定の定周期タスクが情報処理タスクに影響されて、該定周期タスクの実行時間が長くなってしまう。例えば、情報処理タスクが実行されることによって、CPUのキャッシュ等に保存されていた定周期タスクに関するコード、パラメータなどの情報が上書きされてしまう。この結果、改めてプログラムやパラメータの一部をロードし直す必要が生じ、定周期タスクの実行時間が長くなってしまう場合がある。
【0008】
図13は、制御装置1のCPUにかかる負荷の量に応じた、定周期タスクの実行時間の確立分布を示す。
図13の上のグラフに示すように、定周期タスク以外に情報処理タスクを実行しない場合に比べて、情報処理タスクを実行し、CPUにかかる負荷が15%となった場合には、定周期タスク実行時間が長くなる方向に分散する。また、定周期タスクの実行時間の最大値も大きくなる。更に、CPUにかかる負荷が高い情報処理タスクを実行し、CPUにかかる負荷が30%となった場合には、定周期タスクの実行時間が更に長くなる方向に分散する。
図13の下のグラフは、情報処理タスクの具体例として、MQTT(Message Queueing Telemetry Transport)送信を実行した場合の例を示している。この例では、データ数5000のMQTT送信を行った場合にCPUの負荷が13%になり、データ数15000のMQTT送信を行った場合にCPUの負荷が26%となっている。同グラフに示すように、MQTT送信を行った場合も
図13の上のグラフで説明した内容と同様の傾向があることがわかる。
【0009】
定周期タスクとともに情報処理タスクが実行される結果、
図14に示すような問題が生じる。例えば、実行中制御周期において情報処理タスク(N-1)を実行した影響で、次制御周期に実行する定周期タスクNの実行時間が長くなり、次制御周期内で定周期タスクNの処理を完了することができなくなる。
【0010】
本発明では、所定の制御周期において、定周期タスクと情報処理タスクとの両方を実行する場合でも、確実に定周期タスクを実行することを実現する制御装置を提供することを目的とする。
【課題を解決するための手段】
【0011】
上記の課題を解決するために、本発明の一態様に係る制御装置は、ネットワークを介して接続される制御対象機器を制御する制御装置であって、マイクロプロセッサと、記憶部と、を備え、前記記憶部は、所定の制御周期において必ず実行されるべき定周期タスクを前記マイクロプロセッサに実行させる定周期プログラムと、前記定周期タスクよりも優先度の低い情報処理タスクを前記マイクロプロセッサに実行させる情報処理プログラムと、前記制御周期において実行する前記定周期プログラムおよび前記情報処理プログラムのスケジュール設定処理を前記マイクロプロセッサに実行させるスケジューラプログラムと、を格納し、前記スケジューラプログラムは、所定の前記定周期プログラムを実行している前記制御周期である実行中制御周期において、次の前記制御周期である次制御周期に実行予定の前記定周期プログラムの実行時間を推測し、推測結果としての推測実行時間の長さに応じて、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定する。
上記構成によれば、まず、次制御周期に実行予定の定周期プログラムの実行時間が推測される。そして、推測された実行時間の長さに応じて、実行中制御周期に実行する情報処理プログラムの実行時間が設定される。これにより、次制御周期において、定周期プログラムの実行時間が長くなりすぎて十分に定周期タスクが実行されないという事態を防止することができる。
【0012】
また、上記一側面に係る制御装置は、前記スケジューラプログラムは、前記推測実行時間が所定の閾値を超えた場合に、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定してもよい。
上記の構成によれば、推測実行時間と閾値とを比較するという比較的単純な判断によって、実行中制御周期に実行する情報処理プログラムの実行時間を設定することができる。よって、この判断による演算の負荷を少なくすることができる。
【0013】
また、上記一側面に係る制御装置は、前記スケジューラプログラムは、前記推測実行時間が所定の閾値を超えた場合に、前記実行中制御周期に実行する前記情報処理プログラムの実行を中止してもよい。
上記の構成によれば、推測実行時間が所定の閾値を超えた場合に、実行中制御周期に実行する情報処理プログラムの実行を中止するという単純な制御が行われることになる。よって、この制御による演算の負荷を少なくすることができる。
【0014】
また、上記一側面に係る制御装置は、前記スケジューラプログラムは、前記推測実行時間が所定の閾値を超えた場合に、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を短くしてもよい。
上記の構成によれば、推測実行時間が所定の閾値を超えた場合に、実行中制御周期に実行する情報処理プログラムの実行時間が短くなる。よって、実行中制御周期に実行する情報処理プログラムの実行を中止する、という制御と比較して、ある程度情報処理プログラムを実行することが可能となる。よって、情報処理タスクの実行完了をより早くすることができる。
【0015】
また、上記一側面に係る制御装置は、前記スケジューラプログラムは、前記実行中制御周期に実行する前記情報処理プログラムの種類に応じて、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定してもよい。
上記の構成によれば、情報処理プログラムの種類によって、次制御周期に実行予定の定周期プログラムの実行時間への影響が異なる場合がある。これに対して上記の構成によれば、実行中制御周期に実行される情報処理プログラムの種類に応じて、実行中制御周期に実行する情報処理プログラムの実行時間が設定されるので、より適切に実行中制御周期に実行する情報処理プログラムの実行時間を設定することができる。
【0016】
また、上記一側面に係る制御装置は、前記スケジューラプログラムは、前記実行中制御周期に実行する前記情報処理プログラムの種類に応じて前記閾値を設定してもよい。
上記の構成によれば、情報処理プログラムの種類によって、次制御周期に実行予定の定周期プログラムの実行時間への影響が異なる場合がある。これに対して上記の構成によれば、実行中制御周期に実行される情報処理プログラムの種類に応じて閾値が設定されるので、より適切に実行中制御周期に実行する情報処理プログラムの実行時間を設定することができる。
【0017】
また、上記一側面に係る制御装置は、前記定周期タスクとして実行される前記定周期プログラムは複数であり、前記スケジューラプログラムは、複数の前記定周期プログラムのそれぞれについて、前記次制御周期における前記推測実行時間を推測して合計時間を算出し、該合計時間の長さに応じて、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定してもよい。
上記の構成によれば、制御周期内で定周期プログラムが複数実行される場合であっても、次制御周期において、定周期プログラムの実行時間が長くなりすぎて十分に定周期タスクが実行されないという事態を防止することができる。
【0018】
上記の課題を解決するために、本発明の一態様に係る制御方法は、ネットワークを介して接続される制御対象機器を制御する制御装置の制御方法であって、所定の制御周期において必ず実行されるべき定周期タスクを前記マイクロプロセッサに実行させる定周期プログラム実行ステップと、前記定周期タスクよりも優先度の低い情報処理タスクを前記マイクロプロセッサに実行させる情報処理プログラム実行ステップと、前記制御周期において実行する前記定周期プログラムおよび前記情報処理プログラムのスケジュール設定処理を前記マイクロプロセッサに実行させるスケジューラプログラム実行ステップと、を有し、前記スケジューラプログラム実行ステップは、所定の前記定周期プログラムを実行している前記制御周期である実行中制御周期において、次の前記制御周期である次制御周期に実行予定の前記定周期プログラムの実行時間を推測し、推測結果としての推測実行時間の長さに応じて、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定する。
上記構成によれば、制御装置と同様の効果を奏することができる。
【0019】
上記の課題を解決するために、本発明の一態様に係る制御プログラムは、上記の制御装置としてコンピュータを機能させるための制御プログラムであって、前記スケジューラプログラムを含んでもよい。
上記構成によれば、制御装置と同様の効果を奏することができる。
【発明の効果】
【0020】
本発明の一態様によれば、まず、次制御周期に実行予定の定周期プログラムの実行時間が推測される。そして、推測された実行時間の長さに応じて、実行中制御周期に実行する情報処理プログラムの実行時間が設定される。これにより、次制御周期において、定周期プログラムの実行時間が長くなりすぎて十分に定周期タスクが実行されないという事態を防止することができる。
【図面の簡単な説明】
【0021】
【
図1】本発明の本実施形態に係る制御装置のシステム構成を示す図である。
【
図2】CPUユニットのハードウェア構成を示す図である。
【
図3】本発明の実施形態に係るCPUユニットで実行されるソフトウェア構成を示す模式図である。
【
図4】本発明の実施形態1に係る制御装置において実行される処理のタイムチャートを表す。
【
図5】本発明の実施形態1に係る制御装置において実行される処理の流れを示すフローチャートである。
【
図6】本発明の実施形態2に係る制御装置において実行される処理のタイムチャートを表す。
【
図7】本発明の実施形態2に係る制御装置において実行される処理の流れを示すフローチャートである。
【
図8】本発明の実施形態3に係る制御装置において実行される処理のタイムチャートを表す。
【
図9】本発明の実施形態3に係る制御装置において実行される処理の流れを示すフローチャートである。
【
図10】本発明の実施形態4に係る制御装置において実行される処理のタイムチャートを表す。
【
図11】本発明の実施形態4に係る制御装置において実行される処理の流れを示すフローチャートである。
【
図12】定周期タスクと情報処理タスクの両方を実行する制御装置におけるタイムチャートである。
【
図13】
図12に示す制御装置におけるCPUに係る負荷量と定周期タスクの実行時間の関係を表すグラフである。
【
図14】定周期タスクと情報処理タスクの両方を実行する制御装置におけるタイムチャートである。
【発明を実施するための形態】
【0022】
以下では、本発明の実施形態について説明する。
【0023】
<システム構成>
本実施の形態に係る制御装置は、機械や設備などの制御対象を制御する。本実施の形態に係る制御装置は、その構成要素としてCPUユニットを含む。CPUユニットは、マイクロプロセッサと、マイクロプロセッサのメインメモリを含む記憶手段と、通信回路とを含む。本実施の形態に係る制御装置のCPUユニットは、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するように構成されている。
【0024】
記憶手段は、制御プログラム、および当該制御プログラムの実行と入力データおよび出力データの入出力とを制御するシステムプログラムの格納に用いられる。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。
【0025】
通信回路は、出力データを送信しおよび入力データを受信する。後述するように、本実施の形態に係る制御装置は、通信回路として、制御装置システムバスによって出力データの送信および入力データの受信を行う第1通信回路と、フィールドネットワークによって出力データの送信および入力データの受信を行う第2通信回路とを有している。
【0026】
まず、
図1を参照して、本実施の形態に係る制御装置1のシステム構成について説明する。図は、本発明の実施の形態に係る制御装置システムの概略構成を示す模式図である。
図1を参照して、制御装置システムは、制御装置1と、制御装置1とフィールドネットワーク2を介して接続される各種制御対象機器、すなわち、サーボモータドライバ3およびリモートIOターミナル5と、フィールド機器であるセンサ6およびリレー7とを含む。また、制御装置1には、接続ケーブル10などを介してコントローラサポート装置8が接続される。
【0027】
制御装置1は、主たる演算処理を実行するCPUユニット13と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、制御装置システムバス11を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。なお、制御装置1として構成される各ユニットは、制御装置メーカーが提供するものであるので、制御装置システムバス11は、一般に制御装置メーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク2については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
【0028】
CPUユニット13の詳細については、
図2を参照して後述する。IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、センサ6などのセンサが何らかの対象物を検出している状態(オン)および何らの対象物も検出していない状態(オフ)のいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令(オン)および不活性化するための指令(オフ)のいずれかを出力する。
【0029】
特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。
【0030】
フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、たとえば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)-III、Powerlink、SERCOS(登録商標)-III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを用いてもよい。本実施の形態に係る制御装置システムSYSでは、典型的に、本実施の形態においては、産業用イーサネット(登録商標)であるEtherCAT(登録商標)をフィールドネットワーク2として採用する場合の構成について例示する。なお、本明細書における「ネットワーク」とは、USB(Universal Serial Bus)やシリアルポートなども含む抽象的な概念としてのネットワークをいう。
【0031】
なお、制御装置1は、CPUユニット13にIOユニット14の機能やサーボモータドライバ3の機能を持たせることにより、そのような内蔵機能でまかなえる範囲については、IOユニット14やサーボモータドライバ3などを介さずにCPUユニット13が直接制御対象を制御する構成でもよい。
【0032】
サーボモータドライバ3は、フィールドネットワーク2を介してCPUユニット13と接続されるとともに、CPUユニット13からの指令値に従ってサーボモータ4を駆動する。より具体的には、サーボモータドライバ3は、制御装置1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ3は、サーボモータ4の軸に接続されている位置センサ(ロータリーエンコーダ)やトルクセンサといった検出器から、位置、速度(典型的には、今回位置と前回位置との差から算出される)、トルクといったサーボモータ4の動作に係る実測値を取得する。そして、サーボモータドライバ3は、CPUユニット13からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボモータドライバ3は、実測値が目標値に近づくようにサーボモータ4を駆動するための電流を調整する。なお、サーボモータドライバ3は、サーボモータアンプと称されることもある。
【0033】
また、
図1には、サーボモータ4とサーボモータドライバ3とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【0034】
図1に示す制御装置システムSYSのフィールドネットワーク2には、さらに、リモートIOターミナルが接続されている。リモートIOターミナルは、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナルは、フィールドネットワーク2でのデータ伝送に係る処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバスを介して、データを互いに遣り取りできるように構成される。
【0035】
コントローラサポート装置8については後述する。
<CPUユニットのハードウェア構成>
次に、
図2を参照して、CPUユニット13のハードウェア構成について説明する。
図2は、本発明の実施の形態に係るCPUユニット13のハードウェア構成を示す模式図である。
図2を参照して、CPUユニット13は、マイクロプロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ(記憶部)106と、システムタイマ108と、通信コントローラ150と、システムバスコントローラ120と、フィールドネットワークコントローラ140と、USBコネクタ(不図示)とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【0036】
マイクロプロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【0037】
CPUユニット13は、記憶手段として、メインメモリ104および不揮発性メモリ106を有する。
【0038】
メインメモリ104は、揮発性の記憶領域(RAM)であり、CPUユニット13へ電源投入後にマイクロプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)といったデバイスが用いられる。
【0039】
一方、不揮発性メモリ106は、リアルタイムOS(Operating System)、制御装置1のスケジューラプログラム212、定周期プログラム230、および情報処理プログラム235、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD-RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
【0040】
通信コントローラ150は、典型的には、FPGAやASIC等のハードウェアで構成され、チップセットを介して、メインメモリ104とのデータの送受信が可能に構成される。通信コントローラ150は、メインメモリ104とのデータの通信に用いられるメモリ領域を有し、後述するシステムバスコントローラ120やフィールドネットワークコントローラ140に対して、メインメモリから転送されたデータの転送を行う。また、システムバスコントローラ120及びフィールドネットワークコントローラ140に対して、メインメモリから転送したデータを送信させる命令を発行する。
【0041】
通信コントローラ150は、さらにシステムタイマ108を備える。システムタイマ108は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OS(Operating System)やBIOS(Basic Input Output System)などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するような実行周期ごとの制御動作が実現される。
【0042】
通信回路として、システムバスコントローラ120およびフィールドネットワークコントローラ140を有する。これらの通信回路は、出力データの送信および入力データの受信を行う。
【0043】
なお、CPUユニット13自体にIOユニット14やサーボモータドライバ3の機能を持たせる場合は、システムバスコントローラ120による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてCPUユニット13の内部で行われる送信および受信となる。
【0044】
通信コントローラ150は、制御装置システムバス11を介したデータの遣り取りを制御する。より具体的には、システムバスコントローラ120と、DMA(Dynamic MemoryAccess)制御回路122と、バッファメモリ126とを含む。
【0045】
バッファメモリ126は、制御装置システムバス11を介して他のユニットへ出力されるデータ(以下「出力データ」)の送信バッファ、および、制御装置システムバス11を介して他のユニットから入力されるデータ(以下「入力データ」)の受信バッファとして機能する。なお、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ126に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ126に一次的に保持された後、メインメモリ104に移される。
【0046】
DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行う。
【0047】
システムバス制御回路124は、制御装置システムバス11に接続される他のユニットとの間で、バッファメモリ126の出力データを送信する処理および第1入力データを受信してバッファメモリ126に格納する処理を行う。典型的には、システムバス制御回路124は、制御装置システムバス11における物理層およびデータリンク層の機能を提供する。
【0048】
フィールドネットワークコントローラ140は、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ140は、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはEtherCAT(登録商標)規格に従うフィールドネットワーク2が採用されるので、通常のイーサネット(登録商標)通信を行うためのハードウェアを含む、フィールドネットワークコントローラ140が用いられる。EtherCAT(登録商標)規格では、通常のイーサネット(登録商標)規格に従う通信プロトコルを実現する一般的なイーサネット(登録商標)コントローラを利用できる。但し、フィールドネットワーク2として採用される産業用イーサネット(登録商標)の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット(登録商標)コントローラが用いられる。また、産業用イーサネット(登録商標)以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【0049】
バッファメモリ126は、フィールドネットワーク2を介して他の装置などへ出力されるデータ(以下「出力データ」)の送信バッファ、および、フィールドネットワーク2を介して他の装置などから入力されるデータ(以下「入力データ」)の受信バッファとして機能する。マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定の装置へ転送されるべき出力データは、メインメモリ104から読み出されて、通信回路バッファ146に一次的に保持される。また、他の装置から転送された入力データは、バッファ146に一次的に保持された後、メインメモリ104に移される。
【0050】
DMA制御回路122は、メインメモリ104からバッファへの出力データの転送、および、バッファからメインメモリ104への入力データの転送を行う。
【0051】
フィールドネットワーク制御回路144は、フィールドネットワーク2に接続される他の装置との間で、バッファの出力データを送信する処理および入力データを受信して通信回路バッファに格納する処理を行う。典型的には、フィールドネットワーク制御回路144は、フィールドネットワーク2における物理層およびデータリンク層の機能を提供する。
【0052】
USBコネクタは、コントローラサポート装置8とCPUユニット13とを接続するためのインターフェイスである。典型的には、コントローラサポート装置8から転送される、CPUユニット13のマイクロプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介して制御装置1に取込まれる。
【0053】
<CPUユニットのソフトウェア構成>
次に、
図3を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、CPUユニット13のマイクロプロセッサ100によって実行される。
【0054】
図3は、本発明の実施の形態に係るCPUユニット13で実行されるソフトウェア構成を示す模式図である。
図3を参照して、CPUユニット13で実行されるソフトウェアとしては、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236および各種処理プログラムとの3階層になっている。
【0055】
リアルタイムOS200は、CPUユニット13のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。
【0056】
システムプログラム210は、制御装置1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、スケジューラプログラム212と、出力処理プログラム214と、入力処理プログラム216と、シーケンス演算プログラム232と、モーション演算プログラム234と、通信等プログラム242とを含む。なお、一般には出力処理プログラム214および入力処理プログラム216は、連続的(一体として)に実行されるので、これらのプログラムを、IO処理プログラム218と総称する場合もある。
【0057】
ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、制御装置システムを用いて制御する対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。
【0058】
後述するように、ユーザプログラム236は、シーケンス演算プログラム232およびモーション演算プログラム234と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム236は、シーケンス演算プログラム232およびモーション演算プログラム234によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。
【0059】
ユーザプログラム236、IO処理プログラム218、シーケンス演算プログラム232、およびモーション演算プログラム234によって実行されるタスクは、制御周期ごとに確実に実行されるべき定周期タスクである。よって、この定周期タスクを実行するプログラムを定周期プログラム230と称する。
【0060】
情報処理プログラム235は、定周期タスクよりも優先度の低い情報処理タスクを前記マイクロプロセッサに実行させる。情報処理プログラム235は、システムプログラム210に含まれる通信等プログラム242、および、各種処理プログラム241を含む。
【0061】
以下、各プログラムについてより詳細に説明する。ユーザプログラム236は、上述したように、ユーザにおける制御目的(たとえば、対象のラインやプロセス)に応じて作成される。ユーザプログラム236は、典型的には、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム236は、コントローラサポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム236は、コントローラサポート装置8から接続ケーブル10を介してCPUユニット13へ転送され、不揮発性メモリ106などに格納される。
【0062】
スケジューラプログラム212は、定周期プログラム230および情報処理プログラム235について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。また、スケジューラプログラム212は、制御周期において実行する定周期プログラム230および情報処理プログラム235のスケジュール設定処理をマイクロプロセッサ100に実行させる。
【0063】
出力処理プログラム214は、ユーザプログラム236(定周期プログラム230)の実行によって生成された出力データを通信コントローラへ転送するのに適した形式に再配置する。システムバスコントローラ120またはフィールドネットワークコントローラ140が、マイクロプロセッサ100からの、送信を実行するための指示を必要とする場合は、出力処理プログラム214がそのような指示を発行する。
【0064】
入力処理プログラム216は、システムバスコントローラ120および/またはフィールドネットワークコントローラ140によって受信された入力データを、定周期プログラム230が使用するのに適した形式に再配置する。
【0065】
シーケンス演算プログラム232は、ユーザプログラム236で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【0066】
モーション演算プログラム234は、ユーザプログラム236による指示に従って実行され、サーボモータドライバ3やパルスモータドライバといったモータドライバに対して出力する指令値を実行されるごとに算出するプログラムである。
【0067】
通信等プログラム242は、定周期タスクとしてのプログラム以外の、制御装置1の各種機能を実現するためのプログラム群をまとめて示したものである。例えば機械の制御制御装置との通信や外部の機器からの要求からの処理、自己診断処理をマイクロプロセッサに実行させるプログラムである。また外部記憶媒体にメインメモリのデータを転送させる処理や外部記憶媒体からデータを読み出す処理も通信等プログラム242に含まれる。より具体的には、通信等プログラム242によって行われる処理としては、OPC-UA(OPC Unified Architecture)通信、リモートファイルアクセス(NAS(Network Attached Storage)等へのアクセス)、DB入出力、クラウド接続/通信、MQTTなどのIoT通信、PLC間通信、および、装置間通信(HERMES(Hyper-wideband Enabled RF Messaging)、JARAS(日本ロボット工業会の規格)等)等が挙げられる。
【0068】
各種処理プログラムは、ユーザによって提供される、リアルタイム性の低い各種情報処理を行うプログラムである。各種処理プログラムの一例としては、KPI(Key Performance Indicator)計算およびWebサーバ処理、ならびに、AI(Artificial Intelligence)処理などが挙げられる。
【0069】
リアルタイムOS200は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。本実施の形態に係る制御装置1においては、CPUユニット13のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力(送信)するためのイベント(割り込み)として、制御サイクル開始の割り込みが初期設定される。リアルタイムOS200は、制御サイクル開始の割り込みが発生すると、マイクロプロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム212に切り替える。
【0070】
なお、上記では、
図2に示すように、シングルコアプロセッサを用いた実施形態について説明したが、マルチコアプロセッサを用いる実施形態であってもよい。例えば、実施形態において、ハードウェア的には完全に分離しないマルチコアプロセッサを用い、定周期タスクと情報処理タスクが当該マルチコアプロセッサを共有する実施形態であってもよい。
【0071】
〔実施形態1〕
<タイムチャート>
図4は、本発明の実施形態1に係る制御装置1において実行される処理のタイムチャートを表す。本実施形態1に係る制御装置1においては、所定の制御周期において必ず実行されるべき定周期タスクと、定周期タスクよりも優先度の低い情報処理タスクの両方をマイクロプロセッサに実行させる。また、スケジューラプログラム212が定周期タスクおよび情報処理タスクの実行スケジュールの設定処理を行う。本実施形態では、スケジューラプログラム212は、以下に示すような、定周期タスクおよび情報処理タスクの実行スケジュールを設定する。
【0072】
定周期タスク(1、2、・・・N)は、所定の制御周期(例えば1ミリ秒)で、繰り返し実行される。また、情報処理タスク(1,2,・・・N-1)は実行中制御周期内の定周期タスクが実行されない空き時間に実行される。
【0073】
スケジューラプログラム212は、定周期タスク(N-1)が実行されている制御周期において、次の制御周期である次制御周期に実行予定の定周期タスクNの実行時間を推測する。例えば、スケジューラプログラム212は、定周期タスク(N-1)が実行されている制御周期において、次の制御周期である次制御周期に実行予定の定周期タスクNの実行時間を推測する。そして、推測された定周期タスクNの実行時間の長さに応じて、実行中制御周期に実行する情報処理タスクの実行時間を設定する。この場合、スケジューラプログラム212は、推測された実行時間が所定の閾値を超えた場合に、実行中制御周期に実行する情報処理タスクの実行時間を設定してもよい。
本実施形態では、
図4に示すように、スケジューラプログラム212は、推測実行時間が所定の閾値を超えた場合に、実行中制御周期に実行する情報処理タスクの実行時間を0(実行を中止)とする。この場合、実行中制御周期では、情報処理タスク(N-1)が実行されず、次の制御周期に実行が持ち越される。
【0074】
上記のような処理によれば、推定される次制御周期における定周期タスクの実行時間が閾値を超える長さであると判断された場合には、実行中制御周期での情報処理タスクの実行を中止することにより、次制御周期で実行予定の定周期タスクを確実に制御周期内で完了することができる。また、推測実行時間と閾値とを比較するという比較的単純な判断によって、実行中制御周期に実行する情報処理プログラム235の実行時間を設定することができる。よって、この判断による演算の負荷を少なくすることができる。
【0075】
<フローチャート>
図5は本発明の実施形態1に係る制御装置1において実行される定周期プログラム230、情報処理プログラム235、およびスケジューラプログラム212によるスケジュール設定の処理の流れを示すフローチャートである。以下に示す各処理は、定周期プログラム230、情報処理プログラム235、およびスケジューラプログラム212をマイクロプロセッサ100が実行することによって実現される。
【0076】
ステップS10では、スケジューラプログラム212が、定周期タスク(N-1)に対応する定周期プログラム230をマイクロプロセッサ100に実行させるように割り当てが行われる。以降、この処理を、スケジューラプログラム212が、定周期タスク(N-1)にCPUを割り当てる、と説明する。
【0077】
ステップS12では、定周期プログラム230が定周期タスク(N-1)を実行させる。
【0078】
ステップS14では、定周期プログラム230が定周期タスク(N-1)を実行中に、次制御周期で実行予定の定周期タスクNの実行の準備を行う。
【0079】
ステップS16では、スケジューラプログラム212が、定周期タスクNの実行時間を推測する。
【0080】
ステップS16で、定周期タスクNの推測された実行時間が、所定の閾値より大きければ、ステップS18に進む。
【0081】
ステップS18では、スリープ状態に入り、情報処理タスクを実行しない。
【0082】
ステップS20では、スケジューラプログラム212が制御周期を経過したか否かを判定する。
【0083】
ステップS20で、スケジューラプログラム212が制御周期を経過していないと判定した場合には、スリープ状態を継続する。
【0084】
ステップS20で、スケジューラプログラム212が制御周期時間を経過と判定した場合には、ステップS10に戻って、次制御周期の定周期タスクNについてステップS10からS16までの処理を繰り返す。
【0085】
ステップS16で、定周期タスクNの推定された実行時間が、所定の閾値以下であれば、ステップS24に進む。
【0086】
ステップS24では、スケジューラプログラム212が、情報処理タスクへタスクスイッチを行う。その後、ステップS26に進む。
【0087】
ステップS26では、スケジューラプログラム212が、情報処理タスクにCPUを割り当てる。
【0088】
ステップS28では、情報処理プログラム235が情報処理タスクを実行する。
【0089】
ステップS30では、スケジューラプログラム212が、制御周期が経過したかを判定する。
【0090】
ステップS30で、制御周期が経過したと判定されるまでは、ステップS28に戻って、情報処理タスクを実行する。制御周期が経過したと判定されたらステップS32へ進む。
【0091】
ステップS32では、定周期タスクへタスクスイッチを行う。
【0092】
その後、ステップS10に戻って、定周期プログラム230が次制御周期の定周期タスクNを実行する。
【0093】
以下、同じ処理を繰り返す。
【0094】
上記構成によれば、推測実行時間が所定の閾値を超えた場合に、実行中制御周期に実行する情報処理プログラム235の実行を中止するという単純な制御が行われることになる。よって、次制御周期において、定周期プログラム230の実行時間が長くなりすぎて十分に定周期タスクが実行されないという事態を防止することができる。更に、この制御による演算の負荷を少なくすることができる。
【0095】
〔実施形態2〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0096】
<タイムチャート>
図6は、本発明の実施形態2に係る制御装置1において実行される処理のタイムチャートを表す。本実施形態2においても、定周期タスク(1、2、・・・N)と情報処理タスク(1,2,・・・N-1)の両方が実行される、そして、スケジューラプログラム212は、以下に示すような、定周期タスクおよび情報処理タスクの実行スケジュールを設定する。
【0097】
上記実施形態2では、スケジューラプログラム212は、定周期タスク(N-1)が実行されている制御周期において、次の制御周期である次制御周期に実行予定の定周期タスクNの実行時間を推測し、推測された定周期タスクNの実行時間が所定の閾値を超えた場合には、実行中制御周期に実行する情報処理タスク(N-1)の実行時間を短くする。
図6に示すように、次制御周期に実行される予定の定周期タスクNの実行時間が、所定の閾値を超えた場合にも、現在実行中制御周期において、情報処理タスク(N-1)の実行を一切中止してしまうのではなく、短く設定された実行時間で情報処理タスク(N-1)を実行する。ただし、制御周期の時間をすべて使用するのではなく、次の制御周期が開始される前にアイドル時間を設ける。
【0098】
上記のような処理によれば、推定される次制御周期における定周期タスクの実行時間が所定の閾値を超えた場合にも、短縮された実行時間を設定して、情報処理タスクを実行する。従って、定周期タスクの実行時間の空き時間を更に活用することができる。また、実行中制御周期における定周期タスクの実行時間を短く設定してアイドルタイムを設けることにより、次制御周期において、確実に、定周期タスクを完了することができる。
【0099】
<フローチャート>
図7は本発明の実施形態2に係る制御装置1において実行される処理の流れを示すフローチャートである。以下では、
図7を参照して、処理の流れについて説明する。
【0100】
ステップS110では、スケジューラプログラム212が、定周期タスク(N-1)にCPUを割り当てる。
【0101】
ステップS112では、定周期プログラム230が、定周期タスク(N-1)を実行する。
【0102】
ステップS114では、定周期プログラム230が、定周期タスク(N-1)を実行中に、次の制御周期で実行予定の定周期タスクNの実行の準備を行う。
【0103】
ステップS116では、スケジューラプログラム212が、定周期タスクNの実行時間を推測する。
【0104】
ステップS116で、定周期タスクNの推定された実行時間が、所定の閾値より大きければ、ステップS118に進む。
【0105】
ステップS118では、実行中制御周期に実行する情報処理タスクの実行時間を短くする。
図6に示すように、次制御周期に実行される予定の定周期タスクNの実行時間が、所定の閾値を超えた場合にも、現在実行中制御周期において、情報処理タスク(N-1)の実行を一切中止してしまうのではなく、短く設定された実行時間で情報処理タスク(N-1)を実行する。ただし、制御周期の時間をすべて使用するのではなく、次の制御周期が開始される前にアイドル時間を設ける。
【0106】
上記のような処理によれば、推定される次制御周期における定周期タスクの実行時間が所定の閾値を超えた場合にも、短縮された実行時間を設定して、情報処理タスクを実行する。従って、定周期タスクの実行時間の空き時間を更に活用することができる。また、実行中制御周期における定周期タスクの実行時間を短く設定してアイドルタイムを設けることにより、次制御周期において、確実に、定周期タスクを完了することができる。
【0107】
<フローチャート>
図7は本発明の実施形態2に係る制御装置1において実行される処理の流れを示すフローチャートである。以下では、
図7を参照して、処理の流れについて説明する。
【0108】
ステップS110では、スケジューラプログラム212が、定周期タスク(N-1)にCPUを割り当てる。
【0109】
ステップS112では、定周期プログラム230が、定周期タスク(N-1)を実行する。
【0110】
ステップS114では、定周期プログラム230が、定周期タスク(N-1)を実行中に、次の制御周期で実行予定の定周期タスクNの実行の準備を行う。
【0111】
ステップS116では、スケジューラプログラム212が、定周期タスクNの実行時間を推測する。
【0112】
ステップS116で、定周期タスクNの推定された実行時間が、所定の閾値より大きければ、ステップS118に進む。
【0113】
ステップS118では、制御周期に実行する情報処理タスクの実行時間を短くする。
ステップS120では、スケジューラプログラム212が、制御周期を経過したか否かを判定する。
【0114】
ステップS120で制御周期を経過していないと判定した場合には、ステップS124に進む。
【0115】
ステップS120で制御周期を経過と判定した場合には、ステップS110に戻って、次の定周期タスクについてステップS110からS116の処理を繰り返す。
【0116】
ステップS116で、定周期タスクNの推定された実行時間が、所定の閾値以下であれれば、ステップS124に進む。
【0117】
ステップS124では、スケジューラプログラム212が、情報処理タスクへタスクスイッチを行う。その後、ステップS126に進む。
【0118】
ステップS126では、スケジューラプログラム212が情報処理タスクにCPUを割り当てる。
【0119】
ステップS128では、情報処理プログラム235が情報処理タスクを実行する。
【0120】
ステップS130では、スケジューラプログラム212が、制御周期が経過したかを判定する。
【0121】
ステップS130で、制御周期が経過したと判断されるまでは、ステップS128に戻って、情報処理プログラム235が情報処理タスクを実行する。制御周期が経過したと判断されたらステップS132へ進む。
【0122】
ステップS132では、スケジューラプログラム212が、定周期タスクへタスクスイッチを行う。
【0123】
その後、ステップS110に戻って、定周期プログラム230が次制御周期の定周期タスクを実行する。
【0124】
以下、同じ処理を繰り返す。
【0125】
上記処理では、次制御周期の定周期タスクの実行時間を推測して、推測した実行時間が所定の閾値を超えると場合には、実行中の制御周における情報処理タスクの処理時間を短くする。従って、実行中制御周期において情報処理タスクを実行できるとともに、確実に定周期タスクの実行を制御周期内で完了することができる。
【0126】
また、スケジューラプログラム212は、実行中制御周期に実行する情報処理タスクの種類に応じて、前記実行中制御周期に実行する前記情報処理タスクの実行時間を設定してもよい。
例えば、定周期タスクの中には、外部デバイス(メモリカードやタグデータリンクなどのIP通信など)を使用するものがある。外部デバイスはCPU制御の外にあるため、情報処理タスクがこれらの外部デバイスを使用するタスクである場合、CPUリソースへの影響だけでなく、外部デバイスの競合によって、定周期タスクの実行に影響が生じる。例えば、定周期タスクでタグデータリンク機能を使用した他のPLCとの変数同期を行っている場合、情報処理タスクがクラウド通信などでネットワーク帯域を占有してしまうと、定周期タスクにおけるタグデータリンクによる変数同期に失敗することがありうる。よって、情報処理タスクの種類に応じて実行時間を変えることにより、外部デバイス(CPU以外のリソース)の競合を避けることができる。
【0127】
なお、上記の例では、情報処理タスクの種類に応じて情報処理タスクの実行時間を設定していたが、スケジューラプログラム212は、実行中制御周期に実行する情報処理タスクの種類に応じて閾値を設定してもよい。
すなわち、上記処理によれば、定周期タスクの推測実行時間が所定の閾値を超えた場合にも、同時に実行される情報処理タスクの種類によって、適切な閾値または情報処理タスクの実行時間を設定することができる。従って、制御周期内に定周期タスクを完了させることと、定周期タスクを行っていない空き時間を有効に活用することを両立させることができる。
【0128】
〔実施形態3〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0129】
<タイムチャート>
上記実施形態1および2では、実行される定周期タスクが1つの場合について説明した。しかし、本発明はこれに限定されるものではなく、複数の定周期タスクが実行される場合についても適用できる。即ち、定周期タスクとして実行される定周期プログラム230は複数であり、スケジューラプログラム212は、複数の定周期プログラム230のそれぞれについて、次制御周期における推測実行時間を推測して合計時間を算出し、該合計時間の長さに応じて、実行中制御周期に実行する情報処理プログラム235の実行時間を設定してもよい。
【0130】
図8は、本発明の実施形態3に係る制御装置1において実行される処理のタイムチャートを表す。本実施形態3においては、同じ所定の制御周期で第1定周期タスク(1、2、・・・N)および第2定周期タスク(1、2、・・・N)が実行される。さらに、これらの定周期タスクより高度な情報処理タスク(1,2,・・・N-1)も実行される、そして、スケジューラプログラム212は、以下に示すような、第1定周期タスク、第2定周期タスク、および情報処理タスクの実行スケジュールを設定する。
【0131】
実施形態3では、スケジューラプログラム212は、複数の定周期プログラム230のそれぞれについて、次制御周期における前記推測実行時間を推測して合計時間を算出し、該合計時間の長さに応じて、前記実行中制御周期に実行する前記情報処理プログラム235の実行時間を設定してもよい。
例えば、
図8に示すように、第1定周期タスク(N-1)を実行中に、次制御周期に実行される予定の第1定周期タスクNの実行時間を推定する。また、第2定周期タスク(N-1)を実行中に、次制御周期に実行される予定の第2定周期タスクNの実行時間を推定する。そして、第1定周期タスクおよび第2定周期タスクの推定実行時間の合算値に対して閾値を設定する。本実施形態3では、第1定周期タスクおよび第2定周期タスクの推定実行時間の合算値が閾値を超えた場合には、現在実行中制御周期において、情報処理タスク(N-1)の実行を中止する。そして、情報処理タスク(N-1)の実行を次制御周期に持ち越す。
【0132】
上記のような処理によれば、推定される次制御周期における定周期タスクの実行時間が所定の閾値を超えた場合にも、実行中制御周期での情報処理タスクの実行を中止することにより、次制御周期で実行予定の定周期タスクを確実に制御周期内で完了することができる。また、推測実行時間と閾値とを比較するという比較的単純な判断によって、実行中制御周期に実行する情報処理プログラムの実行時間を設定することができる。よって、この判断による演算の負荷を少なくすることができる。
【0133】
本実施形態3では、定周期タスクは2つである場合を例にして説明した。しかし、定周期タスクの数は、特に限定されず、3つ以上であってもよい。
【0134】
定周期タスクが複数であっても、情報処理タスクは、定周期タスクを実行する間の隙間時間で、ベストエフォートで実行できる。
【0135】
<フローチャート>
図9は本発明の実施形態3に係る制御装置1において実行される処理の流れを示すフローチャートである。以下では、
図9を参照して、処理の流れについて説明する。
【0136】
ステップS210では、スケジューラプログラム212が、第1定周期タスク(N-1)にCPUを割り当てる。
【0137】
ステップS212では、定周期プログラム230が、第1定周期タスク(N-1)を実行する。
【0138】
ステップS214では、定周期プログラム230が、第1定周期タスク(N-1)を実行中に、次の制御周期で実行予定の第1定周期タスクNの実行の準備を行う。
【0139】
ステップS216では、スケジューラプログラム212が、第1定周期タスクNの実行時間(T1)を推測する。
【0140】
ステップS218では、スケジューラプログラム212が、第2定周期タスク(N-1)へタスクスイッチを行う。
【0141】
ステップS220では、スケジューラプログラム212が、第2定周期タスク(N-1)にCPUを割り当てる。
【0142】
ステップS222では、定周期プログラム230が、第2定周期タスク(N-1)を実行する。
【0143】
ステップS224では、定周期プログラム230が、第2定周期タスク(N-1)を実行中に、次の制御周期で実行予定の第2定周期タスクNの実行の準備を行う。
【0144】
ステップS226では、スケジューラプログラム212が、第2定周期タスクNの実行時間(T2)を推測する。さらに、スケジューラプログラム212は、ステップS216で推測された第1定周期タスクNの実行時間(T1)と第2定周期タスクNの実行時間(T2)を合算して、所定の閾値を超えるかを判断する。
【0145】
ステップS226で、推測された実行時間が所定の閾値を超えると判断された場合には、ステップS228に進む。
【0146】
ステップS228では、スリープ状態に入り、情報処理タスクを実行しない。
【0147】
ステップS230では、スケジューラプログラム212が、制御周期を経過したか否かを判定する。
【0148】
ステップS230で制御周期を経過していないと判定した場合には、制御周期を経過するまで、スリープ状態を継続する。
【0149】
ステップS230で制御周期を経過したと判定した場合には、ステップS232に進んで、タスクスイッチを行う。
【0150】
その後、ステップS210に戻り、ステップS210からステップS232までの処理を繰り返す。
【0151】
ステップS226で、推測された実行時間が所定の閾値以下であると判定された場合には、ステップS234に進む。
【0152】
ステップS234では、情報処理タスクへタスクスイッチを行う。その後、ステップS236に進む。
【0153】
ステップS236では、スケジューラプログラム212が、情報処理タスクにCPUを割り当てる。
【0154】
ステップS238では、情報処理プログラム235が情報処理タスクを実行する。
【0155】
ステップS240では、スケジューラプログラム212が、制御周期が経過したか否かを判定する。
【0156】
ステップS240で、スケジューラプログラム212が、制御周期が経過したと判定するまでは、ステップS238に戻って、情報処理プログラム235が情報処理タスクを実行する。制御周期が経過したと判断されたら、ステップS242へ進む。
【0157】
ステップS242では、スケジューラプログラム212が、定周期タスクへタスクスイッチを行う。
【0158】
その後、ステップS210に戻って、定周期プログラム230が、次制御周期の定周期タスクNを実行する。
【0159】
以下、同じ処理を繰り返す。
【0160】
上記構成によれば、制御周期内で定周期プログラムが複数実行される場合であっても、次制御周期において、定周期プログラムの実行時間が長くなりすぎて十分に定周期タスクが実行されないという事態を防止することができる。
【0161】
〔実施形態4〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を繰り返さない。
【0162】
<タイムチャート>
上記実施形態3では、複数の定周期タスクが情報処理タスクとともに実行される場合に、それぞれの次制御周期に実行される予定の定周期タスクの実行時間の合算値が所定の閾値を超える場合に、実行中制御周期において、情報処理タスクの実行を中止する場合を例にして説明した。しかし、本発明はこれに限定されるものではなく、それぞれの次制御周期に実行される予定の定周期タスクの実行時間の合算値に応じて、実行中制御周期における情報処理タスクの実行時間を設定してもよい。
【0163】
図10は、本発明の実施形態4に係る制御装置1において実行される処理のタイムチャートを表す。例えば、本実施形態4においては、同じ所定の制御周期で第1定周期タスク(1、2、・・・N)および第2定周期タスク(1、2、・・・N)が実行される。さらに、これらの定周期タスクより高度な情報処理タスク(1,2,・・・N-1)も実行される、そして、スケジューラプログラム212は、以下に示すような、第1定周期タスク、第2定周期タスク、および情報処理タスクの実行スケジュールを設定する。
【0164】
実施形態3では、スケジューラプログラム212は、複数の定周期プログラムのそれぞれについて、次制御周期における前記推測実行時間を推測して合計時間を算出し、該合計時間の長さに応じて、前記実行中制御周期に実行する前記情報処理プログラムの実行時間を設定してもよい。
例えば、
図10に示すように、第1定周期タスク(N-1)を実行中に、次制御周期に実行される予定の第1定周期タスクNの実行時間を推定する。また、第2定周期タスク(N-1)を実行中に、次制御周期に実行される予定の第2定周期タスクNの実行時間を推定する。そして、スケジューラプログラム212が、第1定周期タスクおよび第2定周期タスクの推定実行時間の合算値に対して閾値を設定する。そして、スケジューラプログラム212が、第1定周期タスクおよび第2定周期タスクの推定実行時間が、所定の閾値を超えるか否かを判定する。本実施形態4では、第1定周期タスクおよび第2定周期タスクの推定実行時間の合算値が閾値を超えた場合には、現在実行中制御周期において、情報処理タスク(N-1)の実行時間を短く設定する。
【0165】
上記のような処理によれば、実行される定周期タスクが複数であっても、推定される次制御周期における複数の定周期タスクの実行時間の合算値が所定の閾値を超えた場合に、短縮された実行時間を設定して、情報処理タスクを実行する。従って、複数の定周期タスクの実行時間の空き時間を更に有効に活用することができる。また、実行中制御周期における定周期タスクの実行時間を短く設定してアイドルタイムを設けることにより、次制御周期において、確実に、定周期タスクを完了することができる。
【0166】
<フローチャート>
図11は本発明の実施形態4に係る制御装置1において実行される処理の流れを示すフローチャートである。以下では、
図9を参照して、処理の流れについて説明する。
【0167】
図11に示すフローチャートは、ステップS328およびS330が、
図9に示すフローチャートにおけるステップS228およびS230とは異なる。しかし、
図11のフローチャートにおけるステップS310~ステップS326およびS332~ステップS342は、
図9のフローチャートにおけるステップS210~ステップS226およびS232~ステップS242と同じである。
【0168】
従って、以下では、ステップS326およびステップS328についてのみ説明する。
ステップS328では、スケジューラプログラム212が、情報処理タスクの実行時間を短縮する。
【0169】
ステップS330では、スケジューラプログラム212が、実行中制御周期における定周期タスクの実行が終了したと判定する。
【0170】
ステップS330で、スケジューラプログラム212が、定周期タスクの実行が完了したと判定した場合には、ステップS334に進む。
【0171】
上記構成によれば、複数の定周期タスクを実行する場合に、次の制御周期で行う予定の第1および第2定周期タスクの実行時間を推定して合計時間を算出し、所定の閾値を超えると推定する場合には、情報処理タスクの処理時間を短縮する。従って、実行中制御周期内の定周期タスクを行っていない隙間時間で有効に情報処理タスクを行えるとともに、確実に定周期タスクを制御周期内で完了することができる。
【0172】
なお、スケジューラプログラム212に関しては、ハイパーバイザがスケジューラプログラムとなり、定周期タスク用のOSと情報処理タスク用のOSに計算資源を割り当てるといった実施形態であってもよい。
【0173】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0174】
1 制御装置
100 マイクロプロセッサ
106 不揮発性メモリ(記憶部)
212 スケジューラプログラム
230 定周期プログラム
235 情報処理プログラム