0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于模拟软件的启动和关闭的分析说明

MATLAB 来源:djl 作者:Guy Rouleau 2019-09-16 14:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在之前的导出函数文章中,介绍了如何配置仿真模型并将它导出为函数:使用 Model 模块。

案例中,我们的模型模拟的是代码运行一次的行为。也就是说:假设这些代码要跑在 ECU 里,当模型仿真开始ECU 启动,这些代码就运行,当仿真结束ECU 停止。

这是个有意思的过程,不过,要是你想仿真一些更复杂的场景,比如 ECU 多次启动和关闭的场景呢?

这就是需要用的Initialize Function 和 Terminate Function 模块。

下面的例子模拟了一辆车在两种不同情况下多次启动和关闭的场景:

关于模拟软件的启动和关闭的分析说明

a.当车在运行时,我们使用计数器累加来跟踪记录发动机的在它的整个生命周期里运行的全部时间。

b. 在正常关停的场景下,车钥匙熄火,我们将累计的时间写入一个 non-volatile 内存。所以,在下次汽车启动的时候它还可以被读出来。

c. 假如电池没电了汽车也会关停,但是这时候我们就没有机会把累计时间写入 non-volatile 内存了。

下面我们来看看如何实现上述逻辑。

使用 Initialize 和 Terminate 事件

首先用一个简单的计数器例子,用来模拟发动机运行时间计数:

关于模拟软件的启动和关闭的分析说明

把上图这种形式的导出函数模型,使用一个Model 模块引用起来。在 R2016b 里 Model 模块的参数设置对话框里就会出现两个新选项:

关于模拟软件的启动和关闭的分析说明

勾选这两个选项,Model 模块就多出两个输入端口,可连接 Function-call 信号(见下图)。

作为第一次简单尝试,我们用一个 Stateflow chart 来仿真车钥匙启、停时分别启动和关闭这个计数器 EngineRunTime。

关于模拟软件的启动和关闭的分析说明

仿真结果如下:

关于模拟软件的启动和关闭的分析说明

当车钥匙启动时,计数器在增长,而当车钥匙关停时,计数器停止计数。而当车钥匙再次启动的时候,计数器重置了。

自定义Initialize 和 Terminate 事件

就像之前所说的,我们并不希望这个计数器在每一次车钥匙关停的时候都重置,不然就没法累计发动机的运行时间了。

为了保留这个计数器的值,我们这时候就可以使用 Initialization 和 Terminate 模块了。

关于模拟软件的启动和关闭的分析说明

在 Terminate Function 内部,我们使用 State Reader 模块来获取当前的计数值,并保存在 Data Store 模块里。类似的,在 Initialize Function 内部,我们可以读取这个 Data Store 模块,并用这个值来初始化计数器。

译者补充:熟悉 Simulink 代码生成的朋友都知道,EngineRunTime 模型生成代码时,会生成 step 函数,以及相应的Initialize 和 terminate 函数。默认情况下 Initialize 函数里进行输入、输出以及状态量的初始化,terminate函数里是空的。R2016b 之后,新增加的这个 Initialize 和 terminate 模块,可以让你显示的定义这两个函数里的内容。

我们来看结果:

关于模拟软件的启动和关闭的分析说明

在车钥匙关闭和重启后,每一次EngineRunTime 被重新调用运行时,是在持续计数的。

Reset Function

就像之前说的,我们还需要模拟由于电池电压过低引起的车辆重启。

这表示,在有些真实场景下,有时候计数器模型结束运行的时候,我们是没机会往Data Store 里写数据的。

为了模拟这种场景,我们把原来的Terminate 模块里面的 Terminate Event Listener 模块的事件类型从 Terminate 改为 Reset,并设置一个有含义的名字 writeNVmem。

关于模拟软件的启动和关闭的分析说明

这样一来,模型里就不再有Terminate Function 模块了。当仿真触发 terminate 事件后,就会执行默认的模块 terminate 函数。

我们重写 Stateflow 调度器,处理这两种关停的情况:

关于模拟软件的启动和关闭的分析说明

注意,在上面这个模型中,我们在 Model 的参数对话框里勾选了 "Show model reset ports",所以就出来了这个额外的 writeNVmem 端口。

仿真结果如下:

关于模拟软件的启动和关闭的分析说明

可以看到,在因为电池失效而引起的关停时,计数器的值并不会保存给下次重启的时候用。

代码生成

现在,仿真结果跟我们想要的一致了,接着我们来生成代码。

在生成的代码里,写入 non-volatile 内存一般都是用户自定义代码来实现,或者是 Embedded target 提供的硬件服务。为了模拟这种情况,我们使用 Function call 模块和 Simulink Function 来实现,以前的帖子有介绍过这两个模块的用法。

简单来说,就是把上面 EngineRunTime 模型里的 Data Store Read/Write 模块替换为 Function call。

另外,为了能在仿真的时候得到同样的结果,我们使用 Simulink Function 来完成读写 Data Store 这个功能,跟之前在Initialize 和Terminate function 的读写功能一样。

这就是整个模型的结构:

关于模拟软件的启动和关闭的分析说明

之前的帖子有介绍过,在代码生成的时候,可以在 EngineRunTime模型里设置配置选项,告诉 Simulink 在链接的时候,去哪里找这个 writeEngineRunTimNV 和 readEngineRunTimNV 函数。

我们把这个导出函数模型生成如下代码:

关于模拟软件的启动和关闭的分析说明

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计数器
    +关注

    关注

    32

    文章

    2306

    浏览量

    97601
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66862
  • 电池
    +关注

    关注

    85

    文章

    11375

    浏览量

    141360
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    交易关闭自动处理接口

    ​  在电商、支付系统或任何交易密集型应用中,交易关闭(如用户取消订单、支付超时或系统异常)是常见事件。手动处理这些事件效率低下且易出错,因此开发一个自动处理接口至关重要。本文将从需求分析、工作原理
    的头像 发表于 10-17 14:25 254次阅读
    交易<b class='flag-5'>关闭</b>自动处理接口

    电能质量分析软件可以提供哪些数据分析功能?

    、CET 中电技术等)的技术特性,从核心功能模块展开说明: 一、基础电能质量指标分析 软件可实时计算并存储 100 + 项关键参数 ,涵盖电压、电流、功率、频率等稳态指标,以及谐波、闪变、不平衡度等动态特性: 稳态指标 : 真有
    的头像 发表于 10-10 17:12 546次阅读

    TINA-TI 模拟电路设计、仿真和分析软件中文教程

    电子发烧友网站提供《TINA-TI 模拟电路设计、仿真和分析软件中文教程.pdf》资料免费下载
    发表于 09-03 17:10 3次下载

    请问Linux+rtos的1.9版本sdk大核开机自启动一个程序怎么关闭

    编译开机大核心就出现一个程序报错,01开发板csi2上面默认接的摄像头是gc2093的,运行的是ov5647 期待结果和实际结果 可以关闭这个自启动程序;也希望顺带知道我要开启自启动的程序放在哪里 软硬件版本信息 01stido
    发表于 07-22 06:07

    【案例2.36】芯片启动异常的故障分析

    【案例2.36】芯片启动异常的故障分析在某产品的调试中发现,板上核心处理芯片在每次启动后的表现不同,偶尔会出现无法启动的故障。经过几百次反复上下电测试发现,在大多数情况下,芯片
    的头像 发表于 06-26 08:24 720次阅读
    【案例2.36】芯片<b class='flag-5'>启动</b>异常的故障<b class='flag-5'>分析</b>

    盟通方案|专业的CANopen总线分析软件

    过程中用最短的时间通过数据帧分析排除每一个问题。除了数据帧分析功能外,分析软件还需要能够模拟和仿真数据帧的指令操作,才能更方便地确认问题,验
    的头像 发表于 05-23 16:06 549次阅读
    盟通方案|专业的CANopen总线<b class='flag-5'>分析</b><b class='flag-5'>软件</b>

    MDMF304L1GAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动- 松下

    电子发烧友网为你提供Panasonic(Panasonic)MDMF304L1GAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动-相关产品参数、数据手册,更有
    发表于 02-11 19:12
    MDMF304L1GAM-MINAS A6 系列 Block动作应用<b class='flag-5'>说明</b>资料 -Modbus<b class='flag-5'>启动</b>- 松下

    MDMF304L1DAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动- 松下

    电子发烧友网为你提供Panasonic(Panasonic)MDMF304L1DAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动-相关产品参数、数据手册,更有
    发表于 02-10 19:05
    MDMF304L1DAM-MINAS A6 系列 Block动作应用<b class='flag-5'>说明</b>资料 -Modbus<b class='flag-5'>启动</b>- 松下

    MDMF304L1CAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动- 松下

    电子发烧友网为你提供Panasonic(Panasonic)MDMF304L1CAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动-相关产品参数、数据手册,更有
    发表于 02-07 19:03
    MDMF304L1CAM-MINAS A6 系列 Block动作应用<b class='flag-5'>说明</b>资料 -Modbus<b class='flag-5'>启动</b>- 松下

    MDMF304A1HAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动- 松下

    电子发烧友网为你提供Panasonic(Panasonic)MDMF304A1HAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动-相关产品参数、数据手册,更有
    发表于 02-06 18:50
    MDMF304A1HAM-MINAS A6 系列 Block动作应用<b class='flag-5'>说明</b>资料 -Modbus<b class='flag-5'>启动</b>- 松下

    功率分析仪使用说明

    功率分析仪的使用说明主要包括安装、设置、测量及数据分析等步骤,以下是详细的使用指南:
    的头像 发表于 01-28 14:55 2097次阅读

    模拟电路分析技巧

    在现代电子技术中,模拟电路扮演着至关重要的角色。它们不仅用于信号放大、滤波和转换,还广泛应用于传感器接口和功率管理等领域。掌握模拟电路分析技巧对于电子工程师来说是必不可少的。 1. 理解电路原理 在
    的头像 发表于 01-24 09:24 1360次阅读

    MDMF304A1GAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动- 松下

    电子发烧友网为你提供Panasonic(Panasonic)MDMF304A1GAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动-相关产品参数、数据手册,更有
    发表于 01-23 19:15
    MDMF304A1GAM-MINAS A6 系列 Block动作应用<b class='flag-5'>说明</b>资料 -Modbus<b class='flag-5'>启动</b>- 松下

    MDMF304A1DAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动- 松下

    电子发烧友网为你提供Panasonic(Panasonic)MDMF304A1DAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动-相关产品参数、数据手册,更有
    发表于 01-17 19:09
    MDMF304A1DAM-MINAS A6 系列 Block动作应用<b class='flag-5'>说明</b>资料 -Modbus<b class='flag-5'>启动</b>- 松下

    MDMF304A1CAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动- 松下

    电子发烧友网为你提供Panasonic(Panasonic)MDMF304A1CAM-MINAS A6 系列 Block动作应用说明资料 -Modbus启动-相关产品参数、数据手册,更有
    发表于 01-16 18:59
    MDMF304A1CAM-MINAS A6 系列 Block动作应用<b class='flag-5'>说明</b>资料 -Modbus<b class='flag-5'>启动</b>- 松下