Main Content

sldiagnostics

显示有关 Simulink 系统的诊断信息

语法

sldiagnostics('sys')
[txtRpt, sRpt] = sldiagnostics('sys')
[txtRpt, sRpt] = sldiagnostics('sys', options)
[txtRpt, sRpt] = sldiagnostics('sys', 'CompileStats')
[txtRpt, sRpt] = sldiagnostics('sys', 'RTWBuildStats')

说明

sldiagnostics('sys') 显示与 sys 指定的模型或子系统相关联的以下诊断信息:

  • 每种类型的模块的数量

  • 每种类型的 Stateflow® 对象的数量

  • 根模型的状态、输出、输入和采样时间的数量

  • 引用的库的名称以及引用模块的实例的名称

  • 用于根模型每个编译阶段的时间和额外内存

如果未加载 sys 指定的模型,则 sldiagnostics 在执行分析前会加载该模型。

命令 sldiagnostics('sys', options) 只显示与列出为 options 字符向量的特定操作相关联的诊断信息。下表汇总了可用选项及其对应的有效输入和输出。

使用 sldiagnostics,您可以输入模型的名称或子系统的路径。对于某些分析选项,sldiagnostics 只能分析一个根模型。如果为其中一个分析提供了不兼容的输入,则 sldiagnostics 会发出警告。最后,如果您输入 Simulink® 库,则 sldiagnostics 无法执行需要模型编译 (更新图) 的选项。相反,sldiagnostics 会发出警告。

在分析期间,sldiagnostics 会跟随库链接,但不会跟随或分析模型引用。有关在指定模型中查找所有 Model 模块和引用模型的详细信息,请参阅 find_mdlrefs

选项

有效输入

输出

CountBlocks

根模型、库或子系统

列出系统中的所有唯一模块以及每个模块出现的次数。这包括嵌套在封装子系统或隐藏模块中的模块。

CountSF

根模型、库或子系统

列出系统中的所有唯一 Stateflow 对象以及每个对象出现的次数。

Sizes

根模型

列出根模型中使用的状态、输出、输入和采样时间的数量,以及指示直接馈通的标记。

Libs

根模型、库或子系统

列出根模型中引用的所有唯一库,以及库模块的名称和数量。

CompileStats

根模型

列出用于根模型每个编译阶段的时间和额外内存。此信息可帮助用户排除有关模型编译速度和内存的问题。

RTWBuildStats

根模型

列出与 CompileStats 诊断相同的信息。当函数的第二个输出参数为 sRpt 时,它会捕获与 CompileStats 中所包括的统计信息相同的统计信息,还会捕获 Simulink Coder™ 编译统计信息。

您必须显式指定此选项,因为它不是默认分析的一部分。

All

不适用

执行所有诊断。

注意

在首次对模型进行仿真之前运行 CompileStats 诊断会显示较大的内存使用率。但是,后续对模型运行 CompileStats 诊断所需要的内存将变少。

[txtRpt, sRpt] = sldiagnostics('sys') 将诊断信息返回为文本报告 txtRpt 和结构体数组 sRpt,其中包含以下对应于各诊断选项的字段:

  • blocks

  • stateflow

  • sizes

  • links

  • compilestats

[txtRpt, sRpt] = sldiagnostics('sys', options) 仅返回指定的选项。如果您选择的选项仅指定一种类型的分析,则 sRpt 仅包含该分析的结果。

[txtRpt, sRpt] = sldiagnostics('sys', 'CompileStats')txtRptsRpt 中返回有关时间和内存使用情况的信息。

[txtRpt, sRpt] = sldiagnostics('sys', 'RTWBuildStats')Simulink Coder 编译统计信息以及针对 CompileStats 报告的信息包括在 sRpt 输出中。

  • txtRpt 包含 Simulink 和 Simulink Coder 的每个阶段所花费的时间的格式化文本输出(如果您指定了 RTWBuildStats),例如:

    Compile Statistics For: rtwdemo_counter
    	Cstat1: 0.00 seconds Model compilation pre-start
    	Cstat2: 0.00 seconds Stateflow compile pre-start notification
    	Cstat3: 0.10 seconds Post pre-comp-start engine event
    	Cstat4: 10.00 seconds Stateflow compile start notification
    	Cstat5: 0.00 seconds Model compilation startup completed
    

  • sRpt 是包含每个阶段的时间和内存使用情况的 MATLAB® 结构体,例如:

    sRpt =
    Model:	'myModel1'
    Statistics:	[1x134 struct]
    
    sRpt.Statistics 数组的大小指示操作过程中执行的编译阶段的数量。检查 Statistics 字段:
    sRpt.Statistics(1) = 
    Description:	'Phase1'
    CPUTime:	7.2490
    WallClockTime	4.0092
    ProcessMemUsage:	26.2148
    ProcessMemUsagePeak:	28.6680
    ProcessVMSize:	15.9531
    
    CPUTimeWallClockTime 显示相应阶段的已用时间(以秒为单位)。ProcessMemUsageProcessMemUsagePeakProcessVMSize 显示阶段执行过程中消耗的内存(以 MB 为单位)。

检查以下关键指标以了解性能:

  • WallClockTime - 每个阶段的实时已用时间(以秒为单位)。将每个阶段的 WallClockTime 汇总可获得执行操作所花费的总时间:

    ElapsedTime = sum([statRpt.Statistics(:).WallClockTime]);

  • ProcessMemUsage - 每个阶段消耗的内存量。将所有阶段的 ProcessMemUsage 汇总可获得整个操作过程中的内存消耗:

    TotalMemory = sum([statRpt.Statistics(:).ProcessMemUsage]);

  • ProcessMemUsagePeak - 每个阶段中的最大内存分配量。获取所有阶段中该指标的最大值可找到操作过程中的峰值内存分配:

    PeakMemory = max([statRpt.Statistics(:).ProcessMemUsagePeak]);

    注意

    只有在 Microsoft® Windows® 平台上才能使用内存统计信息。

示例

以下命令将计数并列出 Simulink 软件随附的 sldemo_bounce 模型中使用的每种类型的模块。

openExample('simulink_general/sldemo_bounceExample')
sldiagnostics('sldemo_bounce', 'CountBlocks')

以下命令将计数并列出 Stateflow 软件随附的 sf_boiler 模型中使用的唯一模块和 Stateflow 对象;返回的文本报告将被捕获为 myReport

openExample('stateflow/BangBangControlUsingTemporalLogicExample')
myReport = sldiagnostics('sf_boiler', 'CountBlocks', 'CountSF')

以下命令将打开 Simulink 随附的 f14 模型,并计算 Controller 子系统中使用的模块数。

openExample('simulink_aerospace/AircraftLongitudinalFlightControlExample')
sldiagnostics('f14/Controller', 'CountBlocks')

以下命令对 f14 模型运行 SizesCompileStats 诊断,将结果捕获为文本报告和结构体数组。

[txtRpt, sRpt] = sldiagnostics('f14', 'Sizes', 'CompileStats')

版本历史记录

在 R2006a 中推出

另请参阅

|