Main Content

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

himl_0011: 条件式のデータ型とサイズ

ID: タイトルhiml_0011: 条件式のデータ型とサイズ
説明

logical スカラーを条件式に使用しなければなりません。条件式には次が含まれます。

  • if

  • elseif

  • while

  • Stateflow® 遷移の条件式

根拠

予期しないコード パスの実行を回避する

モデル アドバイザー チェックCheck type and size of condition expressions (Simulink Check)
参考文献
  • IEC 61508-3, Table A.3 (2) 'Strongly typed programming language’
    IEC 61508-3, Table A.3 (3) 'Language subset’

  • IEC 62304, 5.5.3 - Software Unit acceptance criteria

  • ISO 26262-6, Table 1(b) 'Use of language subsets'
    ISO 26262-6, Table 1(c) 'Enforcement of strong typing'

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

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

  • MISRA C:2012 Rule 14.4 - The controlling expression of an if statement and the controlling expression of an iteration-statement shall have essential Boolean type.

最終更新R2019b

推奨

変数 var が値 -1 をもつ double 型のスカラーであると仮定します。

MATLAB コード:

if var > 0 % expression is a logical scalar
    … % will not be executed
elseif var < 0 % expression is a logical scalar
    … % will be executed
else
    … % will not be executed
end
while var < 5 % expression is a logical scalar        
    var = var + 1; % executed 5 times
end

Stateflow 遷移条件:

[var > 0]{…} % condition action will not be executed

非推奨

変数 var が値 -1 をもつ double 型のスカラーであると仮定します。

MATLAB コード:

if var % expression is a double scalar
    … % will be executed because var is non-zero
elseif ~var    
    … % will not be executed
else
    … % will not be executed
end
while var % expression is a double scalar
    var = var + 1; % executed 1 time
end

Stateflow 遷移条件:

[var]{…} % condition action will be executed because var is non-zero