主要内容

数学操作

hisl_0001:使用Abs块

ID:标题 hisl_0001:使用Abs块
描述 支持生金宝app成的代码的健壮性,当使用腹肌块,
一个 避免布尔和无符号数据类型作为输入腹肌块。
B 选择块参数浸透在整数溢出
笔记

腹肌块不支持布尔数据类型。金宝app指定一个无符号输入数据类型,可以优化腹肌生成的代码块,导致你不能跟踪生成的代码块。

签署了数据类型,仿真软件金宝app®不代表最负值的绝对值。当您选择浸透在整数溢出的绝对值数据类型饱和烃,最积极可表示的值。当你清楚浸透在整数溢出,绝对值计算模拟和生成的代码可能不一致的或预期。

基本原理 一个 金宝app支持代跟踪代码。
B 达到一致的和预期的行为模型模拟和生成的代码。
模型顾问检查 检查使用Abs的街区(金宝app仿真软件检查)
引用
  • IEC 61508 - 3、表a (3)的语言子集
    IEC 61508 - 3、表各(3)“防御性编程”
    IEC 61508 - 3、表a (2)“强类型的编程语言”
    IEC 61508 - 3、表B.8 (3)控制流分析的

  • 5.5.3 IEC 62304——软件单元验收标准

  • ISO 26262 - 6,表1 (1 b)使用的语言子集的
    ISO 26262 - 6,表1 (1 d)“使用防御性实现技术”
    ISO 26262 - 6、表7 (1)控制流分析的

  • EN 50128年,各表(11)的语言子集
    EN 50128表a (1)“防御性编程”
    在50128年,表各(8)“强类型的编程语言”
    EN 50128表A.19 (3)控制流分析的

  • ——331年,部分MB.6.3.2。d '低级需求是可验证的
    ——331年,部分MB.6.3.2。g -算法是准确的

  • MISRA - C: 2012, Dir 4.1

  • INT32-C。确保签署了整数操作不会导致溢出

最后的改变 R2021b
例子

推荐

不推荐

hisl_0002:使用剩余和互操作

ID:标题 hisl_0002:使用剩余和互操作
描述

支持生金宝app成的代码的健壮性,当使用数学函数块与remainder-after-division (快速眼动)或互惠(互惠)操作:

一个

保护的输入互惠函数为零。

B

保护的第二输入快速眼动函数为零。

请注意

你可以得到一个被零除操作,导致无限()输出值互惠函数,或者不是一个数字()输出值快速眼动函数。避免溢出或未定义的值,保护相应的输入为零。

基本原理 防止溢出和未定义的数值结果。
模型顾问检查 检查使用的剩余部分和互操作(金宝app仿真软件检查)
引用
  • IEC 61508 - 3、表a (3)的语言子集
    IEC 61508 - 3、表各(3)“防御性编程”

  • 5.5.3 IEC 62304——软件单元验收标准

  • ISO 26262 - 6,表1 (b)使用的语言子集的
    ISO 26262 - 6,表1 (d)“使用防御性实现技术”

  • EN 50128年,各表(11)的语言子集
    EN 50128表a (1)“防御性编程”

  • ——331年,部分MB.6.3.2。g算法是准确的

  • MISRA - C: 2012, Dir 4.1

  • INT33-C。确保部门和余数操作不会导致被零除的错误

最后的改变 R2021b
例子

在接下来的例子中,当输入信号在零附近振荡,输出展品价值变化。你需要进一步防止大的变化值。

hisl_0003:平方根的使用操作

ID:标题 hisl_0003:平方根的使用操作
描述

支持生金宝app成的代码的健壮性,当使用平方根操作,做以下之一:

一个

占复数作为输出。

B

保护输入负数。

基本原理 避免不良导致生成的代码。
模型顾问检查 检查使用的平方根的操作(金宝app仿真软件检查)
引用
  • IEC 61508 - 3、表a (3)的语言子集
    IEC 61508 - 3、表各(3)“防御性编程”

  • 5.5.3 IEC 62304——软件单元验收标准

  • ISO 26262 - 6,表1 (b)使用的语言子集的
    ISO 26262 - 6,表1 (d)“使用防御性实现技术”

  • EN 50128年,各表(11)的语言子集
    EN 50128表a (1)“防御性编程”

  • ——331年,部分MB.6.3.2。g算法是准确的

  • MISRA - C: 2012, Dir 4.1

最后的改变 R2021b
例子

hisl_0028:使用互惠的平方根

ID:标题 hisl_0028:使用互惠的平方根
描述

支持生金宝app成的代码的健壮性,当使用互惠的平方根块,做以下之一:

一个

保护输入负数。

B

保护输入为零。

请注意

你可以得到除的操作,导致一个(正)倒数函数的输出值。避免溢出或未定义的值,保护相应的输入为零。

基本原理 A、B 避免不良导致生成的代码。
模型顾问检查 检查使用互惠√6块(金宝app仿真软件检查)
引用
  • IEC 61508 - 3、表a (3)的语言子集
    IEC 61508 - 3、表各(3)“防御性编程”

  • 5.5.3 IEC 62304——软件单元验收标准

  • ISO 26262 - 6,表1 (b)使用的语言子集的
    ISO 26262 - 6,表1 (d)“使用防御性实现技术”

  • EN 50128年,各表(11)的语言子集
    EN 50128表a (1)“防御性编程”

  • ——331年,部分MB.6.3.2。g算法是准确的

  • MISRA - C: 2012, Dir 4.1

  • INT33-C。确保部门和余数操作不会导致被零除的错误

最后的改变 R2021b
例子

hisl_0004:使用自然对数和以10为底的对数操作

ID:标题 hisl_0004:使用自然对数和以10为底的对数操作
描述

支持生金宝app成的代码的健壮性,当使用数学操作,比如自然对数(日志)或以10为底的对数(log10):

一个

保护输入负数。

B

防止输入等于零。

C

占复数作为输出值。

笔记

如果你设置输出数据类型复杂,自然对数和以10为底的对数函数输出复杂的值为负的输入值。如果你将输出数据类型设置为真实的,函数的输出为负数,负无穷()为零值。

基本原理 A, B, C 金宝app支持代健壮的代码。
模型顾问检查 检查使用的日志和log10操作(金宝app仿真软件检查)
引用
  • IEC 61508 - 3、表a (3)的语言子集
    IEC 61508 - 3、表各(3)“防御性编程”

  • 5.5.3 IEC 62304——软件单元验收标准

  • ISO 26262 - 6,表1 (b)使用的语言子集的
    ISO 26262 - 6,表1 (d)“使用防御性实现技术”

  • EN 50128年,各表(11)的语言子集
    EN 50128表a (1)“防御性编程”

  • ——331年,部分MB.6.3.2。g算法是准确的

  • MISRA - C: 2012, Dir 4.1

  • INT33-C。确保部门和余数操作不会导致被零除的错误

最后的改变 R2021b
例子

可以防止:

  • 使用一个负数腹肌块。

  • 零值使用的组合极大极小块和一个常数块,恒定值设置为每股收益(ε)。

下面的示例为输入值从显示生成的输出-100年One hundred.

hisl_0005:使用产品

ID:标题 hisl_0005:使用产品
描述

产品块参数乘法被设置为矩阵(*),保护因子输入成为输入矩阵奇异。

笔记

当使用产品块来计算一个矩阵的逆矩阵,或者一个矩阵分裂,你可能会得到一个除以一个奇异矩阵。这种分裂的结果输出。为了避免溢出,保护因子输入成为输入矩阵奇异。

基本原理 防止溢出和支持生成的代码的健壮性。金宝app
模型顾问检查 坚持这个建模指导顾问检查不能验证通过使用一个模型。
引用
  • IEC 61508 - 3、表a (3)的语言子集
    IEC 61508 - 3、表各(3)“防御性编程”

  • 5.5.3 IEC 62304——软件单元验收标准

  • ISO 26262 - 6,表1 (1 b)使用的语言子集的
    ISO 26262 - 6,表1 (1 d)“使用防御性实现技术”

  • EN 50128年,各表(11)的语言子集
    EN 50128表a (1)“防御性编程”

  • ——331年,部分MB.6.3.2。g”算法是准确的

  • MISRA - C: 2012, Dir 4.1

先决条件 hisl_0314:配置参数>诊断有效性> >数据信号
最后的改变 R2021a

hisl_0029:使用分配的块

ID:标题 hisl_0029:使用分配的块
描述

支持生金宝app成的代码的健壮性,当使用赋值块,在第一次使用前初始化数组字段。

笔记

如果输出向量的赋值块是没有初始化的输入块,向量的元素生成的代码可能不被初始化。

赋值块使用迭代和所有数组字段被分配在一个仿真时间步,您不需要初始化块的输入。

访问未初始化块输出的元素会导致意想不到的行为。

基本原理 避免不良导致生成的代码。
模型顾问检查 检查使用分配的块(金宝app仿真软件检查)
引用
  • IEC 61508 - 3、表a (3)的语言子集
    IEC 61508 - 3、表各(3)“防御性编程”
    IEC 61508 - 3、表(2)由“强类型的编程语言”

  • 5.5.3 IEC 62304——软件单元验收标准

  • ISO 26262 - 6,表1 (b)使用的语言子集的
    ISO 26262 - 6,表1 (d)“使用防御性实现技术”

  • EN 50128年,各表(11)的语言子集
    EN 50128表a (1)“防御性编程”
    在50128年,表各(8)“强类型的编程语言”

  • ——331年,部分MB.6.3.2。g -算法是准确的

  • MISRA - C: 2012,规则9.1

  • EXP33-C。不读未初始化内存吗

最后的改变 R2021b
例子

不推荐:没有初始化输入Y0当块不反复使用


建议:当不使用块迭代初始化输入Y0


建议:使用块迭代时初始化数组字段

hisl_0066:增益模块的使用

ID:标题 hisl_0066:增益模块的使用
描述 支持生金宝app成的代码,可追溯性的值获得块不能解决1
笔记

代码生成过程可以删除增益值等于1在优化,导致模型元素没有跟踪代码。

一个例外是命名参数设置增益值与非自动存储类数据对象。

基本原理 金宝app支持跟踪代码的生成。
模型顾问检查 检查使用的块(金宝app仿真软件检查)
引用
  • MB - 331,部分再。b的低级需求是准确和一致的

  • IEC 61508 - 3、表a (3)的语言子集
    IEC 61508 - 3、表各(3)“防御性编程”
    IEC 61508 - 3、表B.8 (3)控制流分析的

  • 5.5.3 IEC 62304——软件单元验收标准

  • ISO 26262 - 6,表1 (1 b)使用的语言子集的
    ISO 26262 - 6,表1 (1 d)“使用防御性实现技术”
    ISO 26262 - 6、表7 (1)控制流分析的

  • EN 50128年,各表(11)的语言子集
    EN 50128表a (1)“防御性编程”
    EN 50128表A.19 (3)控制流分析的

最后的改变 R2018a

hisl_0067:防止被零除计算

ID:标题 hisl_0067:防止被零除计算
描述 支持生金宝app成的代码的健壮性,当执行分配操作,保护除数为零。
请注意

证明了除零是不可能的,执行模型的静态分析。

如果除零是可行的,实现下列之一。使用不止一个选项会导致冗余保护操作:

  • 执行顾问检查除的模型

  • 修改代码生成过程使用的代码替换库(利用)

  • 对于基于整数操作,清晰的配置参数删除代码,防止部门算术异常(嵌入式编码)

使用利用或清除配置参数删除代码,防止部门算术异常(嵌入式编码)保护部门操作对除的操作。然而,这一行动并引入额外的计算和内存开销,以及可能引入的代码。

基本原理 提高合规生成的代码
模型顾问检查 检查除计算(金宝app仿真软件检查)
引用
  • IEC 61508 - 3、表a (3)的语言子集

    IEC 61508 - 3、表各(3)“防御性编程”

  • 5.5.3 IEC 62304——软件单元验收标准

  • ISO 26262 - 6,表1 (b)使用的语言子集的

    ISO 26262 - 6,表1 (d)“使用防御性实现技术”

  • EN 50128年,各表(11)的语言子集

    EN 50128表a (1)“防御性编程”

  • ——331年,部分MB.6.3.2。g算法是准确的

  • MISRA - C: 2012, Dir 4.1

另请参阅
最后的改变 R2021a
例子

不正确的

部门操作会导致除的场景。

除存在于模型的例子。

正确的

图形函数模型被零除检查。

正确建模,以防止被零除的例子。