(57)【特許請求の範囲】
【請求項１】
割込実行タスクとして実行されるユーザプログラムの実行前には、演算用のレジスタに格納されたデータを所定のメモリ領域に退避操作するレジスタ退避処理を少なくとも含む前段処理が実行され、また割込実行タスクとして実行されるユーザプログラムの実行後には、所定のメモリ領域に退避されているデータを元に戻すことにより、演算用レジスタの内容を復元操作するレジスタ復元処理を少なくとも含む後段処理が実行されるＰＬＣであって、
レジスタ退避処理にて退避操作されかつレジスタ復元処理にて復元操作されるべきデータの格納されたレジスタを任意に指定するための操作対象レジスタ指定手段と、
割込実行タスクとして実行されるユーザプログラムの実行に際しては、操作対象レジスタ指定手段により指定された演算用レジスタに関してのみ、レジスタ退避処理及びレジスタ復元処理を実行する退避・復元実行手段とを有し、
操作対象レジスタ指定手段が、操作対象となるレジスタを指定するためのデータを予め登録するための操作対象登録レジスタを含み、かつ
退避・復元実行手段が、操作対象登録レジスタに登録されたデータで指定される演算用レジスタに関してのみ、レジスタ退避処理及びレジスタ復元処理を実行し、
退避・復元実行手段が、
所定の命令コードが割り当てられた退避操作命令と、
ユーザプログラム中において、退避操作命令が解読されるのに応答して、操作対象登録レジスタに登録されたデータで指定される演算用レジスタに関してのみ、レジスタ退避処理を実行する退避操作命令実行手段と、
所定の命令コードが割り当てられた復元操作命令と、
ユーザプログラム中において、復元操作命令が解読されるのに応答して、操作対象登録レジスタに登録されたデータで指定される演算用レジスタに関してのみ、レジスタ復元処理を実行する復元操作命令実行手段とを含む、ことを特徴とする割込機能を備えたＰＬＣ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、Ｉ／Ｏ割込、電断割込、定時割込等の割込機能を有するプログラマブル・コントローラ（以下、「ＰＬＣ」と言う）に関する。
【背景技術】
【０００２】
ＰＬＣには、電源供給部、入出力処理部、演算処理部、各種の特殊演算処理部等々と言った様々な装置構成要素を１つのハウジングに全て収容してなるオールインワン型のものと、それらの処理部のそれぞれを別々のハウジングに収容してなるビルディングブロック型のものとが存在する。
【０００３】
演算処理部の一例として、ビルディングブロック型ＰＬＣのＣＰＵユニットが図９に示されている。このＣＰＵユニット１は、所謂バックプレーン上に敷設された内部バス１０を介して、図示しない、電源ユニット、入出力ユニット、その他の特殊演算ユニット等々と接続されるものである。
【０００４】
同図に示されるように、ＣＰＵユニット１内には、ユーザプログラムメモリ（ＵＭ）１１、入出力メモリ（ＩＯＭ）１２、データ格納用不揮発性メモリ１３、専用ＩＣ１４、マイクロプロセッサ（ＭＰＵ）１５、システムプログラムメモリ（ＲＯＭ）１６、及びワークメモリ（ワークＲＡＭ）１７が含まれている。
【０００５】
ユーザプログラムメモリ１１には、所望の制御仕様に対応する１若しくは２以上のサイクル実行タスクとして実行されるユーザプログラムと、１若しくは２以上の割込実行タスクとして実行されるユーザプログラムとが、所定のユーザプログラム言語で記述され専用ＩＣ１４で実行可能な状態で格納されている。
【０００６】
入出力メモリ１２には、入力データ領域と出力データ領域とが設けられており、入力データ領域には図示しない外部入力端子列の入力信号に対応する入力データが格納され、出力データ領域には図示しない外部出力端子列の出力信号に対応する出力データとが格納される。
【０００７】
データ格納用不揮発性メモリ１３には、演算処理等に必要な各種の設定データのほか、異常通知の設定、異常ステータス等々が格納されている。
【０００８】
専用ＩＣ１４は、所定のユーザプログラム言語にて記述されたユーザプログラムを実行するプログラム実行機能が組み込まれたものである。
【０００９】
マイクロプロセッサ１５は、マイクロプロセッサ言語で記述された各種のシステムプログラムを実行することにより、ＰＬＣとしての各種の機能を実現するものである。それらの機能の代表的なものとしては、図示しない入出力ユニットの外部入力端子列から入力回路を介して入力データを読み込んで、入出力メモリ１２の入力データ領域に書き込む入力更新処理と、入出力メモリ１２の出力データ領域に格納された出力データを図示しない入出力ユニットの出力回路を介して外部出力端子列から外部へと送出する出力更新処理と、専用ＩＣ１４の介在の下に、ユーザプログラムメモリ１１からユーザプログラムを構成する各命令語を順次に読み出して実行する命令実行処理と、他のＰＬＣ、リモート入出力ターミナル、又はプログラム開発支援装置（ツール装置）等との間で通信を介してデータのやり取りを行う周辺サービス処理等を挙げることができる。
【００１０】
マイクロプロセッサ１５は、入力更新処理、出力更新処理、命令実行処理、周辺サービス処理等を繰り返し実行するように制御することでユーザプログラムに従って制御対象を制御する。この繰り返し実行する際の一回の繰り返しに要する時間をサイクルタイムと呼ぶ。
【００１１】
システムプログラムメモリ１６には、マイクロプロセッサ１５が上記の各機能（入力更新処理、出力更新処理、命令実行処理、周辺サービス処理等）を実現するのに必要なシステムプログラムが、所定のマイクロプロセッサ言語にて記述されマイクロプロセッサ１５で実行可能な状態で格納されている。
【００１２】
ワークメモリ１７は、マイクロプロセッサ１５がシステムプログラムメモリ１６からシステムプログラムを読み出して実行する際のワークエリアとして使用される。
【００１３】
上述のＰＬＣは、Ｉ／Ｏ割込、電断割込、定時割込等々のように、様々な割込要因を受け付け可能とされており、それらの割込要因が受け付けられたときには、所定の動作手順にしたがって割込処理が実行される。
【００１４】
従来のＣＰＵユニットにおける割込処理の動作手順を示すフローチャートが図１０示されている。同図に示されるように、割込処理の全体は、ＭＰＵ処理（ＭＰＵによって実行される処理という意味）に委ねられる前段処理Ａ（ステップ２０１〜２０３）と、専用ＩＣ処理（専用ＩＣによって実行される処理という意味）に委ねられる本体処理Ｂ（ステップ２０４）と、ＭＰＵ処理に委ねられる後段処理Ｃ（ステップ２０５〜２０７）とから構成されている。
【００１５】
なお、この例にあっては、前段処理Ａには、割込禁止処理（ステップ２０１）、レジスタ退避処理（ステップ２０２）、及び割込みプログラム実行前処理（ステップ２０３）が含まれている。また、後段処理Ｃには、割込みプログラム実行後処理（ステップ２０５）、レジスタ復元処理（ステップ２０６）、及び割込み解除処理（ステップ２０７）が含まれている。
【００１６】
より具体的には、図９に示されるように、Ｉ／Ｏ割込信号や電断割込信号（ＩＴ１）は内部バスに含まれる割込ラインを介して専用ＩＣ１４により受け付けられる。すると、専用ＩＣ１４では、前段処理Ａ（ステップ２０１〜２０３）の実行をマイクロプロセッサ１５に委ねるために、それらの割込信号をマイクロプロセッサ１５の割込入力端子へと受け流す。前段処理Ａ（ステップ２０１〜２０３）の実行が完了すると、マイクロプロセッサ１５は、本体処理Ｂ（ステップ２０４）の実行を専用ＩＣ１４に委ねるべく、プログラム実行権を専用ＩＣ１４に渡す。専用ＩＣ１４は、本体処理Ｂ（ステップ２０４）の実行が完了すると、後段処理Ｃ（ステップ２０５〜２０７）の実行を再びマイクロプロセッサに１５に委ねるべく、プログラム実行権をマイクロプロセッサ１５に渡す。
【００１７】
このようにして、図１０のフローチャートに示される一連の処理が実行される結果、図１１に示されるように、常時は、ユーザプログラムＵＰ１−１，ＵＰ１−２をそれぞれサイクル実行タスク（サイクリックに実行されるタスクの意味）として実行しつつも、Ｉ／Ｏ割込、定時割込、電断割込が発生したときには、そのときサイクル実行タスクとして実行中のユーザプログラムＵＰ１−２を実行中断し、その代わりに、ユーザプログラムＵＰ２を割込実行タスク（割込処理にて実行されるタスクの意味）として実行すると共に、ユーザプログラムＵＰ２の実行が完了するのを待って、割込前にサイクル実行タスクとして実行されていたユーザプログラムＵＰ１−２に復帰すると言った一連の動作が自動的に実行されるのである。このように、ユーザの作成する制御プログラムであるユーザプログラムは、上述のサイクル実行タスクとして、又は上述の割込実行タスクとして実行されることとなる。
【００１８】
ところで、上述のサイクル実行タスクとして実行されるユーザプログラムＵＰ１−１，ＵＰ１−２と割込実行タスクとして実行されるユーザプログラムＵＰ２とでは、プログラムの実行中に操作する演算用レジスタ群は両ユーザプログラム間で一部重複するのが通例である。
【００１９】
したがって、サイクル実行タスクとして実行されるあるユーザプログラムから割込実行タスクとして実行されるあるユーザプログラムへと実行対象プログラムを切り替えたり、逆に、割込実行タスクとして実行されるあるユーザプログラムからサイクル実行タスクとして実行されるあるユーザプログラムへと実行対象プログラムを切り替える際には、その切り替えの前後において、両プログラム間で共用するレジスタ群のデータ（記憶内容）をそのまま引き継ぐことはできない。
【００２０】
このように、互いに独立しかつ演算用レジスタを一部供用する２以上のプログラム間で、実行対象プログラムの相互切替が必要な場合、パソコン等の大容量メモリを保有する情報処理装置の分野においては、一般に「バンク」と称されるメモリ領域を各プログラム別に割り当てると共にこれに各プログラム毎に必要なレジスタ群を配置し、実行対象プログラムの切替が必要な場合には、バンク単位でレジスタ群を一括して切り替えると言った手法（以下、「バンク切り替え手法」と言う）が採用されている。
【００２１】
このようなバンク切り替え手法によれば、互いに独立しかつ演算用レジスタを一部供用する２以上のプログラム間で、実行対象プログラムの相互切替を行う場合、バンク単位でレジスタ群を一括して切り替えることから、プログラム間における実行の移行を瞬時に行うことができると言う利点がある。
【００２２】
しかし、ＰＬＣのように、比較的に小容量のメモリしか保有できない制御装置にあっては、上述のパソコン等の大容量メモリを保有する情報処理装置の場合とは異なり、各ユーザプログラム毎にレジスタ群配置用のバンクを割り当てることは困難であるから、実行対象プログラムの切り替えに際してバンク切り替え手法を採用することはできない。
【００２３】
そのため、従来、ＰＬＣにおいて、サイクル実行タスクとなるユーザプログラムと割込実行タスクとなるユーザプログラムとの間で、実行対象プログラムを切り替える場合には、演算用レジスタ群それ自体は共用しつつも、それらレジスタ群のデータ（記憶内容）については、所定の記憶領域（スタック）に退避又は所定の記憶領域（スタック）から復元すると言った手法（以下、「ネスティング手法」と言う）が採用されている（例えば、特許文献１参照）。図１０の例にあっては、前段処理を構成するレジスタ退避処理（ステップ２０２）及び後段処理を構成するレジスタ復元処理（ステップ２０６）が、ネスティング手法を実現するための処理に相当する。
【００２４】
このようなネスティング手法を採用したＰＬＣによれば、比較的に小容量のメモリしか保有できなくとも、プログラム間でのデータ干渉を回避しつつ、実行対象プログラムの切り替えを円滑に行わせることができる。
【特許文献１】特開平４−２０５０３１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２５】
サイクル実行タスクとなるユーザプログラムと割込実行タスクとなるユーザプログラムとの間で、実行対象プログラムを切り替えるに際して、ネスティング手法を採用する従来のＰＬＣにあっては、システム中の全ての演算用レジスタ或いは複数のユーザプログラム間で共用する可能性がある全ての演算用レジスタについて、レジスタ退避処理及びレジスタ復元処理を実行するように仕組まれている。
【００２６】
しかしながら、このような従来のＰＬＣにあっては、複数のユーザプログラム間で共用する可能性がある全ての演算用レジスタだけでも、少なくとも百数十個にも及ぶため、レジスタ退避処理及びレジスタ復元処理にかなりの時間がかかり、その分だけ割込開始から割込復帰に至る所要時間が長大化してしまう。その結果、割込実行タスクを実行するための割込処理によるサイクル実行タスク側の受ける影響が大きいと言う問題点が指摘されている。
【００２７】
ここで、サイクル実行タスク側の受ける影響とは、サイクルタイムが伸びることにより入力更新処理の遅れによる入力データの取りこぼしや、出力データの出力遅れ等が発生することによりサイクル実行タスクの実行精度が悪くなるということである。
【００２８】
この発明は、このような従来の問題点に着目してなされたものであり、その目的とするところは、割込開始から割込復帰に至る所要時間をできるだけ短縮することが可能な割込機能を備えたＰＬＣを提供することにある。
【００２９】
この発明のさらに他の目的並びに作用効果については、明細書の以下の記述を参照することにより、当業者であれば容易に理解されるであろう。
【課題を解決するための手段】
【００３０】
上述の技術的課題は、以下の構成を有する割込機能を有するＰＬＣにより解決することができると考えられる。
【００３１】
すなわち、この割込機能を有するＰＬＣは、割込実行タスクとして実行されるユーザプログラムの実行前には、演算用のレジスタに格納されたデータを所定のメモリ領域に退避操作するレジスタ退避処理を少なくとも含む前段処理が実行され、また割込実行タスクとして実行されるユーザプログラムの実行後には、所定のメモリ領域に退避されているデータを元に戻すことにより、演算用レジスタの内容を復元操作するレジスタ復元処理を少なくとも含む後段処理が実行されるようになっている。
【００３２】
加えて、このＰＬＣには、レジスタ退避処理にて退避操作されかつレジスタ復元処理にて復元操作されるべきデータの格納されたレジスタを任意に指定するための操作対象レジスタ指定手段と、割込用のユーザプログラムの実行に際しては、操作対象レジスタ指定手段により指定された演算用レジスタに関してのみ、レジスタ退避処理及びレジスタ復元処理を実行する退避・復元実行手段とが設けられている。
【００３３】
このような構成よりなるＰＬＣによれば、割込用のユーザプログラムの実行に際しては、操作対象レジスタ指定手段により指定された演算用レジスタに関してのみ、レジスタ退避処理及びレジスタ復元処理が実行されるから、割込処理によって実際に操作される演算用レジスタのみを操作対象レジスタ指定手段により予め指定しておきさえすれば、レジスタ退避処理及びレジスタ復元処理の所要時間を最小化して、割込開始から割込復帰に至る所要時間をできるだけ短縮することができる。
【００３４】
本発明に係るＰＬＣの好ましい実施の形態においては、操作対象レジスタ指定手段が、操作対象となるレジスタを指定するためのデータを予め登録するための操作対象登録レジスタを含み、かつ退避・復元実行手段が、操作対象登録レジスタに登録されたデータで指定される演算用レジスタに関してのみ、レジスタ退避処理及びレジスタ復元処理を実行する、ように構成される。
【００３５】
このような構成によれば、割込処理によって実際に操作される演算用レジスタのみを操作対象登録レジスタに登録しておきさえすれば、特に、ユーザプロクラム中において特別な指示を与えずとも、割込要因が発生すれば、操作対象として登録されたレジスタについてのみ、レジスタ退避処理及びレジスタ復元処理が実行されるから、登録対象となる操作対象レジスタの選定さえ確実でありさえすれば、割込開始から割込復帰に至る所要時間を最短とすることも可能となる。
【００３６】
このとき、退避・復元実行手段が、所定の命令コードが割り当てられた退避操作命令と、ユーザプログラム中において、退避操作命令が解読されるのに応答して、操作対象登録レジスタに登録されたデータで指定される演算用レジスタに関してのみ、レジスタ退避処理を実行する退避操作命令実行手段と、所定の命令コードが割り当てられた復元操作命令と、ユーザプログラム中において、復元操作命令が解読されるのに応答して、操作対象登録レジスタに登録されたデータで指定される演算用レジスタに関してのみ、レジスタ復元処理を実行する復元操作命令実行手段とを含む、ように構成してもよい。
【００３７】
このような構成によれば、退避操作命令及び復元操作命令をユーザプログラム中の適切な位置に配置することにより、操作対象登録レジスタに登録された演算用レジスタに関する退避タイミングや復元タイミング等をその時々の制御状況と任意に関連づけることができるため、この機能を利用すれば、割込処理の所要時間が問題とされない状況にあっては、例えば従前通りに大多数のレジスタに関して退避操作乃至復元操作を行わせつつも、特に、割込処理の所要時間が問題とされる状況についてのみ、退避操作命令及び復元操作命令をユーザプログラム中の適切な位置に配置することにより、退避操作及び復元操作される演算用レジスタを操作対象登録レジスタに登録されたものに限定することで、割込処理の所要時間を最小化することができる。
【００３８】
本発明に係るＰＬＣの好ましい他の実施の形態においては、操作対象レジスタ指定手段が、所定の命令コードが割り当てられ、かつそのオペランドには、レジスタ退避処理にて退避操作されるべき演算用レジスタを指定するためのデータかが記述される操作対象指定付の退避操作命令と、所定の命令コードが割り当てられ、かつそのオペランドには、レジスタ退避処理にて退避操作されるべき演算用レジスタを指定するためのデータが記述される操作対象指定付の退避操作命令とを含み、かつ退避・復元実行手段が、ユーザプログラム中において、操作対象指定付の退避操作命令が解読されるのに応答して、その命令のオペランドに記述されたデータで指定される演算用レジスタに関してのみ、レジスタ退避処理を実行する退避操作命令実行手段と、ユーザプログラム中において、操作対象指定付の復元操作命令が解読されるのに応答して、その命令のオペランドに記述されたデータで指定される演算用レジスタに関してのみ、レジスタ復元処理を実行する復元操作命令実行手段とを含む、ように構成される。
【００３９】
このような構成によれば、操作対象指定付の退避操作命令及び操作対象指定付の復元操作命令をユーザプログラム中の適切な位置に配置することにより、退避タイミングや復元タイミング等をその時々の制御状況と任意に関連づけることができることに加え、退避命令及び復元命令それ自体で、退避操作又は復元操作されるべきレジスタを指定できるため、この機能を利用すれば、例えば、退避と復元とで対をなす操作命令対を各割込要因別に設けると共に、それらに付記される操作対象レジスタの内容を異ならせることで、割込要因の種別に拘わらず、退避操作及び復元操作される演算用レジスタの個数を必要最小限に止めて、個々の割込要因に対応する割込処理のそれぞれについて、その開始から復帰に至る所要時間を最小とすることもできる。
【発明の効果】
【００４０】
本発明によれば、割込実行タスクとして実行されるユーザプログラムの実行に際しては、操作対象レジスタ指定手段により指定された演算用レジスタに関してのみ、レジスタ退避処理及びレジスタ復元処理が実行されるから、割込処理によって実際に操作される演算用レジスタのみを操作対象レジスタ指定手段により予め指定しておきさえすれば、レジスタ退避処理及びレジスタ復元処理の所要時間を最小化して、割込開始から割込復帰に至る所要時間をできるだけ短縮することができる。
【発明を実施するための最良の形態】
【００４１】
以下に、この発明に係る割込機能を有するＰＬＣの好適な実施の一形態を添付図面を参照しながら詳細に説明する。
【００４２】
本発明に係るＰＬＣのＣＰＵユニットのハードウェア構成図が図１に示されている。同図に示されるように、このＣＰＵユニット１は、従来例と同様に、ユーザプログラムメモリ（ＵＭ）１１、入出力メモリ（ＩＯＭ）１２、データ格納用不揮発性メモリ１３、専用ＩＣ１４、マイクロプロセッサ（ＭＰＵ）１５、システムプログラムメモリ（ＲＯＭ）１６、及びワークメモリ（ワークＲＡＭ）１７を含んで構成される。
【００４３】
ユーザプログラムメモリ１１には、所望の制御仕様に対応する１若しくは２以上のサイクル実行タスクとして実行されるユーザプログラムと、１若しくは２以上の割込実行タスクとして実行されるユーザプログラムとが、所定のユーザプログラム言語で記述された状態で格納されている。なお、ユーザプログラムメモリ１１には、後述するように、専用ＩＣ１４が前段処理Ａ及び後段処理Ｃをそれぞれ実行するためのユーザプログラムについても格納されている。
【００４４】
データ格納用不揮発性メモリ１３には、演算処理などに必要な各種の設定データの他、異常通知の設定、異常ステータス等々が格納されている。
【００４５】
専用ＩＣ１４は、所定のユーザプログラム言語にて記述されたユーザプログラムを実行するプログラム実行機能が組み込まれたものである。このプログラム実行機能によって、ユーザプログラムメモリ１１に格納された各種のユーザプログラムを実行することによって、前述のサイクル実行タスク及び割込実行タスクの各機能が実現される。加えて、この例にあっては、前述の前段処理Ａ及び後段処理Ｃについては、従来のようにマイクロプロセッサではなくて、専用ＩＣによって実現されるように構成されている。
【００４６】
マイクロプロセッサ１５は、プロセッサ言語で記述された各種のシステムプログラムを実行することにより、ＰＬＣとしての各種の機能を実現するものである。それらの機能の代表的なものとしては、図示しない入出力ユニットの外部入力端子列から入力回路を介して入力データを読み込んで、入出力メモリ１２の入力データ領域に書き込む入力更新処理と、入出力メモリ１２の出力データ領域に格納された出力データを図示しない入出力ユニットの出力回路を介して外部出力端子列から外部へと送出する出力更新処理と、プログラム実行権を専用ＩＣ１４へと委ねることによって、ユーザプログラムを構成する各命令語を専用ＩＣ１４に実行させる命令実行処理と、他のＰＬＣ、リモート入出力ターミナル、またはプログラム開発支援装置（ツール装置などとも言う）などとの間で通信を介してデータのやり取りを行う周辺サービス処理などを挙げることができる。マイクロプロセッサ１５は、入力更新処理、出力更新処理、命令実行処理、周辺サービス処理等を繰り返し実行するように制御することでユーザプログラムに従って制御対象を制御する。
【００４７】
システムプログラムメモリ１６には、マイクロプロセッサ１５が上記の各処理（入力更新処理、出力更新処理、命令実行処理、周辺サービス処理など）を実行するのに必要なシステムプログラムが、所定のマイクロプロセッサ言語にて記述された状態で格納されている。
【００４８】
ワークメモリ１７は、マイクロプロセッサ１５がシステムプログラムメモリ１６からシステムプログラムを読み出して実行する際のワークエリアとして使用される。
【００４９】
上述のＰＬＣ（ＣＰＵユニット１）は、Ｉ／Ｏ割込、電断割込、定時割込等々のように、様々な割込要因を受け付け可能とされており、それらの割込要因が受け付けられたときには、所定の動作手順に従って割込処理が実行される。
【００５０】
本発明に係るＰＬＣのＣＰＵユニットにおける割込処理の動作手順を示すフローチャートが図２に示されている。同図に示されるように、割込処理の全体は、前段処理Ａ（ステップ１０１〜１０３）と、本体処理Ｂ（ステップ１０４）と、後段処理Ｃ（ステップ１０５〜１０７）とから構成されている。そして、特にこの例にあっては、それらの処理Ａ〜Ｃは、いずれも専用ＩＣ処理に委ねられている。
【００５１】
なお、この例にあっては、前段処理Ａには、割込禁止処理（ステップ１０１）、レジスタ退避処理（ステップ１０２）、及び割込プログラム実行前処理（ステップ１０３）が含まれている。
【００５２】
本体処理Ｂは、割込実行タスクを実現するための要部となるべきものであり、その時々の割込要因に対応する割込実行タスク用のユーザプログラムを実行する割込プログラム実行処理（ステップ１０４）により構成されている。
【００５３】
後段処理Ｃには、割込プログラム実行後処理（ステップ１０５）、レジスタ復元処理（ステップ１０６）、及び割込禁止解除処理（ステップ１０７）が含まれている。
【００５４】
そして、上述の各処理の中で、前段処理Ａに含まれるレジスタ退避処理（ステップ１０２）と後段処理Ｃに含まれるレジスタ復元処理（ステップ１０６）によって、本発明の要部であるところの「退避・復元実行手段」の機能が実現されることとなる。
【００５５】
より具体的には、図１に戻って、Ｉ／Ｏ割込信号や電断割込信号（ＩＴ１）は、内部バス１０に含まれる割込ラインを介して専用ＩＣ１４により受け付けられる。すると専用ＩＣ１４では、ユーザプログラムメモリ（ＵＭ）１１から該当するプログラムを読み出して実行することによって、前段処理Ａ（ステップ１０１〜１０３）、本体処理Ｂ（ステップ１０４）、及び後段処理Ｃ（ステップ１０５〜１０７）を順次に実行するのである。
【００５６】
次に、本発明の要部であるところの「操作対象レジスタ指定手段」及び「退避・復元実行手段」について説明する。先に述べたように、このＣＰＵユニット１には、レジスタ退避処理（ステップ１０２）にて退避操作され、かつレジスタ復元処理（ステップ１０６）にて復元操作されるべきデータの格納された演算用レジスタを任意に指定するための「操作対象レジスタ指定手段」と、専用ＩＣ１４による割込用のユーザプログラムの実行に際しては、操作対象レジスタ指定手段により指定された演算用レジスタに関してのみ、レジスタ退避処理（ステップ１０２）及びレジスタ復元処理（ステップ１０６）を実行する「退避・復元実行手段」とが設けられている。これらの手段（「操作対象レジスタ指定手段」及び「退避・復元実行手段」）の各機能は、具体的には、様々な方式により実現することができる。以下の説明では、第１方式〜第３方式からなる３つの方式が示されている。
【００５７】
第１方式における退避／復元動作の説明図（その１）が図３に、同説明図（その２）が図４にそれぞれ示されている。
【００５８】
この第１方式を実現するためには、図６に示される操作対象登録レジスタが用意される。この操作対象登録レジスタをどこに用意するかについては、システムの設計事項であって、例えば、専用ＩＣ１４に設けることができる。
【００５９】
図６に示されるように、この操作対象登録レジスタ（ＲＧ）は１６ビットのレジスタで構成した場合の例を示している。ビット０をレジスタＡ指定エリア、ビット１をレジスタＢ指定エリア、ビット２をレジスタＣ指定エリア、ビット３をレジスタＤ指定エリア、ビット４をレジスタＥ指定エリア、ビット５をレジスタＦ指定エリアというように１６個のビットに１６個のレジスタ指定エリアが割り付けらている。レジスタ指定エリアの値が「１」の場合は当該エリアに対応するレジスタの内容（データ）を退避／復元が必要であることを示している。また、レジスタ指定エリアの値が「０」の場合は当該エリアに対応するレジスタの内容（データ）の退避／復元が不要であることを示している。この例では、ビット０とビット１が「１」であり、その他は「０」となっており、レジスタＡとレジスタＢは退避／復元が必要なレジスタであることを示している。このレジスタ指定エリアの値を「０」または「１」に設定するためには、例えば、図示しないプログラム開発支援装置をＣＰＵユニットに接続し、プログラム開発支援装置からの指示にしたがってＣＰＵユニット内の専用ＩＣ１４に設けた操作対象登録レジスタ（ＲＧ）に所定の値を書き込むように構成すれば良い。なお、この例では、操作対象登録レジスタ（ＲＧ）を１６ビットのレジスタで構成したため、退避／復元の操作対象として指定可能なレジスタは１６個までである。全ての演算用レジスタを退避／復元の操作対象とするためには、全ての演算用レジスタの個数分のビット数を割り付け可能なように操作対象登録レジスタ（ＲＧ）を構成すれば良い。例えば、１６ビットのレジスタを複数用いて構成しても良いし、あるいは、３２ビットのレジスタを複数用いて構成しても良い。
【００６０】
一方、図２のフローチャートに示されるレジスタ退避処理（ステップ１０２）及びレジスタ復元処理（ステップ１０６）においては、図６に示される操作対象登録レジスタ（ＲＧ）のレジスタ指定エリアの値が「１」であるレジスタのみを、退避処理及び復元処理する機能が組み込まれている。これらの選択的な退避処理及び復元処理を実現するためには、そのような処理手順を実現するためのユーザプログラムを、ユーザプログラムメモリ（ＵＭ）１１内の所定エリアに、メーカー側あるいはベンダー側などにおいて予め格納しておけばよいであろう。
【００６１】
図３には、図６において操作対象登録レジスタ（ＲＧ）のビット０からビット５までのレジスタ指定エリアが「１」の場合の例を示している。具体的には、ビット０に対応するレジスタＡからビット５に対応するレジスタＦまでの６個のレジスタが退避／復元が必要なレジスタとして指定された場合における退避／復元動作が示されている。
【００６２】
同図（ａ）に示されるように、退避時の動作にあっては、登録されたレジスタ（レジスタＡ〜レジスタＦ）に関して、それらのレジスタに格納されたデータは、入出力メモリ（ＩＯＭ）１２内に設けられたスタック領域（ＭＡ）へと格納（プッシュ）される。また、同図（ｂ）に示されるように、復元時の動作にあっては、登録されたレジスタ（レジスタＡ〜レジスタＦ）に関して、入出力メモリ（ＩＯＭ）１２内に設けられたスタック領域（ＭＡ）から各データの読出（ポップ）が行われ、それぞれ読み出されたデータは元のレジスタ（レジスタＡ〜レジスタＦ）へと格納され、復元動作が完了する。
【００６３】
図４には、図６において操作対象登録レジスタ（ＲＧ）のビット０、ビット２およびビット４のレジスタ指定エリアが「１」であり、その他のレジスタ指定エリアは「０」の場合の例を示している。具体的には、ビット０に対応するレジスタＡ、ビット２に対応するレジスタＣ、およびレジスタ４に対応するレジスタＥの３個のレジスタが退避／復元が必要なレジスタとして指定された場合における退避／復元動作が示されている。
【００６４】
同図（ａ）に示されるように、退避時の動作にあっては、レジスタＡ、レジスタＣ、レジスタＥの格納データのみが、スタック領域（ＭＡ）へと格納（プッシュ）されて、退避動作が完了する。この場合、レジスタＢ、レジスタＤ、レジスタＦに格納される各データは退避されずにそのままの状態に維持される。また、同図（ｂ）に示されるように、復元時の動作にあっては、スタック領域（ＭＡ）から該当するデータの読出（ポップ）が行われ、読み出された各データはそれぞれ該当するレジスタ（レジスタＡ、レジスタＣ、レジスタＥ）へと戻され、復元動作が完了する。
【００６５】
このように、この第１方式によれば、操作対象登録レジスタＲＧに予め退避／復元が必要なレジスタ（操作対象レジスタ）に該当するビット位置の値を「１」に設定することにより、選択的な退避／復元動作を実現することができる。従って、割込処理によって実際に操作される演算用レジスタのみを操作対象登録レジスタに予め操作対象レジスタとして登録しておきさえすれば、特に、ユーザプログラム中において特別な指示を与えずとも、割込要因が発生すれば、操作対象レジスタとして登録されたレジスタについてのみレジスタ退避処理（ステップ１０２）及びレジスタ復元処理（ステップ１０６）が実行されるから、登録対象となる操作対象レジスタの選定さえ確実でありさえすれば、割込開始から割込復帰に至る所要時間を最短とすることも可能となる。
【００６６】
第２方式における退避／復元動作の説明図が図５に示されている。第１方式にあっては、操作対象登録レジスタＲＧに操作対象レジスタとして登録されたレジスタについては、無条件で、退避処理及び復元処理が実行されたが、この第２方式においては、退避操作命令ＯＰ１１及び復元操作命令ＯＰ１２を新たに定義すると共に、これらの命令ＯＰ１１，ＯＰ１２が実行されたときに限り、操作対象登録レジスタＲＧの登録内容に基づく選択的な退避処理及び復元処理が実行されるようにしている。
【００６７】
このような退避操作命令ＯＰ１１及び復元操作命令ＯＰ１２を定義するためには、それらの命令に対応する実行プログラムが、ユーザプログラム言語で記述された状態において、ユーザプログラムメモリ（ＵＭ）１１に格納される。これらの命令実行プログラムについては、メーカー側あるいはベンダー側において、予めユーザプログラムメモリ（ＵＭ）１１の所定領域にインストールしておくことが考えられる。また、ユーザ側にあっては、これらの退避操作命令ＯＰ１１及び復元操作命令ＯＰ１２を、希望の条件で実行されるように任意のプログラム位置に挿入することによって、前述した選択的な退避処理及び復元処理を実現することができる。
【００６８】
すなわち、同図（ａ）に示されるように、退避時の動作にあっては、所定の入力条件（図では、ラダー図上の入力接点記号で示す）が成立すると共に、退避操作命令ＯＰ１１が専用ＩＣ１４によって解読実行され、その結果、予め操作対象レジスタとして登録されたレジスタ（レジスタＡ、レジスタＣ、レジスタＥ）のみが、スタック領域（ＭＡ）へと格納（プッシュ）される。また、同図（ｂ）に示されるように、所定の入力条件（図ではラダー図上の入力接点記号で示す）が成立すると共に、復元操作命令ＯＰ１２が専用ＩＣ１４によって実行され、その結果、スタック領域（ＭＡ）からデータの読出（ポップ）が行われ、こうして読み出された各データは、それぞれ該当する元のレジスタ（レジスタＡ、レジスタＣ、レジスタＥ）に戻され、復元動作が完了する。
【００６９】
このように、この第２方式によれば、ユーザプログラム中に記述された退避操作命令ＯＰ１１及び復元操作命令ＯＰ１２が解読実行されたときに限り、操作対象登録レジスタＲＧの登録内容に基づく選択的な退避処理及び復元処理が実行されるから、例えば、これらの命令ＯＰ１１，ＯＰ１２が実行されない時には、従前通りに、全てのレジスタ（レジスタＡ〜レジスタＦ）に関して、退避処理及び復元処理が実行されるようにしておき、退避操作命令ＯＰ１１及び復元操作命令ＯＰ１２が解読実行された時に限って、操作対象登録レジスタＲＧの登録内容に基づく選択的な退避処理及び復元処理が実行されるようにすれば、使用される割込プログラムの種類や性質に応じて、あるいはその時々の制御状態に応じて、操作対象レジスタの数を必要最小限に留め、これにより、より柔軟性をもって、割込開始から割込復帰に至る所要時間を最短とすることが可能となる。
【００７０】
なお、以上説明した第１方式及び第２方式においては、全ての割込要因に関して、操作対象登録レジスタＲＧについては共通として話を進めてきたが、割込要因別に専用の操作対象登録レジスタＲＧを設けると共に、各割込要因が発生するごとに、該当する操作対象登録レジスタを参照するようにすれば、各割込要因ごとに、操作されるべきレジスタ数をきめ細かく調整できるから、個々の割込要因に合わせて操作対象レジスタ数を必要最小限に留めることによって、退避処理及び復元処理における無駄時間を削減して、割込開始から割込復帰に至る所要時間を割込要因ごとに最短とすることも可能となる。
【００７１】
第３方式における退避／復元動作の説明図が図７に、退避／復元命令の説明図が図８にそれぞれ示されている。
【００７２】
図７に示されるように、この第３方式にあっては、操作対象指定付の退避操作命令ＯＰ２１及び操作対象指定付の復元操作命令ＯＰ２２を新たに定義すると共に、これらの命令ＯＰ２１，ＯＰ２２が実行された時に限り、それらの命令のオペランドで指定されたレジスタに関してのみ、選択的な退避処理及び復元処理が実行されるようにしている。すなわち、前述の第１方式及び第２方式においては、操作対象となるレジスタの指定は、図示しないプログラム開発支援装置をＣＰＵユニットに接続し、プログラム開発支援装置からの指示にしたがってＣＰＵユニット内の専用ＩＣ１４に設けた操作対象登録レジスタ（ＲＧ）に所定の値を書き込むように構成することで可能とした。この第３方式においては、操作対象となるレジスタの指定は、命令実行時に命令のオペランドで指定されたレジスタに基づいて行われるのである。
【００７３】
図８に示されるように、この操作対象指定付の命令ＯＰ２１，ＯＰ２２は、同図（ａ）に示されるように、命令コードと、第１オペランドと、第２オペランドとから構成される。命令コードは、その命令語が退避操作命令であることを示すコード（この例では、“ＥＶＲＧ”）からなる。第１オペランドには、操作対象レジスタを指定する。その指定方法の一例が同図（ｂ）に示されている。この例では、操作対象登録レジスタ（ＲＧ）を１６ビットのレジスタで構成している。ビット０をレジスタＡ指定エリア、ビット１をレジスタＢ指定エリア、ビット２をレジスタＣ指定エリア、ビット３をレジスタＤ指定エリア、ビット４をレジスタＥ指定エリア、ビット５をレジスタＦ指定エリアというように１６個のビットに１６個のレジスタ指定エリアが割り付けられている。レジスタ指定エリアの値が「１」の場合は当該エリアに対応するレジスタを退避対象とする。また、レジスタ指定エリアの値が「０」の場合は当該エリアに対応するレジスタを退避対象としない。同図（ｂ）の例では、レジスタＢとレジスタＦの２つのレジスタを退避対象とし、その他のレジスタは退避対象としないことを示している。この例の場合、ビット０をＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）とすると、１６ビットレジスタのビット列の内容を数値で表現すると０ｘ００２２（１６進数）となる。したがって、レジスタＢとレジスタＦの２つのレジスタのみを退避対象とする場合は、退避操作命令ＥＶＲＧの第１オペランドには数値として０ｘ００２２（１６進数）を指定することになる。
【００７４】
一方、第２オペランドには、スタック領域（ＭＡ）の格納位置を示すスタックポインタアドレスが記述され、このスタックポインタアドレスに従って、スタック領域（ＭＡ）に関するデータ格納（プッシュ）及びデータ読み出し（ポップ）のための制御が実行される。図８（ａ）の例では、スタックポインタアドレスとしてスタック領域（ＭＡ）の先頭番地（００００）をあらわすＭＡ００００が指定されている。なお、復元操作命令については図示していないが、退避操作命令と同様の命令フォーマットで構成すれば良い。例えば、その命令語が復元操作命令であることを示すコードとして“ＲＴＲＧ”を用い、第１オペランドには復元対象となる操作対象レジスタを指定し、第２オペランドには復元対象となるデータが格納されているスタックポインタアドレスを指定するように構成すれば良い。
【００７５】
再び、図７に戻って、同図（ａ）に示されるように、退避時の動作にあっては、以上説明した操作対象指定付の退避操作命令ＯＰ２１が解読実行されると、いま仮に、図８（ａ）に示されるように、第１オペランドに０ｘ００２２が記述されていれば、その値に対応するビット列（００００  ００００  ００１０  ００１０）で「１」に対応するレジスタ（レジスタＢ、レジスタＦ）に関してのみ、スタック領域（ＭＡ）へとデータは格納（プッシュ）されて、退避動作が完了する。一方、同図（ｂ）に示されるように、復元時の動作にあっては、操作対象指定付の復元操作命令ＯＰ２２が解読実行されると、その第１オペランドで指定されたレジスタＢ及びレジスタＦに関してのみ、スタック領域（ＭＡ）からデータの読出（ポップ）が行われ、読み出されたデータは元のレジスタ（レジスタＢ、レジスタＦ）に格納されて、復元動作が完了する。
【００７６】
このように、この第３方式によれば、操作対象指定付の退避操作命令ＯＰ２１及び操作対象指定付の復元操作命令ＯＰ２２をユーザプログラム中の適切な位置に配置することにより、退避タイミングや復元タイミングなどをその時々の制御状況と任意に関連づけることができることに加え、退避命令及び復元命令それ自体で、退避操作又は復元操作されるべきレジスタを指定できるため、この機能を利用すれば、例えば、退避と復元とで対をなす操作命令対を各割込要因別に設けると共に、それらに付記される操作対象命令の内容を異ならせることで、割込要因の種別に拘わらず、退避操作及び復元操作される演算用レジスタの個数を必要最小限に留めて、個々の割込要因に対応する割込処理のそれぞれについて、その開始から復帰に至る所要時間を最小とすることもできる。
【００７７】
なお、以上説明した実施の形態では、ＣＰＵユニットにおける割込処理の動作手順として図２のように前段処理Ａ、本体処理Ｂ、後段処理Ｃを専用ＩＣ処理とする例で示した。しかし、本発明は、これに限ることなく、前段処理Ａ、本体処理Ｂ、後段処理Ｃを全てマイクロプロセッサ（ＭＰＵ）で実行するように構成した場合にも適用できる。また、本発明は、前段処理Ａと後段処理Ｃをマイクロプロセッサ（ＭＰＵ）で実行させ、本体処理Ｂを専用ＩＣで実行するように構成した場合にも適用できる。
【産業上の利用可能性】
【００７８】
本発明によれば、割込用のユーザプログラムの実行に際しては、操作対象レジスタ指定手段により指定された演算用レジスタに関してのみ、レジスタ退避処理及びレジスタ復元処理が実行されるから、割込処理によって実際に操作される演算用レジスタのみを操作対象レジスタ指定手段により予め指定しておきさえすれば、レジスタ退避処理及びレジスタ復元処理の所要時間を最小化して、割込開始から割込復帰に至る所要時間をできるだけ短縮することができる。
【図面の簡単な説明】
【００７９】
【図１】本発明に係るＰＬＣのＣＰＵユニットのハードウェア構成図である。
【図２】本発明に係るＰＬＣのＣＰＵユニットにおける割込処理の動作手順を示すフローチャートである。
【図３】第１方式における退避／復元動作の説明図（その１）である。
【図４】第１方式における退避／復元動作の説明図（その２）である。
【図５】第２方式における退避／復元動作の説明図である。
【図６】操作対象登録レジスタの構成図である。
【図７】第３方式における退避／復元動作の説明図である。
【図８】退避操作命令の説明図である。
【図９】従来のＰＬＣのＣＰＵユニットのハードウェア構成図である。
【図１０】従来のＣＰＵユニットにおける割込処理の動作手順を示すフローチャートである。
【図１１】ＰＬＣのＣＰＵユニットにおけるサイクル実行タスク動作と割込実行タスク動作との関係を示す説明図である。
【符号の説明】
【００８０】
１            ＣＰＵユニット
１０          内部バス
１１          ユーザプログラムメモリ（ＵＭ）
１２          入出力メモリ（ＩＯＭ）
１３          データ格納用不揮発性メモリ
１４          専用ＩＣ
１５          マイクロプロセッサ（ＭＰＵ）
１６          システムプログラムメモリ（ＲＯＭ）
１７          ワークメモリ（ワークＲＡＭ）
Ａ            前段処理
Ｂ            本体処理
Ｃ            後段処理
ＩＴ１        Ｉ／Ｏ及び電断・割込信号
ＩＴ２        定時割込信号
ＲＧ          操作対象登録レジスタ
ＲＧ１        第１の領域
ＲＧ２        第２の領域
ＭＡ          スタック領域
ＯＰ１１      退避操作命令
ＯＰ１２      復元操作命令
ＯＰ２１      操作対象指定付の退避操作命令
ＯＰ２２      操作対象指定付の復元操作命令
ＵＰ１−１，ＵＰ１−２      サイクル実行タスクであるユーザプロクラム
ＵＰ２                      割込実行タスクであるユーザプログラム
【図１】
0005088566.tif 000002
【図２】
0005088566.tif 000003
【図３】
0005088566.tif 000004
【図４】
0005088566.tif 000005
【図５】
0005088566.tif 000006
【図６】
0005088566.tif 000007
【図７】
0005088566.tif 000008
【図８】
0005088566.tif 000009
【図９】
0005088566.tif 000010
【図１０】
0005088566.tif 000011
【図１１】
0005088566.tif 000012