(57)【要約】【課題】シミュレーション実行時における仮想信号の変化頻度に応じて、異なる同期方法を動的に選択し、シミュレーションの精度が必要な場合のみ精度を優先して、シミュレーションの精度と実行速度とを公的に調整する仕組みを提供する。【解決手段】情報処理装置は、検証対象のターゲットコードを実行するターゲットＣＰＵの動作をシミュレーションするＣＰＵシミュレータと、ターゲットＣＰＵの制御対象装置の動作をシミュレーションするための複数のアプリケーションと、ＣＰＵシミュレータと、複数のアプリケーションとのシミュレーション動作を同期させるシミュレータハブとを備える。シミュレータハブは、固有の仮想時間ごとにＣＰＵシミュレータと複数のアプリケーションとの同期処理を実行し、所定の仮想信号において、時間同期部による同期処理が実行されてから第１時間が経過するまでに第１回数の信号変化が発生すると、所定の仮想信号の信号変化に合わせて同期処理を実行する。【選択図】  図４
2015197815.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
検証対象のターゲットコードを実行するターゲットＣＰＵの動作をシミュレーションするＣＰＵシミュレータと、
前記ターゲットＣＰＵの制御対象装置の動作をシミュレーションするための複数のアプリケーションと、
前記ＣＰＵシミュレータと、前記複数のアプリケーションとのシミュレーション動作を同期させるシミュレータハブと
を備え、
前記シミュレータハブは、
固有の仮想時間ごとに前記ＣＰＵシミュレータと前記複数のアプリケーションとの同期処理を実行する時間同期手段と、
所定の仮想信号において、前記時間同期手段による同期処理が実行されてから第１時間が経過するまでに第１回数の信号変化が発生すると、該所定の仮想信号の信号変化に合わせて同期処理を実行する信号同期手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記信号同期手段は、前記所定の仮想信号において、該信号同期手段による同期処理が実行されてから第２時間が経過するまでに第２回数の信号変化が発生しないと、該所定の仮想信号に合わせた同期処理を終了することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記信号同期手段による同期処理が開始されると、前記時間同期手段による同期処理の実行を制限し、前記信号同期手段による同期処理が終了すると、前記時間同期手段による同期処理を実行させる制御手段をさらに備えることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第２時間を計測するタイマを備え、
前記信号同期手段は、同期処理を実行するたびに前記タイマを更新することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記制御対象装置は、画像処理装置であり、
前記仮想信号は、記録媒体を搬送するためのステッピングモータの駆動パルスであることを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
情報処理装置であって、
検証対象のターゲットコードを実行するターゲットＣＰＵの動作をシミュレーションするＣＰＵシミュレータと、
前記ターゲットＣＰＵの制御対象装置の動作をシミュレーションするための複数のアプリケーションと、
前記ＣＰＵシミュレータと、前記複数のアプリケーションとのシミュレーション動作を同期させるシミュレータハブと
を備え、
前記シミュレータハブは、
固有の仮想時間ごとに前記ＣＰＵシミュレータと前記複数のアプリケーションとの同期処理を実行する時間同期手段と、
複数の仮想信号において、前記時間同期手段による同期処理が実行されてから第１時間が経過するまでに、該複数の仮想信号における信号変化の発生回数の合計が、第１回数に達すると、該複数の仮想信号の信号変化に合わせて同期処理を実行する信号同期手段と
を備えることを特徴とする情報処理装置。
【請求項７】
前記信号同期手段は、前記複数の仮想信号において、該信号同期手段による同期処理が実行されてから第２時間が経過するまでに、該複数の仮想信号における信号変化の発生回数の合計が、第２回数に達しないと、該複数の仮想信号に合わせた同期処理を終了することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
検証対象のターゲットコードを実行するターゲットＣＰＵの動作をシミュレーションするＣＰＵシミュレータと、
前記ターゲットＣＰＵの制御対象装置の動作をシミュレーションするための複数のアプリケーションと、
前記ＣＰＵシミュレータと、前記複数のアプリケーションとのシミュレーション動作を同期させるシミュレータハブと
を備える情報処理装置の制御方法であって、
前記シミュレータハブにおいて、
時間同期手段が、固有の仮想時間ごとに前記ＣＰＵシミュレータと前記複数のアプリケーションとの同期処理を実行する時間同期工程と、
信号同期手段が、所定の仮想信号において、前記時間同期工程による同期処理が実行されてから第１時間が経過するまでに第１回数の信号変化が発生すると、該所定の仮想信号の信号変化に合わせて同期処理を実行する信号同期工程と
を実行することを特徴とする情報処理装置の制御方法。
【請求項９】
検証対象のターゲットコードを実行するターゲットＣＰＵの動作をシミュレーションするＣＰＵシミュレータと、
前記ターゲットＣＰＵの制御対象装置の動作をシミュレーションするための複数のアプリケーションと、
前記ＣＰＵシミュレータと、前記複数のアプリケーションとのシミュレーション動作を同期させるシミュレータハブと
を備える情報処理装置の制御方法であって、
前記シミュレータハブにおいて、
時間同期手段が、固有の仮想時間ごとに前記ＣＰＵシミュレータと前記複数のアプリケーションとの同期処理を実行する時間同期工程と、
信号同期手段が、複数の仮想信号において、前記時間同期工程による同期処理が実行されてから第１時間が経過するまでに、該複数の仮想信号における信号変化の発生回数の合計が、第１回数に達すると、該所定の仮想信号の信号変化に合わせて同期処理を実行する信号同期工程と
を実行することを特徴とする情報処理装置の制御方法。
【請求項１０】
請求項１乃至７の何れか１項に記載の情報処理装置としてコンピュータを機能させるための該コンピュータで読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来のシミュレーションシステムでは、複数のアプリケーションのプロセスを連携して動作させるために、システムの開始から終了まで一定の時間間隔で同期処理を行っている。しかし、このように一定の時間間隔で同期処理を行う時間同期方法では、擬似ハードウェアから入力される仮想信号の変化や割り込み要求の発生時刻に関するシミュレーション精度が低いという課題がある。この課題を解決するために、時間同期方法の同期時間間隔を短くしたり、仮想信号が変化した時に同期処理を行う信号同期方法を採用したりするといった対策が考えられている。
【０００３】
しかし、同期の時間間隔を短くすると同期処理が多発し、シミュレーションの実行速度が低下してしまう。また、上記信号同期方法の場合、仮想信号の変化ごとに同期処理を行うため、複数の信号変化時に同期処理を行う場合や、単一の信号変化時に同期処理を行う場合でも信号変化の頻度が高くなると、同期処理が多発しシミュレーションの実行速度が低下してしまう。
【０００４】
そこで、特許文献１では、ユーザからの指定、又はシミュレーションシステム内部のシミュレーション実行状況に応じて、所望のタイミングで同期処理の時間間隔を変更する手法が提案されている。これにより、特許文献１では、シミュレーション実行中の特定の仮想時間でのみ、同期処理の時間間隔を短くしてシミュレーションを実行することができる。よって、シミュレーションの開始から終了まで同期処理の同期間隔を短くして同期処理を行う場合に比べて、シミュレーション実行速度の低下を低減することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−３３１９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来技術には以下に記載する問題がある。上記従来技術では、シミュレーション実行中に所望のタイミングで同期処理の時間間隔を変更して任意の仮想時間の間だけシミュレーションの精度を高めることができる。しかし、一定の時間間隔で同期処理を行うため、仮想信号の変化や割り込み要求の発生と一致した同期処理を行うことは困難である。
【０００７】
上記従来技術によるシミュレーションでは、信号変化に応じて同期処理を行う必要がある際は、信号同期部で同期処理を行っている。しかし、上述したようにシミュレーションの開始から終了まで信号同期部で同期処理を行うと、シミュレーション実行速度の低下を招く可能性がある。また、信号同期部のみで同期処理を行っていると、同期のトリガーとなる信号に変化が発生しない場合、その間は同期不能となってしまうといった課題がある。
【０００８】
本発明は、上述の問題に鑑みて成されたものであり、シミュレーション実行時における仮想信号の変化頻度に応じて、異なる同期方法を動的に選択し、シミュレーションの精度が必要な場合には精度を優先するように、シミュレーションの精度と実行速度とを調整する仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、情報処理装置であって、検証対象のターゲットコードを実行するターゲットＣＰＵの動作をシミュレーションするＣＰＵシミュレータと、前記ターゲットＣＰＵの制御対象装置の動作をシミュレーションするための複数のアプリケーションと、前記ＣＰＵシミュレータと、前記複数のアプリケーションとのシミュレーション動作を同期させるシミュレータハブとを備え、前記シミュレータハブは、固有の仮想時間ごとに前記ＣＰＵシミュレータと前記複数のアプリケーションとの同期処理を実行する時間同期手段と、所定の仮想信号において、前記時間同期手段による同期処理が実行されてから第１時間が経過するまでに第１回数の信号変化が発生すると、該所定の仮想信号の信号変化に合わせて同期処理を実行する信号同期手段とを備えることを特徴とする。
【００１０】
また、本発明は、情報処理装置であって、検証対象のターゲットコードを実行するターゲットＣＰＵの動作をシミュレーションするＣＰＵシミュレータと、前記ターゲットＣＰＵの制御対象装置の動作をシミュレーションするための複数のアプリケーションと、前記ＣＰＵシミュレータと、前記複数のアプリケーションとのシミュレーション動作を同期させるシミュレータハブとを備え、前記シミュレータハブは、固有の仮想時間ごとに前記ＣＰＵシミュレータと前記複数のアプリケーションとの同期処理を実行する時間同期手段と、複数の仮想信号において、前記時間同期手段による同期処理が実行されてから第１時間が経過するまでに、該複数の仮想信号における信号変化の発生回数の合計が、第１回数に達すると、該複数の仮想信号の信号変化に合わせて同期処理を実行する信号同期手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、シミュレーション実行時における仮想信号の変化頻度に応じて、異なる同期方法を動的に選択し、シミュレーションの精度が必要な場合には精度を優先するように、シミュレーションの精度と実行速度とを調整することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態に係るプログラム連携システムの機能構成図。
【図２】第１の実施形態に係るシミュレーション対象装置のプリンタ装置の断面図。
【図３】第１の実施形態に係るプログラム連携システムの同期処理の一例を示すフローチャート。
【図４】第１の実施形態に係るプログラム連携システムの、シミュレーション実行中に各アプリケーションの同期処理を行う際のタイミングチャート。
【図５】第２の実施形態に係るプログラム連携システムの同期処理の一例を示すフローチャート。
【図６】第２の実施形態に係るプログラム連携システムの、シミュレーション実行中に各アプリケーションの同期処理を行う際のタイミングチャート。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１４】
＜第１の実施形態＞
以下では、図１乃至図４を参照して、本発明の第１の実施形態について説明する。本実施形態は、複数の独立プロセスからなる機器制御シミュレーションシステムにおいて、各プロセスがシミュレーション上の仮想時間で同期して機器制御シミュレーションを行う際に、所定の仮想信号の変化頻度に応じて、各プロセスの同期方法を選択するものである。また、本実施形態に係るプログラム連携システムの機器制御シミュレーションは、コンピュータシステム（情報処理装置）で実行されるプログラムとして実現されうる。
【００１５】
＜機能構成＞
まず、図１を参照して、本実施形態に係るプログラム連携システムの機能構成について説明する。図１に示すように、このプログラム連携システムは、システムを構成する３つのアプリケーションソフトを備える。具体的には、ＣＰＵシミュレータ１００、シミュレータアプリケーション２００、及び機構部品シミュレータ３００と、プロセスを接続するためのシミュレータハブ（以下、ＨＵＢと記す。）４００を備える。
【００１６】
ＣＰＵシミュレータ１００、シミュレータアプリケーション２００、及び機構部品シミュレータ３００は、それぞれがＯＳ上で個別に動作するアプリケーションソフトであり、それぞれが独立したプロセスとして存在する。また、シミュレータアプリケーション２００は、画像形成に関する機能によって複数の独立プロセスで構成されてもよい。
【００１７】
本実施形態によれば、ＣＰＵシミュレータ１００は、ダイナミックリンクライブラリで提供される外部モジュールとの間で共有メモリと、関数の直接呼出し方式による外部インターフェースを有している。また、シミュレータアプリケーション２００及び機構部品シミュレータ３００は、ソケットインターフェースによるプロセス間通信方式による外部インターフェースを有している。
【００１８】
ＨＵＢ４００は、ＣＰＵシミュレータ１００から起動されるサブプロセスとして動作する。ＣＰＵシミュレータ１００は、各種イベント発生時に、予め指定されたＨＵＢ４００のコールバック関数を呼び出す。前記ＨＵＢ４００を構成する配線モジュール４１０、同期処理実行部４２０の各モジュールはそれぞれ独立したスレッドとして動作し、ＣＰＵシミュレータ１００の起動時に呼び出されるコールバック関数から各スレッドが起動される。シミュレータアプリケーション２００、機構部品シミュレータ３００は、ＯＳの提供するアプリケーションプログラムインターフェースを使用してソケットインターフェースを介してＨＵＢ４００との接続を行う。
【００１９】
次に、各構成要素の機能について説明する。ＣＰＵシミュレータ１００は、シミュレーション対象となるＣＰＵ（以下、ターゲットＣＰＵと称する。）の動作をコンピュータシステム上で実現する機能である。ここで、ターゲットＣＰＵとは、コンピュータシステムに搭載されているＣＰＵではなく、検証対象となる装置に搭載され、ターゲットコードを実行するためのＣＰＵのことである。本実施形態においては、シミュレーション対象の装置とは図２に示すプリンタ装置を指す。
【００２０】
ＣＰＵシミュレータ１００は、シミュレーションターゲットＣＰＵの制御プログラムに従って、ターゲットＣＰＵの端子に対応して定義された仮想入力端子の情報を読み込み、仮想出力端子を制御する。上述のように、ＣＰＵシミュレータ１００のイベント毎に、ＨＵＢ４００のコールバック関数が呼び出される。ＣＰＵシミュレータ１００がコールバック関数を呼び出す例としては、ＣＰＵシミュレータ１００の処理状態に関するもの（プロセス起動、初期化終了等）や、ターゲットＣＰＵの動作シミュレーション上のイベント（メモリアクセス、割り込み発生等）がある。
【００２１】
シミュレータアプリケーション２００は、機器制御シミュレーションシステムによる各種試験のための支援プログラムであり、仮想装置に対する各種働きかけの設定や、シミュレーションの結果を解析、表示、保存する機能を有する。シミュレーション対象となる実際の装置は、その装置を使用するオペレータやその装置に接続されたコンピュータシステム等により外部から様々な働きかけ（以下、外部事象と称する。）を受けて動作する。シミュレータアプリケーション２００は、これら外部事象のうち、機構部品シミュレータ３００で設定されるメカニカルな外部事象以外で、ユーザから指定されるプリント開始ボタンの仮想シミュレーション動作等を擬似的に設定する仕組みを提供する。
【００２２】
機構部品シミュレータ３００は、制御対象装置に含まれる、アクチュエータ、センサを含む複数の部品からなる機械装置の機構部品、機構部品間の干渉、連携、及びアクチュエータとセンサとに接続される信号をコンピュータ上でシミュレーションする機能である。なお、本実施形態では、制御対象装置として画像処理装置を一例に説明する。各機構部品には、ユーザにより形状、種類、動作、機構部品間の干渉や連携条件等、機構部品のシミュレーションに関する情報が定義される。更に、センサ、アクチュエータについては外部信号定義が行われる。また、機構部品にはシミュレーション対象となる装置の構成物ではないもので、プリンタ装置における記録媒体（用紙等）、装置の動作シミュレーションに必要なものも含まれる。
【００２３】
本実施形態では、図２に示すようなプリンタ装置３０１のプリント動作をシミュレーションする。具体的には、ユーザからシミュレータアプリケーション２００上のプリント開始ボタンが操作されることで、給紙カセット３０２に積載された用紙３０３を仮想的に給紙する。センサ３０４、搬送ローラ３０５の順で搬送した後、用紙に画像形成し、搬送ローラ３０６によって搬送して排紙口３０７へ用紙３０３を排紙するといった機構部品動作のシミュレーションを行う。
【００２４】
機構部品シミュレータ３００は、ＣＰＵシミュレータ１００からＨＵＢ４００を介して送られてきたアクチュエータ動作信号に対応して、該当するアクチュエータの機構部品動作のシミュレーションを行う。アクチュエータに連結された機構部品は、アクチュエータの動作に関連付けて定義された動きで動作シミュレーションする。また、機構部品間の干渉、連携定義に従い、関連する全ての機構部品の動作をシミュレーションする。
【００２５】
これら機構部品の動作シミュレーションの結果、センサとして定義された機構部品に予め定義された外部事象が発生すると、外部事象に応じたセンサ信号を発生させ、そのセンサ信号は、ＨＵＢ４００を介してＣＰＵシミュレータ１００に送信される。なお、ＣＰＵシミュレータ１００、シミュレータアプリケーション２００、及び機構部品シミュレータ３００の各アプリケーションは、同期処理実行部４２０の処理動作指示に従って処理を行う。処理動作指示の詳細については後述する。
【００２６】
ＨＵＢ４００は、コア部４０１と、インターフェースモジュール４０２乃至４０４とから構成される。コア部４０１は、配線モジュール４１０と、同期処理実行部４２０とから構成され、システム構成に合わせたＨＵＢモジュールの設定、各アプリケーション間のデータ伝送管理、同期処理、及びデータ伝送履歴の取得を行う機能を有する。なお、ＨＵＢ４００は、シミュレータアプリケーション２００や、機構部品シミュレータ３００などの他のアプリケーションとは独立したプロセスで動作している。
【００２７】
インターフェースモジュール４０２乃至４０４は、コア部４０１と、各アプリケーションとの接続を仲介する。また、各アプリケーションのデータ出力に応じ、配線モジュール４１０のデータ送受信メソッドを呼び出してデータを配線モジュール４１０に渡し、配線モジュール４１０のデータ設定要求に応じて各アプリケーションにデータを送る。
【００２８】
配線モジュール４１０は、予め設定された配線定義情報をもとに各アプリケーション間を接続する。また、配線モジュール４１０は、インターフェースモジュール４０２乃至４０４のそれぞれに対してデータ送受信のメソッドを提供する。
【００２９】
同期処理実行部４２０は、各アプリケーションがもつ固有の仮想時間の一定の時間間隔を一単位として、一単位ごとに複数のアプリケーション間の仮想時間を一致させて同期処理を行う時間同期部４２１を備える。さらに、同期処理実行部４２０は、ＣＰＵシミュレータ１００から送られてくる所定の仮想信号入力に応じて、複数のアプリケーション間の動作を一致させて同期処理を行う信号同期部４２２を備える。
【００３０】
時間同期部４２１が有する同期時間情報４２３には、上記一単位の時間が記録されており、同一単位の時間間隔で同期処理を行うために用いられる。同期時間情報４２３に記録された時間は、不図示の外部インターフェースから、ユーザによって同期時間を指定することも可能である。また、同期時間情報４２３に記録された時間は、アプリケーション毎に別々の時間間隔で同期処理を行うために、複数の時間を記録することも可能である。本実施形態においては、各アプリケーションの同期時間間隔は全て同じ時間間隔として定義する。
【００３１】
信号同期部４２２が有する同期信号情報４２４には、同期処理の基準となる仮想信号情報が記録されており、同期信号情報４２４に記録されている仮想信号の変化に応じて同期処理を行うために用いられる。同期信号情報４２４は、ユーザがシミュレータアプリケーション２００から指定をしてもよいし、デフォルトの仮想信号情報を予め定義しておいてもよい。また、全ての仮想信号情報の変化に応じて同期処理を行うことも可能である。本実施形態においては、画像処理装置において記録媒体を搬送するための仮想ステッピングモータの駆動パルスの信号変化を同期信号情報４２４として定義する。
【００３２】
同期処理実行部４２０は、各アプリケーションソフトの同期処理を行うために必要な情報である同期時間情報４２３又は同期信号情報４２４に従って同期処理を行う。この際、各アプリケーションソフトに対して処理動作指示を出す。上記処理動作指示とは、時間同期部で同期処理を行う場合、同期時間情報４２３に従い各アプリケーションの同期時間間隔分の処理を実行するよう、各アプリケーションに対して出す指示である。また、信号同期部で同期処理を行う場合、同期信号情報４２４に記録された仮想信号の変化がＣＰＵシミュレータ１００から入力された際、仮想信号が変化した分の処理を実行するよう、各アプリケーションに対して出す指示である。
【００３３】
ＣＰＵシミュレータ１００、シミュレータアプリケーション２００、及び機構部品シミュレータ３００の各アプリケーションソフトは、同期処理実行部４２０から出された処理動作指示に従って処理を実行する。その後、各アプリケーションソフトは、処理が完了したタイミングで、同期処理実行部４２０に一同期分の処理実行が完了したことを通知する。
【００３４】
＜同期処理＞
次に、図３を参照して、本実施形態に係るプログラム連携システムの同期処理の処理手順について説明する。ここで説明する処理は、同期処理実行部４２０、時間同期部４２１、及び信号同期部４２２に対応する処理である。本フローチャートの処理は、ＨＵＢ４００によって実行される。
【００３５】
Ｓ４０において、同期処理実行部４２０は、プログラム連携システムの実行を開始した後、同期処理を行うために、同期時間情報４２３から一同期の時間間隔ｔ１を取得する。続いて、Ｓ４１において、同期処理実行部４２０は、同期信号情報４２４から同期対象の仮想信号情報を取得する。その後、Ｓ４２において、同期処理実行部４２０は、時間同期部４２１によって同期処理を開始する。
【００３６】
Ｓ４３において、同期処理実行部４２０は、ＣＰＵシミュレータ１００、シミュレータアプリケーション２００、及び機構部品シミュレータ３００の各アプリケーションに対し、時間同期部４２１による一同期分のシミュレーション処理動作を指示する。各アプリケーションは、一同期分の処理動作を完了するとＨＵＢ４００に対して処理動作の完了を通知する。
【００３７】
Ｓ４４において、同期処理実行部４２０は、同期信号情報４２４から取得した同期対象の仮想信号が第１回数以上変化したか否かを判定する。ここで、第１回数とは任意の回数であり、予め定義されていることが望ましい。第１回数以上変化していない場合はＳ４５の処理へ進み、変化していればＳ４６へ進む。Ｓ４５において、同期処理実行部４２０は、全てのアプリケーションから一同期分の処理完了を通知されたか否かを判定する。全てのアプリケーションから完了通知を受信した場合、Ｓ４３に戻り、同期処理実行部４２０は、再度各アプリケーションに対して、時間同期部４２１による一同期分の処理動作を指示する。一方、それ以外の場合はＳ４４に処理を戻す。
【００３８】
同期対象の仮想信号が第１回数以上変化した場合はＳ４６に進み、同期処理実行部４２０は、同期対象の仮想信号変化の頻度が高くなったと判断し、信号同期部４２２を基準とした同期処理を開始する。Ｓ４７において、同期処理実行部４２０は、同期対象の仮想信号が変化した分、各アプリケーションにシミュレーション処理動作を指示する。ここで、同期処理実行部４２０は、時間同期部４２１による同期処理を、ｔ１以上の同期間隔ｔ２で並行して実行する。
【００３９】
Ｓ４８において、同期処理実行部４２０は、各アプリケーションに処理動作を指示した後、同期対象の仮想信号が第２回数変化する前にｔ２時間が経過したか否かを判定する。ｔ２時間が経過していない場合はＳ４９の処理へ進み、ｔ２時間が経過している場合は同期対象の仮想信号変化の頻度が低くなったと判断し、信号同期部４２２による同期処理を停止し、Ｓ４２へ戻る。なお、第１回数及び第２回数の具体例については図４を用いて後述する。
【００４０】
Ｓ４９において、同期処理実行部４２０は、各アプリケーションから、信号同期部４２２による一同期分の処理動作が完了したことを示す通知を受信したか否かを判定する。受信していない場合は処理をＳ４８に戻し、全てのアプリケーションから一同期分の処理完了が通知されるとＳ５０に進む。
【００４１】
Ｓ５０において、同期処理実行部４２０は、同期対象の仮想信号が第２回数変化したか否かを判定する。同期対象の仮想信号が第２回数変化した場合、同期処理実行部４２０は、再度各アプリケーションに対して、信号同期部４２２による一同期分の処理動作を指示し、以降Ｓ４７乃至Ｓ５０を繰り返す。
【００４２】
＜タイミングチャート＞
次に、図４を使用して、本実施形態における同期処理実行部４２０の具体的な処理タイミングについて説明する。図４は、シミュレーション実行中に、時間同期部４２１による同期処理実行中に、仮想信号変化の頻度が高くなった際に、信号同期部４２２による同期処理実行を開始するタイミングを示す。仮想信号として、不図示の仮想ステッピングモータのパルス変化と、仮想センサ３０４のＯＮ、ＯＦＦ変化を示す。また、アプリケーション１とアプリケーション２のそれぞれが、経過仮想時間と共にシミュレーション動作処理を行っており、ＨＵＢ４００が各アプリケーションの同期処理を行っている。アプリケーション１とアプリケーション２は、本実施形態においてＣＰＵシミュレータ１００、シミュレータアプリケーション２００、及び機構部品シミュレータ３００のいずれであってもよい。
【００４３】
図４の５０１及び５０２は、図２における給紙対象用紙３０３が、仮想センサ３０４に到達した時に仮想センサ３０４の信号が立ち上がり、仮想ステッピングモータの駆動を加速して用紙３０３の搬送速度を変化させている状態を示している。経過仮想時間１０００ｍｓｅｃ以前のシミュレーション処理の流れについては図示を省略している。
【００４４】
ここで、ｔ１を４ｍｓｅｃ、ｔ２を６ｍｓｅｃ、同期信号情報４２４の同期対象仮想信号を仮想ステッピングモータのパルス信号と定義し、同期方法を選択するための閾値である第１回数を２回、第２回数を１回と定義する。本実施形態によれば、ｔ１の期間内にパルス信号の立ち上がりが２回発生すると時間同期から信号同期に変更する。
【００４５】
まず、５０１について説明をする。シミュレーション開始時（ここでは、１０００ｍｓｅｃ）は、同期処理実行部４２０が時間同期部４２１によって同期処理を行っている。同期処理実行部４２０として、時間同期部４２１をメインの同期処理、信号同期部４２２による同期処理は無し、即ち、信号同期部４２２による同期処理を制限していることを示している。１００８ｍｓｅｃまでは時間同期部４２１によって、ｔ１の同期時間間隔で同期処理を行っている。
【００４６】
１００８ｍｓｅｃから１０１２ｍｓｅｃに仮想時間が経過するまでに、仮想ステッピングモータの信号変化（信号の立ち上がり）が２回発生している。したがって、同期処理実行部４２０は、同期対象の仮想信号変化の頻度が高くなったと（第１回数に達したと）判断し、信号同期部４２２をメインとした同期処理を開始する。ここで、時間同期部４２１による同期処理はサブとなり、その実行が制限される。その後、同期処理実行部４２０は、仮想ステッピングモータの立ち上がり信号変化に応じて、各アプリケーションに１パルス分のシミュレーション動作指示を行い、同期処理を継続する。また、仮想信号の信号変化が一定時間が経過するまでの間に検出されない場合は同期処理が行われなくなってしまうため、そのような場合に備えて時間同期部４２１による同期処理をサブとしている。即ち、信号同期部４２２による同期処理が発生してから一定時間が経過したか否かをタイマ等により計測し、一定時間が経過すると、時間同期部４２１による同期処理が実行される。
【００４７】
次に、図４の５０２について説明する。５０２は、シミュレーション実行中において、時間同期部４２１による同期処理実行中に仮想信号変化の頻度が高くなった際、信号同期部４２２をメインとした同期処理を開始し、時間同期部４２１による同期処理を制限する。その後、仮想信号変化の頻度が低くなった際、信号同期部４２２による同期処理を停止し、時間同期部４２１をメインとした同期処理を行う。
【００４８】
同期処理実行部４２０が、経過仮想時間１００８ｍｓｅｃで各アプリケーションの同期処理を行った後、信号同期部４２２による同期処理を開始するところまでは、５０１と同様の処理のため、説明を省略する。その後、同期処理実行部４２０は、仮想ステッピングモータのパルス信号の立ち上がり変化に応じて各アプリケーションに１パルス分のシミュレーション動作指示を行い、同期処理を継続する。ここで、パルス信号の立ち上がりから６ｍｓｅｃ（ｔ２）の間、当該信号の変化が一回も発生しない場合、信号同期部４２２による同期処理を停止し、再度時間同期部４２１をメインとした同期処理へ移行する。なお、ｔ２の間に当該信号の変化が発生し、信号同期部４２２による同期処理が発生すると、ｔ２の計測をリセット（更新）し、当該同期処理に合わせてｔ２の計測を開始することが望ましい。これにより、タイマ資源を有効に活用することができる。
【００４９】
以上説明したように、本実施形態に係る情報処理装置は、シミュレーション実行中に仮想信号変化の頻度に応じて信号同期部４２２による同期処理の実行有無を切り替えることで、仮想信号変化に対して、精度の高いシミュレーション動作を実現する。また、通常動作時は、時間同期部４２１をメインに同期処理を行うことで、シミュレーションの開始から終了まで信号同期による同期処理を行う場合に比べ、シミュレーション実行速度を速くすることが可能となる。
【００５０】
更に、同期対象の仮想信号変化に応じて同期処理を行う際、時間同期部４２１による同期処理も並行して実行することで、仮想信号の変化が無く同期不能となりプログラム連携システムが停止してしまうという問題を回避することができる。
【００５１】
本実施形態において、ｔ１を４ｍｓｅｃ、ｔ２を６ｍｓｅｃ、同期信号情報４２４の同期対象仮想信号を仮想ステッピングモータのパルス信号として説明した。また、同期方法を選択するための閾値である第１回数を２回、第２回数を１回と定義した。しかしながら、本発明は、それぞれの値や仮想信号に限定されず、シミュレーション対象の動作や装置の仕様等に応じて変更することができる。また、本実施形態においては、シミュレーション対象の装置をプリンタ装置と定義したが、これに限るものではない。
【００５２】
＜第２の実施形態＞
以下では、図１、図２、図５、及び図６を用いて、本発明の第２の実施形態について説明する。本実施形態は、上記第１の実施形態と同様に、シミュレーション中の仮想信号変化の頻度に応じて、各プロセスの同期方法を選択するものである。また、本実施形態に係るプログラム連携システムの機器制御シミュレーションは、コンピュータシステム（情報処理装置）で実行されるプログラムとして実現されるものである。なお、本発明の実施形態に係る画像形成装置の基本的な構成は、上述した第１の実施形態における図１、図２、及び図３のＳ４０乃至Ｓ４３、Ｓ４５乃至Ｓ４７、及びＳ４９と同一であり、これらの図を流用して説明する。
【００５３】
上記第１の実施形態では、信号同期部４２２による同期処理のために、同期信号情報４２４を仮想ステッピングモータのパルス信号と定義した。また、時間同期部４２１による一同期の時間間隔ｔ１の中で、仮想信号が第１回数に達した場合は仮想信号変化の頻度が高いと判断し、その後、ｔ２の時間内に仮想信号が第２回数変化しないと、仮想信号変化の頻度が低いと判断する制御を説明した。
【００５４】
しかし、同期信号情報４２４に複数の仮想信号を定義し、時間同期部４２１による一同期の時間間隔ｔ１の中で、複数の仮想信号による信号変化の発生回数の合計が第１回数に達すると、信号変化の頻度が高いと判断してもよい。また、ｔ２の時間内に、同期信号情報４２４に定義された複数の仮想信号による信号変化の発生回数の合計が、第２回数に達しない場合に仮想信号変化の頻度が低いと判断してもよい。以下、具体的な実施形態について説明する。
【００５５】
＜同期処理＞
図１及び図２は上記第１の実施形態と同一の構成であるため、説明を省略する。まず、図５を参照して、本実施形態における同期処理実行部４２０の処理手順について説明する。Ｓ４０乃至Ｓ４３、Ｓ４５乃至Ｓ５０の処理内容は、上記第１の実施形態と同様であるため、説明を省略する。
【００５６】
Ｓ５１において、同期処理実行部４２０は、同期信号情報４２４より取得した同期対象の複数の仮想信号による信号変化の発生回数の合計が第１回数に達したか否かを判定する。第１回数に達していない場合はＳ４５の処理へ進み、変化している場合はＳ４６へ進む。Ｓ４６において、同期処理実行部４２０は、同期対象の仮想信号変化の頻度が高くなったと判断し、信号同期部４２２をメインとした同期処理を開始する。
【００５７】
Ｓ４７で各アプリケーションに処理動作を指示した後、Ｓ５２において、同期処理実行部４２０は、同期対象の複複数の仮想信号による信号変化の発生回数の合計が第２回数に達する前にｔ２時間が経過したかどうかを判定する。ｔ２時間が経過していない場合はＳ４９の処理へ進み、経過している場合は、同期対象の仮想信号変化の頻度が低くなったと判断し、信号同期部４２２による同期処理を停止し、Ｓ４２に戻る。
【００５８】
Ｓ４９で全てのアプリケーションから処理完了通知を受信したと判定すると、Ｓ５３において、同期処理実行部４２０は、同期対象の複数の仮想信号による信号変化の発生回数の合計が第２回数に達したか否かを判定する。第２回数に達した場合、同期処理実行部４２０は、再度各アプリケーションに対して、信号同期部４２２による一同期分の処理動作を指示し、以降Ｓ４７乃至Ｓ５３を繰り返す。そうでない場合はＳ５２に進む。
【００５９】
＜タイミングチャート＞
次に、図６を参照して、本実施形態における同期処理実行部４２０の具体的な処理タイミングについて説明する。ここでは、シミュレーション実行中に、時間同期部４２１による同期処理実行中に複数の仮想信号変化の頻度が高くなった際、信号同期部４２２をメインとした同期処理を開始する。その後、複数の仮想信号変化の頻度が低くなった際、信号同期部４２２による同期処理を停止し、時間同期部４２１をメインとした同期処理を行う。
【００６０】
図６では、図４と同様に、図２における給紙対象用紙３０３が、仮想センサ３０４に到達した時に仮想センサ３０４信号が立ち上がり、仮想ステッピングモータの駆動を加速して用紙３０３の搬送速度を速めている状態を示している。経過仮想時間１０００ｍｓｅｃ以前のシミュレーション処理の流れについては図示を省略している。
【００６１】
上記第１の実施形態においては、同期信号情報４２４に仮想ステッピングモータのパルス信号を定義して同期処理を選択する制御を説明した。本実施形態においては、同期信号情報４２４に仮想ステッピングモータのパルス信号と、仮想センサ３０４のＯＮ、ＯＦＦ信号を定義して、同期処理を選択する制御について説明する。ＨＵＢ、各信号、各アプリケーション、及び経過仮想時間は、上記第１の実施形態と同一のため、説明を省略する。時間ｔ１、時間ｔ２、第１回数、第２回数には、第１の実施形態と同一の時間、閾値を定義して説明する。
【００６２】
シミュレーション開始時（ここでは、１０００ｍｓｅｃ）は、同期処理実行部４２０が時間同期部４２１による同期処理を行っている。同期処理実行部４２０として、時間同期部４２１をメインの同期処理、信号同期部４２２による同期処理は無し、即ち、行っていないことを示している。１００４ｍｓｅｃまでは時間同期部４２１によって、ｔ１の同期間隔で同期処理を行っている。
【００６３】
１００４ｍｓｅｃから１００８ｍｓｅｃに仮想時間が経過するまでに、仮想ステッピングモータのパルス信号と仮想センサ３０４の信号が、併せて二回変化した（信号の立ち上がった）ため、同期処理実行部４２０は、同期対象の仮想信号変化の頻度が高くなったと判断する。よって、同期処理実行部４２０は、信号同期部４２２をメインとした同期処理を開始する。その後、同期処理実行部４２０は、仮想ステッピングモータの立ち上がり信号変化と仮想センサ３０４の信号変化に応じて、各アプリケーションに１パルス分のシミュレーション動作指示を行い、同期処理を継続する。
【００６４】
ここで、パルス信号の立ち上がりから６ｍｓｅｃ時間以上、二つの仮想信号のどちらも変化が無い場合、信号同期部４２２による同期処理を停止し、再度時間同期部４２１をメインとした同期処理を行う。
【００６５】
以上説明したように、本実施形態によれば、シミュレーション実行中に複数の仮想信号変化の頻度に応じて信号同期部４２２の同期処理の実行有無を切り替えることで、仮想信号変化に対する精度の良いシミュレーション動作が実行可能となる。また、通常動作時は時間同期部４２１をメインに同期処理を行うことで、シミュレーションの開始から終了まで信号同期による同期処理を行う場合に比べ、シミュレーション実行速度を速くすることが可能となる。
【００６６】
更に、同期対象の仮想信号変化に応じて同期処理を行う際、時間同期部４２１による同期処理を並行して実行することで、仮想信号の変化が無く同期不能となりプログラム連携システムが停止してしまうという問題を回避することができる。
【００６７】
本実施形態において、ｔ１を４ｍｓｅｃ、ｔ２を６ｍｓｅｃ、同期信号情報４２４の同期対象仮想信号を仮想ステッピングモータのパルス信号と仮想センサ３０４のＯＮ、ＯＦＦ信号と定義した。また、同期方法を選択するための閾値である第１回数を２回、第２回数を１回と定義した。しかしながら、本発明は、それぞれの値や仮想信号をこれらに限るものではなく、シミュレーション対象の装置をプリンタ装置と定義したが、これに限るものではない。また、同期対象仮想信号は、ステッピングモータのパルス信号と仮想センサに限られるものではなく、画像形成装置を構成するユニット（部材）から出力される信号であればよい。さらに、アプリケーションについても上記実施形態に記載されているものに限られるものではなく、任意のアプリケーションを適用することができる。
【００６８】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００６９】
１００：ＣＰＵシミュレータ、２００：シミュレータアプリケーション、３００：機構部品シミュレータ、４００：ＨＵＢ
【図１】
2015197815.tif 000003
【図２】
2015197815.tif 000004
【図３】
2015197815.tif 000005
【図４】
2015197815.tif 000006
【図５】
2015197815.tif 000007
【図６】
2015197815.tif 000008