はじめに
これからMBDを学習される方の参考になるような記事を書きたいと思います。
今回は、MBDとは何か?何を使ってどのように開発するのか?を教育で学んだ内容を基に説明します。
モデルベース開発(MBD)とは
モデルベース開発(Model Based Development)とは、制御装置と制御対象の機能をモデル化して活用する開発手法のことです。すなわち実機をモデルに代替し、シミュレーションを行って開発していくということです。実機レスで開発を進めることができるため、設計の初期段階から検証を行うことができ、開発効率や品質の向上、開発期間の短縮といった多くのメリットが得られます。
特に自動車のように、多数のハードウェア・ソフトウェアが関与し、高度かつ複雑なシステムで、なおかつ人命に関わるような安全性・信頼性が最重要視される領域では、MBDの効果が最大限に発揮されます。
実機での検証はV字工程における下流工程でしか実施できません。しかし、MBDを活用すれば上流工程で早期にシミュレーションを行うことが可能のため、仕様の不備などを少ない工数で迅速に取り除くことが可能になります。これにより、下流工程で不具合が発覚して大きな手戻りが発生し、余分な工数がかかってしまうリスクを大幅に低減することができます。
また、シミュレーションを行うことで実機では、検証が困難な条件でも容易に行うことができます。
モデルは「動く仕様書」として、設計者・制御開発者・ソフトウェアエンジニア間でのコミュニケーションや共通認識の形成を支援します。加えて、モデルを使った自動コード生成やテストの自動化も可能なため、品質の高い開発サイクルを短時間で回すことができます。
MBDでは、仕様の変更や設計の改善を繰り返しながら完成度を高めていくように行う繰り返し開発や、既存のモデルをベースに新しいバリエーションを効率的に展開するように行う派生開発が行われるため、一度作ったモデルを資産として扱い、継続的な効果が期待できます。
モデルベースの開発環境
モデルの開発には、MATLAB、Simulinkが用いられます。MATLABは、数値解析、シミュレーション、データ処理等を得意とするプログラミング言語かつ開発環境です。そしてSimulinkは、MATLAB上で動くブロック線図ベースのモデリング、シミュレーションツールです。
MATLABが誕生したきっかけは、とある大学の教授が学生にプログラミングの勉強をすることなく、数値解析や線形代数のアルゴリズムを簡単に試せるようにしたいと考えたところから始まったそうです。このような思想から生まれているため、MATLABもSimulinkも直感的な操作を行うことが出来ます。MATLABは数式を書くような感覚で数値計算ができます。ベクトルの大きさ(配列の要素を全て2乗して合計して、平方根をとる)を出したい場合は、以下のように記述するだけで完了です。
x = [1, 2, 3, 4];
y = x.^2; % 要素ごとの2乗
norm = sqrt(sum(y)); % 合計
さらに、Simulinkもブロックを配置して線で繋ぐだけで動的システムの設計(モデルの作成)をすることができます。また、そのモデルから自動でコードを生成(ACG : Auto Code Generation)できます。そのため、十分にモデル検証をした後、そのモデルからコードを生成すれば、検証済みのコードを容易に得ることができます。
このようにMATLABやSimulinkを用いることで、効率的かつ高品質なモデルベース開発を行うことが出来ます。
おわりに
この記事を通して、MBDとは何か、どのような開発環境で行われているのかがイメージ出来ていただければ幸いです。今後も、自分なりの視点を大切にしながら、知見を共有できる記事を定期的に書いていきたいと思います。