以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念及び下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
<第1の実施形態>
以下では、図1乃至図9Bを参照して、第1の実施形態について説明する。本実施形態は、複数の独立プロセスがシステム上の仮想時間で同期をとる機器制御シミュレーションシステムにおいて、操作者(以下、単にユーザと称する。)からの指示に従って特定プロセスの同期間隔を変更する。
まず、図2を参照して、本実施形態に係る機器制御シミュレーションシステムを実現する情報処理装置の構成について説明する。図2は、第1の実施形態に係る情報処理装置の構成例を示す図である。
情報処理装置201は、本体部202、表示装置203、キーボード204及びマウス205を備える。本体部202は、中央演算装置(以下、CPUと称する。)206、主記憶装置(以下、RAMと称する。)207、ハードディスク208等を備える。表示装置203は、本体部202からの指示により画面表示を行う。キーボード204は、情報処理装置201にユーザ(操作者)の指示や文字情報を入力するための装置である。マウス205は、表示装置203上の任意の位置を指定することにより当該位置に表示されていたアイコン等に応じた指示を入力する。
ハードディスク208には、機器制御シミュレーションにおける各機能を実現したプログラム、シミュレーションの対象となる機器情報を含むシミュレーションのための各種データが格納される。シミュレーションを実行する際には、例えば、プログラムや各種データがRAMにロードされ、CPU206によってプログラムが実行される。また、これら情報処理装置201の基本動作は、基本プログラムであるオペレーティングシステム(以下、OSと記す)を介して実行される。
次に、図1を参照して、本実施形態におけるシミュレータの機能ブロックについて説明する。図1は、第1の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。図1に示すように、機器制御シミュレータ100は、システムを構成する3つのアプリケーションであるCPUシミュレータ101と、シミュレータアプリケーション102と、機構部品シミュレータ103と、各プロセスを接続するためのシミュレータハブ(以下、HUBと称する。)104とを備える。
CPUシミュレータ101、シミュレータアプリケーション102、機構部品シミュレータ103は、それぞれがOS上で個別に動作するアプリケーションであり、それぞれが独立したプロセスとして存在する。さらに、シミュレータアプリケーション102は機能によって複数の独立プロセスで構成される場合がある。本実施形態によれば、CPUシミュレータ101は、ダイナミックリンクライブラリ(以下、DLLと称する。)で提供される外部モジュールとの間で、共有メモリや関数の直接呼出し方式による外部インターフェースを有する。また、シミュレータアプリケーション102及び機構部品シミュレータ103は、ソケットインターフェースによるプロセス間通信方式による外部インターフェースを有する。
HUB104は、CPUシミュレータ101の直接呼出し方式の外部インターフェースを利用するためにDLLとして提供され、CPUシミュレータ101から起動されるサブプロセスとして動作する。CPUシミュレータ101は、各種イベント発生時に、予め指定されたHUB104のコールバック関数を呼び出す。HUB104を構成する配線モジュール111、同期モジュール112の各モジュールはそれぞれ独立したスレッドとして動作し、CPUシミュレータ101の起動時に呼び出されるコールバック関数から各スレッドが起動される。シミュレータアプリケーション102、機構部品シミュレータ103は、OSの提供するアプリケーションプログラムインターフェースを使用してソケットインターフェースを介してHUB104との接続を行う。
次に、各構成要素の機能について説明する。
CPUシミュレータ101は、シミュレーション対象となるターゲット装置のCPU(以下、ターゲットCPUと称する。)の動作を情報処理装置201上で実現する機能である。ここで、ターゲットCPUとは、情報処理装置201に搭載されているCPUではなく、シミュレーションの対象となるターゲット装置(本実施形態ではプリンタ装置)に搭載され、当該装置を制御するためのCPUのことである。
CPUシミュレータ101は、ターゲットCPUの制御プログラム(以下、ターゲットファームウエアと称する。)に従って、ターゲットCPUの端子に対応して定義された仮想入力端子の情報を読み込み、仮想出力端子を制御する。また、CPUシミュレータ101は、ターゲットCPUのアドレス空間に対応した仮想アドレス空間を設けている。ここで、仮想アドレス空間とは、ターゲットCPUの管理するアドレス空間上の個々の領域と1対1で対応する領域を情報処理装置201のRAM上に定義したものである。仮想アドレス空間の情報処理装置201上の実アドレス値は、ターゲットCPUの扱うアドレス値とは異なる。そして、CPUシミュレータ101は、ターゲットファームウエアによるターゲットCPUアドレス空間上のアドレス値へのアクセス命令に従って、仮想アドレス空間上の対応する領域にアクセスする。また、ターゲットCPUのレジスタ類も、仮想アドレス空間上に対応する領域が設定され、レジスタ類へのアクセスも仮想アドレス空間へのアクセスによってシミュレーションされる。CPUシミュレータ101は、外部インターフェースとしてターゲットCPUのI/Oメモリ、レジスタアクセスのためのメソッドを設けている。外部モジュールは、これらのメソッドにより仮想アドレス空間へのアクセスを行う。情報処理装置201上でのターゲットファームウエアのシミュレーション方法としては、2つの方式がある。例えば、ターゲットファームウエアのソースプログラムを情報処理装置201のネイティブ言語に変換して実行する方式がある。また、ターゲットCPUの実行命令を1語ずつ解釈し、情報処理装置201のCPUに対応した実行命令に翻訳しながら実行する方式がある。本発明における実施形態においては、何れのCPUシミュレーション方式にも対応できる。
機器制御シミュレータ100においては、CPUシミュレータ101のイベント毎に、HUB104のコールバック関数が呼び出される。イベントには、例えば、CPUシミュレータ101の処理状態に関するもの(CPUシミュレータ101のプロセス起動、初期化終了等)や、ターゲットCPUの動作シミュレーション上のイベント(メモリアクセス、割り込み発生等)がある。
シミュレータアプリケーション102は、機器制御シミュレータ100による各種試験のための支援プログラムであり、仮想装置に対する各種働きかけの設定や、シミュレーションの結果を解析、表示、保存する機能を有する。
シミュレーションの対象となるターゲット装置(本実施形態ではプリンタ装置)は、当該装置を使用する操作者や当該装置に接続された情報処理装置等により外部から様々な働きかけ(以下、外部事象と称する。)を受けて動作する。シミュレータアプリケーション102は、これら外部事象のうち、機構部品シミュレータ103で設定されるメカニカルな外部事象以外のものを擬似的に設定する機能を提供する。ターゲット装置がプリンタ装置である場合、メカニカルな外部事象としては、給紙カセットの操作や消耗部品の取り外し、取り付け等が挙げられる。一方、それ以外の外部事象としては、ホストPCからの各種命令の受信、操作者によるオペレーションパネルの操作、環境温度の変化等が挙げられる。
シミュレータアプリケーション102は、これらを設定するための専用のユーザインターフェース(以下、UIと称する。)を提供する。また、シミュレータアプリケーション102は、当該UIによる設定に従ってHUB104を介してCPUシミュレータ101や機構部品シミュレータ103に所定の外部事象を通知する。また、シミュレータアプリケーション102は、情報処理装置201のハードディスクに格納された、連続した外部事象の設定手順を記述したマクロ命令ファイルや一連の外部事象データを記述したファイルを必要に応じて読み出し、外部事象を発生させる。
外部事象の設定機能のほかに、シミュレータアプリケーション102は、シミュレーションの結果として出力される各種データを解析、評価し、試験目的に応じた各種情報を表示装置203に表示する機能や、ハードディスクに保存する機能を有する。具体的には、機構部品シミュレータ103がシミュレートした機構部品動作のシミュレートデータを参照し、機構モデルを表示装置203上に2次元、又は3次元のグラフィックとして表示する機能を有する。以下、当該機能を機構部品シミュレーション結果表示アプリケーションと称する。さらに、シミュレータアプリケーション102は、各種信号の変化をタイミングチャートとして表示する機能、一連の動作を予め想定された動作と比較してその正当性を評価する機能や不正な事象を可視的に表示する機能等を有する。
ここで、図3を参照して、機構部品シミュレーションの結果表示アプリケーションの表示例について説明する。図3は、第1の実施形態に係るターゲット装置であるプリンタ装置の機構部品シミュレーションの結果を表示するアプリケーションの表示例を示す図である。301は給紙カセット、302はプリント用紙、303は用紙搬送路、304はセンサ、305はローラ、306はフラッパ、307は排紙トレイの機構部品モデルを示す。これらの機構部品モデルは、機構部品シミュレータ103がシミュレートした動作及び機構部品に接続される信号のシミュレーションデータを参照し、シミュレーションデータの変化に応じて機構部品を動かし、グラフィックとして表示装置203に表示される。
図1の説明に戻る。機構部品シミュレータ103は、ターゲット装置のアクチュエータ、センサを含む複数の部品からなる機械装置の機構部品、当該機構部品間の干渉、連携、及びアクチュエータ、センサに接続される信号をシミュレーションする。各機構部品には、ユーザにより形状、種類、動作、機構部品間の干渉や連携条件等、機構部品のシミュレーションに関する情報が定義される。さらに、センサ、アクチュエータについては外部信号定義が行われる。これら機構部品の定義はCAD図面からの自動設定、専用の機構部品作成ソフトウエアをユーザが操作して設定、その両方の組み合わせで設定するなどして行われる。上述したように定義される機構部品の種類としては単なる物体と定義されるものと機能定義がなされるもの(モータ、ソレノイド、クラッチ、センサ、歯車、カム、ローラ等)がある。また、機構部品にはシミュレーション対象となる装置の構成物ではないもので、装置の動作シミュレーションに必要なもの(プリンタ装置における用紙等)も含まれる。
機構部品シミュレータ103は、CPUシミュレータ101からHUB104を介して送られてきたアクチュエータ動作信号に対応して、該当するアクチュエータの機構部品動作のシミュレーションを行う。また、アクチュエータに連結された機構部品は、アクチュエータの動作に関連付けて定義された動きで動作シミュレーションする。また、操作者の操作により動作する機構については、キーボード204、マウス205によって操作者による機構部品への操作を擬似的に再現し、擬似操作に応じて対象となる機構部品を定義された動きで動作シミュレーションする。さらに、機構部品間の干渉、連携定義に従い、関連する全ての機構部品の動作をシミュレーションする。
これら機構部品の動作シミュレーションの結果、センサとして定義された機構部品に予め定義された外部事象が発生すると、外部事象に応じたセンサ信号を発生させる。当該センサ信号は、HUB104を介してCPUシミュレータ101に送信される。
なお、CPUシミュレータ101、シミュレータアプリケーション102及び機構部品シミュレータ103(以下、まとめて周辺シミュレーションツールと称する)は、処理実行指示部108からの処理実行指示に従って処理を行う。
HUB104は、コア部105とインターフェースモジュール106a、b、cから構成される。コア部105は、配線モジュール111及び同期モジュール112を備え、システム構成に合わせたHUBモジュールの設定、周辺シミュレーションツール間のデータ伝送管理、同期処理及びデータ伝送履歴の取得を行う機能を有する。なお、HUB104は、シミュレータアプリケーション102、及び機構部品シミュレータ103などの他のアプリケーションとは独立したプロセスで動作している。
インターフェースモジュール106a、b、cは、コア部105と各周辺シミュレーションツールとの接続を仲介する機能を有する。また、周辺シミュレーションツールからのデータ出力に応じて配線モジュール111のデータ送受信メソッドを呼び出してデータを配線モジュール111に渡し、配線モジュール111からのデータ設定要求に応じて周辺シミュレーションツールにデータを送る。
配線モジュール111は、予め設定された配線定義情報をもとに、周辺シミュレーションツール間を接続する。また、配線モジュール111は、インターフェースモジュール106a、b、cのそれぞれに対してデータ送受信のメソッドを提供する。
同期モジュール112は、各アプリケーションが有する固有の仮想時間における所定の仮想時間を1単位として、1単位ごとに複数アプリケーション間の仮想時間を一致させる同期処理を行う。同期モジュール112は、処理実行指示部108及び同期処理情報管理部109を備える。
処理実行指示部108は、各アプリケーションの同期間隔など同期処理を行うために必要な情報(以下、同期処理情報と称する。)113に従って、処理実行対象のアプリケーションに対して処理実行指示を通知する。処理動作指示とは、当該アプリケーションの同期間隔時間分の処理を実行するように、当該アプリケーションに対して出す指示である。同期処理情報113は、シミュレーション開始時に起動する全アプリケーションのアプリケーションID(各アプリケーションに割り当てられたID)と、同期間隔時間とを含む。また、同期処理情報113は、アプリケーションIDと各アプリケーションに設定された同期間隔を関連付けた形で扱われる。
CPUシミュレータ101、シミュレータアプリケーション102、及び機構部品シミュレータ103の各アプリケーションは、処理実行指示部108から出された処理実行指示に従って仮想時間分の処理を実行する。さらに、各アプリケーションは、当該処理が完了すると、処理実行指示部108に1同期間隔分の処理実行が完了したことを通知する。以下では、1同期間隔分の処理実行が完了したことを表す通知を実行完了通知と称する。
また、処理実行指示部108は、シミュレーションシステムの経過時間(以下、経過仮想時間と称する。)を管理している。経過仮想時間の管理方法については後述する。同期処理情報管理部109は、同期処理情報113を管理し、同期間隔制御部114を備える。
同期間隔制御部114は、外部インターフェース107を介して操作者から指定されたアプリケーションの同期間隔の情報である指定同期間隔情報115を備え、各アプリケーションの同期間隔を制御する。具体的には、同期間隔制御部114は、経過仮想時間及び指定同期間隔情報115に基づいて、各アプリケーションの同期間隔を決定し、処理実行指示部108が次の同期処理時に使用するアプリケーションの同期間隔を処理実行指示部108へ伝達する。この伝達される同期間隔が同期処理情報113となる。
外部インターフェース107は、操作者が設定したシミュレーションシステムを構成する複数のアプリケーションが連携動作を行うための各種情報を、コア部105の外部からコア部105に渡す際のインターフェースとなる。
ここで、図4A及び図4Bを参照して、同期間隔の設定方法について、外部インターフェース107としてGUIを使用する場合を例に挙げて説明する。図4Aは、第1の実施形態に係るGUIによって表示装置203上に表示される各プロセスの同期間隔設定のための表示画面401を示す図である。
表示画面401には、シミュレーションシステムを構成するアプリケーション名の表示欄402と同期間隔を指定可能な同期間隔設定欄403が含まれる。シミュレーションシステムの操作者は、同期間隔設定欄403上の設定対象の欄をマウス205により指定し、当該指定個所にキーボード204から各アプリケーションの同期間隔を数字で入力し、同期間隔を設定する。なお、各アプリケーションの同期間隔は、シミュレーション実行中か否かに関わらず操作者の任意のタイミングで変更可能である。操作者が同期間隔全ての設定を終了すると、「OK」ボタンをマウス205によりクリックすることで、同期間隔の情報が確定される。
表示画面401に表示された同期間隔の情報は、図4Bに示すような、各アプリケーションに割り当てられたアプリケーションIDと、設定された同期間隔時間を関連付けた情報として扱われる。図4Bは、第1の実施形態に係る指定同期間隔情報115を示す図である。そして、アプリケーションIDと同期間隔時間の情報は、外部インターフェース107を介して同期間隔制御部114の中に格納される。格納された情報が指定同期間隔情報115となる。また、同期処理情報113についても、図4Bに示す指定同期間隔情報115と同様に、シミュレーション開始時に起動されているアプリケーション全てのIDとそのアプリケーションの同期間隔が関連付けられた情報となっている。
なお、上述では外部インターフェース107としてGUIを使用した例を挙げたが、GUI以外に、外部ファイルインターフェースやプロセス間通信を使用し、コア部105が同期間隔情報を取得する方法もある。外部ファイルインターフェースを使用する場合、予め定義された書式に従って編集した、同期間隔を指定したファイルをユーザが用意し、外部ファイルインターフェースを介して処理動作情報が取得される。
プロセス間通信を使用する場合は、コア部105とプロセス間通信で接続されている不図示のシミュレーション実行環境指定のためのアプリケーション(コア部分と別プロセス)を使用し、ユーザがアプリケーションの同期間隔を指定する方法もある。
次に、図5を参照して、処理実行指示部108の処理の流れについて説明する。図5は、第1の実施形態に係る処理実行指示部108の処理手順を示すフローチャートである。
まず、ステップS501において、処理実行指示部108は、シミュレーションシステムの実行を開始した後、同期処理を行うための同期処理情報113を取得する。ここで、処理実行指示部108は、同期処理情報113を取得するために、同期間隔制御部114と以下の順序で情報のやり取りを行う。図6は、第1の実施形態に係る同期処理情報113を取得する際の処理手順を示す図である。まず、ステップS601において、処理実行指示部108は、同期間隔制御部114に、経過仮想時間を送信する。続いて、ステップS602において、処理実行指示部108は、同期間隔制御部114に、同期処理情報113を送信する。さらに、ステップS603において、同期間隔制御部114は、処理実行指示部108に、最新の同期間隔情報を送信する。ここで、処理実行指示部108は、同期間隔制御部114からの最新の同期間隔情報を受信し、次の同期処理で参照する同期処理情報113を更新する。
図5の説明に戻る。同期処理情報113を取得すると、ステップS502において、処理実行指示部108は、処理実行対象のプロセスに対して、処理動作指示を出す。具体的には、処理実行指示部108は、同期処理情報113中の同期間隔時間の倍数が経過仮想時間となっているプロセスを処理実行対象のプロセスとして判断する。なお、経過仮想時間が0msである(シミュレーション開始後、最初に処理動作指示を出す)場合は、起動されている全プロセスを処理実行対象プロセスと判断する。そして、処理実行対象のプロセスと判断した全プロセスに対して処理実行指示を出す。
次に、ステップS503において、処理実行指示部108は、経過仮想時間を更新する。具体的には、処理実行対象と判断したプロセスに対応する同期処理情報113の同期間隔を、最短同期間隔(以下、基準同期間隔と称する。)分だけ経過仮想時間として進める。
ステップS504において、処理実行指示部108は、次の同期処理への移行条件が成立したか否かを判定する。S504で次の同期処理への移行条件が成立している場合は、S501に戻る。ここで、移行条件とは、「同期間隔が経過仮想時間の約数となっている全プロセスから実行完了通知を受信したか否か」である。
次に、比較例となるシミュレーションシステムと本実施形態のシミュレーションシステムとを比較する。ここでは、後述する従来から知られている同期間隔伝達部1601を備えるシミュレーションシステムを比較例に挙げて説明する。図16は、比較例となるシミュレーションシステムの全体構成を示す図である。図16に示す機器制御シミュレータ1600は、同期間隔伝達部1601を図1に示す本実施形態に係る機器制御シミュレータ100に適用した構成となる。したがって、他の構成要素については説明を省略する。同期間隔伝達部1601は、ユーザに指定された各プロセスの同期間隔を処理実行指示部108に伝達する。
図7は、比較例となる同期間隔伝達部1601の処理手順を示すフローチャートである。図7に示すフローチャートでは、同期間隔伝達部1601が、上述した処理実行指示部108からの経過仮想時間を受信してから、処理実行指示部108への最新同期間隔情報を送信するまでの一連の処理を示す。
ステップS701において、同期間隔伝達部1601は、処理実行指示部108からの経過仮想時間通知を受信するまで待機する。経過仮想時間を受信すると、ステップS702において、同期間隔伝達部1601は、処理実行指示部108が直前の同期処理で使用した各プロセスの同期間隔情報を受信するまで待機する。同期間隔情報を受信すると、ステップS703において、同期間隔伝達部1601は、当該同期間隔伝達部1601で保持している指定同期間隔情報115を最新の同期間隔情報として処理実行指示部108へ送信し、処理を終了する。
以上のように、比較例となる同期間隔伝達部1601は、操作者から指定された各プロセスの同期間隔情報を何も変更、修正せずに、保持している指定同期間隔情報115を処理実行指示部1608に送信する。S701〜S703の処理フローでは、シミュレーション実行途中にプロセスの同期間隔の設定を変更した場合、同期間隔設定の変更後は複数プロセス間の同期が取れなくなってしまう。したがって、比較例のシミュレーションシステムでは結果的にはシミュレーション実行途中での同期間隔の設定を変更することができない。
次に、図8を参照して、本実施形態に係る同期間隔制御部114の処理フローについて説明する。図8は、第1の実施形態に係る同期間隔制御部114の処理手順を示すフローチャートである。ここでは、起動されているプロセス数をN個とし、各プロセスのIDは”1”から順に整数が割り当てられるものとする。また、図8に示すフローチャートは、同期間隔制御部114が、処理実行指示部108からの経過仮想時間を受信してから、処理実行指示部108への最新の同期間隔情報を送信するまでの一連の処理を示す。
ステップS801において、同期間隔制御部114は、処理実行指示部108からの経過仮想時間を受信するまで待機する。経過仮想時間を受信すると、ステップS802において、同期間隔制御部114は、受信した経過仮想時間を記憶する。以下、S802で記憶した経過仮想時間を記憶経過仮想時間と称する。
次に、ステップS803において、同期間隔制御部114は、処理実行指示部108が直前の同期処理で使用した各プロセスの同期間隔情報を受信するまで待機する。同期間隔情報を受信すると、ステップS804において、同期間隔制御部114は、S803で通知された同期間隔情報を記憶する。以下では、S804で記憶した同期間隔情報を記憶同期間隔と称する。
次に、ステップS805において、同期間隔制御部114は、処理対象となるプロセスIDを示すプロセスID変数IDnumを”1”で初期化する。続いて、ステップS806において、同期間隔制御部114は、処理対象となるプロセスID変数IDnumが起動されているプロセス数Nを越えているか否かを判定する。ここで、IDnum<=Nであれば、ステップS807に進み、プロセスID==IDnumの同期間隔について処理する。ステップS807において、同期間隔制御部114は、記憶経過仮想時間が指定同期間隔の倍数であるか否かを判定する。ここで、記憶経過仮想時間が同期間隔の倍数となっていれば、ステップS808に進み、記憶同期間隔のプロセスID==IDnumであるプロセスの同期間隔の情報を、指定同期間隔情報115のプロセスID==IDnumであるプロセスの同期間隔情報に更新する。その後、ステップS809において、同期間隔制御部114は、プロセスID変数IDnumに1を加算し、ステップS806の処理に戻る。一方、S807で記憶経過仮想時間が同期間隔の倍数となっていなければ、ステップS808の処理を行わず、S809の処理へ進む。
また、ステップS806で、IDnum<=Nでないと判定すると、ステップS810に進む。ステップS810において、同期間隔制御部114は、全プロセスの同期間隔について更新が終了したと判断し、更新した記憶同期間隔(即ち、最新同期間隔)を処理実行指示部108に送信し、一連の処理が終了する。
以上のように、本実施形態に係る同期間隔制御部114は、処理実行指示部108から経過仮想時間が通知されるたびに上述の処理を行い、複数アプリケーション間での連携動作が途切れることのないように、起動中プロセスの同期間隔を制御する。これにより、本実施形態に係る機器制御シミュレータ100は、シミュレーションの実行途中であっても、プロセスの同期間隔の設定を変更することができる。よって、操作者の要望に応じた、シミュレーションを実行することができる。
<具体例>
以下では、あるプロセスの同期間隔の設定を変更する際の、比較例となる同期間隔伝達部1601の処理と、本実施形態に係る同期間隔制御部114の処理とを、具体例を挙げて比較説明する。ここでは、具体例として、プロセス1、プロセス2、プロセス3(以下、プロセス1、プロセス2、及びプロセス3をP1,P2,P3と称する。)の3つのプロセスでシミュレーション実行する例について説明する。また、同期間隔を以下のように設定する。シミュレーション開始時では、P1:2ms、P2:2ms、P3:10msとする。経過仮想時間が1004msの場合には、P1:2ms、P2:10ms、P3:10msとする。
図9Aは、比較例となる同期間隔伝達部1601を適用した場合に同期間隔を変更した結果を示す図である。一方、図9Bは、第1の実施形態に係る同期間隔制御部114を適用した場合に同期間隔を変更した結果を示す図である。図9A及び図9Bでは経過仮想時間1000ms以前のプロセス処理の流れについては図示を省略している。
図9A及び図9Bに示すように、経過仮想時間1000ms〜1004msまでは同期間隔伝達部1601又は同期間隔制御部114が送信する最新の同期間隔に差異はない。しかし、P2の同期間隔の設定が操作者によって2msから10msに変更された後で、同期間隔伝達部1601と、同期間隔制御部114とで送信される最新同期間隔に違いが生じる。
経過仮想時間1006ms時点で、処理実行指示部108に送信する最新同期間隔を、同期間隔伝達部1601では10ms、同期間隔制御部114では2msとしている。送信する最新同期間隔の差異は、両者の処理フローの違いによるものである。同期間隔伝達部1601は、操作者に設定された各プロセスの同期間隔(即ち、指定同期間隔)を何も修正、変更することなく最新同期間隔として処理実行指示部108に伝達している。一方で、本実施形態に係る同期間隔制御部114は、変更された指定同期間隔の設定をいつの時点からプロセスの同期間隔として有効とするかを判定し、最新同期間隔を決定している。この判定処理及び決定処理は、図8に示すステップS807、S808に相当する。上述の違いから、P2の同期間隔の設定変更によりP2の処理は、比較例となるシミュレーションシステムでは経過仮想時間1006ms〜1010msまでの仮想時間4ms分が実行されない。一方で、本発明のシミュレーションシステムでは4ms分欠かすことなく実行される。
上述したように、比較例となるシミュレーションシステムでは、同期間隔が変更された時点の経過仮想時間から、経過仮想時間が変更された同期間隔の倍数となるまでの間の仮想時間分のプロセス処理が実行されないことになる。したがって、複数プロセス間での同期を正しくとることができなくなるため、シミュレーション実行途中にプロセスの同期間隔を変更することができない。しかし、本発明のシミュレーションシステムでは、同期間隔の設定が変更された時点の経過仮想時間から、経過仮想時間が変更された同期間隔の倍数となるまでの間は、プロセスの同期間隔を設定変更前の同期間隔として実行される。したがって、同期間隔の設定が変更されても複数プロセス間での同期を正しくとることができる。
シミュレーション実行途中でプロセスの同期間隔の変更が可能になると、シミュレーション実行中のある仮想時間でのみ精度よくシミュレーションを行いたい場合に有利である。つまり、連携するプロセスの同期間隔を小さくしてプロセス間連携を密に取りたい場合、所望の個所でのみプロセスの同期間隔設定を変更することで、シミュレーションのある仮想時間でのみ精度よくシミュレーションすることができる。よって、シミュレーション開始時から同期間隔を小さく設定してシミュレーションを実行する場合と比較すると、シミュレーション実行時に必要なプロセス間通信量を低減することができる。
例えば、プリンタ装置の紙搬送機能についてデバッグ作業を行う際に、機器制御シミュレーションの実行中にターゲットファームウエアが紙搬送制御を行っている時は、プロセス間連携を密に行い、精度良いシミュレーションが望まれる。一方、紙搬送制御を行っていない時は、それほど密なプロセス間連携を必要としない。したがって、本実施形態に係る機器制御シミュレータ100によれば、ユーザはCPUシミュレータ101が紙搬送制御を行っているか否かに応じ、各アプリケーションの同期間隔を変更するこで、所望のシミュレーションを実現することができる。
上述したように、本実施形態に係る機器制御シミュレータ100では、シミュレーション実行中であっても、ユーザが所望のタイミングでシミュレータアプリケーションの同期間隔を変更することができる。つまり、シミュレーション実行目的には影響を与えないないプロセス間通信を省くことができ、結果として、シミュレーション実行環境資源の有効利用が可能になり、シミュレーションの利用効率を向上することができる。
<第2の実施形態>
次に、図10乃至図11Bを参照して、第2の実施形態について説明する。本実施形態は、シミュレーション実行途中で、あるプロセス処理が必要になったり、不要になった場合に操作者からの指示に従って特定プロセスの処理を実行させるか否かを変更する。
図10は、第2の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。本実施形態に係る機器制御シミュレータ1000は、比較例として説明した機器制御シミュレータの構成要素である同期処理情報管理部109に、処理動作伝達部1001が加わった構成である。また、処理実行指示部108に新規機能を加えたものである。したがって、ここでは、図1又は図16と同様の構成については、同一の番号を付し、詳細な説明を省略する。
本実施形態に係る機器制御シミュレータ1000は、機器制御シミュレータ1600の構成に加えて、処理動作伝達部1001を備える。また、処理動作伝達部1001は、処理動作情報1002を含む。また、処理実行指示部1003には、処理実行指示部108の有する機能に加えて、各アプリケーションの処理を実行するか否か(以下、処理動作と称する。)の情報に従って、当該アプリケーションに処理実行指示を出すか否かを決定する機能が含まれる。
処理動作伝達部1001は、処理実行指示部1003が同期処理を行う際に参照する同期処理情報を変更する。なお、処理動作伝達部1001は、処理動作情報1002に基づいて同期処理情報を変更する。
ここで、比較例における処理実行指示部108と、本実施形態に係る処理実行指示部1003との違いを説明する。比較例のシミュレーションシステムでは、各アプリケーションの処理動作情報を有していない。よって、比較例における処理実行指示部108では、同期処理情報の各アプリケーションの同期間隔のみから、処理実行対象のアプリケーションを決定している。一方、本実施形態に係る処理実行指示部1003は、同期処理情報の各アプリケーションの同期間隔と処理動作状態によって処理実行対象のアプリケーションを決定する。
以下では、図11A及び図11Bを参照して、処理動作状態の設定方法について、外部インターフェース107としてGUIを使用する場合を例に挙げて説明する。図11Aは、第2の実施形態に係るGUIによって表示装置203上に表示される各プロセスの同期間隔設定のための表示画面1101を示す図である。
表示画面1101には、シミュレーションシステムを構成するアプリケーション名の表示欄1102と処理動作を指定可能な設定欄1103が含まれる。シミュレーションシステムの操作者は、処理動作の設定欄1103上の設定対象の欄をマウス205により指定し、当該指定個所に現れるプルダウンメニューからアプリケーションに設定する処理動作を選択する。これにより、処理動作の設定を行うことができる。なお、図11Aでは、マウス205が示す場所を矢印で表現している。操作者が全ての処理動作を設定すると、「OK」ボタンをマウス205でクリックし、処理動作の設定情報が確定される。
表示画面1101で設定された処理動作の設定情報は、シミュレーションシステムの中では、例えば、図11Bに示すように、各アプリケーションに付けられたアプリケーションIDと、処理動作を示す処理動作番号とを含む。図11Bは、第2の実施形態に係る処理動作情報1002を示す図である。ここでは、処理動作が「実行」の場合を処理動作番号を”1”で示し、「休止」の場合の処理動作番号を”0”で示している。そして、アプリケーションIDと処理動作番号の情報は、処理動作伝達部1001の処理動作情報1002に格納される。そして、処理動作伝達部1001は、アプリケーションIDと処理動作番号の情報に従って、同期処理情報113中の処理動作に関する情報を設定する。さらに、処理実行指示部1003は、処理動作伝達部1001が設定した同期処理情報113に従って各プロセスに処理動作の指示を出す。
なお、第1の実施形態における指定同期間隔情報と同様に、外部インターフェース107としてGUI以外に、外部ファイルインターフェースやプロセス間通信を使用することも可能である。ここで、外部ファイルとは、ユーザが予め定義された書式に従って編集した処理動作情報を含むファイルをいう。
本実施形態において、プリンタ装置の紙搬送機能についてデバッグ作業を行う場合について説明する。紙搬送機能についてデバッグ作業を行う場合、プリンタ装置のシミュレーション対象物を機器制御シミュレータ1000の構成に置き換えると以下のようになる。プリンタ装置のCPUは、CPUシミュレータ101となる。駆動物(モータ、クラッチなど)のドライバは、駆動物ドライバアプリケーションとして実現される。また、機構部品は、機構部品シミュレータ103となる。機構部品の動作表現は、機構部品シミュレーションの結果を表示するシミュレータアプリケーション102となる。
紙搬送制御のデバッグ作業では、機器制御シミュレータ1000の実行中、CPUシミュレータ101が紙搬送制御を行っている時のみ紙搬送の様子を目視で確認し、紙搬送制御を行っていない時は目視確認を必要としない。この場合、操作者はCPUシミュレータ101の紙搬送制御を行っているか否かに応じて、以下のようにシミュレータアプリケーション102の処理動作状態を変更する。
具体的には、操作者は、CPUシミュレータ101が紙搬送制御を行っている場合に、外部インターフェース107を介して、シミュレータアプリケーション102の処理動作状態を「実行」状態に変更する。一方、CPUが紙搬送制御を行っていない場合には、シミュレータアプリケーション102の処理動作状態を「休止」と設定する。ユーザが変更した機構部品シミュレーション結果表示アプリケーションの処理動作状態は、処理動作状態が変更される度に処理動作情報1002が変更される。
処理実行指示部1003は、当該アプリケーションの処理動作状態が「休止」であれば、当該アプリケーションに設定されている同期間隔を無効とし、処理実行指示を出さない。
上述したように、本実施形態によれば、ユーザが所望のタイミングでシミュレータアプリケーションの処理を実行するか否かの状態を変更することができる。つまり、シミュレーション実行目的には影響を与えないプロセス間通信を省くことができ、結果として、シミュレーション実行環境資源の有効利用が可能になり、シミュレーションの利用効率を上げることができる。
また、ここでは、比較例となる同期間隔伝達部1601を有する機器制御シミュレータ1600に、処理動作状態を変更する構成を加えたが、もちろん第1の実施形態における同期間隔制御部114を有する機器制御シミュレータ100に適用してもよい。これにより、シミュレーションの利用効率をより向上することができる。
<第3の実施形態>
次に、図12及び図13を参照して、第3の実施形態について説明する。第1の実施形態では、同期間隔制御部114を有し、アプリケーションの同期間隔をシミュレーション実行中に変更できる機器制御シミュレータについて説明した。また、第2の実施形態では、処理動作情報1002を設け、処理実行指示部1003に処理動作状態によって処理実行を指示する機器制御シミュレータについて説明した。
本実施形態は、シミュレーション実行中に各アプリケーションの同期間隔情報及び処理動作情報を変更でき、変更された両者の情報に従って、アプリケーション間の連携動作方法を変更する機器制御シミュレータについて説明する。
図12は、第3の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。本実施形態に係る機器制御シミュレータ1200は、同期処理情報管理部109に、処理動作伝達部1201及び同期間隔制御部1203を含む。したがって、ここでは、図1又は図16と同様の構成については、同一の番号を付し、詳細な説明を省略する。
処理動作伝達部1201は、処理動作伝達部1001の機能に加えて、同期間隔制御部1203に同期処理情報の処理動作情報1202を変更したことを通知する機能を含む。したがって、本実施形態に係る同期間隔制御部1203は、経過仮想時間、当該アプリケーションの指示同期間隔情報、及び、処理動作状態に基づいて、各アプリケーションの最新の同期間隔を決定する。
処理動作伝達部1201は、処理実行指示部1205が参照する同期処理情報113の当該アプリケーションの処理動作状態を変更する際、同期処理情報113中の処理動作状態を変更するとともに、同期間隔制御部1203に当該アプリケーションの処理動作状態の変更を通知する。以下では、この通知を処理動作変更通知と称する。処理動作変更通知は、処理動作を変更したアプリケーションのアプリケーションIDと変更後の処理動作状態を対応付けた情報を処理動作伝達部1201から同期間隔制御部1203に送信することで実現される。
処理動作変更通知を受信した同期間隔制御部1203は、処理動作変更通知の内容から、変更後の処理動作状態が「実行」である(「休止」から「実行」に変更された)場合、次に指定同期間隔の倍数となる経過仮想時間を算出する。以下では、この経過仮想時間を処理実行指示予定時間と称する。処理実行指示予定時間は、指定同期間隔の倍数であり、かつ、経過仮想時間より大きい値の中で現在の経過仮想時間との差分が最も小さい値となる。経過仮想時間が処理実行指示予定時間になるまでの間は、経過仮想時間と処理実行指示予定時間の差分と、指定同期間隔の最大公約数を最新の同期間隔とする。また、経過仮想時間が処理実行指示予定時間に到達した後は、指定同期間隔を最新の同期間隔として決定する。
図13は、第3の実施形態に係る同期間隔制御部1203の処理手順を示すフローチャートである。ここでは、図8と同様の処理を行う処理ブロックについては、同一のステップ番号を付し説明を省略する。
S807で経過仮想時間が指定同期間隔の倍数でないと判定されると、ステップS1301において、同期間隔制御部1203は、当該プロセスについて処理動作が「実行」に変更されたという処理動作変更通知を受信しているか判定する。ここで、「実行」に変更されたという処理動作変更通知を受信している場合、同期間隔制御部1203は、処理をステップS1302に遷移させ、そうでない場合は処理をステップS809に遷移させる。
ステップS1302において、同期間隔制御部1203は、指定同期間隔を同期処理時に参照する同期間隔とした場合に、次に当該アプリケーションに処理実行指示が出される経過仮想時間はいつになるか(即ち、処理実行指示予定時間)を算出する。続いて、ステップS1303において、同期間隔制御部1203は、算出した処理実行指示予定時間と指定同期間隔の最大公約数を算出する。さらに、ステップS1304において、同期間隔制御部1203は、記憶同期間隔のアプリケーションID==IDnumの同期間隔情報をS1303で算出した同期間隔で更新し、処理をS809に遷移させる。
これにより、本実施形態では、処理動作状態が「休止」から「実行」に変更されたプロセスに対して、処理動作状態変更時に指定同期間隔でプロセス処理を行うことができない場合であっても、処理動作状態変更時からすぐにプロセス処理を実行できる。
上述したように、本実施形態に係る機器制御シミュレータ1200は、シミュレーション実行途中にプロセスの同期間隔、処理動作状態の同期処理に関わる2つの設定状況に応じて適切にシミュレーションを実行する。これにより、シミュレーション実行目的には影響を与えないプロセス間通信を省くことができ、結果として、シミュレーション実行環境における資源の有効利用が可能になり、シミュレーションの利用効率を向上させることができる。
<第4の実施形態>
次に、図14乃至図15Bを参照して、第4の実施形態について説明する。第1乃至第3の実施形態では、プリンタ装置の機器制御シミュレーション実行時に、ユーザが外部インターフェース107を介して各アプリケーションの同期間隔情報又は処理動作情報の変更を行い、アプリケーション間の連携動作方法を変更していた。しかし、各アプリケーションの同期間隔や処理動作の変更がシミュレーションの動作状況と対応付けられる場合がある。
そこで、本実施形態に係る機器制御シミュレータ1400は、操作者に指定されたシミュレーション実行状況とシステム内の実行状況が一致するか否かを判定し、一致した場合にプロセス間の連携動作方法を変更する。機器制御シミュレータ1400は、予め定義されたプロセスの処理動作の変更条件に従って、各プロセスの同期間隔及び処理動作状態を変更し、変更された同期間隔及び処理動作状態に応じて、第1乃至第3の実施形態と同様に各プロセス間の同期処理を行う。
図14は、第4の実施形態に係る機器制御シミュレータの機能構成を示すブロック図である。本実施形態に係る機器制御シミュレータ1400は、機器制御シミュレータ1200の構成に加えて、コア部105に、同期処理変更部1401(詳細は後述する)と、同期処理変更条件情報1402を備える。したがって、ここでは、図14と同様の構成については、同一の番号を付し、詳細な説明を省略する。
同期処理変更部1401は、機器制御シミュレータ1400の動作状況が同期処理変更条件情報1402に一致すると、各アプリケーションの同期間隔及び処理動作を変更する。同期処理変更条件情報1402は、上述の実施形態で同期間隔や処理動作の情報を取得する方法と同様に、外部インターフェース107を介して取得される。同期処理変更条件情報1402は、各アプリケーションの同期間隔及び処理動作を変更するための条件である。同期処理変更部1401は、シミュレーション実行状況が同期処理変更条件情報1402に一致するか否かを判定し、一致している場合には、当該条件で指定同期間隔情報1204や処理動作情報1202といった同期処理に関する設定を変更する。
図15Aは、第4の実施形態に係る指定同期間隔情報及び処理動作情報が操作者によって変更される様子を示す図である。図15Bは、第4の実施形態に係る指定同期間隔情報及び処理動作情報が同期処理変更部によって変更される様子を示す図である。図15Aに示すように、ユーザが2つの情報を変更する場合、外部インターフェース107を介して当該情報が変更される。一方、図15Bに示すように、同期処理変更部1401が2つの情報を変更する場合、同期処理変更部1401から当該情報が変更される。なお、ユーザ、同期処理変更部1401が同時に2つの情報を変更することはない。
例えば、紙搬送制御についてターゲットファームウエアをデバッグする場合を想定する。この場合、CPUシミュレータ101が紙搬送制御を行う時のみ、各アプリケーション間のプログラム連携が密に行われる。また、ターゲットファームウエアの紙搬送制御を確認する場合、ユーザによって外部インターフェース107を介して、CPUシミュレータ101が紙搬送制御開始、及び紙搬送制御終了の条件(即ち、同期処理変更条件)が指定される。同期処理変更条件が指定されると、同期処理変更部1401は、条件が成立した場合に各アプリケーションの同期間隔を変更する。ここで、シミュレーション開始時に、CPUシミュレータ101のほか全アプリケーションの同期間隔が10msと想定する。また、紙搬送制御開始時、終了時の条件を以下に記載する。
<紙搬送開始時・・・「全アプリケーションの同期間隔を2msとする」条件>
CPUシミュレータ101の信号A==a
<紙搬送終了時・・・「全アプリケーションの同期間隔を10msとする」条件>
CPUシミュレータ101の信号A==z
上記a及びzは任意の数値である。
配線モジュール111は、信号Aの値に変化が発生した場合、予め設定された配線定義情報に基づいて周辺シミュレーションツール間を接続し、信号Aに変化が発生したことを同期処理変更部1401に通知する。
同期処理変更部1401は、信号A==aの条件成立と判定すると、指定同期間隔情報1204を全アプリケーションについて同期間隔2msと変更する。一方、信号A==zの条件成立と判定すると、同期処理変更部1401は、指定同期間隔情報1204を全アプリケーションについて同期間隔10msと変更する。変更された指定同期間隔情報1204を同期処理情報113に反映させる手順については第3の実施形態で説明したため省略する。
このように、本実施形態では、予め定義されたプロセス間の連携動作方法の変更条件に従って、システム内でシミュレーション実行状況に応じてプロセス間の連携動作方法を変更する。これにより、ユーザがシミュレーション実行状況を逐次確認することなく、シミュレーション使用目的を満たすために適切なアプリケーションを実行することできる。よって、シミュレーション実行環境資源の有効利用が可能になるとともに、ユーザのシミュレーション実行時の手間を低減し、シミュレーション実行効率が向上させることができる。
<他の実施形態>
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム又は装置に供給し、それらのコンピュータ(CPUやMPU等)が格納されたプログラムコードを読出し実行しても本発明の目的は達成される。
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OS(オペレーティングシステム)に供給するスクリプトデータ等、プログラムの形態を問わない。
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW等がある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD等がある。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
他に、プログラムの供給方法として、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、ホームページ本発明のコンピュータプログラムをHDD等の記録媒体にダウンロードすることもできる。もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数の操作者に対してダウンロードさせるWWWサーバやftpサーバ等も本発明の請求項に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納して操作者に配布することも可能である。その場合、所定の条件をクリアした操作者に対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせることができる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現する。
また、コンピュータが読み出したプログラムコードを実行するだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働するOS等が実際の処理の一部又は全部を行うことでも実現される。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込む方法も可能である。その場合、プログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行うことでも実現される。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。