(57)【要約】【課題】従来と同様のリアルタイムオペレーティングシステムを用いて、１タスクが同時に待つことができるフラグの数を、ＣＰＵのビット数に拘束されずに多数設定することができるようにし、制御する機器の多数の機能を含むイベントを複数実施することができるようにした「リアルタイムＯＳのイベント拡張方法及びシステム」とする。【解決手段】要求機能に対応して０から順番に番号を付与し、イベントに対して番号順に下位ビットから各要求機能を割り当てる従来と同様のリアルタイムＯＳを用い、このシステムのＣＰＵのビット幅を超える要求については、最初のイベントの最上位ビットに、次のイベントにデータが存在することを示す数値を付与することにより、イベントの最上位ビットをビット拡張情報として用い、前記イベントの実行時には前記拡張情報が存在する時、最初のイベントの実行に引き続き次のイベントを順に実行する。【選択図】図１
2010198512.tif 000002
【特許請求の範囲】
【請求項１】
一つのタスクに含まれるイベントに複数の機能に対するフラグを用意し、当該タスク実行時にイベントのいずれかのフラグをセットすることによりタスクを起動し、イベントフラグのチェックにより、前記セットされたフラグに対応する要求機能を実行するリアルタイムオペレーティングシステムにおいて、
要求機能に対応して０から順番に番号を付与し、イベントに対して番号順に下位ビットから各要求機能を割り当て、
このシステムのＣＰＵのビット幅を超える要求については、最初のイベントの最上位ビットに、次のイベントにデータが存在することを示す数値を付与することにより、イベントの最上位ビットをビット拡張情報として用い、
前記イベントの実行時には前記拡張情報が存在する時、最初のイベントの実行に引き続き次のイベントを順に実行することを特徴とするリアルタイムオペレーティングシステムのイベント拡張方法。
【請求項２】
前記イベントの実行時に最初のイベントの実行に引き続き行う次のイベントの実行が終了した時、最初のイベントの最上位ビットの拡張情報を消去することを特徴とする請求項１記載のリアルタイムオペレーティングシステムのイベント拡張方法。
【請求項３】
一つのタスクに含まれるイベントに複数の機能に対するフラグを用意し、当該タスク実行時にイベントのいずれかのフラグをセットすることによりタスクを起動し、イベントフラグのチェックにより、前記セットされたフラグに対応する要求機能を実行するリアルタイムオペレーティングシステムにおいて、
要求機能に対応して０から順番に番号を付与し、イベントに対して番号順に下位ビットから各要求機能を割り当て、
このシステムのＣＰＵのビット幅を超える要求については、最初のイベントの最上位ビットに、次のイベントにデータが存在することを示す数値を付与することにより、イベントの最上位ビットをビット拡張情報として用い、
前記イベントの実行時には前記拡張情報が存在する時、最初のイベントの実行に引き続き次のイベントを順に実行してイベントの拡張を行うことを特徴とするリアルタイムオペレーティングシステム。  
【請求項４】
前記イベントの実行時に最初のイベントの実行に引き続き行う次のイベントの実行が終了した時、最初のイベントの最上位ビットの拡張情報を消去することを特徴とする請求項３記載のリアルタイムオペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はイベントの発生から要求時間内にデータを処理するリアルタイムオペレーティングシステムにおいて、一つのタスクでＣＰＵのビット幅に拘束されず、多数のイベントを実行できるようにした、リアルタイムオペレーティングシステム（ＲＴＯＳ）のイベント拡張方法及びその方法を実施するシステムに関する。
【背景技術】
【０００２】
制御用システムをシングルタスクで構築する場合には、システム機能の大きさ、または入出力の複雑さにもよるが、性能が上らなかったり、難解な保守性の悪いプログラムが形成されるという結果となる。これに対応するため、システム全体の機能を小さな仕事の単位であるタスクとして細分化し、制御系システムのリアルタイム性を損なうことなく容易に実現することができれば、生産性並びに保守性の向上を期待することができる。複数のタスクが同時に（或るタイミングでＣＰＵの実行権またはシステム資源を分配しながら）動いているシステムをマルチタスクシステムと云い、その制御機構をマルチタスクオペレーティングシステム（ＲＴＯＳ）と云う。
【０００３】
このマルチタスクオペレーティングシステムによると、応答時間が一定の範囲内に多数の処理を行うことができ、各種機器の制御に広く用いられるようになっている。また、このシステムに使用に際しては、各種処理の応答時間が一定の範囲内にあることが要求されるため、その対策が必要となる。
【０００４】
このシステムではその対策として、オペレーティングシステムがＣＰＵ時間を割り当てる実行処理単位としてタスク（Ｔａｓｋ）という単位を用い、オペレーティングシステムは決められたスケジューリング方法に基づいて、多数のタスク（マルチタスク）の実行を管理している。このようなマルチタスク環境で１つの機能を実現する場合、他のタスクの処理を待つことや、排他制御を行う必要が生じ、そのためにイベント（Ｅｖｅｎｔ）フラグを用いて同期処理を行っている。このイベントフラグでは、１つの事象を１ｂｉｔに割り当てておき、タスクはその事象を待つようにしている。
【０００５】
従来のマルチタスクオペレーティングシステムのプログラムではこのイベントフラグを用いて、一般的には図２のように使用されている。即ち、タスクＡ（Ｔａｓｋ  Ａ）の処理に際して、イベントＡ（Ｅｖｅｎｔ  Ａ）のいずれかのフラグがセットされたらタスクが起動するようにしておく（Ｗａｉｔ  ＥｖｅｎｔＡ  Ｔａｓｋ  ｓｌｅｅｐ）。ここで実際にいずれかのフラグがセットされた時、イベントフラグのチェックを行う（Ｅｖｅｎｔ  ｆｌａｇ  ｃｈｅｃｋ）。
【０００６】
このようなイベントフラグのセットに際しては、要求に０から順番に番号をつけ、番号順に下位ｂｉｔから割り当てている。例えば３２ビットのＣＰＵでは、１２番の要求の時には、
Event A＝0x00001000（0000 0000 0000 0000 0001 0000 0000 0000）
となる。
これに更に２５番の要求が追加されると、
Event A＝0x02001000（0000 0010 0000 0000 0001 0000 0000 0000）
となる。
【０００７】
上記のようなイベントフラグのセット方法を用いていることにより、図２の例ではイベントフラグのチェック（Ｅｖｅｎｔ  ｆｌａｇ  ｃｈｅｃｋ）によって、フラグ０がセットされている時には、そこに割り当てられている機能（Ｆｕｎｃｔｉｏｎ）Ａの処理を行う。またフラグ１がセットされている時には、そこに割れ当てられている機能Ｂの処理を行う。以下同様にセットされているフラグに対応した機能を行うことができるようになっている。
【０００８】
なお、リアルタイムオペレーティングシステムを用いて複数のタスクを起動する起動制御装置において、１つのイベントで複数のタスクを順次、リアルタイムオペレーティングシステムを介して起動するイベントハンドラと、複数のタスクの共通のヘッダファイルに、イベントの種類と各イベントに属する複数のタスクを順番に起動するタイミングを定義し、外部よりこの定義の変更が可能であるタスクヘッダファイルとを備え、リアルタイムオペレーティングシステムは、イベントによりタスクの起動が重複した場合にタスクの優先度にしたがった起動をすると共に、イベントハンドラにより起動されるタスクの順番をタスクヘッダファイルの定義に従わせてタスクの起動を制御することにより、タスクの接続形態の変更に対する仕様変更を容易にできるようにする技術は特開平１０−１０５４１６号（特許文献１）に開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１０−１０５４１６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
前記のように従来のリアルタイムオペレーティングシステムにおいては、図２の作動フローに示されるように、タスクの起動待ちを行うことができるイベントはイベント（Ｅｖｅｎｔ）Ａの１つだけであり、したがってこのＣＰＵが３２ビットの時、一度に待つことができるフラグは３２種類となる。
【００１１】
このように、１タスクが同時に待つことができるのは、３２ビットのＣＰＵの場合３２種類のフラグに制限されため、それ以上の情報をトリガに使うには、メッセージを使用するか、イベントとは別にデータを用意する必要がある。
【００１２】
この場合、メッセージはイベントに比べて多くのＲＡＭが必要になるという問題がある。また、別にデータを用意する場合は、特に付加データにフラグの番号を持たせた場合には、イベントの良さである「同時に複数の要求ができる」という特性が損なわれる問題があり、特に高性能のＣＰＵを用いることができず、また大容量のＲＡＭを持つことができない。そのため、一般的な機器の制御にこのマルチタスクオペレーティングシステムを用いるには、別の対策が必要となる。また、この問題を解決するため、従来から広く使用されてきたマルチタスクオペレーティングシステムの内容を大幅に変更することは、コストと汎用性の問題から適切ではない。
【００１３】
したがって本発明は、従来と同様のリアルタイムオペレーティングシステムを用いて、制御する機器の多数の機能である複数のイベントをこのシステムで実施することができるようにし、１タスクが同時に待つことができるフラグの数を、ＣＰＵのビット数に拘束されずに多数設定することができるようにしたリアルタイムオペレーティングシステムのイベント拡張方法及びその方法を実施するシステムを提供することを主たる目的とする。
【課題を解決するための手段】
【００１４】
本発明に係るリアルタイムオペレーティングシステムのイベント拡張方法は、前記課題を解決するため、一つのタスクに含まれるイベントに複数の機能に対するフラグを用意し、当該タスク実行時にイベントのいずれかのフラグをセットすることによりタスクを起動し、イベントフラグのチェックにより、前記セットされたフラグに対応する要求機能を実行するリアルタイムオペレーティングシステムにおいて、要求機能に対応して０から順番に番号を付与し、イベントに対して番号順に下位ビットから各要求機能を割り当て、このシステムのＣＰＵのビット幅を超える要求については、最初のイベントの最上位ビットに、次のイベントにデータが存在することを示す数値を付与することにより、イベントの最上位ビットをビット拡張情報として用い、前記イベントの実行時には前記拡張情報が存在する時、最初のイベントの実行に引き続き次のイベントを順に実行することを特徴とする。
【００１５】
また、本発明に係る他のリアルタイムオペレーティングシステムのイベント拡張方法は、前記リアルタイムオペレーティングシステムのイベント拡張方法において、前記イベントの実行時に最初のイベントの実行に引き続き行う次のイベントの実行が終了した時、最初のイベントの最上位ビットの拡張情報を消去することを特徴とする。
【００１６】
また、本発明に係るリアルタイムオペレーティングシステムのイベントを拡張するシステムは、一つのタスクに含まれるイベントに複数の機能に対するフラグを用意し、当該タスク実行時にイベントのいずれかのフラグをセットすることによりタスクを起動し、イベントフラグのチェックにより、前記セットされたフラグに対応する要求機能を実行するリアルタイムオペレーティングシステムにおいて、要求機能に対応して０から順番に番号を付与し、イベントに対して番号順に下位ビットから各要求機能を割り当て、このシステムのＣＰＵのビット幅を超える要求については、最初のイベントの最上位ビットに、次のイベントにデータが存在することを示す数値を付与することにより、イベントの最上位ビットをビット拡張情報として用い、前記イベントの実行時には前記拡張情報が存在する時、最初のイベントの実行に引き続き次のイベントを順に実行してイベントの拡張を行うことを特徴とする。
【００１７】
また、本発明に係る他のリアルタイムオペレーティングシステムのイベントを拡張するシステムは、前記リアルタイムオペレーティングシステムのイベントを拡張するシステムにおいて、前記イベントの実行時に最初のイベントの実行に引き続き行う次のイベントの実行が終了した時、最初のイベントの最上位ビットの拡張情報を消去することを特徴とする。
【発明の効果】
【００１８】
本発明は上記のように構成したので、従来と同様のリアルタイムオペレーティングシステムを用いて、制御する機器の多数の機能を行うイベントを複数実行することができるようにし、１タスクが同時に待つことができるフラグの数を、ＣＰＵのビット数に拘束されずに多数設定することができるようになる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施例におけるタスク実行時の作動フロー図である。
【図２】従来例におけるタスク実行時の作動フロー図である。
【発明を実施するための形態】
【実施例】
【００２０】
本発明は前記従来の問題点を解決するため、リアルタイムオペレーティングシステムでイベントはビットイメージでフラグをセットできることにより、同時に複数の要求をすることができることを利用し、次のようなイベント拡張手法を採用する。なお、ここではイベントが３２ビット幅であることを前提に説明する。
【００２１】
先ず本発明によるイベントセットは以下のようにして行う。即ち、要求に０から順番に番号をつけ、番号順に下位ビットから割り当てる。例えば１２番目の要求である場合、イベントのビット情報は下記のようになる。ここでは前記従来技術で説明した方法と全く同様であり、
Event A＝0x00001000（0000 0000 0000 0000 0001 0000 0000 0000）
となる。これに更に２５番の要求が追加されると、
Event A＝0x02001000（0000 0010 0000 0000 0001 0000 0000 0000）
となる。
【００２２】
ここで、更に３５番目の要求が追加使用とする場合は、本発明においてはイベントＢを用意し、イベントＢにフラグをセットした後に、イベントＡの最上位ビットを次のようにセットし、イベントＢを従来と同様に次のようにセットする。
Event A＝0x80001000（1000 0010 0000 0000 0001 0000 0000 0000）
Event B＝0x00000010（0000 0000 0000 0000 0000 0000 0001 0000）
【００２３】
このように本発明においては、イベントＡの最上位ビットはイベントＢにデータがあることを示す拡張情報として使う。そのためイベントＢのフラグは最下位ビットが３１番目の要求となる。
【００２４】
同様にして６２ビット以上の要求が必要な場合は、イベントＣにフラグをセットして、イベントＢ、イベントＡの最上位ビットを前記と同様にセットし、拡張情報として使う。上記方式を用いることにより、イベントが３２ビット幅であっても、これを超えるイベントのセットを実現することができる。
【００２５】
上記のようにイベントがセットされる時、そのイベントを実施するときのイベント評価は、例えば図１に示すようにして行う。図１に示す例は前記図２の従来技術と同様の態様で作動する例を示しており、このような従来と同様の態様によって本発明では、前記のような多数の機能を実施することができるようにしたものである。
【００２６】
図１においてタスクＡ（Ｔａｓｋ  Ａ）の処理に際して、イベントＡ（Ｅｖｅｎｔ  Ａ）のいずれかのフラグがセットされたらタスクが起動するようにしておく（Ｗａｉｔ  ＥｖｅｎｔＡ  Ｔａｓｋ  ｓｌｅｅｐ）ことは前記従来のものと同様であって、イベントＡのみをタスク同期のトリガとして待機状態とする。ここでイベントＡのいずれかのフラグがセットされた時タスクが起動し、処理を開始する。
【００２７】
イベント評価は下位ビットから行うことも従来と同様であり、前記のようなイベントセットがなされている時には、先ず、イベントＡの１２ビット目の要求１２がセットされていることを見つけ、当該要求に割り当てられたサブルーチンを実行し、当該ビットをクリアする。クリア後のイベントは、
Event A＝0x82000000
Event B＝0x00000010
となる。
【００２８】
次は要求２５という判断が行われ、同様にして２５ビット目をクリアする。クリア後のイベントは
Event A＝0x80000000
Event B＝0x00000010
となる。
【００２９】
イベントＡの最上位ビットがセットされている場合は、次のイベントであるイベントＢのチェックを行い、この例では要求３５がセットされていると判断し、ビット４をクリアする。そして、クリア後にイベントＢのデータが０であった場合、一つ前のイベントであるイベントＡの最上位ビットもクリアする。その結果、
Event A＝0x00000000
Event B＝0x00000000
となり、全ての要求の実行とフラグのクリアが完了する。
【図１】
2010198512.tif 000003
【図２】
2010198512.tif 000004