(57)【要約】【課題】入力された制御モデルに対応するプログラムコードを生成するプログラムコード生成装置において、制御モデルを図面として目視する際の可読性が悪化することを防止しつつ、生成したプログラムコードに基づいて生成されたプログラムを実行する際の演算速度が遅くなることを防止できるようにする。【解決手段】プログラムコード生成装置１においては、演算ブロックにおいて各種演算の演算順序を入力する各種設定入力部５２により入力された演算順序を、プログラムコード生成装置１の記憶装置が各種パラメータに関連付けて記憶する。そして、記述された制御モデル２０に対応するプログラムコードを各種パラメータの入力順に生成するコード生成処理部１２は、プログラムコード生成装置１の記憶装置に記憶された演算順序を入力順として、プログラムコードを生成する。【選択図】図１
2007213402.tif 000002
【特許請求の範囲】
【請求項１】
各種パラメータを入力し該各種パラメータの入力順に該各種パラメータに対応する各種演算を行うよう設定された演算ブロックを含む制御モデルが記述されると、電子制御装置に搭載される制御プログラムに用いられるプログラムコードを生成するための生成ルールに基づいて、前記記述された制御モデルに対応するプログラムコードを前記各種パラメータの入力順に生成する生成手段を備えたプログラムコード生成装置であって、
前記演算ブロックにおいて前記各種演算の演算順序を入力するための演算順序入力手段と、
前記演算順序入力手段により入力された演算順序を前記各種パラメータに関連付けて記憶する演算順序記憶手段と、
を備え、
前記生成手段は、前記演算順序記憶手段に記憶された演算順序を前記入力順として、プログラムコードを生成すること
を特徴とするプログラムコード生成装置。
【請求項２】
前記生成手段の作動前に、前記演算順序記憶手段に記憶された演算順序に従って、前記生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段を備えたこと
を特徴とする請求項１に記載のプログラムコード生成装置。
【請求項３】
前記演算ブロックには、入力されたパラメータ同士を加減算する加減算ブロックを備え、
前記シミュレーション手段が前記加減算ブロックにて加減算するパラメータ同士のレンジの差が、予め設定された閾値よりも大きい場合に、前記加減算ブロックでの演算精度の悪化を警告する第１警告手段を備えたこと
を特徴とする請求項２に記載のプログラムコード生成装置。
【請求項４】
前記演算ブロックには、入力された数値同士を加減算する加減算ブロックを備え、
前記シミュレーション手段が前記加減算ブロックにて加減算する前後で前記各種パラメータの値のレンジの差が、予め設定された閾値よりも大きく変化した場合に、この加減算ブロックでの演算精度の悪化を警告する第２警告手段を備えたこと
を特徴とする請求項２に記載のプログラムコード生成装置。
【請求項５】
前記閾値を入力するための閾値入力手段と、
前記閾値入力手段を介して入力された閾値を記憶する閾値記憶手段と、
を備え、
前記各警告手段は、前記閾値記憶手段に記憶された閾値を参照して演算精度の悪化の判定を行うこと
を特徴とする請求項３または請求項４に記載のプログラムコード生成装置。
【請求項６】
当該プログラムコード生成装置は、浮動小数点演算を実施するとともに、
浮動小数点演算が単精度で実施されるか倍精度で実施されるかを判定し、判定結果に応じて予め設定された閾値を前記各警告手段が参照する閾値として設定する閾値設定手段を備えたこと
を特徴とする請求項３または請求項４に記載のプログラムコード生成装置。
【請求項７】
前記各警告手段による精度悪化の警告の表示形態を予め設定された選択肢の中から設定するための警告内容設定入力手段と、
前記警告内容設定入力手段により入力された設定内容を記憶する警告内容設定記憶手段と、
前記警告内容設定記憶手段に記憶された設定内容に基づいて精度悪化の警告を出力する警告出力手段と、
を備えたことを特徴とする請求項３〜請求項６の何れかに記載のプログラムコード生成装置。
【請求項８】
前記警告手段が加減算ブロックでの演算精度の悪化を警告した場合に、前記演算順序記憶手段に記憶された演算順序を予め設定された規則に基づいて変更する演算順序変更手段を備えたこと
を特徴とする請求項３〜請求項７の何れかに記載のプログラムコード生成装置。
【請求項９】
前記演算順序変更手段は、前記演算ブロックに入力される各種パラメータ同士の大小関係に基づいて前記演算順序記憶手段に記憶された演算順序を変更すること
を特徴とする請求項８に記載のプログラムコード生成装置。
【請求項１０】
前記シミュレーション手段の作動前に、前記制御モデルに同じ種類の演算ブロックが連続して記述されているか否かを判定し、同じ種類の演算ブロックが連続して記述されていれば、これらの演算ブロックを１つの演算ブロックとして集約して記述し直す集約手段を備えたこと
を特徴とする請求項２〜請求項９の何れかに記載のプログラムコード生成装置。
【請求項１１】
電子制御装置に搭載される制御プログラムを生成するために用いられ、少なくとも入力されたパラメータ同士を加減算するための加減算ブロックを含む制御モデルが入力されると、プログラムコード生成のための生成ルールを用いて前記入力された制御モデルに対応するプログラムコードを生成する生成手段を備えたプログラムコード生成装置であって、
前記生成手段の作動前に、前記生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段と、
前記シミュレーション手段が前記加減算ブロックにて加減算するパラメータ同士のレンジの差が、予め設定された閾値よりも大きい場合には、前記加減算ブロックでの演算精度の悪化を警告する第１警告手段と、
を備えたことを特徴とするプログラムコード生成装置。
【請求項１２】
電子制御装置に搭載される制御プログラムを生成するために用いられ、少なくとも入力されたパラメータ同士を加減算するための加減算ブロックを含む制御モデルが入力されると、プログラムコード生成のための生成ルールを用いて前記入力された制御モデルに対応するプログラムコードを生成する生成手段を備えたプログラムコード生成装置であって、
前記生成手段の作動前に、前記生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段と、
前記シミュレーション手段が前記加減算ブロックにて加減算する前後で前記各種パラメータの値のレンジの差が、予め設定された閾値よりも大きく変化した場合には、この加減算ブロックでの演算精度の悪化を警告する第２警告手段と、
を備えたことを特徴とするプログラムコード生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力された制御モデルに対応するプログラムコードを生成するプログラムコード生成装置に関する。
【背景技術】
【０００２】
従来より、使用者が演算ブロックを含む制御モデルを入力し、プログラムコード生成指令を入力すると、予め設定された生成ルールに基づいて、入力された制御モデルに対応したプログラムコードを出力するプログラムコード生成装置が知られている（例えば、特許文献１参照）。
【０００３】
このようなプログラムコード生成装置では、まず使用者により、例えば図１２（ａ）に示すような制御モデルが入力される。即ち、この制御モデルは、各種パラメータとしての変数Ａと定数Ｂとに対して行う演算が、変数Ａおよび定数Ｂから延出された矢印を演算ブロック（図１２では乗除算ブロック）に引き込む形態で記述されている。特に、図１２（ａ）に示す制御モデルにおいては、変数Ａには「÷（除算）」が対応づけられており、定数Ｂには「×（乗算）」が対応付けられている。
【０００４】
このような制御モデルが入力された後で、プログラムコード生成指令が入力されると、プログラムコード生成装置は、図１２（ａ）に示すようなプログラムコードを出力する。
即ち、変数Ａおよび定数Ｂは、この演算ブロックにおいて、この演算ブロックへの入力順（つまり上から順）に使用され、図１２（ａ）に示すように、「rtB.Product = 1.0 / rtb#DataStoreReadA * rtP.ConstantB#Value（「解」＝１．０／「変数Ａ」＊「定数Ｂ」）」というプログラムコードとして出力される。
【特許文献１】特開２００３−１７３２５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記プログラムコード生成装置等の一般的なプログラムコード生成装置では、演算ブロックへの入力順（上から順）に各種パラメータ（ここでは変数Ａおよび定数Ｂ）を使用するため、演算の先頭に除算（または減算）を行うパラメータを入力すると、「１．０／（または「−」）」というプログラムコードが追記される。よって、このプログラムコードに基づいて生成されたプログラムを実行する際には、プログラムコードが追記された分だけ余分な演算を行うことになるので、演算速度が遅くなるという問題点がある。
【０００６】
このような問題点を解決するためには、演算の先頭が除算（または減算）にならないように、乗算（または加算）が対応付けられた数値を演算の先頭に配置すればよい。即ち、図１２（ｂ）に示すように、除算が対応する変数Ａから延びる矢印を、乗算が対応する定数Ｂから延びる矢印よりも演算ブロックの下方に記述する。このような制御モデルに基づいてプログラムコードの生成を実施すれば、図１２（ｂ）に示すようなプログラムコードが生成され、変数Ａおよび定数Ｂは、「rtB.Product = rtP.ConstantB#Value / rtb#DataStoreReadA（「解」＝「定数Ｂ」／「変数Ａ」）」という演算順序が変更されたプログラムコードとして出力される。この場合には、「１．０／（または「−」）」というプログラムコードが追記されることがないので、演算速度が遅くなることを防止することができる。
【０００７】
しかしながら、図１２（ｂ）に示す制御モデルにおいては、演算順序を変更するために演算ブロックへの入力順を変更しているので、結線（変数Ａから演算ブロックに延びる矢印と定数Ｂから演算ブロックに延びる矢印と）が交差してしまう。このように結線が交差すると、制御モデルを図面として目視する際の可読性が悪化するという問題点がある。
【０００８】
そこで、このような問題点を鑑み、入力された制御モデルに対応するプログラムコードを生成するプログラムコード生成装置において、制御モデルを図面として目視する際の可読性が悪化することを防止しつつ、生成したプログラムコードに基づいて生成されたプログラムを実行する際の演算速度が遅くなることを防止できるようにすることを本発明の目的とする。
【課題を解決するための手段】
【０００９】
かかる目的を達成するためになされた請求項１に記載のプログラムコード生成装置においては、演算ブロックにおいて各種演算の演算順序を入力する演算順序入力手段により入力された演算順序を、演算順序記憶手段が各種パラメータに関連付けて記憶する。そして、記述された制御モデルに対応するプログラムコードを各種パラメータの入力順に生成する生成手段は、演算順序記憶手段に記憶された演算順序を入力順として、プログラムコードを生成する。
【００１０】
従って、このようなプログラムコード生成装置によれば、入力された演算順序に従ってプログラムコードを生成することができるので、制御モデルの可読性を損なうことがない。また、この装置により生成されたプログラムコードに基づいて生成されたプログラムを実行する際の演算速度が遅くなることを防止することができる。
【００１１】
ところで、請求項１に記載のプログラムコード生成装置においては、請求項２に記載のように、生成手段の作動前に、演算順序記憶手段に記憶された演算順序に従って、生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段を備えていてもよい。
【００１２】
このようなプログラムコード生成装置によれば、実際に生成したプログラムコードに基づくプログラムを実行するときと同様の条件でプログラムの検証作業（シミュレーション）を実行することができるので、プログラムの検証作業を容易に行うことができる。
【００１３】
また、請求項２に記載のプログラムコード生成装置において、演算ブロックに、入力されたパラメータ同士を加減算する加減算ブロックを備えている場合には、請求項３に記載のように、シミュレーション手段が加減算ブロックにて加減算するパラメータ同士のレンジの差が、予め設定された閾値よりも大きい場合に、加減算ブロックでの演算精度の悪化を警告する第１警告手段を備えていてもよい。また、請求項４に記載のように、シミュレーション手段が加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差が、予め設定された閾値よりも大きく変化した場合に、この加減算ブロックでの演算精度の悪化を警告する第２警告手段を備えていてもよい。
【００１４】
このようなプログラムコード生成装置によれば、精度悪化箇所を特定することができるので、精度悪化箇所を適宜修正すればより演算精度を向上させることができる。
特に、浮動小数点演算を行う場合には、演算後の数値（解）の桁数が大きく変化すると、実質的に使用する桁数が減少してしまい、演算精度の悪化が発生するが、請求項４に記載の発明では、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差を監視するので、演算精度の悪化を防止することができる。
【００１５】
さらに、請求項３または請求項４に記載のプログラムコード生成装置においては、請求項５に記載のように、各警告手段が演算精度の悪化の判定を行う際に参照する閾値を入力するための閾値入力手段と、閾値入力手段を介して入力された閾値を記憶する閾値記憶手段と、を備えていてもよい。
【００１６】
このようなプログラムコード生成装置によれば、生成したプログラムコードに求められる演算精度（レベル）を使用者が設定することができる。
また、請求項３または請求項４に記載のプログラムコード生成装置が浮動小数点演算を実施する場合には、請求項６に記載のように、浮動小数点演算が単精度で実施されるか倍精度で実施されるかを判定し、判定結果に応じて予め設定された閾値を各警告手段が参照する閾値として設定する閾値設定手段を備えていてもよい。
【００１７】
このようなプログラムコード生成装置によれば、演算精度によって閾値を設定することができるので、演算精度が高く設定されており演算精度の悪化が発生しない場合には余分な警告を排除することができる。
【００１８】
次に、請求項３〜請求項６の何れかに記載のプログラムコード生成装置においては、各警告手段が警告する内容を全て表示すると、その警告の内容には使用者にとって不要なものがあったり、警告の数が多すぎて使用者が重要な警告を判別し難くなったりすることがある。そこで、請求項７に記載のように、各警告手段による精度悪化の警告の表示形態を予め設定された選択肢の中から設定するための警告内容設定入力手段と、警告内容設定入力手段により入力された設定内容を記憶する警告内容設定記憶手段と、警告内容設定記憶手段に記憶された設定内容に基づいて精度悪化の警告を出力する警告出力手段と、を備えていてもよい。
【００１９】
このようなプログラムコード生成装置によれば、警告の内容を使用者が任意に設定することができるので、使用者にとって重要な警告の内容を識別し易くすることができる。
また、請求項３〜請求項７の何れかに記載のプログラムコード生成装置においては、請求項８に記載のように、警告手段が加減算ブロックでの演算精度の悪化を警告した場合に、演算順序記憶手段に記憶された演算順序を予め設定された規則に基づいて変更する演算順序変更手段を備えていてもよい。また特に、演算順序変更手段は、請求項９に記載のように、演算ブロックに入力される各種パラメータ同士の大小関係に基づいて演算順序記憶手段に記憶された演算順序を変更するよう構成されていてもよい。
【００２０】
このようなプログラムコード生成装置によれば、演算精度の悪化を警告された場合に、演算順序を適切な順序に変更することができるので、演算精度を改善することができる。
また、演算順序を自動的に設定することができるので、プログラムコードを生成するための工数を削減することができる。
【００２１】
特に、請求項９に記載の発明では、演算ブロックに入力される各種パラメータ同士の大小関係に着目して演算順序を変更するので、演算後の値に着目して演算順序を変更する場合と比較して、演算順序を変更するためのアルゴリズムを簡素化することができる。
【００２２】
さらに、請求項２〜請求項９の何れかに記載のプログラムコード生成装置においては、請求項１０に記載のように、シミュレーション手段の作動前に、制御モデルに同じ種類の演算ブロックが連続して記述されているか否かを判定し、同じ種類の演算ブロックが連続して記述されていれば、これらの演算ブロックを１つの演算ブロックとして集約して記述し直す集約手段を備えていてもよい。
【００２３】
このようなプログラムコード生成装置によれば、演算ブロックの数を集約することにより、演算回数を少なくすることができるので、演算速度を向上させることができる。
また、演算ブロックを集約することにより、演算順序を変更する際の自由度を高くすることができるので、より演算精度を向上させることができる。
【００２４】
次に、上記目的を達成するためになされた請求項１１に記載のプログラムコード生成装置においては、生成手段の作動前に、生成手段により生成されるプログラムコードの内容を検証するシミュレーション手段と、請求項３に記載の第１警告手段と同様の第１警告手段とを備えている。
【００２５】
また、請求項１２に記載のプログラムコード生成装置においては、請求項１１に記載の第１警告手段に換えて、請求項４に記載の第２警告手段と同様の第２警告手段を備えている。
【００２６】
このようなプログラムコード生成装置によれば、各警告手段により精度悪化箇所を特定することができるので、精度悪化箇所を修正すればより演算精度を向上させることができる。
【００２７】
特に、浮動小数点演算を行う場合には、演算後の数値（解）の桁数が大きく変化すると、実質的に使用する桁数が減少してしまい、演算精度の悪化が発生するが、請求項１２に記載の発明では、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差を監視するので、演算精度の悪化を防止することができる。
【発明を実施するための最良の形態】
【００２８】
以下に本発明にかかる実施の形態を図面と共に説明する。図１は、プログラムコード生成装置１を用いたプログラム生成の流れを示す説明図である。
本実施例では、車両制御用のプログラム作成を目的としており、プログラム仕様を示す制御モデル２０（以下「制御モデル２０」という。）から、コード生成ツール１００がプログラムコードを生成する。ここでいうプログラムコードはソースコードであり、コンパイラ・リンカ３１によってオブジェクトコードに変換されて、電子制御装置（以下「ＥＣＵ」という）のフラッシュＲＯＭ３２に書き込まれる。
【００２９】
プログラムコード生成装置１のハードウェア構成は、周知のコンピュータシステムとして構成されている。即ち、プログラムコード生成装置は、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏおよびこれらを接続するバスラインをはじめ、周辺機器としてのハードディスク装置、キーボード・ポインティングデバイス等の各種入力部（モデル入力部５１、各種設定入力部５２、開始指令入力部５３等に相当）、ディスプレイ等の表示部４０、および外部との間で通信を行うための通信装置等を備えている。
【００３０】
このようなハードウェア構成は従来より当業者によく知られたものであるため、一部記述を省略し、図１には、コード生成ツール１０の機能をブロックにて示した。図１に示すように、コード生成ツール１０は、抽出エンジン１１と、コード生成処理部１２と、シミュレーション処理部１３と、生成ルール記憶部１４とを備えている。なお、プログラムコード生成装置１において演算が実行される際には、より高精度な演算を行うために浮動小数点演算により実行される。
【００３１】
抽出エンジン１１は、制御モデル２０を読み込んで中間ファイルを出力する。このとき、制御モデル２０から、演算ブロック（加減算ブロック２１，乗除算ブロック２２，三角関数ブロック２３等）や、この演算ブロックに入力される各種パラメータの演算順序、パラメータ名等のプログラムコードの生成に必要な各種情報が抽出される。
【００３２】
コード生成処理部１２は、抽出エンジン１１から出力される中間ファイルに対応するプログラムコードを生成する。
このときコード生成処理部１２は生成ルールを参照するが、この参照される生成ルールを格納しているのが、ＲＯＭやハードディスク装置の一部として構成された生成ルール記憶部１４である。なお、生成ルール記憶部１４には、抽出エンジン１１にて抽出された演算順序が一時保持される。従って、コード生成処理部１２は、演算順序を含む生成ルールに基づいてプログラムコードを生成することになる。
【００３３】
また、シミュレーション処理部１３は、抽出エンジン１１から出力される中間ファイルを入力し、シミュレーション処理を実行する。なお、このとき、シミュレーション処理部１３は、生成ルール記憶部１４に記憶された生成ルール（演算順序を含む）を用いてシミュレーション処理を行う。つまり、シミュレーション処理部１３は、コード生成処理部１２にて生成される予定のプログラムコードについての検証を行うのである。
【００３４】
次に、制御モデル２０について説明する。
制御モデル２０は、抽象化言語で記述されたものであり、例えば、図３等に示すように、各制御間のパラメータの動きを示したものである。この制御モデル２０には、図１や図３等に示すように、変数２８や定数２９等のパラメータに対して各種演算を対応付けた加減算ブロック２１、乗除算ブロック２２、三角関数ブロック２３等が記述される。
【００３５】
このようなプログラムコード生成装置１を用いてプログラムコードを生成する作業を実施する際には、例えば、図２に示すような手順でプログラムコード生成作業を行う。
なお、図２はプログラムコード生成作業の手順を示す説明図である。
【００３６】
プログラムコード生成作業では、まず、使用者が制御モデル２０を入力する作業を実施する（Ｓ１１０）。この作業は、使用者がキーボード等の各種入力部をモデル入力部５１として機能させ、例えば図３等に示すような制御モデル２０を入力する。
【００３７】
そして、この制御モデル２０を入力する作業が終了すると、使用者は、最適化処理（Ｓ１２０）を開始する指令を、開始指令入力部５３として機能する各種入力部を用いて入力する。すると、シミュレーション処理部１３（ＣＰＵ）が最適化処理を実行する。この最適化処理について図３を用いて説明する。
【００３８】
この最適化処理において、シミュレーション処理部１３は、例えば、制御モデル２０として図３（ａ）に示すように、同じ種類の演算ブロック（図３では加減算ブロック）が連続して記述されている演算ブロックを抽出し、これらの演算ブロックを、図３（ｂ）に示すように、ひとまとめにしたものに書き換え、書き換え前の制御モデル２０を書き換え後の制御モデル２０に置換する。
【００３９】
すべての演算ブロックに対して最適化処理（Ｓ１２０）が終了すれば、シミュレーション処理（Ｓ１３０）に移行する。なお、最適化処理は、図１２に示すような乗除算ブロック２２にも適用することができる。
【００４０】
シミュレーション処理（Ｓ１３０）は、使用者が開始指令入力部５３を介してシミュレーション開始指令を入力すると開始される。このシミュレーション処理については、図４を用いて説明する。図４はシミュレーション処理部１３（ＣＰＵ）が実行するシミュレーション処理を示すフローチャートである。
【００４１】
シミュレーション処理においては、まず、閾値入力画面を表示部４０に表示させる（Ｓ２１０）。この閾値入力画面は、例えば、図５（ａ）に示すように、後述する演算精度判定処理の際に用いられる２つの閾値α，β等の初期設定条件を入力するための画面である。また、この閾値入力画面においては、演算精度の判定結果を表示する際の表示形態を「時間毎に警告する」か否かを選択することができるよう設定されている。なお、この表示形態については後に説明する。
【００４２】
そして、この画面を表示させると、使用者により閾値等の条件が入力されたか否かを判定する（Ｓ２２０）。閾値等の条件が入力されていなければ（Ｓ２２０：ＮＯ）、Ｓ２２０の処理を繰り返し、閾値等の条件が入力されていれば（Ｓ２２０：ＹＥＳ）、シミュレーション処理を実行するに当たって必要なその他の各種設定を入力するための入力画面を表示する（Ｓ２３０）。
【００４３】
ここで、この処理において使用者に入力を求める条件としては、例えば、各種演算（浮動小数点演算）を単精度で実行するか、倍精度で実行するか等の設定が考えられる。
そして、これらの条件が入力されたか否かを判定する（Ｓ２４０）。これらの条件が入力されていなければ（Ｓ２４０：ＮＯ）、Ｓ２４０の処理を繰り返し、これらの条件が入力されていれば（Ｓ２４０：ＹＥＳ）、制御モデル２０に記述された演算ブロックのうちの１つを選択する（Ｓ２５０）。
【００４４】
そして、この演算ブロックに関して演算順序を入力するための画面を表示する（Ｓ２６０）。ここで、演算順序を入力するための画面としては、例えば、この演算ブロックに２つの数値が入力されている場合には、図５（ｂ）に示すように、演算順の欄に、「２  １」と入力することにより、初めに入力された数値を「２」番目に演算し、後から入力された数値を「１」番目に演算するよう設定する。
【００４５】
そして、このような入力画面において各欄の入力が終了したか否かを判定する（Ｓ２７０）。各欄の入力が終了していなければ（Ｓ２７０：ＮＯ）、Ｓ２７０の処理を繰り返し、各欄の入力が終了していれば（Ｓ２７０：ＹＥＳ）、該当する演算ブロックの各パラメータに演算順序を対応させてＲＡＭやハードディスク装置に記録する（Ｓ２８０）。なお、この際には、制御モデル２０そのものを書き換えるような処理は実行せずに、演算ブロックに演算順序を対応させるのみとする。このため、制御モデル２０を図面として目視した際には演算順序の変更前と何も変わらない状態とされている。
【００４６】
そして、全ての演算ブロックについて演算順序を設定したか否かを判定する（Ｓ２９０）。
まだ演算順序を設定していない演算ブロックがあれば（Ｓ２９０：ＮＯ）、演算順序を選択していないブロックの１つを選択し（Ｓ３００）、Ｓ２６０に戻る。
【００４７】
一方、全ての演算ブロックについて演算順序を設定していれば（Ｓ２９０：ＹＥＳ）、再び、演算ブロックのうちの１つを選択する（Ｓ３１０）。
そして、この演算ブロックに関する演算内容と演算順序とを抽出エンジン１１に抽出させ、この演算順序を含む生成ルールに従って、この演算ブロックに関する演算を実施する（Ｓ３２０）。
【００４８】
そして、この演算における演算精度の判定をする演算精度判定処理を実施する（Ｓ３３０）。
この演算判定処理については、図６を用いて詳しく説明する。なお、図６（ａ）は演算ブロックと演算ブロックに入力される各種数値との対応関係を示す模式図、図６（ｂ）はシミュレーション処理部１３が実行する精度判定処理を示すフローチャートである。
【００４９】
ここで、図６（ｂ）に示す演算精度判定処理および後述する演算順序変更処理（図７）においては、演算ブロックに入力されるパラメータ（変数２８、定数２９）を演算順にａ（ｋ）（ただしｋ＝１〜ｎ）と定義する。なお、減算が関連付けられたパラメータについては「−ａ（ｋ）」として取り扱う。また、ａ（ｋ）までの演算結果をｂ（ｋ）（ただしｂ（１）＝ａ（１））と定義する。
【００５０】
図６（ｂ）に示す演算精度判定処理は、まず、現在加減算ブロックを選択中か否かを判定する（Ｓ５１０）。加減算ブロックを選択してなければ（Ｓ５１０：ＮＯ）、当該演算精度判定処理を終了する。また、加減算ブロックを選択していれば（Ｓ５１０：ＹＥＳ）、ｋ＝１として設定し（Ｓ５２０）、ｂ（ｋ）およびａ（ｋ＋１）を選択する（Ｓ５３０）。そして、ｍａｘ（｜ｂ（ｋ）｜：｜ａ（ｋ＋１）｜）／ｍｉｎ（｜ｂ（ｋ）｜：｜ａ（ｋ＋１）｜））＞α、つまりｂ（ｋ）とａ（ｋ＋１）のうちの絶対値の大きいものを、ｂ（ｋ）とａ（ｋ＋１）のうちの絶対値の小さいもので除算したものが、Ｓ２２０にて入力された閾値αよりも大きいか否かを判定する（Ｓ５４０）。
【００５１】
ｍａｘ（｜ｂ（ｋ）｜：｜ａ（ｋ＋１）｜）／ｍｉｎ（｜ｂ（ｋ）｜：｜ａ（ｋ＋１）｜）＞αであれば（Ｓ５４０：ＹＥＳ）、加減算ブロックにて加減算するパラメータ同士のレンジの差が閾値αよりも大きいことを示すタイプ１の警告をＲＡＭに記憶し（Ｓ５５０）、Ｓ５６０に移行する。
【００５２】
また、ｍａｘ（ｂ（ｋ）：ａ（ｋ＋１））／ｍｉｎ（ｂ（ｋ）：ａ（ｋ＋１））≦αであれば（Ｓ５４０：ＮＯ）、｜ｂ（ｋ）＋ａ（ｋ＋１）｜／ｍａｘ（｜ｂ（ｋ）｜：｜ａ（ｋ＋１）｜）＜β、つまりｂ（ｋ）＋ａ（ｋ＋１）の絶対値を、ｂ（ｋ）とａ（ｋ＋１）とのうち絶対値が大きいもので除算したものが閾値β未満であるか否かを判定する（Ｓ５６０）。｜ｂ（ｋ）＋ａ（ｋ＋１）｜／ｍａｘ（｜ｂ（ｋ）｜：｜ａ（ｋ＋１）｜）＜βであれば（Ｓ５６０：ＹＥＳ）、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差が、予め設定された閾値βよりも大きく変化したことを示すタイプ２の警告ＲＡＭに記憶し（Ｓ５７０）、Ｓ５８０に移行する。
【００５３】
また、｜ｂ（ｋ）＋ａ（ｋ＋１）｜／ｍａｘ（｜ｂ（ｋ）｜：｜ａ（ｋ＋１）｜）≧βであれば（Ｓ５６０：ＮＯ）、そのままＳ５８０に移行する。
次いで、ｋ＝ｎ−１であるか否かを判定する（Ｓ５８０）。ｋ＝ｎ−１であれば（Ｓ５８０：ＹＥＳ）、演算精度判定処理を終了し、ｋ＝ｎ−１でなければ（Ｓ５８０：ＮＯ）、ｋをインクリメントし（Ｓ５９０）、Ｓ５５０の処理に戻る。
【００５４】
次に演算精度判定処理が終了すれば、図４のシミュレーション処理に戻り、演算判定処理（Ｓ３３０）において、警告が発生したか否かを、ＲＡＭを参照して判定する（Ｓ３４０）。また、警告が発生していなければ（Ｓ３４０：ＮＯ）、全ての演算ブロックを既に選択したか否かを判定する（Ｓ３８０）。
【００５５】
警告が発生していれば（Ｓ３４０：ＹＥＳ）、Ｓ２４０にて演算順序を自動的に修正する演算順序自動修正モードに設定されているか否かを判定する（Ｓ３５０）。演算順序自動修正モードに設定されていれば（Ｓ３５０：ＹＥＳ）、演算順序変更処理を実行する（Ｓ３６０）。また、演算順序指導修正モードに設定されていなければ（Ｓ３５０：ＮＯ）、全ての演算ブロックを既に選択したか否かを判定する（Ｓ３８０）。
【００５６】
この演算順序変更処理については、図７を用いて詳しく説明する。なお、図７はシミュレーション処理部１３が実行する演算順序変更処理を示すフローチャートである。
この演算順序変更処理は、ａ（ｋ＋１）で演算精度判定で警告が発生した場合に、このａ（ｋ＋１）の演算順序を演算精度判定で警告が発生しないａ（ｊ）の演算順序と入れ替えて、演算精度の向上を図る処理である。
【００５７】
より具体的に、演算順序変更処理では、図７に示すように、まずｋ＝１に設定する（Ｓ７１０）。
そして、ｋ＝ｎであるか否かを判定する（Ｓ７２０）。ｋ＝ｎであれば（Ｓ７２０：ＹＥＳ）、演算順序変更処理を終了する。
【００５８】
一方、ｋ＝ｎでなければ（Ｓ７２０：ＮＯ）、ｊ＝ｋ＋１に設定し（Ｓ７３０）、ｍａｘ(｜ｂ(ｋ)|:|ａ(ｊ)|) ／ ｍｉｎ(｜ｂ(ｋ)｜:｜ａ(ｊ)｜) ＞ α であるか否かを判定する（Ｓ７４０）。ｍａｘ(｜ｂ(ｋ)|:|ａ(ｊ)|) ／ ｍｉｎ(｜ｂ(ｋ)｜:｜ａ(ｊ)｜) ＞ αでなければ（Ｓ７４０：ＮＯ）、  ｜ｂ(ｋ)＋ａ(ｊ)｜ ／ ＭＡＸ(｜ｂ(ｋ)｜:｜ａ(ｊ)｜) ＜ β であるか否かを判定する（Ｓ７５０）
｜ｂ(ｋ)＋ａ(ｊ)｜ ／ ＭＡＸ(｜ｂ(ｋ)｜:｜ａ(ｊ)｜) ＜ βでなければ（Ｓ７５０：ＮＯ）、ａ（ｋ＋１）とａ（ｊ）との演算順序を入れ替える（Ｓ７９０）。なお、Ｓ７９０の処理が実行されると、演算ブロックに対応して記憶されている演算順序が変更される。その後、ｂ(ｋ＋１) に ｂ(ｋ) ＋ ａ(ｋ＋１) を設定し（Ｓ８０          ０）、ｋをインクリメントし（Ｓ８１０）、Ｓ７２０に戻る。
【００５９】
また、ｍａｘ(｜ｂ(ｋ)|:|ａ(ｊ)|) ／ ｍｉｎ(｜ｂ(ｋ)｜:｜ａ(ｊ)｜) ＞ αである（Ｓ７４０：ＹＥＳ）、または｜ｂ(ｋ)＋ａ(ｊ)｜ ／ ＭＡＸ(｜ｂ(ｋ)｜:｜ａ(ｊ)｜) ＜ βであれば（Ｓ７５０：ＹＥＳ）、ｊ＝ｎであるか否かを判定する（Ｓ７６０）。ｊ＝ｎでなければ（Ｓ７６０：ＮＯ）、ｊをインクリメントし（Ｓ７７０）、Ｓ７４０に戻る。また。ｊ＝ｎであれば（Ｓ７６０：ＹＥＳ）、演算順序が変更できなかった旨を示す変更不能フラグをＲＡＭにセットし（Ｓ７８０）、演算順序変更処理を終了する。
【００６０】
次に、演算順序変更処理が終了すると、図４のシミュレーション処理に戻り、演算順序変更処理（Ｓ３６０）にて変更不能フラグがセットされているか否かを判定する（Ｓ３７０）。変更不能フラグがセットされていなければ（Ｓ３７０：ＮＯ）、Ｓ３２０に戻る。また、変更不能フラグがセットされていれば（Ｓ３７０：ＹＥＳ）、全ての演算ブロックを既に選択したか否かを判定する（Ｓ３８０）。
【００６１】
まだ選択していない演算ブロックがあれば（Ｓ３８０：ＮＯ）、演算順序を選択していないブロックの１つを選択し（Ｓ３９０）、Ｓ３２０に戻る。
一方、全ての演算ブロックを選択していれば（Ｓ３８０：ＹＥＳ）、シミュレーション処理の結果を表示し（Ｓ４００）、当該シミュレーション処理を終了する。
【００６２】
ここで、Ｓ４００の処理の際には、例えば図８（ａ）に示すように、エラー表示７１を表示画面上に表示させる。そして、詳細に表示させる指令を入力すると、例えば、Ｓ２２０にて、「時間毎に警告」を選択していれば、図８（ｂ）に示すように、警告が発生したブロック名、警告タイプ（タイプ１または２）、警告発生時刻等の情報を表示部４０に表示する。なお、この結果表示には、変更不能フラグの状態に応じて、自動で演算順序の変更をできなかった旨の表示等を含めてもよい。
【００６３】
また、例えば、Ｓ２２０にて、「時間毎に警告」を選択していなければ、図８（ｃ）に示すように、警告が発生したブロック名、警告タイプ（タイプ１または２）、警告の発生回数／処理実行回数を表す発生頻度等を表示部４０に表示する。
【００６４】
このようなシミュレーション処理（Ｓ１３０）が終了すると、図２に戻り、使用者にシミュレーション処理の修正を行うか否かを判断させる（Ｓ１４０）。使用者が修正を行う場合には（Ｓ１４０：ＹＥＳ）、Ｓ１３０に戻り、使用者が修正を行わず（Ｓ１４０：ＮＯ）、プログラムコード生成処理の実行指令を入力すれば、コード生成処理部１２（ＣＰＵ）は、プログラムコード生成処理を実行する（Ｓ１５０）。
【００６５】
このプログラムコード生成処理において、コード生成処理部１２は、演算順序を含む生成ルールに基づいて制御モデル２０に対応するプログラムコードを生成する。
そして、プログラムコード生成処理が終了すると、コード生成処理部１２は、生成したプログラムコードをコンパイラ・リンカ３１を介してＥＣＵのフラッシュＲＯＭ３２に記録し（Ｓ１６０）、プログラムコード作成作業は終了する。
【００６６】
ここで、このようなプログラムコード生成装置１において、例えば、図９（ａ）に示すような制御モデル２０についてのプログラムコードを生成する場合を考える。即ち、制御モデル２０においては、変数Ａには「÷（除算）」が対応づけられており、定数Ｂには「×（乗算）」が対応付けられている。そして、変数Ａ、定数Ｂの順で演算ブロック（ここでは乗除算ブロック２２）に入力されている。
【００６７】
このような制御モデル２０が入力された後で、シミュレーション処理開始指令が入力され、シミュレーション処理（図４）のＳ２６０，Ｓ２７０にて、演算順序が、定数Ｂ、変数Ａの順に指定されると、プログラムコードの生成を実施すれば、図９（ｂ）に示すようなプログラムコードが生成される。即ち、変数Ａおよび定数Ｂは、「rtB.Product = rtP.ConstantB#Value / rtb#DataStoreReadA（「解」＝「定数Ｂ」／「変数Ａ」）」という演算順序が変更されたプログラムコードとして出力される。この場合には、演算順序を指定しなかった場合のように、「１．０／（または「−」）」というプログラムコードが追記されることがないので、演算速度が遅くなることを防止することができる。
【００６８】
なお、本実施形態において、コード生成処理部１２は本発明でいう生成手段に相当し、各種設定入力部５２は演算順序入力手段、閾値入力手段、および警告内容設定入力手段に相当する。また、プログラムコード生成装置１におけるＲＯＭ、ＲＡＭ、ハードディスク装置等の記憶装置は本発明でいう演算順序記憶手段、閾値記憶手段、および警告内容設定記憶手段に相当する。さらに、シミュレーション処理（図４）において、Ｓ３１０〜Ｓ４００の処理は本発明でいうシミュレーション手段に相当し、Ｓ４５０〜Ｓ４７０の処理は閾値設定手段に相当し、Ｓ４００の処理は警告出力手段に相当する。また、演算精度判定処理（図６（ｂ）において、Ｓ５２０〜Ｓ５３０の処理は本発明でいう第１警告手段に相当し、Ｓ５６０〜Ｓ５７０の処理は第２警告手段に相当する。そして、最適化処理（図２：Ｓ１２０）は本発明でいう集約手段に相当し、演算順序変更処理（図７，図１０）は演算順序変更手段に相当する。
【００６９】
以上のように詳述したプログラムコード生成装置１においては、演算ブロックにおいて各種演算の演算順序を入力する各種設定入力部５２により入力された演算順序を、プログラムコード生成装置１の記憶装置が各種パラメータに関連付けて記憶する。そして、記述された制御モデル２０に対応するプログラムコードを各種パラメータの入力順に生成するコード生成処理部１２は、プログラムコード生成装置１の記憶装置に記憶された演算順序を入力順として、プログラムコードを生成する。
【００７０】
従って、このようなプログラムコード生成装置１によれば、入力された演算順序に従ってプログラムコードを生成することができるので、制御モデル２０の可読性を損なうことがない。また、この装置１により生成されたプログラムコードに基づいて生成されたプログラムを実行する際の演算速度が遅くなることを防止することができる。
【００７１】
また、本実施形態のプログラムコード生成装置１においては、コード生成処理部１２によるプログラムコード生成前に実行されるシミュレーション処理のＳ３１０〜Ｓ４００にて、プログラムコード生成装置１の記憶装置に記憶された演算順序に従って、コード生成処理部１２により生成されるプログラムコードの内容を検証する。
【００７２】
従って、このようなプログラムコード生成装置１によれば、実際に生成したプログラムコードに基づくプログラムを実行するときと同様の条件でプログラムの検証作業（シミュレーション）を実行することができるので、プログラムの検証作業を容易に行うことができる。
【００７３】
また、本実施形態のプログラムコード生成装置１においては、演算ブロックに、入力されたパラメータ同士を加減算する加減算ブロックを備え、演算精度判定処理のＳ５２０〜Ｓ５３０では、加減算ブロックにて加減算するパラメータ同士のレンジの差が、予め設定された閾値よりも大きい場合に、加減算ブロックでの演算精度の悪化を警告する。また、演算精度判定処理のＳ５６０〜Ｓ５７０では、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差が、予め設定された閾値よりも大きく変化した場合に、この加減算ブロックでの演算精度の悪化を警告する。
【００７４】
従って、このようなプログラムコード生成装置１によれば、精度悪化箇所を特定することができるので、精度悪化箇所を適宜修正すればより演算精度を向上させることができる。
【００７５】
特に、本実施形態のプログラムコード生成装置１のように浮動小数点演算を行う場合には、演算後の数値（解）の桁数が大きく変化すると、実質的に使用する桁数が減少してしまい、演算精度の悪化が発生するが、本実施形態においては、加減算ブロックにて加減算する前後で各種パラメータの値のレンジの差を監視するので、演算精度の悪化を防止することができる。
【００７６】
さらに、本実施形態のプログラムコード生成装置１においては、各種設定入力部５２を介して、演算精度判定処理にて演算精度の悪化の判定を行う際に参照する閾値を入力可能に構成され、プログラムコード生成装置１の記憶装置には各種設定入力部５２を介して入力された閾値を記憶可能に構成されている。
【００７７】
従って、このようなプログラムコード生成装置１によれば、生成したプログラムコードに求められる演算精度（レベル）を使用者が設定することができる。
また、本実施形態のプログラムコード生成装置１においては、各種設定入力部５２を介して精度悪化の警告の表示形態を予め設定された選択肢の中から設定可能に構成され、プログラムコード生成装置１の記憶装置には各種設定入力部５２により入力された設定内容を記憶可能に構成されている。そして、プログラムコード生成装置１は、シミュレーション処理のＳ４００にて、記憶装置に記憶された設定内容に基づいて精度悪化の警告を出力する。
【００７８】
従って、このようなプログラムコード生成装置１によれば、警告の内容を使用者が任意に設定することができるので、使用者にとって重要な警告の内容を識別し易くすることができる。
【００７９】
また、本実施形態のプログラムコード生成装置１において、演算順序変更処理では、演算精度判定処理にて加減算ブロックでの演算精度の悪化を警告した場合に、プログラムコード生成装置１の記憶装置に記憶された演算順序を予め設定された規則に基づいて変更する。
【００８０】
従って、このようなプログラムコード生成装置１によれば、演算精度の悪化を警告された場合に、演算順序を適切な順序に変更することができるので、演算精度を改善することができる。
【００８１】
また、演算順序を自動的に設定することができるので、プログラムコードを生成するための工数を削減することができる。
さらに、プログラムコード生成装置１においては、シミュレーション処理の作動前に最適化処理（Ｓ１２０）を実行し、この最適化処理にて、制御モデル２０に同じ種類の演算ブロックが連続して記述されているか否かを判定し、同じ種類の演算ブロックが連続して記述されていれば、これらの演算ブロックを１つの演算ブロックとして集約して記述し直す。
【００８２】
従って、このようなプログラムコード生成装置１によれば、演算ブロックの数を集約することにより、演算回数を少なくすることができるので、演算速度を向上させることができる。
【００８３】
また、演算ブロックを集約することにより、演算順序を変更する際の自由度を高くすることができるので、より演算精度を向上させることができる。
なお、本発明の実施の形態は、上記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【００８４】
例えば、本実施例において、シミュレーション処理における演算順序変更処理は、図１０に示すような処理にしてもよい。即ち、変形例の演算順序変更処理では、演算ブロックに入力される各種パラメータ同士の大小関係に基づいてプログラムコード生成装置１の記憶装置に記憶された演算順序を変更する。
【００８５】
具体的には、図１０に示す演算順序変更処理においては、まず、ｍａｘ（｜ａ（１）｜：｜ａ（ｎ）｜）、つまりａ（１）〜ａ（ｎ）の絶対値の最大値を抽出し、この最大値を最大レンジとして設定する（Ｓ９１０）。
【００８６】
そして、ａ（１）〜ａ（ｎ）の各パラメータの値を「正」または「負」により分類する（Ｓ９２０）。
続いて、ａ（１）〜ａ（ｎ）の各パラメータのうち、「正」に分類されたものを絶対値の小さなものから順に加算したＳｐを算出する（Ｓ９３０）。
【００８７】
そして、ａ（１）〜ａ（ｎ）の各パラメータのうち、「負」に分類されたものを絶対値の小さなものから順に加算したＳｍを算出する（Ｓ９４０）。
次いで、Ｓｐの絶対値（｜Ｓｐ｜）がＳｍの絶対値（｜Ｓｍ｜）以上であるかを判定する（Ｓ９５０）。｜Ｓｐ｜≧｜Ｓｍ｜であれば（Ｓ９５０：ＹＥＳ）、「正」に分類されたものを絶対値の小さなものから並べ、その後、「負」に分類されたものを絶対値の大きなものから並べた演算順序を設定する（Ｓ９６０）。一方、｜Ｓｐ｜＜｜Ｓｍ｜であれば（Ｓ９５０：ＮＯ）、「負」に分類されたものを絶対値の小さなものから並べ、その後、「正」に分類されたものを絶対値の大きなものから並べた演算順序を設定する（Ｓ９７０）。そして、当該演算順序変更処理を終了する。
【００８８】
このような演算順序変更処理を実行するプログラムコード生成装置によれば、演算ブロックに入力される各種パラメータ同士の大小関係に着目して演算順序を変更するので、演算後の値に着目して演算順序を変更する場合と比較して、演算順序を変更するためのアルゴリズムを簡素化することができる。
【００８９】
また、上記実施形態の演算順序変更処理は、警告が発生した場合のみに実行するよう設定したが、警告の有無に関わらず演算順序変更処理を実行するようにしてもよい。つまり、この場合のシミュレーション処理においては、Ｓ２６０，Ｓ２７０，Ｓ３４０，Ｓ３７０の処理が不要となり、Ｓ３２０〜Ｓ３３０の処理と、Ｓ３５０〜Ｓ３６０の処理とを入れ替えた処理を実行すればよい。
【００９０】
また、上記実施形態のシミュレーション処理においては、Ｓ２１０〜Ｓ２２０の処理にて使用者が演算精度判定用の閾値を入力するよう設定したが、演算の精度に応じて自動的に閾値を設定するよう設定してもよい。即ち、図１１に示すように、Ｓ２１０〜Ｓ２２０の処理に換えて、Ｓ３１０とＳ３２０の処理の間にてＳ４５０〜Ｓ４７０の処理を実行する。そして、シミュレーション処理のＳ４５０〜Ｓ４７０では、浮動小数点演算が単精度で実施されるか倍精度で実施されるかを判定し、判定結果に応じて予め設定された閾値を演算精度判定処理の際に参照する閾値として設定する。
【００９１】
このシミュレーション処理のより具体的な内容は、図１１に示すように、Ｓ３１０の処理が終了すると、この演算ブロックにおける演算精度が倍精度に設定されているか否かを判定する（Ｓ４５０）。この演算ブロックにおける演算精度が倍精度に設定されていれば（Ｓ４５０：ＹＥＳ）、演算精度判定用の閾値α，βを予めＲＯＭ等に記憶された倍精度用の閾値Ａ１，Ａ２にそれぞれ設定し（Ｓ４６０）、Ｓ３２０に移行する。また、この演算ブロックにおける演算精度が単精度に設定されていれば（Ｓ４５０：ＮＯ）、演算精度判定用の閾値α，βを予めＲＯＭ等に記憶された単精度用の閾値Ｂ１，Ｂ２にそれぞれ設定し（Ｓ４７０）、Ｓ３２０に移行する。
【００９２】
なお、閾値αに関しては、「倍精度用の閾値Ａ１」＞「単精度用の閾値Ｂ１」の関係があり、閾値βに関しては、「倍精度用の閾値Ａ２」＜「単精度用の閾値Ｂ２」の関係がある。
【００９３】
以上のようなプログラムコード生成装置１によれば、演算精度によって閾値を設定することができるので、演算精度が高く設定されており演算精度の悪化が発生しない場合には余分な警告を排除することができる。
【図面の簡単な説明】
【００９４】
【図１】プログラムコード生成装置を用いたプログラム生成の流れを示す説明図である。
【図２】プログラムコード生成作業の手順を示す説明図である。
【図３】最適化処理の実行前（ａ）および実行後（ｂ）における制御モデルの状態を示す説明図である。
【図４】シミュレーション処理を示すフローチャートである。
【図５】閾値の入力画面（ａ）および演算順序の入力画面（ｂ）を示す説明図である。
【図６】演算ブロックと演算ブロックに入力される各種数値との対応関係を示す模式図（ａ）、および精度判定処理を示すフローチャート（ｂ）である。
【図７】精度判定処理を示すフローチャートである。
【図８】シミュレーション結果の表示例を示す説明図である。
【図９】制御モデルおよびこの制御モデルから生成されるプログラムコードを示す説明図である。
【図１０】変形例の演算順序変更処理を示すフローチャートである。
【図１１】変形例のシミュレーション処理を示すフローチャートである。
【図１２】背景技術の制御モデルおよびこの制御モデルから生成されるプログラムコードを示す説明図である。
【符号の説明】
【００９５】
１…プログラムコード生成装置、１０…コード生成ツール、１１…抽出エンジン、１２…コード生成処理部、１３…シミュレーション処理部、１４…生成ルール記憶部、２０…制御モデル、２１…加減算ブロック、２２…乗除算ブロック、２３…三角関数ブロック、２８…変数、２９…定数、３１…コンパイラ・リンカ、３２…フラッシュＲＯＭ、４０…表示部、５１…モデル入力部、５２…各種設定入力部、５３…開始指令入力部、７１…エラー表示。
【図１】
2007213402.tif 000003
【図２】
2007213402.tif 000004
【図３】
2007213402.tif 000005
【図４】
2007213402.tif 000006
【図６】
2007213402.tif 000007
【図７】
2007213402.tif 000008
【図９】
2007213402.tif 000009
【図１０】
2007213402.tif 000010
【図１１】
2007213402.tif 000011
【図１２】
2007213402.tif 000012
【図５】
2007213402.tif 000013
【図８】
2007213402.tif 000014