モデルベース開発(MBD)ではPC上でモデルによる制御シミュレーションを行ってシステム設計に対する動作検証を行うため、ハードウエアが無い環境でも検証を行うことができ、ソフトウェアの開発効率を向上させることを期待できます。
今回は、モデルベース開発のメリットやプロセスに加えて、開発に適したツールであるMATLAB/Simulinkを用いた手法もあわせて解説します。
テクノプロ・デザイン社ならシステムやツールの選定、MBDの構築の支援はもちろん、人材育成やコンサルティングにも豊富な経験と実績があります。モノづくりからIT産業まで幅広いテクノロジーに秀でたエンジニアを7000人以上有し、日本全国に展開している拠点から、確実なソリューションを迅速に提供します。
お気軽にご相談ください。
モデルベース開発においてMATLAB/SIMULINKで出来ること
モデルベース開発(MBD)は、制御システムの設計段階で制御システムの仕様をモデルで表現し、モデルをPC上でシミュレーションさせて動作検証を行いながら仕様の精度を高める開発手法です。
モデルは制御システムを構成する一部の機能を数式などを用いて表現し、入力に対して出力を行います。これらのモデルを組み合わせて制御モデルと制御対象モデル(プラントモデル)を作成し、制御処理を模擬します。
モデルベース開発では、モデルを制御と制御対象のシステムを物理的な表現で構築する必要がありますが、モデルの作成やシミュレーションには、MathWork社が提供する「MATLAB/Simulink」というツールがお勧めです。
MATLABは、モデル用のプログラムや計算を行えるツールです。Simulinkはモデルをブロック線図で表現して作成するツールで物理モデルを視覚的に表現します。
MATLAB/Simulinkにはプログラムの自動生成やモデルの検証機能、テストの自動化など品質を担保する様々なツールが用意されています。
MATLABとSimulinkにより制御シミュレーションを1つのプラットフォームで構築でき、モデルベース開発による製品開発の効率化には欠かせないツールと言えるでしょう。
モデルベース開発とは|メリットとプロセス
モデルベース開発(MBD)は、制御システムの設計段階で、制御システムの仕様をモデルで表現し、モデルをPC上でシミュレーションさせて動作検証を行いながら仕様の精度を高める開発手法です。
モデルは数式などを用い制御システムを構成する一部の機能を表現し、入力に対して出力を行うものです。これらのモデルを組み合わせて制御モデルと制御対象モデル(プラントモデル)を作成し、制御処理を模擬します。
本項では、モデルベース開発の具体的なメリットとプロセスを解説します。
モデルベース開発のメリット
モデルベース開発には、モデルによるシミュレーションを軸とした手法のため、従来手法とは違う以下のメリットがあります。
スムーズに開発が進められる
従来の開発手法は、テキストベースで書かれた仕様書を基にして図面やコードを製作するため、少なからず解釈に齟齬が生じます。
モデルベース開発では、制御の仕様書をモデルで表現し、シミュレーションによりモデルを動作させます。制御仕様を動かしながら確認することで、違う部門のスタッフも制御仕様を理解しやすくなり、スムーズに開発が進められます。
開発期間およびコストを削減できる
従来の開発手法では、試作品を製作し実験を繰り返しながら開発を進めるため、試作品の作り直しに多大な時間を要します。また、実験でみつけた不具合により、計画に大幅な変更が生じるケースも珍しくありません。
モデルベース開発では、PC上での動作検証や、制御モデルと制御対象製品を用いた検証など、設計段階で制御システムの仕様の妥当性を検証することができます。
制御システムの仕様不備を設計段階で発見可能で、後工程で不具合を見つけて前工程に後戻りする回数を削減することができます。そのため開発期間の短縮やコストの削減につながることが期待できます。
様々なケースの検証ができる
モデルベース開発はモデルによるシミュレーションが中心であるため、現実では再現し難き環境でも検証可能です。
例えば、気温50℃を超える環境と氷点下の環境の両方において製品の挙動の検証が必要なケースが存在する場合、これを実機で試験する場合は、試上記の環境をつくる恒温槽が必要になったり、上記の環境を満たす現地で試験しなければならず、どちらも大きなコストや時間がかかります。
シミュレーションによる検証は、環境を自由に設定でき、様々なケースの検証が可能です。
以上のように、モデルベース開発は開発スピードの向上やより多くの検証を可能とするなどのメリットがあります。
モデルベース開発については以下の記事で詳しく解説しています。
モデルベース開発のプロセス
モデルベース開発の開発プロセスは、V字で表現したウォータフォール開発工程(V字プロセス)を用います。
以下は、制御ソフトウェア開発の工程をV字プロセスで表現した概略図です。
項目 | 制御装置(コントローラ) | 制御対象(プラント) | 内容 | 対象工程 |
MILS | 制御モデル | プラントモデル | シミュレーション動作を確認しながら制御モデルの仕様を検討する | 要件定義、システム設計 |
RCP | RCP装置 + 制御モデル | 実機 | ECUを模擬したRCP装置に制御モデルを組み込み、実機と接続した評価環境 | 要件定義、システム設計 |
ACG | – | – | MILSで検証後の制御モデルを専用ツールでコードに変換する。その後、ECUを構成する他の制御以外の機能の処理のコードと結合し、ECUソフトウエアを作成する。 | プログラム作成 |
HILS | 実機(ECU) | HILS装置+プラントモデル | 制御対象の振る舞いはHILS装置に組み込んだプラントモデルで模擬し、実機環境と近い環境でECUソフトウェアの評価を行う。 | ソフトウェア検証、システム検証 |
備考:上記の正式名称は以下の通りです。
MILS:Model In the Loop Simulation / RCP:Rapid Control Prototyping / ACG:Automatic Code Generation / HILS:Hardware In the Loop Simulation
また、モデルベース開発は主に以下のステップで進められます。
1.要件定義
開発するシステムの要件や完成イメージを定義します。MILSの手法を用いることで、開発するシステムが実現できるのか妥当性の確認や実験を行うことができます。
2.システム設計
開発するシステムに応じて、制御装置の制御仕様を設計します。
MILSの手法を用いることで、定義した設計内容に対してこの段階で動作検証を行うことができます。RCPの手法を用いることで、この時点の制御モデルを実機環境で動作検証を行うことができ、実機環境でしか分からない課題などをこの段階で見つけることができます。
3.ソフトウェアの設計
システム仕様に対して、ECUソフトウェアをどのように製作するか設計します。
制御処理部は、制御モデルをそのまま流用できます。ECU向けのソースコードを生成するに向けて必要な準備事項があれば、この段階で検討します。制御モデルでは表現できない、または得意ではない箇所(マイコン、ECU回路制御、IOや通信などの下位層の設計、データベース処理などのアプリ層の設計)は従来通りに設計を行います。
4. プログラム作成
制御処理部は、MATLABなどのツール用いて制御モデルからソースコードを自動で生成します(ACG)。そのため、制御処理部のプログラムの作成はほぼ不要になります。生成した制御処理部のコードは制御以外の機能のコードと結合して、ビルドを行い、ECUソフトウェアのバイナリファイルの作成を行います。
5.ソフトウェアの検証
ソフトウェアの検証は、モデルから自動生成されたコードおよび手動で作成したコードに対し、単体テスト/結合テストを行い、記載ミスやシステムとの整合性を検証します。
その後、ビルドしたECUソフトウェアに対し、システム設計通りに動作するか検証を行います。ECU評価用の試験ベンチを用いて、ECUに信号入力と、出力信号の測定を手動で試験を行うのに対し、HILSを用いることで、ソフトウェアの検証を自動で行うことができるため試験を効率よく進めることができます。
6.システムの検証
各種ECUや各種装置を用いて本番環境に近い環境を構築して、製作/製造したものがシステム仕様で想定したとおりに動作することを検証します。
HILSを用いることで、実機が準備できない場合の代理を担わせたり、試験の自動化、実機では実施が難しい試験を行うことができます。
7.実機評価
本番環境で動作や性能の評価を行います。最終製品の環境で最適な状態になるようにキャリブレーションを行います。
上記より、モデルベース開発はモデルの作成から始まり、シミュレーションを繰り返しながら、実機による動作検証につなげていく開発手法と言えます。
HILSについては以下の記事で詳しく解説しています。
MATLAB/Simulink
モデルベース開発における対象とコントローラのモデル化には、MATLAB/Simulinkといったツールがよく用いられています。
本項ではMATLAB/Simulinkの機能と制御におけるモデル/コントローラの位置付けを解説します。
MATLAB/Simulinkで出来ること
MATLABとは、MathWork社が提供するモデル用のプログラムや計算を行えるツールです。また、SimulinkはMATLAB上に実装されており、ブロック線図(機能に応じて細分化したシステムをブロックと線で繋いだ図)を視覚的に作成し、モデルの作成からシミュレーションまでを行うツールです。
例えば、ロボットアームの動きを制御したい場合を考えます。
ロボットアームの動きを表現するには、アームの速度と位置のコントロールが必要です。そこで、ロボットアームの関節に取り付けた加速度センサーの情報とロボットアームの機構からアームの速度や位置を計算する手法が広く用いられています。
Simulinkでは、ロボットアームのモデルを機能ごとに細分化し、ロボットアームの制御システム全体を構築できます。Simulinkには積分ブロックなどの演算ブロックも用意されており、上記の加速度から速度・位置の計算もブロックを用いた記述が可能です。作成したモデルを、Simulink上でシミュレーションを実行すると、制御システム全体の動作を確かめることができます。
さらに、モデルからソースコードを自動生成するツールボックスを提供しているため、ECUソフトウェアの作成がスムーズに行えます。
このように、MATLAB/Simulinkは制御モデルの作成および、システム設計の検証に役立ちます。
モデルとコントローラ
制御工学において、制御装置と制御対象は以下の様に定義されています。
●制御装置(コントローラ):制御対象の動作を観察し、制御対象をを適切に制御するもの
●制御対象(プラント):制御対象の振る舞いを示行うもの
モデルの作成では、制御システムを数式(力学などの微分方程式など)で表現し、制御システムを構築します。
また、制御システムは大きく分けると、制御装置と制御対象の2つに分けられます。
制御対象のモデルは、制御装置から制御を受ける側であり、制御対象のシステムを模擬してシミュレーションした制御結果を制御装置にフィードバックします。
ロボットの場合は構造や機構を数式化したシステムに当たります。
一方、制御装置は制御対象が意図した状態になるまで、制御対象を制御します。
例えば、上図のような関節を1つ持つロボットアームの場合、アーム先端の動きは関節の動作により決まります。そのため、ロボットアームの先端を目標の位置に動かすためには、先端が目標の地点まで近づくように関節を動作させるモータを制御する必要があります。
制御装置のモデルにはモータに対しどの程度の電流量、電流の向き、制御時間でアームがどの程度動作するか数式で表現されており、センサーで得た位置座標(および速度)の情報を基に、モータの制御量を毎回計算することでアームの制御を実現しています。
MATLAB/Simulinkは、モデルとコントローラを同じプラットフォーム内で構築しシミュレーションの様子を動的に確認することが可能で、制御システムの開発に欠かせないツールと言えるでしょう。
MATLAB/Simulinkを用いたモデルベース開発
モデルベース開発において、モデルの作成および検証は重要なポイントです。本項では、モデル作成・検証とコード生成・検証について、MATLAB/Simulinkの適用を解説します。
シミュレーションモデルの作成とコード生成
MATLAB/Simulinkを用いて制御モデルとプラントモデルを作成し、モデルをシミュレーションさせてのシステム仕様の検証(MILS)を行います。
次に、制御モデルをRCP装置に実装し、実機の制御対象と接続して、システム仕様の検証(RCP)を行います。MILS、RCPを用いてシステム仕様の品質を向上させた後、MATLAB/Simulinkの自動コード生成ツールを使って、制御モデルから制御部のソースコードを生成します(ACG)。そのため、アプリケーション層の制御処理部は、ソフト設計、コーディングという作業を短縮化することができます。
生成した制御部のソースコードを他の処理のソースコードと結合し、ECUソフトウェアのバイナリファイルを生成します。
制御モデルを検証する
MATLAB/Simulinkを用いた制御モデルの検証は、モデル段階とコード生成後の両方で実施可能です。
MATLABには、試験履歴を管理できる機能(Requirements Toolbox)やモデル内の設計エラーを検出できる機能(Simulink Design Verifier)が存在します。これらにより、作成したモデルの整合性を担保できる他、次工程におけるトラブルの原因を探す際に活用できます。
一方、コード生成後の検証では、MATLABに搭載されたPolyspace Bug FinderおよびPolyspace Code Proverの機能が役立ちます。これらは、手動および自動で生成したコードをあわせて検証できるので、実機搭載後のシステムトラブルを最小限に抑えることが期待できます。
また、その他のテストツールは、試験の条件と求められる結果をセットで定義でき、さらに自動で試験を実施したり、実施記録や結果を一元管理したりできる機能を提供しています。
このように、MATLAB/SIMULINKはモデルベース開発におけるモデルの作成からソフトウェアの実装まで幅広く使用でき、実機評価時にも役立つツールと言えます。
モデルベース開発にMATLAB/Simulinkを用いた実用例
本項では、MATLAB/Simulinkを用いたモデルベース開発の具体例を3つ紹介します。
油圧ショベル用の制御ソフトウェアの開発
油圧ショベルは、エンジンから駆動されたポンプで油圧を作り出しています。油圧ショベルを操作すると、エンジンに急激な負荷が掛かり、排気ガスを多く排出する点が課題です。
そのため、エンジンの負荷変動に応じた回転数の低下を最小限とする制御システムの設計が必要となります。
そこで、住友重機械工業ではMATLAB/Simulinkを用いたモデルベース開発を導入し、Simulinkによるエンジンパラメータの推定や自動コードの生成を行いました。その結果、短時間でエンジンと油圧ショベルにとって最適な制御システムを設計でき、開発工数を半減させることにも成功しました。
このように、MATLAB/Simulinkを用いたモデルベース開発は、スムーズな開発の助けになります。
引用: 住友重機械工業、油圧ショベル用の組み込み型モデル予測制御ソフトウェアの開発を加速(MathWorks)
空燃比コントローラの改良
空燃比とは、エンジンと燃料の重量比を表した物理量で、エンジン性能に大きく影響する要素の1つです。また、エンジンの燃費を良化させ、排気ガスの量を最小限に抑えるには、空燃比の適切な制御が不可欠です。
しかしながら、制御の最適化を従来のプロセスで行うと、膨大なパターンが存在するパラメータを総当たりで試していく必要があり、膨大な時間を要します。
そこで、日産自動車ではMATLAB/Simulinkを用いて、エンジンのプラントモデルを作成し、パラメータを同定して、その調整を行いました。結果、短期間で排気ガス量の削減できる最適な制御コントローラの完成に至り、開発期間の大幅な削減に成功しました。
このように、MATLAB/Simulinkは開発期間の短縮における重要な役割を果たします。
引用:日産が空燃比コントローラーに要するキャリブレーション時間を短縮し、排出ガス性能を改善(MathWorks)
自動車内のコントローラ間における連携不具合の早期発見
引用:【開発事例】「不具合の早期発見」「開発ロス削減」に貢献する MBD・MILS とは(テクノプロ・デザイン社 )
テクノプロ・デザイン社では、MATLAB/Simulinkを用いたモデルベース開発における豊富な経験を有しています。その1例として、自動車内のコントローラ間における連携不具合の早期発見が挙げられます。
自動車には、様々な制御機器が混在しており、それぞれのコントローラの連携が必要不可欠です。しかしながら、従来の開発手法ではすべての機器を自動車に搭載し、それぞれのシステムの連携および調整が必要でした。
そこで、テクノプロ・デザイン社はMATLAB/Simulinkを用いて、試作品の製作前にシミュレーションによるシステム検証を進めました。結果、途中経過の可視化や結果レポートの一元化を実現し、連携不具合の早期発見を可能としました。加えて、出力ファイルを汎用化することで、検証効率の向上にもつながり、より多くのケースにおける検証を実現しています。
このように、モデルベース開発にMATLAB/Simulinkを用いて検証効率を上げることで開発期間内に様々なケースの検証を行えると期待できます。
MATLAB/Simulinkによるモデルベース開発はテクノプロ・デザイン社にお任せください
今回は、MATLAB/Simulinkを用いたモデルベース開発について、メリットやプロセスから実例までを解説しました。
テクノプロ・デザイン社では多角的なモデルベース開発支援サービスを提供しています。要件定義からモデリングまでのシームレスな設計をはじめ、モデルベースシステムズエンジニアリングの構築支援、モデルベース開発に関する人材育成やコンサルティング支援も可能です。お客様の課題に合わせたモデルベース開発支援をご提案いたしますので、ぜひお気軽にお問合せ・ご相談下さい。