JP4728563B2 - コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム - Google Patents

コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム Download PDF

Info

Publication number
JP4728563B2
JP4728563B2 JP2003017668A JP2003017668A JP4728563B2 JP 4728563 B2 JP4728563 B2 JP 4728563B2 JP 2003017668 A JP2003017668 A JP 2003017668A JP 2003017668 A JP2003017668 A JP 2003017668A JP 4728563 B2 JP4728563 B2 JP 4728563B2
Authority
JP
Japan
Prior art keywords
model
storage medium
selection information
partial
specifier
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.)
Expired - Lifetime
Application number
JP2003017668A
Other languages
English (en)
Other versions
JP2004227500A (ja
Inventor
正也 大井
義貴 植松
明史 岩井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2003017668A priority Critical patent/JP4728563B2/ja
Priority to US10/761,207 priority patent/US20040154003A1/en
Publication of JP2004227500A publication Critical patent/JP2004227500A/ja
Application granted granted Critical
Publication of JP4728563B2 publication Critical patent/JP4728563B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、モデルによるプログラムの開発において用いられるコード生成装置、コード生成プログラム、シミュレーション装置、シミュレーションプログラム、モデル生成装置、およびモデル生成プログラムに関するものである。
【0002】
【従来の技術】
従来、例えば車両のエンジンECUの作動のためのプログラムにおいては、開発者が直接そのプログラムのソースコードを記述せず、目的とするプログラムの機能を、より作成が簡易で視認性の良い「モデル」という形態で記述する場合がある。開発者は、このモデルに対応したプログラム開発環境がインストールされたワークステーション、パーソナルコンピュータ等を用い、そのモデルをもとに目的とするプログラムの動作の確認および試験を行い、更にそのモデルからソースコードを生成する。目的とするプログラムの動作の確認および試験の機能を担うプログラムをシミュレーションツールと呼び、モデルからソースコードを生成する機能を担うプログラムをコード生成ツールと呼ぶ。コード生成ツールやシミュレーションツールは、最初からモデル開発環境に統合されている場合もあれば、追加モジュールとしてモデル開発環境に後から組み込まれる場合もある。
【0003】
モデルに対応したプログラム開発環境としては、Matlab(登録商標)がある。Matlab(登録商標)においては、開発者はMatlab(登録商標)の一機能であるSimulink(登録商標)を用いて、目的とするプログラムの機能を、ブロックと呼ばれる機能単位の組み合わせとして記述する。この組み合わされたブロックの集合体がモデルである。Simulink(登録商標)のブロックとしては、例えばサイン関数を生成するブロック、ファイルからデータを読み出すブロック、入力されたデータに対する特定の四則演算を行うブロック、ブロックの組み合わせから成る上位のブロックとしてのサブシステム等がある。
【0004】
このように、プログラム開発において、開発者がモデルを生成し、コード生成ツールによってモデルからソースコードが生成され、最終的にソースコードからプログラムが生成されるという手順を取ると、当初のモデルによってプログラムが表現されることで当該プログラムの機能の視認性が良くなる等の有益な効果を得ることができる。
【0005】
また、上記したエンジンECUのためのプログラムにおいては、V6(V型6気筒)、V8(V型8気筒)、I6(直列6気筒)等のエンジンの機種別、日本向け、欧州向け、米国向け等の仕向け別、あるいはメーカー納入用途、デバッグ用途等の目的別といったバリエーションに応じて複数の種類のプログラムを作成する場合がある。
【0006】
これらのバリエーションは、互いに共通する部分を多く有するので、バリエーション毎に別個にモデルの開発を行うよりは、各バリエーションを含む1つのモデルを作成する方が、プログラムの開発、管理労力の低減に繋がる。
【0007】
1つのモデルからバリエーションに応じて複数の種類のソースコードを作成するためには、モデルにおいてバリエーションの違いが表現され、どのバリエーションのソースコードを生成するかを切り替えることができるようになっている必要がある。これを実現する方法としては、従来、スイッチ機能を有するブロックを用いた切り替え方法が用いられている。図17に、この従来の切り替え方法で表現したモデルの一部分を示す。
【0008】
V6用サブシステム51、V8用サブシステム52、I6用サブシステム53は、ブロックの集合体であり、それぞれがV6エンジン用、V8エンジン用、I6エンジン用のバリエーションに対応した処理が記述されている。これらのサブシステムは、それぞれが有するブロックによって規定された所定の演算結果を出力するようになっている。入力端子55は、選択ブロック54に対して設定可能な値としての選択信号aを入力する端子である。
【0009】
選択ブロック54は、入力端子55からの入力値に基づいて、V6用サブシステム51、V8用サブシステム52、I6用サブシステム53から入力される演算結果のいずれか1つを出力する機能を有するブロックである。
【0010】
このような部分を有するモデルが、コード生成ツールによってソースコードに変換された場合、そのソースコードのうち図17に示した部分に対応する部分は、例えば図18の様になる。
【0011】
この図のソースコード中のSwitch文は、中括弧{}で囲まれた領域において、引数aの値が1、2、または3の場合、それぞれcase 1:、case 2:、case 3:と直後のbreak文との間にある文を実行することを規定する文である。Switch文が選択ブロック54に対応し、引数aが選択信号aに対応し、case 1:から直後のbreak文までの間のコードがV6用サブシステム51に対応し、case 2:から直後のbreak文までの間のコードがV8用サブシステム52に対応し、case 3:から直後のbreak文までの間のコードがI6用サブシステム53に対応する。
【0012】
【発明が解決しようとする課題】
このように生成されたソースコードは、例えば設定された選択信号aの値が1であればV6用サブシステム51に対応するソースコードの部分が実行されるようになり、V8、I6に対応するソースコードの部分は実行されることがない。したがって、生成されたコードは選択信号aによってそれぞれのバリエーションに対応することができるが、使用することのないソースコードの部分まで形式的に含んでいるので、このソースコードがコンパイルされると、無駄なソースコード部分を含むプログラムが生成され、プログラムサイズが増大してしまう。この結果、プログラムを格納するメモリの容量が圧迫されてしまう。
【0013】
本発明は上記点に鑑みて、複数のバリエーションに対応するモデルからソースコードが生成されるプログラム開発環境において、生成されるソースコードから当初のモデルの不要な部分に対応するソースコードが除かれているようにすることを目的とする。
【0014】
またプログラム開発環境においては、モデルからソースコードが生成されるまでの間の段階として中間コードが生成される場合もあることに鑑みて、複数のバリエーションに対応するモデルからさらにモデルが生成されるプログラム開発環境において、生成されるモデルから当該モデルの不要な部分に対応するモデルが除かれているようにすることも目的とする。
【0015】
また、上記のようなプログラム開発環境において、モデルからオブジェクトコードを生成する前に、あらかじめ当該オブジェクトコードの動作を確認するために、当該モデルを直接実行するシミュレーションプログラムまたは装置が提供されることがある。このようなシミュレーションプログラム等は、モデル生成されるオブジェクトコードと同等の動作を実現する必要があることに鑑み、複数のバリエーションに対応するモデルを実行して動作を確認するプログラム開発環境において、実行されるモデルを、当初のモデルの不要な部分に対応する機能を除いた形で実行することも目的とする。
【0016】
【課題を解決するための手段】
上記した課題を解決するための請求項1に記載の発明は、ECUに搭載するためのプログラムのソースコードの開発において、前記ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルから、前記モデルが含む機能を表すソースコードを生成するコード生成装置であって、入力装置(12)と、CPU(16)と、第1の記憶媒体(15)と、第2の記憶媒体(13)と、を備え、前記入力装置は、ユーザが操作することにより、その操作に応じた信号を前記CPUに出力し、前記CPUは、自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応する前記モデルを前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と、前記部分指定子のいずれかを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、および前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子および前記選択情報取得処理にて取得した前記選択情報に基づいて、前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された部分指定子以外の部分指定子が指定する部分を取り除き、取り除いた結果として前記複数のバリエーションのうち特定のバリエーションのみを含む前記モデルが含む機能を表すソースコードを生成し、生成した前記ソースコードを前記第1の記憶媒体に記録する除去生成処理とを実行することを特徴とするコード生成装置である。
【0017】
これによって、除去生成手段が、モデル取得手段が取得したモデルに含まれる部分指定子および選択情報取得手段が取得した選択情報に基づいて、モデルから部分指定子が指定する部分を取り除いたものからソースコードを生成するので、部分指定子で指定された、不要となり得るモデルの部分は、選択情報によっては生成されるソースコードから取り除かれる。したがって、複数のバリエーションに対応するモデルからソースコードが生成されるプログラム開発環境において、生成されるソースコードから当該モデルの不要な部分に対応するソースコードが除かれているようにすることが可能となる。
【0018】
なお、部分指定子は1つのモデル中に複数含まれていても構わない。また、除去生成手段が「モデルから部分指定子が指定する部分を取り除いたもの」とは、モデルに含まれる部分指定子のうちの1つまたは複数が指定する部分を取り除いたもの、およびモデルに含まれる「全ての」部分指定子が指定する部分を取り除いたものを含む概念である。
【0019】
また、請求項2に記載の発明は、請求項1に記載のコード生成装置において、前記部分指定子は、指定するモデルの部分を、その部分の入力側と出力側から囲む部分指定ブロックから成り、前記除去生成手段は、前記モデル取得手段が取得した前記モデルに含まれる前記部分指定ブロックおよび前記選択情報取得手段が取得した前記選択情報に基づいて、前記モデルから前記部分指定子が指定する部分を取り除いたものからソースコードを生成することを特徴とする。
【0020】
また、請求項3に記載の発明は、請求項1に記載のコード生成装置において、前記モデル中の各ブロックは、少なくとも当該ブロックの名称を含む属性情報を有し、前記部分指定子は、指定する前記部分中のブロックが有する属性情報に含まれることを特徴とする。
【0021】
また、請求項4に記載の発明は、ECUに搭載するためのプログラムのソースコードの開発において、前記ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルから、前記モデルが含む機能を表すソースコードを生成するコード生成装置であって、入力装置(12)と、CPU(16)と、第1の記憶媒体(15)と、第2の記憶媒体(13)と、を備え、前記入力装置は、ユーザが操作することにより、その操作に応じた信号を前記CPUに出力し、前記CPUは、自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応する前記モデルを前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と複数のバリエーションの中の個々のバリエーションに対応する項目の1つを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子と、前記選択情報取得処理にて取得した前記選択情報と、の相関関係を示す相関情報を前記第1の記憶媒体から読み出す相関情報取得処理と、および前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された項目に対応する部分指定子を、前記相関情報の相関関係に基づいて、前記第2の記憶媒体に記録し、記録された当該部分指定子以外の部分指定子が指定する部分を取り除き、取り除いた結果として前記複数のバリエーションのうち特定のバリエーションのみを含む前記モデルが含む機能を表すソースコードを生成し、生成した前記ソースコードを前記第1の記憶媒体に記録する除去生成処理とを実行することを特徴とするコード生成装置である。
【0022】
また、請求項5に記載の発明は、請求項1ないし4のいずれか1つに記載のコード生成装置において、前記選択情報は、前記除去生成手段が生成するソースコードから生成されるプログラムが搭載される先のECUの情報を含むことを特徴とする。
【0023】
また、請求項6に記載の発明は、請求項1ないし5のいずれか1つに記載のコード生成装置において、前記選択情報は、前記除去生成手段が生成するソースコードの仕向け地の情報を含むことを特徴とする。
【0024】
また、請求項7に記載の発明は、請求項1ないし6のいずれか1つに記載のコード生成装置において、前記選択情報は、前記除去生成手段が生成するソースコードが試験用であるか量産用であるかの情報を含むことを特徴とする。
【0025】
また、請求項8に記載の発明は、請求項1に記載の発明と同じ機能をプログラムとして実現するものである。
【0026】
また、請求項9に記載の発明は、ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルから、前記モデルが含む機能を表すソースコードを生成しないまま、前記モデルが含む機能を実行する機能実行装置であって、入力装置(12)と、CPU(16)と、第1の記憶媒体(15)と、第2の記憶媒体(13)と、を備え、前記入力装置は、ユーザが操作することにより、その操作に応じた信号を前記CPUに出力し、前記CPUは、自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応する前記モデルを前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と、前記部分指定子のいずれかを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、および前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子および前記選択情報取得処理にて取得した前記選択情報に基づいて、前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された部分指定子以外の部分指定子が指定する部分を取り除き、取り除いた結果として前記複数のバリエーションのうち特定のバリエーションのみを含む前記モデルが含む機能を表すソースコードを生成しないまま、当該モデルが含む機能を実行する除去実行処理とを実行することを特徴とする機能実行装置生成装置である。
【0027】
これによって、除去実行手段が、モデル取得手段が取得したモデルに含まれる部分指定子および選択情報取得手段が取得した選択情報に基づいて、モデルから部分指定子が指定する部分を取り除いたものに記述された機能を実行するので、部分指定子で指定された、不要となり得るモデルの部分は、選択情報によっては生成されるモデルから取り除かれる。
【0028】
したがって、複数のバリエーションに対応するモデルを実行して動作を確認するプログラム開発環境において、実行されるモデルから当該モデルの不要な部分に対応するソースコードが除かれているようにすることが可能となる。
【0029】
また、請求項10に記載の発明は、請求項9に記載の発明と同じ機能をプログラムとして実現するものである。
【0030】
また、請求項11に記載の発明は、入力装置(12)と、CPU(16)と、第1の記憶媒体(15)と、第2の記憶媒体(13)と、を備え、前記入力装置は、ユーザが操作することにより、その操作に応じた信号を前記CPUに出力し、前記CPUは、ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルであり、自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応するモデルを、前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と、前記部分指定子のいずれかを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、および前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子および前記選択情報取得処理にて取得した前記選択情報に基づいて、前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された部分指定子以外の部分指定子が指定する部分を取り除いたモデルを生成し、生成した結果として前記複数のバリエーションのうち特定のバリエーションのみを含むモデルを前記第2の記憶媒体に記録する除去生成処理とを実行することを特徴とするモデル生成装置である。
【0031】
これによって、除去生成手段が、モデル取得手段が取得したモデルに含まれる部分指定子および選択情報取得手段が取得した選択情報に基づいて、モデルから部分指定子が指定する部分を取り除いたモデルを生成するので、部分指定子で指定された、不要となり得るモデルの部分は、選択情報によっては生成されるモデルから取り除かれる。したがって、複数のバリエーションに対応するモデルを実行して動作を確認するプログラム開発環境において、実行されるモデルを、当該モデルの不要な部分に対応する機能を除いた形で実行することが可能となる。
【0032】
また、請求項12に記載の発明は、請求項11に記載の発明と同じ機能をプログラムとして実現するものである。また、請求項13に記載の発明は、請求項4に記載の発明と同じ機能をプログラムとして実現するものである。
【0033】
【発明の実施の形態】
(第1実施形態)
図1に、本発明の第1実施形態に係る、コード生成装置としてのパーソナルコンピュータ1の構成を示す。パーソナルコンピュータ1は、ディスプレイ11、入力装置12、RAM13、ROM14、HDD15、およびCPU16から構成される。
【0034】
ディスプレイ11は、CPU16から入力された映像信号を、ユーザに対して映像として表示する。
【0035】
入力装置12は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をCPU16に出力する。
【0036】
CPU16は、パーソナルコンピュータ1に電源が投入されることによって起動すると、ROM(リードオンリーメモリー)14から所定のブートプログラムを読み出して実行し、このブートプログラムに規定されるMS−Windows(登録商標)等のオペレーティングシステム(以下OSと記す)その他のプログラムをHDD(ハードディスクドライブ)15から読み出して実行することにより、起動処理を行う。起動処理以後電源が遮断されるまで、CPU16は、入力装置12からの信号、OSによって予め定められたスケジュール等に基づいて、HDD15に記録されている各種プログラムを当該OS上のプロセスとして実行する。また、上記した起動処理およびプロセスにおいて、CPU16は必要に応じて入力装置12から信号の入力を受け付け、またディスプレイ11に映像信号を出力し、またRAM13、HDD15に対してデータの読み出し/書き込みの制御を行う。
【0037】
図2に、HDD15に保存され、OS上のプロセスとして実行されるプログラムの1つであるコード生成ツール2の構成および作動の概念図を示す。コード生成ツール2は、OSの仕様に従ったユーザの入力装置12の操作によって起動し、その後ユーザの入力装置12の操作に基づいて、モデルからソースコードを生成するプログラムである。
【0038】
ソースコードとは、例えばC++等のプログラミング言語の仕様に則ってプログラム開発者が作成するプログラムの一表現形態である。ソースコードはコンパイラ、リンカ等に入力されることで、CPU等が直接実行できるオブジェクトコードに変換される。なお、オブジェクトコードもプログラムの一表現形態である。
【0039】
モデルとは、ソースコードよりも記述が簡易になり、かつ人による可読性が高くなる目的で定められたモデル言語仕様に基づいて作成されるプログラムの一表現形態である。モデルとしては、例えばSimulink(登録商標)によって作成されるSimulinkモデルがある。Simulink(登録商標)モデルが、Matlab(登録商標)上で動作するReal Time Workshop(登録商標:以下RTWと記す)に入力されることにより、このRTWが当該Simulink(登録商標)モデルに対応するソースコードを生成する。
【0040】
Simulink(登録商標)モデルは、ブロックと呼ばれる機能単位の組み合わせからなる集合体として作成される。組み合わせとは、機能単位間の入出力の繋がりをいう。ブロックの具体例としては、例えば入力される2つの数値データを加算して出力する加算ブロック等がある。また、複数のブロックの集合体をサブシステムというブロックの一種として定義することもできる。すなわち、ブロックの中にブロックが含まれるような入れ子構造のブロックの作成も許される。また、Simulink(登録商標)モデル中の各ブロックは、それぞれ属性情報を有することができる。属性情報としては、例えば当該ブロックの名称、入出力するデータの値域定義等がある。
【0041】
本実施形態におけるモデルも、Simulink(登録商標)モデルと同様にブロックから成り、ブロックの入れ子構造が許され、各ブロックが属性情報を有することができる。
【0042】
コード生成ツール2は、その機能面から生成モデル抽出エンジン21、コード生成エンジン22、生成ルール23に分けることができる。
【0043】
生成モデル抽出エンジン21は、入力されるモデル3および選択情報4に基づいて中間モデルを生成する。この中間モデルは、モデルの一種である。
【0044】
コード生成エンジン22は、生成モデル抽出エンジン21によって生成された中間モデルからソースコードを生成する。この中間モデルからソースコードを生成するための規則を定めた情報が生成ルール23である。生成ルールはコード生成ツール2の一部として存在していてもよいし、あるいはコード生成ツール2の外部のファイルとしてHDD15に保存されていてもよい。なお、生成モデル抽出エンジン21とコード生成エンジン22との区別は、あくまでもコード生成ツール2の機能面から見た区別であって、必ずしもプログラムとしては分離している必要はない。実際、本実施形態においては、生成モデル抽出エンジン21とコード生成エンジン22とは一体のプログラムとして実現される。
【0045】
生成されたソースコードは、HDD15に記録されているコンパイラ、リンカ5を実行することによってオブジェクトコードに変換される。
【0046】
図3に、コード生成ツール2に入力されるモデル3の一例を示す。このモデルは、車両のエンジンECUに搭載されるプログラムのためのモデルの一部であり、V6スタート31、V6用サブシステム32、V6エンド33、V8スタート34、V8用サブシステム35、V8エンド36、I6スタート37、I6用サブシステム38、およびI6エンド39から構成される。
【0047】
V6スタート31、V6エンド33、V8スタート34、V8エンド36、I6スタート37、およびI6エンド39は部分指定ブロックである。部分指定ブロックは上述したブロックの一種であり、本発明における部分指定子に相当する。さらに部分指定ブロックは、V6スタート31、V8スタート34、I6スタート37のスタートブロック、およびV6エンド33、V8エンド36、I6エンド39のエンドブロックに分類される。1種類のスタートブロックには必ず対応する同種のエンドブロックが存在する。図3においては、V6スタート31とV6エンド33、V8スタート34とV8エンド36、およびI6スタート37とI6エンド39がそれぞれ対応するブロックである。
【0048】
V6用サブシステム32、V8用サブシステム35、およびI6用サブシステム38は、ブロックの集合体を有するブロック、すなわち入れ子構造のブロックである。それぞれのサブシステムは、V6エンジン、V8エンジン、I6エンジンといった、対象とする機種の制御に特有な機能を記述するブロックから構成されている。
【0049】
なお、上記したそれぞれのブロックは、V6スタート、I6サブシステム等の自己の名称を属性情報として有している。また、スタートブロックは自己がスタートブロックである旨の情報を属性情報に有し、エンドブロックは自己がエンドブロックである旨の情報を属性情報に有している。
【0050】
部分指定ブロックは、互いに対応する1対のスタートブロックとエンドブロックとの組としてモデル3中に現れる。そして、ブロック中のスタートブロックと、それに対応するエンドブロックとに前後を囲まれるブロック、サブシステム等は、当該部分指定ブロックによって、V6用、V8用、I6用等のバリエーションに対応する部分であると指定されることになる。
【0051】
図4に、各サブシステムにおいてブロックの記述が異なる例として、入力されるエンジンの各気筒の状態を加算することでエンジン全体の状態を出力する機能を表現するブロックを示す。図4(a)がV6およびI6のサブシステム用のブロックであり、図4(b)がV8のサブシステム用のブロックである。V6、I6のエンジンは気筒数が6であるので、6本の入力端子を有するブロックが用いられる。また、V8のエンジンは気筒数が8であるので、8本の入力端子を有するブロックが用いられる。
【0052】
図5に、コード生成ツール2において、ユーザが所定の操作をすることによって開始される、モデルからソースコードを生成する処理を示す。所定の操作とは、ユーザがコード生成ツール2に入力するモデル3、選択情報4を指定するために入力装置12を操作し、さらに図5の処理を開始するよう要求するために入力装置12を操作することをいう。なお、本実施形態においては、選択情報4は特定のスタートブロックの名称である。また、選択情報4は、HDD15中の特定のファイル中に予め設定されていてもよいし、ユーザが選択情報4の指定時に直接入力して設定してもよい。以下、図5の処理について説明する。
【0053】
まずステップ510で、ユーザによって指定されたモデル3を読み込む。具体的には、モデル3として保存されているHDD15中のファイルを読み出してRAM13に書き込む。
【0054】
次にステップ520で、ユーザによって指定された選択情報4を読み込む。具体的には、選択情報4として保存されているHDD15中のファイルを読み出してRAM13に書き込む。あるいは、入力装置12から直接設定された情報を選択情報4としてRAM13に書き込む。
【0055】
次にステップ530では、モデル3中のスタートブロックの検索を行う。具体的には、RAM13に書き込んだモデル3に含まれる全てのブロックについて、それがスタートブロックであるか否かを判定し、スタートブロックであると判定したもの全てについて、そのブロックの属性情報、モデル3内の位置等の情報をスタートブロックリストとしてRAM13に書き込む。
【0056】
次にステップ535で、スタートブロックリストの先頭にあるスタートブロックの情報を読み出し、その後読み出したスタートブロックの情報をスタートブロックリストから削除する。先頭のスタートブロックの情報が削除されることで、次のスタートブロックの情報が先頭のスタートブロックの情報となる。
【0057】
次にステップ540で、当該スタートブロックの名称がRAM13に記録された選択情報4と一致しているか否かを判定する。一致していると判定すると、処理はステップ555に進む。一致していないと判定すると、処理はステップ550に進む。
【0058】
ステップ550では、当該スタートブロックおよびそれと対になるエンドブロックに囲まれた部分、すなわち当該部分指定子によって指定される部分を削除する。具体的には、当該スタートブロックの位置から、モデル3における後段方向へ向けて、当該スタートブロックと対になるエンドブロックを検索する。そしてRAM13中のモデル3を、見つかったエンドブロックから当該スタートブロックまでのブロックが削除されたモデル3に書き換える。そして処理はステップ555に進む。
【0059】
ステップ555では、当該スタートブロックおよびこれと対になるエンドブロックを、ステップ550で書き換えられたモデル3から削除する。すなわち、RAM13中のモデル3を、そのモデル3から当該スタートブロックおよびエンドブロックが削除されたモデル3に書き換える。
【0060】
次にステップ560では、当該スタートブロックが最後のスタートブロックであるか否かを判定する。具体的には、スタートブロックリストにスタートブロックの情報が無ければ肯定であると判定し、あれば否定であると判定する。否定と判定すれば、処理はステップ535に戻る。肯定の場合、処理はステップ570に進み、RAM13に記録されているモデル3から、生成ルール23に従ってソースコードを生成し、生成されたソースコードをHDD15中にファイルとして書き込む。そして処理は終了する。
【0061】
このような作動によって、例えば図3で示されたブロックを含むモデル3と、「V6」を示す選択情報4を入力してコード生成ツール2を作動させると、コード生成ツール2のステップ510〜560の処理によって、図6に示すような中間モデルが生成される。そしてステップ570によってこの中間モデルに対応するソースコードが生成ルール23に従って生成される。したがって、この生成されたソースコードにはV8用、I6用に特化されたコードは含まれることはない。
【0062】
なお、ステップ510〜560の処理は、図2に示した生成モデル抽出エンジン21の機能を実現し、ステップ570の処理は、コード生成エンジン22の機能を実現する。
【0063】
以上のような構成および作動のパーソナルコンピュータ1、コード生成ツール2の効果について以下説明する。
【0064】
V6、V8、I6等、複数のバリエーションに対応するモデルを作成し、ソースコードの作成時に個々のバリエーションにのみ向けられたソースコードを作成したい場合、それぞれのバリエーションに対応する部分を、そのバリエーションに固有の名称を持つ部分指定ブロックで囲んだモデル3を作成する。そして、ソースコード作成時に、選択情報4として特定のバリエーションの名称をファイルまたはユーザによる操作によってコード生成ツール2に入力し、また当該モデル3をコード生成ツール2に入力する。
【0065】
これによって、コード生成ツール2は選択情報4に示された名称以外の名称の部分指定ブロックに囲まれたサブシステム等をモデル3から削除した上でソースコードを生成する。したがって、複数のバリエーションに対応するモデルからソースコードが生成される開発環境において、当該ソースコードから不要なバリエーションに対応するソースコードが除かれていることになる。ひいては、このソースコードからコンパイル、リンクによって生成されるプログラムサイズの低減、およびこのプログラムを記録するメモリの容量の圧迫の緩和が実現される。
【0066】
また、複数のバリエーションに対応するモデルからさらにモデルが生成されるプログラム開発環境において、生成されるモデルから当初のモデルの不要な部分に対応するモデルが除かれているようにすることも可能となる。
【0067】
(第2実施形態)
以下、本発明の第2実施形態について説明する。本実施形態も、図1および図2で示したようなハードウェア構成およびソフトウェア構成から成っている。なお、本実施形態において第1実施形態と同一の部分があれば、その説明は省略または簡略化する。
【0068】
本実施形態が第1実施形態と異なるのは、第1実施形態の部分指定子が部分指定ブロックであったことに対し、本実施形態の部分指定子がサブシステムの属性情報に含まれることである。
【0069】
図7に、本実施形態においてコード生成ツール2に入力されるモデル3の一部を例示する。このモデル3は、Aサブシステム71、Bサブシステム72、Cサブシステム73、Dサブシステム74、およびEサブシステム75を有している。また、上記したサブシステムは、それぞれ属性情報71a、72a、73a、74a、75aを有している。各属性情報は、部分指定子としての選択情報の項目を有し、その項目の値として、属性情報71aにはV6が、属性情報72aにはV8が、属性情報73aにはI6が、属性情報74aにはV6およびV8が、属性情報75aにはI6が、設定されている。
【0070】
図8に、本実施形態のコード生成ツール2において、ユーザが所定の操作をすることによって開始される、モデルからソースコードを生成する処理を示す。
【0071】
ステップ810、820の処理は図3に示したステップ510、520の処理と同等である。ただし、本実施形態においては、選択情報4は、V6、V8、I6等の選択情報の値である。
【0072】
次にステップ825では、モデル3中のサブシステムの検索を行う。具体的には、RAM13に書き込んだモデル3に含まれる全てのブロックについて、サブシステムであるか否かを判定し、サブシステムであると判定したもの全てについて、そのサブシステムの属性情報、モデル3内の位置等の情報をサブシステムリストとしてRAM13に書き込む。
【0073】
次にステップ830で、サブシステムリストの先頭にあるサブシステムの属性情報等の情報を読み出し、その後当該サブシステムの情報をサブシステムリストから削除する。そしてステップ840で、読み出した属性情報中の使用バリエーションの項目に、選択情報4と一致するものがあるか否かを判定する。一致するものが無ければ処理はステップ850に進み、RAM13中のモデル3を、モデル3から当該サブシステムが削除されたものに書き換え、その後ステップ860に進む。ステップ840で一致するものがあれば、処理は直接ステップ860に進む。
【0074】
ステップ860では、全てのサブシステムの属性情報について読み込みが完了したか否かを判定する。具体的には、サブシステムリストにサブシステムの情報が無ければ肯定であると判定し、あれば否定であると判定する。否定と判定すれば、処理はステップ830に戻る。肯定の場合、処理はステップ870に進み、RAM13に記録されているモデル3から、生成ルール23に従ってソースコードを生成し、生成されたソースコードをHDD15中にファイルとして書き込む。そして処理は終了する。
【0075】
このような作動によって、例えば図7で示されたブロックを含むモデル3と、「V6」を示す選択情報4を入力してコード生成ツール2を作動させると、コード生成ツール2のステップ810〜860の処理によって、図9に示すような中間モデルが生成される。そしてステップ870によってこの中間モデルに対応するソースコードが生成される。したがって、この生成されたソースコードにはV8用、I6用に特化されたコードは含まれることはない。
【0076】
なお、ステップ810〜860の処理は、図2に示した生成モデル抽出エンジン21の機能を実現し、ステップ870の処理は、コード生成エンジン22の機能を実現する。
【0077】
以上のような構成および作動のパーソナルコンピュータ1、コード生成ツール2の効果について以下説明する。
【0078】
V6、V8、I6等、複数のバリエーションに対応するモデルを作成し、ソースコードの作成時に個々のバリエーションにのみ向けられたソースコードを作成したい場合、それぞれのバリエーションに対応する部分をサブシステムとし、そのサブシステムの属性情報中に、使用バリエーションの項目を設け、その項目の値を、当該サブシステムが対応するバリエーションとする。そして、ソースコード作成時に、選択情報4として特定のバリエーションの名称をファイルまたはユーザによる操作によってコード生成ツール2に入力し、また当該モデル3をコード生成ツール2に入力する。なお、使用バリエーションの項目の値としては、V6、V8、I6のいずれか1つであってもよいし、あるいはそれらのうちの任意の2つ、あるいは3つ全部を含む値であってもよい。例えば、V6、I6に共通に用いられるサブシステムは、使用バリエーションの項目としてV6、I6の2つの値を含むようにする。また、全バリエーションで共通して用いられるサブシステムについては、使用バリエーションの項目としてV6、V8、I8の全ての値を含むようにすればよい。このように、サブシステムの属性情報中の使用バリエーションの項目値が、部分指定子に対応する。
【0079】
これによって、コード生成ツール2は選択情報4に示された名称を使用バリエーションの項目の値に含まないサブシステムをモデル3から削除した上で、ソースコードを生成する。したがって、複数のバリエーションに対応するモデルからソースコードが生成される開発環境において、当該ソースコードから不要なバリエーションに対応するソースコードが除かれていることになる。ひいては、このソースコードからコンパイル、リンクによって生成されるプログラムサイズの低減、およびこのプログラムを記録するメモリの容量の圧迫の緩和が実現される。
【0080】
また、複数のバリエーションに対応するモデルからさらにモデルが生成されるプログラム開発環境において、生成されるモデルから当初のモデルの不要な部分に対応するモデルが除かれているようにすることも可能となる。
【0081】
なお、別の例として、自己の属性情報中に使用バリエーションの項目を有さないサブシステム、または使用バリエーションの項目の値がV6、V8、I6のいずれをも含んでいないサブシステムについては、使用バリエーションの項目としてV6、V8、I8の全ての値を含むとみなしてステップ840の処理を行ってもよい。これによって、全てのバリエーションに共通に用いられるサブシステムについては、その属性情報中に能動的にその旨を記述する必要がなくなる。
【0082】
(第3実施形態)
以下、本発明の第3実施形態について説明する。なお、本実施形態において第2実施形態と同一の部分があれば、その説明は省略または簡略化する。
【0083】
図10に、本実施形態におけるコード生成ツール2の構成、作動を概略的に示す。
【0084】
本実施形態が第2実施形態と異なるのは、第1に、第2実施形態の部分指定子が属性情報中の使用バリエーションの項目値であったことに対し、本実施形態の部分指定子がサブシステムの名称となることである。そして第2に、選択情報4と部分指定子との相関関係を示す相関情報として切替マトリクス6が用いられることである。
【0085】
図11に、本実施形態においてコード生成ツール2に入力されるモデル3の一部を例示する。このモデル3は、Aサブシステム81、Bサブシステム82、Cサブシステム83、Dサブシステム84、およびEサブシステム85を有している。それぞれのサブシステムの名称の情報は、それぞれのサブシステムの属性情報に含まれている。
【0086】
図12に、切替マトリクス6の一例を示す。切替マトリクス6は、モデル3に含まれる全サブシステムを行項目として有し、V6、V8、I6といったバリエーションを列項目として有する行列を示す情報である、切替マトリクス6の各セルには1つのフラグが割り当てられている。図12においては、フラグがセットされているセルを丸印で示し、フラグがセットされていない、すなわちリセットされているセルを空白で示している。各フラグのセット、リセットは、あらかじめユーザが設定できる。このように、切替マトリクス6は行項目のバリエーションと列項目のサブシステムとの相関関係を表している。
【0087】
図13に、本実施形態のコード生成ツール2において、ユーザが所定の操作をすることによって開始される、モデルからソースコードを生成する処理を示す。
【0088】
ステップ910、920の処理は図8に示したステップ810、820の処理と同等である。
【0089】
そしてステップ923では、ユーザによって指定された切替マトリクス6を読み込む。具体的には、切替マトリクス6として保存されているHDD15中のファイルを読み出す。更に読み出した切替マトリクス6の、ステップ920で読み出した選択情報4が示すバリエーションに相当する列項目中で、フラグがセットされているセルを検索し、該当する各セルが存在する行のサブシステムのリストを選択リストとしてRAM13に記録する。
【0090】
次にステップ925では、図8のステップ825と同等の処理でモデル3中のサブシステムの検索を行う。
【0091】
次にステップ930で、サブシステムリストの先頭にあるサブシステムの名称の情報を読み出し、その後当該サブシステムの情報をサブシステムリストから削除する。そしてステップ940で、読み出した属性情報中のサブシステムの名称が、選択リストと一致するか否かを判定する。一致しなければ処理はステップ950に進み、RAM13中のモデル3を、モデル3から当該サブシステムが削除されたものに書き換え、その後ステップ960に進む。ステップ940で一致すれば、処理は直接ステップ960に進む。
【0092】
ステップ960では、全てのサブシステムの名称について読み込みが完了したか否かを判定する。具体的な判定処理は図8のステップ860と同等である。否定と判定すれば、処理はステップ930に戻る。肯定の場合、処理はステップ970に進み、RAM13に記録されているモデル3から、生成ルール23に従ってソースコードを生成し、生成されたソースコードをHDD15中にファイルとして書き込む。そして処理は終了する。
【0093】
このような作動によって、例えば図11で示されたブロックを含むモデル3と、「V6」を示す選択情報4と、図12のようにセルをセットした切替マトリクス6とを入力してコード生成ツール2を作動させると、コード生成ツール2のステップ910〜960の処理によって、図14に示すような中間モデルが生成される。そしてステップ970によってこの中間モデルに対応するソースコードが生成される。したがって、この生成されたソースコードにはV8用、I6用に特化されたコードは含まれることはない。
【0094】
なお、ステップ910〜960の処理は、図10に示した生成モデル抽出エンジン21の機能を実現し、ステップ970の処理は、コード生成エンジン22の機能を実現する。
【0095】
以上のような構成および作動のパーソナルコンピュータ1、コード生成ツール2の効果について以下説明する。
【0096】
V6、V8、I6等、複数のバリエーションに対応するモデルを作成し、ソースコードの作成時に個々のバリエーションにのみ向けられたソースコードを作成したい場合、それぞれのバリエーションに対応する部分をサブシステムとし、それらのサブシステムの名称とバリエーションとの相関関係を示す切替マトリクス6を作成する。そして、ソースコード作成時に、選択情報4として特定のバリエーションの名称をファイルまたはユーザによる操作によってコード生成ツール2に入力し、また作成された切替マトリクス6をコード生成ツール2に入力し、また当該モデル3をコード生成ツール2に入力する。
【0097】
これによって、コード生成ツール2は選択情報4に示されたバリエーションおよび切替マトリクス6のセットされたフラグによって相関づけられたサブシステム以外のサブシステムをモデル3から削除した上で、ソースコードを生成する。したがって、複数のバリエーションに対応するモデルからソースコードが生成される開発環境において、当該ソースコードから不要なバリエーションに対応するソースコードが除かれていることになる。ひいては、このソースコードからコンパイル、リンクによって生成されるプログラムサイズの低減、およびこのプログラムを記録するメモリの容量の圧迫の緩和が実現される。
【0098】
また、複数のバリエーションに対応するモデルからさらにモデルが生成されるプログラム開発環境において、生成されるモデルから当初のモデルの不要な部分に対応するモデルが除かれているようにすることも可能となる。
【0099】
また、第1および第2実施形態と異なり、モデル3の各サブシステムは自己の名称のみを有していればよいので、モデル3がバリエーションの切り替えのための情報を特別に有する必要がなく、切替マトリクス6と選択情報4のみで切り替えのための情報を一元管理することができる。
【0100】
(第4実施形態)
図15に、本発明の第4実施形態に係るシミュレーションツール7の構成、作動を概略的に示す。
【0101】
シミュレーションツール7は、入力されたモデル3からソースコードを生成しないまま、パーソナルコンピュータ1上でそのモデル3によって表現されるプログラムを実行するプログラムである。これは、モデル3からコード生成ツール2によってソースコードを生成し、そのソースコードから作成されたオブジェクトコードをエンジンECU等に実装する前に、モデル3に基づくプログラムの動作の試験、確認を行うためのものである。
【0102】
シミュレーションツール7は、その機能面からシミュレーションモデル抽出エンジン24およびシミュレーションエンジン25に分けることができる。
【0103】
シミュレーションモデル抽出エンジン24は、第3実施形態における生成モデル抽出エンジン21と同等の機能を有する。具体的には、モデル3、選択情報4、切替マトリクス6の入力に対して、図13のステップ910〜960に示したような処理を行い、中間モデルを生成する。
【0104】
シミュレーションエンジン25は、シミュレーションモデル抽出エンジン24が生成した中間モデルによって表現されたプログラムの機能を、パーソナルコンピュータ1上で実行する。具体的には、シミュレーションエンジン25は、当該中間モデルを読み込み、その中間モデルをソースコードに変換することなく、それに表現された機能を実行する。そしてその実行の際、ユーザの選択による任意のブロックの入力データ、出力データ、およびそれらの相関関係等の情報をディスプレイ11あるいはプリンタ等に出力する。データの相関関係の情報としては、例えばアクセル開度と燃料噴射量との関係を示すグラフ等がある。
【0105】
なお、シミュレーションモデル抽出エンジン24とシミュレーションエンジン25との区別は、あくまでもコード生成ツール2の機能面から見た区別であって、必ずしもプログラムとしては分離している必要はなく、一体不可分のプログラムとして実現されていてもよい。
【0106】
モデル3、選択情報4、切替マトリクス6等については、第3実施形態と同様である。ただし、シミュレーションエンジン25が当該モデルとそのモデルが実装されるエンジンECU等のハードウェアとの間の信号の入出力を擬似的に実現するために、モデル3にはハードウェアからの入力信号を代替するブロックが付加されている。この付加されたブロックは、第3実施形態のコード生成ツール2に当該モデルを入力する際には取り除く必要がある。
【0107】
このようなシミュレーションツール7によって、複数のバリエーションに対応するモデルを実行して動作を確認するプログラム開発環境において、実行されるモデルを、当初のモデルの不要な部分に対応する機能を除いた形で実行することが可能となる。
【0108】
このような場合、モデル3は、実際にはエンジンECU等の特定のハードウェア上のみで実行されるプログラムとして開発されるとしても、プログラムの動作の試験、確認については、当該ハードウェアにプログラムを実装する前に行うことができるので、開発の利便性が向上する。
【0109】
(他の実施形態)
上記した各実施形態においては、V6、V8、I6といった、生成されるプログラムが対象とする機種についてのバリエーションを例示し、選択情報4はこの対象とする機種の情報を含むようになっていた。しかし、必ずしも選択情報4が含むバリエーションは生成されるプログラムが対象とする機種についてのものである必要はなく、例えば日本向け、米国向け、ヨーロッパ向けといった仕向けについてのものであってもよいし、または試験用、量産用といったプログラムの使用目的についてのものであってもよい。仕向けによってプログラムの機能が異なる例としては、例えば各国内法のエンジンに対する規制が異なるため、それぞれの法規制に対応する部分が異なっている場合がある。
【0110】
図16に、仕向けによって異なるブロックの構成例を示す。(a)は米国用に作成されたサブシステム中の一部のブロック構成であり、(b)は米国以外用に作成されたサブシステム中の、(a)に対応する部分である。ブロック91は、米国用、米国以外用の両方のサブシステムが共に有するブロックであり、2つの入力データに対して所定の処理を施して1つのデータを出力する。フィルタブロック92は、ブロック91からの入力データのうち、所定範囲内の値のデータのみそのまま出力し、それ以外のデータは出力しない機能を有するブロックである。米国では例えば排出ガス中の特定の成分を抑えるために、ブロック91の出力データの上限と下限を法規制により限定しているとする。フィルタブロック92は、この法規制の限定を実現するよう設定される。
【0111】
また、第4実施形態においては、シミュレーションモデル抽出エンジン24は図13のステップ910〜960の処理によって実現できるとなっているが、必ずしもこれらの処理のように、不要なサブシステムの除去に切替マトリクス6を利用する必要はない。例えば、図8のステップ810〜860の処理によって実現することもできる。また、図5のステップ510〜560の処理によっても実現することができる。これらの場合には、図10に示した切替マトリクス6は不要である。
【0112】
また、第1〜第4実施形態のコード生成ツール2およびシミュレーションツール7は、その処理の過程において中間コードを生成しているが、必ずしもこのようになっている必要はなく、コード生成ツール2においてはモデル3から直接ソースコードを生成し、シミュレーションツール7においてはモデル3を直接実行すてもよい。ただし、その際のソースコードからは、モデル3の不要な部分が除かれており、またシミュレーションツール7の実行はモデル3の不要な部分に対応する機能を除いた形で実行される必要がある。
【0113】
なお、本発明の第1〜3実施形態においては、パーソナルコンピュータ1がコード生成装置および中間モデル生成装置を構成する。
【0114】
また、第4実施形態においては、パーソナルコンピュータ1がシミュレーション装置および中間モデル生成装置を構成する。
【0115】
また、第1〜3実施形態においては、コード生成ツール2がコード生成プログラムおよび中間モデル生成プログラムを構成する。
【0116】
また、第4実施形態においては、シミュレーションツール7がシミュレーションプログラムおよび中間モデル生成プログラムを構成する。
【0117】
また、図5のステップ510、図8のステップ810、図13のステップ910のそれぞれの処理が、モデル取得手段を構成する。
【0118】
また、図5のステップ520、図8のステップ820、図13のステップ920のそれぞれの処理が、選択情報取得手段を構成する。
【0119】
また、図5のステップ530〜570、図8のステップ825〜870、図13のステップ925〜970のそれぞれの処理が、部分指定子および選択情報に基づいて、モデルから部分指定子が指定する部分を取り除いたものからソースコードを生成する除去生成手段を構成する。
【0120】
また、図5のステップ530〜560、図8のステップ825〜860、図13のステップ925〜960のそれぞれの処理が、部分指定子および選択情報に基づいて、モデルから部分指定子が指定する部分を取り除いたモデルを生成する除去生成手段を構成する。
【0121】
また、シミュレーションモデル抽出エンジン24とシミュレーションエンジン25が、部分指定子および選択情報に基づいて、モデルから部分指定子が指定する部分を取り除いたモデルを生成する除去生成手段を構成する。
【0122】
また、図13のステップ923が、部分指定子および選択情報との相関関係を示す相関情報を取得する相関情報取得手段を構成する。
【図面の簡単な説明】
【図1】本発明の第1実施形態に係るコード生成装置としてのパーソナルコンピュータ1の構成を示す図である。
【図2】コード生成ツール2等の構成、作動を概略的に示す図である。
【図3】コード生成ツール2に入力されるモデル3の一例を示す図である。
【図4】エンジンの各気筒の状態を加算して出力するブロックの図である。
【図5】コード生成ツール2の、モデルからソースコードを生成する処理のフローチャートである。
【図6】図3のモデル3から生成される中間モデルの一部の図である。
【図7】第2実施形態のコード生成ツール2に入力されるモデル3の一例を示す図である。
【図8】第2実施形態のコード生成ツール2の、モデルからソースコードを生成する処理のフローチャートである。
【図9】図7のモデル3から生成される中間モデルの一部の図である。
【図10】第3実施形態のコード生成ツール2等の構成、作動を概略的に示す図である。
【図11】第3実施形態のコード生成ツール2に入力されるモデル3の一例を示す図である。
【図12】切替マトリクス6の一例を示す図である。
【図13】第3実施形態のコード生成ツール2の、モデルからソースコードを生成する処理のフローチャートである。
【図14】図11のモデル3から生成される中間モデルの一部の図である。
【図15】第4実施形態に係るシミュレーションツール7の構成、作動を概略的に示す図である。
【図16】仕向けによって異なるブロックの構成例を示す図である。
【図17】従来の切り替え方法で表現したモデルの一部を示す図である。
【図18】図17に示した部分に対応するソースコードを示す図である。
【符号の説明】
1…パーソナルコンピュータ、2…コード生成ツール、3…モデル、
4…選択情報、5…コンパイラ、リンカ、6…切替マトリクス、
7…シミュレーションツール、11…ディスプレイ、12…入力装置、
13…RAM、14…ROM、15…HDD、16…CPU、
21…生成モデル抽出エンジン、22…コード生成エンジン、
23…生成ルール、24…シミュレーションモデル抽出エンジン、
25…シミュレーションエンジン、31…V6スタート、
32…V6用サブシステム、33…V6エンド、34…V8スタート、
35…V8用サブシステム、36…V8エンド、37…I6スタート、
38…I6用サブシステム、39…I6エンド、51…V6用サブシステム、
52…V8用サブシステム、53…I6用サブシステム、
54…選択ブロック、55…入力端子。

Claims (13)

  1. ECUに搭載するためのプログラムのソースコードの開発において、前記ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルから、前記モデルが含む機能を表すソースコードを生成するコード生成装置であって、
    入力装置(12)と、
    CPU(16)と、
    第1の記憶媒体(15)と、
    第2の記憶媒体(13)と、を備え、
    前記入力装置は、ユーザが操作することにより、その操作に応じた信号を前記CPUに出力し、
    前記CPUは、
    自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応する前記モデルを前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と
    前記部分指定子のいずれかを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、および
    前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子および前記選択情報取得処理にて取得した前記選択情報に基づいて、前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された部分指定子以外の部分指定子が指定する部分を取り除き、取り除いた結果として前記複数のバリエーションのうち特定のバリエーションのみを含む前記モデルが含む機能を表すソースコードを生成し、生成した前記ソースコードを前記第1の記憶媒体に記録する除去生成処理と、を実行することを特徴とするコード生成装置。
  2. 前記部分指定子は、指定するモデルの部分を、その部分の入力側と出力側から囲む部分指定ブロックから成り、
    前記CPUは、前記除去生成処理において、前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定ブロックおよび前記選択情報取得処理にて取得した前記選択情報に基づいて、前記モデルから前記部分指定子が指定する部分を取り除いたものからソースコードを生成することを
    特徴とする請求項1に記載のコード生成装置。
  3. 前記モデル中の各ブロックは、少なくとも当該ブロックの名称を含む属性情報を有し、
    前記部分指定子は、指定する前記部分中のブロックが有する属性情報に含まれることを特徴とする請求項1に記載のコード生成装置。
  4. ECUに搭載するためのプログラムのソースコードの開発において、前記ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルから、前記モデルが含む機能を表すソースコードを生成するコード生成装置であって、
    入力装置(12)と、
    CPU(16)と、
    第1の記憶媒体(15)と、
    第2の記憶媒体(13)と、を備え、
    前記入力装置は、ユーザが操作することにより、その操作に応じた信号を前記CPUに出力し、
    前記CPUは、
    自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応する前記モデルを前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と
    前記複数のバリエーションの中の個々のバリエーションに対応する項目の1つを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と
    前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子と、前記選択情報取得処理にて取得した前記選択情報と、の相関関係を示す相関情報を前記第1の記憶媒体から読み出す相関情報取得処理と、および
    前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された項目に対応する部分指定子を、前記相関情報の相関関係に基づいて、前記第2の記憶媒体に記録し、記録された当該部分指定子以外の部分指定子が指定する部分を取り除き、取り除いた結果として前記複数のバリエーションのうち特定のバリエーションのみを含む前記モデルが含む機能を表すソースコードを生成し、生成した前記ソースコードを前記第1の記憶媒体に記録する除去生成処理と、を実行することを特徴とするコード生成装置。
  5. 前記選択情報は、前記除去生成手段が生成するソースコードから生成されるプログラムが搭載される先のECUの情報を含むことを特徴とする請求項1ないし4のいずれか1つに記載のコード生成装置。
  6. 前記選択情報は、前記除去生成手段が生成するソースコードの仕向け地の情報を含むことを特徴とする請求項1ないし5のいずれか1つに記載のコード生成装置。
  7. 前記選択情報は、前記除去生成手段が生成するソースコードが試験用であるか量産用であるかの情報を含むことを特徴とする請求項1ないし6のいずれか1つに記載のコード生成装置。
  8. ユーザが操作することにより、その操作に応じた信号をCPU(16)に出力する入力装置(12)、前記CPU、第1の記憶媒体(15)、および第2の記憶媒体(13)を備えると共に、ECUに搭載するためのプログラムのソースコードの開発において、前記ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルから、前記モデルが含む機能を表すソースコードを生成するコード生成装置、に用いるコード生成プログラムであって、
    前記CPU
    自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応する前記モデルを前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と
    前記部分指定子のいずれかを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、および
    前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子および前記選択情報取得処理にて取得した前記選択情報に基づいて、前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された部分指定子以外の部分指定子が指定する部分を取り除き、取り除いた結果として前記複数のバリエーションのうち特定のバリエーションのみを含む前記モデルが含む機能を表すソースコードを生成し、生成した前記ソースコードを前記第1の記憶媒体に記録する除去生成処理とを実行させるためのコード生成プログラム。
  9. ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルから、前記モデルが含む機能を表すソースコードを生成しないまま、前記モデルが含む機能を実行する機能実行装置であって、
    入力装置(12)と、
    CPU(16)と、
    第1の記憶媒体(15)と、
    第2の記憶媒体(13)と、を備え、
    前記入力装置は、ユーザが操作することにより、その操作に応じた信号を前記CPUに出力し、
    前記CPUは、
    自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応する前記モデルを前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と
    前記部分指定子のいずれかを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、および
    前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子および前記選択情報取得処理にて取得した前記選択情報に基づいて、前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された部分指定子以外の部分指定子が指定する部分を取り除き、取り除いた結果として前記複数のバリエーションのうち特定のバリエーションのみを含む前記モデルが含む機能を表すソースコードを生成しないまま、当該モデルが含む機能を実行する除去実行処理とを実行することを特徴とする機能実行装置生成装置。
  10. ユーザが操作することにより、その操作に応じた信号をCPU(16)に出力する入力装置(12)、前記CPU、第1の記憶媒体(15)、および第2の記憶媒体(13)を備えると共に、ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルから、前記モデルが含む機能を表すソースコードを生成しないまま、前記モデルが含む機能を実行する機能実行装置に用いる機能実行プログラムであって、
    前記CPU
    自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応する前記モデルを前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と
    前記部分指定子のいずれかを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、および
    前記モデル取得手段が取得した前記モデルに含まれる前記部分指定子および前記選択情報取得手段が取得した前記選択情報に基づいて、前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された部分指定子以外の部分指定子が指定する部分を取り除き、取り除いた結果として前記複数のバリエーションのうち特定のバリエーションのみを含む前記モデルが含む機能を表すソースコードを生成しないまま、当該モデルが含む機能を実行する除去実行処理とを実行させるための機能実行プログラム。
  11. 入力装置(12)と、
    CPU(16)と、
    第1の記憶媒体(15)と、
    第2の記憶媒体(13)と、を備え、
    前記入力装置は、ユーザが操作することにより、その操作に応じた信号を前記CPUに出力し、
    前記CPUは、
    ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルであり、自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応するモデルを、前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と
    前記部分指定子のいずれかを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、および
    前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子および前記選択情報取得処理にて取得した前記選択情報に基づいて、前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された部分指定子以外の部分指定子が指定する部分を取り除いたモデルを生成し、生成した結果として前記複数のバリエーションのうち特定のバリエーションのみを含むモデルを前記第2の記憶媒体に記録する除去生成処理とを実行することを特徴とするモデル生成装置。
  12. ユーザが操作することにより、その操作に応じた信号をCPU(16)に出力する入力装置入力装置(12)、前記CPU、第1の記憶媒体(15)、および第2の記憶媒体(13)を備えたモデル生成装置に用いるモデル生成プログラムであって、
    前記CPU
    ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルであり、自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応するモデルを、前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と
    前記部分指定子のいずれかを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と、および
    前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子および前記選択情報取得処理にて取得した前記選択情報に基づいて、前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された部分指定子以外の部分指定子が指定する部分を取り除いたモデルを生成し、生成した結果として前記複数のバリエーションのうち特定のバリエーションのみを含むモデルを前記第2の記憶媒体に記録する除去生成処理とを実行させるためのモデル生成プログラム。
  13. ユーザが操作することにより、その操作に応じた信号をCPU(16)に出力する入力装置(12)、前記CPU、第1の記憶媒体(15)、および第2の記憶媒体(13)を備えると共に、ECUに搭載するためのプログラムのソースコードの開発において、前記ECUの作動のための機能の単位であるブロックの間の入出力の繋がりで表現されるモデルから、前記モデルが含む機能を表すソースコードを生成するコード生成装置に用いるコード生成プログラムであって、
    前記CPU
    自己の特定の部分を指定する部分指定子を含み、複数のバリエーションに対応する前記モデルを前記第1の記憶媒体から前記第2の記憶媒体に読み出すモデル取得処理と
    前記複数のバリエーションの中の個々のバリエーションに対応する項目の1つを選択する選択情報を、前記入力装置または前記第1の記憶媒体から取得する選択情報取得処理と
    前記モデル取得処理にて取得した前記モデルに含まれる前記部分指定子と、前記選択情報取得処理にて取得した前記選択情報と、の相関関係を示す相関情報を前記第1の記憶媒体から読み出す相関情報取得処理と、および
    前記第2の記憶媒体中の前記モデルから、前記選択情報によって選択された項目に対応する部分指定子を、前記相関情報の相関関係に基づいて、前記第2の記憶媒体に記録し、記録された当該部分指定子以外の部分指定子が指定する部分を取り除き、取り除いた結果として前記複数のバリエーションのうち特定のバリエーションのみを含む前記モデルが含む機能を表すソースコードを生成し、生成した前記ソースコードを前記第1の記憶媒体に記録する除去生成処理とを実行させるためのコード生成プログラム。
JP2003017668A 2003-01-27 2003-01-27 コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム Expired - Lifetime JP4728563B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003017668A JP4728563B2 (ja) 2003-01-27 2003-01-27 コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム
US10/761,207 US20040154003A1 (en) 2003-01-27 2004-01-22 Code generation apparatus, code generation program, simulation apparatus, simulation program, model generation apparatus, and model generation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003017668A JP4728563B2 (ja) 2003-01-27 2003-01-27 コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム

Publications (2)

Publication Number Publication Date
JP2004227500A JP2004227500A (ja) 2004-08-12
JP4728563B2 true JP4728563B2 (ja) 2011-07-20

Family

ID=32767511

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003017668A Expired - Lifetime JP4728563B2 (ja) 2003-01-27 2003-01-27 コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム

Country Status (2)

Country Link
US (1) US20040154003A1 (ja)
JP (1) JP4728563B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006033184A1 (de) * 2006-07-18 2008-01-24 Robert Bosch Gmbh Autocodegenerator, Entwicklungswerkzeug und Verfahren zum Entwickeln für Software von Steuergeräten
JP4618240B2 (ja) * 2006-12-12 2011-01-26 株式会社デンソー オブジェクト指向型車両用制御システム及びプログラム搭載支援システム
US20090265682A1 (en) * 2008-04-16 2009-10-22 International Business Machines Corporation Method for transforming data from a model into a secondary model to optimize code generation
JP5011221B2 (ja) * 2008-06-30 2012-08-29 株式会社日立製作所 コントローラ開発ツールとそれを利用して開発したモータドライブシステムを有する機器
US9563407B2 (en) * 2014-02-03 2017-02-07 Richard Salter Computer implemented modeling system and method
JP6488739B2 (ja) * 2015-02-05 2019-03-27 株式会社デンソー 並列化コンパイル方法、及び、並列化コンパイラ
JP6488738B2 (ja) * 2015-02-05 2019-03-27 株式会社デンソー 並列化コンパイル方法、及び、並列化コンパイラ
US10078500B2 (en) * 2016-09-23 2018-09-18 Dspace Digital Signal Processing And Control Engineering Gmbh Method and system for automatic code generation
US10540189B2 (en) * 2017-05-22 2020-01-21 Analytical Graphics Inc. Formalized execution of model integrated descriptive architecture languages
EP3812885A1 (de) * 2019-10-24 2021-04-28 dspace digital signal processing and control engineering GmbH Integrierte simulationscode- und produktionscodegenerierung

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5335339A (en) * 1990-11-22 1994-08-02 Hitachi, Ltd. Equipment and method for interactive testing and simulating of a specification of a network system
US6718533B1 (en) * 1999-02-26 2004-04-06 Real-Time Innovations, Inc. Method for building a real-time control system with mode and logical rate

Also Published As

Publication number Publication date
JP2004227500A (ja) 2004-08-12
US20040154003A1 (en) 2004-08-05

Similar Documents

Publication Publication Date Title
US5926638A (en) Program debugging system for debugging a program having graphical user interface
JP4728563B2 (ja) コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム
JPH07230484A (ja) 有限状態マシン遷移アナライザ
JP4978233B2 (ja) シミュレータ開発システム及びシミュレータ開発方法
CN113204571B (zh) 涉及写入操作的sql执行方法、装置及存储介质
JP2009169828A (ja) テストケース生成装置及びテストケース生成プログラム
JP2005078243A (ja) マイコンリソース消費見積もりプログラム、マイコンリソース消費見積もり装置、およびプログラム生成方法
CN115437684A (zh) 一种针对Linux内核源代码的文件级裁剪方法和系统
US8196093B2 (en) Apparatus and method for componentizing legacy system
CN100367237C (zh) 用于文件信息写处理的方法和装置
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
Herrera et al. A framework for the generation from UML/MARTE models of IPXACT HW platform descriptions for multi-level performance estimation
WO1995032476A1 (en) A system and method for creating design configurations and for controlling the execution of multiple design tools
JP4594704B2 (ja) プログラム開発支援システム、プログラムおよび記録媒体
JP5056493B2 (ja) 仮想ソフトウェア生成装置
JPH0659908A (ja) プログラム実行装置
JP4311327B2 (ja) ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体
CN113495727B (en) Business component development method, device, electronic equipment and medium
JP5316273B2 (ja) プログラム自動生成装置およびプログラム自動生成方法
JP6692510B1 (ja) 解析装置、方法、及びプログラム
Zhang et al. Semantic integration platform for cyber-physical system design
CN107894903B (zh) Spi-nand的配置文件的io方法和装置
JP2009251927A (ja) プログラム開発支援システム
JP2001216139A (ja) メイク情報解析によるプロジェクト内容解析方法及びそのシステム並びに情報記録媒体
JP2006039993A (ja) 記憶クラス設定装置、記憶クラス設定プログラム、ソースコード生成装置、およびソースコード生成プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050721

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080827

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080828

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081007

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081202

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20081211

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090123

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110415

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250