Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

验证生成的可执行程序结果

验证为模型生成的可执行程序结果是否与仿真结果匹配。

配置模型以进行验证

  1. 配置 Dashboard Scope 模块,以监视信号 Force: f(t): 1X 的值。双击 Dashboard Scope 模块。在 Block Parameters 对话框中,确认:

    • 该模块连接到信号 Force: f(t): 1X。要将 Dashboard 模块连接到信号,请在模型画布中选择该信号。在 Block Parameters 对话框中,选择信号名称。

    • Min 设置为 -10

    • Max 设置为 10

    应用更改并关闭对话框。

  2. 配置 Knob 模块,以便您可以使用旋钮来更改阻尼增益的值。双击 Knob 模块。在 Block Parameters 对话框中,确认:

    • 该模块连接到参数 Damping:Gain。要将 Dashboard 模块连接到参数,请在模型画布中选择使用该参数的模块。在 Block Parameters 对话框中,选择参数名称。

    • Minimum 设置为 200

    • Maximum 设置为 600

    • Tick Interval 设置为 100

    应用更改并关闭对话框。

  3. 打开 Model Configuration Parameters 对话框。在 C Code 选项卡上,点击 Settings

  4. 配置模型,使 Simulink® 和生成的可执行程序将工作区数据记录在仿真数据检查器中。点击 Data Import/Export。确认模型配置有以下设置:

    选择的参数名称设置为
    Timetout
    Statesxout
    Outputyout
    Signal logginglogsout
    Data storesdsmout
    Record logged workspace data in Simulation Data Inspector 
  5. 为编译可执行程序配置模型。点击 Code Generation。确认参数 Generate code only 未选中。

  6. 配置和验证用于编译可执行程序的工具链。确认参数 Toolchain 设置为 “Automatically locate an installed toolchain”。然后,搜索并点击 Validate Toolchain 按钮。Validation Report 指明是否通过检查。

  7. 配置参数和信号,以便数据存储在内存中,并在可执行程序运行时可访问。要在 C 代码中高效地实现模型,您不会为模型中的每个参数、信号和状态都分配内存。如果模型算法不需要数据来计算输出,经过代码生成优化后,将不再需要为数据分配存储空间。要为数据分配存储空间以便在原型构建过程中访问数据,您需要禁用一些优化。

    点击 Code Generation > Optimization。确认:

    • 默认参数行为 设置为 “Tunable”。在此设置下,模块参数(例如 Gain 模块的 Gain 参数)在生成的代码中将是可调的。

    • Signal storage reuse 处于清除状态。在此设置下,代码生成器为各个信号线分配存储空间。运行可执行程序时,您可以监视信号的值。

  8. 配置代码生成器以支持非有限数据(例如,NaNInf)和相关运算。点击 Code Generation > Interface。确认参数 Support: non-finite numbers 已选中。

  9. 配置通信信道。为了让 Simulink® 与模型生成的可执行程序通信,模型必须包括对通信信道的支持。此示例使用基于 TCP/IP 的 XCP 作为通信信道的传输层。确认这些参数设置:

  10. 禁用 MAT 文件日志记录。将数据从 MATLAB® 基础工作区加载到仿真数据检查器。确认参数 MAT 文件日志记录 未选中。

  11. 应用您的配置更改,关闭 Model Configuration Parameters 对话框,并保存模型。

对模型进行仿真并查看结果

  1. 在 Simulink Editor 的 Simulation 选项卡中,点击 RunRun 按钮上的时钟指示仿真调速已启用。仿真调速可减慢仿真速度,以便您观察系统行为。以较慢的速度可视化仿真,可在展示近乎实时的行为同时,帮助您更轻松地理解底层系统设计和识别设计问题。

    在仿真过程中,Dashboard Scope 模块显示信号 Force: f(t):1X 的行为。

  2. 在 Simulink Editor 的 Simulation 选项卡上,点击 Data Inspector。仿真数据检查器将打开,其中已导入仿真运行的数据。

  3. 展开此次运行(如果尚未展开)。然后,要绘制数据,请选择数据信号 XForce: f(t):1

将这些结果保留在仿真数据检查器中。稍后,您将仿真数据与从模型生成的可执行程序生成的输出数据进行比较。

编译和运行可执行程序并查看结果

编译并运行模型可执行程序。

  1. 在 Simulink Editor 的 Hardware 选项卡中,点击 Monitor & Tune。Simulink 将:

    1. 编译可执行程序。在编译过程中,“Building” 出现在 Simulink Editor 窗口的左下角。当出现代码生成报告且显示文字 “Ready” 时,编译过程即完成。

      • 在 Windows® 中,代码生成器会创建下列文件,并将其放在您的当前工作文件夹中:

        • rtwdemo_secondOrderSystem.exe - 可执行程序文件

        • rtwdemo_secondOrderSystem.pdb - 参数和信号的调试符号文件

      • 在 Linux® 中,代码生成器创建 DWARF 格式调试信息并将其放置在 ELF 可执行程序文件 rtwdemo_secondOrderSystem 中,并将该文件放置在您的当前工作文件夹中。

    2. 将可执行程序作为单独的进程部署在开发计算机上。

    3. 将 Simulink 模型连接到可执行程序。

    4. 运行模型可执行程序代码。

比较仿真和可执行程序结果

使用仿真数据检查器将可执行程序结果与仿真结果进行比较。

  1. 在仿真数据检查器中,检查可执行程序运行的结果,Run 2: rtwdemo_secondOrderSystem

  2. 点击 Compare

  3. 选择要比较的数据运行。对于此示例,从 Baseline 列表中,选择 “Run 1: rtwdemo_secondOrderSystem”。从 Compare to 列表中,选择 “Run 2: rtwdemo_secondOrderSystem”。

  4. 在仿真数据检查器的右上角,点击 Compare

  5. 仿真数据检查器指示,来自可执行程序代码的 XForce: f(t):1 的输出相比仿真数据的输出已经超出容差。要查看 X 的结果图,请在 File Comparisons 下,选择 X 的行。

  6. 检查 Force: f(t):1 的比较图。在 File Comparisons 下,选择 Force: f(t):1 的行。

  7. 通过指定绝对相对容差值来确定数值差异是否显著。在本教程中,请将 Global Abs Tolerance 设置为 1e-12。然后,点击 CompareXForce: f(t):1 的比较结果处在容差范围内。

    有关数值一致性验证和容差的详细信息,请参阅Numerical Consistency of Model and Generated Code Simulation Results

接下来,在程序执行期间调整参数。