(57)【要約】【課題】補助記憶装置の容量が限られるシーケンサにおいて、効率的に制御規則を処理して実行することが可能な装置を提供する。【解決の手段】外部からのイベントおよび装置の状態（コンディション）を記述する一定長のデータと、それに続く装置の動作（アクション）を記述する一定長のデータと、から成る制御規則（ＥＣＡルール）を用いることにより、イベントおよびコンディションを記述したブロックのみをまず読み込み、これを外部からの入力信号と、比較して、動作の発火条件を満たした場合にのみ、前記ブロックに続くアクションを記述したブロックを読み込み処理する。【選択図】　図１
2004078517.tif 000002
【特許請求の範囲】
【請求項１】
発火する事象（イベント）と、動作の発火条件（コンディション）と、実行すべき動作（アクション）からなるＥＣＡルール（制御規則）を解析・処理するシーケンスデータ処理装置であって、イベントを記述するイベント部およびコンディションを記述するコンディション部を有した一定長のデータ（ブロック）と、アクションを記述するアクション部を有したブロックと、によって構成するＥＣＡルールを、ブロック毎に逐次処理することで、動作するシーケンスデータ処理装置。
【請求項２】
前記イベント部およびコンディション部を有したブロックに記述された情報と、入力装置が得る信号情報とを比較することで、アクションの発火条件を判定し、アクションの発火条件が成立した場合のみ、当該ブロックに続くブロックを処理対象とすることを特徴とする、請求項１に記載のシーケンスデータ処理装置。
【請求項３】
前記ＥＣＡルールは、少なくとも１つの条件を記述したブロック、および、このブロックに後続し前記条件が成立した場合の応答としての動作とを記述した少なくとも１つのブロックを含むことを特徴とする請求項１または２に記載のシーケンスデータ処理装置。
【請求項４】
前記ＥＣＡルールが、条件を記述したブロックが連続して配置されていることを特徴とする請求項１〜３のいずれか１項に記載のシーケンスデータ処理装置。
【請求項５】
前記ＥＣＡルールが、動作を記述したブロックが連続して配置されていることを特徴とする請求項１〜４のいずれか１項に記載のシーケンスデータ処理装置。
【請求項６】
各ブロックには、後続するブロックが存在するか否かを明示する継続フラグが所定位置に設けられている請求項１〜５のいずれか１項に記載のシーケンスデータ処理装置。
【請求項７】
前記ＥＣＡルールが、コンディションの各構成条件それぞれを個々に有効とするか否かを決定するコンディション・マスクを備えたことを特徴とする請求項１〜６のいずれか１項に記載のシーケンスデータ処理装置。
【請求項８】
前記ＥＣＡルールが、アクションの各出力先それぞれを個々に対象とするか否かを決定するアクション・マスクを備えたことを特徴とする請求項１〜７のいずれか１項に記載のシーケンスデータ処理装置。
【請求項９】
前記ＥＣＡルールを記憶する記憶装置が、所定通信回線によって結ばれた遠隔地に配置されたことを特徴とする請求項１〜８のいずれか１項に記載のシーケンスデータ処理装置。
【請求項１０】
通信装置を介して他のシーケンスデータ処理装置と前記ＥＣＡルールの送受信および追加・削除指示を可能に構成された請求項１〜９のいずれか１項に記載のシーケンスデータ処理装置。
【請求項１１】
請求項１〜１０のいずれか１項に記載のシーケンスデータ処理装置にシーケンスデータ処理を行わせるコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、シーケンスデータ処理装置に係わり、特に、所定のＥＣＡルール（制御規則）に基づいて、外部からの入力信号をイベントとして受理した後に、アクションの発火条件について評価を行い、条件が成立した場合に外部へ出力信号を発するシーケンスデータ処理装置ならびにそのプログラムに関する。
【０００２】
【従来の技術】
従来のシーケンス装置では、シーケンス処理を実行するコードを繰り返し逐次反復するシーケンス部、外部からの信号を入力する外部信号入力部と、外部へ信号を出力する外部信号出力部と、シーケンス部の入力データと出力データを格納する内部データを備えて構成されている。出力データの出力タイミングは、通常、内部データに記述される制御規則の順序によって異なる。例えば特許第２８４２５２０号公報にも、この種のシーケンス制御方法が開示されている。
【０００３】
上記公報の技術では、次ステップ移行条件を有する制御データが、複数の動作ステップのそれぞれについて予め格納されているデータ群エリアから、ステップ番号格納エリアに格納されているステップ番号にもとづき１ブロック読み込まれ、読み込まれた制御データにおける次ステップ移行条件の満足を条件に、読み込まれた１ブロック内の次ステップ番号エリアに格納されている次ステップ番号を前記ステップ番号格納エリアに格納する、シーケンスプログラムを繰り返し実行するようにしており、これにより、動作ステップが多数ある場合のシーケンスプログラムのステップ数の増大化を防止して制御の高速化と、プログラムの作成や修正を容易化している。なお、制御データは、出力情報を有し、この出力情報に基づき出力アクチュエータ等の出力機器を制御しており、それぞれのステップで動作させるアクチュエータ等を指定できる。
【０００４】
【発明が解決しようとする課題】
従来のシーケンス処理装置では、シーケンス装置の動作規則を記述する内部データを一括して管理するデータ管理機能が必要となり、一般に動作規則の処理において演算装置の内部記憶領域を多く消費するという問題があった。また、各動作規則に記述するイベント、コンディション、アクションを個別に読み込んで処理する場合においては、内部信号を処理する効率の低下を招くという問題がある。そこで、本発明では、一定長のデータ長を有するブロック単位で動作規則を記述し、その記述内容を処理することによって、様々な動作規則を効率的に処理することが可能で、尚且つ、その動作規則を容易に変更することで柔軟に動作を変更することが可能なシーケンスデータ処理装置、を提供することを目的とする。
【０００５】
【課題を解決するための手段】
課題を解決するため、請求項１に記載の発明では、発火する事象（イベント）と、動作の発火条件（コンディション）と、実行すべき動作（アクション）からなるＥＣＡルール（制御規則）を解析・処理するシーケンスデータ処理装置において、イベントを記述するイベント部およびコンディションを記述するコンディション部を有した一定長のデータ（ブロック）と、アクションを記述するアクション部を有したブロックと、によって構成するＥＣＡルールをブロック毎に逐次処理することで動作するように構成する。請求項２に記載の発明は、請求項１の装置において、前記イベント部およびコンディション部を有したブロックに記述された情報と、入力装置が得る信号情報とを比較することで、アクションの発火条件を判定し、アクションの発火条件が成立した場合のみ、当該ブロックに続くブロックを処理対象とすることを特徴とする。
【０００６】
請求項３に記載の発明では、請求項１または２に記載のシーケンスデータ処理装置において、前記ＥＣＡルールは、少なくとも１つの条件を記述したブロック、および、このブロックに後続し前記条件が成立した場合の応答としての動作とを記述した少なくとも１つのブロックを含むことを特徴とする。
【０００７】
請求項４に記載の発明は、請求項１〜３のいずれか１項に記載のシーケンスデータ処理装置において、前記ＥＣＡルールが、条件を記述したブロックが連続して配置されていることを特徴とする。また、請求項５に記載の発明は、請求項１〜４のいずれか１項に記載のシーケンスデータ処理装置において、前記ＥＣＡルールが、動作を記述したブロックが連続して配置されていることを特徴とする。
【０００８】
請求項６に記載の発明は、請求項１〜５のいずれか１項に記載のシーケンスデータ処理装置において、前記各ブロックには、後続するブロックが存在するか否かを明示する継続フラグを所定位置に設ける。請求項７に記載の発明では、請求項１〜６のいずれか１項に記載のシーケンスデータ処理装置において、前記ＥＣＡルールが、コンディションの各構成条件それぞれを個々に有効とするか否かを決定するコンディション・マスクを備える。また、請求項８に記載の発明では、請求項１〜７のいずれか１項に記載のシーケンスデータ処理装置において、前記ＥＣＡルールが、アクションの各出力先それぞれを個々に対象とするか否かを決定するアクション・マスクを備える。
【０００９】
請求項９に記載の発明は、請求項１〜８のいずれか１項に記載のシーケンスデータ処理装置において、前記ＥＣＡルールを記憶する記憶装置が、所定通信回線によって結ばれた遠隔地に配置されたことを特徴とする。請求項１０に記載の発明は、請求項１〜９のいずれか１項に記載のシーケンスデータ処理装置を、通信装置を介して他のシーケンスデータ処理装置と前記ＥＣＡルールの送受信および追加・削除指示を可能な構成とする。そして、請求項１１に記載の本発明のコンピュータプログラムは、ＣＰＵを含み構成されたコンピュータ装置としての請求項１〜１０のいずれか１項に記載のシーケンスデータ処理装置に所定のシーケンスデータ処理を行わせるものである。
【００１０】
【発明の実施の形態】
上記目的を達成するために、本発明では、シーケンスデータ処理装置の制御規則を、イベント部とコンディション部を含む一定長のブロックに記述し、このブロックからアクションの発火条件を満たしたときのみ、続くアクション部を含む一定長のブロックに記述するアクションを実行する。そして上記各ブロックを連結する。これにより、複数のアクションの発火条件が成立したときにアクションを実行する制御規則や、あるアクションの発火条件が成立したときに複数のアクションを順次実行する制御規則を容易に記述することが可能になる。このための処理機能は、所定構成の当該シーケンスデータ処理装置を制御している、１つ以上のＣＰＵの制御プログラムとして実現することができる。
【００１１】
〔実施例〕以下、実施例をあげ、図面を参照して本発明について詳細に述べる。図１は、本発明のシーケンスデータ処理装置の一実施例の概略構成を示すブロック図である。本発明のシーケンスデータ処理装置は、図１に示すように、実施例装置は、演算装置０１、記憶装置０２、通信装置０３、入力装置０４、出力装置０５と内部出力装置０６を含み構成されている。前記演算装置０１は、イベント解析部２０、コンディション解析部２１、アクション解析部２２、ＥＣＡルール検索部２３、補助記憶部２４、タイマ２５、時間イベント管理部２６、および駆動管理部２７により構成されている。前記時間イベント管理部２６は、時間イベント・テーブル２８を保持している。なお、実施例のシーケンスデータ処理装置は、一般にＣＰＵおよびＲＡＭ、ＲＯＭ、各種Ｉ／Ｏ装置等を含み構成されたコンピュータ装置として実施例でき、所望機能はＣＰＵに所定プログラムを実行させ所定演算および各部の制御を行わせることで実現することができる。
【００１２】
前記記憶装置０２には、ＥＣＡルール数３０およびＥＣＡルール群３１が保持されている。ＥＣＡルール群３１の各ＥＣＡルール（ａ），　ＥＣＡルール（ｂ），…は、後に詳述するように、それぞれが少なくとも１つの一定長のデータブロックＡを含み、必要に応じて同じく一定長のデータブロックＢ、Ｃ、…が連続する。この記憶装置０２が保持している制御規則（ＥＣＡルール３１）には、イベント部３２とコンディション部３３によって定める少なくとも１つの条件、および、前記条件が成立した場合の応答として、制御規則（ＥＣＡルール３１）のアクション部３４によって定める少なくとも１つの動作とが記述される。特に、ここでいう記憶装置０２とは、必ずしも演算装置に内蔵される等で演算装置０１との物理的な距離が近接している形態に限定するものではなく、たとえば、演算装置０１と記憶装置０２が、インターネットなどの広域通信網や無線ＬＡＮなどの通信技術によって、相互に情報を交換することができる手段によって結合されてもよい。すなわち、記憶装置は所定通信回線によって結ばれた遠隔地に配置されていてもよい。
【００１３】
その他の本シーケンスデータ処理装置を構成する上記構成部分のうち主要なものについては、以下の説明中で随時説明する。なお、周知のものについては説明を省略する。本シーケンスデータ処理装置は、入力装置０４が受理する入力信号１１と、記憶装置０２が保持するＥＣＡルール３１の制御規則と、を演算装置０１が検証し、出力装置０５を介して出力信号１２を出力することを基本動作とする。
【００１４】
では、ＥＣＡルール３１の処理の詳細について、図１のブロック図の流れを追って説明する。まずはじめに、入力装置０４が外部から受理した入力信号１１は、演算装置０１が判別可能なデータ列へと変換され、それらデータ列は比較器２９へと渡される。つぎに、前記ＥＣＡルール３１を順次検索する手段を有したＥＣＡルール検索部２３が、まず、記憶装置０２のメモリ空間内において先頭に位置するＥＣＡルール３１（図１ではＥＣＡルール（ａ）にあたる）に着目して、前記ＥＣＡルール３１のうちイベント部３２およびコンディション部３３が記述されている最初の一定長のデータ（ブロックＡ）を抽出する。ＥＣＡルール検索部２３が抽出したブロックＡは、イベント解析部２０およびコンディション解析部２１によって、イベント部３２とコンディション部３３が抽出され比較器２９へ渡される。ここで、比較器２９は、前記データ列とイベント部３２およびコンディション部３３とを比較し、アクションの発火条件を満たしているか否かの評価結果を得る。
【００１５】
もし、比較器２９の評価結果がアクションの発火条件を満たしている旨であったならば、アクション解析部２２は、ＥＣＡルール検索部２３に対して、ＥＣＡルール（ａ）内のブロックＡに続くブロックＢをアクション解析部２２へ送信することを要求する。ＥＣＡルール検索部２３は、アクション解析部２２の要求にあるブロックＢを、記憶装置０２に保持するＥＣＡルール（ａ）から抽出し、アクション解析部２２へ送信する。アクション解析部２２は、受信したブロックＢに記述する動作に従って出力信号１２を出力することを求める出力動作命令を、出力装置０５へ通知する。さらに、アクション解析部２２は、ＥＣＡルール検索部２３に対して、ＥＣＡルール（ａ）に続くＥＣＡルール（ｂ）内のブロックＡを、イベント解析部２０およびコンディション解析部２１へ送信することを通知する。ＥＣＡルール検索部２３は、アクション解析部２２の要求にあるＥＣＡルール（ｂ）内のブロックＡを、記憶装置０２に保持するＥＣＡルール（ｂ）から抽出し、イベント解析部２０およびコンディション解析部２１へ送信する。出力装置０５は、アクション解析部２２が通知する出力動作命令に従い、出力信号１２を出力する。これにより、ＥＣＡルール（ａ）に記述する制御規則の処理が完了することになる。
【００１６】
一方、もし比較器２９の評価結果がアクションの発火条件を満たしていない旨であったならば、比較器２９は、ＥＣＡルール検索部２３に対して、ＥＣＡルール（ａ）に続く次のＥＣＡルール（ｂ）内の先頭のブロックＡを、イベント解析部２０およびコンディション解析部２１へ送信することを通知する（ＥＣＡルール（ａ）内のブロックＡ以降のブロックについては一切の処理がなされない）。ＥＣＡルール解析部２２は、アクション解析部２２の要求にあるＥＣＡルール（ｂ）内のブロックＡを、記憶装置０２に保持するＥＣＡルール（ｂ）から抽出し、イベント解析部２０およびコンディション解析部２１へ送信し、上述処理が繰り返される。
【００１７】
このように、シーケンスデータ処理装置は、記憶装置０２に保持するＥＣＡルール全てに対して、前述の一連の動作を逐次適用して処理することを繰り返すことにより、所望の動作を実現する。なお、上記のイベント解析部２０、コンディション解析部２１、アクション解析部２２でのそれぞれの処理方法に関しては後で詳述する。
【００１８】
つぎに、実施例のＥＣＡルール３１の構造に関して、より詳細に説明する。本実施例のシーケンスデータ処理装置は、入力装置０４が受理可能な入力ポート数を５つ、出力装置０５が出力可能な出力ポート数を５つ有するものとし、これらの入出力制御を記述するＥＣＡルール中でのブロック長を２バイト（１６ビット）と定める。
【００１９】
図２に例示したＥＣＡルールは、イベント部３２と、コンディション部３３と、アクション部３４と、を各１つ有する構造の本発明における基本的なＥＣＡルールである。つまり、この基本的なＥＣＡルールの構造内には、「発火する事象（イベント）」に対して「動作の発火条件（コンディション）」が１つ記述されており、さらに、動作の発火条件が成立した場合に対応する「実行すべき動作（アクション）」が１つ記述されているものである。このようにＥＣＡルールには、必ずイベント部およびコンディション部を記述するブロックが先頭に少なくとも１つ存在しなければならない。
【００２０】
ＥＣＡルールを構成する各ブロックの先頭には、前記ブロックに続くブロックが存在するかを明示する継続フラグ３６を設ける。本実施例では、ＥＣＡルールを構成するブロックの先頭１ビットに継続フラグ３６を設けることにより実現した。たとえば、図３に示すように、あるＥＣＡルール（ａ）内においてブロックＡに続いてブロックＢが存在する場合は、ブロックＡの継続フラグを「１」に設定する。もし、ブロックＡに続くブロックＢが存在しない場合は、ブロックＢの継続フラグを「０」に設定する。図３のＥＣＡルール（ｂ）は、ブロックＡに続くブロックＢが存在し、さらにブロックＢに続くブロックＣまでが存在する場合の継続フラグの数値の例を示す。
【００２１】
図４の各図は、本実施例において処理対象となる各種ＥＣＡルール（ＥＣＡルール（１）〜ＥＣＡルール（４））の構造について説明するものである。図４のＥＣＡルール（１）は、イベント部およびコンディション部を含むブロックが１つ以上（図では１つのみ）で、アクション部を含むブロックを持たない構成の制御記述である。図４のＥＣＡルール（１）では、ブロックＡに続くブロックは存在しないため、ブロックＡの継続フラグは「０」となる。
【００２２】
図４のＥＣＡルール（２）は、イベント部およびコンディション部を含むブロックが１つで、それに対応するアクション部を含むブロックが１つである構成の制御記述であり、ＥＣＡルールの基本的な構成といえる。シーケンスデータ処理装置では、イベント部およびコンディション部を含むブロックＡに対応して、ブロックＢのアクション部３４に記述する１つの動作を実行する。
【００２３】
図４のＥＣＡルール（３）は、イベント部およびコンディション部を含むブロックが２つ連続してある場合（２つ以上でもよい）で、それらブロックの条件をすべて満たした場合に対応するアクション部を含むブロックが少なくとも１つ以上続く構成の制御記述である。本発明では、このＥＣＡルール構造をマルチ・コンディションと呼ぶことにする。この場合はシーケンスデータ処理装置は、イベント部およびコンディション部を含む各ブロックに記述する動作の発火条件がすべて成立した場合に対して、アクション部に記述する動作を実行する。
【００２４】
図４のＥＣＡルール（４）は、イベント部およびコンディション部を含むブロックが少なくとも１つ以上あり、それに対応するアクション部を含むブロックが２つ以上続く構成の制御記述である。本発明では、このＥＣＡルール構造をマルチ・アクションと呼ぶことにする。この場合はシーケンスデータ処理装置は、イベント部およびコンディション部を含む少なくとも１つ以上のブロックの条件成立に対応して、２つ以上あるアクション部に記述する各動作を順次実行する。
【００２５】
先に述べたとおり、ＥＣＡルール内の先頭ブロックには、必ずイベント部３２とコンディション部３３が記述される。本実施例においては、先頭ブロックは、図５に示すように、継続フラグ３６（１ビット）を除く残りの１５ビットがイベント部とコンディション部で、そのうちイベント部３２を２ビット、コンディション部３３を１３ビットとする。イベント部３２は、最大で２ビット（４通り）のイベントの種類を記述することが可能である。コンディション部３３は、入力装置０４が受理可能な入力ポート数５つに対応して、コンディションを示す値を記述するコンディション・バリュー７０（５ビット）、イベントの種類に応じて記述する内容が異なるコンディション・スペース７１（３ビット）、コンディションを判定するために参照する方法などを記述するコンディション・マスク７２（５ビット）、から構成する。なお、前述したマルチ・コンディションの場合であれば、同様の構成のブロックがこれに続く。
【００２６】
イベント部３２とコンディション部３３を含むブロックについてさらに説明する。以下では、まず、イベント部３２に記述する「発火する事象（イベント）」の種類について、また各イベントの種類に対応してコンディション部３３に記述される「動作の発火条件（コンディション）」の種類について順に説明する。
【００２７】
本実施例では、図６に示すように、イベント部（２ビット）により、イベントの種類を以下の３種類設定する。
イベント１：コンディション・コントロール（ビット列：０１）
イベント２：タイマ・エクスパイア（ビット列：１０）
イベント３：レシーブ・メッセージ（ビット列：１１）
【００２８】
〔コンディション・コントロール〕イベント１：コンディション・コントロールのイベントについて説明する。図７に示すように、本実施例において、あるＥＣＡルール内のイベント部３２（２ビット）にコンディション・コントロール（ビット列：０１）のイベントを記述する。コンディション部３３のコンディション・スペース７１には、コンディション・バリュー７０に入力信号１１のＯＮ／ＯＦＦを記述するのか、もしくは、図１の補助記記憶部２４に格納される状態変数７３と比較する値を記述するのか、を示す入力フラグ５２を１ビットで記述する。もし、コンディション・バリュー７０に入力信号のＯＮ／ＯＦＦを記述するものであれば入力フラグ５２は「０」となる。コンディション・バリュー７０に状態変数７３と比較する値を記述するものであれば入力フラグ５２は「１」となる。また、コンディション・スペース７１には、現在のブロックＡに続くブロックＢが、新たなイベント部とコンディション部を含む場合（マルチ・コンディション）を判別するマルチコンディション・フラグ３７を１ビットで記述する。もし、次ブロックＢが、イベント部とコンディション部を含まない場合はマルチコンディション・フラグ３７は「０」となり、イベント部とコンディション部を含む場合はマルチコンディション・フラグ３７は「１」となる。
【００２９】
図８に示すように、前記コンディション・バリュー７０に入力信号１１のＯＮ／ＯＦＦが記述される場合、入力フラグ５２は「０」となり、コンディション・バリューの５ビットのうち、下位ビットから順に入力ポート０〜４の１ビット入力信号のＯＮまたはＯＦＦの状態を、１ビット入力信号ＯＮが条件であれば「１」とし、逆に１ビット入力信号ＯＦＦが条件であれば「０」と記述する。ここで、シーケンスデータ処理装置を動作させるために必要な動作の発火条件は、入力ポート全ての入力信号の値を発火条件とする必要がなく、たとえば、発火条件が「入力ポート０の入力信号が「０」かつ入力ポート３の入力信号が「１」のとき」というように、指定する入力ポートの値だけを参照すればよい場合は少なくない。そこで、発火条件として参照すべき入力ポートを示せるように、コンディション・マスクの５ビットを下位ビットから入力ポート０〜４に対応させて、参照する入力ポートのビット値を「１」とし、参照しない入力ポートのビット値を「０」と記述する。たとえば、前記の「入力ポート０の入力信号が「０」かつ入力ポート３の入力信号が「１」のとき」というように、入力ポート０と入力ポート３を参照し、その他の入力ポートを参照しない場合は、コンディション・マスクは「０１００１」となる。
【００３０】
つまり、図８に示すように、イベントとコンディションによって記述する以下の条件１は、下記に示すビット列１となる。
条件１：「入力ポート０の入力信号が「０」かつ入力ポート３の入力信号が「１」のとき」
ビット列１：＊０１／０１０００／０＊＊／０１００１
ただし、ビットの値が「＊」である部分は、条件１に関係しないデータであることを意味する。
【００３１】
図９に示すように、前記コンディション・バリュー７０に状態変数７３と比較する値が記述される場合、入力フラグ５２は「１」となり、コンディション・バリューの５ビットのうち、下位ビットから順に状態フラグ０〜４と比較する値（各１ビット）を記述する。状態フラグとは、図１０に示すように、状態変数７３の下位ビットから順に状態フラグ０〜４として割り当てるものである。コンディション・バリュー７０に記述する状態フラグの値と、図１の補助記憶部２４にあらかじめ保持する５ビットの状態変数７３の状態フラグと、を比較する。
【００３２】
ここで、先ほどと同様にシーケンスデータ処理装置を動作させるために必要な動作の発火条件は、状態変数７３の状態フラグ全ての値と合致することを発火条件とする必要がなく、たとえば、発火条件が「状態変数７３の状態フラグ１が「０」かつ状態フラグ４が「１」のとき」というように、指定する状態フラグの値だけを参照すればよい場合は少なくない。そこで、発火条件として参照すべき状態フラグを示せるように、コンディション・マスクの５ビットを下位ビットから状態フラグ０〜４に対応させて、参照する状態フラグのビット値を「１」とし、参照しない状態フラグのビット値を「０」と記述する。たとえば、前記の「状態変数７３の状態フラグ１が「０」かつ状態フラグ４が「１」のとき」というように、状態フラグ１と状態フラグ４を参照し、その他の状態フラグを参照しない場合は、コンディション・マスクは「１００１０」となる。
【００３３】
つまり、図９に示すように、イベントとコンディションによって記述する以下の条件２は、下記のビット列２の値となる。
条件２：「状態変数７３の状態フラグ１が「０」かつ状態フラグ４が「１」のとき」
ビット列２：＊０１／１００００／１＊＊／１００１０
ただし、ビットの値が「＊」である部分は、条件２に関係しないデータであることを意味する。
以上により、コンディション・コントロールのイベントにおける、イベント部およびコンディション部の記述方法が示された。
【００３４】
〔時間イベント管理部〕つぎに、イベント２：タイマ・エクスパイアのイベントについての説明に入る前に、まず、図１の時間イベント管理部２６の役割について説明しておく。時間イベント管理部２６は、その内部に時間イベント・テーブル２８を保持する。図１１に示すように、時間イベント・テーブル２８では、図１２に示すように、後述のタイマ・エクスパイアのイベントにおけるコンディション・スペース内に記述するタイマ識別子６４の数だけ、タイマ識別子の値と、タイマ発火の有無を示すタイマ発火フラグの値６２と、タイマ発火までの時間を示すタイマ設定時間６０と、タイマ発火までの残り時間を示すタイマ・カウンタ６１と、タイマ繰返しフラグ６３と、から構成するデータを一元的に管理する。
【００３５】
後述のアクション部の処理（タイマ・アクションまたはハードウエアコントロール・アクションの場合）において、アクション解析部２２の通知を受けた時間イベント管理部２６は、タイマ設定時間６０に値を設定すると同時に、タイマ設定時間６０と同じ値をタイマ・カウンタ６１に設定する。そして、時間イベント管理部２６は、図１のタイマ２５の計測時間から経過時間を監視して、設定した前記タイマ・カウンタ６１の値を経過時間に応じて減算してゆく。タイマ２５は、演算装置０１の各処理から独立して動作しており、演算装置０１の内部の基準クロックから時間を計測し続ける装置である。
【００３６】
もし、図１１の前記タイマ・カウンタ６１の値が０（ゼロ）ミリ秒になったタイマ識別子があったならば、時間イベント管理部２６は、そのタイマ発火フラグ６２を「１」（タイマ発火フラグの初期状態は「０」である）に変更する。さらにこのとき、タイマ繰返しフラグ６３が「０」のときは、タイマ設定時間６０の値を０（ゼロ）ミリ秒にする。逆に、タイマ繰返しフラグ６３が「１」のときは、タイマ設定時間６０の値を再度タイマ・カウンタ６１の値に設定する。これら一連の動作が連続することにより、時間経過に伴って発火するイベントの有無をタイマ発火フラグ６２の値を比較器２９が参照することによってイベントを管理することが可能になる。
【００３７】
〔タイマ・エクスパイア〕続いて、イベント２：タイマ・エクスパイアのイベントについて説明する。図１２に示すように、本実施例において、あるＥＣＡルール内のイベント部３２（２ビット）にタイマ・エクスパイア（ビット列：１０）のイベントを記述し、コンディション部３３のコンディション・スペース（３ビット）のうち２ビットには前述のタイマ識別子６４を記述する。本実施例では、タイマ識別子６４は２ビットで記述するようにしているため、４つの異なるタイマを同時に管理することが可能である。このタイマ識別子６４は、時間イベント管理部２６が保持する図１１の時間イベント・テーブル２８上のタイマ識別子の値に対応するタイマ発火フラグ６２を参照するために用いる。もし、タイマ識別子６４に対応するタイマ発火フラグ６２が「１」のとき、タイマ・エクスパイアの発火条件は満たされているとする。つまり、タイマ設定時間６０に設定した値が経過したことを意味する。逆に前記タイマ発火フラグが「０」のときにはタイマ・エクスパイアの発火条件は満たされていないとする。この場合は、タイマ設定時間６０に設定した値がまだ経過していないことを意味する。
【００３８】
つまり、イベントとコンディションによって記述する以下の条件３は、下記のビット列３となる。
条件３：「タイマ識別子（３）（ビット列：１１）に設定したタイマ設定時間が経過したとき」
ビット列３：＊／１０／＊＊＊＊＊＊／＊１１／＊＊＊＊＊
ただし、ビットの値が「＊」である部分は、条件３に関係しないデータであることを意味する。
【００３９】
また、タイマ・エクスパイアでは、時間経過による動作の発火条件と、コンディション・バリュー７０に記述する状態変数７３の値とを同時に満たすことを動作の発火条件とすることが可能である。コンディション・コントロールのイベントと同様に、コンディション・バリューの５ビットのうち、下位ビットから順に状態フラグ０〜４（各１ビット）と記述して、状態変数７３と比較する。ここで、先ほどと同様にシーケンスデータ処理装置を動作させるために必要な動作の発火条件は、状態変数７３の状態フラグ全ての値と合致することを発火条件とする必要がなく、たとえば、発火条件が「状態変数７３の状態フラグ１が「０」かつ状態フラグ４が「１」のとき」というように、指定する状態フラグの値だけを参照すればよい場合は少なくない。そこで、発火条件として参照すべき状態フラグを示せるように、コンディション・マスクの５ビットを下位ビットから状態フラグ０〜４に対応させて、参照する状態フラグのビット値を「１」とし、参照しない状態フラグのビット値を「０」と記述する。たとえば、「状態変数７３の状態フラグ２が「０」かつ状態フラグ４が「１」のとき」というように、状態フラグ２と状態フラグ４を参照し、その他の状態フラグを参照しない場合は、コンディション・マスクは「１０１００」となる。
【００４０】
つまり、図１２に示すように、イベントとコンディションによって記述する以下の条件４は、下記のビット列４となる。
条件４：「タイマ識別子２（ビット列：１０）に設定したタイマ設定時間が経過しており、尚且つ、　状態変数７３の状態フラグ２が「０」かつ状態フラグ４が「１」のとき」
ビット列４：＊／１０／１００００／＊１０／１０１００
ただし、ビットの値が「＊」である部分は、条件４に関係しないデータであることを意味する。
以上、タイマ・エクスパイアのイベントにおける、イベント部およびコンディション部の記述方法を示した。
【００４１】
〔レシーブ・メッセージ〕さらに、イベント３：レシーブ・メッセージのイベントについて説明する。図１３に示すように、本実施例において、あるＥＣＡルール内のイベント部３２（２ビット）にレシーブ・メッセージ（ビット列：１１）のイベントを記述し、コンディション部３３のコンディション・スペースの３ビットにはメッセージ識別子６５を記述する。本実施例では、メッセージ識別子６５は３ビットで記述するため、８つの異なるメッセージを識別することが可能である。このメッセージ識別子６５は、図１の補助記憶部２６で保持する図１４のメッセージ６６の値とを比較することで、メッセージ識別子６５と同じメッセージを演算装置０１が通信装置０３を介してすでに受信済みであるかを判定するために利用する。なお、通信装置０３がメッセージ６６を受信して保持するまでの処理の詳細については後述のセンドメッセージ・コマンドと併せて説明する。
【００４２】
もし、メッセージ識別子６５の値とメッセージ６６の値が一致するとき、レシーブ・メッセージの発火条件は成立したとする。つまり、通信装置０３で所望のメッセージを受信したことを意味する。逆にメッセージ識別子６５の値とメッセージ６６の値が一致しないとき、レシーブ・メッセージの発火条件は成立していないとする。つまり、通信装置０３で所望のメッセージを受信していないことを意味する。
つまり、イベントとコンディションによって記述する以下の条件５は、下記のビット列５となる。
条件５：「メッセージ識別子７（ビット列：１１１）のメッセージを受信したとき」
ビット列５：＊／１１／＊＊＊＊＊＊／１１１／＊＊＊＊＊
ただし、ビットの値が「＊」である部分は、条件５に関係しないデータであることを意味する。
【００４３】
また、レシーブ・メッセージでは、メッセージの受信したとする動作の発火条件と、コンディション・バリュー７０に記述する状態変数７３の値による動作の発火条件とを同時に満たすことを発火条件することが可能である。イベント１（コンディション・コントロール）やイベント２（タイマ・エクスパイア）と同様に、コンディション・バリューの５ビットのうち、下位ビットから順に状態フラグ０〜４（各１ビット）を記述する。各状態フラグは、図１の補助記憶部２４にあらかじめ保持する５ビットの状態変数７３と比較する。ここで、先ほどと同様にシーケンスデータ処理装置を動作させるために必要な動作の発火条件は、状態変数７３の状態フラグ全ての値と合致することを発火条件とする必要がなく、たとえば、発火条件が「状態変数７３の状態フラグ２が「１」かつ状態フラグ３が「０」のとき」というように、指定する状態フラグの値だけを参照すればよい場合は少なくない。そこで、発火条件として参照すべき状態フラグを示せるように、コンディション・マスクの５ビットを下位ビットから状態フラグ０〜４に対応させて、参照する状態フラグのビット値を「１」とし、参照しない状態フラグのビット値を「０」と記述する。たとえば、「状態変数７３の状態フラグ２が「１」かつ状態フラグ３が「０」のとき」というように、状態フラグ２と状態フラグ３を参照し、その他の状態フラグを参照しない場合は、コンディション・マスクは「０１１００」となる。
【００４４】
つまり、図１３に示すように、イベントとコンディションによって記述する以下の条件６は、下記のビット列６となる。
条件６：「メッセージ識別子５（ビット列：１０１）のメッセージを受信して、尚且つ、状態変数７３の状態フラグ２が「１」かつ状態フラグ３が「０」のとき
ビット列６：＊／１１／００１００／１０１／０１１０
ただし、ビットの値が「＊」である部分は、条件６に関係しないデータであることを意味する。
以上、レシーブ・メッセージのイベントにおける、イベント部およびコンディション部の記述方法を示した。
【００４５】
〔アクション〕それでは、ここからは、アクション部３３に記述する「実行すべき動作（アクション）」の種類について説明する。先に述べたとおり、ＥＣＡルール内の、イベント部３２とコンディション部３３が記述されるブロックに続いてアクション部３４を記述するブロックが存在することがあり、発火条件が成立したときに処理対象とされる。
【００４６】
図１５に示すように、アクション部３４を記述するブロックの継続フラグ３６（１ビット）を除く残りの１５ビットのうち、本実施例においては、アクションの種類を大別するアクション識別子７８を１ビット取り、残り１４ビットはアクション識別子７８の値によって構造が異なるアクション・フォーマット７４とする。図１６に示すように、前記アクション識別子７８の値が「０」の場合には、ノーマルアクションと呼ぶ。また、アクション識別子７８の値が「１」の場合には、スペシャルアクションと呼ぶ。これによって、アクションの種類を２つに大別する。
【００４７】
〔ノーマルアクション〕まず、ノーマルアクションについて説明する。図１７のノーマルアクションにおいて、アクション部３４の１５ビットのうち、アクション識別子７８（１ビット）を除くアクション・フォーマット７４（１４ビット）において、出力装置０５が出力可能な出力ポート数５つに対応して、アクションを示す値を記述するアクション・バリュー７５（６ビット）、アクション・スペース７６（２ビット）、アクションを実行するために参照する方法などを記述するアクション・マスク７７（６ビット）、から構成する。
【００４８】
図１８に示すように、アクション部３４のアクション・スペース７６には、アクション・バリュー７５に出力信号１２のＯＮ／ＯＦＦを記述するのか、もしくは、図１の補助記記憶部２４に格納される状態変数７３に書き込む値を記述するのか、を示す出力フラグ５３を１ビットで記述する。もし、アクション・バリューに出力信号１２のＯＮ／ＯＦＦを記述するものであれば図１８に示すように出力フラグ５３は「０」となり、アクション・バリューに状態変数７３に書き込む値を記述するものであれば図１９に示すように出力フラグ５３は「１」となる。
【００４９】
図１８において、前記アクション・バリュー７５に出力信号１２のＯＮ／ＯＦＦが記述される場合、出力フラグ５３は「０」となり、アクション・バリュー７５の６ビットのうち、下位ビットから順に出力ポート０〜４の１ビット出力信号のＯＮまたはＯＦＦの状態を、１ビット出力信号がＯＮであれば「１」とし、逆に１ビット出力信号がＯＦＦであれば「０」と記述する。本実施例では、出力ポートが５ポートまでしかないため、アクション・バリュー７５の上位１ビットは使用せずに常に「０」と記述する。ここで、シーケンスデータ処理装置を動作させるために必要な実行すべき動作は、出力ポート全ての出力信号の値を出力する必要がなく、たとえば、実行すべき動作が「出力ポート０の出力信号を「０」かつ出力ポート３の出力信号を「１」で出力する」というように、指定する出力ポートの値だけを更新すればよい場合は少なくない。そこで、実行動作として出力すべき出力ポートを示せるように、アクション・マスク７７の６ビットを下位ビットから出力ポート０〜４に対応させて、出力する出力ポートのビット値を「１」とし、出力しない出力ポートのビット値を「０」と記述する。本実施例では、出力ポートが５ポートまでしかないため、アクション・マスクの上位１ビットは使用せずに常に「０」と記述する。たとえば、「出力ポート０の出力信号を「０」かつ出力ポート３の出力信号を「１」で出力する」というように、出力ポート０と出力ポート３を更新し、その他の入力ポートを更新しない場合は、アクション・マスクは「００１００１」となる。
【００５０】
つまり、図１８に示すように、アクションによって記述する以下の動作１は、下記のビット列７となる。
動作１：「出力ポート０の出力信号を「０」かつ出力ポート３の出力信号を「１」で出力する」
ビット列７：＊／０／＊０１０００／０＊／＊０１００１
ただし、ビットの値が「＊」である部分は、動作１に関係しないデータであることを意味する。
【００５１】
図１９において、前記アクション・バリュー７５に状態変数７３の値を記述する場合、出力フラグ５３は「１」となり、アクション・バリュー７５の６ビットのうち、下位ビットから順に状態フラグ０〜４（各１ビット）を記述する。本実施例では、出力ポートが５ポートまでしかないため、アクション・バリュー７５の上位１ビットは使用せずに常に「０」として、状態変数７３に書き込む値はアクション・バリュー７５の６ビットのうち、下位５ビットまでを書き込む。ここで、シーケンスデータ処理装置を動作させるために必要な発火条件は、状態変数７３の状態フラグ全ての値と合致することを発火条件とする必要がないことは、すでに述べた。そのため、状態変数７３に書き込む状態フラグを示せるように、アクション・マスク７７の６ビットを下位ビットから状態フラグ０〜４に対応させて、書き込むべき状態フラグの入力値を「１」とし、書き込む必要がない状態フラグの入力値を「０」と記述する。本実施例では、出力ポートが５ポートまでしかないため、アクション・マスク７７の上位１ビットは使用せずに常に「０」として、アクション・マスク７７の６ビットのうち、下位５ビットまでを出力用のマスクとして使用する。たとえば、「状態変数７３の状態フラグ１を「０」かつ状態フラグ４を「１」として書き込む」というように、状態フラグ１と状態フラグ４を参照し、その他の状態フラグを参照しない場合は、アクション・マスクは「１００１０」となる。
【００５２】
つまり、図１９に示すように、イベントとコンディションによって記述する以下の動作２は、下記のビット列８となる。
動作２：「状態変数７３の状態フラグ１を「０」かつ状態フラグ４を「１」として書き込む」
ビット列８：＊／０／＊１００００／１＊／＊１００１０
ただし、ビットの値が「＊」である部分は、動作２に関係しないデータであることを意味する。
以上により、ノーマルアクションにおける、アクション部の記述方法が示された。
【００５３】
〔スペシャルアクション〕つぎに、スペシャルアクションについて説明する。図２０のスペシャルアクションにおいて、アクション部３４の１５ビットのうち、アクション識別子７８（１ビット）を除くアクション・フォーマット７４（１４ビット）において、スペシャルアクション識別子８０を３ビットとする。スペシャルアクション識別子８０は、最大で３ビット（８通り）のスペシャルアクションの種類を記述することが可能である。スペシャルアクション識別子８０を除いた残りの１１ビットをスペシャルアクション・フォーマット８１とする。スペシャルアクション・フォーマット８１（１１ビット）は、前記スペシャルアクション識別子８０の値によって記述する内容が異なる。
【００５４】
本実施例では、スペシャルアクション識別子８０（３ビット）の値により、以下３種類のスペシャルアクションの種類を設定する。
スペシャルアクション１：　タイマ・アクション（ビット列：００１）
スペシャルアクション２：　センドコマンド・アクション（ビット列：０１０）
スペシャルアクション３：　ハードウエアコントロール・アクション（ビット列：１００）
【００５５】
〔タイマ・アクション〕はじめに、タイマ・アクションについて説明する。図２１に示すように、本実施例において、スペシャルアクション識別子（３ビット）にタイマ・アクション（ビット列：００１）を記述し、続いて、タイマ識別子６４に対応する情報（タイマ設定時間６０、タイマ繰返しフラグ６３）を時間イベント・テーブルに書き込むのか消去するのかを示す時間イベント・フラグ３８を１ビット、タイマ識別子６４を２ビット、続く２ビットのうち下位１にタイマ繰返しフラグ６３（１ビット）、タイマ設定時間６０を６ビットとして記述する。
【００５６】
タイマ・アクションが実行されるとき、時間イベント・フラグ３８が「０」ならば、図１のアクション解析部２２は、前記アクション部に記述するタイマ識別子６４の値と、タイマ設定時間６０の値と、タイマ繰返しフラグ６３の値と、を時間イベント管理部２６へ通知する。通知を受けた時間イベント管理部２６は、時間イベント・テーブル２８にそれら受信したタイマ識別子６４の値に対応するタイマ設定時間６０の値と、タイマ繰返しフラグ６３の値と、を設定して、タイマ発火フラグ６２の値を「０」に設定する。さらにタイマ設定時間６０と同じ値をタイマ・カウンタ６１にも設定する。
【００５７】
もし、タイマ・アクションが実行されるときに、時間イベント・フラグ３８が「１」ならば、図１のアクション解析部２２は、タイマ設定時間６０の値を０（ゼロ）に設定するように、時間イベント管理部２６へ通知する。通知を受けた時間イベント管理部２６は、タイマ設定時間６０の値を０（ゼロ）に設定する。
【００５８】
ここで、タイマ設定時間６０の構造について説明する。タイマ設定時間６０は６ビットから成り、上位２ビットをタイム・オーダー６８、下位４ビットをタイム・バリュー６７と呼ぶ。本実施例において、タイム・バリュー６７の値が「ａ」、タイム・オーダー６８の値が「ｎ」である場合、タイマ設定時間６０は下記の式１によって導き出される。
式１：（タイマ設定時間）　＝　ａ　×　１０＾ｎ　×　１００　（ミリ秒）
ゆえに、前記タイム・エクスパイアのイベントの処理とこれら一連の処理によって、経過時間によってアクションの発火する仕組みが示された。
【００５９】
たとえば、図２１に示すように、アクションによって記述する以下の動作３は、下記のビット列９となる。
動作３：「タイマ識別子３（ビット列：１１）にタイマ設定時間を４秒に設定し、繰返しタイマ・エクスパイアのイベントが発火するように設定する」
ビット列９：＊１／００１／０／１１／＊１／０１／０１００
ただし、ビットの値が「＊」である部分は、動作３に関係しないデータであることを意味する。
以上により、タイマ・アクションにおける、アクション部の記述方法が示された。
【００６０】
〔センドコマンド・アクション〕つぎに、センドコマンド・アクションについて説明する。図２２に示すように、本実施例において、スペシャルアクション識別子（３ビット）にセンドコマンド・アクション（ビット列：０１０）を記述し、続いて、コマンド・データ８２のバイト長を示すコマンド・データ長４９を３ビットで記述する。続くコマンド４７は、上位１ビットに切替フラグ１５を記述する。切替フラグ１５とは、続くコマンド識別子４８に記述するコマンド１〜５を、シーケンスデータ処理装置自らを実行対象とするのか、それとも通信ポートで結合した他のシーケンスデータ処理装置へ実行を依頼するのか、を切り替えるフラグである。もし、切替フラグ１５が「０」のときは、シーケンスデータ処理装置自らを実行対象としてコマンド１〜５を実行する。もし、切替フラグ１５が「１」のときは、通信ポートで結合した他のシーケンスデータ処理装置を実行対象としてコマンド１〜５の実行を後述のパケット８３を使って依頼する。前記切替フラグ１５が「１」において、他のシーケンスデータ処理装置へ実行を依頼するために、実行内容の記述したコマンド４７から図２７のパケット８３を生成して、通信装置０３を介してパケット８３を送信する。コマンド識別子４８に続くコマンド・データ８２にはコマンド１〜５の種類によって記述内容が異なる。
【００６１】
前述のように通信装置０３を介してパケット８３を送信する場合について、もう少し詳細に述べておく。本発明では通信装置０３を介することで、図２７に示すように、コマンド・データ長４９と、コマンド識別子４８と、コマンド・データ８２と、を送信する場合には、通信装置０３にて、パケット８３のフォーマットに変換してから送信する。パケット８３では、　図２７のようにＥＣＡルールに記述するコマンド・データ長４９（３ビット）を、パケット８３のコマンド・データ長４９（４ビット）の下位３ビットに代入することでビット数が拡張される点などが構造上で異なる。その理由は、コマンド識別子４８が後述のアッドルール・コマンドの場合などにおいて、パケット８３のコマンド・データ８２に記述するＥＣＡルールの長さがコマンド・データ長４９の３ビットで表記することができないデータ長であった場合（たとえばコマンド・データ８２のデータ長が９バイトなどのとき）に、コマンド・データ長４９でコマンド・データ８２のデータ長を記述することができなくなることを防ぐためである。パケット８３を受け取ったシーケンスデータ処理装置は、通信装置０３でパケット８３の実行内容を解析して、図４１に示すように、コマンドの種類に応じたアクションを実行することになる。
【００６２】
ここで、コマンド４７の構造について説明する。本実施例において、コマンド４７は、図２２に示すように、少なくとも８ビットから構成し、上位１ビットを除く７ビットのうち、コマンド識別子４８を３ビットとする。続くコマンド・データ８２は、コマンド識別子４８の値によって記述内容が異なり、４ビット以上のデータを記述する。
本実施例では、コマンド識別子（３ビット）の値により、以下５種類のコマンドの種類を設定する。
コマンド１：　センドメッセージ・コマンド　（ビット列：０００）
コマンド２：　アッドルール・コマンド　（ビット列：０１０）
コマンド３：　クリアルール・コマンド　（ビット列：０１１）
コマンド４：　リクエストルール・コマンド　（ビット列：１００）
コマンド５：　センドルール・コマンド　（ビット列：１１１）
【００６３】
〔コマンド１：センドメッセージ・コマンド〕まず、センドメッセージ・コマンドについて説明する。センドメッセージ・コマンドは、シーケンスデータ処理装置の補助記憶部２４が保持するメッセージ６６にメッセージ識別子６５の値を代入するか、または他のシーケンスデータ処理装置へメッセージを送信する。図２３に示すように、コマンド識別子４８がセンドメッセージ・コマンド（ビット列：０００）のアクションを実行する場合は、コマンド・データ８２のデータ長は１バイト以下の４ビットとなるため、コマンド・データ長４９には１バイト（ビット列：００１）を設定する。また、コマンド・データ８２（４ビット）には、メッセージ識別子６５（４ビット）を代入する。
【００６４】
もし、切替フラグ１５が「０」ならば、アクション解析部２２は、メッセージ識別子６５を抽出する。続いて、抽出したメッセージ識別子６５の値を、補助記憶部２４が保持するメッセージ６６に代入する。もし、切替フラグ１５が「１」ならば、アクション解析部２２は、コマンド・データ長４９と、コマンド識別子４８と、コマンド・データ８２を通信装置０３に通知する。通知を受けた通信装置０３は、図３６の送信パケットを生成して通信ポートから送信する。逆に、前記送信パケットを他のシーケンスデータ処理装置が通信装置０３の通信ポートで受信したとき、コマンド識別子４８がセンドメッセージ・コマンドの場合には、通信装置０３がメッセージ識別子６５を抽出する。続いて、抽出したメッセージ識別子６５の値を、補助記憶部２４が保持するメッセージ６６に代入する。
【００６５】
〔コマンド２：アッドルール・コマンド〕つぎに、アッドルール・コマンドについて説明する。アッドルール・コマンドは、シーケンスデータ処理装置の記憶装置０２にＥＣＡルール３１を新たに加えるか、または他のシーケンスデータ処理装置の記憶装置０２にＥＣＡルール３１を新たに加えるメッセージを送信する。図２４に示すように、コマンド識別子４８がアッドルール・コマンド（ビット列：０１０）のアクションを実行する場合は、コマンド・データ８２に記述した「追加するＥＣＡルール」を記憶装置０２に加えることができる。コマンド・データ８２のデータ長は、「追加するＥＣＡルール」によって異なるため、本発明の実施例では図２４のブロックＢに続くブロックは記述しない。よって、ブロックＢの継続フラグ３６は必ず「０」とする。コマンド・データ長４９にコマンド・データ８２のデータ長をバイト単位で記述する。図２４では「追加するＥＣＡルール」が３バイトであるため、コマンド・データ長４９（３ビット）の記述はビット列で「０１１」となる。
【００６６】
もし、切替フラグ１５が「０」ならば、アクション解析部２２は、ＥＣＡルール検索部２３に対して前記「追加するＥＣＡルール」を記憶装置０２へ保持することを通知する。通知を受けたＥＣＡルール検索部２３は、記憶装置０２へＥＣＡルールが追加可能であれば、前記「追加するＥＣＡルール」を記憶装置０２へ保持して、ＥＣＡルール数３０の値に「１」を加える。もし、切替フラグ１５が「１」ならば、アクション解析部２２は、コマンド・データ長４９と、コマンド識別子４８と、前記「追加するＥＣＡルール」を記述するコマンド・データ８２を通信装置０３に通知する。通知を受けた通信装置０３は、図３４の送信パケットを生成して通信ポートから送信する。逆に、前記送信パケットを他のシーケンスデータ処理装置が通信装置０３の通信ポートで受信したとき、コマンド識別子４８がアッドルール・コマンドの場合、受信したシーケンスデータ処理装置は受信したパケットに含まれるＥＣＡルールを記憶装置０２に保持して、ＥＣＡルール数３０の値に「１」を加える。
【００６７】
〔コマンド３：クリアルール・コマンド〕つぎに、クリアルール・コマンドについて説明する。クリアルール・コマンドは、シーケンスデータ処理装置の記憶装置０２に保持した全てのＥＣＡルールを無効にするか、または他のシーケンスデータ処理装置の記憶装置０２に保持した全てのＥＣＡルールを無効にするメッセージを送信する。図２５に示すように、コマンド識別子４８がクリアルール・コマンド（ビット列：０１１）のアクションを実行する場合は、記憶装置０２に保持する全てのＥＣＡルールを無効にすることができる。コマンド・データ８２のデータ長は１バイト以下の４ビットとなるため、コマンド・データ長４９には１バイト（ビット列：００１）を設定する。コマンド・データ８２（４ビット）には、全て０（ゼロ）を代入する。
【００６８】
もし、切替フラグ１５が「０」ならば、アクション解析部２２は、ＥＣＡルール検索部２３へ記憶装置０２が保持するＥＣＡルール数３０を０（ゼロ）にすることを通知する。通知を受けたＥＣＡルール検索部２３は記憶装置０２が保持するＥＣＡルール数３０を０（ゼロ）にする。これによって、記憶装置０２に保持したＥＣＡルール３１を参照することができなくなり、ＥＣＡルールが消去されたと同じ動作を得ることができる。もし、切替フラグ１５が「１」ならば、アクション解析部２２は、コマンド・データ長４９と、コマンド識別子４８と、コマンド・データ８２を通信装置０３に通知する。通知を受けた通信装置０３は、図４３の送信パケットを生成して通信ポートから送信する。逆に、前記送信パケットを他のシーケンスデータ処理装置が通信装置０３の通信ポートで受信したとき、コマンド識別子４８がクリアルール・メッセージの場合、記憶装置０２が保持するＥＣＡルール数３０を０（ゼロ）にする。
【００６９】
続いて、リクエストルール・コマンドとセンドルール・コマンドについて説明する。リクエストルール・コマンドとセンドルール・コマンドとを使用して、たとえば、シーケンスデータ処理装置Ａと他のシーケンスデータ処理装置Ｂは、互いの通信装置０３を介して各記憶装置０２に保持する特定のＥＣＡルールを送受信することができる。
【００７０】
〔コマンド４：リクエストルール・コマンド〕まず、リクエストルール・コマンドの処理について説明する。図２９に示すように、シーケンスデータ処理装置Ａがコマンド識別子４８にリクエストルール・コマンド（ビット列：１００）を記述するアクションを実行する場合に、通信ポートを介して他のシーケンスデータ処理装置Ｂに対して、シーケンスデータ処理装置Ｂが保持する特定のＥＣＡルールの送信を要求することができる。本発明の実施例のように、要求するＥＣＡルールの記憶装置０２上での番号（ＥＣＡルール番号）が「０」から「１５」までの数であれば、コマンド・データ８２のデータ長は１バイト以下の４ビットとなるため、コマンド・データ長４９が１バイト（ビット列：００１）となる設定をする。もし、要求するＥＣＡルールのＥＣＡルール番号の数が「０」から「１５」までの数を超える場合は、コマンド・データ８２を４ビット以上に設定して、コマンド・データ長４９もそれに合わせる。これにより、コマンド・データ８２にはＥＣＡルール番号を代入することが可能になる。
【００７１】
ここで、リクエストルール・コマンドがアクション解析部２２で実行される場合には、切替フラグ１５は「１」とする。なぜならば、リクエストルール・コマンドを実行するシーケンスデータ処理装置Ａのアクション解析部２２では、通信装置０３を介して他のシーケンスデータ処理装置Ｂに対して特定のＥＣＡルールの送信を要求するアクションしか行わないためである。つまり、リクエストルール・コマンドはシーケンスデータ処理装置自らを実行対象とするアクションは存在しない。ゆえに、シーケンスデータ処理装置Ａのアクション解析部２２は、コマンド・データ長４９と、コマンド識別子４８と、コマンド・データ８２を通信装置０３に通知する。通知を受けた通信装置０３は、図４４のパケット８３を生成して通信ポートから送信する。
【００７２】
このように、リクエストルール・コマンドでは、記憶装置０２に保持するＥＣＡルールのルール番号をコマンド・データ８２に記述したパケット８３を送信することで、他のシーケンスデータ制御装置に対して特定のＥＣＡルールの送信を依頼することを実現している。たとえば、図２６のように、シーケンスデータ処理装置Ａが、シーケンスデータ処理装置Ｂの保持するルール番号「２」のＥＣＡルール（ｃ）の送信を依頼する場合には、コマンド・データ８２にルール番号「２」に対応するビット列「００１０」を記述すればよい。シーケンスデータ処理装置Ａのアクション解析部２２は、シーケンスデータ処理装置Ａの通信装置０３を介してパケット８３を送信する。
【００７３】
逆に、シーケンスデータ処理装置Ｂが通信装置０３の通信ポートからパケット８３を受信したときに、コマンド識別子４８がリクエストルール・コマンド（ビット列：１００）の場合には、シーケンスデータ処理装置Ｂは受信パケットに含まれるコマンド・データ８２から送信要求があったＥＣＡルール番号のＥＣＡルールを、後述のセンドルール・コマンド（ビット列：１１１）の記述に従った送信用パケットを自動的に生成して、通信装置０３を介して送信することにより、送信の要求があった特定のＥＣＡルールを返信する。もし、シーケンスデータ処理装置Ｂが受信した受信パケットに含まれるルール番号から、対応するＥＣＡルールが存在しないときは、図２８に示すように、コマンド・データ８２には０（ゼロ）を代入して送信する。
【００７４】
〔コマンド５：センドルール・コマンド〕ここで、センドルール・コマンドの処理について説明する。図２６に示すように、センドルール・コマンド（ビット列：１１１）は前記リクエストルール・コマンドの返信用パケットのコマンド識別子４８として使用する。前記リクエストルール・コマンドを記述する受信パケットを通信装置０３で受信すると、受信パケットに記述したルール番号に対応するＥＣＡルール（図２６では３バイトのＥＣＡルール（ｃ）を送信するものとする）を、センドルール・コマンド（ビット列：１１１）を記述する送信用パケット８３に記述して、通信装置０３を介して送信することになる。コマンド・データ長４９にはコマンド・データ８２のデータ長をバイト単位で記述する。このように、リクエストルール・コマンドによるパケット８３を受信した通信装置０３は、センドルール・コマンドによる返信用パケットを生成して送信することで、要求された特定のＥＣＡルール（ＥＣＡルール（ｃ））を送信する。もし、シーケンスデータ処理装置が、リクエストルール・コマンドの返信としてセンドルール・コマンドを記述するパケット８３を受信した場合には、パケット８３に記述するコマンド・データ８２のＥＣＡルールを補助記憶部２４に保持する。（記憶装置０２には保持しない。）
以上、リクエストルール・コマンドとセンドコマンド・アクションにおける、アクション部の記述方法を示した。
【００７５】
〔ハードウエアコントロール・アクション〕つぎに、ハードウエアコントロール・アクションについて説明する。図３７に示すように、本実施例において、スペシャルアクション識別子（３ビット）にハードウエアコントロール・アクション（ビット列：１００）を記述し、続いて、ハードウエア識別子８５を３ビット、残る８ビットはハードウエア識別子８５によって記述内容が異なるハードウエアコントロール・フォーム８６を記述する。
【００７６】
本実施例では、ハードウエア識別子（３ビット）の値により、以下３種類のハードウエア制御の種類を設定する。
ハードウエア制御１：　内部出力装置コントロール（ビット列：００１）
ハードウエア制御２：　駆動管理部コントロール（ビット列：０１０）
ハードウエア制御３：　通信装置コントロール（ビット列：０１１）
【００７７】
〔ハードウエア制御１〕はじめに、ハードウエア識別子８５が、内部出力装置コントロール（ビット列：００１）を示す場合、アクション解析部２２は内部出力装置０６へ内部出力信号の制御規則を設定する。このとき、図３８に示すように、ハードウエアコントロール・フォームの上位から順に１ビットを常に「０」、続く１ビットをタイマ繰返しフラグ６３、残り６ビットをタイマ設定時間６０とする。これは前述した時間イベントの処理と同様である。時間イベント管理部２６は、内部出力装置０６専用のタイマ識別子とそれに対応するタイマ発火フラグ６２と、タイマ設定時間６０と、タイマ・カウンタ６１と、タイマ繰返しフラグ６３の各値を保持するメモリ領域を持っている。タイマ発火フラグ６２が「１」になると内部出力装置は、内部出力信号を出力して、タイマ繰返しフラグ６３が「１」ならば、タイマ設定時間６０の値をタイマ・カウンタに再度設定する。もしも、タイマ繰返しフラグ６３が「０」ならば、タイマ設定時間６０の値を０（ゼロ）に設定する。
【００７８】
〔ハードウエア制御２〕つぎに、ハードウエア識別子が、駆動管理部コントロール（ビット列：０１０）を示す場合、アクション解析部２２は駆動管理部２７へ演算装置０１の駆動モードの切り替えを要求する。たとえば、図３９に示すように、ハードウエアコントロール・フォームの下位１ビットに駆動モード切替フラグ８７を設ける。駆動モード切替フラグ８７が「０」ならば、アクション解析部２２は駆動管理部２７へ演算装置０１を通常駆動モードで動作させることを通知する。通知を受け取った駆動管理部２７は、演算装置０１を通常駆動モードで動作させる。駆動モード切替フラグ８７が「１」ならば、アクション解析部２２は駆動管理部２７へ演算装置０１を省電力駆動モードで動作させることを通知する。通知を受け取った駆動管理部２７は、演算装置０１を省電力駆動モードで動作させる。動作駆動モードが２つ以上ある場合は、動作モード切替フラグ８７に割り当てるビット数を増やせばよい。
【００７９】
〔ハードウエア制御３〕さらに、ハードウエア識別子が、通信装置コントロール（ビット列：０１１）を示す場合、アクション解析部２２は通信装置０３へ通信ポートの切り替えを要求する。たとえば、通信ポートが２つある場合では、図４０に示すように、ハードウエアコントロール・フォームの下位１ビットに通信ポート識別子８８を設ける。通信ポート識別子８８が「０」ならば、アクション解析部２２は通信装置０３へ通信ポート０を有効にすることを通知する。通知を受け取った通信装置０３は、通信ポート０を有効にする。通信ポート識別子８８が「１」ならば、アクション解析部２２は通信装置０３へ通信ポート１を有効にすることを通知する。通知を受け取った通信装置０３は、通信ポート１を有効にする。通信ポートが２つ以上ある場合は、通信ポート識別子８８に割り当てるビット数を増やせばよい。
以上によって、ハードウエアコントロール・アクションにおける、アクション部の記述方法は示された。以上、スペシャル・アクションにおける、アクション部の記述方法を示した。
【００８０】
以下では、図３０・図３１を参照しながら、本発明のメイン処理フローについて説明する。シーケンスデータ処理装置を起動すると図３０のフローチャートの一連の処理を実行する。まず、処理番号Ｓ０１では、シーケンスデータ処理装置が持つ入力装置０４の初期化を行う。続いて、処理番号Ｓ０２では、シーケンスデータ処理装置が持つ出力装置０５の初期化を行う。さらに、処理番号Ｓ０３では、記憶装置０２に保持するメッセージ識別子６５を格納するメッセージ６６の初期化を行う。処理番号Ｓ０４では、時間イベント管理部２６で管理する時間イベント・テーブル２８の初期化を行う。
【００８１】
ここで、処理番号Ｓ０５に移って、シーケンスデータ処理装置が使用する各フラグの初期化を行う。すなわち、処理対象となるブロックが、ＥＣＡルール内の何番目のブロックかを明示するブロック番号Ｎ、処理対象となるＥＣＡルールが、記憶装置０２のメモリ空間内で何番目のＥＣＡルールかを明示するルール番号カウンタＭ、処理対象となるブロックが、コンディション部かアクション部かを判断するＥＣＡフラグのＦ、コンディション部が成立したのかを判断するコンディション・フラグのＣ、処理対象のブロックに連続するブロックがコンディション部かを判断するマルチコンディション・フラグＭｃ、処理対象のブロックに連続するブロックがアクション部かを判断するマルチアクション・フラグＭａ、を初期化する。
【００８２】
処理番号Ｓ０５で各フラグの初期化が完了すると、処理番号Ｓ０６において、通信装置０３でパケット８３の受信を確認する。もし、パケット８３の受信を確認したら、後述する通信装置の処理フロー（図４１）にてパケット８３の処理を行う。つぎに、処理番号Ｓ０７で、記憶装置０２に保持するＥＣＡルールの総数を示すルール数Ｒを読み込む。そして、処理番号Ｓ０８にて、記憶装置０２にＥＣＡルールが少なくとも１つ以上を保持していることを確認する。もし、ＥＣＡルールを１つも保持していない場合は、ＥＣＡルールを解析する必要がないため、処理番号Ｓ０５に処理を戻す。
【００８３】
前記Ｓ０８にて、ＥＣＡルールを少なくとも１つ以上保持している場合には、処理番号Ｓ０９に処理を移す。ここで、記憶装置０２のメモリ空間内で何番目のＥＣＡルールかを明示するルール番号カウンタＭと、記憶装置０２に保持するＥＣＡルールの総数を記憶するルール番号Ｒと、を比較する。もし、ルール番号カウンタＭが、ルール数Ｒの値以上になれば、記憶装置０２には処理対象となる新たなＥＣＡルールが存在しないことになり、この場合は処理番号Ｓ０５へと処理を戻す。
【００８４】
もし、ルール番号カウンタＭがルール数Ｒの値以下ならば、処理番号Ｓ１０において、Ｍ番目のＥＣＡルールのＮ番目のブロックを演算装置０１のＥＣＡルール検索部２３へ読み込む。このとき、Ｎ＝０ならば、そのブロックは必ずイベント部とコンディション部を記述するブロックとなることは、すでに本発明の実施例の説明において述べた。
【００８５】
つぎに、処理番号Ｓ１１に移る。処理番号Ｓ１１では、ＥＣＡフラグＦを判別する。すでにＥＣＡフラグＦは初期済みであるため、もしＦ＝０ならば、ＥＣＡルール検索部２３において処理中のブロックが、イベント部およびコンディション部を含むブロックであることを判別可能である。処理番号Ｓ１１の判別により、処理番号Ｓ１６へ処理を移した場合は、ブロックからイベント部とコンディション部を抽出して解析を行うことにより、コンディションが成立している（アクションの発火条件を満たす）か否かを判別する。なお、処理番号Ｓ１６の解析処理は後述する図３２のフローチャートの説明で詳細に述べる。ここでは、処理番号Ｓ１６の解析結果から、もし、コンディションが成立しているならばコンディション・フラグＣ＝１とし、コンディションが成立していなければコンディション・フラグＣ＝０とする。
【００８６】
さらに、処理番号Ｓ１７に移る。前記のコンディション・フラグＣの値を検証することにより、コンディションが成立しているか否かを判断することができる。もし、コンディションが成立しているならば（Ｃ＝１）、処理は処理番号Ｓ２１へと移る。処理番号２１では、処理中のブロックに継続するブロックを逐次読み込むために、ブロック番号Ｎを１つ進める。そして、処理番号Ｓ２２において、処理中のブロックに継続するブロックがコンディション部を含むか否かを判断する。マルチコンディション・フラグＭｃの値は、図７に示すマルチコンディション・フラグ３７の値を代入することで得られる。もし、マルチコンディション・フラグＭｃ＝０ならば、処理中のブロック（Ｎ＝ｉ）に継続するブロック（Ｎ＝ｉ＋１）は、アクション部を含むブロックであることを意味するため、処理番号Ｓ２３にてＥＣＡフラグＦ＝１とする。もし、マルチコンディション・フラグＭｃ＝１ならば、処理中のブロック（Ｎ＝ｉ）に継続するブロック（Ｎ＝ｉ＋１）は、コンディション部を含むブロックであることを意味するため、処理番号Ｓ２４にてＥＣＡフラグＦ＝０とする。処理番号Ｓ２３または処理番号Ｓ２４の処理を経て、処理番号Ｓ０９にと処理を戻す。
【００８７】
もし、コンディションが成立していないならば（Ｃ＝０）、ＥＣＡルールに記述するアクションの発火条件を満たしていないので、アクションを実行する必要はない。また、マルチアクション・フラグＭａ＝０のときは、処理対象のＥＣＡルール内には、実行すべきアクションがない状態であることを意味する。そのため、記憶装置０２に保持する新たなＥＣＡルールを処理対象とするため、処理番号Ｓ１８では、ルール番号カウンタＭを１つ進める。そして、この新たなＥＣＡルールの先頭ブロックから処理を始めるために、処理番号Ｓ１９においてブロック番号Ｎ＝０として、処理番号２０においてＥＣＡフラグＦ＝０に設定する。処理番号Ｓ２０の処理を経ると、処理番号Ｓ０９に処理を戻す。
【００８８】
つぎに、処理番号Ｓ１１において、ＥＣＡフラグＦ＝１のときの処理について説明する。処理番号Ｓ１１の判別により、処理番号Ｓ１２へ処理を移した場合は、ブロックからアクション部を抽出して解析し、アクションを実行する。なお、処理番号Ｓ１２の処理は後述の図３３のフローチャートにより詳細に説明する。ここでは、処理番号Ｓ１３に移り、マルチアクション・フラグＭａを判別する。マルチアクション・フラグＭａの値は、図１５に示すアクション部を含むブロックの継続フラグ３６の値を代入することで得られる。もし、マルチアクション・フラグＭａ＝１ならば、処理中のブロック（Ｎ＝ｉ）に継続する、アクション部を含むブロック（Ｎ＝ｉ＋１）が存在することを意味するので、処理中のブロックに継続するブロックを逐次読み込むために、ブロック番号Ｎを１つ進めたあとに、処理番号Ｓ１５にてＥＣＡフラグＦ＝１とする。処理番号Ｓ１５の処理を経ると、処理番号Ｓ０９に処理を戻す。以上、本発明のメイン処理フローについて説明した。
【００８９】
つぎに、図３２を参照しながら、図３０のフローチャートの処理番号Ｓ１６における本発明のイベント部およびコンディション部の処理フローについて説明する。前記の処理番号Ｓ１６の処理を図３２により詳細に見ると、図３２の処理番号Ｋ０１から処理が始まることになる。処理番号Ｋ０１では、処理対象のブロックからイベント部を抽出する。続いて、処理番号Ｋ０２において、イベント部が図７に示すようにコンディション・コントロールの値（０１）であったならば、処理番号Ｋ０３へと移る。もし、イベント部がコンディション・コントロールの値でなかったならば、処理番号１１へと移る。
【００９０】
まず、処理番号Ｋ０２において、イベント部がコンディション・コントロールの値（０１）であった場合の処理を追うことにする。処理番号Ｋ０３では、図７に示す入力フラグの値を抽出して、図３３の入力フラグＦｃにその値を代入する。そして処理番号Ｋ０４で入力フラグＦｃ＝０の場合、処理番号Ｋ０５において入力装置０２の入力信号１１を参照する。続いて、処理番号Ｋ０６において、参照した入力信号１１と、コンディション・マスク７２を適用したコンディション・バリュー７０の値を比較して、アクションの発火条件が成立しているならば、処理番号Ｋ１０において前記コンディション・フラグＣ＝１に設定する。もし、処理番号Ｋ０６において、アクションの発火条件が成立していなければ、処理番号Ｋ０９において前記コンディション・フラグＣ＝０に設定する。
【００９１】
ここで、処理番号Ｋ０４に戻って別の処理を追うことにする。処理番号Ｋ０４において、入力フラグＦｃ＝１のとき、処理番号Ｋ０７に移って、補助記憶部２４に保持する状態変数７３を参照する。処理番号Ｋ０８において参照した状態変数７３と、コンディション・マスク７２を適用したコンディション・バリュー７０の値とを比較して、アクションの発火条件が成立しているならば、状態変数Ｋ１０において前記コンディション・フラグＣ＝１に設定する。もし、処理番号Ｋ０８において、アクションの発火条件が成立していなければ、処理番号Ｋ０９において前記コンディション・フラグＣ＝０に設定する。
【００９２】
つぎに、処理番号Ｋ１１において、イベント部がレシーブ・メッセージの値（１１）であった場合の処理を追ってみる。処理番号Ｋ１２では、図１３に示すメッセージ識別子６５の値を抽出する。そして処理番号Ｋ１３で補助記憶部２４に保持するメッセージ６６を参照する。続いて、処理番号Ｋ１４において、参照したメッセージ６６と、抽出したメッセージ識別子６５が一致する場合に、処理番号Ｋ１５へ移る。処理番号Ｋ１５では、補助記憶部２４に保持する状態変数７３を参照する。そして、処理番号Ｋ１６において、参照した状態変数７３とコンディション・マスク７２を適用したコンディション・バリュー７０の値を比較して、アクションの発火条件が成立しているならば、処理番号Ｋ１７で補助記憶部２４のメッセージ６６を消去してから、処理番号Ｋ１８にて前記コンディション・フラグＣ＝１に設定する。もし、処理番号Ｋ１６において、アクションの発火条件が成立していなければ、処理番号Ｋ０９において前記コンディション・フラグＣ＝０に設定する。
【００９３】
さらに、処理番号Ｋ１９において、イベント部がタイマ・エクスパイアの値（１０）であった場合の処理を追うことにする。処理番号Ｋ２０では、図１２に示すタイマ識別子６４の値を抽出する。そして処理番号Ｋ２１におて、時間イベント管理部２６が管理する時間イベント・テーブル２８から、前記タイマ識別子６４に対応するタイマ発火フラグ６２を参照する。続いて、処理番号Ｋ２３において、参照したタイマ発火フラグ６２が「１」である場合に、処理番号Ｋ２４へ移る。処理番号Ｋ２４では、補助記憶部２４に保持する状態変数７３を参照する。そして、処理番号Ｋ２５において、参照した状態変数７３とコンディション・マスク７２を適用したコンディション・バリュー７０の値を比較して、アクションの発火条件が成立しているならば、処理番号Ｋ２６にて前記コンディション・フラグＣ＝１に設定する。もし、処理番号Ｋ２５において、アクションの発火条件が成立していなければ、処理番号Ｋ０９において前記コンディション・フラグＣ＝０に設定する。
【００９４】
そして、処理番号Ｋ２７では、時間イベント管理部２６が管理する時間イベント・テーブル２８から、前記タイマ識別子６４に対応するタイマ繰返しフラグＲＦの値を参照する。もし、タイマ繰返しフラグＲＦ＝０ならば、処理番号Ｋ２８において時間イベント・テーブル２８から、前記タイマ識別子６４に対応するタイマ設定時間６０を０（ゼロ）に設定する。もし、タイマ繰返しフラグＲＦ＝１ならば、処理番号Ｋ２９において時間イベント・テーブル２８上の、前記タイマ識別子６４に対応するタイマ・カウンタ６１にタイマ設定時間６０を再度設定する。
【００９５】
ところで、処理番号Ｋ０２と、処理番号Ｋ１１と、処理番号Ｋ１９と、のいずれをも満たすことができなかったイベント部がある場合、処理番号Ｋ３０において、コンディション・フラグＣ＝０とする。
上述の一連の処理を経て、処理番号Ｋ３１に処理が移ったならば、図３０のメイン処理フローに戻り、処理番号Ｓ１７へと移る。　以上により、図３２における本発明のイベント部およびコンディション部の処理フローが示された。
【００９６】
つぎに、図３３のフローチャートを参照しながら、本発明のアクション部の処理フローについて説明する。前記の処理番号Ｓ１２（図３０）の処理を図３３により詳細に見ると、図３３の処理番号Ｊ０１から処理が始まることになる。処理番号Ｊ０１では、処理対象のブロックからアクション部を抽出する。続いて、図１６に示すように、アクション識別子７８の値をフラグＡに代入する。
【００９７】
まず、処理番号Ｊ０２において、アクション識別子７８を代入したがフラグＡ＝０ならば、処理番号Ｊ０３において、図１８に示す出力フラグ５３の値を抽出して、出力フラグＦａにその値を代入する。そして処理番号Ｊ０４で出力フラグＦａ＝０の場合、処理番号Ｊ０５において、アクション・マスク７７を適用したアクション・バリュー７５の値を出力装置０５から出力信号０７として出力する。
【００９８】
ここで、処理番号Ｊ０４に戻って別の処理を追うことにする。処理番号Ｊ０４において、出力フラグＦａ＝１のとき、処理番号Ｊ０６に移って、アクション・マスク７７を適用したアクション・バリュー７５の値を、補助記憶部２４に状態変数７３として保持する。つぎに、処理番号Ｊ０２において、アクション識別子７８を代入したがフラグＡ＝１ならば、処理番号Ｊ０７に移る。処理番号Ｊ０７では、図２０に示すスペシャルアクション識別子８０を抽出して、その値を図３３のスペシャルアクション識別子ＳＡに代入する。
【００９９】
まず、処理番号Ｊ０８において、スペシャルアクション識別子ＳＡがタイマ・アクションの値（００１）であった場合の処理を追うことにする。図２１に示すように、処理番号Ｊ０９において、タイマ識別子６４を抽出する。続いて、処理番号Ｊ１０において時間イベント・フラグ３８の値を図３３の時間イベント・フラグＦｔに代入する。もし、処理番号Ｊ１１において、時間イベント・フラグＦｔ＝０ならば、処理番号Ｊ１２においてタイマ設定時間６０と、タイマ繰返しフラグ６３を抽出し、処理番号Ｊ１３で時間イベント管理部２６が管理する時間イベント・テーブル２８に保持する。そして、処理番号Ｊ１４において時間イベント・テーブル２８上のタイマ識別子６４に対応するタイマ発火フラグ６２を０（ゼロ）に初期化する。もし、処理番号Ｊ１１において、時間イベント・フラグＦｔ＝１ならば、処理番号Ｊ１５において時間イベント・テーブル２８上のタイマ識別子６４に対応するタイマ設定時間６０を０（ゼロ）に設定する。
【０１００】
つぎに、処理番号Ｊ１６において、スペシャルアクション識別子ＳＡがセンドコマンド・アクションの値（０１０）であった場合の処理を追うことにする。処理番号Ｊ１７において、図２２に示す切替フラグが「０」の場合、処理番号Ｊ１８において、コマンド識別子４８の値を抽出する。抽出した値は図３３のコマンド識別子ＣＩＤに代入する。
【０１０１】
はじめに、処理番号Ｊ１９において、コマンド識別子ＣＩＤの値がアッドルール・コマンドの値（０１０）であった場合の処理では、処理番号Ｊ２０において記憶装置０２にＥＣＡルールを追加することが可能かをチェックする。処理番号Ｊ２１で、ＥＣＡルールの追加が可能だと判断されれば、処理番号Ｊ２２に処理を移し、図２４に示すように、追加するＥＣＡルールを抽出し、処理番号Ｊ２３において記憶装置０２へ抽出したＥＣＡルールを保持する。さらに、処理番号Ｊ２４では、ＥＣＡルールの総数を示すルール数Ｒに１を加える。
【０１０２】
つぎに、処理番号Ｊ２５において、図２５に示すように、コマンド識別子ＣＩＤがクリアルール・コマンドの値（０１１）であった場合の処理では、処理番号Ｊ２６において記憶装置０２に保持するルール数Ｒの値を０（ゼロ）に設定する。つぎに、処理番号Ｊ２７において、図２３に示すように、コマンド識別子ＣＩＤがセンドメッセージ・コマンドの値（０００）であった場合の処理では、処理番号Ｊ２８においてメッセージ識別子６５を抽出する。続いて、処理番号Ｊ２９において、抽出したメッセージ識別子６５の値を補助記憶部２４に保持するメッセージ６６に代入する。ここで、処理番号Ｊ１７に戻って、切替フラグ１５が「１」の場合、処理番号Ｊ３０において、コマンド識別子４８の値を抽出する。抽出した値は図３３のコマンド識別子ＣＩＤに代入する。
【０１０３】
はじめに、処理番号Ｊ３１において、コマンド識別子ＣＩＤがリクエスト・コマンドの値（１００）であった場合の処理では、図３３に示すように、処理番号Ｊ３２においてコマンド・データ８２に含まれるルール番号を抽出する。そしてＪ３３において、ルール番号に対応するルールが存在するならば、図２６に示すように、処理番号Ｊ３４において記憶装置０２からルール番号に対応するＥＣＡルールを抽出する。さらに、処理番号Ｊ３５において、抽出したＥＣＡルールをコマンド・データ８２に記述して、送信パケット８３を生成して、通信装置０３を介してパケットを送信する。もし、処理番号Ｊ３８において、ルール番号に対応するルールが存在しないならば、図２８に示すように、処理番号Ｊ３６において、コマンド・データ８２を０（ゼロ）を記述した、送信パケット８３を生成して、処理番号Ｊ３７で通信装置０３を介してパケットを送信する。
【０１０４】
つぎに、処理番号Ｊ３８において、コマンド識別子ＣＩＤがアッドルール・コマンドの値（０１０）であった場合の処理では、処理番号Ｊ３９においてコマンド・データ８２に記述するＥＣＡルールを抽出する。処理番号Ｊ４０で、抽出したＥＣＡルールなどから、図３４のパケット８３を生成して、通信装置０３から送信する。つぎに、処理番号Ｊ４１において、図２５に示すように、コマンド識別子ＣＩＤがクリアルール・コマンドの値（０１１）であった場合の処理では、処理番号Ｊ４２において図４３のパケット８３を生成して、通信装置０３から送信する。つぎに、処理番号Ｊ４３において、図２３に示すように、コマンド識別子ＣＩＤがセンドメッセージ・コマンドの値（０００）であった場合の処理では、処理番号Ｊ４４においてメッセージ識別子６５を抽出する。続いて、処理番号Ｊ４５において、抽出したメッセージ識別子６５から、図３６のパケット８３を生成して、通信装置０３から送信する。
【０１０５】
つぎに、処理番号Ｊ１６に戻って、スペシャルアクション識別子ＳＡがセンドコマンド・アクションの値（０１０）でなかった場合の処理を追うことにする。このとき、処理番号Ｊ４６の処理へと移る。スペシャルアクション識別子ＳＡがハードウエアコントロール・アクションの値（１００）であった場合、処理番号Ｊ４７において、図３７に示したような、ハードウエア識別子８５の値を抽出する。抽出した値は図３３のハードウエア識別子ＨＩＤに代入する。
【０１０６】
はじめに、処理番号Ｊ４８において、ハードウエア識別子ＨＩＤが内部出力装置コントロールの値（００１）であった場合の処理では、処理番号Ｊ４９においてタイマ設定時間６０と、タイマ繰返しフラグ６３を抽出し、処理番号Ｊ５０において、図１１に示す時間イベント管理部２６が管理する時間イベント・テーブル２８に保持する。そして、処理番号Ｊ５１において時間イベント・テーブル２８上のハードウエアコントロールのために設けられたタイマ発火フラグを０（ゼロ）に初期化する。
つぎに、処理番号Ｊ５２において、ハードウエア識別子ＨＩＤが駆動管理部コントロールの値（０１０）であった場合の処理では、処理番号Ｊ５３において、動作モード切替フラグ８７（図３９参照）を抽出する。そして、処理番号Ｊ５４において、駆動管理部２７によって演算装置０１の駆動モードを切り替える。
つぎに、処理番号Ｊ５５において、ハードウエア識別子ＨＩＤが通信装置コントロールの値（０１１）であった場合の処理では、処理番号Ｊ５６において、通信ポート識別子８８（図４０参照）を抽出する。そして、処理番号Ｊ５７において、通信装置０３によって通信ポートを切り替える。
上記の処理を経て、処理番号Ｊ５８に処理が移ったならば、図３０のメイン処理フローに戻り、処理番号Ｓ１３へと移る。以上により、図３３における本発明のアクション部の処理フローが示された。
【０１０７】
さらに、図４１のフローチャートを参照しながら、本発明の通信装置の処理フローについて説明する。図３０の前記処理番号Ｓ０６の処理を図４１により詳細に見ると、図４１の処理番号Ｌ０１から処理が始まることになる。処理番号Ｌ０１では、通信装置０３が使用可能なポート番号を確認する。続いて、処理番号Ｌ０２において、通信装置０３を介して、本発明のシーケンスデータ処理装置の外部からパケット８３が送信されることを要求する。そして、処理番号Ｌ０３では、処理番号Ｌ０２で送信要求したパケットが届いていないか通信装置０３を介して確認する。処理番号Ｌ０４において、何らかのパケット８３を受信したならば処理番号Ｌ０５に移る。もし、処理番号Ｌ０４において、パケット８３を受信しないならば、処理番号Ｌ２４に処理が移る。ここでは、処理番号Ｌ０５に処理が移った場合について処理を追うことにする。　図４１に示すように、処理番号Ｌ０５において、コマンド識別子４８の値を抽出する。抽出した値は図４１のコマンド識別子ＣＩＤに代入する。
【０１０８】
はじめに、処理番号Ｌ０６において、コマンド識別子ＣＩＤがリクエスト・コマンドの値（１００）であった場合の処理では、図２６に示すように、処理番号Ｌ０７においてコマンド・データ８２に含まれるルール番号を抽出する。そしてＬ０８において、ルール番号に対応するルールが存在するならば、処理番号Ｌ１１において記憶装置０２からルール番号に対応するＥＣＡルールを抽出する。さらに、処理番号Ｌ１２において、抽出したＥＣＡルールをコマンド・データ８２に記述して、図３５の送信パケット８３を生成して、通信装置０３を介してパケットを送信する。もし、処理番号Ｌ０８において、ルール番号に対応するルールが存在しないならば、図２８に示すように、処理番号Ｌ０９において、コマンド・データ８２を０（ゼロ）を記述した、送信パケット８３を生成して、処理番号Ｌ１０で通信装置０３を介してパケットを送信する。
【０１０９】
つぎに、処理番号Ｌ１３において、コマンド識別子ＣＩＤがアッドルール・コマンドの値（０１０）であった場合の処理では、処理番号Ｌ１４において記憶装置０２にＥＣＡルールを追加することが可能かをチェックする。処理番号Ｌ１５で、ＥＣＡルールの追加が可能だと判断されれば、処理番号Ｊ１６に処理を移し、追加するＥＣＡルールを抽出し、処理番号Ｌ１７において記憶装置０２に抽出したＥＣＡルールを保持する。さらに、処理番号Ｌ１８では、ＥＣＡルールの総数を示すルール数Ｒに１を加える。
【０１１０】
つぎに、処理番号Ｌ１９において、コマンド識別子ＣＩＤがクリアルール・コマンドの値（０１１）であった場合の処理では、処理番号Ｌ２０において記憶装置０２に保持するルール数Ｒの値を０（ゼロ）に設定する。
つぎに、処理番号Ｌ２１において、コマンド識別子ＣＩＤがセンドメッセージ・コマンドの値（０００）であった場合の処理では、処理番号Ｌ２２においてメッセージ識別子６５を抽出する。続いて、処理番号Ｌ２３において、抽出したメッセージ識別子６５の値を、補助記憶部２４が保持するメッセージ６６に代入する。
上記の処理を経て、処理番号Ｌ２４に処理が移ったならば、図３０のメイン処理フローに戻り、処理番号Ｓ０７へと移る。
以上により、本発明の実施例の主要動作が全て示された。
【０１１１】
上述実施例の動作は、シーケンスデータ処理装置を構成するＣＰＵの、前述した処理フローを含む適宜制御ブログラムとして実現することができる。なお、本発明は実施例での説明に限定されることなく、その主旨の範囲で各種の態様で実施できる。入出力対象や入出力要素数等は、言うまでもなく単なる例示であり、実施例のものに限られない。
【０１１２】
【発明の効果】
本発明による第一の効果は、省資源のメモリ環境下で動作するシーケンスデータ処理装置であっても、動作規則を効率的に処理することが可能になる。その理由は、本発明のＥＣＡ規則の構造は、一定長のブロックに区切られたデータ構造を有しており、各ブロックの一つのみを抽出して演算装置内で逐次処理すればよいので，アクションの発火条件が成立した場合にだけアクションを記述するブロックを演算装置に読み込み処理すればよいからである。
【０１１３】
第二の効果は、省資源のメモリ環境下で動作するシーケンスデータ処理装置であっても、複雑な動作規則を処理することが可能になる。その理由は、本発明のＥＣＡ規則の構造は、一定長のブロックに区切られたデータ構造を有しており、各ブロックの連結によって，複数のアクションの発火条件を記述したり、一つのアクションの発火条件が成立したときに複数の動作を逐次実行する記述が可能だからである。
【０１１４】
第三の効果は、データ量の少ないＥＣＡ規則にもかかわらず、外部からの入力信号以外にも多くのアクションの発火条件に設定することができる。その理由は、本発明のＥＣＡ規則の構造は、一定長のブロックに区切られたデータ構造を有しており、イベント部や、コンディション部、アクション部に含まれる各種の識別子やフラグの値によって、その記述内容が厳密に決められているからである。
【０１１５】
第四の効果は、簡単な操作でシーケンスデータ処理装置の動作を変更することができる。その理由は、一つのＥＣＡルールで制御規則が完結しているため、ＥＣＡルールの処理順序に無関係に実行が可能であるから、外部から自由にルールを追加や削除して動作を変更することができるからである。
【図面の簡単な説明】
【図１】本発明に係るシーケンスデータ処理装置の構成ブロック図である。
【図２】本発明のＥＣＡルールの基本構造を示す説明図である。
【図３】継続フラグの説明図である。
【図４】本発明のＥＣＡルールの構造比較図である。
【図５】本発明のイベント部を含むブロックの実施例である。
【図６】本発明のイベント部の種類を示す説明図である。
【図７】本発明のコンディション・コントロールの実施例その１
【図８】本発明のコンディション・コントロールの実施例その２
【図９】本発明のコンディション・コントロールの実施例その３
【図１０】本発明の状態変数の構造例である。
【図１１】本発明の時間イベント・テーブルの実施例である。
【図１２】本発明のタイマ・エクスパイアの実施例である。
【図１３】本発明のレシーブ・メッセージの実施例である。
【図１４】本発明のメッセージの構造例である。
【図１５】本発明のアクション部を含むブロックの説明図である。
【図１６】本発明のアクション識別子の種類を示す説明図である。
【図１７】本発明のノーマルアクションの実施例その１
【図１８】本発明のノーマルアクションの実施例その２
【図１９】本発明のノーマルアクションの実施例その３
【図２０】本発明のスペシャルアクションの実施例である。
【図２１】本発明のタイマ・アクションの実施例である。
【図２２】本発明のセンドコマンド・アクションの実施例である。
【図２３】本発明のセンドメッセージ・コマンドの実施例である。
【図２４】本発明のアッドルール・コマンドの実施例である。
【図２５】本発明のクリアコマンド・アクションの実施例である。
【図２６】本発明のリクエストルール・アクションの実施例その１
【図２７】本発明のパケットの生成方法に関する実施例である。
【図２８】本発明のリクエストルール・アクションの実施例その２
【図２９】本発明のリクエストルール・アクションの実施例である。
【図３０】本発明のメイン処理の一例を示すフローチャートである。
【図３１】図３０のフローチャートの補足図である。
【図３２】本発明のイベント部およびコンディション部の処理の一例を示すフローチャートである。
【図３３】本発明のアクション部の処理の一例を示すフローチャートである。
【図３４】本発明のアッドルール・コマンドで送信するパケットの実施例である。
【図３５】本発明のセンドルール・コマンドで送信するパケットの実施例である。
【図３６】本発明のセンドメッセージ・コマンドで送信するパケットの実施例である。
【図３７】本発明のハードウエアコントロール・アクションの種類を示す説明図である。
【図３８】本発明の内部出力コントロールの実施例である。
【図３９】本発明の駆動管理コントロールの実施例である。
【図４０】本発明の通信装置コントロールの実施例である。
【図４１】本発明の通信装置の処理の一例を示すフローチャートである。
【図４２】本発明の受信したパケットの構造例
【図４３】本発明のクリアルール・コマンドで送信するパケットの実施例である。
【図４４】本発明のリクエストルール・コマンドで送信するパケットの実施例である。
【符号の説明】
０１…演算装置
０２…記憶装置
０３…通信装置
０４…入力装置
０５…出力装置
０６…内部出力装置
０７…通信ポート
１０…通信ポート切替信号
１１…入力信号
１２…出力信号
１５…切替フラグ
２０…イベント解析部
２１…コンディション解析部
２２…アクション解析部
２３…ＥＣＡルール検索部
２４…補助記憶部
２５…タイマ
２６…時間イベント管理部
２７…駆動管理部
２８…時間イベント・テーブル
２９…比較器
３０…ＥＣＡルール数
３１…ＥＣＡルール
３２…イベント部
３３…コンディション部
３４…アクション部
３５…ブロック
３６…継続フラグ
３７…マルチコンディション・フラグ
３８…時間イベント・フラグ
４５…ＥＣＡブロック番号
４６…ＥＣＡルール番号
４７…コマンド
４８…コマンド識別子
４９…コマンド・データ長
５０…メッセージ・レジスタ
５１…コンディション判定フラグ
５２…入力フラグ
５３…出力フラグ
５４…アクション判定フラグ
５５…ブロック判定フラグ
５６…マルチコンディション・フラグ
５７…マルチアクション・フラグ
５８…状態フラグ
６０…タイマ設定時間
６１…タイマ・カウンタ
６２…タイマ発火フラグ
６３…タイマ繰返しフラグ
６４…タイマ識別子
６５…メッセージ識別子
６６…メッセージ
６７…タイム・バリュー
６８…タイム・オーダー
７０…コンディション・バリュー
７１…コンディション・スペース
７２…コンディション・マスク
７３…状態変数
７４…アクション・フォーマット
７５…アクション・バリュー
７６…アクション・スペース
７７…アクション・マスク
７８…アクション識別子
８０…スペシャルアクション識別子
８１…スペシャルアクション・フォーム
８２…コマンド・データ
８３…パケット
８５…ハードウエア識別子
８６…ハードウエアコントロール・フォーム
８７…動作モード切替フラグ
８８…通信ポート識別子
【図１】
2004078517.tif 000003
【図２】
2004078517.tif 000004
【図３】
2004078517.tif 000005
【図４】
2004078517.tif 000006
【図５】
2004078517.tif 000007
【図６】
2004078517.tif 000008
【図７】
2004078517.tif 000009
【図８】
2004078517.tif 000010
【図９】
2004078517.tif 000011
【図１０】
2004078517.tif 000012
【図１１】
2004078517.tif 000013
【図１２】
2004078517.tif 000014
【図１３】
2004078517.tif 000015
【図１４】
2004078517.tif 000016
【図１５】
2004078517.tif 000017
【図１６】
2004078517.tif 000018
【図１７】
2004078517.tif 000019
【図１８】
2004078517.tif 000020
【図１９】
2004078517.tif 000021
【図２０】
2004078517.tif 000022
【図２１】
2004078517.tif 000023
【図２２】
2004078517.tif 000024
【図２３】
2004078517.tif 000025
【図２４】
2004078517.tif 000026
【図２５】
2004078517.tif 000027
【図２６】
2004078517.tif 000028
【図２７】
2004078517.tif 000029
【図２８】
2004078517.tif 000030
【図２９】
2004078517.tif 000031
【図３０】
2004078517.tif 000032
【図３１】
2004078517.tif 000033
【図３２】
2004078517.tif 000034
【図３３】
2004078517.tif 000035
【図３４】
2004078517.tif 000036
【図３５】
2004078517.tif 000037
【図３６】
2004078517.tif 000038
【図３７】
2004078517.tif 000039
【図３８】
2004078517.tif 000040
【図３９】
2004078517.tif 000041
【図４０】
2004078517.tif 000042
【図４１】
2004078517.tif 000043
【図４２】
2004078517.tif 000044
【図４３】
2004078517.tif 000045
【図４４】
2004078517.tif 000046