連載
» 2014年08月27日 11時30分 公開

モデルベース開発奮戦ちう(5):悪戦苦闘して作ったモデルって、何だか愛おしい (5/5)

[JMAAB/いまさら聞けないMBD編集委員会,MONOist]
前のページへ 1|2|3|4|5       

自動コード生成はもっと手ごわい!!

 一方、私が所属する制御設計チームは、制御モデルの構築を着々と進めていた。

 量産ECU向けにソースプログラムを自動生成するのは初めてのことであり、さまざまな検証プロセスを経る必要がある。まず単体ブロックのソースプログラムを生成し、モデル動作とソースプログラムでの動作の一致性を確認した。同時に生成されたソースプログラムとモデルのレビューを行った。続いて、ブロックを組み合わせて作成したライブラリのソースプログラムの生成を行い、単体ブロックと同様の検証を行った。ここまでのプロセスでは特に問題は起こらなかった。

 次に作成中のモデルからソースプログラムを生成してみることになった。動作確認が完了しているモデルのうち、比較的小さなモデルからソースプログラムを生成してみる。

 ここでエラーが発生した。ソルバーが連続系になっていたので、私はソルバーを離散系に変更し、サンプル時間を設定し直してからもう一度実行した。それでもやはりエラーが出る。

京子

あ、モデルチェックを忘れてた!


 モデルチェックは、あらかじめ決めたガイドライン通りにモデルを記述できているかチェックするプロセスだ。モデルチェックを行ったところ、やはり問題の原因になっていそうな箇所を見つけた。そこで、ガイドラインのルール通りに記述し直すと、エラーなくソースプログラムを生成できるようになった。

 生成できたソースプログラムとモデルのレビューを行ってみた。モデルと比べて、ソースプログラムでは消えているブロックがある。どうやら最適化が働いているらしい。最適化を外すとソースプログラム量が増加する。つまり、最適化が働いているのは、実行しなくてもよいと判断されたブロックのようである。

 他にもエラーが起こったが何とか解消し、でき上がったモデルから順次ソースプログラムを生成していった。

 次に、生成したソースプログラムをECUに組み込むには、コンパイルとリンクを行い、マイコン用のオブジェクトプログラムを生成しなければならない。コンパイルはうまくいったが、リンクエラーが起こった。原因を探してみると、使用している関数の設定抜けのせいだった。さらにメモリ不足のエラーもでている。

大島

これは冗長なプログラムだな。二重に上下限をクリップしているとか、不要なメモリのコピーとかやってないか?


 大島さんの指摘に従って、私は自動コード生成ツールのカスタマイズした部分を修正することにした。何度も使用しているブロックの組み合せをライブラリ化するなどの対策もやってみた。

 ソースプログラムの生成に取り組んでから数週間後、やっとECUに組み込んでHILSで試験を行えるレベルにまでこぎつけた。

 私には、悪戦苦闘して作ったモデルが何だか愛おしく思えた(以下、次回に続く)。

執筆者プロフィール

JMAAB/今さら聞けないMBD委員会

JMAABのWebサイト http://jmaab.mathworks.jp/

モデルベース開発(MBD)を発展させるべく、自動車メーカーとサプライヤからなる団体『JMAAB』は13年前(2001年)に生まれました。このJMAABの10周年記念において、「MBDを分かりやすく伝えたい」という目的で発足したのが『いまさら聞けないMBD委員会』です。委員会メンバーが所属する10社でMBDを推進してきたエンジニアが協力し、これまでの経験や将来の夢を伝えるべく推敲を重ね、本連載は完成しました。皆さまのモノづくりの一助となれば幸いです。


イラストレーター

illust

わた

主にWeb上で活動中。動画イラスト、ブックレット挿絵、グッズ制作などもお手伝いしております。

▼連絡先

wata199314@gmail.com(メールの際は「@」は半角文字で)


前のページへ 1|2|3|4|5       

Copyright © ITmedia, Inc. All Rights Reserved.