GAIO CLUB

2022年06月10日

【第5回】モデル図記述手法の検討

MBDてさぐり奮戦記
こんにちは。
今回は、第3回で説明したカスタムブロックの概要と、第2回で説明した分かりやすい記述という課題に対して作成したモデル記述ルールの概要を説明いたします。

カスタムブロック

第3回で説明したように、当時(1999年頃)のMATLAB Simulink(MathWorks社)では、適切に記述する方法を見つけることが出来なかった処理があり、カスタムブロックを作成することで意図する処理を簡潔に記述できるようにしました。

このカスタムブロックは、Simulinkモデル図(以下モデル図と略します)上でシミュレーションすることができ、プログラム生成に必要な情報を付加したTargetLink(dSPACE社)用のブロックへ自動変換できるように作成しました。

割込競合回避

1. 割込競合がおきる可能性のある処理

割込競合がおきる可能性がある処理として、下記のような処理がありました。

・変数間で一定の関係性がある複数の静的変数を一括して読み込み又は更新する処理
・ 静的変数のビット操作で、当該変数の他のビットが別の処理で操作される場合
・マイコン機械語の1命令で扱えるビット幅より大きな静的変数の読み込み又は書き込み処理

2. 回避方法

上記のように、静的変数に対する入出力や操作などで割込競合がおきる可能性があるので、静的変数へアクセスするブロックは、ラッパーにより下記の順で処理を実行するようにカスタム化することで、最小限の割込禁止時間で割込競合の可能性を回避できるようにしました。

固定小数点演算処理

第3回で説明したように、固定小数点演算処理をモデル図上で簡潔に記述するために、一般的な固定小数点演算による演算ブロックや、我々の製品の制御の中で頻出する一連の固定小数点演算処理をおこなうカスタムブロックをTargetLink用へ自動変換できるSimulink用ブロックとして作成し、Simulink上で製品プログラムと同じ精度によるシミュレーションができるようにしました。

モデル記述ルール

我々の製品では、さまざまなシステムの状態に応じて制御目標や制御内容を切り替えます。また、故障等の異常状態が発生した場合は、その状態に応じて制御内容を切り替えるなど複雑な仕様になっています。

モデル図は、数学的な演算処理をグラフィカルに記述でき、分かりやすく保守性にも優れています。他方、我々の製品のような複雑な仕様をモデル図で記述すると、多数の処理の切り替えを含んだ複雑な記述が必要になりますが、モデル図はテキストベースの記述に比べて情報密度が低いため、記述するには一般的に、より広い平面と深い階層構造をもった3次元の空間が必要になります。
このため、第2回で説明したように、MBD手法による組織的な量産開発では、モデル図の可読性を向上させ、設計、照査、モデル図のレビュー検証や保守などを担当する関係者が、モデル図から仕様を正しく読み取れるように、モデル図の記述方法を統一するルールを作成することが必要でした。

当時は、まだ参考となる先例がなく、なにが最善なのか分かりませんでしたが、まず決めて運用しなければ、よりよいルールに改善してゆくことも出来ないので、可能なかぎりチェックツールで機械的にモデル図とルールの整合性をチェックできることを年頭に、C言語プログラムのコーディングルールなどを参考にしながら最善と思えるルールを決めました。
そして、運用するなかで発生した問題点をリストアップし、定期的に、改定すべき項目やその表現を協議してルールやチェックツールを改善する活動を続けています。

ルール化した項目の例

1. モデル図の階層構造や各階層で記述すべき内容
2. ブロックの向きや信号線の方向
3. ブロックの使用法(パラメータなどの記述方法、入出力値の制約)やブロックの使用制限
4. 配線の引き方
5. 記述箇所毎で使用できる文字の範囲
6. 命名則
次回は、MBD手法を適用するマイコンを選定したときの選定ポイントについてその概要を説明いたします。
最後まで、お読みいただきありがとうございました。

筆者紹介

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

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

人気のコラム

最新のコラム