(57)【要約】【課題】複数の関数から構成される制御プログラムをシミュレーションさせる装置において、ユーザービリティを向上させ、開発効率の向上を図ることの可能なシミュレーション装置を提供する。【解決手段】制御プログラムの処理関数をブロックアイコンとして配置、結線して記述するシミュレーション装置であって、表示中の制御関数ブロックに含まれる内部関数の中から実行関数を前記ユーザに選択させるための関数選択欄を表示させる演算処理部を備え、実行関数の選択と連動して、その関数に対応するインターフェイスのポートを自動的に表示させる機能を備える。これにより、多数の関数ブロックを作成しなくても、１つのブロックにて複数の内部関数にアクセスでき、ブロックの管理を容易にすることができる。【選択図】図１
2011165052.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムの処理関数をブロックアイコンとして配置、結線して記述するシミュレーション装置であって、
表示中の制御関数ブロックに含まれる内部関数の中から実行関数を前記ユーザに選択させるための関数選択欄を表示させる演算処理部を備えることを特徴とするシミュレーション装置。
【請求項２】
前記演算処理部は、前記関数選択欄を介して前記ユーザに選択された実行関数に応じて、前記制御関数ブロックのポート設定を自動的に行うことを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記演算処理部は、前記ユーザによるブロック複製操作に応じて、同一の実行関数が選択された前記制御関数ブロックを複数複製した場合、当該複製した各制御関数ブロックをそれぞれ独立して演算可能なブロックとして取り扱うことを特徴とする請求項１または２に記載のシミュレーション装置。  
【請求項４】
制御プログラムの処理関数をブロックアイコンとして配置、結線して記述するシミュレーション方法であって、
表示中の制御関数ブロックに含まれる内部関数の中から実行関数を前記ユーザに選択させるための関数選択欄を表示させることを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置及び方法に関する。
【背景技術】
【０００２】
近年では、車両制御用ＥＣＵ(Electric Control Unit)の開発において、ＥＣＵに実装すべき制御プログラムの複雑化に伴い、開発効率の向上が求められている。そこで、シミュレータ上で、ブロック図や状態遷移図などの制御モデルを作成して制御仕様の検証（シミュレーション）を行い、検証された制御モデルを基にＥＣＵに実装すべき制御プログラムのソースコードを自動生成して効率化を図るモデルベース開発が進められている。
【０００３】
モデルベース開発に用いられるシミュレータ（例えばＭａｔｈｗｏｒｋｓ社が提供しているＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標）など）には、各種機能を有するブロック要素が多数収められたブロックライブラリが用意されており、ユーザは、所望のブロック要素を選択してモデリングウインドウに移動させ、このモデリングウインドウ上で各ブロック要素を結線することで制御モデルを作成することができる。
【０００４】
新規に制御プログラムの開発を行う場合には、シミュレータ上で制御仕様に応じた制御モデルの作成を一から行い、モデルベース開発のプロセスを適用することが可能であるが、実際のＥＣＵ開発では、既存の設計資産（例えば、既存のＥＣＵに実装された制御プログラムのソースコードであるＣ言語プログラム）を基に、機能の変更や追加を繰り返す差分開発の形態であることが多い。このような場合では、下記特許文献１に説明されているようなＳＩＬＳ（Software In the Loop Simulation）により、ＥＣＵに実装された既存の制御プログラムをシミュレータアプリケーションに組み込むことで、新規開発の制御モデルや制御対象モデルと結合してシミュレーションを実施するケースや、リバースモデリングにより置き換えたモデルと既存プログラムの演算値との一致性を確認するケース等がある。
【０００５】
上記のようなＥＣＵに実装された制御プログラムをソフトウェアシミュレータで動作させるには、既存のソースコードであるＣ言語プログラムと、ユーザが作成したインターフェイスプログラム（Ｃ言語プログラムを構成する関数とシミュレータ間での値の受け渡しを実現するプログラム）とをシミュレータ用コンパイラを用いてコンパイルすることで、シミュレータが実行可能な関数ブロックを生成し、シミュレータアプリケーションと結合する方法などが採られている。
【０００６】
これにより、ユーザは、所望のブロック要素及び関数ブロックを選択してモデリングウインドウに移動させ、このモデリングウインドウ上で各ブロック要素と関数ブロックを結線することで、ＥＣＵの制御機能と合わせて、センサや機械的駆動部の機能も含む車両制御システム全体を模擬した制御システムモデルを作成することができるようになる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２６９０２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、一般的に、制御プログラムのソースコードであるＣ言語プログラムは、上位関数とこれに呼び出される下位関数とが入れ子状態で定義された関数コールツリー構造で表現することが可能である。従って、シミュレータ上でＥＣＵ全体の機能を模擬する場合、Ｃ言語制御プログラムの最上位関数（最も外側で定義されている関数）に対応する関数をコールしてシミュレーションできれば良い。
【０００９】
一方、近年では、車両制御の複雑化に伴い、ソフトウェア規模が増大し、単体レベル、システムレベルといった具合に段階的にシミュレーションが行われている。例えば、単体レベルのシミュレーションとして、シミュレータ上において、Ｃ言語プログラムを構成する一部の関数に対応する関数ブロックと、その関数を基にユーザが既存のブロック要素を用いて作成した（リバースモデリングした）ブロック図モデルとに同一のテスト信号を入力し、両者から同一の出力信号が得られるか否かを確認することで、Ｃ言語プログラムのコンパイルによって得られた関数ブロックと、リバースモデリングによって得られたブロック図モデルとの一致性を検証するなどのケースがある。
【００１０】
これに対して、Ｃ言語プログラムを構成する各関数に対応する関数ブロックを個別に作成しておき、必要に応じて検証対象関数に対応する関数ブロックを使用することも考えられるが、関数の数が多い場合、ユーザによる関数ブロックの作成作業が増え、さらに、ソースコードの変更に伴う関数ブロックの管理も複雑になるため、開発効率の低下につながる虞がある。
【００１１】
本発明は、上述した事情に鑑みてなされたものであり、複数の関数から構成される制御プログラムをシミュレーションする際のユーザービリティを向上させ、開発効率の向上を図ることの可能なシミュレーション装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明に係るシミュレーション装置は、制御プログラムの処理関数をブロックアイコンとして配置、結線して記述するシミュレーション装置であって、表示中の制御関数ブロックに含まれる内部関数の中から実行関数を前記ユーザに選択させるための関数選択欄を表示させる演算処理部を備えることを特徴とする。
【００１３】
また、本発明に係るシミュレーション装置において、前記演算処理部は、前記関数選択欄を介して前記ユーザに選択された実行関数に応じて、前記制御関数ブロックのポート設定を自動的に行うことを特徴とする。
また、本発明に係るシミュレーション装置において、前記演算処理部は、前記ユーザによるブロック複製操作に応じて、同一の実行関数が選択された前記制御関数ブロックを複数複製した場合、当該複製した各制御関数ブロックをそれぞれ独立して演算可能なブロックとして取り扱うことを特徴とする。
【発明の効果】
【００１４】
本発明では、表示中の制御関数ブロックに含まれる内部関数の中から実行関数を前記ユーザに選択させるための関数選択欄を表示させるため、ユーザは表示画面上にて自由に制御関数ブロックの実行関数（すなわち、検証対象関数）を選択することができるようになる。従って、本発明によれば、従来のように関数毎に関数ブロックを作成する必要がなくなり、関数ブロック作成作業が削減される。また、プログラムの変更に伴う関数の追加や削除の際に、関数ブロックの管理が単純化され、ユーザービリティを向上させることが可能であり、開発効率の向上を図ることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態におけるシミュレーション装置１のブロック構成図である。
【図２】既存の設計資産として利用するＣ言語プログラムの記述例である。
【図３】関数ブロック上に表示される関数選択ボックスＳＢを利用した実行関数の選択の様子を表す図である。
【図４】インターフェイスポート設定画面の表示例である。
【図５】モデリングウインドウＭＤＷ上における関数ブロック複製の様子を表す図である。
【図６】シミュレーション装置１の適用例に関する第１説明図である。
【図７】シミュレーション装置１の適用例に関する第２説明図である。
【図８】シミュレーション装置１の適用例に関する第３説明図である。
【図９】シミュレーション装置１の適用例に関する第４説明図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態について、図面を参照しながら説明する。
図１は、本実施形態におけるシミュレーション装置１のブロック構成図である。この図１に示すように、本実施形態におけるシミュレーション装置１は、例えば、車両制御用ＥＣＵに実装すべき制御プログラムのモデルベース開発に用いられるシミュレータが実装されたパーソナルコンピュータであり、操作入力装置１０、表示装置２０、記憶装置３０及び演算処理装置４０を備えている。なお、モデルベース開発用のシミュレータとしては、例えばＭａｔｈｗｏｒｋｓ社が提供しているＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標）などを使用することができる。
【００１７】
操作入力装置１０は、例えばキーボードやマウス等のユーザインターフェイスから構成されており、ユーザによる操作入力に応じた信号（以下、操作入力信号と称す）を演算処理装置４０に出力するものである。表示装置２０は、例えば液晶ディスプレイ、或いは有機ＥＬディスプレイ等であり、演算処理装置４０から入力される画像信号に応じた画像を表示するものである。
【００１８】
記憶装置３０は、例えばＨＤＤ(Hard Disk Drive)、或いはフラッシュメモリ等の書き換え可能な不揮発性の記憶媒体であり、ＯＳ(Operating System)プログラムやシミュレータ（ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標））としての機能をパーソナルコンピュータに実現させるシミュレータプログラム３１を記憶している。また、この記憶装置３０は、シミュレータプログラム３１と共に、シミュレータとしての機能をパーソナルコンピュータに実現させるために必要な制御システムモデル３２を記憶している。
【００１９】
この制御システムモデル３２には、センサ、アクチュエータなどの制御対象ブロック３２ａと、制御機能を処理する関数ブロック３２ｂが含まれる。この関数ブロック３２ｂは、既存のソースコードであるＣ言語プログラムとインターフェイスプログラムとをシミュレータ用コンパイラを用いてコンパイルすることで生成されたＤＬＬ（Dynamic Linking Library）などを利用している。以下では、関数ブロック３２ｂとして、５つの関数ブロックＦＢ１、ＦＢ２、ＦＢ３、ＦＢ４、ＦＢ５が含まれているものと仮定する。
【００２０】
演算処理装置４０（演算処理部）は、例えばＣＰＵ（Central Processing Unit）であり、操作入力装置１０から入力される操作入力信号に応じて（ユーザによる操作入力に応じて）、記憶装置３０に記憶されているシミュレータプログラム３１を実行することにより、シミュレータとしての機能をパーソナルコンピュータ上で実現するものである。
【００２１】
図２（ａ）は、関数ブロックＦＢ１、ＦＢ２、ＦＢ３、ＦＢ４、ＦＢ５の元となったＣ言語プログラムの一例を示し、図２（ｂ）は、Ｃ言語プログラムの視覚的な理解を容易とするために、図２（ａ）に示すＣ言語プログラムをブロック図で表したものである。これら図２（ａ）及び（ｂ）に示すように、Ｃ言語プログラムは、最上位の関数「ＦｕｎｃＡ」と、この関数「ＦｕｎｃＡ」に呼び出される下位の関数「ＦｕｎｃＢ」及び「ＦｕｎｃＣ」と、関数「ＦｕｎｃＣ」に呼び出される最下位の関数「ＦｕｎｃＣ１」及び「ＦｕｎｃＣ２」から構成されている。
【００２２】
つまり、関数ブロックＦＢ１は、Ｃ言語プログラムを構成する最上位関数「ＦｕｎｃＡ」に対応する（言い換えれば実行関数を「ＦｕｎｃＡ」とする）関数ブロックであり、関数ブロックＦＢ２は、Ｃ言語プログラムを構成する関数「ＦｕｎｃＢ」に対応する関数ブロックであり、関数ブロックＦＢ３は、Ｃ言語プログラムを構成する関数「ＦｕｎｃＣ」に対応する関数ブロックであり、関数ブロックＦＢ４は、Ｃ言語プログラムを構成する最下位関数「ＦｕｎｃＣ１」に対応する関数ブロックであり、また、関数ブロックＦＢ５は、Ｃ言語プログラムを構成する最下位関数「ＦｕｎｃＣ２」に対応する関数ブロックである。
【００２３】
上述したように、関数ブロックＦＢ１は、Ｃ言語プログラムを構成する最上位関数「ＦｕｎｃＡ」に対応する（言い換えれば実行関数を「ＦｕｎｃＡ」とする）関数ブロックであり、演算処理装置４０は、実行関数「ＦｕｎｃＡ」が有する各変数のインターフェイス種別に応じて、モデリングウインドウＭＤＷ上で表示する関数ブロックＦＢ１のポート設定を自動的に行う。
【００２４】
関数ブロックＦＢ１の実行関数「ＦｕｎｃＡ」は、入力変数として「Ｂｉｎ」及び「Ｃｉｎ」を有し、出力変数として「Ｃｏｕｔ」を有している。そのため、演算処理装置４０は、関数ブロックＦＢ１のポート設定として、図３（ａ）に示すように、入力変数「Ｂｉｎ」に対応する入力ポートＰｉ１と、入力変数「Ｃｉｎ」に対応する入力ポートＰｉ２と、出力変数「Ｃｏｕｔ」に対応する出力ポートＰｏ１の設定を行う。
【００２５】
さらに、演算処理装置４０は、図３（ａ）に示すように、モデリングウインドウＭＤＷ上にて表示中の関数ブロックＦＢ１上に、当該関数ブロックＦＢ１の実行関数をユーザに選択させるための関数選択ボックスＳＢ（関数選択欄）を表示させる。この関数選択ボックスＳＢには、現在選択中の実行関数（つまり関数「ＦｕｎｃＡ」）が表示されており、演算処理装置４０は、ユーザによって関数選択ボックスＳＢのカーソルがクリックされると（図３（ａ）参照）、選択可能な実行関数（つまり、関数「ＦｕｎｃＢ」、「ＦｕｎｃＣ」、「ＦｕｎｃＣ１」、「ＦｕｎｃＣ２」）の一覧を表示させる（図３（ｂ）参照）。
【００２６】
そして、演算処理装置４０は、ユーザによって、例えば選択可能な実行関数の一覧から実行関数「ＦｕｎｃＢ」が選択されると、実行関数「ＦｕｎｃＢ」が有する各変数のインターフェイス種別に応じて、モデリングウインドウＭＤＷ上で表示する関数ブロックＦＢ２のポート設定を自動的に行う。
【００２７】
関数ブロックＦＢ２の実行関数「ＦｕｎｃＢ」は、入力変数として「Ｂｉｎ」を有し、出力変数として「Ｂｏｕｔ」を有し、モニタ変数（シミュレータ上で関数内部の演算値をモニタするための変数）として「Ｂｍｏｎ」を有し、パラメータ変数（実行関数による演算実行中に固定値が設定される変数）として「Ｐ１」を有している。そのため、演算処理装置４０は、関数ブロックＦＢ２のポート設定として、図３（ｃ）に示すように、入力変数「Ｂｉｎ」に対応する入力ポートＰｉ３と、出力変数「Ｂｏｕｔ」に対応する出力ポートＰｏ２と、モニタ変数「Ｂｍｏｎ」に対応するモニタポートＰｍ１と、パラメータ変数「Ｐ１」に対応するパラメータポートＰｐ１の設定を行う。なお、この時、関数ブロックＦＢ２上の関数選択ボックスＳＢには、現在選択中の実行関数「ＦｕｎｃＢ」が表示されることになる。
【００２８】
同様に、演算処理装置４０は、関数ブロックＦＢ２上の関数選択ボックスＳＢを介して、例えば実行関数「ＦｕｎｃＣ」が選択されると、実行関数「ＦｕｎｃＣ」が有する各変数のインターフェイス種別に応じて、モデリングウインドウＭＤＷ上で表示する関数ブロックＦＢ３のポート設定を自動的に行う。
【００２９】
関数ブロックＦＢ３の実行関数「ＦｕｎｃＣ」は、入力変数として「Ｂｏｕｔ」及び「Ｃｉｎ」を有し、出力変数として「Ｃｏｕｔ」を有している。そのため、演算処理装置４０は、関数ブロックＦＢ３のポート設定として、図３（ｄ）に示すように、入力変数「Ｂｏｕｔ」に対応する入力ポートＰｉ４と、入力変数「Ｃｉｎ」に対応する入力ポートＰｉ５と、出力変数「Ｃｏｕｔ」に対応する出力ポートＰｏ３の設定を行う。なお、関数ブロックＦＢ３上の関数選択ボックスＳＢには、現在選択中の実行関数「ＦｕｎｃＣ」が表示されることになる。
【００３０】
なお、図４に示すように、入力ポート及び出力ポートは変数毎にポートを作成する形態の他、複数の変数を１ポートにまとめたバス信号として扱うことも可能である。また、パラメータポート、モニターポートを省略し、シミュレータツール上で一括して取り扱う形態も可能である。さらに、各信号は論理値、物理値のいずれかの選択が可能である（図４参照）。モデリングウインドウＭＤＷ上で上記のように選択された関数ブロックと各汎用ブロックの結線処理を行うことで、ＥＣＵの機能だけでなく、センサや機械的駆動部の機能も含む車両制御システム全体を模擬した制御システムモデルを作成することが可能である。
【００３１】
以上説明したとおり、本実施形態におけるシミュレーション装置１では、モデリングウインドウＭＤＷ上にて表示中の関数ブロック上に、当該関数ブロックの実行関数をユーザに選択させるための関数選択ボックスＳＢを表示させるため、ユーザはモデリングウインドウＭＤＷ上にて自由に関数ブロックの実行関数（すなわち、検証対象関数）を選択することができるようになる。従って、従来のように関数毎に関数ブロックを作成する必要がなくなり、関数ブロック作成作業が削減でき、関数ブロックの管理が単純化されるため、ユーザービリティの向上及び開発効率の向上を図ることが可能となる。
【００３２】
＜変形例＞
なお、本発明は上記実施形態に限定されず、以下のような変形例が挙げられる。
（１）上記実施形態では、モデリングウインドウＭＤＷ上に関数ブロックを１つだけ配置する場合を例示したが、この関数ブロックは汎用ブロックと同様に、ユーザによるブロック複製操作（例えばコピー操作）によって、複数複製することができる（図５参照）。ここで、モデリングウインドウＭＤＷ上において、ユーザによるブロック複製操作に応じて、同一の実行関数が選択された関数ブロックを複数複製した場合、当該複製した各関数ブロックをそれぞれ独立して演算可能なブロック（インスタンス）として取り扱う機能を演算処理装置４０に設けることが望ましい。これにより、制御関数を複数個使用できるように拡張したい場合などに利便性を図ることが可能となる。なお、この機能は、複製した各関数ブロックに対して別個のメモリ領域を割り当てることで実現することができる。
【００３３】
（２）上記実施形態では、車両用ＥＣＵに実装すべき制御プログラムのモデルベース開発に用いられるシミュレーション装置１を例示して説明したが、本発明は車両用の制御プログラムに限らず、様々な制御プログラムのモデルベース開発に用いられるシミュレーション装置に適用することができる。また、シミュレーション装置１に実装するモデルベース開発用のシミュレータとしては、ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標）以外のシミュレータを用いても良い。
【００３４】
（３）上記実施形態では、モデリングウインドウＭＤＷにて表示中の関数ブロック上に、当該関数ブロックの実行関数をユーザに選択させるための関数選択欄として、図３に示すような関数選択ボックスＳＢを表示させる場合を例示したが、例えば、実行関数名を直接入力するためのボックスや、或いはチェックボックスなどを関数選択欄として表示させるようにしても良い。
【００３５】
＜適用例＞
次に、既存の設計資産を利用した車両制御プログラムのモデルベース開発に対し、本実施形態におけるシミュレーション装置１を適用した一例について説明する。なお、以下では、図６に示すような車両に作用する加速度を検出するセンサ部１００と、このセンサ部１００によって検出された加速度を基に衝突判定を行い、その衝突判定結果に応じてエアバッグに点火信号を出力するエアバッグ制御用ＥＣＵ２００とから構成されたエアバッグ制御システムを想定し、このエアバッグ制御用ＥＣＵ２００に実装されたエアバッグ制御用プログラムのソースコード（Ｃ言語プログラム）を既存の設計資産として利用する場合を例示する。
【００３６】
図６に示すように、本適用例のエアバッグ制御システムにおいて、センサ部１００は、車両に作用する加速度を検出するサテライト加速度センサ１０１及びメイン加速度センサ１０２から構成されている。また、エアバッグ制御用ＥＣＵ２００は、ＬＰＦ２０１、ＬＰＦ２０２、セーフィング判定部２０３、中高速衝突判定部２０４、低速衝突判定部２０５、ＯＲ処理部２０６及びＡＮＤ処理部２０７から構成されている。
【００３７】
ＬＰＦ２０１は、サテライト加速度センサ１０１から出力される加速度信号に含まれる高周波ノイズ成分を除去する。ＬＰＦ２０２は、メイン加速度センサ１０２から出力される加速度信号に含まれる高周波ノイズ成分を除去する。セーフィング判定部２０３は、ＬＰＦ２０１から出力される加速度信号の区間積分処理を行うと共に、区間積分値とセーフィング判定閾値とを比較することでセーフィング判定を行う。
【００３８】
中高速衝突判定部２０４は、ＬＰＦ２０２から出力される加速度信号の区間積分処理を行うと共に、区間積分値と中高速衝突判定閾値とを比較することで衝突判定を行う。低速衝突判定部２０５は、ＬＰＦ２０２から出力される加速度信号の累積積分処理を行うと共に、累積積分値と低速衝突判定閾値とを比較することで衝突判定を行う。ＯＲ処理部２０６は、中高速衝突判定部２０４及び低速衝突判定部２０５の衝突判定結果の論理和処理を行う。ＡＮＤ処理部２０７は、セーフィング判定部２０３のセーフィング判定結果とＯＲ処理部２０６の論理和処理結果との論理積処理を行い、論理積処理結果をエアバッグ点火信号として出力する。
【００３９】
つまり、既存の設計資産として利用するＣ言語プログラムとは、上記のＬＰＦ２０１、ＬＰＦ２０２、セーフィング判定部２０３、中高速衝突判定部２０４、低速衝突判定部２０５、ＯＲ処理部２０６及びＡＮＤ処理部２０７の機能をエアバッグ制御用ＥＣＵ２００に実現させるためのプログラムである。
【００４０】
図７に、上記Ｃ言語プログラムの記述例を示す。図７において、関数「ＣｒａｓｈＤｅｔｅｃｔｉｏｎ」は、ＬＰＦ２０１、ＬＰＦ２０２、セーフィング判定部２０３、中高速衝突判定部２０４、低速衝突判定部２０５、ＯＲ処理部２０６及びＡＮＤ処理部２０７の全ての機能を実現させるための最上位関数である。関数「ＳａｆｉｎｇＤｅｔｅｃｔｉｏｎ」は、セーフィング判定部２０３の機能を実現させるための下位関数である。関数「ＭｉｄＳｐｅｅｄＤｅｔｅｃｔｉｏｎ」は、中高速衝突判定部２０４の機能を実現させるための下位関数である。
【００４１】
関数「ＬｏｗＳｐｅｅｄＤｅｔｅｃｔｉｏｎ」は、低速衝突判定部２０５の機能を実現させるための下位関数である。関数「ＳａｔｅｌｌｉｔｅＬＰＦ」は、ＬＰＦ２０１のの機能を実現させるための下位関数である。関数「ＭａｉｎＬＰＦ」は、ＬＰＦ２０２のの機能を実現させるための下位関数である。なお、図７において、ＯＲ処理部２０６及びＡＮＤ処理部２０７の機能を実現させるための下位関数の記述については省略している。
【００４２】
このようなＣ言語プログラムをインターフェイスプログラムと共にシミュレータ用コンパイラを用いてコンパイルすることで、シミュレータ上で実行可能な関数ブロックを生成する。以下では、関数「ＣｒａｓｈＤｅｔｅｃｔｉｏｎ」に対応する関数ブロック（言い換えれば、実行関数を「ＣｒａｓｈＤｅｔｅｃｔｉｏｎ」とする関数ブロック）をＦＢ１０、関数「ＳａｆｉｎｇＤｅｔｅｃｔｉｏｎ」に対応する関数ブロックをＦＢ１１、関数「ＭｉｄＳｐｅｅｄＤｅｔｅｃｔｉｏｎ」に対応する関数ブロックをＦＢ１２、関数「ＬｏｗＳｐｅｅｄＤｅｔｅｃｔｉｏｎ」に対応する関数ブロックをＦＢ１３、関数「ＳａｔｅｌｌｉｔｅＬＰＦ」に対応する関数ブロックをＦＢ１４、関数「ＭａｉｎＬＰＦ」に対応する関数ブロックをＦＢ１５とする。
【００４３】
そして、ユーザは、図８に示すように、モデリングウインドウＭＤＷ上で関数ブロックＦＢ１０と、制御対象ブロックの一種であるセンサブロックＢ１０及びＢ１１とを結線することで、図６に示したエアバッグ制御システムを模擬した制御モデルを作成し、当該作成した制御モデルを用いてシミュレーションを行うことができる。なお、図８に示すように、関数ブロックＦＢ１０上の関数選択ボックスＳＢには、現在選択中の実行関数「ＣｒａｓｈＤｅｔｅｃｔｉｏｎ」が表示されることになる。
【００４４】
さらに、図９に示すように、関数ブロックＦＢ１０上に表示される関数選択ボックスＳＢを利用して、関数ブロックＦＢ１０を、例えば関数「ＬｏｗＳｐｅｅｄＤｅｔｅｃｔｉｏｎ」を実行関数とする関数ブロックＦＢ１３に置換し、この関数ブロックＦＢ１３と、その実行関数を基にユーザが既存の汎用ブロックを用いて作成した（リバースモデリングした）ブロック図モデル３００とに同一のテスト信号を入力し、両者から同一の出力信号が得られるか否かを確認することで、Ｃ言語プログラムのコンパイルによって得られた関数ブロックＦＢ１３と、リバースモデリングによって得られたブロック図モデル３００との一致性を検証することもできる。
【符号の説明】
【００４５】
１…シミュレーション装置、１０…操作入力装置、２０…表示装置、３０…記憶装置、３１…シミュレータプログラム、３２…制御システムモデル、３２ａ…制御対象ブロック、３２ｂ…関数ブロック、４０…演算処理装置（演算処理部）
【図１】
2011165052.tif 000003
【図２】
2011165052.tif 000004
【図３】
2011165052.tif 000005
【図４】
2011165052.tif 000006
【図５】
2011165052.tif 000007
【図６】
2011165052.tif 000008
【図７】
2011165052.tif 000009
【図８】
2011165052.tif 000010
【図９】
2011165052.tif 000011