(57)【要約】【課題】操作者のシミュレーション目的に従って最適なプロセスのみを実行する情報処理装置及びその制御方法を提供する。【解決手段】本発明は、それぞれが固有の仮想時間を有する複数のアプリケーションを備える情報処理装置として実現される。具体的には、情報処理装置は、情報処理装置の中で定義された仮想時間の経過時間がアプリケーションごとに定義される同期間隔の倍数となるタイミングで、当該アプリケーションに対して、予め定められた仮想時間分の処理実行を指示し、各アプリケーションの同期間隔が指定されると、経過時間が指定された同期間隔の倍数となるタイミングで、指定された同期間隔を実行中の処理に反映する。【選択図】図１
2010033192.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが固有の仮想時間を有する複数のアプリケーションを備える情報処理装置であって、
前記情報処理装置の中で定義された仮想時間の経過時間がアプリケーションごとに定義される同期間隔の倍数となるタイミングで、当該アプリケーションに対して、予め定められた仮想時間分の処理実行を指示する処理実行指示手段と、
各アプリケーションの前記同期間隔を指定する指定手段と、
前記経過時間が指定された前記同期間隔の倍数となるタイミングで、該指定された同期間隔を実行中の処理に反映する同期間隔制御手段と
を備えることを特徴とする情報処理装置。
【請求項２】
それぞれが固有の仮想時間を有する複数のアプリケーションを備える情報処理装置であって、
前記アプリケーションごとの動作状態である実行又は休止を示す処理動作情報が実行を示すアプリケーションに対して、予め定められた仮想時間分の処理実行を指示する処理実行指示手段と、
各アプリケーションの前記動作状態を指定する指定手段とを備えることを特徴とする情報処理装置。
【請求項３】
請求項１記載の前記指定手段は、さらに、
各アプリケーションの動作状態である実行又は休止を示す処理動作情報を指定し、
前記処理実行指示手段は、
前記処理動作情報が実行を示すアプリケーションのうち、前記経過時間が前記同期間隔の倍数となるアプリケーションに対して処理実行を指示することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記同期間隔制御手段は、
前記アプリケーションの同期間隔の倍数であって、前記経過時間より大きい値の中で、該経過時間との差分が最も小さい値となる処理実行の指示を行う予定時間を算出する手段と、
前記予定時間と現在の経過時間との差分と、前記同期間隔との最大公約数を算出する手段とを備え、
前記アプリケーションの動作状態が休止から実行に指定された場合に、前記経過時間が前記予定時間に到達するまでの間は算出された前記最大公約数を当該アプリケーションの同期間隔とし、前記経過時間が前記予定時間に到達すると、当該アプリケーションに指定された同期間隔を反映することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記処理実行指示手段は、各アプリケーションに対して処理実行を指示すると、処理実行を指示したアプリケーションの中で、前記同期間隔が最も小さい同期間隔分の仮想時間を、前記経過時間に加算することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
各アプリケーションの前記同期間隔及び前記処理動作情報の少なくとも一方を変更するための条件となる変更条件を記憶する記憶手段と、
各アプリケーションで実行されている処理の動作状況が前記変更条件に一致すると、前記同期間隔及び前記処理動作情報の少なくとも一方を変更する変更手段と
をさらに備えることを特徴とする請求項３乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記指定手段は、さらに、前記変更条件を指定することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記指定手段は、
操作者に指定させる情報を指定可能な表示画面を前記情報処理装置の表示装置に表示させる手段と、
前記操作者によって指定された情報を前記同期間隔、前記処理動作情報又は前記変更条件として取得する手段と
を備えることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記指定手段は、
操作者が予め定義された書式に従って編集した前記同期間隔、前記処理動作情報及び前記変更条件の少なくとも１つを含むファイルを外部装置から取得する手段を備えることを特徴とする請求項７に記載の情報処理装置。
【請求項１０】
前記指定手段は、
前記同期間隔、前記処理動作情報及び前記変更条件の少なくとも１つを指定するアプリケーションからプロセス間通信を介して当該情報を取得する手段を備えることを特徴とする請求項７に記載の情報処理装置。
【請求項１１】
前記アプリケーションは、
シミュレーションの対象となるターゲット装置のＣＰＵの動作をシミュレーションするＣＰＵシミュレータと、
前記ターゲット装置の機構部品の動作をシミュレーションする機構部品シミュレータと、
前記ターゲット装置のシミュレーションを実行するためのユーザインターフェースを提供するシミュレータアプリケーションと
を含むことを特徴とする請求項１乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
それぞれが固有の仮想時間を有する複数のアプリケーションを備える情報処理装置の制御方法であって、
前記情報処理装置の中で定義された仮想時間の経過時間がアプリケーションごとに定義される同期間隔の倍数となるタイミングで、当該アプリケーションに対して、予め定められた仮想時間分の処理実行を指示するステップと、
各アプリケーションの前記同期間隔を指定するステップと、
前記経過時間が指定された前記同期間隔の倍数となるタイミングで、該指定された同期間隔を実行中の処理に反映するステップと
を実行することを特徴とする情報処理装置の制御方法。
【請求項１３】
それぞれが固有の仮想時間を有する複数のアプリケーションを備える情報処理装置の制御方法であって、
前記アプリケーションごとの動作状態である実行又は休止を示す処理動作情報が実行を示すアプリケーションに対して、予め定められた仮想時間分の処理実行を指示するステップと、
各アプリケーションの前記動作状態を指定するステップと
を実行することを特徴とする情報処理装置の制御方法。
【請求項１４】
それぞれが固有の仮想時間を有する複数のアプリケーションの動作をコンピュータ上でシミュレーションするためのコンピュータプログラムであって、
定義された仮想時間の経過時間がアプリケーションごとに定義される同期間隔の倍数となるタイミングで、当該アプリケーションに対して、予め定められた仮想時間分の処理実行を指示するステップと、
各アプリケーションの前記同期間隔を指定するステップと、
前記経過時間が指定された前記同期間隔の倍数となるタイミングで、該指定された同期間隔を実行中の処理に反映するステップと
を実行することを特徴とするコンピュータプログラム。
【請求項１５】
それぞれが固有の仮想時間を有する複数のアプリケーションの動作をコンピュータ上でシミュレーションするためのコンピュータプログラムであって、
前記アプリケーションごとの動作状態である実行又は休止を示す処理動作情報が実行を示すアプリケーションに対して、予め定められた仮想時間分の処理実行を指示するステップと、
各アプリケーションの前記動作状態を指定するステップと
を実行することを特徴とするコンピュータプログラム。
【請求項１６】
請求項１４又は１５に記載のコンピュータプログラムを記憶したコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で独立プロセスとして動作する複数のアプリケーションを連携動作させ、１つのシステムとして動作させる情報処理装置及びその制御方法、コンピュータプログラム、記憶媒体に関するものである。
【背景技術】
【０００２】
ソフトウエアは、不正な動作を行っていないかテストをし、デバッグ作業を経てリリースされる。特許文献１には、ソフトウエアで制御したメカの動きをアニメーションで見ながらソフトウエアのデバッグを行う方法が提案されている。このように、メカ装置を制御するソフトウエアのデバッグや検証に、機器制御シミュレーションを用いることがある。
【０００３】
また、特許文献２には、複数のプロセスを連携させた機器制御シミュレーションの方法が提案されている。ここで、複数のプロセスとは、装置を制御する中央処理装置（ＣＰＵ）のシミュレータ（シミュレーションデバッガ）、機器モデルのシミュレータ、その他、各種装置構成のシミュレータやシミュレーションを支援するシステムを受け持つアプリケーション等を示す。以下では、これらのアプリケーションをシミュレータアプリケーションと称する。また、特許文献２には、複数プロセスの連携動作として、機器制御シミュレーション対象（ＣＰＵによるプログラム実行処理、仮想メカ部品の動作等）のシミュレーションにおいて、各々のプロセスが仮想時間を有し、各プロセスを同期させる方法が提案されている。
【特許文献１】特開平１１−３２７９５６号公報
【特許文献２】特開２００５−３３９０２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術においては、以下に記載する問題がある。例えば、このようなシミュレータでは、システム起動時から終了時まで同じプロセスが処理実行を行い、同じ同期時間で複数プロセスの連携を行っている。したがって、ソフトウエアの特定機能のデバッグを行う際、デバッグ目的に必要のないシミュレータアプリケーション機能に関するプロセス処理を省くことで、デバッグ効率を向上することができる。ここで、ソフトウエアの制御対象がプリンタ装置である場合を例にあげる。プリント時の紙搬送機能に関してデバッグを行う際、特許文献１で示されるように、ソフトウエアが制御したメカ動作、及びメカ動作に連携して紙が搬送されることをアニメーションで確認する方法がある。この例では、デバッグの目的を果たすために、紙搬送時以外ではアニメーション表示は必要ない。よって、シミュレータを構成するアニメーション表示のプロセスは、紙搬送時以外は行う必要がない。
【０００５】
しかし、従来のシミュレータでは、一度起動されたプロセスは、システムが終了するまで一定の同期間隔でプロセス処理が実行され続ける。そのため、シミュレーション実行途中でデバッグ対象外の機能に関するシミュレーションを行っているプロセスが存在する場合であっても、当該プロセス処理を省略することができない。即ち、従来技術では、デバッグ目的を果たすためには必要のない無駄なプロセス処理も行うことになってしまう。
【０００６】
本発明は、上述の問題に鑑みて成されたものであり、操作者のシミュレーション目的に従って最適なプロセスのみを実行する情報処理装置及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、例えば、それぞれが固有の仮想時間を有する複数のアプリケーションを備える情報処理装置として実現できる。情報処理装置は、情報処理装置の中で定義された仮想時間の経過時間がアプリケーションごとに定義される同期間隔の倍数となるタイミングで、当アプリケーションに対して、予め定められた仮想時間分の処理実行を指示する処理実行指示手段と、各アプリケーションの同期間隔を指定する指定手段と、経過時間が指定された同期間隔の倍数となるタイミングで、指定された同期間隔を実行中の処理に反映する同期間隔制御手段とを備えることを特徴とする。
【０００８】
本発明は、例えば、それぞれが固有の仮想時間を有する複数のアプリケーションを備える情報処理装置として実現できる。情報処理装置は、アプリケーションごとの動作状態である実行又は休止を示す処理動作情報が実行を示すアプリケーションに対して、予め定められた仮想時間分の処理実行を指示する処理実行指示手段と、各アプリケーションの動作状態を指定する指定手段とを備えることを特徴とする。
【０００９】
また、本発明は、それぞれが固有の仮想時間を有する複数のアプリケーションを備える情報処理装置の制御方法として実現できる。制御方法は、情報処理装置の中で定義された仮想時間の経過時間がアプリケーションごとに定義される同期間隔の倍数となるタイミングで、当アプリケーションに対して、予め定められた仮想時間分の処理実行を指示するステップと、各アプリケーションの同期間隔を指定するステップと、経過時間が指定された同期間隔の倍数となるタイミングで、指定された同期間隔を実行中の処理に反映するステップとを実行することを特徴とする。
【００１０】
また、本発明は、それぞれが固有の仮想時間を有する複数のアプリケーションを備える情報処理装置の制御方法として実現できる。制御方法は、アプリケーションごとの動作状態である実行又は休止を示す処理動作情報が実行を示すアプリケーションに対して、予め定められた仮想時間分の処理実行を指示するステップと、各アプリケーションの動作状態を指定するステップとを実行することを特徴とする。
【００１１】
また、本発明は、それぞれが固有の仮想時間を有する複数のアプリケーションの動作をコンピュータ上でシミュレーションするためのコンピュータプログラムとして実現できる。コンピュータプログラムは、定義された仮想時間の経過時間がアプリケーションごとに定義される同期間隔の倍数となるタイミングで、当アプリケーションに対して、予め定められた仮想時間分の処理実行を指示するステップと、各アプリケーションの同期間隔を指定するステップと、経過時間が指定された同期間隔の倍数となるタイミングで、指定された同期間隔を実行中の処理に反映するステップとを実行することを特徴とする。
【００１２】
また、本発明は、それぞれが固有の仮想時間を有する複数のアプリケーションの動作をコンピュータ上でシミュレーションするためのコンピュータプログラムとして実現できる。コンピュータプログラムは、アプリケーションごとの動作状態である実行又は休止を示す処理動作情報が実行を示すアプリケーションに対して、予め定められた仮想時間分の処理実行を指示するステップと、各アプリケーションの動作状態を指定するステップとを実行することを特徴とする。
【発明の効果】
【００１３】
本発明は、例えば、操作者のシミュレーション目的に従って最適なプロセスのみを実行する情報処理装置及びその制御方法を提供できる。
【発明を実施するための最良の形態】
【００１４】
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念及び下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【００１５】
＜第１の実施形態＞
以下では、図１乃至図９Ｂを参照して、第１の実施形態について説明する。本実施形態は、複数の独立プロセスがシステム上の仮想時間で同期をとる機器制御シミュレーションシステムにおいて、操作者（以下、単にユーザと称する。）からの指示に従って特定プロセスの同期間隔を変更する。
【００１６】
まず、図２を参照して、本実施形態に係る機器制御シミュレーションシステムを実現する情報処理装置の構成について説明する。図２は、第１の実施形態に係る情報処理装置の構成例を示す図である。
【００１７】
情報処理装置２０１は、本体部２０２、表示装置２０３、キーボード２０４及びマウス２０５を備える。本体部２０２は、中央演算装置（以下、ＣＰＵと称する。）２０６、主記憶装置（以下、ＲＡＭと称する。）２０７、ハードディスク２０８等を備える。表示装置２０３は、本体部２０２からの指示により画面表示を行う。キーボード２０４は、情報処理装置２０１にユーザ（操作者）の指示や文字情報を入力するための装置である。マウス２０５は、表示装置２０３上の任意の位置を指定することにより当該位置に表示されていたアイコン等に応じた指示を入力する。
【００１８】
ハードディスク２０８には、機器制御シミュレーションにおける各機能を実現したプログラム、シミュレーションの対象となる機器情報を含むシミュレーションのための各種データが格納される。シミュレーションを実行する際には、例えば、プログラムや各種データがＲＡＭにロードされ、ＣＰＵ２０６によってプログラムが実行される。また、これら情報処理装置２０１の基本動作は、基本プログラムであるオペレーティングシステム（以下、ＯＳと記す）を介して実行される。
【００１９】
次に、図１を参照して、本実施形態におけるシミュレータの機能ブロックについて説明する。図１は、第１の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。図１に示すように、機器制御シミュレータ１００は、システムを構成する３つのアプリケーションであるＣＰＵシミュレータ１０１と、シミュレータアプリケーション１０２と、機構部品シミュレータ１０３と、各プロセスを接続するためのシミュレータハブ（以下、ＨＵＢと称する。）１０４とを備える。
【００２０】
ＣＰＵシミュレータ１０１、シミュレータアプリケーション１０２、機構部品シミュレータ１０３は、それぞれがＯＳ上で個別に動作するアプリケーションであり、それぞれが独立したプロセスとして存在する。さらに、シミュレータアプリケーション１０２は機能によって複数の独立プロセスで構成される場合がある。本実施形態によれば、ＣＰＵシミュレータ１０１は、ダイナミックリンクライブラリ（以下、ＤＬＬと称する。）で提供される外部モジュールとの間で、共有メモリや関数の直接呼出し方式による外部インターフェースを有する。また、シミュレータアプリケーション１０２及び機構部品シミュレータ１０３は、ソケットインターフェースによるプロセス間通信方式による外部インターフェースを有する。
【００２１】
ＨＵＢ１０４は、ＣＰＵシミュレータ１０１の直接呼出し方式の外部インターフェースを利用するためにＤＬＬとして提供され、ＣＰＵシミュレータ１０１から起動されるサブプロセスとして動作する。ＣＰＵシミュレータ１０１は、各種イベント発生時に、予め指定されたＨＵＢ１０４のコールバック関数を呼び出す。ＨＵＢ１０４を構成する配線モジュール１１１、同期モジュール１１２の各モジュールはそれぞれ独立したスレッドとして動作し、ＣＰＵシミュレータ１０１の起動時に呼び出されるコールバック関数から各スレッドが起動される。シミュレータアプリケーション１０２、機構部品シミュレータ１０３は、ＯＳの提供するアプリケーションプログラムインターフェースを使用してソケットインターフェースを介してＨＵＢ１０４との接続を行う。
【００２２】
次に、各構成要素の機能について説明する。
【００２３】
ＣＰＵシミュレータ１０１は、シミュレーション対象となるターゲット装置のＣＰＵ（以下、ターゲットＣＰＵと称する。）の動作を情報処理装置２０１上で実現する機能である。ここで、ターゲットＣＰＵとは、情報処理装置２０１に搭載されているＣＰＵではなく、シミュレーションの対象となるターゲット装置（本実施形態ではプリンタ装置）に搭載され、当該装置を制御するためのＣＰＵのことである。
【００２４】
ＣＰＵシミュレータ１０１は、ターゲットＣＰＵの制御プログラム（以下、ターゲットファームウエアと称する。）に従って、ターゲットＣＰＵの端子に対応して定義された仮想入力端子の情報を読み込み、仮想出力端子を制御する。また、ＣＰＵシミュレータ１０１は、ターゲットＣＰＵのアドレス空間に対応した仮想アドレス空間を設けている。ここで、仮想アドレス空間とは、ターゲットＣＰＵの管理するアドレス空間上の個々の領域と１対１で対応する領域を情報処理装置２０１のＲＡＭ上に定義したものである。仮想アドレス空間の情報処理装置２０１上の実アドレス値は、ターゲットＣＰＵの扱うアドレス値とは異なる。そして、ＣＰＵシミュレータ１０１は、ターゲットファームウエアによるターゲットＣＰＵアドレス空間上のアドレス値へのアクセス命令に従って、仮想アドレス空間上の対応する領域にアクセスする。また、ターゲットＣＰＵのレジスタ類も、仮想アドレス空間上に対応する領域が設定され、レジスタ類へのアクセスも仮想アドレス空間へのアクセスによってシミュレーションされる。ＣＰＵシミュレータ１０１は、外部インターフェースとしてターゲットＣＰＵのＩ／Ｏメモリ、レジスタアクセスのためのメソッドを設けている。外部モジュールは、これらのメソッドにより仮想アドレス空間へのアクセスを行う。情報処理装置２０１上でのターゲットファームウエアのシミュレーション方法としては、２つの方式がある。例えば、ターゲットファームウエアのソースプログラムを情報処理装置２０１のネイティブ言語に変換して実行する方式がある。また、ターゲットＣＰＵの実行命令を１語ずつ解釈し、情報処理装置２０１のＣＰＵに対応した実行命令に翻訳しながら実行する方式がある。本発明における実施形態においては、何れのＣＰＵシミュレーション方式にも対応できる。
【００２５】
機器制御シミュレータ１００においては、ＣＰＵシミュレータ１０１のイベント毎に、ＨＵＢ１０４のコールバック関数が呼び出される。イベントには、例えば、ＣＰＵシミュレータ１０１の処理状態に関するもの（ＣＰＵシミュレータ１０１のプロセス起動、初期化終了等）や、ターゲットＣＰＵの動作シミュレーション上のイベント（メモリアクセス、割り込み発生等）がある。
【００２６】
シミュレータアプリケーション１０２は、機器制御シミュレータ１００による各種試験のための支援プログラムであり、仮想装置に対する各種働きかけの設定や、シミュレーションの結果を解析、表示、保存する機能を有する。
【００２７】
シミュレーションの対象となるターゲット装置（本実施形態ではプリンタ装置）は、当該装置を使用する操作者や当該装置に接続された情報処理装置等により外部から様々な働きかけ（以下、外部事象と称する。）を受けて動作する。シミュレータアプリケーション１０２は、これら外部事象のうち、機構部品シミュレータ１０３で設定されるメカニカルな外部事象以外のものを擬似的に設定する機能を提供する。ターゲット装置がプリンタ装置である場合、メカニカルな外部事象としては、給紙カセットの操作や消耗部品の取り外し、取り付け等が挙げられる。一方、それ以外の外部事象としては、ホストＰＣからの各種命令の受信、操作者によるオペレーションパネルの操作、環境温度の変化等が挙げられる。
【００２８】
シミュレータアプリケーション１０２は、これらを設定するための専用のユーザインターフェース（以下、ＵＩと称する。）を提供する。また、シミュレータアプリケーション１０２は、当該ＵＩによる設定に従ってＨＵＢ１０４を介してＣＰＵシミュレータ１０１や機構部品シミュレータ１０３に所定の外部事象を通知する。また、シミュレータアプリケーション１０２は、情報処理装置２０１のハードディスクに格納された、連続した外部事象の設定手順を記述したマクロ命令ファイルや一連の外部事象データを記述したファイルを必要に応じて読み出し、外部事象を発生させる。
【００２９】
外部事象の設定機能のほかに、シミュレータアプリケーション１０２は、シミュレーションの結果として出力される各種データを解析、評価し、試験目的に応じた各種情報を表示装置２０３に表示する機能や、ハードディスクに保存する機能を有する。具体的には、機構部品シミュレータ１０３がシミュレートした機構部品動作のシミュレートデータを参照し、機構モデルを表示装置２０３上に２次元、又は３次元のグラフィックとして表示する機能を有する。以下、当該機能を機構部品シミュレーション結果表示アプリケーションと称する。さらに、シミュレータアプリケーション１０２は、各種信号の変化をタイミングチャートとして表示する機能、一連の動作を予め想定された動作と比較してその正当性を評価する機能や不正な事象を可視的に表示する機能等を有する。
【００３０】
ここで、図３を参照して、機構部品シミュレーションの結果表示アプリケーションの表示例について説明する。図３は、第１の実施形態に係るターゲット装置であるプリンタ装置の機構部品シミュレーションの結果を表示するアプリケーションの表示例を示す図である。３０１は給紙カセット、３０２はプリント用紙、３０３は用紙搬送路、３０４はセンサ、３０５はローラ、３０６はフラッパ、３０７は排紙トレイの機構部品モデルを示す。これらの機構部品モデルは、機構部品シミュレータ１０３がシミュレートした動作及び機構部品に接続される信号のシミュレーションデータを参照し、シミュレーションデータの変化に応じて機構部品を動かし、グラフィックとして表示装置２０３に表示される。
【００３１】
図１の説明に戻る。機構部品シミュレータ１０３は、ターゲット装置のアクチュエータ、センサを含む複数の部品からなる機械装置の機構部品、当該機構部品間の干渉、連携、及びアクチュエータ、センサに接続される信号をシミュレーションする。各機構部品には、ユーザにより形状、種類、動作、機構部品間の干渉や連携条件等、機構部品のシミュレーションに関する情報が定義される。さらに、センサ、アクチュエータについては外部信号定義が行われる。これら機構部品の定義はＣＡＤ図面からの自動設定、専用の機構部品作成ソフトウエアをユーザが操作して設定、その両方の組み合わせで設定するなどして行われる。上述したように定義される機構部品の種類としては単なる物体と定義されるものと機能定義がなされるもの（モータ、ソレノイド、クラッチ、センサ、歯車、カム、ローラ等）がある。また、機構部品にはシミュレーション対象となる装置の構成物ではないもので、装置の動作シミュレーションに必要なもの（プリンタ装置における用紙等）も含まれる。
【００３２】
機構部品シミュレータ１０３は、ＣＰＵシミュレータ１０１からＨＵＢ１０４を介して送られてきたアクチュエータ動作信号に対応して、該当するアクチュエータの機構部品動作のシミュレーションを行う。また、アクチュエータに連結された機構部品は、アクチュエータの動作に関連付けて定義された動きで動作シミュレーションする。また、操作者の操作により動作する機構については、キーボード２０４、マウス２０５によって操作者による機構部品への操作を擬似的に再現し、擬似操作に応じて対象となる機構部品を定義された動きで動作シミュレーションする。さらに、機構部品間の干渉、連携定義に従い、関連する全ての機構部品の動作をシミュレーションする。
【００３３】
これら機構部品の動作シミュレーションの結果、センサとして定義された機構部品に予め定義された外部事象が発生すると、外部事象に応じたセンサ信号を発生させる。当該センサ信号は、ＨＵＢ１０４を介してＣＰＵシミュレータ１０１に送信される。
【００３４】
なお、ＣＰＵシミュレータ１０１、シミュレータアプリケーション１０２及び機構部品シミュレータ１０３（以下、まとめて周辺シミュレーションツールと称する）は、処理実行指示部１０８からの処理実行指示に従って処理を行う。
【００３５】
ＨＵＢ１０４は、コア部１０５とインターフェースモジュール１０６ａ、ｂ、ｃから構成される。コア部１０５は、配線モジュール１１１及び同期モジュール１１２を備え、システム構成に合わせたＨＵＢモジュールの設定、周辺シミュレーションツール間のデータ伝送管理、同期処理及びデータ伝送履歴の取得を行う機能を有する。なお、ＨＵＢ１０４は、シミュレータアプリケーション１０２、及び機構部品シミュレータ１０３などの他のアプリケーションとは独立したプロセスで動作している。
【００３６】
インターフェースモジュール１０６ａ、ｂ、ｃは、コア部１０５と各周辺シミュレーションツールとの接続を仲介する機能を有する。また、周辺シミュレーションツールからのデータ出力に応じて配線モジュール１１１のデータ送受信メソッドを呼び出してデータを配線モジュール１１１に渡し、配線モジュール１１１からのデータ設定要求に応じて周辺シミュレーションツールにデータを送る。
【００３７】
配線モジュール１１１は、予め設定された配線定義情報をもとに、周辺シミュレーションツール間を接続する。また、配線モジュール１１１は、インターフェースモジュール１０６ａ、ｂ、ｃのそれぞれに対してデータ送受信のメソッドを提供する。
【００３８】
同期モジュール１１２は、各アプリケーションが有する固有の仮想時間における所定の仮想時間を１単位として、１単位ごとに複数アプリケーション間の仮想時間を一致させる同期処理を行う。同期モジュール１１２は、処理実行指示部１０８及び同期処理情報管理部１０９を備える。
【００３９】
処理実行指示部１０８は、各アプリケーションの同期間隔など同期処理を行うために必要な情報（以下、同期処理情報と称する。）１１３に従って、処理実行対象のアプリケーションに対して処理実行指示を通知する。処理動作指示とは、当該アプリケーションの同期間隔時間分の処理を実行するように、当該アプリケーションに対して出す指示である。同期処理情報１１３は、シミュレーション開始時に起動する全アプリケーションのアプリケーションＩＤ（各アプリケーションに割り当てられたＩＤ）と、同期間隔時間とを含む。また、同期処理情報１１３は、アプリケーションＩＤと各アプリケーションに設定された同期間隔を関連付けた形で扱われる。
【００４０】
ＣＰＵシミュレータ１０１、シミュレータアプリケーション１０２、及び機構部品シミュレータ１０３の各アプリケーションは、処理実行指示部１０８から出された処理実行指示に従って仮想時間分の処理を実行する。さらに、各アプリケーションは、当該処理が完了すると、処理実行指示部１０８に１同期間隔分の処理実行が完了したことを通知する。以下では、１同期間隔分の処理実行が完了したことを表す通知を実行完了通知と称する。
【００４１】
また、処理実行指示部１０８は、シミュレーションシステムの経過時間（以下、経過仮想時間と称する。）を管理している。経過仮想時間の管理方法については後述する。同期処理情報管理部１０９は、同期処理情報１１３を管理し、同期間隔制御部１１４を備える。
【００４２】
同期間隔制御部１１４は、外部インターフェース１０７を介して操作者から指定されたアプリケーションの同期間隔の情報である指定同期間隔情報１１５を備え、各アプリケーションの同期間隔を制御する。具体的には、同期間隔制御部１１４は、経過仮想時間及び指定同期間隔情報１１５に基づいて、各アプリケーションの同期間隔を決定し、処理実行指示部１０８が次の同期処理時に使用するアプリケーションの同期間隔を処理実行指示部１０８へ伝達する。この伝達される同期間隔が同期処理情報１１３となる。
【００４３】
外部インターフェース１０７は、操作者が設定したシミュレーションシステムを構成する複数のアプリケーションが連携動作を行うための各種情報を、コア部１０５の外部からコア部１０５に渡す際のインターフェースとなる。
【００４４】
ここで、図４Ａ及び図４Ｂを参照して、同期間隔の設定方法について、外部インターフェース１０７としてＧＵＩを使用する場合を例に挙げて説明する。図４Ａは、第１の実施形態に係るＧＵＩによって表示装置２０３上に表示される各プロセスの同期間隔設定のための表示画面４０１を示す図である。
【００４５】
表示画面４０１には、シミュレーションシステムを構成するアプリケーション名の表示欄４０２と同期間隔を指定可能な同期間隔設定欄４０３が含まれる。シミュレーションシステムの操作者は、同期間隔設定欄４０３上の設定対象の欄をマウス２０５により指定し、当該指定個所にキーボード２０４から各アプリケーションの同期間隔を数字で入力し、同期間隔を設定する。なお、各アプリケーションの同期間隔は、シミュレーション実行中か否かに関わらず操作者の任意のタイミングで変更可能である。操作者が同期間隔全ての設定を終了すると、「ＯＫ」ボタンをマウス２０５によりクリックすることで、同期間隔の情報が確定される。
【００４６】
表示画面４０１に表示された同期間隔の情報は、図４Ｂに示すような、各アプリケーションに割り当てられたアプリケーションＩＤと、設定された同期間隔時間を関連付けた情報として扱われる。図４Ｂは、第１の実施形態に係る指定同期間隔情報１１５を示す図である。そして、アプリケーションＩＤと同期間隔時間の情報は、外部インターフェース１０７を介して同期間隔制御部１１４の中に格納される。格納された情報が指定同期間隔情報１１５となる。また、同期処理情報１１３についても、図４Ｂに示す指定同期間隔情報１１５と同様に、シミュレーション開始時に起動されているアプリケーション全てのＩＤとそのアプリケーションの同期間隔が関連付けられた情報となっている。
【００４７】
なお、上述では外部インターフェース１０７としてＧＵＩを使用した例を挙げたが、ＧＵＩ以外に、外部ファイルインターフェースやプロセス間通信を使用し、コア部１０５が同期間隔情報を取得する方法もある。外部ファイルインターフェースを使用する場合、予め定義された書式に従って編集した、同期間隔を指定したファイルをユーザが用意し、外部ファイルインターフェースを介して処理動作情報が取得される。
【００４８】
プロセス間通信を使用する場合は、コア部１０５とプロセス間通信で接続されている不図示のシミュレーション実行環境指定のためのアプリケーション（コア部分と別プロセス）を使用し、ユーザがアプリケーションの同期間隔を指定する方法もある。
【００４９】
次に、図５を参照して、処理実行指示部１０８の処理の流れについて説明する。図５は、第１の実施形態に係る処理実行指示部１０８の処理手順を示すフローチャートである。
【００５０】
まず、ステップＳ５０１において、処理実行指示部１０８は、シミュレーションシステムの実行を開始した後、同期処理を行うための同期処理情報１１３を取得する。ここで、処理実行指示部１０８は、同期処理情報１１３を取得するために、同期間隔制御部１１４と以下の順序で情報のやり取りを行う。図６は、第１の実施形態に係る同期処理情報１１３を取得する際の処理手順を示す図である。まず、ステップＳ６０１において、処理実行指示部１０８は、同期間隔制御部１１４に、経過仮想時間を送信する。続いて、ステップＳ６０２において、処理実行指示部１０８は、同期間隔制御部１１４に、同期処理情報１１３を送信する。さらに、ステップＳ６０３において、同期間隔制御部１１４は、処理実行指示部１０８に、最新の同期間隔情報を送信する。ここで、処理実行指示部１０８は、同期間隔制御部１１４からの最新の同期間隔情報を受信し、次の同期処理で参照する同期処理情報１１３を更新する。
【００５１】
図５の説明に戻る。同期処理情報１１３を取得すると、ステップＳ５０２において、処理実行指示部１０８は、処理実行対象のプロセスに対して、処理動作指示を出す。具体的には、処理実行指示部１０８は、同期処理情報１１３中の同期間隔時間の倍数が経過仮想時間となっているプロセスを処理実行対象のプロセスとして判断する。なお、経過仮想時間が０ｍｓである（シミュレーション開始後、最初に処理動作指示を出す）場合は、起動されている全プロセスを処理実行対象プロセスと判断する。そして、処理実行対象のプロセスと判断した全プロセスに対して処理実行指示を出す。
【００５２】
次に、ステップＳ５０３において、処理実行指示部１０８は、経過仮想時間を更新する。具体的には、処理実行対象と判断したプロセスに対応する同期処理情報１１３の同期間隔を、最短同期間隔（以下、基準同期間隔と称する。）分だけ経過仮想時間として進める。
【００５３】
ステップＳ５０４において、処理実行指示部１０８は、次の同期処理への移行条件が成立したか否かを判定する。Ｓ５０４で次の同期処理への移行条件が成立している場合は、Ｓ５０１に戻る。ここで、移行条件とは、「同期間隔が経過仮想時間の約数となっている全プロセスから実行完了通知を受信したか否か」である。
【００５４】
次に、比較例となるシミュレーションシステムと本実施形態のシミュレーションシステムとを比較する。ここでは、後述する従来から知られている同期間隔伝達部１６０１を備えるシミュレーションシステムを比較例に挙げて説明する。図１６は、比較例となるシミュレーションシステムの全体構成を示す図である。図１６に示す機器制御シミュレータ１６００は、同期間隔伝達部１６０１を図１に示す本実施形態に係る機器制御シミュレータ１００に適用した構成となる。したがって、他の構成要素については説明を省略する。同期間隔伝達部１６０１は、ユーザに指定された各プロセスの同期間隔を処理実行指示部１０８に伝達する。
【００５５】
図７は、比較例となる同期間隔伝達部１６０１の処理手順を示すフローチャートである。図７に示すフローチャートでは、同期間隔伝達部１６０１が、上述した処理実行指示部１０８からの経過仮想時間を受信してから、処理実行指示部１０８への最新同期間隔情報を送信するまでの一連の処理を示す。
【００５６】
ステップＳ７０１において、同期間隔伝達部１６０１は、処理実行指示部１０８からの経過仮想時間通知を受信するまで待機する。経過仮想時間を受信すると、ステップＳ７０２において、同期間隔伝達部１６０１は、処理実行指示部１０８が直前の同期処理で使用した各プロセスの同期間隔情報を受信するまで待機する。同期間隔情報を受信すると、ステップＳ７０３において、同期間隔伝達部１６０１は、当該同期間隔伝達部１６０１で保持している指定同期間隔情報１１５を最新の同期間隔情報として処理実行指示部１０８へ送信し、処理を終了する。
【００５７】
以上のように、比較例となる同期間隔伝達部１６０１は、操作者から指定された各プロセスの同期間隔情報を何も変更、修正せずに、保持している指定同期間隔情報１１５を処理実行指示部１６０８に送信する。Ｓ７０１〜Ｓ７０３の処理フローでは、シミュレーション実行途中にプロセスの同期間隔の設定を変更した場合、同期間隔設定の変更後は複数プロセス間の同期が取れなくなってしまう。したがって、比較例のシミュレーションシステムでは結果的にはシミュレーション実行途中での同期間隔の設定を変更することができない。
【００５８】
次に、図８を参照して、本実施形態に係る同期間隔制御部１１４の処理フローについて説明する。図８は、第１の実施形態に係る同期間隔制御部１１４の処理手順を示すフローチャートである。ここでは、起動されているプロセス数をＮ個とし、各プロセスのＩＤは”１”から順に整数が割り当てられるものとする。また、図８に示すフローチャートは、同期間隔制御部１１４が、処理実行指示部１０８からの経過仮想時間を受信してから、処理実行指示部１０８への最新の同期間隔情報を送信するまでの一連の処理を示す。
【００５９】
ステップＳ８０１において、同期間隔制御部１１４は、処理実行指示部１０８からの経過仮想時間を受信するまで待機する。経過仮想時間を受信すると、ステップＳ８０２において、同期間隔制御部１１４は、受信した経過仮想時間を記憶する。以下、Ｓ８０２で記憶した経過仮想時間を記憶経過仮想時間と称する。
【００６０】
次に、ステップＳ８０３において、同期間隔制御部１１４は、処理実行指示部１０８が直前の同期処理で使用した各プロセスの同期間隔情報を受信するまで待機する。同期間隔情報を受信すると、ステップＳ８０４において、同期間隔制御部１１４は、Ｓ８０３で通知された同期間隔情報を記憶する。以下では、Ｓ８０４で記憶した同期間隔情報を記憶同期間隔と称する。
【００６１】
次に、ステップＳ８０５において、同期間隔制御部１１４は、処理対象となるプロセスＩＤを示すプロセスＩＤ変数ＩＤｎｕｍを”１”で初期化する。続いて、ステップＳ８０６において、同期間隔制御部１１４は、処理対象となるプロセスＩＤ変数ＩＤｎｕｍが起動されているプロセス数Ｎを越えているか否かを判定する。ここで、ＩＤｎｕｍ＜＝Ｎであれば、ステップＳ８０７に進み、プロセスＩＤ＝＝ＩＤｎｕｍの同期間隔について処理する。ステップＳ８０７において、同期間隔制御部１１４は、記憶経過仮想時間が指定同期間隔の倍数であるか否かを判定する。ここで、記憶経過仮想時間が同期間隔の倍数となっていれば、ステップＳ８０８に進み、記憶同期間隔のプロセスＩＤ＝＝ＩＤｎｕｍであるプロセスの同期間隔の情報を、指定同期間隔情報１１５のプロセスＩＤ＝＝ＩＤｎｕｍであるプロセスの同期間隔情報に更新する。その後、ステップＳ８０９において、同期間隔制御部１１４は、プロセスＩＤ変数ＩＤｎｕｍに１を加算し、ステップＳ８０６の処理に戻る。一方、Ｓ８０７で記憶経過仮想時間が同期間隔の倍数となっていなければ、ステップＳ８０８の処理を行わず、Ｓ８０９の処理へ進む。
【００６２】
また、ステップＳ８０６で、ＩＤｎｕｍ＜＝Ｎでないと判定すると、ステップＳ８１０に進む。ステップＳ８１０において、同期間隔制御部１１４は、全プロセスの同期間隔について更新が終了したと判断し、更新した記憶同期間隔（即ち、最新同期間隔）を処理実行指示部１０８に送信し、一連の処理が終了する。
【００６３】
以上のように、本実施形態に係る同期間隔制御部１１４は、処理実行指示部１０８から経過仮想時間が通知されるたびに上述の処理を行い、複数アプリケーション間での連携動作が途切れることのないように、起動中プロセスの同期間隔を制御する。これにより、本実施形態に係る機器制御シミュレータ１００は、シミュレーションの実行途中であっても、プロセスの同期間隔の設定を変更することができる。よって、操作者の要望に応じた、シミュレーションを実行することができる。
【００６４】
＜具体例＞
以下では、あるプロセスの同期間隔の設定を変更する際の、比較例となる同期間隔伝達部１６０１の処理と、本実施形態に係る同期間隔制御部１１４の処理とを、具体例を挙げて比較説明する。ここでは、具体例として、プロセス１、プロセス２、プロセス３（以下、プロセス１、プロセス２、及びプロセス３をＰ１，Ｐ２，Ｐ３と称する。）の３つのプロセスでシミュレーション実行する例について説明する。また、同期間隔を以下のように設定する。シミュレーション開始時では、Ｐ１：２ｍｓ、Ｐ２：２ｍｓ、Ｐ３：１０ｍｓとする。経過仮想時間が１００４ｍｓの場合には、Ｐ１：２ｍｓ、Ｐ２：１０ｍｓ、Ｐ３：１０ｍｓとする。
【００６５】
図９Ａは、比較例となる同期間隔伝達部１６０１を適用した場合に同期間隔を変更した結果を示す図である。一方、図９Ｂは、第１の実施形態に係る同期間隔制御部１１４を適用した場合に同期間隔を変更した結果を示す図である。図９Ａ及び図９Ｂでは経過仮想時間１０００ｍｓ以前のプロセス処理の流れについては図示を省略している。
【００６６】
図９Ａ及び図９Ｂに示すように、経過仮想時間１０００ｍｓ〜１００４ｍｓまでは同期間隔伝達部１６０１又は同期間隔制御部１１４が送信する最新の同期間隔に差異はない。しかし、Ｐ２の同期間隔の設定が操作者によって２ｍｓから１０ｍｓに変更された後で、同期間隔伝達部１６０１と、同期間隔制御部１１４とで送信される最新同期間隔に違いが生じる。
【００６７】
経過仮想時間１００６ｍｓ時点で、処理実行指示部１０８に送信する最新同期間隔を、同期間隔伝達部１６０１では１０ｍｓ、同期間隔制御部１１４では２ｍｓとしている。送信する最新同期間隔の差異は、両者の処理フローの違いによるものである。同期間隔伝達部１６０１は、操作者に設定された各プロセスの同期間隔（即ち、指定同期間隔）を何も修正、変更することなく最新同期間隔として処理実行指示部１０８に伝達している。一方で、本実施形態に係る同期間隔制御部１１４は、変更された指定同期間隔の設定をいつの時点からプロセスの同期間隔として有効とするかを判定し、最新同期間隔を決定している。この判定処理及び決定処理は、図８に示すステップＳ８０７、Ｓ８０８に相当する。上述の違いから、Ｐ２の同期間隔の設定変更によりＰ２の処理は、比較例となるシミュレーションシステムでは経過仮想時間１００６ｍｓ〜１０１０ｍｓまでの仮想時間４ｍｓ分が実行されない。一方で、本発明のシミュレーションシステムでは４ｍｓ分欠かすことなく実行される。
【００６８】
上述したように、比較例となるシミュレーションシステムでは、同期間隔が変更された時点の経過仮想時間から、経過仮想時間が変更された同期間隔の倍数となるまでの間の仮想時間分のプロセス処理が実行されないことになる。したがって、複数プロセス間での同期を正しくとることができなくなるため、シミュレーション実行途中にプロセスの同期間隔を変更することができない。しかし、本発明のシミュレーションシステムでは、同期間隔の設定が変更された時点の経過仮想時間から、経過仮想時間が変更された同期間隔の倍数となるまでの間は、プロセスの同期間隔を設定変更前の同期間隔として実行される。したがって、同期間隔の設定が変更されても複数プロセス間での同期を正しくとることができる。
【００６９】
シミュレーション実行途中でプロセスの同期間隔の変更が可能になると、シミュレーション実行中のある仮想時間でのみ精度よくシミュレーションを行いたい場合に有利である。つまり、連携するプロセスの同期間隔を小さくしてプロセス間連携を密に取りたい場合、所望の個所でのみプロセスの同期間隔設定を変更することで、シミュレーションのある仮想時間でのみ精度よくシミュレーションすることができる。よって、シミュレーション開始時から同期間隔を小さく設定してシミュレーションを実行する場合と比較すると、シミュレーション実行時に必要なプロセス間通信量を低減することができる。
【００７０】
例えば、プリンタ装置の紙搬送機能についてデバッグ作業を行う際に、機器制御シミュレーションの実行中にターゲットファームウエアが紙搬送制御を行っている時は、プロセス間連携を密に行い、精度良いシミュレーションが望まれる。一方、紙搬送制御を行っていない時は、それほど密なプロセス間連携を必要としない。したがって、本実施形態に係る機器制御シミュレータ１００によれば、ユーザはＣＰＵシミュレータ１０１が紙搬送制御を行っているか否かに応じ、各アプリケーションの同期間隔を変更するこで、所望のシミュレーションを実現することができる。
【００７１】
上述したように、本実施形態に係る機器制御シミュレータ１００では、シミュレーション実行中であっても、ユーザが所望のタイミングでシミュレータアプリケーションの同期間隔を変更することができる。つまり、シミュレーション実行目的には影響を与えないないプロセス間通信を省くことができ、結果として、シミュレーション実行環境資源の有効利用が可能になり、シミュレーションの利用効率を向上することができる。
【００７２】
＜第２の実施形態＞
次に、図１０乃至図１１Ｂを参照して、第２の実施形態について説明する。本実施形態は、シミュレーション実行途中で、あるプロセス処理が必要になったり、不要になった場合に操作者からの指示に従って特定プロセスの処理を実行させるか否かを変更する。
【００７３】
図１０は、第２の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。本実施形態に係る機器制御シミュレータ１０００は、比較例として説明した機器制御シミュレータの構成要素である同期処理情報管理部１０９に、処理動作伝達部１００１が加わった構成である。また、処理実行指示部１０８に新規機能を加えたものである。したがって、ここでは、図１又は図１６と同様の構成については、同一の番号を付し、詳細な説明を省略する。
【００７４】
本実施形態に係る機器制御シミュレータ１０００は、機器制御シミュレータ１６００の構成に加えて、処理動作伝達部１００１を備える。また、処理動作伝達部１００１は、処理動作情報１００２を含む。また、処理実行指示部１００３には、処理実行指示部１０８の有する機能に加えて、各アプリケーションの処理を実行するか否か（以下、処理動作と称する。）の情報に従って、当該アプリケーションに処理実行指示を出すか否かを決定する機能が含まれる。
【００７５】
処理動作伝達部１００１は、処理実行指示部１００３が同期処理を行う際に参照する同期処理情報を変更する。なお、処理動作伝達部１００１は、処理動作情報１００２に基づいて同期処理情報を変更する。
【００７６】
ここで、比較例における処理実行指示部１０８と、本実施形態に係る処理実行指示部１００３との違いを説明する。比較例のシミュレーションシステムでは、各アプリケーションの処理動作情報を有していない。よって、比較例における処理実行指示部１０８では、同期処理情報の各アプリケーションの同期間隔のみから、処理実行対象のアプリケーションを決定している。一方、本実施形態に係る処理実行指示部１００３は、同期処理情報の各アプリケーションの同期間隔と処理動作状態によって処理実行対象のアプリケーションを決定する。
【００７７】
以下では、図１１Ａ及び図１１Ｂを参照して、処理動作状態の設定方法について、外部インターフェース１０７としてＧＵＩを使用する場合を例に挙げて説明する。図１１Ａは、第２の実施形態に係るＧＵＩによって表示装置２０３上に表示される各プロセスの同期間隔設定のための表示画面１１０１を示す図である。
【００７８】
表示画面１１０１には、シミュレーションシステムを構成するアプリケーション名の表示欄１１０２と処理動作を指定可能な設定欄１１０３が含まれる。シミュレーションシステムの操作者は、処理動作の設定欄１１０３上の設定対象の欄をマウス２０５により指定し、当該指定個所に現れるプルダウンメニューからアプリケーションに設定する処理動作を選択する。これにより、処理動作の設定を行うことができる。なお、図１１Ａでは、マウス２０５が示す場所を矢印で表現している。操作者が全ての処理動作を設定すると、「ＯＫ」ボタンをマウス２０５でクリックし、処理動作の設定情報が確定される。
【００７９】
表示画面１１０１で設定された処理動作の設定情報は、シミュレーションシステムの中では、例えば、図１１Ｂに示すように、各アプリケーションに付けられたアプリケーションＩＤと、処理動作を示す処理動作番号とを含む。図１１Ｂは、第２の実施形態に係る処理動作情報１００２を示す図である。ここでは、処理動作が「実行」の場合を処理動作番号を”１”で示し、「休止」の場合の処理動作番号を”０”で示している。そして、アプリケーションＩＤと処理動作番号の情報は、処理動作伝達部１００１の処理動作情報１００２に格納される。そして、処理動作伝達部１００１は、アプリケーションＩＤと処理動作番号の情報に従って、同期処理情報１１３中の処理動作に関する情報を設定する。さらに、処理実行指示部１００３は、処理動作伝達部１００１が設定した同期処理情報１１３に従って各プロセスに処理動作の指示を出す。
【００８０】
なお、第１の実施形態における指定同期間隔情報と同様に、外部インターフェース１０７としてＧＵＩ以外に、外部ファイルインターフェースやプロセス間通信を使用することも可能である。ここで、外部ファイルとは、ユーザが予め定義された書式に従って編集した処理動作情報を含むファイルをいう。
【００８１】
本実施形態において、プリンタ装置の紙搬送機能についてデバッグ作業を行う場合について説明する。紙搬送機能についてデバッグ作業を行う場合、プリンタ装置のシミュレーション対象物を機器制御シミュレータ１０００の構成に置き換えると以下のようになる。プリンタ装置のＣＰＵは、ＣＰＵシミュレータ１０１となる。駆動物（モータ、クラッチなど）のドライバは、駆動物ドライバアプリケーションとして実現される。また、機構部品は、機構部品シミュレータ１０３となる。機構部品の動作表現は、機構部品シミュレーションの結果を表示するシミュレータアプリケーション１０２となる。
【００８２】
紙搬送制御のデバッグ作業では、機器制御シミュレータ１０００の実行中、ＣＰＵシミュレータ１０１が紙搬送制御を行っている時のみ紙搬送の様子を目視で確認し、紙搬送制御を行っていない時は目視確認を必要としない。この場合、操作者はＣＰＵシミュレータ１０１の紙搬送制御を行っているか否かに応じて、以下のようにシミュレータアプリケーション１０２の処理動作状態を変更する。
【００８３】
具体的には、操作者は、ＣＰＵシミュレータ１０１が紙搬送制御を行っている場合に、外部インターフェース１０７を介して、シミュレータアプリケーション１０２の処理動作状態を「実行」状態に変更する。一方、ＣＰＵが紙搬送制御を行っていない場合には、シミュレータアプリケーション１０２の処理動作状態を「休止」と設定する。ユーザが変更した機構部品シミュレーション結果表示アプリケーションの処理動作状態は、処理動作状態が変更される度に処理動作情報１００２が変更される。
【００８４】
処理実行指示部１００３は、当該アプリケーションの処理動作状態が「休止」であれば、当該アプリケーションに設定されている同期間隔を無効とし、処理実行指示を出さない。
【００８５】
上述したように、本実施形態によれば、ユーザが所望のタイミングでシミュレータアプリケーションの処理を実行するか否かの状態を変更することができる。つまり、シミュレーション実行目的には影響を与えないプロセス間通信を省くことができ、結果として、シミュレーション実行環境資源の有効利用が可能になり、シミュレーションの利用効率を上げることができる。
【００８６】
また、ここでは、比較例となる同期間隔伝達部１６０１を有する機器制御シミュレータ１６００に、処理動作状態を変更する構成を加えたが、もちろん第１の実施形態における同期間隔制御部１１４を有する機器制御シミュレータ１００に適用してもよい。これにより、シミュレーションの利用効率をより向上することができる。
【００８７】
＜第３の実施形態＞
次に、図１２及び図１３を参照して、第３の実施形態について説明する。第１の実施形態では、同期間隔制御部１１４を有し、アプリケーションの同期間隔をシミュレーション実行中に変更できる機器制御シミュレータについて説明した。また、第２の実施形態では、処理動作情報１００２を設け、処理実行指示部１００３に処理動作状態によって処理実行を指示する機器制御シミュレータについて説明した。
【００８８】
本実施形態は、シミュレーション実行中に各アプリケーションの同期間隔情報及び処理動作情報を変更でき、変更された両者の情報に従って、アプリケーション間の連携動作方法を変更する機器制御シミュレータについて説明する。
【００８９】
図１２は、第３の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。本実施形態に係る機器制御シミュレータ１２００は、同期処理情報管理部１０９に、処理動作伝達部１２０１及び同期間隔制御部１２０３を含む。したがって、ここでは、図１又は図１６と同様の構成については、同一の番号を付し、詳細な説明を省略する。
【００９０】
処理動作伝達部１２０１は、処理動作伝達部１００１の機能に加えて、同期間隔制御部１２０３に同期処理情報の処理動作情報１２０２を変更したことを通知する機能を含む。したがって、本実施形態に係る同期間隔制御部１２０３は、経過仮想時間、当該アプリケーションの指示同期間隔情報、及び、処理動作状態に基づいて、各アプリケーションの最新の同期間隔を決定する。
【００９１】
処理動作伝達部１２０１は、処理実行指示部１２０５が参照する同期処理情報１１３の当該アプリケーションの処理動作状態を変更する際、同期処理情報１１３中の処理動作状態を変更するとともに、同期間隔制御部１２０３に当該アプリケーションの処理動作状態の変更を通知する。以下では、この通知を処理動作変更通知と称する。処理動作変更通知は、処理動作を変更したアプリケーションのアプリケーションＩＤと変更後の処理動作状態を対応付けた情報を処理動作伝達部１２０１から同期間隔制御部１２０３に送信することで実現される。
【００９２】
処理動作変更通知を受信した同期間隔制御部１２０３は、処理動作変更通知の内容から、変更後の処理動作状態が「実行」である（「休止」から「実行」に変更された）場合、次に指定同期間隔の倍数となる経過仮想時間を算出する。以下では、この経過仮想時間を処理実行指示予定時間と称する。処理実行指示予定時間は、指定同期間隔の倍数であり、かつ、経過仮想時間より大きい値の中で現在の経過仮想時間との差分が最も小さい値となる。経過仮想時間が処理実行指示予定時間になるまでの間は、経過仮想時間と処理実行指示予定時間の差分と、指定同期間隔の最大公約数を最新の同期間隔とする。また、経過仮想時間が処理実行指示予定時間に到達した後は、指定同期間隔を最新の同期間隔として決定する。
【００９３】
図１３は、第３の実施形態に係る同期間隔制御部１２０３の処理手順を示すフローチャートである。ここでは、図８と同様の処理を行う処理ブロックについては、同一のステップ番号を付し説明を省略する。
【００９４】
Ｓ８０７で経過仮想時間が指定同期間隔の倍数でないと判定されると、ステップＳ１３０１において、同期間隔制御部１２０３は、当該プロセスについて処理動作が「実行」に変更されたという処理動作変更通知を受信しているか判定する。ここで、「実行」に変更されたという処理動作変更通知を受信している場合、同期間隔制御部１２０３は、処理をステップＳ１３０２に遷移させ、そうでない場合は処理をステップＳ８０９に遷移させる。
【００９５】
ステップＳ１３０２において、同期間隔制御部１２０３は、指定同期間隔を同期処理時に参照する同期間隔とした場合に、次に当該アプリケーションに処理実行指示が出される経過仮想時間はいつになるか（即ち、処理実行指示予定時間）を算出する。続いて、ステップＳ１３０３において、同期間隔制御部１２０３は、算出した処理実行指示予定時間と指定同期間隔の最大公約数を算出する。さらに、ステップＳ１３０４において、同期間隔制御部１２０３は、記憶同期間隔のアプリケーションＩＤ＝＝ＩＤｎｕｍの同期間隔情報をＳ１３０３で算出した同期間隔で更新し、処理をＳ８０９に遷移させる。
【００９６】
これにより、本実施形態では、処理動作状態が「休止」から「実行」に変更されたプロセスに対して、処理動作状態変更時に指定同期間隔でプロセス処理を行うことができない場合であっても、処理動作状態変更時からすぐにプロセス処理を実行できる。
【００９７】
上述したように、本実施形態に係る機器制御シミュレータ１２００は、シミュレーション実行途中にプロセスの同期間隔、処理動作状態の同期処理に関わる２つの設定状況に応じて適切にシミュレーションを実行する。これにより、シミュレーション実行目的には影響を与えないプロセス間通信を省くことができ、結果として、シミュレーション実行環境における資源の有効利用が可能になり、シミュレーションの利用効率を向上させることができる。
【００９８】
＜第４の実施形態＞
次に、図１４乃至図１５Ｂを参照して、第４の実施形態について説明する。第１乃至第３の実施形態では、プリンタ装置の機器制御シミュレーション実行時に、ユーザが外部インターフェース１０７を介して各アプリケーションの同期間隔情報又は処理動作情報の変更を行い、アプリケーション間の連携動作方法を変更していた。しかし、各アプリケーションの同期間隔や処理動作の変更がシミュレーションの動作状況と対応付けられる場合がある。
【００９９】
そこで、本実施形態に係る機器制御シミュレータ１４００は、操作者に指定されたシミュレーション実行状況とシステム内の実行状況が一致するか否かを判定し、一致した場合にプロセス間の連携動作方法を変更する。機器制御シミュレータ１４００は、予め定義されたプロセスの処理動作の変更条件に従って、各プロセスの同期間隔及び処理動作状態を変更し、変更された同期間隔及び処理動作状態に応じて、第１乃至第３の実施形態と同様に各プロセス間の同期処理を行う。
【０１００】
図１４は、第４の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。本実施形態に係る機器制御シミュレータ１４００は、機器制御シミュレータ１２００の構成に加えて、コア部１０５に、同期処理変更部１４０１（詳細は後述する）と、同期処理変更条件情報１４０２を備える。したがって、ここでは、図１４と同様の構成については、同一の番号を付し、詳細な説明を省略する。
【０１０１】
同期処理変更部１４０１は、機器制御シミュレータ１４００の動作状況が同期処理変更条件情報１４０２に一致すると、各アプリケーションの同期間隔及び処理動作を変更する。同期処理変更条件情報１４０２は、上述の実施形態で同期間隔や処理動作の情報を取得する方法と同様に、外部インターフェース１０７を介して取得される。同期処理変更条件情報１４０２は、各アプリケーションの同期間隔及び処理動作を変更するための条件である。同期処理変更部１４０１は、シミュレーション実行状況が同期処理変更条件情報１４０２に一致するか否かを判定し、一致している場合には、当該条件で指定同期間隔情報１２０４や処理動作情報１２０２といった同期処理に関する設定を変更する。
【０１０２】
図１５Ａは、第４の実施形態に係る指定同期間隔情報及び処理動作情報が操作者によって変更される様子を示す図である。図１５Ｂは、第４の実施形態に係る指定同期間隔情報及び処理動作情報が同期処理変更部によって変更される様子を示す図である。図１５Ａに示すように、ユーザが２つの情報を変更する場合、外部インターフェース１０７を介して当該情報が変更される。一方、図１５Ｂに示すように、同期処理変更部１４０１が２つの情報を変更する場合、同期処理変更部１４０１から当該情報が変更される。なお、ユーザ、同期処理変更部１４０１が同時に２つの情報を変更することはない。
【０１０３】
例えば、紙搬送制御についてターゲットファームウエアをデバッグする場合を想定する。この場合、ＣＰＵシミュレータ１０１が紙搬送制御を行う時のみ、各アプリケーション間のプログラム連携が密に行われる。また、ターゲットファームウエアの紙搬送制御を確認する場合、ユーザによって外部インターフェース１０７を介して、ＣＰＵシミュレータ１０１が紙搬送制御開始、及び紙搬送制御終了の条件（即ち、同期処理変更条件）が指定される。同期処理変更条件が指定されると、同期処理変更部１４０１は、条件が成立した場合に各アプリケーションの同期間隔を変更する。ここで、シミュレーション開始時に、ＣＰＵシミュレータ１０１のほか全アプリケーションの同期間隔が１０ｍｓと想定する。また、紙搬送制御開始時、終了時の条件を以下に記載する。
＜紙搬送開始時・・・「全アプリケーションの同期間隔を２ｍｓとする」条件＞
ＣＰＵシミュレータ１０１の信号Ａ＝＝ａ
＜紙搬送終了時・・・「全アプリケーションの同期間隔を１０ｍｓとする」条件＞
ＣＰＵシミュレータ１０１の信号Ａ＝＝ｚ
上記ａ及びｚは任意の数値である。
【０１０４】
配線モジュール１１１は、信号Ａの値に変化が発生した場合、予め設定された配線定義情報に基づいて周辺シミュレーションツール間を接続し、信号Ａに変化が発生したことを同期処理変更部１４０１に通知する。
【０１０５】
同期処理変更部１４０１は、信号Ａ＝＝ａの条件成立と判定すると、指定同期間隔情報１２０４を全アプリケーションについて同期間隔２ｍｓと変更する。一方、信号Ａ＝＝ｚの条件成立と判定すると、同期処理変更部１４０１は、指定同期間隔情報１２０４を全アプリケーションについて同期間隔１０ｍｓと変更する。変更された指定同期間隔情報１２０４を同期処理情報１１３に反映させる手順については第３の実施形態で説明したため省略する。
【０１０６】
このように、本実施形態では、予め定義されたプロセス間の連携動作方法の変更条件に従って、システム内でシミュレーション実行状況に応じてプロセス間の連携動作方法を変更する。これにより、ユーザがシミュレーション実行状況を逐次確認することなく、シミュレーション使用目的を満たすために適切なアプリケーションを実行することできる。よって、シミュレーション実行環境資源の有効利用が可能になるとともに、ユーザのシミュレーション実行時の手間を低減し、シミュレーション実行効率が向上させることができる。
【０１０７】
＜他の実施形態＞
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム又は装置に供給し、それらのコンピュータ（ＣＰＵやＭＰＵ等）が格納されたプログラムコードを読出し実行しても本発明の目的は達成される。
【０１０８】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１０９】
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳ（オペレーティングシステム）に供給するスクリプトデータ等、プログラムの形態を問わない。
【０１１０】
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等がある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ等がある。
【０１１１】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１１２】
他に、プログラムの供給方法として、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、ホームページ本発明のコンピュータプログラムをＨＤＤ等の記録媒体にダウンロードすることもできる。もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数の操作者に対してダウンロードさせるＷＷＷサーバやｆｔｐサーバ等も本発明の請求項に含まれるものである。
【０１１３】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納して操作者に配布することも可能である。その場合、所定の条件をクリアした操作者に対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせることができる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現する。
【０１１４】
また、コンピュータが読み出したプログラムコードを実行するだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働するＯＳ等が実際の処理の一部又は全部を行うことでも実現される。
【０１１５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込む方法も可能である。その場合、プログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行うことでも実現される。
【０１１６】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【図面の簡単な説明】
【０１１７】
【図１】第１の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。
【図２】第１の実施形態に係る情報処理装置の構成例を示す図である。
【図３】第１の実施形態に係るターゲット装置であるプリンタ装置の機構部品シミュレーションの結果を表示するアプリケーションの表示例を示す図である。
【図４Ａ】第１の実施形態に係るＧＵＩによって表示装置２０３上に表示される各プロセスの同期間隔設定のための表示画面４０１を示す図である。
【図４Ｂ】第１の実施形態に係る指定同期間隔情報１１５を示す図である。
【図５】第１の実施形態に係る処理実行指示部１０８の処理手順を示すフローチャートである。
【図６】第１の実施形態に係る同期処理情報１１３を取得する際の処理手順を示す図である。
【図７】比較例となる同期間隔伝達部１６０１の処理手順を示すフローチャートである。
【図８】第１の実施形態に係る同期間隔制御部１１４の処理手順を示すフローチャートである。
【図９Ａ】比較例となる同期間隔伝達部１６０１を適用した場合に同期間隔を変更した結果を示す図である。
【図９Ｂ】第１の実施形態に係る同期間隔制御部１１４を適用した場合に同期間隔を変更した結果を示す図である。
【図１０】第２の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。
【図１１Ａ】第２の実施形態に係るＧＵＩによって表示装置２０３上に表示される各プロセスの同期間隔設定のための表示画面１１０１を示す図である。
【図１１Ｂ】第２の実施形態に係る処理動作情報１００２を示す図である。
【図１２】第３の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。
【図１３】第３の実施形態に係る同期間隔制御部１２０３の処理手順を示すフローチャートである。
【図１４】第４の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。
【図１５Ａ】第４の実施形態に係る指定同期間隔情報及び処理動作情報が操作者によって変更される様子を示す図である。
【図１５Ｂ】第４の実施形態に係る指定同期間隔情報及び処理動作情報が同期処理変更部によって変更される様子を示す図である。
【図１６】比較例となるシミュレーションシステムの全体構成を示す図である。
【符号の説明】
【０１１８】
１０１：ＣＰＵシミュレータ
１０２：シミュレータアプリケーション
１０３：機構モデルシミュレータ
１０４：シミュレータハブ
１０５：シミュレータハブのコア部
１１１：配線モジュール
１１２：同期モジュール
１０６：インターフェースモジュール
１０７：外部インターフェース
１０８：処理実行指示部
１１３：同期処理情報
１０９：同期処理情報管理部
１１４：同期間隔制御部
１１５：指定同期間隔情報
２０１：情報処理装置
２０２：本体部
２０３：表示装置
２０４：キーボード
２０５：マウス
２０６：ＣＰＵ
２０７：主記憶装置
２０８：ハードディスク
【図１】
2010033192.tif 000003
【図２】
2010033192.tif 000004
【図３】
2010033192.tif 000005
【図４Ａ】
2010033192.tif 000006
【図４Ｂ】
2010033192.tif 000007
【図５】
2010033192.tif 000008
【図６】
2010033192.tif 000009
【図７】
2010033192.tif 000010
【図８】
2010033192.tif 000011
【図９Ａ】
2010033192.tif 000012
【図９Ｂ】
2010033192.tif 000013
【図１０】
2010033192.tif 000014
【図１１Ａ】
2010033192.tif 000015
【図１１Ｂ】
2010033192.tif 000016
【図１２】
2010033192.tif 000017
【図１３】
2010033192.tif 000018
【図１４】
2010033192.tif 000019
【図１５Ａ】
2010033192.tif 000020
【図１５Ｂ】
2010033192.tif 000021
【図１６】
2010033192.tif 000022