(57)【要約】【課題】上述の問題に鑑みて成されたものであり、独立プロセスとして動作する複数のアプリケーションソフトウェアを連携駆動させる際に、入出力信号の照会処理にかかる負荷を低減させ、システム全体として処理を高速化させる仕組みを提供する。【解決手段】本発明は、プログラム連携システムが起動されると、複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、プログラム連携システムの中で共通の情報である共通識別情報と、各アプリケーションにおいて共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の共用信号における個別識別情報の夫々に対して共通識別情報を指定し、共用信号が発生すると、共通識別情報に従って必要なアプリケーションへ当該共用信号を伝達する。【選択図】  図１
2017091469.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションと連携してシミュレーション対象の装置のシミュレーションを実行するプログラム連携システムであって、
前記プログラム連携システムが起動されると、前記複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、前記プログラム連携システムの中で共通の情報である前記共通識別情報と、各アプリケーションにおいて該共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して前記共通識別情報を指定する指定手段と、
前記共用信号が発生すると、前記共通識別情報に従って必要なアプリケーションへ前記共用信号を伝達する中継手段と
を備えることを特徴とするプログラム連携システム。
【請求項２】
前記共通識別情報と、各アプリケーションの前記個別識別情報とを紐付けて定義した配線定義情報を記憶する記憶手段をさらに備え、
前記指定手段は、前記記憶手段に記憶された前記配線定義情報に従って、各アプリケーションへ前記共通識別情報を指定することを特徴とする請求項１に記載のプログラム連携システム。
【請求項３】
前記共通識別情報は、前記配線定義情報に含まれる各アプリケーションの前記個別識別情報を配列化した際のインデックス値であることを特徴とする請求項２に記載のプログラム連携システム。
【請求項４】
前記シミュレーション対象の装置のアドレスマップと、前記共用信号ごとに各アプリケーションの前記個別識別情報を定義する配線定義情報とから、前記共用信号ごとに前記共通識別情報を算出する算出手段をさらに備え、
前記指定手段は、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して、前記算出手段によって算出された共通識別情報を指定することを特徴とする請求項１に記載のプログラム連携システム。
【請求項５】
前記中継手段は、前記複数のアプリケーションのうちの１つのアプリケーションに含まれることを特徴とする請求項１乃至４の何れか１項に記載のプログラム連携システム。
【請求項６】
前記中継手段を含む前記アプリケーションは、さらに、前記指定手段を含むことを特徴とする請求項５に記載のプログラム連携システム。
【請求項７】
前記中継手段は、前記複数のアプリケーションの夫々に含まれることを特徴とする請求項１乃至４の何れか１項に記載のプログラム連携システム。
【請求項８】
前記中継手段は、自身のアプリケーションから他のアプリケーションへ前記共用信号を通知するために、前記自身のアプリケーションにおける前記個別識別情報から前記共通識別情報へ変換する変換テーブルを備えることを特徴とする請求項７に記載のプログラム連携システム。
【請求項９】
前記中継手段は、前記他のアプリケーションから前記共用信号を受信するために、該他のアプリケーションから通知された前記共通識別情報を前記個別識別情報へ変換する変換テーブルをさらに備えることを特徴とする請求項８に記載のプログラム連携システム。
【請求項１０】
各アプリケーションにおける前記個別識別情報は、前記共用信号を示す情報と、当該アプリケーションにおける該共用信号を入力するか、出力するか、入出力するか、又は、扱わないかを示す結線方向の情報とを含むことを特徴とする請求項１乃至９の何れか１項に記載のプログラム連携システム。
【請求項１１】
前記中継手段は、前記共用信号が発生すると、前記結線方向の情報に従って、伝達する必要のあるアプリケーションへ該共用信号を伝達することを特徴とする請求項１０に記載のプログラム連携システム。
【請求項１２】
前記共用信号には、当該共用信号に対応する値を読み出す読出通知と、該対応する値を書き込む書込通知とがあり、
前記中継手段は、
前記共用信号が前記読出通知であれば、該対応する値を前記読出通知の発行元のアプリケーションへ前記対応する値を返送し、
前記共用信号が前記書込通知であれば、該書込通知とともに受信した前記対応する値を保持することを特徴とする請求項１乃至１１に記載のプログラム連携システム。
【請求項１３】
複数のアプリケーションと連携してシミュレーション対象の装置のシミュレーションを実行するプログラム連携システムの制御方法であって、
指定手段が、前記プログラム連携システムが起動されると、前記複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、前記プログラム連携システムの中で共通の情報である前記共通識別情報と、各アプリケーションにおいて該共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して前記共通識別情報を指定する指定工程と、
中継手段が、前記共用信号が発生すると、前記共通識別情報に従って必要なアプリケーションへ前記共用信号を伝達する中継工程と
を実行することを特徴とするプログラム連携システムの制御方法。
【請求項１４】
複数のアプリケーションと連携してシミュレーション対象の装置のシミュレーションを実行するプログラム連携システムの制御方法における各工程をコンピュータに実行させるためのプログラムであって、前記方法は、
指定手段が、前記プログラム連携システムが起動されると、前記複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、前記プログラム連携システムの中で共通の情報である前記共通識別情報と、各アプリケーションにおいて該共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して前記共通識別情報を指定する指定工程と、
中継手段が、前記共用信号が発生すると、前記共通識別情報に従って必要なアプリケーションへ前記共用信号を伝達する中継工程と
を実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、独立プロセスとして動作する複数のアプリケーションソフトウェアを各アプリケーションの外部インターフェースを介して連携動作させ、１つのシステムとして動作させるプログラム連携システム、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１は、機器制御シミュレーションを行うプログラム連携システムを提案している。当該システムは、装置を制御する中央処理装置（ＣＰＵ）のシミュレータ（シミュレーションデバッガ）と、機器モデルのシミュレータと、各種装置構成のシミュレータと、シミュレーションを支援するシステムを受け持つアプリケーションソフトウェア等を有する。なお、当該アプリケーションソフトウェアを、以下では、まとめてシミュレータアプリケーションと称する。また、特許文献１には、シミュレーション対象（ＣＰＵによるプログラム実行処理、仮想メカ部品の動作等）のシミュレーションにおいて、各種アプリケーションソフトウェアのインターフェース仕様により入出力信号のデータを送受信する方法が示されている。
【０００３】
プログラム連携システムのアプリケーションソフトウェア間での従来のデータ送受信方法について、詳細に説明する。プログラム連携システムは、シミュレータハブ（以下、ＨＵＢと略記する。）を有し、ＨＵＢが各々のアプリケーションソフトウェアに対して、各々のアプリケーションソフトウェアの有するインターフェース仕様によりデータの送受信を行う。つまり、ＨＵＢ６０４は、中継手段の一例である。アプリケーションソフトウェアは、各々が個別のシミュレータとして単独でも機能するため、各アプリケーションソフトウェア内では、各々の仕様に従って、入出力信号を管理している。例えば、遮光センサのＯｎ／ＯｆｆをＣＰＵで検知する機構の模擬において、遮光センサの模擬はメカシミュレータに、ＣＰＵの模擬はＣＰＵシミュレータにおいて行うものとする。このとき、メカシミュレータ内の遮光センサの管理情報はメカシミュレータの機構に依存し、例えば、「センサ１」、「センサ２」、「センサ３」などの番号で管理される。また、ＣＰＵシミュレータ側は、ＣＰＵアドレスマップ上の、当該遮光センサのポート位置で管理する。
【０００４】
そこでＨＵＢは、複数のアプリケーションソフトウェア間でデータを送受信する必要のある信号線において、各々のアプリケーションにおける当該信号の識別情報を保持している。ＨＵＢは、接続されるアプリケーションから信号線に対するアクセス通知を得ると、自身が保持しているそのアプリケーションの信号識別情報から、他方のアプリケーションに変化を通知する必要性を調べる。そして、必要性があれば、当該信号に対する入力側アプリケーションの識別情報を用いて、入力側アプリケーションへ変化を通知する。
【０００５】
上述のセンサの例において、遮光センサのメカシミュレータにおける識別情報が「センサ３」であり、ＣＰＵシミュレータにおける識別情報が「アドレス空間０ｘ１０００  ｂｉｔ０」であるとする。この場合、ＨＵＢは「遮光センサ」の識別情報として、メカシミュレータでは「センサ３」という情報を保持し、ＣＰＵシミュレータでは「アドレス空間０ｘ１０００  ｂｉｔ０」という情報を保持している。メカシミュレータからＨＵＢへ、「センサ３」の出力値の変化が通知されると、ＨＵＢは「センサ３」が「遮光センサ」の信号線であることを調べ、「遮光センサ」の変化情報を伝えるべきアプリケーションの有無を調査する。「遮光センサ」の変化情報を伝えるべきアプリケーションがＣＰＵシミュレータであるため、ＣＰＵシミュレータに対して「アドレス空間０ｘ１０００  ｂｉｔ０」の変化を通知する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３３９０２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来技術には以下に記載する課題がある。上記従来技術では、ＨＵＢが各々のアプリケーションの信号識別情報を使用して入出力情報を管理している。従って、いずれかのアプリケーションからアクセス通知を受け取ると、受信した情報とＨＵＢが保持している各アプリケーションの信号識別情報とを照会する必要があった。このため、ＨＵＢが保持している各アプリケーションの信号識別情報が増えると、照会処理に掛かる時間が増加するという課題があった。
【０００８】
本発明は、上述の問題に鑑みて成されたものであり、独立プロセスとして動作する複数のアプリケーションソフトウェアを連携駆動させる際に、入出力信号の照会処理にかかる負荷を低減させ、システム全体として処理を高速化させる仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、複数のアプリケーションと連携してシミュレーション対象の装置のシミュレーションを実行するプログラム連携システムであって、前記プログラム連携システムが起動されると、前記複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、前記プログラム連携システムの中で共通の情報である前記共通識別情報と、各アプリケーションにおいて該共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して前記共通識別情報を指定する指定手段と、前記共用信号が発生すると、前記共通識別情報に従って必要なアプリケーションへ前記共用信号を伝達する中継手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、独立プロセスとして動作する複数のアプリケーションソフトウェアを連携駆動させる際に、入出力信号の照会処理にかかる負荷を低減させ、システム全体として処理を高速化させることができる。
【図面の簡単な説明】
【００１１】
【図１】プログラム連携システムの機能構成図。
【図２】プログラム連携システムの概略構成図。
【図３】配線定義情報の一例を示す図。
【図４】配線定義情報の一例を示す図。
【図５】プログラム連携システムの処理のフローチャート。
【図６】ＣＰＵシミュレータの内部情報と配線定義情報との関連を説明する図。
【図７】プログラム連携システムの機能構成図。
【図８】事前定義された配線定義情報の一例を示す図。
【図９】システム読込対象の配線定義情報の一例を示す図。
【図１０】シミュレーション対象となるＣＰＵのアドレスマップの一例を示す図。
【図１１】プログラム連携システムの機能構成図。
【図１２】プログラム連携システムの機能構成図。
【図１３】アクセス時変換表の一例を示す図。
【図１４】アクセス時変換表の一例を示す図。
【図１５】被アクセス時変換表の一例を示す図。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１３】
＜第１の実施形態＞
＜情報処理装置の構成＞
以下では、本発明の第１の実施形態について説明する。本実施形態に係るプログラム連携システムの機器制御シミュレーションは、コンピュータシステムで実行されるプログラムとして実現されうる。まず、図２を参照して、本実施形態におけるプログラム連携システムの概略構成について説明する。
【００１４】
プログラム連携システムを実現する情報処理装置であるコンピュータシステム５０１は、中央演算装置（以下、ＣＰＵと略記する。）５０２ａ、主記憶装置（以下、ＲＡＭと略記する。）５０２ｂ、及びハードディスク５０２ｃ等を内蔵した本体部５０２を有する。さらに、当該本体部５０２からの指示に従って、画面を表示する表示装置５０３を有する。また、本体部５０２への情報の入力を行なう入力装置として、コンピュータシステム５０１にユーザの指示や文字情報を入力するためのキーボード５０４を有する。また、表示装置５０３上の任意の位置を指定することにより、その位置に表示されていたアイコン等に応じた指示を入力するポインティングデバイス（マウス（登録商標））５０５を有する。
【００１５】
ハードディスク５０２ｃには、機器制御シミュレーションにおける各機能を実現したプログラム、シミュレーションの対象となる機器情報を含むシミュレーションのための各種データが格納される。シミュレーションに際しては、プログラム、各種データをＲＡＭ５０２ｂにロードし、コンピュータシステム５０１のＣＰＵ５０２ａによってプログラムが実行される。これらコンピュータシステム５０１の基本動作は、基本プログラムであるオペレーティングシステム（以下、ＯＳと略記する。）を介して実行される。本ＯＳはマルチプロセスに対応したものである。
【００１６】
＜プログラム連携システムの機能構成＞
次に、図１を参照して、本実施形態に係るプログラム連携システムの機能構成例について説明する。図１に示すように、このプログラム連携システムは、システムを構成する２つのアプリケーションソフトウェアとプロセス接続手段とを備えている。２つのアプリケーションソフトウェアは、ＣＰＵシミュレータ６０１と、シミュレータアプリケーション６０２である。また、プロセス接続手段は、シミュレータハブ（以下、ＨＵＢと略記する。）６０４である。
【００１７】
ＣＰＵシミュレータ６０１、及びシミュレータアプリケーション６０２は、それぞれがＯＳ上で個別に動作するアプリケーションソフトウェアであり、それぞれが独立したプロセスとして存在する。更に、シミュレータアプリケーション６０２は、機能によって複数の独立プロセスで構成される場合がある。本実施形態において、ＣＰＵシミュレータ６０１は、ダイナミックリンクライブラリ（以下、ＤＬＬと略記する。）で提供される外部モジュールとの間で関数の直接呼出し方式による外部インターフェースを有している。また、シミュレータアプリケーション６０２、及び機構モデルシミュレータ６０３は、ソケットインターフェースによるプロセス間通信方式による外部インターフェースを有している。ただし、本発明においては、各アプリケーションの外部インターフェースの方式は、本実施形態に限定されるものではない。
【００１８】
ＨＵＢ６０４は、ＤＬＬとして提供され、ＣＰＵシミュレータ６０１から起動されるサブプロセスとして動作する。ＣＰＵシミュレータ６０１は、各種イベント発生時に、予め指定されたＨＵＢ６０４のコールバック関数を呼び出す。ＨＵＢ６０４を構成する配線モジュール６０５−３、及びインターフェースモジュール６０６−１、６０６−２は、それぞれ独立したスレッドとして動作する。各スレッドは、ＣＰＵシミュレータ６０１の起動時に呼び出されるコールバック関数から起動される。シミュレータアプリケーション６０２、及び機構モデルシミュレータ６０３は、ＯＳの提供するアプリケーションプログラムインターフェースを使用して、ソケットインターフェースを介してＨＵＢ６０４との接続を行う。ＣＰＵシミュレータ６０１は、インターフェースモジュール６２０−１、連携情報関連付け部６０８−１、信号情報６１２−１、及び報知判断部６１０から構成される。
【００１９】
インターフェースモジュール６２０−１は、ＣＰＵシミュレータ６０１が外部のアプリケーションソフトウェアと通信を行うためのモジュールである。前述したとおり、ＨＵＢ６０４のコールバック関数を登録し、プログラム実行中に呼び出したり、ＣＰＵシミュレータ６０１とＨＵＢ６０４とでメモリ情報を共有したりできるようなインターフェースが含まれている。
【００２０】
連携情報関連付け部６０８−１は、プログラム連携システムから連携情報を受信し、当該連係情報を、ＣＰＵシミュレータ６０１が有する各信号識別情報（個別識別情報）と関連付けて記憶する。信号情報６１２−１は、ＣＰＵシミュレータ６０１の有する各種信号の情報を格納するデータベースであって、信号識別情報６１３−１、連携情報６１４−１、及び値６１５−１を、各信号毎に関連付けて格納している。
【００２１】
報知判断部６１０は、ＣＰＵシミュレータ６０１がアクセスした後述の仮想アドレス空間上のアクセス領域と、信号識別情報６１３−１とを比較し、ＨＵＢ６０４のコールバック関数を呼び出すか否かを判断している。シミュレータアプリケーション６０２は、インターフェースモジュール６２０−２、信号情報６１２−２、及び連携情報関連付け部６０８−２とから構成される。また、信号情報６１２−２は、信号識別情報６１３−２、連携情報６１４−２、及び値６１５−２を、各信号毎に関連付けて格納している。
【００２２】
＜ＣＰＵシミュレータ６０１の機能＞
次に、プログラム連携システムの各構成要素の機能について説明する。まず、ＣＰＵシミュレータ６０１の機能について説明する。ＣＰＵシミュレータ６０１は、シミュレーション対象となるＣＰＵ（以下、ターゲットＣＰＵと称する。）の動作を、コンピュータシステム５０１上で実現する機能である。ここで、ターゲットＣＰＵとは、コンピュータシステム５０１に搭載されているＣＰＵではなく、シミュレーションの対象となる装置に搭載され、当該装置を制御するためのＣＰＵのことである。
【００２３】
ＣＰＵシミュレータ６０１は、ターゲットＣＰＵの制御プログラム（以下、ターゲットファームウェアと称する。）に従って、ターゲットＣＰＵの端子に対応して定義された仮想入力端子の情報を読み込み、仮想出力端子を制御する。
【００２４】
また、ＣＰＵシミュレータ６０１は、ターゲットＣＰＵのアドレス空間に対応した仮想アドレス空間を用意している。ここで、仮想アドレス空間とは、ターゲットＣＰＵの管理するアドレス空間上の個々の領域と１対１で対応する領域をコンピュータシステム５０１のＲＡＭ上に定義したものである。仮想アドレス空間のコンピュータシステム５０１上の実アドレス値は、ターゲットＣＰＵの扱うアドレス値と異なる。そして、ＣＰＵシミュレータ６０１は、ターゲットファームウェアによるターゲットＣＰＵアドレス空間上のアドレス値へのアクセス命令に従って、仮想アドレス空間上の対応する領域にアクセスする。また、ターゲットＣＰＵのレジスタ類も、前記仮想アドレス空間上に対応する領域が設定され、レジスタ類へのアクセスも仮想アドレス空間へのアクセスによってシミュレーションされる。ＣＰＵシミュレータ６０１は、外部インターフェースとしてターゲットＣＰＵのＩ／Ｏメモリ、レジスタアクセスのためのメソッドを用意している。外部モジュールは、これらのメソッドにより前記仮想アドレス空間へのアクセスを行う。
【００２５】
コンピュータシステム５０１上でのターゲットファームウェアの処理のシミュレーション方法としては、ターゲットファームウェアのソースプログラムをコンピュータシステム５０１のネイティブ言語に変換して実行する方式がある。また、ターゲットＣＰＵの実行命令を１語ずつ解釈し、コンピュータシステム５０１のＣＰＵに対応した実行命令に翻訳しながら実行する方式がある。本実施形態は、何れのＣＰＵシミュレーション方式にも対応する。
【００２６】
上述のように、ＣＰＵシミュレータ６０１のイベント毎に、ＨＵＢ６０４のコールバック関数が呼び出される。ＣＰＵシミュレータ６０１がコールバック関数を呼び出すイベントの例としては、ＣＰＵシミュレータ６０１の状態に関するもの（起動、初期化終了等）がある。また、ターゲットＣＰＵの動作シミュレーション上のイベント（メモリアクセス、割り込み発生等）がある。
【００２７】
＜シミュレータアプリケーション６０２の機能＞
次に、シミュレータアプリケーション６０２の機能について説明する。シミュレータアプリケーション６０２は、機器制御シミュレーションシステムによる各種試験のための支援プログラムであり、仮想装置に対する各種働きかけの設定や、シミュレーションの結果を解析、表示、保存する機能を有する。シミュレーションの対象となる実際の装置は、その装置を使用するオペレータやその装置に接続されたコンピュータシステム等により外部から様々な働きかけ（以下、外部事象と称する。）を受けて動作する。例えば、本実施形態における対象装置の具体例をプリンタ装置とした場合には、シミュレータアプリケーション６０２は、ホストＰＣからの各種命令の受信、オペレータによるオペレーションパネルの操作、環境温度の変化等を擬似的に設定する仕組みを提供する。
【００２８】
シミュレータアプリケーション６０２は、これらを設定するための専用のユーザインターフェース（以下、ＵＩと略記する。）を提供する。また、シミュレータアプリケーション６０２は、当該ＵＩによる設定に従って、ＨＵＢ６０４を介してＣＰＵシミュレータ６０１に所定の外部事象を加える。
【００２９】
＜シミュレータハブ６０４の機能＞
次に、シミュレータハブ６０４の機能について説明する。ＨＵＢ６０４は、コア部６０５とインターフェースモジュール６０６とを有する。コア部６０５は、配線モジュール６０５−３を有する。また、インターフェースモジュール６０６は、ＨＵＢ６０４の外部インターフェースを各周辺シミュレーションツールのインターフェース仕様に対応させる各々のインターフェースモジュール６０６−１、６０６−２を有する。そして、コア部６０５と各周辺シミュレーションツールとの接続を仲介する。また、ＨＵＢ６０４は、ＣＰＵシミュレータ６０１やシミュレータアプリケーション６０２などの他のアプリケーションとは独立したプロセスで動作している。
【００３０】
コア部６０５は、システム構成に合わせたＨＵＢモジュールの設定を行なう。また、ＣＰＵシミュレータ６０１、及びシミュレータアプリケーション６０２（以下、まとめて周辺シミュレーションツールと称する。）間のデータ伝送管理を行う。インターフェースモジュール６０６は、予め設定された配線定義情報に基づき、各周辺シミュレーションツールと配線モジュール６０５−３との接続を行う。そして、インターフェースモジュール６０６は、周辺シミュレーションツールからのデータ出力に応じて、配線モジュール６０５−３のデータ送受信メソッドを呼び出してデータを配線モジュール６０５−３に渡す。また、インターフェースモジュール６０６は、配線モジュール６０５−３からのデータ設定要求に応じて周辺シミュレーションツールにデータを送る。
【００３１】
コア部６０５は、予め設定されたシステム構成定義情報に応じて、インターフェースモジュール６０６の構成を管理する。配線モジュール６０５−３は、予め設定された配線定義情報６０９をもとに、周辺シミュレーションツール間を接続する。また、配線モジュール６０５−３は、各インターフェースモジュール６０６−１、６０６−２に対して、データ送受信のメソッドを提供する。
【００３２】
配線定義情報６０９は、各周辺シミュレーションツール間で共通で使用する信号情報を格納する配列である。格納する情報は、各周辺シミュレーションツールにおける信号識別情報（個別識別情報）であり、評価者が手入力で作成したものであっても、プログラム連携システムが作成したものであってもよい。配線定義情報６０９は、プログラム連携システム内で同一の信号として取り扱うべき信号（以下、共用信号と称する。）について、関連する各種情報（各周辺シミュレーションツール内の信号識別情報を含む。）を同一のテーブルインデックスとなるような形式で格納する。つまり、各アプリケーションの信号識別情報（個別識別情報）を配列化し、共通識別情報を配列のインデックス値とする形式で格納する。
【００３３】
また、プログラム連携システムは、共用信号について、配線定義情報６０９に、各周辺シミュレーションツールにおける領域サイズや、各周辺シミュレーションツールの結線方向や、最新の値等の情報を格納するシステムであってもよい。結線方向には”入力”、”出力”、”入出力”の３種類のうちのいずれかが指定できる。例えば結線方向で”出力”が指定されたアプリケーションに対して、ＨＵＢ６０４は、他の”出力”が指定されたアプリケーションから当該共用信号値の書き換えを取得しても、変化を伝達しない。
【００３４】
共通識別情報指定部６０７は、配線定義情報６０９をもとに、連携情報関連付け部６０８−１、６０８−２に対して、当該周辺シミュレーションツールが有する信号識別情報と、それに対する連携情報を関連付けて指定する。連携情報は、上述したとおり配線定義情報６０９のテーブルインデックスである。
【００３５】
連携情報関連付け部６０８−１、６０８−２は、共通識別情報指定部６０７から指定された連携情報を各周辺シミュレーションツールが有する信号情報データベースへ登録する。ここで、ＣＰＵシミュレータ６０１は、ターゲットＣＰＵの動作シミュレーションにおいてメモリアクセスイベントが発生したときに、全てのメモリアクセスイベントをＨＵＢへ通知するわけではない。ＣＰＵシミュレータ６０１は報知判断部６１０を有し、メモリアクセスイベントが発生したときに、報知判断部６１０にてＨＵＢのコールバック関数を呼び出すか否かを判断している。
【００３６】
報知判断部６１０は、自身の有する信号情報データベースを参照し、メモリアクセスイベントのアクセス領域が報知対象であるか否かを判断し、必要に応じてＨＵＢ６０４のコールバック関数を呼び出す。本実施形態では、独立プロセスとして動作する２つのアプリケーションソフトウェア間で共通の信号識別情報を使用し、中間インターフェース部で信号情報を探索せずに他方のアプリケーションソフトウェアへ情報を伝達する方法について述べる。
【００３７】
＜配線定義情報＞
次に、図４を参照して、本実施形態における配線定義情報６０９の一例について説明する。配線定義情報６０９は、プログラム連携システムにおける各信号の意味合い毎に信号情報を関連付けて記憶しており、信号情報を送受信する必要のある周辺シミュレーションツール各々の信号識別情報を格納している。プログラム連携システムにおける意味合いとは、システムにおけるモータ１駆動信号、センサ１の値、割り込み番号１０や湿度センサの値など、動作信号、動作パラメータ及びイベント等を示す。つまり、共用信号を示す。
【００３８】
図４において、例えばプログラム連携システム内で「モータ１駆動信号」として取り扱っている信号情報は、ＣＰＵシミュレータ６０１の内部では仮想アドレス空間上の０ｘ１０００番地のｂｉｔ０として取り扱われていることを定義している。一方、「モータ１駆動信号」は、シミュレータアプリケーション６０２の内部では、信号番号「１０」として取り扱われていることを定義している。プログラム連携システム上では、この「モータ１駆動信号」の情報を配列上のインデックス０に格納し、プログラム実行中には、共用信号である「モータ１駆動信号」のシステム上の信号識別情報を「０」とする。そして、この信号識別情報［０］を「モータ１駆動信号」の連携情報として取り扱う。各周辺シミュレーションツールは、プログラム実行中に共用信号にアクセスしたら、ＨＵＢ６０４へ連携情報を用いてアクセス報知を行う。
【００３９】
＜処理手順＞
次に、図５のフローチャートを参照して、本システムの処理手順について説明する。以下で説明する処理は、ＣＰＵ５０２ａが制御プログラムをハードディスク５０２ｃからＲＡＭ５０２ｂに読み出して、実行することにより実現される。
【００４０】
Ｓ３０１で、プログラム連携システムは、外部から指示されるシミュレーション開始指示をトリガにシミュレーションを開始する。続いて、Ｓ３０２で、プログラム連携システムは、配線定義情報６０９を読み込み、Ｓ３０３で、共通識別情報指定部６０７を用いて各周辺シミュレーションツールへ連携情報を指定する。例えばモータ１であれば、配線定義情報６０９にＣＰＵシミュレータ６０１のモータ１の識別情報が、仮想アドレスマップ上の０ｘ１０００  ｂｉｔ０であり、かつモータ１の配線定義情報６０９内のインデックス値が０であることが定義されている。プログラム連携システムは、ＣＰＵシミュレータ６０１へ、仮想アドレスマップ上の０ｘ１０００  ｂｉｔ０とインデックス値０を連携情報として記憶するように指定する。プログラム連携システムは、シミュレータアプリケーション６０２へも、同様に、信号識別情報１０とインデックス値０を連携情報として記憶するように指定する。
【００４１】
他信号についても同様にして、配線定義情報６０９全ての信号に対して各周辺シミュレーションツールへ連携情報を指定する。指定し終えたとき、ＣＰＵシミュレータ６０１が保持する内部情報は図６のようになる。つまり、ここで、ＣＰＵシミュレータ６０１と、シミュレータアプリケーション６０２とで、連係情報を通じて、動作信号、動作パラメータ及びイベント等が紐付けられることとなる。その後、Ｓ３０４で、プログラム連携システムは、周辺シミュレーションツールの連携駆動を開始する。
【００４２】
Ｓ３０５で、ＨＵＢ６０４が周辺シミュレーションツールからアクセス報知を受ける。報知を受けると、Ｓ３０６で、ＨＵＢ６０４は、配線モジュール６０５−３を用いて、変化を報知すべき周辺シミュレーションツールの情報を取得する。ここで、ＨＵＢ６０４は、Ｓ３０７で、周辺シミュレーションツールから報知されるアクセス報知の種別を判定する。この判定は、種別に従ってその後の処理を変更するために行っている。アクセス報知には書込通知と読出通知の２種類が存在する。なお、他の通知が適用されてもよい。
【００４３】
まず、Ｓ３０５で報知されるアクセス報知が周辺シミュレーションツールによる書込通知の場合を以下に説明する。例えば、ＣＰＵシミュレータ６０１が、自身のＣＰＵシミュレーションにおける処理で、アドレス０ｘ１０００の値を１ｂｙｔｅアクセスで書き込んだとすると、ＣＰＵシミュレータ６０１はアドレス０ｘ１０００が報知対象アドレスであるか否かを調査する。図６に示すように、ｂｉｔ０、ｂｉｔ１が報知対象信号であることから、ＣＰＵシミュレータ６０１はＨＵＢ６０４へ、インデックス０とその値、及びインデックス１とその値を書込通知として報知する。
【００４４】
Ｓ３０８で、ＨＵＢ６０４は、配線モジュール６０５−３のインデックス０、及びインデックス１を参照する。さらに、報知対象の周辺シミュレーションツールの有無を確認し、必要があれば各周辺シミュレーションツールにインデックス０とその値、及びインデックス１とその値を通知する。
【００４５】
上述では、周辺シミュレーションツールが報知対象の共用信号へアクセスしたときに、周辺シミュレーションツール側で報知対象のサイズに合わせたデータを作成し、ＨＵＢ６０４へ報知する方法について述べた。この処理に代えて、周辺シミュレーションツールが報知対象の共用信号へアクセスしたときに、周辺シミュレーションツールのアクセスサイズと書込値、連携情報としてのインデックス番号をそのままＨＵＢ６０４へ送付してもよい。この場合、ＨＵＢ６０４側で共用信号の値を算出する。具体的には、ＣＰＵシミュレータ６０１がアドレス０ｘ１０００へ１ｂｙｔｅアクセスすると、ＣＰＵシミュレータ６０１がＨＵＢ６０４へ、アクセスアドレス（０ｘ１０００）とアクセスサイズ（１ｂｙｔｅ）、書込値及び連携情報（０、１）を送付する。ＨＵＢ６０４は配線モジュール６０５−３において、まず連携情報０に関する配線定義情報６０９を参照し、次いで連携情報１に関する配線定義情報６０９を参照する。配線モジュール６０５−３は、連携情報０に関する配線定義情報６０９が０ｘ１０００のｂｉｔ０であることを確認する。そして、ＨＵＢ６０４は、アクセスアドレス（０ｘ１０００）、アクセスサイズ（１ｂｙｔｅ）、及び書込値から連携情報０に対応する共用信号の値を算出する。ＨＵＢ６０４は、前述した配線モジュール６０５−３による算出結果を他の周辺シミュレーションツールへ伝達する。続いての連携情報１に対する処理も同様である。
【００４６】
次に、Ｓ３０５で報知されるアクセス報知が周辺シミュレーションツールによる読出通知の場合を以下に説明する。なお、当該処理は配線モジュール６０５−３が周辺シミュレーションツールより書込報知を受信したときに、その報知される値を連携情報に関連付けて記憶しておくことが前提となっている。プログラム連携システム内で、読出通知が一切存在しないのであれば、配線モジュール６０５−３は書込報知時の値を保持する必要は無い。また、Ｓ３０７でのＨＵＢ６０４によるアクセス報知の種別判断、及びＳ３０９の処理及び機能が不要である。
【００４７】
例えば、ＣＰＵシミュレータ６０１が、自身のＣＰＵシミュレーションにおける処理で、アドレス０ｘ２０００の値に２ｂｙｔｅアクセスで参照したとすると、ＣＰＵシミュレータ６０１はアドレス０ｘ２０００が報知対象アドレスであるか否かを調査する。図６に示すように、アドレス０ｘ２０００から０ｘ２００３が報知対象信号であることから、ＣＰＵシミュレータ６０１は、Ｓ３０９で、ＨＵＢ６０４へ、インデックス５を読出通知として通知する。
【００４８】
ＨＵＢ６０４は、配線モジュール６０５−３のインデックス５を参照し、自身の保持するインデックス５の値を、読出通知の発行元、すなわちＣＰＵシミュレータ６０１へ返送する。ＣＰＵシミュレータ６０１は返送値を受け取り、自身のアクセス領域（０ｘ２０００−０ｘ２００１）と共用信号の領域サイズ（０ｘ２０００−０ｘ２００３）から、自身のアクセス領域における値を取得する。
【００４９】
以上、周辺シミュレーションツール側に読出値の算出処理を行わせるシステムについて述べたが、上述の書込報知処理と同様に、配線モジュール６０５−３側に読出値の算出処理を行わせるシステムにしてもよい。処理の詳細を以下に示す。
【００５０】
ＣＰＵシミュレータ６０１が、自身のＣＰＵシミュレーションにおける処理で、アドレス０ｘ２０００の値に２ｂｙｔｅアクセスで参照するとき、上述の通り、ＨＵＢ６０４へ、インデックス５を読出通知として通知する。ここで、ＣＰＵシミュレータ６０１は、ＨＵＢ６０４へ読出通知として、インデックス値５に加えて自身のアクセス領域（０ｘ２０００−０ｘ２００１）を通知する。ＨＵＢ６０４は、報知されたアクセス領域（０ｘ２０００−０ｘ２００１）と共用信号の領域サイズ（０ｘ２０００−０ｘ２００３）から、Ｓ３０９で、ＣＰＵシミュレータ６０１のアクセス領域における値を算出し、ＣＰＵシミュレータへ返送してもよい。
【００５１】
Ｓ３１０で、プログラム連携システムは、シミュレーションが終了したか否かを判定し、終了するまでＳ３０５乃至Ｓ３０９の処理を繰り返す。
【００５２】
以上説明したように、本実施形態によれば、プログラム連携システムが起動されると、複数のアプリケーションの間で伝達される共用信号を示す共通識別情報を、各アプリケーションにおいて共用信号を個別に示す個別識別情報に紐付ける。さらに、各アプリケーションへ複数の共用信号における個別識別情報の夫々に対して共通識別情報を指定する。共用信号が発生すると、共通識別情報に従って必要なアプリケーションへ当該共用信号を伝達する。このように、本実施形態に係るプログラム連携システムは、独立プロセスとして動作する２つのアプリケーションソフトウェア間で共通の信号識別情報を使用する。これにより、中間インターフェース部で信号情報を探索することなく、他方のアプリケーションソフトウェアへ情報を伝達することができる。中間インターフェース部で信号情報を探索しないため、信号情報の伝達効率が上がり、結果としてシミュレーション速度が向上する。
【００５３】
なお、本実施形態によれば、共通識別情報指定部６０７をＨＵＢ６０４の外部に設けたが、ＨＵＢ６０４の内部に設けてもよい。その場合、ＨＵＢ６０４は、各周辺シミュレーションツールと値の送受信を行う前までに、共通識別情報指定部６０７を用いて各周辺シミュレーションツールへ共通識別情報を送付する。
【００５４】
＜第２の実施形態＞
以下では、本発明の第２の実施形態について説明する。第１の実施形態では、プログラム連携システムが連携駆動させる全ての周辺シミュレーションツールに対して、連携情報として配線定義情報６０９のインデックス情報を送付することで、中間インターフェース部での信号情報の探索を省略する方法について述べた。しかしながら、周辺シミュレーションツールは、プログラム連携システム内で駆動することを前提としたツールではない場合もあり、必ずしも連携情報関連付け部６０８を有するものではない。そこで、本実施形態では、連携駆動対象の周辺シミュレーションツールのうちいずれか一つが、自身の信号識別情報を用いて信号情報の送受信を行うものの、中間インターフェース部での信号情報の探索を省略する方法について説明する。
【００５５】
まず、図７を参照して、本実施形態に係るプログラム連携システムの機能構成について説明する。図１と同一の構成及び技術については説明を省略する。
【００５６】
ＣＰＵシミュレータ７０１は、上記第１の実施形態のＣＰＵシミュレータ６０１と異なり、連携情報関連付け部６０８を有していない。一方で、本実施形態に係るプログラム連携システムは、事前定義の配線定義情報７０９−１と、自動生成の配線定義情報７０９−２を有し、さらに、共通識別情報算出部７１１と、ターゲットファームウェア７１２とを有する。ターゲットファームウェアとは、模擬する対象となるファームウェアを示す。共通識別情報算出部７１１は、配線定義情報７０９−１の情報と、ターゲットファームウェア７１２が有する信号情報（ＣＰＵシミュレータ７０１が有する信号識別情報）とを読み込み、共通識別情報を算出し、配線定義情報７０９−２へ出力する。
【００５７】
＜算出方法＞
図８及び図９を参照して、共通識別情報の算出方法について説明する。図８は、配線定義情報６０９に定義される情報である。プログラム連携システムにおける意味合い毎に、各周辺シミュレーションツールでの識別情報を保持している。
【００５８】
ここで、ＣＰＵシミュレータ７０１はターゲットファームウェア７１２を模擬するツールであるため、ＣＰＵシミュレータ７０１の有する信号識別情報は、即ちターゲットファームウェア７１２のアドレスマップに等しい。アドレスマップには、ターゲットファームウェア７１２が使用する全ての信号情報がユニークな番地に配置されている。
【００５９】
ＣＰＵシミュレータ７０１がメモリアクセス報知の際に、ＨＵＢ６０４へ信号識別情報として伝達する情報が、ターゲットファームウェアのアドレスマップ上のアクセス位置やサイズである。したがって、アドレスマップを共通識別情報として取り扱えば、全ての周辺シミュレーションツールで同一の信号識別情報を使用できる。そこで、共通識別情報算出部７１１は、図９の９０１に示すように、ターゲットファームウェア７１２のアドレスをテーブルのインデックス情報として、配線定義情報６０９を並び替える。
【００６０】
ここで、図１０に示すように、ＣＰＵのアドレスマップは信号定義情報以外にも、プログラム空間やレジスタ情報などの様々なＲＯＭ／ＲＡＭ情報が定義されていることから、ＣＰＵアドレスマップ全てを共通識別情報とするのはＰＣのメモリの無駄である。そこで、図９の９０２に示すように、ＣＰＵの仕様に従って、ＣＰＵアドレスマップのうち、信号情報が定義されている可能性のある領域のみを共通識別情報とし、当該領域の先頭アドレスまでの値をオフセット値としてＨＵＢ６０４が保持する。
【００６１】
プログラム連携システムは、共通識別情報算出部７１１の作成した配線定義情報７０９を読み込み、共通識別情報指定部６０７を用いて各周辺シミュレーションツールへ共通識別情報を指定したり、プログラム実行中に入出力信号を送受信する。プログラム実行中に、ＨＵＢ６０４は、各周辺シミュレーションツールからメモリアクセス報知を受けると、報知元の周辺シミュレーションツールによって配線定義情報７０９に対するアクセス方法を変更する。報知元の周辺シミュレーションツールがＣＰＵシミュレータ７０１のときには、ＣＰＵシミュレータ７０１がアクセスしたアドレスの値からオフセット値を引いた値をインデックスとして、配線定義情報７０９の情報を参照する。一方、報知元の周辺シミュレーションツールがＣＰＵシミュレータ７０１以外のときには、周辺シミュレーションツールがアクセスしたアドレス値そのものをインデックスとして、配線定義情報７０９の情報を参照する。
【００６２】
本実施形態によれば、独立プロセスとして動作する２つのアプリケーションソフトウェアのうち、いずれかのアプリケーションソフトウェアが信号識別情報と連携情報とを関連付けない場合であっても、中間インターフェース部での信号情報の探索を省略できる。なお、本実施形態では共通識別情報算出部７１１及び共通識別情報指定部６０７をＨＵＢ６０４の外部に設けたが、ＨＵＢ６０４の内部に設けてもよい。その場合には、ＨＵＢ６０４は、各周辺シミュレーションツールと値の送受信を行う前までに、共通識別情報算出部７１１の処理を実行し、配線定義情報７０９を作成する。次いで、ＨＵＢ６０４は、共通識別情報指定部６０７を用いて各周辺シミュレーションツールへ共通識別情報を送付する。また、共通識別情報算出部７１１を有しておらず、最初から、連携駆動対象の周辺シミュレーションツールのうち、いずれかの周辺シミュレーションツールの信号識別情報を元に配線定義情報を作成してもよい。
【００６３】
＜第３の実施形態＞
以下では、本発明の第３の実施形態について説明する。上記第１及び第２の実施形態では、２つのアプリケーションソフトウェアを備えるシステムについて説明した。本実施形態では、３つのアプリケーションソフトウェアを備えるシステムについて説明する。まず、図１１を参照して、本実施形態に係るプログラム連携システムの機能構成について説明する。
【００６４】
図１１に示すように、本実施形態に係るプログラム連携システムは、システムを構成する３つのアプリケーションソフトウェアとプロセス接続手段とを備えている。機構モデルシミュレータ１１０３は、それぞれがＯＳ上で個別に動作するアプリケーションソフトウェアで、それぞれが独立したプロセスとして存在する。
【００６５】
＜機構モデルシミュレータ１１０３の機能＞
ここで、機構モデルシミュレータ１１０３の機能について説明する。機構モデルシミュレータ１１０３は、アクチュエータ、及びセンサを含む複数の部品からなる機構モデルを、コンピュータ上で擬似的に動作させる機能である。機構モデルの各要素（以下、機構部品と称する。）は、ユーザにより形状、種類、動作、機構部品間の干渉と連携条件等が定義される。更に、センサ、アクチュエータについては外部信号定義が行われる。これら機構部品の定義は、ＣＡＤ図面からの自動設定、専用の機構モデル作成ソフトウェアをユーザが操作して設定、その両方の組み合わせで設定するなどして行われる。
【００６６】
上述のように定義される機構部品の種類としては、単なる物体と定義されるものと機能定義がなされるもの（モータ、ソレノイド、クラッチ、センサ、歯車、カム、ローラ等）がある。また、機構部品には、対象となる装置の構成物ではないもので装置の動作シミュレーションに必要なもの（プリンタ装置における用紙等）も含まれる。また、上述のように構築された機構モデルは、コンピュータシステム５０１の表示装置５０３上に、２次元又は３次元のグラフィックとして表示される。
【００６７】
機構モデルシミュレータ１１０３は、ＣＰＵシミュレータ６０１からＨＵＢ６０４を介して送られてきたアクチュエータ動作信号に対応して、該当するアクチュエータの機構モデルを定義された動きで動作させる。アクチュエータ動作信号は、ＣＰＵシミュレータ６０１からＨＵＢ６０４を介してシミュレータアプリケーション６０２に入力されたデータを、シミュレータアプリケーション６０２で任意に加工する。そして、シミュレータアプリケーション６０２から再びＨＵＢ６０４を介して機構モデルシミュレータ１１０３に送られる場合もある。
【００６８】
そして、機構定義に基づきアクチュエータに連結された機構部品をアクチュエータの動作に関連付けて定義された動きで動作させる。また、オペレータの操作により動作する機構については、キーボード５０４、マウス５０５によってオペレータによる機構部品への操作を擬似的に再現し、擬似操作に応じて対象となる機構部品を定義された動きで動作させる。更に、機構部品間の干渉、連携定義に従い、関連する全ての機構部品の動作が再現される。
【００６９】
これら機構部品の動作は、表示装置５０３に表示されたグラフィックとして再現される。同時に、機構モデルの動作の結果、センサとして定義された機構モデルに予め定義された外部事象が発生すると、外部事象に応じたセンサ信号を発生させ、そのセンサ信号は、ＣＰＵシミュレータ６０１にＨＵＢ６０４を介して送信される。
【００７０】
＜シミュレータハブ６０４の機能＞
次に、シミュレータハブ６０４の機能について説明する。ＨＵＢ６０４のインターフェースモジュール６０６は、ＨＵＢ６０４の外部インターフェースを各周辺シミュレーションツールのインターフェース仕様に対応させる各々のインターフェースモジュール６０６−１、６０６−２、６０６−３から構成される。そして、コア部１１０５と各周辺シミュレーションツールとの接続を仲介する。また、ＨＵＢ６０４は、ＣＰＵシミュレータ６０１やシミュレータアプリケーション６０２、及び機構モデルシミュレータ１１０３などの他のアプリケーションとは独立したプロセスで動作している。コア部１１０５は、システム構成に合わせたＨＵＢモジュールの設定を行なう。また、ＣＰＵシミュレータ６０１、シミュレータアプリケーション６０２、及び機構モデルシミュレータ１１０３（以下、まとめて周辺シミュレーションツールと称する。）間のデータ伝送管理を行う。
【００７１】
＜配線定義情報＞
次に、図３を参照して、本実施形態における配線定義情報１１０９の一例について説明する。ＣＰＵシミュレータ１１０１における信号識別情報、及びシミュレータアプリケーション１１０２における信号識別情報が、プログラム連携システムにおける意味合い毎に同一のインデックスに関連付けられて管理されている。
【００７２】
ここで結線方向は、周辺シミュレーションツール間の信号伝達の方向を定義したものであり、”出力”、”入力”、”入出力”、”−”の４種類が存在する。各周辺シミュレーションツールから書込アクセスが報知されるとき、”出力”または”入出力”が設定されたアプリケーションのみの書込アクセスが有効となる。”入力”または”−”が設定されたアプリケーションから書込アクセスが報知されても、ＨＵＢ１１０４は他の周辺シミュレーションツールに当該信号の値の変化を伝達しない。以下では、”出力”または”入出力”設定のことを、以後、有効出力設定と称する。
【００７３】
また、有効出力設定がなされたアプリケーションからの書込アクセスが報知されるとき、ＨＵＢ１１０４は、”入力”または”入出力”が設定されたアプリケーションのみに値を伝達する。以下では、”入力”または”入出力”設定のことを、有効入力設定と称する。結線方向の各定義は、各周辺シミュレーションツールで任意に設定できる。１つの信号に対して、複数の”出力”定義を設定したり、”入力”定義を一つも設定しないことも可能である。配線定義情報１１０９の同一の信号に対し、複数の有効出力設定が定義されると、有効入力設定が定義された周辺シミュレーションツールには、有効出力設定が定義された周辺シミュレーションツールの全ての書込報知が伝達される。ここで、結線方向が”出力”定義された周辺シミュレーションツールには書込報知が伝達されないため、”出力”定義された周辺シミュレーションツール同士が内部で保持している当該信号の値は各々異なる場合がある。
【００７４】
また、同一の信号に対し、複数の有効入力設定が定義されると、当該信号に対する一つの書込報知が、有効入力設定が定義される全ての周辺シミュレーションツールに伝達される。逆に、一つも有効入力設定が定義なされない場合には、書込報知はＨＵＢ１１０４までしか伝わらず、どの周辺シミュレーションツールにも伝達されない。
【００７５】
＜ＨＵＢの処理＞
次に、ＨＵＢ１１０４の詳細な処理について説明する。ＨＵＢ１１０４が周辺シミュレーションツールからアクセス通知を受けると、ＨＵＢ１１０４は配線モジュール１１０５−３を参照し、変化を報知すべき周辺シミュレーションツールの情報を取得する。ここで、例えば、ＨＵＢ１１０４がＣＰＵシミュレータ１１０１から共通識別情報０（インデックス）に対して書込アクセスが報知されたとすると、図３でＣＰＵシミュレータ１１０１の結線方向が”出力”となっている。したがって、ＨＵＢ１１０４は、ＣＰＵシミュレータ１１０１の書込値を他の周辺シミュレーションツールへ伝達する。
【００７６】
図３において、他の周辺シミュレーションツールの結線方向は、シミュレータアプリケーション１１０２が”−”、機構モデルシミュレータ１１０３が”入力”である。シミュレータアプリケーション１１０２の”−”は、結線していない状態を指す。結線していないため、ＨＵＢ１１０４は、シミュレータアプリケーション１１０２へは信号変化を報知しない。機構モデルシミュレータ１１０３は”入力”であるため、ＨＵＢ１１０４は、機構モデルシミュレータ１１０３とプロセス間通信を行い信号変化を報知する。
【００７７】
また、共通識別情報０において、機構モデルシミュレータ１１０３からＨＵＢ１１０４に書込アクセスが報知されたとする。ＨＵＢ１１０４は、配線定義情報１１０９で定義される機構モデルシミュレータ１１０３の結線方向が”入力”、即ち、有効出力設定ではないため、他の周辺シミュレーションツールへは値を伝達しない。なお、プログラム連携システムは、連係動作開始時に、各周辺シミュレーションツールへ、配線定義情報１１０９に定義される結線方向を指定し、配線定義情報１１０９で有効出力設定が定義された信号のみを書込アクセス報知するような処理を行ってもよい。
【００７８】
以上説明したように、本実施形態によれば、プログラム連携システムは、３つのアプリケーションソフトウェアを備えることができる。さらに、本実施形態では連携駆動対象のアプリケーションソフトウェアを３つとしたが、上述の方法を適用すれば、任意の個数のアプリケーションソフトウェアを連携駆動できることは言うまでもない。即ち、独立プロセスとして動作する２つ以上のアプリケーションソフトウェア間で共通の信号識別情報を使用し、中間インターフェース部で信号情報を探索せずに他方のアプリケーションソフトウェアへ情報を伝達することが可能となる。
【００７９】
また、本実施形態の構成に対し、上記第２の実施形態で説明した方法を適用してもよい。この場合、連携駆動対象のアプリケーションソフトウェアのいずれか一つが、信号識別情報と連携情報とを関連付ける構成を有していなくとも、中間インターフェース部で信号情報を探索せずに他方のアプリケーションソフトウェアへ情報を伝達できる。
【００８０】
＜第４の実施形態＞
以下では、本発明の第４の実施形態について説明する。上記第１乃至第３の実施形態では、プログラム連携システムが、周辺シミュレーションツール間の信号情報仲介のために、ＨＵＢ１２０４を有する構成について説明した。本実施形態では、プログラム連携システムがＨＵＢ１２０４を有することなく、周辺シミュレーションツール同士が直接信号情報を送受信するシステムについて説明する。
【００８１】
＜プログラム連携システムの機能構成＞
図１２を参照して、プログラム連携システムの機能構成について説明する。ＣＰＵシミュレータ１２０１とシミュレータアプリケーション１２０２は、各々、インターフェースモジュール１２２０−１、１２２０−２で接続される。アクセス時変換表１２１６−１、１２１６−２、及び被アクセス時変換表１２１７−１、１２１７−２は、それぞれ、信号識別情報１２１３−１、１２１３−２と連携情報１２１４−１、１２１４−２との対応表（変換テーブル）である。各周辺シミュレーションツールは、自身の内部情報にアクセスするときにはアクセス時変換表１２１６−１、１２１６−２を参照し、他の周辺シミュレーションツールからアクセス報知されると、被アクセス時変換表１２１７−１、１２１７−２を参照する。
【００８２】
配線定義情報１２０９が図４に示す配線定義情報６０９と同一である場合を想定して、アクセス時変換表１２１６−１、１２１６−２、及び被アクセス時変換表１２１７−１、１２１７−２をさらに説明する。即ち、各周辺シミュレーションツールは、自身のシミュレーション処理を自身の有する信号識別情報１２１３−１、１２１３−２を用いて行っている。したがって、各種内部信号へのアクセス時に、当該信号に連携情報１２１４−１、１２１４−２が付加されているか否かを調べる必要がある。そのため、自身の信号識別情報１２１３−１、１２１３−２から連携情報１２１４−１、１２１４−２を取得可能な形態で情報を有することで、各種内部信号へのアクセス時に、連携情報１２１４−１、１２１４−２を照合する必要がなくなる。
【００８３】
そこで、配線定義情報１２０９が図４に示す配線定義情報６０９と同一であるとき、ＣＰＵシミュレータ１２０１のアクセス時変換表１２１６−１は、図６に示す通りとなる。ＣＰＵシミュレータ１２０１の信号識別情報１２１３−１は図６のメモリアドレスマップと同一となる。アクセス時変換表１２１６−１には、メモリアドレスマップに対し、報知対象のアドレス情報と、それに対する連携情報１２１４−１とが定義される。これにより、ＣＰＵシミュレータ１２０１が任意のメモリ領域にアクセスするときに、報知対象か否か、及び連携情報１２１４−１を参照することができる。
【００８４】
また、プログラム連携システム上では、信号識別情報として共通識別情報が使用されているため、各シミュレーションツールは、外部からアクセス報知を受けた際には、共通識別情報から、対応する自身の信号識別情報１２１３−１、１２１３−２を取得する。信号情報の照合処理を発生させないために、各周辺シミュレーションツール内で、予め共通識別情報から自アプリケーションソフトウェア内の信号識別情報１２１３−１、１２１３−２との対応表を、被アクセス時変換表１２１７−１、１２１７−２として有する。各周辺シミュレーションツールは、他の周辺シミュレーションツールからアクセス報知を受信したときに、渡される共通識別情報を基に、被アクセス時変換表１２１７−１、１２１７−２を参照する。これにより、信号情報の照合処理なしに自身の信号識別情報１２１３−１、１２１３−２を取得することができる。配線定義情報１２０９が図４に示す配線定義情報６０９と同一であるとき、ＣＰＵシミュレータ１２０１の被アクセス時変換表１２１７−１は、図１３に示す通りとなる。
【００８５】
本実施形態では、各周辺シミュレーションツールが共通識別情報指定部１２０７から共通識別情報を受け取ると、各連携情報関連付け部１２０８−１、１２０８−２が、アクセス時変換表１２１６と被アクセス時変換表１２１７とを作成する。これは本発明を限定する意図はなく、アクセス時変換表１２１６と被アクセス時変換表１２１７を別の機能が作成し、各周辺シミュレーションツールがシミュレーション開始時にアクセス時変換表１２１６と被アクセス時変換表１２１７を読み込んでもよい。なお、本実施形態では、プログラム連携システム内の周辺シミュレーションツールが２つであるものとして説明したが、３つ以上でも同様である。
【００８６】
配線定義情報１２０９が図３のように結線方向の定義情報を含むときには、連携情報関連付け部１２０８−１乃至１２０８−３はアクセス時変換表１２１６−１乃至１２１６−３を結線方向が”出力”または”入出力”の定義情報のもののみから作成する。また、連携情報関連付け部１２０８−１乃至１２０８−３は被アクセス時変換表１２１７−１乃至１２１７−３を結線方向が”入力”または”入出力”の定義情報のもののみから作成する。
【００８７】
配線定義情報１２０９が図３のとき、各周辺シミュレーションツール（ＣＰＵシミュレータ１２０１、シミュレータアプリケーション１２０２、機構モデルシミュレータ１２０３）が有するアクセス時変換表１２１６は図１４の１４０１乃至１４０３のようになる。また、被アクセス時変換表１２１７は図１５の１５０１乃至１５０３に示すようになる。
【００８８】
このとき、各周辺シミュレーションツールは自身のシミュレーション処理において、内部信号を更新するときに、アクセス時変換表１２１６−１乃至１２１６−３を参照して、アクセス報知の要否を判断する。アクセス報知対象の信号であった場合には、当該周辺シミュレーションツールは、連携駆動対象の他の全ての周辺シミュレーションツールにアクセス報知を行う。アクセス報知時には、信号識別情報として連携情報と、更新値を報知する。アクセス報知を受信した各周辺シミュレーションツールは、各々が被アクセス時変換表１２１７−１乃至１２１７−３を参照する。そして、報知された連携情報が自身の管理する被アクセス時変換表１２１７−１乃至１２１７−３に定義される連携情報と一致した場合にのみ、報知された値を、自身の信号識別情報の値として取り込む。
【００８９】
以上説明したように、本実施形態では、独立プロセスとして動作する２つ以上のアプリケーションソフトウェアを連携駆動させるシステムにおいて、中間インターフェース部を有しない構成である。この場合であっても、本実施形態によれば、信号情報を探索せずに他方のアプリケーションソフトウェアへ情報を伝達することができる。
【００９０】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９１】
６０１：ＣＰＵシミュレータ、６０２：シミュレータアプリケーション、６０４：ＨＵＢ、６０５：コア部、６０６、６２０：インターフェースモジュール、６０７：共通識別情報指定部、６０８：連携情報関連付け部、６０９：配線定義情報、６１０；報知判断部、６１２：信号情報、６１３：信号識別情報、６１４：連続情報、６１５：値
【図１】
2017091469.tif 000003
【図２】
2017091469.tif 000004
【図３】
2017091469.tif 000005
【図４】
2017091469.tif 000006
【図５】
2017091469.tif 000007
【図６】
2017091469.tif 000008
【図７】
2017091469.tif 000009
【図８】
2017091469.tif 000010
【図９】
2017091469.tif 000011
【図１０】
2017091469.tif 000012
【図１１】
2017091469.tif 000013
【図１２】
2017091469.tif 000014
【図１３】
2017091469.tif 000015
【図１４】
2017091469.tif 000016
【図１５】
2017091469.tif 000017