(57)【要約】【課題】制御モデルに対してスケーリングを実施して実装モデルを生成する工程を自動化する技術を提供する。【解決手段】本発明に係る制御ソフトウェア開発プログラムは、制御モデル内の機能ブロックの接続関係に基づき、入力値の精度と値範囲を維持すべきか否かを判断し、その判断結果に基づき、不足しているスケーリングパラメータを自動生成する。【選択図】図１
2017016416.tif 000002
【特許請求の範囲】
【請求項１】
制御ソフトウェアを実行することにより機器の動作を制御する電子制御装置の前記制御ソフトウェアを開発する処理をコンピュータに実行させる制御ソフトウェア開発プログラムであって、前記コンピュータに、
前記制御ソフトウェアが有する機能ブロックを連結することにより前記制御ソフトウェアの動作をモデル化した制御モデルを記述する制御モデルデータを取得するステップ、
前記制御モデルに対して適用することにより前記制御ソフトウェアのソースコードを生成するスケーリングパラメータを記述したスケーリングデータを取得するステップ、
前記スケーリングパラメータを前記制御モデルに対して適用することにより前記ソースコードを生成する第１スケーリングステップ、
前記制御モデルデータ内に記述されており前記スケーリングデータ内に記述されていない前記機能ブロック間の接続関係を抽出する抽出ステップ、
前記抽出した機能ブロックにおいて前記制御モデルに対する入力値の精度と値範囲を維持すべきか否かを前記接続関係に基づき判断し、維持する必要がある場合はその精度と値範囲を維持するスケーリングパラメータを生成し、維持する必要がない場合は前記電子制御装置が前記制御ソフトウェアを実行する際に使用するリソースができる限り小さくなるスケーリングパラメータを生成する、スケーリングパラメータ生成ステップ、
前記スケーリングパラメータ生成ステップにおいて生成したスケーリングパラメータを前記抽出ステップにおいて抽出した機能ブロックに対して適用することにより前記ソースコードを生成する第２スケーリングステップ、
を実行させることを特徴とする制御ソフトウェア開発プログラム。
【請求項２】
前記制御モデルは、前記機能ブロックとして、前記制御モデルに対する前回の入力値を保存する前回値ブロックを有しており、
前記スケーリングデータは、前記入力値に対して適用すべきスケーリングパラメータを記述するとともに、前記前回値ブロックに対して適用すべき前記スケーリングパラメータを記述しておらず、
前記スケーリングパラメータ生成ステップにおいては、前記コンピュータに、
前記入力値に対して適用すべき前記スケーリングパラメータを前記前回値ブロックに対して適用するスケーリングパラメータとして生成するステップを実行させる
ことを特徴とする請求項１記載の制御ソフトウェア開発プログラム。
【請求項３】
前記制御モデルは、前記機能ブロックとして、
第１値と第２値を比較し前記第１値が前記第２値以下であるか否かを示す真偽値を出力する比較ブロック、
前記第２値を算術演算によって求める算術演算ブロック、
を有しており、
前記スケーリングデータは、前記第１値に対して適用すべき前記スケーリングパラメータを記述するとともに、前記算術演算ブロックに対して適用すべき前記スケーリングパラメータを記述しておらず、
前記スケーリングパラメータ生成ステップにおいては、前記コンピュータに、
前記第１値に対して適用すべき前記スケーリングパラメータを前記算術演算ブロックに対して適用するスケーリングパラメータとして生成するステップを実行させる
ことを特徴とする請求項１記載の制御ソフトウェア開発プログラム。
【請求項４】
前記スケーリングデータは、前記スケーリングパラメータとして、
前記機能ブロックの種別を示す種別パラメータ、
前記第１スケーリングステップにおいて前記ソースコードを生成する際に前記ソースコード内において前記機能ブロックのデータ型として採用するデータ型パラメータ、
前記第１スケーリングステップにおいて前記ソースコードを生成する際に前記機能ブロックが使用する値の１ビット当たりの重みとして用いるビットレートパラメータ、
前記第１スケーリングステップにおいて前記ソースコードを生成する際に前記機能ブロックが使用する値の値範囲を補正する補正値として用いるオフセットパラメータ、
を記述しており、
前記スケーリングデータはさらに、前記制御モデル内における前記機能ブロックの位置を特定するパスパラメータを、前記スケーリングパラメータと対応付けて記述しており、
前記第１スケーリングステップにおいては、前記コンピュータに、
前記スケーリングデータが記述している前記種別パラメータ、前記データ型パラメータ、前記ビットレートパラメータ、および前記オフセットパラメータにしたがって、前記機能ブロックを前記ソースコード内における変数または定数に変換するステップを実行させる
ことを特徴とする請求項１記載の制御ソフトウェア開発プログラム。
【請求項５】
前記スケーリングデータは、前記パスパラメータとして、
前記制御モデルのモデル名、前記制御モデル内におけるサブモデル名、前記機能ブロック名、および区切り文字を連結することにより、前記制御モデル内における前記機能ブロックの位置を一意に特定する文字列を記述しており、
前記第１スケーリングステップにおいては、前記コンピュータに、
前記パスパラメータが記述している前記文字列にしたがって前記機能ブロックを特定するとともに、特定した前記機能ブロックに対応する前記スケーリングパラメータを特定した前記機能ブロックに対して適用するステップを実行させる
ことを特徴とする請求項４記載の制御ソフトウェア開発プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機器の動作を制御する電子制御装置が実行する制御ソフトウェアを開発する技術に関する。
【背景技術】
【０００２】
電子制御装置は、機器の動作を制御する制御処理を実装した制御プログラムを実行することにより、当該機器の動作を制御する。制御ソフトウェアの開発においては、開発者が制御ソフトウェアのソースコードを記述することに代えて、より簡易に作成でき視認性の良い「（制御）モデル」によって記述する場合がある。
【０００３】
開発者は、制御モデルを作成するためのプログラム開発環境を用いて、制御ソフトウェアを開発する。このプログラム開発環境は、制御モデルから自動的にソースコードを生成する機能を備える。モデルからソースコードを自動生成するプログラムは、コード生成ツールと呼ばれる。モデルからソースコードを生成するプログラム開発手法は、モデルベース開発と呼ばれる。モデルから自動的に生成されたソースコードは、オートコードと呼ばれる。モデルからソースコードを自動生成するプロセスは、オートコーディングと呼ばれる。
【０００４】
モデルベース開発に対応したプログラム開発環境としては、例えば、ＭａｔｈＷｏｒｋｓ（登録商標）社のＭＡＴＬＡＢ（登録商標）がある。開発者は、ＭＡＴＬＡＢ（登録商標）の一機能であるＳｉｍｕｌｉｎｋ（登録商標）を用いて、モデルを記述する。モデルは、ブロックと呼ばれる機能単位および機能単位間の入出力関係を示す結線によって記述される。
【０００５】
Ｓｉｍｕｌｉｎｋ（登録商標）を用いて、制御ソフトウェアが実装した動作を記述したモデルは、制御モデルと呼ばれる。このモデルを元に、例えばｄＳｐａｃｅ（登録商標）社のＴａｒｇｅｔＬｉｎｋ（登録商標）を用いて、コード生成に必要なデータ型やビットレートなどの情報（スケーリング情報）を付加したモデルは、実装モデルと呼ばれる。スケーリング情報を付加するプロセスは、スケーリングと呼ばれる。
【０００６】
下記特許文献１は、モデルベース開発に関する技術の１例として、モデルから生成されるソースコードの関数の複雑度のばらつきを低減する技術について記載している（要約参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−３３２３３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
制御の進化にともない、制御モデルの機能は変更される。制御ソフトウェアのソースコードは実装モデルから生成されるので、制御モデルを変更すると同時に、対応した実装モデルも作成する必要がある。しかし、制御の複雑化にともない制御モデルの規模も増大していくので、制御モデルを変更する毎にスケーリングを実施して実装モデルを作成するのは効率が悪い。
【０００９】
上記課題を回避するための手段として、変更前後の制御モデルの差分を抽出し、変更前の制御モデルに対応した実装モデルに対してその差分を反映させ、その差分に対してスケーリングを実施し、これにより変更後の制御モデルに対応した実装モデルを作成する方法が考えられる。
【００１０】
しかしこの方法は、差分の抽出ミスや差分の反映ミスが発生する可能性が常に存在するので、差分に対してスケーリングを実施するのではなく、変更後の制御モデルから実装モデルを生成し、実装モデル全体に対してスケーリングすることが望ましい。また、制御モデルの規模の増大にともないスケーリングに必要な工数も増加するので、スケーリングは自動で実施することが望ましい。
【００１１】
本発明は、上記のような課題に鑑みてなされたものであり、制御モデルに対してスケーリングを実施して実装モデルを生成する工程を自動化する技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係る制御ソフトウェア開発プログラムは、制御モデル内の機能ブロックの接続関係に基づき、入力値の精度と値範囲を維持すべきか否かを判断し、その判断結果に基づき、不足しているスケーリングパラメータを自動生成する。
【発明の効果】
【００１３】
本発明に係る制御ソフトウェア開発プログラムによれば、制御モデルに対して付与すべきスケーリングパラメータがあらかじめ全て提供されていない場合であっても、これを自動生成することにより、実装モデルを生成する工程を自動化することができる。
【図面の簡単な説明】
【００１４】
【図１】制御ソフトウェア開発プログラム１４０を実行するコンピュータ１００の構成図である。
【図２】スケーリングパラメータデータベース１３４の構成とデータ例を示す図である。
【図３】パス１３４１の記載例を説明する図である。
【図４】従来の制御ソフトウェア開発プログラムによるオートコーディングを説明するフローチャートである。
【図５】制御ソフトウェア開発プログラム１４０が実施するオートコーディング処理を説明するフローチャートである。
【図６】ステップＳ５０６〜Ｓ５０７の１例を説明する図である。
【図７】ステップＳ５０６〜Ｓ５０７の別例を説明する図である。
【発明を実施するための形態】
【００１５】
＜制御ソフトウェア開発プログラムの構成について＞
図１は、本発明に係る制御ソフトウェア開発プログラム１４０を実行するコンピュータ１００の構成図である。コンピュータ１００は、入力装置１１１、ディスプレイ１１２、記憶装置１１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１４、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１５、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２０を備える。
【００１６】
入力装置１１１は、キーボード、マウス、音声入力装置などによって構成され、開発者がこれを操作することによってその操作に応じた操作信号をＣＰＵ１２０に対して出力する。ディスプレイ１１２は、ＣＰＵ１２０が出力する情報を映像で表示する。記憶装置１１３は、読み出し／書き込み可能な不揮発性メモリである。ＲＡＭ１１４は、読み出し／書き込み可能な揮発性メモリであり、ＣＰＵ１２０がプログラムを実行する際に、そのプログラムや演算結果などの作業用データを一時的に保存する。ＲＯＭ１１５は、読み出し専用の不揮発性メモリである。
【００１７】
ＣＰＵ１２０は、コンピュータ１００に電源が投入されると、ＲＯＭ１１５から所定のブートプログラムを読み出して実行し、このブートプログラムに規定されるオペレーティングシステム（以下ＯＳと記す）、その他のプログラムを記憶装置１１３から読み出して実行する（起動処理）。起動処理が完了した後、コンピュータ１００の電源が遮断されるまで、ＣＰＵ１２０は、入力装置１１１からの信号、ＯＳによって定められたスケジュールなどに基づいて記憶装置１１３に記録されている各種プログラムを当該ＯＳ上のプロセスとして実行する。また上記起動処理において、ＣＰＵ１２０は必要に応じて入力装置１１１からの信号入力を受け付け、ディスプレイ１１２に映像を出力し、ＲＡＭ１１４や記憶装置１１３に対するデータの読み込み／書き出しを制御する。
【００１８】
ＣＰＵ１２０は、データ１３０に対して読み込み／書き出しを実施し、制御ソフトウェア開発プログラム１４０を実行する。以降は記載の便宜上、制御ソフトウェア開発プログラム１４０を動作主体として説明する場合があるが、実際にこれを実行するのはＣＰＵ１２０である。また記載の便宜上、図１においてはＣＰＵ１２０の構成要素としてデータ１３０と制御ソフトウェア開発プログラム１４０を記載しているが、これらデータおよびプログラムは例えば記憶装置１１３にあらかじめ格納しておき、必要に応じてＣＰＵ１２０が読み出し、書き込み、または実行することができる。
【００１９】
データ１３０は、制御モデル１３１、データ辞書１３２、実装モデル１３３、スケーリングパラメータデータベース１３４を含む。
【００２０】
制御モデル１３１は、制御ソフトウェアの動作を定義する制御モデルを記述したデータである。
【００２１】
データ辞書１３２は、制御モデル１３１が記述している機能ブロックに対して適用すべきスケーリングパラメータを記述したデータベースである。データ辞書１３２は、制御モデル間で入出力される変数名、当該変数のデータ型、当該変数のビットレート、当該変数のオフセット値、などを相互に対応付けて保存している。
【００２２】
実装モデル１３３は、制御モデル１３１に対して、ソースコードを生成するために必要なスケーリングパラメータであるデータ型／ビットレート／オフセットを付与したものである。データ辞書１３２が記述している情報は、モデルに対する入力値またはモデルから出力される出力値に関するものであり、モデル内部の動作を規定する機能ブロックに関するスケーリングパラメータは記述されていない。これらスケーリングパラメータは、実装モデル１３３内部に保存される。
【００２３】
スケーリングパラメータデータベース１３４は、実装モデル１３３に対して付与したスケーリングパラメータを格納するデータベースである。スケーリングパラメータデータベース１３４は、実装モデル１３３のフォーマットに依存しない形式で、スケーリングパラメータを保持する。スケーリングパラメータデータベース１３４の具体例については後述の図２で改めて説明する。
【００２４】
制御ソフトウェア開発プログラム１４０は、機器の動作を制御する処理を実装した制御ソフトウェアを開発するプログラム（プログラム開発環境）である。制御ソフトウェア開発プログラム１４０は、サブプログラムとして、制御モデル編集プログラム１４１、データ辞書編集プログラム１４２、実装モデル編集プログラム１４３、自動スケーリングプログラム１４４、スケーリングパラメータ書き出しプログラム１４５、スケーリングチェックプログラム１４６、オートコード生成プログラム１４７を有する。
【００２５】
制御モデル編集プログラム１４１は、例えばＳｉｍｕｌｉｎｋ（登録商標）などのような、制御モデル１３１を編集するプログラムである。データ辞書編集プログラム１４２は、例えばＭＡＴＬＡＢ（登録商標）などのような、データ辞書１３２を編集するプログラムである。実装モデル編集プログラム１４３は、例えばＴａｒｇｅｔＬｉｎｋ（登録商標）などのような、実装モデル１３３を編集するプログラムである。オートコード生成プログラム１４７は、例えばＴａｒｇｅｔＬｉｎｋ（登録商標）などのような、実装モデル１３３からソースコードを生成するプログラムである。
【００２６】
自動スケーリングプログラム１４４は、実装モデル１３３に対してスケーリングを自動的に実施するプログラムである。スケーリングパラメータ書き出しプログラム１４５は、スケーリングパラメータをスケーリングパラメータデータベース１３４に対して書き込むプログラムである。スケーリングチェックプログラム１４６は、実装モデル１３３に対して実施したスケーリングの整合性をチェックするプログラムである。これらプログラムの動作については、後述の図３以降で改めて説明する。
【００２７】
図２は、スケーリングパラメータデータベース１３４の構成とデータ例を示す図である。スケーリングパラメータデータベース１３４は、パス１３４１、種別１３４２、データ型１３４３、ビットレート１３４４、オフセット１３４５、リビジョン１３４６を有する。モデル毎に個別のデータテーブルを設けることもできるし、複数の実装モデルのスケーリングパラメータを単一のデータテーブル内に記述することもできる。
【００２８】
パス１３４１は、モデル内の機能ブロックを一意に識別する文字列である。制御モデル１３１（または実装モデル１３３）内にはサブモデル（サブシステム）が存在し、さらに入出力値を表す機能ブロックや演算を実施する機能ブロックが配置される。各機能ブロックは、制御モデル１３１内のこれら階層構造を辿ることによって特定することができる。したがってパス１３４１は、制御モデル１３１の名称、サブモデルの名称、および機能ブロックの名称を区切り文字で連結することにより、各機能ブロックを一意に特定する文字列として記述することができる。パス１３４１の記述例については、後述の図３で改めて説明する。
【００２９】
種別１３４２は、機能ブロックの種別を示す。例えば“Ｉｎｐｏｒｔ”は、当該機能ブロックが入力値を表す機能ブロックであることを示す。種別１３４２は、自動スケーリングプログラム１４４がスケーリングを実施する際に、あらかじめスケーリングパラメータが与えられていない機能ブロックに対して適用すべきスケーリングパラメータを生成するために用いることができる。
【００３０】
データ型１３４３は、オートコード生成プログラム１４７がオートコードを生成する際に、変数または定数のデータ型として使用される。例えば“Ｕｉｎｔ８”は、符号なし１バイトのデータ型を示す。
【００３１】
ビットレート１３４４は、オートコード生成プログラム１４７がオートコードを生成する際に、１ビットあたりの重みとして使用する。例えば、データ型がＵｉｎｔ８、ビットレートが０．１である機能ブロックについては、符号なし１バイトデータ型の値範囲である０から２５５に対して０．１を乗算した、０から２５．５の値範囲を表現することができる。
【００３２】
オフセット１３４５は、オートコード生成プログラム１４７がオートコードを生成する際に、値範囲を補正するための補正値として使用する。例えば、データ型がＵｉｎｔ８、ビットレートが１、オフセットが−１００である機能ブロックについては、符号なし１バイトデータ型の値範囲である０から２５５に対して−１００を加算した、−１００から１５５の値範囲を表現することができる。
【００３３】
リビジョン１３４６は、モデルのバージョンを示す。リビジョン１３４６は、自動スケーリングプログラム１４４がスケーリングを実施する際に、あらかじめスケーリングパラメータが与えられていない機能ブロックに対して適用すべきスケーリングパラメータをどのバージョンのモデルから生成するかを判断するために用いる。
【００３４】
スケーリングパラメータデータベース１３４は、各機能ブロックのスケーリングパラメータを、実装モデル１３３から切り離して（すなわち実装モデル１３３の内部的実装に依拠することなく）管理することができる。これにより、実装モデル１３３が更新されたとしても、更新前のスケーリングパラメータを更新後の実装モデル１３３に対して引き継ぐことができる。また、例えば制御ソフトウェア開発プログラム１４０のバージョンアップなどにともなう機能変更により、新旧実装モデル１３３のフォーマット間に互換性がなくなったとしても、スケーリングパラメータを新旧実装モデル１３３間で引き継ぐことができる。
【００３５】
図３は、パス１３４１の記載例を説明する図である。図３上図は制御モデル１３１の１例であり、図３下図は同制御モデル内の各機能ブロックを指定するパス１３４１の記載例である。
【００３６】
モデル３００は、入力値ブロック３０１および３０２、出力値ブロック３０３、サブシステム３１０を有する。サブシステム３１０は、入力値ブロック３１１と３１２、加算ブロック３１３、出力値ブロック３１４を有する。
【００３７】
モデル３００内の各ブロックには一意なブロック名が設定されている。したがって各ブロックは、モデル名、区切り文字、ブロック名、を結合した文字列で表すことができる。例えば入力値ブロック３０１は、“モデル１／入力１”で表すことができる。同様に、サブシステム３１０内の各ブロックには一意なブロック名が設定されているので、各ブロックは、モデル名、区切り文字、サブシステム名、区切り文、ブロック名、を結合した文字列で表すことができる。例えば加算ブロック３１３は、“モデル１／サブシステム１／加算１”で表すことができる。
【００３８】
＜従来のスケーリングについて＞
以下では本発明の理解を容易にするため、従来のスケーリング工程およびその課題について図４を用いて説明する。その後、図５以降を用いて本発明におけるスケーリング工程について説明する。
【００３９】
図４は、従来の制御ソフトウェア開発プログラムによるオートコーディングを説明するフローチャートである。以下図４の各ステップについて説明する。
【００４０】
（図４：ステップＳ４０１）
開発者は、制御ソフトウェアの更新にともなって、制御モデルを更新する。開発者は、更新前の制御モデル（旧制御モデル）と更新後の制御モデル（新制御モデル）を比較し、両者の差分を抽出する。
【００４１】
（図４：ステップＳ４０２）
開発者は、ステップＳ４０１で抽出した制御モデルの差分を更新前の実装モデル（旧実装モデル）に対して反映することにより、更新後の制御モデルに対応する実装モデル（新実装モデル）を作成する。
【００４２】
（図４：ステップＳ４０３）
開発者は、データ辞書に登録されているラベルがステップＳ４０２で反映した差分ブロックに対して付与されているか否かを判定する。付与されている場合はステップＳ４０４へ進む。差分ブロックに対してラベルが付与されていないか、または当該ラベルがデータ辞書に登録されていない場合は、ステップＳ４０５へ進む。
【００４３】
（図４：ステップＳ４０３：補足）
データ辞書は、機能ブロックに対して付与すべきスケーリングパラメータをあらかじめ格納したデータベースである。機能ブロックとこれに適用すべきスケーリングパラメータとの間の対応関係は、例えば“ラベル”などと呼ばれる識別子によって管理されている。制御モデル（または実装モデル）の機能ブロックに対してあらかじめラベルが付与されている場合は、このラベルをキーにしてデータ辞書を照会することにより、当該機能ブロックに対して適用すべきスケーリングパラメータを特定することができる。
【００４４】
（図４：ステップＳ４０４）
開発者は、ステップＳ４０３で特定したスケーリングパラメータをデータ辞書から取得し、スケーリングを実施する。
【００４５】
（図４：ステップＳ４０５）
開発者は、不足しているスケーリングパラメータをマニュアル入力することにより、スケーリングを実施する。
【００４６】
（図４：ステップＳ４０２〜Ｓ４０５：補足）
従来のスケーリング工程においてこれらステップにより実施している作業を、ここでは差分スケーリングと呼ぶ。
【００４７】
（図４：ステップＳ４０６）
開発者は、スケーリングが完了した実装モデルから、ソースコードを生成する。
【００４８】
ステップＳ４０１の差分抽出処理においては、例えばマニュアル作業による作業漏れに起因して、差分の抽出漏れが生じる可能性がある。同様にステップＳ４０２の差分反映処理においては、差分の反映漏れが生じる可能性がある。これらが生じると、制御モデルのブロック構成が実装モデルのブロック構成と合致せず、生成されたコードが制御モデルの意図通りに動作しない可能性がある。
【００４９】
また、ステップＳ４０２からステップＳ４０５の差分スケーリング処理は、差分として抽出されたブロックの全てに対して、手動で実施する必要がある。したがって、制御とソフトウェアに関する専門的な知識が必要であり、かつ、差分ブロックの個数に比例した工数が必要となる。
【００５０】
そこで本発明では、従来のような差分スケーリングに代えて、実装モデル全体に対してスケーリングを実施する手法を提供するとともに、スケーリングを自動化する手法を提供する。
【００５１】
＜本発明におけるスケーリングについて＞
図５は、本発明に係る制御ソフトウェア開発プログラム１４０が実施するオートコーディング処理を説明するフローチャートである。以下図５の各ステップについて説明する。
【００５２】
（図５：ステップＳ５０１）
開発者は、制御モデル１３１を実装モデル１３３（スケーリングパラメータ付与前）へ変換する。
【００５３】
（図５：ステップＳ５０１：補足）
制御モデル１３１は、実装モデル１３３の開発者とは別のモデル開発者が開発する場合がある。このような場合、制御モデル１３１の入出力値についてはスケーリングパラメータがあらかじめ定義されており、いずれのスケーリングパラメータを用いるべきかについてはラベル名によって指定されるので、ラベル名を用いてデータ辞書１３２を照会することによりそのスケーリングパラメータを取得することができる。これに対し制御モデル１３１内部の機能ブロックのスケーリングパラメータについては、以下のステップにより別途付与する必要がある。したがって以下のステップは、スケーリングパラメータがあらかじめ与えられているか否かに応じて処理を分岐している。
【００５４】
（図５：ステップＳ５０２）
自動スケーリングプログラム１４４は、スケーリング対象となっている機能ブロックに対して、データ辞書１３２に登録されているラベルが付与されているか否かを判定する。付与されている場合はステップＳ５０３へ進む。当該ブロックに対してラベルが付与されていないか、またはラベルは付与されているがデータ辞書１３２に登録されていない場合は、ステップＳ５０４へ進む。
【００５５】
（図５：ステップＳ５０３）
自動スケーリングプログラム１４４は、スケーリング対象となっている機能ブロックに対応するスケーリングパラメータをデータ辞書１３２から取得し、これを適用することにより、スケーリングを実施する。
【００５６】
（図５：ステップＳ５０４）
自動スケーリングプログラム１４４は、スケーリング対象となっている機能ブロックに対応するスケーリングパラメータがスケーリングパラメータデータベース１３４に登録されているか否かチェックする。登録されている場合はステップＳ５０５へ進む。登録されていない場合はステップＳ５０６へ進む。
【００５７】
（図５：ステップＳ５０５）
自動スケーリングプログラム１４４は、スケーリング対象となっている機能ブロックに対応するスケーリングパラメータをスケーリングパラメータデータベース１３４から取得し、これを適用することにより、スケーリングを実施する。
【００５８】
（図５：ステップＳ５０６）
自動スケーリングプログラム１４４は、機能ブロック間の接続関係に基づきスケーリングを実施することができるか否かを判定する。実施可能である場合はステップＳ５０７へ進む。実施不可である場合はステップＳ５０８へ進む。
【００５９】
（図５：ステップＳ５０６：補足）
機能ブロックに対して適用するスケーリングパラメータの例としては、図２で説明したように、データ型、ビットレート、オフセットなどが挙げられる。データ型は変数（または定数）の精度に影響するパラメータであり、ビットレートとオフセットは値範囲に影響するパラメータである。制御モデルに対する入力値の精度と値範囲を制御モデル内部の演算過程においても維持すべき場合は、制御モデル内の機能ブロックに対して適用するスケーリングパラメータもこれらを維持できるようなものを選択すべきである。一方でこれらを維持する必要がない場合は、電子制御装置が使用する演算リソース（記憶領域サイズ、ＣＰＵ負荷など）ができる限り小さくなるようなスケーリングパラメータを選択すべきである。そこで本ステップにおいて、機能ブロック間の接続関係に基づき、入力値の精度と値範囲を維持すべきか否かに基づき自動スケーリングの可否を判断することとした。具体例については後述の図６〜図７で説明する。
【００６０】
（図５：ステップＳ５０７）
自動スケーリングプログラム１４４は、機能ブロック間の接続関係に基づき、スケーリング対象となっている機能ブロックに対応するスケーリングパラメータを生成し、これを適用することにより、スケーリングを実施する。
【００６１】
（図５：ステップＳ５０８）
開発者は、不足しているスケーリングパラメータをマニュアル入力することにより、スケーリングを実施する。
【００６２】
（図５：ステップＳ５０９）
スケーリングチェックプログラム１４６は、以上のステップによって得られた実装モデルのスケーリング結果について、モデル全体としての整合性をチェックする。以上のステップにおいては、データ辞書１３２、スケーリングパラメータデータベース１３４、接続関係に基づき生成したパラメータ、手動入力パラメータなど、複数のスケーリングパラメータが混在している。そこで本ステップにおいて、モデル全体のスケーリングの整合性をチェックすることとした。
【００６３】
（図５：ステップＳ５０９：補足）
スケーリングチェックプログラム１４６は、以上のステップで得られたモデル全体に対し、ステップＳ５０６〜Ｓ５０７と同様の処理を実施してスケーリングパラメータを生成し、その結果と実際に得られたモデルとを比較することにより、モデル全体のスケーリングの整合性をチェックすることができる。
【００６４】
（図５：ステップＳ５０２〜Ｓ５０９：補足その１）
本発明においてこれらステップにより実施するスケーリング工程を、ここでは全体スケーリングと呼ぶ。これらステップは、Ｓ５０８を除き自動実行することができるので、従来のマニュアル作業によるスケーリングと比較して効率的にスケーリングを実施することができる。また、従来のような差分スケーリングに代えて実装モデル１３３全体に対するスケーリングを実施するので、差分の抽出漏れや反映漏れを抑制することができる。
【００６５】
（図５：ステップＳ５０２〜Ｓ５０９：補足その２）
スケーリングパラメータ書き出しプログラム１４５は、ステップＳ５０６〜Ｓ５０８において得られた新たなスケーリングパラメータを、スケーリングパラメータデータベース１３４に対して新規に書き込むことができる。以後のスケーリング工程においては、スケーリングパラメータデータベース１３４に対して書き込んだスケーリングパラメータを用いてスケーリングを実施することができる。
【００６６】
（図５：ステップＳ５１０）
オートコード生成プログラム１４７は、スケーリングが完了した実装モデルから、ソースコードを生成する。
【００６７】
図６は、ステップＳ５０６〜Ｓ５０７の１例を説明する図である。実装モデル６００は、入力値ブロック６０１、前回値ブロック６０２を有する。入力値ブロック６０１は、実装モデル６００に対する入力値を表す。前回値ブロック６０２は、入力値ブロック６０１の前回値を保持する機能ブロックである。
【００６８】
図６に示す例において、入力値ブロック６０１のスケーリングパラメータはデータ辞書１３２内にあらかじめ定義されており、前回値ブロック６０２のスケーリングパラメータはデータ辞書１３２とスケーリングパラメータデータベース１３４いずれにおいても定義されていないものとする。
【００６９】
前回値ブロック６０２が保持する前回値の精度および取り得る値範囲は、入力値ブロック６０１の精度および取り得る値範囲と一致している。したがって自動スケーリングプログラム１４４は、入力値ブロック６０１のスケーリングパラメータを前回値ブロック６０２のスケーリングパラメータとして流用することができる。例えば入力値ブロック６０１のスケーリングパラメータが、１バイト符号なし、ビットレート１である場合、前回値ブロック６０２のスケーリングパラメータも、１バイト符号なし、ビットレート１となる。
【００７０】
図７は、ステップＳ５０６〜Ｓ５０７の別例を説明する図である。実装モデル７００は、入力値ブロック７０１および７０２、固定値ブロック７０３、加算ブロック７０４、比較ブロック７０５を有する。入力値ブロック７０１と７０２は、実装モデル７００に対する入力値を表す。固定値ブロック７０３は、固定値“１”を出力する。加算ブロック７０４は、入力値ブロック７０２と固定値ブロック７０３を加算した結果を出力する。比較ブロック７０５は、入力値ブロック７０１が加算ブロック７０４の出力値以下であればＴｒｕｅを出力し、それ以外であればＦａｌｓｅを出力する。
【００７１】
図７に示す例において、入力値ブロック７０１と７０２のスケーリングパラメータはデータ辞書１３２内にあらかじめ定義されており、その他機能ブロックのスケーリングパラメータはデータ辞書１３２とスケーリングパラメータデータベース１３４いずれにおいても定義されていないものとする。
【００７２】
比較ブロック７０５は、左辺が右辺「以下」であるか否かを判定しているので、右辺の値として確保すべき範囲は、最大でも左辺と同値までで足りる。例えば入力値ブロック７０１のスケーリングパラメータが、１バイト符号なし、ビットレート１であるとする。この場合、入力値ブロック７０１の取り得る最大値は２５５であるので、比較ブロック７０５の右辺が２５５以上であれば、比較ブロック７０５の出力は入力値ブロック７０１の値によらず必ずＴｒｕｅとなる。したがって、加算ブロック７０４の出力値は最大でも２５５までで足りることになるので、加算ブロック７０４のスケーリングパラメータは入力値ブロック７０１と同じ（この場合は１バイト符号なし、ビットレート１）で足りる。
【００７３】
比較ブロック７０５のスケーリングパラメータについては、比較ブロック７０５が真偽値のみを出力することに鑑みると、入力値ブロック７０１および７０２の精度や値範囲を維持するパラメータを選択する必要はない。したがって比較ブロック７０５のスケーリングパラメータがあらかじめ与えられていない場合は、制御ソフトウェアを実行する際のリソース使用量ができる限り小さくなるように、精度および値範囲ができる限り小さいスケーリングパラメータ（例えばＵｉｎｔ４、ビットレート１など）を採用する。
【００７４】
＜本発明のまとめ＞
本発明に係る制御ソフトウェア開発プログラム１４０は、スケーリングパラメータがあらかじめ与えられていない機能ブロックについては、制御モデルに対する入力値の精度や値範囲を当該制御モデル内部において維持すべきか否かに基づき、スケーリングパラメータを自動生成する。これにより、制御モデルの更新にともなって実装モデルを更新する際のスケーリング工程を自動化することができる。
【００７５】
＜本発明の変形例について＞
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【００７６】
図６〜図７において、機能ブロック間の接続関係に基づきスケーリングパラメータを自動生成する例を説明したが、その他の制御モデルの構成においても、入力値の精度や値範囲を制御モデル内部で維持すべきか否かを機能ブロック間の接続関係に基づき判断できるのであれば、本発明と同様の効果を発揮することができる。具体的には、制御モデルに対する入力値の精度を値範囲が、制御モデル内の機能ブロックの出力値において維持されている場合は、当該機能ブロックのスケーリングパラメータとして入力値の精度と値範囲を維持できるようなものを選択し、維持されていない場合は使用リソースをできる限り抑えるようなものを選択する。
【００７７】
ステップＳ５０９において、スケーリングチェックプログラム１４６は、例えばチェックに違反した機能ブロックの色を変えるなどしてチェック結果を画面表示により報告することもできる。あるいはチェック結果を記述したレポートをデータファイルとして出力することもできる。
【００７８】
スケーリングパラメータデータベース１３４は、例えば上下限値制限処理の有無など、図２で説明したパラメータ以外の情報を併せて保持することもできる。また各フィールドを複数のデータテーブルに分割して保持することもできる。
【００７９】
パス１３４１は図２で説明した表記形式に限られるものではなく、例えば正規表現などの検索式によって各機能ブロックを特定することもできる。
【００８０】
上記各構成、機能、処理部、処理手段等は、それらの一部や全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【符号の説明】
【００８１】
１００：コンピュータ、１１１：入力装置、１１２：ディスプレイ、１１３：記憶装置、１１４：ＲＡＭ、１１５：ＲＯＭ、１２０：ＣＰＵ、１３１：制御モデル、１３２：データ辞書、１３３：実装モデル、１３４：スケーリングパラメータデータベース、１４０：制御ソフトウェア開発プログラム、１４１：制御モデル編集プログラム、１４２：データ辞書編集プログラム、１４３：実装モデル編集プログラム、１４４：自動スケーリングプログラム、１４５：スケーリングパラメータ書き出しプログラム、１４６：スケーリングチェックプログラム、１４７：オートコード生成プログラム。
【図１】
2017016416.tif 000003
【図２】
2017016416.tif 000004
【図３】
2017016416.tif 000005
【図４】
2017016416.tif 000006
【図５】
2017016416.tif 000007
【図６】
2017016416.tif 000008
【図７】
2017016416.tif 000009