(57)【要約】      （修正有）【課題】モデルベース開発を実現するオートコーディングの利便性向上と、生産性向上を図る。【解決手段】コントローラ開発ツールは、モデルによって表現される処理を実現するソースコードが生成されるコントローラ開発ツールであって、モデルをソースコード生成可能なブロックを組み合わせたライブラリモデル８Ａとして記述し、このライブラリモデル８Ａや、オートソースコードなどから実装ソースファイル４を生成するインターフェイス手段を有する。【選択図】図１
2012074066.tif 000002
【特許請求の範囲】
【請求項１】
モデル動作プログラムおよびソースコード生成プログラムに対応したモデルで構成されるライブラリモデルと、
固定小数点あるいは浮動小数点でソースコードを生成するスケーリング情報を管理するスケーリング管理と、
前記ソースコード生成プログラムから生成されたソースコード、および、前記モデルと前記スケーリング情報と前記モデルに設定されている初期値情報とを用いて初期化処理する複数の初期化関数と、
前記ライブラリモデルと、前記スケーリング管理と、前記初期化関数とを基に、前記モデル間の情報の入出力関係を示す制御モデルを反映するモデル更新と、
前記制御モデルを基に、コード生成を行うことによって、中間のソースコードであるオートソースコードを生成するソースコード生成と、
前記モデルのパス情報、前記初期値情報および前記ライブラリモデルのストレージクラス情報を含むパッケージング情報と、
を用いて、前記オートソースコードから実装するソースファイルを生成するパッケージングを行うインターフェイス手段を有することを特徴とするコントローラ開発ツール。
【請求項２】
予め作成されているオートソースコードと、
モデル動作プログラムおよびソースコード生成プログラムに対応したモデルで構成されるライブラリモデルと、
固定小数点あるいは浮動小数点でソースコードを生成するスケーリング情報を管理するスケーリング管理と、
前記モデルのパス情報、条件毎における初期値情報および前記ライブラリモデルのストレージクラス情報を含むパッケージング情報と、
を用いて、前記オートソースコードから実装するソースファイルを生成するパッケージングを行うインターフェイス手段を有することを特徴とするコントローラ開発ツール。
【請求項３】
請求項１または請求項２に記載のコントローラ開発ツールにおいて、
前記モデルの操作ウインドウに、出力信号の符号有り・無しを選択する機能を有することを特徴とするコントローラ開発ツール。
【請求項４】
請求項１または請求項２に記載のコントローラ開発ツールにおいて、
前記モデルの操作ウインドウに、出力信号のスケーリング名称を設定する機能を有することを特徴とするコントローラ開発ツール。
【請求項５】
請求項１または請求項２に記載のコントローラ開発ツールにおいて、
前記モデルの操作ウインドウに、出力信号のスケーリングを、出力信号のスケーリング名称に対して、桁上げする量を設定する機能を有することを特徴とするコントローラ開発ツール。
【請求項６】
請求項１または請求項２に記載のコントローラ開発ツールにおいて、
前記モデルの操作ウインドウに、出力信号のスケーリング名称をプルダウンで選択する機能を有することを特徴とするコントローラ開発ツール。
【請求項７】
請求項１または請求項２に記載のコントローラ開発ツールにおいて、
前記モデルの操作ウインドウに、選択した出力信号のスケーリング名称のスケール値を表示する機能を有することを特徴とするコントローラ開発ツール。
【請求項８】
請求項１または請求項２に記載のコントローラ開発ツールにおいて、
前記モデルに設定するスケーリング名称と、符号有り・無しと、ビット長と、スケーリング値と、を設定する機能を有することを特徴とするコントローラ開発ツール。
【請求項９】
請求項１または請求項２に記載のコントローラ開発ツールにおいて、
前記モデルに設定された数値名称と、数値と、スケール名称と、スケール値と、説明情報と、ストレージクラスと、モデルパスの情報と、を取り出す機能を有することを特徴とするコントローラ開発ツール。
【請求項１０】
請求項１または請求項２に記載のコントローラ開発ツールにおいて、
前記モデルが、前記ソースコードを生成可能なブロックを組み合わせたライブラリモデルによって構成されることを特徴とするコントローラ開発ツール。
【請求項１１】
請求項１または請求項２に記載のコントローラ開発ツールを用いて開発されることを特徴とするモータドライブシステムを有する機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラ開発ツールとそれを利用して開発したモータドライブシステムを有する機器に関する。
【背景技術】
【０００２】
従来より、例えば特許文献１には、車両のエンジンＥＣＵのためのプログラムにはおいては、開発者が直接プログラムのソースコードを記述せず、目的とするプログラムの機能を作成が簡易で視認性の良い「モデル」という形態で記述する場合が開示されている。ここで、開発者は、このモデルに対応したプログラム開発環境がインストールされたパーソナルコンピュータ等を用いて、モデルから自動的にソースコードを生成する。モデルからソースコードを生成する機能を実現するためのプログラムは、コード生成ツールと呼ばれる。コード生成ツールは、モデル開発環境に組み込まれている場合が多い。モデルからソースコードを生成するようなプログラム開発は、モデルベース開発と呼ばれる。また、モデルから自動的に生成されたソースコードをオートコードと呼ばれ、モデルからソースコードを自動生成することはオートコーディングと呼ばれる。
【０００３】
モデルベース開発に対応したプログラム開発環境としては、例えば、MathWorks（登録商標）社のＭＡＴＬＡＢ（登録商標）がある。ＭＡＴＬＡＢ（登録商標）においては、ユーザ（開発者）はＭＡＴＬＡＢ（登録商標）の一機能であるSimulink（登録商標）を用いて目的とするプログラムのモデルを記述する。モデルは、ブロックと呼ばれる機能単位および機能単位間の入出力関係を示す結線の組み合わせとして記述される。すなわち、複数のブロックが結線によってつなぎ合わされた集合体がモデルである。
【０００４】
モデルベース開発で必須のオートコードは、モデルからソフトウエアを自動的に生成するものであり、１）モデルを作る際の制御設計、２）モデルからソフトウエアを生成するソフト設計、３）オートコードを実現するプログラム開発環境の活用、の３つで高いスキルが必要である。
【０００５】
しかしながら、３つの高いスキルを習得するためには反対に非常に多くの時間を要する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３３２３３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
標準ブロックを用いて制御設計すれば自由度は高いが、ソフト設計とソフト実装の際に手直しが多くなり、ソフト設計とソフト実装を考慮した規定ブロックを用いると、制御設計時の自由度が低くなる問題がある。
【０００８】
本発明は、上記課題を解決し、制御ソフトの生産性を向上させることを目的とする。
【０００９】
また、制御設計あるいはソフト設計とソフト実装のどちらかに偏った利便性の場合、それぞれの設計プロセスによる属人性が影響して品質低下の危険性が増す。
【００１０】
本発明は、上記課題を解決し、制御ソフトの品質低下を抑制することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一の手段は、ライブラリモデルや、それを管理するスケーリング管理などから制御モデルを生成し、その制御モデルからオートソースコードを生成すると、パッケージング情報を用いてそのオートソースコードをパッケージングするインターフェイス手段を設けることにより、上記目的を達成する。
また、本発明の他の手段は、予め作成されているオートソースコードと、ライブラリモデルと、パッケージング情報とを用いてオートソースコードをパッケージングするインターフェイス手段を設けることにより、上記目的を達成する。
【発明の効果】
【００１２】
本発明のソフトウエア開発環境は、制御ソフトの生産性を向上させ、制御ソフトの品質低下を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】Ｖ字型開発の流れとそれに対応する本発明の位置付けを示した説明図である。（実施例１）
【図２】パーソナルコンピュータの構成を示す説明図である。（実施例１）
【図３】パーソナルコンピュータ２１のＣＰＵ２３が実行するプログラムの構成を示す説明図である。（実施例１）
【図４】ライブラリモデル３４の設定画面４１の一例を示す説明図である。（実施例１）
【図５】ライブラリモデル外観５１とその内部モデル５２と設定画面５３を示す説明図である。（実施例１）
【図６】ライブラリモデルを用いて作成した制御モデルの一例を示す説明図である。（実施例１）
【図７】スケーリング管理ツールの設定画面の一例を示す説明図である。（実施例１）
【図８】パッケージング動作概念の一例を示す説明図である。（実施例１）
【図９】実装するソースファイルの一例を示す説明図である。（実施例１）
【図１０】ライブラリモデルおよびブロックから抽出する情報とパッケージング情報の一例を示す説明図である。（実施例１）
【図１１】ライブラリモデルおよびブロックから抽出した情報の一覧の一例を示す説明図である。（実施例１）
【図１２】パッケージング動作概念の別の一例を示す説明図である。（実施例１）
【図１３】パッケージング動作概念の別の一例を示す説明図である。（実施例１）
【図１４】パッケージング動作概念の別の一例を示す説明図である。（実施例１）
【図１５】パッケージング動作概念の別の一例を示す説明図である。（実施例１）
【図１６】パッケージング動作概念の別の一例を示す説明図である。（実施例１）
【図１７】パッケージング動作概念の別の一例を示す説明図である。（実施例１）
【図１８】従来からあるＶ字型開発の流れと開発プロセスを示す説明図である。
【発明を実施するための形態】
【００１４】
以下、本発明の特徴について説明する。
【００１５】
本発明のコントローラ開発ツールは、モデルによって表現される処理を実現するソースコードが生成されるコントローラ開発ツールであって、モデルをソースコード生成可能なブロックを組み合わせたライブラリモデルとして記述し、ソースコードをコントローラ用にスケーリング管理して生成し、複数の関数と合わせてソースファイルにするインターフェイス手段を有することを特徴とする。
【００１６】
また、モデルの操作ウインドウにシミュレーションとソースコードの生成に必要な情報を分けて配置することを特徴とし、出力信号の符号有り・無しを選択する機能を有することを特徴とする。
【００１７】
さらに、モデルの操作ウインドウに、出力信号のスケーリング名称を設定する機能，出力信号のスケーリングに対して桁上げする量を設定する機能，出力信号のスケーリングをプルダウンで選択する機能，選択した出力信号のスケーリングのスケール値を表示する機能を有することを特徴とする。
【００１８】
また、モデルに設定するスケーリング名称と、符号有り・無しと、ビット長と、スケーリング値と、を設定する機能を有し、モデルに設定された数値名称と、数値と、スケール名称と、スケール値と、説明情報と、ストレージクラスと、モデルパスの情報と、を取り出す機能を有することを特徴とする。
【００１９】
また、本発明は、モデルとスケーリング管理情報と条件毎における初期値情報とを基に、ソースコードを生成し、ソースコードに対してパッケージング処理した後、実装するためのソースファイルを出力する機能を有し、モデルが、ソースコードを生成可能なブロックを組み合わせたライブラリモデルによって構成されることを特徴とする。
【００２０】
次に、本発明は、ディスプレイと、ＣＰＵと、入力装置と、記憶装置と、を有する電子計算機を用いて、モデル作成プログラムと、モデル動作プログラムと、ソースコード生成プログラムと、ライブラリモデルと、スケーリング管理と、パッケージングと、を実行するものであって、モデルによって表現される処理を実現するソースコードが生成されるコントローラ開発ツールであって、モデルの操作ウインドウに、シミュレーションと、ソースコード生成に必要な情報を分けて配置することを特徴とする。
【００２１】
さらに、本発明は、前述のコントローラ開発ツールを用いて開発する機器、具体的にはモータドライブシステムであることを特徴とする。
【００２２】
以下、本発明の詳細を図面を用いて詳細に説明する。なお、本実施例では、組み込みコントローラの一例としてモータドライブコントローラを実施例として扱う。
【実施例１】
【００２３】
図１は、本実施形態に係わるソフトウエア開発プロセスを示す。本発明のソフトウエア開発プロセスは、制御設計１した後、制御ソフト開発環境８のひとつであるライブラリモデル８Ａを用いて、制御シミュレーションモデル構築２する。その後、制御ソフト開発環境８のひとつであるスケーリング管理８Ｂを用いて固定小数点演算に必要なスケーリングを行う。その後、オートコーディング３により自動生成したオートコードに対して、制御ソフト開発環境８のひとつであるパッケージング８Ｃを施して実装ソースファイル４を作成する。
【００２４】
図２は、これらの処理を実行するパーソナルコンピュータ２１の構成を示す。このパーソナルコンピュータ２１は、ディスプレイ２２，ＣＰＵ２３，入力装置２４，記憶装置２５，ＲＡＭ２６，ＲＯＭ２７等から構成される。
【００２５】
ディスプレイ２２は、ＣＰＵ２３の出力情報をユーザ（開発者）に対して映像で表示する。
【００２６】
ＣＰＵ２３は、パーソナルコンピュータ２１に電源が投入されることによって起動すると、ＲＯＭ２７から所定のブートプログラムを読み出して実行し、このブートプログラムに規定されるオペレーティングシステム（以下ＯＳと記す）その他のプログラムを記憶装置２５から読み出して実行することにより、起動処理を行う。起動処理以後、電源が遮断されるまで、ＣＰＵ２３は、入力装置２４からの信号、ＯＳによって定められたスケジュール等に基づいて記憶装置２５に記録されている各種プログラムを当該ＯＳ上のプロセスとして実行する。また、上記起動処理におけるプロセスにおいて、ＣＰＵ２３は必要に応じて入力装置２４からの信号入力を受け付け、またディスプレイ２２に映像を出力し、またＲＡＭ２６，記憶装置２５に対してデータの読み出し／書き出しの制御を行う。
【００２７】
入力装置２４は、キーボード，マウス，音声入力等から構成され、ユーザ（開発者）が操作することによって、その操作に応じた信号をＣＰＵ２３に出力する。
【００２８】
記憶装置２５は、読み出し，書き込み可能な不揮発性メモリであり、当該各種プログラムが記憶されており、後述するモデルや制御ソフト開発環境が記憶されている。
【００２９】
ＲＡＭ２６は、読み出し，書き込み可能な揮発性メモリであり、ＲＯＭ２７は読み出し専用の不揮発性メモリである。
【００３０】
ＲＡＭ２６は、ＣＰＵ２３がＲＯＭ２７，記憶装置２５に記憶されたプログラムを実行する際にそのプログラムや演算結果を一時的に保存する記憶領域、および作業用のデータを一時的に保存するための記憶領域として用いられる。
【００３１】
ＲＯＭ２７は、ＣＰＵ２３が読み出して実行するプログラム等があらかじめ記憶されている。
【００３２】
図３は、パーソナルコンピュータ２１のＣＰＵ２３が実行するプログラムの構成を示す。ＣＰＵ２３はモデル作成プログラム３１，モデル動作プログラム３２，ソースコード生成プログラム３３，ライブラリモデル３４，スケーリング管理３５，パッケージング３６等を実行する。
【００３３】
なお、以降は、プログラムを実行することによるＣＰＵ２３の動作をその実行されるプログラム自体の動作であるとして説明する。
【００３４】
モデル作成プログラム３１は、記憶装置２５に記憶されているプログラムを読み出し、ユーザ（開発者）によるモデル作成を可能にする。
【００３５】
モデルは、所定の規則に基づいて信号を出力することを表現するブロックおよびそれらブロック間の信号の入出力の繋がりを表現する結線等からなり、モデル作成プログラム３１に予め設けられているブロックと、後述するライブラリモデル３４に記憶されているモデルとから作成する。そして、このモデルは、記憶装置２５に記憶されるようになっている。
【００３６】
なお、モデル作成プログラム３１としては、例えばＭＡＴＬＡＢ（登録商標）上で動作するSimulink（登録商標）と呼ばれるプログラムがある。
【００３７】
モデル動作プログラム３２は、上記作成したモデルを動作させるプログラムである。
【００３８】
なお、モデル動作プログラム３２としては、例えばＭＡＴＬＡＢ（登録商標）上で動作するSimulink（登録商標）と呼ばれるプログラムがある。
【００３９】
ソースコード生成プログラム３３は、前記作成したモデルによって表現される信号処理を実現するソースコードを生成する。
【００４０】
ライブラリモデル３４は、あらかじめ、モデル動作プログラム３２およびソースコード生成プログラム３３とスケーリング管理３５に対応したモデルで構成されたモデルの集まりである。
【００４１】
図４は、ライブラリモデル３４の設定画面４１の一例を示す。設定画面４１では、モデル動作プログラム３２でユーザ（開発者）が設定変更する最低限必要な項目に絞った設定条件と、ソースコード生成プログラム３３でユーザ（開発者）が設定変更する最低限必要な項目に絞った項目にすることで、属人性による人為的にミスを抑制することができる。
【００４２】
設定画面４１は、定数出力を実現するライブラリモデル（Constan）の例で、定数を設定する設定欄のほか、コード生成に関連して、定数タイプとして、“定数（ＲＯＭ）”や“変数（ＲＡＭ）”への設定する機能を設けてある。（これは、ＭＡＴＬＡＢ用語でいうところのSimulinkParameterやSimulinkSignalへの設定機能）また、出力データタイプとして、“逆伝搬による継承”のほか、“ダイアログにより指定”で、出力スケーリング名称を設定する機能も設けてある。そのほか、出力スケーリング名称が示す出力スケーリングに対して、精度良く出力（高い分解能で出力）するために、“出力スケーリングに対する桁上げシフト量”として２のべき乗（シフト量）の単位で設定する機能を設けている。（これは、ＭＡＴＬＡＢ用語でいうところのNumericTypeへの設定機能）また、“出力スケーリング名称”は、新たな名称を登録することに加えて、既にNumericTypeとして出力スケーリング名称が既に登録されている場合は、その登録してある出力スケーリング名称をプルダウン表示して、その中から選択できる機能を設けている。
【００４３】
これにより、１）シミュレーションに必要な情報とコード生成に必要な情報を分けて明示、２）シミュレーションに必要な情報の設定機能、３）コード生成に必要なＲＯＭ・ＲＡＭ情報、４）コード生成に必要なスケーリング情報、を属人性による人為的ミスを抑制して効率的に設定，確認することができる。
【００４４】
また、設定画面４２は、加算を実現するライブラリモデル（Ａｄｄ）の例で、“整数オーバーフローで飽和”では、加算時の演算オーバーフローに対する対処法を設定する機能で、“出力信号は入力信号に合わせて符号を付与”では、加算するどれかの入力スケールが（数値として正・負を取り得る）符号付きの場合、その出力のスケールには、符号を付与する機能を設けてある。また、出力範囲が入力範囲により限定される場合や、処理の都合上、符号無しで処理したい場合を考慮して、出力のスケールには、強制的に符号無しとする機能も設けてある。
【００４５】
これにより、どちらかの入力信号が負の値を取り得る時、加算した値は負の値を取り得るため、ユーザが特別に設定を変更しない場合には入力信号のどちらかが符号付きの場合には、演算結果を考慮して出力信号を自動的に符号付きにする。また、どちらかの入力信号が負の値を取り得る時でも、加算した値が必ず正の値しか取らないことが確定している場合には、モデルを変更することなくユーザ（開発者）の設定により強制的に符号なしで演算結果を出力信号として出力することができる。
【００４６】
さらに、設定画面４３は、乗算を実現するライブラリモデル（Product）の例で、“整数オーバーフローで飽和”では、乗算時の演算オーバーフローに対する対処法を設定する機能で、“出力スケーリング名称”では、設定したスケーリング名称で定義したスケーリングを指定する機能で、“出力スケーリングに対する桁上げシフト量”では、前記、“出力スケーリング名称”で定義したスケーリングに対して分解能を調整するスケーリングのシフト量を設定できる機能で、“出力信号は入力信号に合わせて符号を付与”では、乗算するどれかの入力スケールが（数値として正・負を取り得る）符号付きの場合、その出力のスケールには、符号を付与する機能を設けてある。また、出力範囲が入力範囲により限定される場合や、処理の都合上、符号無しで処理したい場合を考慮して、出力のスケールには、強制的に符号無しとする機能も設けてある。また、“出力スケーリング名称”は、新たな名称を登録することに加えて、既にNumericTypeとして出力スケーリング名称が既に登録されている場合は、その登録してある出力スケーリング名称をプルダウン表示して、その中から選択できる機能を設けている。また、図面中では表示を省略しているが、登録しているスケーリング名称を選択した場合、符号の有無やビット長や分解能など、選択したスケーリング名称で設定されているスケール値を表示する機能も設けている。また、選択したスケーリング名称の設定を設定画面上で変更することができる機能も設けている。
【００４７】
これにより、異なるスケーリングの入力を乗算した場合の出力スケーリングを指定することができる。また、出力スケーリング名称に対して、相対的に演算精度を高めた状態で出力スケーリングを調整できるため、乗算時の出力スケーリングの自由度が広がるとともに、後の演算に対して演算精度良く信号を出力することができる。さらに、どちらかの入力信号が負の値を取り得る時、乗算した値は負の値を取り得るため、ユーザ（開発者）が特別に設定を変更しない場合には入力信号のどちらかが符号付きの場合には、演算結果を考慮して出力信号を自動的に符号付きにする。また、どちらかの入力信号が負の値を取り得る時でも、乗算した値が必ず正の値しか取らないことが確定している場合には、モデルを変更することなくユーザ（開発者）の設定により強制的に符号なしで演算結果を出力信号として出力することができる。また、スケーリング名称のプルダウンから選択することができるため、スケーリング名称のスペル間違いなど、人為的なミスが少なく操作性，生産性を向上できる。また、スケーリング名称で設定されているスケール値を設定画面上で確認できるため、視認性，生産性が向上する。また、スケーリング名称で設定されているスケール値を設定画面上で変更できるため、操作性，生産性が向上する。
【００４８】
図５は、一次遅れを実現するライブラリモデル（Filter）の例で、ライブラリモデル外観５１とその内部モデル５２と設定画面５３を示す。ライブラリモデル外観５１は、設定画面５３で設定した情報が表示される機能を付与している。
【００４９】
これにより、設定画面５３を開くことなくライブラリモデル外観５１からその時点での設定情報を知ることができ、ユーザ（開発者）の視認性・作業性を向上することができる。
【００５０】
内部モデル５２は、複数のブロックあるいはモデルで構成されており、ソースコード生成を考慮して、ブロックあるいはモデルの１つ以上の箇所にスケーリング情報を設定するブロックが存在する。
【００５１】
また、内部モデル５２を構成している複数のブロックには、設定画面で設定した情報が、NumericTypeやSimulinkParameterやSimulinkSignal情報として設定されるようにＭＡＴＬＡＢ言語によるプログラムを用いた仕掛けが施されている。（本実施例ではＭＡＴＬＡＢ言語を用いたが、設定画面で設定した情報が複数のブロックに設定するために他のプログラム言語や情報伝達手段を用いても良い）。
【００５２】
これにより、内部モデルを構成する複数のブロックに設定する情報を設定画面に纏めることができるため、内部モデルにおける各ブロックをそれぞれ開いて設定する作業（手間）が不要となる。また、内部モデルの各ブロックに設定する情報をライブラリモデルの設定画面に纏めることで、ユーザ（開発者）は集中した情報管理ができるため、制御モデルの可読性（視認性），保守性，作業性，生産性が向上する。
【００５３】
これにより、モデル動作プログラム３２およびソースコード生成プログラム３３とスケーリング管理３５に対応した上で、ユーザ（開発者）の視認性，ユーザ（開発者）の視認性・作業性を向上することができる。
【００５４】
つまり、これらにより、モデル作成プログラム３１におけるモデル作成を迅速かつ、比較的容易に行うことができる。また、ソースコード生成プログラム３３に対応していることからソースコード生成が確実にかつ効率よくコード生成できる。さらに、スケーリング管理３５に対応していることで、モデル変更することなくスケーリングを変更することができる。
【００５５】
図６は、前記ライブラリモデルを用いて作成したモータドライブシステムを実現する制御モデルの一例である。
【００５６】
制御モデル６１は、出力電圧Sig.６１ｄを算出するモデルで、乗算モデル６１ａを用いて電流値と抵抗値から算出した電圧Sig.６１ａと、乗算モデル６１ｂと乗算モデル６１ｃを用いて角速度値とインダクタンス値と電流値から算出した電圧Sig.６１ｃとから、加算モデル６１ｄを用いて電圧Sig.６１ｄを出力電圧として出力する。
【００５７】
ここで、物理的に異なる単位の演算を行う、乗算モデル６１ａ，６１ｂ，６１ｃで、その出力する物理単位に合わせてスケール情報（スケール名称含む）を設定する。また、加算モデル６１ｄの入力にあたる乗算モデル６１ａと乗算モデル６１ｃの出力は、スケール値（スケール名称）に対する桁上げする設定にしている。これにより、コード生成した場合の加算モデル６１ｄで演算する際に演算精度を向上した状態で、演算結果を出力することができる。なお、各モデルの下部にはそれぞれ、スケール情報（スケール名称）が表示しており、設定画面を開くことなく、情報を確認することができる。これにより、視認性，作業性，生産性を向上できる。
【００５８】
制御モデル６２は、所定の値を前回の値に加算して出力するモデルで、所定の値が設定された定数モデル６２ａと前回値モデル６２ｃを加算モデル６２ｂで加算して出力するモデルである。
【００５９】
ここで、定数モデル６２ａでは所定の値を設定した設定値情報が設定されている。また、前回値モデル６２ｃでは初期値情報とコード生成した場合の変数名情報が設定されている。これにより、コード生成した場合の設定値情報に対応する数値や定数名称の他、初期値情報に対応する数値や定数名称、変数名情報に対応する変数名を指定することができる。なお、各モデルの下部にはそれぞれ、スケール情報（スケール名称）が表示しており、設定画面を開くことなく、情報を確認することができる。これにより、視認性，作業性，生産性を向上できる。
【００６０】
これらのように、予めコード生成を考慮して作成したライブラリモデルを利用して制御モデルを構成することで、演算精度良くかつ、設定する情報の増加を防ぎ、可読性，保守性，作業性，生産性を向上できる。
【００６１】
スケーリング管理３５は、モデル動作プログラム３２でモデル動作させる際およびソースコード生成プログラム３３でソースコードを生成する際に、固定小数点あるいは浮動小数点でコード生成するスケーリング情報を提供管理する。
【００６２】
図７は、スケーリング管理３５の設定画面７１の一例を示す。設定画面７１では、モータドライブに必要な物理量（物理単位）である電流，電圧，周波数，抵抗等々に対して、固定小数点・浮動小数点を示す設定や固定小数点演算時における、そのビット長や符号の有無等、１bitあたりの物理単位量を表す分解能、いわゆるスケーリング値を設定・管理する。
【００６３】
なお、図面上記載を省略しているが、本実施例では、１ボタンですべてのスケーリングを浮動小数点（double）型に切り替える機能も設けた。
【００６４】
これにより、モデル動作プログラム３２に必要となる情報やソースコード生成プログラム３３に必要となる情報を管理することができる。また、これらの情報を管理することで、ユーザ（開発者）の視認性・作業性を向上することができる。さらに、モデルを変更することなく、包括的にスケーリングを変更することができるため、ユーザ（開発者）の作業性が大幅に向上する。
【００６５】
また、本スケーリング管理ツールで設定した情報をスクリプトｍファイルとしてファイル出力して、そのｍファイルを実行することで、ＭＡＴＬＡＢ／Simulink上のモデルやブロックにNumericTypeなどのスケール情報を受け渡すことができる機能を設けた。
【００６６】
これにより、ＭＡＴＬＡＢ／Simulink上でモデルやブロックを開いてスケール値を設定することや、ＭＡＴＬＡＢ／Simulink上のスケール設定画面を操作することなく、スケール値の包括的に管理を行うことができ、ユーザ（開発者）の視認性，操作性，作業性，生産性を大幅に向上することができる。
【００６７】
つまり、これらにより、作成した前記モデルを変更することなく、スケーリングを変更して製品毎に組み込みシステムに適したソースコードを生成することができ、モデルの再利用性，操作性，作業性，生産性を大幅に向上することができる。
【００６８】
パッケージング３６は、ソースコード生成プログラム３３から生成されたソースコードの他に、前記モデルに含まれる初期値の情報を初期化処理として追加したり、製品毎に初期化処理を生成したり、製品毎に合わせて出力値毎に初期化処理を作成する。
【００６９】
モータドライブシステムでは、制御モデルに設定されている初期値を電源投入時に反映させるべき場合や、インバータ停止あるいはモータ停止時に反映させるべき場合など、製品毎、制御内容毎に異なる。そのため、ＭＡＴＬＡＢ／Simulinkで生成されるオートソースコードの初期化関数だけでは、最適に実装するソースファイルを得ることができない。そのため、本実施例では、ＭＡＴＬＡＢ／Simulinkで生成されるオートソースコードに対して、電源投入時の初期化関数や、インバータ停止あるいはモータ停止時の初期化関数を生成して、実装するソースファイルを得る処理として、パッケージング処理を施した。
【００７０】
図８は、パッケージング動作概念の一例を示す。ユーザ（開発者）が作成した制御モデル８２と、スケーリング管理情報８３と、条件毎における初期値情報８４等から、パッケージング処理８１を行い、実装するソースファイル８５を生成する。
【００７１】
図９は、パッケージング処理を施した後の実装するソースファイルの概要である。制御モデルの動作を示す処理関数９１と、電源投入時に実行する初期化関数９２と、インバータ停止時に実行する初期化関数９３とモータ停止時に実行する初期化関数９４である。
【００７２】
これにより、実装するソースファイルの１つのモジュールとし、それぞれの関数を適切なタイミングで関数呼び出しすることで、ソフトウエア管理の利便性，作業性，生産性が向上する。
【００７３】
図１０は、初期化関数を作成する際に、モデルおよびブロックから抽出する情報とそのモデルとブロックの一例である。各モデルやブロックからは、モデルパス情報をはじめ、ライブラリモデルに設定したストレージクラス情報までを抽出して、その情報を基に、初期化関数で処理する内容をパッケージング処理によって実行し、実装するソースファイル中の初期化関数として生成した。
【００７４】
図１１は、抽出した各情報をパッケージング情報としてファイル出力した一例である。本情報をパッケージング処理時に利用して実装するソースファイルを生成する。
【００７５】
また、実装するソースファイルの生成は、制御モデルと各種情報を基に以下に示す数種類のプロセスで実施した。
【００７６】
図１２は、パッケージング動作概念の別の一例を示す。ユーザ（開発者）が作成した制御モデルと制御モデルの初期値情報１２０２と、スケーリング管理情報１２０３等から、パッケージング処理１２０１を行い、実装するソースファイル１２０４を生成する。
【００７７】
図１３は、パッケージング動作概念の別の一例を示す。ユーザ（開発者）が作成したスケーリング管理情報１３０１と条件毎における初期値情報１３０２を制御モデル１３０３へ反映させて、その後、制御モデルからオートソースコード１３０４を生成して、パッケージング処理１３０５を施して、実装するソースファイル１３０６を生成する。
【００７８】
これにより、制御モデルを変更することなく、コード生成する条件を変えてコード生成した後、パッケージング処理を施して実装するソースファイルを作ることができる。
【００７９】
図１４は、パッケージング動作概念の別の一例を示す。ユーザ（開発者）が作成した制御モデルと制御モデルの初期値情報１４０１と、スケーリング管理情報１４０２から、オートソースコード１４０３を生成し、パッケージング処理１４０４を施して、実装するソースファイル１４０５を生成する。
【００８０】
これにより、制御モデルと制御モデルの初期値情報は変更することなく、スケーリング管理情報を変更することで、コード生成する条件を変えてコード生成した後、パッケージング処理を施して実装するソースファイルを作ることができる。
【００８１】
図１５は、パッケージング動作概念の別の一例を示す。ユーザ（開発者）が作成したスケーリング管理情報１５０１と条件毎における初期値情報１５０２を制御モデル１５０３へ反映し、オートソースコード１５０４を生成し、パッケージング情報１５０５に合わせて、パッケージング処理１５０６を行い、実装するソースファイル１５０７を生成する。
【００８２】
これにより、制御モデルを変更することなく、スケーリング管理情報と初期値情報を変更することで、コード生成する条件を変えてコード生成した後、パッケージング情報処理を変更することなく、パッケージング情報を変更することで、パッケージング条件を変えて実装するソースファイルを作ることができる。
【００８３】
図１６は、パッケージング動作概念の別の一例を示す。ユーザ（開発者）が作成した制御モデルと制御モデルの初期値情報１６０１と、スケーリング管理情報１６０２から、オートソースコード１６０３を生成し、パッケージング情報１６０６に合わせて、パッケージング処理１６０４を行い、実装するソースファイル１６０５を生成する。
【００８４】
これにより、制御モデルと制御モデルの初期値情報は変更することなく、スケーリング管理情報を変更することで、コード生成する条件を変えてコード生成した後、パッケージング情報処理を変更することなく、パッケージング情報を変更することで、パッケージング条件を変えて実装するソースファイルを作ることができる。
【００８５】
図１７は、パッケージング動作概念の別の一例を示す。ユーザ（開発者）が作成したオートソースコード１７０１に対して、スケーリング管理情報１７０２と条件毎における初期値情報１７０３とパッケージング情報１７０４に合わせて、パッケージング処理１７０５を行い、実装するソースファイル１７０６を生成する。
【００８６】
これにより、制御モデルがなくても、パッケージングの際の初期値とパッケージング情報を変更することで、パッケージング条件を変えて実装するソースファイルを作ることができる。
【００８７】
これにより、モータドライブシステムにおけるコントローラの電源投入初期化や、モータ停止時の初期化や、インバータ停止時の初期化等の動作に合わせた初期化処理を追加した上で実装ソースファイルを生成することができる。
【００８８】
なお、前記モデル作成プログラム３１，前記モデル動作プログラム３２，前記ソースコード生成プログラム３３，前記ライブラリモデル３４，前記スケーリング管理３５，前記パッケージング３６は、記憶装置２５に対して読み出し／書き込みを行うことができる。
【００８９】
また、本組み込みコントローラ開発ツールを用いて機器の開発を行えば、物理現象の再現や組み込みコントローラの動作を再現することができるため、信頼性の高い機器を製作することができる。
【００９０】
また、本組み込みコントローラ開発ツールを用いてモータドライブシステムの開発を行えば、モータの複雑な挙動に対するコントローラの反応を再現することができるため、より良好なコントローラの開発が可能になり、信頼性の高いモータドライブシステムを開発することができる。
【００９１】
なお、モータドライブシステムには、モータを使って冷媒を循環するルームエアコンやパッケージエアコンや冷蔵庫やクリーナーやポンプ，電気自動車，燃料電池自動車ハイブリッド自動車などがある。
【符号の説明】
【００９２】
１      制御設計
２      制御シミュレーションモデル構築
３      オートコーディング
４      実装ソースファイル
５      実装
６      ソフト検証
７      制御検証
８      制御ソフト開発環境
８Ａ    ライブラリモデル
８Ｂ    スケーリング管理
８Ｃ    パッケージング
２２    ディスプレイ
２３    ＣＰＵ
２４    入力装置
２５    記憶装置
２６    ＲＡＭ
２７    ＲＯＭ
３１    モデル作成プログラム
３２    モデル動作プログラム
３３    ソースコード生成プログラム
３４    ライブラリモデル
３５    スケーリング管理
３６    パッケージング
【図１】
2012074066.tif 000003
【図２】
2012074066.tif 000004
【図３】
2012074066.tif 000005
【図４】
2012074066.tif 000006
【図５】
2012074066.tif 000007
【図６】
2012074066.tif 000008
【図７】
2012074066.tif 000009
【図８】
2012074066.tif 000010
【図９】
2012074066.tif 000011
【図１０】
2012074066.tif 000012
【図１１】
2012074066.tif 000013
【図１２】
2012074066.tif 000014
【図１３】
2012074066.tif 000015
【図１４】
2012074066.tif 000016
【図１５】
2012074066.tif 000017
【図１６】
2012074066.tif 000018
【図１７】
2012074066.tif 000019
【図１８】
2012074066.tif 000020