(57)【要約】【課題】割り込み応答時間を測定し、割り込み応答時間の遅延の原因の特定を容易にする。【解決手段】割り込み要因が発生すると、割り込み検出部９１４はそれを検出して、その時刻を割り込み要因発生時刻９１２として記憶し、割り込み制御部９０２に割り込み検出信号を送る。割り込み制御部９０２は割り込み検出信号を受信すると、処理すべき割り込み要因として登録する。一方、割り込み制御部９０２は処理すべき割り込み要因があるか判定し、あればそれに応じた割り込みプログラムの実行をメインループ実行部９０１に支持する。メインループ実行部９０１は、割り込み要因発生時刻を取得し、その時刻と割り込みプログラムの実行時間その差分を割り込み応答時間として記録する。【選択図】図９
2016110460.tif 000002
【特許請求の範囲】
【請求項１】
ユーザプログラムを周期的に実行するプログラム実行部と、
割り込み要求を検出する割り込み要求検出部と、
前記割り込み要求が検出されたとき、前記プログラム実行部に前記ユーザプログラムの実行を中断させて割り込みプログラムを実行させる割り込み制御部と、
前記プログラム実行部による前記割り込みプログラムの実行を禁止する割り込み禁止期間を特定の時間として計測する特定時間計測部と、
前記特定時間計測部により計測された前記特定の時間を記憶する特定時間記憶部と、
を備えることを特徴とするプログラマブルコントローラ。
【請求項２】
前記特定の時間は、前記割り込み要求が検出されてから前記割り込みプログラムが実行されるまでの割り込み応答時間を更に含むことを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記特定時間記憶部はさらに、前記割り込み禁止期間又は前記割り込み応答時間の最大値を記憶することを特徴とする請求項１又は２に記載のプログラマブルコントローラ。
【請求項４】
前記プログラム制御部は、先の割り込みプログラムの実行中は、該先の割り込みプログラムよりも優先度が低い後の割り込みプログラムの実行を待機させ、前記先の割り込みプログラムの終了後に、前記後のプログラムを実行し、
前記特定時間計測部は、前記後の割り込みプログラムに係る特定の時間として、少なくとも前記前の割り込みプログラムを待機した待機時間を計測することを特徴とする請求項１乃至３のいずれか一項に記載のプログラマブルコントローラ。
【請求項５】
前記プログラマブルコントローラは、基本ユニットと、該基本ユニットと外部装置とに接続された拡張ユニットとを含み、
前記割り込み要求検出部は、前記基本ユニットにおいて割り込み要求を検出する第１の割り込み要求検出部と、前記拡張ユニットにおいて割り込み要求を検出する第２の割り込み要求検出部とを含むことを特徴とする請求項１乃至４のいずれか一項に記載のプログラマブルコントローラ。
【請求項６】
前記プログラマブルコントローラは、前記ユーザプログラムに記述されるデバイスが割り付けられたデバイス領域を有するデバイス記憶部を備え、
前記特定時間記憶部は、前記特定の時間を前記デバイス領域に記憶することを特徴とする請求項１乃至５のいずれか一項に記載のプログラマブルコントローラ。
【請求項７】
前記基本ユニットと前記拡張ユニットはそれぞれタイマーを有し、
前記拡張ユニットは、前記第２の割り込み要求検出部にて検出した割り込み要求の時刻をタイマーに基づいて記録する時刻記録部と、記録された前記割り込み要求の時刻を前記基本ユニットに送る時刻送信部とを有し、
前記プログラム実行部と前記特定時間計測部とは前記基本ユニットに設けられ、前記時刻送信部から送信された時刻と前記割り込みプログラムが実行される時刻とに基づいて、前記特定の時間として割り込み応答時間を計測することを特徴とする請求項６に記載のプログラマブルコントローラ。
【請求項８】
前記基本ユニットは、前記拡張ユニットに対して、前記タイマーを同期させるための同期命令を送信し、前記基本ユニットと前記拡張ユニットのタイマーを同期させることを特徴とする請求項７に記載のプログラマブルコントローラ。
【請求項９】
前記割り込み制御部は、前記ユーザプログラムに前記割り込み禁止期間を規定する割り込み禁止命令及び割り込み許可命令が記述されている場合に、少なくとも前記割り込み禁止期間では前記プログラム実行部により割り込みプログラムを実行させないことを特徴とする請求項１乃至８のいずれか一項に記載のプログラマブルコントローラ。
【請求項１０】
ユーザプログラムを周期的に実行するプログラム実行部を有するプログラマブルコントローラの制御方法であって、
割り込み要求を検出する割り込み要求検出工程と、
前記割り込み要求が検出されたとき、前記プログラム実行部に前記ユーザプログラムの実行を中断させて割り込みプログラムを実行させる割り込み制御工程と、
前記プログラム実行部による前記割り込みプログラムの実行を禁止する割り込み禁止期間を特定の時間として計測する特定時間計測工程と、
前記特定時間計測工程により計測された前記特定の時間を記憶する特定時間記憶工程と、
を有することを特徴とすることを特徴とするプログラマブルコントローラの制御方法。
【請求項１１】
ユーザプログラムを周期的に実行するプログラム実行部を有するプログラマブルコントローラにより、
割り込み要求を検出する割り込み要求検出工程と、
前記割り込み要求が検出されたとき、前記プログラム実行部に前記ユーザプログラムの実行を中断させて割り込みプログラムを実行させる割り込み制御工程と、
前記プログラム実行部による前記割り込みプログラムの実行を禁止する割り込み禁止期間を特定の時間として計測する特定時間計測工程と、
前記特定時間計測工程により計測された前記特定の時間を記憶する特定時間記憶工程と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラ及びプログラマブルコントローラの試験方法およびプログラムに関する。
【背景技術】
【０００２】
特許文献１が示すようにプログラマブル・ロジック・コントローラ（ＰＬＣ）の基本ユニットには拡張ユニットが接続される。基本ユニットはユーザプログラムを繰り返し実行するため、特定の事象に対応する処理をユーザプログラムの中で実行しようとすると、事象の発生と対応する処理との間には、最大でスキャンタイム程度の遅延を生ずる。そこで、そのような場合には割り込み処理が用いられる。ユーザプログラムの実行中に割り込み要因が発生すると、割り込み要因の発生をトリガとして割り込み要因に応じた割り込みプログラムが実行される。これにより事象の発生から対応する処理までの遅延を短縮することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−０５２６７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら割り込みプログラムが期待通りに動作しない場合、たとえば割り込み要因が生じてから割り込みプログラムの実行が開始されるまでの割り込み応答時間が著しく長い場合には、割り込み処理本来の目的が果たせないおそれがある。そこでその原因を特定し、対処する必要があるが、不具合の原因がたとえば割り込み応答時間の遅延にあるのか、その他のプログラムモジュールにあるのかなどの原因を特定することは困難であった。たとえばＰＬＣにオシロスコープを接続して割り込み応答時間を測定する方法があるが、配線が複雑であり、操作性が悪い。割り込み要因がシリアル通信の受信の場合など、複雑な要因の割り込みについての割り込み応答時間を測定することは困難である。また、割り込み処理の応答時間が遅延していることが分かったとしても、その遅延の原因を特定することもまた困難であった。
【０００５】
本発明は上記従来例に鑑みて成されたもので、割り込み応答時間を容易に測定でき、応答時間の内訳まで特定できるプログラマブルコントローラおよびその制御方法とプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本発明に係るプログラマブルコントローラは、たとえば、
ユーザプログラムを周期的に実行するプログラム実行部と、
割り込み要求を検出する割り込み要求検出部と、
前記割り込み要求が検出されたとき、前記プログラム実行部に前記ユーザプログラムの実行を中断させて割り込みプログラムを実行させる割り込み制御部と、
前記プログラム実行部による前記割り込みプログラムの実行を禁止する割り込み禁止期間を特定の時間として計測する特定時間計測部と、
前記特定時間計測部により計測された前記特定の時間を記憶する特定時間記憶部と、
を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、割り込み応答時間の測定を容易に行うことができ、割り込み応答時間の内訳まで特定でき、割り込み処理の実行遅延の原因の特定をより迅速に行うことができる。
【図面の簡単な説明】
【０００８】
【図１】ＰＬＣシステムの一例を示す図
【図２】ユーザプログラムの一例を示す図
【図３】プログラム作成支援装置の一例を示す図
【図４】ＰＬＣの一例を示す図
【図５】スキャンおよび割り込み処理を説明するための図
【図６】ベースレス・ビルディングタイプのＰＬＣの一例を示す図
【図７】割り込みを含むラダープログラムの一例を示す図
【図８】割り込みを含むユーザプログラムの実行シーケンスの一例を示す図
【図９】ＰＬＣの構成例を示すブロック図
【図１０】割り込み応答時間を説明するための図
【図１１】割り込み検出部による割り込み要因の通知手順を示すフローチャート
【図１２】割り込み制御部による割り込み処理の実行制御の手順を示すフローチャート
【図１３】メインループ実行部による割り込み処理の実行までの手順を示すフローチャート
【図１４】ユーザプログラムの割り込み禁止及び割り込み許可命令の実行手順を示すフローチャート
【図１５】割り込み禁止時間最大値の計測を伴う、ユーザプログラムの割り込み許可命令の実行手順を示すフローチャート
【発明を実施するための形態】
【０００９】
［第１実施形態］
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【００１０】
はじめにプログラマブル・ロジック・コントローラ（ＰＬＣ、単にプログラマブルコントローラと呼ばれてもよい）を当業者にとってよりよく理解できるようにするために、一般的なＰＬＣの構成とその動作について説明する。
【００１１】
図１は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。図１に示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのプログラム作成支援装置１と、工場等に設置される各種制御装置を統括的に制御するためのＰＬＣ（プログラマブル・ロジック・コントローラ）２とを備えている。ＰＬＣ２は、ＣＰＵが内蔵された基本ユニット３と１つないし複数の拡張ユニット４を備えている。基本ユニット３に対して１つないし複数の拡張ユニット４が着脱可能となっている。基本ユニット３は基本ユニットと呼ばれることもある。あるいはＣＰＵユニットと呼ぶこともある。
【００１２】
基本ユニット３には、表示部５及び操作部６が備えられている。表示部５には、基本ユニット３に取り付けられている各拡張ユニット４の動作状況などを表示することができ、表示部５の表示内容は、操作部６を操作することにより切り替えることができる。表示部５には、通常、ＰＬＣ２内のデバイスの現在値（デバイス値）やＰＬＣ２内で生じたエラー情報などが表示される。なお、デバイスとは、デバイス値を格納するために設けられたメモリ上の領域を指す名称である。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー（補助リレー）、タイマー、カウンタ、データメモリ等の状態を示す情報である。本実施形態では、表示部５には拡張ユニットの設定やテストのための表示がされ、操作部６でそのための操作が行われる。
【００１３】
拡張ユニット４は、ＰＬＣ２の機能を拡張するために用意されており、基本ユニット３に対して側方から取り付けられる。１つ目の拡張ユニット４は、基本ユニット３に対して側方から直接的に取り付けられる。２つ目以降の拡張ユニット４は、既に取り付けられている拡張ユニット４に対して、側方から直列的に取り付けられる。たとえば、基本ユニット３の右側面と拡張ユニット４の左側面とが連結面になっている。同様に、１つ目の拡張ユニット４の右側面の形状等は基本ユニット３の右側面とほぼ同じであるため、１つ目の拡張ユニット４の右側面に２つ目の拡張ユニット４の左側面が連結される。このような連結方式は、数珠つなぎ方式とかデイジーチェーン方式と呼ばれてもよい。各連結面にはコネクタが設けられており、通信や電力供給を行うためのバスもコネクタを介して連結される。このようにして、基本ユニット３と複数の拡張ユニット４が直列的に取り付けられると、各拡張ユニット４内に備えられた配線（例：バス）を介して、各拡張ユニット４が基本ユニット３に対して通信可能に接続される。各拡張ユニット４には、その拡張ユニット４の機能に対応する被制御装置１６（図４）が接続され、これにより、各被制御装置１６が拡張ユニット４を介して基本ユニット３に接続される。被制御装置１６には、センサなどの入力装置や、アクチュエータなどの出力装置が含まれる。また被制御装置１６はＰＬＣの外部にあることから外部装置と呼ぶこともある。
【００１４】
プログラム作成支援装置１は、たとえば、携帯可能ないわゆるノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部７及び操作部８が備えられている。ＰＬＣ２を制御するためのユーザプログラムの一例であるラダープログラムは、プログラム作成支援装置１を用いて作成され、その作成されたラダープログラムは、プログラム作成支援装置１内でニモニックコードに変換される。そして、プログラム作成支援装置１を、ＵＳＢ(Universal Serial Bus)などの通信ケーブル９を介してＰＬＣ２の基本ユニット３に接続し、ニモニックコードに変換されたラダープログラムをプログラム作成支援装置１から基本ユニット３に送ると、そのラダープログラムが基本ユニット３内でマシンコードに変換され、基本ユニット３に備えられたメモリ内に記憶される。
【００１５】
なお、図１では示していないが、プログラム作成支援装置１の操作部８には、プログラム作成支援装置１に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、プログラム作成支援装置１は、ＵＳＢ以外の他の通信ケーブル９を介して、ＰＬＣ２の基本ユニット３に対して着脱可能に接続されるような構成であってもよい。
【００１６】
図２は、ラダープログラムの作成時にプログラム作成支援装置１の表示部７に表示されるラダー図１７の一例を示す図である。図２に示すように、ＰＬＣ２を制御するためのラダープログラムは、プログラム作成支援装置１の表示部７にマトリックス状に表示される複数のセル１８内に仮想デバイスのシンボル１９を適宜配置して、視覚的なリレー回路を表すラダー図１７を構築することにより作成される。
【００１７】
ラダー図１７には、たとえば、１０列×Ｎ行（Ｎは任意の自然数）のセル１８が配置されている。そして、各行のセル１８内に、図２に示す左側から右側に向かって、時系列的に仮想デバイスのシンボル１９を適宜配置することにより、視覚的なリレー回路を作成することができる。作成されるリレー回路は、１行で表される直列的なリレー回路であってもよいし、複数行に並列的に表されたリレー回路を互いに結合することにより作成された、並列的なリレー回路であってもよい。
【００１８】
図２に示すリレー回路は、入力装置からの入力信号に基づいてオン／オフされる３つの仮想デバイス（以下、「入力デバイス」と呼ぶ。）のシンボル１９ａ，１９ｂ，１９ｃと、出力装置の動作を制御するためにオン／オフされる仮想デバイス（以下、「出力デバイス」と呼ぶ。）のシンボル１９ｄとが適宜結合されることにより構成されている。
【００１９】
各入力デバイスのシンボル１９ａ，１９ｂ，１９ｃの上方に表示されている文字（「Ｒ０００１」、「Ｒ０００２」及び「Ｒ０００３」）は、その入力デバイスのデバイス名（アドレス名）２１を表している。各入力デバイスのシンボル１９ａ，１９ｂ，１９ｃの下方に表示されている文字（「フラグ１」、「フラグ２」及び「フラグ３」）は、その入力デバイスに対応付けられたデバイスコメント２２を表している。出力デバイスのシンボル１９ｄの上方に表示されている文字（「原点復帰」）は、その出力デバイスの機能を表す文字列からなるラベル２３である。
【００２０】
図２に示す例では、デバイス名「Ｒ０００１」及び「Ｒ０００２」にそれぞれ対応する２つの入力デバイスのシンボル１９ａ，１９ｂが直列的に結合されることにより、ＡＮＤ回路が構成されている。また、これらの２つの入力デバイスのシンボル１９ａ，１９ｂからなるＡＮＤ回路に対して、デバイス名「Ｒ０００３」に対応する入力デバイスのシンボル１９ｃが並列的に結合されることにより、ＯＲ回路が構成されている。すなわち、このリレー回路では、２つのシンボル１９ａ，１９ｂに対応する入力デバイスがいずれもオンした場合、又は、シンボル１９ｃに対応する入力デバイスがオンした場合にのみ、シンボル１９ｄに対応する出力デバイスがオンされるようになっている。
【００２１】
図３は、図１のプログラム作成支援装置１の電気的構成について説明するためのブロック図である。図３に示すように、プログラム作成支援装置１には、ＣＰＵ２４、表示部７、操作部８、記憶装置２５及び通信部２６が備えられている。表示部７、操作部８、記憶装置２５及び通信部２６は、それぞれＣＰＵ２４に対して電気的に接続されている。記憶装置２５は、少なくともＲＡＭを含む構成であり、ラダープログラム記憶部２５ａと、編集ソフト記憶部２５ｂとを備えている。
【００２２】
ユーザは、編集ソフト記憶部２５ｂに記憶されている編集ソフトをＣＰＵ２４に実行させて、操作部８を通じてラダープログラムを編集する。ここで、ラダープログラムの編集には、ラダープログラムの作成及び変更が含まれる。編集ソフトを用いて作成されたラダープログラムは、ラダープログラム記憶部２５ａに記憶される。また、ユーザは、必要に応じてラダープログラム記憶部２５ａに記憶されているラダープログラムを読み出し、そのラダープログラムを、編集ソフトを用いて変更することができる。通信部２６は、通信ケーブル９を介してプログラム作成支援装置１を基本ユニット３に通信可能に接続するためのものである。
【００２３】
図４は、ＰＬＣ２の電気的構成について説明するためのブロック図である。図４に示すように、基本ユニット３には、ＣＰＵ１０、表示部５、操作部６、記憶装置１２及び通信部１４が備えられている。表示部５、操作部６、記憶装置１２、及び通信部１４は、それぞれＣＰＵ１０に電気的に接続されている。記憶装置１２は、ＲＡＭやＲＯＭ、メモリカードなどを含んでもよく、ラダープログラムなどが記憶される。記憶装置１２には、プログラム作成支援装置１から入力されたラダープログラムやユーザデータが上書きして記憶される。また、記憶装置１２には基本ユニット用の制御プログラムも格納されている。
【００２４】
図５は、本発明の実施の形態に係るプログラマブルコントローラの基本ユニット３でのスキャンタイムの構成を示す模式図である。図５が示すように１つのスキャンは、入出力のリフレッシュを行うためのユニット間通信２０１、プログラム実行２０２、ＥＮＤ処理２０４により構成されている。ユニット間通信２０１で、基本ユニット３は、ラダープログラムを実行して得られた出力データを基本ユニット３内の記憶装置１２から外部機器（例：モータ、アクチュエータ）などに送信するとともに、外部機器（例：センサ）で検知されたデータなどを含めた入力データを基本ユニット３内の記憶装置１２に取り込む。プログラム実行２０２で、基本ユニット３は、更新された入力データを用いてプログラムを実行（演算）する。基本ユニット３はプログラムの実行によりデータを演算処理する。なお、ＥＮＤ処理とは、プログラム作成支援装置１や基本ユニット３に接続された表示器（図示せず）等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。なお、このスキャンタイムは、必ずしも一定にならず、リフレッシュ期間やプログラム実行期間の長短に応じて変動する。
【００２５】
例えばプログラム実行２０２の期間に割り込み要因が発生すると、割り込み処理が起動され、実行される。割り込み処理は、システムプログラムの一部である割り込み前処理２１１と、割り込みプログラム実行２１２とを含む。割り込みプログラムはラダープログラムとして記述され、ＰＬＣ２により実行可能な形式に変換され、ユーザプログラムの一部とＰＬＣ２に転送される。割り込み処理が終了すると、割り込み発生の次の命令に戻る。割り込み処理において実時間での処理を必要とする場合には、入出力をダイレクト通信で行うことができる。ダイレクト通信を用いると、ユニット間通信を待たずにプログラム実行の中で入出力を行うことができる。なお、本実施形態では、プログラム実行２０２の期間中に割り込み要因が発生することとしているが、本発明はこれに限られず、例えばユニット間通信２０１やＥＮＤ処理２０３の期間中に割り込み要因が発生することもある。
【００２６】
このように、プログラム作成支援装置１はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをＰＬＣ２に転送する。ＰＬＣ２は、入出力リフレッシュ、ラダープログラムの実行およびＥＮＤ処理を１サイクル（１スキャン）として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種入力機器（センサ等）からのタイミング信号に基づいて、各種出力機器（モータ等）を制御する。よって、ＰＬＣ２は汎用のパーソナルコンピュータ（ＰＣ）とは全く異なる動きをする。
【００２７】
＜連結構造＞
図６（Ａ）はＰＬＣ２を構成する基本ユニット３、拡張ユニット４およびエンドユニット１１が連結される前の状態を示している。この例では、基本ユニット３の右方向に１つ以上の拡張ユニット４が連結される。最も右に位置する拡張ユニット４にはエンドユニット１１が連結される。エンドユニット１１は、最も右に位置する拡張ユニット４の右側面を保護するものであり、バスの終端機能を備えていてもよい。なお、拡張ユニット４の前面にはダイレクトアクセススイッチ２７が設けられてもよい。ダイレクトアクセススイッチ２７が操作されると、操作されたことを示す信号が通信バスを介して拡張ユニット４から基本ユニット３に伝達される。基本ユニット３は、この信号を受信することで、拡張ユニット４のダイレクトアクセススイッチ２７が操作されたことを認識し、所定の処理（テスト結果の表示など）を実行する。
【００２８】
図６（Ｂ）はＰＬＣ２を構成する基本ユニット３、拡張ユニット４およびエンドユニット１１が連結された状態を示している。このＰＬＣ２はベースレスのビルディングタイプであるため、ベースを使用せずに、基本ユニット３、拡張ユニット４およびエンドユニット１１が連結される。工場において制御盤に設置しやすくするために、ＰＬＣ２の背面にはＤＩＮレールなどの基準レール１３が取り付けられるようになっている。なお、基本ユニット３および拡張ユニット４の連結状態を維持するためにロック機構が採用されてもよい。
【００２９】
本実施形態では、基本ユニット３と拡張ユニット４とをつなぐバスとしては、たとえばアドレスとデータ、制御信号を並列に構成したパラレルバスや、アドレスやデータを引数とするコマンド及びレスポンスをパケットとして送受信するシリアルバスなど、種々の構成を採用できる。
【００３０】
＜割り込みプログラムを含むラダープログラムの例＞
図７は、プログラム作成支援装置１により作成されるラダープログラムの例を示している。ユーザプログラムのうち、メインルーチン７０１をメインループ実行部９０１（後述）により実行することが図５のプログラム実行２０２に相当する。なおラダープログラムはＰＬＣ２により実行可能な形式のコードとしてＰＬＣ２の基本ユニット３にロードされ、実行されるが、ラダープログラムと実行可能形式のコードとは対応しているため、本例ではＰＬＣ２で実行されるユーザプログラムのこともラダープログラムと称することにする。また、割り込みプログラム７０２はメインルーチン７０１とは別のルーチンであり、メインループ実行部９０１により割り込みプログラム７０２を実行することが図５の割り込みプログラム実行２１２に相当する。
【００３１】
図７の例では、メインルーチン７０１はＤＩ命令すなわち割り込み禁止命令を含み、その後にＥＩ命令すなわち割り込み許可命令を含む。ＤＩ命令と、ＥＩ命令によって区切られている区間７０３、７０４、７０５には、命令が書かれている。各命令の左端は、実行条件となるデバイスを表す。この場合ＭＲ１０なるデバイスがオンであれば、ＤＩ、ＥＩ命令とも実行され、区間７０４の命令は割り込み禁止状態で実行される。図７の例では、デバイスＭＲ１０が常時オンであれば、ＤＩ、ＥＩは各スキャンで必ず実行されることになる。
【００３２】
また割り込みプログラム７０２は、ＩＮＴ命令にオペランドとして記述されたデバイスＲ０００を要因とする割り込みである。ＩＮＴ命令とＲＥＴＩ命令との間の区間７０６には、命令が書かれている。たとえばデバイスＲ０００の値がＯＦＦからＯＮに変化すると、それをトリガとして割り込みプログラム７０２が実行される。割り込みプログラム７０２は、実行中のプログラム（メインルーチンまたは割り込みプログラム）に復帰するためにコンテキストを退避してから実行される。割り込みプログラムは、ＲＥＴＩ命令すなわち割り込み復帰命令で終了する。割り込み復帰命令では、退避したコンテキストが復帰され、割り込まれたプログラムの続きから処理が再開される。
【００３３】
＜割り込み禁止範囲＞
図８は、割り込み禁止時における割り込みプログラム実行を示した模式図である。割り込み禁止範囲の開始は図７に示した割り込み禁止命令ＤＩであり、その終了は割り込み許可命令ＥＩである。期間８０３、期間８０４、期間８０５がメインルーチン（図７の７０１）を実行する期間である。図８の例は図７と対応しており、割り込み禁止命令と割り込み許可命令の実行によりメインルーチンの期間を分けると、期間８０３では図７の区間７０３の命令を実行し、期間８０４では図７の区間７０４の命令を実行し、期間８０５は図７の区間７０５の命令を実行している。割り込み禁止範囲（割り込み禁止期間とも呼ぶ）で割り込み要因が発生しても割り込み処理は実行されない。割り込み禁止範囲で発生した割り込み要因については、割り込み禁止期間が終了したのちに、期間８０６の割り込みプログラムが実行される。割り込みプログラムは、図７では区間７０６に書かれている命令を実行している。
【００３４】
＜ＰＬＣの構成＞
図９に、本実施形態のＰＬＣ２の機能ブロック図の一例を示す。基本ユニット３の各機能ブロックは、基本ユニット３のＣＰＵ１０が、基本ユニット３のハードウェア資源を用いてプログラムを実行することで実現される。拡張ユニット４の各機能ブロックは、拡張ユニット４のＣＰＵが、拡張ユニット４のハードウェア資源を用いてプログラムを実行することで実現される。拡張ユニット４には、接続される被制御装置の種類（例：モータ、アクチュエータ、センサ等）に応じて、Ｉ／Ｏユニット、アナログユニット、位置決めユニット等の種類があるが、図９に示した機能ブロックは、それら拡張ユニットの種類にかかわらず共通したプログラムおよびハードウェア資源を用いて実現される。不図示ではあるが、基本ユニット３は拡張バスを通じて、拡張ユニット４に設けた共有メモリにアクセス可能であり、拡張バスおよび共有メモリを介して基本ユニット３と拡張ユニット４とは通信が可能である。
【００３５】
図９において、メインループ実行部９０１は、コアあるいは演算器またはプログラム実行部とよばれることもあり、ユーザプログラムを実行する。実行されるユーザプログラムはプログラムメモリ９０６に格納される。プログラムメモリ９０６にはメインルーチンを構成するメインプログラムと、割り込み要因の発生をトリガとして実行される割り込みプログラムとが格納される。これらのプログラムは、図７で説明したラダープログラムをコンピュータにより実行可能な形式にしたコードで構成される。またプログラムの実行により参照されたりあるいは加工されたりするデータは、メモリ９０５に格納される。メモリ９０５にはこのほか、測定した割り込み応答時間９０４も記憶される。また、割り込み要因発生時刻や、割り込み要因ごとに優先度（あるいは優先順位とも呼ぶ）を関連付けて記憶した優先度テーブルも記憶される。さらに、実行開始の指示を受けた割り込み処理が、優先度の高い割り込み処理の終了を待つ期間である割り込み待機時間、割り込み禁止命令から割り込み許可命令までの期間である割り込み禁止時間、割り込みマスクが設定されている期間であるマスク設定時間、割り込み前処理に要する時間である前処理時間等もメモリ９０５に記憶される。なお優先度テーブルは、たとえばプログラム作成支援装置１により作成され、基本ユニット３にプロジェクトデータの一部としてダウンロードされている。メモリ９０５はプログラム作成支援装置１からもアクセス可能である。または、少なくとも割り込み応答時間やその成分時間についてアクセス可能である。
【００３６】
割り込み検出部９０３は、ユーザプログラムが実行されている間に生じた割り込み要因を検出して割り込み制御部９０２に割り込み検出信号を入力する。また、割り込み制御部９０２または割り込み検出部９０３は割り込みを検出した時刻である割り込み要因発生時刻をメモリ９０５に記録する。複数の割り込み要因が処理されないまま同時に発生していることもあり得ることから、割り込み要因発生時刻は、発生した割り込み要因と対応付けて記録されるのが望ましい。また同じ割り込み要因が複数同時に発生した場合には、例えば、一般的な対応、すなわち後の割り込みを無視するようにしてもよいし、先の割り込みは後の割り込みによりオーバーライドされるようにしてもよい。前者の場合には、最古の割り込み要因発生時刻が記録される。後者の場合には、各割り込み要因ごとに、最新の割り込み要因発生時刻が記録される。あるいはまた、たとえば発生した割り込み要因の各々を処理する必要があるならば、割り込み制御部９０２または割り込み検出部９０３は割り込みごとに識別情報を割り当て、識別情報と関連付けて割り込み要因発生時刻をメモリ９０５に記憶することが望ましい。識別情報は同時に発生している割り込み要因のなかで固有であればよい。例えば、基本ユニット３が割り込み処理を待たせることができる割り込み要因の上限数が１６であれば、その上限数の中で固有に識別するために、割り込み要因の発生順に０~１５の値を循環的に識別情報とすればよい。したがって割り込み検出信号には、割り込み要因を示す情報（以降では、この情報も割り込み要因と呼ぶ）のほか、割り込みに識別情報が割り当てられていれば、対応する識別情報も含まれる。なお、ＰＬＣ２内の拡張ユニット４に固有に付与されたユニットＩＤを識別情報に付加することで、拡張ユニット４の間の識別情報の重複を防止することができる。
【００３７】
割り込み制御部９０２は、割り込み検出信号が入力されると、割り込み要因に応じた割り込み処理（割り込みプログラム）の実行をスケジュールし、メインループ実行部９０１に対して割り込みプログラム実行指示を送る。割り込み処理は、割り込み要因の優先度（割り込み優先度）に基づいてスケジュールされる。ひとつの割り込み要因について、後の割り込み要因の発生が無視される場合、或いは、後の割り込み要因の発生が先の割り込み要因の発生をオーバライドする場合には、割り込み要因の競合は互いに異なる割り込み要因間で生じる。したがって割り込み優先度を適宜設定することで割り込み処理の順序を調整できる。割り込み要因とその優先度とを紐づけた優先度テーブルを参照することで特定可能である。割り込み優先度は、たとえば次に処理すべき割り込み要因が複数（すなわち複数種類）ある場合や、割り込み処理の実行中に別の割り込み要因（割り込み検出信号）が発生した場合などに参照され、優先度に従って処理の順序付けが行われる。競合がない場合には発生順に処理すればよい。割り込み制御部９０２は、次に処理すべき割り込み要因に対応する割り込みプログラム実行指示をメインループ実行部９０１に入力することで、割り込み処理をメインループ実行部９０１に実行させる。メインループ実行部９０１は、割り込みプログラム実行指示に応じて、実行中のプログラムに復帰するための情報（コンテキスト）を退避し、割り込み要因に応じた割り込みプログラムを実行する。時刻管理部９０７は、現在時刻を保持するたとえばタイマーを有し、時刻の要求に応じて現在時刻を応答する。要求元はメインループ実行部９０１とは限らず、割り込み制御部９０２や割り込み検出部９０３の場合もある。
【００３８】
なお、先に発生した割り込み要因を後で発生した割り込み要因によりオーバーライドしない場合には、たとえば、割り込み検出信号を受信した順序と割り込み要因の優先度とに基づいた順序で、実行すべき割り込み処理に関する情報を待ち行列に登録する。待ち行列は優先度ごとに設けてもよい。そして、待ち行列中の割り込み要因の中から、次に割り込み処理を実行する割り込み要因を決定し、その割り込み処理を実行させる。割り込み制御部９０２は、メインループ実行部９０１が実行している現在の割り込み処理の優先順位（たとえば平場／優先度低／優先度中／優先度高の順で高優先度）と、メインループ実行部９０１における割り込み禁止状態を認識しており、実行しようとする割り込み処理が実行可能であればメインループ実行部９０１に割り込みプログラム実行指示を出力して、要求されている割込み処理に分岐させる。
【００３９】
拡張ユニット４においては、割り込み検出部９１４は、割り込み検出部９０３と同様の機能を有する。ただし割り込み検出信号は、拡張バス上のデータとして割り込み制御部９０２へと入力される。メモリ９１１はデータ等を記憶するメモリであり、割り込み要因が発生した時刻である割り込み要因発生時刻９１２を記憶する。この時刻は、時刻管理部９１３により保持される現在時刻を割り込み検出部９１４が割り込み要因の発生時に読み出し、それを記録することで記録される。割り込み検出部９１４は、割り込み検出に応じて時刻を記録する時刻記録部と、記録した時刻を基本ユニット３に送信する時刻送信部とに分けて考えることができる。このうち時刻送信部は、基本ユニット３に対して主体的に時刻を送信してもよいし、基本ユニット３からの読み出しに応じて時刻を送ってもよい。主体的に送信する場合には、そのタイミングは、たとえば割り込み検出信号を送信するタイミングなどである。なお、時刻管理部９０７と時刻管理部９１３との同期は、基本ユニット３と拡張ユニット４との間の同期維持のための通信により維持される。この同期通信のために要する時間は例えば１μ秒程度で極めて微小であり、割り込み応答時間に比して実質的に問題にならない。同期通信は定期的に行われる。
【００４０】
＜割り込み応答時間＞
図１０は割り込み応答時間を説明する模式図である。割り込み応答時間とは、割り込み要因が発生してから、その割り込み要因をトリガとする割り込みプログラムの実行が開始されるまでの遅延時間である。割り込み応答時間はいくつかの成分に分けることができる。割り込み認識時間１００１は、割り込み検出部９０３，９１４が割り込み要因の発生を検出してから、基本ユニット３の割り込み制御部９０２に伝達するまでに要する時間である。すなわち、割り込み認識時間１００１は、割り込み検出部９０３，９１４による内部処理時間と、割り込み制御部９０２への割り込み検出信号の伝達時間とを含む。例えばそれぞれの割り込み検出部は、割り込み要因を定期的に監視しており、その監視処理や、割り込み検出信号の出力および伝達に起因する遅延が割り込み認識時間１００１である。割り込み禁止時間（割り込み禁止期間と同義である）１００２は、割り込みが禁止されているために、割り込み処理の実行が待機させられることに起因する遅延である。割り込みが禁止されており、割り込み処理を遅延する処理は割り込み制御部９０２によって行われるため、割り込み禁止時間は割り込み制御部９０２において生じる。
【００４１】
割り込み待機時間１００３は、先に実行される割り込み処理の終了を待機する時間である。割り込み処理のスケジューリングは割り込み制御部９０２で行われ、割り込み待機時間１００３は割り込み制御部９０２において生じる。割り込み前処理時間１００４は、割り込み処理の本体であるユーザプログラムの実行前にシステムにより実行される前処理に要する時間である。割り込み前処理は演算器すなわちメインループ実行部９０１により実行され、したがってメインループ実行部９０１において生じる。
【００４２】
本実施形態のＰＬＣ２は、割り込み応答時間を測定するのみならず、割り込み応答時間を構成するこれらの成分についても測定する。
【００４３】
＜割り込み要因発生時刻の記録＞
図１１に、拡張ユニット４の割り込み検出部９１４による処理手順のフローチャートを示す。割り込み検出部９１４は、割り込み要因の発生を例えば所定周期で監視する（Ｓ１１０１）。割り込み要因はたとえば、拡張ユニット４に接続された外部機器からの信号や、所定の条件に達したことなどを示す信号、あるいは拡張ユニット４そのものの状態を示す信号など様々であり得る。割り込み処理を必要とするそれらの信号が監視の対象となる。
【００４４】
いずれかの割り込み要因が生じると、時刻管理部９１３から現在時刻を取得し、割り込み要因発生時刻９１２に取得した時刻を記録する（Ｓ１１０３）。そして基本ユニット３の割り込み制御部９０２へと割り込み検出信号を送って割り込み要因を伝達する（Ｓ１１０５）。割り込み検出信号には、たとえば割り込み要因ごとに割り当てた値が含まれ、この値により割り込み要因を特定できる。ステップＳ１１０５の後はステップＳ１１０１へと戻り、割り込み要因の発生の監視が続行される。
【００４５】
以上の手順により、割り込み要因の発生時刻を記録し、また基本ユニット３へと割り込み要因を伝達する。なお、基本ユニット３にも割り込み検出部９０３が備えられており、その基本的な動作は割り込み検出部９１４と同様で図１１に示したとおりである。ただし、割り込み検出部９０３は、現在時刻を時刻管理部９０７から取得することと、割り込み要因発生時刻をメモリ９０５に記憶することとにおいて、割り込み検出部９１４と相違する。
【００４６】
＜割り込み実行の制御＞
図１２は、割り込み制御部９０２により割り込み処理の実行をスケジュールする手順の一例である。割り込み制御部９０２はまず割り込みプログラムの実行を要求されているかを判定する（Ｓ１２０１）。ステップＳ１２０１では、未処理の割り込み要因があれば、割り込みプログラムの実行は要求されており、なければ要求されていないものと判定する。
【００４７】
実行を要求されている割り込みプログラムがあれば、その中から実行すべき割り込みを決定する（Ｓ１２０３）。この決定は、割り込み要因の優先度に基づく。未処理の割り込みは優先度の順に実行される。割り込み要因ごとの優先度は優先度テーブルから知ることができる。このようにして次に実行する割り込みを決定する。次に決定した割り込み処理をメインループ実行部９０１が実行できるか否かを判定する（Ｓ１２０５）ステップＳ１２０５では、メインループ実行部９０１が割り込み禁止命令等により生じる割り込み禁止状態にある場合、または、次に実行する割り込み処理よりも高優先度の割り込み処理が既に実行されている場合には、割り込み可能状態ではないと判定する。割り込み許可状態、かつ、高優先度の割り込み処理が実行中でない状態であれば、実行可能であると判定して、割り込みプログラム実行指示をメインループ実行部９０１に送信して、当該割り込みの割り込みプログラムを実行させる（Ｓ１２０７）。割り込み制御部９０２はこの手順を繰り返し実行し、実行すべき割り込みがあればそれを順次実行させる。
【００４８】
以上の手順により割り込み制御部９０２は、割り込みの発生した順序や優先度に応じた順序で、割り込みプログラムの実行をメインループ実行部９０１に指示することができる。また、割り込み禁止状態の場合には、割り込み実行を待機させることができる。
【００４９】
＜割り込み待機時間の測定＞
前述のとおり、実行指示を受けた割り込みの優先度よりも高い優先度の割り込みを実行中の場合、割り込み制御部９０２は実行指示を受けた割り込みプログラムの実行を、実行中の割り込みプログラムが完了するまで待機させる。その場合には、実行中の高優先度の割り込み処理により実行を待たされた割り込み処理に関連づけて、待機の開始時刻と、実行中の高優先度の割り込みプログラムの完了時刻との差分を、優先度の高い割り込み処理を待機する割り込み待機時間として測定する。測定した割り込み待機時間は、割り込み要因ごとに、あるいは割り込みの識別情報ごとにメモリ９０５に記録する。
【００５０】
＜割り込みプログラムの実行と割り込み応答時間及び前処理時間の測定＞
図１３に割り込み制御部９０２から割り込み実行指示を受けたメインループ実行部９０１による処理手順の一例を示す。メインループ実行部９０１はまず、割り込みプログラムの実行前処理を行う（Ｓ１３０１）。このときメインループ実行部９０１は、前処理の開始時刻と終了時刻との差を、前処理時間としてメモリ９０５に記憶する。次に割り込み処理プログラムの本体を実行する。その際にまず、これから実行する割り込み処理の割り込み要因の発生時刻を、基本ユニット３のメモリ９０５に記憶した割り込み要因発生時刻または拡張ユニット４のメモリ９１１に記憶した割り込み要因発生時刻９１２から取得する。そして取得した割り込み要因発生時刻から現在時刻までの差分を、割り込み応答時間としてメモリ９０５の割り込み応答時間９０４に記録する（Ｓ１３０３）。そして、割り込みプログラムの実行を開始する。割り込み要因に識別情報が付されて区別されている場合には、その識別情報に対応した割り込み要因発生時刻が取得され、割り込み応答時間９０４も識別情報に関連づけて識別可能に記録される。この手順により、割り込み要因の発生から割り込みプログラム実行開始までの割り込み応答時間が測定される。
【００５１】
なお、割り込み応答時間、割り込み待機時間とも最大値のみを記録してもよい。また、割り込み要因ごとの最大値を記録してもよい。この場合には、新たに測定した割り込み応答時間、割り込み待機時間それぞれが、記録された割り込み応答時間、割り込み待機時間それぞれの最大値によりも大きい場合に限って、それらの値の新たに求められた値でそれぞれ更新する。
【００５２】
＜割り込み禁止および割り込み許可＞
図１４に割り込み禁止命令及び割り込み許可命令をメインループ実行部９０１により実行する際の処理手順の一例を示す。図１４（Ａ）は割り込み禁止命令（ＤＩ）の実行時の処理の例である。割り込み禁止命令を実行すると、まず割り込みを禁止し（Ｓ１４０１）、次に現在時刻を時刻管理部９０７から取得して割り込み禁止時刻を記録する（Ｓ１４０３）。なお割り込みの禁止は、たとえば所定の割り込み許可／禁止状態を、禁止状態に設定することで行われる。この場合、図１２のステップＳ１２０５ではその割り込み許可／禁止状態を参照して判断を行うことができる。
【００５３】
図１４（Ｂ）は、割り込み許可命令（ＥＩ）の実行時の処理である。メインループ実行部９０１が割り込み許可命令を実行すると、まず現在時刻を取得してステップＳ１４０３で記録された割り込み禁止時刻との差分をとって割り込み禁止時間を計算する（Ｓ１４１１）。そして、計算した割り込み禁止時間をメモリ９０５に記録する（Ｓ１４１３）。またあわせて、現在実行中の割り込み許可命令のプログラムカウンタの値、すなわちアドレスを取得してこれもメモリ９０５に記録する（Ｓ１４１５）。最後に割り込みを許可する（Ｓ１４１７）。すなわち割り込み許可／禁止状態を割り込み許可状態に設定する。
【００５４】
なお、ラダープログラムは、プログラム作成支援装置１で作成された際には、各命令について固有の行番号が割り当てられている。そのラダープログラムをＰＬＣ２で実行可能な形式としたプログラムはラダープログラムと対応することから、実行中の命令のアドレスは、ラダープログラムの行番号に変換することができる。ラダープログラムからその実行形式への変換はプログラム作成支援装置１で行われ、命令のアドレスからラダープログラムの行番号への変換もまた、プログラム作成支援装置１により行うことができる。
【００５５】
以上の手順により、割り込み禁止命令および割り込み許可命令により生じる割り込み禁止時間を計算し、記録することができる。
【００５６】
＜割り込みマスク＞
割り込み禁止と似た概念として割り込みマスクがある。割り込み禁止または許可では、優先度や割り込み要因などにかかわらず割り込みが禁止または許可されるのに対して、割り込みマスクは、特定の割り込み要因や割り込み優先度などを指定して割り込みを禁止する機能である。したがって、たとえば割り込みマスクの設定は、割り込み要因又は割り込み優先度などを指定した割り込み禁止命令に相当する。割り込みマスクの解除についても同様に、割り込み要因又は割り込み優先度などを指定した割り込み許可命令に相当する。すなわち、割り込みマスクの設定命令では、指定した割り込み要因又は割り込み優先度などについて、図１４（Ａ）を実行し、割り込みマスクの解除命令では、指定した割り込み要因又は割り込み優先度などについて、図１４（Ｂ）を実行する。この場合、ステップＳ１４１３で記録される割り込み禁止時間は、指定された割り込み要因または割り込み優先度などに関する割り込みマスク時間に相当し、指定された割り込み要因または割り込み優先度などに関連づけてメモリ９０５に記録される。またステップＳ１４１５で記録されるプログラムカウンタは、割り込みマスクの解除命令のアドレスとなる。このようにして、割り込み禁止時間と同様に、割り込みマスク時間を記録することができる。
【００５７】
＜測定値の読み出し及び消去＞
基本ユニット３に接続されたプログラム作成支援装置１等のモニタツールにより、メモリ９０５に記憶された、割り込み応答時間や割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間といった特定の時間をメモリ９０５から読み出したり、あるいは消去したりすることができる。そのために、プログラムメモリ９０６には、モニタツールからの指示に応じて上記特定の時間をモニタツールに送信したり、あるいは消去（あるいは初期化）したりするためのプログラムが格納され、実行される。
【００５８】
また、基本ユニット３の操作部６におけるオペレータによる操作に応じて、メモリ９０５に格納した、割り込み応答時間や割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間といった割り込み関連時間（特定の時間）を、メモリ９０５から読み出して表示部５に表示することもできる。これら測定した時間の初期化も操作部６における操作により行うことができる。
【００５９】
＜本実施形態まとめ＞
以上説明したように、本実施形態の基本ユニット３では、基本ユニット３または拡張ユニット４により記録された、割り込み要因の発生時刻とその割り込み要因に対応して割り込みプログラムの実行開始の時刻とから、割り込み応答時間を特定することができる。
【００６０】
さらに、割り込み禁止命令と割り込み許可命令とが実行された時刻の差分から、割り込み応答時間を構成する要素である割り込み禁止時間を特定することができる。ＰＬＣの割り込み処理では、割り込み応答時間の最大値を一定以内に抑えることが重要である。割り込み禁止時間の最大値は、割り込み応答時間の最大値に影響する大きな要素であり、本実施形態に係る発明では、その測定を実現し、割り込み応答時間の制御、ひいては応答性の向上に貢献する。
さらに、割り込みプログラムの実行時に、優先度の高い割り込みプログラムが実行されていればその完了を待つ時間を測定することで、割り込み待機時間を特定することができる。さらに、割り込み前処理に要した前処理時間を特定することができる。さらに、割り込み要因ごと又は優先度ごとの割り込みマスクが設定された時間を、割り込みマスクの設定命令と解除命令の時刻の差分から、マスクされた割り込みごとに特定することができる。
【００６１】
上記実施形態の説明においては、割り込み応答時間や、割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間は、いずれもメインループ実行部９０１による処理の中で測定され、記録されている。しかしながら、時間の測定および記録を、図１３や図１４（Ｂ）に示したように、プログラム実行開始の処理や、割り込み許可命令の処理のなかで直接的に行わず、独立した機能モジュール（ソフトウェアモジュール）である特定時間計測部を呼び出して、特定時間計測部により計測を行わせることもできる。この場合には、プログラム実行部であるメインループ実行部と特定時間計測部とは論理的には別のブロックである。また計測される特定時間は、割り込み応答時間や、割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間等のそれぞれのいずれかを示す。このようにして計測した特定の時間を記憶するメモリ９０５は、測定された特定の時間を記憶する特定時間記憶部と呼ぶことができる。
【００６２】
なおＰＬＣ２は、例えばそのメモリ９０５に、ユーザプログラムに記述されるデバイスが割り付けられたデバイス領域を有している（このデバイス領域を含む記メモリをデバイス記憶部とも呼ぶ）。デバイス領域には、図１を参照して説明したように、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー（補助リレー）、タイマー、カウンタ、データメモリ等の状態を示す情報であるデバイス値が記憶される。そして、上記実施例で測定された割り込み応答時間や、割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間等は、そのデバイス領域に記憶される。これにより、ユーザプログラムが"特定の時間"すなわち測定された割り込み応答時間や、割り込み禁止時間、割り込み待機時間、前処理時間、割り込みマスク時間等にアクセスしてその値を使用することができる。例えば、時間と関連付けて"特定の時間"を記録媒体に書き込んだり、外部モニタ（表示器等）に"特定の時間"を出力したりすることができる。
【００６３】
［変形例］
なお上記実施形態では、拡張ユニット４で生じた割り込み要因については、その割り込み要因発生時刻は拡張ユニット４のメモリ９１１に記録されるものとした。割り込み要因発生時刻９１２は基本ユニット３から読み取られて使用されることから、拡張ユニット４のメモリ９１１に代えて、基本ユニット３のメモリ９０５に、拡張ユニット４で生じた割り込み要因の割り込み要因発生時刻を記録するよう構成してもよい。この場合、割り込み検出部９１４は、割り込み検出信号により割り込み要因を基本ユニット３の割り込み制御部９０２に送信する。割り込み検出部９１４から割り込み検出信号を受信した割り込み制御部９０２は、時刻管理部９０７から現在時刻を取得し、割り込み要因発生時刻としてメモリ９０５に記録しておく。このように構成しても、上記実施形態と同様に、割り込み応答時間を測定することができる。この構成では、割り込み要因発生時刻の記録のために時刻管理部９１３を拡張ユニット４に設ける必要がない。
【００６４】
また、図１４（Ｂ）のステップＳ１４１５では、割り込み許可のプログラム上の場所を記録しているが、場所に代えて、または場所に加えて、その時の時刻を取得し、割り込み禁止時間と関連付けて記録してもよい。このようにすることで、場所に代えて、または場所に加えて、割り込み禁止を解除した時刻を特定することができる。
【００６５】
［第２実施形態］
割り込み禁止時間は、その最大値を測定できれば、割り込み応答時間の遅延の原因の解析に役立つ場合がある。また、最大値のみを記録するように構成すれば、割り込み禁止時間の記憶のために必要な記憶容量も抑制できる。そこで本実施形態では、割り込み禁止時間に関しては最大値を記録する。なお本実施形態では、上記実施形態と、その図１４（Ｂ）を図１５に置換した点において相違しており、他の構成や処理手順は共通であることから、共通の点についての説明は省略する。
【００６６】
図１５は、本実施形態による割り込み許可命令（ＥＩ）の実行時の処理である。メインループ実行部９０１が割り込み許可命令を実行すると、まず現在時刻を取得してステップＳ１４０３で記録された割り込み禁止時刻との差分をとって割り込み禁止時間を計算する（Ｓ１５０１）。そして、計算した割り込み禁止時間をメモリ９０５に記録する（Ｓ１５０３）。
【００６７】
次にメモリ９０５に記憶した割り込み禁止時間最大値と、ステップＳ１５０３で記録した今回の割り込み禁止時間とを比較する（Ｓ１５０５）。なお割り込み禁止時間最大値は、初期的にはたとえば０以下の値である。ステップＳ１５０５の判定で今回の割り込み禁止時間の方が大きいと判定された場合には、今回の割り込み禁止時間を新たな割り込み禁止時間最大値として記録する（Ｓ１５０７）。またあわせて、現在実行中の割り込み許可命令のプログラムカウンタの値、すなわちアドレスを取得してこれもメモリ９０５に記録する（Ｓ１５０９）。最後に割り込みを許可する（Ｓ１５１１）。すなわち割り込み許可／禁止状態を割り込み許可状態に設定する。ステップＳ１５０３で記録した今回の割り込み禁止時間は、割り込み許可命令の実行後は不要なので、図１５の手順を実行するごとに同じ記憶領域を使用することができる。
【００６８】
以上の手順により、割り込み禁止命令および割り込み許可命令により生じる割り込み禁止時間を計算し、そのうちの最大値を記録することができる。
【００６９】
なお上記変形例および本実施形態に関しても、第１の実施形態のまとめに記載した事項は適用される。
【図１】
2016110460.tif 000003
【図２】
2016110460.tif 000004
【図３】
2016110460.tif 000005
【図４】
2016110460.tif 000006
【図５】
2016110460.tif 000007
【図６】
2016110460.tif 000008
【図７】
2016110460.tif 000009
【図８】
2016110460.tif 000010
【図９】
2016110460.tif 000011
【図１０】
2016110460.tif 000012
【図１１】
2016110460.tif 000013
【図１２】
2016110460.tif 000014
【図１３】
2016110460.tif 000015
【図１４】
2016110460.tif 000016
【図１５】
2016110460.tif 000017