Simulink相关配置:模型诊断配置
汇聚博主多年工程经验的新书《Simulink嵌入式开发实战》现已上市针对Simulink与MBD开发技术形成了一套完整的知识体系和方法论。详细介绍和优惠链接可以参考博客《Simulink嵌入式开发实战》新书上市感谢粉丝长期以来的支持文章目录1 模型诊断2 诊断配置及场景2.1 Inf or NaN block output2.2 Wrap on overflow2.3 Unconnected line2.4 Detect read before write2.5 Algebraic loop3 Model Advisor配置模型诊断4 总结1 模型诊断模型诊断配置的目的是当我们编译一个Simulink模型时会自动为我们诊断该模型中的错误或潜在风险以便提早修复该类问题。在Simulink模型上方的工具栏点击Model Settings小齿轮形状打开配置参数。点击左侧的Diagnostics选项卡就可以在右侧看到所有的诊断配置项。例如Algebraic loop右侧对应的是warning就表示运行模型时如果检测出代数环则向用户报出警告。用户也可以将其手动配置为error或者none代表检测出代数环向用户报出error或者不报警。Simulink默认的模型诊断配置是比较宽松的在工程开发中通常会将其配置得更为严格以便在模型编译阶段警告开发者其中的错误和风险。后文中博主会介绍一些常用的诊断配置以及其应用场景。这些配置是基于MAB建模规范的推荐以及工程实践。2 诊断配置及场景本章节列举几个常见的诊断配置及其对应的场景。在实际工作经验中这部分诊断可以指出开发者常见的错误。2.1 Inf or NaN block output该选项表明当模块输出的值为 Inf 或 NaN 时要执行的诊断操作通常将其配置为error默认为none配置界面如下图。Inf 或 NaN 是软件运行时的不合理的输出量例如除零时会输出Inf可以理解为无穷可以通过配置为error使得在运行软件时报出错误。2.2 Wrap on overflow该选项表明当整形类型信号的值溢出信号数据类型时进行的诊断操作通常将其配置为error默认为warning配置界面如下图。当整形数运算溢出了其数据类型所能表达的数值时数值会默认转换。2.3 Unconnected line该选项表明当模型包含未连接的信号线时的诊断操作通常将其配置为error默认为none。类似的还有未连接的输入或输出端口配置界面如下图。在开发中有的时候会忘记连接信号线但是模型也能编译并生成代码。这种情况下信号没有正确地传输导致软件漏洞。2.4 Detect read before write该选项表明写之前读内存中的值时的诊断操作通常将其配置为Enable all as errors默认为Use local settings配置界面如下图。在代码中局部变量的值如果未经初始化或赋值可能是任意值。直接读取该值时不安全的行为。如下图的DataStoreRead模块直接读取内存中变量A的值但是在此之前没有经过任何赋值模型运行时就会诊断出错误。2.5 Algebraic loop该选项表明模型中存在代数环通常将其配置为error默认为warning配置界面如下图。代数环指的是当模型中的输入直接使用了输出信号的场景如下图所示的累加器希望在每次输出的基础上加一所以将输出反馈到输入。这样模型就无法进行正确的求解。解决代数环的方法是在输出反馈的输入的时候加一个Unit Delay模块即使用上一周期的输出作为本周期的输入。3 Model Advisor配置模型诊断上一章节列出的诊断项举例只是所有诊断配置中的一部分是开发过程中常见的一些错误。实际上可以在Model Advisor工具中根据一些模板来检查当前模型的配置项是否符合标准。本章节会以ISO 26262标准中推荐的模型配置项为例向读者演示如果使用Model Advisor工具配置模型诊断。1首先在Simulink模型上方切到MODELING选项卡中点击Model Advisor2在弹出的System Selector窗口选择最顶层模型即和你的Simulink模型相同的名字如果模型中有多个子系统这里的System Selector窗口中会根据每一级子系统折叠或者展开。3在打开的Model Advisor中根据层级找到需要勾选的配置项检查这里26262标准的层级路径为Model Advisor — By Task — Modeling Standards for ISO 26262 — High-Integrity Systems — Configuration将Configuration下面所有和诊断相关的选项全部勾选上其实该路径下不止包含模型诊断配置还有生成代码配置代码优化配置接口配置等。这里全部按照ISO 26262标准推荐的项目进行检查。3点击上方的Run Checks按钮等待检查结束就会出现报告未通过检查的项目会标记为红色感叹号选中该项目就可以在右侧报告页中显示出具体的条目。其中包含了参数项当前值和推荐值。单击链接就可以直接打开配置窗口中对应的位置并按照推荐值修改。4另外也可以通过选中条目点击上方的Fix按钮一键修改配置项这些选项中除了代码生成的System Target File选项需要手动修改其他都可以通过fix解决。将System Target File配置成Embedded Coder的方法如下具体代码生成相关配置地解释会在以后的博客中。5将所有的未通过的配置都一键修改重新对Configuration文件夹下的配置运行Model Advisor检查得到全部通过4 总结本文介绍了模型诊断配置通过配置一部分诊断项为error后有助于工程师减少开发中的问题并且规范开发流程。返回个人博客总目录