(57)【特許請求の範囲】
【請求項１】
各オブジェクトに対する各アドレスを有し、各アドレスに各オブジェクトの状態を記憶する条件用メモリ手段、
各オブジェクトの状態を各オブジェクト対応のフォーマットにした後、前記条件用メモリ手段の対応する各アドレスに記憶させる条件入力手段、
各オブジェクトに対応する各アドレスを有し、各アドレスに各オブジェクトの状態を各オブジェクト対応のフォーマットを有するデータとして記憶する出力用メモリ手段、
前記出力用メモリ手段の各アドレスの記憶内容を、各オブジェクト対応のフォーマットから対応する各オブジェクトのデータ形式にして各オブジェクトに出力して、前記出力用メモリ手段の各アドレスの記憶内容に対応して各オブジェクトの状態を変化させる出力手段、
条件用メモリ手段の各アドレスの記憶内容に基づいて、タスク制御プログラムに従って論理演算を行い、演算結果に従って出力用メモリ手段の各アドレスの記憶内容を書き換えるタスク制御手段、を備えたマルチタスク制御システムであって、前記タスク制御手段は、タスク制御プログラムの各条件に対応してフラグテーブルを有しており、前記フラグテーブルの内容に応じて、出力用メモリ手段の各アドレスの記憶内容を書き換えるものであることを特徴とするもの。
【請求項２】
請求項１のマルチタスク制御システムにおいて、前記タスク制御手段は、タスク制御プログラムを繰り返し実行するように構成されており、フラグテーブルの内容が前回の実行時から変化している場合にのみ、当該フラグテーブルに対応する出力用メモリ手段のアドレスの記憶内容を書き換えるものであることを特徴とするもの。
【請求項３】
請求項２のマルチタスク制御システムにおいて、前記タスク制御手段は、フラグテーブルの内容が第一の状態から第二の状態に変化した場合または第二の状態から第一の状態に変化した場合のいずれか一方の場合にのみ、当該フラグテーブルに対応する出力用メモリ手段のアドレスの記憶内容を書き換えるものであることを特徴とするもの。
【請求項４】
請求項１のマルチタスク制御システムにおいて、前記タスク制御手段は、タスク制御プログラムを繰り返し実行するように構成されており、フラグテーブルの内容が第一の状態である場合には出力用メモリ手段のアドレスの内容を第一の状態に対応する状態に保持し、フラグテーブルの内容が第二の状態である場合には出力用メモリ手段のアドレスの内容を第二の状態に対応する状態に保持するものであることを特徴とするもの。
【請求項５】
請求項１のマルチタスク制御システムにおいて、前記タスク制御手段は、タスク制御プログラムに従って、次のいずれかの処理法方法ａ）またはｂ）を選択して実行するものであることを特徴とするもの。
ａ）フラグテーブルの内容が第一の状態から第二の状態に変化した場合または第二の状態から第一の状態に変化した場合のいずれか一方の場合にのみ、当該フラグテーブルに対応する出力用メモリ手段のアドレスの記憶内容を書き換える
ｂ）フラグテーブルの内容が第一の状態である場合には出力用メモリ手段のアドレスの内容を第一の状態に対応する状態に保持し、フラグテーブルの内容が第二の状態である場合には出力用メモリ手段のアドレスの内容を第二の状態に対応する状態に保持する。
【請求項６】
各入力オブジェクトの状態を、各オブジェクト対応のフォーマットにした後、対応する各アドレスに記憶し、
記憶された各入力オブジェクトに基づいて、タスク制御プログラムに従って論理演算を行い、
前記演算結果を、各出力オブジェクトに対応する各アドレスに記憶し、
各オブジェクト対応のフォーマットで記憶された前記演算結果に基づいて、各オブジェクト対応のフォーマットから対応するオブジェクトのデータ形式にして各オブジェクトに出力して、対応する各出力オブジェクトの状態を変化させるマルチタスク制御方法であって、
タスク制御プログラムの各条件に対応してフラグテーブルを有しており、前記フラグテーブルの内容に応じて、出力オブジェクトに対応する各アドレスの記憶内容を書き換えるものであることを特徴とするもの。
【請求項７】
各オブジェクトに対する各アドレスを有し、各アドレスに各オブジェクトの状態を記憶する条件用メモリ手段、
各オブジェクトの状態を前記条件用メモリ手段の対応する各アドレスに記憶させる条件入力手段、
各オブジェクトに対応する各アドレスを有し、各アドレスに各オブジェクトの状態を記憶する出力用メモリ手段、
前記出力用メモリ手段の各アドレスの記憶内容に対応して各オブジェクトの状態を変化させる出力手段、
条件用メモリ手段の各アドレスの記憶内容に基づいて、タスク制御プログラムに従って論理演算を行い、演算結果に従って出力用メモリ手段の各アドレスの記憶内容を書き換えるタスク制御手段、
を備えたマルチタスク制御システムであって、
タスク制御プログラムが複数用意されており、前記タスク制御手段は、複数のタスク制御プログラムを順次実行するものであることを特徴とするもの。
【請求項８】
請求項７のマルチタスク制御システムにおいて、前記タスク制御手段は、タスク制御プログラムの繰り返し実行間隔を、タスク制御プログラムごとに定めて実行するものであることを特徴とするもの。
【請求項９】
請求項７のマルチタスク制御システムにおいて、タスク制御プログラムごとに優先度を定めておき、前記タスク制御手段は、複数のタスク制御プログラムの実行が重複した場合には、優先度の大きい方のタスク制御プログラムを優先して実行するものであることを特徴とするもの。
【請求項１０】
各入力オブジェクトの状態を、入力サブシステムによって、各オブジェクト対応のフォーマットにした後、対応する各アドレスに記憶し、
記憶された各入力オブジェクトに基づいて、タスク制御プログラムに従って論理演算を行い、
前記演算結果を、各出力オブジェクトに対応する各アドレスに記憶し、
各オブジェクト対応のフォーマットで記憶された前記演算結果に基づいて、出力サブシステムによって、各オブジェクト対応のフォーマットから対応するオブジェクトのデータ形式にして各オブジェクトに出力して、対応する各出力オブジェクトの状態を変化させるマルチタスク制御方法であって、
タスク制御プログラムが複数用意されており、複数のタスク制御プログラムを順次実行するものであることを特徴とするもの。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はマルチタスク制御システムおよび方法に関するものである。
【０００２】
【従来の技術およびその課題】
従来のタスク制御においては、イベントの発生によってオペレーティングシステムから呼び出される関数を用いている。そのプログラムの一例を、図１６に示す。このプログラムは、条件Ａ1または条件Ａ2が成立すればタスクＢ1を実行し、条件Ａ3が成立し同時に条件Ａ4が成立すればタスクＢ2を実行するものである。なお、コンピュータ（オペレーティングシステム）が、マルチタスクを実行可能であれば、タスクＢ1とＢ2は並列に実行され得る。
【０００３】
msgというイベントが発生すると、オペレーティングシステムを介して、関数WndProcが呼び出される。つまり、図１６のプログラムが実行される。msgの内容が、条件Ａ1または条件Ａ2に合致していれば、タスクＢ1を実行し（あるいは実行命令を出し）図１６のプログラムの実行を終了する。また、msgの内容が、条件Ａ3および条件Ａ4の双方に合致していれば、タスクＢ2を実行し（あるいは実行命令を出し）図１６のプログラムの実行を終了する。その後、msgというイベントが発生するごとに、関数WndProcが実行される。なお、イベントの発生は、オペレーティングシステムにより行なわれる。
【０００４】
しかしながら、上記のような従来のタスク制御システムには、次のような問題点があった。
【０００５】
第一に、イベントの発生をオペレーティングシステムが管理しているため、マルチタスク制御の利用者が、柔軟なプログラムを作成できないと言う問題点があった。
【０００６】
第二に、プログラムをイベントごとに記述しなければならないため、マルチタスクの場合には、制御構造が複雑になり把握し難いという問題があった。
【０００７】
この発明は上記のような問題点を解決して、柔軟なプログラムを作成でき、制御構造の把握が容易なマルチタスク制御ステムおよび方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
各入力オブジェクトの状態を、所定のフォーマットにした後、対応する各アドレスに記憶し、記憶された各入力オブジェクトに基づいて、タスク制御プログラムに従って論理演算を行い、前記演算結果を、各出力オブジェクトに対応する各アドレスに記憶し、所定のフォーマットで記憶された前記演算結果に基づいて、所定のフォーマットから対応するオブジェクトのデータ形式にして各オブジェクトに出力して、対応する各出力オブジェクトの状態を変化させるマルチタスク制御方法であって、タスク制御プログラムの各条件に対応してフラグテーブルを有しており、前記フラグテーブルの内容に応じて、出力オブジェクトに対応する各アドレスの記憶内容を書き換えるものであることを特徴とするもの。
【０００９】
請求項２のマルチタスク制御システムは、タスク制御手段が、タスク制御プログラムを繰り返し実行するように構成されており、フラグテーブルの内容が前回の実行時から変化している場合にのみ、当該フラグテーブルに対応する出力用メモリ手段のアドレスの記憶内容を書き換えるものであることを特徴としている。
【００１０】
請求項３のマルチタスク制御システムは、タスク制御手段が、フラグテーブルの内容が第一の状態から第二の状態に変化した場合または第二の状態から第一の状態に変化した場合のいずれか一方の場合にのみ、当該フラグテーブルに対応する出力用メモリ手段のアドレスの記憶内容を書き換えるものであることを特徴としている。
【００１１】
請求項４のマルチタスク制御システムは、タスク制御手段が、タスク制御プログラムを繰り返し実行するように構成されており、フラグテーブルの内容が第一の状態である場合には出力用メモリ手段のアドレスの内容を第一の状態に対応する状態に保持し、フラグテーブルの内容が第二の状態である場合には出力用メモリ手段のアドレスの内容を第二の状態に対応する状態に保持するものであることを特徴としている。
【００１２】
請求項５のマルチタスク制御システムは、タスク制御手段が、タスク制御プログラムに従って、次のいずれかの処理法方法ａ）またはｂ）を選択して実行するものであることを特徴としている。
【００１３】
ａ）フラグテーブルの内容が第一の状態から第二の状態に変化した場合または第二の状態から第一の状態に変化した場合のいずれか一方の場合にのみ、当該フラグテーブルに対応する出力用メモリ手段のアドレスの記憶内容を書き換える
ｂ）フラグテーブルの内容が第一の状態である場合には出力用メモリ手段のアドレスの内容を第一の状態に対応する状態に保持し、フラグテーブルの内容が第二の状態である場合には出力用メモリ手段のアドレスの内容を第二の状態に対応する状態に保持する。
【００１４】
請求項７のマルチタスク制御システム、請求項１０のマルチタスク制御方法は、
各入力オブジェクトの状態を、対応する各アドレスに記憶し、
記憶された各入力オブジェクトに基づいて、タスク制御プログラムに従って論理演算を行い、
前記演算結果を、各出力オブジェクトに対応する各アドレスに記憶し、
記憶された前記演算結果に基づいて、対応する各出力オブジェクトの状態を変化させるものであって、
タスク制御プログラムが複数用意されており、複数のタスク制御プログラムを順次実行するものであることを特徴としている。
【００１５】
請求項８のマルチタスク制御システムは、タスク制御手段が、タスク制御プログラムの繰り返し実行間隔を、タスク制御プログラムごとに定めて実行するものであることを特徴としている。
【００１６】
請求項９のマルチタスク制御システムは、タスク制御プログラムごとに優先度を定めておき、タスク制御手段は、複数のタスク制御プログラムの実行が重複した場合には、優先度の大きい方のタスク制御プログラムを優先して実行するものであることを特徴としている。
【００１７】
【発明の効果】
請求項１のマルチタスク制御システムおよび請求項６のマルチタスク制御方法は、各オブジェクトの状態に対応した条件用メモリおよび、その内容に応じて各オブジェクトの状態を変化させる出力用メモリを備えている。したがって、条件用メモリの内容を用いて出力用メモリの内容を書き換えるだけで、オブジェクトの制御を行うことができる。
【００１８】
また、タスク制御プログラムの各条件に対応してフラグテーブルを有しており、前記フラグテーブルの内容に応じて、出力オブジェクトに対応する各アドレスの記憶内容を書き換えるものであることを特徴としている。したがって、フラグテーブルを用いて、より柔軟なタスク制御を行うことができる。
【００１９】
請求項２のマルチタスク制御システムは、フラグテーブルの内容が前回の実行時から変化している場合にのみ、当該フラグテーブルに対応する出力用メモリ手段のアドレスの記憶内容を書き換えるものであることを特徴としている。したがって、オブジェクトの状態に基づく条件成立の変化に応じて、タスク制御を行うことができる。
【００２０】
請求項３のマルチタスク制御システムは、フラグテーブルの内容が第一の状態から第二の状態に変化した場合または第二の状態から第一の状態に変化した場合のいずれか一方の場合にのみ、当該フラグテーブルに対応する出力用メモリ手段のアドレスの記憶内容を書き換えるものであることを特徴としている。したがって、条件成立の変化の方向も考慮して、タスク制御を行うことができる。
【００２１】
請求項４のマルチタスク制御システムは、フラグテーブルの内容が第一の状態である場合には出力用メモリ手段のアドレスの内容を第一の状態に対応する状態に保持し、フラグテーブルの内容が第二の状態である場合には出力用メモリ手段のアドレスの内容を第二の状態に対応する状態に保持するものであることを特徴としている。したがって、条件成立の有無に基づいて、タスク制御を行うことができる。
【００２２】
請求項５のマルチタスク制御システムは、タスク制御手段が、タスク制御プログラムに従って、処理法方法ａ）またはｂ）を選択して実行するものであることを特徴としている。したがって、目的に応じて、柔軟なタスク制御を行うことができる。
【００２３】
請求項７のマルチタスク制御システムおよび請求項１０のマルチタスク制御方法は、各オブジェクトの状態に対応した条件用メモリおよび、その内容に応じて各オブジェクトの状態を変化させる出力用メモリを備えている。したがって、条件用メモリの内容を用いて出力用メモリの内容を書き換えるだけで、オブジェクトの制御を行うことができる。
【００２４】
また、複数のタスク制御プログラムを順次実行するものであることを特徴としている。したがって、タスク制御プログラムを、目的等に応じて別個にすることができ、プログラム開発の効率が高い。
【００２５】
請求項８のマルチタスク制御システムは、タスク制御プログラムの繰り返し実行間隔を、タスク制御プログラムごとに定めて実行するものであることを特徴としている。したがって、重要性や目的に応じて、各タスク制御プログラムの実行間隔を制御することができ、より柔軟なタスク制御を行うことができる。
【００２６】
請求項９のマルチタスク制御システムは、複数のタスク制御プログラムの実行が重複した場合には、優先度の大きい方のタスク制御プログラムを優先して実行するものであることを特徴としている。したがって、各タスク制御プログラムに優先度を付けて実行することができる。
【００２７】
【発明の実施の形態】
図１に、この発明の一実施例によるマルチタスク制御システムの全体構成を示す。条件用メモリ力手段４は、各入力（マウスボタン、ソフトウエア等のオブジェクト）に対応する各アドレスを有しており、各アドレスに各オブジェクトの状態を記憶するものである。条件入力手段２は、各オブジェクトから送られてきた状態を示すデータを受けて、所定のフォーマットに変換した後、条件用メモリ手段４の対応するアドレスに記憶させるものである。出力用メモリ手段８は、各タスクに対応する各アドレスを有しており、各アドレスに各タスクの状態を、所定のフォーマットを有するデータとして記憶するものである。出力手段１０は、出力用メモリ手段８の各アドレスの記憶内容を、所定のフォーマットから対応する各タスクのデータ形式に変換して各タスクに出力し、各タスクの状態を出力用メモリ手段８の記憶内容に応じて変化させるものである。タスク制御手段６は、条件用メモリ手段４の各アドレスの記憶内容に基づいて、マルチタスク制御プログラムに従って論理演算を行ない、演算結果に従って出力用メモリ手段８の各アドレスの記憶内容を書き換えるものである。
【００２８】
なお、ここでは、マウスボタン、キーボード等の入力、ソフトウエアからの入力等の入力条件となるもの全てを入力オブジェクトとし、ソフトウエア等だけでなく、ランプ、ブザー等の外部出力、ＣＲＴ等の内部出力等の出力対象となるもの全てを出力オブジェクト（タスク）と呼ぶ。
【００２９】
図２に、図１の各機能を実現したハードウエア構成の一例を示す。ＣＰＵ２２には、バスラインを介して、インターフェイス３０、入力サブシステム２、出力サブシステム１０、メモリ２０、プログラムメモリ２４、キーボード２６、マウス２８が接続されている。メモリ２０は、条件用メモリ１９、第１の出力用メモリ（現状）２１ａ、第２の出力用メモリ（前回）２１ｂを有している。条件用メモリ１９は、図３Ｂに示すように、各オブジェクトＡ1，Ａ2・・・のために対応するアドレスを確保しており、そのオブジェクトの状態Ｃ1，Ｃ2・・・を所定のデータ形式にて記憶する。第１の出力用メモリ２１ａおよび第２の出力用メモリ２１ｂは、図４Ａに示すように、各タスク（オブジェクト）Ｆ1，Ｆ2・・・のために対応するアドレスを確保しており、そのタスクの演算結果による状態Ｅ1，Ｅ2・・・を所定のデータ形式にて記憶する。
【００３０】
また、ＣＰＵ２２には、インターフェイス３０を介して、ホストコンピュータ３２、ディスプレイ（ＣＲＴ）３４、プリンタ３６、センサ３８、スイッチ４０、ハードディスク（ＨＤＤ）４２、フレキシブルディスクドライブ（ＦＤＤ）４４等が接続されている。これらは、他の制御対象となるソフトウエア等と共に、オブジェクトを構成している。
【００３１】
ＨＤＤ４２には、マルチタスク制御プログラムおよびその開発支援プログラム等が記憶されている。これらのプログラムは、ＦＤＤ４４を介して、フレキシブルディスクから読み込まれてインストールされたものである。なお、ＣＤ−ＲＯＭ等の記憶媒体からインストールされたものでもよく、通信回線を通じてダウンロードされたものであってもよい。
【００３２】
上記実施例のシステムを用いて、マルチタスク制御を行なう場合には、まず、マルチタスク制御プログラムを作成する。この実施例では、マルチタスク制御プログラムを、図５に示すようなシーケンシャル・ダイアグラムによって表現して作成するようにしている。このシーケンシャル・ダイアグラムは、マウス２８等によりＣＲＴ３４の画面上に作成する。図において、Ａ1は、入力オブジェクトであるマウス入力を表わしている。なお、このようなスイッチ入力は、ソフトウエアによるものであってもよく、外部のスイッチからの入力であってもよい。
【００３３】
マウス入力Ａ1とタスクＦ１は、横方向に伸びるラインＬ１によって接続されている。これは、マウス入力Ａ1がＯＮになれば実行されるものであることが示されている。ここでは、マウス入力Ａ1がＯＮになるとタスクＦ1が実行される。タスクＦ1は、ハードディスク４２のデータＤＴＣをＦＤＤ４４に挿入されているフレキシブルディスクにコピーすることを内容とする処理である。つまり、ここでは、コピープログラムがタスク（出力オブジェクト）となっている。
【００３４】
マウス入力Ａ1から右に伸びるラインＬ１は、並列に分岐したラインＬ２によって、入力オブジェクトであるディレイＡ2に接続されている。ここで、ディレイＡ2は、マウス入力Ａ1がＯＮになってから、指定の時間経過した後に、ＯＮとなるものである。ディレイＡ2は、ＣＰＵ２２のタイマによって実現されている。さらに、ディレイＡ2の右に伸びるラインＬ２により、タスクＦ2が接続されている。ここでは、タスクＦ2は、表計算のプログラムである。したがって、マウス入力Ａ1がＯＮになった後、４ｍＳ後に表計算プログラムが立ち上がる。つまり、ラインによって接続されていることによって論理積条件を表し、ラインの分岐によって論理和条件を表している。
【００３５】
同様にして、ワープロソフトウエアの起動というタスクＦ3は、データＤＴＣのコピー（タスクＦ１）が完了し、ワープロソフト起動の音声入力Ａ４（音声認識の結果が”ワープロを起動せよ”であればＯＮ、そうでなければＯＦＦ）が与えられたら実行される。
【００３６】
なお、この実施例では、スイッチＡ1が条件部、処理Ｆ1が出力部である。同様に、スイッチＡ1，Ａ2が条件部、処理Ｆ2が出力部である。
【００３７】
図５のシーケンシャル・ダイアグラムは、以上のような処理を行なうことを表わしたものである。このようなシーケンシャル・ダイアグラムを用いれば、希望するタスク（Ｆ1、Ｆ2、Ｆ3）の単位でマルチタスクプログラムを構成できるので、マルチタスクのプログラミングに慣れていない者でも、容易にプログラムを作成することができる。その上、条件を細かく設定できるので、柔軟な処理を行うことができる。また、視覚的に各タスクの実行条件や相互関連を示すことができるので、作成や修正が容易である。
【００３８】
なお、作成されたシーケンシャルプログラムは、ＨＤＤ４２（記憶手段５４）に記憶される。デバッグにより修正を行う際には、ＨＤＤ４２からプログラムを読み出し、ＣＲＴ３４に表示する。
【００３９】
次に、このシーケンシャル・ダイアグラムを実行する際の動作について、説明する。図６は、その動作のフローチャートである。まず、ＣＰＵ２２は、ＨＤＤ４２に記憶されたシーケンシャル・ダイアグラム（処理ダイアグラム）を読み込んで、図７のようにコード化する（ステップＳ１）。このコードは、ＨＤＤ４２に記憶しておく。次に、第２の出力用メモリ２１ｂの内容をクリアする（ステップＳ２）。さらに、プログラムカウンタを０にセットする（ステップＳ３）。
【００４０】
その後、プログラムカウンタの指す１かたまりのコードを取り込む（ステップＳ４）。ここでは、まず、１行目の「ＬＤ  Ａ1」、２行目の「ＥＸＥＣ  Ｆ1」が取り込まれる。次に、命令タイプの判別を行なう（ステップＳ５）。ＥＮＤ命令でなければ、ステップＳ６に進む。ここでは、ＥＮＤ命令ではないから、ステップＳ６を実行する。ステップＳ６では、各入力オブジェクトの状態を条件用メモリ１９に取り込む。したがって、上記の入力Ａ1，Ａ2，Ａ3の状態Ｃ1，Ｃ2，Ｃ3も、図３Ｂに示すように取り込まれる。
【００４１】
なお、上記の取り込み処理は、詳細には次のようにして行なわれる。まず、入力用サブシステム２は、マウスポインタが所定の領域（たとえば、表計算ソフトを示すアイコン）にある時にマウス２８が左クリックされたか否かを判断する。この所定領域においてマウス２８が左クリックされた場合（マウスＡ１がＯＮであるとする）であれば、条件用メモリ１９のマウスＡ1に対応するアドレスに「０００００００１」を書き込み、そうでなければ（マウスＡ１がＯＦＦであるとする）「００００００００」を書き込む。つまり、マウスＡ1の状態Ｃ1を、所定のフォーマットに変換して、条件用メモリ１９に書き込む。なお、条件用メモリ１９は、「ＯＮ」「ＯＦＦ」のみを示す必要がある場合には、１ワードの領域を設けなくとも、１ビットの領域を用意するだけでもよい。
【００４２】
また、入力オブジェクトごとに、上記の標準フォーマットへの変換処理は異なる。したがって、この実施例では、図３Ａに示すように、各入力オブジェクトに対応して、上記の処理を行なうプログラムの先頭番地を、メモリ２０内に入力処理テーブルとして記憶するようにしている。このようにしておけば、入力オブジェクトに対応する入力処理テーブルから読み出したアドレスのプログラムを実行するだけで、上記の変換処理を行なうことができる。
【００４３】
以上のようにして、各オブジェクトの状態を条件用メモリ１９に取り込むと、次に、命令に示された論理演算を行なう（ステップＳ７）。ここでは、まず、マウスＡ1の状態Ｃ1を、演算用メモリ（図示せず）にロードせよという命令「ＬＤＡ1」を実行する。２行目の命令が「ＥＸＥＣ  （Ｆ1）」命令であるから、演算用メモリの内容を第１の出力用メモリ２１ａの出力オブジェクトＦ1に対応するアドレスに転送する。したがって、マウスＡ1がＯＮであれば、第１の出力用メモリの出力オブジェクトＦ1に対応するアドレスの内容Ｅ1は、「００００００００」となる。ＯＮであれば、「０００００００１」となる。
【００４４】
次に、第２の出力用メモリ２１ｂと第１の出力用メモリ２１ａの対応する各アドレスを比較し、変化があるかを調べる（ステップＳ８）。変化が無ければ、何も処理を行なわない。変化があれば、変化したアドレスに対応するタスクに対する処理を、出力サブシステム１０が実行する。
【００４５】
たとえば、第１の出力用メモリ２１ａのタスクＦ1に対応するアドレスの内容Ｅ1が、「０００００００１」に変化したとする。出力サブシステム１０は、「００００００００」（停止）から「０００００００１」（実行）への、この変化を受けて、タスクであるコピープログラムＦ1を実行する。この際、メモリ２０には、図４Ｂに示すように、出力処理のプログラムの先頭アドレスが、各出力オブジェクトに対応して出力処理テーブルとして記憶されている。このようにしておけば、タスクに対応する出力処理テーブルから読み出したアドレスのプログラムを実行するだけで、上記の出力処理を行なうことができる。
【００４６】
なお、タスクのプログラムが大きい場合には、実行命令を含むバッチファイルの先頭アドレスを記憶するようにすればよい。
【００４７】
ステップＳ８の処理が終了すると、ステップＳ９に進み、プログラムカウンタをインクリメントして、ステップＳ４以下を再び実行する。
【００４８】
今度は、図７の３行目のコード「ＡＮＤ  Ａ2」と４行目のコード「ＥＸＥＣ（Ｆ2）」を取り込む（ステップＳ４）。以下、同様の処理がなされる。ただし、「ＡＮＤ」命令であるから、演算用メモリの内容に、スイッチＡ2の状態Ｃ2が論理積され、演算用メモリの内容となる。したがって、スイッチＡ1，Ａ2の双方がＯＮとなった場合にのみ、表計算プログラムＦ2の実行命令が出される。なお、表計算プログラムＦ2の実行は、オペレーティングシステムが管理を行なう。
【００４９】
以下、同様にして、図７の第５行目〜第７行目のコードが実行される（ステップＳ４〜Ｓ９）。
【００５０】
次に、第８行目の「ＥＮＤ」命令を取り込む（ステップＳ４）。ステップＳ５において、「ＥＮＤ」命令と判定され、ステップＳ１０に移る。ステップＳ１０では、第１の出力用メモリ２１ａの内容を第２の出力用メモリ２１ｂに転送する。以上のようにして、シーケンシャル・ダイアグラムの１サイクルの処理（一連のシーケンシャルな基本処理）が修了する。その後、ステップＳ３において、プログラムカウンタをクリアし、再び、ステップＳ４以下を次のサイクルとして実行する。この１サイクルの処理は、連続して行ってもよいし、所定間隔を定めて行ってもよい。
【００５１】
なお、上記実施例では、各条件部および出力部ごとに、条件用メモリ１９への取り込み処理（ステップＳ６）、第１の出力用メモリ２１ａへの出力処理（ステップＳ７）を行なった。しかし、図８のフローチャートに示すように、条件用メモリ１９への取り込み処理、第１の出力用メモリ２１ａへの出力処理を、１サイクルごとにまとめて行なってもよい。
【００５２】
図９に、入力オブジェクトの例および論理演算の例を示す。図９Ａは、計測器等からの出力値Ｃ8が、所定のしきい値Ｔhより大きい場合に、ＯＮとなる比較スイッチを示している。このような入力オブジェクトの場合、図３に示す条件用メモリ１９には、出力値Ｃ8が、所定のフォーマット（たとえば、１６ビットの長さで）に変換されて記憶される。ＣＰＵ２２が、図７のようなコードに基づき、しきい値Ｔhとの比較を行なって、ＯＮもしくはＯＦＦを決定する。
【００５３】
図９Ｂは、所定の時刻になった場合にＯＮとなる、タイマスイッチを表している。図９Ｃは、所定の間隔で、ＯＮ，ＯＦＦを繰り返すスイッチを示している。ここに掲げた、入力オブジェクト以外に、ホストコンピュータからの呼出し、プリンタからの印刷終了命令、他のプログラムからの呼出し等、種々のものを入力オブジェクトとすることができる。この実施例では、これら入力オブジェクトが外部装置であるか内部装置であるかハードウエアであるかソフトウエアであるかに拘らず、この入力オブジェクトの状態を所定のフォーマットにて条件用メモリに記憶するようにしている。したがって、マルチタスク制御システムの構築が容易である。
【００５４】
なお、図９Ｄのように、スイッチを並列に接続して、「ＯＲ」を表すこともできる。また、これらを、図９Ｅのように組合わせて用いることもできる。
【００５５】
また、上記では、出力用メモリとして、第１，第２の２つの出力用メモリ２１ａ，２１ｂを設けているが、１つの出力用メモリで構成してもよい。この場合、変化のあったオブジェクトだけでなく、全てのオブジェクトに対して処理を行なわなければならない。
【００５６】
上記の実施例では、タスク制御手段６は、図７に示すような１つのマルチタスク制御プログラムを実行している。しかし、複数のマルチタスク制御プログラムを実行するようにしてもよい。たとえば、図１０に示すように、２つのマルチタスク制御プログラム５０、５２を実行するようにしてもよい。この場合、図１１に示すように、タスク制御手段６はプログラム５０、５２を交互に実行する。このようにすることにより、タスク制御プログラムの作成や管理が容易となる。
【００５７】
また、図１２に示すように、それぞれのプログラム５０、５２に対して、タイマＣ５０、Ｃ５２を設け、そのタイムアップごとに、それぞれのプログラムを１サイクルのみ実行するようにしてもよい。このようにすれば、重要なタスクにかかわる制御プログラムを短い間隔で実行し、重要性の低いタスクにかかわる制御プログラムを長い間隔で実行することができ、タスク処理の効率化を図ることができる。
【００５８】
なお、図１２の処理では、一旦、一方の制御プログラムが実行されると、その実行中に他方のタイマがタイムアップしても、他方の制御プログラムは実行されず、一方の制御プログラムの実行が終了するまで待つこととなる。これに対し、タイマ割り込みによって何れかの制御プログラムを実行するようにしてもよい。この場合、制御プログラムに予め優先度を付しておき（たとえば、優先度テーブルとして記憶しておけばよい）、２つの制御プログラムの実行が重複した場合には、優先度の高い方を先に実行するようにすることができる。
【００５９】
なお、上記実施例では、２つの制御プログラムがある場合について説明したが、３以上あってもよい。
【００６０】
タスク制御手段６が、ある条件が成立した（もしくは不成立となった）時点においてのみ出力用メモリ手段８への書き込み（タスクの実行）を行う場合の処理について説明する。このような処理は、ある条件の成立（不成立）を契機としてその時点でのみ実行が必要なタスク制御において必要である。このような処理を、ここでは、変化処理と呼ぶことにする。
【００６１】
図１３に、このような処理において、タスク制御手段６が用いるフラグテーブルを示す。このフラグテーブルは、プログラムメモリ２４に記憶される。左側には、図５に示すような制御プログラムの条件部のみが抽出されて記憶されている。その右側には、それぞれの条件部に対応して、当該条件が満たされていれば「１」を、満たされていなければ「０」を記憶するための領域が確保されている。また、中央の欄には、１回だけの実行であるか否か（変化処理であるか否か）を示すデータが記憶されている。「１」であれば変化処理、「０」であれば定常処理（変化処理でないもの）を示している。
【００６２】
図１４に、フラグテーブルを用いた場合のタスク制御手段６のフローチャートを示す。まず、ステップＳ６０において、フラグテーブルの全フラグをクリアして「０」にする。次に、カウンタｉを「０」にする（ステップＳ６１）。その後、条件ｉを読み出す（ステップＳ６２）。ここでは、ｉが「０」であるから、条件０を読み出す。条件０がＥＮＤ命令であれば、条件０から再び繰り返すために、ステップＳ６１に戻る。条件０がＥＮＤ命令でなければ、処理の実行を行う（ステップＳ６４）。
【００６３】
ステップＳ６４の詳細を図１５に示す。まず、ステップＳ７０において、当該条件が今回成立しているか否かを判断する。成立していなければ、当該条件のフラグテーブルを「０」に書き換えて、図１４のステップＳ６５に戻る。そして、次の条件について同じようにステップＳ６２以下の処理を行う。
【００６４】
ステップＳ７０において、条件が今回成立していれば、当該条件に対応するタスクが変化処理であるか定常処理であるかを判断する（ステップＳ７１）。これは、フラグテーブルの中欄を見ることにより、知ることができる。
【００６５】
定常処理のもの（成立時１回実行でないもの）については、無条件で、タスクに対応する出力用メモリ手段の記憶領域への書込を行う（ステップＳ７３）。そして、フラグテーブルのフラグｉを「１」にして、図１４に戻る。
【００６６】
変化処理のもの（成立時１回実行のもの）については、ステップＳ７２においてフラグテーブルのフラグｉが「０」であるか否かを判断する。ここで、フラグテーブルのフラグｉには、今回より１回前の条件成否の情報が記憶されている。したがって、ステップＳ７２において、フラグｉが「１」である場合には、すでに前回以前に条件の不成立から成立への変化が起こっている。よって、この場合には、ステップＳ７３の処理実行を行わず、フラグテーブルのフラグｉを「１」にして、図１４に戻る。これに対し、ステップＳ７２において、フラグｉが「０」である場合には、今回初めて条件の成立があったので、ステップＳ７３の処理実行を行う。その後、フラグテーブルのフラグｉを「１」にして、図１４に戻る。
【００６７】
上記のように、フラグテーブルを用いることにより、変化処理を含むタスク制御を容易に実行することができる。
【００６８】
なお、上記実施例では、否成立から成立の場合に処理実行を行うようにしたが、成立から否成立の場合に処理実行を行うようにしてもよい。
【００６９】
なお、上記各実施例では、図１の各機能を実現するためにＣＰＵを用いたが、その一部又は全部をハードウエアのみによって実現してもよい。
【図面の簡単な説明】
【図１】この発明の一実施例によるマルチタスク制御システムの全体構成を示す図である。
【図２】図１のシステムをＣＰＵを用いて実現した場合のハードウエア構成を示す図である。
【図３】入力処理テーブルおよび条件用メモリを示す図である。
【図４】出力処理テーブルおよび出力用メモリを示す図である。
【図５】シーケンシャル・ダイアグラムの画面表示を示す図である。
【図６】プログラム（コード）の実行を示すフローチャートである。
【図７】コードの一例を示す図である。
【図８】プログラム（コード）の実行を示す他のフローチャートである。
【図９】他のオブジェクトの例を示す図である。
【図１０】２つのタスク制御プログラムを示す図である。
【図１１】２つの制御プログラムを実行する場合のフローチャートである。
【図１２】２つの制御プログラムを実行する場合の他のフローチャートである。
【図１３】フラグテーブルを示す図である。
【図１４】フラグテーブルを用いた場合の処理を示すフローチャートである。
【図１５】フラグテーブルを用いた場合の処理を示すフローチャートである。
【図１６】従来のタスク制御プログラムを示す図である。
【符号の説明】
２・・・条件入力手段
４・・・条件用メモリ手段
６・・・タスク制御手段
８・・・出力用メモリ手段
１０・・・出力手段
【図１】
0003541094.tif 000002
【図２】
0003541094.tif 000003
【図３】
0003541094.tif 000004
【図４】
0003541094.tif 000005
【図５】
0003541094.tif 000006
【図６】
0003541094.tif 000007
【図７】
0003541094.tif 000008
【図８】
0003541094.tif 000009
【図９】
0003541094.tif 000010
【図１０】
0003541094.tif 000011
【図１１】
0003541094.tif 000012
【図１２】
0003541094.tif 000013
【図１３】
0003541094.tif 000014
【図１４】
0003541094.tif 000015
【図１５】
0003541094.tif 000016
【図１６】
0003541094.tif 000017