(57)【特許請求の範囲】
【請求項１】
複数のシミュレータが情報交換しながら分散処理にてシミュレーションを実行する統合シミュレーションシステムにおいて、
上記情報交換の対象となる各シミュレータ間の接続関係を定義する接続情報を格納する記憶部と、
上記シミュレータごとに対応して設けられ、上記シミュレータによるシミュレーションの論理時間を保持する論理時計と、上記論理時計の論理時間を停止又は進行させる同期機構部と、自シミュレータ、及び、接続情報に基づいて特定される情報交換の対象となる接続関係を有する他のシミュレータについて、これらによるシミュレーションの現在の論理時間及びシミュレーションを完了する周期を含む同期用情報を保持する同期用情報保持部とを有してなる同期整合部と、
上記記憶部から取得した接続情報に基づいて上記情報交換の対象として特定されたシミュレータの同期整合部間の情報のやり取りを中継するメッセージ配信部とを備え、
上記同期機構部は、上記メッセージ配信部を介して、上記記憶部から取得した接続情報に基づき上記複数のシミュレータから情報交換の対象として特定された他のシミュレータの同期機構部との間で上記論理時間に関するメッセージ情報をやり取りし、このメッセージ情報から特定される上記他のシミュレータの論理時間と上記論理時計に保持される自シミュレータの論理時間との比較結果に応じて上記論理時計の論理時間を停止又は進行させると共に、上記同期用情報保持部から取得した同期用情報に含まれる上記自シミュレータ及び上記他のシミュレータの現在の論理時間に上記自シュミレータによる１周期のシミュレーションの実行に要した論理時間をそれぞれ加算した時間に基づいて上記両シミュレータの論理時間の整合性を判定し、この判定結果に応じて論理時計の論理時間を停止又は進行させ、当該論理時間に関するメッセージ情報を上記両シミュレータの論理時間の整合がとれている場合に限り上記他のシミュレータの同期機構部に送信することを特徴とする統合シミュレーションシステム。
【請求項２】
接続情報にシミュレータ間の接続形態に応じた伝送遅延時間に関する情報も含めて記憶部に保持し、
同期機構部は、上記接続情報に基づいて、自シミュレータとの間で情報交換の対象となる接続関係を有する他のシミュレータによるシミュレーションの現在の論理時間に、これらシミュレータ間の接続形態に応じた伝送遅延時間を加えた時間情報を含むメッセージ情報を上記他のシミュレータの同期機構部との間でやり取りすることを特徴とする請求項１記載の統合シミュレーションシステム。
【請求項３】
メッセージ配信部は、接続情報に基づき情報交換の対象として特定されたシミュレータ間でシミュレーション実行中にやり取りされる情報を中継してその情報通信量を算出し、当該情報通信量に応じて伝送遅延時間を求める伝送遅延計算部を備え、
上記接続情報に基づき情報交換の対象として特定されたシミュレータの同期機構部間でやり取りされるメッセージ情報を中継するにあたり、このメッセージ情報に含まれる論理時間に上記伝送遅延計算部が求めた伝送遅延時間を加えることを特徴とする請求項１記載の統合シミュレーションシステム。
【請求項４】
同期整合部は、自シミュレータの入出力デバイスを特定する情報及び上記入出力デバイスに入出力される情報を保持するデバイスオブジェクトを備え、
上記デバイスオブジェクトを介して、接続情報に基づき情報交換の対象として特定された他のシミュレータの同期整合部との間で互いのシミュレータの入出力デバイスに直接アクセスする情報をやり取りすることを特徴とする請求項１記載の統合シミュレーションシステム。
【請求項５】
シミュレーションを実行するシステム及びシミュレータを特定する情報をリスト形式で保持したリスト情報を備え、
上記システムの構成又はその状態を変更する際、この変更に係るシステム又はシミュレータの同期整合部が、上記変更後のシステム又はシミュレータを特定する情報を上記リスト情報に反映させた後に上記変更を実行し、変更後のリスト情報に基づく構成でシミュレーションを実行することを特徴とする請求項１記載の統合シミュレーションシステム。
【請求項６】
複数のシミュレータが情報交換しながら分散処理にてシミュレーションを実行する統合シミュレーションシステムとしてコンピュータを機能させるプログラムであって、
上記情報交換の対象となる各シミュレータ間の接続関係を定義する接続情報を格納する記憶部と、
上記シミュレータごとに対応して設けられ、上記シミュレータによるシミュレーションの論理時間を保持する論理時計と、上記論理時計の論理時間を停止又は進行させる同期機構部と、自シミュレータ、及び、接続情報に基づいて特定される情報交換の対象となる接続関係を有する他のシミュレータについて、これらによるシミュレーションの現在の論理時間及びシミュレーションを完了する周期を含む同期用情報を保持する同期用情報保持部とを有してなる同期整合部と、
上記記憶部から取得した接続情報に基づいて上記情報交換の対象として特定されたシミュレータの同期整合部間の情報のやり取りを中継するメッセージ配信部とを備え、
上記同期機構部は、上記メッセージ配信部を介して、上記記憶部から取得した接続情報に基づき上記複数のシミュレータから情報交換の対象として特定された他のシミュレータの同期機構部との間で上記論理時間に関するメッセージ情報をやり取りし、このメッセージ情報から特定される上記他のシミュレータの論理時間と上記論理時計に保持される自シミュレータの論理時間との比較結果に応じて上記論理時計の論理時間を停止又は進行させると共に、上記同期用情報保持部から取得した同期用情報に含まれる上記自シミュレータ及び上記他のシミュレータの現在の論理時間に上記自シュミレータによる１周期のシミュレーションの実行に要した論理時間をそれぞれ加算した時間に基づいて上記両シミュレータの論理時間の整合性を判定し、この判定結果に応じて論理時計の論理時間を停止又は進行させ、当該論理時間に関するメッセージ情報を上記両シミュレータの論理時間の整合がとれている場合に限り上記他のシミュレータの同期機構部に送信する統合シミュレーションシステムとしてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は複数台のコンピュータ上に互いに異なるシミュレータを構築し、当該複数のシミュレータ間のデータの送受信の制御、及び、上記各シミュレータ間の時間同期をとることでシミュレーションを実行する統合シミュレーションシステム及びこれをコンピュータに実現させるプログラムに関するものである。
【０００２】
【従来の技術】
コンピュータ上である事象をシミュレートするにあたり、より現実の事象に近いものとするためには、シミュレーションの精度をさらに高めることが必要となる。しかしながら、シミュレーション精度を向上させるに従って、コンピュータの処理量も増加する。このため、単一のコンピュータにシミュレーションを実行させるのでなく、複数のコンピュータを用いて分散処理させ、これらの処理結果を統合してシミュレーションを実行する統合シミュレーションが必要となってくる。つまり、複数のコンピュータを用いて分散処理することから、単位時間当りの処理量を向上させることができ、ひいては、シミュレーションの精度を高めることができるのである。
【０００３】
また、上述した統合シミュレーションシステムでは、分散する各シミュレータとして機能するコンピュータがシミュレーションを実行するにあたり、それぞれの処理結果の時間的な同期が正確にとれるように制御することが必要となる。このため、例えば特開２００１−３０６５３８公報に開示されるように、分散する各シミュレータとして機能するコンピュータの他に、各コンピュータによる処理の時間的な同期をとるための管理部が設けられている。
【０００４】
具体的な動作を説明する。
分散する各シミュレータは、自己の処理分を完了すると、シミュレーション上の時間を進行させる要求を上記管理部に出力する。管理部では、全てのシミュレータから時間の進行要求を受けると、これら全てのシミュレータにそれぞれ適切な時間の進行許諾を出力する。これによって、分散する複数のシミュレータによる処理の時間的な同期をとることができる。
【０００５】
また、上記システムでは、各シミュレータ間でデータの授受を行う場合、各シミュレータ間の接続仕様などで配信先が決定されるメッセージが利用されている。また、このメッセージは、上記シミュレータ間の接続仕様、各シミュレータが公開、購読する模擬オブジェクトやその属性値などのシミュレーション情報の種別情報を設定する設定部を有している。
【０００６】
【発明が解決しようとする課題】
従来の統合シミュレーションシステムは以上のように構成されているので、分散する各シミュレータによる処理の時間的な同期をとるにあたり、各シミュレータの処理能力やこれらが担当する処理量が異なっていても、管理部は全てのシミュレータから時間の進行要求を受けるまで時間の進行許諾を行わない。このため、例えば処理の最も遅いシミュレータが処理を完了して時間進行要求を出すまで、処理を終えた他の全てのシミュレータが、時間の進行許諾を待つ必要がある。この結果、シミュレータとして機能するのに十分な処理能力を有したコンピュータを使用していても、統合シミュレーション処理全体の進行が遅くなる可能性があるという課題があった。
【０００７】
また、従来の統合シミュレーションシステムでは、各シミュレータ間のデータの授受で使うメッセージに通信遅延を考慮した時間についての情報が定義されていない。このため、統合シミュレーションによってデータ通信遅延による不具合を検証することができないという課題があった。
【０００８】
この発明は上記のような課題を解決するためになされたもので、シミュレーションを実行する上で情報交換の対象となる接続関係を有するシミュレータとの間のみでシミュレーションの実行上の時間的な同期をとることで、全てのシミュレータによる時間の進行許諾を待つことなく同期をとるための通信量を低減することができ、効率的に統合したシミュレーションを実行することができる統合シミュレーションシステム及びプログラムを得ることを目的とする。
【０００９】
また、この発明は、シミュレータ間の接続形態に応じた伝送遅延時間やシミュレータ間の情報通信量に応じた伝送遅延時間を含む時間情報を元にして、シミュレーションの実行上の時間的な同期をとることで、シミュレータ間のデータ通信時に生じる伝送遅延時間による不具合を低減することができると共に、その検証もすることができる統合シミュレーションシステム及びプログラムを得ることを目的とする。
【００１１】
【課題を解決するための手段】
この発明に係る統合シミュレーションシステムは、複数のシミュレータが情報交換しながら分散処理にてシミュレーションを実行する統合シミュレーションシステムにおいて、上記情報交換の対象となる各シミュレータ間の接続関係を定義する接続情報を格納する記憶部と、上記シミュレータごとに対応して設けられ、上記シミュレータによるシミュレーションの論理時間を保持する論理時計と、上記論理時計の論理時間を停止又は進行させる同期機構部と、自シミュレータ、及び、接続情報に基づいて特定される情報交換の対象となる接続関係を有する他のシミュレータについて、これらによるシミュレーションの現在の論理時間及びシミュレーションを完了する周期を含む同期用情報を保持する同期用情報保持部とを有してなる同期整合部と、上記記憶部から取得した接続情報に基づいて上記情報交換の対象として特定されたシミュレータの同期整合部間の情報のやり取りを中継するメッセージ配信部とを備え、上記同期機構部は、上記メッセージ配信部を介して、上記記憶部から取得した接続情報に基づき上記複数のシミュレータから情報交換の対象として特定された他のシミュレータの同期機構部との間で上記論理時間に関するメッセージ情報をやり取りし、このメッセージ情報から特定される上記他のシミュレータの論理時間と上記論理時計に保持される自シミュレータの論理時間との比較結果に応じて上記論理時計の論理時間を停止又は進行させると共に、上記同期用情報保持部から取得した同期用情報に含まれる上記自シミュレータ及び上記他のシミュレータの現在の論理時間に上記自シュミレータによる１周期のシミュレーションの実行に要した論理時間をそれぞれ加算した時間に基づいて上記両シミュレータの論理時間の整合性を判定し、この判定結果に応じて論理時計の論理時間を停止又は進行させ、当該論理時間に関するメッセージ情報を上記両シミュレータの論理時間の整合がとれている場合に限り上記他のシミュレータの同期機構部に送信するものである。
【００１２】
この発明に係る統合シミュレーションシステムは、同期整合部が、自シミュレータとの間で情報交換の対象となる接続関係を有する他のシミュレータによるシミュレーションの現在の論理時間に、これらシミュレータ間の接続形態に応じた伝送遅延時間を加えた時間情報を含むメッセージ情報を上記他のシミュレータの同期機構部との間でやり取りするものである。
【００１３】
この発明に係る統合シミュレーションシステムは、メッセージ配信部が、接続情報に基づき情報交換の対象として特定されたシミュレータ間でシミュレーション実行中にやり取りされる情報を中継してその情報通信量を算出し、当該情報通信量に応じて伝送遅延時間を求める伝送遅延計算部を備え、上記接続情報に基づき情報交換の対象として特定されたシミュレータの同期機構部間でやり取りされるメッセージ情報を中継するにあたり、このメッセージ情報に含まれる論理時間に上記伝送遅延計算部が求めた伝送遅延時間を加えるものである。
【００１４】
この発明に係る統合シミュレーションシステムは、接続情報にシミュレータ間の接続形態に応じた伝送遅延時間に関する情報も含めて記憶部に保持し、同期整合部が、接続情報に基づいて、自シミュレータの入出力デバイスを特定する情報及び上記入出力デバイスに入出力される情報を保持するデバイスオブジェクトを備え、上記デバイスオブジェクトを介して、接続情報に基づき情報交換の対象として特定された他のシミュレータの同期整合部との間で互いのシミュレータの入出力デバイスに直接アクセスする情報をやり取りするものである。
【００１５】
この発明に係る統合シミュレーションシステムは、シミュレーションを実行するシステム及びシミュレータを特定する情報をリスト形式で保持したリスト情報を備え、上記システムの構成又はその状態を変更する際、この変更に係るシステム又はシミュレータの同期整合部が、上記変更後のシステム又はシミュレータを特定する情報を上記リスト情報に反映させた後に上記変更を実行し、変更後のリスト情報に基づく構成でシミュレーションを実行するものである。
【００１６】
この発明に係るプログラムは、複数のシミュレータが情報交換しながら分散処理にてシミュレーションを実行する統合シミュレーションシステムとしてコンピュータを機能させるプログラムであって、複数のシミュレータが情報交換しながら分散処理にてシミュレーションを実行する統合シミュレーションシステムにおいて、上記情報交換の対象となる各シミュレータ間の接続関係を定義する接続情報を格納する記憶部と、上記シミュレータごとに対応して設けられ、上記シミュレータによるシミュレーションの論理時間を保持する論理時計と、上記論理時計の論理時間を停止又は進行させる同期機構部と、自シミュレータ、及び、接続情報に基づいて特定される情報交換の対象となる接続関係を有する他のシミュレータについて、これらによるシミュレーションの現在の論理時間及びシミュレーションを完了する周期を含む同期用情報を保持する同期用情報保持部とを有してなる同期整合部と、上記記憶部から取得した接続情報に基づいて上記情報交換の対象として特定されたシミュレータの同期整合部間の情報のやり取りを中継するメッセージ配信部とを備え、上記同期機構部は、上記メッセージ配信部を介して、上記記憶部から取得した接続情報に基づき上記複数のシミュレータから情報交換の対象として特定された他のシミュレータの同期機構部との間で上記論理時間に関するメッセージ情報をやり取りし、このメッセージ情報から特定される上記他のシミュレータの論理時間と上記論理時計に保持される自シミュレータの論理時間との比較結果に応じて上記論理時計の論理時間を停止又は進行させると共に、上記同期用情報保持部から取得した同期用情報に含まれる上記自シミュレータ及び上記他のシミュレータの現在の論理時間に上記自シュミレータによる１周期のシミュレーションの実行に要した論理時間をそれぞれ加算した時間に基づいて上記両シミュレータの論理時間の整合性を判定し、この判定結果に応じて論理時計の論理時間を停止又は進行させ、当該論理時間に関するメッセージ情報を上記両シミュレータの論理時間の整合がとれている場合に限り上記他のシミュレータの同期機構部に送信する統合シミュレーションシステムとしてコンピュータを機能させるものである。
【００１７】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１による統合シミュレーションシステムの構成を示す図である。図において、１はある事象を模擬するシミュレーションプログラムを分散して処理する複数のシミュレータであって、コンピュータ上にシミュレータオブジェクト部３ごとに構築される。また、シミュレータ１間のデータ通信は、後述する仕様のメッセージによって行われる。２は分散する複数のシミュレータ１の同期管理、通信管理や分散管理を実行するシミュレーションサービス部である。このシミュレーションサービス部２は、シミュレータオブジェクト部３、メッセージ配信部４及び接続情報を格納する記憶部５から構成される。
【００１８】
３は各シミュレータ１に対応して設けられたシミュレータオブジェクト部（同期整合部）であって、シミュレータ１に関する同期管理及びデータ通信管理を実行する。また、シミュレータオブジェクト部３は、シミュレータ１の現在のシミュレーション上の論理時間を管理している。このシミュレータオブジェクト部３は、同期機構部６、論理時計７及びメッセージキュー８としてコンピュータを機能させるプログラムによって具現化される。
【００１９】
４はメッセージ配信部で、シミュレータオブジェクト部３から送信されたメッセージを配信先のシミュレータオブジェクト部３に配信する。このメッセージ配信部４も、その機能をコンピュータに持たせるプログラムによって具現化される。５は接続情報を格納する記憶部であって、シミュレーションサービス部２として機能するコンピュータに搭載されたハードディスク装置や、ＣＤ−ＲＯＭなどの記憶媒体を用いるディスク装置によって実現される。
【００２０】
また、接続情報とは、互いに接続されてデータの授受を行うシミュレータ１間の関係を記述した情報である。例えば、接続情報には、シミュレータ１間でデータ通信を行う場合における、データを送信するシミュレータ１とデータを受信するシミュレータ１との関係が記述される。さらに、接続情報には、シミュレータ１間で通信接続する際における通信媒体に応じたデータ伝送遅延時間の情報も記述される。
【００２１】
従って、シミュレータオブジェクト部３やメッセージ配信部４は、上記接続情報を参照することにより、当該統合シミュレーションシステム内のどのシミュレータ１がどのシミュレータ１とデータ通信可能に接続しているかを把握することができる。また、シミュレータ１間でのデータ通信におけるデータの流れ（方向）や、データ通信を行うときのデータ伝送遅延時間も把握することができる。ここで、上記接続情報に保持される「通信媒体に応じたデータ伝送遅延時間」に関する情報は、固定値であってもよいし、確率分布として与えられてもよい。
【００２２】
６は同期機構部（同期整合部）であって、接続情報に基づいて自己が管理するシミュレータ１とそれに接続する他のシミュレータ１との論理時間に関する情報を互いにやり取りして自己が管理するシミュレータ１の論理時間の更新を判定する。７は論理時計（同期整合部）で、シミュレータオブジェクト部の論理時間を保持する時計である。この論理時計７に保持される論理時間は、同期機構部６によって時間の進行が許可されたときにシミュレータオブジェクト部３によってシミュレータ１の実行周期分だけ進められる。
【００２３】
このように、論理時計７を用いて論理時間を個別に管理して、各シミュレータ１について必要最低限の同期さえとれば、時間的な整合性が保証される。これにより、各シミュレータ１が独立してシミュレーションを実行することができる。また、後述するように、配信時間が記述されたメッセージの当該配信時間にて到達したか否かの判定には、論理時計７に保持された論理時間が使用される。
【００２４】
８はメッセージキュー（同期用情報保持部）であって、シミュレータオブジェクト部３から受信したメッセージを一時的に保持する。また、メッセージキュー８に保持されるメッセージには、後述するように配信時間が記述されている。あるシミュレータオブジェクト部３が管理するシミュレータ１に、他のシミュレータオブジェクト部３から受信したメッセージを送出する場合、当該シミュレータオブジェクト部３は、自己が管理するシミュレータ１の現在の論理時間以前に相当する上記配信時間を記述するメッセージをメッセージキュー８から読み出して送出する。
【００２５】
図２は実施の形態１による統合シミュレーションシステムで用いられるメッセージの構成を示す図である。図に示すように、メッセージ（メッセージ情報）は、ヘッダ部とデータ部から構成される。また、ヘッダ部には、「送信元」、「配信先」、「識別子」、「タイプ」、「送信時間」、「配信時間」及び「優先度」のようなメッセージを配信するのに必要となる情報が記述される。これらの情報は、各シミュレータ１やシミュレータオブジェクト部３を特定するための特有な識別子に相当する。
【００２６】
具体的に説明すると、「送信元」は、メッセージの送信元のシミュレータ１を特定するための識別子である。また、「配信先」は、メッセージの配信先のシミュレータ１を特定するための識別子である。「識別子」は、メッセージを特定するための識別子である。「タイプ」は、メッセージの種類を特定する識別子である。ここで、メッセージの種類としては、通常のデータ通信に関するメッセージの他に、デバイスを扱うメッセージ、シミュレーションサービス部２がシミュレータ１の管理のために内部的に使用するメッセージなどがある。
【００２７】
「送信時間」は、メッセージが送信された時間を特定する情報である。この時間は、メッセージ送信元のシミュレータの論理時間に基づく時間に相当する。
また、「配信時間」は、メッセージが配信されるべき時間を特定する情報である。この時間は、「送信時間」に通信媒体に応じた遅延時間を加えた時間に相当する。
【００２８】
メッセージ配信部４によってシミュレータオブジェクト部３に配信されたメッセージは、配信先のシミュレータ１の論理時間が上記配信時間に到達した時点で実際にシミュレータ１に送信される。但し、送信して即時に配信する必要がある特別なメッセージの場合では、上記配信時間を０に設定してもよい。このようにメッセージに配信時間を持たせることにより、通信遅延時間を考慮したデータ通信シミュレーションが可能になる。また、メッセージの時間的な整合性を保証することもできる。
【００２９】
「優先度」は、メッセージを処理する順位を決定するための値である。当該「優先度」が高いほど先に処理される。例えば、強制終了などの管理用のメッセージでは、「優先度」を最高にして、他のメッセージと区別することができる。
【００３０】
一方、データ部には、実際にシミュレータ１間で授受するデータが記述される。このデータ部に記述する内容には、サイズに制限を設けてもよいし、設けなくてもよい。また、データ部に記述するデータの形式としては、テキスト形式でもよいし、バイナリ形式でもよい。
【００３１】
このように、シミュレータオブジェクト部３を介してシミュレータ１間で行われるデータ通信に用いられるメッセージは、時間の概念を持ち、シミュレーション上の伝送遅延も含めた時間的な整合性を保証して相手のシミュレータ１に配信される。
【００３２】
図３は実施の形態１の統合シミュレーションシステムにおけるメッセージ配信部の他の構成を示す図である。図において、４ａはメッセージ配信部であって、接続情報に記述されたシミュレータ１間の通信媒体に応じたデータ伝送遅延時間を算出するデータ伝送遅延計算部（伝送遅延計算部）９を有する。このデータ伝送遅延計算部９は、実際にシミュレーションを実行しているときのシミュレータ１間におけるデータ通信量に応じてデータ伝送遅延時間を算出する計算式が設定されている。なお、図１と同一構成要素には同一符号を付して重複する説明を省略する。
【００３３】
図４は図１中のメッセージ配信部の配置形態を説明する図であり、（ａ）はローカルマシンにメッセージ配信部を配置した形態を示し、（ｂ）はリモートマシンにメッセージ配信部を配置した形態を示している。図において、１０はローカルマシンであって、メッセージ配信部４（若しくは４ａ）、複数のシミュレータオブジェクト部３、及び接続情報を格納する記憶部５が構築された単一のコンピュータによって具現化される。１０−１，１０−２はメッセージ配信部４（若しくは４ａ）、シミュレータオブジェクト部３及び接続情報を格納する記憶部５がそれぞれ構築されたリモートマシンであって、互いにネットワーク１１によってデータ通信可能に接続された複数のコンピュータによって具現化される。なお、ネットワークの形態としては、インターネットであっても専用線であってもよく、それらが混在していてもよい。
【００３４】
メッセージ配信部４，４ａは、シミュレータオブジェクト部３からメッセージを受信すると、記憶部５からシミュレータ１の識別子と起動マシン名が記述された接続情報を読み出して参照し、当該メッセージに記述された配信先を検索する。また、メッセージ配信部４，４ａは、接続情報からデータ伝送遅延時間を取得し、受信したメッセージの「送信時間」に設定された時間に当該データ伝送遅延時間を加えた時間を、当該メッセージの「配信時間」として設定する。
このあと、（ａ）に示すように、配信先のシミュレータ１がローカルマシン１０内に存在する場合、メッセージ配信部４，４ａは、その配信先のシミュレータ１を管理するシミュレータオブジェクト部３のメッセージキュー８にメッセージを追加する。
【００３５】
また、（ｂ）に示すように、送信先のシミュレータ１がリモートマシン１０−１，１０−２内に存在する場合、これに対応するメッセージ配信部４，４ａは、配信先のシミュレータ１が存在するマシン内のメッセージ配信部４，４ａにメッセージを送信し、そのメッセージの配信を依頼する。リモートマシン１０−１，１０−２からメッセージを受信すると、メッセージ配信部４，４ａは、接続情報のうち同様な構成情報を参照してメッセージに記述された配信先を検索し、配信先のシミュレータ１を管理するシミュレータオブジェクト部３のメッセージキュー８にメッセージを追加する。
【００３６】
このとき、接続情報にデータ伝送遅延時間を求める計算式が定義されていれば、図３に示すメッセージ配信部４ａ内のデータ伝送遅延計算部９は、シミュレータオブジェクト部３から受信したメッセージからデータ部分のサイズを取得し、そのサイズと接続情報に定義された計算式からデータ伝送遅延時間を算出する。そして、メッセージ配信部４ａは、受信したメッセージの「送信時間」に設定された時間に、上記データ伝送遅延時間を加えた時間を「配信時間」として設定する。
【００３７】
図５は図１中の同期機構部によるメッセージ送信処理を説明する図であり、（ａ）は送信側のシミュレータＡが受信側のシミュレータＢよりも現在の論理時間が進んでいる場合を示し、（ｂ）は受信側のシミュレータＢが送信側のシミュレータＡよりも現在の論理時間が進んでいる場合を示している。この図は２つのシミュレータＡ，Ｂ間でのメッセージ通信の例を示している。（ａ），（ｂ）いずれもシミュレータＡからシミュレータＢにメッセージを送信し、そのときの「配信時間」が３２０であることを想定している。
【００３８】
（ａ）に示す例では、受信側のシミュレータＢの論理時間が次の周期の３５０になった時点で、メッセージを受け取れるので問題はない。一方、（ｂ）に示すように、受信側のシミュレータＢが送信側のシミュレータＡよりも現在の論理時間が進んでいると、例えばシミュレータＢの論理時間が３５０となって、既にメッセージの「配信時間」３２０を過ぎている。このため、シミュレータＡは、過去のメッセージを受信することになり、時間的な不整合が生じる。この例からもわかるようにメッセージの受信側のシミュレータＢは、送信側のシミュレータＡよりも時間的に先に進むと問題が生じる可能性がある。
【００３９】
そこで、同期機構部６は、シミュレータオブジェクト部３が管理するシミュレータ１とそれに接続するメッセージの送信元のシミュレータ１との論理時間を比較して時間的な不整合が生じないようにシミュレーション実行に関して同期をとる。つまり、シミュレータ１から１周期のシミュレーション実行の“完了”メッセージがシミュレータオブジェクト部３に送られると、同期機構部６は、メッセージ送信元のシミュレータ１の論理時間よりも進み過ぎないように制御する。
【００４０】
ここで、具体的な論理時間の調整処理について説明する。
先ず、各シミュレータ１は、自己の論理時間を更新するにあたり、必要に応じてその論理時間をメッセージを用いてデータ送信先のシミュレータ１に通知する。これにより、各シミュレータオブジェクト部３は、データ送信元のシミュレータ１の現在の論理時間を把握することができる。このデータ送信元の論理時間に基づいて、シミュレータオブジェクト部３内の同期機構部６は、その状態（オープン又はクローズ）を切り換える。
【００４１】
上述した同期機構部６の状態の切り換えは、下記式（１）に従う。
Ｔ＋Δｔ≦Ｔｉ＋Δｔｉ（ｉ＝１，２，・・・，ｎ）      ・・・（１）
但し、あるシミュレータ１の論理時間をＴ、周期をΔｔとし、これに対してメッセージ送信元となるｎ個のシミュレータ１をそれぞれＳ１，Ｓ２，・・・，Ｓｎとし、これらシミュレータ１の論理時間をそれぞれＴ１，Ｔ２，・・・，Ｔｎ、周期をそれぞれΔｔ１，Δｔ２，・・・，Δｔｎとする。ここで、同期機構部６は、上記式（１）を全てのｉに対して満たす場合はオープン状態をとなり、満たさない場合はクローズ状態となる。
【００４２】
シミュレータ１がメッセージを受信してから１つのシミュレーション実行が完了すると、当該シミュレータ１は、“完了”メッセージを対応するシミュレータオブジェクト部３に送信する。続いて、シミュレータ１から“完了”メッセージを受けたシミュレータオブジェクト部３において、同期機構部６がオープン状態になると、当該シミュレーションオブジェクト部３内の論理時計７が１周期分だけ進められる。
【００４３】
一方、他のシミュレーションオブジェクト部３が管理するシミュレータ１から“開始”メッセージが送られると、シミュレーションオブジェクト部３は、メッセージキュー８から「配信時間」に到達した受信メッセージを読み出し、自己が管理するシミュレータ１に送信する。このあと、当該メッセージを受信したシミュレータ１は、１周期のシミュレーション実行を開始する。これによって、時間的な整合性を保って適切な時間にメッセージを配信することができる。
【００４４】
次に動作について説明する。
先ず、シミュレータ１は、起動時にシミュレータオブジェクト部３を起動する。シミュレータオブジェクト部３は、起動すると、自己が管理するシミュレータ１に“開始”メッセージを送出する。シミュレータオブジェクト部３からの“開始”メッセージを受けると、シミュレータ１は、メッセージキュー８に格納されているメッセージの読み出しを、シミュレータオブジェクト部３に要求する。
【００４５】
シミュレータオブジェクト部３では、上記読み出し要求を受けると、自己が管理するシミュレータ１の現在の論理時間（つまり、現在、論理時計７に設定されている時間）以前に相当する「配信時間」を記述するメッセージをメッセージキュー８から読み出して上記シミュレータ１に送出する。シミュレータオブジェクト部３からのメッセージを受信すると、シミュレータ１は、１周期のシミュレーションを実行する。
【００４６】
上記シミュレータ１は、１周期のシミュレーション実行を完了すると、シミュレータオブジェクト部３に“完了”メッセージを送出する。シミュレータオブジェクト部３では、“完了”メッセージを受けると、同期をとる必要がある（自己が管理するシミュレータ１にメッセージを送信してくる可能性のある）シミュレータ１の現在の論理時間を確認する。
【００４７】
このあと、シミュレータオブジェクト部３は、時間を進めても時間的な矛盾が生じなければ、自己の論理時計７の現在の論理時間を進めた後、当該シミュレータ１に“開始”メッセージを送出する。これにより、上述した内容と同様な処理により、時間的な整合性を保ちながら複数のシミュレータ１にてシミュレーションを実行することができる。
【００４８】
次に本発明におけるメッセージ通信を詳細に説明する。
図６は図１中の同期機構部によるメッセージ通信処理のシーケンスを示す図であり、この図に沿ってシミュレータＡ，Ｂ間でのメッセージ通信の時間的な同期をとるための処理を詳細に説明する。また、この図に示す例では、シミュレーション実行の周期が１００のシミュレータＡと、シミュレーション実行の周期が７０のシミュレータＢとの間だけで互いにメッセージの送受信を行う場合を考えている。さらに、説明の簡単のため、シミュレータＡ，Ｂ間での時間的な同期をとるためのメッセージのみを図示している。この同期通信用のメッセージは内部メッセージであり、データ伝送遅延時間は０である。
【００４９】
先ず、シミュレータＡは、１周期で処理すべきシミュレーションが完了すると、シミュレータＢにメッセージ（配信時間＝６００）を送信する。シミュレータＢを管理するシミュレータオブジェクト部３は、上記メッセージによってシミュレータＡの論理時間が６００に到達したことを認識する。
【００５０】
このあと、シミュレータＢを管理するシミュレータオブジェクト部３は、当該シミュレータＢによって実行されていたシミュレーションが完了すると、シミュレータＡと時間的な整合がとれる論理時間（配信時間６００より進んだ時間）に時間を進めることができる。ここで、シミュレータＢによるシミュレーション実行が完了した際、その論理時間が例えば６３０であった場合を考えると、シミュレータＢを管理するシミュレータオブジェクト部３は、自己の論理時計７を６３０に進めると共に、これを配信時間とするメッセージをシミュレータＡに送信する。
【００５１】
シミュレータＡを管理するシミュレータオブジェクト部３は、シミュレータＢからのメッセージによってその論理時間が６３０に到達したことを認識する。このあと、シミュレータオブジェクト部３は、自己が管理するシミュレータＡによる１周期のシミュレーション実行が完了すると、論理時間６００に１周期分の時間１００が加わって実際は論理時間７００となっている。しかしながら、シミュレータＡを管理するシミュレータオブジェクト部３は、同期通信用のメッセージを配信すべきシミュレータＢの論理時間が、先ほどのメッセージから６３０であることを認識しているので、論理時間を７００とすることができない。
【００５２】
つまり、上記式（１）によって自己の論理時間（論理時間６００＋１周期分の時間１００）＝７００）＞（メッセージ送信元であるシミュレータＢの論理時間６３０）である。これにより、シミュレータＡを管理するシミュレータオブジェクト部３は、自己の同期機構部６がオープン状態となる条件を満たしていないことから、自己の論理時計７を７００に進めることが抑制される（論理時計７を７００に進められない）。そこで、シミュレータＡを管理するシミュレータオブジェクト部３は、配信時間を７００としたメッセージをシミュレータＢ側に送出する。
【００５３】
一方、シミュレータＢ側では、上記メッセージによってシミュレータＡが論理時間７００であることを認識する。ここで、シミュレータＢによって１周期分のシミュレーション実行が完了すると、当該シミュレータＢを管理するシミュレータオブジェクト部３は、自己の論理時間を７００に進める。
【００５４】
つまり、上記式（１）によって、｛自己の論理時間（論理時間６３０＋１周期分の時間７０）＝７００｝＝｛メッセージ送信元であるシミュレータＢの論理時間７００｝である。これにより、シミュレータＢを管理するシミュレータオブジェクト部３は、自己の同期機構部６がオープン状態となる条件を満たしていることから、自己の論理時計７を７００に進める。このあと、シミュレータＢを管理するシミュレータオブジェクト部３は、配信時間を７００に設定したメッセージをシミュレータＡ側に送信する。
【００５５】
また、論理時間を進行が抑制されていたシミュレータＡ側においても、シミュレータＢ側から、配信時間が７００に設定された上記メッセージを受けることにより、同期機構部６がオープン状態になる条件が満たされる。従って、シミュレータＡを管理するシミュレータオブジェクト部３は、当該シミュレータＡの論理時間を７００に進めることができる。このようなメッセージの送受信を繰り返すことにより、同期をとりながら各シミュレータＡ，Ｂのシミュレーションを進めることができる。
【００５６】
なお、図６に示す例では、いずれのシミュレータＡ，Ｂも１周期のシミュレーション実行を完了するごとに同期をとるため、接続相手のシミュレータ１に対して自己の論理時間を示す情報をメッセージとして送信する必要がある。このようなシーケンスの場合、シミュレータＡ，Ｂ間で無駄な同期通信用メッセージが送信される可能性がある。
【００５７】
例えば、図６に示す場合、シミュレータＢが論理時間６００でのシミュレーションの実行を完了した際、シミュレータＢを管理するシミュレータオブジェクト部３が、配信時間を６３０に設定したメッセージをシミュレータＡに送信している。しかしながら、このメッセージを送信してもシミュレータＡ側の同期機構部６は、上記式（１）の条件を満たさず、オープン状態にならない。この場合、配信時間６３０のメッセージは無駄であり、シミュレータＢ側は、配信時間を７００に設定したメッセージさえ送ればよい。
【００５８】
このような無駄なメッセージによる同期通信量は、接続相手のシミュレータのシミュレーション実行周期の差が大きく異なるほど多くなる。そこで、シミュレータオブジェクト部３が接続先のシミュレータの現在の論理時間とそのシミュレーション実行周期を保持しておき後述する処理を実行することで、上述したような無駄な同期メッセージを送信する必要がなくなる。
【００５９】
先ず、同期通信用メッセージを受信するシミュレータオブジェクト部３の現在の論理時間及びこれが管理するシミュレータのシミュレーション実行周期を、それぞれＴｒ、Δｔｒとする。また、同期通信用メッセージを送信するシミュレータオブジェクト部３が管理するシミュレータのシミュレーション実行周期をΔｔｓ、１周期Δｔｓ分のシミュレーション実行を完了した後、当該周期分だけ更新した論理時間をＴｓ’とする。これにより、下記式（２）が得られる。同期通信用メッセージを送信するシミュレータオブジェクト部３は、下記式（２）の条件を満たす場合だけ同期通信用メッセージを送信すればよい。
Ｔｓ’≦Ｔｒ＋Δｔｒ＜Ｔｓ’＋Δｔｓ      ・・・（２）
【００６０】
ここで、図６の場合を例に挙げて説明すると、シミュレータＡの現在の論理時間がＴｒ＝６００、シミュレータＢが１周期のシミュレーション実行を完了して更新した後の論理時間をＴｓ’＝６３０とすると、（Ｔｓ’＝６３０）＜｛（Ｔｒ＝６００）＋（Δｔｒ＝１００）＝７００｝＝｛（Ｔｓ’＝６３０）＋（Δｔｓ＝７０）＝７００｝となって、上記式（２）の条件式が成り立たない。従って、シミュレータＢ側では、この時点で同期通信用メッセージをシミュレータＡ側に送信する必要はない。
【００６１】
一方、シミュレータＢが次のシミュレーション実行を完了してＴｓ’＝７００になると、（Ｔｓ’＝７００）＝｛（Ｔｒ＝６００）＋（Δｔｒ＝１００）＝７００｝＜｛（Ｔｓ’＝７００）＋（Δｔｓ＝７０）＝７７０｝となって、上記式（２）の条件を満たすので、この時点で同期メッセージを送信すればよい。
【００６２】
以上のように、この実施の形態１によれば、複数のシミュレータ１が情報交換しながら統合してシミュレーションを実行するにあたり、各シミュレータ１間の接続関係を定義する接続情報に基づいて、シミュレーションを実行する上で情報交換の対象となる接続関係を有するシミュレータ１を認識すると共に、同期機構部６や論理時計７によって、シミュレータ１間でシミュレーション上の現在時間に伝送遅延時間を加えた時間情報を含むメッセージを用いて、上記認識したシミュレータ１との間でのシミュレーション実行上の時間的な同期をとるので、接続情報を参照してシミュレーション上の時間的な同期をとることが必要なシミュレータだけの間で同期をとることができ、データをやり取りしない無関係なシミュレータの遅れによってシミュレーション実行の進行が妨げられることを避けることができる。また、従来のように、全てのシミュレータ同期をとるためのメッセージ通信量を削減することができる。
【００６３】
実施の形態２．
ＦＡ機器はそれぞれ入出力デバイスを持っている場合が多く、機器間でデータ通信を行う場合、それらのデバイス間を接続することによってデータ通信を実現することが多い。シミュレータでも同様に、他のシミュレータとデータ通信を行う場合、シミュレータのデバイス間を接続することによってデータ通信を実現することができる。
【００６４】
例えば、リレー、タイマ、カウンタを組み合わせて構成する論理回路（ハードワイヤードロジック）の信号処理部（論理演算部・制御部）をマイクロコンピュータに代行させるシーケンサ（プログラマブルコントローラ）を用いる場合を考える。シーケンサは、その入出力接点を他の機器の入出力デバイスと接続することで、当該機器との間でのデータ通信やその制御することができる。そこで、シミュレータを構築するコンピュータを上記シーケンサの１つの機器として、その入出力デバイスと入出力接点を接続する。このようにして、シミュレータを構築するコンピュータの入出力デバイスに直接メッセージの送受信を行うことで、シミュレータ自体がメッセージの作成や送受信を行う必要がなく、より扱いやすいデバイスに対する読み書きによって他のシミュレータとのデータ通信を行うことができる。
【００６５】
このように、シミュレータがデバイスレベルでデータ通信を行うためには、シミュレーションサービス部にデバイス層を設ければよい。つまり、デバイス層をシミュレーションサービス部に設けることにより、シミュレータがメッセージを意識することなくデバイスレベルでデータにアクセスすることができる。
【００６６】
図７はこの発明の実施の形態２による統合シミュレーションシステムのシミュレーションサービス部の構成を示す図である。図において、２Ａは実施の形態２によるシミュレーションサービス部であって、メッセージ層１２及びデバイス層１３に分けたシミュレーションオブジェクト部３ａを有する。３ａはメッセージ層１２及びデバイス層１３を有するシミュレーションオブジェクト部で、自己が管理するシミュレータ１が使用するデバイスに対して、デバイスオブジェクト（同期整合部）１４，１５をデバイス層１３に作成する。また、このシミュレータオブジェクト部３ａは、図示を省略しているが上記実施の形態１と同様に同期機構部６、論理時計７及びメッセージキュー８を有している。
【００６７】
ここで、デバイスオブジェクト１４，１５は、シミュレータ１のデバイスに対応し、そのデバイスに関する情報を保持する。具体的に説明すると、デバイス層１３内の入力デバイスに格納されるデバイスオブジェクト１４は、当該デバイス層１３を有するシミュレータオブジェクト部３ａが管理するシミュレータ１の各デバイスを特定する情報及びこれに入力すべき情報（デバイスに読み出されるべき情報）が一時記憶される。また、デバイス層１３内の出力デバイスに格納されるデバイスオブジェクト１５は、当該デバイス層１３を有するシミュレータオブジェクト部３ａが管理するシミュレータ１の各デバイスを特定する情報及びこれから出力された情報（デバイスから書き込まれた情報）が一時記憶される。
【００６８】
このように、シミュレータ１は、自身を管理するシミュレータオブジェクト部３ａ上のデバイスオブジェクト１４，１５に対してデバイス値の読み書きを行うことができる。また、シミュレータオブジェクト部３ａは、自身のデバイスと他のシミュレータオブジェクト部３ａが管理するシミュレータ１のデバイスとの接続関係を記述したデバイスマップを参照してデバイスオブジェクトとメッセージの変換を行う。このデバイスマップは、上記実施の形態１で説明した接続情報と共に記憶部５ａに格納される。当該記憶部５ａは、シミュレーションサービス部２Ａとして機能するコンピュータに搭載されたハードディスク装置や、ＣＤ−ＲＯＭなどの記憶媒体を用いるディスク装置によって実現される。
【００６９】
次に動作について説明する。
シミュレータオブジェクト部３ａは、自己が管理するシミュレータ１から“完了”メッセージを受信すると、上記実施の形態１と同様に同期機構部６がオープン状態になった時点で、デバイス層１３内の入出力デバイス中のデバイスオブジェクト１４，１５に格納されたデバイス値を参照して、シミュレータ１のデバイスのうちデバイス値に変化があったものを抽出する。
【００７０】
このあと、シミュレータオブジェクト部３ａは、記憶部５ａからデバイスマップを読み出して参照し、デバイス値に変化があるものとして抽出したデバイスの接続先（シミュレータオブジェクト部３ａ及びデバイス）を検索し、当該デバイス値を書き込むべきデバイスを特定するデバイス名及びそのデバイス値を記述したメッセージを作成し送信する。ここで作成されるメッセージの種類は、デバイス間のデータ通信を扱うデバイスタイプである。
【００７１】
シミュレータオブジェクト部３ａは、上述したデバイスタイプのメッセージを受けると、これをメッセージキュー８に格納する。続いて、当該デバイスタイプの受信メッセージが配信時間に到達すると、シミュレータオブジェクト部３ａは、当該メッセージの内容を解釈してデバイス名及びこれに特定されるデバイスに書き込むべきデバイス値を読み出す。このあと、シミュレータオブジェクト部３ａは、自己が管理するシミュレータ１のデバイスのうちから上記デバイス名に対応するデバイスを抽出し、これに上記デバイス値を設定・更新する。
【００７２】
以上のように、この実施の形態２によれば、シミュレータオブジェクト部３ａ内にデバイス層を設けることで、シミュレータ１間における情報通信を中継するにあたり、シミュレータ１の入出力デバイスに直接アクセスするデバイスレベルで情報を送受信するので、シミュレータ１からはメッセージを意識する必要がなく、扱いやすいデバイスに対して読み書きを行うだけで他のシミュレータ１と通信することができる。
【００７３】
実施の形態３．
この実施の形態３は、ネットワークで接続された複数のコンピュータに分散させてシミュレータを構築して統合シミュレーションを実行するにあたり、分散するシミュレータに対しても同期管理機能および通信管理機能を使用できるように、これらを管理する機構を設けたものである。
【００７４】
図８はこの発明の実施の形態３による統合シミュレーションシステムの構成を示す図であり、この図ではネットワークで接続された複数のコンピュータに分散させてシミュレータを構成した場合を示している。図において、２ａは分散するシミュレータ１などにより構築される分散環境全体の構成及びその状態（起動・停止）を管理するマスタとして機能するシミュレーションサービス部であって、シミュレーションオブジェクト部３の他に、シミュレーションサービス部リスト１６及びシミュレータリスト１７を有する。また、このシミュレーションサービス部２ａは、上記実施の形態１と同様にメッセージ配信部４及び接続情報を格納する記憶部５を有しているが図示を省略している。
【００７５】
２ｂはマスタとして機能するシミュレーションサービス部２ａに管理される非マスタのシミュレーションサービス部であって、シミュレーションオブジェクト部３の他に、シミュレータリスト１７を有する。また、このシミュレーションサービス部２ｂも、上記実施の形態１と同様にメッセージ配信部４及び接続情報を格納する記憶部５を有しているが図示を省略している。１０ａ−１，１０ａ−２はネットワーク１１でデータ通信可能に接続されたコンピュータで、シミュレータ１の他に、それぞれシミュレーションサービス部２ａ，２ｂが構築される。
【００７６】
１６はマスタとして機能するシミュレーションサービス部２ａに構築されたシミュレーションサービス部リストであって、分散環境内の全てのシミュレーションサービス部２ｂをそれぞれ特定する情報をリスト形式で保持する。このシミュレーションサービス部リスト１６は、マスタとして機能するシミュレーションサービス部２ａが分散環境でのシミュレーションサービス部２ｂの構成を管理するために使用するリストである。また、シミュレーションサービス部リスト１６には、各シミュレーションサービス部２ｂを特定する情報として、例えばこれを起動しているコンピュータのマシン名などが記述される。
【００７７】
１７はシミュレータリストで、ネットワーク１１上に存在するコンピュータにそれぞれ構築されている全てのシミュレータをそれぞれ特定する情報をリスト形式で保持する。このシミュレータリスト１７は、各シミュレーションサービス部２ａ，２ｂが分散環境内のシミュレータ１の構成を特定するために使用するリストである。また、シミュレータリスト１７には、各シミュレータ１の「識別子」、シミュレーション実行の「周期」、これが構築されて起動するコンピュータの「マシン名」がそれぞれ記述される。ここで、上記実施の形態１で説明したような、同期通信用メッセージを送信するか否かの判定に必要となる送信先のシミュレータ１のシミュレーション実行の周期は、当該シミュレータリスト１７を参照して取得することができる。
【００７８】
次に動作について説明する。
先ず、分散環境内に新たなシミュレータ１を追加する場合を説明する。
マスタとして機能するシミュレーションサービス部２ａに既に登録されているシミュレータ１を起動する場合、当該シミュレータ１を有するコンピュータ１０ａ−２を立ち上げ、上記シミュレータ１を管理するシミュレーションサービス部２ｂを起動する。このあと、シミュレーションサービス部２ｂは、ネットワーク１１を介して上記シミュレーションサービス部２ａに自己が起動した旨を通知する。
【００７９】
シミュレーションサービス部２ａでは、新たに起動したシミュレータ１を管理するシミュレーションサービス部２ｂからの通知を受けると、当該シミュレーションサービス部２ｂが構築されたコンピュータを特定する情報（マシン名など）をシミュレーションサービス部リスト１６に追加する。
【００８０】
次に新たなシミュレータ１を追加する場合について説明する。
先ず、分散環境内のシミュレーションサービス部２ｂを有するいずれかのコンピュータ上に新たに追加すべきシミュレータ１を構築し起動させる。このとき、当該シミュレータ１は、上記シミュレーションサービス部２ｂに対して自己が起動した旨及びそのシミュレーション実行周期を通知する。シミュレーションサービス部２ｂでは、上記通知を受けると、ネットワーク１１を介してマスタとして機能するシミュレーションサービス部２ａにその通知内容を送信する。
【００８１】
シミュレーションサービス部２ａは、上記通知を受けると、シミュレーションサービス部リスト１６を読み出して参照し、これに登録されている全てのシミュレーションサービス部２ｂの分散環境内の各位置を特定する。このあと、シミュレーションサービス部２ａは、上述のように特定した情報を用いて、シミュレーションサービス部リスト１６に登録されている全てのシミュレーションサービス部２ｂに対して、新たなシミュレータ１が追加された旨及びそのシミュレーション実行周期を通知する。
【００８２】
分散環境内の各シミュレーションサービス部２ｂでは、受信した上記通知の内容から上記シミュレータ１を特定する情報及びそのシミュレーション実行周期を読み出して自己のシミュレータリスト１７に追加する。
【００８３】
続いて、シミュレーション実行中に起動したシミュレータ１や新たに追加したシミュレータ１を統合シミュレーションに参加させる場合について説明する。
この場合、シミュレーション実行中に起動したシミュレータ１や新たに追加したシミュレータ１を管理するシミュレータオブジェクト部２ｂは、起動時に記憶部５から接続情報を読み出して参照し、自己とデータ通信可能に接続する他のシミュレータ１を検索する。このあと、シミュレータオブジェクト部２ｂは、検索結果として抽出されたシミュレータ１を管理するシミュレータオブジェクト部２ｂにそれぞれアクセスして現在の論理時間を問い合わせる。
【００８４】
これにより、シミュレータオブジェクト部２ｂは、自己が管理するシミュレータ１が、データを送信する可能性があるシミュレータ１のうち現在の論理時間が最も早いもの（以下、論理時間Ｔｒｅとする）を、自己が管理するシミュレータ１の現在の論理時間として設定し、当該論理時間からシミュレーション実行を開始する。
【００８５】
ここで、シミュレーション実行中に起動したシミュレータ１や新たに追加したシミュレータ１は、データを受信する可能性があるシミュレータ１の中で現在の論理時間が最も遅いものをＴｓｌとして、下記式（３）の条件に合致する場合にシミュレーション実行を開始する。
Ｔｒｅ≦Ｔｓｌ      ・・・（３）
【００８６】
つまり、上記式（３）を満たす場合、シミュレーション実行中に起動したシミュレータ１や新たに追加したシミュレータ１は、シミュレーション実行を開始してよい。一方、上記式（３）の条件を満たさない場合、この時点で上記シミュレータ１によるシミュレーション実行を開始すると、他のシミュレータ１から過去のメッセージを受信して時間的な整合性が取れなくなる可能性がある。
【００８７】
そこで、上記シミュレータ１は、データを送信する可能性がある全てのシミュレータ１の論理時間がＴｒｅを越えないように抑制しながら、且つこれらが論理時間Ｔｒｅを越えるのを待って、上記式（３）の条件を満たす状態になってからシミュレーション実行を開始する。これにより、本実施の形態３による統合シミュレーションシステムにおいて、シミュレーション実行中に新たにシミュレータ１を参加させてもその時間的な整合性を保つことができる。
【００８８】
次に分散環境からシミュレータ１を削除する場合について説明する。
統合シミュレーション実行中にシミュレータ１を停止する場合、当該シミュレータ１は、自己を管理するシミュレーションサービス部２ａ，２ｂに対して、自己が停止される旨を通知する。この通知を受けたシミュレーションサービス部２ｂは、ネットワーク１１を介してマスタとして機能するシミュレーションサービス部２ａに上記シミュレータ１が停止する旨を通知する。
【００８９】
シミュレーションサービス部２ａでは、上記通知を受けると、シミュレーションサービス部リスト１６を読み出して、これに登録されている全てのシミュレーションサービス部２ｂがそれぞれ構築されたコンピュータを特定する「マシン名」を抽出する。このあと、シミュレーションサービス部２ａは、上述のように抽出した情報を用いて、シミュレーションサービス部リスト１６に登録されている全てのシミュレーションサービス部２ｂに対して、上記シミュレータ１が停止する旨を通知する。
【００９０】
分散環境内の各シミュレーションサービス部２ｂでは、受信した上記通知の内容から上記シミュレータ１を特定する情報及びそのシミュレーション実行周期を読み出して自己のシミュレータリスト１７から、当該シミュレータ１に関する情報を削除する。
【００９１】
ここで、シミュレーションサービス部２ｂ自体を停止する場合を説明する。
先ず、シミュレーションサービス部２ｂは、停止しようとする場合、記憶部５から接続情報を読み出して参照し、マスタとして機能するシミュレーションサービス部２ａの分散環境内での位置を特定する。
【００９２】
このあと、シミュレーションサービス部２ｂは、ネットワーク１１を介してシミュレーションサービス部２ａにその通知内容を送信する。シミュレーションサービス部２ａでは、上記シミュレーションサービス部２ｂからの通知を受けると、当該シミュレーションサービス部２ｂが構築されたコンピュータを特定する情報（マシン名など）をシミュレーションサービス部リスト１６から削除する。
【００９３】
以上のように、この実施の形態３によれば、シミュレーションの実行中にシステムの構成及びその状態を規定するシミュレーションサービス部リスト１６やシミュレータリスト１７に変更があると、当該変更後の構成情報をシミュレーション実行に関与する全ての構成要素に対して認識させて、当該構成情報にて規定されるシステムでシミュレーションを続行するので、分散するシミュレーションサービス部２ａ，２ｂの全てが、現在実行中の統合シミュレーションに参加しているシミュレータ１を把握することができることから、統合シミュレーション実行中に動的にシミュレータ１を追加あるいは停止することができる。
【００９４】
なお、上記実施の形態３では、マスタとして機能するシミュレーションサービス部２ａをコンピュータ１０ａ−１に固定して分散環境全体を管理する例を示したが、本発明はこれに限定されるものではない。例えば、分散環境に存在する全てのシミュレーションサービス部に、分散環境全体の構成及びその状態を保持・管理し、定期的にこれらの情報を互いに交換する機構を組み入れる。これにより、マスタが存在しない完全な自律分散環境にすることも可能である。
【００９５】
【発明の効果】
以上のように、この発明によれば、複数のシミュレータが情報交換しながら統合してシミュレーションを実行する統合シミュレーションシステムにおいて、各シミュレータ間の接続関係を定義する接続情報を格納しておき、当該接続情報に基づいてシミュレーションを実行する上で情報交換の対象となる接続関係を有するシミュレータを認識すると共に、当該シミュレータとの間でシミュレーションの実行上の時間的な同期をとるので、シミュレーションを実行するにあたり、情報交換の対象となる接続関係を有するシミュレータ間だけで同期をとればよいことから、同期をとるための通信量を低減することができ、効率的に統合したシミュレーションを実行することができるという効果がある。
【００９６】
この発明によれば、自シミュレータ、及び、接続情報に基づいて認識された自シミュレータ情報交換の対象となる接続関係を有するシミュレータについて、これらのシミュレーション実行上の現在時間及びシミュレーションを完了する周期を含む同期用情報を保持するので、自シミュレータが自己と情報交換の対象となる接続関係を有する全てのシミュレータに対して次に同期をとるべき時間を認識することができ、シミュレータ間で時間的な同期をとるための通信量を低減することができるという効果がある。また、情報交換の対象となるシミュレータとの上記周期の差が大きく異なる場合であっても、非常に効率的に統合してシミュレーションを実行することができるという効果がある。
【００９７】
この発明によれば、自シミュレータとの間で情報交換の対象となる接続関係を有するシミュレータが実行するシミュレーション上の現在時間に、これらシミュレータ間の接続形態に応じた伝送遅延時間を加えた時間情報を含むメッセージ情報を配信するメッセージ配信部を備え、当該メッセージ情報によって認識される時間情報に基づいて、シミュレータとの間でシミュレーションの実行上の時間的な同期をとるので、シミュレータ間のデータ通信時に生じる伝送遅延時間による不具合を低減することができると共に、その検証もすることができるという効果がある。
【００９８】
この発明によれば、シミュレーション実行中にシミュレータ間の情報通信量を算出し、当該情報通信量に応じて伝送遅延時間を求め、自シミュレータとの間で情報交換の対象となる接続関係を有するシミュレータが実行するシミュレーション上の現在時間に、伝送遅延計算部が求めた伝送遅延時間を加えた時間情報を含むメッセージ情報を配信し、メッセージ情報によって認識される時間情報に基づいて、シミュレータとの間でシミュレーションの実行上の時間的な同期をとるので、シミュレーション実行時における情報通信量に応じて動的に求められた伝送遅延を考慮したシミュレーションを実現することができるという効果がある。
【００９９】
この発明によれば、シミュレータ間における情報通信を中継するにあたり、シミュレータの入出力デバイスに直接アクセスするデバイスレベルで情報を送受信するので、シミュレータ自体が情報の作成や送受信を行うことない情報通信を実現することができるという効果がある。
【０１００】
この発明によれば、シミュレーションの実行中にシステムの構成及びその状態を規定する構成情報に変更があると、当該変更後の構成情報をシミュレーション実行に関与する全ての構成要素に対して認識させて、当該構成情報にて規定されるシステムでシミュレーションを続行するので、複数のシミュレータを使用した分散環境で統合シミュレーションを実行するにあたり、動的にシミュレータを追加あるいは削除することができるという効果がある。
【図面の簡単な説明】
【図１】この発明の実施の形態１による統合シミュレーションシステムの構成を示す図である。
【図２】実施の形態１による統合シミュレーションシステムで用いられるメッセージの構成を示す図である。
【図３】実施の形態１の統合シミュレーションシステムにおけるメッセージ配信部の他の構成を示す図である。
【図４】図１中のメッセージ配信部の配置形態を説明する図である。
【図５】図１中の同期機構部によるメッセージ送信処理を説明する図である。
【図６】図１中の同期機構部によるメッセージ通信処理のシーケンスを示す図である。
【図７】この発明の実施の形態２による統合シミュレーションシステムのシミュレーションサービス部の構成を示す図である。
【図８】この発明の実施の形態３による統合シミュレーションシステムの構成を示す図である。
【符号の説明】
１  シミュレータ、２，２ａ，２ｂ，２Ａ  シミュレーションサービス部、３，３ａ  シミュレータオブジェクト部（同期整合部）、４，４ａ  メッセージ配信部、５，５ａ  記憶部、６  同期機構部（同期整合部）、７  論理時計（同期整合部）、８  メッセージキュー（同期用情報保持部）、９  伝送遅延計算部（伝送遅延計算部）、１０  ローカルマシン、１０−１，１０−２，１０ａ−１，１０ａ−２  リモートマシン、１１  ネットワーク、１２  メッセージ層、１３デバイス層、１４，１５  デバイスオブジェクト（同期整合部）、１６  シミュレーションサービス部リスト、１７  シミュレータリスト。
【図１】
0003621392.tif 000002
【図２】
0003621392.tif 000003
【図３】
0003621392.tif 000004
【図４】
0003621392.tif 000005
【図５】
0003621392.tif 000006
【図６】
0003621392.tif 000007
【図７】
0003621392.tif 000008
【図８】
0003621392.tif 000009