悪戦苦闘して作ったモデルって、何だか愛おしい:モデルベース開発奮戦ちう(5)(5/5 ページ)
ついに、ハイブリッド車「バンビーナ」が燃費世界一を目指す上で重要な役割を果たす変速機「CVT∞」の制御設計を始めることになった、京子たち三立精機の制御設計チーム。悪戦苦闘しながらも、制御モデルの設計やECUへのソフトウェア組み込みなどの作業を着実に進めていく。
自動コード生成はもっと手ごわい!!
一方、私が所属する制御設計チームは、制御モデルの構築を着々と進めていた。
量産ECU向けにソースプログラムを自動生成するのは初めてのことであり、さまざまな検証プロセスを経る必要がある。まず単体ブロックのソースプログラムを生成し、モデル動作とソースプログラムでの動作の一致性を確認した。同時に生成されたソースプログラムとモデルのレビューを行った。続いて、ブロックを組み合わせて作成したライブラリのソースプログラムの生成を行い、単体ブロックと同様の検証を行った。ここまでのプロセスでは特に問題は起こらなかった。
次に作成中のモデルからソースプログラムを生成してみることになった。動作確認が完了しているモデルのうち、比較的小さなモデルからソースプログラムを生成してみる。
ここでエラーが発生した。ソルバーが連続系になっていたので、私はソルバーを離散系に変更し、サンプル時間を設定し直してからもう一度実行した。それでもやはりエラーが出る。
あ、モデルチェックを忘れてた!
モデルチェックは、あらかじめ決めたガイドライン通りにモデルを記述できているかチェックするプロセスだ。モデルチェックを行ったところ、やはり問題の原因になっていそうな箇所を見つけた。そこで、ガイドラインのルール通りに記述し直すと、エラーなくソースプログラムを生成できるようになった。
生成できたソースプログラムとモデルのレビューを行ってみた。モデルと比べて、ソースプログラムでは消えているブロックがある。どうやら最適化が働いているらしい。最適化を外すとソースプログラム量が増加する。つまり、最適化が働いているのは、実行しなくてもよいと判断されたブロックのようである。
他にもエラーが起こったが何とか解消し、でき上がったモデルから順次ソースプログラムを生成していった。
次に、生成したソースプログラムをECUに組み込むには、コンパイルとリンクを行い、マイコン用のオブジェクトプログラムを生成しなければならない。コンパイルはうまくいったが、リンクエラーが起こった。原因を探してみると、使用している関数の設定抜けのせいだった。さらにメモリ不足のエラーもでている。
これは冗長なプログラムだな。二重に上下限をクリップしているとか、不要なメモリのコピーとかやってないか?
大島さんの指摘に従って、私は自動コード生成ツールのカスタマイズした部分を修正することにした。何度も使用しているブロックの組み合せをライブラリ化するなどの対策もやってみた。
ソースプログラムの生成に取り組んでから数週間後、やっとECUに組み込んでHILSで試験を行えるレベルにまでこぎつけた。
私には、悪戦苦闘して作ったモデルが何だか愛おしく思えた(以下、次回に続く)。
執筆者プロフィール
JMAAB/今さら聞けないMBD委員会
JMAABのWebサイト http://jmaab.mathworks.jp/
モデルベース開発(MBD)を発展させるべく、自動車メーカーとサプライヤからなる団体『JMAAB』は13年前(2001年)に生まれました。このJMAABの10周年記念において、「MBDを分かりやすく伝えたい」という目的で発足したのが『いまさら聞けないMBD委員会』です。委員会メンバーが所属する10社でMBDを推進してきたエンジニアが協力し、これまでの経験や将来の夢を伝えるべく推敲を重ね、本連載は完成しました。皆さまのモノづくりの一助となれば幸いです。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- >>連載「モデルベース開発奮戦ちう」
- 「バンビーナ」との関わりを感じられるような気がする
モデルベース開発に必要なツール購入も完了し、燃費世界一を目指すハイブリッド車「バンビーナ」に搭載する変速機「CVT∞」の設計がついに始まった。そこで重要になるのが、車両全体の設計を統括する自動車メーカーとの仕様のすり合わせ作業である。 - モデルベース開発を成功させるには相応の投資が必要です
モデルベース開発を行うにはさまざまなツールを購入する必要がある。事業担当者にとってツールの選定と予算確保は悩みの種。それは、主人公の京子の上司である山田課長にとっても例外ではなかった。