Simulink缓存文件有什么用?

在使用Simulink进行仿真的过程中,经常会发现目录下存在一些后缀为.slxc的文件,这些其实就是Simulink模型的缓存文件(.slx + cache)。

Simulink缓存文件的主要作用是提高仿真和代码生成的效率。

借助缓存文件,可以避免每次仿真或代码生成时都重新编译模型,从而显著减少时间和计算资源的消耗。

Simulink 缓存文件可用于创建该文件所用的MATLAB版本和更高版本。

以下是一些具体用途和优点:

  1. 加速初始仿真和代码生成
    第一次仿真模型或生成代码时,Simulink会生成缓存文件(.slxc文件)。这些文件包含仿真和代码生成所需的构建工件。以后如果模型没有结构性变化,Simulink可以直接使用这些缓存文件,从而加速仿真和代码生成过程。
  2. 团队协作和连续集成
    在团队开发环境中,使用缓存文件可以简化并同步团队成员之间的模型更新和构建过程。缓存文件可以在团队成员之间共享,从而避免每个成员都进行重复的编译和构建操作。这在模型层次结构复杂且引用模型较多的情况下尤为有用。
  3. 增量代码生成
    当模型发生部分更改时,Simulink只会重新生成受影响的部分代码,而不是重新生成整个模型的代码。这样可以显著减少代码生成时间,并提高开发效率。
  4. 加速模式仿真
    在使用加速模式(如加速器模式和快速加速器模式)进行仿真时,缓存文件存储了仿真目标,避免每次仿真时重新生成执行引擎。这对于大型模型尤为重要,可以节省大量时间。
  5. 减少重复构建的开销
    如果使用持续集成系统(如Jenkins),这些系统可以定期构建模型并更新缓存文件,团队成员只需获取最新的缓存文件即可开始工作,避免了不必要的重新构建。

通过利用这些缓存文件,您可以大幅提高Simulink模型的仿真和代码生成效率,特别是在团队开发和复杂模型管理中。

缓存文件的内容

Simulink 缓存文件包含以下几类内容:

  • 加速目标(Accelerator Target)

    这些是用于加速模式下仿真的预编译代码和模型目标。它们允许在不重新编译整个模型的情况下快速进行仿真。

  • 快速加速目标(Rapid Accelerator Target)

    类似于加速器目标,但用于快速加速器模式,它生成独立的可执行文件来运行仿真

  • 模型引用的仿真目标

    包含引用模型的仿真目标,便于在模型层次结构中复用和加速仿真

  • 变量使用信息

    记录模型中变量的使用情况,帮助优化仿真和代码生成.

  • 代码生成目标

    包括用于Simulink Coder和Embedded Coder生成的代码目标文件。这些文件用于生成嵌入式系统的代码

  • 模型表示 (Simulink Design Verifier)

    由Simulink Design Verifier生成的模型表示,用于模型验证和分析

  • Web 视图

    由Simulink Report Generator 生成的模型Web视图,便于在网络上查看和共享模型

Simulink缓存对加速模式的影响

在之前的文章中讨论过Simulink的三种加速模式,无论哪一种加速模式,其原理都是基于对模型的部分内容进行提前编译。

而其编译的部分数据和文件就通过Simulink缓存来保存。

这里依旧使用发动机的燃料控制系统模型进行演示,在MATLAB命令行中输入下述代码即可打开该模型。

openExample('simulink_automotive/ModelingAFaultTolerantFuelControlSystemExample')

加速模式

通过下面的命令以加速模式运行模型

mdl = 'sldemo_fuelsys';
in = Simulink.SimulationInput(mdl);
in = setModelParameter(in,'SimulationMode','Accelerator');
% AccelVerboseBuild参数指定在为加速器模式仿真、快速加速器仿真和在加速器模式下仿真的参考模型构建仿真目标期间显示的信息量。
in = setModelParameter(in,'AccelVerboseBuild','on');
out = sim(in);

运行上述命令后会出现三种情况

  1. 无缓存时

当模型没有可用的缓存,或者自上次生成缓存文件以来对模型的结构进行了更改,Simulink 将执行校验和分析并生成加速器目标。

工件(artifact)将存储在缓存文件中,以便在后续模拟中重复使用。

“工件”(artifact)指的是在模型仿真或代码生成过程中创建的文件和数据

无缓存

  1. 有缓存时

如果有缓存可用,并且自缓存构建以来模型在结构上没有发生变化,Simulink 将提取信息,使执行引擎的生成速度更快。详细日志将会显示以下内容

有可用缓存

  1. 无任何信息

模型仿真一次后,加速器模式执行引擎将保留在内存中。如果未对模型结构进行更改,则详细日志中不会显示任何内容。

快速加速模式

通过下面的命令以快速加速模式运行模型。

mdl = 'sldemo_fuelsys';
in = Simulink.SimulationInput(mdl);
in = setModelParameter(in,'SimulationMode','Rapid');
out = sim(in);
  1. 无缓存时

    此时会对模型进行编译,用时取决于模型的复杂程度。

无缓存

  1. 模型结构修改导致缓存过期

    此时会提示生成的代码已过期,需要对模型进行重新编译。

缓存过期

  1. 有可用缓存

    此时仅执行模型与缓存的检查与验证,无需重新编译。

一些缓存文件的操作

可以使用slxcinfo函数来查询缓存文件的具体内容,该函数会返回一个包含缓存文件详细信息的MATLAB表格,通过这些信息,可以避免不必要的重建,从而加快仿真和代码生成过程。

这里依旧以上文的燃料控制系统模型为例,分别使用普通模式、加速模式、快速加速模式仿真模型后,通过slxcinfo函数可以查询模型缓存信息

slxcinfo("sldemo_fuelsys.slxc")

可以看到返回值是通过Matlab表记录了相应的 Simulink 模型名称、MATLAB 版本、平台和目标类型。

缓存信息

使用slxcunpack函数可以从 Simulink 缓存文件中解包仿真和代码生成目标

slxcunpack("sldemo_fuelsys.slxc")

缓存解包

同样以MATLAB表格形式提供的返回值可用于 Simulink 检查的 CI/CD 自动化工作流程,设置为基于模型的设计量身定制的pipeline、减少构建时间、减少构建失败、调试构建失败以及将基于模型的设计工作流程部署到团队和 CI 系统。

例如作为padv.util.unpackExternalCodeCache(cacheFiles)的输入值。

缓存文件路径设置

一般情况下,缓存文件存储在仿真缓存文件夹中,也就是对应模型的根目录下。

如需修改,可参考下图的步骤。

修改缓存路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 实现socket服务器客户端通信

在socket服务端,当接收到来自客户端的消息后,通常的处理流程如下: 连接建立:服务端首先监听一个预设的网络地址(如IP和端口),等待客户端连接。接受连接:当客户端发起连接请求时&…

中文AI三大顶会:机器之心、量子位与新智元的比较与探讨

在人工智能领域,中文科技媒体扮演着举足轻重的角色,其中机器之心、量子位和新智元被誉为三大顶会,它们以各自独特的定位和特色,在AI领域中散发着不同的光芒。本文将对这三大媒体进行比较与探讨,以期为读者提供更全面的…

用Python读取Word文件并提取标题

前言 在日常工作中,我们经常需要处理Word文档,特别是从中提取关键信息,如标题、段落等。今天,我们将利用Python来实现这一功能,并为大家提供一段完整的代码示例。 准备工作 首先,你需要安装python-docx库…

Web浏览器读写NFC Ntag标签

本示例使用的发卡器&#xff1a;RS232串口USB转COM读写器IC卡发卡器WEB浏览器二次开发JS编程SDK-淘宝网 (taobao.com) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&g…

不锈钢氩弧焊丝ER316L

说明&#xff1a;TG316L 是超低碳的不锈钢焊丝。熔敷金属耐蚀、耐热、抗裂性能优良。防腐蚀性能良好。 用途:用于石油化工、化肥设备等。也可用于要求焊接后不进行热处理的高Cr钢的焊接。

真实评测:可道云teamOS文件上传功能丝滑到爱不释手

对于每日沉浸在图片与视频海洋中的媒体工作者而言&#xff0c;与海量的多媒体文件打交道几乎成了家常便饭。 文件的上传和存储&#xff0c;对他们而言&#xff0c;不仅仅是工作中的一个环节&#xff0c;更像是将一天的辛勤与付出妥善安置的仪式。无论是突发现场的精彩瞬间&am…

web学习笔记(七十一)

目录 1.vue2注册子组件 2. vue2组件传值父传子 3. vue2组件传值子传父 1.vue2注册子组件 vue2注册子组件和vue3不使用setup语法糖注册子组件是一样的&#xff0c;都需要通过components来注册子组件。 <template><div class"about"><h1>关于&l…

海报在线制作系统源码小程序

轻松设计&#xff0c;创意无限 一款基于ThinkPHPFastAdminUniApp开发的海报在线制作系统&#xff0c; 本系统不包含演示站中的素材模板资源。​ 一、引言&#xff1a;设计新纪元&#xff0c;在线海报制作引领潮流 在数字时代&#xff0c;海报已成为传播信息、展示创意的重要媒…

配音软件哪个好用?推荐5款智能配音软件

随着期末考来袭&#xff0c;校园里的空气似乎都凝固了&#xff0c;每个角落都充满了紧张的气氛。 然而&#xff0c;在这紧张的氛围中&#xff0c;有一群学生却显得格外从容&#xff0c;因为他们掌握了一种秘密武器——配音软件。这些软件就像是他们的个人学习助理&#xff0c;…

git 中有关 old mode 100644、new mode 10075的问题解决小结

问题&#xff1a; 同一个文件被修改后&#xff0c;最后代码没有变&#xff0c;文件变了&#xff0c;导致提交了一个空文件 git diff 提示 filemode 发生改变&#xff08;old mode 100644、new mode 10075&#xff09; 解决办法 &#xff1a; 原来是 filemode 的变化&#xff…

虚拟机字节码执行引擎之运行时栈帧结构

概述 执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定…

Request流只能读取一次的问题

SpringBoot 接口加密解密&#xff0c;新姿势&#xff01;_spring boot 请求加解密-CSDN博客 2.2 request流只能读取一次的问题2.2.1 问题&#xff1a; 在接口调用链中&#xff0c;request的请求流只能调用一次&#xff0c;处理之后&#xff0c;如果之后还需要用到请求流获取数…

彩虹PLM系统:引领汽车行业的数字化转型

彩虹PLM系统&#xff1a;引领汽车行业的数字化转型 彩虹PLM系统作为汽车行业数字化转型的引领者&#xff0c;凭借其卓越的技术实力和丰富的行业经验&#xff0c;为汽车行业带来了全面的解决方案。以下是彩虹PLM系统如何引领汽车行业数字化转型的详细分析&#xff1a; 一、整合全…

约课健身管理系统小程序源码

健身达人的智能助手 一款基于FastAdminThinkPHPUniapp开发的米扬约课健身管理系统&#xff0c;应用于健身房&#xff0c;健身工作室&#xff0c;运动会所&#xff0c;运动场馆&#xff0c;瑜伽馆&#xff0c;拳馆等泛健身行业的场馆中。米扬约课健身致力于为各种健身场馆打造真…

Verilog刷题笔记49——Fsm1同步复位

题目&#xff1a; 解题&#xff1a; module top_module(clk,reset,in,out);input clk;input reset;input in;output out;parameter A0,B1;reg [1:0]current_state,next_state;always(posedge clk)beginif(reset)current_stateB;elsecurrent_statenext_state;endalways(*)beg…

手机图片怎么上传到电脑记事本 保姆级教程

在这个数字化时代&#xff0c;手机成了我们随身携带的摄影棚。无论是旅途中的美景&#xff0c;还是与朋友欢聚的瞬间&#xff0c;手机总能轻松捕捉。然而&#xff0c;手机存储空间有限&#xff0c;那些珍贵的照片和视频&#xff0c;怎样才能安全又方便地保存下来&#xff0c;供…

PFA量杯:精确、实用、高颜值的量杯选择!

您是否在烹饪、实验室实验或日常使用中需要一个精确、实用且高颜值的量杯&#xff1f;PFA量杯是您最佳的选择&#xff01; PFA量杯采用高品质材料制成&#xff0c;具有良好的耐腐蚀性、耐高温性&#xff0c;使用寿命长。透明度极高的杯身&#xff0c;使您在使用时能够清晰地看…

Python项目开发实战:小海龟挑战大迷宫游戏,案例教程编程实例课程详解

一、项目背景与意义 在Python编程学习中,项目实战是检验学习成果、提升编程能力的重要途径。本次项目实战将围绕“小海龟挑战大迷宫”游戏展开,旨在通过构建一个有趣的迷宫游戏,加深对Python语言、海龟图形库(turtle)以及算法逻辑的理解。该项目不仅具有教育意义,还能培养…

自动化脚本存到数据库中有用吗?

一般情况下, 没用! 存到数据库中, 本质上是一种, 代码文件的保存管理, 目的是为了传递和相关的版本管理. 比起这个还得是用git仓库这套要方面, 理由, 有配套的工具和方法论, 有优秀的交流社区, 版本管理和安全的约束也都能够满足. 如果存到数据库中, 则需要自行定义各种使用规…

LLM在软件测试中的革新应用

一、引言 随着人工智能技术的蓬勃发展&#xff0c;大语言模型&#xff08;Large Language Model&#xff0c;简称LLM&#xff09;如GPT系列&#xff0c;在自然语言处理领域取得了显著进展。LLM不仅能够处理复杂的自然语言任务&#xff0c;还在多个领域展现出广泛的应用潜力。在…