(57)【要約】【課題】シナリオを解釈実行するシミュレータにおいて、シナリオの動作から逸脱した場合でも他に実行継続可能なシナリオがあれば動作を継続することができる機器組み込み機器制御ソフトウエアの制御対象であるハードウエアを確実にシミュレートすることである。【解決手段】通信内容解釈部２１０がソフトウエア１１０からの通信内容を解釈し、該解釈された結果を候補シナリオ選択部２５０が実行シナリオ２３０に記憶されたシナリオと照合し、一致する１つもしくは複数のシナリオを選択し、該選択した１つもしくは複数の候補シナリオから実行シナリオ決定部２７０が実際に実行すべき一つもしくは複数の実行シナリオを決定し、該決定したシナリオ内容に基づきシナリオ実行部２８０が実行を行う構成を特徴とする。【選択図】　　　図１
2004021461.tif 000002
【特許請求の範囲】
【請求項１】
機器制御ソフトウエアの制御対象であるハードウエアをシミュレートするシミュレータ装置であって、
前記機器制御ソフトウエアとその制御対象をシミュレートするハードウエアシミュレータとの間でやりとりされる通信内容をシナリオとして複数記憶する動作シナリオ記憶手段と、
前記機器制御ソフトウエアからの通信内容を解釈する通信内容解釈手段と、
前記通信内容解釈手段により解釈された結果を前記記憶手段に記憶されたシナリオと照合し、一致する１つもしくは複数のシナリオを選択する候補シナリオ選択手段と、
前記候補シナリオ選択手段により選択した１つもしくは複数の候補シナリオから実際に実行すべき一つもしくは複数の実行シナリオを決定する実行シナリオ決定手段と、
前記実行シナリオ決定手段により決定した１つもしくは複数の実行シナリオを記憶する実行シナリオ記憶手段と、
前記実行シナリオ決定手段により決定したシナリオ内容に基づき実行を行うシナリオ実行手段と、
を備えることを特徴とするシミュレータ装置。
【請求項２】
前記通信内容解釈手段は、一連の通信の開始と終了を判断することを特徴とする請求項１に記載のシミュレータ装置。
【請求項３】
前記シナリオ選択手段は、通信結果とシナリオの照合の際に、あらかじめ決められた許容範囲に基づき、一致もしくは不一致の判断を行うことを特徴とする請求項１に記載のシミュレータ装置。
【請求項４】
前記実行シナリオ決定手段は、複数の選択候補があった場合に、あらかじめ決められた方式に従い選択を行うことを特徴とする請求項１に記載のシミュレータ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、機器制御ソフトウエアの制御対象であるハードウエアをシミュレートするシミュレータ装置に関するものである。
【０００２】
【従来の技術】
従来、所定の動作を実行させる機器に対する制御ソフトウエアの開発、もしくはテストに制御対象の実機（機器）ではなくシミュレータ装置を使用することで、試作機を作成するのに要するコストを削減し、また、自動実行により開発もしくはテストの効率向上を図ることは一般的に行なわれている。
【０００３】
また、一般には、シミュレータ装置を作成する場合、機器制御ソフトウエアからの制御からの指示をインテリジェントに解釈し応答するようなシミュレータ装置を作るより、あらかじめ決められた動作シナリオに基づき実行を行なうシミュレータを作る方が簡単であり、シナリオを複数用意し、用途に応じてシナリオを取り替えながら開発もしくはテスト（試験）を行なう方式が採用されることが多い。
【０００４】
例えば特開平７−８４８３２号公報に開示されているリアルタイムシステムシミュレーション装置には、オブジェクト間のメッセージの送受信の内容をメッセージパスとして格納し、更にはそれを解釈実行するリアルタイムシステムシミュレーション装置が提案されている。
【０００５】
また、特開平１１−３０５８２２号公報に開示されているプロセス制御用計算機のシミュレーションテスト方式およびシミュレーションテスト装置には、あらかじめ登録したテストシナリオを用いたシミュレーションテスト方式およびシミュレーションテスト装置が提案されている。
【０００６】
さらに、特開平５−３１４０７６号公報にオンラインシステム及びプログラムテスト方式には、テストファイルに指定された一連の入力に基づきテストを行い、その結果の出力値によりテストファイルに記された出力値との不一致があった場合に、処理の継続／中断の判断、更には、継続する場合にはテストファイル上の継続箇所を決定しテストを再開する方式等の従来技術が提案されている。
【０００７】
【発明が解決しようとする課題】
しかしながら、上述した従来提案の装置には以下の問題点がある
まず、特開平７−８４８３２号公報および特開平１１−３０５８２２号公報で提案されている装置では、開発もしくはテスト対象とする装置もしくはソフトウエアがあらかじめ想定しているシナリオ動作から逸脱した動作を行なった場合それ以降の動作確認を行なうことができない。
【０００８】
また、シミュレータでは、実行中に処理を中断し、動作を規定しているメッセージパスを変更する手段を提供しており、更にはメッセージパス変更後に動作を再開する手段を提供することで、あらかじめ想定した動作からの逸脱に対応可能としているが、一般に実時間制約の厳しい機器制御ソフトウエアにおいては、シミュレーション装置側の動作中断により開発もしくはテスト対象とする装置もしくはソフトウエアの動作に致命的な影響を与える（タイムアウトが発生するなど）場合が考えられ、実時間制約の厳しい組み込み型機器制御、ソフトウエアの開発支援としては不十分である。
【０００９】
さらに、特開平５−３１４０７６号公報では、入力と出力の対を管理することで、予想された出力と異なる出力が行なわれた場合に、その出力が発生する同一の入力を探しだし処理を継続する方式が提案されているが、一般に、機器制御ソフトウエアでは、該公報で対象としているオンラインシステムとは異なり、出力は結果は入力とその時点での状態、もしくはそれまでの動作の履歴により決定されることが多く、入力と出力の対のみからは、その後の処理を継続するシナリオ上の位置を決定することはできない等の幾多の問題点があった。
【００１０】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、機器制御ソフトウエアからの通信内容を解釈し、該解釈された結果を記憶手段に記憶されたシナリオと照合し、一致する１つもしくは複数のシナリオを選択し、該選択した１つもしくは複数の候補シナリオから実際に実行すべき一つもしくは複数の実行シナリオを決定し、該決定したシナリオ内容に基づき実行を行うことにより、シナリオを解釈実行するシミュレータにおいて、シナリオの動作から逸脱した場合でも他に実行継続可能なシナリオがあれば動作を継続することができる機器組み込み機器制御ソフトウエアの制御対象であるハードウエアを確実にシミュレートできるシミュレータ装置を提供することである。
【００１１】
【課題を解決するための手段】
本発明に係る第１の発明は、機器制御ソフトウエアの制御対象であるハードウエアをシミュレートするシミュレータ装置であって、前記機器制御ソフトウエアとその制御対象をシミュレートするハードウエアシミュレータとの間でやりとりされる通信内容をシナリオとして複数記憶する動作シナリオ記憶手段と、前記機器制御ソフトウエアからの通信内容を解釈する通信内容解釈手段と、前記通信内容解釈手段により解釈された結果を前記記憶手段に記憶されたシナリオと照合し、一致する１つもしくは複数のシナリオを選択する候補シナリオ選択手段と、前記候補シナリオ選択手段により選択した１つもしくは複数の候補シナリオから実際に実行すべき一つもしくは複数の実行シナリオを決定する実行シナリオ決定手段と、前記実行シナリオ決定手段により決定した１つもしくは複数の実行シナリオを記憶する実行シナリオ記憶手段と、前記実行シナリオ決定手段により決定したシナリオ内容に基づき実行を行うシナリオ実行手段とを備えることを特徴とする。
【００１２】
本発明に係る第２の発明は、前記通信内容解釈手段は、一連の通信の開始と終了を判断することを特徴とする。
【００１３】
本発明に係る第３の発明は、前記シナリオ選択手段は、通信結果とシナリオの照合の際に、あらかじめ決められた許容範囲に基づき、一致もしくは不一致の判断を行うことを特徴とする。
【００１４】
本発明に係る第４の発明は、前記実行シナリオ決定手段は、複数の選択候補があった場合に、あらかじめ決められた方式に従い選択を行うことを特徴とする。
【００１５】
【発明の実施の形態】
〔第１実施形態〕
以下、添付画像を参照して本発明の好適な実施形態を詳細に説明する。
〔全体構成の説明〕
図１は、本発明の第１実施形態を示すシミュレーション装置を適用するデータ処理システムの一例を示すブロック図である。
【００１６】
図１において、１は開発対象とする機器制御ソフトウエアが動作するコントローラボードである。
【００１７】
１０は前記コントローラボード１上で動作する機器制御ソフトウエア（以下コントローラソフト）であり、通常は、コントローラソフトコア部２０及びデバイス通信部５０とから構成され、デバイス通信部５０を介して制御対象デバイス２上におかれたデバイス側ソフトウエア１１０との間で制御コマンドの送受信を行なうことで、制御対象デバイスを制御する。
【００１８】
本実施形態では、コントローラソフト１０は上記に加え、制御対象デバイス２以外（本実施形態では開発ホスト３）と通信を行なう際に通信先を切替えるための通信先切り替え部３０、及びホスト通信部４０とから構成される。
【００１９】
なお、本実施形態ではデバイス通信部５０とホスト通信部４０を別々に表しているが、制御対象デバイス２と開発ホスト３が同一のインタフェースで接続可能な場合は、通信先切り替え部３０及びホスト通信部４０は不要であり、デバイス通信部５０を使用して開発ホスト３と通信を行なうことができる。
【００２０】
ホスト通信部４０より送出された制御コマンドは、開発ホスト３に備えられる通信内容解釈部２１０により解釈される。
【００２１】
動作シナリオ２２０にはあらかじめ開発者が用意した動作シナリオが保持記憶されており、通信内容解釈部２１０は、通信の開始を判断することで、動作シナリオ２２０の内容を実行シナリオ２３０へコピーする。
【００２２】
通信内容解釈部２１０により解釈された制御コマンドを使用して候補シナリオ選択部２５０はコマンドの送出に使用することができる１つもしくは複数のシナリオ候補を、実行シナリオ２３０より抽出し、候補となったシナリオのみを実行シナリオとして実行シナリオ２３０に格納する。
【００２３】
その際、必要に応じて、入力受付部を介しあらかじめ開発者が入力した候補シナリオ選択情報２４０を使用することができる。
【００２４】
実行シナリオ決定部２７０では、候補シナリオ選択部２５０が実行候補として選択した実行シナリオ２３０から、１つもしくは複数の実行シナリオを決定し、実行シナリオとして実行シナリオ２３０に格納する。その際、必要に応じて、入力受付部を介しあらかじめ開発者が入力した実行シナリオ決定方式２６０に従い実行シナリオの決定を行なうことができる。
【００２５】
実行シナリオ２３０として格納記憶された情報は、シナリオ実行部２８０により実行されるとともに、シナリオ表示部２９０によりＣＲＴなどの表示装置５に表示することができる。
【００２６】
開発者は、キーボードやマウスなどの入力装置４を使用して、入力編集部３００により動作シナリオ２２０及び候補シナリオ選択情報２４０及び実行シナリオ決定方式２６０を修正及び編集することが可能である。
【００２７】
図２は、本発明に係るシミュレーション装置における第１のデータ処理手順の一例を示すフローチャートである。なお、Ｓ１〜Ｓ６は各ステップを示す。
【００２８】
まず、ステップＳ１において、コントローラボード１からのコマンドの着信を待つ。そして、ここでコントローラボード１からのコマンドの着信があった場合には、ステップＳ２において、コントローラボード１から受信した通信コマンドを解釈し、通信の開始時であれば動作シナリオ２２０の内容を実行シナリオの候補として、実行シナリオ２３０にコピーする。なお、ステップＳ２の処理の詳細については後述する。
【００２９】
次に、ステップＳ３では、ステップＳ２で、解釈した通信内容に従い、実行シナリオ２３０に格納されている実行シナリオ群から、通信内容に合致する実行シナリオを選択し、候補となったシナリオのみを実行シナリオとして実行シナリオ２３０に格納する。なお、ステップＳ３の処理の詳細については後述する。
【００３０】
そして、ステップＳ４で、候補となる実行シナリオが見つかったかどうかを判断し、候補が見つからなかった場合は処理を終了させる。
【００３１】
一方、ステップＳ４で、１つもしくは複数の候補が見つかったと判断した場合は、ステップＳ５に進む。
【００３２】
そして、ステップＳ５では、ステップＳ３で実行シナリオの候補として抽出され、実行シナリオ２３０に格納された実行シナリオ群から実際に実行を行なうべきシナリオを決定し、決定した一つもしくは複数のシナリオのみを実行シナリオとして実行シナリオ２３０に格納する。なお、ステップＳ５の処理の詳細については後述する。
【００３３】
次に、ステップＳ６では、ステップＳ５で決定された実行シナリオを解釈実行する。そして、ステップＳ６で実行シナリオの実行が完了したら、再びステップＳ１に戻り、コントローラボード１からのコマンドの着信を待つ。なお、ステップＳ６の処理の詳細については後述する。
〔具体例１の説明〕
ここでは、以下を仮定して具体例の説明を行なう。
【００３４】
すなわち、コントローラボード１上で動作する機器制御ソフトウエアとして、プリンタデバイス制御ソフトウェア（コントローラソフト１０）の開発を例に説明を行なう。
【００３５】
しかしながら、本実施形態は、特定のハードウエア制御ソフトウエアの開発に依存するものではなく、例で示すプリンタ以外にも、スキャナ装置や複写機といった機器制御ソフトウエア一般の開発に適用可能である。
【００３６】
また、コントローラソフト１０は、制御対象デバイス２を構成するモータなどの各種ハードウエアを実際に制御しているプリンタデバイス側ソフトウエア１１０と通信を行なうことでプリンタ制御を行なうことを仮定して説明を行なう。
【００３７】
本実施形態では、コントローラソフト１０を開発対象のソフトウエアとして、プリンタデバイスを疑似するシミュレータ装置について説明を行なうが、プリンタデバイス側およびソフトウエア側に同様の機構を設けることで、本実施形態とは逆にコントローラボード１側を疑似するシミュレータ装置を構成することも、当然ながら、同様に可能である。
【００３８】
また、本実施形態では、機器制御ソフトウエアと制御対象デバイスの通信を例に挙げているが、複数のコマンドのやりとりから構成される一連のシーケンスにより通信が行なわれている場合のどちらか一方を開発対象とし、残りの片方を本提案のシミュレータとし本発明を適用することが可能である。
【００３９】
図１に示した構成を使用してコントローラソフトコア部２０の開発を行なう場合の作業内容について図３〜図６を参照して説明する。
【００４０】
図３〜図６は、図１に示した動作シナリオ２２０の一例を示す図であり、図３は２ページからなるデータを印刷する場合の動作シナリオの例であり、図４は１ページからなるデータを印刷する場合の動作シナリオの例であり、図５は２ページからなるデータを印刷する場合で、１ページ目「給紙指示」がエラーとなる場合のシナリオであり、図６は２ページからなるデータを印刷する場合で、用紙サイズがＡ３である場合のシナリオである。
【００４１】
図３において、Ｅ１００１は通信の開始を意味する「印刷開始」コマンドである。Ｅ１００２、Ｅ１００３、Ｅ１００４が１ページ目の印刷に関するコマンドであり、Ｅ１００５、Ｅ１００６、Ｅ１００７が２ページ目の印刷に関するコマンドであり、Ｅ１００８は一連の通信の終了を意味する「印刷終了」コマンドである。
【００４２】
動作シナリオとして記憶する内容は、通信コマンドの種類を識別するための通信コマンド名、通信方向（図では、コントローラからデバイスへのコマンド送出を「コ→デ」、逆に、デバイスからコントローラへのコマンド送出を「デ→コ」として表現している）、通信コマンドに付随する通信内容を表す通信パラメータから構成されている。
【００４３】
以下、本実施形態では、上記図３〜図６で示した動作シナリオが図１中の動作シナリオ２２０に格納されている状態で、システム開発環境を実現する場合を例にして以下説明する。
【００４４】
コントローラボード１上のホスト通信部４０より開発ホスト３に対し制御コマンドの送信が行なわれると、図２に示したステップＳ２において開発ホスト３上の通信内容解釈部２１０が通信を受信し、通信内容を解釈する。
【００４５】
図７は、本発明に係るシミュレーション装置における第２のデータ処理手順の一例を示すフローチャートであり、図２に示したステップＳ２におけるコマンド解釈処理の詳細手順に対応する。なお、Ｓ２１〜Ｓ２４は各ステップを示す。図４を用いて通信内容解釈部２１０の動作を図８に示すコマンド例を参照しながら説明する。
【００４６】
図８は、図１に示したコントローラ１１から制御対象デバイス２に通知されるコマンド例を示す図である。
【００４７】
まず、ステップＳ２１で、通信内容を解析する。ここでは、解析の結果、図８の（ａ）に示すコマンドがコントローラボード１から最初に送られてきたコマンドであったとして説明を行なう。
【００４８】
次に、ステップＳ２２で送られてきたコマンドが一連の通信の開始を意味するコマンドであるかどうかを判断し、判断した結果、送られてきたコマンドが一連の通信の開始を意味するコマンドであると判断した場合は、ステップＳ２３へ進み、開始を意味するコマンドでなければステップＳ２４へ進む。
【００４９】
図８の（ａ）に示す例では、解析の結果得られたコマンドは通信開始を意味する「印刷開始」コマンドであるため、ステップＳ２３へ進むことになる。
【００５０】
そして、ステップＳ２３では、実行シナリオ２３０に実行シナリオがあればそれを削除し、新たに、動作シナリオ２２０に記憶されている動作シナリオを実行シナリオ２３０にコピーする。
【００５１】
図８の（ａ）のコマンドを受信した時点では、実行シナリオ２３０には実行シナリオが行われていないため削除は不要であり、動作シナリオ２２０に記憶されている図６の（ａ）〜（ｄ）のシナリオを実行シナリオとして実行シナリオ２３０にコピーする。これにより、実行シナリオ２３０には図６の（ａ）〜（ｄ）のシナリオが格納されていることになる。
【００５２】
そして、ステップＳ２４では図８の（ａ）に示す解析結果を候補シナリオ選択部２５０に通知する。
【００５３】
以上で最初のコマンド着信についての図２のステップＳ２の処理は完了となる。
【００５４】
次に、図２のステップＳ３で、ステップＳ２で解釈したコマンドを使用して、候補シナリオ選択部２５０において候補シナリオの選択を行なう。
【００５５】
図９は、本発明に係るシミュレーション装置における第３のデータ処理手順の一例を示すフローチャートであり、図２に示したステップＳ３の候補シナリオ選択部２５０による選択手順の詳細手順に対応する。なお、Ｓ３１〜Ｓ３７は各ステップを示す。
【００５６】
まず、ステップＳ３１で、実行シナリオ２３０から記憶されている実行シナリオを１つ読み出す。
【００５７】
本実施形態では、この時点で実行シナリオ２３０には図３〜図６のシナリオが格納されており、その内から１つ、図３のシナリオが読み込まれたものとする。
【００５８】
次に、ステップＳ３２で読み出したシナリオから先頭のコマンドを読み出す。図３の先頭のコマンドは「Ｅ１００１」の、通信コマンド名「印刷開始」、通信方向「コ→デ」、通信パラメータ「−（なし）」である。
【００５９】
次に、ステップＳ３３で、上記ステップＳ３２で読み出したコマンドと、図２に示したステップ２で解釈したコマンドの内容を比較し一致しているか判断を行い、判断の結果一致していないと判断した場合は、ステップＳ３７に進み、判断の結果一致していると判断した場合は、ステップＳ３４へ進む。
【００６０】
本実施形態では、図８の（ａ）で示した解析結果と先の図３のコマンド「Ｅｌ００ｌ」とを比較すると通信コマンド名、通信方向、通信時刻、通信パラメータすべてが一致するため、ステップＳ３３でＹＥＳと判断され、ステップＳ３４に進むことになる。
【００６１】
次に、ステップＳ３４で、ステップＳ３１で読み出したシナリオから、先頭行を削除する。
【００６２】
本例では図５の（ａ）からコマンド「Ｅｌ００１」が削除され、図１０に示す内容となる。
【００６３】
そして、ステップＳ３５では、ステップ３４で先頭行を削除したシナリオを処理済みの実行シナリオの候補として実行シナリオ２３０に書き戻す。
【００６４】
本実施形態では、図１０の（ａ）に示す実行シナリオ候補が実行シナリオ２３０に書き戻される。
【００６５】
この時点で、実行シナリオ２３０には処理済みのシナリオである図１０の（ａ）及び未処理のシナリオである図６の（ｂ）〜（ｄ）の４シナリオが格納されていることになる。
【００６６】
一方、ステップＳ３３の判断でＮＯと判断された場合は、ステップＳ３７に進み、ステップＳ３１で、読み出したシナリオは不一致シナリオであるため、実行シナリオ２３０から削除して、ステップＳ３６へ進む。
【００６７】
次に、ステップＳ３６では、未処理の実行シナリオが実行シナリオ２３０に残っているか判断して、判断の結果シナリオが残っていると判断した場合は、ステップＳ３１に戻り上記説明した処理を繰り返し、未処理のシナリオがなければ、候補シナリオ選択部２５０の処理を終了する。
【００６８】
本実施形態では、実行シナリオ２３０には未処理のシナリオとして、図４〜図６の３シナリオが格納されており、ステップＳ３１に戻り処理を継続することになる。
【００６９】
そして、ステップＳ３１では、実行シナリオ２３０より図４の実行シナリオを読み出す。
【００７０】
次に、ステップＳ３２では、図４のシナリオの先頭コマンドを読み出し、該読み出したシナリオは、図４に示すように、先頭コマンドは「印刷開始」であり、図２に示したステップ２で解釈したコマンドの内容と一致しているため、ステップＳ３３でＹＥＳと判断され、ステップＳ３４へ進む。
【００７１】
そして、ステップＳ３４でシナリオから先頭行が削除された後、ステップＳ３５で処理済み実行シナリオ候補として実行シナリオ２３０へ書き戻される。
【００７２】
この時、書き戻される内容は、図１１に示す通りである。
【００７３】
以下同様に、図５，図６についても処理が行なわれ、図１２，図１３に示す処理済み実行シナリオ候補が実行シナリオ２３０に格納されることになる。
【００７４】
この時点で、実行シナリオ２３０には処理済みのシナリオとして図１０〜図１３が格納される。
【００７５】
また、未処理のシナリオがなくなるためステップＳ３３でＮＯと判断され、候補シナリオ選択部２５０の処理が終ることになる。
【００７６】
次に、図２に示すステップＳ４で、ステップＳ３の処理の結果、受信コマンドと合致した候補シナリオが実行シナリオ２３０にあったかどうか調べる。そして、候補シナリオがあればステップＳ５へ進み、候補シナリオがなければ処理を終了する。
【００７７】
本実施形態では、ステップＳ４終了時点で、図１０〜図１３に示す候補シナリオが実行シナリオ２３０に格納されているため、ステップＳ５へ進むことになる。
【００７８】
そして、図２のステップＳ５では、ステップＳ３で候補として挙げた候補シナリオから、実行シナリオ決定部２７０により実行シナリオの決定を行なう。
【００７９】
図１４は、本発明に係るシミュレーション装置における第４のデータ処理手順の一例を示すフローチャートであり、図２に示したステップＳ５の実行シナリオ決定部２７０によるシナリオ決定手順の詳細手順に対応する。なお、Ｓ４１〜Ｓ４９は各ステップを示す。
【００８０】
まず、ステップＳ４１で、実行シナリオ２３０から記憶されている実行シナリオを１つ読み出す。本実施形態では、この時点で実行シナリオ２３０には図１０〜図１３に示すシナリオが格納されており、その内から１つ、図１０のシナリオが読み込まれたものとする。
【００８１】
次に、ステップＳ４２で読み出したシナリオから先頭のコマンドを読み出す。図１０に示すシナリオ中の先頭のコマンドはＥ２００２の通信コマンド名「給紙指示」、通信方向「コ→デ」、通信パラメータ「給紙段＝上段、サイズ＝Ａ４」である。
【００８２】
次に、ステップＳ４３で、上記ステップＳ４２で読み出したコマンドが、実行コマンド候補として既に記憶されているか調べ、すでに記憶されていると判断した場合は、ステップＳ４５へ進み、新しいコマンドであればＳ４４へ進む。
【００８３】
本実施形態では、図１０に示す先頭コマンド「Ｅ２００２」は、図１４で最初に読み出したコマンドであり、まだ記憶されていないため、ステップＳ４４へ進み、図１０に示すコマンド「Ｅ２００２」を記憶する。
【００８４】
次に、ステップＳ４５では、未処理の実行シナリオが実行シナリオ２３０に残っているか判断して、判断の結果シナリオが残っていると判断した場合は、ステップＳ４１へ戻り、上記説明した処理を繰り返すことになる。
【００８５】
一方、ステップＳ４５で、判断の結果シナリオが残っていないと判断した場合は、ステップＳ４６へ進む。
【００８６】
本実施形態では、実行シナリオ２３０には未処理のシナリオとして、図１１〜図１３の３シナリオが格納されており、ステップＳ４１に戻り処理を継続することになる。
【００８７】
そして、ステップＳ４１では、実行シナリオ２３０より図１１に示す実行シナリオを読み出す。
【００８８】
そして、ステップＳ４２で、図１１に示すシナリオの先頭コマンドを読み出し、該読み出した図１１に示すシナリオの先頭コマンド「Ｅ２０２２」は、「給紙指示」であり、先に図１０を処理した際に記憶したコマンドと同一であるため、ステップＳ４３でＹＥＳと判断されステップＳ４５へ進む。
【００８９】
以下、同様に図５，図６についても処理が行なわれた後、ステップＳ４５において未処理の候補シナリオが存在しないため、ステップＳ４６へ進むことになる。
【００９０】
そして、ステップＳ４６では、ステップＳ４４で複数の実行コマンド候補が記憶されてかどうかを調べて、複数の実行コマンド候補が記憶されていると判断した場合はステップＳ４７へ進み、実行コマンド候補が１つであると判断した場合は、ステップＳ４９へ進む。
【００９１】
本実施形態では、前述の図１０〜図１３に対する処理により、実行コマンド候補としては、コマンド「Ｅ２００２」の「給紙指示」（コマンド「Ｅ２０２２」，コマンド「Ｅ２０４２」、コマンド「Ｅ２０６２」と同一）の一つのみであるため、ステップＳ４９へ進むことになる。
【００９２】
なお、ステップＳ４７及びステップＳ４８の処理については後述する。
【００９３】
次に、ステップＳ４９で、決定した実行コマンドで始まる実行シナリオをすべて実行シナリオ２３０に格納し、実行シナリオ決定部２７０についての処理を終了する。
【００９４】
本実施形態では、図１０〜図１３に示すシナリオがすべて決定した実行コマンド「給紙指示」で始まるシナリオであるため、図１０〜図１３すべてを実行シナリオ２３０に記憶して、処理を終了する。
【００９５】
次に、図２に示したステップＳ６で、ステップＳ５の処理の結果決定された実行シナリオを、シナリオ実行部２８０により実行する。
【００９６】
図１５は、本発明に係るシミュレーション装置における第５のデータ処理手順の一例を示すフローチャートであり、図２に示したステップＳ６のシナリオ実行部２８０によるシナリオ実行手順の詳細手順に対応する。なお、Ｓ５１〜Ｓ５７は各ステップを示す。
【００９７】
まず、ステップＳ５１で、実行シナリオ２３０から記憶されている実行シナリオを１つ読み出す。
【００９８】
本実施形態では、この時点で実行シナリオ２３０には図１０〜図１３のシナリオが格納されており、その内から１つ、図１０のシナリオが読み込まれたものとする。
【００９９】
次に、ステップＳ５２で、読み出したシナリオから先頭のコマンドを読み出す。図１０に示すシナリオの先頭のコマンド「Ｅ２００２」の通信コマンド名「給紙指示」、通信方向「コ→デ」、通信パラメータ「給紙段＝上段、サイズ＝Ａ４」である。
【０１００】
次に、ステップＳ５３で、上記ステップＳ５２で読み出したコマンド内容の内の通信方向が「デ→コ」かどうか調べ、「デ→コ」であれば、ステップＳ５４へ進み、「コ→デ」であれば処理を終了する。
【０１０１】
本実施形態では、図１０に示すシナリオの先頭のコマンド「Ｅ２００２」の通信方向は「コ→デ」であるため、何も行なわずに処理を終了することになる。
【０１０２】
これは、決定シナリオによると次のコマンドはコントローラボード１からデバイス側に送られるコマンドであるたり、送出処理が不要であるためである。
【０１０３】
図１５に示すステップＳ５４〜Ｓ５７については後述する。
【０１０４】
このようにして図２に示したステップＳ６の処理が終ると、再びステップＳ２へ戻り上記した処理を繰り返すことになる。
【０１０５】
この時点で、実行シナリオ２３０には図１０〜図１３に示すシナリオが格納されていることになる。
【０１０６】
例えば、ここで次に来たコマンドが図８の（ｂ）に示す「ｓｌｅｅｐ命令」であれば、通信内容解釈部２１０で解釈された内容が候補シナリオ選択部２５０へ通知される。
【０１０７】
そして、候補シナリオ選択部２５０の詳細動作を示す図９に示したフローチャートにおいて、上述したステップＳ３１〜Ｓ３６の処理で、受信コマンド「ｓｌｅｅｐ命令」が、実行シナリオの先頭行と比較されるが、図１０のコマンド「Ｅ２００２」、図１１に示すコマンド「Ｅ２０２２」、図１２に示すコマンド「Ｅ２０４２」、図１３に示すコマンド「Ｅ２０６２」とすべてと合致しないため、図２のステップＳ４で、合致したシナリオなしと判断され処理を終了することになる。
【０１０８】
これは、シナリオで想定しなかった通信が行なわれたことを示しており、入力装置４を使用し、入力編集部３００により、（この場合は受信コマンド「ｓｌｅｅｐ命令」を含む）動作シナリオ２２０を新たに開発者が追加することで、以後新しい動作に対応できるようになる。
【０１０９】
また、例えば、実行シナリオ２３０には図１０〜図１３に示すシナリオが格納されている時点で、次に来たコマンドが図８の（ｃ）に示す「給紙指示」であれば、通信内容解釈部２１０で解釈された内容が候補シナリオ選択部２５０へ通知される。
【０１１０】
そして、候補シナリオ選択部２５０の詳細動作を示す図９に示したフローチャートにおいて、上述したステップＳ３１〜Ｓ３６の処理で、受信コマンド「印刷指示」が、実行シナリオの先頭行と比較されるが、図１０のコマンド「Ｅ２００２」、図１１に示すコマンド「Ｅ２０２２」、図１２に示すコマンド「Ｅ２０４２」とは合致し、図１３に示すコマンド「Ｅ２０６２」とは合致しないため（図１３のシナリオのみサイズ＝Ａ３である）、それぞれ先頭行を削除した、図１６〜図１８に示す候補シナリオとして実行シナリオ２３０に格納される。
【０１１１】
次に、実行シナリオ決定部２７０の詳細動作を示す図１４に示すフローチャートにおいて、上述した、ステップＳ４１〜ステップＳ４５の処理で、実行コマンド候補が調べられ、ステップＳ４６の処理に移行した時点で、実行コマンドの候補としては、以下の二つの実行コマンド（１），（２）、が記憶されている。
（１）通信コマンド名「給紙完了」、通信方向「デ→コ」、通信パラメータ「−（なし）」（図１６に示すシナリオのコマンド「Ｅ３００３」及び図１７に示すシナリオのコマンド「Ｅ３０２３」参照）
（２）通信コマンド名「給紙失敗」、通信方向「デ→コ」、通信パラメータ「詳細＝用紙なし」（図１８に示すシナリオのコマンド「Ｅ３０４３」参照）
このため、図８に示すステップＳ４６において、複数の実行コマンドが候補が存在するため、この判断ステップおいて、ＹＥＳと判断されステップＳ４７へ進む。
【０１１２】
そして、ステップＳ４７では、コマンドの通信方向がすべて「コ→デ」であるか判断し、すべて「コ→デ」であれば、ステップＳ４９へ進み、すべての実行シナリオを実行シナリオ２３０に記憶し、また、ステップＳ４７でＮＯと判断されれば、ステップＳ４８へ進むことになる。
【０１１３】
本実施形態では、上記したように実行コマンド（１），（２）ともに通信方向「デ→コ」であるため、ステップＳ４７では、ＮＯと判断されステップＳ４８へ進むことになる。
【０１１４】
そして、ステップＳ４８では、実行シナリオ決定方式２６０に従い、複数の実行コマンド候補から、１つの実行コマンド候補を選択する。
【０１１５】
なお、本実施形態において、実行方式としては以下のような方式１と方式２が考えられる。
【０１１６】
ここで、方式１とは、複数のコマンド候補からランダムに実行コマンドを決定する方式であり、方式２とは、あらかじめすべての動作シナリオに対し開発者が優先順位を与えておいて、優先度の高いものを実行コマンドとする方式である。また、上記方式１，２については、一度使用されたシナリオに印をつけることで、可能な限り未実行のシナリオを選択するようにし、結果としてできるだけ多くのシナリオを使用するようにすることが可能である。
【０１１７】
また、方式２の優先度の設定は、入力装置４を介し、入力編集部３００を使用して実行シナリオ決定方式２６０を編集することで行なう。
【０１１８】
本実施形態では、実行シナリオ決定方式２６０に、方式１が方式２より優先度が高いと記述されいたものとして説明を続ける。
【０１１９】
その結果、ステップＳ４９で上記実行コマンド（１）から始まる図１６，図１７のシナリオが実行シナリオとして決定され、ステップＳ４９で、図１６，図１７のシナリオがが実行シナリオ２３０に記憶される。
【０１２０】
次に、シナリオ実行部２８０の詳細動作を図１５に示すフローチャートにおいて、上述したステップＳ５１〜Ｓ５７の処理が行なわれる。
【０１２１】
本実施形態では、ステップＳ５１において、図１６に示すシナリオが読み出され、続くステップＳ５２で図６に示すシナリオの先頭のコマンド、すなわち図１６に示すシナリオのコマンド「Ｅ３００３」が読み出される。
【０１２２】
ここで、読み出したコマンドの通信方向は「デ→コ」であるので、ステップＳ５３でＹＥＳと判断されステップＳ５４に進む。
【０１２３】
そして、ステップＳ５４では読み出したコマンド、すなわち図１６に示すシナリオのコマンド「Ｅ３００３」を実行し、コントローラボード１へコマンド「給紙完了」を送出する。
【０１２４】
そして、ステップＳ５５では、実行したシナリオ、すなわち図１６から実行したコマンド、すなわちコマンド「Ｅ３００３」を削除し、ステップＳ５６では、実行済みシナリオファイルとして実行シナリオ２３０に格納する。この時格納される実行済みシナリオの内容が図１９に示すシナリオである。
【０１２５】
この時点で、実行シナリオ２３０には実行済みシナリオとして図１９に示すシナリオが、未処理シナリオとして図１６に示すシナリオが格納されている（Ｓ５６）。
【０１２６】
次に、ステップＳ５７で、未処理のシナリオがあるかどうか判断され、未処理のシナリオがあると判断された場合には、ステップＳ５５に戻り、未処理のシナリオがないと判断した場合は、処理を終了する。
【０１２７】
本実施形態では、未処理シナリオとして図１７に示すシナリオが格納されているため、ステップＳ５５に戻る。
【０１２８】
そして、ステップＳ５５では、既に実行を完了している図１６に示すシナリオのコマンド「Ｅ３００３」と同じであるため、図１７に示すシナリオの先頭行を削除する。
【０１２９】
そして、ステップＳ５６で、実行済みのシナリオとして実行シナリオ２３０へ格納する。この時、格納される実行済みシナリオの内容が図２０に示すシナリオである。
【０１３０】
そして、次のステップＳ５７では、もう未処理のシナリオはないため、ＮＯと判断され、本処理を終了する。
【０１３１】
その後、コントローラボード１から図８の（ｄ）に示す「イメージ送信」コマンドが送信されたとすると、上述した処理により、図２１，図２２に示す実行シナリオが実行シナリオ２３０に格納されることになる。
【０１３２】
更にこの時点で、コントローラボードから図８の（ｅ）の「給紙指示」コマンドが送信されたとすると、上述した処理により、実行シナリオ２３０には図２３に示す実行シナリオが格納されることとなる。
【０１３３】
また、この時点で、コントローラボードから図８の（ｆ）に示す「印刷終了」コマンドが送信されたとすると、上述した処理により、実行シナリオ２３０に格納される実行シナリオはなくなり、図２のステップＳ４での判断の結果がＮＯと判断されて、処理を終了することになる。
【０１３４】
〔第２実施形態〕
上記実施形態１では、候補シナリオ選択部２５０の処理の詳細を示すフローチヤートである図９に示すのステップＳ３３において、通信内容解釈部２１０から得た通信コマンドの内容との一致を調べる際に、パラメータを含めすべてが一致するかを判断していたが、通信パラメータごとにある程度の許容範囲を設定し、設定の範囲内であれば合致とみなしその後の処理を継続することも考えられる。
【０１３５】
具体的には、実行シナリオ２３０には図１０〜図１３に示すシナリオが格納されている時点で、次に来たコマンドが図８の（ｃ）に示す「給紙指示」であった際、図８の（ｃ）に示す通信パラメータはサイズ＝Ａ４であり、図８の（ｄ）のみサイズ＝Ａ４であったため、図１３に示すシナリオについては候補から外したが、このようなパラメータの差異は実行シーケンスに影響しないと判断されれば、図１３も候補シナリオとして図１０〜図１２に示すシナリオとともに実行シナリオ２３０に格納することが可能である。
【０１３６】
このような、候補シナリオを選択する際に使用する、通信パラメータごとの許容範囲を与えるものが図１に示す候補シナリオ選択情報２４０である。
【０１３７】
なお、候補シナリオ選択情報２４０では、入力装置４を介し、入力編集部３００を使用して、開発者により編集可能である。
【０１３８】
また、実時間制約の厳しいリアルタイムシステムにおいては、通信時刻の一致／不一致の判断は重要な意味をもつ場合が多い。
【０１３９】
上記第１実施形態では、通信時刻について言及していないが、例えば、図２３に示すように、動作シナリオの内容として実行時刻を保持しておき、着信時間については、図１に示した通信内容解釈部２１０の処理の詳細を示すフローチャート中のステップＳ２１で着信時刻を記録し、図９に示した候補シナリオ選択部２５０の処理の詳細を示すフローチャート中のステップＳ３３において、解釈部から得た通信コマンドの内容との一致を調べる際に実際の着信時刻とシナリオ中の通信時刻を比較することで、通信時刻の一致／不一致を加味した、シナリオの切替を行なうことができる。
【０１４０】
この際、通信時刻に関しては動作の度に若干の差異が出ることが予想されるため、サイズの例を用い上述したのと同様に多少の許容範囲を設定し（例えば±１００ｍｓなど）、一致、不一致を調べる必要がある。
【０１４１】
通信時刻についての許容範囲の情報も候補シナリオ選択情報２４０で保持可能である。
【０１４２】
図２３には、通信時刻は最初に行なわれた通信を起点（０ｍｓ）とし、以降、最初の通信からの経過時間を記憶しているが、通信を実現することが可能であれば、ＣＰＵや使用するリアルタイムＯＳの動作クロック単位で表された時刻を記録する方式であっても構わない。
【０１４３】
また、コマンド実行については、図１５に示したシナリオ実行部の処理の詳細を示すフローチャート中のステップＳ５４において、コマンドをコントローラボードに送出する際に、実行コマンドで指定された時刻にコマンドの送出を行なうことが可能である。
【０１４４】
上記実施形態によれば、比較的構築の容易なシナリオ実行方式のシミュレータを使用しながら、シナリオを動的に切替えることで、あらかじめ予定していた実行シーケンスから逸脱した場合についても継続してシミュレータを動作させることが可能であり、機器制御ソフトウエアの開発者やテスト実行者が動作シナリオをあらかじめ設定したり、また選択されているシナリオを意識して動作を監視する必要がなくなるため、開発もしくはテストの効率向上が期待できる。
【０１４５】
【発明の効果】
以上説明したように、本発明によれば、機器制御ソフトウエアからの通信内容を解釈し、該解釈された結果を記憶手段に記憶されたシナリオと照合し、一致する１つもしくは複数のシナリオを選択し、該選択した１つもしくは複数の候補シナリオから実際に実行すべき一つもしくは複数の実行シナリオを決定し、該決定したシナリオ内容に基づき実行を行うので、シナリオを解釈実行するシミュレータにおいて、シナリオの動作から逸脱した場合でも他に実行継続可能なシナリオがあれば動作を継続することができる機器組み込み機器制御ソフトウエアの制御対象であるハードウエアを確実にシミュレートできるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の第１実施形態を示すシミュレーション装置を適用するデータ処理システムの一例を示すブロック図である。
【図２】本発明に係るシミュレーション装置における第１のデータ処理手順の一例を示すフローチャートである。
【図３】図１に示した動作シナリオの一例を示す図である。
【図４】図１に示した動作シナリオの一例を示す図である。
【図５】図１に示した動作シナリオの一例を示す図である。
【図６】図１に示した動作シナリオの一例を示す図である。
【図７】本発明に係るシミュレーション装置における第２のデータ処理手順の一例を示すフローチャートである。
【図８】図１に示したコントローラから制御対象デバイスに通知されるコマンド例を示す図である。
【図９】本発明に係るシミュレーション装置における第３のデータ処理手順の一例を示すフローチャートである。
【図１０】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図１１】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図１２】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図１３】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図１４】本発明に係るシミュレーション装置における第４のデータ処理手順の一例を示すフローチャートである。
【図１５】本発明に係るシミュレーション装置における第５のデータ処理手順の一例を示すフローチャートである。
【図１６】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図１７】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図１８】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図１９】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図２０】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図２１】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図２２】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【図２３】本発明に係るシミュレーション装置で使用するシナリオの一例を示す図である。
【符号の説明】
１　コントローラボード
２　制御対象デバイス
３　開発ホスト
４　入力装置
５　表示装置
１０　コントローラソフト
２０　コントローラソフトコア部
３０　通信先切り替え部
５０　デバイス通信部
１１０　デバイス側ソフトウエア
２１０　通信内容解釈部
２２０　動作シナリオ
２３０　実行シナリオ
２４０　候補シナリオ選択情報
２５０　候補シナリオ選択部
２６０　実行シナリオ決定方式
２７０　実行シナリオ決定部
２８０　シナリオ実行部
２９０　シナリオ表示部
【図１】
2004021461.tif 000003
【図２】
2004021461.tif 000004
【図３】
2004021461.tif 000005
【図４】
2004021461.tif 000006
【図５】
2004021461.tif 000007
【図６】
2004021461.tif 000008
【図７】
2004021461.tif 000009
【図８】
2004021461.tif 000010
【図９】
2004021461.tif 000011
【図１０】
2004021461.tif 000012
【図１１】
2004021461.tif 000013
【図１２】
2004021461.tif 000014
【図１３】
2004021461.tif 000015
【図１４】
2004021461.tif 000016
【図１５】
2004021461.tif 000017
【図１６】
2004021461.tif 000018
【図１７】
2004021461.tif 000019
【図１８】
2004021461.tif 000020
【図１９】
2004021461.tif 000021
【図２０】
2004021461.tif 000022
【図２１】
2004021461.tif 000023
【図２２】
2004021461.tif 000024
【図２３】
2004021461.tif 000025