文档

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

关于本例

学习目标

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

  • 了解示例测试工具及其组件的作用。

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

先决条件

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

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

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

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

所需的文件

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

  • rtwdemo_throttlecntrl模型文件

  • rtwdemo_throttlecntrl_testharness模型文件

模型的功能设计

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

查看Top Model

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

    模型块提供了一种重用组件的方法。从顶部模型,它允许您引用其他模型(直接或间接)作为编译功能.默认情况下,当引用的模型金宝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检查模型。

了解更多

这个话题有帮助吗?