文档

测试生成的代码

通过使用系统级s -函数或在外部环境中运行代码来验证生成的代码。

了解:

  • 测试生成代码的不同方法

  • 如何在Simulink®中测试生成的代码金宝app

  • 如何在Simulink之外测试生成的代码金宝app

有关本系列中的示例模型和其他示例的信息,请参见从一个嵌入式系统的控制算法生成C代码

验证方法

金宝appSimul金宝appink®支持多种系统测试方法,以验证生成代码的行为。

Windows®运行时执行:生成Microsoft®Windows®可执行文件,并从命令提示符运行该可执行文件。

  • 优点:易于创建,并允许使用C调试器来评估代码

  • 缺点:部分仿真目标硬件

Software-in-the-loop (SIL)测试:使用s函数将生成的代码包含在Simulink模型中。金宝app

  • 优点:易于创建,支持Simulink测试环境的重用,并支持使用C调试器来评估代码金宝app

  • 缺点:部分仿真目标硬件

处理器在循环(PIL)测试:运行一个非实时的协同模拟。金宝appSimulink执行模型的一部分(通常是一个工厂模型),而目标处理器运行模型的另一部分(通常是一个控制器)。在您将代码下载到目标处理器之后,在循环中的处理器技术将在联合仿真期间处理Simulink和目标之间的信号通信。金宝app

  • 优点:允许重用Simulink测试环境,允许在模拟中使用C调金宝app试器,并且涉及目标处理器

  • 缺点:需要额外的步骤来设置测试环境,处理器不能实时运行

目标快速原型:在目标处理器上作为整个系统的一部分运行生成的代码。

  • 好处:您可以确定实际的硬件约束,并在整个系统中测试组件。处理器实时运行

  • 缺点:需要硬件并需要额外的步骤来设置测试环境

外部模式:在目标处理器上作为整个系统的一部分运行生成的代码。

  • 好处:您可以确定实际的硬件约束,并在整个系统中测试组件

  • 缺点:需要硬件并需要额外的步骤来设置测试环境

在Simulink®外部重用测试数据金宝app

在本系列的其他示例中,您将通过Simulink中的模拟测试系统。金宝app测试输入数据来自测试工具模型中的Signal Builder块。

要在Simulink®之外测试系统,可以重用测试输入数据。金宝app

  1. 将Simulink金宝app测试数据保存到一个文件中。

  2. 以系统代码可以访问的方式格式化数据。

  3. 读取数据文件作为系统代码过程的一部分。

要使用Simu金宝applink进行验证,可以将外部环境的测试输出数据以MATLAB®可读取的格式保存。

在本例中,文件hardwareInputs.c包含来自测试装置模型中的Signal Builder块的数据。

通过软件在环测试(模型块SIL)

为SIL创建和配置模型块

金宝appSimulink可以从Model块生成代码,将代码包装到S-Function中,并将S-Function添加回模型中进行软件在环测试。

打开示例模型,rtwdemo_PCG_Eval_P6

打开测试工具模型。

测试工具使用Model块来访问示例模型。在这个示例中,您在示例模型上运行了一个在循环中的软件测试。

  1. 右键单击Model块并选择块参数(ModelReference)

  2. 模型名称更改为要测试的模型的名称。

  3. 模拟模式Software-in-the-loop(银)

模型块现在显示一个(银)标签。

配置SIL的模型

配置示例模型,rtwdemo_PCG_Eval_P6,以及测试工具模型,rtwdemo_PCGEvalHarnessHTGTSIL,通过调整硬件实现参数进行SIL仿真。

打开示例模型。

对于这两个模型,在配置参数对话框中,选择金宝app支持很久复选框。

保存示例模型的副本,rtwdemo_PCG_Eval_P6,在当前文件夹中。

运行模型块SIL

在本例中,测试工具模型包含一个为SIL模拟配置的model块。

打开测试工具。

运行测试工具。

生成的代码和模拟结果是相同的。

通过测试矢量导入和导出配置测试系统

此示例扩展了中的集成示例在Simulink环境之外构建集成代码金宝app.在这种情况下,example_main.c使用模拟的硬件I/O。

增广example_main.c文件现在使用这个执行顺序:

1.初始化数据(一次)

而< endTime

2.读取模拟的硬件输入

3.PI_cnrl_1

4.PI_ctrl_2

5.Pos_Command_Arbitration

6.编写模拟硬件输出

结束时

视图example_main.c

两个函数,植物hardwareInputs,提供输入的测试数据。

Plant.c:这个函数是由测试线束的植物部分生成的,模拟节气门身体对节气门命令的响应。

无效的植物(空白)

HardwareInputs.c:该函数提供pos_req信号和噪声Input_Signal_Scaling子系统进入工厂反馈信号。

空白hardwareInputs(空白)

中的手写功能WriteDataForEval.c记录测试的输出数据。测试完成后,函数执行并将数据写入文件PCG_Eval_ExternSimData.m.您可以在MATLAB中运行此脚本文件来访问数据。然后,您可以将数据与Simulink®的模拟数据进行比较。金宝app

要启用这些附加文件,请使用配置参数>代码生成>自定义代码>额外的构建信息

通过测试矢量导入和导出(Eclipse™环境)进行测试

在Eclipse™环境中构建可执行文件之前,在不使用S-function接口的情况下重新生成代码。

为集成构建C代码。

要了解如何安装和使用Eclipse™和GCC,请参阅安装和使用Cygwin和Eclipse

要自动安装此示例的文件,请单击超链接。

自动设置构建文件夹。

或者,手动安装文件:

  1. 创建构建文件夹(Eclipse_Build_P6).

  2. 解压该文件rtwdemo_PCG_Eval_P6.zip到构建文件夹中。

  3. 删除的文件rtwdemo_PCG_Eval_P6.cert_main.c,rt_logging.c,取而代之的是example_main.c。

在Eclipse™中运行控制代码。中的函数writeDataForEval.c创建文件eclipseData.m,其中包含输出测试数据。在MATLAB®中,通过运行脚本文件加载Eclipse™数据。然后,将该数据与来自Simulink®测试线束模型的数据进行比较金宝app情节

有关本系列的下一个示例,请参见评估生成代码的性能

相关的话题