JP2016110460A - プログラマブルコントローラ、プログラマブルコントローラの制御方法およびプログラム - Google Patents
プログラマブルコントローラ、プログラマブルコントローラの制御方法およびプログラム Download PDFInfo
- Publication number
- JP2016110460A JP2016110460A JP2014248404A JP2014248404A JP2016110460A JP 2016110460 A JP2016110460 A JP 2016110460A JP 2014248404 A JP2014248404 A JP 2014248404A JP 2014248404 A JP2014248404 A JP 2014248404A JP 2016110460 A JP2016110460 A JP 2016110460A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- unit
- program
- time
- execution
- 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.)
- Pending
Links
Images
Landscapes
- Programmable Controllers (AREA)
Abstract
【課題】割り込み応答時間を測定し、割り込み応答時間の遅延の原因の特定を容易にする。【解決手段】割り込み要因が発生すると、割り込み検出部914はそれを検出して、その時刻を割り込み要因発生時刻912として記憶し、割り込み制御部902に割り込み検出信号を送る。割り込み制御部902は割り込み検出信号を受信すると、処理すべき割り込み要因として登録する。一方、割り込み制御部902は処理すべき割り込み要因があるか判定し、あればそれに応じた割り込みプログラムの実行をメインループ実行部901に支持する。メインループ実行部901は、割り込み要因発生時刻を取得し、その時刻と割り込みプログラムの実行時間その差分を割り込み応答時間として記録する。【選択図】図9
Description
本発明は、プログラマブルコントローラ及びプログラマブルコントローラの試験方法およびプログラムに関する。
特許文献1が示すようにプログラマブル・ロジック・コントローラ(PLC)の基本ユニットには拡張ユニットが接続される。基本ユニットはユーザプログラムを繰り返し実行するため、特定の事象に対応する処理をユーザプログラムの中で実行しようとすると、事象の発生と対応する処理との間には、最大でスキャンタイム程度の遅延を生ずる。そこで、そのような場合には割り込み処理が用いられる。ユーザプログラムの実行中に割り込み要因が発生すると、割り込み要因の発生をトリガとして割り込み要因に応じた割り込みプログラムが実行される。これにより事象の発生から対応する処理までの遅延を短縮することができる。
しかしながら割り込みプログラムが期待通りに動作しない場合、たとえば割り込み要因が生じてから割り込みプログラムの実行が開始されるまでの割り込み応答時間が著しく長い場合には、割り込み処理本来の目的が果たせないおそれがある。そこでその原因を特定し、対処する必要があるが、不具合の原因がたとえば割り込み応答時間の遅延にあるのか、その他のプログラムモジュールにあるのかなどの原因を特定することは困難であった。たとえばPLCにオシロスコープを接続して割り込み応答時間を測定する方法があるが、配線が複雑であり、操作性が悪い。割り込み要因がシリアル通信の受信の場合など、複雑な要因の割り込みについての割り込み応答時間を測定することは困難である。また、割り込み処理の応答時間が遅延していることが分かったとしても、その遅延の原因を特定することもまた困難であった。
本発明は上記従来例に鑑みて成されたもので、割り込み応答時間を容易に測定でき、応答時間の内訳まで特定できるプログラマブルコントローラおよびその制御方法とプログラムを提供することを目的とする。
上記目的を達成するために本発明に係るプログラマブルコントローラは、たとえば、
ユーザプログラムを周期的に実行するプログラム実行部と、
割り込み要求を検出する割り込み要求検出部と、
前記割り込み要求が検出されたとき、前記プログラム実行部に前記ユーザプログラムの実行を中断させて割り込みプログラムを実行させる割り込み制御部と、
前記プログラム実行部による前記割り込みプログラムの実行を禁止する割り込み禁止期間を特定の時間として計測する特定時間計測部と、
前記特定時間計測部により計測された前記特定の時間を記憶する特定時間記憶部と、
を備えることを特徴とする。
ユーザプログラムを周期的に実行するプログラム実行部と、
割り込み要求を検出する割り込み要求検出部と、
前記割り込み要求が検出されたとき、前記プログラム実行部に前記ユーザプログラムの実行を中断させて割り込みプログラムを実行させる割り込み制御部と、
前記プログラム実行部による前記割り込みプログラムの実行を禁止する割り込み禁止期間を特定の時間として計測する特定時間計測部と、
前記特定時間計測部により計測された前記特定の時間を記憶する特定時間記憶部と、
を備えることを特徴とする。
本発明によれば、割り込み応答時間の測定を容易に行うことができ、割り込み応答時間の内訳まで特定でき、割り込み処理の実行遅延の原因の特定をより迅速に行うことができる。
[第1実施形態]
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
はじめにプログラマブル・ロジック・コントローラ(PLC、単にプログラマブルコントローラと呼ばれてもよい)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
図1は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。図1に示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのプログラム作成支援装置1と、工場等に設置される各種制御装置を統括的に制御するためのPLC(プログラマブル・ロジック・コントローラ)2とを備えている。PLC2は、CPUが内蔵された基本ユニット3と1つないし複数の拡張ユニット4を備えている。基本ユニット3に対して1つないし複数の拡張ユニット4が着脱可能となっている。基本ユニット3は基本ユニットと呼ばれることもある。あるいはCPUユニットと呼ぶこともある。
基本ユニット3には、表示部5及び操作部6が備えられている。表示部5には、基本ユニット3に取り付けられている各拡張ユニット4の動作状況などを表示することができ、表示部5の表示内容は、操作部6を操作することにより切り替えることができる。表示部5には、通常、PLC2内のデバイスの現在値(デバイス値)やPLC2内で生じたエラー情報などが表示される。なお、デバイスとは、デバイス値を格納するために設けられたメモリ上の領域を指す名称である。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー(補助リレー)、タイマー、カウンタ、データメモリ等の状態を示す情報である。本実施形態では、表示部5には拡張ユニットの設定やテストのための表示がされ、操作部6でそのための操作が行われる。
拡張ユニット4は、PLC2の機能を拡張するために用意されており、基本ユニット3に対して側方から取り付けられる。1つ目の拡張ユニット4は、基本ユニット3に対して側方から直接的に取り付けられる。2つ目以降の拡張ユニット4は、既に取り付けられている拡張ユニット4に対して、側方から直列的に取り付けられる。たとえば、基本ユニット3の右側面と拡張ユニット4の左側面とが連結面になっている。同様に、1つ目の拡張ユニット4の右側面の形状等は基本ユニット3の右側面とほぼ同じであるため、1つ目の拡張ユニット4の右側面に2つ目の拡張ユニット4の左側面が連結される。このような連結方式は、数珠つなぎ方式とかデイジーチェーン方式と呼ばれてもよい。各連結面にはコネクタが設けられており、通信や電力供給を行うためのバスもコネクタを介して連結される。このようにして、基本ユニット3と複数の拡張ユニット4が直列的に取り付けられると、各拡張ユニット4内に備えられた配線(例:バス)を介して、各拡張ユニット4が基本ユニット3に対して通信可能に接続される。各拡張ユニット4には、その拡張ユニット4の機能に対応する被制御装置16(図4)が接続され、これにより、各被制御装置16が拡張ユニット4を介して基本ユニット3に接続される。被制御装置16には、センサなどの入力装置や、アクチュエータなどの出力装置が含まれる。また被制御装置16はPLCの外部にあることから外部装置と呼ぶこともある。
プログラム作成支援装置1は、たとえば、携帯可能ないわゆるノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部7及び操作部8が備えられている。PLC2を制御するためのユーザプログラムの一例であるラダープログラムは、プログラム作成支援装置1を用いて作成され、その作成されたラダープログラムは、プログラム作成支援装置1内でニモニックコードに変換される。そして、プログラム作成支援装置1を、USB(Universal Serial Bus)などの通信ケーブル9を介してPLC2の基本ユニット3に接続し、ニモニックコードに変換されたラダープログラムをプログラム作成支援装置1から基本ユニット3に送ると、そのラダープログラムが基本ユニット3内でマシンコードに変換され、基本ユニット3に備えられたメモリ内に記憶される。
なお、図1では示していないが、プログラム作成支援装置1の操作部8には、プログラム作成支援装置1に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、プログラム作成支援装置1は、USB以外の他の通信ケーブル9を介して、PLC2の基本ユニット3に対して着脱可能に接続されるような構成であってもよい。
図2は、ラダープログラムの作成時にプログラム作成支援装置1の表示部7に表示されるラダー図17の一例を示す図である。図2に示すように、PLC2を制御するためのラダープログラムは、プログラム作成支援装置1の表示部7にマトリックス状に表示される複数のセル18内に仮想デバイスのシンボル19を適宜配置して、視覚的なリレー回路を表すラダー図17を構築することにより作成される。
ラダー図17には、たとえば、10列×N行(Nは任意の自然数)のセル18が配置されている。そして、各行のセル18内に、図2に示す左側から右側に向かって、時系列的に仮想デバイスのシンボル19を適宜配置することにより、視覚的なリレー回路を作成することができる。作成されるリレー回路は、1行で表される直列的なリレー回路であってもよいし、複数行に並列的に表されたリレー回路を互いに結合することにより作成された、並列的なリレー回路であってもよい。
図2に示すリレー回路は、入力装置からの入力信号に基づいてオン/オフされる3つの仮想デバイス(以下、「入力デバイス」と呼ぶ。)のシンボル19a,19b,19cと、出力装置の動作を制御するためにオン/オフされる仮想デバイス(以下、「出力デバイス」と呼ぶ。)のシンボル19dとが適宜結合されることにより構成されている。
各入力デバイスのシンボル19a,19b,19cの上方に表示されている文字(「R0001」、「R0002」及び「R0003」)は、その入力デバイスのデバイス名(アドレス名)21を表している。各入力デバイスのシンボル19a,19b,19cの下方に表示されている文字(「フラグ1」、「フラグ2」及び「フラグ3」)は、その入力デバイスに対応付けられたデバイスコメント22を表している。出力デバイスのシンボル19dの上方に表示されている文字(「原点復帰」)は、その出力デバイスの機能を表す文字列からなるラベル23である。
図2に示す例では、デバイス名「R0001」及び「R0002」にそれぞれ対応する2つの入力デバイスのシンボル19a,19bが直列的に結合されることにより、AND回路が構成されている。また、これらの2つの入力デバイスのシンボル19a,19bからなるAND回路に対して、デバイス名「R0003」に対応する入力デバイスのシンボル19cが並列的に結合されることにより、OR回路が構成されている。すなわち、このリレー回路では、2つのシンボル19a,19bに対応する入力デバイスがいずれもオンした場合、又は、シンボル19cに対応する入力デバイスがオンした場合にのみ、シンボル19dに対応する出力デバイスがオンされるようになっている。
図3は、図1のプログラム作成支援装置1の電気的構成について説明するためのブロック図である。図3に示すように、プログラム作成支援装置1には、CPU24、表示部7、操作部8、記憶装置25及び通信部26が備えられている。表示部7、操作部8、記憶装置25及び通信部26は、それぞれCPU24に対して電気的に接続されている。記憶装置25は、少なくともRAMを含む構成であり、ラダープログラム記憶部25aと、編集ソフト記憶部25bとを備えている。
ユーザは、編集ソフト記憶部25bに記憶されている編集ソフトをCPU24に実行させて、操作部8を通じてラダープログラムを編集する。ここで、ラダープログラムの編集には、ラダープログラムの作成及び変更が含まれる。編集ソフトを用いて作成されたラダープログラムは、ラダープログラム記憶部25aに記憶される。また、ユーザは、必要に応じてラダープログラム記憶部25aに記憶されているラダープログラムを読み出し、そのラダープログラムを、編集ソフトを用いて変更することができる。通信部26は、通信ケーブル9を介してプログラム作成支援装置1を基本ユニット3に通信可能に接続するためのものである。
図4は、PLC2の電気的構成について説明するためのブロック図である。図4に示すように、基本ユニット3には、CPU10、表示部5、操作部6、記憶装置12及び通信部14が備えられている。表示部5、操作部6、記憶装置12、及び通信部14は、それぞれCPU10に電気的に接続されている。記憶装置12は、RAMやROM、メモリカードなどを含んでもよく、ラダープログラムなどが記憶される。記憶装置12には、プログラム作成支援装置1から入力されたラダープログラムやユーザデータが上書きして記憶される。また、記憶装置12には基本ユニット用の制御プログラムも格納されている。
図5は、本発明の実施の形態に係るプログラマブルコントローラの基本ユニット3でのスキャンタイムの構成を示す模式図である。図5が示すように1つのスキャンは、入出力のリフレッシュを行うためのユニット間通信201、プログラム実行202、END処理204により構成されている。ユニット間通信201で、基本ユニット3は、ラダープログラムを実行して得られた出力データを基本ユニット3内の記憶装置12から外部機器(例:モータ、アクチュエータ)などに送信するとともに、外部機器(例:センサ)で検知されたデータなどを含めた入力データを基本ユニット3内の記憶装置12に取り込む。プログラム実行202で、基本ユニット3は、更新された入力データを用いてプログラムを実行(演算)する。基本ユニット3はプログラムの実行によりデータを演算処理する。なお、END処理とは、プログラム作成支援装置1や基本ユニット3に接続された表示器(図示せず)等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。なお、このスキャンタイムは、必ずしも一定にならず、リフレッシュ期間やプログラム実行期間の長短に応じて変動する。
例えばプログラム実行202の期間に割り込み要因が発生すると、割り込み処理が起動され、実行される。割り込み処理は、システムプログラムの一部である割り込み前処理211と、割り込みプログラム実行212とを含む。割り込みプログラムはラダープログラムとして記述され、PLC2により実行可能な形式に変換され、ユーザプログラムの一部とPLC2に転送される。割り込み処理が終了すると、割り込み発生の次の命令に戻る。割り込み処理において実時間での処理を必要とする場合には、入出力をダイレクト通信で行うことができる。ダイレクト通信を用いると、ユニット間通信を待たずにプログラム実行の中で入出力を行うことができる。なお、本実施形態では、プログラム実行202の期間中に割り込み要因が発生することとしているが、本発明はこれに限られず、例えばユニット間通信201やEND処理203の期間中に割り込み要因が発生することもある。
このように、プログラム作成支援装置1はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをPLC2に転送する。PLC2は、入出力リフレッシュ、ラダープログラムの実行およびEND処理を1サイクル(1スキャン)として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種入力機器(センサ等)からのタイミング信号に基づいて、各種出力機器(モータ等)を制御する。よって、PLC2は汎用のパーソナルコンピュータ(PC)とは全く異なる動きをする。
<連結構造>
図6(A)はPLC2を構成する基本ユニット3、拡張ユニット4およびエンドユニット11が連結される前の状態を示している。この例では、基本ユニット3の右方向に1つ以上の拡張ユニット4が連結される。最も右に位置する拡張ユニット4にはエンドユニット11が連結される。エンドユニット11は、最も右に位置する拡張ユニット4の右側面を保護するものであり、バスの終端機能を備えていてもよい。なお、拡張ユニット4の前面にはダイレクトアクセススイッチ27が設けられてもよい。ダイレクトアクセススイッチ27が操作されると、操作されたことを示す信号が通信バスを介して拡張ユニット4から基本ユニット3に伝達される。基本ユニット3は、この信号を受信することで、拡張ユニット4のダイレクトアクセススイッチ27が操作されたことを認識し、所定の処理(テスト結果の表示など)を実行する。
図6(A)はPLC2を構成する基本ユニット3、拡張ユニット4およびエンドユニット11が連結される前の状態を示している。この例では、基本ユニット3の右方向に1つ以上の拡張ユニット4が連結される。最も右に位置する拡張ユニット4にはエンドユニット11が連結される。エンドユニット11は、最も右に位置する拡張ユニット4の右側面を保護するものであり、バスの終端機能を備えていてもよい。なお、拡張ユニット4の前面にはダイレクトアクセススイッチ27が設けられてもよい。ダイレクトアクセススイッチ27が操作されると、操作されたことを示す信号が通信バスを介して拡張ユニット4から基本ユニット3に伝達される。基本ユニット3は、この信号を受信することで、拡張ユニット4のダイレクトアクセススイッチ27が操作されたことを認識し、所定の処理(テスト結果の表示など)を実行する。
図6(B)はPLC2を構成する基本ユニット3、拡張ユニット4およびエンドユニット11が連結された状態を示している。このPLC2はベースレスのビルディングタイプであるため、ベースを使用せずに、基本ユニット3、拡張ユニット4およびエンドユニット11が連結される。工場において制御盤に設置しやすくするために、PLC2の背面にはDINレールなどの基準レール13が取り付けられるようになっている。なお、基本ユニット3および拡張ユニット4の連結状態を維持するためにロック機構が採用されてもよい。
本実施形態では、基本ユニット3と拡張ユニット4とをつなぐバスとしては、たとえばアドレスとデータ、制御信号を並列に構成したパラレルバスや、アドレスやデータを引数とするコマンド及びレスポンスをパケットとして送受信するシリアルバスなど、種々の構成を採用できる。
<割り込みプログラムを含むラダープログラムの例>
図7は、プログラム作成支援装置1により作成されるラダープログラムの例を示している。ユーザプログラムのうち、メインルーチン701をメインループ実行部901(後述)により実行することが図5のプログラム実行202に相当する。なおラダープログラムはPLC2により実行可能な形式のコードとしてPLC2の基本ユニット3にロードされ、実行されるが、ラダープログラムと実行可能形式のコードとは対応しているため、本例ではPLC2で実行されるユーザプログラムのこともラダープログラムと称することにする。また、割り込みプログラム702はメインルーチン701とは別のルーチンであり、メインループ実行部901により割り込みプログラム702を実行することが図5の割り込みプログラム実行212に相当する。
図7は、プログラム作成支援装置1により作成されるラダープログラムの例を示している。ユーザプログラムのうち、メインルーチン701をメインループ実行部901(後述)により実行することが図5のプログラム実行202に相当する。なおラダープログラムはPLC2により実行可能な形式のコードとしてPLC2の基本ユニット3にロードされ、実行されるが、ラダープログラムと実行可能形式のコードとは対応しているため、本例ではPLC2で実行されるユーザプログラムのこともラダープログラムと称することにする。また、割り込みプログラム702はメインルーチン701とは別のルーチンであり、メインループ実行部901により割り込みプログラム702を実行することが図5の割り込みプログラム実行212に相当する。
図7の例では、メインルーチン701はDI命令すなわち割り込み禁止命令を含み、その後にEI命令すなわち割り込み許可命令を含む。DI命令と、EI命令によって区切られている区間703、704、705には、命令が書かれている。各命令の左端は、実行条件となるデバイスを表す。この場合MR10なるデバイスがオンであれば、DI、EI命令とも実行され、区間704の命令は割り込み禁止状態で実行される。図7の例では、デバイスMR10が常時オンであれば、DI、EIは各スキャンで必ず実行されることになる。
また割り込みプログラム702は、INT命令にオペランドとして記述されたデバイスR000を要因とする割り込みである。INT命令とRETI命令との間の区間706には、命令が書かれている。たとえばデバイスR000の値がOFFからONに変化すると、それをトリガとして割り込みプログラム702が実行される。割り込みプログラム702は、実行中のプログラム(メインルーチンまたは割り込みプログラム)に復帰するためにコンテキストを退避してから実行される。割り込みプログラムは、RETI命令すなわち割り込み復帰命令で終了する。割り込み復帰命令では、退避したコンテキストが復帰され、割り込まれたプログラムの続きから処理が再開される。
<割り込み禁止範囲>
図8は、割り込み禁止時における割り込みプログラム実行を示した模式図である。割り込み禁止範囲の開始は図7に示した割り込み禁止命令DIであり、その終了は割り込み許可命令EIである。期間803、期間804、期間805がメインルーチン(図7の701)を実行する期間である。図8の例は図7と対応しており、割り込み禁止命令と割り込み許可命令の実行によりメインルーチンの期間を分けると、期間803では図7の区間703の命令を実行し、期間804では図7の区間704の命令を実行し、期間805は図7の区間705の命令を実行している。割り込み禁止範囲(割り込み禁止期間とも呼ぶ)で割り込み要因が発生しても割り込み処理は実行されない。割り込み禁止範囲で発生した割り込み要因については、割り込み禁止期間が終了したのちに、期間806の割り込みプログラムが実行される。割り込みプログラムは、図7では区間706に書かれている命令を実行している。
図8は、割り込み禁止時における割り込みプログラム実行を示した模式図である。割り込み禁止範囲の開始は図7に示した割り込み禁止命令DIであり、その終了は割り込み許可命令EIである。期間803、期間804、期間805がメインルーチン(図7の701)を実行する期間である。図8の例は図7と対応しており、割り込み禁止命令と割り込み許可命令の実行によりメインルーチンの期間を分けると、期間803では図7の区間703の命令を実行し、期間804では図7の区間704の命令を実行し、期間805は図7の区間705の命令を実行している。割り込み禁止範囲(割り込み禁止期間とも呼ぶ)で割り込み要因が発生しても割り込み処理は実行されない。割り込み禁止範囲で発生した割り込み要因については、割り込み禁止期間が終了したのちに、期間806の割り込みプログラムが実行される。割り込みプログラムは、図7では区間706に書かれている命令を実行している。
<PLCの構成>
図9に、本実施形態のPLC2の機能ブロック図の一例を示す。基本ユニット3の各機能ブロックは、基本ユニット3のCPU10が、基本ユニット3のハードウェア資源を用いてプログラムを実行することで実現される。拡張ユニット4の各機能ブロックは、拡張ユニット4のCPUが、拡張ユニット4のハードウェア資源を用いてプログラムを実行することで実現される。拡張ユニット4には、接続される被制御装置の種類(例:モータ、アクチュエータ、センサ等)に応じて、I/Oユニット、アナログユニット、位置決めユニット等の種類があるが、図9に示した機能ブロックは、それら拡張ユニットの種類にかかわらず共通したプログラムおよびハードウェア資源を用いて実現される。不図示ではあるが、基本ユニット3は拡張バスを通じて、拡張ユニット4に設けた共有メモリにアクセス可能であり、拡張バスおよび共有メモリを介して基本ユニット3と拡張ユニット4とは通信が可能である。
図9に、本実施形態のPLC2の機能ブロック図の一例を示す。基本ユニット3の各機能ブロックは、基本ユニット3のCPU10が、基本ユニット3のハードウェア資源を用いてプログラムを実行することで実現される。拡張ユニット4の各機能ブロックは、拡張ユニット4のCPUが、拡張ユニット4のハードウェア資源を用いてプログラムを実行することで実現される。拡張ユニット4には、接続される被制御装置の種類(例:モータ、アクチュエータ、センサ等)に応じて、I/Oユニット、アナログユニット、位置決めユニット等の種類があるが、図9に示した機能ブロックは、それら拡張ユニットの種類にかかわらず共通したプログラムおよびハードウェア資源を用いて実現される。不図示ではあるが、基本ユニット3は拡張バスを通じて、拡張ユニット4に設けた共有メモリにアクセス可能であり、拡張バスおよび共有メモリを介して基本ユニット3と拡張ユニット4とは通信が可能である。
図9において、メインループ実行部901は、コアあるいは演算器またはプログラム実行部とよばれることもあり、ユーザプログラムを実行する。実行されるユーザプログラムはプログラムメモリ906に格納される。プログラムメモリ906にはメインルーチンを構成するメインプログラムと、割り込み要因の発生をトリガとして実行される割り込みプログラムとが格納される。これらのプログラムは、図7で説明したラダープログラムをコンピュータにより実行可能な形式にしたコードで構成される。またプログラムの実行により参照されたりあるいは加工されたりするデータは、メモリ905に格納される。メモリ905にはこのほか、測定した割り込み応答時間904も記憶される。また、割り込み要因発生時刻や、割り込み要因ごとに優先度(あるいは優先順位とも呼ぶ)を関連付けて記憶した優先度テーブルも記憶される。さらに、実行開始の指示を受けた割り込み処理が、優先度の高い割り込み処理の終了を待つ期間である割り込み待機時間、割り込み禁止命令から割り込み許可命令までの期間である割り込み禁止時間、割り込みマスクが設定されている期間であるマスク設定時間、割り込み前処理に要する時間である前処理時間等もメモリ905に記憶される。なお優先度テーブルは、たとえばプログラム作成支援装置1により作成され、基本ユニット3にプロジェクトデータの一部としてダウンロードされている。メモリ905はプログラム作成支援装置1からもアクセス可能である。または、少なくとも割り込み応答時間やその成分時間についてアクセス可能である。
割り込み検出部903は、ユーザプログラムが実行されている間に生じた割り込み要因を検出して割り込み制御部902に割り込み検出信号を入力する。また、割り込み制御部902または割り込み検出部903は割り込みを検出した時刻である割り込み要因発生時刻をメモリ905に記録する。複数の割り込み要因が処理されないまま同時に発生していることもあり得ることから、割り込み要因発生時刻は、発生した割り込み要因と対応付けて記録されるのが望ましい。また同じ割り込み要因が複数同時に発生した場合には、例えば、一般的な対応、すなわち後の割り込みを無視するようにしてもよいし、先の割り込みは後の割り込みによりオーバーライドされるようにしてもよい。前者の場合には、最古の割り込み要因発生時刻が記録される。後者の場合には、各割り込み要因ごとに、最新の割り込み要因発生時刻が記録される。あるいはまた、たとえば発生した割り込み要因の各々を処理する必要があるならば、割り込み制御部902または割り込み検出部903は割り込みごとに識別情報を割り当て、識別情報と関連付けて割り込み要因発生時刻をメモリ905に記憶することが望ましい。識別情報は同時に発生している割り込み要因のなかで固有であればよい。例えば、基本ユニット3が割り込み処理を待たせることができる割り込み要因の上限数が16であれば、その上限数の中で固有に識別するために、割り込み要因の発生順に0~15の値を循環的に識別情報とすればよい。したがって割り込み検出信号には、割り込み要因を示す情報(以降では、この情報も割り込み要因と呼ぶ)のほか、割り込みに識別情報が割り当てられていれば、対応する識別情報も含まれる。なお、PLC2内の拡張ユニット4に固有に付与されたユニットIDを識別情報に付加することで、拡張ユニット4の間の識別情報の重複を防止することができる。
割り込み制御部902は、割り込み検出信号が入力されると、割り込み要因に応じた割り込み処理(割り込みプログラム)の実行をスケジュールし、メインループ実行部901に対して割り込みプログラム実行指示を送る。割り込み処理は、割り込み要因の優先度(割り込み優先度)に基づいてスケジュールされる。ひとつの割り込み要因について、後の割り込み要因の発生が無視される場合、或いは、後の割り込み要因の発生が先の割り込み要因の発生をオーバライドする場合には、割り込み要因の競合は互いに異なる割り込み要因間で生じる。したがって割り込み優先度を適宜設定することで割り込み処理の順序を調整できる。割り込み要因とその優先度とを紐づけた優先度テーブルを参照することで特定可能である。割り込み優先度は、たとえば次に処理すべき割り込み要因が複数(すなわち複数種類)ある場合や、割り込み処理の実行中に別の割り込み要因(割り込み検出信号)が発生した場合などに参照され、優先度に従って処理の順序付けが行われる。競合がない場合には発生順に処理すればよい。割り込み制御部902は、次に処理すべき割り込み要因に対応する割り込みプログラム実行指示をメインループ実行部901に入力することで、割り込み処理をメインループ実行部901に実行させる。メインループ実行部901は、割り込みプログラム実行指示に応じて、実行中のプログラムに復帰するための情報(コンテキスト)を退避し、割り込み要因に応じた割り込みプログラムを実行する。時刻管理部907は、現在時刻を保持するたとえばタイマーを有し、時刻の要求に応じて現在時刻を応答する。要求元はメインループ実行部901とは限らず、割り込み制御部902や割り込み検出部903の場合もある。
なお、先に発生した割り込み要因を後で発生した割り込み要因によりオーバーライドしない場合には、たとえば、割り込み検出信号を受信した順序と割り込み要因の優先度とに基づいた順序で、実行すべき割り込み処理に関する情報を待ち行列に登録する。待ち行列は優先度ごとに設けてもよい。そして、待ち行列中の割り込み要因の中から、次に割り込み処理を実行する割り込み要因を決定し、その割り込み処理を実行させる。割り込み制御部902は、メインループ実行部901が実行している現在の割り込み処理の優先順位(たとえば平場/優先度低/優先度中/優先度高の順で高優先度)と、メインループ実行部901における割り込み禁止状態を認識しており、実行しようとする割り込み処理が実行可能であればメインループ実行部901に割り込みプログラム実行指示を出力して、要求されている割込み処理に分岐させる。
拡張ユニット4においては、割り込み検出部914は、割り込み検出部903と同様の機能を有する。ただし割り込み検出信号は、拡張バス上のデータとして割り込み制御部902へと入力される。メモリ911はデータ等を記憶するメモリであり、割り込み要因が発生した時刻である割り込み要因発生時刻912を記憶する。この時刻は、時刻管理部913により保持される現在時刻を割り込み検出部914が割り込み要因の発生時に読み出し、それを記録することで記録される。割り込み検出部914は、割り込み検出に応じて時刻を記録する時刻記録部と、記録した時刻を基本ユニット3に送信する時刻送信部とに分けて考えることができる。このうち時刻送信部は、基本ユニット3に対して主体的に時刻を送信してもよいし、基本ユニット3からの読み出しに応じて時刻を送ってもよい。主体的に送信する場合には、そのタイミングは、たとえば割り込み検出信号を送信するタイミングなどである。なお、時刻管理部907と時刻管理部913との同期は、基本ユニット3と拡張ユニット4との間の同期維持のための通信により維持される。この同期通信のために要する時間は例えば1μ秒程度で極めて微小であり、割り込み応答時間に比して実質的に問題にならない。同期通信は定期的に行われる。
<割り込み応答時間>
図10は割り込み応答時間を説明する模式図である。割り込み応答時間とは、割り込み要因が発生してから、その割り込み要因をトリガとする割り込みプログラムの実行が開始されるまでの遅延時間である。割り込み応答時間はいくつかの成分に分けることができる。割り込み認識時間1001は、割り込み検出部903,914が割り込み要因の発生を検出してから、基本ユニット3の割り込み制御部902に伝達するまでに要する時間である。すなわち、割り込み認識時間1001は、割り込み検出部903,914による内部処理時間と、割り込み制御部902への割り込み検出信号の伝達時間とを含む。例えばそれぞれの割り込み検出部は、割り込み要因を定期的に監視しており、その監視処理や、割り込み検出信号の出力および伝達に起因する遅延が割り込み認識時間1001である。割り込み禁止時間(割り込み禁止期間と同義である)1002は、割り込みが禁止されているために、割り込み処理の実行が待機させられることに起因する遅延である。割り込みが禁止されており、割り込み処理を遅延する処理は割り込み制御部902によって行われるため、割り込み禁止時間は割り込み制御部902において生じる。
図10は割り込み応答時間を説明する模式図である。割り込み応答時間とは、割り込み要因が発生してから、その割り込み要因をトリガとする割り込みプログラムの実行が開始されるまでの遅延時間である。割り込み応答時間はいくつかの成分に分けることができる。割り込み認識時間1001は、割り込み検出部903,914が割り込み要因の発生を検出してから、基本ユニット3の割り込み制御部902に伝達するまでに要する時間である。すなわち、割り込み認識時間1001は、割り込み検出部903,914による内部処理時間と、割り込み制御部902への割り込み検出信号の伝達時間とを含む。例えばそれぞれの割り込み検出部は、割り込み要因を定期的に監視しており、その監視処理や、割り込み検出信号の出力および伝達に起因する遅延が割り込み認識時間1001である。割り込み禁止時間(割り込み禁止期間と同義である)1002は、割り込みが禁止されているために、割り込み処理の実行が待機させられることに起因する遅延である。割り込みが禁止されており、割り込み処理を遅延する処理は割り込み制御部902によって行われるため、割り込み禁止時間は割り込み制御部902において生じる。
割り込み待機時間1003は、先に実行される割り込み処理の終了を待機する時間である。割り込み処理のスケジューリングは割り込み制御部902で行われ、割り込み待機時間1003は割り込み制御部902において生じる。割り込み前処理時間1004は、割り込み処理の本体であるユーザプログラムの実行前にシステムにより実行される前処理に要する時間である。割り込み前処理は演算器すなわちメインループ実行部901により実行され、したがってメインループ実行部901において生じる。
本実施形態のPLC2は、割り込み応答時間を測定するのみならず、割り込み応答時間を構成するこれらの成分についても測定する。
<割り込み要因発生時刻の記録>
図11に、拡張ユニット4の割り込み検出部914による処理手順のフローチャートを示す。割り込み検出部914は、割り込み要因の発生を例えば所定周期で監視する(S1101)。割り込み要因はたとえば、拡張ユニット4に接続された外部機器からの信号や、所定の条件に達したことなどを示す信号、あるいは拡張ユニット4そのものの状態を示す信号など様々であり得る。割り込み処理を必要とするそれらの信号が監視の対象となる。
図11に、拡張ユニット4の割り込み検出部914による処理手順のフローチャートを示す。割り込み検出部914は、割り込み要因の発生を例えば所定周期で監視する(S1101)。割り込み要因はたとえば、拡張ユニット4に接続された外部機器からの信号や、所定の条件に達したことなどを示す信号、あるいは拡張ユニット4そのものの状態を示す信号など様々であり得る。割り込み処理を必要とするそれらの信号が監視の対象となる。
いずれかの割り込み要因が生じると、時刻管理部913から現在時刻を取得し、割り込み要因発生時刻912に取得した時刻を記録する(S1103)。そして基本ユニット3の割り込み制御部902へと割り込み検出信号を送って割り込み要因を伝達する(S1105)。割り込み検出信号には、たとえば割り込み要因ごとに割り当てた値が含まれ、この値により割り込み要因を特定できる。ステップS1105の後はステップS1101へと戻り、割り込み要因の発生の監視が続行される。
以上の手順により、割り込み要因の発生時刻を記録し、また基本ユニット3へと割り込み要因を伝達する。なお、基本ユニット3にも割り込み検出部903が備えられており、その基本的な動作は割り込み検出部914と同様で図11に示したとおりである。ただし、割り込み検出部903は、現在時刻を時刻管理部907から取得することと、割り込み要因発生時刻をメモリ905に記憶することとにおいて、割り込み検出部914と相違する。
<割り込み実行の制御>
図12は、割り込み制御部902により割り込み処理の実行をスケジュールする手順の一例である。割り込み制御部902はまず割り込みプログラムの実行を要求されているかを判定する(S1201)。ステップS1201では、未処理の割り込み要因があれば、割り込みプログラムの実行は要求されており、なければ要求されていないものと判定する。
図12は、割り込み制御部902により割り込み処理の実行をスケジュールする手順の一例である。割り込み制御部902はまず割り込みプログラムの実行を要求されているかを判定する(S1201)。ステップS1201では、未処理の割り込み要因があれば、割り込みプログラムの実行は要求されており、なければ要求されていないものと判定する。
実行を要求されている割り込みプログラムがあれば、その中から実行すべき割り込みを決定する(S1203)。この決定は、割り込み要因の優先度に基づく。未処理の割り込みは優先度の順に実行される。割り込み要因ごとの優先度は優先度テーブルから知ることができる。このようにして次に実行する割り込みを決定する。次に決定した割り込み処理をメインループ実行部901が実行できるか否かを判定する(S1205)ステップS1205では、メインループ実行部901が割り込み禁止命令等により生じる割り込み禁止状態にある場合、または、次に実行する割り込み処理よりも高優先度の割り込み処理が既に実行されている場合には、割り込み可能状態ではないと判定する。割り込み許可状態、かつ、高優先度の割り込み処理が実行中でない状態であれば、実行可能であると判定して、割り込みプログラム実行指示をメインループ実行部901に送信して、当該割り込みの割り込みプログラムを実行させる(S1207)。割り込み制御部902はこの手順を繰り返し実行し、実行すべき割り込みがあればそれを順次実行させる。
以上の手順により割り込み制御部902は、割り込みの発生した順序や優先度に応じた順序で、割り込みプログラムの実行をメインループ実行部901に指示することができる。また、割り込み禁止状態の場合には、割り込み実行を待機させることができる。
<割り込み待機時間の測定>
前述のとおり、実行指示を受けた割り込みの優先度よりも高い優先度の割り込みを実行中の場合、割り込み制御部902は実行指示を受けた割り込みプログラムの実行を、実行中の割り込みプログラムが完了するまで待機させる。その場合には、実行中の高優先度の割り込み処理により実行を待たされた割り込み処理に関連づけて、待機の開始時刻と、実行中の高優先度の割り込みプログラムの完了時刻との差分を、優先度の高い割り込み処理を待機する割り込み待機時間として測定する。測定した割り込み待機時間は、割り込み要因ごとに、あるいは割り込みの識別情報ごとにメモリ905に記録する。
前述のとおり、実行指示を受けた割り込みの優先度よりも高い優先度の割り込みを実行中の場合、割り込み制御部902は実行指示を受けた割り込みプログラムの実行を、実行中の割り込みプログラムが完了するまで待機させる。その場合には、実行中の高優先度の割り込み処理により実行を待たされた割り込み処理に関連づけて、待機の開始時刻と、実行中の高優先度の割り込みプログラムの完了時刻との差分を、優先度の高い割り込み処理を待機する割り込み待機時間として測定する。測定した割り込み待機時間は、割り込み要因ごとに、あるいは割り込みの識別情報ごとにメモリ905に記録する。
<割り込みプログラムの実行と割り込み応答時間及び前処理時間の測定>
図13に割り込み制御部902から割り込み実行指示を受けたメインループ実行部901による処理手順の一例を示す。メインループ実行部901はまず、割り込みプログラムの実行前処理を行う(S1301)。このときメインループ実行部901は、前処理の開始時刻と終了時刻との差を、前処理時間としてメモリ905に記憶する。次に割り込み処理プログラムの本体を実行する。その際にまず、これから実行する割り込み処理の割り込み要因の発生時刻を、基本ユニット3のメモリ905に記憶した割り込み要因発生時刻または拡張ユニット4のメモリ911に記憶した割り込み要因発生時刻912から取得する。そして取得した割り込み要因発生時刻から現在時刻までの差分を、割り込み応答時間としてメモリ905の割り込み応答時間904に記録する(S1303)。そして、割り込みプログラムの実行を開始する。割り込み要因に識別情報が付されて区別されている場合には、その識別情報に対応した割り込み要因発生時刻が取得され、割り込み応答時間904も識別情報に関連づけて識別可能に記録される。この手順により、割り込み要因の発生から割り込みプログラム実行開始までの割り込み応答時間が測定される。
図13に割り込み制御部902から割り込み実行指示を受けたメインループ実行部901による処理手順の一例を示す。メインループ実行部901はまず、割り込みプログラムの実行前処理を行う(S1301)。このときメインループ実行部901は、前処理の開始時刻と終了時刻との差を、前処理時間としてメモリ905に記憶する。次に割り込み処理プログラムの本体を実行する。その際にまず、これから実行する割り込み処理の割り込み要因の発生時刻を、基本ユニット3のメモリ905に記憶した割り込み要因発生時刻または拡張ユニット4のメモリ911に記憶した割り込み要因発生時刻912から取得する。そして取得した割り込み要因発生時刻から現在時刻までの差分を、割り込み応答時間としてメモリ905の割り込み応答時間904に記録する(S1303)。そして、割り込みプログラムの実行を開始する。割り込み要因に識別情報が付されて区別されている場合には、その識別情報に対応した割り込み要因発生時刻が取得され、割り込み応答時間904も識別情報に関連づけて識別可能に記録される。この手順により、割り込み要因の発生から割り込みプログラム実行開始までの割り込み応答時間が測定される。
なお、割り込み応答時間、割り込み待機時間とも最大値のみを記録してもよい。また、割り込み要因ごとの最大値を記録してもよい。この場合には、新たに測定した割り込み応答時間、割り込み待機時間それぞれが、記録された割り込み応答時間、割り込み待機時間それぞれの最大値によりも大きい場合に限って、それらの値の新たに求められた値でそれぞれ更新する。
<割り込み禁止および割り込み許可>
図14に割り込み禁止命令及び割り込み許可命令をメインループ実行部901により実行する際の処理手順の一例を示す。図14(A)は割り込み禁止命令(DI)の実行時の処理の例である。割り込み禁止命令を実行すると、まず割り込みを禁止し(S1401)、次に現在時刻を時刻管理部907から取得して割り込み禁止時刻を記録する(S1403)。なお割り込みの禁止は、たとえば所定の割り込み許可/禁止状態を、禁止状態に設定することで行われる。この場合、図12のステップS1205ではその割り込み許可/禁止状態を参照して判断を行うことができる。
図14に割り込み禁止命令及び割り込み許可命令をメインループ実行部901により実行する際の処理手順の一例を示す。図14(A)は割り込み禁止命令(DI)の実行時の処理の例である。割り込み禁止命令を実行すると、まず割り込みを禁止し(S1401)、次に現在時刻を時刻管理部907から取得して割り込み禁止時刻を記録する(S1403)。なお割り込みの禁止は、たとえば所定の割り込み許可/禁止状態を、禁止状態に設定することで行われる。この場合、図12のステップS1205ではその割り込み許可/禁止状態を参照して判断を行うことができる。
図14(B)は、割り込み許可命令(EI)の実行時の処理である。メインループ実行部901が割り込み許可命令を実行すると、まず現在時刻を取得してステップS1403で記録された割り込み禁止時刻との差分をとって割り込み禁止時間を計算する(S1411)。そして、計算した割り込み禁止時間をメモリ905に記録する(S1413)。またあわせて、現在実行中の割り込み許可命令のプログラムカウンタの値、すなわちアドレスを取得してこれもメモリ905に記録する(S1415)。最後に割り込みを許可する(S1417)。すなわち割り込み許可/禁止状態を割り込み許可状態に設定する。
なお、ラダープログラムは、プログラム作成支援装置1で作成された際には、各命令について固有の行番号が割り当てられている。そのラダープログラムをPLC2で実行可能な形式としたプログラムはラダープログラムと対応することから、実行中の命令のアドレスは、ラダープログラムの行番号に変換することができる。ラダープログラムからその実行形式への変換はプログラム作成支援装置1で行われ、命令のアドレスからラダープログラムの行番号への変換もまた、プログラム作成支援装置1により行うことができる。
以上の手順により、割り込み禁止命令および割り込み許可命令により生じる割り込み禁止時間を計算し、記録することができる。
<割り込みマスク>
割り込み禁止と似た概念として割り込みマスクがある。割り込み禁止または許可では、優先度や割り込み要因などにかかわらず割り込みが禁止または許可されるのに対して、割り込みマスクは、特定の割り込み要因や割り込み優先度などを指定して割り込みを禁止する機能である。したがって、たとえば割り込みマスクの設定は、割り込み要因又は割り込み優先度などを指定した割り込み禁止命令に相当する。割り込みマスクの解除についても同様に、割り込み要因又は割り込み優先度などを指定した割り込み許可命令に相当する。すなわち、割り込みマスクの設定命令では、指定した割り込み要因又は割り込み優先度などについて、図14(A)を実行し、割り込みマスクの解除命令では、指定した割り込み要因又は割り込み優先度などについて、図14(B)を実行する。この場合、ステップS1413で記録される割り込み禁止時間は、指定された割り込み要因または割り込み優先度などに関する割り込みマスク時間に相当し、指定された割り込み要因または割り込み優先度などに関連づけてメモリ905に記録される。またステップS1415で記録されるプログラムカウンタは、割り込みマスクの解除命令のアドレスとなる。このようにして、割り込み禁止時間と同様に、割り込みマスク時間を記録することができる。
割り込み禁止と似た概念として割り込みマスクがある。割り込み禁止または許可では、優先度や割り込み要因などにかかわらず割り込みが禁止または許可されるのに対して、割り込みマスクは、特定の割り込み要因や割り込み優先度などを指定して割り込みを禁止する機能である。したがって、たとえば割り込みマスクの設定は、割り込み要因又は割り込み優先度などを指定した割り込み禁止命令に相当する。割り込みマスクの解除についても同様に、割り込み要因又は割り込み優先度などを指定した割り込み許可命令に相当する。すなわち、割り込みマスクの設定命令では、指定した割り込み要因又は割り込み優先度などについて、図14(A)を実行し、割り込みマスクの解除命令では、指定した割り込み要因又は割り込み優先度などについて、図14(B)を実行する。この場合、ステップS1413で記録される割り込み禁止時間は、指定された割り込み要因または割り込み優先度などに関する割り込みマスク時間に相当し、指定された割り込み要因または割り込み優先度などに関連づけてメモリ905に記録される。またステップS1415で記録されるプログラムカウンタは、割り込みマスクの解除命令のアドレスとなる。このようにして、割り込み禁止時間と同様に、割り込みマスク時間を記録することができる。
<測定値の読み出し及び消去>
基本ユニット3に接続されたプログラム作成支援装置1等のモニタツールにより、メモリ905に記憶された、割り込み応答時間や割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間といった特定の時間をメモリ905から読み出したり、あるいは消去したりすることができる。そのために、プログラムメモリ906には、モニタツールからの指示に応じて上記特定の時間をモニタツールに送信したり、あるいは消去(あるいは初期化)したりするためのプログラムが格納され、実行される。
基本ユニット3に接続されたプログラム作成支援装置1等のモニタツールにより、メモリ905に記憶された、割り込み応答時間や割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間といった特定の時間をメモリ905から読み出したり、あるいは消去したりすることができる。そのために、プログラムメモリ906には、モニタツールからの指示に応じて上記特定の時間をモニタツールに送信したり、あるいは消去(あるいは初期化)したりするためのプログラムが格納され、実行される。
また、基本ユニット3の操作部6におけるオペレータによる操作に応じて、メモリ905に格納した、割り込み応答時間や割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間といった割り込み関連時間(特定の時間)を、メモリ905から読み出して表示部5に表示することもできる。これら測定した時間の初期化も操作部6における操作により行うことができる。
<本実施形態まとめ>
以上説明したように、本実施形態の基本ユニット3では、基本ユニット3または拡張ユニット4により記録された、割り込み要因の発生時刻とその割り込み要因に対応して割り込みプログラムの実行開始の時刻とから、割り込み応答時間を特定することができる。
以上説明したように、本実施形態の基本ユニット3では、基本ユニット3または拡張ユニット4により記録された、割り込み要因の発生時刻とその割り込み要因に対応して割り込みプログラムの実行開始の時刻とから、割り込み応答時間を特定することができる。
さらに、割り込み禁止命令と割り込み許可命令とが実行された時刻の差分から、割り込み応答時間を構成する要素である割り込み禁止時間を特定することができる。PLCの割り込み処理では、割り込み応答時間の最大値を一定以内に抑えることが重要である。割り込み禁止時間の最大値は、割り込み応答時間の最大値に影響する大きな要素であり、本実施形態に係る発明では、その測定を実現し、割り込み応答時間の制御、ひいては応答性の向上に貢献する。
さらに、割り込みプログラムの実行時に、優先度の高い割り込みプログラムが実行されていればその完了を待つ時間を測定することで、割り込み待機時間を特定することができる。さらに、割り込み前処理に要した前処理時間を特定することができる。さらに、割り込み要因ごと又は優先度ごとの割り込みマスクが設定された時間を、割り込みマスクの設定命令と解除命令の時刻の差分から、マスクされた割り込みごとに特定することができる。
さらに、割り込みプログラムの実行時に、優先度の高い割り込みプログラムが実行されていればその完了を待つ時間を測定することで、割り込み待機時間を特定することができる。さらに、割り込み前処理に要した前処理時間を特定することができる。さらに、割り込み要因ごと又は優先度ごとの割り込みマスクが設定された時間を、割り込みマスクの設定命令と解除命令の時刻の差分から、マスクされた割り込みごとに特定することができる。
上記実施形態の説明においては、割り込み応答時間や、割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間は、いずれもメインループ実行部901による処理の中で測定され、記録されている。しかしながら、時間の測定および記録を、図13や図14(B)に示したように、プログラム実行開始の処理や、割り込み許可命令の処理のなかで直接的に行わず、独立した機能モジュール(ソフトウェアモジュール)である特定時間計測部を呼び出して、特定時間計測部により計測を行わせることもできる。この場合には、プログラム実行部であるメインループ実行部と特定時間計測部とは論理的には別のブロックである。また計測される特定時間は、割り込み応答時間や、割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間等のそれぞれのいずれかを示す。このようにして計測した特定の時間を記憶するメモリ905は、測定された特定の時間を記憶する特定時間記憶部と呼ぶことができる。
なおPLC2は、例えばそのメモリ905に、ユーザプログラムに記述されるデバイスが割り付けられたデバイス領域を有している(このデバイス領域を含む記メモリをデバイス記憶部とも呼ぶ)。デバイス領域には、図1を参照して説明したように、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー(補助リレー)、タイマー、カウンタ、データメモリ等の状態を示す情報であるデバイス値が記憶される。そして、上記実施例で測定された割り込み応答時間や、割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間等は、そのデバイス領域に記憶される。これにより、ユーザプログラムが"特定の時間"すなわち測定された割り込み応答時間や、割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間等にアクセスしてその値を使用することができる。例えば、時間と関連付けて"特定の時間"を記録媒体に書き込んだり、外部モニタ(表示器等)に"特定の時間"を出力したりすることができる。
[変形例]
なお上記実施形態では、拡張ユニット4で生じた割り込み要因については、その割り込み要因発生時刻は拡張ユニット4のメモリ911に記録されるものとした。割り込み要因発生時刻912は基本ユニット3から読み取られて使用されることから、拡張ユニット4のメモリ911に代えて、基本ユニット3のメモリ905に、拡張ユニット4で生じた割り込み要因の割り込み要因発生時刻を記録するよう構成してもよい。この場合、割り込み検出部914は、割り込み検出信号により割り込み要因を基本ユニット3の割り込み制御部902に送信する。割り込み検出部914から割り込み検出信号を受信した割り込み制御部902は、時刻管理部907から現在時刻を取得し、割り込み要因発生時刻としてメモリ905に記録しておく。このように構成しても、上記実施形態と同様に、割り込み応答時間を測定することができる。この構成では、割り込み要因発生時刻の記録のために時刻管理部913を拡張ユニット4に設ける必要がない。
なお上記実施形態では、拡張ユニット4で生じた割り込み要因については、その割り込み要因発生時刻は拡張ユニット4のメモリ911に記録されるものとした。割り込み要因発生時刻912は基本ユニット3から読み取られて使用されることから、拡張ユニット4のメモリ911に代えて、基本ユニット3のメモリ905に、拡張ユニット4で生じた割り込み要因の割り込み要因発生時刻を記録するよう構成してもよい。この場合、割り込み検出部914は、割り込み検出信号により割り込み要因を基本ユニット3の割り込み制御部902に送信する。割り込み検出部914から割り込み検出信号を受信した割り込み制御部902は、時刻管理部907から現在時刻を取得し、割り込み要因発生時刻としてメモリ905に記録しておく。このように構成しても、上記実施形態と同様に、割り込み応答時間を測定することができる。この構成では、割り込み要因発生時刻の記録のために時刻管理部913を拡張ユニット4に設ける必要がない。
また、図14(B)のステップS1415では、割り込み許可のプログラム上の場所を記録しているが、場所に代えて、または場所に加えて、その時の時刻を取得し、割り込み禁止時間と関連付けて記録してもよい。このようにすることで、場所に代えて、または場所に加えて、割り込み禁止を解除した時刻を特定することができる。
[第2実施形態]
割り込み禁止時間は、その最大値を測定できれば、割り込み応答時間の遅延の原因の解析に役立つ場合がある。また、最大値のみを記録するように構成すれば、割り込み禁止時間の記憶のために必要な記憶容量も抑制できる。そこで本実施形態では、割り込み禁止時間に関しては最大値を記録する。なお本実施形態では、上記実施形態と、その図14(B)を図15に置換した点において相違しており、他の構成や処理手順は共通であることから、共通の点についての説明は省略する。
割り込み禁止時間は、その最大値を測定できれば、割り込み応答時間の遅延の原因の解析に役立つ場合がある。また、最大値のみを記録するように構成すれば、割り込み禁止時間の記憶のために必要な記憶容量も抑制できる。そこで本実施形態では、割り込み禁止時間に関しては最大値を記録する。なお本実施形態では、上記実施形態と、その図14(B)を図15に置換した点において相違しており、他の構成や処理手順は共通であることから、共通の点についての説明は省略する。
図15は、本実施形態による割り込み許可命令(EI)の実行時の処理である。メインループ実行部901が割り込み許可命令を実行すると、まず現在時刻を取得してステップS1403で記録された割り込み禁止時刻との差分をとって割り込み禁止時間を計算する(S1501)。そして、計算した割り込み禁止時間をメモリ905に記録する(S1503)。
次にメモリ905に記憶した割り込み禁止時間最大値と、ステップS1503で記録した今回の割り込み禁止時間とを比較する(S1505)。なお割り込み禁止時間最大値は、初期的にはたとえば0以下の値である。ステップS1505の判定で今回の割り込み禁止時間の方が大きいと判定された場合には、今回の割り込み禁止時間を新たな割り込み禁止時間最大値として記録する(S1507)。またあわせて、現在実行中の割り込み許可命令のプログラムカウンタの値、すなわちアドレスを取得してこれもメモリ905に記録する(S1509)。最後に割り込みを許可する(S1511)。すなわち割り込み許可/禁止状態を割り込み許可状態に設定する。ステップS1503で記録した今回の割り込み禁止時間は、割り込み許可命令の実行後は不要なので、図15の手順を実行するごとに同じ記憶領域を使用することができる。
以上の手順により、割り込み禁止命令および割り込み許可命令により生じる割り込み禁止時間を計算し、そのうちの最大値を記録することができる。
なお上記変形例および本実施形態に関しても、第1の実施形態のまとめに記載した事項は適用される。
Claims (11)
- ユーザプログラムを周期的に実行するプログラム実行部と、
割り込み要求を検出する割り込み要求検出部と、
前記割り込み要求が検出されたとき、前記プログラム実行部に前記ユーザプログラムの実行を中断させて割り込みプログラムを実行させる割り込み制御部と、
前記プログラム実行部による前記割り込みプログラムの実行を禁止する割り込み禁止期間を特定の時間として計測する特定時間計測部と、
前記特定時間計測部により計測された前記特定の時間を記憶する特定時間記憶部と、
を備えることを特徴とするプログラマブルコントローラ。 - 前記特定の時間は、前記割り込み要求が検出されてから前記割り込みプログラムが実行されるまでの割り込み応答時間を更に含むことを特徴とする請求項1に記載のプログラマブルコントローラ。
- 前記特定時間記憶部はさらに、前記割り込み禁止期間又は前記割り込み応答時間の最大値を記憶することを特徴とする請求項1又は2に記載のプログラマブルコントローラ。
- 前記プログラム制御部は、先の割り込みプログラムの実行中は、該先の割り込みプログラムよりも優先度が低い後の割り込みプログラムの実行を待機させ、前記先の割り込みプログラムの終了後に、前記後のプログラムを実行し、
前記特定時間計測部は、前記後の割り込みプログラムに係る特定の時間として、少なくとも前記前の割り込みプログラムを待機した待機時間を計測することを特徴とする請求項1乃至3のいずれか一項に記載のプログラマブルコントローラ。 - 前記プログラマブルコントローラは、基本ユニットと、該基本ユニットと外部装置とに接続された拡張ユニットとを含み、
前記割り込み要求検出部は、前記基本ユニットにおいて割り込み要求を検出する第1の割り込み要求検出部と、前記拡張ユニットにおいて割り込み要求を検出する第2の割り込み要求検出部とを含むことを特徴とする請求項1乃至4のいずれか一項に記載のプログラマブルコントローラ。 - 前記プログラマブルコントローラは、前記ユーザプログラムに記述されるデバイスが割り付けられたデバイス領域を有するデバイス記憶部を備え、
前記特定時間記憶部は、前記特定の時間を前記デバイス領域に記憶することを特徴とする請求項1乃至5のいずれか一項に記載のプログラマブルコントローラ。 - 前記基本ユニットと前記拡張ユニットはそれぞれタイマーを有し、
前記拡張ユニットは、前記第2の割り込み要求検出部にて検出した割り込み要求の時刻をタイマーに基づいて記録する時刻記録部と、記録された前記割り込み要求の時刻を前記基本ユニットに送る時刻送信部とを有し、
前記プログラム実行部と前記特定時間計測部とは前記基本ユニットに設けられ、前記時刻送信部から送信された時刻と前記割り込みプログラムが実行される時刻とに基づいて、前記特定の時間として割り込み応答時間を計測することを特徴とする請求項6に記載のプログラマブルコントローラ。 - 前記基本ユニットは、前記拡張ユニットに対して、前記タイマーを同期させるための同期命令を送信し、前記基本ユニットと前記拡張ユニットのタイマーを同期させることを特徴とする請求項7に記載のプログラマブルコントローラ。
- 前記割り込み制御部は、前記ユーザプログラムに前記割り込み禁止期間を規定する割り込み禁止命令及び割り込み許可命令が記述されている場合に、少なくとも前記割り込み禁止期間では前記プログラム実行部により割り込みプログラムを実行させないことを特徴とする請求項1乃至8のいずれか一項に記載のプログラマブルコントローラ。
- ユーザプログラムを周期的に実行するプログラム実行部を有するプログラマブルコントローラの制御方法であって、
割り込み要求を検出する割り込み要求検出工程と、
前記割り込み要求が検出されたとき、前記プログラム実行部に前記ユーザプログラムの実行を中断させて割り込みプログラムを実行させる割り込み制御工程と、
前記プログラム実行部による前記割り込みプログラムの実行を禁止する割り込み禁止期間を特定の時間として計測する特定時間計測工程と、
前記特定時間計測工程により計測された前記特定の時間を記憶する特定時間記憶工程と、
を有することを特徴とすることを特徴とするプログラマブルコントローラの制御方法。 - ユーザプログラムを周期的に実行するプログラム実行部を有するプログラマブルコントローラにより、
割り込み要求を検出する割り込み要求検出工程と、
前記割り込み要求が検出されたとき、前記プログラム実行部に前記ユーザプログラムの実行を中断させて割り込みプログラムを実行させる割り込み制御工程と、
前記プログラム実行部による前記割り込みプログラムの実行を禁止する割り込み禁止期間を特定の時間として計測する特定時間計測工程と、
前記特定時間計測工程により計測された前記特定の時間を記憶する特定時間記憶工程と、
を実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014248404A JP2016110460A (ja) | 2014-12-08 | 2014-12-08 | プログラマブルコントローラ、プログラマブルコントローラの制御方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014248404A JP2016110460A (ja) | 2014-12-08 | 2014-12-08 | プログラマブルコントローラ、プログラマブルコントローラの制御方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016110460A true JP2016110460A (ja) | 2016-06-20 |
Family
ID=56124416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014248404A Pending JP2016110460A (ja) | 2014-12-08 | 2014-12-08 | プログラマブルコントローラ、プログラマブルコントローラの制御方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016110460A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022202391A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | I/oユニット、および通信システム |
WO2022202390A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | マスターユニット |
WO2022202392A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | 電子機器 |
WO2022202386A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | I/oユニット |
WO2022202387A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | I/oユニット |
WO2022202389A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | マスターユニット、および通信システム |
WO2022202388A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | I/oユニット、マスターユニットおよび通信システム |
JP7501515B2 (ja) | 2021-12-21 | 2024-06-18 | カシオ計算機株式会社 | 電子装置、電子装置の制御方法及び電子装置の制御プログラム |
-
2014
- 2014-12-08 JP JP2014248404A patent/JP2016110460A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022202391A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | I/oユニット、および通信システム |
WO2022202390A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | マスターユニット |
WO2022202392A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | 電子機器 |
WO2022202386A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | I/oユニット |
WO2022202387A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | I/oユニット |
WO2022202389A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | マスターユニット、および通信システム |
WO2022202388A1 (ja) | 2021-03-24 | 2022-09-29 | ファナック株式会社 | I/oユニット、マスターユニットおよび通信システム |
JP7152632B1 (ja) * | 2021-03-24 | 2022-10-12 | ファナック株式会社 | マスターユニット、および通信システム |
JP7152631B1 (ja) * | 2021-03-24 | 2022-10-12 | ファナック株式会社 | マスターユニット |
JP7501515B2 (ja) | 2021-12-21 | 2024-06-18 | カシオ計算機株式会社 | 電子装置、電子装置の制御方法及び電子装置の制御プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2016110460A (ja) | プログラマブルコントローラ、プログラマブルコントローラの制御方法およびプログラム | |
JP6171386B2 (ja) | コントローラ、情報処理装置およびプログラム | |
WO2015136959A1 (ja) | 制御システム、方法、プログラムおよび情報処理装置 | |
US9984244B2 (en) | Controller, information processing apparatus, and recording medium | |
EP3336627A1 (en) | Support device, method, and recording medium whereon support program is stored | |
US9317397B2 (en) | Programmable logic controller (PLC) simulation system, PLC simulator, recording medium, and simulation method | |
JP2016110458A (ja) | プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム | |
US11487258B2 (en) | Controller and control management system | |
JP6470955B2 (ja) | プログラマブルコントローラ及びプログラマブルコントローラの拡張ユニット | |
EP2733613B1 (en) | Controller and program | |
JP2020061055A (ja) | 制御システム、制御装置および制御方法 | |
EP3702852A1 (en) | Control device, control method for control device, information processing program, and recording medium | |
EP2933706B1 (en) | Information processing device and program | |
JP2006268476A (ja) | 熱処理設備システム | |
JP5429395B2 (ja) | 情報処理装置、情報処理プログラム、および情報処理方法 | |
JP2016110220A (ja) | プログラマブル・ロジック・コントローラおよびその制御方法 | |
CN111143141B (zh) | 一种状态机设置方法及系统 | |
KR20190080684A (ko) | 멀티코어 프로세서 기반의 plc 및 hmi 통합 시스템 | |
JP2012208932A (ja) | Plcシステム、状態表示方法、plc、およびプログラマブル表示器 | |
JP2017079005A (ja) | プログラマブル・ロジック・コントローラ、制御方法、cpuユニットおよび拡張ユニット | |
JP6207213B2 (ja) | 情報処理装置 | |
EP2555121B1 (en) | Communication control device, information processing apparatus, and path selecting method | |
KR101323833B1 (ko) | 스케줄링 장치 및 방법 | |
JP2009223861A (ja) | 論理検証システム | |
JPWO2020079720A1 (ja) | プログラマブルロジックコントローラ、外部機器、方法、及びプログラム |