使用Simuli金宝appnk®Model Advisor检查以配置模型以进行模拟。
金宝appSimulink编码器检查(金宝app仿真软件编码器)
金宝appSimulink检查(金宝app仿真软件检查)
在R2008b中引入简化的初始化方式,提高了仿真结果的一致性。对于没有为有条件执行的子系统输出端口指定初始条件的模型,这种模式尤其重要。有关更多信息,请参见简化初始化模式而且经典初始化模式.
使用Model Advisor签入迁移到简化初始化模式帮助将模型迁移到简化的初始化模式。
检查身份证:mathworks.design.UnconnectedLinesPorts
检查未连接的线路或端口。
该检查列出未连接的线路或端口。这些可能难以传播信号属性,如数据类型、采样时间和维度。
请注意
连接到地面/终止器块的端口将通过此测试。
条件 | 建议的行动 |
---|---|
线路、输入端口或输出端口未连接。 | 连接信号。双击未连接项列表定位故障。 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app模型检查™许可证。
使用PortConnectivity
命令获取描述块输入或输出端口的结构数组。
公共块属性浏览有关PortConnectivity
命令。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.RootInportSpec
检查根模型导入块是否完全定义了维度、采样时间和数据类型。
使用没有完全定义维度、采样时间或数据类型的根模型导入块会导致不期望的模拟结果。金宝appSimulink软件从下游块反向传播维度、采样时间和数据类型,除非您显式地为它们分配值。
条件 | 建议的行动 |
---|---|
根级导入块具有未定义的属性。 | 完全定义根级导入块的属性。 |
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
通过检查的配置如下:
> Solver >周期采样时间约束设置为确保采样时间独立
对于输出函数模型,继承采样时间没有标记。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.OptimizationSettings
检查可能导致非最佳代码生成和模拟的优化。
该检查检查可以提高代码效率和模拟时间的优化状态。
条件 | 建议的行动 |
---|---|
指定的优化已关闭。 | 上选择以下优化复选框优化窗格中的配置参数:
上选择以下优化复选框优化窗格中的配置参数:
在“配置参数”对话框中选中以下优化复选框:
上选择以下优化复选框优化窗格中的配置参数: 请注意 Model Advisor仅在存在状态流时检查这些参数®模型中的图表。
|
应用程序生命周期(天)设为无穷大。这可能导致昂贵的64位计数器使用。 | 如果不打算这样做,请选择一个停止时间。 |
将指定的诊断设置为,该诊断可能会增加模拟模型所需的时间警告 或错误 . |
选择
|
指定的嵌入式编码器®参数关闭。 | 如果您有嵌入式编码器许可证,并且您正在使用基于ert的系统目标文件:
|
如果系统包含模型块和引用模型在加速器模式,模拟模型需要生成和编译代码。
检查
模型配置参数:代码生成优化(金宝app仿真软件编码器)
检查身份证:mathworks.design.ModelRefSIMConfigCompliance
检查Simulink在加速仿真过程中更改配置参数设置的参考模型。金宝app
对于在加速模式中引用的模型,Simulink将忽略您设置为其他值的以下配置参数的设置金宝app没有一个
.
超出数组边界
诊断>数据的有效性>Inf或NaN块输出
诊断>数据的有效性>用奇异矩阵除法
诊断>数据的有效性>换行溢出
此外,对于在加速模式下引用的模型,Simulink会忽略以下内容金宝app配置参数>诊断>数据的有效性>数据存储内存块参数,如果将其设置为禁用所有
.详细信息请参见数据存储诊断.
先读后写
读后检测写
在写入之后检测写入
条件 | 建议的行动 |
---|---|
您希望看到使用设置运行标识的诊断以产生警告或错误的结果。 |
在正常模式下模拟模型并解决诊断警告或错误。 |
检查身份证:mathworks.design.ParamTunabilityIgnored
检查“模型参数配置”对话框中是否包含参数可调性信息。
金宝appSimulink软件忽略“模型参数配置”对话框中指定的可调性信息。该检查确定了那些包含参数可调信息的模型,如果该模型被其他模型引用,Simulink软件将忽略这些参数可调信息。金宝app
条件 | 建议的行动 |
---|---|
模型包含忽略的参数可调性信息。 | 单击链接可在MATLAB中转换为等效的Simulink参数对象金宝app®工作区。 |
在生成的代码中创建可调校准参数(金宝app仿真软件编码器)
检查身份证:mathworks.design.ImplicitSignalResolution
识别试图将命名信号和状态解析到的模型金宝app仿真软件。信号
对象。
要求Simulink金宝app软件解析所有已命名的信号和状态是低效的,并且会减慢增量代码生成和模型引用。该检查确定了那些信号和状态,您可以关闭隐式信号解析并强制执行解析。
条件 | 建议的行动 |
---|---|
并不是所有的信号和状态都被解析。 | 关闭隐式信号解析,并对每个已解析的信号和状态执行解析。 |
检查身份证:mathworks.design.OptBusVirtuality
确定可以非虚拟的虚拟总线。使这些总线是非虚拟的可以提高生成的代码效率。
该检查标识包含跨子系统边界的虚拟总线的块。将这些更改为非虚拟可以提高生成的代码效率。
条件 | 建议的行动 |
---|---|
块,这些块指定跨越子系统边界的虚拟总线。 | 将高亮显示的总线更改为非虚拟总线。 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
检查身份证:mathworks.design.DiscreteTimeIntegratorInitCondition
识别带有状态端口和初始条件端口的离散时间积分器块,这些端口既不由初始条件块提供,也不由常数块提供。
具有状态端口和初始条件端口的离散时间积分器块可能不能适当地初始化,除非它们是从初始条件或常量块中提供的。当离散时间积分器块用于建模二阶或更高阶动态系统时,这种情况更有可能发生。
条件 | 建议的行动 |
---|---|
离散时间积分器块在模型初始化阶段没有初始化。 | 添加一个常量或初始条件块来提供外部初始条件端口。 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
检查身份证:mathworks.design.DisabledLibLinks
禁用库链接的搜索模型。
禁用库链接可能导致意外的模拟结果。在保存模型之前解决禁用的链接。
请注意
这张支票可能与检查模型的块升级问题.
条件 | 建议的行动 |
---|---|
库链接被禁用。 | 单击库链接>解决链接上下文菜单中的选项。 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
使用模型浏览器查找库链接。
要启用断开的链接,右键单击模型中的一个块以显示上下文菜单。选择库链接>解决链接.
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.CheckVirtualBusAcrossModelReferenceArgs
检查跨模型引用边界的虚拟总线信号,并标记跨模型引用边界使用虚拟总线会显著增加函数参数数量的情况。
为了提高代码生成过程的速度,您可以使用此检查来减少生成的函数参数的数量。如果检查发现一个模型,其中将为一个函数生成许多参数,则可以单击更新模型修改模型,使其产生更少的参数。
由于虚拟总线信号穿过模型引用边界而生成许多函数参数的方法会减慢代码生成过程。
条件 | 建议的行动 |
---|---|
列出了为当前模型配置生成大量参数的方法,该检查可以通过修改模型来减少这些参数。 | 点击更新模型. |
点击更新模型重置轮廓尺寸而且外港块参数和插入信号转换块,根据需要,以减少为模型生成的函数参数的数量。
检查身份证:mathworks.design.ParameterizedLibLinks
参数化库链接的搜索模型。
无意的参数化库链接可能导致模型中出现意想不到的参数设置。这可能导致不恰当的模型操作。
条件 | 建议的行动 |
---|---|
列出参数化的链接。 | 验证链接是要参数化的。 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
右键单击模型中的块以显示上下文菜单。选择连接选项
并点击前往图书馆大楼
从库中查看原始块。
若要参数化库链接,请选择面具下的样子
,从上下文菜单中选择参数。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.UnresolvedLibLinks
在模型中搜索无法解析的库链接,其中无法找到指定的库块。
检查未解决的库链接。当存在未解析的库链接时,模型不会进行模拟。
条件 | 建议的行动 |
---|---|
库链接无法解析。 | 找到丢失的库块或替代库块。 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.CSStoVSSConvert
搜索模型以识别模型或子系统级别的可配置子系统块。
条件 | 建议的行动 |
---|---|
识别可配置的子系统块。 | 将这些块转换为不同的子系统块以避免兼容性问题。看到可配置子系统. |
您可以在您的库模型上运行此检查。
检查身份证:mathworks.design.ConvertMdlrefVarToVSS
搜索要识别的模型变体模型块。
条件 | 建议的行动 |
---|---|
变体模型列出了模型中可用的块。 |
将这些块转换为不同的子系统块。 |
检查身份证:mathworks.design.emptyVariantObjects
搜索模型以识别具有空Variant对象的Variant块或库。
条件 | 建议的行动 |
---|---|
模型或库中具有空Variant对象的Variant块被列出。 | 在变量对象中使用有效的条件。 |
检查身份证:mathworks.design.CheckForProperFcnCallUsage
检查应用于函数调用连接性并可能影响模型执行的模型诊断设置。
检查可能导致非确定性模型执行的连通性诊断设置。
条件 | 建议的行动 |
---|---|
诊断>连通性>上下文相关的输入设置为禁用所有 或使用本地设置 .这可能导致不确定的模型执行。 |
集诊断>连通性>上下文相关的输入来启用所有错误 . |
检查身份证:mathworks.design.DataStoreMemoryBlkIssue
寻找与建模相关的问题数据存储内存块。
检查多任务数据完整性、强类型和更高范围的数据存储的阴影。
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
检查身份证:mathworks.design.DiagnosticDataStoreBlk
对于模型中的数据存储块,启用读写诊断顺序检查以检测运行时问题。
检查读写诊断顺序检查。通过启用读写诊断,您可以检测到潜在的运行时问题。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
.
运行时诊断可以大大降低模拟的速度。验证Simulink在模拟过程中不会生成警告或错误后,将金宝app其设置为禁用所有
.
检查身份证:mathworks.design.DataStoreBlkSampleTime
识别由于数据存储块的采样时间而导致的建模错误。
检查数据存储块的连续或固定的小步骤采样时间。
条件 | 建议的行动 |
---|---|
模型中的数据存储块具有连续的或固定的小步骤采样时间。 | 考虑使列出的块是离散的,或者用任意一个块替换它们内存或转到而且从块。 |
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
检查身份证:mathworks.design.OrderingDataStoreAccess
查找可能导致结果不准确的读写问题。
在一次更新图,识别与数据存储块的写前读、读后写和写后写条件相关的潜在问题。
条件 | 建议的行动 |
---|---|
读和写(写前读或读后写)发生顺序紊乱。 | 考虑重新构造模型,使数据存储读块在数据存储写块之前执行。 |
在一个时间步骤中发生多次写入。 | 将模型更改为每个时间步骤只写入一次数据,或参考下面的Tips部分。 |
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
此检查执行静态分析,可能无法识别每个不正确使用的实例。具体来说,函数调用子系统、状态流程图、用于代码生成的MATLAB、for迭代器子系统和for每个子系统都可能导致漏检和误报。要进行更全面的检查,请考虑在上启用以下诊断诊断>数据有效性窗格中的配置参数:先读后写,读后检测写,在写入之后检测写入.
检查身份证:mathworks.design.MismatchedBusParams
识别块和金宝app仿真软件。信号
通过使用不匹配的结构初始化总线信号的对象。
在模型中,可以使用MATLAB结构初始化总线信号。例如,如果你让一个总线信号通过a单位延迟块,可以设置初始条件结构的参数。有关使用结构初始化总线的基本信息,请参见指定总线元素的初始条件.
通过将初始条件结构的形状和数值数据类型与总线信号的形状和数值数据类型相匹配,运行此检查来生成高效且可读的代码。匹配这些特征可以避免不必要的显式类型转换,并使用调用来替换逐字段的结构赋值memcpy
.
该检查列出块和金宝app仿真软件。信号
通过使用部分结构初始化总线信号的对象。在创建模型的迭代过程中,您可以使用部分结构来关注总线中的信号元素子集。对于一个成熟的模型,使用完整的结构:
生成可读且高效的代码。
金宝app支持显式初始化未指定信号的建模样式。使用部分结构时,Simulink隐式初始化未指定的信号。金宝app
有关完整结构和部分结构的详细信息,请参见为初始化创建完整的结构而且为初始化创建部分结构.
该检查列出块和金宝app仿真软件。信号
初始条件结构引入数据类型不匹配的对象。这些结构的字段具有与相应总线信号元素的数据类型不匹配的数值数据类型。
此检查不检测块的不匹配,例如单位延迟块,它隐式地将初始条件的数据类型转换为输入信号。
当您将初始条件结构配置为在生成的代码中显示为可调全局结构时,请通过匹配数据类型来避免不必要的显式类型转换。看到生成总线信号的可调初始条件结构(金宝app仿真软件编码器).
条件 | 建议的行动 |
---|---|
块或信号对象使用部分结构 |
考虑使用函数 |
结构字段的数据类型与对应信号元素的数据类型不匹配 |
考虑将结构定义为 |
检查身份证:mathworks.design.ReplaceZOHDelayByRTB
识别延迟,单位延迟,或零级举行用于速率转换的块。将这些块替换为实际的率转换块。
如果一个模型使用延迟,单位延迟,或零级举行块来提供输入和输出信号之间的速率转换,Simulink用内置的隐藏替换了这些块金宝app率转换块。在编译后的方框图中,一个黄色符号和字母“RT”出现在替换块的左上角。这个替换可以影响模型的行为,如下所示:
这些块失去了延迟信号或实现零阶保持的算法设计属性。相反,它们获得了速率转变行为。
此建模技术仅适用于特定的转换配置(对于慢到快的转换配置延迟而且延迟块,快到慢零级举行块)。将块采样时间设置为等于较慢的速率(用于延迟而且单位延迟块的目标零级举行块)。
当下游或上游块的块采样时间发生变化时,这些延迟,单位延迟而且零级举行块可能不执行速率转换。例如,设置源和目标采样次数相等的停止速率转换。然后,这些块假设它们原始的算法设计属性。
块采样时间显示了关于采样时间率的不完整信息。块代码以两种不同的速率运行以处理数据传输。但是,块采样时间和采样时间颜色将其显示为单速率块。使用样本时间信息的工具和MATLAB脚本的行为基于此信息。
另一种选择是替换延迟,单位延迟,或零级举行块与实际率转换块。
该技术确保了块行为的明确结果。延迟,单位延迟,或零级举行块根据它们的算法设计来分别延迟和保持信号。只有率转换块执行实际的速率转换。
使用实际的率转换如果您希望指定确定性行为或要实现的内存缓冲区类型,则速率转换块提供了一个可配置的解决方案来处理数据传输。
使用此检查来识别模型中的实例延迟,单位延迟或零级举行块进行隐藏替换,以提供信号之间的速率转换。点击升级模型将这些块替换为实际的率转换块。
条件 | 建议的行动 |
---|---|
的实例延迟,单位延迟,或零级举行用于速率转换的块。 | 不需要任何操作。 |
模型具有延迟,单位延迟,或零级举行用于速率转换的块。 | 检查可以识别这些实例,并允许您升级模型。
|
如果不选择更换延迟,单位延迟和/或零级举行块与实际率转换块,Simuli金宝appnk继续用内置的速率转换块执行这些块的隐藏替换。
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.CallslDataTypeAndScale
识别对内部函数的调用slDataTypeAndScale
.
在一些以前版本的Simulink中,打开保存在较早版本中的金宝app模型会触发自动升级到用于数据类型处理的代码。自动升级会插入对内部函数的调用slDataTypeAndScale
.尽管Simulin金宝appk继续支持该函数的某些用法,但如果金宝app消除对它的调用,就会得到更干净、更快的代码。
金宝appSimulink不支持调用金宝appslDataTypeAndScale
当:
第一个参数是a金宝app仿真软件。AliasType
对象。
第一个参数是a金宝app仿真软件。NumericType
具有属性的对象IsAlias
设置为true。
运行检查对slDataTypeAndScale的调用识别对slDataTypeAndScale
需要或建议更换的。在大多数情况下,运行检查并遵循推荐的操作将删除调用。您可以忽略剩余来电。运行检查,除非你确定没有调用slDataTypeAndScale
.
条件 | 建议的行动 |
---|---|
需要更换的案例 | 手动或自动替换对slDataTypeAndScale .所列出的情况要求您替换对slDataTypeAndScale . |
推荐更换案例 | 对于列出的情况,建议手动或自动替换对的调用slDataTypeAndScale . |
手工巡检案例 | 检查每个列出的案例,以确定是否应该手动升级。 |
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
不手动插入呼叫slDataTypeAndScale
变成一个模型。该函数仅供内部使用。
运行检查对slDataTypeAndScale的调用调用Simulink金宝app函数slRemoveDataTypeAndScale
.直接调用此函数提供了更广泛的转换选项。但是,您很少需要更多的转换选项。
有关升级数据类型和规模的详细信息,在MATLAB命令窗口中执行以下命令:
帮助slDataTypeAndScale
帮助slRemoveDataTypeAndScale
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.BusTreatedAsVector
识别Simulink视为向量的总线信号。金宝app
不能使用Simulink软件隐式转换为向量的总线信号。金宝app相反,要么插入a总线到向量总线信号和它馈送的输入端口之间的转换块,或使用金宝appSimulink.BlockDiagram.addBusToVector
命令。
条件 | 建议的行动 |
---|---|
总线信号隐式地转换为向量。 |
使用 |
模型没有配置为识别Simulink视为向量的总线信号。金宝app |
在“配置参数”对话框中,在诊断>连接窗格中,设置总线信号作为矢量处理来 |
点击修改在块的输入端口插入一个总线到向量块,该块隐式地将总线信号转换为向量。
运行前运行此检查检查输出和合并块初始化参数的一致性.
有关更多信息,请参见识别自动总线转换.
检查身份证:mathworks.design.DelayedFcnCallSubsys
识别可能因为Simulink软件插入隐式信号转换块而延迟的函数调用返回值。金宝app
为了使信号驻留在连续的内存中,Simulink软件可以自动在函数调用启动器块输入端口前插入金宝app隐式信号转换块。这可能导致从调用函数调用子系统返回信号值时出现一步延迟。可以通过确保信号来自函数调用系统中的信号块来避免延迟。或者,如果延迟是可接受的,在受影响的输入端口前面插入一个单元延迟块。
条件 | 建议的行动 |
---|---|
列出的块输入端口可以有一个隐式信号转换块。 | 确定对于列出的信号,返回信号值的一步延迟是否可以接受。
|
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
信号转换块
单位延迟块
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.OutputSignalSampleTime
寻找连续采样时间,非浮点输出信号。
非浮点信号可能不能表示连续变量而不丢失信息。
条件 | 建议的行动 |
---|---|
具有连续采样次数的信号具有非浮点数据类型。 | 对识别的信号,将采样时间改为离散或固定在小步长([0 1])。 |
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.MergeBlkUsage
识别具有可能导致意外行为的参数设置的Merge块,并帮助将模型迁移到简化的初始化模式。
请注意
中的其他检查一起运行此检查迁移到简化初始化模式概述.
在R2008b中引入简化的初始化方式,提高了仿真结果的一致性。有关更多信息,请参见简化初始化模式而且经典初始化模式.
中的设置合并块,如果您使用经典的初始化模式,可能会导致问题。它还为Merge块的一致行为推荐设置。子检查的结果包含两种类型的语句:Failed和Warning。失败的语句确定了在将模型迁移到简化的初始化模式之前必须手动处理的问题。警告语句识别迁移后可能发生的问题或行为更改。
条件 | 建议的行动 |
---|---|
检查Merge块的运行时诊断设置。 |
|
检查使用PIL模拟模式的Model块。 | 简化的初始化模式不支持用于模型引用的循环中处理器(PIL)仿真。金宝app |
检查带有无法迁移实例的库块。 | 检查每个块的子检查结果,以确定纠正措施。 |
检查单输入合并块。 | 替换两个Mux块用来产生输入信号和合并块与一个多输入合并块。 单输入合并在简化初始化模式下不支持blo金宝appck。 |
检查有未指定的根合并块初始输出价值。 | 属性的显式值初始输出参数的根合并块,则Simul金宝appink使用输出数据类型的默认初始值。 一个根合并Block是一个合并输出端口不连接到另一个端口的块合并块。有关默认初始值的信息,请参见初始化信号值. |
检查带有非零输入端口偏移量的合并块。 | 清除允许不相等的端口宽度参数。合并块。 请注意 考虑使用合并块仅用于需要真正合并的信号元素。属性可以将其他元素与已合并的元素组合在一起连接块。 |
检查Merge块是否有未连接的输入或者有来自非条件执行子系统的输入。 |
设置输入数量参数。合并block为Merge块输入的数量。您必须将每个输入连接到一个信号。 验证每一个合并块输入由一个有条件执行的子系统驱动。合并控件不能直接驱动块迭代器子系统或者一个不是有条件执行的子系统的块。 |
检查输入在有条件执行的子系统之外被组合或重新排序的Merge块。 | 验证的组合或重新排序合并块输入信号发生在有条件执行的子系统中。这样的设计可以使用Mux,总线的创造者,或选择器块。 |
检查输入采样时间不一致的合并块。 | 验证每个输入信号合并Block有相同的样品时间. 如果不这样做,可能会导致不可预测的行为。因此,简化的初始化模式不允许不一致的采样时间。 |
检查由单个源驱动的具有多个输入端口的Merge块。 | 验证合并块没有多个输入信号,这些输入信号由相同的有条件执行的子系统或有条件执行的子系统驱动模型块。 |
检查是否使用信号对象指定初始输出价值。 | 验证以下行为是可接受的。 在简化初始化模式下,信号对象不能指定初始输出参数。合并块。而您仍然可以初始化输出信号的a合并块使用信号对象时,初始化结果可能会被合并块。 请注意 金宝appSimulink生成一个警告,表示信号对象的初始值已被忽略。 |
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.InitParamOutportMergeBlk
识别带有参数设置的Outport块和条件子系统,这些参数设置可能导致意外的行为,并帮助将您的模型迁移到简化的初始化模式。
请注意
中的其他检查一起运行此检查迁移到简化初始化模式概述.
在R2008b中引入简化的初始化方式,提高了仿真结果的一致性。对于没有为有条件执行的子系统输出端口指定初始条件的模型,这种模式尤其重要。有关更多信息,请参见简化初始化模式而且经典初始化模式.
Model Advisor检查确定了模型中的Outport块和条件子系统,如果您使用简化的初始化模式,它们可能会导致问题。它还建议设置Outport块的一致行为。子检查的结果包含两种类型的语句:Failed和Warning。失败的语句确定了在将模型迁移到简化的初始化模式之前必须手动处理的问题。警告语句确定迁移后可能发生的问题或行为更改。
条件 | 建议的行动 |
---|---|
检查迭代器子系统中需要运行时间的块。 | 在迭代器子系统层次结构中,不要使用需要服务来维护两次连续执行之间所经过时间的块。 由于迭代器子系统可以在给定的时间步骤中执行多次,因此在两次这样的执行之间并没有明确定义经过时间的概念。在迭代器子系统中使用这些块可能会导致意外的行为。 |
检查是否有冲突的信号缓冲区需求的Outport块。 | 的外港Block有一个函数调用触发器或函数调用数据依赖信号通过它,以及标准数据信号。一些标准数据信号需要显式的信号缓冲区来初始化相应子系统的输出信号。然而,缓冲与函数调用相关的信号会导致函数调用数据依赖冲突。 考虑修改模型,将函数调用相关信号通过单独的外港块。有关函数调用数据依赖违反的示例,请参阅示例模型 由于下列原因之一,标准数据信号可能需要额外的信号副本:
|
检查由总线信号驱动的输出端口块初始输出值不是标量。 | 为外港块由总线信号驱动,经典初始化模式不支持初始条件(IC)结构,而简化初始化模式支持。金宝app因此,在将模型从经典模式迁移到简化模式时,为初始输出参数。迁移完成后,为总线信号的不同元素指定不同的初始值,使用IC结构。有关更多信息,请参见创建初始条件结构. |
检查需要显式信号拷贝的Outport块。 |
总线信号的显式副本外港块用于初始化相应子系统的输出信号。插入一个信号转换在外港块,然后设置输出参数。信号转换块 由于下列一个或多个原因,标准数据信号可能需要一个额外的信号副本:
|
属性的合并输出端口块初始输出值,该值已配置为当块被禁用时重置。 | 当外港块正在驱动一个合并块,不要设置它们禁用时输出参数重置 . |
检查合并外港由嵌套的有条件执行的子系统驱动的块。 | 的新行为是否确定外港Blocks是可以接受的。如果不能接受,在迁移到简化的初始化模式之前,修改模型以解释新的行为。 |
检查合并的输出端口块是否在块被禁用时重置。 | 设置禁用时输出参数。外港块 有关更多信息,请参见外港. |
检查具有undefined的Outport块初始输出初始条件源无效的值。 | 验证以下行为是可接受的。 当初始输出参数未指定( 对于简化的初始化模式,有效源和外港块可以继承初始输出值为:常数,初始条件,合并(带有初始输出)、状态流图、函数调用模型引用或有条件执行的子系统块。 |
检查具有自动速率转换的输出端口块。 | 金宝appSimulink已插入率转换块的输入外港块。指定初始输出每个的参数外港块。 否则,请执行以下步骤:
|
检查有特殊信号存储要求和未定义的输出端口块初始输出价值。 | 验证以下行为是可接受的。 指定初始输出参数。外港块。将此值设置为 |
检查初始输出Outport块的设置,当它们被禁用时重置。 | 指定初始输出参数。外港块。 您必须指定初始输出设置为禁用时重置的块的值。 |
检查初始输出设置通过函数调用数据依赖信号传递的Outport块。 | 您不能指定初始输出的值。外港块,因为函数调用数据依赖信号正在通过它。设置初始输出值:
|
方法指定的输出端口块初始输出价值。 | 验证以下行为是可接受的。 在简化初始化模式下,信号对象不能指定初始输出参数外港块。的输入或输出信号仍然可以初始化外港对象的初始化结果可能被覆盖外港块。 请注意 如果您正在使用有条件执行的子系统外港block时,金宝appSimulink会生成一个警告,表明信号对象的初始值被忽略了。 |
检查带有警告实例的库块。 | 在迁移到简化初始化模式之前,检查每个块的警告子检查结果。 |
检查合并的输出端口块是否未连接或连接到接地块。 | 验证以下行为是可接受的。 的外港Block正在驱动一个合并块,但其输入要么未连接,要么已连接地面块。在经典的初始化模式下,未连接的或接地的输出端口不更新合并信号,即使它们的父节点有条件执行的子系统正在执行。然而,在简化的初始化模式下,当它们的父节点有条件执行的子系统正在执行时,这些输出端口将用零值更新合并信号。 |
属性的Outport块初始输出值,当它们被迁移时。 | 验证以下行为是可接受的。 的初始输出参数。外港Block未指定。因此,简化初始化模式将假定初始输出的值。外港块是由输入信号导出的。这个假设可能会导致不同的初始化行为。 如果这种行为不可接受,请在迁移到简化初始化模式之前修改您的模型。 |
检查外部外港具有显式的块初始输出. | 验证以下行为是可接受的。 在经典初始化模式下,初始输出而且禁用时输出参数说明外港Block必须匹配它们的源外港块。 在简化初始化模式下,Simulink将设置金宝app初始输出参数的外部Outport块到 |
检查在初始化期间从有条件执行的子系统读取输入的块。 | 验证以下行为是可接受的。 一些块,如离散时间积分器块,在经典初始化模式下初始化时从有条件执行的子系统中读取它们的输入。金宝appSimulink将此步骤作为优化技术来执行。 这种优化在简化初始化模式下是不允许的,因为在初始化后的第一步有条件执行的子系统的输出可能与在相应的初始化模式中声明的初始值不同外港块。特别是,如果子系统在第一步处于活动状态,则会出现这种差异。 |
属性的Outport块是否存在迁移冲突对话框 随着初始输出值的来源. |
具有相同库链接的Outport块的其他实例要么无法迁移,要么正在以不同的方式迁移。回顾的结果检查带有无法迁移实例的库块了解每种实例的其他迁移路径外港块。 的外港块将保持其当前设置并使用其指定的初始输出价值。 |
检查使用的Outport块的迁移冲突输入信号 随着初始输出来源价值。 |
具有相同库链接的Outport块的其他实例要么无法迁移,要么正在以不同的方式迁移。回顾的结果检查带有无法迁移实例的库块了解每种实例的其他迁移路径外港块。 的外港块当前指定初始输出的 迁移后,参数初始输出值的来源将被设置为 |
检查具有SimEvents的Outport块是否存在迁移冲突®语义。 | 具有相同库链接的Outport块的其他实例要么无法迁移,要么正在以不同的方式迁移。回顾的结果检查带有无法迁移实例的库块了解每种实例的其他迁移路径外港块。 的外港块将继续使用初始输出的价值 |
检查带有可变大小输入和未指定输入的最内层Outport块的迁移冲突初始输出. | 对于这些Outport块,只有当块的父子系统被重新启用时,信号大小才会变化。因此,Simulink金宝app隐式地假设初始输出参数等于0,即使参数未指定,[]。因此,除非您指定了参数,否则当模型迁移到简化初始化模式时,Model Advisor将显式地将参数设置为0。 具有相同库链接的Outport块的其他实例要么无法迁移,要么正在以不同的方式迁移。回顾的结果检查带有无法迁移实例的库块了解每种实例的其他迁移路径外港块。 |
检查使用默认地面值作为初始输出的Outport块是否存在迁移冲突。 | 的参数初始输出设置为[] (空矩阵)和源的外港是无效的初始条件源。因此,块在简化初始化模式下使用默认初始值作为初始输出。具有相同库链接的Outport块的其他实例要么有错误,要么正在以不同的方式迁移。 |
的显式规范,检查合并的输出端口块是否存在迁移冲突初始输出. | 检查子检查的结果检查带有无法迁移实例的库块以了解每个Outport块的其他实例的不同迁移路径。对于其余的Outport块,初始输出设置为[] (空矩阵)和禁用时输出设置为举行 分别为简化初始化模式。 |
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.DiscreteBlock
识别具有可能导致意外行为的参数设置的离散时间积分器块,并帮助将模型迁移到简化的初始化模式。
请注意
中的其他检查一起运行此检查迁移到简化初始化模式概述.
在R2008b中引入简化的初始化方式,提高了仿真结果的一致性。有关更多信息,请参见简化初始化模式而且经典初始化模式.
此Model Advisor检查识别模型中离散时间积分器块中的设置,如果使用简化初始化模式,这些设置可能会导致问题。它还建议为离散时间积分器块的一致行为设置。子检查的结果包含两种类型的语句:Failed和Warning。失败的语句确定了在将模型迁移到简化的初始化模式之前必须手动处理的问题。警告语句识别迁移后可能发生的问题或行为更改。
条件 | 建议的行动 |
---|---|
检查离散时间积分器块的参数初始条件设置设置为 |
的新行为是否确定离散时间积分器Blocks是可以接受的。如果不能接受,在迁移到简化的初始化模式之前,修改模型以解释新的行为。 |
检查离散时间积分器块初始条件设置参数设置为 |
使用周期采样时间为块,或集初始条件设置来 |
检查迭代器子系统中需要运行时间的块。 |
在迭代器子系统层次结构中,不要使用需要服务来维护两次连续执行之间所经过时间的块。 由于迭代器子系统可以在给定的时间步骤中执行多次,因此在两次这样的执行之间并没有明确定义经过时间的概念。在迭代器子系统中使用这些块可能会导致意外的行为。 |
模型顾问排除概述(金宝app仿真软件检查)
请注意
不要单独运行此检查。中的其他检查一起运行此检查迁移到简化初始化模式概述.
检查身份证:mathworks.design.ModelLevelMessages
在Model块和模型配置参数中识别可能导致意外行为的设置,并帮助将您的模型迁移到简化的初始化模式。
为了提高仿真结果的一致性,R2008b引入了简化的初始化方式。有关更多信息,请参见简化初始化模式而且经典初始化模式.
此Model Advisor检查确定模型配置参数和中的问题模型在迁移到简化初始化模式时,模型中可能导致问题的块。子检查的结果包含两种类型的语句:Failed和Warning。失败的语句确定了在将模型迁移到简化的初始化模式之前必须手动处理的问题。警告语句识别迁移后可能发生的问题或行为更改。
运行此Model Advisor一致性检查后,如果单击探索的结果按钮,则消息仅属于非库链接的块。
请注意
由于很难撤消这些更改,请选择文件>另存还原点为在迁移到简化初始化模式之前备份您的模型。
有关更多信息,请参见型号配置参数:连接诊断.
条件 | 建议的行动 |
---|---|
验证所有Model块都使用简化的初始化模式。 |
将model块引用的模型迁移到简化的初始化模式,然后迁移顶部模型。 |
验证简化的初始化模式设置 |
集配置参数>未指定初始化检测来 |
点击修改设置原因如下:
“Model”参数设置为简化
属性初始输出参数设置为空字符向量时,[]
,则SourceOfInitialOutputValue
参数设置为输入信号.
如果输出端口为空初始输出一个可变大小的信号,然后初始输出设置为0。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.SFuncAnalyzer
对Simulink模型或子系统中的s -函数进行质量检查。金宝app
s函数分析器对s函数执行质量检查,以确定指定模型中的改进和潜在问题。
条件 | 建议的行动 |
---|---|
连续状态在mdlOutputs 方法。 |
修改连续状态在一个主要的时间步骤和使用ssSetSolverNeedsReset s函数代码中的函数。 |
中修改连续状态mdlUpdate 方法。 |
仅在主要时间步骤和使用时修改连续状态ssSetSolverNeedsReset s函数代码中的函数。 |
对s函数离散态进行了修正mdlOutputs 在一个小的步骤。 |
只在由。保护的主要步骤修改离散状态ssIsMajorTimeStep 函数。 |
的s函数模式向量mdlOutputs 方法在一个小步骤。 |
只在由。保护的主要步骤修改模式向量sslsMajorTimeStep 函数。 |
S-function使用静态变量或全局变量来声明内部状态。 | 使用显式声明状态ssSetNumDiscStates 函数或通过创建数据存储对全局数据建模. |
s函数具有连续状态,但采样时间不是连续的。 | 指定连续采样时间使用ssSetSampleTime 函数。 |
s函数有离散状态,但是mdlOutputs 而且mdlUpdate 方法是组合的。 |
定义mdlOutputs 而且mdlUpdate 方法分离,只修改离散状态mdlUpdate 方法。 |
s函数设置SS_OPTION_CAN_BE_CALLED_CONDITIONALLY 选项时,有类似状态的数据或多个采样次数。 |
当s函数具有类似状态的数据或多次采样时,删除选项。 |
墨西哥人 机器上不存在编译器。 |
检查是否存在或安装墨西哥人 机器上的编译器。 |
s函数在编译模型时遇到错误。 | 检查诊断查看器输出并重新编译模型。 |
检查身份证:mathworks.design.NonContSigDerivPort
识别驱动衍生端口的非连续信号。
驱动衍生端口的非连续信号导致求解器在每次信号改变值时重置,这减慢了模拟速度。
条件 | 建议的行动 |
---|---|
在驱动导数端口的模型中存在不连续信号。 |
|
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.DiagnosticSFcn
检查数组边界和解算器的一致性功能块在模型中。
验证是否功能块遵循Simulink应用于其内置块的ODE求解器一致性规则。金宝app
条件 | 建议的行动 |
---|---|
求解器数据不一致设置为没有一个 . |
2 .在“配置参数”对话框中设置求解器数据不一致来警告 或错误 . |
超出数组边界设置为没有一个 . |
2 .在“配置参数”对话框中设置超出数组边界来警告 或错误 |
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
检查身份证:mathworks.design.UnitMismatches
识别模型中端口之间单元不匹配的实例。
检查模型中端口之间单元不匹配的实例。
条件 | 建议的行动 |
---|---|
发现单位不匹配 | 将其中一个不匹配的单元设置更改为与另一个端口的单元设置匹配。 |
检查身份证:mathworks.design.AutoUnitConversions
识别模型中自动单元转换的实例。
识别模型中自动单元转换的实例。
条件 | 建议的行动 |
---|---|
发现自动单位转换 | 检查转换的单元是否符合模型的预期。 |
检查身份证:mathworks.design.DisallowedUnitSystems
识别模型中不允许的单元系统的实例。
识别模型中不允许的单元系统的实例。
条件 | 建议的行动 |
---|---|
发现不允许的单元系统 | 选择一个符合所配置的单位制的单位制,或者选择另一个单位制。有关更多信息,请参见限制单元系统. |
检查身份证:mathworks.design.UndefinedUnits
在模型中识别单元规范的实例,这些实例不是在单元数据库中定义的。
在模型中识别单元规范的实例,这些实例不是在单元数据库中定义的。
条件 | 建议的行动 |
---|---|
发现未定义单位 | 将单元更改为Simulink支持的单元。金宝app金宝app |
检查身份证:mathworks.design.AmbiguousUnits
识别模型中模糊单元规范的实例,例如单元数据库中重复的单元名称。
识别模型中模糊单元规范的实例,例如单元数据库中重复的单元名称。
条件 | 建议的行动 |
---|---|
发现不明确的单位 | 可以忽略警告,也可以使用格式指定相应的单位系统unit_system::unit_name . |
检查身份证:mathworks.design.Update
检查常见的块升级问题。
检查模型中因使用新版本的Simulink软件而导致的兼容性问题。金宝app
条件 | 建议的行动 |
---|---|
发现有兼容性问题的块。 | 点击修改修复检测到的块问题。 |
检查二级API s -函数的更新状态。 | 考虑用第2级s函数替换第1级s函数。 |
点击修改用最新版本替换以前版本的Simulink软件中的块。金宝app
检查身份证:mathworks.design.UpdateRequireCompile
检查常见的块升级问题。
检查因升级到新版本的Simulink软件而导致的兼容性问题。金宝app当模型处于编译模式时,一些块升级需要收集信息或数据。对于此检查,将模型设置为编译模式,然后检查是否升级。
条件 | 建议的行动 |
---|---|
模型包含查找表或查找表(二维)块和一些块指定使用最近输入或使用上述输入对于查找方法。 | 取代查找表块和查找表(二维)块与n-D查找表块。不适用使用最近输入或使用上述输入对于查找方法;选择另一个选项。 |
模型包含查找表或查找表(二维)块和一些块在插值时首先执行乘法。 | 取代查找表块和查找表(二维)块与n-D查找表块。然而,因为n-D查找表块首先执行除法,这种替换可能会导致结果的数值差异。 |
模型包含查找表或查找表(二维)块。其中一些块指定Interpolation-Extrapolation随着查找方法但是它们的输入和输出不是相同的浮点类型。 | 取代查找表块和查找表(二维)块与n-D查找表块。然后更改外推方法或端口数据类型进行块替换。 |
模型包含单位延迟块与样品时间设置为 |
取代单位延迟块与内存块。 |
点击修改用最新版本替换以前版本的Simulink软件中的块。金宝app
检查身份证:mathworks.design.CheckSLXFileCompressionLevel
检查是否关闭了SLX文件压缩以减少Git™存储库大小。
检查SLX模型的压缩是否关闭。
条件 | 建议的行动 |
---|---|
模型、库或子系统以SLX格式保存。打开文件压缩。 | 考虑关闭文件压缩以优化源代码控制下的存储。 |
您可以对检入Git源代码控制的模型、库和子系统运行此检查。
检查身份证:mathworks.design.CheckSavedInCurrentVersion
检查模型、库或子系统是否保存在当前版本的Simulink中。金宝app
检查模型文件是否保存在当前的Simulink版本中。金宝app
条件 | 建议的行动 |
---|---|
模型、库或子系统未保存在当前版本的Simulink中。金宝app | 考虑在当前版本的Simulink中重新保存模型文件。金宝app |
您可以在您的模型、库和子系统上运行此检查。
项目可以帮助您将项目中的所有模型和库保存到当前的Simulink发行版。金宝app看到升级所有项目模型、库和MATLAB代码文件.
检查身份证:mathworks.金宝appsimulink.SB2SL.Check
检查模型是否有过时的SB2SL块。
检查模型是否包含过时的SB2SL块。
条件 | 建议的行动 |
---|---|
模型包含过时的SB2SL块 | 考虑将模型升级到当前的SB2SL块。 |
点击更新SB2SL块用最新版本替换块。
检查身份证:mathworks.design.SLXModelProperties
检查已编辑的模型历史属性
检查模型中已编辑的Model History属性值,这些值可以与源代码控制工具关键字替换一起使用。此关键字替换与SLX文件格式不兼容。
在MDL文件格式中,您可以配置一些模型属性来使用源代码控制工具的关键字替换。如果以SLX格式保存模型,则源代码控制工具不能执行关键字替换。当您第一次将MDL文件保存为SLX时,来自这种关键字替换的模型文件中的信息将被缓存,并且不会再次更新。模型中的模型属性历史窗格和模型信息块显示了从那时起的旧信息。
条件 | 建议的行动 |
---|---|
编辑模型历史属性 | 手动或自动将属性重置为默认值。单击按钮重置,或者手动检查和更改这些属性,打开Model properties对话框并在History窗格中查看。 |
您可以在您的库模型上运行此检查。
检查身份证:mathworks.design.ModelInfoKeywordSubstitution
使用此检查来查找可以由外部源代码控制工具通过关键字替换来更改的Model Info块。
该检查在$符号包围的Model Info块中搜索字符向量,这些字符可以被外部源代码控制工具覆盖。使用第三方源代码控制工具关键字扩展可能会在您提交模型文件时损坏它们。关键字替换在SLX模型文件格式中不可用。
要获得更灵活的源代码控制工具接口,请使用Simulink项目而不是Model Info块。金宝app看到关于项目的源代码控制.
条件 | 建议的行动 |
---|---|
Model Info块包含如下字段: |
检查报告中的字段列表,然后从Model Info块中删除关键字字符向量。 |
检查身份证:mathworks.design.ModelInfoConfigurationManager
使用此检查查找使用配置管理器的模型信息块。
使用配置管理器的模型信息块允许使用外部源代码控制工具进行危险的关键字替换。使用第三方源代码控制工具关键字扩展可能会在您提交模型文件时损坏它们。关键字替换在SLX模型文件格式中不可用。模型信息块的配置管理器将在未来的版本中被移除。
要获得更灵活的源代码控制工具接口,请使用Simulink项目而不是Model Info块。金宝app看到关于项目的源代码控制.
条件 | 建议的行动 |
---|---|
模型信息块正在使用配置管理器。 |
点击删除配置管理器. |
检查身份证:mathworks.design.serdesUpgrades
列出保存在以前版本的SerDes Toolbox™中过时的块。
此检查搜索并列出可升级以与当前版本兼容的SerDes工具箱块。
条件 | 建议的行动 |
---|---|
可以找到保存在旧版本SerDes工具箱中的块。 | 点击升级SerDes工具箱块将SerDes工具箱块升级为与当前版本兼容。 |
点击升级SerDes工具箱块将过时的SerDes工具箱块升级为与当前版本兼容。
设计和模拟SerDes系统(并行转换器工具箱)
检查身份证:mathworks.design.Aeroblks.CheckDOF
3DoF和6DoF块列表已经过时。
该检查搜索3.13 (R2014a)之前版本库中的3DoF和6DoF块。
条件 | 建议的行动 |
---|---|
找到了配置旧版本3DoF或6DoF块的块。 | 点击替换3DoF和6DoF块将块替换为最新版本。 |
点击替换3DoF和6DoF块用最新版本替换块。
运动方程(航天Blockset)
检查身份证:mathworks.design.Aeroblks.CheckNAV
搜索3.21 (R2018a)之前的三轴惯性测量单元、三轴陀螺仪和三轴加速度计块。
此检查搜索R2018a中已更新的三轴惯性测量单元、三轴陀螺仪和三轴加速度计块。
条件 | 建议的行动 |
---|---|
R2018a之前的三轴惯性测量单元、三轴陀螺仪和三轴加速度计块。 | 在R2018a或更高版本中,如果您以前没有求解稳态条件,现在保存模型。如果您之前为模型求解了稳态条件,请再次求解这些稳态条件,然后保存模型。 |
检查身份证:mathworks.design.CheckAndUpdateOldMaskedBuiltinBlocks
检查应该更新的库以使用提升的参数。
该检查在R2011b之前创建的库中搜索应该更新以使用提升参数的屏蔽块。从R2011b开始,如果一个块参数没有提升,它在链接块中的值将被锁定到它在库块中的值。该检查排除了子系统、模型引用、S-Function和M-S-Function类型的块。
条件 | 建议的行动 |
---|---|
找到需要更新的库 | 点击更新.库更新之后,再次运行检查 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
检查身份证:mathworks.design.CheckMaskDisplayImageFormat
检查使用图像显示命令识别掩码,并对imread ()
函数。
属性进行不必要调用的掩码显示命令imread ()
函数,并使用掩码显示命令更新它们,该命令不调用imread ()
函数。自2013a以来,使用图像路径代替RGB三重矩阵指定掩码图像的性能和内存优化是可用的。
条件 | 建议的行动 |
---|---|
控件的不必要调用的屏蔽显示命令imread () 函数被发现。 |
点击更新.一旦块被更新,再次运行检查。 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
检查身份证:mathworks.design.CheckMaskRunInitFlag
检查掩码图标绘制命令是否依赖于掩码工作区。
此检查确定掩码图标绘制命令是否依赖于掩码工作区,并更新RunInitForIconRedraw
相应的属性。如果没有掩码工作空间依赖项,则RunInitForIconRedraw
设置为从
,反之,如果有掩码工作空间依赖,则值设置为在
.
设置RunInitForIconRedraw
来从
当没有掩码工作区时,依赖项通过在绘制块图标之前不执行掩码初始化代码来优化性能。
条件 | 建议的行动 |
---|---|
可以找到依赖于或独立于掩码工作区的掩码绘制命令。 |
点击更新.一旦块被更新,再次运行检查。 |
您可以:
在您的库模型上运行此检查。
排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。
检查身份证:mathworks.design.CheckAndUpdateOldMaskTabnames
属性在掩码对话框中指定选项卡的掩码块MaskTabNames
参数。
属性的屏蔽块MaskTabNames
参数以编程方式在掩码对话框中创建选项卡。从R2013b开始,对话框控件用于对掩码对话框上的选项卡中的参数进行分组。
条件 | 建议的行动 |
---|---|
控件的掩码块MaskTabNames 在掩码对话框中以编程方式创建选项卡的参数。 |
点击升级可在行动部分。一旦块被更新,再次运行检查。 |
您可以在您的库模型上运行此检查。
检查身份证:mathworks.design.StowawayDoubles
对于严格的单精度设计,该检查可以识别引入双精度操作和非最佳模型设置的块。
对于严格的单精度设计,该检查可以识别引入双精度操作和非最佳模型设置的块。
条件 | 建议的行动 |
---|---|
在模型中发现的双精度浮点运算。 | 验证:
|
Model使用的库标准对于严格的单一设计来说不是最优的。 |
验证:
|
逻辑信号不是作为布尔数据实现的。 | 验证:
|
如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。
模型顾问排除概述(金宝app仿真软件检查)
检查身份证:mathworks.design.CallsGetParamCompiledSampleTime
使用此检查可识别工作环境中包含get_param
函数调用返回块CompiledSampleTime
参数。
对于多速率块(包括子系统),Simulink将块编译后的采样时间作为块中采样速率的单元格数组金宝app返回。返回值是双精度数对的单元格数组。当使用多速率块调用时,只接受此返回值作为双精度对的MATLAB代码会返回错误。使用此检查在您的环境中识别此类代码。修改这些代码实例以接受由双精度数对组成的单元格数组。
例如,考虑一个变量blkTs,它被分配了一个多速率块的编译采样时间。
blkTs = get_param(block,'CompiledSampleTime');
以下是一些示例,其中原始代码仅在blkTs是一对double且block是单速率块时才能工作:
示例1
if isinf(blkTs(1)) disp('found constant sample time')结束
由于blkTs现在是一个单元格数组,Simulink给出了这个错误金宝app消息:
未定义的函数'isinf'用于类型为'cell'的输入参数
if isequal(blkTs, [inf,0]) disp('发现恒定采样时间')结束
示例2
if all(blkTs == [-1,-1]) disp('found trigger sample time')结束
对于上面的例子,因为blkTs现在是一个单元格数组,Simulink给出了这个错误:金宝app
未定义的函数'eq'用于类型为'cell'的输入参数
相反,请使用这段代码,其中的blkt可以是单元格数组或一对double。
if isequal(blkTs, [-1,-1]) disp('发现触发采样时间')结束
示例3
if (blkTs(1) == -1) disp('发现一个触发上下文')结束
同样,由于blkTs现在是一个单元格数组,Simulink给出了这个错误:金宝app
未定义的函数'eq'用于类型为'cell'的输入参数
相反,使用这段代码。
if ~iscell(blkTs) blkTs = {blkTs};end for idx = 1:length(blkTs) thisTs = blkTs{idx};if (thisTs(1) == -1) disp('发现一个触发上下文')end结束
上面的代码检查触发类型采样时间(触发或异步)。如果一个块除了触发或异步之外还有恒定的采样时间([inf,0]),或者当一个块有多个异步速率时,这个替代属性检测触发类型采样时间。
该检查扫描环境中的MATLAB文件。如果检查发现MATLAB代码的实例包含get_param
调用来输出块编译样例时间,升级顾问会显示这些结果。它建议您修改接受多速率块编译样例时间的代码。
条件 | 建议的行动 |
---|---|
没有MATLAB文件调用CompiledSampleTime get_param(块) |
没有一个 |
一些MATLAB文件调用CompiledSampleTime get_param(块) |
如果文件使用该块CompiledSampleTime 参数,修改这些文件以接受该参数作为双精度对的单元格数组 |
检查身份证:mathworks.design.CheckSingleSimulationOutput
使用此检查来确定模拟结果是否作为单个返回金宝app仿真软件。SimulationOutput
对象。
该检查扫描您的模型以验证参数是否正确ReturnWorkspaceOutputs
启用。类型中的模拟输出金宝app仿真软件。SimulationOutput
交互模拟时。仿真输出包括信号、状态、输出、DSM日志记录、范围和到工作空间
块日志记录。
当ReturnWorkspaceOutputs
启用时,它提供:
更容易管理模拟数据。
自动访问SimulationMetadata
.
兼容多个并行模拟和批处理模拟。
条件 | 建议的行动 |
---|---|
模拟输出不会作为单个输出返回金宝app仿真软件。SimulationOutput 对象 |
返回所有模拟输出 |
检查身份证:mathworks.design.ParameterTuning
使用此检查可以识别初始化参数或优化参数时模型中出现的问题。
这个检查扫描你的模型的参数初始化和调优问题,如:
块间速率不匹配
在有条件执行的子系统中除以零问题
中的控制端口值无效索引向量块
条件 | 建议的行动 |
---|---|
该模型存在速率转换问题。 |
选择自动处理数据传输的速率转换在解算器模型配置参数的窗格。 |
该模型在具有控制端口的有条件执行子系统中存在除零问题。 |
在命令提示符下,运行 set_param (control_port“DisallowConstTsAndPrmTs”,“上”) |
该模型在有条件执行的子系统中具有无效的控制端口值。 |
在命令提示符下,运行 set_param (control_port“DisallowConstTsAndPrmTs”,“上”) |
选择升级模型解决模型中与参数初始化和调优相关的问题。
检查身份证:mathworks.design.CheckVirtualBusAcrossModelReference
检查跨越模型引用边界的虚拟总线信号。
该检查标识根级别轮廓尺寸而且外港引用模型中的块和带有虚拟总线输出的模型块,这些虚拟总线输出需要更新以更改为非虚拟总线信号。
如果检查发现问题,单击更新模型转换根级别轮廓尺寸而且外港为虚拟总线在以下情况下使用非虚拟总线而配置的块:
对根级轮廓尺寸blocks—启用输出为非虚拟总线参数,并插入信号转换块后的轮廓尺寸块。的信号转换块配置为输出虚拟总线。
对根级外港blocks—启用在父模型中输出为非虚拟总线参数。
为模型blocks -用于端口外港块已更新以解决问题,插入信号转换块后对应的端口模型块。的信号转换块配置为输出虚拟总线。
单击,解决问题升级模型.
请注意
运行分析模型层次结构并继续升级顺序检查顶层模型,然后向下查看模型引用层次结构。
点击升级模型转换受影响的根级别轮廓尺寸而且外港为虚拟总线配置的块,以在以下模型中使用非虚拟总线:
使用函数原型控件
方法执行c++代码生成I/O参数步进方法
选择。
或者,您可以将c++代码生成函数规范设置更改为默认步骤方法
:
在配置参数>代码生成>接口窗格中,单击配置c++类接口.
在对话框中,设置功能规范参数默认步骤方法
.
使用具有可变尺寸信号的总线
使用关联的非自动存储类外港块信号
只有当您拥有模型所需的目标生成许可时,才会发生非自动存储类的转换。例如,ERT目标需要一个Embedded Coder许可证。
使用Export-function模型外港块由非虚拟总线驱动
有模型块,引用包含外港已修复的块-单击升级模型更新引用模型的模型块外港块由分析模型层次结构并继续升级顺序检查。
检查身份证:mathworks.design.DSPFrameUpgrade
该检查识别模型中依赖于信号帧状态的自定义库块。
描述
该检查在模型中搜索依赖于信号帧状态的自定义库块。检查分析阻塞,建议修复,并给出修复的原因。您必须手动进行修复。
结果和建议措施
条件 | 建议的行动 |
---|---|
该检查查找依赖于信号帧状态的自定义库块。 |
请遵循升级顾问给出的建议。 |
能力和限制
您只能在模型中的自定义库块上运行此检查。
您必须手动进行修复。
只有安装了DSP系统工具箱™,才会出现此检查。
另请参阅
框架处理(DSP系统工具箱)
检查身份证:“mathworks.design.CheckForSFcnUpgradeIssues”
在您的模型上使用此检查来确定s函数的升级兼容性问题。这些问题可能包括使用32位api、使用不兼容选项编译或使用已弃用的单独复杂api。下面的结果和建议部分描述了与修复程序相关的一些常见问题和信息。
当升级您的s -函数以使用最新版本中的特性时,此检查扫描您的模型以警告s -函数升级不兼容问题。如果检查结果给出警告或错误,请根据描述修复您的C MEX s -函数。
条件 | 建议的行动 |
---|---|
不支持定制的s函数。金宝app |
用可用的兼容选项重新编译s函数。看到定制的MEX文件在当前版本中不支持金宝app获取更多信息。 |
s函数没有使用最新的API ( |
使用最新标志重新编译( |
S-function使用32位函数。 |
中的说明修改代码MEX文件调用32位函数. |
S-function使用已弃用的单独复杂api (mxGetPi, mxSetPi, mxGetImagData, mxSetImagData)。 |
使用交错的复杂api并使用最新标志重新编译代码( |
S-function使用已弃用的类型不安全数据API (mxGetData, mxSetData)。 | 使用类型安全的数据api并重新编译代码。看到MEX文件调用无类型数据访问函数获取更多信息。 |
S-function是在未来版本中编译的,当前版本不支持。金宝app | 看到在MATLAB版本中内置的MEX文件在当前版本中不支持金宝app重新编译文件。 |
检查身份证:“mathworks.design.CheckSystemObjectUpdate”
使用此检查可以识别和更新模型中语法过时的自定义MATLAB系统对象™。
该检查扫描您的模型以识别过时的System对象语法。如果检查通过,则所有语法都是最新的。如果检查失败,可以更新语法。
条件 | 建议的行动 |
---|---|
系统对象语法是最新的。 |
一个也没有。 |
系统对象语法需要更新。 |
对象关联的每个惟一系统对象都会生成一个报告MATLAB系统块。使用更新更新语法。 |
检查身份证:mathworks.design.CheckRapidAcceleratorSignalLogging
在快速加速模式下模拟模型时,使用此检查来查找记录在模型中的全局禁用的信号。快速加速器模式支持信号记录。金宝app使用此检查可全局启用信号日志记录。
此检查扫描您的模型,以查看模拟是否处于快速加速模式,以及模型是否包含带有信号记录的信号。如果检查发现一个实例,并且信号记录被全局禁用,则会出现一个全局打开信号记录的选项。
条件 | 建议的行动 |
---|---|
模拟模式不是快速加速器。 |
一个也没有。您可以在快速加速器模式下启用信号记录。 |
模拟模式为快速加速器。升级顾问没有发现启用了信号日志的信号。 |
一个也没有。该模型不使用信号测井。如果您想记录信号,则为信号和全局启用信号日志。 |
模拟模式为快速加速器。升级顾问发现启用了信号日志的信号。但是,信号记录的全局设置被禁用。 |
如果要在启用信号记录的情况下对信号进行记录,则全局启用信号记录。 |
信号记录已经在全局启用。 |
一个也没有。 |
选择修改在模型中启用全局信号记录。
检查身份证:mathworks.design.VirtualBusUsage
检查总线输入信号的一组块。
检查总线输入信号的一组块。
从R2015b开始,需要非总线或非虚拟总线输入的块的虚拟总线信号输入可能会导致错误。可以指定总线对象作为其输出数据类型的块的示例包括总线的创造者块和根轮廓尺寸块。在这种情况下,当它们有一个虚拟总线输入时,导致错误的块是:
赋值
延迟
的延迟block只有在使用block参数对话框时才会导致错误:
设置初始条件为MATLAB结构或零。
为指定值国家的名字.
排列尺寸
重塑
选择器
单位延迟
的单位延迟block只有在使用block参数对话框时才会导致错误:
设置初始条件为MATLAB结构或零。
为指定值国家的名字.
向量连接
条件 | 建议的行动 |
---|---|
这些块的虚拟总线信号输入:
|
在“升级顾问”中,单击修改. 支票插入一个总线到向量块试图将虚拟总线输入信号转换为矢量信号。对于升级顾问识别但无法修复的问题,请手动修改模型。详细信息请参见识别自动总线转换. |
点击修改插入一个总线到向量块的输入端口。
对于许多模型,运行Upgrade Advisor会修改模型,这样总线信号就不会被视为向量。然而,对于某些型号,即使在运行检查之后,您也可能遇到兼容性问题。手动修改您的模型以解决这些问题。
在您使用Upgrade Advisor编译模型之后,Simulink Editor有时会指示您需要保存模型(模金宝app型是脏的),即使您没有进行更改。为了防止此问题在此模型中再次发生,请保存该模型。
建模模式 | 问题 | 解决方案 |
---|---|---|
数据存储内存块与数据类型设置为 |
一个数据存储内存关联的块数据存储读取或数据存储写块读写总线信号数据必须使用总线对象。 |
在数据存储内存块,设置数据类型信号属性 |
信号转换块输出参数匹配输入总线类型 |
一个信号转换块的输出参数设置为 一个信号转换块的输出参数设置为 |
若要创建输入信号的副本,请设置输出来 |
合并,开关,或多端口切换具有多个总线输入的块 |
合并,开关,或多端口切换具有多个总线输入的块要求这些输入具有相同的名称和层次结构。 |
重新配置模型,使总线输入具有相同的名称和层次结构。 |
根轮廓尺寸块输出虚拟总线并指定值港维 |
一个根轮廓尺寸输出到虚拟总线的块必须继承维度。 |
设置轮廓尺寸块港维信号属性 |
Mux块与非虚拟总线输入 |
一个Mux块不能接受非虚拟总线信号。 |
要将输出作为数组处理,请替换Mux块向量连接块。 如果需要虚拟总线输出,请使用总线的创造者块组合信号。 |
总线到向量块没有虚拟总线信号输入 |
非总线信号不需要总线到向量块。 |
删除总线到向量块。 |
赋值块与虚拟总线输入 |
升级顾问转换赋值块 |
添加一个总线到向量在赋值块。 |
s函数使用非虚总线 |
不是2级C s函数的s函数不支持非虚总线信号。金宝app |
将s函数更改为Level-2 C s函数。 考虑使用s函数生成器block来创建Level-2 C s函数。 |
带有参数化数据类型的状态流程图 |
在状态流图中,如果数据类型是总线对象,则不能根据另一个输入或输出参数化输入或输出的数据类型。 |
对于参数化的端口,请设置数据类型来 |
在状态流程图中具有总线操作的子系统 |
一个轮廓尺寸状态流图中子系统内的块如果其信号是总线,则需要总线对象数据类型。 |
在轮廓尺寸块,设置数据类型来 |
地面块用作总线源 |
的输出信号地面块不能是总线的源。 |
使用一个常数块与恒定值设置为0和输出数据类型信号属性设置为 |
根外港块,使用单元素总线对象数据类型 |
的输入外港如果块指定总线对象作为其数据类型,则它必须是总线。 |
在外港块,设置数据类型来 |
检查身份证:mathworks.design.CheckConstRootOutportWithInterfaceUpgrade
使用此检查来识别与AUTOSAR目标、函数原型控件或模型c++类接口一起使用的具有恒定采样时间的根输出。
当使用AUTOSAR目标、函数原型控件或模型c++类接口时,不支持具有恒定采样时间的根输出。金宝app使用此检查识别具有此条件的根Outport块,并根据建议修改这些块。
条件 | 建议的行动 |
---|---|
与AUTOSAR目标、函数原型控制或模型c++类接口一起使用的具有恒定采样时间的根输出。 |
考虑以下其中一个:
|
检查身份证:com.mathworks.金宝appSimulink.UpgradeAdvisor.UpgradeModelHierarchy
检查子模型并指导您完成升级检查。
此检查标识该模型的子模型,并指导您通过升级检查来运行非编译检查和编译检查。Advisor提供了帮助完成这些任务的工具:
如果检查找到了子模型,它将轮流在每个子模型上运行Upgrade Advisor,并继续升级序列。如果您有一个模型层次结构,您需要依次检查和更新每个子模型。
如果没有子模型,您仍然需要继续检查序列,直到运行非编译检查和编译检查。
您必须按照以下顺序运行升级检查:首先是不需要编译时信息且不会触发更新图的检查,然后是编译检查。
点击继续升级顺序进行下一次检查。如果有子模型,这将打开下一个模型。继续点击继续升级顺序直到检查通过。
条件 | 建议的行动 |
---|---|
发现儿童模型 | 点击继续升级顺序进行下一次检查。如果有子模型,这将关闭当前的Upgrade Advisor会话,并为层次结构中的下一个模型打开Upgrade Advisor。 |
没有子模型,但要进行更多检查 | 如果没有子模型,单击继续升级顺序以刷新选中编译检查的升级顾问。编译检查触发更新图(用^ ).执行下一步检查并采取建议的行动。返回此检查时,单击继续升级顺序直到检查通过。 |
升级模型层次结构的最佳实践是检查和升级每个模型,从叶端开始,一直到根模型。
当你点击继续升级顺序时,升级顾问会在层次结构中尽可能地打开叶模型。后续步骤将指导您将层次结构从叶模型升级到根模型。
打开“升级顾问”时,所选的检查不需要编译时信息,也不会触发更新关系图。默认情况下,不会选择运行触发更新关系图的检查,并将其标记为^
.在层次结构上使用升级顾问时,请继续单击继续升级顺序进行这一系列的分析:
Upgrade Advisor依次从叶到根打开每个模型和库,并选择非编译检查。运行检查,采取任何建议的操作,然后单击继续升级顺序打开下一个模型并继续。
当您到达层次结构的根端时,Upgrade Advisor然后以相同的顺序再次打开每个模型(但不包括库),并只选择需要模型编译的检查。运行检查,采取任何建议的操作,然后单击继续升级顺序打开下一个模型。继续,直到到达层次结构的末尾,检查通过。
检查身份证:mathworks.design.ConflictsForDataStoreReadWriters
在读取和写入数据存储时,确定潜在的执行顺序敏感性。
对同一数据存储进行读写的块的执行顺序可能会改变模拟结果。当同一层次结构中的块访问同一个数据存储时,执行顺序是不确定的。
条件 | 建议的行动 |
---|---|
数据存储同一层次结构中多个块访问的内存块。 |
为了加强块的执行顺序,考虑以下问题:
|
检查身份证:mathworks.design.TaskBasedSorting
检查数据存储读和写块的遗留排序和基于任务的排序之间的相对执行顺序更改。
传统模型使用块排序来确定块的执行顺序。使用基于任务的排序,涉及数据存储内存块的相对执行顺序可以改变。此检查检测更改,并提供一个选项,以使用原始执行顺序更新您的模型。
条件 | 建议的行动 |
---|---|
数据存储内存块的执行顺序发生变化。你想要原始的执行命令。 | 单击修改按钮。 |
检查身份证:mathworks.design.CaseSensitiveBlockDiagramNames
识别并修复对模型和库的不区分大小写的引用。
从R2020a开始,Simulin金宝appk模型和库名称区分大小写。该检查检测并提供了一个选项来修复对模型和库的不区分大小写的引用。
条件 | 建议的行动 |
---|---|
该检查在对模型和库的引用中发现大小写不匹配。 | 请遵循升级顾问给出的建议。 |
检查身份证:mathworks.design.Sigbldr.upgradeCheck
搜索信号生成器模型中的块。
找到信号生成器模型中的块,并将其替换为等效配置信号编辑器块。
条件 | 建议的行动 |
---|---|
模型包含一个或多个信号生成器块。 |
替换所有信号生成器具有等效的块信号编辑器块,单击相关的链接。 |
检查身份证:mathworks.金宝appsimulink.MLFBOutputDimensions
属性的所有MATLAB函数块将输出列向量解释为一维数据参数启用。如果启用该参数,该块将大小为N × 1的输出列向量转换为信号大小为N的一维信号。
条件 | 建议的行动 |
---|---|
MATLAB函数块产生一维输出数据,并启用了参数 | 单击修复它按钮不禁用MATLAB函数块的参数。要禁用该参数,请转到MATLAB函数块。点击端口和数据管理器2 .在“function”页签下,取消选中该参数。 检查模型的仿真行为,因为禁用参数会改变MATLAB函数块的大小传播。 |
MATLAB函数块不产生一维数据,并启用了参数 | 单击修复它按钮,禁用MATLAB函数块的参数。 |
检查身份证:mathworks.design.rfblockset.ce.checkDisconnectedDividerBlocks
搜索模型并列出使用威尔金森功率分压器组件的RF Blockset™分压器块,端口上的端口连接断开3..
从R2021a开始,使用威尔金森功率分压器组件的RF块集分压器块的端口位置被更改。此检查使用R2021a之前端口3上端口连接断开的威尔金森功率分压器组件模型搜索并列出分压器块。然后可以使用Modify按钮重新连接。
条件 | 建议的行动 |
---|---|
型号具有射频块集分压器块,使用威尔金森功率分压器组件,端口3上的端口连接断开。 | 单击修改按钮,将断开的连接重新连接到RF块集分隔块的端口3上。 |
点击修改在射频块集分隔块的端口3上重新布线断开的端口连接。
请注意
的修改按钮将尝试使用模型中的威尔金森功率分压器组件自动在分压器块的端口3重新连接所有断开的连接。为确保准确,你必须:
检查下面列出的详细信息结果窗格中的“升级顾问”。
第一个列表列举了使用威尔金森功率分压器组件的RF块集分压器块,由于模型的复杂性,需要手动重新布线。
第二个列表枚举自动重新连接的块。
固定和不固定的分隔块分别临时突出显示绿色和红色。单击删除所有临时块突出显示链接的底部结果窗格以删除高亮显示。
检查身份证:mathworks.design.ReplaceEnvironmentControllerBlk
搜索环境控制器模型中的块。
找到环境控制器块,并将它们替换为变异来源块。变型控制方式参数设置为“sim码原切换”
.
条件 | 建议的行动 |
---|---|
模型包含一个或多个环境控制器块。 | 取代环境控制器块与变异来源块。变型控制方式参数设置为“sim码原切换” . |
您可以在您的库模型上运行此检查。
你不能用这张支票来识别环境控制器引用模型中的块和链接块。