主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

指定结构或总线参数的参数配置

关于此示例模型

此示例描述了如何生成约束模型中的结构和总线信号值的测试。假设您的模型包含一个名为 kpGainsStructure 的变量,它是 MATLAB® 工作区中的一个结构体。该模型使用 Bus Selector 模块将结构体字段分离为单独的总线信号。您可以约束结构体的值或总线信号的值,以确保它们在仿真期间保持在指定的范围内。

Example model that includes a variable kpGainsStructure.

本示例介绍如何创建和分析一个简单的 Simulink® 模型,然后使用 Simulink Design Verifier™ 为该模型生成测试用例。该模型包含一个输入信号 In1,其值设置在-1 到 1 之间。kpGainsStructure 是一个包含三个字段 Kp1Kp2Kp3 的结构体,并将它们输出到将字段分离为单独总线信号的 Bus Selector 模块。名为 Mode 的模块具有一个常量值参数,该参数设置为 mode,确定三个总线信号作为 kpGain 模块的输入。

In1 的值乘以 d,然后乘以选定的总线信号。结果传递到 Saturation 模块,其限制定义在 -0.5 到 0.5 之间。

根据 mode 的值,Simulink 选择三个 kpGainsStructure 字段之一并指定约束。Saturation 模块的输入信号必须低于下限或高于上限才能满足 Saturation 模块的决策目标。Simulink Design Verifier 然后调整这些参数以达到此限制。以下工作流程将指导您完成此示例的过程。

预加载结构参数的工作区变量

预加载 MATLAB 工作区变量 kpGainsStructure 的值。该结构体包含字段 Kp1Kp2Kp3

  1. 建模选项卡上,选择 模型设置 > 模型属性

  2. 点击回调选项卡。

  3. 点击 PreLoadFcn,然后加载 Kp1Kp2Kp3myStruct 字段:

    load('struct_param.mat');
    myStruct.Kp1 = 15;
    myStruct.Kp2 = -5;
    myStruct.Kp3 = -5;
    gainsParam = Simulink.Parameter(myStruct);
    mode = 1;
    d = Simulink.Parameter(0.012);

    Model properties window.

  4. 点击确定关闭“模型属性”对话框并保存模型。

因为结构体参数是由 Constant 模块调用的,所以需要将 Constant 模块的输出定义为总线。请按以下步骤操作:

  1. 双击 Gains 模块以打开模块参数对话框。

  2. 信号属性下,选择输出数据类型作为 Bus:BusO

  3. 点击确定

定义参数约束值

在配置参数窗口中,有两种方法可以约束结构体或总线信号的值:使用参数表或参数配置文件。

  • 参数表

  • 参数配置文件

使用参数表定义参数约束值

在可能的情况下,参数表会根据参数的数据类型和模型中的位置自动为每个参数生成约束值。有关详细信息,请参阅 使用参数表查找约束

按照以下步骤生成每个参数的约束值:

  1. App 选项卡上的模型验证、确认和测试下,点击 Design Verifier

  2. Design Verifier 选项卡上,点击测试生成设置

  3. 在“配置参数”对话框中,选择 Design Verifier > 参数和变体

  4. 选择使用参数表

  5. 点击查找参数

  6. 参数表填充了您的模型中的参数。

  7. 在参数表中的约束列中,

    • {1,2,3} 替换 mode

    • [-0.01 0.15] 替换 d

    Parameter Table.

  8. 点击确定

使用参数配置文件定义约束值

这是一种替代方法,您可以使用它来定义约束的值,而不是使用参数表。Simulink Design Verifier 软件提供了一个模板,您可以复制并编辑它。有关详细信息,请参阅 使用参数配置文件设置参数 中的 参数配置模板文件。默认的参数配置文件路径为:

matlabroot/toolbox/sldv/sldv_params_template.m

要在分析模型之前将参数配置文件与您的模型关联,请在“配置参数”对话框的Design Verifier > 参数和变体窗格中,确保清除使用参数表,然后在参数配置文件字段中输入配置文件的文件名。

按照以下步骤在参数配置文件中定义约束值:

  1. sldv_params_template.m 中输入:

    function params = params_config
    params.mode = {1, 2, 3};
    params.d = [-.001 0.15];
    params.gainsParam.Kp1 = Sldv.Interval(0, 50);
    params.gainsParam.Kp2 = Sldv.Interval(-10, 10);
    params.gainsParam.Kp3 =  [-5, 5];
    

  2. 使用名称 params_config.m 保存文件。

  3. 打开模型 DemoModel

  4. App 窗格中的模型验证、确认和测试下,点击 Design Verifier

  5. Design Verifier 选项卡上,点击测试生成设置

  6. 在“配置参数”对话框中,选择 Design Verifier > 参数和变体

  7. 点击浏览,然后选择步骤 2 中创建保存的 params_config.m 参数配置文件。

分析示例模型

对启用参数约束的模型进行分析,并生成分析报告:

  1. Design Verifier 选项卡的模式部分中,选择测试生成。点击生成测试

    Simulink Design Verifier 分析您的模型以生成测试用例。

  2. 当软件完成分析后,在 Simulink Design Verifier 结果摘要窗口的详细分析报告旁边,选择 HTML。

    该软件显示一个名为 DemoModel.html 的 HTML 报告。

    Simulink Design Verifier Results Summary window.

  3. Simulink Design Verifier 报告的目录中,点击测试用例

  4. 点击 Test Case 1 即可显示该测试用例的子部分。

    测试用例 1 显示 Simulink Design Verifier 调整了所有参数,使得来自 In1 输入信号、Gain 模块和模式变量的所有输入要么低于 -0.5,要么高于 0.5。在生成测试用例时,所有约束都满足目标。

    Table of generated parameter values.

类似地,测试用例 2 和测试用例 3 的参数也经过调整并满足目标。

另请参阅