GAIO CLUB

2022年04月12日

【第3回】MBD適応方法の検討

MBDてさぐり奮戦記
MBD(モデルベース開発)てさぐり奮戦記
こんにちは。
今回は、MBD手法を量産機種の開発へ導入するにあたり、第2回「プログラム言語としてのMATLAB Simulink」で説明した課題に対して採用した適用方法の概要を説明いたします。

MBD手法で開発する処理の範囲(1999年当時)

製品に内蔵したマイコンに組み込むソフトウェアでは、制御仕様の数学的な論理演算処理だけではなく、手続き的な処理をおこなう必要があります。第2回で説明したように、組み込みソフトウェアについてなるべく広い範囲を同じ言語で開発するほうが、開発効率、品質上のリスクや人材の面で優れているので、どこまで可能か検討しました。

しかし、MATLAB Simulink(MathWorks社)は、数学的な論理演算処理を構築するのに適したツール(言語)であるものの、手続き的な処理、実行時間の管理が必要な処理について、当時(1999年頃)のSimulinkモデル図(以下モデル図と略します)では適切な記述方法を見つけることができず、このような処理はC言語で記述することにしました。

MBD手法導入前から、手続き的な処理、たとえばデバイスドライバや通信プロトコルのような処理をおこなう層と、論理演算処理をおこなうアプリケーションの層を分けたプログラム構造を採用していましたので、MBD手法を導入するにあたり、まずこのアプリケーションの中で実行時間の時間的制約が厳しくない新規開発部分の一部から、MBD手法を適応することにしました。

カスタムブロック

割込競合回避

当時のSimulinkでは、第2回で説明したように静的変数などの入出力処理で割込競合が発生する可能性があり、課題になりました。モデル図上で既存のブロックを組み合わせれば必要な処理を記述することができそうでしたが、可読性が低く、さらに割込競合を回避するための割込禁止時間を最小限にすることができませんでした。

そこで、適切かつ簡潔に記述するため、カスタムブロックを作成することでMBD手法を適用できるようにしました。

固定小数点演算処理

第2回で説明したように、当時、量産機種でまだ浮動小数点演算処理を使用しておらず、今後新しく開発する機種に、単精度浮動小数点演算器を搭載したマイコンを採用し始めた時期でした。そのため、量産開発に浮動小数点演算を使用する十分なノウハウの蓄積がなく、開発に使用するさまざまな開発支援ツールの浮動小数点演算対応も不十分でした。

そこで、固定小数点演算処理から徐々に浮動小数点演算処理へ移行できるようにするため、モデル図で固定小数点演算処理を適切に記述するためのカスタムブロックを作成しました。

初期化処理

第2回でも説明したように、我々の製品では、制御するシステムの状態(例えばパワーオンなど)により設定すべき変数の初期値が異なる場合がありますが、そのような初期値を適切に記述する方法が見つかりませんでした。

そこで、システムの状態に応じて、C言語により、各モデルの変数を一括で初期設定する処理をおこなうことにしました。

第2回で課題とした、Simulinkモデル図のわかりやすい記述に関する課題については、第5回で概要を説明したいと思います。
次回は、構築した開発環境の概要を説明いたします。
最後まで、お読みいただきありがとうございました。

筆者紹介

のんびり田舎暮らしのエンジニア

約40年前に製造業の会社に入社後、リアルタイム制御をおこなうマイコン組込製品の量産開発を35年間担当し、アセンブラやC言語による制御プログラム開発や、MBDを含むソフトウェア開発環境の構築に従事しました。現役時代は理屈の世界で生きてきたので、退職後は感性の世界に憧れ、写真で絵作りをする世界で遊んでいます。

人気のコラム

最新のコラム