主要内容

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

关于这个例子

学习目标

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

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

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

先决条件

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

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

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

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

所需的文件

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

  • rtwdemo_throttlecntrl模型文件

  • rtwdemo_throttlecntrl_testharness模型文件

模型的功能设计

这个例子使用了一个简单的,但功能完整的,节气门控制器的例子模型。该模型具有冗余控制算法。该模型强调了一个标准的模型结构和一套算法设计的基本模块。

查看Top模型

开放rtwdemo_throttlecntrl并保存一个副本为throttlecntrl在MATLAB路径上的可写位置。

请注意

该模型使用statflow®软件

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

子系统 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)控制器,PI_ctrl_1PI_ctrl_2.在这个阶段,这些相同的子系统使用相同的数据。

  2. 打开PI_ctrl_1子系统。

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

  3. 打开Pos_Command_Arbitration子系统。这个状态流程图对两个命令信号执行基本的错误检查。如果命令信号间隔太远,则状态流图将输出设置为fail_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

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

    • 大型模型的仿真时间更快。

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

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

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

    子系统使用信号生成器块,用于测试向量源。该块具有驱动模拟的数据(PosRequest)并提供所使用的预期结果验证子系统。这个示例测试工具只使用一组测试数据。通常情况下,创建一个测试套件来充分地运行系统。

  4. 打开评估和记录子系统,在此测试装置中作为子系统实现验证

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

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

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

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

  6. 打开输入输出缩放子系统,在这个测试中实现为Input_Signal_ScalingOutput_Signal_Scaling

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

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

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

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

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

  7. 保存并关闭throttlecntrl_testharness

运行仿真测试

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

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

  3. 启动一个测试装置模型模拟。模拟完成后,会出现以下结果。

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

  4. 保存和关闭油门控制器和测试线束模型。

要点

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

  • 模型重用的两种选择包括块库和模型引用。

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

  • 测试工具是评估控制算法的模型。通常,一个工具包括一个被测试的单元、一个测试矢量源、评估和记录、一个设备或反馈系统,以及输入和输出缩放组件。

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

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

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

  • 测试装置的设备或反馈组件模拟被控制的环境。

  • 在开发测试工具时,

    • 缩放输入和输出组件。

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

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

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

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

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

了解更多