主要内容

配置并运行SIL仿真

有三种运行SIL和PIL模拟的方法。你可以使用:

  • 顶级模特。

  • 块模型。

  • 您从子系统创建的SIL和PIL块。

顶模仿真

要配置和运行顶级模型SIL或PIL模拟:

  1. 在Simulink中®编辑器,打开您的模型。

  2. 应用程序选项卡上,单击银/公益诉讼经理

  3. 模式部分中,选择SIL/PIL模拟

  4. 准备节中,设置测试中的系统顶级模特

  5. 银/公益诉讼模式字段,选择其中之一Software-in-the-Loop(银)Processor-in-the-Loop(公益诉讼)。该选项仅支持ERT、GRT或AUTOSAR系统目标文件。看到模型配置参数:代码生成而且配置AUTOSAR代码生成(AUTOSAR Blockset)用于配置信息。

  6. 要监视组件信号和状态数据,并比较来自模型和SIL或PIL模拟的值:

    1. 对于您想要记录的每个信号:

      1. 在Simulink编辑器中,选择信号。

      2. 银/公益诉讼选项卡上,单击监控信号。从图库中选择这些选项:

        • 日志选择信号

        • 选择信号测试点

        • 信号记录

    2. 要记录状态数据,请从监控信号画廊,选择状态日志

    3. 如果语言配置参数为c++,在代码的映射编辑器,设置数据的可见性为信号、状态和内部数据模型元素分类公共

  7. 如果正在配置SIL模拟,请指定可移植单词大小选项。然后,您可以在SIL和PIL模式之间无缝切换。在“配置参数”对话框中,选择启用可移植的单词大小复选框。

  8. 如需配置:

  9. 运行部分,在停止时间字段,指定模拟时间。

  10. 点击运行银/公益诉讼

  11. 在模拟的最后,在结果部分中,点击数据检查查看仿真结果。

请注意

Windows操作系统®操作系统,Windows防火墙可能会阻止SIL或PIL模拟。要允许模拟,请使用Windows安全警报对话框。例如,在Windows 7,点击允许访问

你不能:

  • 在运行仿真时关闭模型。中断模拟,在命令窗口,按Ctrl + C

  • 在模拟过程中改变模型。只要不改变模型的行为,您就可以移动块和行。

您可以使用该命令运行顶级模型SIL或PIL模拟sim卡(模型)。软件支持sim卡命令选项SrcWorkspace对于值“基地”

对于PIL模拟,您可以通过连接配置控制代码在目标环境中编译和执行的方式。

使用模型块进行仿真

配置模型block for一个SIL或PIL模拟:

  1. 例如,打开你的模型,SILModelBlock

    openExample (“是/ SILPILVerificationExample”...supportingFile =“SILModelBlock.slx”)

  2. 右击你的模型比如Block,对抗。在上下文菜单中,选择块参数(ModelReference),打开“功能块参数”对话框。

  3. 模拟模式下拉列表,选择需要的模式,例如:Software-in-the-loop(银)

  4. 代码接口下拉列表,指定要测试的代码,例如模型参考

  5. 点击好吧。软件将模拟模式显示为块标签。

    如果您选择顶级模特时,软件显示块标签(SIL:顶部)

  6. 如果正在配置SIL模拟,请指定可移植单词大小选项。然后,您可以在SIL和PIL模式之间无缝切换。在“配置参数”对话框中,选择启用可移植的单词大小复选框。

  7. 应用程序选项卡上,单击银/公益诉讼经理

  8. 模式部分中,选择SIL/PIL模拟

  9. 准备节中,设置测试中的系统模型块在SIL/PIL模式

  10. 超模模式字段,选择其中之一正常的加速器

  11. 如需配置:

  12. 运行部分:

    • 停止时间字段,指定模拟时间。

    • 如果希望避免在初始构建之后重新构建代码,请单击快速启动。看到防止在多个模拟中更改代码

    • 点击运行银/公益诉讼

  13. 在模拟的最后,在结果节,单击“数据检查器”可查看仿真结果。

请注意

在Windows操作系统上,Windows防火墙可能会阻止SIL或PIL模拟。要允许模拟,请使用Windows安全警报对话框。例如,在Windows 7,点击允许访问

对于PIL模拟,您可以通过连接配置控制代码在目标环境中编译和执行的方式。

子系统块仿真

您可以使用以下工作流之一:

  • 仿真软件测试™利用SIL/PIL管理器—如果您有一个包含子系统的模型,您可以使用仿真软件测试和SIL/PIL Manager对子系统生成的代码执行单元测试。该工作流将生成的子系统代码作为从父模型生成的代码的一部分进行测试。工作流的详细信息,请参见单元测试子系统代码与SIL/PIL经理

    如果此工作流不支持子系统,则使用SIL或PIL块工作流作为替代。

  • SIL或PIL块——从子系统创建SIL或PIL块,然后在提供测试向量或刺激输入的环境或测试线束模型中运行该块。这个工作流从子系统生成并测试新的独立代码。有关更多信息,请参见SIL或PIL块模拟

对于PIL模拟,您可以通过连接配置控制代码在目标环境中编译和执行的方式。

SIL或PIL块模拟

要从子系统创建SIL或PIL块,并使用该块测试从子系统生成的代码:

  1. 配置参数>代码生成>验证>先进的参数>创建块下拉列表,任选其一公益诉讼

  2. 如果需要,配置代码执行概要。

  3. 点击好吧

  4. 在模型窗口中,右键单击要模拟的子系统。

  5. 选择C / c++代码>构建这个子系统,它启动子系统构建过程,为生成的子系统代码创建SIL或PIL块。

  6. 将生成的块添加到提供测试向量或刺激输入的环境或测试线束模型中。

  7. 使用环境或测试线束模型运行模拟。

请注意

在Windows操作系统上,Windows防火墙可能会阻止SIL或PIL模拟。要允许模拟,请使用Windows安全警报对话框。例如,在Windows 7,点击允许访问

如果您执行以下操作之一,则不能创建SIL或PIL块:

  • 禁用CreateSILPILBlock财产。

  • 选择一个代码覆盖工具。

创建块似乎暗了下来。

配置硬件实现设置

对于SIL模拟,必须配置硬件实现设置,以便为开发计算机启用生成的代码编译。这些设置可能与您在为生产硬件构建模型时使用的硬件实现设置不同。使用其中一种方法。

方法 细节
便携式字大小

在SIL和PIL模式之间切换,不重新生成代码。对于开发计算机上的SIL模拟和目标平台上的生产部署,使用相同的生成源代码文件。

要配置一个模型以使用可移植的单词大小,请设置:

  • ProdEqTarget“上”

  • PortableWordSizes“上”

为指定了可移植单词大小的模型生成代码时,代码生成器将在rtwtypes.h

#endif /* PORTABLE_WORDSIZES */定义PORTABLE_WORDSIZES */

用于为目标生成代码的模板生成文件不能包含PORTABLE_WORDSIZES定义。

对于构建代码的模板生成文件和工具链方法,软件指定-DPORTABLE_WORDSIZES仅适用于基于主机的构建的编译器。

有关构建代码的模板makefile和工具链方法的信息,请参见配置工具链(ToolchainInfo)或模板制作文件生成过程

考虑目标使用开发计算机无法编译的代码的情况。当您从PIL模式切换到SIL模式并尝试模拟模型时,您会看到编译错误。方法中添加源代码文件,可以尝试解决此问题SkipForSil环球套票。BuildInfo。在主机平台上构建的SIL不编译源文件SkipForSil组。有关如何将源代码文件添加到构建信息对象中的组的信息,请参阅:

在下列条件之一下,在SIL模拟中执行的生成代码和在生产硬件上执行的生成代码之间的数值结果可能不同:

  • 您的模型包含在TLC中实现的块,因此表达式中的C积分提升在MATLAB中表现不同®主机和生产硬件目标。正常和PIL模拟结果匹配,但SIL模拟结果可能不同。

  • 您的生产硬件实现舍入到地板上对于有符号整数除法,模型中的除法使用舍入模式天花板地板上简单的,或。正常和PIL模拟结果匹配,但SIL模拟结果可能不同。

  • 生产硬件的字节顺序为大端字节序。正常和PIL模拟结果匹配,但SIL模拟结果可能不同。例如,当生成的代码取决于字节顺序时而且生成的产品代码的实现目的是使其行为与正常的模拟行为相匹配。

  • 在状态流中使用自定义代码®产品。在这种情况下,类型转换语句不会插入到自定义代码中,而这是主机上可能需要的目标溢出行为。正常和PIL模拟结果匹配,但SIL模拟结果可能不同。

测试硬件

仅当您希望解决可移植单词大小的限制时,才使用此方法。

设置:

  • PortableWordSizes“关闭”

  • ProdEqTarget“关闭”

  • TargetHWDeviceType自定义处理器->MATLAB主机处理器

生产硬件

只有在生产硬件设置与开发计算机体系结构匹配时才使用此方法。

设置:

  • PortableWordSizes“关闭”

  • ProdEqTarget“上”

  • ProdHWDeviceType以匹配您的开发计算机体系结构。

有关测试和生产目标的信息,请参见配置运行时环境选项

部件的日志信号

SIL和PIL组件输出可与其他模拟模式输出进行观察和比较。如果您想检查内部信号,可以启用顶级模型或内部信号记录模型阻拦SIL或PIL。使用信号日志,您可以:

  • 在SIL/PIL模拟期间收集信号测井输出,例如:logsout

  • 记录SIL/PIL组件的内部信号和根级输出。

  • 使用Simulink信号记录选择器管理SIL/PIL信号记录设置。

  • 使用模拟数据检查器来:

    • 在正常、SIL和PIL模拟期间观察流信号。

    • 比较来自正常、SIL和PIL模拟的记录信号。

在SIL或PIL模拟期间,要使信号记录到MATLAB工作空间并将信号流传输到仿真数据检查器:

  1. 对于要监控的每个信号:

    1. 在Simulink编辑器中,选择信号。

    2. 银/公益诉讼选项卡上,单击监控信号。从图库中选择这些选项:

      • 日志选择信号

      • 选择信号测试点

      • 信号记录

  2. 如果语言配置参数为c++,在代码的映射编辑器,设置数据的可见性为信号、状态和内部数据模型元素分类公共

您可以使用其他方法来检查SIL或PIL组件的内部信号:

  • 手动将信号路由到顶层。

  • 使用全局数据存储访问内部信号:

    1. 在组件内部,连接一个数据存储写块到所需的信号。

    2. 在组件之外,使用数据存储读取块来访问信号值。

  • 使用mat文件日志。注意:

    • mat文件日志不支持信号日志。如果启用了信号记录功能,logsout生成但不存储在mat文件中。

    • 对于PIL,目标环境必须支持mat文件日志记录。

有关更多信息,请参见:

防止在多个模拟中更改代码

使用模型block SIL/PIL或SIL/PIL块与快速重启当你想运行多个SIL或PIL模拟:

  • 改变测试向量(参数集和输入数据)。

  • 未更改生成的代码,也就是说,在初始构建之后没有任何模拟重新生成或重新构建代码。例如,您希望避免初始值更改可能触发的增量代码生成。

模型block SIL/PIL,你也可以使用这些方法之一:

  • 在测试装备模型中,在“配置参数”对话框中,设置重建从来没有。如果模型代码接口参数是模型参考时,软件不重新构建引用的模型代码。(如果代码接口参数是顶级模特时,软件会忽略重建设置)。

  • 创建一个受保护的模型并生成源代码或二进制代码。然后,将受保护的模型插入到您的测试束模型中。使用此方法,您可以验证顶级模型代码(使用独立代码接口)或模型参考代码。

可供选择的跑步方式模型块SIL/PIL,下表总结了初始构建后的代码生成行为。

SIL和PIL进路 初始构建后的代码生成行为
模型 重建测试线束模型的配置参数设置为从来没有
  1. 初始构建中的组件(算法)代码不会重新生成。

  2. 组件代码makefile未被调用。

  3. 初始构建的SIL/PIL应用程序文件不会重新生成。

  4. SIL/PIL应用程序makefile被调用。

模型块(受保护模型) 来自受保护模型的源代码。 除了特性2之外,您观察到相同的行为。在这种情况下,运行组件代码makefile。组件代码被重新编译并链接以生成新的目标代码。
来自受保护模型的二进制代码。 观察特征1-4。

有关更多信息,请参见:

加快测试

如果您的模型有SIL/PIL块或模型block在SIL/PIL模式,你可以加快SIL/PIL测试:

  • 运行顶层模型模拟加速器模式。该模式加速了不在SIL或PIL模式下的模型组件的仿真。

  • 打开快速启动。在第一次模拟之后,您可以调优参数并重新运行模拟,而无需重新编译模型。SIL/PIL Manager提供了一个快速启动按钮。

请注意

SIL和PIL仿真模式并不是为了减少模型仿真时间而设计的。如果您想加快模型的模拟速度,请使用快速加速模式。有关更多信息,请参见什么是加速度?

函数调用模拟

使用仿真软件的功能块和仿真软件的功能当你想:

  • 生成对外部代码(例如驱动程序或遗留代码)进行函数调用的代码。

  • 提供一个行为类似于正常、SIL或PIL模拟中的外部代码的子系统。

例子是配置对AUTOSAR NVRAM管理服务的调用(AUTOSAR Blockset)说明如何从AUTOSAR软件组件配置客户端对基本软件(BSW) NVRAM管理器(NvM)服务接口的调用。在仿真中,Simulink实现了BSW NvM调用仿真软件的功能和预配置函数调用者块。对于最终的系统,您将函数调用存根与运行在AUTOSAR运行时环境(RTE)中的外部BSW函数代码链接起来。

有关更多信息,请参见Simulink函数块和代码生成

相关的话题

Baidu
map