JP5771114B2 - コントローラ、およびタスクとラダーの処理方法 - Google Patents

コントローラ、およびタスクとラダーの処理方法 Download PDF

Info

Publication number
JP5771114B2
JP5771114B2 JP2011224540A JP2011224540A JP5771114B2 JP 5771114 B2 JP5771114 B2 JP 5771114B2 JP 2011224540 A JP2011224540 A JP 2011224540A JP 2011224540 A JP2011224540 A JP 2011224540A JP 5771114 B2 JP5771114 B2 JP 5771114B2
Authority
JP
Japan
Prior art keywords
ladder
processing
task
processor
priority
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
JP2011224540A
Other languages
English (en)
Other versions
JP2013084169A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2011224540A priority Critical patent/JP5771114B2/ja
Publication of JP2013084169A publication Critical patent/JP2013084169A/ja
Application granted granted Critical
Publication of JP5771114B2 publication Critical patent/JP5771114B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Description

本発明はタスク処理とラダー処理を実行するコントローラ、およびタスクとラダーの処理方法に関する。
一般にコントローラは、ラダー処理を実行するソフトウェア、または、ラダー処理プロセッサを設けており、定周期で、または連続してラダー処理の実行を行っている。またコントローラは、定周期でラダー処理を実行した後の空いた時間でラダー処理以外のプログラム実行(タスク処理)を行っている。
また、リアルタイムOSのマルチタスクスケジューリングでは、タスクは優先度に基づいてプリエンプティブスケジューリングされ、最高優先度の実行可能タスクを実行する。仮に、現在実行中のタスクよりも高い優先度のタスクが実行可能となった場合、即座にタスクの切り替えを行っている。
上記の処理を可能とするコントローラにおけるラダー処理実行方法に関し、以下の特許文献のように処理することが知られている。
特許文献1では、第2のプロセッサから第1のプロセッサに対して、異なるサイクルで異なるレベルの割り込みを入れ、割り込みに応じあらかじめ登録済みのラダー処理を実行している。
特許文献2では、定周期で実行されるラダー処理実行後に条件の成立したタスクを実行している。
特許文献3では、複数のラダープログラムを必要に応じ実行させ、プロセッサの演算量を減らしコントローラの応答性能向上を行っている。
特許文献4では、ラダー処理によるタスクのスケジューリングを行っている。
特開2001−005505号公報 特開平01−281503号公報 特開平01−140301号公報 特開平08−272630号公報
上記の特許文献による処理では、以下の問題に対応することができない。
第1に、複数の組のラダー処理を実行させることができていない。上記の、ラダー処理プロセッサを持ちラダー処理の実行を行うコントローラでは、1組のラダー処理を周期的に実行し、ラダー処理実行の空いた時間でラダー処理以外のタスクの実行を行っているにすぎない。
第2に、タスクを先に実行させ、タスク処理からラダー処理を呼び出して動作させること、あるいは1つのタスクから複数のラダー処理を呼び出すといったことができない。これは、マイクロプロセッサが実行するタスク処理とラダー処理を組み合わせて動作させた場合は、マルチタスク処理等で発生するタスクの中断等により、タスクの演算時間が延びた場合にラダー処理のリアルタイム演算(所定の時間内に演算終了することを保障する)ができないからである。
第3に、ラダー処理、または、タスク処理において異常を検出した場合、コントローラ自体を停止させるためコントローラとしての可用性が低いことが問題であった。
本発明では、前記した問題を解決し、複数の組のラダー処理の実行とタスク処理を優先順位に応じたマルチタスクスケジューリングを実現するコントローラ、およびタスクとラダーの処理方法を提供することを目的とする。
前記課題を解決するために、本発明のコントローラでは、ラダー処理を実行する第1のプロセッサと、タスク処理を実行する第2のプロセッサと、プログラムとしてラダー処理のための複数のラダープログラムとタスク処理のための複数のタスクプログラムを収納する主メモリを備え、複数のラダープログラムと複数のタスクプログラムについて、処理の優先度に応じてラダープログラムとタスクプログラムの組み合わせを定めておき、第2のプロセッサは、処理の優先度ごとの処理周期での割り込みに応じて、当該優先度でのラダープログラムの実行を前記第1のプロセッサに指示し、第1のプロセッサは、第2のプロセッサの指示に従って主メモリ内のラダープログラムから当該優先度のラダープログラムを得、これに従ってラダー処理を実行し、第2のプロセッサは、主メモリ内のタスクプログラムから当該優先度のタスクプログラムを得、これに従ってタスク処理を実行し、指定された割り込みの優先度ごとの処理周期内に、当該優先度でのタスクプログラムによるタスク処理と、当該優先度でのラダープログラムによるラダー処理を完了する。
また、処理の優先度ごとの処理周期は、処理の優先度が上位であるほど短い処理周期とされている。
また、第2のプロセッサは、割り込みの新たな発生を監視して、実行中の優先度よりも上位の優先度の第2の割り込みであることを検知し、第1のプロセッサおよび、または第2のプロセッサは、実行中のプログラムを用いた処理を中断して、上位の優先度の第2の割り込みで定まるプログラムを用いた処理を実行し、第1のプロセッサおよび、または第2のプロセッサは、上位の優先度の第2の割り込みで定まるプログラムを用いた処理の完了後に、第2の割り込み発生前に実行中のプログラムを用いた処理を再開し、指定された割り込みの優先度ごとの処理周期内に、当該優先度でのタスクプログラムによるタスク処理と、当該優先度でのラダープログラムによるラダー処理を完了する。
また、第1のプロセッサは、ラダー処理の実行中に異常が発生したことを検知して第2のプロセッサに報告し、第2のプロセッサは、当該優先度のタスク処理を実行すると共に、次回割り込み時の当該優先度のラダー処理についての処理の可否を決定する。
また、主メモリに収納されたラダー処理のためのラダープログラムは、複数の一連のラダー命令で構成され、第1のプロセッサは、ラダー命令に従い当該のラダー処理を実行すると共に、実行できないラダー命令を検出した際には、ラダー処理を一時停止し、第2のプロセッサは、停止したラダー命令を実行し、第1のプロセッサは、第2のプロセッサにおける停止したラダー命令の実行後に、ラダー処理を停止したアドレスの次の番地から継続してラダー処理を再開する。
また、第1のプロセッサはハードウェアで構成され、第2のプロセッサは、ソフトウェアで構成されている。
また、割り込みにより指定された同一優先度の第1のプロセッサのラダー処理と、第2のプロセッサのタスク処理は、その処理周期内で一方の処理が完了後に他方の処理を実行する直列処理とされる。
また、割り込みにより指定された同一優先度の第1のプロセッサのラダー処理と、第2のプロセッサのタスク処理は、その処理周期内で双方の処理が同時に実行される期間を含む並列処理とされる。
前記課題を解決するために、本発明のタスクとラダーの処理方法では、ラダー処理を実行する第1のプロセッサと、タスク処理を実行する第2のプロセッサとを備え、複数のラダー処理と複数のタスク処理について、処理の優先度に応じてラダー処理とタスク処理の組み合わせを定めておき、処理の優先度ごとに定められた処理周期での割り込みを行い、割り込みに応じて、当該優先度でのラダー処理を第1のプロセッサで行い、
当該優先度でのタスク処理を第2のプロセッサで行い、割り込みの優先度ごとの処理周期内に、当該優先度でのタスク処理と、当該優先度でのラダー処理を完了する。
また、処理の優先度ごとの処理周期は、処理の優先度が上位であるほど短い処理周期とされている。
また、処理の優先度ごとの処理周期の期間内に、実行中の優先度よりも上位の優先度の第2の割り込みで発生したときに、第1のプロセッサと第2のプロセッサは、第2の割り込みで定まる優先度のラダー処理とタスク処理を実行し、上位の優先度の第2の割り込みで定まる処理の完了後に、第2の割り込み発生前に実行中の処理を再開し、指定された割り込みの優先度ごとの処理周期内に、当該優先度でのタスク処理と、当該優先度でのラダー処理を完了する。
また、第1のプロセッサが、ラダー処理の実行中に異常が発生したことを検知したとき、第2のプロセッサは、当該優先度のタスク処理を実行すると共に、次回割り込み時の当該優先度のラダー処理についての処理の可否を決定する。
また、第1のプロセッサは、一連のラダー命令に従いラダー処理を実行すると共に、実行できないラダー命令を検出した際には、ラダー処理を一時停止し、第2のプロセッサは、停止したラダー命令をソフト処理により実行し、第1のプロセッサは、ラダー処理を停止したアドレスの次の番地から継続してラダー処理を再開する。
また、第1のプロセッサはハードウェアで構成され、第2のプロセッサは、ソフトウェアで構成されている。
また、割り込みにより指定された同一優先度の第1のプロセッサのラダー処理と、第2のプロセッサのタスク処理は、その処理周期内で一方の処理が完了後に他方の処理を実行する直列処理とされる。
また、割り込みにより指定された同一優先度の第1のプロセッサのラダー処理と、第2のプロセッサのタスク処理は、その処理周期内で双方の処理が同時に実行される期間を含む並列処理とされる。
本発明によれば、リアルタイム演算において複数の組のラダー処理を実行することが可能となる。また本発明の実施例によれば、1つの組のラダー処理が異常となった場合においても、該当のラダー処理のみを停止することで、他の組のラダー処理は影響を受けず継続してラダー処理を実行でき可用性を向上させることができる。
図2の処理を実現する為のコントローラの全体構成を示す図。 コントローラで実現する処理内容の概念を説明するための図。 ラダー処理プロセッサ3と主メモリ4の各部の詳細を示す図。 ラダープログラム44内の具体的な記憶内容を示す図。 コントローラ1全体としての処理手順を示す図。 タイマー種別、優先度、ラダー処理並びにタスク処理の関連を示す図。 ラダー処理とタスク処理の直列実行に関する説明図。 ラダー処理中に異常発生したときの処理(ラダー処理中段)を示す図。 ラダー処理中に異常発生したときの処理(ラダー処理再開)を示す図。 ラダー処理とタスク処理の並列実行に関する説明図。 ラダー処理とタスク処理の直列実行に関する説明図。 タスク処理、ラダー処理の順番の並列実行に関する説明図。 上位割り込みのときのラダー処理プロセッサ3の設定に関する説明図。 ソフト実効命令検出時のソフト実行手順を示す図。 マイクロプロセッサでソフト処理を行うときの各部処理内容を示す図。
以下本発明の実施例を、図面を用いて説明する。
最初に、本発明のコントローラで実現する処理の概念について図2を用いて説明する。これは、複数の周期で動作するラダー処理を1つの環境でマルチタスク動作させるための考え方を示している。
ここでは、複数のラダー処理が優先度に応じて区別されている。優先度が1位のラダー処理(ラダー1)に対して、タイマー1による割り込み周期T1が設定されており、タイマー1による割り込みの都度、優先度1位のラダー処理(ラダー1)が実行される。
以下同様に、優先度が2位のラダー処理(ラダー2)に対して、タイマー2による割り込み周期T2が設定されており、タイマー2による割り込みの都度、優先度2位のラダー処理(ラダー2)が実行される。また、優先度が3位のラダー処理(ラダー3)に対して、タイマー3による割り込み周期T3が設定されており、タイマー3による割り込みの都度、優先度3位のラダー処理(ラダー3)が実行される。
なお、タスク処理も優先度に応じて区別されており、各優先度のラダー処理実行後にタスク処理が実行される。また、優先度が高いほど、タイマーによる割り込み周期Tが短く設定されている。
従って、図2において例えば時刻t1から優先度が3位のラダー処理(ラダー3)実行中に、時刻t2においてタイマー2による割り込みが発生した場合、これを中断して優先度が2位のラダー処理(ラダー2)の実行に移る。
また、この優先度が2位のラダー処理(ラダー2)に続くタスク2の実行中に、時刻t3においてタイマー1による割り込みが発生した場合、これを中断して優先度が1位のラダー処理(ラダー1)の実行に移る。
また、優先度が2位のラダー処理(ラダー2)に続くタスク2の残余部分の実行は、上位割り込みによるラダー処理(ラダー1)とこれに続くタスク1が完了した時刻t4のタイミング以降に実行される。同様に、優先度が3位のラダー処理(ラダー3)の残余部分とこれに続くタスク3の実行は、上位割り込みによるラダー処理(ラダー2)とこれに続くタスク2が完了した時刻t5のタイミング以降に実行される。
なお、図2の時刻t6から時刻t9の間でも上位割り込みが発生し、この間下位側が待機している状況が発生している。この部分の動作説明については、上記説明から容易に理解できることなので説明を省略する。
図1は、図2の処理を実現する為のコントローラの全体構成を示している。
コントローラ1は、マイクロプロセッサ2、ラダー処理プロセッサ3、主メモリ4、並びにこれらを相互に接続するバス5で構成される。このうち、主メモリ4は、管理ソフトウェア41、タスクプログラム42、タスク管理テーブル43、ラダープログラム44、ラダー管理テーブル45を含む。
このように図1には、マイクロプロセッサ2と、ラダー処理プロセッサ3を備えており、これらそれぞれのプロセッサは以下の役割を担う。
まず、ラダー処理プロセッサ3は、ラダー命令で記述されたラダープログラム44を実行する専用のプロセッサである。本発明では、ハードウェアで命令を解釈し実行する。このために、ラダープログラム44内のラダー命令はラダー処理プロセッサ3に取り込まれ使用される。
他方、マイクロプロセッサ2は、ラダープログラム44で処理できないような複雑な処理(ネットワーク通信処理、I/Oデバイス制御処理、二重化構成制御など)を、例えばC言語を用いてプログラムし、そのプログラムを実行するプロセッサである。
マイクロプロセッサ2は、基本的に管理ソフトウェア41であるOSが動作している。OSはタスクプログラム42を用いて、タスク管理テーブル43内のタスクのマルチタスクスケジューリングを行い、タスクを制御する。このため、タスク管理テーブル43内のタスクは、マイクロプロセッサ2に取り込まれ使用される。
本発明では、このマルチタスクスケジューリングとラダー処理の起動・停止を連携させ動作させる。このためマイクロプロセッサ2は、ラダー処理プロセッサ3に対して、ラダー処理の実行(起動)と停止を指示する。また、ラダー処理プロセッサ3は、指示に応じたラダー処理の完了後に、ラダー処理の終了を報告する。
また、ラダー処理プロセッサ3は、ラダー命令の実行を監視しており、異常停止したこと、或いは処理遅延などの異常をマイクロプロセッサ2に報告する。
また、ラダー処理プロセッサ3がハードウェアで実行できないラダー命令を検出した場合には、検出場所でラダー処理実行を停止し、マイクロプロセッサ2のソフトウェアに連絡する。連絡を受けたマイクロプロセッサ2上のソフトウェアはラダー処理の実行を行い、ラダー処理実行後ラダー処理プロセッサ3の再開を指示する。或いは、原因が特定されるまで以降の当該優先度のラダー処理を停止するなどの処理を実行する。
なお、マイクロプロセッサ2におけるタスクの実行は、図2の例では同一優先度のラダー処理の実行後に行われる。従って、ラダー処理プロセッサ3のラダー処理終了報告を受けてから、この優先度のタスク処理が実行される運びになる。
本発明のコントローラ1においては、上記したようにラダー処理プロセッサ3とマイクロプロセッサ2が連携している。このように、ラダー処理プロセッサ3、マイクロプロセッサ2の2つのプロセッサを持つことにより、C言語で記述されたプログラムを実行中に、ラダー処理をラダー処理プロセッサで平行して動作させることもできる。並行処理する事例については後で図10を用いて説明する。
なお、ラダー処理をラダー処理プロセッサ3とハードウェアで実行してもよく、インタプリタのようにソフトウェア的に実行することも考えられる。この処理については種々実現可能である。
図1のラダー処理プロセッサ3と主メモリ4の各部の詳細が図3に記載されているので、これらの詳細構成を図3で説明する。
図3において、まずラダー処理プロセッサ3の内部には、プログラムカウンタ31、管理テーブル番号32、ワークレジスタ33、ラダー制御レジスタ34、実行ステータス35などを備えている。これらが如何なる機能を果たすのかは、以後の動作説明の中で明らかにする。
また図3において、主メモリ4内のタスクプログラム42の記憶エリア内には図2で説明した優先度別のタスクが記憶されている。ここでは、タスク1が421、タスク2が422、タスク3が423で表示されている。これらのタスクはC言語で記述されており、マイクロプロセッサ2に読み込まれて使用される。
主メモリ4内のタスク管理テーブル43の記憶エリア内には、タスクプログラム42内の各タスクの管理テーブルが設けられている。ここでは、タスク1の管理テーブルが431、タスク2の管理テーブルが432、タスク3の管理テーブルが433で表示されている。
また図3において、主メモリ4内のラダープログラム44の記憶エリア内には図2で説明した優先度別のラダーが記憶されている。ここでは、ラダー1が441、ラダー2が442、ラダー3が443で表示されている。これらのラダーは、ラダー処理プロセッサ3に読み込まれて使用される。
主メモリ4内のラダー管理テーブル45の記憶エリア内には、ラダープログラム44内の各ラダーの管理テーブルが設けられている。ここでは、ラダー1の管理テーブルが451、ラダー2の管理テーブルが452、ラダー3の管理テーブルが453で表示されている。
ラダープログラム44内の具体的な記憶内容が図4に示されている。ここでは、例えばラダー3(L3)が、複数の一連のラダー命令(ここではL31からL3nまで)で構成されていることがわかる。他のラダーL1、L2も同様に複数の一連のラダー命令で構成されている。
また図2において、各周期内でのラダー処理では、一時中断されることがあるにしても、この複数の一連のラダー命令の全てが同一周期内で実行される必要がある。従って、各ラダーの管理テーブル451、452、453では、複数の一連のラダー命令について現在時点での処理内容、処理順番を記憶管理することになる。
なお、図示していないが、タスクプログラム42内の各タスクも基本的には、図4のラダーのように構成されている。例えばタスク1は、複数の一連のタスク命令で構成されている。タスク命令についても各周期内でのタスク処理では、一時中断されることがあるにしても、この複数の一連のタスク命令の全てが同一周期内で実行される必要がある。従って、各タスクの管理テーブル431、432、433では、複数の一連のタスク命令について、現在時点での処理内容、処理順番を記憶管理することになる。
図3、図4に示すようにラダー処理プロセッサ3あるいは主メモリ4内各部が構成されている。係る前提の構成において、コントローラ1は以下のように作動する。コントローラ1全体としての処理手順を図5に示す。
まずマイクロプロセッサ2は、ラダープログラムを先頭から動作させるとき、以下の手順でラダー処理プロセッサ3を起動する。
まずステップS100では、タイマーによる割り込みの受理と内容解析を行い、例えばこれが優先度3の割り込みであることを確認する。このことのために、マイクロプロセッサ2内には、タイマー種別と、優先度と、このときのラダー処理並びにタスク処理の関連が例えば表形式で記憶されている。
図6がこの表の一例であり、タイマー1が優先度1で、ラダー1並びにタスク1を実行する。同様にタイマー2が優先度2で、ラダー2並びにタスク2を実行し、タイマー3が優先度3で、ラダー3並びにタスク3を実行するという関係にある。因みにこの表には、ラダー並びにタスクに関連して、このプログラムを収納する主メモリ4内のアドレスが記憶されているのが望ましい。
ステップS101では、この割り込みが優先度下位の処理実行中に生じた上位割り込みかどうか確認する。上位割り込みであるときステップS102、上位割り込みでないときにステップS103の処理に入る。
この場合には優先度3の実行なので、上位割り込みではない。ステップS103において、マイクロプロセッサ2はラダー処理プロセッサ3起動準備のための各種設定を実行する。
ここでは、最初に主メモリ4に格納されているラダープログラム44の実行すべきアドレス401を、図3に示すラダー処理プロセッサ3のプログラムカウンタ31に設定する。例えば、図4のラダーL3を先頭から動作させようとするときには、これを収納する443内の最初のラダー命令L31の格納位置を示すアドレスを設定する。
次に、使用する管理テーブル402の番号(例えばラダー3管理テーブル453)を、ラダー処理プロセッサ3の管理テーブル番号32に設定する。また、ワークレジスタ33のクリアを行い、以後の処理に備える。
ステップS104では、マイクロプロセッサ2による以上の設定処理を受けて、ラダー処理プロセッサ3は、マイクロプロセッサ2に指定されたアドレス401からラダープログラムを読み込み、ラダー処理を実行し、順次の命令(図4の複数の一連のラダー命令)を読み込み、ラダー処理を実行する。
一方、マイクロプロセッサ2側では引き続き割り込み監視を継続しており、上位割り込みが発生し、ステップS102の処理が実行されたものとする。このとき、マイクロプロセッサ2は、ラダー処理の停止をするために、ラダー処理プロセッサ3のラダー制御レジスタ34に停止指示を行う。
ラダー処理プロセッサ3では、ラダー処理(ステップS104)での逐次命令の処理を継続しながら、ステップS105において停止指示を確認している。この停止指示を受けたときに、ラダー処理プロセッサ3がラダー処理実行中である場合、ラダー処理プロセッサ3のプログラムカウンタ31は、図4に示すラダー処理の途中で停止する。つまり、下位ラダーを停止し、この状態を保持する。
例えば、図4のラダーL3を先頭から実行しており、ラダー命令L3mの格納位置まで進んだところでラダー制御レジスタ34に停止指示を受けたとすると、プログラムカウンタ31にはこのラダー命令L3mの格納エリアを示すアドレスが設定され、記憶される。係る停止状態は、図2の処理の流れにおいて、時刻t2でラダー3が上位割り込みを受けた状態に相当する。
ステップS107では、上位割り込みによる上位のラダー処理、タスク処理が実行される。つまり、図5において、ステップS103の設定から始まり、ラダー処理(ステップS104)、タスク処理(ステップS111)までの一連の上位の処理が新たに実行される。ここでは、この全てが滞りなく処理されて、処理ステップS108に至ったものとする。
なお、上位割り込み発生時及び上位割り込み回復時のラダー処理プロセッサ3の具体的な内部処理については、後で図13を参照して説明する。
この回復状態は、例えば図1の時刻t2から始まったラダー3の停止状態が、時刻t5になりラダー3に対する上位割り込みが解除されたときに相当する。処理ステップS108では、ラダー処理を再開する。
このときマイクロプロセッサ2は、ラダー処理の再実行指示を、ラダー制御レジスタ34に設定する。これを受けてラダー処理プロセッサ3はラダー処理を再開する。このときに、停止時にプログラムカウンタ31に記憶されたラダー命令L3mの格納エリアを示すアドレスが参照され、ここから再実行がされることは言うまでもない。ステップS108での再開準備完了後は、ステップS104に移り、残余のラダー処理を継続する。
なお、ステップS105で、停止が指示されない場合、ラダー命令は図4のラダー終了命令L3nまでラダー処理を実行する。ステップS109において、ラダー終了命令L3nを検出すると、ラダー処理プロセッサ3によるラダー処理は停止し、実行ステータス35にラダー処理終了のステータスを設定して完了する。
ステップS110では、これを受けてラダー処理プロセッサ3は、マイクロプロセッサ2に処理の完了を報告する。
ステップS111でマイクロプロセッサ2は、この優先度のタスクを主メモリ4のタスクプログラム42から導入して、タスク処理を実行する。この場合には、タスク3が実行される。タスク3の実行完了をもって最初に設定された優先度3の割り込みに対するラダーとタスクに関する一連の処理が完了する。
図7は、マルチタスクスケジューリングの優先度に従ったラダー処理のスケジューリングの例を示す。この例は、ラダー処理とタスク処理の直列実行を行う場合である。本説明では優先度の若い数値の方が、優先度が高いものとして説明する。タスク421とラダー441が優先度1、タスク422とラダー442が優先度2、タスク423とラダー443が優先度3に設定されている。このラダー処理とタスク処理の組み合わせは、図6に示すように優先度を持たせ関連付けて動作させる。
そして、より優先度の高いタスクが動作可能状態となったとき、実行中のラダー処理を停止し、優先度の高いタスクと関連付けされたラダー処理を起動する。優先度の高いタスク、ラダー処理の動作が完了した後、割り込まれたラダー処理は中断された番地から継続して処理を実行する。
図7の場合には、時刻t10のタイマー3割り込みによりラダー3処理443の実行が開始される。ラダー3処理443実行中に、時刻t11のタイマー2割り込みにより、より優先度の高いラダー2処理442へ切り替えを行うため、ラダー3処理443を停止し、ラダー2処理442を実行する。
優先度の高いラダー2処理後は、引き続き優先度の高いタスク2処理422を実行する。その途中に、時刻t12のタイマー1割り込みにより、より優先度の高いラダー1処理441へ切り替えを行い、ラダー1処理441、タスク1処理421を行う。時刻t13のタスク1終了後、待ち状態であったタスク2処理422を再開する。時刻t14のタスク2処理422の終了後、待ち状態であったラダー3処理443を再開し、その後、タスク3処理が実行される。
図8のマルチタスクスケジューリングの例では、ラダー処理プロセッサ3におけるラダー処理中に、異常発生を検知してこれをマイクロプロセッサ2に報告したときの処理を示している。図5処理ステップS112から処理ステップS115には、この場合の処理フローが記載されている。
この図8の例では、時刻t20での割り込みによるラダー3の処理443を実行中に、異常発生4431した。このことは、図5の処理ステップS112で検知されラダー処理プロセッサ3がこれを検出して時刻t21においてマイクロプロセッサ2に報告(処理ステップS113)したとする。この場合に、マイクロプロセッサ2は、異常発生となったラダー3の処理443について次周期実行時、スケジューリングから外し実行を行わない(処理ステップS114)事を決定する。なお、この優先度のタスク処理は、今回も次回以降も引き続き実行する。
つまり、マイクロプロセッサ2でのタスク処理423は異常発生側のラダー処理プロセッサ3と独立に実行可能であるので、このタスク処理のみ継続実行する。マイクロプロセッサ2は、割り込み時刻t20から周期T3経過後の割り込み時刻t26の処理では、ラダー処理3をマルチタスクスケジューリングの対象から除外している。
このようにすることで、該当のラダー3処理443のみを停止することが可能となり、他のラダー処理への影響はなくなり、さらに優先度の高いラダー処理(441、442)の定周期性が保障される。
但し、異常を検出した次周期以降の処理については、図9に示すようにラダー3処理443、タスク3処理423を実行することも可能である。この場合には、割り込み周期T3の間にラダー3処理443の健全性が確認されていることが望ましい。
図2、図7、図8、図9は、同一優先度のラダー処理とタスク処理をこの順番で直列に実行する説明図であるが、本発明ではラダー処理プロセッサ3とマイクロプロセッサ2を有し、それぞれが処理を分担しているため、ラダー処理とタスク処理は同時刻に並列で実行することも可能である。
図10では、各優先度において、ラダー処理とタスク処理を並列に実行している。この場合、同じ優先度のラダー処理とタスク処理は割り込みにより同じタイミングで処理開始するが、それぞれの処理時間長は一般には相違する。このため、上位割り込みによりラダー処理側が中断する場合(時刻t31での割り込み)と、タスク処理側が中断する場合(時刻t32での割り込み)とが発生し得る。この場合の中断並びに再開処理は、ラダー処理プロセッサ3とマイクロプロセッサ2で個別に準備され、実行されることになる。
また図11で示すように、基本的にはラダー処理とタスク処理をこの順番で直列に実行しながら、上位割り込みが発生した側の処理のみを遅らせ、あるいは中断させることもできる。図11の例では、基本的にラダー処理とタスク処理は、この順番で直列に実行している。これは、時刻t40、t41、t45、t49の処理から明らかであり、優先度の高い処理が存在しない状態ではこの関係が維持されている。
ラダー3について、優先度の高いラダー2の割り込み(時刻t41)により、時刻t41からt42の期間中断して、その後t43に一連の処理を完了する。図7などの例では、ラダー処理終了に続いてタスク3が開始されるタイミングになるが、図11では優先度の高いタスク2の終了まで開始が遅れている。また開始後も、より上位のタスク1の処理期間(t46−t47)中断する。
また、図7では、タイマー割り込みにより、ラダー処理が実行され、その後タスク処理の実行の順番で実行を行う説明図であるが、この順番に限定する必要はなく、図12に示すように、タイマー割り込みにより、タスク処理が実行され、その後ラダー処理の実行を順番で実行してもよい。
また、図7の説明図において、タイマー割り込みから、複数のラダー処理の実行を行ってもよく、図12の説明図において、1つのタスク処理から、複数のラダー処理の実行を行ってもよい。
図5の処理フローのステップS107の説明において、上位割り込み、さらには上位割り込み解除のときのラダー処理プロセッサ3の設定の説明を後述することにしていた。図13を用いて、優先度の低いラダー3処理から、より優先度の高いラダー2処理への切り替えを行うときの具体的な処理内容について説明する。図13は、基本的に図3と同じ回路部分(ラダー処理プロセッサ3、主メモリ4)を主体に記載しているが、説明の都合上ラダープログラムのみ記述した点と、ワークレジスタ33の内容を記述した点で相違している。
ここでは、ラダー3処理443を実行中、より優先度の高いラダー2処理442が動作可能状態となったとする。マイクロプロセッサ2は、ラダー3処理443のラダー処理を停止するよう、ラダー制御レジスタ34にラダー処理停止の指示を行う。
ラダー処理停止の指示を受けたラダー処理プロセッサ3は、実行中のラダー処理を停止する。停止したときのラダー処理プロセッサ3のプログラムカウンタ31がアドレス404(ラダー命令L3m+1)を指しているとする。
プロセッサ2は、プログラムカウンタ31とワークレジスタ33の内容を管理テーブル番号32が指し示すラダー3管理テーブル453へ退避する。
次に実行すべきラダー2処理442の、管理テーブル番号を管理テーブル番号32へ設定し、ラダー2管理テーブル452からプログラムカウンタ21、ワークレジスタ33を回復し、ラダー2処理を実行する環境を整える。ラダー制御レジスタ34にラダー処理実行の指示を行うことでラダー2処理442を実行する。
ラダー2処理の実行終了後、プロセッサ2は、実行待ちとなっているラダー3処理423の、管理テーブル番号を管理テーブル番号32へ設定し、ラダー3管理テーブル453から退避していたプログラムカウンタ21、ワークレジスタ33を回復し、ラダー3処理を実行する環境を整える。このときプログラムカウンタは退避していたアドレス404を指し、ワークレジスタは演算中のレジスタ値となる。ラダー制御レジスタ34にラダー処理実行の指示を行うことでラダー3処理443をアドレス404から再開する。
図1において、ラダー処理プロセッサ3の処理が命令解読不能により実行不可能状態に陥ったときに、これをマイクロプロセッサ2に報告し、マイクロプロセッサ2がソフト処理することについて説明した。
図14は、ソフト実効命令の検出時の、ソフト実行手順を示す。ラダー処理プロセッサ3は、主メモリ4のラダープログラム44を用いて、優先度3のラダー3を読み込み実行中に、ラダー命令L3mの解読不能により実行不可能状態に陥ったとする。
ラダー処理プロセッサ3は、ソフト実行の命令を検出したときは、アドレス405にてラダー処理を停止し、ラダー命令L3mにこれがソフト実効命令の対象であることと、この時の各種のパラメータを保持する。またマイクロプロセッサ2に対して割り込みを行うか、あるいは実行ステータス35を用いてプロセッサ2に対してソフト実効命令の検出を知らせる。
マイクロプロセッサ2は、ソフト実効命令の連絡を受け、主メモリ4のラダープログラム44のアドレス405からソフト実効命令の読み出し、パラメータの読み出しを行い、プログラムカウンタ31を406(ラダー命令L3m+1)にする。そのうえで、ラダー命令L3mに対するソフト実効命令、パラメータによりソフト処理を行い、ソフト処理が終了した時点で、ラダー制御レジスタ34に起動指示を行い、再びアドレス406(ラダー命令L3m+1)からラダー処理を継続する。
図15は、マイクロプロセッサ2におけるソフト処理を行うときの各部処理内容を示す図である。この図で、横方向にはマイクロプロセッサ2、ラダー処理プロセッサ3、主メモリを示し、縦方向には時間を示している。
この図によれば、マイクロプロセッサ2は時刻t100の割り込みを受けて、ラダー処理プロセッサ3を起動(時刻t101)する。以後ラダー処理プロセッサ3は、メモリ4内のラダー命令を逐次取り込んで処理を進める。この間の処理では、ラダー処理プロセッサ3とメモリ4の間でラダー演算データの入出力を行っている。
これに対し、実行できないラダー命令が生じると、ラダー処理プロセッサ3は時刻t102でマイクロプロセッサ2に対してソフト処理を要求する。マイクロプロセッサ2は、改めてメモリ4にアクセスし、メモリ4の間でラダー演算データの入出力を行ない、ラダー命令のソフト処理を実行する。ラダー命令のソフト処理を完了すると、時刻t03においてソフト処理完了をラダー処理プロセッサ3に通知する。
ラダー処理プロセッサ3は、再度メモリ4内のラダー命令を逐次取り込んで処理を進める。このときに再開するラダー命令は、中断し、マイクロプロセッサ2でソフト処理されたラダー命令の次の順番のラダー命令とされる。このために、再開以後の処理では、再度ラダー処理プロセッサ3とメモリ4の間でラダー演算データの入出力を行っている。
ラダー処理プロセッサ3は、ラダー終了命令までの一連のラダー処理を実行完了した時点t104でラダー処理完了をマイクロプロセッサ2に報告し、以後マイクロプロセッサ2における同じ優先度レベルのタスク処理を実行する。
タスク処理では、マイクロプロセッサ2は、改めてメモリ4にアクセスし、メモリ4の間でタスク処理データの入出力を行ない、タスク命令のソフト処理を実行する。
以上述べたように、本発明ではラダー処理プロセッサ3とマイクロプロセッサ2にタスクとラダーの処理を分散し、かつ優先度に応じて処理するタスクとラダーの組み合わせを変更したことにより、コントローラの同一環境下でマルチタスクスケジューリングが可能である。
1:コントローラ
2:マイクロプロセッサ
3:ラダー処理プロセッサ
4:主メモリ
5:バス
41:管理ソフトウェア
42:タスクプログラム
43:タスク管理テーブル
44:ラダープログラム
45:ラダー管理テーブル

Claims (12)

  1. ラダー処理を実行する第1のプロセッサと、タスク処理を実行する第2のプロセッサと、プログラムとしてラダー処理のための複数のラダープログラムとタスク処理のための複数のタスクプログラムを収納する主メモリを備え、前記複数のラダープログラムと複数のタスクプログラムについて、処理の優先度に応じてラダープログラムとタスクプログラムの組み合わせを定めておき、
    前記第2のプロセッサは、処理の優先度ごとの処理周期での割り込みに応じて、当該優先度でのラダープログラムの実行を前記第1のプロセッサに指示し、
    前記第1のプロセッサは、前記第2のプロセッサの指示に従って主メモリ内のラダープログラムから当該優先度のラダープログラムを得、これに従ってラダー処理を実行し、
    前記第2のプロセッサは、主メモリ内のタスクプログラムから当該優先度のタスクプログラムを得、これに従ってタスク処理を実行し、
    指定された割り込みの優先度ごとの処理周期内に、当該優先度でのタスクプログラムによるタスク処理と、当該優先度でのラダープログラムによるラダー処理を完了するとともに、前記処理の優先度ごとの処理周期は、処理の優先度が上位であるほど短い処理周期とされており、
    前記第2のプロセッサは、前記割り込みの新たな発生を監視して実行中の優先度よりも上位の優先度の第2の割り込みであることを検知し、
    前記第1のプロセッサおよび、または前記第2のプロセッサは、実行中の前記プログラムを用いた処理を中断して、上位の優先度の第2の割り込みで定まるプログラムを用いた処理を実行し、
    前記第1のプロセッサおよび、または前記第2のプロセッサは、前記上位の優先度の第2の割り込みで定まるプログラムを用いた処理の完了後に、第2の割り込み発生前に実行中のプログラムを用いた処理を前記の中断した個所から再開し、
    指定された割り込みの優先度ごとの処理周期内に、当該優先度でのタスクプログラムによるタスク処理と、当該優先度でのラダープログラムによるラダー処理を完了する
    ことを特徴とするコントローラ。
  2. 請求項1に記載のコントローラにおいて、
    前記第1のプロセッサは、ラダー処理の実行中に異常が発生したことを検知して前記第2のプロセッサに報告し、
    前記第2のプロセッサは、当該優先度のタスク処理を実行すると共に、次回割り込み時の当該優先度のラダー処理についての処理の可否を決定する
    ことを特徴とするコントローラ。
  3. 請求項1または請求項2に記載のコントローラにおいて、
    前記主メモリに収納されたラダー処理のためのラダープログラムは、複数の一連のラダー命令で構成され、
    前記第1のプロセッサは、前記ラダー命令に従い当該のラダー処理を実行すると共に、実行できないラダー命令を検出した際には、ラダー処理を一時停止し、
    前記第2のプロセッサは、前記停止したラダー命令を実行し、
    前記第1のプロセッサは、前記第2のプロセッサにおける前記停止したラダー命令の実行後に、ラダー処理を停止したアドレスの次の番地から継続してラダー処理を再開することを特徴とするコントローラ。
  4. 請求項1から請求項3のいずれか1項に記載のコントローラにおいて、
    ラダー処理を行う前記第1のプロセッサは、ソフトウェアを使用して実行されている
    ことを特徴とするコントローラ。
  5. 請求項1から請求項4のいずれか1項に記載のコントローラにおいて、
    割り込みにより指定された同一優先度の前記第1のプロセッサのラダー処理と、前記第2のプロセッサのタスク処理は、その処理周期内で一方の処理が完了後に他方の処理を実行する直列処理とされる
    ことを特徴とするコントローラ。
  6. 請求項1から請求項5のいずれか1項に記載のコントローラにおいて、
    割り込みにより指定された同一優先度の前記第1のプロセッサのラダー処理と、前記第2のプロセッサのタスク処理は、その処理周期内で双方の処理が同時に実行される期間を含む並列処理とされる
    ことを特徴とするコントローラ。
  7. ラダー処理を実行する第1のプロセッサと、タスク処理を実行する第2のプロセッサとを備え、複数のラダー処理と複数のタスク処理について、処理の優先度に応じてラダー処
    理とタスク処理の組み合わせを定めておき、処理の優先度ごとに定められた処理周期での割り込みを行い、
    割り込みに応じて、当該優先度でのラダー処理を前記第1のプロセッサで行い、
    当該優先度でのタスク処理を前記第2のプロセッサで行い、
    割り込みの優先度ごとの処理周期内に、当該優先度でのタスク処理と、当該優先度でのラダー処理を完了するとともに、前記処理の優先度ごとの処理周期は、処理の優先度が上位であるほど短い処理周期とされており、
    処理の優先度ごとの処理周期の期間内に、実行中の優先度よりも上位の優先度の第2の割り込みで発生したときに、
    第1のプロセッサと第2のプロセッサは、第2の割り込みで定まる優先度のラダー処理とタスク処理を実行し、
    前記上位の優先度の第2の割り込みで定まる処理の完了後に、第2の割り込み発生前に実行中の処理を前記中断した個所から再開し、
    指定された割り込みの優先度ごとの処理周期内に、当該優先度でのタスク処理と、当該優先度でのラダー処理を完了する
    ことを特徴とするタスクとラダーの処理方法。
  8. 請求項7に記載のタスクとラダーの処理方法において、
    前記第1のプロセッサが、ラダー処理の実行中に異常が発生したことを検知したとき、
    前記第2のプロセッサは、当該優先度のタスク処理を実行すると共に、次回割り込み時の当該優先度のラダー処理についての処理の可否を決定する
    ことを特徴とするタスクとラダーの処理方法。
  9. 請求項7または請求項8に記載のタスクとラダーの処理方法において、
    前記第1のプロセッサは、一連のラダー命令に従いラダー処理を実行すると共に、実行できないラダー命令を検出した際には、ラダー処理を一時停止し、
    前記第2のプロセッサは、前記停止したラダー命令をソフト処理により実行し、
    前記第1のプロセッサは、ラダー処理を停止したアドレスの次の番地から継続してラダー処理を再開する
    ことを特徴とするタスクとラダーの処理方法。
  10. 請求項7から請求項9のいずれか1項に記載のタスクとラダーの処理方法において、
    ラダー処理を行う前記第1のプロセッサは、ソフトウェアを使用して実行されている
    ことを特徴とするタスクとラダーの処理方法。
  11. 請求項7から請求項10のいずれか1項に記載のタスクとラダーの処理方法において、
    割り込みにより指定された同一優先度の前記第1のプロセッサのラダー処理と、前記第2のプロセッサのタスク処理は、その処理周期内で一方の処理が完了後に他方の処理を実行する直列処理とされる
    ことを特徴とするタスクとラダーの処理方法。
  12. 請求項7から請求項11のいずれか1項に記載のタスクとラダーの処理方法において、
    割り込みにより指定された同一優先度の前記第1のプロセッサのラダー処理と、前記第2のプロセッサのタスク処理は、その処理周期内で双方の処理が同時に実行される期間を含む並列処理とされる
    ことを特徴とするタスクとラダーの処理方法。
JP2011224540A 2011-10-12 2011-10-12 コントローラ、およびタスクとラダーの処理方法 Active JP5771114B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011224540A JP5771114B2 (ja) 2011-10-12 2011-10-12 コントローラ、およびタスクとラダーの処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011224540A JP5771114B2 (ja) 2011-10-12 2011-10-12 コントローラ、およびタスクとラダーの処理方法

Publications (2)

Publication Number Publication Date
JP2013084169A JP2013084169A (ja) 2013-05-09
JP5771114B2 true JP5771114B2 (ja) 2015-08-26

Family

ID=48529288

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011224540A Active JP5771114B2 (ja) 2011-10-12 2011-10-12 コントローラ、およびタスクとラダーの処理方法

Country Status (1)

Country Link
JP (1) JP5771114B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5957423B2 (ja) * 2013-07-11 2016-07-27 株式会社日立製作所 制御コントローラおよびデータ制御方法
JP6484015B2 (ja) * 2014-12-02 2019-03-13 株式会社キーエンス プログラマブル・ロジック・コントローラおよびその制御方法
JP7041041B2 (ja) 2018-10-11 2022-03-23 ファナック株式会社 数値制御装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6349902A (ja) * 1986-08-20 1988-03-02 Hitachi Ltd プログラマブルコントロ−ラの制御方法
JPH02311903A (ja) * 1989-05-29 1990-12-27 Toshiba Corp プログラマブルコントローラ
JPH03237502A (ja) * 1990-02-14 1991-10-23 Yokogawa Electric Corp プログラマブル・コントローラ
JP4349687B2 (ja) * 1999-06-17 2009-10-21 オムロン株式会社 プログラマブル・コントローラ
JP5136770B2 (ja) * 2008-03-13 2013-02-06 オムロン株式会社 産業用コントローラ

Also Published As

Publication number Publication date
JP2013084169A (ja) 2013-05-09

Similar Documents

Publication Publication Date Title
JP5405320B2 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
US9778943B2 (en) Timer based virtual processor scheduling and suspension on physical processor for use of physical processor by other processing
US8782643B2 (en) Device and method for controlling communication between BIOS and BMC
JP2012073748A (ja) 制御装置
JP5771114B2 (ja) コントローラ、およびタスクとラダーの処理方法
JP6469323B1 (ja) コントローラ
JP5834935B2 (ja) 安全制御装置及び安全制御方法
JP2008225807A (ja) 制御装置およびそのプログラム暴走監視方法
JP5053109B2 (ja) 制御装置
JP5906584B2 (ja) 制御装置及び制御方法
JP2011108140A (ja) データ処理装置
JP6731179B2 (ja) 制御演算装置
JP6396084B2 (ja) エンジニアリング装置、エンジニアリングシステム、およびダウンロード処理方法
JP2010102567A (ja) 周期駆動タスク実行装置、周期駆動タスク実行方法及びプログラム
JP2010160713A (ja) フィールド制御装置およびフィールド制御方法
JP2016184315A (ja) 電子制御装置
JP2013097719A (ja) 制御装置および制御方法
JP2008204011A (ja) マルチスレッドシステム、スレッド動作異常検知方法
CN105786598B (zh) 任务调度方法及装置
JP2005107757A (ja) プログラムの暴走検出方法およびプログラムの暴走検出装置
JP7221125B2 (ja) 電子演算装置
JP7338548B2 (ja) リアルタイム演算処理装置
JP5299681B2 (ja) プログラム検査方法
CN110109743B (zh) 一种实时进程调度方法
JP2010165209A (ja) マルチスレッドプロセッサ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141119

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150116

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150626

R150 Certificate of patent (=grant) or registration of utility model

Ref document number: 5771114

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150