JP7156094B2 - 自動コード生成方法、及び自動コード生成プログラム - Google Patents

自動コード生成方法、及び自動コード生成プログラム Download PDF

Info

Publication number
JP7156094B2
JP7156094B2 JP2019039499A JP2019039499A JP7156094B2 JP 7156094 B2 JP7156094 B2 JP 7156094B2 JP 2019039499 A JP2019039499 A JP 2019039499A JP 2019039499 A JP2019039499 A JP 2019039499A JP 7156094 B2 JP7156094 B2 JP 7156094B2
Authority
JP
Japan
Prior art keywords
code
block
unsupported
automatic
targetlink
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.)
Active
Application number
JP2019039499A
Other languages
English (en)
Other versions
JP2020144509A (ja
Inventor
和彦 大坂
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 JP2019039499A priority Critical patent/JP7156094B2/ja
Priority to DE102020202723.4A priority patent/DE102020202723A1/de
Publication of JP2020144509A publication Critical patent/JP2020144509A/ja
Application granted granted Critical
Publication of JP7156094B2 publication Critical patent/JP7156094B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、自動コード生成方法、及び自動コード生成プログラムに関する。
自動的にソースコードを生成する支援ツールが開発されており、例えば車両のエンジンECUのプログラム開発支援に用いられている。この支援ツールは、プログラムの開発者が直接ソースコードを記述することなく、目的とするプログラムの機能をより簡易的に視認性の良いモデルという形態で記述する。これにより、プログラム開発者の可読性を向上できるようになり、プログラム構造を容易に把握できる。
開発者は、このモデル記述用の開発環境がインストールされたワークステーション又はパーソナルコンピュータ(以下PC)等を用い、このモデルにより定義された演算処理等のシミュレーション処理を行い、PCは当該モデルに応じたソースコードを自動生成する。このモデルに基づいてソースコードを自動生成するためのプログラム開発は、モデルベース開発と呼ばれている。モデルベース開発を行うためのプログラム開発環境は、例えばMATLAB(登録商標)、及び、これに付加機能を提供するSimulink(登録商標)が知られている。
モデルベース開発を行う場合、開発者は、例えばSimulink(登録商標)を用いてモデルを記述する。このモデルは、各種演算を示すブロックと、当該ブロック間のデータの授受を示す信号線とを、GUI(Graphical User Interface)環境下で表現されたプログラムを示す。
従来モデルは、プログラミング言語から制御フローを記述する多くの機能がブロックとして取り入れられており、様々な制御構造を表現できるように開発が進められている。モデルベース開発における自動コード生成技術は、例えば特許文献1に示されている。
特開2016-115189号公報
出願人は、SimulinkのモデルからC言語のソースを自動生成するための支援ツールとしてTargetLink(登録商標)を用いている。しかし、TargetLinkの中にはC言語のソースコード(以下、Cコードと称する)を自動生成不可能なSimulinkのブロックが存在する。
TargetLinkには、ユーザにより自由にブロックを生成可能なカスタムコードブロックという特殊ブロックが用意されているが、このカスタムコードブロックに対応したSimulinkのブロックと同一動作をするCコードを人の手により準備しなければならない。
Simulinkのブロックは、多数の変更可能なパラメータを用いて成立しているため、そのパラメータの組合せごとにCコードを必要とし、この場合、人の手により準備しなければならないCコードが膨大な数になってしまい実用的ではない。
本発明の目的は、極力簡便にCコードを自動生成できるようにした自動コード生成方法及び自動コード生成プログラムを提供することにある。
請求項1記載の発明によれば、自動コード生成装置が、未対応ブロックを含むモデルからSimulinkに備わる自動コード生成機能により未対応ブロックのCコードを自動コード生成するため、カスタムコードブロックに対応したSimulinkのブロックと同一動作をするCコードを人の手により準備しなくても良くなり、Cコードを極力簡便に自動生成できる。
しかも、TargetLinkに未対応のSimulinkのブロックが多数の変更可能なパラメータを用いて成立していたとしても、Simulinkに備わる自動コード生成機能によりパラメータの組合せごとにCコードを準備でき、Cコードを極力簡便に自動生成できる。
請求項2記載の発明によれば、複数の未対応ブロックが存在するときには未対応ブロックごとにCコードを生成しているため、未対応ブロックが多くなってもSimulinkに備わる自動コード生成機能によりCコードを極力簡便に自動生成できる。
一実施形態に係る自動コード生成装置の構成ブロック図 モデルの構成図 処理の流れの説明図のその1 処理の流れの説明図のその2 コード生成処理を概略的に示すフローチャート
以下、自動コード生成方法、及び、自動コード生成装置の一実施形態について図面を参照しながら説明する。図1に示すように、ワークステーション又はパーソナルコンピュータ(以下、PC)1は、CPU2、ROM3、RAM4、データ記憶装置5、入力装置6、及び表示装置7などを備える。表示装置7は、CPU2から受けた映像信号をユーザに対して映像として表示する。入力装置6は、例えばキーボード、マウス等から構成され、ユーザにより操作されることにより、その操作に応じた信号をCPU2に出力する。RAM4は読出/書込可能な揮発性メモリであり、ROM3は読出し専用のメモリであり、データ記憶装置5は読出/書込可能なメモリである。
ROM3には、CPU2が読み出して実行するプログラム等が予め記憶されている。またデータ記憶装置5には、後述するモデルが記憶されている。RAM4は、CPU2がROM3、データ記憶装置5に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存するための記憶領域、及び作業用のデータを一時的に保存するための記憶領域として用いられる。
PC1に電源が投入され起動されると、CPU2はROM3からブートプログラムを読み出して実行する。そして、起動処理以降、CPU2は、入力装置6からの信号、オペレーションシステム(OS)により予め定められたスケジュール等に基づき、データ記憶装置5に記憶されたコード生成ツール10などの各種プログラムをOS上のプロセスとして実行する。
次に、データ記憶装置5にインストールされている本実施形態のコード生成ツール10について説明する。コード生成ツール10は、データ記憶装置5に保存されると共にOS上で実行されるアプリケーションの一つであり、TargetLink(登録商標)を用いてC言語のソースコード(以下、Cコードと称する)を自動生成する。
PC1は、CPU2がコード生成ツール10を動作させることで、モデルベースのプログラム開発を行うための自動コード生成装置として作動する。なお、PC1による自動コード生成機能は、例えば車載装置等の組み込みシステム向けのプログラム開発や、その他あらゆる用途のプログラム開発に用いることができる。
コード生成ツール10は、OSの仕様に従いユーザによる入力装置6の操作により起動され、その後のユーザによる入力装置6の操作に基づいて生成されたモデル11からC++等のプログラミング言語の仕様に応じたCコードを自動生成(ACG)する。Cコードは、コンパイラに入力されることで、CPU2等が直接実行可能なオブジェクトコードに変換される。
図2に示すモデル11は、Cコードよりも記述を簡易的にし、且つ、人による可読性を高める目的で定められたモデル言語仕様に基づいて、ユーザにより作成されるプログラムの一表現形態であり、Simulink(登録商標)により作成されるSimulinkモデルである。
モデル11は、各ブロック12~16を相互に接続して表現される。各ブロック12~16は、ビット演算、論理演算、ループ処理等の基本モデルを用いて表現されたブロックのモデルとして記述されており可読性及び視認性良く表現されている。モデル11は、上位から下位まで階層的に記述され、ユーザによりGUI環境の下で記述される。
図3の上段に示すモデル21は、Simulinkのブロック22~26を相互接続して表現されている。ユーザが、これらのブロック22~26をGUI環境にて接続することでモデル21が構築される。結線関係の説明は省略するが、ブロック22、24は、加算演算を表す基本モデル、ブロック23は、積分演算を表す基本モデル、ブロック25、26は、乗算演算を表す基本モデルである。
また図4の上段に示すように、コード生成ツール10がTargetLinkによりCコードを自動生成不可能なSimulinkのブロック26aを含むモデル121も開発者は記述できる。データ記憶装置5にはこのようなブロック26aもユーザ登録可能になっておりカスタムコードブロックと称される。このカスタムコードブロックは、TargetLinkのユーザにより自由にブロックを生成可能にするブロックである。Simulinkのブロック26aは、TargetLinkによりTargetLinkのブロックに自動変換不可能なブロックである。ユーザは、これらのモデル21又は121を構築した後、PC1にCコードを自動生成させる。
PC1が、コード生成ツール10によりモデル11のCコードを自動生成するとき、図5に示す処理を実行する。PC1は、図5のS1においてACGのためのSimulinkのモデルを読込み、S2においてTargetLinkに未対応のSimulinkのブロックが存在するか否かを判定する。
例えば、PC1が、図3の上段に示すモデル11のブロック12~16を読込んだときに、一部のブロック(例えば、13)に下位階層のモデル21が登録されていれば、当該下位階層のモデル21のSimulinkのブロック22~26を順次階層的に読出す。
PC1は、図5のS2においてTargetLinkに未対応のSimulinkのブロックが存在するか否かを判定した結果、未対応のブロックが存在していないと判定すると、S2にてNOと判定し、TargetLinkによりSimulinkのモデル11からCコードを自動生成する。
すなわち、PC1は、モデル11の全ブロック12~16の下位階層を読込んだとしても、TargetLinkに未対応のブロックが存在していないと判定したときには、TargetLinkによりSimulinkのモデル11からCコードを自動生成する。
例えば、図3の上段に示すように、PC1は、コード生成ツール10によりモデル11のブロック13の下位階層のモデル21を読込んだ場合には、S2においてモデル21のSimulinkのブロック22~26にTargetLink未対応のモデルが存在しないと判断する。この場合、PC1は、図3のステップSaに示すようにコード生成ツール10によりTargetLinkのブロック32~36のモデル31に変換し、その後、図3のステップSbに示すようにブロック32~36をCコードに自動生成する。
また例えば、PC1は、コード生成ツール10により図4の上段に示すモデル121を読込んだ場合、図5のS2においてモデル121のSimulinkのブロック26aにTargetLinkに未対応のモデルが存在すると判断する。この場合PC1は、S3においてコード生成ツール10により未対応なブロック26a(以下、未対応ブロック26aと称す)を抽出し、S4において未対応ブロック26aのみを含むモデル40(以下、切出モデル40と称す)を作成する。未対応ブロック26aのみを含む切出モデル40を作成する形態を示すが、これに限られるものではない。図4の2段目に示すように、切出モデル40は、入力端子40a、未対応ブロック26a、出力端子40bを縦続接続したモデルである。
PC1は、図5のS5においてSimulinkに備わるCコードの自動コード生成(ACG:Auto Code Generating)機能により切出モデル40から未対応ブロック26aのCコードを生成する。その後、PC1は、図5のS6において未対応ブロック26aのCコードをカスタムコードブロック136に登録する。
PC1は、S7において未対応ブロック26aをカスタムコードブロック136に置換する。図4の4段目に示すように、カスタムコードブロック136は、TargetLinkのモデルにより表現されるブロックである。また、図4の5段目に示すように、未対応ブロック26aがカスタムコードブロック136に置換されると、PC1は、S8においてTargetLinkのブロック32~35、136を用いてTargetLinkの機能によりACGモデルからCコードを生成できる。
本実施形態によれば、PC1は、S2においてTargetLinkによりCコードを自動生成不可能な未対応ブロック26aが存在するか否かを判定し、未対応ブロック26aが存在すると判定されたときには、S3において未対応ブロック26aを抽出し、S4において未対応ブロック26aのみを含む切出モデル40からSimulinkに備わる自動コード生成機能により未対応ブロック26aのCコードを自動コード生成するようにしている。
これにより、カスタムコードブロック136に対応したSimulinkのブロックと同一動作をするCコードを人の手により準備しなくても良くなり、Cコードを極力簡便に自動生成できる。
前述の例では、簡略的な構成を示したが、実際には、未対応ブロック26aが多数のパラメータを用いて表現されている場合もある。簡単な例を示すと、未対応ブロック26aが入力端子40aに対して指定されたクロック数だけ遅延した信号を出力端子40bから出力するブロックであった場合、入力端子40aから出力信号の遅延長や初期条件、入力処理の選択要素などの各種パラメータを多く設定する必要を生じる。この場合、従来においては、それぞれのパラメータによる組合せに応じたCコードを人の手を用いて用意しなければならなくなる。
本実施形態によれば、TargetLinkに未対応のSimulinkのブロック26aが多数の変更可能なパラメータを用いて成立していたとしても、Simulinkに備わる自動コード生成機能によりパラメータの組合せに特化したCコードを自動的に準備でき、Cコードを極力簡便に自動生成できる。
また例えば、複数の未対応ブロック26aが存在するときには未対応ブロック26aごとにCコードを生成できるため、未対応ブロック26aが多くなってもSimulinkに備わる自動コード生成機能によりCコードを極力簡便に自動生成できる。
またPC1は、コード生成ツール10により未対応ブロック26aをカスタムコードブロック136に登録することで、同一の入力端子40a、同一の出力端子40bを備えたモデルに適用でき、カスタムコードブロック136を汎用的に利用できる。
PC1が、コード生成ツール10を用いて未対応ブロック26aをTargetLinkにより自動コード生成できなくても、未対応ブロック26aをカスタムコードブロック136に置換した後、TargetLinkにより自動コード生成できる。
本開示に記載の手法は、自動コード生成プログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の制御部及びその手法は、一つ以上の専用ハードウエア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。
もしくは本開示に記載の手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリーと一つ以上のハードウエア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、自動コード生成プログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。
図面中、1はPC、2はCPU、3はROM、4はRAM、5はデータ記憶装置、10はコード生成ツール、を示す。

Claims (8)

  1. 自動コード生成装置は、Simulink(登録商標)のモデルからC言語のソースコード(以下、Cコードと称す)を自動生成するツールとしてTargetLink(登録商標)を用い、前記TargetLinkにより前記Cコードを自動生成不可能な未対応のSimulinkのブロック(以下、未対応ブロック)が存在するか否かを判定し(S2)、
    前記自動コード生成装置が、前記未対応ブロックが存在すると判定されたときには前記未対応ブロックを抽出し前記未対応ブロックを含むモデルから前記Simulinkに備わる自動コード生成機能により前記未対応ブロックの前記Cコードを自動コード生成する(S3~S5)自動コード生成方法。
  2. 前記自動コード生成装置が、複数の前記未対応ブロックが存在するときには、前記未対応ブロックごとに前記Cコードを自動コード生成する請求項1記載の自動コード生成方法。
  3. 前記自動コード生成装置が、前記未対応ブロックごとに生成された前記Cコードを、前記TargetLinkのユーザにより自由にブロックを生成可能にするカスタムコードブロック(136)に登録する(S6)請求項2記載の自動コード生成方法。
  4. 前記自動コード生成装置が、前記未対応ブロックを前記カスタムコードブロックに置換し、前記TargetLinkにより自動コード生成する(S7、S8)請求項3記載の自動コード生成方法。
  5. SimulinkのモデルからC言語のソースコード(以下、Cコードと称す)を自動生成するツールとしてTargetLinkを用いて自動コード生成する自動コード生成装置(1)に、
    前記TargetLinkにより前記Cコードを自動生成不可能な未対応のSimulinkのブロック(以下、未対応ブロック)が存在するか否かを判定する(S2)手順と、
    前記未対応ブロックが存在すると判定されたときには前記未対応ブロックを抽出し前記未対応ブロックを含むモデルから前記Simulinkに備わる自動コード生成機能により前記未対応ブロックの前記Cコードを自動コード生成する(S3~S5)手順と、
    を実行させる自動コード生成プログラム。
  6. 前記未対応ブロックの前記Cコードを自動コード生成する(S3~S5)手順では、
    複数の前記未対応ブロックが存在するときには、前記未対応ブロックごとに前記Cコードを自動コード生成する請求項5記載の自動コード生成プログラム。
  7. 前記未対応ブロックごとに生成された前記Cコードを、前記TargetLinkのユーザにより自由にブロックを生成可能なカスタムコードブロック(136)に登録する(S6)手順をさらに備える請求項6記載の自動コード生成プログラム。
  8. 前記未対応ブロックを前記カスタムコードブロックに置換し、前記TargetLinkにより自 動コード生成する(S7、S8)手順、をさらに備える請求項7記載の自動コード生成プログラム。
JP2019039499A 2019-03-05 2019-03-05 自動コード生成方法、及び自動コード生成プログラム Active JP7156094B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019039499A JP7156094B2 (ja) 2019-03-05 2019-03-05 自動コード生成方法、及び自動コード生成プログラム
DE102020202723.4A DE102020202723A1 (de) 2019-03-05 2020-03-03 Automatische-Codeerzeugung-Verfahren und computerlesbares Speichermedium, das ein Automatische-Codeerzeugung-Programm speichert

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019039499A JP7156094B2 (ja) 2019-03-05 2019-03-05 自動コード生成方法、及び自動コード生成プログラム

Publications (2)

Publication Number Publication Date
JP2020144509A JP2020144509A (ja) 2020-09-10
JP7156094B2 true JP7156094B2 (ja) 2022-10-19

Family

ID=72146785

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019039499A Active JP7156094B2 (ja) 2019-03-05 2019-03-05 自動コード生成方法、及び自動コード生成プログラム

Country Status (2)

Country Link
JP (1) JP7156094B2 (ja)
DE (1) DE102020202723A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112162746B (zh) * 2020-10-29 2022-07-05 中国人民解放军国防科技大学 一种基于网络知识汇聚和迭代式搜索的程序自动构造方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007524156A (ja) 2003-12-22 2007-08-23 ザ マスワークス, インク グラフィカルプログラミング環境における入力データのブロック処理
JP2013161219A (ja) 2012-02-03 2013-08-19 Denso Corp コード生成装置、及びコード生成プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007524156A (ja) 2003-12-22 2007-08-23 ザ マスワークス, インク グラフィカルプログラミング環境における入力データのブロック処理
JP2013161219A (ja) 2012-02-03 2013-08-19 Denso Corp コード生成装置、及びコード生成プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Reactive Systems, Inc.,Testing TargetLink Models and C Code with Reactis,Reactis White Papers,2015年02月15日,https://reactive-systems.com/papers/reactis_targetlink.pdf,[2022年6月21日検索]

Also Published As

Publication number Publication date
JP2020144509A (ja) 2020-09-10
DE102020202723A1 (de) 2020-09-10

Similar Documents

Publication Publication Date Title
Bouchet et al. ICARE software components for rapidly developing multimodal interfaces
US11175895B2 (en) Code generation and simulation for graphical programming
JPH11513512A (ja) ディジタル信号プロセッサの製造方法
US8527254B2 (en) Simulator engine development system and simulator engine development method
US20070240100A1 (en) Computer software adaptation method and system
JPH09259153A (ja) バッチ実行制御プログラム作成装置及び方法
US20070038947A1 (en) Method and device for generation of a parametric model associated with a 3D geometry
JP5162530B2 (ja) ロボットのタスクモデルの生成及び実行方法と装置
JP7156094B2 (ja) 自動コード生成方法、及び自動コード生成プログラム
KR102300005B1 (ko) 소프트웨어 컴포넌트를 표현하는 각각의 그래픽 객체 간의 연결 조작을 이용한 소프트웨어 개발 어시스트 방법 및 그 시스템
US10394529B2 (en) Development platform of mobile native applications
US8650517B1 (en) Automatically documenting circuit designs
Utkin et al. Automated construction of software configuration tables for real-time systems in avionics
US9558305B1 (en) Automatic modeling, mapping, and code generation for homogeneous and heterogeneous platforms
CN106126213A (zh) 一种基于IFML的Android开发建模方法
JP2005222221A (ja) 組込コントローラ開発ツール、組込コントローラ、及び組込コントローラ開発プロセス
JP2008305021A (ja) 情報処理装置及びアプリケーション管理方法
JP2002091762A (ja) プログラム生成装置
KR20200022254A (ko) 자기 정의 명세서 기반 os 설정 장치 및 방법
JP2011165051A (ja) 開発支援装置及び方法並びにプログラム
US20230176832A1 (en) Program creation assistance device
US10353363B1 (en) Function receive block, function send block, and computer-implemented method for computer-aided generation of an executable control program
JP4895374B2 (ja) ソフトウェア成果物生成方法及びそのシステム
US7885800B1 (en) Synchronous models in modeling environments
KR20240009757A (ko) 오토사 스택 가상화를 통한 윈도우 기반의 차량용 소프트웨어 시뮬레이션 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210716

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220713

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220906

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220919

R151 Written notification of patent or utility model registration

Ref document number: 7156094

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151