(57)【要約】【課題】組み込み制御プログラムを利用したシミュレーション環境の構築を容易にして開発効率を向上させる開発支援装置を提供する。【解決手段】ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析部と、ソースコード解析部から得られる解析結果と予め規定されている変数分類ルールとに基づいて関数インターフェイス情報を作成する関数インターフェイス情報作成部と、関数インターフェイス情報に基づいて、ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成部とを備える開発支援装置を提供し、ユーザがインターフェイスプログラムを作成せずに、組み込み制御プログラムをシミュレータ上で実行できるようにする。【選択図】図１
2011165051.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析部と、
前記ソースコード解析部から得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成部と、
前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成部と、
を備えることを特徴とする開発支援装置。
【請求項２】
前記変数分類ルールは、関数内部におけるグローバル変数のアクセス方式と関数外部におけるグローバル変数のアクセス方式との組み合わせと、前記インターフェイス種別との対応関係を表すデータであることを特徴とする請求項１記載の開発支援装置。
【請求項３】
前記インターフェイス種別は、前記グローバル変数が、関数の入力変数と、関数の出力変数と、関数内部の演算値をモニタするためのモニタ変数と、入力変数及び出力変数以外で他の関数と共有される共有変数と、関数による演算実行中に固定値が設定されるパラメータ変数とに分類されるように設定されていることを特徴とする請求項１または２に記載の開発支援装置。
【請求項４】
前記ソースコード解析部は、前記ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式に加えて、前記グローバル変数の型及びサイズを解析し、
前記関数インターフェース情報作成部は、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別、型及びサイズとの対応関係を表す関数インターフェイス情報を作成することを特徴とする請求項１〜３のいずれか一項に記載の開発支援装置。
【請求項５】
前記関数インターフェイス情報作成部によって作成された関数インターフェイス情報に、各グローバル変数に対応するスケーリング情報を付加するスケーリング情報付加部を備え、
前記プログラム作成部は、前記スケーリング情報付加部によって前記スケーリング情報が付加された関数インターフェイス情報に基づいて前記インターフェイスプログラムを作成することを特徴とする請求項１〜４のいずれか一項に記載の開発支援装置。
【請求項６】
ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析工程と、
前記ソースコード解析工程から得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成工程と、
前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成工程と、
を有することを特徴とする開発支援方法。
【請求項７】
ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析機能と、
前記ソースコード解析機能によって得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成機能と、
前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成機能と、
をコンピュータに実現させることを特徴とする開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発支援装置及び方法並びにプログラムに関する。
【背景技術】
【０００２】
近年では、車両制御用ＥＣＵ(Electric Control Unit)の開発において、ＥＣＵに実装すべき制御プログラムの複雑化に伴い、開発効率の向上が求められている。そこで、シミュレータアプリケーション上で、ブロック図や状態遷移図などの制御モデルを作成して制御仕様の検証（シミュレーション）を行い、検証された制御モデルを基にＥＣＵに実装すべき制御プログラムを自動生成して効率化を図るモデルベース開発が進められている。
【０００３】
新規にＥＣＵ開発を行う場合には、シミュレータアプリケーション上で制御仕様に応じた制御モデルの作成を一から行い、モデルベース開発のプロセスを適用することが可能であるが、実際のＥＣＵ開発では、既存の設計資産（例えば、既存のＥＣＵに実装された制御プログラムのソースコードであるＣ言語プログラム）を基に、機能の変更や追加を繰り返す差分開発の形態であることが多い。このような場合では、下記特許文献１に説明されているようなＳＩＬＳ（Software In the Loop Simulation）により、ＥＣＵに実装された既存の制御プログラムをシミュレータアプリケーションに組み込むことで、新規開発の制御モデルや制御対象モデルと結合してシミュレーションを実施するケースや、リバースモデリングにより置き換えたモデルと既存プログラムの演算値との一致性を確認するケース等がある。
【０００４】
上記のようなＥＣＵに実装された制御プログラムをソフトウェアシミュレータで動作させるには、既存の設計資産であるＣ言語プログラムと、ユーザが作成したインターフェイスプログラム（Ｃ言語プログラムを構成する関数とシミュレータアプリケーション間での値の受け渡し機能をコンピュータに実現させるプログラム）とをコンパイルすることで、シミュレータアプリケーション上で実行可能な関数ライブラリ（例えばＤＬＬ）を生成し、シミュレータアプリケーションと結合する方法などが採られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２６９０２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、既存の設計資産であるＣ言語プログラムを利用してソフトウェアシミュレータを構築する場合、インターフェイスプログラムを作成する必要があるが、従来では、ユーザが自らＣ言語プログラムの内容を解析し、その解析結果とシミュレータアプリケーションのインターフェイス仕様を基に、手作業でインターフェイスプログラムを作成していた。そのため、インターフェイスプログラムの作成に時間と手間がかかり、シミュレーション環境を容易に構築することができず、開発効率向上の観点から改善の余地があった。
【０００７】
本発明は、上述した事情に鑑みてなされたものであり、組み込み制御プログラムを利用したシミュレーション環境の構築を容易にして開発効率を向上させる開発支援装置及び方法並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明に係る開発支援装置は、ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析部と、前記ソースコード解析部から得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成部と、前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成部とを備えることを特徴とする。
【０００９】
また、本発明に係る開発支援装置において、前記変数分類ルールは、関数内部におけるグローバル変数のアクセス方式と関数外部におけるグローバル変数のアクセス方式との組み合わせと、前記インターフェイス種別との対応関係を表すデータであることを特徴とする。
【００１０】
また、本発明に係る開発支援装置において、前記インターフェイス種別は、前記グローバル変数が、関数の入力変数と、関数の出力変数と、関数内部の演算値をモニタするためのモニタ変数と、入力変数及び出力変数以外で他の関数と共有される共有変数と、関数による演算実行中に固定値が設定されるパラメータ変数とに分類されるように設定されていることを特徴とする。
【００１１】
また、本発明に係る開発支援装置において、前記ソースコード解析部は、前記ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式に加えて、前記グローバル変数の型及びサイズを解析し、前記関数インターフェース情報作成部は、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別、型及びサイズとの対応関係を表す関数インターフェイス情報を作成することを特徴とする。
【００１２】
また、本発明に係る開発支援装置において、前記関数インターフェイス情報作成部によって作成された関数インターフェイス情報に、各グローバル変数に対応するスケーリング情報を付加するスケーリング情報付加部を備え、前記プログラム作成部は、前記スケーリング情報付加部によって前記スケーリング情報が付加された関数インターフェイス情報に基づいて前記インターフェイスプログラムを作成することを特徴とする。
【００１３】
一方、本発明に係る開発支援方法は、ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析工程と、前記ソースコード解析工程から得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成工程と、前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成工程とを有することを特徴とする。
【００１４】
さらに、本発明に係る開発支援プログラムは、ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析機能と、前記ソースコード解析機能によって得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成機能と、前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成機能とをコンピュータに実現させるプログラムであることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、既存の設計資産であるソースコードを利用したソフトウェアシミュレータに必要なインターフェイスプログラム（ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するプログラム）を自動作成することができるため、組み込み制御プログラムを利用したシミュレーション環境の構築が容易となり、その結果、開発効率の向上が可能となる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態における開発支援装置１の機能ブロック図である。
【図２】ＩＦプログラム４５の自動作成処理の手順を表すフローチャートである。
【図３】ソースコードであるＣ言語プログラム３２の一例と、そのＣ言語プログラム３２を関数ブロックで表した図である。
【図４】Ｃ言語プログラム解析部４１によるＣ言語プログラム３２の解析結果である関数コールツリー及び変数リードライト表の一例である。
【図５】変数分類ルール３３及びＩＦ種別の一例である。
【図６】変数分類ルール３３に従って関数ＩＦ表作成部４２によって作成された関数ＩＦ表の一例である。
【図７】スケーリング情報付加部４３によってスケーリング情報が付加された関数ＩＦ表の一例である。
【図８】シミュレータ用ＤＬＬ３５として関数ライブラリ化されたＩＦプログラム４５に基づいてシミュレータアプリケーション４７が実行する初期化処理とステップ実行処理とを表すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の一実施形態について、図面を参照しながら説明する。
図１は、本実施形態における開発支援装置１の機能ブロック図である。この図１に示すように、本実施形態における開発支援装置１は、例えばパーソナルコンピュータであり、入力装置１０、表示装置２０、記憶装置３０及び演算処理装置４０を備えている。
【００１８】
本実施形態における開発支援装置１は、車両制御用ＥＣＵに実装すべき制御プログラムのモデルベース開発を支援する装置であって、既存の設計資産（制御プログラムのソースコード）を利用して差分開発を行う場合に必要なインターフェイスプログラム（ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するプログラム）を自動作成するものである。
【００１９】
入力装置１０は、例えばキーボードやマウス等のユーザインターフェイスから構成されており、ユーザによる操作入力に応じた信号（以下、操作入力信号と称す）を演算処理装置４０に出力するものである。表示装置２０は、例えば液晶ディスプレイ、或いは有機ＥＬディスプレイ等であり、演算処理装置４０から入力される画像信号に応じた画像を表示するものである。
【００２０】
記憶装置３０は、例えばＨＤＤ(Hard Disk Drive)、或いはフラッシュメモリ等の書き換え可能な不揮発性の記憶媒体であり、上述したインターフェイスプログラム（以下、ＩＦプログラムと略す）の自動作成機能をコンピュータである開発支援装置１（具体的にはその中核をなす演算処理装置４０）に実現させる開発支援プログラム３１を記憶している。また、記憶装置３０は、既存の設計資産である制御プログラムのソースコード（本実施形態ではＣ言語プログラム）３２を記憶している。
【００２１】
また、記憶装置３０は、ＩＦプログラムの自動作成に必要な情報である変数分類ルール３３及びデータディクショナリ３４を記憶している。詳細は後述するが、変数分類ルール３３は、Ｃ言語プログラム３２の関数内部におけるグローバル変数のアクセス方式と関数外部におけるグローバル変数のアクセス方式との組み合わせと、インターフェイス種別との対応関係を表すテーブルデータである（図５（ａ）参照）。データディクショナリ３４には、Ｃ言語プログラム３２を構成する各関数で使用されているグローバル変数のスケーリング情報や変数型等が含まれている。
【００２２】
さらに、記憶装置３０は、後述の演算処理装置４０（詳細にはシミュレータ用コンパイラ４６）で生成されたシミュレータ用関数ライブラリ（ＤＬＬ）３５を記憶する役割も担っている。なお、図１では図示を省略しているが、この記憶装置３０は、ＯＳ(Operating System)プログラムや後述のシミュレータ用コンパイラ４６の機能を演算処理装置４０に実現させるコンパイラプログラム、及びシミュレータアプリケーション４７の機能を演算処理装置４０に実現させるシミュレータアプリケーションプログラムを記憶している。
【００２３】
演算処理装置４０は、例えばＣＰＵ（Central Processing Unit）であり、入力装置１０から入力される操作入力信号に応じて、記憶装置３０に記憶されている開発支援プログラム３１を実行することにより、ＩＦプログラムの自動作成を行うものである。この演算処理装置４０は、開発支援プログラム３１の実行によって実現される機能部として、Ｃ言語プログラム解析部４１、関数インターフェイス表作成部（以下、関数ＩＦ表作成部と称す）４２、スケーリング情報付加部４３及びＩＦプログラム作成部４４を有する。
【００２４】
Ｃ言語プログラム解析部４１（ソースコード解析部）は、記憶装置３０に記憶されているＣ言語プログラム３２の関数構造（関数コールツリー）と各関数で使用されているグローバル変数のアクセス方式、型及びサイズを解析する機能を有する。関数ＩＦ表作成部４２は、Ｃ言語プログラム解析部４１から得られるＣ言語プログラム３２の解析結果と、記憶装置３０に記憶されている変数分類ルール３３とに基づいて、各グローバル変数のインターフェイス種別（以下、ＩＦ種別と称す）を決定し、各関数と、各関数で使用されているグローバル変数と、そのＩＦ種別、型及びサイズとの対応関係を表す関数ＩＦ表（関数インターフェイス情報）を作成する機能を有する。
【００２５】
スケーリング情報付加部４３は、記憶装置３０のデータディクショナリ３４に含まれている各グローバル変数に対応するスケーリング情報を、関数ＩＦ表作成部４２によって作成された関数ＩＦ表に付加する機能を有する。ＩＦプログラム作成部４４は、スケーリング情報付加部４３によってスケーリング情報が付加された関数ＩＦ表と、記憶装置３０のデータディクショナリ３４に含まれているシミュレータアプリケーションのソフトウェア仕様情報とに基づいて、ＩＦプログラム４５を作成する機能を有する。
【００２６】
また、演算処理装置４０は、記憶装置３０に記憶されているコンパイラプログラムの実行によって実現される機能部として、シミュレータ用コンパイラ４６を有している。このシミュレータ用コンパイラ４６は、ＩＦプログラム作成部４４によって作成されたＩＦプログラム４５と、その作成に使用されたＣ言語プログラム３２とをコンパイルすることで、シミュレータアプリケーション上で実行可能なシミュレータ用ＤＬＬ３５を生成し、当該生成したシミュレータ用ＤＬＬ３５を記憶装置３０に記憶させる機能を有する。
【００２７】
さらに、演算処理装置４０は、記憶装置３０に記憶されているシミュレータアプリケーションプログラムの実行によって実現される機能部として、シミュレータアプリケーション４７を有している。シミュレータアプリケーション４７は、入力装置１０から入力される操作入力信号に応じて、シミュレータ用ＤＬＬ３５に基づく制御モデルの作成及び制御モデルの検証（シミュレーション）を行う機能を有する。このようなシミュレータアプリケーション４７としては、例えばＭａｔｈｗｏｒｋｓ社がモデルシミュレータとして提供しているＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（登録商標）などを使用することができる。
【００２８】
次に、上記のように構成された開発支援装置１によるＩＦプログラム４５の自動作成処理について詳細に説明する。図２は、ＩＦプログラム４５の自動作成処理の手順を表すフローチャートである。なお、開発支援装置１の演算処理装置４０は、入力装置１０を介してユーザからＩＦプログラム４５の作成指示を受けた場合に、記憶装置３０に記憶されている開発支援プログラム３１を実行することにより、図２に示す手順でＩＦプログラム４５を自動作成する。
【００２９】
＜ステップＳ１：ソースコード解析工程＞
まず、図２のステップＳ１において、演算処理装置４０のＣ言語プログラム解析部４１は、記憶装置３０からユーザに指定されたＣ言語プログラム３２を読み出し、当該読み出したＣ言語プログラム３２の関数構造（関数コールツリー）と各関数で使用されているグローバル変数のアクセス方式、型及びサイズを解析する。
【００３０】
図３（ａ）に、Ｃ言語プログラム３２の一例を示す。また、図３（ｂ）は、Ｃ言語プログラム３２の視覚的な理解を容易とするために、図３（ａ）に示すＣ言語プログラム３２を関数ブロックで表した図である。これら図３（ａ）及び（ｂ）に示すように、Ｃ言語プログラム３２は、最上位の関数「ＦｕｎｃＡ」と、この関数「ＦｕｎｃＡ」に呼び出される下位の関数「ＦｕｎｃＢ」及び「ＦｕｎｃＣ」と、関数「ＦｕｎｃＣ」に呼び出される最下位の関数「ＦｕｎｃＣ１」及び「ＦｕｎｃＣ２」から構成されていると仮定する。
【００３１】
Ｃ言語プログラム解析部４１は、図３（ａ）に示すＣ言語プログラム３２の関数構造を解析することで、図４（ａ）に示すような関数コールツリーを作成すると共に、各関数で使用されているグローバル変数を抽出し、当該抽出した各グローバル変数のアクセス方式、型及びサイズを解析することで、図４（ｂ）に示すような変数リードライト表を作成する。図４（ｂ）に示すように、各グローバル変数のアクセス方式は、「リード」、「ライト」、「定数」のいずれかの属性に分類される。なお、あるグローバル変数が、ある関数内で「リード」と「ライト」の両方の属性を有している場合には、「ライト」の属性に優先的に分類するなどのルールを予め決めておけば良い。
【００３２】
＜ステップＳ２：関数インターフェイス情報作成工程＞
続いて、図２のステップＳ２において、演算処理装置４０の関数ＩＦ表作成部４２は、記憶装置３０から変数分類ルール３３を読み出し、当該読み出した変数分類ルール３３と、Ｃ言語プログラム解析部４１から得られるＣ言語プログラム３２の解析結果（つまり、関数コールツリー及び変数リードライト表）とを基に、各グローバル変数のＩＦ種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのＩＦ種別、型及びサイズとの対応関係を表す関数ＩＦ表を作成する。
【００３３】
図５（ａ）に、変数分類ルール３３の一例を示す。この図５（ａ）に示すように、変数分類ルール３３は、Ｃ言語プログラム３２の関数内部におけるグローバル変数のアクセス方式と関数外部におけるグローバル変数のアクセス方式との組み合わせと、グローバル変数のＩＦ種別との対応関係を表すテーブルデータである。また、ＩＦ種別は、図５（ｂ）に示すように、グローバル変数が、関数の入力変数と、関数の出力変数と、関数内部の演算値をモニタするためのモニタ変数と、入力変数及び出力変数以外で他の関数と共有される共有変数と、関数による演算実行中に固定値が設定されるパラメータ変数とに分類されるように設定されている。
【００３４】
関数ＩＦ表作成部４２は、図５（ａ）に示すような変数分類ルール３３に従って、関数コールツリー及び変数リードライト表から関数内部（関数コールツリー上のサブ関数を含む）と関数外部におけるグローバル変数のアクセス方式の組み合わせを解析し、各グローバル変数のＩＦ種別を「入力変数」、「出力変数」、「モニタ変数」、「共有変数」及び「パラメータ変数」の中から決定し、図６に示すような関数ＩＦ表を作成する。
【００３５】
＜ステップＳ３：スケーリング情報付加工程＞
続いて、図２のステップＳ３において、演算処理装置４０のスケーリング情報付加部４３は、記憶装置３０のデータディクショナリ３４から各グローバル変数に対応するスケーリング情報を読み出し、当該読み出したスケーリング情報を、関数ＩＦ表作成部４２によって作成された関数ＩＦ表に付加する。
【００３６】
ここで、スケーリング情報とは、Ｃ言語プログラム３２を構成する関数とシミュレータアプリケーション４７間での値の受け渡しを行う際に、Ｃ言語プログラム３２の関数がシミュレータアプリケーション４７から物理値を渡された場合、この物理値を関数内で演算可能な論理値に変換するための情報である。このスケーリング情報を用いることにより、例えば、シミュレータアプリケーション４７から物理値として加速度を表す「１０Ｇ」が渡された場合、この加速度「１０Ｇ」を関数内で演算可能な論理値に変換が可能となる。逆に、このスケーリング情報を用いると、論理値で出力される関数の演算結果を物理値に変換してシミュレータアプリケーション４７に渡すことも可能となる。
【００３７】
つまり、スケーリング情報を関数ＩＦ表に付加することで、ユーザはシミュレータアプリケーション４７上で物理値によるシミュレーションを行うことが可能となり、シミュレータアプリケーション４７の使い勝手の向上、ひいては開発効率の向上につながる。なお、図７は、関数ＩＦ表に付加されたスケーリング情報の一例である。
【００３８】
＜ステップＳ４：インターフェイスプログラム作成工程＞
最後に、図２のステップＳ４において、演算処理装置４０のＩＦプログラム作成部４４は、記憶装置３０のデータディクショナリ３４からシミュレータアプリケーション４７のソフトウェア仕様情報を読み出し、当該読み出したソフトウェア仕様情報と、スケーリング情報付加部４３によってスケーリング情報が付加された関数ＩＦ表とに基づいて、Ｃ言語プログラム３２を構成する関数とシミュレータアプリケーション４７間での値の受け渡しを実現するＩＦプログラム４５を作成する。
【００３９】
作成されたＩＦプログラム４５は、シミュレータ用コンパイラ４６によってＣ言語プログラム３２と共にコンパイルされ、シミュレータアプリケーション４７上で実行可能なシミュレータ用ＤＬＬ３５が生成される。つまり、シミュレータ用ＤＬＬ３５には、Ｃ言語プログラム３２を構成する関数の関数ライブラリと、ＩＦプログラム４５を構成する関数の関数ライブラリとが含まれることになる。以降、シミュレータアプリケーション４７は、シミュレータ用ＤＬＬ３５を用いることで、既存の設計資産であるＣ言語プログラム３２の関数を利用したシミュレーションを行うことが可能となる。
【００４０】
ここで、シミュレータアプリケーション４７は、シミュレータ用ＤＬＬ３５として関数ライブラリ化されたＩＦプログラム４５に基づいて、図８（ａ）に示す初期化処理と図８（ｂ）に示すステップ実行処理とを実行することが可能となる。初期化処理とは、シミュレーション開始時に１回実行される処理であり、図８（ａ）に示すように、変数クリア処理（ステップＳ１１）、初期化関数コール処理（ステップＳ１２）、及びパラメータ設定処理（ステップＳ１３）を含んでいる。
【００４１】
変数クリア処理とは、制御プログラムで使用するＲＡＭ内の記憶領域の値を「０」に設定する処理である。また、初期化関数コール処理とは、シミュレータ用ＤＬＬ３５の中から初期化処理用の関数をコールする（呼び出す）処理である。また、パラメータ設定処理とは、シミュレータ環境のパラメータ値（言い換えれば、シミュレータアプリケーション４７上で設定されたパラメータ値）を、選択されたＣ言語プログラム３２の関数のパラメータ変数にセットする処理である。なお、シミュレータ環境のパラメータ値が物理値であった場合には、スケーリング情報によって関数内で演算可能な論理値に変換される。
【００４２】
一方、ステップ実行処理とは、シミュレーション中のイベント発生時、或いは周期的に実行される処理であり、図８（ｂ）に示すように、入力変数セット処理（ステップＳ２１）、実行関数コール処理（ステップＳ２２）、及び出力変数・モニタ変数設定処理（ステップＳ２３）を含んでいる。
【００４３】
入力変数セット処理とは、シミュレータアプリケーション４７上で作成された関数ブロック（制御モデルの構成要素となるブロック）の入力ポートの値を、シミュレータ用ＤＬＬ３５から選択された関数の入力変数にセットする処理である。なお、関数ブロックの入力ポートの値が物理値であった場合には、スケーリング情報によって関数内で演算可能な論理値に変換される。
【００４４】
また、実行関数コール処理とは、シミュレータ用ＤＬＬ３５から選択された関数をコールし、その関数の入力変数にセットされた値を用いて、その関数に応じた演算を実行する処理である。また、出力変数・モニタ変数設定処理とは、演算実行後に関数の出力変数及びモニタ変数にセットされる演算結果の値を、シミュレータアプリケーション４７上の関数ブロックの出力ポートにセットする処理である。この場合、選択された関数の出力変数及びモニタ変数の値は論理値であるため、スケーリング情報によって物理値に変換された後、関数ブロックの出力ポートにセットされる。
このように、ＩＦプログラム４５を用いることにより、ソースコードであるＣ言語プログラム３２を構成する関数とシミュレータアプリケーション４７間での値の受け渡しが可能となる。
【００４５】
以上説明したように、本実施形態によれば、既存の設計資産であるソースコード（Ｃ言語プログラム３２）を利用したシミュレーションに必要なＩＦプログラム４５を自動作成することができるため、組み込み制御プログラムを利用したシミュレーション環境の構築が容易となり、その結果、開発効率の向上が可能となる。
【００４６】
なお、本発明は上記実施形態に限定されず、以下のような変形例が挙げられる。
（１）上記実施形態では、車両用ＥＣＵに実装すべき制御プログラムのモデルベース開発を支援する開発支援装置１を例示して説明したが、本発明は車両用の制御プログラムに限らず、様々な制御プログラムのモデルベース開発に適用することができる。また、ＩＦプログラム４５の作成に用いるソースコードの記述言語もＣ言語に限定されない。
【００４７】
（２）上記実施形態では、スケーリング情報が付加された関数ＩＦ表を用いてＩＦプログラム４５を作成する場合を例示したが、必ずしもスケーリング情報を付加する必要はない。すなわち、データディクショナリ３４にスケーリング情報が含まれていない場合には、スケーリング情報付加部４３を削除し、スケーリング情報が付加されていない関数ＩＦ表を用いてＩＦプログラム４５の作成を行うようにしても良い。
【００４８】
（３）上記実施形態では、グローバル変数のＩＦ種別を、入力変数、出力変数、モニタ変数、共有変数及びパラメータ変数の５つの種別に分類する場合を例示したが、これに限らず、シミュレータアプリケーション４７のソフトウェア仕様に応じて、適宜、ＩＦ種別の変更、追加、削除を行っても良い。
【００４９】
（４）上記実施形態では、開発支援装置１にＩＦプログラム４５の自動作成機能だけでなく、シミュレータ用コンパイラ４６によるコンパイル機能及びシミュレータアプリケーション４７によるシミュレーション機能を実装した場合を例示したが、開発支援装置１にはＩＦプログラム４５の自動作成機能だけを実装し、コンパイル機能及びシミュレーション機能については他のパーソナルコンピュータに実装されているものを使用するようにしても良い。つまり、ＩＦプログラム４５の自動作成機能と、コンパイル機能及びシミュレーション機能とを同一のパーソナルコンピュータに実装する必要はない。
【符号の説明】
【００５０】
１…開発支援装置、１０…入力装置、２０…表示装置、３０…記憶装置、３１…開発支援プログラム、３２…Ｃ言語プログラム（ソースコード）、３３…変数分類ルール、３４…データディクショナリ（スケーリング情報）、３５…シミュレータ用ＤＬＬ、４０…演算処理装置、４１…Ｃ言語プログラム解析部（ソースコード解析部）、４２…関数ＩＦ表作成部（関数インターフェイス情報作成部）、４３…スケーリング情報付加部、４４…ＩＦプログラム作成部（インターフェイスプログラム作成部）、４５…ＩＦプログラム（インターフェイスプログラム）、４６…シミュレータ用コンパイラ、４７…シミュレータアプリケーション
【図１】
2011165051.tif 000003
【図２】
2011165051.tif 000004
【図３】
2011165051.tif 000005
【図４】
2011165051.tif 000006
【図５】
2011165051.tif 000007
【図６】
2011165051.tif 000008
【図７】
2011165051.tif 000009
【図８】
2011165051.tif 000010