90
© Copyright 2007 JMAAB. All rights reserved. 1 CONTROL ALGORITHM MODELING GUIDELINES USING MATLAB®, Simulink® and Stateflow® Version 2.0(和訳) Japan MATLAB Automotive Advisory Board JMAAB2007 7 27

CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 1

CONTROL ALGORITHM MODELING GUIDELINES USING MATLAB®,

Simulink® and Stateflow® Version 2.0(和訳)

Japan MATLAB Automotive Advisory Board

(JMAAB) 2007 年 7 月 27 日

Page 2: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 2

■ 著作権について 本ドキュメントの著作権は、JMAAB に帰属します。 JMAAB は、本文書の内容に関し、いかなる保証もするものではありません。万一本文書を利

用して不具合等があった場合でも、JMAAB は一切責任を負いかねます。また、本文書に記載

されている事項は予告なしに変更または廃止されることがありますので、あらかじめご了承くだ

さい。

■ 本ドキュメントの取扱いについて

本文書は、非営利目的、または利用者内部で使用する場合に限り、複製が可能です。また、本

文書を引用する場合は、本文書からの引用であることを明示し、引用された著作物の題号や著

作者名を明示する等の引用の要件を満たす必要があります。 本成果物については、JMAAB ホームページ(http://jmaab.mathworks.jp)を参照下さい。 その他のお問い合わせは、JMAAB 事務局([email protected])へご連絡下さい。

■ 本ドキュメントにおける注意事項

本文書は、“CONTROL ALGORITHM MODELING GUIDELINES USING MATLAB®, Simulink® and Stateflow® Version 2.0”を和訳したものであるが、ガイドラインの内容が理解

し易くなると判断したものは表現を変更しています。原文と表現が一致していない部分がありま

すことをご了承ください。

Page 3: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 3

1. 更新履歴 ...................................................................................................................................... 6

2. はじめに ....................................................................................................................................... 7

2.1. ガイドラインとは… .................................................................................................................. 7 2.1.1. ガイドラインのテンプレート ............................................................................................... 7 2.1.2. ID .................................................................................................................................... 7 2.1.3. タイトル ............................................................................................................................ 7 2.1.4. 重要度 ............................................................................................................................ 7 2.1.5. 範囲 ................................................................................................................................ 8 2.1.6. MATLAB バージョン ........................................................................................................ 8 2.1.7. 前提条件 ......................................................................................................................... 8 2.1.8. 記述内容 ......................................................................................................................... 8 2.1.9. 根拠 ................................................................................................................................ 8 2.1.10. 更新履歴 ....................................................................................................................... 9

2.2. ガイドラインの使用 ................................................................................................................. 9 2.2.1. ガイドラインの構成........................................................................................................... 9

3. 命名規則 .................................................................................................................................... 10

3.1. 一般規則 ............................................................................................................................. 10 3.1.1. ar_0001: ファイル名に使用できる文字 ........................................................................... 10 3.1.2. ar_0002: ディレクトリ名に使用できる文字 ...................................................................... 10

3.2. モデル内の規則 ................................................................................................................... 11 3.2.1. jc_0201: Subsystem の名前に使用できる文字 .............................................................. 11 3.2.2. jc_0211: Inport ブロック / Outport ブロックに使用できる文字 ......................................... 11 3.2.3. jc_0221: 信号線の名前に使用できる文字...................................................................... 12 3.2.4. jc_0231: ブロックの名前に使用できる文字 .................................................................... 12 3.2.5. na_0014: Simulink / Stateflow でローカル言語を使用できる箇所 .................................. 13

4. モデルアーキテクチャ .................................................................................................................. 15

4.1. Simulink / Stateflow の使い分け .......................................................................................... 15 4.1.1. na_0006: Simulink / Stateflow の組合せ方法 ............................................................... 15 4.1.2. na_0007: フローチャート / 真理値表 / ステートマシンの使用方法 ................................... 19

4.2. Subsystem の階層構造 ....................................................................................................... 20 4.2.1. db_0143: 各モデル階層で使用できるブロックタイプ ....................................................... 20 4.2.2. db_0144: Subsystem の使用方法 ................................................................................ 20 4.2.3. db_0040: モデルの階層構造 ......................................................................................... 21

4.3. JMAAB モデルの階層構造 ................................................................................................... 21 4.3.1. jc_0301: コントローラモデル .......................................................................................... 21 4.3.2. jc_0311: トップレイヤ ..................................................................................................... 22 4.3.3. jc_0321: トリガレイヤ ..................................................................................................... 23 4.3.4. jc_0331: 構造レイヤ ...................................................................................................... 23 4.3.5. jc_0341: データフローレイヤ .......................................................................................... 24

5. コンフィギュレーションパラメータ .................................................................................................. 26

5.1.1. jc_0011: 論理信号に対する 適化パラメータ設定 ......................................................... 26 5.1.2. jc_0021: 診断パラメータ設定 ......................................................................................... 26

6. Simulink ................................................................................................................................... 27

6.1. ダイアグラムの外観 .............................................................................................................. 27 6.1.1. na_0004: Simulink モデルの表示設定 .......................................................................... 27 6.1.2. db_0043: モデルで使用するフォントとフォントサイズ ...................................................... 27 6.1.3. db_0042: Inport ブロック / Outport ブロックの使用方法 ................................................. 28 6.1.4. na_0005: Inport ブロック / Outport ブロック名の表示 ..................................................... 29 6.1.5. jc_0081: Inport ブロック / Outport ブロックの“アイコンの表示” ...................................... 29 6.1.6. jm_0002: ブロックのサイズ調整 ..................................................................................... 30 6.1.7. db_0142: ブロック名の位置 ........................................................................................... 30

Page 4: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 4

6.1.8. jc_0061: ブロック名の表示 ............................................................................................ 31 6.1.9. db_0146: 条件付き Subsystem 内のブロック配置 ......................................................... 32 6.1.10. db_0140: ブロックパラメータの表示 ............................................................................. 33 6.1.11. jm_0013: アノテーションの影 ....................................................................................... 33 6.1.12. db_0032: 信号線の結線 ............................................................................................. 34 6.1.13. db_0141: Simulink モデルのデータフロー ................................................................... 34 6.1.14. jc_0171: Goto ブロック / From ブロック使用時の結線 .................................................. 35 6.1.15. jm_0010: Inport ブロック / Outport ブロックの名前 ....................................................... 35 6.1.16. jc_0281: Trigger Port ブロック / Enable Port ブロックの名前 ....................................... 36

6.2. 信号 ..................................................................................................................................... 36 6.2.1. na_0008: 信号ラベルの表示 ......................................................................................... 36 6.2.2. na_0009: 信号ラベルの登録と伝播 ............................................................................... 37 6.2.3. db_0097: 信号ラベルの位置 ......................................................................................... 38 6.2.4. db_0081: 未接続の信号とブロック入出力 ...................................................................... 38

6.3. ブロックの使用方法 .............................................................................................................. 39 6.3.1. na_0003: If Condition ブロックの使用方法 .................................................................... 39 6.3.2. na_0002: 論理信号 / 数値信号の使用 .......................................................................... 39 6.3.3. jm_0001: コントローラ内での使用禁止ブロック ............................................................... 40 6.3.4. hd_0001: Sinks カテゴリの使用禁止ブロック ................................................................. 41 6.3.5. na_0011: Goto ブロック / From ブロックの可視範囲 ...................................................... 42 6.3.6. jc_0141: Switch ブロックの使用方法 ............................................................................. 42 6.3.7. jc_0121: Sum ブロックの使用方法 ................................................................................ 43 6.3.8. jc_0131: Relational Operator ブロックの使用方法 ........................................................ 44 6.3.9. jc_0161: Data Store Read / Write / Memory ブロックの使用方法 ................................. 44

6.4. ブロックパラメータ ................................................................................................................. 44 6.4.1. db_0112: インデックスの使用方法 ................................................................................. 44 6.4.2. na_0010: ベクトル / バス信号の使用方法 ...................................................................... 45 6.4.3. db_0110: 基本ブロックにおけるチューナブルパラメータ ................................................. 46

6.5. Simulink パターン ................................................................................................................ 46 6.5.1. na_0012: Switch ブロック / If Action Subsystem の使い分け ........................................ 47 6.5.2. db_0114: if-then-else-if 構文の Simulink パターン ........................................................ 47 6.5.3. db_0115: case 構文の Simulink パターン ..................................................................... 48 6.5.4. db_0116: 論理構文の Simulink パターン ....................................................................... 50 6.5.5. db_0117: ベクトル信号の Simulink パターン .................................................................. 50 6.5.6. jc_0351: 初期化処理 .................................................................................................... 52 6.5.7. jc_0111: Subsystem の向き .......................................................................................... 53

7. Stateflow .................................................................................................................................. 54

7.1. チャートの外観 ..................................................................................................................... 54 7.1.1. db_0123: Chart のポート名 ........................................................................................... 54 7.1.2. db_0129: Stateflow の遷移 ........................................................................................... 54 7.1.3. db_0137: ステートマシンのステート ............................................................................... 55 7.1.4. db_0133: フローチャートの記述方法.............................................................................. 55 7.1.5. db_0132: フローチャートの遷移 ..................................................................................... 56 7.1.6. jc_0501: ステートの書式 ............................................................................................... 57 7.1.7. jc_0511: グラフィカル関数の戻り値の更新 ..................................................................... 58 7.1.8. jc_0531: デフォルト遷移 ................................................................................................ 59 7.1.9. jc_0521: グラフィカル関数の戻り値の使用方法 ............................................................. 60

7.2. Stateflow のデータと演算 ..................................................................................................... 60 7.2.1. na_0001: Stateflow のビット演算子 ............................................................................... 60 7.2.2. jc_0451: Stateflow における単項演算子“-”の使用方法 .............................................. 61 7.2.3. na_0013: Stateflow の比較演算 ................................................................................... 62 7.2.4. db_0122: Simulink と Stateflow のインターフェース ....................................................... 63 7.2.5. db_0125: Stateflow のローカル変数 ............................................................................. 63 7.2.6. jc_0481: Stateflow における実数の比較演算 ................................................................ 64 7.2.7. jc_0491: Stateflow における変数の再利用 .................................................................... 64 7.2.8. jc_0541: Stateflow のチューナブルパラメータ ................................................................ 65

Page 5: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 5

7.2.9. db_0127: Stateflow における MATLAB コマンド ............................................................ 66 7.2.10. jm_0011: Stateflow におけるポインタ .......................................................................... 67

7.3. イベント ................................................................................................................................ 67 7.3.1. db_0126: イベントの定義方法 ....................................................................................... 67 7.3.2. jm_0012: イベントブロードキャスト ................................................................................. 67

7.4. ステートマシンパターン ......................................................................................................... 68 7.4.1. db_0150: ステートの遷移条件パターン .......................................................................... 68 7.4.2. db_0151: ステートマシンの遷移アクションパターン ......................................................... 69

7.5. フローチャートパターン ......................................................................................................... 70 7.5.1. db_0148: フローチャートの遷移条件パターン................................................................. 70 7.5.2. db_0149: フローチャートの条件アクションパターン ......................................................... 71 7.5.3. db_0134: if 構文のフローチャートパターン ..................................................................... 72 7.5.4. db_0159: case 構文のフローチャートパターン ............................................................... 73 7.5.5. db_0135: ループ構文のフローチャートパターン ............................................................. 74

8. 付録 A: 自動化ツールに対する提言 ........................................................................................... 76

9. 付録 B: ユーザによるガイドライン追加時の注意点 ...................................................................... 77

10. 付録 C: フローチャートの使用例 ............................................................................................... 78

11. 付録 D: Stateflow オブジェクトクイックリファレンス ................................................................... 83

12. 付録 E: 参考資料 ..................................................................................................................... 84

Page 6: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 6

1.更新履歴 日付 変更内容

2001 年 4 月 2 日 初版:Version 1.00

2007 年 7 月 27 日 改編:Version 2.0

2007 年 7 月 27 日 和訳:Version 2.0

Page 7: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 7

2.はじめに

2.1. ガイドラインとは… 自動車用制御装置のモデルを運用する上で、作成者と使用者の間で容易に共通の理解が得られる

ように、Simulink / Stateflow モデルの記述について重要な基本的なルールを規定したものである。 主に、以下のことを目的として制定した。 システム結合の容易化 インターフェースの明確化 モデル、コード、ドキュメントの体裁統一 再利用性の向上 可読性の確保 モデル交換の容易化 簡潔かつ効率的なプロセスの実現 完成度が高いドキュメントの作成 仕様理解の容易化 仕様変更の容易化 モデル作成者、使用者間の協調 先行開発から量産開発へのスムーズな移行

2.1.1. ガイドラインのテンプレート ガイドラインは以下のテンプレートに従って作成されている。独自でガイドラインを作成する場合も、こ

のテンプレートの使用を推奨する。

ID: タイトル XX_nnnn: ガイドラインのタイトル(短く、他と重複しない)

重要度 必須 / 強く推奨 / 推奨 のいずれか 1 つ

範囲 MAAB / NAMAAB / JMAAB / 会社名(社内ルールを追加する場合)

MATLAB バージョン

ALL RX、RY、RZ RX 以降 RX 以前 RX から RY

前提条件 本ガイドラインの前提となるガイドラインへのリンク(ID+タイトル)

記述内容 ガイドラインの説明(テキストおよびイメージ)

根拠 ガイドラインを準拠しなければならない理由

更新履歴 終変更時のバージョン番号

注意:このテンプレートは、ガイドラインを正しく理解するため、 低限必要な項目を表にしたものである。

既存の項目のいずれにも重複しない限り、新たな項目をこのテンプレートに追加することができる。

2.1.2. ID ID は、アルファベットの小文字 2 文字(ガイドライン著者を表す)と、4 桁の数字をアンダースコアでつ

ないだものである。ID は、永久固定とし変更されることはなく、ガイドラインを参照する時に使用される。

na、jp、jc、eu は MAAB ガイドラインで使用する。また、db、jm、hd、ar は既に使用されている。独自

にガイドラインを追加する場合は、これら 2 文字で始まる ID を使用してはならない。

2.1.3. タイトル タイトルは、そのガイドラインを短く説明したユニークなものである。タイトルは、ガイドラインを参照す

る時に使用される。

2.1.4. 重要度 重要度は、“必須”、“強く推奨”、“推奨”のいずれかに分類される。重要度は重要性を記述しているだ

けでなく、違反した場合に起こり得る結果の重大性も考慮している。

Page 8: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 8

必須 強く推奨 推奨

定義 必ず準拠すべき項目 品質を向上させるための項目

可能な限り準拠すべき項目 準拠が望ましい項目

重大性 もしガイドラインに違反すると ...

重要な内容が欠落する モデルが不正確な動作をする

可能性がある

品質と体裁が損なわれる 保守性、移植性、再利用性の

リスクが増大する

モデルの体裁が 他のプロジェクトに準拠しない

適用免除 もしガイドラインに違反しなければならない場合は...

準拠できない理由を 明記しなければならない

2.1.5. 範囲 範囲は、以下のいずれかに設定される。 MAAB: JMAAB、NAMAAB で合意されたガイドライン JMAAB: JMAAB(Japan MAAB)でのみ合意されたガイドライン NAMAAB: NAMAAB(North America MAAB)でのみ合意されたガイドライン

“MAAB(MathWorks Automotive Advisory Board)”は、TMW(The MathWorks)と連携して活動する

自動車メーカーとサプライヤーのグループである。MAAB には、JMAAB と NAMAAB というサブグルー

プがある。 “JMAAB”は、MAAB のサブグループであり、TMW と連携して活動する日本の自動車メーカーとサプラ

イヤーのグループである。 “NAMAAB”は、MAAB のサブグループであり、TMW と連携して活動する北米とヨーロッパの自動車メ

ーカーとサプライヤーのグループである。

2.1.6. MATLAB バージョン 全ての MATLAB バージョンをサポートしたガイドラインであるが、特定のバージョンのみサポートする

ガイドラインもある。この項目には以下の 5 つのフォーマットでバージョン情報が記述される。 ALL: 全ての MATLAB バージョン RX、RY、RZ: 特定の MATLAB バージョン RX 以前: RX 以前の MATLAB バージョン RX 以降: RX 以降の MATLAB バージョン RX から RY: RX から RY の MATLAB バージョン

2.1.7. 前提条件 前提条件は、このガイドラインの前提条件となるガイドラインの ID とタイトルが記述される。

ID とタイトルは、リンクが設定されている。

2.1.8. 記述内容 記述内容は、ガイドラインの詳細な内容が図表等を用いて記述されている。

2.1.9. 根拠 根拠には、ガイドラインを推奨する以下の理由の内、1 つ以上が選択されている。 可読性の向上

可読性の確保 モデル、コード、ドキュメントの体裁統一 インターフェースの明確化 完成度が高いドキュメントの作成

プロセス / ワークフローに効果的

Page 9: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 9

保守性の向上 仕様変更の迅速化 再利用性の向上 モデル交換の容易化 移植性の向上

解析とシミュレーションが効率的 シミュレーションの高速化 シミュレーション使用メモリの削減 計測環境へのモデル接続の容易化

検証が効率的 機能要求に対するトレーサビリティの確保 テストの容易化 システム結合の容易化 インターフェースの明確化

組込みコード生成に効果的 / 効率的 仕様変更の容易化 生成コードのロバスト性確保

2.1.10. 更新履歴 更新履歴には、 終変更した際のバージョン番号が記述される。

2.2. ガイドラインの使用 本ガイドラインの構成を次項に記述する。また、ガイドラインチェッカーの情報を付録 A に記述する。

2.2.1. ガイドラインの構成 本ガイドラインの前半は、命名規則とモデルアーキテクチャに関して記述され、すべてのモデルに適

応できる基本ガイドラインである。後半は、Simulink、Stateflow 個別のガイドラインである。いくつかの

ガイドラインは、他のガイドラインを前提としており、それらはリンクにより呼び出される。

Page 10: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 10

3.命名規則

3.1. 一般規則

3.1.1. ar_0001: ファイル名に使用できる文字

ID: タイトル ar_0001: ファイル名に使用できる文字

重要度 必須

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

ファイル名は、以下の条件を満たすこと。

書式 ファイル名=名前.拡張子 名前:空白文字と先頭に数字は不可 拡張子:空白文字は不可

一意性 プロジェクト使用ディレクトリ内のファイル名は重複してはならない

使用可能文字 名前: a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _ 拡張子: a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9

アンダースコア 名前: 単語の区切りに使用 連続使用不可 先頭には使用不可 末尾には使用不可

拡張子: 使用不可

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

3.1.2. ar_0002: ディレクトリ名に使用できる文字

ID: タイトル ar_0002: ディレクトリ名に使用できる文字

重要度 必須

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

ディレクトリ名は、以下の条件を満たすこと。

書式 ディレクトリ名=名前 名前:空白文字と先頭に数字は不可

一意性 プロジェクトで使用するディレクトリ名は重複してはならない

使用可能文字 名前: a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G

Page 11: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 11

H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _

アンダースコア 名前: 単語の区切りに使用 連続使用不可 先頭には使用不可 末尾には使用不可

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

3.2. モデル内の規則

3.2.1. jc_0201: Subsystem の名前に使用できる文字

ID: タイトル jc_0201: Subsystem の名前に使用できる文字

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Subsystem の名前は、以下の条件を満たすこと。

書式 名前:空白文字と先頭に数字は不可

使用可能文字 名前: a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _

アンダースコア 名前: 単語の区切りに使用 連続使用不可 先頭には使用不可 末尾には使用不可

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

3.2.2. jc_0211: Inport ブロック / Outport ブロックに使用できる文字

ID: タイトル jc_0211: Inport ブロック / Outport ブロックに使用できる文字

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Inport ブロック / Outport ブロックの名前は、以下の条件を満たすこと。

書式 名前:空白文字と先頭に数字は不可

使用可能文字 名前: a b c d e f g h i j k l m n o p q r s t u v w x y z

Page 12: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 12

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _

アンダースコア 名前: 単語の区切りに使用 連続使用不可 先頭には使用不可 末尾には使用不可

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

3.2.3. jc_0221: 信号線の名前に使用できる文字

ID: タイトル jc_0221: 信号線の名前に使用できる文字

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

信号線の名前は、以下の条件を満たすこと。

書式 名前:空白文字、制御文字、及び先頭に数字は不可

使用可能文字 名前: a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _

アンダースコア 名前: 単語の区切りに使用 連続使用不可 先頭には使用不可 末尾には使用不可

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

3.2.4. jc_0231: ブロックの名前に使用できる文字

ID: タイトル jc_0231: ブロックの名前に使用できる文字

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 jc_0201: Subsystem の名前に使用できる文字

記述内容

ブロックの名前は、以下の条件を満たすこと。

書式 名前: 先頭の空白文字と数字は不可 全角文字は不可 改行は可

使用可能文字 名前:

Page 13: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 13

a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

3.2.5. na_0014: Simulink / Stateflow でローカル言語を使用できる箇所

ID: タイトル na_0014: Simulink / Stateflow でローカル言語を使用できる箇所

重要度 強く推奨

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

ローカル言語は、概要フィールドのみで使用すること。 概要フィールド: コード生成やシミュレーションに影響しないテキストを記述できる箇所 【例】

ブロックプロパティの概要フィールド

モデルに直接記述する注釈

チャートまたは状態プロパティの“説明”欄

Page 14: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 14

“ノートの追加”を用いて記述するアノテーションの説明

注意: MATLAB は、異なる文字コード体系システム上で、ローカル言語を含むモデルを開

く事ができない場合があるため、ローカル言語の使用に注意が必要である。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 15: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 15

4.モデルアーキテクチャ 基本ブロック

本ガイドラインでは、標準 Simulink ライブラリのビルトインブロックを“基本ブロック”としている。 基本ブロックの例を以下に示す。

4.1. Simulink / Stateflow の使い分け

4.1.1. na_0006: Simulink / Stateflow の組合せ方法

ID: タイトル na_0006: Simulink / Stateflow の組合せ方法

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

制御アルゴリズムの機能性により、Simulink を使用するか Stateflow を使用するかを 選択する。

複雑な論理演算は、Stateflow を使用する Stateflow は、モーダル論理(過去と現在の論理状態の組合せ)を

実現するために使用する 複雑な数値演算は、Simulink を使用する

特記:

単純な数値演算であれば、Stateflow で記述してもよい 【例】

単純な論理演算であれば、Simulink で記述してもよい 【例】

単純な数値演算

Page 16: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 16

論理演算と複雑な数値演算が必要な場合、複雑な数値演算は Simulink の

Functon-Call Subsystem で記述し、論理演算を記述する Stateflow から 呼び出す

【例】

Stateflow の遷移アクションで Function-Call Subsystem を呼び出している。

【例】

単純な論理演算

Page 17: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 17

Stateflow の状態アクションで Function-Call Subsystem を呼び出している。

Stateflow が適切なモーダル論理(過去と現在の論理状態の組合せ)の例 【誤】

エラー!

Page 18: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 18

【正】

Simulink が適切な複雑な数値演算(差分方程式、積分、微分、フィルターなど)

の例 【誤】

Page 19: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 19

【正】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

4.1.2. na_0007: フローチャート / 真理値表 / ステートマシンの使用方法

ID: タイトル na_0007: フローチャート / 真理値表 / ステートマシンの使用方法

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 na_0006: Simulink / Stateflow の組合せ方法

記述内容

制御アルゴリズムの機能性により、Chart 内で、フローチャートを使用するか、 真理値表を使用するか、ステートマシンを使用するかを選択する。

制御アルゴリズムが、状態をもつ演算をする場合(モード毎の異なる 制御アルゴリズム演算など)、ステートマシンを使用する

制御アルゴリズムが、if-then-else などの制御演算を含む場合、 フローチャートか真理値表を使用する

特記:

Page 20: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 20

制御アルゴリズムが状態をもつ演算をする場合で、かつ、if-then-else などの 制御演算も必要とされる場合は、ステートマシン内に、フローチャートを 記述する。(7.5. フローチャートパターン参照)

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

4.2. Subsystem の階層構造

4.2.1. db_0143: 各モデル階層で使用できるブロックタイプ

ID: タイトル db_0143: 各モデル階層で使用できるブロックタイプ

重要度 強く推奨

範囲 NAMAAB

MATLAB バージョン

ALL

前提条件

記述内容

モデルの各階層は、同じタイプのブロックを使用すること(Subsystem なら Subsystem のみを、基本ブロックであれば基本ブロックのみを使用すること)。

全ての階層で使用できるブロック

Inport Outport Enable Port Trigger Port Mux Demux Bus Selector Bus Creator Selector Ground Terminator From Goto Switch Multiport Switch Merge Unit Delay Rate Transition Type Conversion Data Store Memory If Block SwitchCase Block

注意: Enable Port ブロック / Trigger Port ブロックは、 ルート階層では使用不可

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

4.2.2. db_0144: Subsystem の使用方法

ID: タイトル db_0144: Subsystem の使用方法

重要度 強く推奨

範囲 MAAB

MATLAB ALL

Page 21: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 21

バージョン

前提条件

記述内容 Subsystem の使用方法は、以下の条件を満たすこと。

制御アルゴリズムを機能毎に分割し Subsystem 化する モデル描画スペースの都合により、Subsystem 化してはならない

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

4.2.3. db_0040: モデルの階層構造

ID: タイトル db_0040: モデルの階層構造

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容 モデルの階層構造は制御システムが持つ機能の階層構造に対応すること。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

4.3. JMAAB モデルの階層構造

4.3.1. jc_0301: コントローラモデル

ID: タイトル jc_0301: コントローラモデル

重要度 必須

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

コントロールモデルは、以下の階層構造で記述すること。 トップレイヤ

モデルの入出力やトリガを記述する トリガレイヤ

Trigger や Function-Call を使用して各 Subsystem の 演算タイミングを規定する

構造レイヤ 制御ロジックの構造を機能(部品)ごとに切り分けて表現する トリガレイヤを設定していない場合に演算タイミングを記述する 複数の階層にわたって記述可能

データフローレイヤ 制御ロジック(データフロー)を直に表現する 複数の階層にわたって記述可能

【補足】

トリガレイヤ使用時は、それ以下の階層で演算タイミングを規定しない トリガレイヤを使用する方式を“A 方式”、使用しない方式を“B 方式”とする

Page 22: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 22

xxx レイヤー トリガレイヤ

A方式 B方式

演算タイミング記述

8ms

データフローレイヤ

トップレイヤ

8ms8ms

8ms

EVENTEVENT

EVENT

構造レイヤ

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

4.3.2. jc_0311: トップレイヤ

ID: タイトル jc_0311: トップレイヤ

重要度 必須

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

トップレイヤには、以下を記述すること。 概要: モデルの機能概要説明 入力: 入力変数 出力: 出力変数

概要:******************** ロジックの機能概要を記述する

出力入力 トップレイヤの例

Page 23: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 23

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

4.3.3. jc_0321: トリガレイヤ

ID: タイトル jc_0321: トリガレイヤ

重要度 必須

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

トリガレイヤには Triggered Subsystem または Function-Call Subsystem を用いて 演算タイミングを指定すること。

必要に応じて Priority を設定し、ブロックアノテーションを使用して表示すること

トリガレイヤの例

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

4.3.4. jc_0331: 構造レイヤ

ID: タイトル jc_0331: 構造レイヤ

重要度 必須

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

1.構造レイヤには、以下を記述すること。 トリガレイヤを設定していない場合(B 方式)は、演算タイミングを

Inport ブロックもしくは Subsystem に直接設定し、ブロックアノテーションを 使用して表示すること

2.構造レイヤの Subsystem は Atomic Subsystem とすること。

Page 24: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 24

構造レイヤの例(A 方式: 演算タイミングを記述しない)

構造レイヤの例(B 方式: 演算タイミングを記述する)

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

4.3.5. jc_0341: データフローレイヤ

ID: タイトル jc_0341: データフローレイヤ

重要度 必須

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

データフローレイヤには、以下を記述すること。 トリガレイヤを設定していない場合(B 方式)は、演算タイミングを Inport ブロック

に直接設定し、ブロックアノテーションを使用して表示すること

Page 25: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 25

Aタイプの場合は表示不要A方式の場合は表示不要

データフローレイヤの例

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 26: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 26

5.コンフィギュレーションパラメータ

5.1.1. jc_0011: 論理信号に対する 適化パラメータ設定

ID: タイトル jc_0011: 論理信号に対する 適化パラメータ設定

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 na_0002: 論理信号 / 数値信号の使用

記述内容

論理信号に対する 適化パラメータは有効にすること。

MATLAB バージョン パラメータ名

R13SP2 以前 Boolean 論理信号

R14 以降 ブーリアンデータ(vs. double)として論理信号を利用します。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

5.1.2. jc_0021: 診断パラメータ設定

ID: タイトル jc_0021: 診断パラメータ設定

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

以下の診断パラメータは、常に有効(“警告”または“エラー”)にすること。 ソルバ

代数ループ 代数ループの 小化

サンプル時間 マルチタスクレート変換

データ有効性 Inf または NaN のブロック出力 データストア名の重複

接続性 接続されていないブロックの入力端子 接続されていないブロックの出力端子 接続されていないライン ルートの Outport ブロックで bus オブジェクトが指定されていない 要素名の不一致 Mux ブロックを bus 信号の作成に使用 無効な function-call 接続

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 27: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 27

6.Simulink

6.1. ダイアグラムの外観

6.1.1. na_0004: Simulink モデルの表示設定

ID: タイトル na_0004: Simulink モデルの表示設定

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Simulink モデルの表示オプションは、以下の設定とすること。

表示オプション 設定

モデルファイル モデルブラウザ 無効

スクリーンカラー 白

ステータスバー 有効(チェック)

ツールバー 有効(チェック)

表示サイズ 標準(100%)

ブロック バックグラウンドカラー 白

フォアグラウンドカラー 黒

コンテキストインジケータの実行 無効

ライブラリリンクの表示 なし

線形化インジケータ 有効(チェック)

モデルブロック I/O の不一致 無効

モデルブロックのバージョン 無効

サンプル時間の色分け表示 無効

ソート順序 無効

信号 端子のデータタイプ 無効

信号の次元 無効

ストレージクラス 無効

テストポイントインジケータ 有効(チェック)

ビューワインジケータ 有効(チェック)

非スカララインを太く表示 有効(チェック)

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.2. db_0043: モデルで使用するフォントとフォントサイズ

ID: タイトル db_0043: モデルで使用するフォントとフォントサイズ

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

Page 28: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 28

前提条件

記述内容

モデルに直接記述する注釈テキスト以外の全てのテキスト要素(ブロック名、 ブロックアノテーションおよび信号ラベル)は、同じフォントとフォントサイズにすること。 フォントとフォントサイズは、読み易さを考えて選択する。 注意: 選択したフォントは直接移植可能(Simulink / Stateflow のデフォルトフォントなど)か、 プラットフォーム間で互換性があるもの(Arial / Helvetica 12pt など)である必要がある。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.3. db_0042: Inport ブロック / Outport ブロックの使用方法

ID: タイトル db_0042: Inport ブロック / Outport ブロックの使用方法

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Simulink モデルの Inport ブロック / Outport ブロックは、以下の条件を満たすこと。 Inport ブロックはダイアグラムの左側に配置する(交差する場合は移動可能) Outport ブロックはダイアグラムの右側に配置する(交差する場合は移動可能) “複数の Inport”は、極力避けるべきである

トップレイヤでは使用できない

【正】

【誤】

Inport2: 信号線が交差するのを避けるため、右側に移動した方が良い Outport1: 右側に移動した方が良い

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 29: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 29

6.1.4. na_0005: Inport ブロック / Outport ブロック名の表示

ID: タイトル na_0005: Inport ブロック / Outport ブロック名の表示

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Inport ブロック / Outport ブロック名は、下記 1、2 のどちらかを選択し統一すること。 但し、ライブラリは除く。 1. Inport ブロック / Outport ブロック名を表示する

(“書式 / ブロック名の表示”を使用) 【例】

2. Inport ブロック / Outport ブロック名を非表示にする (“書式 / ブロック名の非表示”を使用)

【例】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.5. jc_0081: Inport ブロック / Outport ブロックの“アイコンの表示”

ID: タイトル jc_0081: Inport ブロック / Outport ブロックの“アイコンの表示”

重要度 推奨

範囲 MAAB

MATLAB バージョン

R14 以降

前提条件

記述内容 Inport ブロック / Outport ブロックの“アイコンの表示”設定は、“端子番号”とする。

【正】

Page 30: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 30

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.6. jm_0002: ブロックのサイズ調整

ID: タイトル jm_0002: ブロックのサイズ調整

重要度 必須

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

ブロックは、アイコン表示(テキスト、シンボル等)が確認できるサイズに調整すること。 但し、入出力が多い Subsystem などサイズ調整が困難な場合は、アイコンの内容を代替

手段で表示すること。

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.7. db_0142: ブロック名の位置

ID: タイトル db_0142: ブロック名の位置

Page 31: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 31

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

ブロック名は、ブロックの下側に表示すること。

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.8. jc_0061: ブロック名の表示

ID: タイトル jc_0061: ブロック名の表示

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

機能的にブロック名の表示が必要なブロックや、ブロック名に意味を 持たせているブロックは、ブロック名を表示する

【例】

見た目で機能が判断できるブロックのブロック名は表示しない 【例】

Page 32: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 32

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.9. db_0146: 条件付き Subsystem 内のブロック配置

ID: タイトル db_0146: 条件付き Subsystem 内のブロック配置

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

以下のブロックは、Subsystem 内の 上位に配置すること。 Function-Call ブロック Enable ブロック Trigger ブロック If / Else Action Port ブロック

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 33: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 33

6.1.10. db_0140: ブロックパラメータの表示

ID: タイトル db_0140: ブロックパラメータの表示

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

重要なブロックのパラメータは、ブロックアノテーションを使用して表示すること。 【例】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.11. jm_0013: アノテーションの影

ID: タイトル jm_0013: アノテーションの影

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

R12.1 以前

前提条件

記述内容

アノテーションを影付きにしてはならない。 (“Format / Show Drop Shadow”を使用してはならない。)

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 34: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 34

6.1.12. db_0032: 信号線の結線

ID: タイトル db_0032: 信号線の結線

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

信号線は、以下の条件を満たすこと。 可能な限り交差させない 垂直、水平方向のみを使用する(斜めに引かない) 他の信号線と重ねてはならない ブロックと重ねてはならない 十字分岐しない(交差する線と間違えないため)

【正】 【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.13. db_0141: Simulink モデルのデータフロー

ID: タイトル db_0141: Simulink モデルのデータフロー

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

信号線は、左から右へ向かう方向に記述する(フィードバックループは除く) 連続処理のブロックは左から右へ配置する(フィードバックループは除く) 並列処理のブロックは縦に並べる

データフローは左から右へ流れる様に書くデータフローは左から右へ流れる様に書く

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 35: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 35

6.1.14. jc_0171: Goto ブロック / From ブロック使用時の結線

ID: タイトル jc_0171: Goto ブロック / From ブロック使用時の結線

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Subsystem 間の処理順序を明確にするため、Goto ブロック / From ブロックは、 以下の条件を満たした上で使用すること。

少なくとも 1 本は Subsystem 間を直接結線する フィードフォワードおよびフィードバックがある場合、

それぞれ少なくとも 1 本は直接結線する

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.15. jm_0010: Inport ブロック / Outport ブロックの名前

ID: タイトル jm_0010: Inport ブロック / Outport ブロックの名前

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 db_0042: Inport ブロック / Outport ブロックの使用方法 na_0005: Inport ブロック / Outport ブロック名の表示

記述内容 Inport ブロック / Outport ブロックの名前は、下記のどちらかを選択し統一すること。 1. Inport ブロック / Outport ブロックの名前は、対応する信号またはバスの名前と

Page 36: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 36

一致させる 【例外】

Inport ブロック / Outport ブロックにサフィックス / プリフィックスを付与した場合 再利用可能な Subsystem(ライブラリブロック、Model ブロック等)の場合

2. Inport ブロック / Outport ブロックの名前が非表示の場合、

一貫した命名基準を適用する 【例】

デフォルト名、信号名、簡略化した信号名、識別子を付与した信号名

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.1.16. jc_0281: Trigger Port ブロック / Enable Port ブロックの名前

ID: タイトル jc_0281: Trigger Port ブロック / Enable Port ブロックの名前

重要度 強く推奨

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

Trigger Port ブロック / Enable Port ブロックの名前は、 ブロックに入力する信号名とすること。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.2. 信号 信号ラベルは、モデルの機能をよりよく理解するため、またシミュレーション、生成コードの変数名として

使用される。

6.2.1. na_0008: 信号ラベルの表示

ID: タイトル na_0008: 信号ラベルの表示

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

以下のブロックの出力信号は、ラベルを表示すること。 Inport ブロック From ブロック(例外参照) Data Store Read ブロック(例外参照) Subsystem(例外参照)

Page 37: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 37

Chart(例外参照) Constant ブロック(例外参照) Bus Selector ブロック(例外参照) Demux ブロック Selector ブロック

以下のブロックに接続した信号はラベルを表示すること。

Outport ブロック Goto ブロック Data Store Write ブロック Subsystem Chart Bus Creator ブロック Mux ブロック

【例外】 ブロックの表示で信号ラベルが判断できる場合、信号ラベルは表示しなくてもよい。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.2.2. na_0009: 信号ラベルの登録と伝播

ID: タイトル na_0009: 信号ラベルの登録と伝播

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 na_0008: 信号ラベルの表示

記述内容

1. 以下の信号はラベルを登録(作成)すること トップレイヤの Inport ブロックの出力信号 機能的に変換された信号

(Bus Creator ブロック、Mux ブロック、Selector ブロックも含む) 2. 以下の信号はラベルを伝播すること

下位 Subsystem の Inport ブロックの出力信号(但しライブラリは除く) 機能的に変換されない信号 Subsystem または Chart の出力信号(但しライブラリは除く)

【例】

Page 38: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 38

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.2.3. db_0097: 信号ラベルの位置

ID: タイトル db_0097: 信号ラベルの位置

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

ラベルは、対応する信号と視覚的に関連付けられている必要があるため、 以下の条件を満たすこと。

他のラベルや信号、ブロックと重なってはならない 信号線の下で、対応するブロック付近に置くこと

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.2.4. db_0081: 未接続の信号とブロック入出力

ID: タイトル db_0081: 未接続の信号とブロック入出力

重要度 必須

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

モデルは、以下を含んではならない。 未接続の Subsystem またはブロック入力 未接続の Subsystem またはブロック出力 未接続の信号線

未接続のブロック / 信号線は、以下に従うこと。 未接続の入力は、Ground ブロックに接続する 未接続の出力は、Terminator ブロックに接続する

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 39: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 39

6.3. ブロックの使用方法

6.3.1. na_0003: If Condition ブロックの使用方法

ID: タイトル na_0003: If Condition ブロックの使用方法

重要度 必須

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

If Condition ブロックは次ののいずれかで定義される 1 次式が 2 つ以下で使用すること。

入力 数値 定数パラメータ 括弧で括られた式

括弧内には次の演算子のみ使用可能<、<=、>、>=、~=、==、~ 使用できる演算子は 1 つ以内

【1 次式の例】 u1 5 K (u1 > 0) (u1 <= G) (u1 > u2) (~u1)

【例外】 以下の 2 項目が成立している場合、論理式は 2 つ以上の 1 次式を含むことが出来る。

1 次式がすべて入力 論理演算子が 1 つのタイプしかない

【上記の条件を満たす例】 u1 | u2 | u3 | u4 | u5 u1 & u2 & u3 & u4

【正】 u1 | u2 (u1 > 0) & (u1 < 20) (u1 > 0) & (u2 < u3) (u1 > 0) & (~u2)

【誤】 u1 & u2 | u3 (2 つの論理演算子が使用されている) u1 & (u2 | u3) (1 次式内の条件を満たしていない) (u1 > 0) & (u1 < 20) & (u2 > 5) (入力でない 1 次式が多すぎる) (u1 > 0) & ((2*u2) > 6) (1 次式内の条件を満たしていない)

これらの場合 If Condition ブロックの外部で 1 次式を演算し入力しなければならない

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.3.2. na_0002: 論理信号 / 数値信号の使用

ID: タイトル na_0002: 論理信号 / 数値信号の使用

重要度 必須

Page 40: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 40

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

論理信号は数値信号を期待するブロックに入力してはならない 【誤】

数値信号は論理信号を期待するブロックに入力してはならない

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.3.3. jm_0001: コントローラ内での使用禁止ブロック

ID: タイトル jm_0001: コントローラ内での使用禁止ブロック

重要度 必須

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

コントローラモデルは、離散系ブロックで設計するため、以下ブロックの使用を禁止する。

Source カテゴリの使用禁止ブロック

Signal Generator Step Ramp Sine Wave Repeating Sequence Discrete Pulse Generator Pulse Generator Chirp Signal Clock Digital Clock From File From Workspace Random Number Uniform Random Number Band-Limited White Noise

Continuous カテゴリの使用禁止ブロック

Page 41: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 41

Integrator Derivative Transport Delay Variable Transport Delay State-Space Transfer Fcn Zero-Pole

その他の使用禁止ブロック

Slider Gain Algebraic Constraint Manual Switch Complex to magnitude-Angle Magnitude-Angle to Complex Complex to Real-Imag Real-Imag to Complex Hit Crossing Polynomial MATLAB Fcn Goto Tag Visibility Probe

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.3.4. hd_0001: Sinks カテゴリの使用禁止ブロック

ID: タイトル hd_0001: Sinks カテゴリの使用禁止ブロック

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

コントローラモデルは、離散系ブロックで設計するため、以下ブロックの使用を禁止する。

Sinks カテゴリの使用禁止ブロック

Scope XY Graph Display To File To Workspace Stop Simulation Floating Scope

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 42: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 42

6.3.5. na_0011: Goto ブロック / From ブロックの可視範囲

ID: タイトル na_0011: Goto ブロック / From ブロックの可視範囲

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Goto ブロックの“タグの可視性”は以下とすること。 データフローには、“ローカル”を使用する コントロールフローには、“グローバル”を使用してもよい

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.3.6. jc_0141: Switch ブロックの使用方法

ID: タイト

ル jc_0141: Switch ブロックの使用方法

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Switch ブロックは、以下の条件で使用すること Switch ブロックの第 2 入力には論理値を入力する ブロックパラメータの“ 初の入力が通過する条件”は、“u2~=0”に設定する

注意: R13~R13SP2 不具合のため、ブロックパラメータの“ 初の入力が通過する条件”を “u2 > Threshold”としてはならない。

【正】 【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 43: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 43

6.3.7. jc_0121: Sum ブロックの使用方法

ID: タイトル jc_0121: Sum ブロックの使用方法

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Sum ブロックは、以下の条件に従い記述すること。 “Icon shape”は、“rectangular”を使用する ラインや演算子が重ならないサイズに変更する

【正】 【誤】

“Icon shape”の“round”は入力数が 3 つ以下のフィードバックで使用する 但し、入力は 90°、180°、270°から入力し、出力は 0°から出力する

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 44: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 44

6.3.8. jc_0131: Relational Operator ブロックの使用方法

ID: タイトル jc_0131: Relational Operator ブロックの使用方法

重要度 推奨

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

Relational Operator ブロックで Constant ブロックと比較する場合、 Constant ブロックは第 2 入力とすること。

【正】 【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.3.9. jc_0161: Data Store Read / Write / Memory ブロックの使用方法

ID: タイトル jc_0161: Data Store Read / Write / Memory ブロックの使用方法

重要度 強く推奨

範囲 JMAAB

MATLAB バージョン

ALL

前提条件 jc_0341: データフローレイヤ

記述内容 Data Store Read / Write / Memory ブロックは以下の条件を満たすこと。

データフローレイヤ内で使用禁止 異なる実行タイミングの Subsystem 間でデータ受け渡しに使用する

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.4. ブロックパラメータ

6.4.1. db_0112: インデックスの使用方法

ID: タイトル db_0112: インデックスの使用方法

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容 1 ベースのインデックスモード[1, 2, 3, …]は、以下で使用すること。

MATLAB ワークスペース変数と構造体

Page 45: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 45

M-関数でのローカル変数 グローバル変数

Simulink 信号 パラメータ M-ファイル S-Function の入出力信号 M-ファイル S-Function のパラメータ M-ファイル S-Function のローカル変数

Stateflow 入出力信号 パラメータ ローカル変数

0 ベースのインデックスモード[0, 1, 2, …]は、以下で使用すること。 Simulink

C-MEX S-Function の入出力信号 C-MEX S-Function のパラメータ C-MEX S-Function のローカル変数

Stateflow カスタムCコード内の変数と構造体

C コード ローカル変数と構造体 グローバル変数

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.4.2. na_0010: ベクトル / バス信号の使用方法

ID: タイトル na_0010: ベクトル信号 / バス信号の使用方法

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

ベクトル ベクトルを構成する個々のスカラ信号は、共通の機能性、データタイプ、次元、

および単位を持つ 例:個々のセンサ、アクチュエータデータに対してインデックスをつける

Mux ブロックの出力は常にベクトルである Mux ブロックへの入力は常にスカラである

バス

上記のベクトル化条件に該当しない信号は、バス信号でグループ化する Bus selector ブロックには、バス信号を入力する Bus selector ブロックでベクトル信号を分解してはならない

【例】 ベクトル信号の例

ベクトル信号の例 サイズ

行ベクトル [1 n]

列ベクトル [n 1]

ホイール速度ベクトル [1 ホイール数]

Page 46: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 46

シリンダーベクトル [1 シリンダー数]

2 次元座標上の位置ベクトル [1 2]

3 次元座標上の位置ベクトル [1 3]

バス信号の例

バス信号の例 要素例

センサーバス

力ベクトル

位置

ホイール速度ベクトル

加速度

圧力

コントローラバス センサーバス

アクチュエータバス

シリアルデータバス 冷却水温度

エンジン速度、乗客ドアオープン

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.4.3. db_0110: 基本ブロックにおけるチューナブルパラメータ

ID: タイトル db_0110: 基本ブロックにおけるチューナブルパラメータ

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

基本ブロックにチューナブルパラメータを使用する場合、以下の条件を満たすこと。 式を使用してはならない データ型を変換してはならない ベクトル、行列の要素を選択してはならない

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.5. Simulink パターン 以下に、Simulink モデルで良く使用される典型的なパターンについて説明する。

Page 47: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 47

6.5.1. na_0012: Switch ブロック / If Action Subsystem の使い分け

ID: タイトル na_0012: Switch ブロック / If Action Subsystem の使い分け

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Switch ブロック then および else アクションが、定数の代入のみのような、単純な if-then-else 構

文に使用する

If Action Subsystem

then または else アクションに複雑な計算が必要な場合に使用する

【例】

0 割りの抑制など、例外処理を記述する then または else アクションで出力を保持する

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.5.2. db_0114: if-then-else-if 構文の Simulink パターン

ID: タイトル db_0114: if-then-else-if 構文の Simulink パターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容 if-then-else-if 構文には、以下のパターンが使用される。

機能 Simulink パターン

Page 48: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 48

Switch ブロックを使用した if-then-else-if 構文 if (If_Condition) { output_signal = If_Value; } else if (Else_If_Condition) { output_signal = Else_If_Value;} else { output_signal = Else_Value; }

If Action Subsystem を 使用した if-then-else-if 構文 if (Fault_1_Active & Fault_2_Active) { ErrMsg = SaftyCrit; } else if (Fault_1_Active | Fault_2_Active) { ErrMsg = DriveWarn; } else { ErrMsg = NoFaults; }

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.5.3. db_0115: case 構文の Simulink パターン

ID: タイトル db_0115: case 構文の Simulink パターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

case 構文には、以下のパターンが使用される。

機能 Simulink パターン

Switch Case Action Subsystem を使用した case 構文 switch (PRNDL_Enum) { case 1 TqEstimate = ParkV; break; case 2

Page 49: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 49

TqEstimae = RevV; break; default TqEstimate = NeutralV; break; }

Multiport Switch ブロックを 使用した case 構文 output_version1 = function_version1(input_signal); output_version2 = function_version2(input_signal); output_version3 = function_version3(input_signal); output_version4 = function_version4(input_signal); switch (selection) { case 1: output_signal = output_version1; break; case 2: output_signal = output_version2; break; case 3: output_signal = output_version3; break; case 4: output_signal = output_version4; }

Enabled Subsystem を使用した case 構文 switch (selection) { case 1: output_version1 = function_version1(input_signal); output_signal = output_version1; break; case 2: output_version2 = function_version2(input_signal); output_signal = output_version2; break; case 3: output_version3 = function_version3(input_signal); output_signal = output_version3; break; default: output_version4 = function_version4(input_signal); output_signal = output_version4; }

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 50: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 50

6.5.4. db_0116: 論理構文の Simulink パターン

ID: タイトル db_0116: 論理構文の Simulink パターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

論理構文には、以下のパターンが使用される。

機能 Simulink パターン

乗法標準形 (Conjunctive normal form)

加法標準形 (Disjunctive normal form)

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

6.5.5. db_0117: ベクトル信号の Simulink パターン

ID: タイトル db_0117: ベクトル信号の Simulink パターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容 ベクトル信号には、以下のパターンが使用される。

Page 51: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 51

機能 Simulink パターン

ベクトル信号とパラメータ(スカラ)の乗算 for (i=0; i>input_vector_size; i++) { output_vector(i) = input_vector(i) * tunable_parameter_value; }

ベクトル信号とパラメータ(ベクトル)の乗

算 for (i=0; i>input_vector_size; i++) { output_vector(i) = input_vector(i) * tunable_parameter_vector(i); }

ベクトル信号の要素の乗算 output_signal = 1; for (i=0; i>input_vector_size; i++) { output_signal = output_signal * input_vector(i); }

ベクトル信号の要素の除算 output_signal = 1; for (i=0; i>input_vector_size; i++) { output_signal = output_signal / input_vector(i); }

ベクトル信号とパラメータ(スカラ)の加算 for (i=0; i>input_vector_size; i++) { output_vector(i) = input_vector(i) + tunable_parameter_value; }

ベクトル信号とパラメータ(ベクトル)の加

算 for (i=0; i>input_vector_size; i++) { output_vector(i) = input_vector(i) + tunable_parameter_vector(i); }

ベクトル信号の要素の加算 output_signal = 0; for (i=0; i>input_vector_size; i++) { output_signal = output_signal + input_vector(i); }

ベクトル信号の要素の減算 output_signal = 0; for (i=0; i>input_vector_size; i++) { output_signal = output_signal - input_vector(i); }

Page 52: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 52

小値 / 大値の保持

エッジ検出

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

6.5.6. jc_0351: 初期化処理

ID: タイトル jc_0351: 初期化処理

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 db_0140: ブロックパラメータの表示

記述内容

単純な初期化 Unit Delay 等の初期値設定フィールドを持つブロックの Initial Condition を初期

値として設定する 【例】

処理結果を初期値とする初期化

初期化処理を Subsystem でまとめる 初期化処理の Subsystem には、初期化処理であることを明示する名前をつける

【例 1】

Page 53: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 53

【例 2】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

6.5.7. jc_0111: Subsystem の向き

ID: タイトル jc_0111: Subsystem の向き

重要度 強く推奨

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

Subsystem は反転させてはならない。(フィードバックループに使用する場合も不可)

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 54: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 54

7.Stateflow

7.1. チャートの外観

7.1.1. db_0123: Chart のポート名

ID: タイトル db_0123: Chart のポート名

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容 Chart の入出力ポート名は対応する Simulink の信号名と同じでなければならない。 但し、Chart を再利用する場合は Simulink の信号名と異なっても良い。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

7.1.2. db_0129: Stateflow の遷移

ID: タイトル db_0129: Stateflow の遷移

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Stateflow の遷移は、以下の条件を満たすこと 可能な限り交差させない 他の遷移と重ねてはならない ステート、ジャンクション、テキストと重ねてはならない

但し、内部ステートへの遷移は除く 遷移ラベルは、視覚的に関連付けるため、対応する遷移付近に置くこと

【正】

Page 55: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 55

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.1.3. db_0137: ステートマシンのステート

ID: タイトル db_0137: ステートマシンのステート

重要度 必須

範囲 MAAB

MATLAB バージョン

ALL

前提条件 db_0149: フローチャートの条件アクションパターン

記述内容 ステートマシンは、2 つ以上の排他的ステートを用いて記述する 1 つだけのサブステートは、使用できない デフォルト遷移で初期ステートを明示する

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.1.4. db_0133: フローチャートの記述方法

ID: タイトル db_0133: フローチャートの記述方法

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

Page 56: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 56

記述内容

フローチャートは、7.5. フローチャートパターン(if 構文や loop 構文など)を使用し、 以下の条件を満たすこと。

データフローは上から下に記述する 複数のパターンを接続する場合は、空の遷移(ラベルが無い遷移)で接続する

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

7.1.5. db_0132: フローチャートの遷移

ID: タイトル db_0132: フローチャートの遷移

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

1. フローチャートの遷移は、以下の条件を満たすこと。但し、ループ処理は例外とする。 条件は水平方向に描く アクションは垂直方向に描く

2. フローチャートの遷移ラベルは、条件、条件アクション、または空の遷移を

使用すること。 【例】

条件をもつ遷移:

条件アクションをもつ遷移:

空の遷移:

3. 遷移アクションはフローチャートで使用してはならない。 【誤】

遷移アクション:

4. フローチャートのジャンクションは、唯一の無条件遷移を持つこと。

但し、 後のジャンクションは除く。 【例】

Page 57: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 57

5. 遷移には、コメントを付けることができる。 【例】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.1.6. jc_0501: ステートの書式

ID: タイトル jc_501: ステートの書式

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容 ステートのアクション entry(en)、during(du)、exit(ex)は、 コロン“:”、セミコロン“;”の後を改行する。

Page 58: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 58

【正】

【誤】 コロンの後を改行していない

コロン、セミコロンの後を改行していない

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.1.7. jc_0511: グラフィカル関数の戻り値の更新

ID: タイトル jc_0511: グラフィカル関数の戻り値の更新

重要度 必須

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

グラフィカル関数の戻り値は1箇所で更新しなければならない。

【正】 戻り値 A を1箇所で更新

【誤】 戻り値 A を複数箇所で更新

Page 59: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 59

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.1.8. jc_0531: デフォルト遷移

ID: タイトル jc_0531: デフォルト遷移

重要度 推奨

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

デフォルト遷移は、ステートの上部に配置する デフォルト遷移の遷移先ステートは、同一階層ステートよりも上部に配置する

【正】 デフォルト遷移を上部に配置 デフォルト遷移の遷移先ステー

トを同一階層ステートよりも上

部に配置

【誤】 デフォルト遷移を側部に配置 デフォルト遷移の遷移先ステート

を同一階層ステートよりも下部に

配置

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 60: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 60

7.1.9. jc_0521: グラフィカル関数の戻り値の使用方法

ID: タイトル jc_0521: グラフィカル関数の戻り値の使用方法

重要度 推奨

範囲 JMAAB

MATLAB バージョン

ALL

前提条件

記述内容

条件式に関数の戻り値を使用してはならない。

【正】 関数“temp_test”の戻り値を中間変数“a”に代入後、条件式で中間変数を使用

比較する変数の型などが明確になる。 比較する変数の型が明確になる。

【誤】 条件式で関数“temp_test”の戻り値を使用

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.2. Stateflow のデータと演算

7.2.1. na_0001: Stateflow のビット演算子

ID: タイトル na_0001: Stateflow のビット演算子

重要度 強く推奨

範囲 MAAB

前提条件

記述内容 ビット演算子(“&”、“|”、“^”)は、ビット演算以外で使用してはならない。 [ファイル]-[チャートのプロパティ]の“C-ビット演算を有効にする”を選択する。

Page 61: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 61

【正】 論理演算に“&&”と“II”を使用する。

ビット演算に“&”と“I”を使用する。

【誤】 論理演算に“&”と“I”を使用する。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.2.2. jc_0451: Stateflow における単項演算子“-”の使用方法

ID: タイトル jc_0451: Stateflow における単項演算子“-”の使用方法

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容 符号なし整数に、単項演算子“-”を使用しない。

【正】

Page 62: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 62

符号付き整数に“-”を使用

【誤】 符号なし整数に“-”を使用

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.2.3. na_0013: Stateflow の比較演算

ID: タイトル na_0013: Stateflow の比較演算

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

比較演算は、両辺同じデータタイプにしなければならない 異なるデータタイプの変数間で比較演算を行う場合、

キャストにより明示的にデータタイプをそろえる

【正】 “i”と“n”のデータタイプが同じ

“i”を“d”のデータタイプにキャストしている

【誤】 “i”と“d”のデータタイプが異なる

符号無し整数と負の数を比較してはならない

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 63: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 63

7.2.4. db_0122: Simulink と Stateflow のインターフェース

ID: タイトル db_0122: Simulink と Stateflow のインターフェース

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

[ファイル]-[チャートのプロパティ]の“Simulink との I/O でデータタイプを保持”を選択する。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.2.5. db_0125: Stateflow のローカル変数

ID: タイトル db_0125: Stateflow のローカル変数

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 jc_0541: Stateflow のチューナブルパラメータ

記述内容

Chart 内部でのみ使用する変数は、以下の条件を満たすこと。 Chart レベル以下で定義する(マシンレベルで、ローカル変数を定義しない) パラメータと定数は、マシンレベルで定義してもよい

【正】

【誤】

Page 64: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 64

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.2.6. jc_0481: Stateflow における実数の比較演算

ID: タイトル jc_0481: Stateflow における実数の比較演算

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

実数の比較演算に“==” / “~=”を用いてはならない 実数の比較演算は、許容誤差を考慮して判定する必要がある(例中の LIMIT)

【正】

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.2.7. jc_0491: Stateflow における変数の再利用

ID: タイトル jc_0491: Stateflow における変数の再利用

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

Page 65: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 65

記述内容

同一階層で同じ変数を異なる意味(使用方法)で使用してはならない。

【正】 ループカウンタの変数を ループカウンタ以外で使用していない

“tempVar”は、“SubState_A”、 “SubState_B”の双方で ローカル変数として使用している

【誤】 ループカウンタの変数を ループカウンタ以外で使用している

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.2.8. jc_0541: Stateflow のチューナブルパラメータ

ID: タイトル jc_0541: Stateflow のチューナブルパラメータ

重要度 強く推奨

範囲 MAAB

Page 66: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 66

MATLAB バージョン

ALL

前提条件

記述内容

チューナブルパラメータは、Chart の入力として定義すること。

【正】

  

【誤】

もしくはor

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.2.9. db_0127: Stateflow における MATLAB コマンド

ID: タイトル db_0127: Stateflow における MATLAB コマンド

重要度 必須

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

Stateflow の演算は、以下の条件を満たすこと。 MATLAB 関数を使用しない MATLAB コマンドを使用しない MATLAB 演算子を使用しない

【誤】

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

Page 67: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 67

7.2.10. jm_0011: Stateflow におけるポインタ

ID: タイトル jm_0011: Stateflow におけるポインタ

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容 カスタムコード変数へのポインタを使用してはならない。

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

7.3. イベント

7.3.1. db_0126: イベントの定義方法

ID: タイトル db_0126: イベントの定義方法

重要度 必須

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容 Stateflow のイベントは、Chart レベル以下で定義する。 (マシンレベルで、イベントを定義しない)

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.3.2. jm_0012: イベントブロードキャスト

ID: タイトル jm_0012: イベントブロードキャスト

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 db_0126: イベントの定義方法

記述内容

イベントブロードキャストは、以下の条件を満たすこと。 直接イベントブロードキャストのみを使用する イベントのブロードキャスト先の指定には、send シンタックス、

またはイベント名による直接イベントブロードキャストを使用する 【例】 send シンタックスの例

Page 68: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 68

イベント名による直接イベントブロードキャストの例

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

7.4. ステートマシンパターン 以下に、ステートマシンで良く使用される典型的なパターンについて説明する。

7.4.1. db_0150: ステートの遷移条件パターン

ID: タイトル db_0150: ステートの遷移条件パターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

ステートの遷移条件には、以下のパターンを使用する。

機能 ステートマシンのパターン

条件が 1 つ (condition)

Page 69: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 69

条件が 3 つまで、1 行で記述 (異なる論理演算子の使用は不

可。その場合は、サブ条件*を使

用する。) (condition1 && condition2) (condition1 || condition2)

条件が 2 つ以上、複数行で記述

(異なる論理演算子の使用は不

可。その場合は、サブ条件を使

用する。) (condition1 ... && condition2 ... && condition3) (condition1 ... || condition2 ... || condition3)

*サブ条件とは、同じタイプの論理演算子をカッコで囲んだもの

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.4.2. db_0151: ステートマシンの遷移アクションパターン

ID: タイトル db_0151: ステートマシンの遷移アクションパターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

ステートマシンの遷移アクションには、以下のパターンを使用する。

機能 ステートマシンのパターン

1 つの遷移アクション action;

2 つ以上の 遷移アクションを 複数行で記述 (2 つ以上の 遷移アクションを 1 行で記述しては ならない) action1; action2; action3;

Page 70: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 70

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

7.5. フローチャートパターン 以下に、フローチャートで使用される典型的なパターンを説明する。

7.5.1. db_0148: フローチャートの遷移条件パターン

ID: タイトル db_0148: フローチャートの遷移条件パターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

フローチャートの遷移条件には、以下のパターンを使用する。

機能 フローチャートのパターン

条件が 1 つ [condition]

条件が 3 つまで、 1 行で記述 (異なる論理演算子の

使用は不可。その場合

は、サブ条件*を使用す

る。) [condition1 && condition2 && condition3] [condition1 || condition2 || condition3]

条件が 2 つ以上、 複数行で記述 (異なる論理演算子の

使用は不可。その場合

は、サブ条件を使用す

る) [condition1 ... && condition2 ... && condition3] [condition1 ... || condition2 ... || condition3]

Page 71: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 71

サブ条件を用いた記述 [(condition1a || condition1b) ... && (condition2a || condition2b) ... && (condition3)] [(condition1a && condition1b) ... || (condition2a && condition2b) ... || (condition3)]

複数の条件を分けて記

述 (上記の遷移条件パタ

ーンと混在可能) [condition1 && condition2] [condition1 || condition2]

*サブ条件とは、同じタイプの論理演算子をカッコで囲んだもの

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V2.0

7.5.2. db_0149: フローチャートの条件アクションパターン

ID: タイトル db_0149: フローチャートの条件アクションパターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件

記述内容

フローチャートの条件アクションには、以下のパターンを使用する。

機能 フローチャートのパターン

1 つの条件アクション action;

Page 72: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 72

2 つ以上の条件アクションを 複数行で記述 (2 つ以上の条件アクションを 1 行で記述してはならない) action1; action2; action3;

複数の条件アクションを分けて記述

(上記の条件アクションパターンと混

在可能) action1a; action1b; action2; action3;

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

7.5.3. db_0134: if 構文のフローチャートパターン

ID: タイトル db_0134: if 構文のフローチャートパターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 db_0148: フローチャートの遷移条件パターン db_0149: フローチャートの条件アクションパターン

記述内容

フローチャートの if 構文には、以下のパターンを使用する。

機能 フローチャートのパターン

if-then 構文 if (condition){ action; }

Page 73: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 73

if-then-else 構文 if (condition) { action1; } else { action2; }

if-then-else-if 構文 if (condition1) { action1; } else if (condition2) { action2; } else if (condition3) { action3; } else { action4; }

if-then 構文のネスト if (condition1) { action1; if (condition2) { action2; if (condition3) { action3; } } }

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

7.5.4. db_0159: case 構文のフローチャートパターン

ID: タイトル db_0159: case 構文のフローチャートパターン

重要度 強く推奨

範囲 MAAB

MATLAB バージョン

ALL

前提条件 db_0148: フローチャートの遷移条件パターン

Page 74: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 74

db_0149: フローチャートの条件アクションパターン

記述内容

フローチャートの case 構文には、以下のパターンを使用する。

機能 フローチャートのパターン

排他的選択による case 構文 selection = ...; switch (selection) { case 1: action1; break; case 2: action2; break; case 3: action3; break; default: action4; }

排他的条件による case 構文 c1 = condition1; c2 = condition2; c3 = condition3; if (c1 && !c2 && !c3) { action1; } elseif (!c1 && c2 && !c3) { action2; } elseif (!c1 && !c2 && c3) { action3; } else { action4; }

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

7.5.5. db_0135: ループ構文のフローチャートパターン

ID: タイトル db_0135: ループ構文のフローチャートパターン

重要度 推奨

範囲 MAAB

MATLAB バージョン

ALL

Page 75: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 75

前提条件 db_0148: フローチャートの遷移条件パターン db_0149: フローチャートの条件アクションパターン

記述内容

フローチャートのループ構文には、以下のパターンを使用する。

機能 フローチャートのパターン

for ループ構文 for (index=0;index<number_of_loops;index++) { action; }

while ループ構文 while (condition) { action; }

do while ループ構文 do { action; } while (condition);

根拠 可読性の向上 プロセス / ワークフローに効果的 解析とシミュレーションが効率的

検証が効率的 組込みコード生成に効果的 / 効率的

更新履歴 V1.00

Page 76: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 76

8.付録 A: 自動化ツールに対する提言 以下の提言は、本ガイドラインの自動チェックツールを開発するすべての企業に向けたものである。本ガ

イドラインは、MAAB によって作成された。MAAB は、ツールベンダが本ガイドラインに反するモデル記

述をチェックするチェッカーを作成することを期待する。また、MAAB は、ツールベンダからのコンプライ

アンスマトリックスの提供を期待する。 コンプライアンスマトリックスは、以下の情報を含む。

対象とするドキュメントのタイトルとバージョン 各ガイドラインに関する以下の情報

ガイドラインの ID ガイドラインのタイトル 順守レベル 詳細

ガイドラインの ID とタイトルは、本ドキュメントと同一であること。また、順守レベルは、以下のいずれか

であること。 修正: ツールが、非順守部分をチェックし、自動または半自動で修正する チェック: ツールが、非順守部分をチェックし、明示化する。修正は、ユーザが行う 部分: ツールが、ガイドラインを部分的にチェックする

詳細部で、ガイドライン内でチェック可能な部分とチェック不可能な部分を明確化する 無し: ツールでは、ガイドラインをチェックできない

ユーザがマニュアルでチェックする推奨方法をツールベンダが提供することを期待する

Page 77: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 77

9.付録 B: ユーザによるガイドライン追加時の注意点 新しいガイドラインを追加する際に重要な項目は以下である。

わかりやすく、明確であること 簡単に見たい項目を探せること 内容を 小限にすること

これらの項目を満たしているガイドラインは、わかりやすく使いやすい。 “わかりやすく、明確であること”とは… ガイドラインの説明が正確で、はっきりとした文章で書かれ、簡潔に、モデル(またはモデルの一部)の特

徴を定義しているということである。ルールを遵守するための手段(特別なオプションを選択する、あるボ

タンをクリックするなど)を記述することはガイドラインの利用者にとって非常に有益である。また、例や反

例などをダイアグラムやスクリーンショット等を用いて記述することを推奨する。なお、ガイドラインの例

外は内容があいまいになるため、 小限とするべきである。ガイドラインに多くの例外がある場合は、1つのガイドラインで多くのルールを規定しようとしている可能性があるため、“内容を 小限にすること”

が必要である。 “簡単に見たい項目を探せること”とは… 明確で不変なタイトルとし、適切にカテゴライズすることである。タイトルは、ルールそのものではなく、ル

ールの対象を説明したものが良い。そうすることにより、将来に渡りタイトルを変更する必要がなく、簡単

に検索することができる。ルールそのものはガイドラインの記述内容に入れるべきである。例えば、名前

に使用できる文字列について取り上げている場合、タイトルは“名前に使用できる文字列”のようなもの

とし、記述内容に、実際に使用できる文字列と使用できない文字列を記述する。ガイドラインに前提条件

がある場合、前提条件となるガイドラインはそのガイドラインよりも前に記述するべきである。(前提条件

が別のセクションにある場合は、この限りではない。) “内容を 小限にすること”とは… 1 つのガイドラインには 1 つの特性のみを記述するということである。記述する内容は 小限とするべき

である。例えば、エラー防止と可読性について取り上げている 1 つの大きなガイドラインを作成するので

はなく、エラー防止と可読性のそれぞれについて 2 つのガイドラインを作成するべきである。そして、必

要であれば前提条件の項にもう一方のガイドラインを記述すればよい。また、 小限のガイドラインに比

べ、大きなガイドラインでは、多くのユーザに受け入れられるために内容を妥協しなければならない場合

がある。そのため、内容が弱く、具体性に欠け、ガイドラインとしてあまり役に立たない場合がある。 小

限のガイドラインは、妥協により変更することも少なく、利用しやすい。

Page 78: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 78

10.付録 C: フローチャートの使用例

if 構文には以下のパターンを使用する。

直線で記述するフローチャートパターン 曲線で記述するフローチャートパターン

if-then 構文

if-then-else 構文

if-then-else-if 構文

Page 79: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 79

if-then 構文のネスト

case 構文には以下のパターンを使用する。

直線で記述するフローチャートパターン 曲線で記述するフローチャートパターン

排他的選択による case 構文

排他的条件による case 構文

Page 80: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 80

ループ構文には以下のパターンを使用する。

直線で記述するフローチャートパターン 曲線で記述するフローチャートパターン

for ループ構文

while ループ構文

Page 81: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 81

do while ループ構文

if 構文は以下のパターンで代用できる。

直線で記述するフローチャートパターン 代用の直線で記述するフローチャートパターン

if-then-else-if 構文

Page 82: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 82

if-then 構文のネスト

Page 83: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 83

11.付録 D: Stateflow オブジェクトクイックリファレンス MATLAB v6.0 オンラインヘルプドキュメント“Stateflow.html”を参照。Stateflow ダイアグラムオブジェク

トと専門用語に関する優れたクイックリファレンスである。

Page 84: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 84

12.付録 E: 参考資料 注意:本章は、MATLAB R14SP3 の日本語版 Stateflow マニュアルから転記を行った。詳細は、 新

MATLAB の Stateflow マニュアルを参照すること。 アクション アクション は、Stateflow ダイアグラムの実行の一部として発生します。アクションは、1 つの状態から別

の状態への遷移の一部として、または状態のアクティビティに応じて実行されます。遷移は、条件アクシ

ョンと遷移アクションをもつことができます。たとえば、つぎのようになります。

アクション言語 アクション言語 は、指定可能なアクションおよびそれらに関連する表記法のカテゴリを定義します。たと

えば、状態は以下に示すように entry, during, exit, on event_name アクションをもつことができます。

アクションでは、ファンクションコール、イベントのブロードキャスト、変数割り当て等を行うことができます。

アクションとアクション言語に関する詳細は、 "Stateflow でのアクションの利用"を参照してください。 API (application programming interface) プログラミングまたはスクリプト環境からアプリケーションプログラムを使って、アクセスおよび通信を行う

ためのフォーマット チャートインスタンス Stateflow モデルから、Simulink ライブラリにストアされているチャートへのリンクです。ライブラリにある

チャートは、多数のチャートインスタンスを持つことができます。ライブラリのチャートを更新すると、その

チャートのすべてのインスタンスが自動的に更新されます。 条件 条件は、ブーリアン表現であり、指定した表現が真であれば遷移が発生するように指定します。 例えば、

つぎのようになります。

Page 85: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 85

上の例で、 状態 second がアクティブと仮定します。イベントが発生し、データスピードの値がデータス

レッショルドの値より大きい場合は、 状態 second と third 間の遷移が発生し、状態 third がアクティ

ブになります。 コネクティブジャンクション コネクティブジャンクションはシステムの判断ポイントです。 コネクティブジャンクションはグラフィカルオブ

ジェクトであり、Stateflow ダイアグラムの表現をシンプルにし、効率的なコード生成を容易にします。 コネクティブジャンクションは、求められるシステムの挙動を表現するために、補助的な方法を提供します。 この例題は、if コード構造の流れを表現するために、コネクティブジャンクション(小さい円)をどのように

使うかを示しています。

名前 ボタンアイコン 説明

Connective junction

2 つ以上の状態のうち 1 つの状態から出ている遷移が、同じイ

ベントを基に行われるが違う条件によって保護される状況を扱

うために、コネクティブジャンクションが使われます。

詳細は、"コネクティブジャンクション"を参照してください。 データ データオブジェクトは、Stateflow ダイアグラムで参照する数値をストアします。データオブジェクトの表現

についての詳細情報は、"データの追加"を参照してください。 データディクショナリ データディクショナリは、Stateflow ダイアグラム情報がストアされるデータベースです。 Stateflow ダイア

グラムオブジェクトを作成した場合、一度 Stateflow ダイアグラムを保存すると、オブジェクトに関する情

報がデータディクショナリにストアされます。 デバッガ "Stateflow Debugger"を参照してください。 構造 状態が 1 つ以上のサブステートで構成される場合、構造をもちます。 少なくとも 1 つの状態を含む

Stateflow ダイアグラムも、構造を持ちます。 階層を表現することは、状態がその階層でグループ化され

る方法に関して、いくつかのルールを必要とします。 スーパーステートは、並列(AND)か排他的(OR)の構造のいずれかを持ちます。 階層の特定のレベルでのすべてのサブステートは、同じ構造である必要

があります。 並列状態の構造: 並列(AND)状態構造は、状態の境界線が破線で表現されます。 階層が同じレベル

の全状態が同時にアクティブである場合、この表現は適切です。 並列状態でのアクティビティは、本質

的に独立です。

Page 86: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 86

排他的状態の構造: 排他的(OR) 状態構造は、状態の境界線が実線で表現されます。 排他的(OR)構造は、お互いに排他的であるシステムモードを記述するのに使われます。 同じ階層レベルでの 1 つの

状態のみが、一度にアクティブとなりえます。 デフォルト遷移 デフォルト遷移は、2 つ以上の隣り合った排他的(OR)状態にあいまいさがある場合、先に始まる排他的

(OR)状態を指定するために使われます。 たとえば、デフォルト遷移は、他の情報がない場合に、排他的

(OR)構造をもつスーパーステートのどのサブステートにシステムがデフォルトで入るかを指定します。 デフォルト遷移は、ジャンクションをデフォルトと指定することもできます。 デフォルト遷移を表現するには、

ツールバーからデフォルト遷移オブジェクトを選択し、ドロップして遷移先のオブジェクトに付け加えます。 デフォルト遷移オブジェクトは、遷移元オブジェクトはありませんが、遷移先を持つ遷移です。

名前 ボタンアイコン 詳細

デフォルト遷移

階層のこのレベルが始まるとき、デフォルトでアクティブにな

る状態を示すために、デフォルト遷移を使います。

詳細は、"デフォルト遷移"を参照してください。

イベント イベントは、Stateflow ダイアグラムの実行を駆動します。 Stateflow ダイアグラムに影響するすべての

イベントが定義される必要があります。 イベントの発生は、Stateflow ダイアグラムにある状態が評価さ

れる状況を引き起こします。 イベントのブロードキャストは、遷移を引き起こすトリガとなることができ、か

つ/あるいは、アクションを実行するトリガとなることができます。 イベントは、この階層でのイベントの親

から始まり、トップダウン則でブロードキャストされます。 イベントは、Stateflow Explorer で追加、削除、編集されます。 詳細は、"イベントの追加"を参照してくだ

さい。 エクスプローラ Stateflow の任意の親オブジェクトに対してデータおよびイベントオブジェクトを表示、修正、作成するた

めのツール。エクスプローラは、Stateflow マシンに対してもターゲットの表示、修正、作成を行います。 "Stateflow Explorer"を参照してください。 Finder Simulink Find ツールをサポートしないプラットフォーム上で Stateflow ダイアグラムでのオブジェクトの

検索を行うツール "Stateflow Finder"を参照してください。 有限ステートマシン (FSM) 有限ステートマシン(Finite State Machine: FSM)は、イベントドリブンシステムの表現です。 また、FSMは、リアクティブシステムを記述するためにも使われます。 イベントドリブンまたはリアクティブシステムで

は、システムは、あるモードまたは状態から他の指示されたモードまたは状態へ、変更を定義している条

件が真である条件下で、遷移します。 流れ図 流れ図は、状態、またはデフォルト遷移セグメントからスタートする遷移セグメントではじまる一連の判定

点を与える流れパスです。 流れパス 流れパスは、遷移セグメントとジャンクションの順番付けされたシーケンスであり、各継承セグメントが先

のセグメントの終端となるジャンクションから始まります。 流れサブグラフ 流れサブグラフは、同じ遷移セグメントから始まる一連の流れパスです。 グラフィカル関数 グラフィカル関数は、そのロジックが流れ図によって定義される関数です。 "関数を利用したアクション"を参照してください。

Page 87: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 87

階層 階層は、階層は、他のより高いレベルにある状態内部に状態をおくことにより、複雑なシステムを組織化

することを可能にします。 階層化設計は、通常遷移の数が減少し、きちんとした、より扱いやすいダイア

グラムを実現します。 詳細は、"Stateflow オブジェクトの階層"を参照してください。 ヒストリジャンクション ヒストリジャンクションは、履歴情報に基づいて、遷移の遷移先のサブステートを指定する方法を与えま

す。 スーパーステートにヒストリジャンクションがある場合、遷移先のサブステートへの遷移は、 後に

アクセスしたサブステートであると定義されます。 ヒストリジャンクションは、置いてある階層のレベルに

適用されます。

名前 ボタンアイコン 詳細

ヒストリジャ

ンクション

ヒストリジャンクションは、置いてある階層レベルに入った場合に、

後にアクティブだった状態が次回アクティブになるように使いま

す。

詳細は、つぎの節を参照してください。

"ヒストリジャンクション" "デフォルト遷移とヒストリジャンクションの例" "デフォルト遷移のラベル付けの例" "ヒストリジャンクションの内部遷移の例"

内部遷移 内部遷移は、遷移元の状態を終了しない遷移です。 内部遷移は、XOR 構造を持つスーパーステートに

対して定義する場合、 も効果的です。 内部遷移を使うと、Stateflow ダイアグラムを大変シンプルにで

きます。詳細は、"内部遷移" と"ヒストリジャンクションの内部遷移の例"を参照してください。 ライブラリリンク ライブラリリンクは、Simulink ブロックライブラリのライブラリモデルにストアされているチャートへのリンク

です。 ライブラリモデル Simulink ライブラリにストアされた Stateflow モデルです。 チャートをコピーすることによって、モデルに

ライブラリからのチャートを含ませることができます。 ライブラリからモデルにチャートをコピーする場合、

Stateflow は物理的にはモデルにチャートを含まず、ライブラリチャートへのリンクを作成します。1 つの

チャートに複数のリンクを作成できます。各リンクは、 チャートインスタンスと呼ばれます。モデルにライ

ブラリからのチャートを含む場合、Stateflow マシンもまた含みます。 従って、ライブラリチャートへのリン

クを含む Stateflow モデルは、複数の Stateflow マシンを持ちます。 Stateflow がライブラリモデルから

のチャートを含むモデルをシミュレーションする場合、たとえそのライブラリモデルのうちいくつかだけへ

のリンクがあるとしても、そのモデルはライブラリモデルからの全チャートを含みます。 しかしながら

Stateflow がスタンドアロンか RTW ターゲットを生成する場合、リンクのあるチャートのみを含みます。 ライブラリモデルへのリンクを含むモデルは、ライブラリモデルの全チャートが文法チェックを通り、コンパ

イルエラーが起きない場合のみシミュレーションできます。 マシン ライブラリリンクからのチャートインスタンスを除いた Simulink モデルによって定義されたすべての

Stateflow ブロックの集合です。モデルが任意のライブラリリンクを含む場合、リンクの元になるモデルに

よって定義されている Stateflow マシンも含みます。 表記法 オブジェクトと、それらのオブジェクトの関係を支配するルールの集合を定義します。 Stateflow の表記

法は、Stateflow ダイアグラムによって伝えられる設計情報を伝達する、共通の言語を与えます。 Stateflow は、つぎに示すもので構成されます。

グラフィカルオブジェクトの集合

Page 88: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 88

非グラフィカルな、テキストベースオブジェクトの集合

これらのオブジェクト間で定義された関係

並列処理 並列処理 のあるシステムは、同時にアクティブとなりうる 2 つ以上の状態をもつことができます。 並列

状態のアクティビティは、基本的に独立です。 並列処理は、並列(AND)状態構造で表現されます。 詳細は、"状態の構造"を参照してください。 Real-Time Workshop® Simulink についての自動 C 言語コードジェネレータです。 Simulink ブロックダイアグラムモデルから Cコードを直接生成し、様々な環境でリアルタイムに実行できるプログラムを自動的にビルドします。 詳細

は、Real-Time Workshop のドキュメントを参照してください。 rtw ターゲット Real-Time Workshop によって生成されたコードからビルドされた、実行可能プログラムです。 詳細は、

“ターゲットのビルド”を参照してください。 S-Function Simulink を Stateflow と一緒にシミュレーションに使用する場合、Stateflow は各 Stateflow マシンにつ

いて S-function(MEX- ファイル) を生成し、モデルのシミュレーションをサポートします。 この生成コード

はシミュレーションターゲットであり、Stateflow の中で sfun ターゲットと呼ばれます。 詳細は、Using Simulink を参照してください。 意味論 意味論は、表記法がどのように解釈され、裏でどのように実行されるのかを説明します。 完全な

Stateflow ダイアグラムは、どのようにシステムが振る舞うのかを伝えます。 Stateflow ダイアグラムは、

遷移と状態に関連するアクションを含みます。 意味論は、Stateflow ダイアグラムの実行中にアクション

の生じるシーケンスを説明します。 Simulink Similink は、動的システムのモデリング、シミュレーション、解析のためのソフトウェアパッケージです。 Simulink は線形、非線形システムをサポートしており、連続時間、サンプルされた時間(離散時間)、ま

たは両方のハイブリッドをサポートしています。 システムはマルチレート、すなわち、違うレートでサンプ

リングされる、あるいは更新される部分を持っているシステムも実現できます。 Simulink では、マウスを使ってブロックを接続し、キーボードでブロックパラメータを編集して、ブロックダ

イアグラムとしてシステムを表現することができます。 Stateflow はこの環境の一部で、Stateflow ブロッ

クはマウスされた Similink モデルです。 Stateflow block は Simulink モデルをマスクします。Stateflowは各 Stateflow マシンに対応する S-function をビルドします。 この S-function は、Simulink がシミュレ

ーションと解析を行う際の媒体となります。 Stateflow がモデリングする制御動作は、 Simulink ブロックダイアグラムでモデリングされたアルゴリズ

ムな動作を補足します。 Stateflow ダイアグラムブロックを Similink モデルに含めることにより、Similinkシミュレーションにイベントドリブンの動作を追加できます。 通常の Similink ブロックセットと Stateflow blocks を組み合わせて、データフロー、コンとロールフローの両方を表現するモデルを作成します。 組み合わされたモデルは Simulink を使ってシミュレーションされます。 Using Simulink ドキュメントには、Simulink の使用法が説明されており、Simulink ブロックの操作方法、

ブロックパラメータへのアクセス方法、モデルを構築するためにブロックを接続する方法が説明されてい

ます。また、標準の Simulink ライブラリの各ブロックリファレンスも記載されています。 状態 リアクティブシステムのモードのことを状態といいます。 多くの状態が、リアクティブシステムでは起こり

えます。 Stateflow ダイアグラムの状態は、それらのモードを表現します。 状態のアクティビティまたは

非アクティビティは、イベントと条件の間の遷移に基づいて動的に変化します。

Page 89: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 89

全状態は階層構造になっています。 単一の状態で構成される Stateflow ダイアグラムでは、その状態

の親は Stateflow ダイアグラムそれ自身です。 また状態には履歴があり、履歴は Stateflow ダイアグラ

ム内の同じ階層レベルに適用されます。 状態はアクションを持つことができます。 アクションはアクショ

ンタイプに基づいて順次実行されます。 アクションタイプには、entry, during, exit, on event_name が

あります。

名前 ボタンアイコン 詳細

状態 状態は、システムのモードを表現するために使われます。

Stateflow ブロック Stateflow ブロックはマスクされた Simulink モデルであり、空でタイトルのない Stateflow ダイアグラムと

同じです。 Stateflow block ブロックを使って、Stateflow ダイアグラムを Similink モデル内に置きます。 Stateflow がモデリングする制御動作は、 Simulink ブロックダイアグラムでモデリングされたアルゴリズ

ムな動作を補足します。 Stateflow blocks を Similink モデルに含むことにより、Similink シミュレーショ

ンに複雑なイベントドリブンの動作を追加できます。 通常の Simulink とツールボックス、ブロックセットと

Stateflow blocks を組み合わせて、データフロー、コントロールフローの両方を表現するモデルを生成し

ます。 組み合わされたモデルは Simulink を使ってシミュレーションされます。 Stateflow Debugger Stateflow デバッガを使って、Stateflow ダイアグラムをデバッグし、アニメーションを表示することができ

ます。 Stateflow ダイアグラムのシミュレーションにおいて、各状態は全コード適用範囲で評価されます。 この適用範囲の解析は、ターゲットがデバッグオプションを付けてコンパイル、ビルドされると、自動的に

実行されます。 デバッガはまた、動的なチェックを行うために使うことができます。 デバッガは Stateflowマシン上で動作します。 Stateflow ダイアグラム Stateflow を使って、Stateflow ダイアグラムを作成します。 Stateflow ダイアグラムは、有限ステートマ

シンのグラフィカルな表現でもあり、状態と遷移がシステムの基本的要素です。 Stateflow ダイアグラム

に関する詳細は、"Stateflow と Simulink"を参照してください。 Stateflow Explorer エクスプローラを使用して、データ、イベント、ターゲットオブジェクトを、追加、削除、編集できる。 Stateflow Finder ユーザの指定した検索基準を基にオブジェクトのリストを示します。検索結果の出力表示画面で、オブジ

ェクトをクリックすると、そのオブジェクトのプロパティダイアログボックスに直接アクセスすることができま

す。 詳細は、"Stateflow Finder の使用方法"を参照してください。 サブチャート サブチャートは、他のチャートに含まれるチャートです。 "サブチャートを利用したチャート"を参照してくだ

さい。 サブステート 状態が、スーパーステートに含まれる場合は、サブステートです。

スーパーステート 状態が、サブステートと呼ばれる他の状態を含む場合は、スーパーステートです。

Page 90: CONTROL ALGORITHM MODELING GUIDELINES …jmaab.mathworks.jp/.../JMAABStyleGuideline_Version_2.pdf2.1.2. ID ID は、アルファベットの小文字2 文字(ガイドライン著者を表す)と、4

© Copyright 2007 JMAAB. All rights reserved. 90

スーパートランジション スーパートランジションは、違うサブチャートにあるオブジェクト間での遷移です。 詳細は、"スーパートラ

ンジションを利用した遷移"を参照してください。 ターゲット モデル内の Stateflow ダイアグラムから生成されるコードに対するコンテナオブジェクト。Stateflow は、

モデルに対するすべての Stateflow ダイアグラムを Stateflow マシンとして表わします。これは、ターゲ

ットオブジェクトが Stateflow マシンに属することを意味します。 Stateflow は、シミュレーション、Real-Time Workshop およびカスタムターゲットを含むすべてのターゲ

ットタイプについてコードを生成します。 詳細は、第 12 章, “ターゲットのビルド”を参照してください。 トップダウン処理 トップダウン処理は、Stateflow が状態とイベントを処理する方法です。 特に、Stateflow は状態の前に

スーパーステートを処理します。 Stateflow は、 初にスーパーステートがアクティブである場合のみ、

状態を処理します。 遷移 遷移は、システムがある状態から別の状態へ移る状況を言います。 遷移の各端は、遷移元、遷移先オ

ブジェクトに接続されます。 遷移元は遷移の始まりで、遷移先は遷移の終わりのところです。 遷移が起

こると、多くの場合、イベントも発生します。 遷移パス 遷移パスは、状態で始まり、状態で終了する流れパスです。 遷移セグメント 完全な状態間遷移の一部である、状態からジャンクション(state-to-junction)、ジャンクションからジャン

クション(junction-to-junction)、ジャンクションから状態(junction-to-state)です。 遷移セグメントは、広い

意味で遷移として解釈される場合があります。 バーチャルスクロールバー バーチャルスクロールバーは、選択リストをスクロールすることによって、変数を設定できるようにします。 バーチャルスクロールバーを使ってメニュー項目の上でマウスを動かすと、カーソルが 2 重の矢印に変

わります。 バーチャルスクロールバーは、垂直方向あるいは水平方向に動きます。 動く方向は、矢印の

示す方向となります。 値を変更するには、水平方向あるいは垂直方向に、マウスをドラッグしてください。