第7回Stateflowの機能ステートチャートとフローチャート
第7回 MBD【モデルベース開発】解説 コラム
第7回 MBD(モデルベース開発)コラム、今回は、Stateflowとは何かを紹介します。
目次
はじめに
https://member.eureka-box.com/products/10/categories/2150049210/posts/2162335857
Stateflowは、ステートチャートとフローチャートを記述するためのSimulink拡張機能です。
Stateflowチャートは、Simulinkモデルのブロックとして作成します。ライブラリブラウザで「Chart」ブロックを追加し、そのブロックをダブルクリックするとStateflowエディタが開きます。
それでは、ステートチャートとフローチャートのそれぞれについて、概要と具体例、どのような場合に利用できるかを見ていきましょう。
ステートチャート
https://member.eureka-box.com/products/10/categories/2150049210/posts/2162335857
まず、ステートチャートからご説明します。ステートチャートは、「状態遷移図」と同じものです。
“モード”あるいは“状態”に応じて処理を切り替えたい場合、例えば出力する値の算出方法を切り替えたい場合に、「モードや状態がどのように遷移するか」、「各モードや状態でどのように値を算出するか」といった内容を記述できます。
また、シミュレーションによって、状態遷移の様子や、各状態で実行される演算の様子を確認することもできます。
ステートチャートの実装例
https://member.eureka-box.com/products/10/categories/2150049210/posts/2162335857
実装例を見てみましょう。
こちらは、開始ボタンと停止ボタンしかもたない単純なストップウォッチのステートチャートです。
「モードや状態がどのように遷移するか」が矢印で表現され、「各モードや状態でどのように値を算出するか」が箱の中に記載されています。
ステートチャートの使いどころ
https://member.eureka-box.com/products/10/categories/2150049210/posts/2162335857
ステートチャートでは、条件に応じて状態を切り替える、あるいは状態に応じた値を生成して出力する、などのロジックを作成できます。
ただし、このようなロジックは Simulink を用いて記述することも可能です。では、どのような場合にStateflowを使用すれば良いでしょうか。
主な基準としては、
・状態の数が多い
・現在の状態によって移行先が限定される
といった場合に、Stateflowの方が簡潔に記述でき、わかりやすい表現になることが多いと考えられます。
Eureka Boxは厚生労働省が実施している助成金、人材開発支援助成金の適用対象となります。
フローチャート
https://member.eureka-box.com/products/10/categories/2150049210/posts/2162335857
次にフローチャートです。こちらは、「流れ図」に該当します。
順次・分岐・反復といった制御構造の記述方法がパターン化されており、そのパターンに従って、処理の流れ・手順を記述できます。
また、シミュレーションによって、処理ステップとその経過を確認することができます。
フローチャートの実装例
https://member.eureka-box.com/products/10/categories/2150049210/posts/2162335857
こちらは、1から指定された値までを足し込み、それが100を超えるかを判定するロジックの実装例です。
値の足しこみが、繰り返しとして表現され、その後、100を超えるかの判定が、分岐として表現されています。右に示したのは、同じことを表すCのコードです。
フローチャートの使いどころ
https://member.eureka-box.com/products/10/categories/2150049210/posts/2162335857
フローチャートを用いると、制御構造は可視化できますが、実際の演算記述はソースコードとあまり変わりがなく、演算が複雑な場合、ロジックの可視化という点ではSimulinkに劣ります。
そのため、フローチャートについては、まずはSimulinkの使用を検討しましょう。そのうえで、演算が単純な式のみで構成されていて、Simulinkよりも簡潔に書ける場合は、Stateflowを使用してもよいでしょう。また、繰り返し構造をSimulinkよりも効率よく記述できるので、演算に繰り返し構造が含まれる場合はStateflowも候補になります。
これからのMBD(モデルベース開発)に求められる技術を知るには
MBDの技術を実際に学んでみたいという方、まずは無料でお試しいただけるオンライン学習を準備しています。
業務が多忙なエンジニアでも、スキマ時間で効率的に実践的な学習が出来るEureka Boxは、エンジニアの現場の声から生まれたツールです。
エンジニアの独学・スキルアップに! 他では学べない技術が充実
上流工程ソフトウェア開発技術を学ぶ!
Eureka Box(ユーリカボックス)
無料会員登録だけでも以下の特典が受けられます。
- 各連載コラムの全容、未公開コラムも一気にまとめて読める(一部動画解説付!)
- USDM(要求記述)、MBD(モデルベース開発)、システムズエンジニアリング、AWS Greengrass(新世代エッジエンジニアのための技術講座)など、ソフトウェア開発に関わる知識がギュッと凝縮、困った時のお助けアイテムとしても長期で活用出来る
- ソフトウェア開発に関わる無料お試しコンテンツも充実
まとめ
https://member.eureka-box.com/products/10/categories/2150049210/posts/2162335857
本コラムでは、Stateflow の主要機能であるステートチャートとフローチャートについて簡単に説明しました。
Stateflowを使って書ける内容は、Simulinkでも記述できることが多いのですが、複雑な状態切り替えのモデリングや、繰り返し構造を含む処理手順のモデリングの場合は、Stateflowを使用すると効果的です。
Stateflowを上手に活用しましょう。
コンサルティングサービスのご案内
システム・ソフトウェア開発の問題を解決するエクスモーションのコンサルティング。
エクスモーションのコンサルタントは、自動車業界・医療機器業界で多くの支援実績があります。開発現場の皆さまと一緒に手を動かし、状況に合った最適解を見つけることで問題解決に導きます。
MBD(モデルベース開発)のソリューションはこちらをご覧ください。
トップ企業をサポートしてきた技術と知見を1冊に「ソリューションガイドブック」
私達エクスモーションが行った、日本を代表する企業へのコンサルティングやトレーニングとは?
オンライン学習 Eureka Box誕生のベースとなった技術や知見が満載!
実際に支援を行ったお客様からのメッセージも掲載し、読み応えある1冊に仕上げています。