(57)【要約】      （修正有）【課題】精度の高いシミュレーションを行うことを可能にし、より実機に近いシミュレーションシステムを提供する。【解決手段】複数のアプリケーションソフト２０３を接続して1つのシステムとして動作させるプロセス接続手段２０１を有し、全アプリケーションソフトから1同期間隔の動作終了通知を受けた時点で次の1同期の実行処理に移ることにより、各アプリケーションソフトの持つ仮想時間をシステム全体の仮想時間に同期させる機能を有したプログラム連携システムにおいて、前記プロセス接続手段２０１は、1同期に行う動作が未終了であるアプリケーションソフトから1同期に行う動作が終了済みであるアプリケーションソフトに対してユーザーが設定した特定のイベントを送信する場合に、1同期に行う動作が終了済みであるアプリケーションに対し次の1同期分の処理を少なくとも前記特定のイベントが作用するところまで継続実行させる。【選択図】図２
2009043073.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム上で独立したプロセスとして動作する複数のアプリケーションソフトと、
前記複数のアプリケーションソフトを接続して1つのシステムとして動作させるプロセス接続手段を有し、
前記各アプリケーションソフトはそれぞれが固有の仮想時間の概念により該仮想時間の経過に対応した各種処理を行うアプリケーションソフトであり、
前記プロセス接続手段は前記アプリケーションソフトを組み合わせて1つのシステムとして動作させ前記アプリケーションソフトの同期をとる場合に、全アプリケーションソフトにあらかじめ定義した同一の1同期間隔の実行を指示し、各アプリケーションソフトから1同期間隔の動作終了の通知を受け、全アプリケーションソフトから1同期間隔の動作終了通知を受けた時点で次の1同期の実行処理に移ることにより、各アプリケーションソフトの持つ仮想時間をシステム全体の仮想時間に同期させる機能を有したプログラム連携システムにおいて、
前記プロセス接続手段は、1同期に行う動作が未終了であるアプリケーションソフトから1同期に行う動作が終了済みであるアプリケーションソフトに対してユーザーが設定した特定のイベントを送信する場合に、1同期に行う動作が終了済みであるアプリケーションに対し次の1同期分の処理を少なくとも前記特定のイベントが作用するところまで継続実行させるプロセス接続手段を有するプログラム連携システム。
【請求項２】
請求項1に記載のプログラム連携システムにおいて、
前記プロセス接続手段は、1同期の動作が未終了であるアプリケーションソフト（アプリケーションソフトA）から1同期の動作が終了済みであるアプリケーションソフト（アプリケーションソフトB）に対してユーザーが設定した特定のイベントを送信する場合に、アプリケーションソフトBに対して次の1同期分の処理を少なくとも前記特定のイベントが作用するところまで実行させ、次の1同期の動作を行うのに使用する処理時間から前記特定のイベントの処理を行うのに使用した処理時間を差し引いた時間をアプリケーションBの次の1同期の処理時間とする次同期イベント処理先取り手段を有することを特徴とするプログラム連携システム。
【請求項３】
請求項1又は、請求項2記載のプログラム連携システムにおいて、
前記プロセス接続手段は、1同期の処理が未終了であるアプリケーションソフトから1同期の処理が終了済みであるアプリケーションソフトに対してユーザーが設定した特定のイベントを複数送信する場合も、1同期の処理が終了済みであるアプリケーションソフトに対して前記次同期イベント処理先取り手段を適用することを特徴とするプログラム連携システム。
【請求項４】
コンピュータシステム上で独立したプロセスとして動作する複数のアプリケーションソフトと、
前記複数のアプリケーションソフトを接続して1つのシステムとして動作させるプロセス接続手段を有し、
前記各アプリケーションソフトはそれぞれが固有の仮想時間の概念により該仮想時間の経過に対応した各種処理を行うアプリケーションソフトであり、
前記プロセス接続手段は前記アプリケーションソフトを組み合わせて1つのシステムとして動作させ前記アプリケーションソフトの同期をとる場合に、全アプリケーションソフトにあらかじめ定義した同一の1同期間隔の実行を指示し、各アプリケーションソフトから1同期間隔の動作終了の通知を受け、全アプリケーションソフトから1同期間隔の動作終了通知を受けた時点で次の1同期の実行処理に移ることにより、各アプリケーションソフトの持つ仮想時間をシステム全体の仮想時間に同期させる機能を有したプログラム連携システムにおいて、
前記プロセス接続手段は、1同期に行う動作が未終了であるアプリケーションソフトから1同期に行う動作が終了済みであるアプリケーションソフトに対してユーザーが設定した特定のイベントを送信する場合に、1同期に行う動作が未終了であるアプリケーションに対し1同期の処理を終了させるプロセス接続手段を有するプログラム連携システム。
【請求項５】
請求項4に記載のプログラム連携システムにおいて、
前記プロセス接続手段は、1同期の動作が未終了であるアプリケーションソフト（アプリケーションソフトA）から1同期の動作が終了済みであるアプリケーションソフト（アプリケーションB）に対してユーザーが設定した特定のイベントを送信する場合に、アプリケーションソフトAがアプリケーションソフトBに対して前記特定のイベントを送信した時点でアプリケーションソフトAの1同期の処理を終了させ、次の1同期の動作を行うのに使用する処理時間に現同期で未使用である処理時間を付加した時間をアプリケーションAの次の1同期の処理時間とする現同期イベント処理先送り手段を有することを特徴とするプログラム連携システム。
【請求項６】
請求項4又は、請求項5に記載のプログラム連携システムにおいて、
前記プロセス接続手段は、1同期の処理が未終了であるアプリケーションソフトから1同期の処理が終了済みであるアプリケーションソフトに対してユーザーが設定した特定のイベントを複数送信する場合も、1同期の動作が未終了であるアプリケーションソフトに対して前記現同期イベント処理先送り手段を適用することを特徴とするプログラム連携システム。
【請求項７】
請求項1〜請求項6のいずれかに記載のプログラム連携システムにおいて、
前記プロセス接続手段は、前記次同期イベント処理先取り手段または前記現同期イベント処理先送り手段を適用するか否かを、ユーザーがイベントごとに設定できる機能を有することを特徴とするプログラム連携システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム上で複数の独立プロセスとして存在するアプリケーションソフトを1つのシステムとして同期実行させるプログラム連携システムに関するものである。
【背景技術】
【０００２】
今日では1つのシステムを構築する場合、そのシステム構成に自由度を持たせることでシステムの汎用性や利便性を高めるために、アプリケーションソフト（以下、アプリケーションと記す）の実行主体プロセスを複数同時に動かすことができるマルチプロセスが主流になってきている。各アプリケーションのプロセスは、それぞれのプロセスと協調するため、通信やファイルアクセスのイベントを通じて相互に作用しながら動作している。しかしながら、これらのイベントのタイミングの前後関係が変わってしまうとアプリケーションの動作も変わることになる。そこで、マルチプロセスシステムにおけるイベントの順序（以後、イベントシーケンスと記す）を保証する方法として特開平8-87419号公報のような例がある。このシステムでは、各アプリケーションのプロセス間のイベントを実行制御モジュールで計算し、その計算結果にしたがって各アプリケーションの仮想時間の停止・再開を行うことで同期をとる手法である。本例のシステムによれば、イベントシーケンスを保証できるため、正しくアプリケーションを動作させることが可能である。
【特許文献１】特開平8-87419号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特開平8-87419号公報の例ではイベントシーケンスを保証することで正しくアプリケーションを動作させることが可能である。しかし、本例はシミュレーション中にイベントが発生する度に実行制御モジュールを通りシミュレーション処理が重くなるため、それに対する種々の対策が望まれていた。
【０００４】
そこで、従来例では特開平8-87419号公報で示している実行制御モジュールを使用せず、各アプリケーションの持つ仮想時間を停止及び再開させることによって各アプリケーションプロセス間で同期をとる手段を示している。しかし、本例は以下に示すケースに対応できない。図3において、アプリケーションAから仮想時間が停止しているアプリケーションBにアプリケーションハブ（以降で説明する）を介しx及びy信号を一定の間隔で送った場合、1同期経過した直後にアプリケーションBにほぼ同時に信号が入ってくる。このときにアプリケーションBはy信号を先に受信する場合がある。この場合図4に示すように、アプリケーションBで意図した処理を通過させることができなくなり、予期しない結果を招くことになる。
【０００５】
本発明は、前記従来例の課題を改善するために創作されたものであり、本発明を使用することにより、高速かつ正しいシミュレーションを行うことが可能になる。
【課題を解決するための手段】
【０００６】
請求項1記載のプログラム連携システムにおいて、コンピュータシステム上で独立したプロセスとして動作する複数のアプリケーションソフトと、前記複数のアプリケーションソフトを接続して1つのシステムとして動作させるプロセス接続手段を有し、前記各アプリケーションソフトはそれぞれが固有の仮想時間の概念により該仮想時間の経過に対応した各種処理を行うアプリケーションソフトであり、前記プロセス接続手段は前記アプリケーションソフトを組み合わせて1つのシステムとして動作させ前記アプリケーションソフトの同期をとる場合に、全アプリケーションソフトにあらかじめ定義した同一の1同期間隔の実行を指示し、各アプリケーションソフトから1同期間隔の動作終了の通知を受け、全アプリケーションソフトから1同期間隔の動作終了通知を受けた時点で次の1同期の実行処理に移ることにより、各アプリケーションソフトの持つ仮想時間をシステム全体の仮想時間に同期させる機能を有したプログラム連携システムにおいて、前記プロセス接続手段は、1同期に行う動作が未終了であるアプリケーションソフトから1同期に行う動作が終了済みであるアプリケーションソフトに対してユーザーが設定した特定のイベントを送信する場合に、1同期に行う動作が終了済みであるアプリケーションに対し次の1同期分の処理を少なくとも前記特定のイベントが作用するところまで継続実行させるプロセス接続手段を有することを特徴とする。
【０００７】
請求項2記載のプログラム連携システムにおいて、前記プロセス接続手段は、1同期の動作が未終了であるアプリケーションソフト（アプリケーションソフトA）から1同期の動作が終了済みであるアプリケーションソフト（アプリケーションソフトB）に対してユーザーが設定した特定のイベントを送信する場合に、アプリケーションソフトBに対して次の1同期分の処理を少なくとも前記特定のイベントが作用するところまで実行させ、次の1同期の動作を行うのに使用する処理時間から前記特定のイベントの処理を行うのに使用した処理時間を差し引いた時間をアプリケーションBの次の1同期の処理時間とする次同期イベント処理先取り手段を有することを特徴とする。
【０００８】
請求項3記載のプログラム連携システムにおいて、前記プロセス接続手段は、1同期の処理が未終了であるアプリケーションソフトから1同期の処理が終了済みであるアプリケーションソフトに対してユーザーが設定した特定のイベントを複数送信する場合も、1同期の処理が終了済みであるアプリケーションソフトに対して前記次同期イベント処理先取り手段を適用することを特徴とする。
【０００９】
請求項4記載のプログラム連携システムにおいて、コンピュータシステム上で独立したプロセスとして動作する複数のアプリケーションソフトと、前記複数のアプリケーションソフトを接続して1つのシステムとして動作させるプロセス接続手段を有し、前記各アプリケーションソフトはそれぞれが固有の仮想時間の概念により該仮想時間の経過に対応した各種処理を行うアプリケーションソフトであり、前記プロセス接続手段は前記アプリケーションソフトを組み合わせて1つのシステムとして動作させ前記アプリケーションソフトの同期をとる場合に、全アプリケーションソフトにあらかじめ定義した同一の1同期間隔の実行を指示し、各アプリケーションソフトから1同期間隔の動作終了の通知を受け、全アプリケーションソフトから1同期間隔の動作終了通知を受けた時点で次の1同期の実行処理に移ることにより、各アプリケーションソフトの持つ仮想時間をシステム全体の仮想時間に同期させる機能を有したプログラム連携システムにおいて、前記プロセス接続手段は、1同期に行う動作が未終了であるアプリケーションソフトから1同期に行う動作が終了済みであるアプリケーションソフトに対してユーザーが設定した特定のイベントを送信する場合に、1同期に行う動作が未終了であるアプリケーションに対し1同期の処理を終了させるプロセス接続手段を有することを特徴とする。
【００１０】
請求項5記載のプログラム連携システムにおいて、前記プロセス接続手段は、1同期の動作が未終了であるアプリケーションソフト（アプリケーションソフトA）から1同期の動作が終了済みであるアプリケーションソフト（アプリケーションB）に対してユーザーが設定した特定のイベントを送信する場合に、アプリケーションソフトAがアプリケーションソフトBに対して前記特定のイベントを送信した時点でアプリケーションソフトAの1同期の処理を終了させ、次の1同期の動作を行うのに使用する処理時間に現同期で未使用である処理時間を付加した時間をアプリケーションAの次の1同期の処理時間とする現同期イベント処理先送り手段を有することを特徴とする。
【００１１】
請求項6記載のプログラム連携システムにおいて、前記プロセス接続手段は、1同期の処理が未終了であるアプリケーションソフトから1同期の処理が終了済みであるアプリケーションソフトに対してユーザーが設定した特定のイベントを複数送信する場合も、1同期の動作が未終了であるアプリケーションソフトに対して前記現同期イベント処理先送り手段を適用することを特徴とする。
【００１２】
請求項7記載のプログラム連携システムにおいて、前記プロセス接続手段は、前記次同期イベント処理先取り手段または前記現同期イベント処理先送り手段を適用するか否かを、ユーザーがイベントごとに設定できる機能を有することを特徴とする。
【発明の効果】
【００１３】
以上説明したように、本出願に係る第1から6の発明によれば、各々が独立したプロセスとして動作するアプリケーションを用いて1つのシステムを構築する際に、各アプリケーションのプロセス間で同期をとることが可能になり、更に各アプリケーションの動作を保証することが可能になる。
【００１４】
また、本出願に係る第7の発明によれば、ユーザーがシーケンスを保証したいイベントを取捨選択できるため、従来よりも高速にシミュレーションを実行することが可能になる。
【００１５】
また、開発中のファームウェアのデバッグや評価を行う際に本発明を用いた場合、従来のシミュレーションシステムを用いた場合よりも、高速かつ精度の高いシミュレーションを行うことが可能になり、良好な結果を得ることが可能になる。
【発明を実施するための最良の形態】
【００１６】
以下、添付の図面に沿って本発明の実施の形態を説明する。
【実施例１】
【００１７】
本発明の画像形成装置シミュレーションシステムはパーソナルコンピュータ、ワークステーション等（以下、まとめてコンピュータシステムと記す）で実行されるプログラムとして実現されるもので、そのハードウエア構成の概略図を図1に示す。図1の101は以下に説明する102〜109の装置をバス110を介してアクセスし制御する中央処理装置（以下、CPUと記す）である。102はバス110を介してCPU101からアクセス可能な読み出し専用メモリ（以下、ROMと記す）である。103は読み書き可能なメモリ（以下、RAMと記す）である。104は入力インターフェースであり、105で示すキーボード、マウス、タブレットなどの入力装置を介してユーザーからの入力を受け取る。106は出力インターフェースであり、107で示すCRT、LCDなど107aの表示装置、更にはプリンタ、プロッタなど107bの出力装置に対しデータの表示や出力を行う。108は外部記憶インターフェースであり、109で示す画像形成装置シミュレーションシステムの各機能を実現した処理プログラム109a及びシミュレーションの対象となる機器の情報を含むシミュレーションのための各種設定データ109b及びファームウェア109cを格納するハードディスク104やFD・CD-ROM・MO・CFなどの外部記憶装置に対するデータの入出力を行うものである。
【００１８】
シミュレーションに際しては、前記処理プログラム109a、各種設定データ109b、ファームウェア109cを前記RAMにロードし、前記コンピュータシステム100のCPU101によってプログラムが実行される。
【００１９】
これらコンピュータシステム100の基本動作は、基本プログラムであるオペレーティングシステム（以下、OSと記す）を介して実行される。
【００２０】
図2は、本発明に係る実施例の画像形成装置シミュレーションシステムの機能構成を示す。
【００２１】
図2に示すように、本発明の画像形成装置シミュレーションシステムは、CPUシミュレータ200、アプリケーションハブ201、メカシミュレータ202、シミュレータアプリケーション203から構成される。
【００２２】
アプリケーションハブ201は、プロセス制御部とインターフェース部とから構成される。更にプロセス制御部は、GUIモジュール201a、システム管理モジュール201b、配線モジュール201c、同期モジュール201dから構成され、インターフェース部は、I/F201e, I/F201f, I/F201gとから構成される。
【００２３】
CPUシミュレータ200、メカシミュレータ202、シミュレータアプリケーション203はそれぞれが OS上で個別に動作するアプリケーションソフトであり、それぞれが独立したプロセスとして存在する。更に、シミュレータアプリケーション203は機能によって複数の独立プロセスで構成される場合がある。
【００２４】
次に、各構成要素の機能について説明する。
【００２５】
CPUシミュレータ200はシミュレーション対象となるCPU（以下、ターゲットCPUと記す）の動作を前記コンピュータシステム100上で実現する機能である。ここで、ターゲットCPUとは前記コンピュータシステム100に搭載されているCPUではなく、シミュレーションの対象となる装置（本例ではプリンタ装置）に搭載され、該装置を制御するためのCPUのことである。
【００２６】
前記CPUシミュレータ200は、前記ターゲットCPUの制御プログラム（以下、ターゲットファームウエアと呼ぶ）に従って、ターゲットCPUの端子に対応して定義された仮想入力端子の情報を読み込み、仮想出力端子を制御する。
【００２７】
メカシミュレータ202は、アクチュエータ、センサを含む複数の部品からなる機構モデルを前記コンピュータ上で擬似的に動作させる機能である。機構モデルの各要素（以下、機構部品と呼ぶ）は、ユーザにより形状、種類、動作、機構部品間の干渉と連携条件等が定義される。更に、センサ、アクチュエータについては外部信号定義が行われる。これら機構部品の定義はCAD図面からの自動設定、専用の機構モデル作成ソフトウエアをユーザが操作して設定、その両方の組み合わせで設定するなどして行われる。
【００２８】
前記のように定義される機構部品の種類としては単なる物体と定義される物と機能定義がなされるもの（モータ、ソレノイド、クラッチ、センサ、歯車、カム、ローラ等）がある。また、機構部品には、対象となる装置の構成物ではないもので装置の動作シミュレーションに必要なもの（プリンタ装置における用紙等）も含まれる。
【００２９】
前記のように構築された機構モデルは、コンピュータシステム100の表示装置107a上に2次元、又は3次元のグラフィックとして表示される。
【００３０】
該機構モデルシミュレータ202は、CPUシミュレータ200からアプリケーションハブ201を介して送られてきたアクチュエータ動作信号に対応して、該当するアクチュエータの機構モデルを定義された動きで動作させる。更に機構定義に基づきアクチュエータに連結された機構部品をアクチュエータの動作に関連付けて定義された動きで動作させる。また、オペレータの操作により動作する機構については、前記キーボード及びマウス105によってオペレータによる機構部品への操作を擬似的に再現し、擬似操作に応じて対象となる機構部品を定義された動きで動作させる。更に、機構部品間の干渉、連携定義に従い、関連する全ての機構部品の動作が再現される。これら機構部品の動作は前記表示装置107aに表示されたグラフィックとして再現されるとともに、機構モデルの動作の結果、センサとして定義された機構モデルにあらかじめ定義された作用が発生すると、作用に応じたセンサ信号を発生させ、そのセンサ信号はCPUシミュレータ200にアプリケーションハブ201を介して送信される。
【００３１】
シミュレータアプリケーション203は画像形成装置シミュレーションシステムによる各種試験のための支援プログラムで、仮想装置に対する各種外的作用を設定したりシミュレーションの結果を解析、表示、保存する機能をもつ。
【００３２】
シミュレーションの対象となる実際の装置は、その装置を使用するオペレータやその装置に接続されたコンピュータシステム等により外部から様々な作用を受けて動作する。シミュレータアプリケーション203は、これら外的作用の内、メカシミュレータ202で設定されるメカニカルな外的作用以外のものを擬似的に設定する手段を提供する。
【００３３】
本実施例における対象装置であるプリンタ装置の例では、メカニカルな外的作用としては給紙カセットの操作や消耗部品の取り外し、取り付け等が挙げられる。一方、それ以外の外的作用としては、ホストPCからの各種命令の受信、オペレータによるオペレーションパネルの操作、環境温度の変化等が挙げられる。
【００３４】
シミュレータアプリケーション203は、これらを設定するための専用のユーザインターフェース（以下、UIと記す）を提供する。シミュレータアプリケーション203は、該UIによる設定に従いアプリケーションハブ201を介してCPUシミュレータ200やメカシミュレータ202に所定の外的作用を与える。また、シミュレータアプリケーション203は、前記コンピュータシステム100のハードディスクに格納された、連続した外的作用の設定手順を記述したマクロ命令ファイルや一連の外的作用データを記述したファイル109bを、必要に応じて読み出しアプリケーションハブ201を介してCPUシミュレータ200やメカシミュレータ202に対して一連の外的作用を与える。
【００３５】
上記のような外的作用の設定機能のほかに、シミュレータアプリケーション203は、シミュレーションの結果として出力される各種データを解析、評価し、試験目的に応じた各種情報を前記表示装置107aに表示したりハードディスクに保存する機能を有している。
【００３６】
具体的には、各種信号の変化をタイミングチャートとして表示したり、一連の動作をあらかじめ想定された動作と比較してその正当性を評価する、また、不正な事象を可視的に表示する等の機能を有している。
【００３７】
アプリケーションハブ201は、前記のようにプロセス制御部（配線モジュール201c、同期モジュール201d）とインターフェース部201e, I/F201f, I/F201gより構成される。プロセス制御部201c, I/F201dは、システム構成に合わせたアプリケーションハブ201の設定、CPUシミュレータ200、メカシミュレータ202、シミュレータアプリケーション203（以下、まとめて周辺シミュレーションツールと記す）間のデータ伝送管理、同期処理、データ伝送履歴（以下、ログと記す）取得をおこなう。インターフェース部201e, I/F201f, I/F201gはプロセス制御部201c, I/F201dと各周辺シミュレーションツールとの接続を仲介し、アプリケーションハブ201の外部インターフェースを各周辺シミュレーションツールのインターフェース仕様に対応させる。
【００３８】
システム管理モジュール201bは、ハードディスクの設定データ109bにあらかじめ設定されたシステム構成定義情報に応じてI/F201e, I/F201f, I/F201gの構成を管理する。
【００３９】
配線モジュール201c（図5参照）は、配線データベースにあらかじめ設定された配線定義情報を基に、周辺シミュレーションツール間を接続する。ここで配線データベースとは、アプリケーションとアプリケーションの間を結ぶデータの線を信号線と称し、この信号線の設定を一元的に管理しているものである。信号線は一意な名称を持ち、これをキーにして各I/Fに対してそれぞれのアプリケーションの送受信設定を行う。図5のアプリケーションハブの項目にあるクリティカル信号は、後に説明するシーケンス処理A（以降、次同期イベント処理先取り手段をシーケンス処理A、現同期イベント処理先送り手段をシーケンス処理Bとする）を入れるかどうかを設定する項目である。
【００４０】
画像形成装置シミュレーションシステムでは複数の独立プロセスである周辺シミュレーションツールを組み合わせて動作させるため、それぞれの持つ仮想時間を同期させる必要がある。この方法として、同期モジュール201dは各インターフェースモジュールを介してそれぞれの周辺シミュレーションツールにあらかじめ定義した1同期間隔の実行を指示する。そして、各インターフェースモジュールを介してそれぞれの周辺シミュレーションツールから1同期間隔の動作終了の通知を受ける。全周辺シミュレーションツールから1同期間隔の動作終了通知を受けた時点で次の1同期の実行処理に移る。しかしながら、図6に示すように、あるアプリケーションがアプリケーションハブを介してあるアプリケーションにイベント（以後、信号と記す）を送信する際に、信号送信側アプリケーションの1同期の動作は終了していないが信号受信側アプリケーションの1同期の動作が終了している場合がある。そこで図6（例として信号送信側アプリケーションをシミュレータアプリケーション、信号受信側アプリケーションをCPUシミュレータとしている）に示すように、シミュレータアプリケーションの1同期の動作は終了していないがCPUシミュレータの1同期の動作が終了している場合には、シミュレータアプリケーションから信号を送信した後にアプリケーションハブがCPUシミュレータの次の1同期の動作にかかる仮想時間を使用してシミュレータアプリケーションに信号を送信し、シミュレータアプリケーションの仮想時間を停止させる。次に、アプリケーションハブがCPUシミュレータから信号受信通知を受け取るとシミュレータアプリケーションにCPUシミュレータが信号受信したことを通知し、シミュレータアプリケーションの仮想時間を再開させ、CPUシミュレータの仮想時間を停止させる。信号送信側アプリケーションであるシミュレータアプリケーションの1同期内で処理を行うことが可能になる。以下に、前記の処理を図6、フローチャート1を使用して説明する。
【００４１】
図6においてシミュレータアプリケーションはある信号をアプリケーションハブに対して送信する。信号を受信したアプリケーションハブはフローチャート1のS301で、受信信号が配線データベースのクリティカル信号に定義されているかどうかをチェックする。また本例では、図6において使用している信号線は配線データベースでクリティカル信号に定義されているものとする。S302において、受信信号がクリティカル信号に定義されていた場合S304のシーケンス処理Aへ進み、定義されていなかった場合S303に進みS303で信号を送信する。ここで送信する信号はクリティカル信号に定義されているので、S304のシーケンス処理Aへ進む。シーケンス処理AではまずS401で信号の送信先であるCPUシミュレータの仮想時間が停止しているかどうかをチェックする。CPUシミュレータの仮想時間が停止していない場合、S408に進みCPUシミュレータに信号を送信する。CPUシミュレータの仮想時間が停止していた場合、S402に進み信号送信元であるシミュレータアプリケーションの仮想時間を停止させる。次にS403に進み信号送信先であるCPUシミュレータの次の1同期の動作にかかる仮想時間を開始させる。そしてS404に進みCPUシミュレータに対して信号を送信する。次にS405に進み信号送信先であるCPUシミュレータから信号を受信したかどうかのリプライ待ちを行う。CPUシミュレータからリプライがきたらS406に進みCPUシミュレータの仮想時間を停止させ、次にS407に進みシミュレータアプリケーションの停止していた仮想時間を再開させる。
【００４２】
以上のように本発明によれば、各アプリケーション間で同期をとる際に、信号送信側アプリケーションの同期内で必ずイベント処理を行うことが可能になる。
【実施例２】
【００４３】
実施例1では、単一のイベントを扱うときのフローを示した。本実施例では、単一のイベントだけでなく、複数のイベントを扱うときのフローについて説明する。
【００４４】
図7に示すようにあるアプリケーションがアプリケーションハブを介してあるアプリケーションに信号を送信する際に、信号送信側アプリケーションの1同期の動作は終了していないが信号受信側アプリケーションの1同期の動作は終了しており、かつ信号送信アプリケーションが複数信号を送信する場合がある。このような場合は、従来では信号受信のシーケンスが保証されず、信号受信側アプリケーションの処理が意図しないものになる可能性があった。そこで図7に示すように、シミュレータアプリケーションの1同期の動作は終了していないがCPUシミュレータの1同期の動作が終了している場合には、シミュレータアプリケーションから信号を送信した後にアプリケーションハブがCPUシミュレータの次の1同期の動作にかかる仮想時間を使用してシミュレータアプリケーションに信号を送信し、シミュレータアプリケーションの仮想時間を停止させる。次に、アプリケーションハブがCPUシミュレータから信号受信通知を受け取るとシミュレータアプリケーションにCPUシミュレータが信号受信したことを通知し、シミュレータアプリケーションの仮想時間を再開させ、CPUシミュレータの仮想時間を停止させる。このようにすることで、CPUシミュレータには正しい順番で信号が入ってくるために、意図するシミュレーション処理を行うことが可能になる。以下に、前記の処理を図7、図8、フローチャート1、フローチャート2を使用して説明する。
【００４５】
図7においてシミュレータアプリケーションはx=1という信号をアプリケーションハブに対して送信する。信号を受信したアプリケーションハブはフローチャート1のS301で、受信信号が配線データベースのクリティカル信号に定義されているかどうかをチェックする。また本例では、x及びy信号線は配線データベースでクリティカル信号に定義されているものとする。S302において、受信信号がクリティカル信号に定義されていた場合S304のシーケンス処理Aへ進み、定義されていなかった場合S303に進みS303で信号を送信する。ここでxはクリティカル信号に定義されているので、S304のシーケンス処理Aへ進む。フローチャート2に示すように、シーケンス処理AではまずS401で信号の送信先であるCPUシミュレータの仮想時間が停止しているかどうかをチェックする。CPUシミュレータの仮想時間が停止していない場合、S408に進みCPUシミュレータに信号を送信する。CPUシミュレータの仮想時間が停止していた場合、S402に進み信号送信元であるシミュレータアプリケーションの仮想時間を停止させる。次にS403に進み信号送信先であるCPUシミュレータの次の1同期の動作にかかる仮想時間を開始させる。そしてS404に進みCPUシミュレータに対して信号を送信する。次にS405に進み信号送信先であるCPUシミュレータから信号を受信したかどうかのリプライ待ちを行う。CPUシミュレータからリプライがきたらS406に進みCPUシミュレータの仮想時間を停止させ、次にS407に進みシミュレータアプリケーションの停止していた仮想時間を再開させる。図7において、以上までの処理でシミュレータアプリケーションからx信号を送信しCPUシミュレータからリプライがくるところまでが完了した。次にシミュレータアプリケーションからCPUシミュレータにy信号を送信し、前記と同様の処理を行う。このようにすることで図8に示すように、CPUシミュレータとしては正しい処理を行うことが可能になる。以上の処理の繰り返しにより画像形成装置シミュレーションシステムを構成する全システムを同じ仮想時間の中で動作させることが可能になる。
【００４６】
以上のように本発明によれば、各アプリケーション間で同期をとる際に、複数イベントのシーケンスを保証することが可能になる。
【実施例３】
【００４７】
実施例1、実施例2では、単一及び複数イベントに対して本シーケンス処理Aを施す場合を示した。本実施例では、シーケンス処理Aにより信号受信側アプリケーションの次の同期の仮想時間が限りなくゼロに近くなったときの場合について説明する。
【００４８】
図9に示すように、イベントが増えるとCPUシミュレータの次の同期で使用する仮想時間をほぼ使い果たす場合がある。つまり、CPUシミュレータがt2の間に使用するべき仮想時間がほぼゼロになるという場合である。しかし、図9の状態でt2の間にシミュレータアプリケーションから信号が送信された場合、アプリケーションハブは次の同期のt3の間でCPUシミュレータが1同期の動作にかかる仮想時間を割り当てることで同期をとることが可能である。
【００４９】
以上のように、仮想時間が足りなくなった場合次の同期の動作にかかる仮想時間を使用すればよいため、各アプリケーション間で本シーケンス処理Aを用いた場合、アプリケーションの動作を保証すると共に同期をとることが可能である。
【実施例４】
【００５０】
実施例1、実施例2、実施例3では、シーケンス処理Aを用いた同期方法について説明してきた。本実施例では、複数のイベントをシーケンス処理Bを用いて同期させる方法について図10を使用して説明する。
【００５１】
図10に示すように、あるアプリケーションがアプリケーションハブを介してあるアプリケーションに信号を送信する際に、信号送信側アプリケーションの1同期の動作は終了していないが信号受信側アプリケーションの1同期の動作は終了しており、かつ信号送信アプリケーションが複数信号を送信する場合がある。図10に示すように、シミュレータアプリケーションの1同期の動作は終了していないがCPUシミュレータの1同期の動作が終了している場合には、シミュレータアプリケーションが信号をアプリケーションハブに送信し、アプリケーションハブがシミュレーション全体の1同期を終了させる。アプリケーションハブは、次の1同期の仮想時間を開始させてCPUシミュレータに信号を送信し、シミュレータアプリケーションの仮想時間を停止させる。ここでシミュレータアプリケーションの1同期分の仮想時間をTとし、シミュレータアプリケーションが信号を送信するまでの時間をT1とすると、シミュレータアプリケーションは次の1同期でT+(T-T1)の仮想時間を得ることになる。次に、アプリケーションハブがCPUシミュレータから信号受信通知を受け取るとシミュレータアプリケーションにCPUシミュレータが信号受信したことを通知し、シミュレータアプリケーションの仮想時間を再開させ、CPUシミュレータの仮想時間を停止させる。以上の処理を繰り返し行うことで実施例2と同様に、アプリケーション間で複数のイベントのシーケンスを保証することが可能になる。
【００５２】
処理フローについては、シーケンス処理Aもシーケンス処理Bも同様であり、シーケンス処理Bは実施例2だけではなく、実施例1及び実施例4と同様のことが可能である。シーケンス処理Aとシーケンス処理Bの違いは以下の通りである。
【００５３】
・シーケンス処理A
1同期に行う動作が未終了であるアプリケーションが1同期の動作が終了済みであるアプリケーションに信号を送信する場合に、1同期に行う動作が未終了であるアプリケーションの1同期内でイベント処理を完了させる。
【００５４】
・シーケンス処理B
1同期に行う動作が未終了であるアプリケーションが1同期の動作が終了済みであるアプリケーションに信号を送信する場合に、1同期に行う動作が未終了であるアプリケーションの次の1同期内でイベント処理を完了させる。
【図面の簡単な説明】
【００５５】
【図１】本発明を実現するためのハードウェア構成
【図２】本発明の実施例を実現するための機能構成
【図３】従来の同期方法
【図４】従来の同期方法を用いた場合のアプリケーションの動作
【図５】配線データベース
【図６】単一イベントにシーケンス処理Ａを用いた同期方法
【図７】複数イベントにシーケンス処理Ａを用いた同期方法
【図８】シーケンス処理Ａを用いた場合のアプリケーションの動作
【図９】仮想時間が減少し限りなくゼロに近くなる場合のシーケンス処理Ａ
【図１０】複数イベントにシーケンス処理Ｂを用いた同期方法
【符号の説明】
【００５６】
100  コンピュータシステム
101  中央処理装置（CPU）
102  ROM
103  RAM
104  入力インターフェース
105  入力装置
106  出力インターフェース
107  出力装置
107a  表示装置
107b  出力装置
108  外部記憶装置インターフェース
109  外部記憶装置
109a  処理プログラム
109b  設定データ
109c  ファームウェア
110  バス
200  CPUシミュレータ
201  アプリケーションハブ
201a  GUI
201b  システム管理モジュール
201c  配線モジュール
201d  同期モジュール
I/F201e, I/F201f, I/F201g  インターフェース
202  シミュレータアプリケーション
203  メカシミュレータ
【図１】
2009043073.tif 000003
【図２】
2009043073.tif 000004
【図３】
2009043073.tif 000005
【図４】
2009043073.tif 000006
【図５】
2009043073.tif 000007
【図６】
2009043073.tif 000008
【図７】
2009043073.tif 000009
【図８】
2009043073.tif 000010
【図９】
2009043073.tif 000011
【図１０】
2009043073.tif 000012