(57)【要約】【課題】極力簡便にＣコードを自動生成できるようにした自動コード生成方法及び自動コード生成装置を提供する。【解決手段】ＰＣ１は、SimulinkのモデルからＣ言語のソースコード（以下、Ｃコードと称す）を自動生成するツールとしてTargetLinkを用い、TargetLinkによりＣコードを自動生成不可能な未対応のSimulinkのブロック（以下、未対応ブロック）が存在するか否かを判定する（Ｓ２）。ＰＣ１は、未対応ブロックが存在すると判定されたときには未対応ブロックを抽出し未対応ブロックを含むモデルからSimulinkに備わる自動コード生成機能により未対応ブロックの前記Ｃコードを自動コード生成する（Ｓ３〜Ｓ５）。【選択図】図５
2020144509.tif 000002
【特許請求の範囲】
【請求項１】
Simulink（登録商標）のモデルからＣ言語のソースコード（以下、Ｃコードと称す）を自動生成するツールとしてTargetLink（登録商標）を用い、
前記TargetLinkにより前記Ｃコードを自動生成不可能な未対応のSimulinkのブロック（以下、未対応ブロック）が存在するか否かを判定し（Ｓ２）、
前記未対応ブロックが存在すると判定されたときには前記未対応ブロックを抽出し前記未対応ブロックを含むモデルから前記Simulinkに備わる自動コード生成機能により前記未対応ブロックの前記Ｃコードを自動コード生成する（Ｓ３〜Ｓ５）自動コード生成方法。
【請求項２】
複数の前記未対応ブロックが存在するときには、前記未対応ブロックごとに前記Ｃコードを自動コード生成する請求項１記載の自動コード生成方法。
【請求項３】
前記未対応ブロックごとに生成された前記Ｃコードを、前記TargetLinkのユーザにより自由にブロックを生成可能にするカスタムコードブロック（１３６）に登録する（Ｓ６）請求項２記載の自動コード生成方法。
【請求項４】
前記未対応ブロックを前記カスタムコードブロックに置換し、前記TargetLinkにより自動コード生成する（Ｓ７、Ｓ８）請求項３記載の自動コード生成方法。
【請求項５】
SimulinkのモデルからＣ言語のソースコード（以下、Ｃコードと称す）を自動生成するツールとしてTargetLinkを用いて自動コード生成する自動コード生成装置（１）に、
前記TargetLinkにより前記Ｃコードを自動生成不可能な未対応のSimulinkのブロック（以下、未対応ブロック）が存在するか否かを判定する（Ｓ２）手順と、
前記未対応ブロックが存在すると判定されたときには前記未対応ブロックを抽出し前記未対応ブロックを含むモデルから前記Simulinkに備わる自動コード生成機能により前記未対応ブロックの前記Ｃコードを自動コード生成する（Ｓ３〜Ｓ５）手順と、
を実行させる自動コード生成プログラム。
【請求項６】
前記未対応ブロックの前記Ｃコードを自動コード生成する（Ｓ３〜Ｓ５）手順では、
複数の前記未対応ブロックが存在するときには、前記未対応ブロックごとに前記Ｃコードを自動コード生成する請求項５記載の自動コード生成プログラム。
【請求項７】
前記未対応ブロックごとに生成された前記Ｃコードを、前記TargetLinkのユーザにより自由にブロックを生成可能なカスタムコードブロック（１３６）に登録する（Ｓ６）手順をさらに備える請求項６記載の自動コード生成プログラム。
【請求項８】
前記未対応ブロックを前記カスタムコードブロックに置換し、前記TargetLinkにより自動コード生成する（Ｓ７、Ｓ８）手順、をさらに備える請求項７記載の自動コード生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動コード生成方法、及び自動コード生成プログラムに関する。
【背景技術】
【０００２】
自動的にソースコードを生成する支援ツールが開発されており、例えば車両のエンジンＥＣＵのプログラム開発支援に用いられている。この支援ツールは、プログラムの開発者が直接ソースコードを記述することなく、目的とするプログラムの機能をより簡易的に視認性の良いモデルという形態で記述する。これにより、プログラム開発者の可読性を向上できるようになり、プログラム構造を容易に把握できる。
【０００３】
開発者は、このモデル記述用の開発環境がインストールされたワークステーション又はパーソナルコンピュータ（以下ＰＣ）等を用い、このモデルにより定義された演算処理等のシミュレーション処理を行い、ＰＣは当該モデルに応じたソースコードを自動生成する。このモデルに基づいてソースコードを自動生成するためのプログラム開発は、モデルベース開発と呼ばれている。モデルベース開発を行うためのプログラム開発環境は、例えばMATLAB（登録商標）、及び、これに付加機能を提供するSimulink（登録商標）が知られている。
【０００４】
モデルベース開発を行う場合、開発者は、例えばSimulink（登録商標）を用いてモデルを記述する。このモデルは、各種演算を示すブロックと、当該ブロック間のデータの授受を示す信号線とを、ＧＵＩ(Graphical User Interface)環境下で表現されたプログラムを示す。
【０００５】
従来モデルは、プログラミング言語から制御フローを記述する多くの機能がブロックとして取り入れられており、様々な制御構造を表現できるように開発が進められている。モデルベース開発における自動コード生成技術は、例えば特許文献１に示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１６−１１５１８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
出願人は、SimulinkのモデルからＣ言語のソースを自動生成するための支援ツールとしてTargetLink（登録商標）を用いている。しかし、TargetLinkの中にはＣ言語のソースコード（以下、Ｃコードと称する）を自動生成不可能なSimulinkのブロックが存在する。
【０００８】
TargetLinkには、ユーザにより自由にブロックを生成可能なカスタムコードブロックという特殊ブロックが用意されているが、このカスタムコードブロックに対応したSimulinkのブロックと同一動作をするＣコードを人の手により準備しなければならない。
【０００９】
Simulinkのブロックは、多数の変更可能なパラメータを用いて成立しているため、そのパラメータの組合せごとにＣコードを必要とし、この場合、人の手により準備しなければならないＣコードが膨大な数になってしまい実用的ではない。
本発明の目的は、極力簡便にＣコードを自動生成できるようにした自動コード生成方法及び自動コード生成プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
請求項１記載の発明によれば、未対応ブロックを含むモデルからSimulinkに備わる自動コード生成機能により未対応ブロックのＣコードを自動コード生成するため、カスタムコードブロックに対応したSimulinkのブロックと同一動作をするＣコードを人の手により準備しなくても良くなり、Ｃコードを極力簡便に自動生成できる。
【００１１】
しかも、TargetLinkに未対応のSimulinkのブロックが多数の変更可能なパラメータを用いて成立していたとしても、Simulinkに備わる自動コード生成機能によりパラメータの組合せごとにＣコードを準備でき、Ｃコードを極力簡便に自動生成できる。
【００１２】
請求項２記載の発明によれば、複数の未対応ブロックが存在するときには未対応ブロックごとにＣコードを生成しているため、未対応ブロックが多くなってもSimulinkに備わる自動コード生成機能によりＣコードを極力簡便に自動生成できる。
【図面の簡単な説明】
【００１３】
【図１】一実施形態に係る自動コード生成装置の構成ブロック図
【図２】モデルの構成図
【図３】処理の流れの説明図のその１
【図４】処理の流れの説明図のその２
【図５】コード生成処理を概略的に示すフローチャート
【発明を実施するための形態】
【００１４】
以下、自動コード生成方法、及び、自動コード生成装置の一実施形態について図面を参照しながら説明する。図１に示すように、ワークステーション又はパーソナルコンピュータ（以下、ＰＣ）１は、ＣＰＵ２、ＲＯＭ３、ＲＡＭ４、データ記憶装置５、入力装置６、及び表示装置７などを備える。表示装置７は、ＣＰＵ２から受けた映像信号をユーザに対して映像として表示する。入力装置６は、例えばキーボード、マウス等から構成され、ユーザにより操作されることにより、その操作に応じた信号をＣＰＵ２に出力する。ＲＡＭ４は読出／書込可能な揮発性メモリであり、ＲＯＭ３は読出し専用のメモリであり、データ記憶装置５は読出／書込可能なメモリである。
【００１５】
ＲＯＭ３には、ＣＰＵ２が読み出して実行するプログラム等が予め記憶されている。またデータ記憶装置５には、後述するモデルが記憶されている。ＲＡＭ４は、ＣＰＵ２がＲＯＭ３、データ記憶装置５に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存するための記憶領域、及び作業用のデータを一時的に保存するための記憶領域として用いられる。
【００１６】
ＰＣ１に電源が投入され起動されると、ＣＰＵ２はＲＯＭ３からブートプログラムを読み出して実行する。そして、起動処理以降、ＣＰＵ２は、入力装置６からの信号、オペレーションシステム（ＯＳ）により予め定められたスケジュール等に基づき、データ記憶装置５に記憶されたコード生成ツール１０などの各種プログラムをＯＳ上のプロセスとして実行する。  
【００１７】
次に、データ記憶装置５にインストールされている本実施形態のコード生成ツール１０について説明する。コード生成ツール１０は、データ記憶装置５に保存されると共にＯＳ上で実行されるアプリケーションの一つであり、TargetLink（登録商標）を用いてＣ言語のソースコード（以下、Ｃコードと称する）を自動生成する。
【００１８】
ＰＣ１は、ＣＰＵ２がコード生成ツール１０を動作させることで、モデルベースのプログラム開発を行うための自動コード生成装置として作動する。なお、ＰＣ１による自動コード生成機能は、例えば車載装置等の組み込みシステム向けのプログラム開発や、その他あらゆる用途のプログラム開発に用いることができる。
【００１９】
コード生成ツール１０は、ＯＳの仕様に従いユーザによる入力装置６の操作により起動され、その後のユーザによる入力装置６の操作に基づいて生成されたモデル１１からＣ＋＋等のプログラミング言語の仕様に応じたＣコードを自動生成（ＡＣＧ）する。Ｃコードは、コンパイラに入力されることで、ＣＰＵ２等が直接実行可能なオブジェクトコードに変換される。
【００２０】
図２に示すモデル１１は、Ｃコードよりも記述を簡易的にし、且つ、人による可読性を高める目的で定められたモデル言語仕様に基づいて、ユーザにより作成されるプログラムの一表現形態であり、Simulink（登録商標）により作成されるSimulinkモデルである。
【００２１】
モデル１１は、各ブロック１２〜１６を相互に接続して表現される。各ブロック１２〜１６は、ビット演算、論理演算、ループ処理等の基本モデルを用いて表現されたブロックのモデルとして記述されており可読性及び視認性良く表現されている。モデル１１は、上位から下位まで階層的に記述され、ユーザによりＧＵＩ環境の下で記述される。
【００２２】
図３の上段に示すモデル２１は、Simulinkのブロック２２〜２６を相互接続して表現されている。ユーザが、これらのブロック２２〜２６をＧＵＩ環境にて接続することでモデル２１が構築される。結線関係の説明は省略するが、ブロック２２、２４は、加算演算を表す基本モデル、ブロック２３は、積分演算を表す基本モデル、ブロック２５、２６は、乗算演算を表す基本モデルである。
【００２３】
また図４の上段に示すように、コード生成ツール１０がTargetLinkによりＣコードを自動生成不可能なSimulinkのブロック２６ａを含むモデル１２１も開発者は記述できる。データ記憶装置５にはこのようなブロック２６ａもユーザ登録可能になっておりカスタムコードブロックと称される。このカスタムコードブロックは、TargetLinkのユーザにより自由にブロックを生成可能にするブロックである。Simulinkのブロック２６ａは、TargetLinkによりTargetLinkのブロックに自動変換不可能なブロックである。ユーザは、これらのモデル２１又は１２１を構築した後、ＰＣ１にＣコードを自動生成させる。
【００２４】
ＰＣ１が、コード生成ツール１０によりモデル１１のＣコードを自動生成するとき、図５に示す処理を実行する。ＰＣ１は、図５のＳ１においてＡＣＧのためのSimulinkのモデルを読込み、Ｓ２においてTargetLinkに未対応のSimulinkのブロックが存在するか否かを判定する。
【００２５】
例えば、ＰＣ１が、図３の上段に示すモデル１１のブロック１２〜１６を読込んだときに、一部のブロック（例えば、１３）に下位階層のモデル２１が登録されていれば、当該下位階層のモデル２１のSimulinkのブロック２２〜２６を順次階層的に読出す。
【００２６】
ＰＣ１は、図５のＳ２においてTargetLinkに未対応のSimulinkのブロックが存在するか否かを判定した結果、未対応のブロックが存在していないと判定すると、Ｓ２にてＮＯと判定し、TargetLinkによりSimulinkのモデル１１からＣコードを自動生成する。
【００２７】
すなわち、ＰＣ１は、モデル１１の全ブロック１２〜１６の下位階層を読込んだとしても、TargetLinkに未対応のブロックが存在していないと判定したときには、TargetLinkによりSimulinkのモデル１１からＣコードを自動生成する。
【００２８】
例えば、図３の上段に示すように、ＰＣ１は、コード生成ツール１０によりモデル１１のブロック１３の下位階層のモデル２１を読込んだ場合には、Ｓ２においてモデル２１のSimulinkのブロック２２〜２６にTargetLink未対応のモデルが存在しないと判断する。この場合、ＰＣ１は、図３のステップＳａに示すようにコード生成ツール１０によりTargetLinkのブロック３２〜３６のモデル３１に変換し、その後、図３のステップＳｂに示すようにブロック３２〜３６をＣコードに自動生成する。
【００２９】
また例えば、ＰＣ１は、コード生成ツール１０により図４の上段に示すモデル１２１を読込んだ場合、図５のＳ２においてモデル１２１のSimulinkのブロック２６ａにTargetLinkに未対応のモデルが存在すると判断する。この場合ＰＣ１は、Ｓ３においてコード生成ツール１０により未対応なブロック２６ａ（以下、未対応ブロック２６ａと称す）を抽出し、Ｓ４において未対応ブロック２６ａのみを含むモデル４０（以下、切出モデル４０と称す）を作成する。未対応ブロック２６ａのみを含む切出モデル４０を作成する形態を示すが、これに限られるものではない。図４の２段目に示すように、切出モデル４０は、入力端子４０ａ、未対応ブロック２６ａ、出力端子４０ｂを縦続接続したモデルである。
【００３０】
ＰＣ１は、図５のＳ５においてSimulinkに備わるＣコードの自動コード生成（ＡＣＧ：Auto Code Generating）機能により切出モデル４０から未対応ブロック２６ａのＣコードを生成する。その後、ＰＣ１は、図５のＳ６において未対応ブロック２６ａのＣコードをカスタムコードブロック１３６に登録する。
【００３１】
ＰＣ１は、Ｓ７において未対応ブロック２６ａをカスタムコードブロック１３６に置換する。図４の４段目に示すように、カスタムコードブロック１３６は、TargetLinkのモデルにより表現されるブロックである。また、図４の５段目に示すように、未対応ブロック２６ａがカスタムコードブロック１３６に置換されると、ＰＣ１は、Ｓ８においてTargetLinkのブロック３２〜３５、１３６を用いてTargetLinkの機能によりＡＣＧモデルからＣコードを生成できる。
【００３２】
本実施形態によれば、ＰＣ１は、Ｓ２においてTargetLinkによりＣコードを自動生成不可能な未対応ブロック２６ａが存在するか否かを判定し、未対応ブロック２６ａが存在すると判定されたときには、Ｓ３において未対応ブロック２６ａを抽出し、Ｓ４において未対応ブロック２６ａのみを含む切出モデル４０からSimulinkに備わる自動コード生成機能により未対応ブロック２６ａのＣコードを自動コード生成するようにしている。
【００３３】
これにより、カスタムコードブロック１３６に対応したSimulinkのブロックと同一動作をするＣコードを人の手により準備しなくても良くなり、Ｃコードを極力簡便に自動生成できる。
【００３４】
前述の例では、簡略的な構成を示したが、実際には、未対応ブロック２６ａが多数のパラメータを用いて表現されている場合もある。簡単な例を示すと、未対応ブロック２６ａが入力端子４０ａに対して指定されたクロック数だけ遅延した信号を出力端子４０ｂから出力するブロックであった場合、入力端子４０ａから出力信号の遅延長や初期条件、入力処理の選択要素などの各種パラメータを多く設定する必要を生じる。この場合、従来においては、それぞれのパラメータによる組合せに応じたＣコードを人の手を用いて用意しなければならなくなる。
【００３５】
本実施形態によれば、TargetLinkに未対応のSimulinkのブロック２６ａが多数の変更可能なパラメータを用いて成立していたとしても、Simulinkに備わる自動コード生成機能によりパラメータの組合せに特化したＣコードを自動的に準備でき、Ｃコードを極力簡便に自動生成できる。
【００３６】
また例えば、複数の未対応ブロック２６ａが存在するときには未対応ブロック２６ａごとにＣコードを生成できるため、未対応ブロック２６ａが多くなってもSimulinkに備わる自動コード生成機能によりＣコードを極力簡便に自動生成できる。
【００３７】
またＰＣ１は、コード生成ツール１０により未対応ブロック２６ａをカスタムコードブロック１３６に登録することで、同一の入力端子４０ａ、同一の出力端子４０ｂを備えたモデルに適用でき、カスタムコードブロック１３６を汎用的に利用できる。
【００３８】
ＰＣ１が、コード生成ツール１０を用いて未対応ブロック２６ａをTargetLinkにより自動コード生成できなくても、未対応ブロック２６ａをカスタムコードブロック１３６に置換した後、TargetLinkにより自動コード生成できる。
【００３９】
本開示に記載の手法は、自動コード生成プログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の制御部及びその手法は、一つ以上の専用ハードウエア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。
【００４０】
もしくは本開示に記載の手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリーと一つ以上のハードウエア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、自動コード生成プログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。
【符号の説明】
【００４１】
図面中、１はＰＣ、２はＣＰＵ、３はＲＯＭ、４はＲＡＭ、５はデータ記憶装置、１０はコード生成ツール、を示す。
【図１】
2020144509.tif 000003
【図２】
2020144509.tif 000004
【図３】
2020144509.tif 000005
【図４】
2020144509.tif 000006
【図５】
2020144509.tif 000007