JP2008009869A - プログラムコード生成装置 - Google Patents

プログラムコード生成装置 Download PDF

Info

Publication number
JP2008009869A
JP2008009869A JP2006181650A JP2006181650A JP2008009869A JP 2008009869 A JP2008009869 A JP 2008009869A JP 2006181650 A JP2006181650 A JP 2006181650A JP 2006181650 A JP2006181650 A JP 2006181650A JP 2008009869 A JP2008009869 A JP 2008009869A
Authority
JP
Japan
Prior art keywords
model
program code
unit
control
condition
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
Application number
JP2006181650A
Other languages
English (en)
Inventor
Yoshitaka Uematsu
義貴 植松
Tetsuya Ogino
哲也 荻野
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 JP2006181650A priority Critical patent/JP2008009869A/ja
Publication of JP2008009869A publication Critical patent/JP2008009869A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)

Abstract

【課題】電子制御装置での制御プログラムの実行時間や処理負荷が低減できる制御プログラムのプログラムコードを、制御仕様を表す制御モデルから容易に生成できるプログラムコード生成装置を提供する。
【解決手段】入力された制御モデルから、所定の処理と、特定条件が成立するか否かを判定する判定処理とを行い、判定処理により特定条件が成立するか或いは特定条件が成立しないと判定されると、所定の処理の演算結果を訂正するための追加処理を行うように設定された演算モデル部を検出すると(S110,S120:YES)、判定処理で判定される特定条件の成立頻度を取得し(S140)、その取得した成立頻度に基づき(S150)、追加処理の実行頻度が低くなるような前記演算モデル部に対応するプログラムコードを生成する(S160或いはS170)。
【選択図】図4

Description

本発明は、入力された制御モデルに対応する制御プログラムのプログラムコードを生成するプログラムコード生成装置に関する。
従来より、使用者が、演算を行う演算ブロックを含む制御モデル等を入力すると共に、プログラムコードの生成指令を入力すると、予め設定された生成ルールに基づいて、入力された制御モデルに対応したプログラムコードを出力するプログラムコード生成装置が知られている(例えば、特許文献1参照)。
このようなプログラムコード生成装置では、例えば図17(a)に示すような制御モデルが使用者により入力される。
図17(a)の制御モデルは、車両に搭載される電子制御装置が車両の各部を制御する制御モデルの一例であり、後述するように、数値を表すブロックや、各種演算処理を行うブロック等から構成される。
まず、符号A,B,Cが付されたブロック(以下、それぞれ、ブロックA、ブロックB、ブロックCと記載する)は、変数を表すブロックである。また、変数は、本例の制御における制御量を表すものである。尚、ブロックA,Bは入力側(入力1及び入力2)であり、ブロックCは出力側(出力1)である。
そして、ブロックの領域内に符号D,Eが記載されたConstantブロック(以下、それぞれ、ブロックD、ブロックEと記載する)は、定数を表すブロックである。
尚、以下、ブロックAが表す変数(制御量)を制御量Aと記載する。ブロックB,Cについても同様とする。また、ブロックDが表す定数を定数Dと記載する。ブロックEについても同様とする。
次に、ブロックの領域内に大小を表す符号(「>」)が記載されたBLK1ブロックは、比較演算処理を行うブロックである。具体的に、BLK1ブロックには、数値が入力される入力ポートして、BLK第1ポートとBLK第2ポートとがあり、このBLK1ブロックでは、BLK第1ポートとBLK第2ポートとに入力される数値について、大小が比較される。そして、BLK第1ポートの数値がBLK第2ポートの数値よりも大きいという条件、つまり、「BLK第1ポートの数値>BLK第2ポートの数値」という条件が成立する場合には、出力ポートの出力が「1」になり、一方、その条件が成立しない場合には、出力ポートの出力が「0」になるようになっている。
ここで、図17(a)の例では、BLK1ブロックに到達する矢印が2つ記述されており、一方は、ブロックAを始点としてBLK第1ポートに到達するように、また、他方は、ブロックBを始点としてBLK第2ポートに到達するように記述されている。これは、制御量AがBLK第1ポートに入力され、制御量BがBLK第2ポートに入力されるということを表している。
つまり、このBLK1ブロックでは、制御量Aと制御量Bとの大小が比較され、「制御量A>制御量B」という条件が成立する場合には、出力が「1」になり、「制御量A>制御量B」という条件が成立しない場合、つまり「制御量A≦制御量B」となる場合には、出力が「0」となるような比較演算処理が行われる。
次に、ブロックD,E及びBLK1ブロックから延びる矢印の先端にあるSwitchブロックは、出力を切り換える切換処理を行うブロックである。具体的に、Switchブロックには、数値が入力される入力ポートとして、第1〜第3ポートがあり、このSwitchブロックでは、第2ポートの入力が「0」の場合は、第3ポートに入力される数値が出力ポートから出力され、第2ポートの入力が「1」の場合は、第1ポートに入力される数値が出力ポートから出力されるように、出力が切り換えられる。
そして、図17(a)の例では、ブロックDを始点とする矢印が第1ポートに到達するように、ブロックEを始点とする矢印が第3ポートに到達するように、さらに、BLK1ブロックの出力ポートを始点とする矢印が第2ポートに到達するように記述されている。これは、第1ポートに定数Dが入力され、第3ポートに定数Eが入力され、第2ポートにBLK1ブロックからの出力値(「0」或いは「1」)が入力されることを表している。
つまり、Switchブロックでは、BLK1ブロックの出力(第2ポートの入力)が「0」の場合は、出力ポートから定数Eが出力され、BLK1ブロックの出力(第2ポートの入力)が「1」の場合は、出力ポートから定数Dが出力される、という切換処理が行われる。
そして、図17(a)では、Switchブロックの出力ポートを始点とし、ブロックCに到達するように、矢印が記述されている。これは、制御量Cの数値は、Switchブロックの出力ポートから出力される数値、つまり、定数D或いは定数Eの何れかであることを表すものである。
以上のように構成された本制御モデルでは、次のような制御が実現されることとなる。つまり、「制御量Cに定数Eを代入する。ただし、制御量Aが制御量Bよりも大きい(制御量A>制御量B)という条件が成立する場合は、制御量Cに定数Dを代入する」という制御(以下、制御1と言う)である。
そして、従来のプログラムコード生成装置において、このような制御モデルに基づいてプログラムコードを生成する場合、図17(b)に示すようなプログラムコードが生成される。つまり、制御量Cに定数Eを代入するという意味の「C=E」、制御量A>制御量Bの条件が成立する場合は制御量Cに定数Dを代入するという意味の「if(A>B){C=D}」、という記述がされたプログラムコードが生成される。
特願2003−173256号公報
ところで、上述の図17(b)のようなプログラムコードが車両の電子制御装置に実装される場合において、制御量A>制御量Bという条件(以下、条件Sと言う)が成立しない、つまり、制御量A≦制御量Bとなる場合には、「制御量Cに定数Dを代入する」という部分に該当する処理(以下、処理Yと言う)はしなくてよい。
一方、条件Sが成立する場合には、処理Yを実行して、制御量Cに定数Dを代入し直す必要がある。
そうすると、条件Sが成立する場合には、処理Yを実行して制御量Cに定数Dを代入し直す分、電子制御装置が実行すべき処理ステップ数が増加することとなり、プログラムの実行時間や、処理負荷が増大する。
このため、条件Sの成立する頻度(確率)が高い場合(具体的に、50%を超える場合)には、以下の制御を実現するプログラムコードのほうが有利である。つまり、「制御量Cに定数Dを代入する。ただし、制御量A≦制御量Bという条件が成立する場合は、制御量Cに定数Eを代入する。」という制御(以下、制御2と言う)である。このように変更すれば、上記の制御1と同じ制御結果が得られつつ、条件(ここでは、制御量A≦制御量Bという条件)が成立することにより実行される処理(制御量Cに定数Eを代入し直す処理)の実行頻度を抑えることができるため、プログラムの実行時間や処理負荷を低減できる。
そして、従来は、上述のような制御モデルにおいて、制御1及び制御2の何れを採用するかは、制御モデルを作成する設計者により決定されていた。また、設計者等は、実験やシミュレーションにより、対象とする条件(例えば条件S)の成立頻度を検証し、その成立頻度に応じて、制御モデルやプログラムコードを修正していた。一方、上述のBLK1ブロックのような比較演算処理を行うブロックは、車両の各部の制御を実現する制御モデルの中に多数存在する。
このため、電子制御装置でのプログラムの実行時間や処理負荷を低減するために最適な制御プログラムを開発する場合、制御モデルやプログラムコードの作成、修正に手間がかかり、開発工数が増大してしまう、ということが問題となっていた。
本発明は、こうした問題に鑑みなされたもので、電子制御装置に実装するための制御プログラムのプログラムコードを自動生成するプログラムコード生成装置において、電子制御装置での制御プログラムの実行時間や処理負荷が低減できる制御プログラムを、容易に生成できるようにすることを目的とする。
上記目的を達成するためになされた請求項1に記載のプログラムコード生成装置においては、制御モデル取得手段が、所定の制御対象の制御仕様を表す制御モデルを取得し、生成手段が、制御モデル取得手段により取得された制御モデル(以下、取得制御モデルと言う)に対応する制御プログラムのプログラムコードを、予め定められたルールに基づいて生成する。そして、制御モデル取得手段が取得する制御モデルは、制御のための演算処理を表す演算モデル部を少なくとも有している。
ここで特に、請求項1のプログラムコード生成装置において、生成手段は、モデル解析手段と、成立頻度取得手段と、成立頻度判定手段とを備えている。
モデル解析手段は、演算モデル部のうち、その処理内容が、コンピュータに、第1の処理と、特定の条件が成立するか否かを判定する判定処理とを実行させると共に、その判定処理により特定条件が成立したと判定されたなら、第1の処理を無効化して第2の処理を実行させる第1プログラムと、コンピュータに、第2の処理と、判定処理とを実行させると共に、その判定処理により特定条件が成立しないと判定されたなら、その第2の処理を無効化して第1の処理を実行させる第2プログラムとの何れでも表すことのできる演算モデル部(以下、条件判定演算モデル部と言う)を、取得制御モデルから検索する。
また、成立頻度取得手段は、モデル解析手段により検索された条件判定演算モデル部について、判定処理で判定される特定条件の成立頻度を取得し、成立頻度判定手段は、成立頻度取得手段により取得される特定条件の成立頻度が既定値より高いか否かを判定する。
ところで、条件判定演算モデル部において、特定条件が成立すると、第1の処理を無効化して第2の処理を実行させるようになっている場合、その特定条件の成立頻度が高いのであれば、第1の処理を無効化して第2の処理を実行させる頻度も高い。逆に、特定条件の成立頻度が低ければ、第1の処理を無効化して第2の処理を実行させる頻度も低い。
また、条件判定演算モデル部において、特定条件が成立しないと、第2の処理を無効化して第1の処理を実行させるようになっている場合、その特定条件の成立頻度が低ければ、第2の処理を無効化して第1の処理を実行させる頻度は高い。逆に、特定条件の成立頻度が高ければ、第2の処理を無効化して第1の処理を実行させる頻度は低い。
そして、最初の処理を無効化して別の処理を実行させることとなると、その分、演算処理の処理ステップ数が増加することとなるため、最初の処理を無効化して別の処理を実行させる頻度が高くなることは、実行時間や処理負荷の点で不利である。
そこで、本装置では、生成手段は、成立頻度判定手段による判定結果、つまり、特定条件の成立頻度が規定値より高いか否かの判定結果に基づき、前記第1プログラムのプログラムコード(以下、第1プログラムコードと言う)と前記第2プログラムのプログラムコード(以下、第2プログラムコードと言う)との何れかを、条件判定演算モデル部のプログラムコードとして生成する。
これによれば、特定条件の成立頻度が高い場合と低い場合とのそれぞれに応じて、最初の処理を無効化して別の処理を実行する、ということがなるべく生じないようなプログラムコードを生成するように構成することができる。そして、このため、プログラムコードが所定の装置に実装された際のその装置におけるプログラムの実行時間や処理負荷を抑えることができるプログラムコードを、容易に生成できるようになる。
そして、より詳しくは、請求項2のように構成すればよい。
請求項2のプログラムコード生成装置は、請求項1のプログラムコード生成装置において、生成手段は、成立頻度判定手段により特定条件の成立頻度が規定値以下と判定されたならば、条件判定演算モデル部のプログラムコードとして、第1プログラムコードを生成する。一方、生成手段は、成立頻度判定手段により特定条件の成立頻度が規定値より高いと判定されたならば、条件判定演算モデル部のプログラムコードとして、第2プログラムコードを生成する。
その第1プログラムコードによれば、特定条件の成立頻度が規定値以下である場合、第1の処理を無効化して第2の処理を実行させる頻度が低くなり、また、第2プログラムコードによれば、特定条件の成立頻度が規定値より高い場合、第2の処理を無効化して第1の処理を実行させる頻度が低くなることとなる。
また、このような第1,第2プログラムコードを生成するようにする場合、請求項3のように構成すればよい。
請求項3のプログラムコード生成装置は、請求項2のプログラムコード生成装置において、制御モデルに含まれる可能性のある条件判定演算モデル部のそれぞれについて、第1プログラムコードと第2プログラムコードとを記憶するコード記憶手段を備えている。尚、第1,第2プログラムコードは、予め生成しておき、コード記憶手段に記憶させておけばよい。
そして、生成手段は、成立頻度判定手段により特定条件の成立頻度が既定値以下と判定されたならば、コード記憶手段から、モデル解析手段により検索された条件判定演算モデル部に対応する第1プログラムコードを読み出す。また、成立頻度判定手段により成立頻度が既定値よりも高いと判定されたならば、コード記憶手段から、モデル解析手段により検索された条件判定演算モデル部に対応する第2プログラムコードを読み出すようになっている。
これによれば、コード記憶手段から、モデル解析手段により検索された条件判定演算モデル部に対応する第1プログラムコード或いは第2プログラムコードを読み出すだけでよいため、その第1プログラムコード或いは第2プログラムコードを生成するための処理を省略することができる点で有利である。
また一方、請求項4のように構成しても良い。
請求項4のプログラムコード生成装置は、請求項2又は請求項3のプログラムコード生成装置において、制御モデルに含まれる可能性のある条件判定演算モデル部のそれぞれについて、その条件判定演算モデル部を表すテンプレートとして、第1プログラムコードに対応する第1モデルと第2プログラムコードに対応する第2モデルとを記憶するモデル記憶手段を備えている。尚、第1,第2モデルは、予め生成しておき、モデル記憶手段に記憶させておけばよい。
そして、生成手段は、成立頻度判定手段により特定条件の成立頻度が既定値以下と判定されたならば、モデル記憶手段から、モデル解析手段により検索された条件判定演算モデル部に対応する第1モデルを読み出して、該読み出した第1モデルに対応するプログラムコードを生成する。また、成立頻度判定手段により特定条件の成立頻度が既定値よりも高いと判定されたならば、モデル記憶手段から、モデル解析手段により検索された条件判定演算モデル部に対応する第2モデルを読み出して、該読み出した第2モデルに対応するプログラムコードを生成するようになっている。
このような請求項4のプログラムコード生成装置によれば、例えば所望のプログラムコードが生成されるように修正を加える場合、テンプレートとしての第1,第2モデルを修正すれば済む。
また、このような場合、特に、第1モデル或いは第2モデルが使用者に画像で認識できるようにすれば、使用者にとって使い勝手がよい。
つまり、プログラムコード生成装置においては、使用者等が、生成手段により生成されるプログラムコードに対応する制御モデルを視覚で認識できることが好ましい。
そこで、請求項5のプログラムコード生成装置は、請求項1〜4のプログラムコード生成装置において、情報を表示する表示手段と、画像表示制御手段とを備えている。
画像表示制御手段は、成立頻度判定手段により特定条件の成立頻度が既定値以下と判定されたならば、第1プログラムコードに対応する条件判定演算モデル部の画像を表示手段に表示させ、また、成立頻度判定手段により特定条件の成立頻度が既定値よりも高いと判定されたならば、第2プログラムコードに対応する条件判定演算モデル部の画像を表示手段に表示させる。
これによれば、使用者は、第1プログラムコード或いは第2プログラムコードのそれぞれについて、対応する条件判定演算モデル部の画像を、表示手段を介して確認することができるため、使い勝手がよくなる。
次に、請求項6のプログラムコード生成装置は、請求項1〜5のプログラムコード生成装置において、情報を入力するための入力手段を備えている。そして、成立頻度取得手段は、入力手段を介して入力される使用者からの情報に基づき、条件判定演算モデル部における判定処理で判定される特定条件の成立頻度を取得する。
つまり、本請求項6の装置によれば、使用者が、成立頻度を入力手段を介して入力することができる。またこの場合、条件判定演算モデル部が複数あれば、その複数の条件判定演算モデル部に対して個々に成立頻度を入力できる構成としても良いし、特定の入力値が、その複数の条件判定演算モデル部の一部(少なくとも2つ以上)或いは全部に同時に適用される構成としてもよい。これによれば、使用者にとって使い勝手が良くなる。
また、成立頻度は、請求項7のように、自動で検出されるようにすれば、より使い勝手がよくなる。つまり、請求項7のプログラムコード生成装置は、請求項1〜6のプログラムコード生成装置において、取得制御モデルに対応する制御プログラムを実行して、モデル解析手段により検索された条件判定演算モデル部における判定処理で判定される特定条件が成立するか否かを検出する検出手段を備えている。
ここで、制御プログラムを実行する構成としては、コンピュータ装置に制御対象を接続し、コンピュータ装置と制御対象との間で制御のための各種信号が入出力されるようにした実際の状態で、コンピュータ装置が制御プログラムを実行する構成が考えられる。一方、コンピュータ装置に制御対象を接続せず、そのコンピュータ装置上のみで、制御プログラムを模擬的に実行する(所謂シミュレーションである)構成が考えられる。
そして、請求項7では、シミュレーションが実行される後者のように構成することが好ましい。これによれば、容易に、特定条件が成立するか否かを表すデータ(以下、条件成立データと言う)が得られる。また、シミュレーションを繰り返し実行するようにすれば、条件成立データを多数取得できることとなる。このため、その条件成立データの信頼性を向上させることができる。
そして、成立頻度取得手段は、モデル解析手段により検索された条件判定演算モデル部における判定処理で判定される特定条件の成立頻度を、検出手段の検出結果に基づき取得する。
尚、条件成立データは、特定条件が成立する回数及び成立しない回数を表すデータとすることが考えられる。この場合、成立頻度取得手段は、その回数を表すデータに基づき、特定条件の成立頻度を取得するようにすればよい。具体的に、特定条件が成立する回数と成立しない回数とから、成立する割合、即ち成立頻度を算出するようにできる。また、特定条件が成立する回数が成立しない回数よりも多ければ、頻度が高いという旨の成立頻度を取得し、逆に、特定条件が成立する回数が成立しない回数よりも少なければ、頻度が低いという旨の成立頻度を取得するようにできる。
次に、請求項8のプログラムコード生成装置は、請求項1〜7のプログラムコード生成装置において、条件判定演算モデル部における判定処理で判定される特定条件の成立頻度を、モデル解析手段により検索される条件判定演算モデル部と関連づけて記憶する成立頻度記憶手段を備えている。
これによれば、条件判定演算モデル部のそれぞれについての特定条件の成立頻度を、成立頻度記憶手段に記憶させるようにすることができる。
そして、成立頻度取得手段は、成立頻度記憶手段に記憶された成立頻度から、モデル解析手段により検索された条件判定演算モデル部における判定処理で判定される特定条件の成立頻度を取得するようになっている。
このような本請求項8の装置によれば、条件判定演算モデル部が複数ある場合でも、その条件判定演算モデル部のそれぞれについて、前述したように、成立頻度に応じたプログラムコードを生成するようにできる。つまり、条件判定演算モデル部のそれぞれについて、追加処理の実行頻度が低くなるようなプログラムコードを生成することができる。
次に、請求項9のプログラムコード生成装置は、所定の制御対象の制御仕様を表す制御モデルであって、制御のための演算処理を表す演算モデル部を少なくとも有する制御モデルを取得するための制御モデル取得手段を備えている。また、制御モデル取得手段により取得された制御モデル(以下、取得制御モデルと言う)に対応する制御プログラムのプログラムコードを、予め定められたルールに基づいて生成する生成手段を備えている。
この生成手段は、モデル解析手段と、条件取得手段とを備えている。
モデル解析手段は、演算モデル部のうち、その処理内容が、互いに排他的な複数通りの条件のうちの何れが成立するかによって実行所要時間がそれぞれ異なる複数種類のプログラムの何れでも表すことのできる演算モデル部(以下、特定演算モデル部と言う)を前記取得制御モデルから検索する。
一方、条件取得手段は、複数通りの条件のうち、最も成立頻度の高い条件を取得する。
そして、生成手段は、複数種類のプログラムのうち、条件取得手段が取得した条件が成立した場合に実行所要時間が最も短くなるプログラムのプログラムコードを、特定演算モデル部のプログラムコードとして生成するようになっている。
つまり、本請求項9のプログラムコード生成装置では、複数種類のプログラムの何れでも表すことのできる特定演算モデル部について、条件の成立頻度に応じて、実行所要時間が最も短くなるなるようなプログラムコードを生成する。
このため、本請求項9の装置によれば、プログラムコードが所定の装置に実装された際のその装置におけるプログラムの実行時間や処理負荷を抑えることができるプログラムコードを、容易に生成できるようになる。
また、この場合、請求項10のように構成することが好ましい。
請求項10のプログラムコード生成装置は、請求項9の装置において、制御モデルに含まれる可能性のある特定演算モデル部のそれぞれについて、複数種類のプログラムのそれぞれのプログラムコードを記憶するコード記憶手段を備え、生成手段は、コード記憶手段から、モデル解析手段により検索された特定演算モデル部に対応すると共に、条件取得手段が取得した条件が成立した場合に実行所要時間が最も短くなるプログラムのプログラムコードを読み出すようになっている。
これによれば、モデル解析手段により検索された特定演算モデル部に対応し、かつ条件取得手段が取得した条件が成立した場合に実行所要時間が最も短くなるプログラムのプログラムコードを、コード記憶手段から読み出すだけでよいため、そのプログラムコードを生成するための処理を省略することができる点で有利である。
また一方、請求項11のように構成しても良い。
請求項11のプログラムコード生成装置は、請求項9又は請求項10の装置において、制御モデルに含まれる可能性のある特定演算モデル部のそれぞれについて、複数種類のプログラムのそれぞれを表すテンプレートを記憶するテンプレート記憶手段を備えている。
そして、生成手段は、テンプレート記憶手段から、モデル解析手段により検索された特定演算モデル部に対応すると共に、条件取得手段が取得した条件が成立した場合に実行所要時間が最も短くなるプログラムのテンプレートを読み出し、該読み出したテンプレートが表すプログラムのプログラムコードを、モデル解析手段により検索された特定演算モデル部のプログラムコードとして生成するようになっている。
このような請求項11のプログラムコード生成装置によれば、例えば所望のプログラムコードが生成されるように修正を加える場合、テンプレートを修正すれば済む。
ところで、テンプレートは、どのような形式のテンプレートでもよく、例えば、プログラムコードの形式で記述されたテンプレートでも良いし、モデルの形式で記述されたテンプレートでも良い。
尚、請求項5〜7はそれぞれ、請求項9〜11に順次従属させることができる。
以下に、本発明の実施形態を図面に基づき説明する。
[実施形態1]
図1は、本発明が適用されたプログラムコード生成装置3の構成図である。
プログラムコード生成装置3は、例えば車両制御用の制御プログラムのプログラムコードを生成するものであり、周知のコンピュータシステムとして構成されている。そして、そのハードウェア構成は従来より当業者によく知られたものである。このため、一部図示を省略するが、プログラムコード生成装置3は、CPU、ROM、RAM、I/Oおよびこれらを接続するバスラインをはじめ、周辺機器としてのハードディスク装置、キーボード・ポインティングデバイス等の各種入力部(後述するモデル入力部51、設定入力部52、開始指令入力部53等に相当)、ディスプレイ(後述する表示部40に相当)、及び外部との間で通信を行うための通信装置等を備えている。
そして、図1では、プログラムコード生成装置3の機能をブロックにて表すようにしている。以下、具体的に説明する。
本実施形態のプログラムコード生成装置3は、制御仕様を表す後述の制御モデル20から、その制御モデル20に対応する制御プログラムのプログラムコード(ソースコード)を生成するコード生成ツール10と、制御モデル20を入力するためのモデル入力部51と、制御モデル20やコード生成ツール10に対して各種設定を行うための設定入力部52と、コード生成ツール10にプログラムコードの生成やシミュレーションの実行のための各種指令を入力する開始指令入力部53と、コード生成ツール10により生成されたプログラムコードをオブジェクトコードに変換するコンパイラ・リンカ31と、表示部40とを備えている。そして、コンパイラ・リンカ31により作成されたオブジェクトコードは、電子制御装置(以下「ECU」という)のフラッシュROM32に書き込まれる。また、表示部40には、モデル入力部51を介して入力された制御モデル20が表示されるようになっている。
コード生成ツール10は、抽出エンジン11と、コード生成処理部12と、シミュレーション処理部13と、生成ルール記憶部14とを備えている。尚、プログラムコード生成装置3において演算が実行される際には、より高精度な演算を行うために浮動小数点演算により実行される。
抽出エンジン11は、制御モデル20を読み込んで中間ファイルを出力する。具体的に、抽出エンジン11は、制御モデル20から、後述する演算ブロックの情報や、これらの演算ブロックに入力されるパラメータ及びそのパラメータ名の情報等、プログラムコードの生成のために必要な各種情報を抽出し、その抽出した各種情報を含む中間ファイルを出力する。
コード生成処理部12は、抽出エンジン11から出力される中間ファイルに対応するプログラムコードを生成する。尚、詳細は後述する。
そして、生成ルール記憶部14は、コード生成処理部12が中間ファイルに対応するプログラムコードを生成するための生成ルールを記憶する。また、生成ルール記憶部14は、後述する比較演算ブロック23における判定処理で判定される特定条件の成立頻度を記憶する成立頻度記憶部15と、プログラムコードのテンプレートを記憶するコード記憶部16とを有している。
また、シミュレーション処理部13は、抽出エンジン11から出力される前述の中間ファイルに基づきシミュレーションを行う。言い換えると、制御モデル20に対応する制御プログラムをソフトウエア上で実行し、その実行結果を表す各種データをログデータとして検出する。そして、シミュレーションにより得られたそのログデータは、図示しないRAM、或いはハードディスク装置の所定の格納領域に記憶される。
次に、プログラムコード生成装置3において、プログラムコードの生成対象となる制御モデル20について説明する。
制御モデル20は、使用者等(例えば、設計者)により、前述のモデル入力部51を介して入力されるものである。そして、図1に示すように、制御モデル20は、加減算を行う加減算ブロック21、乗除算を行う乗除算ブロック22、比較演算を行う比較演算ブロック23、入力値に応じて動作を換える切換ブロック24、及び論理演算を行う論理演算ブロック25等の演算ブロックや、変数ブロック28及び定数ブロック29等のパラメータを表すブロック(以下、単にパラメータブロックとも言う)から構成される。
ここで、図2は、制御モデル20の具体例を表す図面である。
図2に示す制御モデル20aは、図17(a)に示す制御モデルと同じである。尚、BLK1ブロックは比較演算ブロック23に相当し、Switchブロックは切換ブロック24に相当し、ブロックA,B,Cは変数ブロック28に相当し、ブロックD,Eは定数ブロック29に相当している。
そして、この制御モデル20aが表す制御仕様も図17(a)の制御モデルと同じである。つまり、制御モデル20aは、「制御量Cに定数Eを代入する。ただし、制御量Aが制御量Bよりも大きい(制御量A>制御量B)という条件が成立する場合は、制御量Cに定数Dを代入する」という制御仕様(以下、第1の制御とも言う)を表している。
そして、図3(a)は、このような制御モデル20aに対応するプログラムコードである。つまり、図3(a)は、制御量Cに定数Eを代入するという意味の「C=E」、制御量A>制御量Bの条件(以下、特定条件Sと言う)が成立するか否かを判定し、成立すると判定すると、制御量Cに定数Dを代入し直すという意味の「if(A>B{C=D}」、という記述がされたプログラムコードである。
一方、[発明が解決しようとする課題]にて説明したように、図2の制御モデル20aについて、特定条件Sの成立頻度が高い場合、以下のようにしたほうが有利である。つまり、「制御量Cに定数Dを代入する。ただし、制御量Aが制御量Bよりも大きい(制御量A>制御量B)という条件が成立しない場合(制御量A≦制御量Bが成立する場合)は、制御量Cに定数Eを代入し直す」という制御仕様(以下、第2の制御とも言う)にする。特定条件Sの成立頻度が高い場合、この第2の制御によれば、制御量Cに定数Eを代入し直すという処理の実行頻度が低くなるためである。尚、以下、制御量Cに定数Dを代入し直す処理及び制御量Cに定数Eを代入し直す処理のように、代入し直す処理のことを、追加処理とも記載する。
そして、この第2の制御に対応するプログラムコードが、図3(b)のプログラムコードである。つまり、図3(b)のプログラムコードは、制御量Cに定数Dを代入するという意味の「C=D」、制御量A≦制御量Bの条件が成立するか否かを判定し、その条件が成立すると判定すると(特定条件Sが成立しないと判定すると)、制御量Cに定数Eを代入し直すという意味の「if(A<=B){C=E}」、という記述がされたプログラムコードである。
そして、本実施形態のプログラムコード生成装置3によれば、制御モデル20aについて、特定条件Sの成立頻度に応じて、追加処理の実行頻度が低くなるように、図3(a)のプログラムコード、或いは図3(b)のプログラムコードの何れかが生成される。以下、具体的に説明する。
まず、図4は、プログラムコード生成装置3のコード生成処理部12が、制御モデル20に対応する制御プログラムのプログラムコードを生成する処理の流れを表すフローチャートである。そして、図4の処理は、以下のタイミングで開始される。
まず、使用者により、制御モデル20がモデル入力部51を介して入力され、また、開始指令入力部53を介してプログラムコードの生成を指令する生成指令が、コード生成ツール10に入力されると、抽出エンジン11が、制御モデル20を読み込んで、図示しない処理にて前述の中間ファイルを出力する。そして、その中間ファイルは、コード生成処理部12に入力されるようになっており、コード生成処理部12は、その中間ファイルが入力されると、図4の処理を開始する。尚、使用者により制御モデル20が入力されると、自動的に、生成指令がコード生成ツール10に入力されるように構成してもよい。
そして、図4の処理において、コード生成処理部12は、まず、S110で、プログラムコードを生成するか否か、言い換えると、プログラムコードの生成対象があるか否かを、中間ファイルの情報に基づき判定する。
ところで、制御モデル20は、1つ以上の演算ブロックやパラメータブロックから構成され、所定の処理を実現するひとかたまりのモデル部を少なくとも有する。例えば、モデル部としては、加減算ブロック21と、変数ブロック28と、定数ブロック29とから構成され、所定の変数及び定数に対して加減算を行うモデル部が考えられる。また、図2の制御モデル20aも、モデル部である。特に、制御モデル20aは、「C=E」という処理と、特定条件Sが成立するか否かを判定する判定処理とを行うとともに、判定処理により特定条件Sが成立すると判定されると、「C=D」という追加処理を行うように構成されたモデル部である。
尚、以下、所定の処理と、特定の条件が成立するか否かを判定する判定処理とを行うとともに、判定処理により特定条件が成立すると判定されるか、或いは判定処理により特定条件が成立しないと判定されるかの何れかの場合に、所定の処理の演算結果を訂正するための追加処理を行うように設定されたモデル部を、条件判定演算モデル部とも言う。
そして、S110では、プログラムコードの生成対象のモデル部があるか否かを判定する。
そして、生成対象のモデル部があると判断すると、プログラムコードを生成すると判定し(S110:YES)、S120へ移行する。
S120では、生成対象のモデル部が、前述の条件判定演算モデル部であるか否かを判定する。そして、条件判定演算モデル部でないと判定すると(S120:NO)、S130へ移行し、その条件判定演算モデル部でないと判定したモデル部に対応するプログラムコードを生成する。尚、S130の処理は一般的なものであり、ここでは詳しい説明を省略する。そして、その後、再びS110へ戻る。
一方、S120で、条件判定演算モデル部であると判定すると(S120:YES)、次にS140へ移行する。
S140では、条件判定演算モデル部における判定処理(特定条件が成立するか否かを判定する処理)で判定される特定条件の成立頻度を、前述の成立頻度記憶部15から読み出す。また、この成立頻度は、後述するが、設定入力部52を介して使用者が入力することができるように構成されている。つまり、成立頻度は、予め使用者に入力され、成立頻度記憶部15に記憶される。また、シミュレーション処理部13が、シミュレーションにより特定条件が成立するか否かを検出し、その検出結果を、成立頻度記憶部15に記憶させておく構成とすることもできる(後述する第2実施形態)。この場合、その検出結果に基づき、成立頻度を取得するようにすればよい。
そして、S140で特定条件の成立頻度を読み出すと、S150へ進み、その読み出した成立頻度が規定値より高いか否かを判定する。尚、規定値は、予め使用者等により設定され、ROMやハードディスク装置等の所定の領域に記憶されるが、例えば50%(5割)と設定しておくことが考えられる。
そして、成立頻度が規定値以下であると判定すると(S150:NO)、S160へ移行し、一方、成立頻度が規定値より高いと判定すると(S150:YES)、S170へ移行する。S160及びS170ではそれぞれ、条件判定演算モデル部のプログラムコードを生成するが、具体的に以下のようにする。
まず、本実施形態において、コード記憶部16(図1参照)には、プログラムコードのテンプレートとして、図5に示すようなテンプレートが記憶されている。
図5(a)のテンプレート1では、outにin1を代入するという意味の「out=in1」、in2>in3という特定条件が成立するか否かを判定し、特定条件が成立すると判定すると、outにin4を代入し直す処理を行うという意味の「if(in2>in3){out=in4}」、という記述がされている。
また、図5(b)のテンプレート2は、outにin4を代入するという意味の「out=in4」、in2≦in3という条件が成立するか否かを判定し、その条件が成立すると判定すると(in2>in3という特定条件が成立しないと判定すると)、outにin1を代入し直す処理を行うという意味の「if(in2<=in3){out=in1}」、という記述がされている。尚、out,in1,in2,in3,in4にはそれぞれ、具体的なパラメータ名が記述される。
そして、S160では、コード記憶部16からテンプレート1を読み出し、そのテンプレート1に基づき、プログラムコードを生成する。つまり、「in2>in3」の成立頻度が規定値以下である場合には(S150:NO)、「in2>in3」が成立する場合に追加処理(out=in4)が行われるようになるテンプレート1を採用する。そして、S160の後、再びS110へ戻る。
一方、S170では、コード記憶部16からテンプレート2を読み出し、そのテンプレート2に基づき、プログラムコードを生成する。つまり、「in2>in3」の成立頻度が規定値より高い場合には(S150:NO)、「in2>in3」が成立しない場合(in2≦in3が成立する場合)に追加処理(out=in1)が行われるようになるテンプレート2を採用する。そして、S170の後、再びS110へ戻る。
そして、S110で、プログラムコードを生成すべき対象のモデル部がないと判定すると(S110:NO)、当該処理を終了する。
このような本実施形態のプログラムコード生成装置3において、前述の図2の制御モデル20aが入力されると、以下のようにして、その制御モデル20aに対応するプログラムコードが生成される。
制御モデル20aが入力されると共に生成指令が入力され、図4の処理が開始されると、まず、生成対象のモデル部があると判定し(S110:YES)、また、生成対象のモデル部が条件判定演算モデル部であると判定する(S120:YES)。そしてS140へ移行して、「制御量A>制御量B」という特定条件Sの成立頻度を成立頻度記憶部15から読み出す。
ここで、図6は、成立頻度が入力できるように構成された制御モデル20aを表す図面であり、成立頻度は、予め、制御モデル20aを入力する際に入力することができる。この図6では、BLK1ブロックで判定される特定条件Sの成立頻度FREQを設定するためのパラメータ設定領域23aが、BLK1ブロックと接続線で接続された形態で設けられている。そして、このパラメータ設定領域23aは、設定入力部52を介して、BLK1ブロックに対して設けることができるようになっている。また、BLK1ブロックが複数ある場合には、それぞれ設けることができるし、Switchブロックに対しても設けることができる。さらに、パラメータ設定領域23aを介して設定されるパラメータの種類は、成立頻度FREQに限らず、使用者が任意に選択できる。
そして、特定条件Sの成立頻度FREQは、設定入力部52を介して、パラメータ設定領域23a内に記述することができ、本例では、%(パーセント)を表す数値で記述するようにされている。尚、成立頻度FREQの記述方法は、任意に設定することができる。例えば、「高い」或いは「低い」の何れかで記述する方法でもよいし、度数を表す数字(例えば、5であれば5割を表す)で記述する方法でもよいし、成立回数及び不成立回数を記述するような方法でもよく、どのような形態を用いても良い。後述するパラメータ設定領域23bについても同様である。
そして、パラメータ設定領域23aに記述された成立頻度FREQは、成立頻度記憶部15に、その設定対象のBLK1ブロックと関連づけて記憶される。
そして、S140で、特定条件Sの成立頻度を成立頻度記憶部15から読み出すと、その読み出した成立頻度が規定値より高いか否かを判定し(S150)、成立頻度が規定値以下であると判定するとS160へ移行し、一方、成立頻度が規定値より高いと判定するとS170へ移行する。尚、成立頻度記憶部15に記憶されている成立頻度が、例えば「高い」、「低い」という頻度である場合には、S150では、成立頻度が「高い」か否かを判定するようにすればよい。
そして、S160では、コード記憶部16から、図5(a)のテンプレート1を読み出し、そのテンプレート1に基づき、図2の制御モデル20aに対応するプログラムコードを生成する。具体的に、中間ファイルの情報及び生成ルール記憶部14に記憶された生成ルールに基づき、図5(a)のテンプレート1におけるout,in1,in2,in3,in4に対して、それぞれ順に、図2の制御モデル20aのパラメータ名として、C,E,A,B,Dを当てはめる。これにより、図3(a)のプログラムコードが生成される。そしてその後、S110へ戻ると共に、当該処理を終了する(S110:NO)。
一方、S170では、コード記憶部16から、図5(b)のテンプレート2を読み出し、そのテンプレート2に基づき、図2の制御モデル20aに対応するプログラムコードを生成する。パラメータ名の当てはめについては、前述の通りである。これにより、図3(b)のプログラムコードが生成される。そしてその後、S110へ戻ると共に、当該処理を終了する(S110:NO)。
尚、コード記憶部16に、図3(a),(b)のプログラムコードがそれぞれ、テンプレート1,2として記憶されるようにし、S160、S170では、その記憶されたテンプレート1或いはテンプレート2、即ち、図3(a)或いは図3(b)のプログラムコードを読み出すように構成してもよい。
このように、本装置では、図2の制御モデル20aについて、特定条件Sの成立頻度が規定値以下である場合には(S150:NO)、特定条件Sが成立する場合に追加処理(「C=D」)が行われるようになる図3(a)のプログラムコードが生成される(S160)。つまり、特定条件Sの成立頻度が規定値以下である場合、その図3(a)のプログラムコードによれば、追加処理の実行頻度は低くなることとなる。
一方、本装置では、特定条件Sの成立頻度が規定値より高い場合には(S150:NO)、特定条件Sが成立しない場合(制御量A≦制御量Bの条件が成立する場合)に追加処理(「C=E」)が行われるようになる図3(b)のプログラムコードが生成される(S170)。つまり、特定条件Sの成立頻度が規定値より高い場合、その図3(b)のプログラムコードによれば、追加処理の実行頻度は低くなることとなる。
次に、図2の制御モデル20aとは別の制御モデルの例を用いて、説明する。
図7は、制御モデル20(図1参照)の他の具体例を表す図面である。また、この図7の制御モデル20bも、車両に搭載される電子制御装置が車両の各部を制御する場合の例である。
図7の制御モデル20bは、まず、変数を表すブロックA,B,C,Dを有している。また、ブロックA,B,C,Dはそれぞれ、入力側(入力1,2,3,4)である。尚、ブロックAが表す変数(制御量)を、制御量Aと記載する。ブロックB,C,Dについても同様とする。
次に、制御モデル20bは、制御モデル20aと同じBLK1ブロックを有している。また、制御モデル20bにおいて、ブロックAを始点としてBLK1ブロックのBLK第1ポートに到達する矢印と、ブロックBを始点としてBLK1ブロックのBLK第2ポートに到達する矢印とが記述されている。つまり、BLK1ブロックのBLK第1ポートに制御量Aが入力され、BLK1ブロックのBLK第2ポートに制御量Bが入力されて、BLK1ブロックでは、制御量A>制御量Bの条件(特定条件S)が成立するか否かが判定される。そして、BLK1ブロックにおいて、特定条件Sが成立する場合には、出力が「1」になり、特定条件Sが成立しない場合には、出力が「0」となる。
また、制御モデル20bは、大小を表す符号として「<」が記載されたBLK2ブロックを有している。また、制御モデル20bにおいて、ブロックCを始点としてBLK2ブロックのBLK第1ポートに到達する矢印と、ブロックDを始点としてBLK2ブロックのBLK第2ポートに到達する矢印とが記述されている。つまり、BLK2ブロックのBLK第1ポートに制御量Cが入力され、BLK2ブロックのBLK第2ポートに制御量Dが入力されて、BLK2ブロックでは、制御量C<制御量Dの条件(以下、特定条件Tと言う)が成立するか否かが判定される。そして、BLK2ブロックにおいて、特定条件Tが成立する場合には、出力が「1」になり、特定条件Tが成立しない場合には、出力が「0」となる。
さらに、制御モデル20bは、「AND」が記載されたANDブロックを有している。このANDブロックには、入力ポートとして、第1ポートと第2ポートとがある。そして、このANDブロックにおいて、第1ポートの入力が「1」であり、かつ第2ポートの入力も「1」であれば、出力ポートの出力は「1」となる。一方、第1ポートの入力が「1」であっても、第2ポートの入力が「0」であれば出力は「0」になり、また、第1ポートの入力が「0」であれば出力は「0」となる。つまり、ANDブロックは、論理積演算を行うブロックである。
そして、制御モデル20bにおいては、BLK1ブロックの出力ポートを始点としてAND回路の第1ポートに到達する矢印と、BLK2ブロックの出力ポートを始点としてAND回路の第2ポートに到達する矢印とが記述されている。つまり、ANDブロックでは、BLK1ブロック,BLK2ブロックからの出力値に対し、上記のような論理積演算が行われる。
さらに、制御モデル20bにおいては、符号Xが付されたXブロックが記述されている。このXブロックには、入力ポートがあり、また、このXブロック内には、所定の処理を表す記述がなされるようになっている。そして、Xブロックは、入力ポートの入力が「1」である間、Xブロック内に記述された処理を行うようになっている。逆に、入力ポートの入力が「0」であれば、その記述された処理は行わない。
ここで、図7に示すように、制御モデル20bでは、ANDブロックの出力ポートを始点としてXブロックの入力ポートに到達する矢印が記述されている。また、Xブロック内には、ハイ信号を出力する処理を表す記述がされている。つまり、Xブロックは、ANDブロックの出力が「1」である間、ハイ信号を出力する処理(以下、処理Xと言う)を行う。尚、Xブロックは、ANDブロックの出力が「0」の間、ロー信号を出力する。
以上のように構成された図7の制御モデル20bは、次のような制御仕様を表す。つまり、「ロー信号を出力し、制御量Aが制御量Bよりも大きい(制御量A>制御量B)という条件が成立し、かつ、制御量Cが制御量Dよりも小さい(制御量C<制御量D)という条件が成立すると、その間ハイ信号を出力する」という制御仕様(以下、第3の制御と言う)である。尚、このような制御モデル20bは、上述した条件判定演算モデル部に相当する。つまり、ロー信号を出力する処理が所定の処理に相当し、制御量A>制御量Bかつ制御量C<制御量Dが成立するか否かを判定する処理が判定処理に相当し、ハイ信号を出力する処理が追加処理に相当する。そして、本例では、その判定処理は、さらに、制御量A>制御量Bが成立するか否かの判定処理と、制御量C<制御量Dが成立するか否かの判定処理とから構成され、本装置では、それぞれの判定処理についての成立頻度に基づき、プログラムコードが生成されるようになっている。
そして、このような第3の制御に対応するプログラムコードが、図8(a)に示すプログラムコードである。つまり、図8(a)のプログラムコードは、制御量A>制御量Bかつ制御量C<制御量Dが成立するか否かを判定し、成立すると判定すると(「if((A>B)&&(C<D))」)、処理Xを実行する(「X( );」)ことを表すものである。
一方、第3の制御仕様と同じ制御仕様を表すものとして、以下のような制御仕様が考えられる。つまり、「ロー信号を出力し、制御量Cが制御量Dよりも小さい(制御量C<制御量D)という条件が成立し、かつ、制御量Aが制御量Bよりも大きい(制御量A>制御量B)という条件が成立すると、その間ハイ信号を出力する」という制御(以下、第4の制御と言う)である。
そして、このような第4の制御に対応するプログラムコードが、図8(b)に示すプログラムコードである。つまり、図8(b)のプログラムコードは、制御量C<制御量Dかつ制御量A>制御量Bが成立するか否かを判定し、成立すると判定すると(「if((C<D)&&(A>B))」)、処理Xを実行する(「X( );」)ことを表すものである。
ところで、第3の制御では、特定条件S(制御量A>制御量B)が成立するか否かを判定する判定処理(以下、判定処理Sと言う)を実行し、判定処理Sにより特定条件Sが成立すると判定された場合に、特定条件T(制御量C<制御量D)が成立するか否かを判定する判定処理(以下、判定処理Tと言う)を実行する。逆に、判定処理Sにより特定条件Sが成立しないと判定された場合は、判定処理Tは実行しない。このため、特定条件Sの成立頻度(以下、成立頻度Sと言う)が高い場合、判定処理Tの実行頻度は高くなる。逆に、成立頻度Sが低い場合、判定処理Tの実行頻度も低くなる。
また一方、第4の制御では、判定処理Tにより特定条件Tが成立すると判定された場合に、判定処理Sを実行し、逆に、判定処理Tにより特定条件Tが成立しないと判定された場合は、判定処理Sは実行しない。このため、特定条件Tの成立頻度(以下、成立頻度Tと言う)が高い場合、判定処理Sの実行頻度は高くなる。逆に、成立頻度Tが低い場合、判定処理Sの実行頻度も低くなる。
そして、成立頻度Sが成立頻度Tよりも高い場合、第3の制御と第4の制御とでは、第4の制御のほうが、2回目の判定処理(ここでは、判定処理S)の実行頻度を抑えられる。また、成立頻度Sが成立頻度Tよりも低い場合、第3の制御と第4の制御とでは、第3の制御のほうが、2回目の判定処理(ここでは、判定処理T)の実行頻度を抑えられる。尚、成立頻度Sと成立頻度Tが同じである場合には、第3の制御と第4の制御とでは、2回目の判定処理の実行頻度は同じである。
そして、本実施形態のプログラムコード生成装置3は、図7の制御モデル20bについて、成立頻度S及び成立頻度Tに応じて、2回目の判定処理の実行頻度が低くなるような、制御モデル20bに対応するプログラムコードを生成する。尚、2回目の判定処理の実行頻度が低くなることは、処理X(追加処理に相当)の実行頻度が低くなることを意味する。以下、図4のフローチャートに基づき説明する。
図7の制御モデル20bが入力されると共に生成指令が入力され、図4の処理が開始されると、まず、生成対象のモデル部があると判定し(S110:YES)、生成対象が条件判定演算モデル部であると判定する(S120:YES)。そして、S140へ移行して、成立頻度S及び成立頻度Tをそれぞれ、成立頻度記憶部15から読み出す。
ここで、成立頻度S及び成立頻度Tは、図6に示す場合と同様に、予め、使用者により設定されるように構成されている。図9に、その構成を示す。
図9では、BLK1ブロックとBLK2ブロックとのそれぞれに対して、成立頻度FREQを設定するためのパラメータ設定領域23bが設けられている。
そして、設定入力部52を介して、BLK1ブロックについてのパラメータ設定領域23bに成立頻度Sを設定し、BLK2ブロックについてのパラメータ設定領域23bに成立頻度Tを設定できるようになっている。
そして、パラメータ設定領域23bに設定された成立頻度S及び成立頻度Tは、成立頻度SがBLK1ブロックと関連づけられ、成立頻度TがBLK2ブロックと関連づけられて、成立頻度記憶部15に記憶される。
そして、S140で、成立頻度S及び成立頻度Tを成立頻度記憶部15から読み出すと、次のS150では、この例では、成立頻度Sが成立頻度Tより高いか否かを判定する。そして、成立頻度Sが成立頻度T以下であると判定すると(S150:NO)、S160へ移行し、一方、成立頻度Sが成立頻度Tより高いと判定すると(S150::YES)、S170へ移行する。
ここで、コード記憶部16には、図10に示すようなテンプレートが記憶されている。図10(a)のテンプレート1は、「in1>in2かつin3<in4の場合、処理Xを実行する」というプログラムコードを表すテンプレートであり、前述の第3の制御に対応する。また、図10(b)のテンプレート2は、「in3<in4かつin1>in2の場合、処理Xを実行する」というプログラムコードを表すテンプレートであり、前述の第4の制御に対応する。尚、in1,in2,in3,in4にはそれぞれ、具体的なパラメータ名が記述される。
そして、S160では、コード記憶部16から、図10(a)のテンプレート1を読み出し、そのテンプレート1に基づき、図7の制御モデル20bに対応するプログラムコードを生成する。具体的に、中間ファイルの情報及び生成ルール記憶部14に記憶された生成ルールに基づき、図10(a)のテンプレート1におけるin1,in2,in3,in4に対して、それぞれ順に、図7の制御モデル20bのパラメータ名として、A,B,C,Dを当てはめる。これにより、図8(a)のプログラムコードが生成される。そしてその後、S110へ戻ると共に、当該処理を終了する(S110:NO)。
一方、S170では、コード記憶部16から、図10(b)のテンプレート2を読み出し、そのテンプレート2に基づき、図7の制御モデル20aに対応するプログラムコードを生成する。パラメータ名の当てはめについては、前述の通りである。これにより、図8(b)のプログラムコードが生成される。そしてその後、S110へ戻ると共に、当該処理を終了する(S110:NO)。
尚、コード記憶部16に、図8(a),(b)のプログラムコードがそれぞれ、テンプレート1,2として記憶されるようにし、S160、S170では、その記憶されたテンプレート1或いはテンプレート2、即ち、図8(a)或いは図8(b)のプログラムコードを読み出すように構成してもよい。
このように、本装置では、図7の制御モデル20bについて、成立頻度Sが成立頻度T以下である場合には(S150:NO)、まず判定処理Sが実行され、判定処理Sで特定条件Sが成立すると判定されると、次に判定処理Tが実行されるようになる図8(a)のプログラムコードが生成される(S160)。つまり、成立頻度Sが成立頻度T以下である場合、その図8(a)のプログラムコードによれば、2回目の判定処理Tの実行頻度が低くなることとなる。また、処理Xの実行頻度も低くなることとなる。
一方、本装置では、成立頻度Sが成立頻度Tより高い場合には(S150::YES)、まず判定処理Tが実行され、判定処理Tで特定条件Tが成立すると判定されると、次に判定処理Sが実行されるようになる図8(b)のプログラムコードが生成される(S160)。つまり、成立頻度Sが成立頻度Tより高い場合、その図8(b)のプログラムコードによれば、2回目の判定処理Sの実行頻度が低くなることとなる。また、処理Xの実行頻度も低くなることとなる。
尚、本実施形態において、抽出エンジン11が制御モデル取得手段に相当し、コード生成処理部12が生成手段に相当し、S110及びS120の処理がモデル解析手段に相当し、S140の処理が成立頻度取得手段に相当し、S150の処理が成立頻度判定手段に相当し、コード記憶部16がコード記憶手段に相当し、設定入力部52が入力手段に相当し、成立頻度記憶部15が成立頻度記憶手段に相当している。
以上のように、本実施形態によれば、例えば、制御モデル20aに対応するプログラムコードとして、追加処理の実行頻度が低くなるように、特定条件Sの成立頻度が規定値より高い場合に追加処理の実行頻度が低くなるプログラムコードと、特定条件Sの成立頻度が規定値以下である場合に追加処理の実行頻度が低くなるプログラムコードとの何れかが、特定条件Sの実行頻度に応じて生成される。
一方、追加処理の実行頻度が低くなるようなプログラムコードがECUに実装された場合、そのECUにおいて、追加処理の実行頻度が低くなる分、プログラムの実行時間や処理負荷が低減されるため有利となる。
また、本実施形態によれば、例えば、制御モデル20bに対応するプログラムコードとして、2回目の判定処理の実行頻度が低くなるように、特定条件Sの成立頻度Sが特定条件Tの成立頻度Tより高い場合に2回目の判定処理の実行頻度が低くなるプログラムコードと、特定条件Sの成立頻度Sが特定条件Tの成立頻度T以下である場合に2回目の判定処理の実行頻度が低くなるプログラムコードとの何れかが、成立頻度S及び成立頻度Tに応じて生成される。尚、2回目の判定処理の実行頻度が低くなると、2回目の判定処理の後の処理Xの実行頻度も低くなることとなる。
一方、2回目の判定処理の実行頻度が低くなるようなプログラムコードがECUに実装された場合、そのECUにおいて、2回目の判定処理や処理Xの実行頻度が低くなる分、プログラムの実行時間や処理負荷が低減されるため有利となる。
そして、本実施形態のプログラムコード生成装置3によれば、ECUに実装した際、実行時間や処理負荷の点で有利となるプログラムコードを、容易に生成できるようになる。
また、本実施形態によれば、制御モデル20a,20bに対応するプログラムコードのテンプレートがそれぞれ、コード記憶部16に記憶されており、コード生成処理部12は、特定条件の成立頻度に応じて、コード記憶部16に記憶されたテンプレートを読み出して、その読み出したテンプレートに基づき、プログラムコードを生成する。つまり、コード生成処理部12は、テンプレートに基づきプログラムコードを生成すればよく、これによれば、制御モデル20a,20bに基づきプログラムコードを生成する場合と比較して、プログラムコード生成装置3の処理負荷を抑えることができる。
そして、本実施形態によれば、制御モデル20a,20bに限られず、モデル入力部51を介して入力される制御モデル20について、特定条件の成立頻度に応じて、追加処理の実行頻度が低くなるようなその制御モデル20に対応するプログラムコードが生成されるようにすることができる。また、その制御モデル20に対応するプログラムコードのテンプレートをコード記憶部16に記憶させておき、特定条件の成立頻度に応じて、コード記憶部16に記憶されたテンプレートが読み出され、その読み出されたテンプレートに基づき、プログラムコードが生成されるようにすることができる。
また、本実施形態において、制御量A>制御量Bの条件、及び制御量A≦制御量Bの条件は、請求項9の互いに排他的な複数通りの条件に相当する。そして、制御モデル20aは、請求項9の特定演算モデル部に相当する。つまり、本実施形態は、請求項9〜11にも対応するものである。
そして、抽出エンジン11は請求項9の制御モデル取得手段にも相当し、コード生成処理部12は請求項9の生成手段にも相当し、S110及びS120の処理は請求項9のモデル解析手段にも相当し、S140及びS150の処理は請求項9の条件取得手段にも相当し、コード記憶部16は請求項10のコード記憶手段にも相当する。
[第2実施形態]
次に、本発明の第2実施形態について説明する。
本第2実施形態のプログラムコード生成装置3は、第1実施形態のプログラムコード生成装置3と同じ構成である(図1参照)。また、図4の処理が実行される点も同じである。
一方、本第2実施形態のプログラムコード生成装置3は、特定条件(例えば特定条件S,T)が成立するか否かをシミュレーションにより検出し、その検出結果に基づき、成立頻度を取得するようになっている点が第1実施形態と異なっている。以下、図2の制御モデル20aに場合について具体的に説明する。
まず、図11は、制御モデル20aについて、パラメータ設定領域23aが設けられた構成を表す図面である。そして、本第2実施形態の場合、図11に示すように、パラメータ設定領域23a内には、特定条件Sの成立回数CNTTと不成立回数CNTFとがそれぞれ記述される構成となっている。
具体的に、特定条件Sの成立回数及び不成立回数がシミュレーションにより検出され、その検出された成立回数の値が成立回数CNTTとして、また、検出された不成立回数の値が不成立回数CNTFとして、それぞれパラメータ設定領域23a内に記述される。加えて、成立頻度記憶部15に、BLK1ブロックと関連づけて、成立回数CNTTと不成立回数CNTFとが記憶される。以下、説明する。
図12は、シミュレーション処理部13が行う処理の流れを表すフローチャートである。この処理では、制御モデル20(本例では、制御モデル20a)に対応する制御プログラムのシミュレーションが実行されると共に、シミュレーション結果を表すログデータが解析されて、特定条件(本例では、特定条件S)の成立回数及び不成立回数が検出される。そして、以下のタイミングで実施される。
まず、使用者により、制御モデル20がモデル入力部51を介して入力され、また、開始指令入力部53を介してシミュレーションの実行を指令する実行指令が、コード生成ツール10に入力されると、抽出エンジン11が、制御モデル20を読み込んで、図示しない処理にて制御モデル20に対応する制御プログラムの情報を含む中間ファイルを出力する。そして、その中間ファイルは、シミュレーション処理部13に入力されるようになっており、シミュレーション処理部13は、その中間ファイルが入力されると、図12の処理を開始する。尚、使用者により制御モデル20が入力されると、自動的に、実行指令がコード生成ツール10に入力されるように構成してもよい。
図12の処理では、まず、S210にて、制御モデル20aに対応する制御プログラムをシミュレーションする。つまり、その制御プログラムをソフトウエア上で実行する。尚、このS210において、シミュレーションにより得られたシミュレーション結果を表すログデータは、図示しないRAMに一旦記憶されると共に、ハードディスク装置に記憶される。
そして、次にS220では、シミュレーションを終了するか否かを判定する。具体的に、シミュレーションを実行する回数が予め定められており、このS220では、シミュレーションが、予め定められた回数(規定回数)実行されたか否かを判定する。
そして、シミュレーションが規定回数実行されていないと判断すると、シミュレーションを終了しないと判定して(S220:NO)、再びS210へ戻り、シミュレーションを実行する。
一方、S220で、シミュレーションが規定回数実行されたと判断すると、シミュレーションを終了すると判定して(S220:YES)、S230へ移行する。S230では、以下の処理を行う。
シミュレーション処理部13では、シミュレーションにより検出される特定条件Sの成立回数NTと不成立回数NFとがそれぞれ、図示しないカウンタによりカウントされるようになっており、このS230では、そのカウンタにおける成立回数NTの値及び不成立回数NFの値を0(初期値)にする。尚、成立回数NT及び不成立回数NFが、RAM等の所定の格納領域に更新記憶されるように構成してもよい。
そして、S230の次は、S240へ進み、S210で得られたログデータのうち、解析すべきログデータ、言い換えると、解析していないログデータがあるか否かを判定する。そして、解析すべきログデータがあると判定すると(S240:YES)、S250へ移行し、その解析すべきログデータを解析して、そのログデータから、特定条件Sが成立したか否かを表すデータ(以下、成立頻度検出データと言う)を読み込む。また、成立頻度検出データの値は、0,1の何れかであり、0は特定条件Sが成立していないことを表し、1は特定条件Sが成立したことを表す。
そして、S250で成立頻度検出データを読み込むと、S260へ進み、その読み込んだ成立頻度検出データの値が1であるか否かを判定する。そして、1であると判定すると(S260:YES)、特定条件Sが成立したと判断してS270へ移行し、成立回数NTの値を1増加させる。そして、再びS240へ戻る。
一方、S260で成立頻度検出データが1でない、即ち、0であると判定すると(S260:NO)、特定条件Sが成立していないと判断してS280へ移行し、不成立回数NFの値を1増加させる。そして、再びS240へ戻る。
また、S240で解析すべきログデータがないと判定すると(S240:NO)、S290へ移行し、S230〜S270で検出された成立回数NTの値を、成立回数CNTTとして設定し、S230〜S260及びS280で検出された不成立回数NFの値を、不成立回数CNTFとして設定する。尚、設定するとは、前述のように、成立回数CNTT及び不成立回数CNTFを、パラメータ設定領域23a内に記述すると共に、成立頻度記憶部15に、BLK1ブロックと関連づけて記憶させることである。そしてその後、当該処理を終了する。
そして、本第2実施形態において、図4の処理は、この図12の処理が終了し、使用者により、開始指令入力部53を介して前述の生成指令が入力されると開始される。尚、図12の処理が終了すると、図4の処理が自動で開始されるように構成してもよい。
そして、本第2実施形態の図4のS140では、成立頻度記憶部15から成立回数CNTT及び不成立回数CNTFを読み出して、その読み出した成立回数CNTT及び不成立回数CNTFに基づき、成立頻度を取得する。例えば成立回数CNTTが300(回)であり、不成立回数CNTFが180(回)であれば、成立頻度は300/(300+180)=62.5%と算出することができる。尚、成立回数CNTTと不成立回数CNTFの大小を比較し、成立頻度が「高い」或いは「低い」と算出するようにしてもよい。
尚、本第2実施形態において、シミュレーション処理部13及びS240〜S290の処理が検出手段に相当している。
以上のように、本第2実施形態によれば、シミュレーション処理部13が、制御モデル20aに対応する制御プログラムについてシミュレーションを実行すると共に、特定条件Sの成立回数及び不成立回数を検出し、コード生成処理部12は、その検出結果に基づき、特定条件Sの成立頻度を取得する。このため、使用者が制御モデル20aに対して成立頻度を設定したりしなくてもよく、成立頻度が自動で容易に得られるようにすることができ、使用者にとって使い勝手がよくなる。また、シミュレーションを繰り返し実行するようにすれば、特定条件Sが成立するか否かを表すデータを多数取得できることとなり、これによれば、シミュレーションで得られる成立頻度の信頼性を向上させることができる。このため、追加処理の実行頻度が低くなるプログラムコードが確実に生成されるようにすることができる。
[実施形態3]
次に、本発明の第3実施形態について説明する。
図13は、本第3実施形態のプログラムコード生成装置3の構成図である。
本第3実施形態のプログラムコード生成装置3は、第1実施形態のプログラムコード生成装置3(図1参照)と比較して、生成ルール記憶部14に、モデル記憶部17を備えている点が異なっている。
モデル記憶部17は、制御モデル20を表すためのモデルのテンプレートを記憶するものである。具体的に、モデル記憶部17には、図14及び図15に示すようなモデルのテンプレートが記憶されている。
図14(a)のテンプレート1は、前述した第1の制御に対応する制御モデルのテンプレートであり、図14(b)のテンプレート2は、前述した第2の制御に対応する制御モデルのテンプレートである。
ここで、図14(a)は、図17(a)と同じであるため、ここでは詳しい説明を省略する。一方、図14(b)について説明すると、図14(a)と異なり、BLK1ブロックには、大小を表す符号として、「≦」が記述され、また、Switchブロックの第1ポートには定数Eが入力され、Switchブロックの第3ポートには定数Dが入力されるように構成されている。この構成によれば、「制御量Cに定数Dを代入する。ただし、制御量A≦制御量Bという条件が成立する場合は、制御量Cに定数Eを代入する」という前述の第2の制御が実現される。
また、図15(a)のテンプレート1は、前述した第3の制御に対応する制御モデルのテンプレートであり、図15(b)のテンプレート2は、前述した第4の制御に対応する制御モデルのテンプレートである。
ここで、図15(a)は、図7と同じであるため、ここでは詳しい説明を省略する。一方、図15(b)について説明すると、図15(a)と異なり、BLK1ブロックの出力値はAND回路の第2ポートに入力され、BLK2ブロックの出力値はAND回路の第1ポートに入力されるように構成されている。この構成によれば、「ロー信号を出力し、制御量C<制御量Dという条件が成立し、かつ、制御量A>制御量Bという条件が成立する間は、ハイ信号を出力する」という前述の第4の制御が実現される。
そして、本第3実施形態では、コード生成処理部12は、図4の処理に代えて、図16の処理を実行する。尚、この図16の処理が開始されるタイミングは、図4の処理が実行される場合と同じであり、つまり、制御モデル20が入力されると共に生成指令が入力され、抽出エンジン11から所定の中間ファイルがコード生成処理部12に入力されたタイミングである。
図16の処理では、まずS310にて、抽出エンジン11からの中間ファイルに基づき、プログラムコードの生成対象のモデル部を検索してそのモデル部があるか否かを判定し、生成対象のモデル部がないと判定すると(S310:NO)、そのまま当該処理を終了する。一方、対象のモデル部があると判定すると(S310:YES)、S320へ移行し、その生成対象のモデル部が、条件判定演算モデル部であるか否かを判定する。
S320で、条件判定演算モデル部でないと判定すると(S320:NO)、S380へ移行し、その条件判定演算モデル部でないと判定したモデル部について、プログラムコードを生成する。尚、S380の処理の内容については、ここでは詳しい説明を省略する。
一方、S320で、条件判定演算モデル部であると判定すると(S320::YES)、S330へ移行する。S330では、その条件判定演算モデル部における判定処理で判定される条件の成立頻度を取得する。尚、成立頻度は、図6を用いて前述したように、予め、使用者により設定入力部52を介して入力され、成立頻度記憶部15に記憶される。そして、S330では、成立頻度記憶部15から、S310で検索された条件判定演算モデル部に対応する成立頻度を読み出す。
また、図11及び図12を用いて説明したように構成してもよい。つまり、シミュレーション処理部13が、入力された制御モデル20に対応する制御プログラムのシミュレーションを実行すると共に、条件判定演算モデル部で判定される条件の成立回数及び不成立回数を検出し、その検出値を、成立頻度記憶部15に記憶させる。そして、S330では、その検出値を成立頻度記憶部15から読み出すと共に、その読み出した検出値に基づき、成立頻度を取得するように構成してもよい。
そして、S330の後、S340へ移行し、取得した成立頻度が規定値より高いか否かを判定する。そして、成立頻度が規定値以下であると判定すると(S340:NO)、S350へ移行し、一方、成立頻度が規定値より高いと判定すると(S340::YES)、S360へ移行する。
S350では、モデル記憶部17から、テンプレート1(図14(a)或いは図15(a))を読み出すと共に、その後、S370へ移行し、その読み出したテンプレート1を、表示部40に表示させる。この場合、読み出したテンプレート1が、入力された制御モデル20の一部を構成するものである場合、その入力された制御モデル20のテンプレート1に対応する部分とS350で読み出したテンプレート1とを置き換えて、その置き換えを行った後の制御モデル20全体を、表示部40に表示させるようにすればよい。また、入力された制御モデル20と、読み出したテンプレート1とをそれぞれ別々に、1画面上に表示させるようにしてもよい。さらに、読み出したテンプレート1のみを表示させるようにしてもよい。テンプレート2についても同様である。
そして、S370の処理の後、S380へ移行し、S370で表示部40に表示させたテンプレート1に対応するプログラムコードを生成する。そして再び、S310へ戻る。
一方、S360では、モデル記憶部17から、テンプレート2(図14(b)或いは図15(b))を読み出すと共に、その後、S370へ移行し、その読み出したテンプレート2を、表示部40に表示させる。そして、S380へ移行し、S370で表示部40に表示させたテンプレート2に対応するプログラムコードを生成する。そして再び、S310へ戻る。
次に、具体例を用いて説明する。
まず、図2の制御モデル20aの場合について説明する。
制御モデル20aが入力されると共に生成指令が入力されて、図16の処理が開始されると、生成対象のモデル部があると判定し(S310:YES)、また、その生成対象のモデル部が、条件判定演算モデル部であると判定する(S320::YES)。
そして、成立頻度記憶部15から、制御モデル20aにおいて判定される特定条件Sの成立頻度を取得し(S330)、その後、取得した成立頻度が規定値より高いか否かを判定する(S340)。尚、規定値は、予め使用者等により設定され、ROMやハードディスク装置等の所定の領域に記憶されるが、例えば50%(5割)と設定しておくことが考えられる。
そして、成立頻度が規定値以下であると判定すると(S340:NO)、モデル記憶部17から、図14(a)のテンプレート1を読み出す(S350)。このテンプレート1は、前述のように、第1の制御を表すものであり、第1の制御によれば、特定条件S(制御量A>制御量B)の成立頻度が低い(規定値以下)の場合、「C=D」の追加処理、即ち、CにDを代入し直すという追加処理の実行頻度が低くなる。
そしてその後、読み出した図14(a)のテンプレート1を、表示部40に表示させると共に(S370)、その表示させたテンプレート1に対応するプログラムコードを生成する(S380)。これによれば、図3(a)に示すプログラムコードが生成される。そしてその後、再びS310へ戻る。
一方、S340で成立頻度が規定値より高いと判定すると(S340::YES)、モデル記憶部17から、図14(b)のテンプレート2を読み出す(S360)。このテンプレート2は、前述のように、第2の制御を表すものであり、第2の制御によれば、特定条件S(制御量A>制御量B)の成立頻度が高い(規定値より高い)場合、「C=E」の追加処理、即ち、CにEを代入し直すという追加処理の実行頻度が低くなる。
そしてその後、読み出した図14(b)のテンプレート2を、表示部40に表示させると共に(S370)、そのテンプレート2に対応するプログラムコードを生成する(S380)。これによれば、図3(b)に示すプログラムコードが生成される。そしてその後、再びS310へ戻る。
つまり、本第3実施形態のプログラムコード生成装置3によれば、第1及び第2実施形態のプログラムコード生成装置3と同様に、制御モデル20aについて、特定条件Sの成立頻度が規定値以下である場合には、図3(a)のプログラムコードが生成され、特定条件Sの成立頻度が規定値より高い場合には、図3(b)プログラムコードが生成される。つまり、追加処理の実行頻度が低くなるようなプログラムコードが生成される。
次に、図7の制御モデル20bの場合について説明する。
制御モデル20bが入力されると共に生成指令が入力されて、図16の処理が開始されると、生成対象のモデル部があると判定し(S310:YES)、また、その生成対象のモデル部が、条件判定演算モデル部であると判定する(S320::YES)。
そして、成立頻度記憶部15から、制御モデル20bで判定される特定条件Sの成立頻度Sと、特定条件Tの成立頻度Tとを読み出し(S330)、その後、本例では、成立頻度Sが成立頻度Tより高いか否かを判定する。
そして、成立頻度Sが成立頻度T以下であると判定すると(S340:NO)、モデル記憶部17から、図15(a)のテンプレート1を読み出す。このテンプレート1は、前述のように、第3の制御を表すものであり、第3の制御によれば、成立頻度Sが成立頻度T以下である場合、2回目の判定処理(判定処理T)の実行頻度が低くなる。
そしてその後、読み出した図15(a)のテンプレート1を、表示部40に表示させると共に(S370)、その表示させたテンプレート1に対応するプログラムコードを生成する(S380)。これによれば、図8(a)に示すプログラムコードが生成される。そしてその後、再びS310へ戻る。
一方、S340で成立頻度Sが成立頻度Tより高いと判定すると(S340::YES)、S360へ移行し、モデル記憶部17から、図15(b)のテンプレート2を読み出す。このテンプレート2は、前述のように、第4の制御を表すものであり、第4の制御によれば、成立頻度Sが成立頻度Tより高い場合、2回目の判定処理(判定処理S)の実行頻度が低くなる。
そしてその後、S370へ移行し、読み出した図15(b)のテンプレート2を、表示部40に表示させると共に、S380へ移行し、そのテンプレート2に対応するプログラムコードを生成する。これによれば、図8(b)に示すプログラムコードが生成される。そしてその後、再びS310へ戻る。
つまり、本第3実施形態のプログラムコード生成装置3によれば、第1及び第2実施形態のプログラムコード生成装置3と同様に、制御モデル20bについて、成立頻度Sが成立頻度T以下である場合には、図8(a)のプログラムコードが生成され、成立頻度Sが成立頻度Tより高い場合には、図8(b)プログラムコードが生成される。つまり、2回目の判定処理の実行頻度が低くなるようなプログラムコードが生成される。また、2回目の判定処理の実行頻度が低くなることは、2回目の判定処理の後の処理X(追加処理に相当)の実行頻度が低くなることを意味する。
尚、本第3実施形態において、モデル記憶部17がモデル記憶手段に相当し、表示部40が表示手段に相当し、S370の処理が画像表示制御手段に相当している。
以上のように、本第3実施形態によれば、特定条件の成立頻度に応じて、モデル記憶部17から、モデルのテンプレートが読み出されて、その読み出されたモデルのテンプレートが、表示部40に表示されるようになっている。このため、使用者は、どのようなモデルに基づきプログラムコードが生成されるのかが、視覚で認識できるようになる。よって、使用者にとって使い勝手がよくなる。例えば、入力した制御モデルと、その入力した制御モデルに基づき作成されたプログラムコードが対応しないというような不都合が生じることを防止することができる。
[実施形態4]
次に、本発明の第4実施形態について説明する。
第4実施形態のプログラムコード生成装置の構成は、第3実施形態のプログラムコード生成装置3と同じ構成である(図13参照)。
そして、本第4実施形態では、少なくとも3つ以上の複数種類のプログラムの何れでも表すことができる制御モデル(以下、特定演算モデル部)のプログラムコードを生成するようになっている。ここでは、特定演算モデル部が、車両制御用の制御プログラムを表し、特に、所定の制御量(例えば燃料噴射量やスロットル開度等)を補正するための補正値をエンジンの回転数に応じて算出するためのマップデータを、そのマップデータが記憶された記憶領域から読み出す処理の制御プログラムを表す場合について説明する。
本第4実施形態の例では、エンジンの回転数が高回転の時に用いるマップデータ(以下、第1マップデータと言う)と、中回転の時に用いるマップデータ(以下、第2マップデータと言う)と、低回転の時に用いるマップデータ(以下、第3マップデータと言う)とがあり、特定演算モデル部は、その第1〜3のマップデータを読み出す処理の制御プログラムを表すものである。尚、この特定演算モデル部が表す制御プログラムにより読み出されたマップデータは、所定の格納領域に格納されると共に、特定の補正実施条件が成立すると、別のプログラムで読み込まれ、その時のエンジン回転数に応じた補正値を算出するために使用される。
以下、どのように特定演算モデル部に対応するプログラムコードを生成するかについて説明する。
まず、使用者により、特定演算モデル部を含む制御モデル20(図13参照)がモデル入力部51を介して入力され、また、開始指令入力部53を介してシミュレーションの実行を指令する実行指令が、コード生成ツール10に入力されると、抽出エンジン11が、制御モデル20を読み込んで、図示しない処理にて制御モデル20に対応する制御プログラムの情報を含む中間ファイルを出力する。そして、その中間ファイルは、シミュレーション処理部13に入力されるようになっており、シミュレーション処理部13は、その中間ファイルが入力されると、その中間ファイルに基づき、制御モデル20に対応する制御プログラムをシミュレーションする。尚、使用者により制御モデル20が入力されると、自動的に、実行指令がコード生成ツール10に入力されるように構成してもよい。また、このシミュレーションの際、エンジンの実機が実際に接続され、そのエンジンの回転数のデータが利用される。
ここで、まず、そのシミュレーションを含め、以下に説明する処理は、シミュレーション処理部13が行う処理である。
ところで、シミュレーションにより得られたシミュレーション結果を表すログデータは、図示しないRAMに一旦記憶されると共に、ハードディスク装置に記憶される。また、シミュレーションは、予め定められた回数実行される。
そして、シミュレーション処理部13は、シミュレーション結果を表すログデータから、前記補正実施条件成立時のエンジン回転数について、高回転、中回転、低回転となる割合を算出する。言い換えると、高回転となる頻度、中回転となる頻度、低回転となる頻度をそれぞれ算出する。
次に、最も成立の頻度が高くなるエンジンの回転状態の情報(以下、回転状態情報と言う)を取得する。例えば、高回転となる割合(頻度)が最も高ければ、「高回転」である旨の情報を取得する。尚、回転状態情報は、図示しないRAM等に記憶される。
以上が、シミュレーション処理部13が行う処理である。
次に説明する処理は、コード生成処理部12が行う処理である。
コード生成処理部12は、特定演算モデル部について、回転状態情報に基づき、実行所要時間が最も短くなるようなプログラムコードを生成する処理を行う。
具体的に、回転状態情報をRAM等から読み出すと共に、その回転状態情報が表す回転状態(高回転、中回転、低回転の何れか)の時に用いるマップデータ(第1〜第3マップデータの何れか)を、最初に読み出すようになるプログラムコードを生成する。
例えば、回転状態情報が「高回転」を表す場合、高回転の時に用いる第1マップデータを最初に読み出すようなプログラムコードを生成する。また、第1マップデータを読み出した後は、第2マップデータ、第3マップデータの順で読み出すように構成する。尚、第2,第3マップデータについて、第3マップデータ、第2マップデータの順で読み出すように構成してもよい。
また、回転状態情報が「中回転」を表す場合、中回転の時に用いる第2マップデータを最初に読み出すようなプログラムコードを生成する。また、第2マップデータを読み出した後は、第1マップデータ、第3マップデータの順で読み出すように構成する。尚、第1,第3マップデータについて、第3マップデータ、第1マップデータの順で読み出すように構成してもよい。
さらに、回転状態情報が「低回転」を表す場合、低回転の時に用いる第3マップデータを最初に読み出すようなプログラムコードを生成する。また、第3マップデータを読み出した後は、第1マップデータ、第2マップデータの順で読み出すように構成する。尚、第1,第2マップデータについて、第2マップデータ、第1マップデータの順で読み出すように構成してもよい。
以上のように、コード生成処理部12は、シミュレーション処理部13の処理により得られた回転状態情報に基づき、実行所要時間が最も短くなるプログラムコードを生成する。
このような構成によれば、最も成立の頻度が高くなるエンジンの回転状態の時に使用されるマップデータが、まず最初に読み出されるようなプログラムコードを生成することができる。つまり、補正値を算出する際に使用しないマップデータを最初に読み出してしまう、ということが生じる頻度を抑えることができる。このため、実行所要時間や処理負荷を抑えることができるプログラムコードを生成できるようになる。
ところで、第1マップデータが最初に読み出されるようになるプログラムコード(以下、第1プログラムコードと言う)、第2マップデータが最初に読み出されるようになるプログラムコード(以下、第2プログラムコードと言う)、及び第3マップデータが最初に読み出されるようになるプログラムコード(以下、第3プログラムコードと言う)をそれぞれ、コード記憶部16に記憶しておき、回転状態情報に基づいて、そのコード記憶部16から、第1〜第3プログラムコードの何れかを読み出すように構成してもよい。つまり、回転状態情報が「高回転」を表すものであれば、第1プログラムコードを読み出し、「中回転」を表すものであれば、第2プログラムコードを読み出し、「低回転」を表すものであれば、第3プログラムコードを読み出すように構成してもよい。
また、第1〜第3プログラムコードに代えて、第1〜第3プログラムコードを表すテンプレート(以下、それぞれ、第1,第2,第3テンプレートと言う)を、例えばモデル記憶部17に記憶しておくようにしてもよい。そして、この場合、回転状態情報に基づいて、モデル記憶部17から、第1〜第3テンプレートの何れかを読み出して、その読み出した第1〜第3テンプレートの何れかに基づき、プログラムコードを生成するように構成すればよい。つまり、回転状態情報が「高回転」を表すものであれば、第1テンプレートを読み出すと共に、その第1テンプレートに基づいて第1プログラムコードを生成し、「中回転」を表すものであれば、第2テンプレートを読み出すと共に、その第2テンプレートに基づいて第2プログラムコードを生成し、「低回転」を表すものであれば、第3テンプレートを読み出すと共に、その第3テンプレートに基づいて第3プログラムコードを生成するように構成すればよい。
尚、本第4実施形態において、コード生成処理部12が請求項9〜11の生成手段に相当し、シミュレーション処理部13の回転状態情報を取得する処理が条件取得手段に相当し、コード記憶部16が請求項10のコード記憶手段に相当し、モデル記憶部17が請求項11のテンプレート記憶手段に相当している。
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術範囲内で種々の形態をとることができる。
例えば、上記第1,第2実施形態において、コード生成処理部12がコード記憶部16からテンプレートを読み出すと、その読み出したテンプレートに対応する制御モデルが表示部40に表示されるように構成してもよい。
また、条件判定演算モデル部における判定処理は、2つ以上の判定処理で構成されていてもよい。
また、図7の例において、成立頻度S>成立頻度Tという条件についての成立頻度Uを取得するようにし、その成立頻度Uに応じて、プログラムコードが生成されるような構成としてもよい。
第1実施形態のプログラムコード生成装置3の構成図である。 制御モデルの一例を表す図面である(例1)。 第1の例の制御モデルのプログラムコードを表す図面である(例1)。 コード生成処理部12が実行する処理の流れを表すフローチャートである。 プログラムコードのテンプレートを表す図面である(例1)。 パラメータ設定の構成を表す図面である(例1)。 制御モデルの一例を表す図面である(例2)。 制御モデルのプログラムコードを表す図面である(例2)。 パラメータ設定の構成を表す図面である(例2)。 プログラムコードのテンプレートを表す図面である(例2)。 パラメータ設定の構成を表す図面である(例3)。 シミュレーション処理部13が実行する処理の流れを表すフローチャートである。 第3実施形態のプログラムコード生成装置3の構成図である。 制御モデルのテンプレートを表す図面である(例1)。 制御モデルのテンプレートを表す図面である(例2)。 第3実施形態のコード生成処理部12が実行する処理の流れを表すフローチャートである。 従来のプログラムコード生成方法を説明するための図面である。
符号の説明
3…プログラムコード生成装置、10…コード生成ツール、11…抽出エンジン、12…コード生成処理部、13…シミュレーション処理部、14…生成ルール記憶部、15…成立頻度記憶部、16…コード記憶部、17…モデル記憶部、20,20a,20b…制御モデル、21…加減算ブロック、22…乗除算ブロック、23…比較演算ブロック、23a,23b…パラメータ設定領域、24…切換ブロック、25…論理演算ブロック、28…変数ブロック、29…定数ブロック、31…コンパイラ・リンカ、40…表示部、51…モデル入力部、52…設定入力部、53…開始指令入力部、32…フラッシュROM。

Claims (11)

  1. 所定の制御対象の制御仕様を表す制御モデルであって、制御のための演算処理を表す演算モデル部を少なくとも有する制御モデルを取得するための制御モデル取得手段と、
    前記制御モデル取得手段により取得された制御モデル(以下、取得制御モデルと言う)に対応する制御プログラムのプログラムコードを、予め定められたルールに基づいて生成する生成手段と、
    を備えたプログラムコード生成装置において、
    前記生成手段は、
    前記演算モデル部のうち、その処理内容が、コンピュータに、第1の処理と、特定の条件が成立するか否かを判定する判定処理とを実行させると共に、その判定処理により前記特定条件が成立したと判定されたなら、前記第1の処理を無効化して第2の処理を実行させる第1プログラムと、コンピュータに、前記第2の処理と、前記判定処理とを実行させると共に、その判定処理により前記特定条件が成立しないと判定されたなら、その第2の処理を無効化して前記第1の処理を実行させる第2プログラムとの何れでも表すことのできる演算モデル部(以下、条件判定演算モデル部と言う)を、前記取得制御モデルから検索するモデル解析手段と、
    前記モデル解析手段により検索された条件判定演算モデル部について前記特定条件の成立頻度を取得するための成立頻度取得手段と、
    前記成立頻度取得手段により取得される前記特定条件の成立頻度が既定値より高いか否かを判定する成立頻度判定手段とを備え、さらに、
    前記成立頻度判定手段の判定結果に基づき、前記第1プログラムのプログラムコード(以下、第1プログラムコードと言う)と前記第2プログラムのプログラムコード(以下、第2プログラムコードと言う)との何れかを、前記条件判定演算モデル部のプログラムコードとして生成するようになっていることを特徴とするプログラムコード生成装置。
  2. 請求項1に記載のプログラムコード生成装置において、
    前記生成手段は、
    前記成立頻度判定手段により前記特定条件の成立頻度が規定値以下と判定されたならば、前記条件判定演算モデル部のプログラムコードとして、前記第1プログラムコードを生成し、前記成立頻度判定手段により前記特定条件の成立頻度が規定値より高いと判定されたならば、前記条件判定演算モデル部のプログラムコードとして、前記第2プログラムコードを生成するようになっていることを特徴とするプログラムコード生成装置。
  3. 請求項2に記載のプログラムコード生成装置において、
    前記制御モデルに含まれる可能性のある前記条件判定演算モデル部のそれぞれについて、前記第1プログラムコードと前記第2プログラムコードとを記憶するコード記憶手段を備え、
    前記生成手段は、前記成立頻度判定手段により前記特定条件の成立頻度が既定値以下と判定されたならば、前記コード記憶手段から、前記モデル解析手段により検索された前記条件判定演算モデル部に対応する前記第1プログラムコードを読み出し、前記成立頻度判定手段により成立頻度が既定値よりも高いと判定されたならば、前記コード記憶手段から、前記モデル解析手段により検索された前記条件判定演算モデル部に対応する前記第2プログラムコードを読み出すようになっていることを特徴とするプログラムコード生成装置。
  4. 請求項2又は請求項3に記載のプログラムコード生成装置において、
    前記制御モデルに含まれる可能性のある前記条件判定演算モデル部のそれぞれについて、その条件判定演算モデル部を表すテンプレートとして、前記第1プログラムコードに対応する第1モデルと前記第2プログラムコードに対応する第2モデルとを記憶するモデル記憶手段を備え、
    前記生成手段は、前記成立頻度判定手段により前記特定条件の成立頻度が既定値以下と判定されたならば、前記モデル記憶手段から、前記モデル解析手段により検索された前記条件判定演算モデル部に対応する前記第1モデルを読み出して、該読み出した第1モデルに対応するプログラムコードを生成し、前記成立頻度判定手段により前記特定条件の成立頻度が既定値よりも高いと判定されたならば、前記モデル記憶手段から、前記モデル解析手段により検索された前記条件判定演算モデル部に対応する前記第2モデルを読み出して、該読み出した第2モデルに対応するプログラムコードを生成するようになっていることを特徴とするプログラムコード生成装置。
  5. 請求項1ないし請求項4の何れか1項に記載のプログラムコード生成装置において、
    情報を表示する表示手段と、
    前記成立頻度判定手段により前記特定条件の成立頻度が既定値以下と判定されたならば、前記第1プログラムコードに対応する条件判定演算モデル部の画像を前記表示手段に表示させ、前記成立頻度判定手段により前記特定条件の成立頻度が既定値よりも高いと判定されたならば、前記第2プログラムコードに対応する条件判定演算モデル部の画像を前記表示手段に表示させる画像表示制御手段と、
    を備えていることを特徴とするプログラムコード生成装置。
  6. 請求項1ないし請求項5の何れか1項に記載のプログラムコード生成装置において、
    情報を入力するための入力手段を備え、
    前記成立頻度取得手段は、前記入力手段を介して入力される使用者からの情報に基づき、前記条件判定演算モデル部における前記判定処理で判定される前記特定条件の成立頻度を取得することを特徴とするプログラムコード生成装置。
  7. 請求項1ないし請求項6の何れか1項に記載のプログラムコード生成装置において、
    前記取得制御モデルに対応する制御プログラムを実行して、前記モデル解析手段により検索された前記条件判定演算モデル部における前記判定処理で判定される前記特定条件が成立するか否かを検出する検出手段を備え、
    前記成立頻度取得手段は、前記モデル解析手段により検索された前記条件判定演算モデル部における前記判定処理で判定される前記特定条件の成立頻度を、前記検出手段の検出結果に基づき取得することを特徴とするプログラムコード生成装置。
  8. 請求項1ないし請求項7の何れか1項に記載のプログラムコード生成装置において、
    前記条件判定演算モデル部は少なくとも1つ以上あり、
    前記条件判定演算モデル部における前記判定処理で判定される前記特定条件の成立頻度を、前記モデル解析手段により検索される条件判定演算モデル部と関連づけて記憶する成立頻度記憶手段を備え、
    前記成立頻度取得手段は、前記成立頻度記憶手段に記憶された成立頻度から、前記モデル解析手段により検索された前記条件判定演算モデル部における前記判定処理で判定される前記特定条件の成立頻度を取得するようになっていることを特徴とするプログラムコード生成装置。
  9. 所定の制御対象の制御仕様を表す制御モデルであって、制御のための演算処理を表す演算モデル部を少なくとも有する制御モデルを取得するための制御モデル取得手段と、
    前記制御モデル取得手段により取得された制御モデル(以下、取得制御モデルと言う)に対応する制御プログラムのプログラムコードを、予め定められたルールに基づいて生成する生成手段と、
    を備えたプログラムコード生成装置において、
    前記生成手段は、
    前記演算モデル部のうち、その処理内容が、互いに排他的な複数通りの条件のうちの何れが成立するかによって実行所要時間がそれぞれ異なる複数種類のプログラムの何れでも表すことのできる演算モデル部(以下、特定演算モデル部と言う)を前記取得制御モデルから検索するモデル解析手段と、
    前記複数通りの条件のうち、最も成立頻度の高い条件を取得する条件取得手段とを備え、
    前記複数種類のプログラムのうち、前記条件取得手段が取得した条件が成立した場合に実行所要時間が最も短くなるプログラムのプログラムコードを、前記特定演算モデル部のプログラムコードとして生成するようになっていることを特徴とするプログラムコード生成装置。
  10. 請求項9に記載のプログラムコード生成装置において、
    前記制御モデルに含まれる可能性のある前記特定演算モデル部のそれぞれについて、前記複数種類のプログラムのそれぞれのプログラムコードを記憶するコード記憶手段を備え、
    前記生成手段は、前記コード記憶手段から、前記モデル解析手段により検索された前記特定演算モデル部に対応すると共に、前記条件取得手段が取得した条件が成立した場合に実行所要時間が最も短くなるプログラムのプログラムコードを読み出すようになっていることを特徴とするプログラムコード生成装置。
  11. 請求項9又は請求項10に記載プログラムコード生成装置において、
    前記制御モデルに含まれる可能性のある前記特定演算モデル部のそれぞれについて、前記複数種類のプログラムのそれぞれを表すテンプレートを記憶するテンプレート記憶手段を備え、
    前記生成手段は、前記テンプレート記憶手段から、前記モデル解析手段により検索された前記特定演算モデル部に対応すると共に、前記条件取得手段が取得した条件が成立した場合に実行所要時間が最も短くなるプログラムのテンプレートを読み出し、該読み出したテンプレートが表すプログラムのプログラムコードを、前記モデル解析手段により検索された前記特定演算モデル部のプログラムコードとして生成するようになっていることを特徴とするプログラムコード生成装置。
JP2006181650A 2006-06-30 2006-06-30 プログラムコード生成装置 Pending JP2008009869A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006181650A JP2008009869A (ja) 2006-06-30 2006-06-30 プログラムコード生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006181650A JP2008009869A (ja) 2006-06-30 2006-06-30 プログラムコード生成装置

Publications (1)

Publication Number Publication Date
JP2008009869A true JP2008009869A (ja) 2008-01-17

Family

ID=39067994

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006181650A Pending JP2008009869A (ja) 2006-06-30 2006-06-30 プログラムコード生成装置

Country Status (1)

Country Link
JP (1) JP2008009869A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014059848A (ja) * 2012-09-19 2014-04-03 Fuji Electric Co Ltd 言語変換装置、プログラム
JP2023158595A (ja) * 2022-04-18 2023-10-30 オムロン株式会社 制御プログラムの生成装置、プログラム及び制御プログラムの生成方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014059848A (ja) * 2012-09-19 2014-04-03 Fuji Electric Co Ltd 言語変換装置、プログラム
JP2023158595A (ja) * 2022-04-18 2023-10-30 オムロン株式会社 制御プログラムの生成装置、プログラム及び制御プログラムの生成方法

Similar Documents

Publication Publication Date Title
CN113849229A (zh) 服务器开机方法、装置、电子设备及可读存储介质
JP2009294846A (ja) テストケース生成装置、テストケース生成プログラム、およびテストケース生成方法
JP2009048367A (ja) 回路設計方法、ならびにその方法により製造される集積回路
CN110188327B (zh) 文本去口语化方法及装置
JP5589919B2 (ja) 設計支援装置、設計支援プログラム
JP4345772B2 (ja) 文書編集装置、プログラムおよび記憶媒体
JP2019021037A (ja) ソースコード評価装置、ソースコード評価方法及びソースコード評価プログラム
JP2008009869A (ja) プログラムコード生成装置
JP6137962B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2020144509A (ja) 自動コード生成方法、及び自動コード生成プログラム
CN111581101A (zh) 软件模型的测试方法、装置、设备和介质
CN113849134B (zh) 一种存储区的数据更新方法、设备和计算机可读存储介质
US10223077B2 (en) Determination of signals for readback from FPGA
JP2002169843A (ja) 設計支援システム
JP4891807B2 (ja) 高位合成装置および高位合成方法
JP4887814B2 (ja) プログラムコード生成装置
JP2008310513A (ja) プログラム検査装置
JP2005352670A (ja) シミュレーション装置及び検査装置
JP5011221B2 (ja) コントローラ開発ツールとそれを利用して開発したモータドライブシステムを有する機器
JP6085264B2 (ja) コントローラ開発ツール
CN120509846A (zh) 一种智动签章方法、装置、计算机设备及可读存储介质
JP2014016891A (ja) シミュレーション装置、及びシミュレーションプログラム
JP4655640B2 (ja) 車両用ボディーパネルの構造解析モデル作成システム
CN115908416A (zh) 键盘膜图像的识别方法、装置及电子设备
JP5530417B2 (ja) コントローラ開発ツール