(57)【要約】      （修正有）【課題】初期値のカウント値を適宜ずらすことにより、コンピュータに集中する負荷を分散させる。【解決手段】タイマー機能における初期化値が２００ｍｓタイマーと５００ｍｓタイマーでは「０」で同じであるが、１０００ｍｓタイマーの初期化値が「３」に設定される。これにより、１０００ｍｓタイマーの基準値カウンタは「４」となり、１０００ｍｓタイマーの起動は、「基準時＋６００ｍｓ」となって、他のタイマーの起動とは重ならなくなり、コンピュータのＣＰＵに集中する処理負荷を分散させることになる。なお、１００ｍｓタイマーと５００ｍｓタイマーの起動が重なった場合でも、１０００ｍｓタイマーの起動とは重ならないので、コンピュータのＣＰＵに集中する処理負荷の低減になる。【選択図】図１
2010009434.tif 000002
【特許請求の範囲】
【請求項１】
監視制御情報の収集のタスク処理動作が記述されてあるプログラムメモリと、タスク処理を監視制御するＯＳと、このＯＳによりプログラムメモリ中のプログラムを選択して監視制御を行うＣＰＵと、監視制御情報の入出力を制御する入出力制御部とを備えた監視制御装置であって、
前記プログラムメモリには、一定周期毎に情報を収集する複数のソフトウェアタイマー機能を設け、そのタイマーのタイムアップ時刻を基準に定周期処理を実施する際に、複数のタイマーの基準となるそれぞれの初期値のカウンタ値を各々適宜ずらしてＣＰＵに集中する処理負荷を分散させるようにしたことを特徴とする監視制御情報収集における負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータによる監視制御ソフトウェアで、一定周期ごとに監視制御情報の収集等を行う際の処理を分散させる監視制御情報収集における負荷分散方法に関するものである。
【背景技術】
【０００２】
通常、マイクロプロセッサを用いた監視制御装置では、ＯＳ（オペレーティング・システム）の管理の基に、制御プログラムをタスクと呼ばれる処理単位に分け（例えば、入力タスク、瞬時値実効値変換タスク、出力タスク等）、これらタスクを、ＯＳが順次起動してシステムの制御を行う方法が採られている。
【０００３】
タスクは、タスク間の優先順位が設定され、優先順位の高いタスクから起動されるように設定されている。また、ＯＳ上で動作するタイマー値更新タスクは、優先順位の高いタスクで、例えば１ｍｓ毎に起動され、上記制御プログラムを分割した各種タスクが参照するタイマー設定テーブルを更新する。
【０００４】
前記マイクロプロセッサを用いた監視制御装置では、タイマー用の基準時間を生成するために、水晶発振器（ＭＨｚオーダ）をカウンタ等で分周して一定時間、例えば、１００μｓや１ｍｓのパルス出力を送出するハードウェアを標準装備している（特許文献１、２参照。）。
【特許文献１】特開平０５−０８３２５５号公報
【特許文献２】特開平０９−１０６３５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前記監視制御装置で監視制御情報の収集を行うには、ソフトウェアにタイマー機能を設け、そのタイムアップ時刻を基準に一定周期処理が実施される。このような処理は、ＯＳの作りにも係わるが、例えば１ｍｓ毎にパルス出力を送出するハードウェアにより起動されるタイマー値更新タスクが、各種タスクが参照するタイマー設定テーブルを更新し処理を終了すると、ＯＳに制御が戻り、ＯＳがタイマー更新値を確認し、２００ｍｓ、５００ｍｓ、１０００ｍｓにタイムアップしたタイマーがあれば、“２００ｍｓ処理”、“５００ｍｓ処理”、“１０００ｍｓ”の３タスクを起動する。
【０００６】
また、ソフトウェアタイマーで１００ｍｓ毎に起動されるタスクを設定（例えば１ｍｓ毎に起動されるタイマー値更新タスクが１００回起動された場合に起動される）し、そのタスクが１００ｍｓ毎にカウントアップするタイマーカウンタを設け、それらのカウント値が２、５、１０となった時に、“２００ｍｓ”、“５００ｍｓ”、“１００ｍｓ”の３タスクを起動してもよい。以下この場合を例にとり、説明する。
【０００７】
実際に起動されるタスクは、予め設定されたタスク優先順位に従ってタスクが起動される。タスク優先順位を、優先順に“２００ｍｓ処理”、“５００ｍｓ処理”、“１０００ｍｓ処理”とすると、最初に、“２００ｍｓ処理”タスクが起動され、その処理が終了すると、次に“５００ｍｓ処理”タスクが起動され、以後同様に行われる。このように、シングルＣＰＵの場合には、見かけ上、同時にタスク処理をしているように見えても、実際には、一つのタスクしか処理できないのが現状である。
【０００８】
この仕組みから、２００ｍｓのタイマー機能は１秒間に５回働き、５００ｍｓのタイマー機能は１秒間に２回働き、１０００ｍｓのタイマー機能は１秒間に１回働くことになる。そして、３種のタイマー時刻が同時に重なったとき、例えば、図４に示す２００ｍｓタイマー、５００ｍｓタイマー、１０００ｍｓタイマーの３つにおいて、黒丸表示「●」が同時に３つ重なったとき、前記３つのタイマーが起動され、コンピュータ負荷がピークとなる。なお、図４について、基準値カウンタが「２」となった場合、「基準時＋１００ｍｓ」で２００ｍｓが経過したことを意味する。また、図４において、「２（０）」は基準値カウンタを「２」から「０」にリセットしたことを意味する。
【０００９】
上記のような場合、コンピュータの処理としては３種類のプロセスを同時に起動させて、平時よりも負荷の高い処理を行うことになる。この負荷の高い処理を実施することは、リアルタイムシステムには、致命的な影響を与える可能性が高く、監視制御システムに重大な影響を与える問題がある。
【００１０】
本発明の目的は、上記の事情に鑑みてなされたもので、初期値のカウント値を適宜ずらすことにより、コンピュータに集中する負荷を分散させる監視制御情報収集における負荷分散方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記の課題を達成するために、請求項１に係る発明は、監視制御情報の収集のタスク処理動作が記述されてあるプログラムメモリと、タスク処理を監視制御するＯＳと、このＯＳによりプログラムメモリ中のプログラムを選択して監視制御を行うＣＰＵと、監視制御情報の入出力を制御する入出力制御部とを備えた監視制御装置であって、
前記プログラムメモリには、一定周期毎に情報を収集する複数のソフトウェアタイマー機能を設け、そのタイマーのタイムアップ時刻を基準に定周期処理を実施する際に、複数のタイマーの基準となるそれぞれの初期値のカウンタ値を各々適宜ずらしてＣＰＵに集中する処理負荷を分散させるようにしたことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、基準時のカウンタを、それぞれ「１」からカウントするのではなく、処理が分散できるように「１以外」の初期値を設けて、処理時の負荷集中を回避するようにしたので、重要な処理が抜けるようなことが防止でき、これにより、制御システムなどの処理が確実になる。
【発明を実施するための最良の形態】
【００１３】
以下本発明の実施の形態を図面に基づいて説明する。本発明の実施の形態は、監視制御情報の収集のタスク処理動作が記述されてあるプログラムメモリと、タスク処理を監視制御するＯＳと、このＯＳによりプログラムメモリ中のプログラムを選択して監視制御を行うＣＰＵと、監視制御情報の入出力を制御する入出力制御部とを備えた監視制御装置で使用される。
【００１４】
また、前記プログラムメモリには、一定周期毎に情報を収集する複数のソフトウェアタイマー機能が設けられ、そのタイマー機能のタイムアップ時刻を基準に定周期処理が実施される。
【００１５】
そして、複数のタイマー機能の基準となるそれぞれの初期値のカウンタ値は、各々適宜ずらしてＣＰＵに集中する処理負荷を分散させるようにしている。
【００１６】
図１は本発明の実施の形態を示すソフトウェアタイマー機能における時間経過に伴うタイマーテーブル内、基準値カウンタの更新状況の説明図で、図１において、黒丸表示「●」の意味は、図４の場合と同様である。すなわち、基準値カウンタが「２」となった場合、「基準時＋１００ｍｓ」で２００ｍｓが経過したことを意味し、「２（０）」は基準値カウンタを「２」から「０」にリセットしたことを意味する。
【００１７】
図１が図４の場合と相違する部分は、タイマー機能における初期化値が２００ｍｓタイマーと５００ｍｓタイマーでは「０」で同じであるが、１０００ｍｓタイマーの初期化値が「３」に設定されることである。これにより、１０００ｍｓタイマーの基準値カウンタは「４」となり、１０００ｍｓタイマーの起動は、「基準時＋６００ｍｓ」となって、他のタイマーの起動とは重ならなくなり、コンピュータのＣＰＵに集中する処理負荷を分散させることになる。
【００１８】
なお、２００ｍｓタイマーと５００ｍｓタイマーの起動が重なった場合でも、１０００ｍｓタイマーの起動は重ならないので、コンピュータのＣＰＵに集中する処理負荷の低減になる。
【００１９】
次に、タイマー機能の初期化処理を、図２に示すフローチャートにより述べる。図２において、ステップＳ１は、２００ｍｓタイマーの初期化処理で、まず基準値カウンタ「ａ」に「０」をセットするとともに、目標値Ｉに「２」をセットする。
【００２０】
その後、ステップＳ２で、５００ｍｓタイマーの初期化処理を行い、基準値カウンタ「ｂ」に「０」をセットするとともに、目標値Ｋに「５」をセットする。このセットが終了したなら、ステップＳ３で、１０００ｍｓタイマーの初期化処理を行い、基準値カウンタ「ｃ」に「３」をセットするとともに、目標値Ｍに「１０」（１０進数）をセットする。
【００２１】
次に、タイマー機能の１００ｍｓ毎の処理を図３に示すフローチャートにより述べる。図３において、ステップＳ１１で基準値カウンタ「ａ」をインクリメントし、ステップＳ１２でカウンタ「ａ」がカウントアップし、Ｉ＝２となったなら、ステップＳ１３で２００ｍｓタイマーの処理「Ａ」タスクを実行する。
【００２２】
ステップＳ１３で２００ｍｓタイマーが実行されたなら、次回用にステップＳ１４でカウンタ「ａ」を「０」リセットする。
【００２３】
その後、ステップＳ１５で基準値カウンタ「ｂ」をインクリメントし、ステップＳ１６でそのカウンタがカウントアップし、Ｋ＝５となったなら、ステップＳ１７で５００ｍｓタイマーの処理「Ｂ」タスクを実行し、次回用にステップＳ１８でカウンタ「ｂ」を「０」リセットする。
【００２４】
続いて、ステップＳ１９の処理に進んで、基準値カウンタ「ｃ」をインクリメントし、ステップＳ２０でそのカウンタがカウントアップし、Ｍ＝１０となったなら、ステップＳ２１で１０００ｍｓタイマーの処理「Ｃ」タスクを実行し、次回用にステップＳ２２でカウンタ「ｃ」を「０」リセットする。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態を示すソフトウェアタイマー機能における時間経過に伴うタイマーテーブル内、基準値カウンタの更新状況の説明図。
【図２】タイマーの初期化処理を説明するフローチャート。
【図３】カウンタ処理を示すフローチャート。
【図４】従来のソフトウェアタイマー機能における時間経過に伴うタイマーテーブル内、基準値カウンタの更新状況の説明図。
【図１】
2010009434.tif 000003
【図２】
2010009434.tif 000004
【図３】
2010009434.tif 000005
【図４】
2010009434.tif 000006