主要内容

配置模型,生成代码和模拟

关于本例

学习目标

  • 了解示例模型的功能行为。

  • 了解示例测试工具及其组件的角色。

  • 在模型上运行模拟测试。

先决条件

  • 能够打开和修改Simulink金宝app®模型和子系统。

  • 了解子系统以及如何查看子系统的详细信息。

  • 理解被引用的模型以及如何查看被引用的模型细节。

  • 能够设置模型配置参数。

所需的文件

在使用每个示例模型文件之前,请在可写位置放置一个副本,并将其添加到MATLAB路径中。

  • rtwdemo_throttlecntrl模型文件

  • rtwdemo_throttlecntrl_testharness模型文件

模型的功能设计

本例使用一个简单但功能完整的油门控制器示例模型。该模型采用冗余控制算法。该模型在算法设计中突出了标准的模型结构和一组基本块。

查看顶层模型

开放rtwdemo_throttlecntrl并另存一份为throttlecntrl在MATLAB路径的可写位置。

请注意

该模型使用状态流®软件

模型的顶层由以下元素组成:

子系统 PI_ctrl_1
PI_ctrl_2
Define_Throt_Param
Pos_Command_Arbitration
顶级的输入 pos_rqst
fbk_1
fbk_2
顶级输出 pos_cmd_one
pos_cmd_two
ThrotComm1
信号路由
省略改变信号值的块,例如总和而且积分器

布局使用模型的基本架构风格:

  • 计算与信号路由(线路和总线)分离

  • 划分到子系统

您可以将这种风格应用于广泛的模型。

查看子系统

探索顶层模型中的两个子系统。

  1. 如果还没有打开,那就打开throttlecntrl

    顶层模型中的两个子系统代表比例积分控制器,PI_ctrl_1而且PI_ctrl_2.在这个阶段,这些相同的子系统使用相同的数据。

  2. 打开PI_ctrl_1子系统。

    模型中的PI控制器来自于图书馆,一组用于重用的相关块或模型。库提供了包含和重用模型的两种方法之一。第二种方法,模型引用,在模拟测试环境.您不能编辑从库中添加到模型中的块。编辑库中的块,以便不同模型中的块实例保持一致。

  3. 打开Pos_Command_Arbitration子系统。这个状态流图表对两个命令信号执行基本的错误检查。如果命令信号相隔太远,状态流图将输出设置为afail_safe的位置。

  4. 关闭throttlecntrl

模拟测试环境

为了测试油门控制器算法,将其纳入一个测试工具.测试集束是一种评估控制算法的模型,并提供以下好处:

  • 从控制算法中分离测试数据。

  • 从控制算法中分离出植物或反馈模型。

  • 为控制算法的多个版本提供可重用的环境。

这个例子的测试集束模型实现了一个由以下部分组成的公共模拟测试环境:

  • 测试单元

  • 测试矢量源

  • 评价与测井

  • 工厂或反馈系统

  • 输入和输出缩放

探索模拟测试环境。

  1. 打开测试线束模型rtwdemo_throttlecntrl_testharness并另存一份为throttlecntrl_testharness在MATLAB路径的可写位置。

  2. 设置你的throttlecntrl模型作为测试线束的控制算法。

    1. 打开Unit_Under_Test块和查看控制算法。

    2. 控件来查看模型引用参数Unit_Under_Test块和选择块参数(ModelReference)

      rtwdemo_throttlecntrl显示为引用模型的名称。

    3. 更改的值模型名称throttlecntrl

    4. 通过单击更新测试装置模型图模拟>更新图

    控制算法是测试单元的名称所指示的模型块,Unit_Under_Test

    模型Block提供了重用组件的方法。从顶层模型,它允许您引用其他模型(直接或间接地)为编译功能.默认情况下,当引用的模型金宝app发生变化时,Simulink软件将重新编译模型。编译函数相对于库有以下优势:

    • 对于大型模型,模拟时间更快。

    • 可以直接模拟编译后的函数。

    • 模拟需要更少的内存。即使模型被多次引用,内存中也只有一个已编译模型的副本。

  3. 打开测试矢量源,在此测试工具中实现为Test_Vectors子系统。

    子系统使用信号生成器块为测试向量源。该块具有驱动模拟的数据(PosRequest),并提供供验证子系统。这个示例测试工具只使用一组测试数据。通常,创建一个完全测试系统的测试套件。

  4. 打开评价与测井子系统,在这个测试工具中实现为子系统验证

    一个测试束比较控制算法仿真结果与金色的数据-由专家认证的控制算法显示所需行为的测试结果。在验证子系统,一个断言Block比较模拟油门值位置从植物与黄金值从测试挽具。如果两个信号之间的差异大于5%,则测试失败,断言块将停止模拟。

    或者,您可以在模拟完成执行之后评估模拟数据。用任意MATLAB进行计算®脚本或第三方工具。执行后评估为数据分析提供了更大的灵活性。但是,它需要等待执行完成。结合这两种方法可以提供一个高度灵活和高效的测试环境。

  5. 打开工厂或反馈系统,在此测试工具中实现为植物子系统。

    植物子系统采用规范形式的传递函数对节气门动力学进行建模。您可以创建不同保真度的植物模型。在不同的测试阶段使用不同的植物模型是很常见的。

  6. 打开输入和输出缩放子系统,在这个测试中实现为Input_Signal_Scaling而且Output_Signal_Scaling

    扩展输入和输出的子系统执行以下主要功能:

    • 选择要路由到被测单元的输入信号。

    • 选择输出信号路由到工厂。

    • 重新调整工程单元和被测单元可写单元之间的信号。

    • 处理设备和被测单元之间的速率转换。

  7. 保存并关闭throttlecntrl_testharness

运行模拟测试

  1. 检查您的工作文件夹是否设置为可写文件夹,例如您放置示例模型文件副本的文件夹。

  2. 打开测试工具模型的副本,throttlecntrl_testharness

  3. 启动测试线束模型模拟。模拟完成后,会出现以下结果。

    右下角的图显示了预期的(黄金)油门位置和植物计算的油门位置之间的差异。如果两个值的差值大于±0.05,则停止模拟。

  4. 保存并关闭油门控制器和测试挽具模型。

要点

  • 基本模型体系结构将计算与信号路由分离,并将模型划分为子系统

  • 模型重用的两个选项包括块库和模型引用。

  • 如果在测试集中将控制算法表示为模型块中,在“模型参考参数”对话框中指定控制算法模型的名称。

  • 测试集是评估控制算法的模型。典型地,一个线束由一个被测单元、一个测试矢量源、评估和日志记录、一个设备或反馈系统,以及输入和输出缩放组件组成。

  • 被测单元是被测控制算法。

  • 测试矢量源提供了驱动模拟的数据,模拟生成用于验证的结果。

  • 在验证过程中,测试集将控制算法仿真结果与黄金数据进行比较,并记录结果。

  • 测试线束的设备或反馈组件对被控制的环境进行建模。

  • 在开发测试背带时,

    • 缩放输入和输出组件。

    • 选择要路由到被测单元的输入信号。

    • 选择输出信号路由到工厂。

    • 重新调整工程单元和被测单元可写单元之间的信号。

    • 处理设备和被测单元之间的速率转换。

  • 在运行模拟或完成验证之前,请考虑使用model Advisor检查模型。

了解更多