(57)【要約】      （修正有）【課題】被制御デバイスを迅速に制御する。【解決手段】外部デバイスドライバ１２１は、ペリフェラルドライバ５１から供給されたデータが、通常コマンドかスルーコマンドかを判定し、スルーコマンドであると判定された場合、受信した内容（コマンド）を、アプリケーション層において解読可能なデータに変換し、アプリケーション層のスルーコマンドFIFO１２３に記憶させ、受信イベントをコマンド実行部１２２に直接通知する。コマンド実行部１２２は、スルーコマンドを実行し、新たな内部状態を演算し、演算結果をシステム状態監視プログラム５４に供給するとともに、リターンFIFO７２Ｂに記憶させる。【選択図】図１８
2007058513.tif 000002
【特許請求の範囲】
【請求項１】
制御データに応じて被制御デバイスを制御する制御装置において、
前記制御データを入力する入力手段と、
前記入力手段により入力された前記制御データの入力イベントを発生する発生手段と、
前記入力イベントが発生されたとき、前記制御データに基づいて前記被制御デバイスを制御する制御手段と
を備え、
前記入力手段は、入力した前記制御データが所定のコマンドである場合、前記発生手段に代わり、前記所定のコマンドの入力イベントを発生し、
前記制御手段は、前記入力手段により前記入力イベントが発生されたとき、前記入力手段により入力された前記所定のコマンドに基づいて前記被制御デバイスを制御する
ことを特徴とする制御装置。
【請求項２】
制御データに応じて被制御デバイスを制御する制御方法において、
前記制御データを入力する入力ステップと、
前記入力ステップの処理で入力された前記制御データの入力イベントを発生する発生ステップと、
前記発生ステップの処理で前記入力イベントが発生されたとき、前記制御データに基づいて前記被制御デバイスを制御する制御ステップと
を含み、
前記入力ステップは、入力した前記制御データが所定のコマンドである場合、前記発生ステップに代わり、前記所定のコマンドの入力イベントを発生し、
前記制御ステップは、前記入力ステップの処理で前記入力イベントが発生されたとき、前記入力ステップの処理で入力された前記所定のコマンドに基づいて前記被制御デバイスを制御する
ことを特徴とする制御方法。
【請求項３】
制御データに応じて被制御デバイスを制御する処理をコンピュータに実行させるプログラムにおいて、
前記制御データを入力する入力ステップと、
前記入力ステップの処理で入力された前記制御データの入力イベントを発生する発生ステップと、
前記発生ステップの処理で前記入力イベントが発生されたとき、前記制御データに基づいて前記被制御デバイスを制御する制御ステップと
を含み、
前記入力ステップは、入力した前記制御データが所定のコマンドである場合、前記発生ステップに代わり、前記所定のコマンドの入力イベントを発生し、
前記制御ステップは、前記入力ステップの処理で前記入力イベントが発生されたとき、前記入力ステップの処理で入力された前記所定のコマンドに基づいて前記被制御デバイスを制御する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置および方法、並びにプログラムに関し、特に、被制御デバイスに対する制御を迅速に行えるようにした制御装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
例えば、テレビジョン受像機、携帯電話機、またはロボットなどの何らかの電気的制御を伴う装置においては、各装置を構成する所定の部分が、適宜、図１に示すように、前段制御部１、後段制御部２、および被制御デバイス３として動作して、所定の処理が実行される。
【０００３】
例えば、テレビジョン受像機では、チャンネルが切り換えられるときに生ずる画像の乱れを隠すために、チャンネル切り換え時に液晶パネルの輝度が一瞬暗くなるように制御されるが、その処理は、図２Ａに示すように、テレビジョン受像機において画質処理を制御する画像処理用マイクロコンピュータ（以下、マイコンと略称する）が前段制御部１として、液晶パネル制御用マイコンが後段制御部２として、そして液晶パネルが被制御デバイス３として動作することにより実現される。
【０００４】
具体的には前段制御部１としての画像処理用マイコンは、チャンネル変更のコマンドの入力（外部事象）に応じて、液晶パネルの明るさを暗くする旨の指令を、後段制御部２としての液晶パネル制御用マイコンに出力し、後段制御部２としての液晶パネル制御用マイコンは、画像を暗くするために必要なデータを演算して、被制御デバイス３としての液晶パネルに送信する。
【０００５】
また例えばユーザのリモートコントローラの操作を外部事象とすれば、図２Ｂに示すように、リモートコントローラからのチャンネル切り換えコマンドを受信し、画像処理用マイコンに送信するインタフェース制御用マイコンを前段制御部１とし、先の例では、前段制御部１とされた画像処理用マイコンが後段制御部２とし、そして先の例では、後段制御部２とした液晶パネル制御用マイコンが被制御デバイス３として動作することになる。
【０００６】
ところで、前段制御部１、後段制御部２、および被制御デバイス３（以下、個々に区別する必要がない場合、これらをまとめて制御システム１０と称する）における処理の高速化が図られれば、装置全体としての処理の高速化を達成することができるので、制御システム１０における処理の高速化は大変重要となる。
【０００７】
制御システム１０の処理に要する時間は、図１の例では、前段制御部１が外部の事象に応じたデータを後段制御部２に出力してから、後段制御部２が、そのデータに応じた処理（演算）を開始するまでの時間Ｔd1と、後段制御部２の処理に係る時間Ｔd2とを含む時間となる。
【０００８】
すなわち、時間Ｔd1または時間Ｔd2を短縮することができれば、制御システム１０における処理の高速化を図ることができる。
【０００９】
ここで処理時間Ｔd2について検討するが、はじめに、図３を参照して後段制御部２の構成について説明する。
【００１０】
後段制御部２は、演算部２１、ROM（Read Only Memory）（Flash-ROM等）２２、RAM（Random Access Memory）２３、通信制御部２４、および通信制御部２５から構成されている。これらは内部バス２６で接続されている。
【００１１】
演算部２１は、CPU（Central Processing Unit）等から構成され、ROM２２に記憶されているプログラムからRAM２３にロードされたプログラムに従って各種の処理を実行する。RAM２３にはまた、演算部２１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００１２】
なおROM２２およびRAM２３は、後段制御部２（マイコン）のスペックに依存するため、その有無は問わない。
【００１３】
通信制御部２４は、前段制御部１と通信して、前段制御部１から供給されるデータを受信し、演算部２１に供給する。
【００１４】
通信制御部２５は、被制御デバイス３と通信し、演算部２１から供給された演算結果を、被制御デバイス３に供給する。
【００１５】
通信制御部２４および通信制御部２５は、Ｉ２Ｃインタフェース、USB、シリアル通信ポートなどのマイコン内部のペリフェラル等で構成されている。
【００１６】
なお図３には、１つの前段制御部１と１つの被制御デバイス３とに接続している場合の後段制御部２の構成例として、前段制御部１および被制御デバイス３と通信する通信制御部がそれぞれ１個ずつ示されているが、それぞれ複数の通信制御部を設けるようにすることもできる。
【００１７】
また所定の記憶装置と接続する通信制御部を設け、演算部２１は、その記憶装置に記憶されるデータを利用して演算処理を行うことができるようにすることもできる。
【００１８】
次に、図４を参照して、後段制御部２の機能的構成（演算部２１により実行されるソフトウエアの構成）の例を説明する。なおこのソフトウエアは、演算部２１、RAM２３、通信制御部２４、および通信制御部２５等の後段制御部２内の資源が利用されて実行される。
【００１９】
演算部２１により実行されるソフトウエアは、デバイスドライバ層、イベントハンドラ層、およびアプリケーション層からなる階層構造を有して構成されている。
【００２０】
デバイスドライバ層は、プリフェラルドライバ５１および外部デバイスドライバ５２、並びに受信FIFO７１Ａおよび送信FIFO７１Ｂから構成されている。
【００２１】
プリフェラルドライバ（例えば、IIC（Inter-Integrated Circuit））５１は、通信制御部２４および通信制御部２５を制御する。
【００２２】
具体的には、プリフェラルドライバ５１は、図５のフローチャートに示す受信処理を行う。なおプリフェラルドライバ５１における受信処理は、通常、制御システム１０の初期化と同時に実行される。
【００２３】
ペリフェラルドライバ５１は、通信制御部２４を介して、前段制御部１から供給されたデータを受信(入力)するまで待機し（ステップＳ１１）、前段制御部１から供給されてきたデータを受信(入力)すると、受信したデータを外部デバイスドライバ５２に送信して、そのデータを受信FIFO７１Ａに格納させるために外部デバイスドライバ５２に対し受信処理をコールする（ステップＳ１２）。その後、ペリフェラルドライバ５１は、前段制御部１からのデータ待ちの状態となる（ステップＳ１１）。
【００２４】
ペリフェラルドライバ５１はまた、外部デバイスドライバ５２から、送信処理開始のコールを受けると（後述する図８のステップＳ４２）、図６のフローチャートに示す送信処理を開始する。
【００２５】
すなわちペリフェラルドライバ５１は、送信FIFO７１Ｂに格納されたデータ（例えば、前段制御部１から供給されたデータに応じた演算の結果得られたデータ）を、所定量分読み出して、通信制御部２５を介して被制御デバイス３に送信する（ステップＳ２１）。そしてペリフェラルドライバ５１は、送信FIFO７１Ｂにデータがまだ残っているか（送信FIFO７１Ｂが空になったか）否かを判定し（ステップＳ２２）、データがまだ残っていると判定した場合、データの送信を継続し（ステップＳ２１）、データが残っていないと判定した場合、送信終了を外部デバイスドライバ５２に通知する（ステップＳ２３）。
【００２６】
その後プリフェラルドライバ５１は、送信処理を終了させる。
【００２７】
外部デバイスドライバ５２は、ペリフェラルドライバ層を抽象化し、被制御デバイス３の制御に必要なデータ算出を行う。
【００２８】
具体的には、外部デバイスドライバ５２は、ペリフェラルドライバ５１からの受信処理のコール（図５のステップＳ１２）を受けたとき、図７に示すフローチャートに示す受信処理を開始する。
【００２９】
すなわち外部デバイスドライバ５２は、ペリフェラルドライバ５１から供給されたデータ（図５のステップＳ１２）を、イベントハンドラ層において解読可能なデータに変換し、受信FIFO７１Ａに記憶させ（ステップＳ３１）、受信イベントをイベントハンドラ５３に通知する（ステップＳ３２）。
【００３０】
その後外部デバイスドライバ５２は、受信処理を終了させる。
【００３１】
外部デバイスドライバ５２はまた、コマンド実行部５５から、送信処理開始のコール（後述する図１１のステップＳ７４）を受けると、図８のフローチャートに示す送信処理を開始する。
【００３２】
すなわち外部デバイスドライバ５２は、リターンFIFO７２Ｂからそこに格納されているデータ（前段制御部１から供給されたデータに基づく演算結果）を取得して、通信制御部２５が解読可能なデータに変換し、送信FIFO７１Ｂに記憶させ（ステップＳ４１）、ペリフェラルドライバ５１に対して送信処理をコールする（ステップＳ４２）。
【００３３】
外部デバイスドライバ５２は、ペリフェラルドライバ５１から送信終了の通知（図６のステップＳ２３）を受けるまで待機し（ステップＳ４３）、その通知があった場合、その旨をコマンド実行部５５に通知する（ステップＳ４４）。
【００３４】
その後外部デバイスドライバ５２は、送信処理を終了させる。
【００３５】
受信FIFO７１Ａと送信FIFO７１Ｂは、上述したようにペリフェラルドライバ層で利用される情報をバッファリングする。
【００３６】
イベントハンドラ層は、イベントハンドラ５３、並びにコマンドFIFO７２ＡおよびリターンFIFO７２Ｂから構成されている。
【００３７】
イベントハンドラ５３は、図９のフローチャートに示すように、前段制御部１からの指令に応じて実行すべき事柄の通知を行う。なおイベントハンドラ５３は、通常、制御システム１０の初期化と同時に起動される。
【００３８】
イベントハンドラ５３は、イベントの通知があるまで待機し（ステップＳ５１）、イベントの通知を受けると、イベントの種類を判別するとともに（ステップＳ５２）、受信FIFO７１Ａに記憶されたデータを、コマンドFIFO７２Ａに記憶させて、システム状態監視プログラム５４にイベント(入力イベント)を通知する（発生する）（ステップＳ５３）。
【００３９】
コマンドFIFO７２Ａは、イベントハンドラ５３からのコマンドをバッファリングし、リターンFIFO７２Ｂは、システム状態監視プログラム５４およびコマンド実行部５５からの演算結果をバッファリングする。
【００４０】
アプリケーション層は、システム状態監視プログラム５４およびコマンド実行部５５、並びに記憶部７３から構成されている。
【００４１】
システム状態監視プログラム５４は、図１０に示すように、記憶部７３に記憶されている後段制御部２の内部状態とコマンドFIFO７２Ａに記憶されているコマンドに対応する状態に基づいて、処理の実行を制御する。システム状態監視プログラム５４は、通常、制御システム１０の初期化と同時に起動される。
【００４２】
システム監視プログラム５４は、所定の時間毎にアラームを発生する内蔵する定期アラームの発生またはイベントハンドラ５３からのイベントの通知（図９のステップＳ５３）があるまで待機し（ステップＳ６１）、定期アラームの発生またはイベントの通知があった場合、イベントの種類を判別し（ステップＳ６２）、イベントの種類に応じて、コマンドFIFO７２Ａを参照するとともに、記憶部７３の内部状態を参照する（ステップＳ６３、ステップＳ６４）。
【００４３】
システム監視プログラム５４は、コマンドFIFO７２Ａに記憶されているコマンドに対応する状態と記憶部７３に記憶されている内部状態の比較を行い、両者に相違があるか否かを判定し（ステップＳ６５）、両者に相違があると判定した場合、イベントの通知とともに、コマンドFIFO７２Ａに記憶されているコマンドの送信をコマンド実行部５５に対して行う（ステップＳ６６）。
【００４４】
コマンド実行部５５は、図１１のフローチャートに示すコマンド実行処理を実行する。コマンド実行部５５は、通常、制御システム１０の初期化と同時に起動される。
【００４５】
コマンド実行部５５は、システム状態監視プログラム５４からイベントの通知（図１０のステップＳ６６）があるまで待機し（ステップＳ７１）、その通知があった場合、該当するコマンドを実行し、新たな内部状態を演算し（ステップＳ７２）、演算結果をシステム状態監視プログラム５４に供給するとともに、リターンFIFO７２Ｂに記憶させる（ステップＳ７３）。システム状態監視プログラム５４は、コマンド実行部５５から供給された演算結果を、内部状態として記憶部７３に記憶させる。
【００４６】
コマンド実行部５５は、被制御デバイス３に結果を反映させるために、外部デバイスドライバ５２に対して送信処理をコールする（ステップＳ７４）。
【００４７】
コマンド実行部５５は、外部デバイスドライバ５２を介して、ペリフェラルドライバ５１での送信処理が終了した旨の通知（図８のステップＳ４４）を受信するまで待機し（ステップＳ７５）、その旨を受信したとき、イベント通知の待機状態に戻る（ステップＳ７１）。
【００４８】
次に、図１２のフローチャートを参照して、前段制御部１から供給されたコマンドを受信した場合の後段制御部２の動作を説明する。なおここでは、コマンドを受信した場合の後段制御部２の各プログラム間の関係を主に説明し、各プログラムの処理の詳細については、図５乃至図１１を参照して上述したので、適宜省略する。
【００４９】
ステップＳ１０１において、ペリフェラルドライバ５１は、通信制御部２４を介して、前段制御部１から送信されてきたコマンドを受信すると（図５のステップＳ１１）、ステップＳ１０２において、外部デバイスドライバ５２に対して受信処理をコールする（図５のステップＳ１２）（割り込み通知を行う）。
【００５０】
受信処理のコールを受けた外部デバイスドライバ５２は、ステップＳ１０３において、ペリフェラルドライバ５１から供給された受信コマンドを、イベントハンドラ層において解読可能なデータに変換し、受信FIFO７１Ａに記憶させ（図７のステップＳ３１）、ステップＳ１０４において、受信イベントを、イベントハンドラ５３に通知する（図７のステップＳ３２）。
【００５１】
受信イベントの通知を受けたイベントハンドラ５３は、ステップＳ１０５において、イベントが受信イベントであるときの処理として（図９のステップＳ５２）、受信FIFO７１Ａに記憶されたコマンドをコマンドFIFO７２Ａに記憶させるとともに、ステップＳ１０６において、受信イベントを、システム状態監視プログラム５４に通知する（図９のステップＳ５３）。
【００５２】
受信イベントが通知されたシステム状態監視プログラム５４は、イベントが受信イベントであると判別した場合（図１０のステップＳ６１，ステップＳ６２）、ステップＳ１０７において、コマンドFIFO７２Ａを参照するとともに（図１０のステップＳ６３）、ステップＳ１０８において、記憶部７３の内部状態を参照する（図１０のステップＳ６４）。
【００５３】
そして両者に相違があった場合（図１０のステップＳ６５）、ステップＳ１０９において、コマンド実行部５５に対して、イベントを通知する（図１０のステップＳ６６）。
【００５４】
システム状態監視プログラム５４からイベントの通知を受けたコマンド実行部５５は、ステップＳ１１０において、コマンドを実行して内部状態を演算し（図１１のステップＳ７２）、ステップＳ１１１において、演算結果を、リターンFIFO７２Ｂに記憶させ（図１１のステップＳ７３）、ステップＳ１１２において、送信処理を、外部デバイスドライバ５２に対してコールする（図１１のステップＳ７４）。
【００５５】
コマンド実行部５５から送信処理のコールを受けた外部デバイスドライバ５２は、ステップＳ１１３にいて、リターンFIFO７２Ｂから、そこに格納されたデータを取得して、ステップＳ１１４において、通信制御部２５が解読可能なデータに変換して、送信FIFO７１Ｂに記憶させる（図８のステップＳ４１）。ステップＳ１１５において、外部デバイスドライバ５２は、ペリフェラルドライバ５１に対して、送信処理をコールする（図８のステップＳ４２）。
【００５６】
送信処理のコールを受けたペリフェラルドライバ５１は、ステップＳ１１６において、送信FIFO７１Ｂに格納されるデータの全部を、通信制御部２５を介して、被制御デバイス３に送信する（図６のステップＳ２１、ステップＳ２２）。
【００５７】
送信FIFO７１Ｂに格納されたデータの送信が完了すると、ステップＳ１１７において、ペリフェラルドライバ５１は、外部デバイスドライバ５２に送信終了を通知し（図６のステップＳ２３）、外部デバイスドライバ５２は、その旨をコマンド実行部５５に通知する（図８のステップＳ４４）。
【００５８】
以上のようにして、後段制御部２は処理を実行する。
【００５９】
すなわちステップＳ１０１においてペリフェラルドライバ５１が前段制御部１からのコマンドを受信してから、ステップＳ１１７においてペリフェラルドライバ５１が送信終了を通知して送信処理が終了するまでの時間が、図１における処理時間Ｔd2に相当する。
【００６０】
なお図４に示すように、デバイスドライバ層とアプリケーション層の間に、イベントハンドラ層が設けられ、イベントハンドラ層がデバイスドライバ層とアプリケーション層を仲介する方法については、特許文献１にも紹介されている。
【００６１】
【特許文献１】特開2001-134382号公報
【発明の開示】
【発明が解決しようとする課題】
【００６２】
しかしながら、図１２に示した処理手順においては、外部から供給されたデータの伝達およびイベントの通知が、すべての場合においてイベントハンドラ層を介してなされるので（例えば、図１２のステップＳ１０５およびステップＳ１０６）、制御システム１０の処理時間Ｔd2は、イベントハンドラ層の介在を考慮した一定の時間が必要となり、制御システム１０の処理の高速化を困難にしていた。
【００６３】
本発明は、このような状況に鑑みてなされたものであり、後段制御部２の処理時間を短縮し、制御システムの処理の高速化を図るものである。
【課題を解決するための手段】
【００６４】
本発明の一側面の制御装置は、制御データを入力する入力手段と、前記入力手段により入力された前記制御データの入力イベントを発生する発生手段と、前記入力イベントが発生されたとき、前記制御データに基づいて被制御デバイスを制御する制御手段とを備え、前記入力手段は、入力した前記制御データが所定のコマンドである場合、前記発生手段に代わり、前記所定のコマンドの入力イベントを発生し、前記制御手段は、前記入力手段により前記入力イベントが発生されたとき、前記入力手段により入力された前記所定のコマンドに基づいて前記被制御デバイスを制御することを特徴とする。
【００６５】
本発明の一側面の制御方法は、制御データを入力する入力ステップと、前記入力ステップの処理で入力された前記制御データの入力イベントを発生する発生ステップと、前記発生ステップの処理で前記入力イベントが発生されたとき、前記制御データに基づいて被制御デバイスを制御する制御ステップとを含み、前記入力ステップは、入力した前記制御データが所定のコマンドである場合、前記発生ステップに代わり、前記所定のコマンドの入力イベントを発生し、前記制御ステップは、前記入力ステップの処理で前記入力イベントが発生されたとき、前記入力ステップの処理で入力された前記所定のコマンドに基づいて前記被制御デバイスを制御することを特徴とする。
【００６６】
本発明の一側面のプログラムは、制御データを入力する入力ステップと、前記入力ステップの処理で入力された前記制御データの入力イベントを発生する発生ステップと、前記発生ステップの処理で前記入力イベントが発生されたとき、前記制御データに基づいて被制御デバイスを制御する制御ステップとを含み、前記入力ステップは、入力した前記制御データが所定のコマンドである場合、前記発生ステップに代わり、前記所定のコマンドの入力イベントを発生し、前記制御ステップは、前記入力ステップの処理で前記入力イベントが発生されたとき、前記入力ステップの処理で入力された前記所定のコマンドに基づいて前記被制御デバイスを制御することを特徴とする。
【００６７】
本発明の一側面においては、入力手段／ステップで、制御データが入力され、発生手段／ステップで、前記入力手段／ステップで入力された前記制御データの入力イベントが発生され、制御手段／ステップで、前記発生手段／ステップで前記入力イベントが発生されたとき、前記制御データに基づいて被制御デバイスが制御される場合において、前記入力手段／ステップで、入力された前記制御データが所定のコマンドである場合、前記発生手段／ステップに代わり、前記所定のコマンドの入力イベントが発生され、前記制御手段／ステップで、前記入力手段／ステップで前記入力イベントが発生されたとき、前記入力手段／ステップで入力された前記所定のコマンドに基づいて前記被制御デバイスが制御される。
【発明の効果】
【００６８】
本発明によれば、被制御デバイスの制御を迅速に行うことができる。
【発明を実施するための最良の形態】
【００６９】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００７０】
本発明の一側面の制御装置は、制御データを入力する入力手段（例えば、図１５のペリフェラルドライバ５１および外部デバイスドライバ１２１）と、前記入力手段により入力された前記制御データの入力イベントを発生する発生手段（例えば、図１５のイベントハンドラ５３）と、前記入力イベントが発生されたとき、前記制御データに基づいて被制御デバイスを制御する制御手段（例えば、システム状態監視プログラム５４およびコマンド実行部１２２）とを備え、前記入力手段は、入力した前記制御データが所定のコマンドである場合、前記発生手段に代わり、前記所定のコマンドの入力イベントを発生し、前記制御手段は、前記入力手段により前記入力イベントが発生されたとき、前記入力手段により入力された前記所定のコマンドに基づいて前記被制御デバイスを制御することを特徴とする。
【００７１】
本発明の一側面の制御方法またはプログラムは、制御データを入力する入力ステップ（例えば、図５および図１６のフローチャートに示す処理）と、前記入力ステップの処理で入力された前記制御データの入力イベントを発生する発生ステップ（例えば、図９のフローチャートに示す処理）と、前記発生ステップの処理で前記入力イベントが発生されたとき、前記制御データに基づいて被制御デバイスを制御する制御ステップ（例えば、図１７に示すフローチャートに示す処理）とを含み、前記入力ステップは、入力した前記制御データが所定のコマンドである場合、前記発生ステップに代わり、前記所定のコマンドの入力イベントを発生し、前記制御ステップは、前記入力ステップの処理で前記入力イベントが発生されたとき、前記入力ステップの処理で入力された前記所定のコマンドに基づいて前記被制御デバイスを制御する（例えば、図１７のフローチャートに示す処理）ことを特徴とする。
【００７２】
図１３は、本発明を適用した制御システム１００の例を示している。この制御システム１００には、図１の制御システム１０の後段制御部２に代えて後段制御部１０１が設けられている。
【００７３】
後段制御部１０１は、前段制御部１から供給されたコマンドが所定のコマンド（以下、通常コマンドと称する）である場合、図１に示す後段制御部２の場合と同様に（図１２に示すように）、デバイスドライバ層、イベントハンドラ層、およびアプリケーション層を介してデータの転送およびイベント通知を行って、そのコマンドに応じた処理を実行する。すなわちこの場合、図１３Ａに示すように、時間Ｔd2（図１）を要して処理が実行される。
【００７４】
後段制御部１０１はまた、前段制御部１から供給されたコマンドが所定のコマンド（以下、スルーコマンドと称する）である場合、後述するようにデータの転送およびイベントの通知を、イベントハンドラ層を介さずに行って、そのコマンドに応じた処理を実行する。すなわちこの場合、図１３Ｂに示すように、通常コマンドの場合に比べ短い時間Ｔｄvで処理が実行される。
【００７５】
図１４は、後段制御部１０１の構成例を示している。この後段制御部１０１には、図３の後段制御部２の演算部２１に代えて演算部１１１が設けられている。他の部分は、図３における場合と同様であるので、図３における場合と同じ符号を付して、その説明は適宜省略する。
【００７６】
演算部１１１は、図１５に示すプログラムを実行する。図１５には、図４に示す外部デバイスドライバ５２に代えて外部デバイスドライバ１２１が設けられ、コマンド実行部５５に代えて、コマンド実行部１２２が設けられている。またアプリケーション層に、スルーコマンドFIFO１２３がさらに設けられている。他の部分は、図４における場合と同様であるので、図４における場合と同じ符号を付して、その説明は適宜省略する。
【００７７】
外部デバイスドライバ１２１は、ペリフェラルドライバ層を抽象化し、被制御デバイス３の制御に必要なデータ算出を行う。
【００７８】
具体的には、外部デバイスドライバ１２１は、ペリフェラルドライバ５１からの受信処理のコール（図５のステップＳ１２）を受けたとき、図１６に示すフローチャートに示す受信処理を開始する。
【００７９】
ステップＳ１５１において、外部デバイスドライバ１２１は、ペリフェラルドライバ５１から供給されたコマンド（図５のステップＳ１２）が、通常コマンドか、スルーコマンドかを判定し、通常コマンドであると判定した場合、図７における場合と同様に、ステップＳ１５２において、受信した通常コマンドを、イベントハンドラ層において解読可能なデータに変換し、受信FIFO７１Ａに記憶させ、ステップＳ１５３において、受信イベントをイベントハンドラ５３に通知する。
【００８０】
一方、ステップＳ１５１で、スルーコマンドであると判定された場合、ステップＳ１５４に進み、外部デバイスドライバ１２１は、受信したスルーコマンドを、アプリケーション層において解読可能なデータに変換し、アプリケーション層のスルーコマンドFIFO１２３に記憶させ、ステップＳ１５５において、受信イベントをコマンド実行部１２２に直接通知する。
【００８１】
ステップＳ１５３でイベントハンドラ５３にまたはステップＳ１５５でコマンド実行部１２２にイベントを通知すると、外部デバイスドライバ１２１は、送信処理を終了させる。
【００８２】
外部デバイスドライバ１２１における送信処理は、図４に示す外部デバイスドライバ５２における場合と同様であるので（図８）、その説明は省略する。
【００８３】
図１５に戻りコマンド実行部１２２は、図１７に示すコマンド実行処理を実行する。コマンド実行部１２２は、通常、制御システム１００の初期化と同時に起動される。
【００８４】
ステップＳ１７１において、システム状態監視プログラム５４からのイベント通知（図１０のステップＳ６６）または外部デバイスドライバ１２１からのイベント通知（図１６のステップＳ１５５）があるまで待機し、イベントの通知があった場合、ステップＳ１７２において、スルーコマンドFIFO１２３にコマンドが記憶されているか否かを判定し、記憶されていないと判定した場合、ステップＳ１７３乃至ステップＳ１７６において、図１１のステップＳ７２乃至ステップＳ７５における場合と同様の処理を行う。
【００８５】
すなわちコマンド実行部１２２は、該当する通常コマンドを実行し、新たな内部状態を演算し（ステップＳ１７３）、演算結果をシステム状態監視プログラム５４に供給するとともに、リターンFIFO７２Ｂに記憶させる（ステップＳ１７４）。
【００８６】
そしてコマンド実行部１２２は、被制御デバイス３に結果を反映させるために、外部デバイスドライバ１２１に対して送信処理をコールする（ステップＳ１７５）。コマンド実行部１２２は、外部デバイスドライバ１２１を介して、ペリフェラルドライバ５１での送信処理が終了した旨の通知（図８のステップＳ４４）を受信するまで待機し（ステップＳ１７６）、その旨を受信したとき、待機状態に戻る（ステップＳ１７１）。
【００８７】
一方、ステップＳ１７２で、スルーコマンドFIFO１２３にスルーコマンドが存在すると判定された場合、ステップＳ１７７に進み、コマンド実行部１２２は、スルーコマンドFIFO１２３を参照するとともに、ステップＳ１７８において、記憶部７３に記憶されている内部状態も参照する。
【００８８】
ステップＳ１７９において、コマンド実行部１２２は、スルーコマンドFIFO１２３に格納されているコマンドに対応する状態と、記憶部７３に記憶されている内部状態とに相違があるか否かを判定し、相違がないと判定した場合は、ステップＳ１７３に進む。
【００８９】
受信されたイベントがスルーコマンドの受信イベントであれば、新たに受信されたスルーコマンドがスルーコマンドFIFO１２３に記憶され（図１６のステップＳ１５４）、そのスルーコマンドに対応する状態と記憶部７３に記憶されている内部状態とに相違が生ずるので、ここで相違がないと判定された場合、受信したイベントは通常コマンドの受信イベントであり、ステップＳ１７３乃至ステップＳ１７６で通常コマンドに対するコマンド実行処理が行われる。
【００９０】
ステップＳ１７９で、スルーコマンドFIFO１２３に格納されているコマンドに対応する状態と記憶部７３に記憶されている内部状態とに相違があると判定された場合は、ステップＳ１８０に進み、コマンド実行部１２２は、該当するコマンド（スルーコマンド）を実行し新たな内部状態を演算し、ステップＳ１８１において、演算結果をシステム状態監視プログラム５４に供給するとともに、リターンFIFO７２Ｂに記憶させる。
【００９１】
次にステップＳ１８２において、コマンド実行部１２２は、被制御デバイス３に結果を反映させるために、外部デバイスドライバ１２１に対して送信処理をコールする。
【００９２】
ステップＳ１８３において、コマンド実行部１２２は、外部デバイスドライバ１２１を介して、ペリフェラルドライバ５１での送信処理が終了した旨の通知（図８のステップＳ４４）を受信するまで待機し、その旨を受信したとき、待機状態に戻る（ステップＳ１７１）。
【００９３】
次に、図１８のフローチャートを参照して、前段制御部１から供給されたコマンドがスルーコマンドであった場合の後段制御部１０１の動作を説明する。なおここでは、スルーコマンドを受信した場合の後段制御部１０１の各プログラム間の関係を主に説明し、各プログラムの処理の詳細については、図５、図６、図８乃至図１０、図１６、および図１７を参照して上述したので、適宜省略する。
【００９４】
ステップＳ２０１において、ペリフェラルドライバ５１は、通信制御部２４を介して、前段制御部１から送信されてきたスルーコマンドを受信すると（図５のステップＳ１１）、ステップＳ２０２において、外部デバイスドライバ１２１に対して受信処理をコールする（図５のステップＳ１２）（割り込み通知を行う）。
【００９５】
受信処理のコールを受けた外部デバイスドライバ１２１は（図１６のステップＳ１５１）、ステップＳ２０３において、ペリフェラルドライバ５１から供給されたスルーコマンドを、アプリケーション層において解読可能な形式に変換し、スルーコマンドFIFO１２３に記憶し（図１６のステップＳ１５４）、ステップＳ２０４において、受信イベントを、コマンド実行部１２２に直接通知する（図１６のステップＳ１５５）。
【００９６】
受信イベントの通知を受けたコマンド実行部１２２は、いまの場合、受信イベントは、スルーコマンドの受信イベントであるので（図１７のステップＳ１７１，Ｓ１７２）、ステップＳ２０５において、スルーコマンドFIFO１２３を参照するとともに（図１７のステップＳ１７７）、ステップＳ２０６において、記憶部７３に記憶されている内部状態を参照する（図１７のステップＳ１７８）。
【００９７】
スルーコマンドFIFO１２３に記憶されたコマンドに対応する状態と記憶部７３に記憶されている内部状態とに相違があるので（図１７のステップＳ１７９）、ステップＳ２０７において、スルーコマンドを実行し、新たな内部状態を演算し（図１７のステップＳ１８０）、ステップＳ２０８において、演算結果をシステム状態監視プログラム５４に供給するとともに、リターンFIFO７２Ｂに記憶させる。
【００９８】
ステップＳ２０９において、コマンド実行部１２２は、送信処理を、外部デバイスドライバ１２１に対してコールする（図１７のステップＳ１８２）。
【００９９】
ステップＳ２１０乃至ステップＳ２１４においては、図１２のステップＳ１１３乃至ステップＳ１１７における場合と同様の処理が行われる。
【０１００】
すなわちコマンド実行部１２２から送信処理のコールを受けた外部デバイスドライバ１２１は、ステップＳ２１０にいて、リターンFIFO７２Ｂから、そこに格納されたデータを取得して、ステップＳ２１１において、通信制御部２５が解読可能なデータに変換して、送信FIFO７１Ｂに記憶する（図８のステップＳ４１）。ステップＳ２１２において、外部デバイス１２１は、ペリフェラルドライバ５１に対して、送信処理をコールする（図８のステップＳ４２）。
【０１０１】
送信処理のコールを受けたペリフェラルドライバ５１は、ステップＳ２１３において、送信FIFO７１Ｂに格納されるデータの全部を、通信制御部２５を介して、被制御デバイス３に送信する（図６のステップＳ２１，Ｓ２２）。
【０１０２】
送信FIFO７１Ｂに格納されたデータの送信が完了すると、ステップＳ２１４において、ペリフェラルドライバ５１は、外部デバイスドライバ１２１に送信終了を通知し（図６のステップＳ２３）、外部デバイスドライバ１２１は、その旨をコマンド実行部１２２に通知する（図８のステップＳ４４）。
【０１０３】
以上のようにして、後段制御部１０１は処理を実行する。すなわちステップＳ２０１でペリフェラルドライバ５１が前段制御部１からのデータを受信してから、ステップＳ２１４でペリフェラルドライバ５１が送信終了を通知して通信処理が終了するまでの時間が、図１３Ｂにおける処理時間Ｔdvに相当する。
【０１０４】
後段制御部１０１では、通常コマンドが前段制御部１から供給された場合、図１２に示した処理手順に従って、データの転送およびイベントの通知がイベントハンドラ層を介してなされ（イベントハンドラ５３が受信イベントを発生し）、結果として処理時間は、時間Ｔd2となるが、スルーコマンドが受信された場合、図１８に示した処理手順に従って、コマンドの転送およびイベントの通知が、イベントハンドラ層を介さずになされ（イベントハンドラ５３とシステム状態監視プログラム５４が実行されずに）、デバイスドライバ層からアプリケーション層に直接なされ（外部デバイスドライバ１２１が受信イベントを発生し）、結果として処理時間が、時間Ｔdvとなるので、通常コマンドの場合に比べて迅速に制御システム１００における処理を行うことができる。
【０１０５】
例えばテレビジョン受像機で、チャンネル切り換え時に液晶パネルの輝度が一瞬暗くなるように制御する場合において、図２Ａに示すように、前段制御部１が画像処理用マイコンで、後段制御部２が液晶パネル制御用マイコンで、そして被制御デバイス３が液晶パネルである場合、後段制御部２としての液晶パネル制御用マイコンが、前段制御部１としての画像処理用マイコンからの液晶パネルの明るさを暗くする旨の指令を、スルーコマンドとして認識すれば、被制御デバイス３としての液晶パネルの制御（画像の暗くすること）を迅速に行うことができる。
【０１０６】
以上のように本発明によれば、コマンドに応じて、被制御デバイス３の制御を迅速に行うことができる。
【０１０７】
なおスルーコマンド用にスルーコマンドFIFO１２３を別途設けたので、FIFOの制御が簡単になる。またFIFOにはリスト構造などの処理が不要となり、ＲＡＭの使用量を節約することができる。
【０１０８】
またFIFOの制御が簡単になるため、通信受信時の割り込み処理時間を短縮することができ、割り込みによりオペレーションシステムの動作制限を短時間にすることができる。
【０１０９】
なお後段制御部１０１の演算部１１１で実行されるプログラムは、図示せぬドライバを介して接続される磁気ディスク（フロッピディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory) DVD Digital Versatile Disk）を含む）、光磁気ディスク（MD（Mini-Disk）を含む）、或いは半導体メモリなどのリムーバブルメディア（記録媒体）から読み出されたコンピュータプログラムが、例えばハードディスクにインストールされるようにすることもできる。
【０１１０】
本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１１１】
【図１】制御システムの従来の処理時間を説明する図である。
【図２】制御システムの例を示す図である。
【図３】図１の後段制御部２の構成例を示すブロック図である。
【図４】図１の後段制御部２の機能的構成例を示すブロック図である。
【図５】ペリフェラルドライバ５１の受信処理を説明するフローチャートである。
【図６】ペリフェラルドライバ５１の送信処理を説明するフローチャートである。
【図７】外部デバイスドライバ５２の受信処理を説明するフローチャートである。
【図８】外部デバイスドライバ５２の送信処理を説明するフローチャートである。
【図９】イベントハンドラ５３の処理を説明するフローチャートである。
【図１０】システム状態監視プログラム５４の処理を説明するフローチャートである。
【図１１】コマンド実行部５５の処理を説明するフローチャートである。
【図１２】前段制御部１からデータを受信した場合の後段制御部２の動作を説明するフローチャートである。
【図１３】本発明を適用した制御システムの処理時間を説明する図である。
【図１４】図１３の後段制御部１０１の構成例を示すブロック図である。
【図１５】後段制御部１０１の機能的構成例を示すブロック図である。
【図１６】外部デバイスドライバ１２１の受信処理を説明するフローチャートである。
【図１７】コマンド実行部１２２の処理を説明するフローチャートである。
【図１８】前段制御部１からスルーコマンドを受信した場合の後段制御部１０１の動作を説明するフローチャートである。
【符号の説明】
【０１１２】
１  前段制御部，  ３  被制御デバイス，  ２４  通信制御部，  ２５  通信制御部，
５１  ペリフェラルドライバ、５３  イベントハンドラ，  ５４  システム状態監視プログラム，  ７１Ａ  受信FIFO，    ７１Ｂ  送信FIFO，  ７３  記憶部，  １０１  後段制御部，  １１１  演算部，  １２１  外部デバイスドライバ，  １２２  コマンド実行部，  １２３  スルーコマンドFIFO
【図１】
2007058513.tif 000003
【図２】
2007058513.tif 000004
【図３】
2007058513.tif 000005
【図４】
2007058513.tif 000006
【図５】
2007058513.tif 000007
【図６】
2007058513.tif 000008
【図７】
2007058513.tif 000009
【図８】
2007058513.tif 000010
【図９】
2007058513.tif 000011
【図１０】
2007058513.tif 000012
【図１１】
2007058513.tif 000013
【図１２】
2007058513.tif 000014
【図１３】
2007058513.tif 000015
【図１４】
2007058513.tif 000016
【図１５】
2007058513.tif 000017
【図１６】
2007058513.tif 000018
【図１７】
2007058513.tif 000019
【図１８】
2007058513.tif 000020