JP2017091469A - プログラム連携システム、その制御方法、及びプログラム - Google Patents
プログラム連携システム、その制御方法、及びプログラム Download PDFInfo
- Publication number
- JP2017091469A JP2017091469A JP2015225081A JP2015225081A JP2017091469A JP 2017091469 A JP2017091469 A JP 2017091469A JP 2015225081 A JP2015225081 A JP 2015225081A JP 2015225081 A JP2015225081 A JP 2015225081A JP 2017091469 A JP2017091469 A JP 2017091469A
- Authority
- JP
- Japan
- Prior art keywords
- identification information
- application
- information
- program
- shared signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】上述の問題に鑑みて成されたものであり、独立プロセスとして動作する複数のアプリケーションソフトウェアを連携駆動させる際に、入出力信号の照会処理にかかる負荷を低減させ、システム全体として処理を高速化させる仕組みを提供する。【解決手段】本発明は、プログラム連携システムが起動されると、複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、プログラム連携システムの中で共通の情報である共通識別情報と、各アプリケーションにおいて共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の共用信号における個別識別情報の夫々に対して共通識別情報を指定し、共用信号が発生すると、共通識別情報に従って必要なアプリケーションへ当該共用信号を伝達する。【選択図】 図1
Description
本発明は、独立プロセスとして動作する複数のアプリケーションソフトウェアを各アプリケーションの外部インターフェースを介して連携動作させ、1つのシステムとして動作させるプログラム連携システム、その制御方法、及びプログラムに関する。
特許文献1は、機器制御シミュレーションを行うプログラム連携システムを提案している。当該システムは、装置を制御する中央処理装置(CPU)のシミュレータ(シミュレーションデバッガ)と、機器モデルのシミュレータと、各種装置構成のシミュレータと、シミュレーションを支援するシステムを受け持つアプリケーションソフトウェア等を有する。なお、当該アプリケーションソフトウェアを、以下では、まとめてシミュレータアプリケーションと称する。また、特許文献1には、シミュレーション対象(CPUによるプログラム実行処理、仮想メカ部品の動作等)のシミュレーションにおいて、各種アプリケーションソフトウェアのインターフェース仕様により入出力信号のデータを送受信する方法が示されている。
プログラム連携システムのアプリケーションソフトウェア間での従来のデータ送受信方法について、詳細に説明する。プログラム連携システムは、シミュレータハブ(以下、HUBと略記する。)を有し、HUBが各々のアプリケーションソフトウェアに対して、各々のアプリケーションソフトウェアの有するインターフェース仕様によりデータの送受信を行う。つまり、HUB604は、中継手段の一例である。アプリケーションソフトウェアは、各々が個別のシミュレータとして単独でも機能するため、各アプリケーションソフトウェア内では、各々の仕様に従って、入出力信号を管理している。例えば、遮光センサのOn/OffをCPUで検知する機構の模擬において、遮光センサの模擬はメカシミュレータに、CPUの模擬はCPUシミュレータにおいて行うものとする。このとき、メカシミュレータ内の遮光センサの管理情報はメカシミュレータの機構に依存し、例えば、「センサ1」、「センサ2」、「センサ3」などの番号で管理される。また、CPUシミュレータ側は、CPUアドレスマップ上の、当該遮光センサのポート位置で管理する。
そこでHUBは、複数のアプリケーションソフトウェア間でデータを送受信する必要のある信号線において、各々のアプリケーションにおける当該信号の識別情報を保持している。HUBは、接続されるアプリケーションから信号線に対するアクセス通知を得ると、自身が保持しているそのアプリケーションの信号識別情報から、他方のアプリケーションに変化を通知する必要性を調べる。そして、必要性があれば、当該信号に対する入力側アプリケーションの識別情報を用いて、入力側アプリケーションへ変化を通知する。
上述のセンサの例において、遮光センサのメカシミュレータにおける識別情報が「センサ3」であり、CPUシミュレータにおける識別情報が「アドレス空間0x1000 bit0」であるとする。この場合、HUBは「遮光センサ」の識別情報として、メカシミュレータでは「センサ3」という情報を保持し、CPUシミュレータでは「アドレス空間0x1000 bit0」という情報を保持している。メカシミュレータからHUBへ、「センサ3」の出力値の変化が通知されると、HUBは「センサ3」が「遮光センサ」の信号線であることを調べ、「遮光センサ」の変化情報を伝えるべきアプリケーションの有無を調査する。「遮光センサ」の変化情報を伝えるべきアプリケーションがCPUシミュレータであるため、CPUシミュレータに対して「アドレス空間0x1000 bit0」の変化を通知する。
しかしながら、上記従来技術には以下に記載する課題がある。上記従来技術では、HUBが各々のアプリケーションの信号識別情報を使用して入出力情報を管理している。従って、いずれかのアプリケーションからアクセス通知を受け取ると、受信した情報とHUBが保持している各アプリケーションの信号識別情報とを照会する必要があった。このため、HUBが保持している各アプリケーションの信号識別情報が増えると、照会処理に掛かる時間が増加するという課題があった。
本発明は、上述の問題に鑑みて成されたものであり、独立プロセスとして動作する複数のアプリケーションソフトウェアを連携駆動させる際に、入出力信号の照会処理にかかる負荷を低減させ、システム全体として処理を高速化させる仕組みを提供することを目的とする。
本発明は、複数のアプリケーションと連携してシミュレーション対象の装置のシミュレーションを実行するプログラム連携システムであって、前記プログラム連携システムが起動されると、前記複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、前記プログラム連携システムの中で共通の情報である前記共通識別情報と、各アプリケーションにおいて該共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して前記共通識別情報を指定する指定手段と、前記共用信号が発生すると、前記共通識別情報に従って必要なアプリケーションへ前記共用信号を伝達する中継手段とを備えることを特徴とする。
本発明によれば、独立プロセスとして動作する複数のアプリケーションソフトウェアを連携駆動させる際に、入出力信号の照会処理にかかる負荷を低減させ、システム全体として処理を高速化させることができる。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<第1の実施形態>
<情報処理装置の構成>
以下では、本発明の第1の実施形態について説明する。本実施形態に係るプログラム連携システムの機器制御シミュレーションは、コンピュータシステムで実行されるプログラムとして実現されうる。まず、図2を参照して、本実施形態におけるプログラム連携システムの概略構成について説明する。
<情報処理装置の構成>
以下では、本発明の第1の実施形態について説明する。本実施形態に係るプログラム連携システムの機器制御シミュレーションは、コンピュータシステムで実行されるプログラムとして実現されうる。まず、図2を参照して、本実施形態におけるプログラム連携システムの概略構成について説明する。
プログラム連携システムを実現する情報処理装置であるコンピュータシステム501は、中央演算装置(以下、CPUと略記する。)502a、主記憶装置(以下、RAMと略記する。)502b、及びハードディスク502c等を内蔵した本体部502を有する。さらに、当該本体部502からの指示に従って、画面を表示する表示装置503を有する。また、本体部502への情報の入力を行なう入力装置として、コンピュータシステム501にユーザの指示や文字情報を入力するためのキーボード504を有する。また、表示装置503上の任意の位置を指定することにより、その位置に表示されていたアイコン等に応じた指示を入力するポインティングデバイス(マウス(登録商標))505を有する。
ハードディスク502cには、機器制御シミュレーションにおける各機能を実現したプログラム、シミュレーションの対象となる機器情報を含むシミュレーションのための各種データが格納される。シミュレーションに際しては、プログラム、各種データをRAM502bにロードし、コンピュータシステム501のCPU502aによってプログラムが実行される。これらコンピュータシステム501の基本動作は、基本プログラムであるオペレーティングシステム(以下、OSと略記する。)を介して実行される。本OSはマルチプロセスに対応したものである。
<プログラム連携システムの機能構成>
次に、図1を参照して、本実施形態に係るプログラム連携システムの機能構成例について説明する。図1に示すように、このプログラム連携システムは、システムを構成する2つのアプリケーションソフトウェアとプロセス接続手段とを備えている。2つのアプリケーションソフトウェアは、CPUシミュレータ601と、シミュレータアプリケーション602である。また、プロセス接続手段は、シミュレータハブ(以下、HUBと略記する。)604である。
次に、図1を参照して、本実施形態に係るプログラム連携システムの機能構成例について説明する。図1に示すように、このプログラム連携システムは、システムを構成する2つのアプリケーションソフトウェアとプロセス接続手段とを備えている。2つのアプリケーションソフトウェアは、CPUシミュレータ601と、シミュレータアプリケーション602である。また、プロセス接続手段は、シミュレータハブ(以下、HUBと略記する。)604である。
CPUシミュレータ601、及びシミュレータアプリケーション602は、それぞれがOS上で個別に動作するアプリケーションソフトウェアであり、それぞれが独立したプロセスとして存在する。更に、シミュレータアプリケーション602は、機能によって複数の独立プロセスで構成される場合がある。本実施形態において、CPUシミュレータ601は、ダイナミックリンクライブラリ(以下、DLLと略記する。)で提供される外部モジュールとの間で関数の直接呼出し方式による外部インターフェースを有している。また、シミュレータアプリケーション602、及び機構モデルシミュレータ603は、ソケットインターフェースによるプロセス間通信方式による外部インターフェースを有している。ただし、本発明においては、各アプリケーションの外部インターフェースの方式は、本実施形態に限定されるものではない。
HUB604は、DLLとして提供され、CPUシミュレータ601から起動されるサブプロセスとして動作する。CPUシミュレータ601は、各種イベント発生時に、予め指定されたHUB604のコールバック関数を呼び出す。HUB604を構成する配線モジュール605−3、及びインターフェースモジュール606−1、606−2は、それぞれ独立したスレッドとして動作する。各スレッドは、CPUシミュレータ601の起動時に呼び出されるコールバック関数から起動される。シミュレータアプリケーション602、及び機構モデルシミュレータ603は、OSの提供するアプリケーションプログラムインターフェースを使用して、ソケットインターフェースを介してHUB604との接続を行う。CPUシミュレータ601は、インターフェースモジュール620−1、連携情報関連付け部608−1、信号情報612−1、及び報知判断部610から構成される。
インターフェースモジュール620−1は、CPUシミュレータ601が外部のアプリケーションソフトウェアと通信を行うためのモジュールである。前述したとおり、HUB604のコールバック関数を登録し、プログラム実行中に呼び出したり、CPUシミュレータ601とHUB604とでメモリ情報を共有したりできるようなインターフェースが含まれている。
連携情報関連付け部608−1は、プログラム連携システムから連携情報を受信し、当該連係情報を、CPUシミュレータ601が有する各信号識別情報(個別識別情報)と関連付けて記憶する。信号情報612−1は、CPUシミュレータ601の有する各種信号の情報を格納するデータベースであって、信号識別情報613−1、連携情報614−1、及び値615−1を、各信号毎に関連付けて格納している。
報知判断部610は、CPUシミュレータ601がアクセスした後述の仮想アドレス空間上のアクセス領域と、信号識別情報613−1とを比較し、HUB604のコールバック関数を呼び出すか否かを判断している。シミュレータアプリケーション602は、インターフェースモジュール620−2、信号情報612−2、及び連携情報関連付け部608−2とから構成される。また、信号情報612−2は、信号識別情報613−2、連携情報614−2、及び値615−2を、各信号毎に関連付けて格納している。
<CPUシミュレータ601の機能>
次に、プログラム連携システムの各構成要素の機能について説明する。まず、CPUシミュレータ601の機能について説明する。CPUシミュレータ601は、シミュレーション対象となるCPU(以下、ターゲットCPUと称する。)の動作を、コンピュータシステム501上で実現する機能である。ここで、ターゲットCPUとは、コンピュータシステム501に搭載されているCPUではなく、シミュレーションの対象となる装置に搭載され、当該装置を制御するためのCPUのことである。
次に、プログラム連携システムの各構成要素の機能について説明する。まず、CPUシミュレータ601の機能について説明する。CPUシミュレータ601は、シミュレーション対象となるCPU(以下、ターゲットCPUと称する。)の動作を、コンピュータシステム501上で実現する機能である。ここで、ターゲットCPUとは、コンピュータシステム501に搭載されているCPUではなく、シミュレーションの対象となる装置に搭載され、当該装置を制御するためのCPUのことである。
CPUシミュレータ601は、ターゲットCPUの制御プログラム(以下、ターゲットファームウェアと称する。)に従って、ターゲットCPUの端子に対応して定義された仮想入力端子の情報を読み込み、仮想出力端子を制御する。
また、CPUシミュレータ601は、ターゲットCPUのアドレス空間に対応した仮想アドレス空間を用意している。ここで、仮想アドレス空間とは、ターゲットCPUの管理するアドレス空間上の個々の領域と1対1で対応する領域をコンピュータシステム501のRAM上に定義したものである。仮想アドレス空間のコンピュータシステム501上の実アドレス値は、ターゲットCPUの扱うアドレス値と異なる。そして、CPUシミュレータ601は、ターゲットファームウェアによるターゲットCPUアドレス空間上のアドレス値へのアクセス命令に従って、仮想アドレス空間上の対応する領域にアクセスする。また、ターゲットCPUのレジスタ類も、前記仮想アドレス空間上に対応する領域が設定され、レジスタ類へのアクセスも仮想アドレス空間へのアクセスによってシミュレーションされる。CPUシミュレータ601は、外部インターフェースとしてターゲットCPUのI/Oメモリ、レジスタアクセスのためのメソッドを用意している。外部モジュールは、これらのメソッドにより前記仮想アドレス空間へのアクセスを行う。
コンピュータシステム501上でのターゲットファームウェアの処理のシミュレーション方法としては、ターゲットファームウェアのソースプログラムをコンピュータシステム501のネイティブ言語に変換して実行する方式がある。また、ターゲットCPUの実行命令を1語ずつ解釈し、コンピュータシステム501のCPUに対応した実行命令に翻訳しながら実行する方式がある。本実施形態は、何れのCPUシミュレーション方式にも対応する。
上述のように、CPUシミュレータ601のイベント毎に、HUB604のコールバック関数が呼び出される。CPUシミュレータ601がコールバック関数を呼び出すイベントの例としては、CPUシミュレータ601の状態に関するもの(起動、初期化終了等)がある。また、ターゲットCPUの動作シミュレーション上のイベント(メモリアクセス、割り込み発生等)がある。
<シミュレータアプリケーション602の機能>
次に、シミュレータアプリケーション602の機能について説明する。シミュレータアプリケーション602は、機器制御シミュレーションシステムによる各種試験のための支援プログラムであり、仮想装置に対する各種働きかけの設定や、シミュレーションの結果を解析、表示、保存する機能を有する。シミュレーションの対象となる実際の装置は、その装置を使用するオペレータやその装置に接続されたコンピュータシステム等により外部から様々な働きかけ(以下、外部事象と称する。)を受けて動作する。例えば、本実施形態における対象装置の具体例をプリンタ装置とした場合には、シミュレータアプリケーション602は、ホストPCからの各種命令の受信、オペレータによるオペレーションパネルの操作、環境温度の変化等を擬似的に設定する仕組みを提供する。
次に、シミュレータアプリケーション602の機能について説明する。シミュレータアプリケーション602は、機器制御シミュレーションシステムによる各種試験のための支援プログラムであり、仮想装置に対する各種働きかけの設定や、シミュレーションの結果を解析、表示、保存する機能を有する。シミュレーションの対象となる実際の装置は、その装置を使用するオペレータやその装置に接続されたコンピュータシステム等により外部から様々な働きかけ(以下、外部事象と称する。)を受けて動作する。例えば、本実施形態における対象装置の具体例をプリンタ装置とした場合には、シミュレータアプリケーション602は、ホストPCからの各種命令の受信、オペレータによるオペレーションパネルの操作、環境温度の変化等を擬似的に設定する仕組みを提供する。
シミュレータアプリケーション602は、これらを設定するための専用のユーザインターフェース(以下、UIと略記する。)を提供する。また、シミュレータアプリケーション602は、当該UIによる設定に従って、HUB604を介してCPUシミュレータ601に所定の外部事象を加える。
<シミュレータハブ604の機能>
次に、シミュレータハブ604の機能について説明する。HUB604は、コア部605とインターフェースモジュール606とを有する。コア部605は、配線モジュール605−3を有する。また、インターフェースモジュール606は、HUB604の外部インターフェースを各周辺シミュレーションツールのインターフェース仕様に対応させる各々のインターフェースモジュール606−1、606−2を有する。そして、コア部605と各周辺シミュレーションツールとの接続を仲介する。また、HUB604は、CPUシミュレータ601やシミュレータアプリケーション602などの他のアプリケーションとは独立したプロセスで動作している。
次に、シミュレータハブ604の機能について説明する。HUB604は、コア部605とインターフェースモジュール606とを有する。コア部605は、配線モジュール605−3を有する。また、インターフェースモジュール606は、HUB604の外部インターフェースを各周辺シミュレーションツールのインターフェース仕様に対応させる各々のインターフェースモジュール606−1、606−2を有する。そして、コア部605と各周辺シミュレーションツールとの接続を仲介する。また、HUB604は、CPUシミュレータ601やシミュレータアプリケーション602などの他のアプリケーションとは独立したプロセスで動作している。
コア部605は、システム構成に合わせたHUBモジュールの設定を行なう。また、CPUシミュレータ601、及びシミュレータアプリケーション602(以下、まとめて周辺シミュレーションツールと称する。)間のデータ伝送管理を行う。インターフェースモジュール606は、予め設定された配線定義情報に基づき、各周辺シミュレーションツールと配線モジュール605−3との接続を行う。そして、インターフェースモジュール606は、周辺シミュレーションツールからのデータ出力に応じて、配線モジュール605−3のデータ送受信メソッドを呼び出してデータを配線モジュール605−3に渡す。また、インターフェースモジュール606は、配線モジュール605−3からのデータ設定要求に応じて周辺シミュレーションツールにデータを送る。
コア部605は、予め設定されたシステム構成定義情報に応じて、インターフェースモジュール606の構成を管理する。配線モジュール605−3は、予め設定された配線定義情報609をもとに、周辺シミュレーションツール間を接続する。また、配線モジュール605−3は、各インターフェースモジュール606−1、606−2に対して、データ送受信のメソッドを提供する。
配線定義情報609は、各周辺シミュレーションツール間で共通で使用する信号情報を格納する配列である。格納する情報は、各周辺シミュレーションツールにおける信号識別情報(個別識別情報)であり、評価者が手入力で作成したものであっても、プログラム連携システムが作成したものであってもよい。配線定義情報609は、プログラム連携システム内で同一の信号として取り扱うべき信号(以下、共用信号と称する。)について、関連する各種情報(各周辺シミュレーションツール内の信号識別情報を含む。)を同一のテーブルインデックスとなるような形式で格納する。つまり、各アプリケーションの信号識別情報(個別識別情報)を配列化し、共通識別情報を配列のインデックス値とする形式で格納する。
また、プログラム連携システムは、共用信号について、配線定義情報609に、各周辺シミュレーションツールにおける領域サイズや、各周辺シミュレーションツールの結線方向や、最新の値等の情報を格納するシステムであってもよい。結線方向には”入力”、”出力”、”入出力”の3種類のうちのいずれかが指定できる。例えば結線方向で”出力”が指定されたアプリケーションに対して、HUB604は、他の”出力”が指定されたアプリケーションから当該共用信号値の書き換えを取得しても、変化を伝達しない。
共通識別情報指定部607は、配線定義情報609をもとに、連携情報関連付け部608−1、608−2に対して、当該周辺シミュレーションツールが有する信号識別情報と、それに対する連携情報を関連付けて指定する。連携情報は、上述したとおり配線定義情報609のテーブルインデックスである。
連携情報関連付け部608−1、608−2は、共通識別情報指定部607から指定された連携情報を各周辺シミュレーションツールが有する信号情報データベースへ登録する。ここで、CPUシミュレータ601は、ターゲットCPUの動作シミュレーションにおいてメモリアクセスイベントが発生したときに、全てのメモリアクセスイベントをHUBへ通知するわけではない。CPUシミュレータ601は報知判断部610を有し、メモリアクセスイベントが発生したときに、報知判断部610にてHUBのコールバック関数を呼び出すか否かを判断している。
報知判断部610は、自身の有する信号情報データベースを参照し、メモリアクセスイベントのアクセス領域が報知対象であるか否かを判断し、必要に応じてHUB604のコールバック関数を呼び出す。本実施形態では、独立プロセスとして動作する2つのアプリケーションソフトウェア間で共通の信号識別情報を使用し、中間インターフェース部で信号情報を探索せずに他方のアプリケーションソフトウェアへ情報を伝達する方法について述べる。
<配線定義情報>
次に、図4を参照して、本実施形態における配線定義情報609の一例について説明する。配線定義情報609は、プログラム連携システムにおける各信号の意味合い毎に信号情報を関連付けて記憶しており、信号情報を送受信する必要のある周辺シミュレーションツール各々の信号識別情報を格納している。プログラム連携システムにおける意味合いとは、システムにおけるモータ1駆動信号、センサ1の値、割り込み番号10や湿度センサの値など、動作信号、動作パラメータ及びイベント等を示す。つまり、共用信号を示す。
次に、図4を参照して、本実施形態における配線定義情報609の一例について説明する。配線定義情報609は、プログラム連携システムにおける各信号の意味合い毎に信号情報を関連付けて記憶しており、信号情報を送受信する必要のある周辺シミュレーションツール各々の信号識別情報を格納している。プログラム連携システムにおける意味合いとは、システムにおけるモータ1駆動信号、センサ1の値、割り込み番号10や湿度センサの値など、動作信号、動作パラメータ及びイベント等を示す。つまり、共用信号を示す。
図4において、例えばプログラム連携システム内で「モータ1駆動信号」として取り扱っている信号情報は、CPUシミュレータ601の内部では仮想アドレス空間上の0x1000番地のbit0として取り扱われていることを定義している。一方、「モータ1駆動信号」は、シミュレータアプリケーション602の内部では、信号番号「10」として取り扱われていることを定義している。プログラム連携システム上では、この「モータ1駆動信号」の情報を配列上のインデックス0に格納し、プログラム実行中には、共用信号である「モータ1駆動信号」のシステム上の信号識別情報を「0」とする。そして、この信号識別情報[0]を「モータ1駆動信号」の連携情報として取り扱う。各周辺シミュレーションツールは、プログラム実行中に共用信号にアクセスしたら、HUB604へ連携情報を用いてアクセス報知を行う。
<処理手順>
次に、図5のフローチャートを参照して、本システムの処理手順について説明する。以下で説明する処理は、CPU502aが制御プログラムをハードディスク502cからRAM502bに読み出して、実行することにより実現される。
次に、図5のフローチャートを参照して、本システムの処理手順について説明する。以下で説明する処理は、CPU502aが制御プログラムをハードディスク502cからRAM502bに読み出して、実行することにより実現される。
S301で、プログラム連携システムは、外部から指示されるシミュレーション開始指示をトリガにシミュレーションを開始する。続いて、S302で、プログラム連携システムは、配線定義情報609を読み込み、S303で、共通識別情報指定部607を用いて各周辺シミュレーションツールへ連携情報を指定する。例えばモータ1であれば、配線定義情報609にCPUシミュレータ601のモータ1の識別情報が、仮想アドレスマップ上の0x1000 bit0であり、かつモータ1の配線定義情報609内のインデックス値が0であることが定義されている。プログラム連携システムは、CPUシミュレータ601へ、仮想アドレスマップ上の0x1000 bit0とインデックス値0を連携情報として記憶するように指定する。プログラム連携システムは、シミュレータアプリケーション602へも、同様に、信号識別情報10とインデックス値0を連携情報として記憶するように指定する。
他信号についても同様にして、配線定義情報609全ての信号に対して各周辺シミュレーションツールへ連携情報を指定する。指定し終えたとき、CPUシミュレータ601が保持する内部情報は図6のようになる。つまり、ここで、CPUシミュレータ601と、シミュレータアプリケーション602とで、連係情報を通じて、動作信号、動作パラメータ及びイベント等が紐付けられることとなる。その後、S304で、プログラム連携システムは、周辺シミュレーションツールの連携駆動を開始する。
S305で、HUB604が周辺シミュレーションツールからアクセス報知を受ける。報知を受けると、S306で、HUB604は、配線モジュール605−3を用いて、変化を報知すべき周辺シミュレーションツールの情報を取得する。ここで、HUB604は、S307で、周辺シミュレーションツールから報知されるアクセス報知の種別を判定する。この判定は、種別に従ってその後の処理を変更するために行っている。アクセス報知には書込通知と読出通知の2種類が存在する。なお、他の通知が適用されてもよい。
まず、S305で報知されるアクセス報知が周辺シミュレーションツールによる書込通知の場合を以下に説明する。例えば、CPUシミュレータ601が、自身のCPUシミュレーションにおける処理で、アドレス0x1000の値を1byteアクセスで書き込んだとすると、CPUシミュレータ601はアドレス0x1000が報知対象アドレスであるか否かを調査する。図6に示すように、bit0、bit1が報知対象信号であることから、CPUシミュレータ601はHUB604へ、インデックス0とその値、及びインデックス1とその値を書込通知として報知する。
S308で、HUB604は、配線モジュール605−3のインデックス0、及びインデックス1を参照する。さらに、報知対象の周辺シミュレーションツールの有無を確認し、必要があれば各周辺シミュレーションツールにインデックス0とその値、及びインデックス1とその値を通知する。
上述では、周辺シミュレーションツールが報知対象の共用信号へアクセスしたときに、周辺シミュレーションツール側で報知対象のサイズに合わせたデータを作成し、HUB604へ報知する方法について述べた。この処理に代えて、周辺シミュレーションツールが報知対象の共用信号へアクセスしたときに、周辺シミュレーションツールのアクセスサイズと書込値、連携情報としてのインデックス番号をそのままHUB604へ送付してもよい。この場合、HUB604側で共用信号の値を算出する。具体的には、CPUシミュレータ601がアドレス0x1000へ1byteアクセスすると、CPUシミュレータ601がHUB604へ、アクセスアドレス(0x1000)とアクセスサイズ(1byte)、書込値及び連携情報(0、1)を送付する。HUB604は配線モジュール605−3において、まず連携情報0に関する配線定義情報609を参照し、次いで連携情報1に関する配線定義情報609を参照する。配線モジュール605−3は、連携情報0に関する配線定義情報609が0x1000のbit0であることを確認する。そして、HUB604は、アクセスアドレス(0x1000)、アクセスサイズ(1byte)、及び書込値から連携情報0に対応する共用信号の値を算出する。HUB604は、前述した配線モジュール605−3による算出結果を他の周辺シミュレーションツールへ伝達する。続いての連携情報1に対する処理も同様である。
次に、S305で報知されるアクセス報知が周辺シミュレーションツールによる読出通知の場合を以下に説明する。なお、当該処理は配線モジュール605−3が周辺シミュレーションツールより書込報知を受信したときに、その報知される値を連携情報に関連付けて記憶しておくことが前提となっている。プログラム連携システム内で、読出通知が一切存在しないのであれば、配線モジュール605−3は書込報知時の値を保持する必要は無い。また、S307でのHUB604によるアクセス報知の種別判断、及びS309の処理及び機能が不要である。
例えば、CPUシミュレータ601が、自身のCPUシミュレーションにおける処理で、アドレス0x2000の値に2byteアクセスで参照したとすると、CPUシミュレータ601はアドレス0x2000が報知対象アドレスであるか否かを調査する。図6に示すように、アドレス0x2000から0x2003が報知対象信号であることから、CPUシミュレータ601は、S309で、HUB604へ、インデックス5を読出通知として通知する。
HUB604は、配線モジュール605−3のインデックス5を参照し、自身の保持するインデックス5の値を、読出通知の発行元、すなわちCPUシミュレータ601へ返送する。CPUシミュレータ601は返送値を受け取り、自身のアクセス領域(0x2000−0x2001)と共用信号の領域サイズ(0x2000−0x2003)から、自身のアクセス領域における値を取得する。
以上、周辺シミュレーションツール側に読出値の算出処理を行わせるシステムについて述べたが、上述の書込報知処理と同様に、配線モジュール605−3側に読出値の算出処理を行わせるシステムにしてもよい。処理の詳細を以下に示す。
CPUシミュレータ601が、自身のCPUシミュレーションにおける処理で、アドレス0x2000の値に2byteアクセスで参照するとき、上述の通り、HUB604へ、インデックス5を読出通知として通知する。ここで、CPUシミュレータ601は、HUB604へ読出通知として、インデックス値5に加えて自身のアクセス領域(0x2000−0x2001)を通知する。HUB604は、報知されたアクセス領域(0x2000−0x2001)と共用信号の領域サイズ(0x2000−0x2003)から、S309で、CPUシミュレータ601のアクセス領域における値を算出し、CPUシミュレータへ返送してもよい。
S310で、プログラム連携システムは、シミュレーションが終了したか否かを判定し、終了するまでS305乃至S309の処理を繰り返す。
以上説明したように、本実施形態によれば、プログラム連携システムが起動されると、複数のアプリケーションの間で伝達される共用信号を示す共通識別情報を、各アプリケーションにおいて共用信号を個別に示す個別識別情報に紐付ける。さらに、各アプリケーションへ複数の共用信号における個別識別情報の夫々に対して共通識別情報を指定する。共用信号が発生すると、共通識別情報に従って必要なアプリケーションへ当該共用信号を伝達する。このように、本実施形態に係るプログラム連携システムは、独立プロセスとして動作する2つのアプリケーションソフトウェア間で共通の信号識別情報を使用する。これにより、中間インターフェース部で信号情報を探索することなく、他方のアプリケーションソフトウェアへ情報を伝達することができる。中間インターフェース部で信号情報を探索しないため、信号情報の伝達効率が上がり、結果としてシミュレーション速度が向上する。
なお、本実施形態によれば、共通識別情報指定部607をHUB604の外部に設けたが、HUB604の内部に設けてもよい。その場合、HUB604は、各周辺シミュレーションツールと値の送受信を行う前までに、共通識別情報指定部607を用いて各周辺シミュレーションツールへ共通識別情報を送付する。
<第2の実施形態>
以下では、本発明の第2の実施形態について説明する。第1の実施形態では、プログラム連携システムが連携駆動させる全ての周辺シミュレーションツールに対して、連携情報として配線定義情報609のインデックス情報を送付することで、中間インターフェース部での信号情報の探索を省略する方法について述べた。しかしながら、周辺シミュレーションツールは、プログラム連携システム内で駆動することを前提としたツールではない場合もあり、必ずしも連携情報関連付け部608を有するものではない。そこで、本実施形態では、連携駆動対象の周辺シミュレーションツールのうちいずれか一つが、自身の信号識別情報を用いて信号情報の送受信を行うものの、中間インターフェース部での信号情報の探索を省略する方法について説明する。
以下では、本発明の第2の実施形態について説明する。第1の実施形態では、プログラム連携システムが連携駆動させる全ての周辺シミュレーションツールに対して、連携情報として配線定義情報609のインデックス情報を送付することで、中間インターフェース部での信号情報の探索を省略する方法について述べた。しかしながら、周辺シミュレーションツールは、プログラム連携システム内で駆動することを前提としたツールではない場合もあり、必ずしも連携情報関連付け部608を有するものではない。そこで、本実施形態では、連携駆動対象の周辺シミュレーションツールのうちいずれか一つが、自身の信号識別情報を用いて信号情報の送受信を行うものの、中間インターフェース部での信号情報の探索を省略する方法について説明する。
まず、図7を参照して、本実施形態に係るプログラム連携システムの機能構成について説明する。図1と同一の構成及び技術については説明を省略する。
CPUシミュレータ701は、上記第1の実施形態のCPUシミュレータ601と異なり、連携情報関連付け部608を有していない。一方で、本実施形態に係るプログラム連携システムは、事前定義の配線定義情報709−1と、自動生成の配線定義情報709−2を有し、さらに、共通識別情報算出部711と、ターゲットファームウェア712とを有する。ターゲットファームウェアとは、模擬する対象となるファームウェアを示す。共通識別情報算出部711は、配線定義情報709−1の情報と、ターゲットファームウェア712が有する信号情報(CPUシミュレータ701が有する信号識別情報)とを読み込み、共通識別情報を算出し、配線定義情報709−2へ出力する。
<算出方法>
図8及び図9を参照して、共通識別情報の算出方法について説明する。図8は、配線定義情報609に定義される情報である。プログラム連携システムにおける意味合い毎に、各周辺シミュレーションツールでの識別情報を保持している。
図8及び図9を参照して、共通識別情報の算出方法について説明する。図8は、配線定義情報609に定義される情報である。プログラム連携システムにおける意味合い毎に、各周辺シミュレーションツールでの識別情報を保持している。
ここで、CPUシミュレータ701はターゲットファームウェア712を模擬するツールであるため、CPUシミュレータ701の有する信号識別情報は、即ちターゲットファームウェア712のアドレスマップに等しい。アドレスマップには、ターゲットファームウェア712が使用する全ての信号情報がユニークな番地に配置されている。
CPUシミュレータ701がメモリアクセス報知の際に、HUB604へ信号識別情報として伝達する情報が、ターゲットファームウェアのアドレスマップ上のアクセス位置やサイズである。したがって、アドレスマップを共通識別情報として取り扱えば、全ての周辺シミュレーションツールで同一の信号識別情報を使用できる。そこで、共通識別情報算出部711は、図9の901に示すように、ターゲットファームウェア712のアドレスをテーブルのインデックス情報として、配線定義情報609を並び替える。
ここで、図10に示すように、CPUのアドレスマップは信号定義情報以外にも、プログラム空間やレジスタ情報などの様々なROM/RAM情報が定義されていることから、CPUアドレスマップ全てを共通識別情報とするのはPCのメモリの無駄である。そこで、図9の902に示すように、CPUの仕様に従って、CPUアドレスマップのうち、信号情報が定義されている可能性のある領域のみを共通識別情報とし、当該領域の先頭アドレスまでの値をオフセット値としてHUB604が保持する。
プログラム連携システムは、共通識別情報算出部711の作成した配線定義情報709を読み込み、共通識別情報指定部607を用いて各周辺シミュレーションツールへ共通識別情報を指定したり、プログラム実行中に入出力信号を送受信する。プログラム実行中に、HUB604は、各周辺シミュレーションツールからメモリアクセス報知を受けると、報知元の周辺シミュレーションツールによって配線定義情報709に対するアクセス方法を変更する。報知元の周辺シミュレーションツールがCPUシミュレータ701のときには、CPUシミュレータ701がアクセスしたアドレスの値からオフセット値を引いた値をインデックスとして、配線定義情報709の情報を参照する。一方、報知元の周辺シミュレーションツールがCPUシミュレータ701以外のときには、周辺シミュレーションツールがアクセスしたアドレス値そのものをインデックスとして、配線定義情報709の情報を参照する。
本実施形態によれば、独立プロセスとして動作する2つのアプリケーションソフトウェアのうち、いずれかのアプリケーションソフトウェアが信号識別情報と連携情報とを関連付けない場合であっても、中間インターフェース部での信号情報の探索を省略できる。なお、本実施形態では共通識別情報算出部711及び共通識別情報指定部607をHUB604の外部に設けたが、HUB604の内部に設けてもよい。その場合には、HUB604は、各周辺シミュレーションツールと値の送受信を行う前までに、共通識別情報算出部711の処理を実行し、配線定義情報709を作成する。次いで、HUB604は、共通識別情報指定部607を用いて各周辺シミュレーションツールへ共通識別情報を送付する。また、共通識別情報算出部711を有しておらず、最初から、連携駆動対象の周辺シミュレーションツールのうち、いずれかの周辺シミュレーションツールの信号識別情報を元に配線定義情報を作成してもよい。
<第3の実施形態>
以下では、本発明の第3の実施形態について説明する。上記第1及び第2の実施形態では、2つのアプリケーションソフトウェアを備えるシステムについて説明した。本実施形態では、3つのアプリケーションソフトウェアを備えるシステムについて説明する。まず、図11を参照して、本実施形態に係るプログラム連携システムの機能構成について説明する。
以下では、本発明の第3の実施形態について説明する。上記第1及び第2の実施形態では、2つのアプリケーションソフトウェアを備えるシステムについて説明した。本実施形態では、3つのアプリケーションソフトウェアを備えるシステムについて説明する。まず、図11を参照して、本実施形態に係るプログラム連携システムの機能構成について説明する。
図11に示すように、本実施形態に係るプログラム連携システムは、システムを構成する3つのアプリケーションソフトウェアとプロセス接続手段とを備えている。機構モデルシミュレータ1103は、それぞれがOS上で個別に動作するアプリケーションソフトウェアで、それぞれが独立したプロセスとして存在する。
<機構モデルシミュレータ1103の機能>
ここで、機構モデルシミュレータ1103の機能について説明する。機構モデルシミュレータ1103は、アクチュエータ、及びセンサを含む複数の部品からなる機構モデルを、コンピュータ上で擬似的に動作させる機能である。機構モデルの各要素(以下、機構部品と称する。)は、ユーザにより形状、種類、動作、機構部品間の干渉と連携条件等が定義される。更に、センサ、アクチュエータについては外部信号定義が行われる。これら機構部品の定義は、CAD図面からの自動設定、専用の機構モデル作成ソフトウェアをユーザが操作して設定、その両方の組み合わせで設定するなどして行われる。
ここで、機構モデルシミュレータ1103の機能について説明する。機構モデルシミュレータ1103は、アクチュエータ、及びセンサを含む複数の部品からなる機構モデルを、コンピュータ上で擬似的に動作させる機能である。機構モデルの各要素(以下、機構部品と称する。)は、ユーザにより形状、種類、動作、機構部品間の干渉と連携条件等が定義される。更に、センサ、アクチュエータについては外部信号定義が行われる。これら機構部品の定義は、CAD図面からの自動設定、専用の機構モデル作成ソフトウェアをユーザが操作して設定、その両方の組み合わせで設定するなどして行われる。
上述のように定義される機構部品の種類としては、単なる物体と定義されるものと機能定義がなされるもの(モータ、ソレノイド、クラッチ、センサ、歯車、カム、ローラ等)がある。また、機構部品には、対象となる装置の構成物ではないもので装置の動作シミュレーションに必要なもの(プリンタ装置における用紙等)も含まれる。また、上述のように構築された機構モデルは、コンピュータシステム501の表示装置503上に、2次元又は3次元のグラフィックとして表示される。
機構モデルシミュレータ1103は、CPUシミュレータ601からHUB604を介して送られてきたアクチュエータ動作信号に対応して、該当するアクチュエータの機構モデルを定義された動きで動作させる。アクチュエータ動作信号は、CPUシミュレータ601からHUB604を介してシミュレータアプリケーション602に入力されたデータを、シミュレータアプリケーション602で任意に加工する。そして、シミュレータアプリケーション602から再びHUB604を介して機構モデルシミュレータ1103に送られる場合もある。
そして、機構定義に基づきアクチュエータに連結された機構部品をアクチュエータの動作に関連付けて定義された動きで動作させる。また、オペレータの操作により動作する機構については、キーボード504、マウス505によってオペレータによる機構部品への操作を擬似的に再現し、擬似操作に応じて対象となる機構部品を定義された動きで動作させる。更に、機構部品間の干渉、連携定義に従い、関連する全ての機構部品の動作が再現される。
これら機構部品の動作は、表示装置503に表示されたグラフィックとして再現される。同時に、機構モデルの動作の結果、センサとして定義された機構モデルに予め定義された外部事象が発生すると、外部事象に応じたセンサ信号を発生させ、そのセンサ信号は、CPUシミュレータ601にHUB604を介して送信される。
<シミュレータハブ604の機能>
次に、シミュレータハブ604の機能について説明する。HUB604のインターフェースモジュール606は、HUB604の外部インターフェースを各周辺シミュレーションツールのインターフェース仕様に対応させる各々のインターフェースモジュール606−1、606−2、606−3から構成される。そして、コア部1105と各周辺シミュレーションツールとの接続を仲介する。また、HUB604は、CPUシミュレータ601やシミュレータアプリケーション602、及び機構モデルシミュレータ1103などの他のアプリケーションとは独立したプロセスで動作している。コア部1105は、システム構成に合わせたHUBモジュールの設定を行なう。また、CPUシミュレータ601、シミュレータアプリケーション602、及び機構モデルシミュレータ1103(以下、まとめて周辺シミュレーションツールと称する。)間のデータ伝送管理を行う。
次に、シミュレータハブ604の機能について説明する。HUB604のインターフェースモジュール606は、HUB604の外部インターフェースを各周辺シミュレーションツールのインターフェース仕様に対応させる各々のインターフェースモジュール606−1、606−2、606−3から構成される。そして、コア部1105と各周辺シミュレーションツールとの接続を仲介する。また、HUB604は、CPUシミュレータ601やシミュレータアプリケーション602、及び機構モデルシミュレータ1103などの他のアプリケーションとは独立したプロセスで動作している。コア部1105は、システム構成に合わせたHUBモジュールの設定を行なう。また、CPUシミュレータ601、シミュレータアプリケーション602、及び機構モデルシミュレータ1103(以下、まとめて周辺シミュレーションツールと称する。)間のデータ伝送管理を行う。
<配線定義情報>
次に、図3を参照して、本実施形態における配線定義情報1109の一例について説明する。CPUシミュレータ1101における信号識別情報、及びシミュレータアプリケーション1102における信号識別情報が、プログラム連携システムにおける意味合い毎に同一のインデックスに関連付けられて管理されている。
次に、図3を参照して、本実施形態における配線定義情報1109の一例について説明する。CPUシミュレータ1101における信号識別情報、及びシミュレータアプリケーション1102における信号識別情報が、プログラム連携システムにおける意味合い毎に同一のインデックスに関連付けられて管理されている。
ここで結線方向は、周辺シミュレーションツール間の信号伝達の方向を定義したものであり、”出力”、”入力”、”入出力”、”−”の4種類が存在する。各周辺シミュレーションツールから書込アクセスが報知されるとき、”出力”または”入出力”が設定されたアプリケーションのみの書込アクセスが有効となる。”入力”または”−”が設定されたアプリケーションから書込アクセスが報知されても、HUB1104は他の周辺シミュレーションツールに当該信号の値の変化を伝達しない。以下では、”出力”または”入出力”設定のことを、以後、有効出力設定と称する。
また、有効出力設定がなされたアプリケーションからの書込アクセスが報知されるとき、HUB1104は、”入力”または”入出力”が設定されたアプリケーションのみに値を伝達する。以下では、”入力”または”入出力”設定のことを、有効入力設定と称する。結線方向の各定義は、各周辺シミュレーションツールで任意に設定できる。1つの信号に対して、複数の”出力”定義を設定したり、”入力”定義を一つも設定しないことも可能である。配線定義情報1109の同一の信号に対し、複数の有効出力設定が定義されると、有効入力設定が定義された周辺シミュレーションツールには、有効出力設定が定義された周辺シミュレーションツールの全ての書込報知が伝達される。ここで、結線方向が”出力”定義された周辺シミュレーションツールには書込報知が伝達されないため、”出力”定義された周辺シミュレーションツール同士が内部で保持している当該信号の値は各々異なる場合がある。
また、同一の信号に対し、複数の有効入力設定が定義されると、当該信号に対する一つの書込報知が、有効入力設定が定義される全ての周辺シミュレーションツールに伝達される。逆に、一つも有効入力設定が定義なされない場合には、書込報知はHUB1104までしか伝わらず、どの周辺シミュレーションツールにも伝達されない。
<HUBの処理>
次に、HUB1104の詳細な処理について説明する。HUB1104が周辺シミュレーションツールからアクセス通知を受けると、HUB1104は配線モジュール1105−3を参照し、変化を報知すべき周辺シミュレーションツールの情報を取得する。ここで、例えば、HUB1104がCPUシミュレータ1101から共通識別情報0(インデックス)に対して書込アクセスが報知されたとすると、図3でCPUシミュレータ1101の結線方向が”出力”となっている。したがって、HUB1104は、CPUシミュレータ1101の書込値を他の周辺シミュレーションツールへ伝達する。
次に、HUB1104の詳細な処理について説明する。HUB1104が周辺シミュレーションツールからアクセス通知を受けると、HUB1104は配線モジュール1105−3を参照し、変化を報知すべき周辺シミュレーションツールの情報を取得する。ここで、例えば、HUB1104がCPUシミュレータ1101から共通識別情報0(インデックス)に対して書込アクセスが報知されたとすると、図3でCPUシミュレータ1101の結線方向が”出力”となっている。したがって、HUB1104は、CPUシミュレータ1101の書込値を他の周辺シミュレーションツールへ伝達する。
図3において、他の周辺シミュレーションツールの結線方向は、シミュレータアプリケーション1102が”−”、機構モデルシミュレータ1103が”入力”である。シミュレータアプリケーション1102の”−”は、結線していない状態を指す。結線していないため、HUB1104は、シミュレータアプリケーション1102へは信号変化を報知しない。機構モデルシミュレータ1103は”入力”であるため、HUB1104は、機構モデルシミュレータ1103とプロセス間通信を行い信号変化を報知する。
また、共通識別情報0において、機構モデルシミュレータ1103からHUB1104に書込アクセスが報知されたとする。HUB1104は、配線定義情報1109で定義される機構モデルシミュレータ1103の結線方向が”入力”、即ち、有効出力設定ではないため、他の周辺シミュレーションツールへは値を伝達しない。なお、プログラム連携システムは、連係動作開始時に、各周辺シミュレーションツールへ、配線定義情報1109に定義される結線方向を指定し、配線定義情報1109で有効出力設定が定義された信号のみを書込アクセス報知するような処理を行ってもよい。
以上説明したように、本実施形態によれば、プログラム連携システムは、3つのアプリケーションソフトウェアを備えることができる。さらに、本実施形態では連携駆動対象のアプリケーションソフトウェアを3つとしたが、上述の方法を適用すれば、任意の個数のアプリケーションソフトウェアを連携駆動できることは言うまでもない。即ち、独立プロセスとして動作する2つ以上のアプリケーションソフトウェア間で共通の信号識別情報を使用し、中間インターフェース部で信号情報を探索せずに他方のアプリケーションソフトウェアへ情報を伝達することが可能となる。
また、本実施形態の構成に対し、上記第2の実施形態で説明した方法を適用してもよい。この場合、連携駆動対象のアプリケーションソフトウェアのいずれか一つが、信号識別情報と連携情報とを関連付ける構成を有していなくとも、中間インターフェース部で信号情報を探索せずに他方のアプリケーションソフトウェアへ情報を伝達できる。
<第4の実施形態>
以下では、本発明の第4の実施形態について説明する。上記第1乃至第3の実施形態では、プログラム連携システムが、周辺シミュレーションツール間の信号情報仲介のために、HUB1204を有する構成について説明した。本実施形態では、プログラム連携システムがHUB1204を有することなく、周辺シミュレーションツール同士が直接信号情報を送受信するシステムについて説明する。
以下では、本発明の第4の実施形態について説明する。上記第1乃至第3の実施形態では、プログラム連携システムが、周辺シミュレーションツール間の信号情報仲介のために、HUB1204を有する構成について説明した。本実施形態では、プログラム連携システムがHUB1204を有することなく、周辺シミュレーションツール同士が直接信号情報を送受信するシステムについて説明する。
<プログラム連携システムの機能構成>
図12を参照して、プログラム連携システムの機能構成について説明する。CPUシミュレータ1201とシミュレータアプリケーション1202は、各々、インターフェースモジュール1220−1、1220−2で接続される。アクセス時変換表1216−1、1216−2、及び被アクセス時変換表1217−1、1217−2は、それぞれ、信号識別情報1213−1、1213−2と連携情報1214−1、1214−2との対応表(変換テーブル)である。各周辺シミュレーションツールは、自身の内部情報にアクセスするときにはアクセス時変換表1216−1、1216−2を参照し、他の周辺シミュレーションツールからアクセス報知されると、被アクセス時変換表1217−1、1217−2を参照する。
図12を参照して、プログラム連携システムの機能構成について説明する。CPUシミュレータ1201とシミュレータアプリケーション1202は、各々、インターフェースモジュール1220−1、1220−2で接続される。アクセス時変換表1216−1、1216−2、及び被アクセス時変換表1217−1、1217−2は、それぞれ、信号識別情報1213−1、1213−2と連携情報1214−1、1214−2との対応表(変換テーブル)である。各周辺シミュレーションツールは、自身の内部情報にアクセスするときにはアクセス時変換表1216−1、1216−2を参照し、他の周辺シミュレーションツールからアクセス報知されると、被アクセス時変換表1217−1、1217−2を参照する。
配線定義情報1209が図4に示す配線定義情報609と同一である場合を想定して、アクセス時変換表1216−1、1216−2、及び被アクセス時変換表1217−1、1217−2をさらに説明する。即ち、各周辺シミュレーションツールは、自身のシミュレーション処理を自身の有する信号識別情報1213−1、1213−2を用いて行っている。したがって、各種内部信号へのアクセス時に、当該信号に連携情報1214−1、1214−2が付加されているか否かを調べる必要がある。そのため、自身の信号識別情報1213−1、1213−2から連携情報1214−1、1214−2を取得可能な形態で情報を有することで、各種内部信号へのアクセス時に、連携情報1214−1、1214−2を照合する必要がなくなる。
そこで、配線定義情報1209が図4に示す配線定義情報609と同一であるとき、CPUシミュレータ1201のアクセス時変換表1216−1は、図6に示す通りとなる。CPUシミュレータ1201の信号識別情報1213−1は図6のメモリアドレスマップと同一となる。アクセス時変換表1216−1には、メモリアドレスマップに対し、報知対象のアドレス情報と、それに対する連携情報1214−1とが定義される。これにより、CPUシミュレータ1201が任意のメモリ領域にアクセスするときに、報知対象か否か、及び連携情報1214−1を参照することができる。
また、プログラム連携システム上では、信号識別情報として共通識別情報が使用されているため、各シミュレーションツールは、外部からアクセス報知を受けた際には、共通識別情報から、対応する自身の信号識別情報1213−1、1213−2を取得する。信号情報の照合処理を発生させないために、各周辺シミュレーションツール内で、予め共通識別情報から自アプリケーションソフトウェア内の信号識別情報1213−1、1213−2との対応表を、被アクセス時変換表1217−1、1217−2として有する。各周辺シミュレーションツールは、他の周辺シミュレーションツールからアクセス報知を受信したときに、渡される共通識別情報を基に、被アクセス時変換表1217−1、1217−2を参照する。これにより、信号情報の照合処理なしに自身の信号識別情報1213−1、1213−2を取得することができる。配線定義情報1209が図4に示す配線定義情報609と同一であるとき、CPUシミュレータ1201の被アクセス時変換表1217−1は、図13に示す通りとなる。
本実施形態では、各周辺シミュレーションツールが共通識別情報指定部1207から共通識別情報を受け取ると、各連携情報関連付け部1208−1、1208−2が、アクセス時変換表1216と被アクセス時変換表1217とを作成する。これは本発明を限定する意図はなく、アクセス時変換表1216と被アクセス時変換表1217を別の機能が作成し、各周辺シミュレーションツールがシミュレーション開始時にアクセス時変換表1216と被アクセス時変換表1217を読み込んでもよい。なお、本実施形態では、プログラム連携システム内の周辺シミュレーションツールが2つであるものとして説明したが、3つ以上でも同様である。
配線定義情報1209が図3のように結線方向の定義情報を含むときには、連携情報関連付け部1208−1乃至1208−3はアクセス時変換表1216−1乃至1216−3を結線方向が”出力”または”入出力”の定義情報のもののみから作成する。また、連携情報関連付け部1208−1乃至1208−3は被アクセス時変換表1217−1乃至1217−3を結線方向が”入力”または”入出力”の定義情報のもののみから作成する。
配線定義情報1209が図3のとき、各周辺シミュレーションツール(CPUシミュレータ1201、シミュレータアプリケーション1202、機構モデルシミュレータ1203)が有するアクセス時変換表1216は図14の1401乃至1403のようになる。また、被アクセス時変換表1217は図15の1501乃至1503に示すようになる。
このとき、各周辺シミュレーションツールは自身のシミュレーション処理において、内部信号を更新するときに、アクセス時変換表1216−1乃至1216−3を参照して、アクセス報知の要否を判断する。アクセス報知対象の信号であった場合には、当該周辺シミュレーションツールは、連携駆動対象の他の全ての周辺シミュレーションツールにアクセス報知を行う。アクセス報知時には、信号識別情報として連携情報と、更新値を報知する。アクセス報知を受信した各周辺シミュレーションツールは、各々が被アクセス時変換表1217−1乃至1217−3を参照する。そして、報知された連携情報が自身の管理する被アクセス時変換表1217−1乃至1217−3に定義される連携情報と一致した場合にのみ、報知された値を、自身の信号識別情報の値として取り込む。
以上説明したように、本実施形態では、独立プロセスとして動作する2つ以上のアプリケーションソフトウェアを連携駆動させるシステムにおいて、中間インターフェース部を有しない構成である。この場合であっても、本実施形態によれば、信号情報を探索せずに他方のアプリケーションソフトウェアへ情報を伝達することができる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
601:CPUシミュレータ、602:シミュレータアプリケーション、604:HUB、605:コア部、606、620:インターフェースモジュール、607:共通識別情報指定部、608:連携情報関連付け部、609:配線定義情報、610;報知判断部、612:信号情報、613:信号識別情報、614:連続情報、615:値
Claims (14)
- 複数のアプリケーションと連携してシミュレーション対象の装置のシミュレーションを実行するプログラム連携システムであって、
前記プログラム連携システムが起動されると、前記複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、前記プログラム連携システムの中で共通の情報である前記共通識別情報と、各アプリケーションにおいて該共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して前記共通識別情報を指定する指定手段と、
前記共用信号が発生すると、前記共通識別情報に従って必要なアプリケーションへ前記共用信号を伝達する中継手段と
を備えることを特徴とするプログラム連携システム。 - 前記共通識別情報と、各アプリケーションの前記個別識別情報とを紐付けて定義した配線定義情報を記憶する記憶手段をさらに備え、
前記指定手段は、前記記憶手段に記憶された前記配線定義情報に従って、各アプリケーションへ前記共通識別情報を指定することを特徴とする請求項1に記載のプログラム連携システム。 - 前記共通識別情報は、前記配線定義情報に含まれる各アプリケーションの前記個別識別情報を配列化した際のインデックス値であることを特徴とする請求項2に記載のプログラム連携システム。
- 前記シミュレーション対象の装置のアドレスマップと、前記共用信号ごとに各アプリケーションの前記個別識別情報を定義する配線定義情報とから、前記共用信号ごとに前記共通識別情報を算出する算出手段をさらに備え、
前記指定手段は、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して、前記算出手段によって算出された共通識別情報を指定することを特徴とする請求項1に記載のプログラム連携システム。 - 前記中継手段は、前記複数のアプリケーションのうちの1つのアプリケーションに含まれることを特徴とする請求項1乃至4の何れか1項に記載のプログラム連携システム。
- 前記中継手段を含む前記アプリケーションは、さらに、前記指定手段を含むことを特徴とする請求項5に記載のプログラム連携システム。
- 前記中継手段は、前記複数のアプリケーションの夫々に含まれることを特徴とする請求項1乃至4の何れか1項に記載のプログラム連携システム。
- 前記中継手段は、自身のアプリケーションから他のアプリケーションへ前記共用信号を通知するために、前記自身のアプリケーションにおける前記個別識別情報から前記共通識別情報へ変換する変換テーブルを備えることを特徴とする請求項7に記載のプログラム連携システム。
- 前記中継手段は、前記他のアプリケーションから前記共用信号を受信するために、該他のアプリケーションから通知された前記共通識別情報を前記個別識別情報へ変換する変換テーブルをさらに備えることを特徴とする請求項8に記載のプログラム連携システム。
- 各アプリケーションにおける前記個別識別情報は、前記共用信号を示す情報と、当該アプリケーションにおける該共用信号を入力するか、出力するか、入出力するか、又は、扱わないかを示す結線方向の情報とを含むことを特徴とする請求項1乃至9の何れか1項に記載のプログラム連携システム。
- 前記中継手段は、前記共用信号が発生すると、前記結線方向の情報に従って、伝達する必要のあるアプリケーションへ該共用信号を伝達することを特徴とする請求項10に記載のプログラム連携システム。
- 前記共用信号には、当該共用信号に対応する値を読み出す読出通知と、該対応する値を書き込む書込通知とがあり、
前記中継手段は、
前記共用信号が前記読出通知であれば、該対応する値を前記読出通知の発行元のアプリケーションへ前記対応する値を返送し、
前記共用信号が前記書込通知であれば、該書込通知とともに受信した前記対応する値を保持することを特徴とする請求項1乃至11に記載のプログラム連携システム。 - 複数のアプリケーションと連携してシミュレーション対象の装置のシミュレーションを実行するプログラム連携システムの制御方法であって、
指定手段が、前記プログラム連携システムが起動されると、前記複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、前記プログラム連携システムの中で共通の情報である前記共通識別情報と、各アプリケーションにおいて該共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して前記共通識別情報を指定する指定工程と、
中継手段が、前記共用信号が発生すると、前記共通識別情報に従って必要なアプリケーションへ前記共用信号を伝達する中継工程と
を実行することを特徴とするプログラム連携システムの制御方法。 - 複数のアプリケーションと連携してシミュレーション対象の装置のシミュレーションを実行するプログラム連携システムの制御方法における各工程をコンピュータに実行させるためのプログラムであって、前記方法は、
指定手段が、前記プログラム連携システムが起動されると、前記複数のアプリケーションの間で伝達される共用信号を示す共通識別情報であって、前記プログラム連携システムの中で共通の情報である前記共通識別情報と、各アプリケーションにおいて該共用信号を個別に示す個別識別情報とを紐付けるとともに、各アプリケーションへ複数の前記共用信号における前記個別識別情報の夫々に対して前記共通識別情報を指定する指定工程と、
中継手段が、前記共用信号が発生すると、前記共通識別情報に従って必要なアプリケーションへ前記共用信号を伝達する中継工程と
を実行することを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015225081A JP2017091469A (ja) | 2015-11-17 | 2015-11-17 | プログラム連携システム、その制御方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015225081A JP2017091469A (ja) | 2015-11-17 | 2015-11-17 | プログラム連携システム、その制御方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017091469A true JP2017091469A (ja) | 2017-05-25 |
Family
ID=58767938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015225081A Pending JP2017091469A (ja) | 2015-11-17 | 2015-11-17 | プログラム連携システム、その制御方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017091469A (ja) |
-
2015
- 2015-11-17 JP JP2015225081A patent/JP2017091469A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI400652B (zh) | Dual operating system parallel processing methods, recording media and computer program products | |
JP2006350549A (ja) | 統合シミュレーションシステム | |
GB2232514A (en) | Programmable controller | |
JP2002511161A (ja) | ビジュアル・ディスプレイ・オブジェクト・ファイル用エミュレータおよびその動作方法 | |
JP6550269B2 (ja) | プログラム作成支援装置、制御方法およびプログラム | |
WO2018063563A1 (en) | Initializing a system on a chip | |
US20150200807A1 (en) | Dynamic server to server configuration and initialization | |
CN114327628A (zh) | 分层控制方法、系统、终端设备及存储介质 | |
TWI540511B (zh) | 用以存取虛擬機器之電腦系統及方法 | |
JP3308386B2 (ja) | 制御システム | |
JP2017091469A (ja) | プログラム連携システム、その制御方法、及びプログラム | |
CN113778622A (zh) | 云桌面键盘事件处理方法、装置、设备及存储介质 | |
WO1987005725A1 (en) | Method of executing emulation | |
JP5492573B2 (ja) | トレース機能を備える接続機器シミュレータ装置、方法、及びプログラム | |
CN112711527A (zh) | 一种实时进程的调试方法、装置、目标机和存储介质 | |
JP2009163423A (ja) | プログラム連携システム及びそのシミュレーション制御方法 | |
JP6053616B2 (ja) | 表示部品制御システム | |
US10824451B2 (en) | Hardware simulation | |
Ugah et al. | Relationship between Operating System, Computer Hardware, Application Software and Other Software | |
WO2023145361A1 (ja) | ロボット制御システムおよびロボット制御システムを構成する方法 | |
US11640153B2 (en) | Control system, support device, and recording medium | |
JP2013114466A (ja) | 表示システム、表示方法およびプログラム | |
CN109918727B (zh) | 多仿真场景动态管理方法 | |
JP3137094B2 (ja) | シミュレーション方法、シミュレーション装置及びその記録媒体 | |
US20230281354A1 (en) | System and method for providing autonomous driving simulation architecture with switchable models |