Main Content

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

Math Operations

hisl_0001: Abs ブロックの使用法

ID: タイトルhisl_0001: Abs ブロックの使用法
説明Abs ブロックの使用時に、生成コードのロバスト性をサポートするには以下に従ってください。
AAbs ブロックへの入力として Boolean データ型と符号なしデータ型を避ける。
Bブロック パラメーター [整数オーバーフローで飽和] を選択する。
メモ:

Abs ブロックは、Boolean データ型をサポートしていません。符号なし入力データ型を指定すると、生成されたコードの外で Abs ブロックが最適化され、その結果、生成コードまでトレースできないブロックになる可能性があります。

符号付きデータ型の場合、Simulink® は最小の負の絶対値を表現しません。[整数オーバーフローで飽和] を選択すると、データ型の絶対値は、表現可能な最大の正の数値まで飽和します。[整数オーバーフローで飽和] の選択を解除すると、シミュレーションでの絶対値の計算と生成コードに一貫性がなくなるか予期しないものになることがあります。

根拠Aトレース可能なコードの生成のサポート。
Bモデル シミュレーションと生成コードの一定の動作および予想される動作を実行する。
モデル アドバイザー チェック Check usage of Abs blocks (Simulink Check)
参照
  • IEC 61508-3, Table A.3 (3) 'Language subset'
    IEC 61508-3, Table A.4 (3) 'Defensive programming'
    IEC 61508-3, Table A.3 (2) 'Strongly typed programming language’
    IEC 61508-3, Table B.8 (3) 'Control Flow Analysis'

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1 (1b) 'Use of language subsets'
    ISO 26262-6, Table 1 (1d) 'Use of defensive implementation techniques'
    ISO 26262-6, Table 7 (1f) 'Control flow analysis'

  • EN 50128, Table A.4 (11) 'Language Subset'
    EN 50128, Table A.3 (1) 'Defensive Programming'
    EN 50128, Table A.4 (8) 'Strongly Typed Programming Language'
    EN 50128, Table A.19 (3) 'Control Flow Analysis'

  • DO-331, Section MB.6.3.2.d 'Low-level requirements are verifiable'

  • MISRA C:2012, Dir 4.1

最終更新R2018b

推奨

非推奨

hisl_0002: Math Function ブロックの使用方法 (余剰と逆数)

ID: タイトルhisl_0002: Math Function ブロックの使用方法 (余剰と逆数)
説明

除算後の剰余関数 (rem) または逆数関数 (reciprocal) を含む Math Function ブロックの使用時に、生成コードのロバスト性をサポートするには以下に従ってください。

A

関数 reciprocal の入力がゼロになるのを防ぐ。

B

関数 rem の 2 つ目の入力がゼロになるのを防ぐ。

メモ:

ゼロ除算演算が生成される場合があります。その場合、関数 reciprocal の出力値は無限 (Inf) になり、関数 rem の出力値は不定値 (NaN) になります。オーバーフローまたは未定義の値になるのを避けるには、対応する入力がゼロになるのを防いでください。

根拠オーバーフローまたは未定義の値になるのを防ぐ
モデル アドバイザー チェックCheck usage of Math Function blocks (rem and reciprocal functions) (Simulink Check)
参照
  • IEC 61508-3, Table A.3 (3) 'Language subset’
    IEC 61508-3, Table A.4 (3) 'Defensive programming’

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1(b) 'Use of language subsets'
    ISO 26262-6, Table 1(d) 'Use of defensive implementation techniques'

  • EN 50128, Table A.4 (11) 'Language Subset'
    EN 50128, Table A.3 (1) 'Defensive Programming'

  • DO-331, Section MB.6.3.2.g 'Algorithms are accurate'

  • MISRA C:2012, Dir 4.1

最終更新R2017b

次の例では、入力信号がゼロ近傍で振動している場合、出力値に大きな変化が見られます。値の大幅な変化を防ぐことが必要です。

hisl_0003: Square Root ブロックの使用

ID: タイトルhisl_0003: Square Root ブロックの使用
説明

Square Root ブロックの使用時に、生成されたコードのロバスト性をサポートするには、以下のいずれかを行います。

A

複素数を出力として見なす。

B

入力が負の値になるのを防ぐ。

根拠A、B生成されたコードの望ましくない結果を避ける。
モデル アドバイザー チェックCheck usage of Sqrt blocks (Simulink Check)
参照
  • IEC 61508-3, Table A.3 (3) 'Language subset’
    IEC 61508-3, Table A.4 (3) 'Defensive programming’

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1(b) 'Use of language subsets'
    ISO 26262-6, Table 1(d) 'Use of defensive implementation techniques'

  • EN 50128, Table A.4 (11) 'Language Subset'
    EN 50128, Table A.3 (1) 'Defensive Programming'

  • DO-331, Section MB.6.3.2.g 'Algorithms are accurate'

  • MISRA C:2012, Dir 4.1

最終更新R2016a

hisl_0028: Reciprocal Square Root ブロックの使用

ID: タイトルhisl_0028: Reciprocal Square Root ブロックの使用
説明

Reciprocal Square Root ブロックの使用時に、生成されたコードのロバスト性をサポートするには、以下のいずれかを行います。

A

入力が負の値になるのを防ぐ。

B

入力がゼロになるのを防ぐ。

メモ:

ゼロ除算演算が生成される場合があります。その場合、逆関数の (Inf) の出力値が生成されます。オーバーフローまたは未定義の値になるのを避けるには、対応する入力がゼロになるのを防いでください。

根拠A、B生成されたコードの望ましくない結果を避ける。
モデル アドバイザー チェックCheck usage of Reciprocal Sqrt blocks (Simulink Check)
参照
  • IEC 61508-3, Table A.3 (3) 'Language subset’
    IEC 61508-3, Table A.4 (3) 'Defensive programming’

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1(b) 'Use of language subsets'
    ISO 26262-6, Table 1(d) 'Use of defensive implementation techniques'

  • EN 50128, Table A.4 (11) 'Language Subset'
    EN 50128, Table A.3 (1) 'Defensive Programming'

  • DO-331, Section MB.6.3.2.g 'Algorithms are accurate'

  • MISRA C:2012, Dir 4.1

最終更新R2016a

hisl_0004: Math Function ブロックの使用方法 (自然対数と 10 を底とする対数)

ID: タイトルhisl_0004: Math Function ブロックの使用方法 (自然対数と 10 を底とする対数)
説明

自然対数関数 (log) または 10 を底とする対数関数 (log10) パラメーターを含む Math Function ブロックの使用時に、生成コードのロバスト性をサポートするには以下に従ってください。

A

入力が負の値になるのを防ぐ。

B

入力がゼロになるのを防ぐ。

C

複素数を出力値として見なす。

メモ:

出力データ型を複素数に設定した場合、自然対数関数と 10 を底とする対数関数は、負の入力値に対して複素数値を出力します。出力データ型を実数に設定すると、これらの関数は、負の数値には NAN を、ゼロの値には負の無限大 (-inf) を出力します。

根拠A、B、Cロバストなコードの生成のサポート。
モデル アドバイザー チェックCheck usage of Math Function blocks (log and log10 functions) (Simulink Check)
参照
  • IEC 61508-3, Table A.3 (3) 'Language subset’
    IEC 61508-3, Table A.4 (3) 'Defensive programming’

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1(b) 'Use of language subsets'
    ISO 26262-6, Table 1(d) 'Use of defensive implementation techniques'

  • EN 50128, Table A.4 (11) 'Language Subset'
    EN 50128, Table A.3 (1) 'Defensive Programming'

  • DO-331, Section MB.6.3.2.g 'Algorithms are accurate'

  • MISRA C:2012, Dir 4.1

最終更新R2017b

以下の保護が可能です。

  • Abs ブロックを使用することによる負の数値からの保護。

  • MinMax ブロックと Constant ブロックの組み合わせを使用することによるゼロ値からの保護。[定数値]eps (epsilon) に設定します。

以下の例では、-100100 の入力値に対する結果の出力を示しています。

hisl_0005: Product ブロックの使用方法

ID: タイトルhisl_0005: Product ブロックの使用方法
説明

約数入力を含む Product ブロックの使用時に、生成コードのロバスト性をサポートするには以下に従ってください。

A

[要素単位 (.*)] モードで、すべての約数入力がゼロになるのを防ぐ。

B

[行列 (*)] モードで、すべての約数入力が特異値入力行列になるのを防ぐ。

メモ:

要素単位の除算で Product ブロックを使用する場合、ゼロ除算により NaN が出力される場合があります。オーバーフローを防ぐには、約数入力がゼロになるのを防いでください。

Product ブロックを使用して逆行列、または逆行列除算を計算する場合、特異行列による除算が発生することがあります。この除算により NaN が出力されます。オーバーフローを避けるには、約数入力が特異値入力行列になるのを防いでください。

根拠A および Bオーバーフローから保護する。
モデル アドバイザー チェックモデル アドバイザー チェックを使用して、このモデリング ガイドラインへの準拠を確認することはできません。
参照
  • IEC 61508-3, Table A.3 (3) 'Language subset’
    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 (1d) 'Use of defensive implementation techniques'

  • EN 50128, Table A.4 (11) 'Language Subset'
    EN 50128, Table A.3 (1) 'Defensive Programming'

  • DO-331, Section MB.6.4.2.2 'Robustness Test Cases’
    DO-331, Section MB.6.4.3 'Requirements-Based Testing Methods’
    DO-331, Section MB.6.3.1.e 'High-level requirements conform to standards'
    DO-331, Section MB.6.3.2.e 'Low-level requirements conform to standards'
    DO-331, Section MB.6.3.1.g 'Algorithms are accurate'
    DO-331, Section MB.6.3.2.g 'Algorithms are accurate'
    DO-331, Section MB.6.3.3.b 'Software architecture is consistent'

  • MISRA C:2012, Dir 4.1

前提条件hisl_0314: [コンフィギュレーション パラメーター]、[診断]、[データ有効性]、[信号]
最終更新R2019a

hisl_0029: Assignment ブロックの使用方法

ID: タイトルhisl_0029:Assignment ブロックの使用方法
説明

Assignment ブロックの使用時に、生成されたコードのロバスト性をサポートするには、最初に使用する前に配列フィールドを初期化します。

メモ:

Assignment ブロックの出力ベクトルがブロックへの入力で初期化されていない場合は、ベクトルの要素が生成コードで初期化されない可能性があります。

1 回のシミュレーション タイム ステップの間に Assignment ブロックを反復して使用し、すべての配列フィールドを割り当てる場合は、ブロックへの初期化入力は必要ありません。

初期化されていないブロック出力の要素にアクセスすると、予期しない動作が発生する可能性があります。

根拠生成されたコードの望ましくない結果を避ける。
モデル アドバイザー チェックCheck usage of Assignment blocks (Simulink Check)
参照
  • IEC 61508-3, Table A.3 (3) 'Language subset’
    IEC 61508-3, Table A.4 (3) 'Defensive programming’
    IEC 61508-3, Table A.3 (2) ‘Strongly typed programming language’

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262–6, Table 1(b) 'Use of language subsets'
    ISO 26262–6, Table 1(d) 'Use of defensive implementation techniques'

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

  • DO-331, Section MB.6.3.1.e 'High-level requirements conform to standards’
    DO-331, Section MB.6.3.2.e 'Low-level requirements conform to standards’

  • MISRA C:2012, Rule 9.1

最終更新R2016a

非推奨: ブロックを反復して使用しない場合に初期化入力 Y0 なし


推奨: ブロックを反復して使用しない場合に初期化入力 Y0 あり


推奨: ブロックを反復して使用する場合に配列フィールドを初期化

hisl_0066: Gain ブロックの使用方法

ID: タイトルhisl_0066: Gain ブロックの使用方法
説明生成されたコードのトレーサビリティをサポートするためには、Gain ブロックの値を 1 に関連付けてはなりません。
メモ

コード生成プロセスは、最適化中に 1 と等しいゲイン値を削除し、追跡可能なコードをもたないモデル要素を得ることができます。

非自動ストレージ クラスをもつ名前付きパラメーターのデータ オブジェクトに対するゲイン値の設定は、このルールに対する例外です。

根拠追跡可能なコードの生成をサポートする。
モデル アドバイザー チェックCheck usage of Gain blocks (Simulink Check)
参照
  • DO-331, Section MB.6.3.2.d 'Low-level requirements are verifiable'

  • IEC 61508-3, Table A.3 (3) 'Language subset'
    IEC 61508-3, Table A.4 (3) 'Defensive programming'
    IEC 61508-3, Table B.8 (3) 'Control Flow Analysis'

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1 (1b) 'Use of language subsets'
    ISO 26262-6, Table 1 (1d) 'Use of defensive implementation techniques'
    ISO 26262-6, Table 7 (1f) 'Control flow analysis'

  • EN 50128, Table A.4 (11) 'Language Subset'
    EN 50128, Table A.3 (1) 'Defensive Programming'
    EN 50128, Table A.19 (3) 'Control Flow Analysis'

最終更新R2018a