(57)【特許請求の範囲】
【請求項１】
ステートマシーンの現状態を示す状態データと、ステートマシーンを現状態から次の状態に遷移させるための入力条件を示す入力データとをサンプリングするサンプリング手段と、
各アドレスのメモリ領域に前記ステートマシーンの状態遷移先を示す状態データが複数分ずつ記憶されたメモリと、
前記メモリの所定のアドレスのメモリ領域に記憶されているデータを読み出すデータ読出手段であって、前記サンプリング手段によりサンプリングされた状態データ及び入力データに対応するアドレスのメモリ領域から複数の状態データを読み出すデータ読出手段と、
前記データ読出手段により読み出された複数の状態データのうちから、前記ステートマシーンの状態遷移先とする１つの状態データを前記サンプリング手段によりサンプリングされた入力データに基づいて選択すると共に、該選択した状態データを前記ステートマシーンの現状態を示す状態データとして前記サンプリング手段に出力するセレクタ手段と、
を備えたことを特徴とするステートマシーン。
【請求項２】
前記サンプリング手段におけるサンプリングの実施と停止とを制御するサンプリングレジスタを備えたことを特徴とする請求項１のステートマシーン。
【請求項３】
前記セレクタ手段により前記ステートマシーンの状態遷移先として選択された状態データを入力し、該状態データに基づいて所定のコードを出力するデコーダを備えたことを特徴とする請求項１又は２のステートマシーン。
【請求項４】
前記デコーダは、前記状態データに代えてステートマシーンの制御を行う情報処理手段から出力されたデータを入力することが可能であることを特徴とする請求項３のステートマシーン。
【請求項５】
前記サンプリング手段に対して出力するデータを記憶することが可能なレジスタを備え、前記サンプリング手段は、ステートマシーンの現状態を示す状態データやステートマシーンを現状態から次の状態に遷移させるための入力条件を示す入力データに対して、所定ビットのデータを前記レジスタに記憶されているデータで置き換えて前記メモリに出力することを特徴とする請求項１乃至４のいずれか１のステートマシーン。
【請求項６】
前記メモリから状態データを読み出すメモリ領域のアドレスを、前記サンプリング手段によりサンプリングされた状態データ及び入力データに対応するアドレスに代えて、ステートマシーンの制御を行う情報処理手段から出力されたデータに対応するアドレスに変更する手段を備えたことを特徴とする請求項１乃至５のいずれか１のステートマシーン。
【請求項７】
前記サンプリング手段は、ステートマシーンの現状態を示す状態データをサンプリングする第１のサンプリング手段と、ステートマシーンを現状態から次の状態に遷移させるための入力条件を示す入力データをサンプリングする第２のサンプリング手段と、から構成されていることを特徴とする請求項１乃至６のいずれか１のステートマシーン。
【請求項８】
前記メモリから状態データを読み出すメモリ領域のアドレスを、前記第１のサンプリング手段でサンプリングしたデータ及び前記第２のサンプリング手段でサンプリングしたデータのうちの少なくとも一方のデータの一部に基づいて設定することを特徴とする請求項７のステートマシーン。
【請求項９】
ステートマシーンの現状態を示す状態データと、ステートマシーンを現状態から次の状態に遷移させるための入力条件を示す入力データとをサンプリングするサンプリング手段と、
前記ステートマシーンの現状態を示す各状態データに対して複数のアドレスのメモリ領域が対応付けられると共に、該複数のアドレスの各々のメモリ領域に、入力データとして入力され得る各入力条件のデータと、前記ステートマシーンの状態遷移先を示す状態データとが記憶されたメモリと、
前記メモリの所定のアドレスのメモリ領域に記憶されているデータを読み出すデータ読出手段であって、前記サンプリング手段によりサンプリングされた状態データに対応する複数のアドレスのメモリ領域から入力条件のデータを順次読み出すデータ読出手段と、
前記サンプリング手段によりサンプリングされた入力データが示す入力条件と、前記データ読出手段により順次読み出された入力条件とを比較し、これらの入力条件が一致するメモリ領域に記憶されている状態データを前記ステートマシーンの状態遷移先を示す状態データとすると共に、該状態データを前記ステートマシーンの現状態を示す状態データとして前記サンプリング手段に出力するセレクタ手段と、
を備えたことを特徴とするステートマシーン。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はステートマシーンに係り、特にメモリを用いたステートマシーンに関する。
【０００２】
【従来の技術】
プリンタやＦＡＸなどを構成している機構部分は、様々な動作モードを有しており、該動作モードを切り替えるためにモータ等を駆動して各機構要素の位置を変化させている。
【０００３】
モードを変更する条件としてセンサ入力やタイマー割り込み、プログラム割り込みなどがあり、それらの入力条件をマイコンが監視して入力条件に応じたモード遷移を指令している。そのためマイコンに対する処理の負荷が増大する原因となっている。機構部のモード遷移は特定の入力条件とその時点におけるモードにより確定するので、ゲート回路とラッチ回路とを組み合わせた制御回路で状態が遷移するように構成したステートマシーンにより簡単に制御することができる。このステートマシーンをマイコンの外部に構成することによってマイコンに対する処理の負荷を減少し、マイコンのプログラムのサブルーチンが減少してプログラムの構造が単純化されるとともに、モード制御がマイコンの処理速度に影響されなくなるので装置の処理速度が迅速になる。
【０００４】
なお、プロセスの動作及びプロセス全体にわたるプロセス間の相互作用を確かめるための手段となる状態遷移実行装置が特公平７−４３６５６号の公報に示されている。また、通信端末装置におけるマイクロコンピュータの負担の低減を目的としたステートマシーン及び通信制御方式が特開平８−８７４６２号の公報に示されている。
【０００５】
【発明が解決しようとする課題】
しかしながら、特公平７−４３６５６号の公報に示されている状態遷移実行装置は、実行可能なプロセスがなくなるまで処理を続けてシステムの動作を論理的に確認するための装置で、装置の具体的な構成が示されていないとともに、状態遷移先をプログラマブルに変更することができない。
【０００６】
また、特開平８−８７４６２号の公報に示されているステートマシーン及び通信制御方式では、ステートマシーンを一時的に停止させたり、強制的に特定の状態に遷移させることを目的としているが、入力条件の数及び形態が固定されており、状態遷移先をプログラマブルに変更する方法が規定されていない。また、同種異機器に対して同一回路でフレキシブルに対応することができないという不具合を生じていた。
【０００７】
本発明はこのような事情に鑑みてなされたもので、外部入力またはレジスタ入力（内部入力）の入力条件をビット毎に選択でき、情報の書き込みが可能な記憶素子を用いて状態遷移先のテーブルを作成することでプログラマブルな制御を高速に行うステートマシーンを提供することを目的としている。
【０００８】
【課題を解決するための手段】
本発明は前記目的を達成するために、ステートマシーンの現状態を示す状態データと、ステートマシーンを現状態から次の状態に遷移させるための入力条件を示す入力データとをサンプリングするサンプリング手段と、各アドレスのメモリ領域に前記ステートマシーンの状態遷移先を示す状態データが複数分ずつ記憶されたメモリと、前記メモリの所定のアドレスのメモリ領域に記憶されているデータを読み出すデータ読出手段であって、前記サンプリング手段によりサンプリングされた状態データ及び入力データに対応するアドレスのメモリ領域から複数の状態データを読み出すデータ読出手段と、前記データ読出手段により読み出された複数の状態データのうちから、前記ステートマシーンの状態遷移先とする１つの状態データを前記サンプリング手段によりサンプリングされた入力データに基づいて選択すると共に、該選択した状態データを前記ステートマシーンの現状態を示す状態データとして前記サンプリング手段に出力するセレクタ手段と、を備えたことを特徴としている。
【０００９】
本発明によれば、プログラマブルな制御を高速に行うステートマシーンを提供することが可能となる。
【００１０】
【発明の実施の形態】
以下添付図面に従って本発明に係るステートマシーンの好ましい実施の形態について詳説する。
【００１１】
図１は、本発明に係るステートマシーンの実施の形態を示すブロック図である。
【００１２】
同図に示すステートマシーン１０は、４入力条件で２５６種類の状態遷移と１６の出力状態とがプログラマブルな構成となっている。ステートマシーン１０の外部入力部は、リミットスイッチやセンサ出力等の新たな状態情報Ａ、Ｂ、Ｃ、Ｄの値に対してオンディレイ処理及びオフディレイ処理を施してチャタリング処理を行なって４ビットの入力条件データとして出力するチャタリング処理部１２と、サンプリング手段１４のサンプリング間隔の設定や、サンプリングの実施又は停止を制御するレジスタａ１６と、前記入力条件の任意のビットをマスクするデータを出力するレジスタｂ１８と、前記マスクしたデータに対して置き換える値を入力するためのレジスタｃ２０と、前記入力条件とレジスタｂ１８の値と、レジスタｃ２０とのデータと、初期状態を設定する信号とを入力して演算して結果をサンプリング手段１４に出力するセレクタ２２と、現状態を示す状態データであるセレクタ３６の出力ステートをフィードバック入力するとともに、初期状態を設定するデータを記憶しているレジスタｄ２４の出力とをビット毎に切り換えて入力して結果をサンプリング手段１４に出力するセレクタ２６とから構成されている。
【００１３】
またステートマシーン１０の演算部には、前記サンプリング手段１４から出力される６ビットのデータと、ステートマシーン全般の制御を行う図示しない情報処理手段により制御されるＣＰＵアクセス２８から出力されるデータとを、サンプリングコントローラ３０から出力される信号により切り換えてメモリ３２にアドレス情報として出力するセレクタ３４と、サンプリング手段１４から出力される２ビットのデータに基づいてメモリ３２から出力される１６ビットのデータの内の４ビットを選択して次の状態遷移情報として出力するセレクタ３６と、セレクタ３６から出力される４ビットの状態データをレジスタｅ４０に示されている０〜１５までの１６種類の４ビット情報に置き換えて、出力Ａ、Ｂ、Ｃ、Ｄのオン／オフ情報に変換するデコーダ３８とが設けられている。なお、レジスタｅ４０の情報や、前記メモリ３２に入力する情報は、ステートマシーンの制御を行う図示しない情報処理手段の指令で変更することが可能となっている。
【００１４】
次にステートマシーン１０の機能について説明する。
【００１５】
外部入力Ａ、Ｂ、Ｃ、Ｄから入力された信号に対してチャタリング処理を実施した後に、セレクタ２２はその入力値をレジスタａで設定されたサンプリング間隔でラッチする。
【００１６】
また、セレクタ２２は、レジスタｂで設定されたビット（”１”が設定されたビット）をマスクし、レジスタｃで設定されたそのビットに相当する値に置き換え入力条件とする。例えば、外部入力値＝１０１０、レジスタｂ＝００１１の場合には、上位２ビットは外部入力値を選択して下位の２ビットはレジスタｃの値を採用するので、レジスタｃ＝１１０１である場合の入力条件値は“１００１”となる。
【００１７】
同時にセレクタ２６は、セレクタ３６から出力されている現在のステートマシーンの状態値（１６状態なので４ビット）をラッチする。サンプリング手段１４は、セレクタ２２から出力される入力条件値を下位４ビット、セレクタ２６から出力される現状態を示す状態データを上位４ビットとした計８ビットのアドレスを生成して下位の２ビットはセレクタ３６に出力し、上位の６ビットはセレクタ３４を介してメモリ３２にアクセスする。メモリ３２の内部には、アドレス上位４ビットの状態データと下位４ビットの外部入力条件値において次に遷移すべき状態値４ビットが書かれている。
【００１８】
ステートマシーン１０はサンプリングのタイミング毎にメモリ３２に対してアクセスを行い、次の遷移状態を出力しホールドしておく。本実施の形態では、メモリ３２が１アドレス１６ビット出力で構成されているので、メモリ３２の出力を４ビット毎に４分割して、サンプリング手段１４から出力される上位６ビットをメモリのアドレスとしてアクセスし、メモリ３２の次の段のセレクタ３６にて下位２ビットにおいて１アドレス１６ビット出力を４分割した４ビットを選択するようにしている。
【００１９】
このようにして得られた４ビットの情報をデコーダ３８でレジスタｅ４０を用いてデコードし、出力Ａ〜Ｄをモータ等の制御信号や割り込み信号として出力する。デコード値もプログラマブルに行なえるように、４ビットの状態データに対応した０〜１５の状態が設定できるようにしている。例えば、セレクタ３６の２進数の出力値が“０１１０”（ｅ６に相当）の場合にはレジスタｅ４０の出力が“１１００”であるとすると、出力Ａ、Ｂ、Ｃ、Ｄの値がそれぞれ‘１’、‘１’、‘０’、‘０’となる。
【００２０】
上記のようにメモリ３２とセレクタ３４、３６とによりステートマシーン１０を構成しているので、セレクタ３４にてアクセス経路を切り替えることが可能であるとともに、サンプリングを停止した際に情報処理手段からメモリ３２へのアクセスを行なうことができる。サンプリングを停止した際にセレクタ３６は、サンプリングの最終値をホールドする。更に、ステートマシーン１０を初期状態にするためにセレクタ２２、２６にてレジスタｄ２４の設定値と入力条件をレジスタｂ１８の設定値に切り替えることも可能である。
【００２１】
図２（ａ）〜（ｃ）に、上記ステートマシーンを用いて制御するプリントエンジンを示す。
【００２２】
同図によれば、プリントエンジン４８は、センサａ（外部入力Ｄに相当する）、センサｂ（外部入力Ｃ）、センサｃ（外部入力Ｂ）、と印刷ヘッド５０（出力Ｃ＝１でプリント状態）と、給紙ローラ５２と、給紙モータ５４（出力Ａ＝１で正転給紙、出力Ｂ＝１で逆転排紙）と、から構成されており、図２（ａ）〜（ｃ）にかけて用紙５６を給紙して印刷し、排出する動作を行う。本実施例では、各センサは出力＝１で用紙を検出しており、外部入力Ａは未使用としている。また図示していないが、デコーダ３８出力値＝００１０（出力Ｃ＝１）の場合にはＬＥＤ表示器の点灯、デコーダ３８出力値＝０００１（出力Ｄ＝１）の場合には、情報処理手段（マイコン）に対して割り込み信号を発して情報処理手段がエラー処理ルーチンを実行する。
【００２３】
以下にプリントエンジン４８の動作について以下に説明する。給紙口に備えてあるセンサａが用紙を検知したら、先ずレジスタｂは未使用の外部入力Ａをマスクするために“１０００”とし、レジスタｃには“０ｘｘｘ”を設定する。出力信号Ａ，Ｂ，Ｃ，Ｄはそれぞれモータ正転、モータ逆転、ＬＥＤ点灯、割り込み発生に対応してあり、外部入力＝０００１（センサａ＝１）なら、用紙を紙送り状態にするためにセレクタ３６出力＝１００、デコーダ３８出力値＝１０００として給紙モータを正転させる。すると、給紙ローラが正転して紙送り状態になり、次に紙がセットされたことをセンサｂが検知したなら（外部入力＝００１０になったなら）、プリント状態に移行する。
【００２４】
プリント状態中は印刷ヘッド５０を機能させるとともにそれを示すＬＥＤ表示器を点灯させるので、セレクタ３６出力＝０１００、デコーダ３８出力値＝００１０を出力する。紙がプリント末端まで送られプリントを終了したことをセンサｃで検知したならば（外部入力＝０１００になったならば）、出力は初期状態（セレクタ３６出力＝デコーダ３８出力値＝００００）に戻る。もし、プリント終了時に紙が残っていたり、初期状態で紙が末端に残っていることを検知したなら、紙詰まりと認識してエラー状態となり、セレクタ３６出力＝１１１１、デコーダ３８出力値＝０００１を出力して情報処理手段に対して割込み信号を発生する。ただし、プリント中の紙送りは図２には記載していない別のステッピングモータで動作させている。上記の動作の状態遷移を図３に示す。
【００２５】
図３はステートマシーン１０の状態遷移図を示す図である。
【００２６】
同図によれば、ステートマシーン１０の状態Ｃ１００「初期状態」ではセレクタ３６出力＝デコーダ３８出力値＝００００である。Ｃ１００「初期状態」においてセンサａが用紙を検知して外部入力条件＝０００１となった場合には、状態Ｃ１０２「紙送り状態」に遷移して、セレクタ３６出力＝デコーダ３８出力値＝１０００とし、給紙モータ５４を動作させて用紙を給送する処理を行う。
【００２７】
Ｃ１０２「紙送り状態」において用紙５６が移動し、センサｂが用紙５６を検知して外部入力条件＝００１０となった場合には、状態Ｃ１０４「プリント状態」に遷移して、セレクタ３６出力＝０１００、デコーダ３８出力値＝００１０とし、印刷ヘッド５０を動作させてプリントを行う。
【００２８】
Ｃ１０４「プリント状態」においてセンサｃが用紙を検知して外部入力条件＝０１００となった場合には、状態Ｃ１００「初期状態」に遷移して、セレクタ３６出力＝００００、デコーダ３８出力値＝００００とし、給紙モータ５４や印刷ヘッド５０を停止させて初期状態に戻る。
【００２９】
通常は上記のループを巡回するが、状態Ｃ１００「初期状態」にてセンサｂのみが用紙を検知している場合（外部入力条件＝００１０）又はセンサａ及びｃが用紙を検知した場合（外部入力条件＝０１０１）には、正常な遷移状態とは異なるので、状態Ｃ１０６「エラー状態」に遷移してセレクタ３６出力＝１１１１、デコーダ３８出力値＝０００１としてエラー表示を行う。また、状態Ｃ１０４「プリント状態」にてセンサｂとｃが用紙を検知している場合（外部入力条件＝０１１０）にも、正常な遷移状態とは異なるので、状態Ｃ１０６「エラー状態」に遷移してエラー出力を行う。
【００３０】
図４にメモリ３２に入力する２ビット入力値とセレクタ３６の出力値との関係を示す。
【００３１】
同図には、セレクタ３６から出力された４ビットの現状態を示すステート（状態０〜１５までの１６種類の状態データ）に対応したメモリ３２に入力する６ビットの入力値（アドレス０〜アドレス６３までの６４状態）と、それぞれのアドレスに対応したメモリ３２の１６ビットの出力値が示されている。また、メモリ３２の１６ビットの出力値は、次のセレクタ３６においてサンプリング手段１４から出力されている２ビットの４状態を示す信号によって選択されて、４ビットの状態データが出力される。なお、同図にて省略されているメモリ３２のアドレスに応じた出力値は“００００”（初期状態）が記憶されているものとする。
【００３２】
たとえば、同図の状態０、アドレス０における出力値は“０Ｆ８０”の１６ビットであるが、セレクタ３６に入力する２ビットの入力値が“１０”であった場合にはセレクタ３６の４ビット出力コードは“ＡＢＣＤ”＝“００００”（初期状態）となる。また、セレクタ３６に入力する２ビットの入力値が“０１”であった場合にはセレクタ３６の４ビット出力コードは“ＡＢＣＤ”＝“１１１１”（エラー状態）となる。
【００３３】
また、レジスタｅ４０は“０”、“４”、“８”、“１５”の入力状態に対してそれぞれ０、２、８、１（ＨＥＸ）の値を設定し、出力する。
【００３４】
まず、本発明に係るステートマシーン１０とプリントエンジン４８とが含まれているプリンタの電源が投入されると、プリンタを「初期状態」にするために現状態を示すデータをメモリ出力値からレジスタｄの設定値“００００”に切り替え、かつ、遷移条件を外部入力値からレジスタｂの設定値“００００”に切り替える。１回のサンプリング後、メモリ出力が初期状態の設定値“００００”になるので、セレクタをレジスタ側からメモリ出力値と外部入力値側に切り替える。このままプリンタの給紙口に紙が供給されるまで、初期状態のままでモータの回転及びＬＥＤの点灯もしない状態にする。
【００３５】
この状態では、ステートマシーン１０は外部入力“ＡＢＣＤ”は“ｘ０００”（但し、入力Ａは未使用であるので、ｘ＝不問という意味である）で、遷移条件は“００００”なので図３の状態遷移図に示す状態Ｃ１００「初期状態」“００００”で自己ループしている。給紙口に紙が供給されたなら、センサａの出力が‘１’となるので外部入力条件は“０００１”になり、サンプリング後にステートマシーンの現状態は状態Ｃ１０２「紙送り状態」“１０００”に移行する。出力値は、紙送り状態“１０００”がデコーダ３８でデコードされてレジスタｅ４０の“８”（ＨＥＸ）に対応する値が選択されてデコーダ３８出力値“ＡＢＣＤ”＝“１０００”が出力される。この状態では、出力Ａが‘１’になるのでモータが正転し、紙をプリント実行位置まで搬送する。
【００３６】
次に、プリント実行位置まで紙が送られてセンサｂが‘１’になり、かつ、センサａが紙を検知しない位置まで送られたなら、外部入力条件が“ＡＢＣＤ”＝“００１０”となるので、次のサンプリング後に状態Ｃ１０４「プリント状態」“０１００”に移行する。デコーダ３８出力値は、紙送り状態“０１００”がデコードされてレジスタｅ４０の“４”に対応する値“００１０”が選択されてデコーダ３８から出力される。この状態では、給紙モータ５４の正転が止まり、出力Ｃが‘１’になるのでＬＥＤが点灯しプリント中であることを示す。プリント中は別のステッピングモータで紙送りを制御する。
【００３７】
プリントが終了して用紙５６が排出される位置になったなら、センサｃが‘１’となる。すると外部入力条件が“ＡＢＣＤ”＝“０１００”となるので、次のサンプリング後に状態Ｃ１００「初期状態」“００００”に移行し、デコーダ３８出力値が“ＡＢＣＤ”＝“００００”となりＬＥＤ表示器は消灯する。
【００３８】
Ｃ１００「初期状態」において外部入力条件が“ＡＢＣＤ”＝“００１０”あるいは“０１０１”が入力された場合、または、Ｃ１０４「プリント状態」中に外部入力条件“０１１０”となった場合には、規定外の用紙が供給されたか用紙が途中で破れ詰まっているなどのエラー状態になっている状態が考えられる。この場合は、ステートマシーンはＣ１０６「エラー状態」“１１１１”に移行し、レジスタｅ４０の“１５”に対応する出力値、“０００１”を出力する。すると、情報処理手段に対して割り込み信号を発生し、情報処理手段（マイコン）がエラー処理ルーチンを実行する。エラー処理が行なわれたなら、電源オン時と同様にして初期状態に戻す。
【００３９】
上記の実施例は、簡単なステートマシーンの実施例であり、実際の場合は更に複雑なステートマシーンになることが予想される。図３のステートマシーン１０の状態遷移図では、外部入力条件Ａはレジスタｂの設定値で‘０’の場合にしか使用されていないが、このビットに‘１’を立てることで別のモードに移行し、実施例とは異なった経路を通すことも可能である。例えば、エラー状態から初期状態への復帰する場合に使用することが可能である。
【００４０】
図５は、本発明に係るステートマシーンの他の実施の形態を示すブロック図である。
【００４１】
同図に示すステートマシーン６０は、５入力条件で２５６種類の状態遷移と１６の出力状態とがプログラマブルな構成となっている。ステートマシーン６０の外部入力部には、リミットスイッチやセンサ出力等の外部入力Ａ、Ｂ、Ｃ、Ｄ、Ｅの値に対してオンディレイ処理及びオフディレイ処理を施してチャタリング処理を行なって５ビットの入力条件を示す入力データとして出力するチャタリング処理部６２が設けられている。
【００４２】
またステートマシーン６０には、定期的にサンプリングを実施するサンプリング手段６４と、サンプリングコントローラ６５と、前記入力条件の任意のビットをマスクしてリセット状態を設定する初期状態リセット６６と、前記入力条件とリセット入力値とを演算して結果をメモリ６８に出力するサンプリング手段６４と、サンプリング手段６４から出力される２ビットのデータに基づいてメモリ６８から出力される１６ビットのデータの内の４ビットを選択して出力するセレクタ７０と、セレクタ７０から出力される４ビットの状態データを「強制モータＯＮ／ＯＦＦ」、「ＡＣＴＩＯＮ  ＤＡＴＡ」、「ＥＶＥＮＴ  ＤＡＴＡ」等の各情報に応じて出力するデコーダ７２とが設けられている。該各情報は、ステートマシーンの制御を行う情報処理手段の指令で変更することが可能である。
【００４３】
次にステートマシーン６０の機能について説明する。同図に示すステートマシーン６０は、遷移状態を示すメモリ６８のデータ構成に応じて、選択型パターンと比較型パターンとの２通りの動作が可能である。
【００４４】
以下に選択型パターンの動作について説明する。
【００４５】
選択型パターンにおけるメモリ６８のデータ構成を図６に示す。
【００４６】
同図には、セレクタ７０から出力された４ビットの現状態を示すステート（状態０〜１５までの１６種類の状態データ）に対応したメモリ６８に入力する７ビットの入力値（アドレス０〜アドレス１２７までの１２８状態）と、それぞれのアドレスに対応したメモリ６８の１６ビットの出力値が示されている。また、メモリ６８の１６ビットの出力値は、次のセレクタ７０においてサンプリング手段６４から出力されている２ビットの４状態を示す信号によって選択されて、４ビットの出力値が出力される。
【００４７】
チャタリング処理部６２にて、５つの外部入力センサのチャタリング処理をし、一定間隔で前記５つの外部入力のセンサの状態とセレクタ７０の状態データ（４ビット１６ステートの現状態）をサンプリングする。サンプリング値の上位４ビットをセレクタ７０の状態データ、下位５ビットが外部入力のセンサ値とする。リセット入力から初期状態リセット６６を介して強制リセットをかけた場合は、初期状態に対応したレジスタ設定値がサンプリング手段６４の出力値にセットされる。
【００４８】
次に、サンプリング手段６４の出力値上位７ビットをアドレスとして、メモリ６８（レジスタ）から１６ビットのデータを読み出す。次のセレクタ７０ではサンプリング手段６４から出力された下位２ビットのデータを用いてメモリ６８から出力された１６ビットのデータを４種類の４ビットデータに分割し、次に遷移する４ビットの状態データとして取り出す。
【００４９】
デコーダ７２では、４ビットの状態データと、２ビットのモータ動作データ（ＡＣＴＩＯＮ  ＤＡＴＡ）およびイベント動作データ（ＥＶＥＮＴ  ＤＡＴＡ）から出力値を選択する。
【００５０】
モータ動作は、モータのＯＮ（正転・逆転）ＯＦＦおよび状態保持（前状態の動作を継続）を行う。モータＯＦＦの場合、すぐに実行するか、ブレーキ状態を経由してからオフ状態になることをレジスタにて設定することが可能である。
【００５１】
イベント動作は、その状態でのフラグ出力（ポート出力）および割り込み発生の指令を行う。
【００５２】
次に比較型パターンの動作について説明する。
【００５３】
比較型パターンの機能を用いる場合には、図５のブロック図におけるサンプリングコントローラ６５から３ビットのカウントアップ値をサンプリング手段６４に出力する。また、サンプリング手段６４は、図示しない情報処理手段から７ビットの内部トリガを入力するとともに、外部入力の５ビットとを併せてセレクタ７０に対して１２ビットのデータとして出力する。
【００５４】
比較型パターンにおけるメモリ６８のデータ構成を図７に示す。
【００５５】
同図には、セレクタ７０から出力された４ビットの現状態を示すステート（状態０〜１５までの１６種類の状態データ）に対応したメモリ６８に入力する３ビットの入力値（パス０〜パス７までの８状態）と、それぞれのアドレスに対応したメモリ６８の１６ビットの出力値が示されている。また、メモリ６８の１６ビットの出力値は、次のセレクタ７０においてサンプリング手段６４から出力されている１２ビットの４０９６種類の状態を示す信号によって比較選択されて、４ビットの遷移先を出力する。
【００５６】
チャタリング処理部６２にて、５つの外部入力センサのチャタリング処理をして一定間隔で前記５つの外部入力のセンサの状態とセレクタ７０の状態データ（４ビット１６ステートの現状態）をサンプリングする。リセット入力から初期状態リセット６６を介して強制リセットをかけた場合は、初期状態に対応したレジスタ設定値がサンプリング手段６４の出力値にセットされる。
【００５７】
サンプリング手段６４の出力値上位７ビットをアドレスとして、メモリ６８から１６ビットデータを読み出す。この時、７ビットのアドレスのうち上位４ビットを現在のステートコードとし、下位３ビット（パス０〜パス７）を順次カウントアップさせメモリ６８（レジスタ）から１６ビットのデータ８種類を順次読み出す。セレクタ７０では、この１６ビットのデータの下位１２ビットと、サンプリング手段６４から出力される１２ビットのデータ（サンプリングした外部入力センサの状態および内部トリガ状態のレジスタ値）とを比較し、一致したなら上位４ビットを次の遷移先として取り出し、今回の状態データ値として出力する。サンプリングコントローラ６５から出力される３ビットによる８回のアクセスで一致しなければ、現状態を示す状態データ（モータ状態）を保持する。
【００５８】
以降は、選択型パターンと同様に機能する。なお、比較型パターンの場合には前記選択型パターンの場合と比較してメモリ６８の記憶容量を少なくできるとともに、より多くの条件を設定することが可能であるという利点がある。
【００５９】
【発明の効果】
以上説明したように本発明に係るステートマシーンによれば、ステートマシーンの現状態を示す状態データと、ステートマシーンを現状態から次の状態に遷移させるための入力条件を示す入力データとをサンプリングするサンプリング手段と、状態遷移先を示す状態データを記憶するメモリを有し、前記サンプリングした状態データ及び入力データに基づいて前記メモリから次の状態遷移先を示す状態データを読み出し、これを現状態を示す状態データとして出力する手段とを備えたので、プログラマブルな制御を高速に行うステートマシーンを提供することが可能となる。
【図面の簡単な説明】
【図１】本発明に係るステートマシーンの実施の形態を示すブロック図
【図２】（ａ）は制御するプリントエンジンの給紙状態を示す図
（ｂ）は制御するプリントエンジンの印刷状態を示す図
（ｃ）は制御するプリントエンジンの排紙状態を示す図
【図３】ステートマシーンの状態遷移を示す図
【図４】メモリに入力する入力値とセレクタの出力値との関係を示す図
【図５】本発明に係るステートマシーンの他の実施の形態を示すブロック図
【図６】選択型パターンにおけるメモリのデータ構成を示す図
【図７】比較型パターンにおけるメモリのデータ構成を示す図
【符号の説明】
１０…ステートマシーン、１４…サンプリング手段、１６…レジスタａ（サンプリングレジスタ）、１８…レジスタｂ、２０…レジスタｃ、２２…セレクタ、２８…ＣＰＵアクセス、３２…メモリ、３４…セレクタ、３６…セレクタ、３８…デコーダ、４０…レジスタｅ、４８…プリントエンジン、５０…印刷ヘッド、５２…給紙ローラ、５４…給紙モータ、５６…用紙、６０…ステートマシーン、６４…サンプリング手段、６８…メモリ、７０…セレクタ、７２…デコーダ
【図１】
0004081534.tif 000002
【図２】
0004081534.tif 000003
【図３】
0004081534.tif 000004
【図４】
0004081534.tif 000005
【図５】
0004081534.tif 000006
【図６】
0004081534.tif 000007
【図７】
0004081534.tif 000008