(57)【要約】      （修正有）【課題】高速で処理する必要のあるプログラムブロックのスキャン時間を確保する実行処理装置を提供する。【解決手段】プログラムブロックを順次に実行すると共に、そのプログラムブロックで処理されたデータを更新処理するＩ／Ｏデータ更新処理を繰返す機構からなる通常スキャン系と、この通常スキャン系を実行する間に一定時間のバックグランドでバックグランドプログラムブロックを実行するバックグランドスキャンを設け、このバックグランドプログラムブロックを、該一定時間だけ登録されている順に順次に実行し、一定時間に達するとその段階でプログラム実行処理を中断し、次のバックグランドスキャンが到来したときに続きを実行するようにすると共に、全てのバックグランドプログラムブロックが実行されたときに、その実行されたデータの更新処理を行うバックグランドＩ／Ｏデータ更新処理を繰返す機構からなるバックグランドスキャン系と、を備えてなる。【選択図】  図１
2005267335.tif 000002
【特許請求の範囲】
【請求項１】
登録されている単一又は複数のプログラムブロックを順次に実行すると共に、そのプログラムブロックで処理されたデータを更新処理するＩ／Ｏデータ更新処理を繰返す機構からなる通常スキャン系と、
前記通常スキャン系に、前記単一又は複数のプログラムブロックを実行する間に一定時間のバックグランドで実行する単一又は複数のバックグランドプログラムブロックを実行するバックグランドスキャンを設け、
前記一定時間で実行する前記単一又は複数のバックグランドプログラムブロックは、該一定時間だけ登録されている順に順次に実行し、一定時間に達するとその段階でプログラム実行処理を中断し、次の前記バックグランドスキャンが到来したときに続きを実行するようにすると共に、登録されている全ての複数のバックグランドプログラムブロックが実行されたときに、その実行されたデータの更新処理を行うバックグランドＩ／Ｏデータ更新処理を繰返す機構からなるバックグランドスキャン系と、
を備えてなるプログラム実行処理装置。
【請求項２】
前記通常スキャン系に設けたバックグランドスキャンは、複数設けるようにしたことを特徴とする請求項１に記載のプログラム実行処理装置。
【請求項３】
登録されている単一又は複数のプログラムブロックを順次に実行すると共に、そのプログラムブロックで処理されたデータを更新処理するＩ／Ｏデータ更新処理を繰返す機構からなる通常スキャン系と、
前記通常スキャン系に、前記単一又は複数のプログラムブロックを実行する間に一定時間のバックグランドで実行する単一又は複数のバックグランドプログラムブロックを実行するバックグランドスキャンを設け、
前記一定時間で実行する前記単一又は複数のバックグランドプログラムブロックは、前記一定時間を前記単一又は複数のバックグランドプログラムブロックで等分し、その等分された一定時間づつ前記単一又は複数のバックグランドプログラムブロックを切り替えて実行すると共に、実行が終了したバックグランドプログラムブロック毎にその実行されたデータの更新処理を行うバックグランドＩ／Ｏデータ更新処理を繰返す機構からなるバックグランドスキャン系と、
を備えてなるプログラム実行処理装置。
【請求項４】
前記通常スキャン系に設けたバックグランドスキャンは、複数設けるようにしたことを特徴とする請求項３に記載のプログラム実行処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行処理装置に関し、詳しくはストアードプログラムの繰り返し演算方式のプログラマブルコントローラのＣＰＵモジュールのプログラム実行処理装置に関する。
【背景技術】
【０００２】
従来技術におけるプログラマブルコントローラは、図５に示すように、プログラム実行処理とＩＯデータ更新処理を行うＣＰＵモジュール１１１と、外部との入出力を行うＩＯチャネルを持つＩＯモジュール（又は演算機能付きの高機能ＩＯモジュール１１３ａ、１１３ｂ）１１２ａ、１１２ｂをバス１１４を介して接続して構成されている。
【０００３】
図６は、プログラマブルコントローラのＣＰＵモジュール１１１の動作を示したもので、ストアーされたプログラムの実行１１５とＩＯデータ更新１１６を繰返す機構になっている。この繰返し１回を１スキャンと呼ぶ。
ストアーされるプログラムは、処理単位ごとに分割されている。分割されたプログラムをプログラムブロックと呼ぶ。このプログラムブロックは、プログラムから起動要求と停止要求を行うことができる。プログラムブロックの実行／非実行制御はプログラム実行処理装置で行われる。
【０００４】
図７（Ａ）は、このプログラムブロックの実行／非実行制御を示したもので、高速応答が必要なプログラムブロックＡ（１１５）と、Ｉ／Ｏデータ更新処理１１６とから構成されている。このように高速応答のみのプログラムブロックＡ（１１５）のみの場合には、プログラムブロックＡ（１１５）のみを実行すればよいため、その入出力応答は速くなる。
図７（Ｂ）は、プログラム全体が、高速の入出力応答時間が必要なプログラムブロックＡと、一回の処理時間が長いファイルアクセス処理を行うプログラムブロックＢと、Ｉ／Ｏデータ更新処理とで構成されている。
このような構成において、プログラムブロックＡ（１１５）は、高速応答が必要なプログラムブロックであるので、その実行は高速に行われるが、プログラムブロックＢ（１１７）はファイルアクセス処理を行う関係上その処理全体の時間は長くなる。
従って、あるタイミングでプログラムブロックＢ（１１７）が起動すると、一般的にスキャンタイムが大きく増大する。スキャンタイムが増大することで、Ｉ／Ｏデータ更新処理１１６の時間間隔が長くなり、入出力応答時間が増大してしまう。この結果、高速の入出力応答時間が必要なプログラムブロックＡ（１１５）は、入出力応答時間の増大により、本来必要とされる高速応答ができなくなる。高速応答ができなくなることで、プログラマブルコントローラにより制御されている装置自身の制御が、パフォーマンス不足になる可能性がある。
【０００５】
図８は、プログラマブルコントローラにより制御される装置の遷移状態により、処理ごとに分割されているプログラムブロックの起動数が５個から３個に変動したときのスキャンタイムを表したもので、
図８（Ａ）に示すように、プログラムブロック１〜５を実行すれば当然に、それぞれの処理する時間が必要であるため、そのスキャンタイムは長くなる。
又、図８（Ｂ）に示すように、プログラムブロック１〜３を実行すれば、プログラムブロック１〜５を実行したときに比べて、そのスキャンタイムは短くなる。
このように、プログラムブロック１〜５が最大起動数であり、プログラムブロック１〜３が最低起動数であるとすると、その最大起動数の時と、最低起動数の時では、スキャンタイムが変動する。スキャンタイムの変動により、入出力応答時間が変動して、プログラマブルコントローラにより制御されている装置自身の制御が不安定になる可能性がある。
【特許文献１】特開平２０００−３１１００８号公報（第２頁  第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来技術で説明したプログラマブルコントローラにおいて、高速応答が必要なプログラムブロックの中に低速応答でも良いプログラムブロックが混在しているため、プログラムブロックの起動が他のプログラムブロックの入出力応答時間に影響を与えてしまうという問題がある。
【０００７】
又、高速応答が必要なプログラムブロックと低速応答でも良いプログラムブロックを混在して処理すると、そのスキャンタイムが安定しなくなるという問題もある。
【０００８】
従って、プログラムブロックの起動が他のプログラムブロックの入出力応答時間に影響を与えないようにすると共に、スキャンタイムを安定させるようにしたプログラム実行処理装置に解決しなければならない課題を有する。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本願発明のプログラム実行処理装置は、次に示す構成にしたことである。
（１）プログラム実行処理装置は、登録されている単一又は複数のプログラムブロックを順次に実行すると共に、そのプログラムブロックで処理されたデータを更新処理するＩ／Ｏデータ更新処理を繰返す機構からなる通常スキャン系と、前記通常スキャン系に、前記単一又は複数のプログラムブロックを実行する間に一定時間のバックグランドで実行する単一又は複数のバックグランドプログラムブロックを実行するバックグランドスキャンを設け、前記一定時間で実行する前記単一又は複数のバックグランドプログラムブロックは、該一定時間だけ登録されている順に順次に実行し、一定時間に達するとその段階でプログラム実行処理を中断し、次の前記バックグランドスキャンが到来したときに続きを実行するようにすると共に、登録されている全ての複数のバックグランドプログラムブロックが実行されたときに、その実行されたデータの更新処理を行うバックグランドＩ／Ｏデータ更新処理を繰返す機構からなるバックグランドスキャン系と、を備えてなる。
（２）前記通常スキャン系に設けたバックグランドスキャンは、複数設けるようにしたことを特徴とする（１）に記載のプログラム実行処理装置。
【００１０】
（３）プログラム実行処理装置は、登録されている単一又は複数のプログラムブロックを順次に実行すると共に、そのプログラムブロックで処理されたデータを更新処理するＩ／Ｏデータ更新処理を繰返す機構からなる通常スキャン系と、前記通常スキャン系に、前記単一又は複数のプログラムブロックを実行する間に一定時間のバックグランドで実行する単一又は複数のバックグランドプログラムブロックを実行するバックグランドスキャンを設け、前記一定時間で実行する前記単一又は複数のバックグランドプログラムブロックは、前記一定時間を前記単一又は複数のバックグランドプログラムブロックで等分し、その等分された一定時間づつ前記単一又は複数のバックグランドプログラムブロックを切り替えて実行すると共に、実行が終了したバックグランドプログラムブロック毎にその実行されたデータの更新処理を行うバックグランドＩ／Ｏデータ更新処理を繰返す機構からなるバックグランドスキャン系と、を備えてなる。
（４）前記通常スキャン系に設けたバックグランドスキャンは、複数設けるようにしたことを特徴とする（３）に記載のプログラム実行処理装置。
【発明の効果】
【００１１】
本発明のプログラム実行処理装置は、高速応答が必要なプログラムブロックを通常スキャン系にし、且つ一定時間のみをバックグランドスキャンに割り振ることで、高速応答が必要なプログラムブロックの実行時間が延長されても、バックグランドスキャンに割り振る時間は一定時間のみであるから、その時間のみが高速応答が必要なプログラムブロックに影響することになり、これは高速応答が必要なプログラムブロックの実行の許容範囲内でバックグランドスキャンの一定時間を設定しておけば、装置全体のパフォーマンスを落すことなく維持できる。
【００１２】
又、プログラムブロックの中で、通常スキャン系のスキャン毎に動作しないもの又は安定応答が不要なものをバックグランドスキャン系に登録することで、通常スキャン系におけるスキャンを安定させることができ、これにより装置の制御が安定する。
【発明を実施するための最良の形態】
【００１３】
以下、本発明のプログラム実行処理装置について、図面を用いて詳細に説明する。
【実施例１】
【００１４】
本発明の第１の実施例のプログラム実行処理装置は、図１に示すように、通常のスキャンをしてプログラムブロックを実行するプログラム実行処理を行う通常スキャン系１１と、この通常スキャン系１１とは別にバックグランドスキャンと呼ぶプログラム実行処理を行うバックグランドスキャン系２１とから構成されている。
通常スキャン系１１は、高速応答が必要なプログラムブロック１２で構成され、通常のスキャンをしてプログラムブロック１２を実行する、所謂、ラダーブロック実行には、プログラムをブロック化したプログラムブロック１２、実施例においてプログラムブロックBLOCKＡ〜BLOCKＨ（１２）を実行し、その次に一定時間割り当てられているバックグランドスキャン系２１をアクセスするバックグランドスキャン１３が存在し、最後に通常スキャンで行われたＩ／Ｏデータを処理する通常スキャンＩ／Ｏデータ更新処理１４が存在する。
通常スキャン系１１で実行するプログラムブロックBLOCKＡ〜BLOCKＨ（１２）は、それぞれのスキャンで実行したいプログラムブロックを任意に登録変更することが可能で、スキャン毎に登録されたプログラムブロックBLOCKＡ〜BLOCKＨ（１２）が実行されることになる。又、プログラムブロックBLOCKＡ〜BLOCKＨ（１２）のそれぞれが実行する時間は、みな同じでなく、それぞれのプログラムブロック毎に実行時間が異なる。
バックグランドスキャン１３は通常のスキャンの一部で一定時間Ｔが割り当てられており、この一定時間Ｔは任意に設定可能になっている。
バックグランドスキャン系２１は、比較的低速応答でもよいプログラムブロック２２であり、バックグランドで実行するプログラムブロックBLOCKＩ〜BLOCKＯ（２２）で構成され、これらのプログラムブロックBLOCKＩ〜BLOCKＯ（２２）の次にバックグランドスキャンで行われたＩ／Ｏデータを更新処理するバックグランドスキャンＩ／Ｏデータ更新処理２３からなる。
【００１５】
バックグランドで実行するプログラムブロックBLOCKＩ〜BLOCKＯ（２２）は、予め任意に登録できる構成になっており、プログラムブロックBLOCKＩ〜BLOCKＯ（２２）のそれぞれが実行する時間は、みな同じでなく、それぞれのプログラムブロック毎に実行時間が異なる。
【００１６】
このような構成において、通常スキャン系１１のバックグランドスキャン１３に割り当てられた一定時間Ｔで、バックグランドスキャン系２１の登録されているプログラムブロックBLOCKＩ〜BLOCKＯ（２２）を実行する。一定時間Ｔに達した場合は、プログラムブロックの途中であっても処理を一時中断して、通常スキャン系１１の次のスキャンのバックグランドスキャン１３に残りの処理を委ねる。
【００１７】
このバックグランドスキャン１３で行う一定時間Ｔ内でのプログラム動作は、登録されているバックグランドで実行するプログラムブロックBLOCKＩ〜BLOCKＯ（２２）を順次に一定時間Ｔだけ実行する順次実行パターンと、登録されているバックグランドで実行するプログラムブロックBLOCKＩ〜BLOCKＯ（２２）を一定時間Ｔで均等割付し、その均等割付した割り付け時間Ｔ１のみを各プログラムブロックBLOCKＩ〜BLOCKＯ（２２）のそれぞれを実行するＴＳＳパターンとがある。
【００１８】
順次実行パターンは、図２に示すように、登録されている順にバックグランドで実行するプログラムブロックBLOCKＩ〜Ｏ（２２）を実行し、一定時間Ｔに達するとその段階でプログラム実行処理を中断し、通常スキャン系１１の次のバックグランドスキャン１３で続きを実行する。
バックグランドスキャン系２１に登録されているプログラムブロックBLOCKＩ〜BLOCKＯ（２２）の全ての実行が終了すると、登録されているプログラムブロックBLOCKＩ〜BLOCKＯ（２２）が扱うＩ／Ｏのデータ更新処理を行い、再び登録順にプログラムブロック２２を実行して、この動作を繰返す。
【００１９】
ＴＳＳ実行パターンは、図３に示すように、通常スキャン系１１におけるバックグランドスキャン１３における一定時間Ｔを、バックグランドスキャン系２１に登録されているバックグランドで実行するプログラムブロックBLOCKＩ〜BLOCKＯ（２２）の数で等分して均等割付し、均等割付された一定時間Ｔ１づつプログラムブロックBLOCKＩ〜BLOCKＯ（２２）を切り替えて実行する。
そして、通常スキャン系１１のバックグランドスキャン１３を繰返し、最後まで実行されたプログラムブロックはＩ／Ｏ更新処理を経て再び先頭から実行を繰返し、この動作を繰返す。
このようにすることで、たとえバックグランドで処理するプログラムブロックであってもある程度の高速性を望むプログラムブロックの場合には、登録順をかえるといった作業がなくして、高速性を達成することができるのである。
【００２０】
このように、順次実行パターン、或いはＴＳＳ実行パターンでも、高速応答が必要なプログラムブロックを通常スキャン系１１にし、且つ一定時間のみをバックグランドスキャン１３に割り振ることで、高速応答が必要なプログラムブロック１２の実行時間が延長されても、バックグランドスキャン１３に割り振る時間は一定時間Ｔのみであるから、その時間のみが高速応答が必要なプログラムブロック１２に影響することになる。即ち、高速応答が必要なプログラムブロック１２の実行の許容範囲内でバックグランドスキャン１３の一定時間Ｔを設定しておけば、装置全体パフォーマンスの劣化等が起こらないことになる。
【００２１】
更に、プログラムブロック１２の中で、通常スキャン系１１のスキャン毎に動作しないもの又は安定応答が不要なものをバックグランドスキャン系２１に登録することで、通常スキャン系１１におけるスキャンを安定させることにができ、これにより装置の制御が安定する。
【００２２】
このようにして、本発明を用いたプログラマブルコントローラにおいては、従来よりも安価で低速なプログラマブルコントローラでも装置自体の制御が可能になり、又、処理分散のプログラミングを行う必要がなくなり、開発工数を削減できるというものである。
【実施例２】
【００２３】
次に、本発明の第２の実施例のプログラム実行処理装置について、図面を参照して説明する。
【００２４】
第２の実施例のプログラム実行処理装置は、図４に示すように、通常スキャン系１１にバックグランドスキャンを複数個存在させた構成にすることで優先順位を様々に変えることができるようにしたものであり、通常のスキャンをしてプログラムブロック１２を実行するプログラム実行処理を行う通常スキャン系１１と、この通常スキャン系１１とは別にバックグランドスキャンと呼ぶプログラム実行処理を行うバックグランドスキャン系２１とから構成されている。
通常スキャン系１１は、高速応答が必要なプログラムブロック１２で構成され、通常のスキャンをしてプログラムブロックを実行する、所謂、ラダーブロック実行には、プログラムをブロック化したプログラムブロック、実施例においてプログラムブロックBLOCKＡ〜BLOCKＨ（１２）を実行し、その次に一定時間割り当てられているバックグランドスキャン系２１をアクセスする複数のバックグランドスキャン（１）１３Ａ、バックグランドスキャン（２）１３Ｂが存在し、最後に通常スキャンで行われたＩ／Ｏデータを処理する通常スキャンＩ／Ｏデータ更新処理１４が存在する。
通常スキャン系１１で実行するプログラムブロックBLOCKＡ〜BLOCKＨ（１２）は、それぞれのスキャンで実行したいプログラムブロックを任意に登録変更することが可能で、スキャン毎に登録されたプログラムブロックBLOCKＡ〜BLOCKＨ（１２）が実行されることになる。又、プログラムブロックBLOCKＡ〜BLOCKＨ（１２）のそれぞれが実行する時間は、みな同じでなく、それぞれのプログラムブロック毎に実行時間が異なる。
バックグランドスキャン（１）１３Ａ及びバックグランドスキャン（２）１３Ｂは通常のスキャンの一部で一定時間（１）Ｔ及び一定時間（２）Ｔが割り当てられており、この一定時間Ｔは任意に設定可能になっている。
バックグランドスキャン系２１は、比較的低速応答でもよいプログラムブロックであり、バックグランドスキャン（１）１３Ａで実行するプログラムブロックBLOCKＩ〜BLOCKＯ（２２Ａ）で構成され、これらのプログラムブロックBLOCKＩ〜BLOCKＯ（２２Ａ）の次にバックグランドスキャン（１）１３Ａで行われたＩ／Ｏデータを更新処理するバックグランドスキャン（１）Ｉ／Ｏデータ更新処理２３Ａと、バックグランドスキャン（２）１３Ｂで実行するプログラムブロックBLOCKＰ〜BLOCKＳ（２２Ｂ）で構成され、これらのプログラムブロックBLOCKＰ〜BLOCKＳ（２２Ｂ）の次にバックグランドスキャン（２）１３Ｂで行われたＩ／Ｏデータを更新処理するバックグランドスキャン（２）Ｉ／Ｏデータ更新処理２３Ｂが存在する。
【００２５】
バックグランドで実行するプログラムブロックBLOCKＩ〜BLOCKＯ（２２Ａ）及びBLOCKＰ〜BLOCKＳ（２２Ｂ）は、予め任意に登録できる構成になっており、プログラムブロックBLOCKＩ〜BLOCKＯ（２２Ａ）及びBLOCKＰ〜BLOCKＳ（２２Ｂ）のそれぞれが実行する時間は、みな同じでなく、それぞれのプログラムブロック毎に実行時間が異なる。
【００２６】
このような構成において、通常スキャン系１１のバックグランドスキャン（１）１３Ａ及びバックグランドスキャン（２）１３Ｂに割り当てられた一定時間（１）Ｔ及び一定時間（２）Ｔで、バックグランドスキャン系２１の登録されているプログラムブロックBLOCKＩ〜BLOCKＯ（２２Ａ）、BLOCKＰ〜BLOCKＳ（２２Ｂ）を実行する。一定時間Ｔに達した場合は、プログラムブロックの途中であっても処理を一時中断して、通常スキャン系１１の次のスキャンのバックグランドスキャン（１）、（２）１３Ａ、１３Ｂに残りの処理を委ねる。
【００２７】
このバックグランドスキャン（１）１３Ａ及びバックグランドスキャン（２）１３Ｂで行う一定時間Ｔ内でのプログラム動作は、登録されているバックグランドで実行するプログラムブロックBLOCKＩ〜BLOCKＯ（２２Ａ）、BLOCKＰ〜BLOCKＳ（２２Ｂ）を順次に一定時間Ｔだけ実行する順次実行パターンと、登録されているバックグランドで実行するプログラムブロックBLOCKＩ〜BLOCKＯ（２２Ａ）、BLOCKＰ〜BLOCKＳ（２２Ｂ）を一定時間Ｔで均等割付し、その均等割付した割り付け時間Ｔ１のみを各プログラムブロックBLOCKＩ〜BLOCKＯ（２２Ａ）、BLOCKＰ〜BLOCKＳ（２２Ｂ）のそれぞれを実行するＴＳＳパターンとがある。この順次実行パターンは、図２を参照して上述したので、その説明は省略する。ＴＳＳパターンについても、図３を参照して上述したので、その説明は省略する。
【００２８】
このように、通常スキャン系１１で通常スキャン中に複数のバックグランドスキャンを設定して、バックグランド用の一定時間（一定時間（１）、一定時間（２））を各々変えることで、通常スキャンタイムに影響を与えることなくプログラム実行の優先度を変えることができるのである。
【産業上の利用可能性】
【００２９】
高速応答が必要なプログラムブロックを通常スキャン系にし、且つ一定時間のみをバックグランドスキャンに割り振ることで、高速応答が必要なプログラムブロックの実行時間が延長されても、バックグランドスキャンに割り振る時間は一定時間のみであるから、その時間のみが高速応答が必要なプログラムブロックに影響することになり、これは高速応答が必要なプログラムブロックの実行の許容範囲内でバックグランドスキャンの一定時間を設定しておけば、装置全体のパフォーマンスを落すことなく維持できるプログラム実行処理装置を提供する。
【図面の簡単な説明】
【００３０】
【図１】本願発明の第１の実施例のプログラム実行処理装置のブロック図である
【図２】同、順次実行パターンのブロック図である。
【図３】同、ＴＳＳパターンのブロック図である。
【図４】本願発明の第２の実施例のプログラム実行処理装置のブロック図である
【図５】従来技術におけるプログラマブルコントローラの構成を示した説明図である。
【図６】プログラマブルコントローラを構成するＣＰＵモジュールの動作を示したブロック図である。
【図７】プログラム起動によるプログラム実行時間（スキャンタイム）を増大させたときのブロック図である。
【図８】プログラム起動によるプログラム実行時間（スキャンタイム）を増大させたときのブロック図である。
【符号の説明】
【００３１】
１１      通常スキャン系
１２      プログラムブロック
１３      バックグランドスキャン
１３Ａ    バックグランドスキャン（１）
１３Ｂ    バックグランドスキャン（２）
１４      通常スキャンＩ／Ｏデータ更新処理
２１      バックグランドスキャン系
２２      プログラムブロック
２２Ａ    プログラムブロック
２２Ｂ    プログラムブロック
２３      バックグランドスキャンＩ／Ｏデータ更新処理
２３Ａ    バックグランドスキャン（１）Ｉ／Ｏデータ更新処理
２３Ｂ    バックグランドスキャン（２）Ｉ／Ｏデータ更新処理。
【図１】
2005267335.tif 000003
【図２】
2005267335.tif 000004
【図３】
2005267335.tif 000005
【図４】
2005267335.tif 000006
【図５】
2005267335.tif 000007
【図６】
2005267335.tif 000008
【図７】
2005267335.tif 000009
【図８】
2005267335.tif 000010