Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Stateflow チャートの考慮事項

hisf_0064: コード準拠性を高める Stateflow データに対するシフト演算

ID: タイトルhisf_0064: コード準拠性を高める Stateflow® データに対するシフト演算
説明Stateflow ビットシフト演算が含まれた生成コードのコード準拠性を高めるには、以下を実行しないでください。
A

入力の型のビット幅より大きい右シフト演算または負の値による右シフト演算

B

出力の型のビット幅より大きい左シフト演算または負の値による左シフト演算

メモ:

このガイドラインや他のモデリング ガイドラインを使用すると、コーディング標準に準拠したコードを生成する可能性が高まります。

根拠コーディング標準違反の可能性がある生成コード内のシフト演算を防ぐため。
モデル アドバイザー チェックCheck usage of shift operations for Stateflow data (Simulink Check)
参照
  • DO-331 Section MB.6.3.1.b 'High-level requirements are accurate and consistent'
    DO-331 Section MB.6.3.2.b 'Low-level requirements are accurate and consistent'

  • IEC 61508–3, Table A.3 (2) Strongly typed programming language
    IEC 61508–3, Table A.4 (3) Defensive programming

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1 (1b) Use of language subsets
    ISO 26262-6, Table 1 (1c) Enforcement of strong typing
    ISO 26262-6, Table 1 (1d) Use of defensive implementation techniques

  • EN 50128, Table A.4 (8) Strongly Typed Programming Language
    EN 50128, Table A.3 (1) Defensive Programming

前提条件hisl_0060: MISRA C:2012 準拠性を高めるコンフィギュレーション パラメーター
最終更新R2017b

hisf_0065: コード準拠性を高める Stateflow 型キャスト演算

ID: タイトルhisf_0065: コード準拠性を高める Stateflow 型キャスト演算
説明C アクション言語を使用する Stateflow チャートでは、Stateflow が整数と固定小数点の計算を、入力データ型より広いデータ型に変換するのを防ぐために := 表記を使用します。
メモ

このガイドラインや他のモデリング ガイドラインを使用すると、コーディング標準に準拠したコードを生成する可能性が高まります。

根拠コーディング標準違反の可能性がある生成コード内の暗黙的キャストを防ぐ。
モデル アドバイザー チェックCheck assignment operations in Stateflow Charts (Simulink Check)
参照
  • DO-331 Section MB.6.3.1.b 'High-level requirements are accurate and consistent'
    DO-331 Section MB.6.3.2.b 'Low-level requirements are accurate and consistent'

  • IEC 61508–3, Table A.3 (2) Strongly typed programming language
    IEC 61508–3, Table A.4 (3) Defensive programming

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1 (1b) Use of language subsets
    ISO 26262-6, Table 1 (1c) Enforcement of strong typing
    ISO 26262-6, Table 1 (1d) Use of defensive implementation techniques

  • EN 50128, Table A.4 (8) Strongly Typed Programming Language
    EN 50128, Table A.3 (1) Defensive Programming

前提条件hisl_0060: MISRA C:2012 準拠性を高めるコンフィギュレーション パラメーター
最終更新R2017b

hisf_0211: Stateflow チャートで単項演算子の使用を禁止してコード準拠性を高める

ID: タイトルhisf_0211: Stateflow チャートで単項演算子の使用を禁止してコード準拠性を高める
説明生成コード内のコード準拠性を高めるには、次を実行します。
A

符号なしデータ型に単項マイナス演算子を使用しない。

メモ:

MATLAB® および C アクション言語は符号なしの式での単項マイナス演算子の使用を制限しません。

根拠生成コード内のコード準拠性を高める。
モデル アドバイザー チェックCheck Stateflow charts for unary operators (Simulink Check)
参照
  • DO-331 Section MB.6.3.1.b 'High-level requirements are accurate and consistent'
    DO-331 Section MB.6.3.2.b 'Low-level requirements are accurate and consistent'

  • IEC 61508–3, Table A.3 (2) Strongly typed programming language
    IEC 61508–3, Table A.4 (3) Defensive programming

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1 (1b) Use of language subsets
    ISO 26262-6, Table 1 (1c) Enforcement of strong typing
    ISO 26262-6, Table 1 (1d) Use of defensive implementation techniques

  • EN 50128, Table A.4 (8) Strongly Typed Programming Language
    EN 50128, Table A.3 (1) Defensive Programming

  • MISRA C:2012, Rule 10.1

最終更新R2017b

hisf_0213: Stateflow チャートでゼロ除算の計算を禁止して MISRA C:2012 準拠性を向上

タイトルhisf_0213: Stateflow チャートでゼロ除算の計算を禁止して MISRA C:2012 準拠性を向上
説明浮動小数点と整数ベースの演算で生成コードの MISRA C:2012 準拠性を高めるには、以下のいずれかを行います。
A

モデルの静的解析を実行して、ゼロ除算が不可能であることを証明する。

B

Stateflow でエラー チェックを明示的にモデル化して、生成された C コードにランタイム エラー チェックを提供する。

C

コード置換ライブラリ (CRLs) を使用してコード生成プロセスを変更し、ゼロ除算を防ぐ

D

整数ベースの演算の場合は、コンフィギュレーション パラメーター [除算演算の例外処理を防止するコードを削除] をクリアする

メモ:

ランタイム エラー チェックを使用すると、生成コードに追加の計算およびメモリのオーバーヘッドが生じます。したがって、静的解析ツールを使用して、生成コードのエラーを制限することをお勧めします。

Simulink® Design Verifier™ の設計エラー検出機能を使用して静的解析を実行できます。詳細については、静的なランタイム エラーの検出 (Simulink Design Verifier)を参照してください。または、Simulink Design Verifier ライセンスをお持ちの場合は、モデル アドバイザー チェックのゼロ除算の検出 (Simulink Design Verifier)を使用してモデル内のゼロ除算エラーを特定できます。

静的解析によって、コードのセクションにゼロ除算が含まれている可能性があると判断された場合は、モデルのそのセクションにランタイム保護を追加します (例を参照)。変更された CRL を使用するか、パラメーター [除算演算の例外処理に対して保護されたコードの削除] を選択すると、すべての除算演算がゼロ除算演算から保護されます。ただし、このアクションによって追加の計算およびメモリのオーバーヘッドが発生します。

モデルではランタイム保護を 1 つだけ (B、C、または D) 使用してください。1 つを超えるオプションを使用すると、冗長保護演算になる可能性があります。

根拠A、B、
C、D
生成コードの MISRA C:2012 準拠性を高める
モデル アドバイザー チェックモデル アドバイザー チェックを使用して、このモデリング ガイドラインへの準拠を確認することはできません。
参照
  • MISRA C:2012, Dir 4.1

参考
最終更新R2018a

ランタイム ゼロ除算保護は、グラフィカル関数を使用して実現できます。各データ型に対して一意の関数を提供する必要があります。