当前位置: 首页 > news >正文

simulink系列之汽车应用层信号处理

总目录

    第一章 simulink信号处理——debounce

    第二章 simulink接口表生成及自动连线脚本

目录

前言

一、debounce(防抖)是什么?

二、simulink模型搭建

1.常规debounce逻辑

2.问题分析

3.改进的模型

总结

前言

本系列主要围绕作者采用simulink进行日常软件开发过程中的实战和思考。话不多说,直接开干。

对于汽车应用层开发人员来说,几乎可以说日常开发接触到最多的东西就是各种报文信号了。因此,本文主要分享一下应用层软件报文信号处理之debounce,作为本系列的第一篇文章。


一、debounce(防抖)是什么?

简而言之,当某个应用层软件逻辑中需要处理某个信号。当信号在某个时间点发生变化时,我们认为该信号不算真的改变,而是发生变化并恒定不变保持1秒才算真的改变。这里需要注意,并不是每个信号都需要debounce,具体要根据需求来。

二、simulink模型搭建

常规的debounce采用三段式逻辑。这个我们很容易理解,即信号初始状态为A,发生变化状态变为B,如果在B状态能够维持一定时间(本文采用假定为1s,实际情况可能采用标定值),即切换到状态C。

1.常规debounce逻辑

下图为常规信号debounce逻辑,这个是按照上述常规思维翻译成simulink模型逻辑的。图中的sig表示信号,outSts表示改变的状态。看起来好像没什么问题,但实际上存在两个问题。

问题1:debounce时间需求是1s,实际上不是1s

这里需要对模型执行逻辑有一些基础或者直接从代码看才能知道原因。假设这个状态机从第0个步长开始执行,并且sig输入为1,那么具体分析时这样的:

0step:Init状态时,认为输出没有变化,即outSts仍为false。

1step:sig为1,进入wait状态,清空计数器,以便定时1s。

2-11step:sig为1,保持wait状态,开始计数,保证事件位1s。

从上述过程可以总结出,如果sig输入默认为1,那么从0step开始执行时,最终会需要1s+1step的时间。多出来的时间则是因为Wait状态带来的。

问题2: 状态冗余

这个问题和第一个问题根本原因是一样的,Wait状态带来的问题。

2.问题分析

从上述分析可以看出,只考虑问题1的话,可以让after函数的参数减去1个步长的时间。但是综合考虑两个问题的话,只能考虑干掉Wait这个状态。

如果直接去掉Wait状态,如下图这样,是绝对不行的。

 因为这种场景下,即使没有发生sig=1事件,计数器也会进行计数。等到发生sig=1时,outSts立刻为true,无法debounce。

这里我想到一个方法是使用外循环。如果不会外循环可以参考我的另一篇文章:

simulink 外循环与内循环执行流程_simulink循环模块-CSDN博客

 3.改进的模型

那么,模型可以进一步改成下面这样:

总结

以上就是今天要讲的内容,觉得有用可以关注我后续文章。

http://www.dtcms.com/a/287416.html

相关文章:

  • android studio libs.versions.toml 配置
  • 计算机网络——IPv4(25王道最新版)
  • 从丢包到恢复:TCP重传机制的底层逻辑全解
  • Java-77 深入浅出 RPC Dubbo 负载均衡全解析:策略、配置与自定义实现实战
  • nginx.conf模版
  • 使用DataGrip连接安装在Linux上的Redis
  • Datawhale AI数据分析 作业
  • TinyMCE 富文本编辑器在 vue2 中的使用 @tinymce/tinymce-vue
  • Django母婴商城项目实践(八)- 数据渲染与显示之首页
  • windows wsl2-05-docker 安装笔记
  • Vue 3 中封装并使用 IndexedDB 的完整教程(含泛型、模块化、通用 CRUD)
  • 【C# in .NET】20. 探秘静态类:抽象与密封的结合体
  • Spring AI 1.0版本 + 千问大模型之 文本记忆对话
  • LeetCode中等题--167.两数之和II-输入有序数组
  • MySQL基础教程
  • XSS漏洞----基于Dom的xss
  • 力扣24:两两交换链表中的节点
  • SQLALchemy
  • 单元测试学习+AI辅助单测
  • 计算机网络:(十一)多协议标记交换 MPLS
  • GaussDB union 的用法
  • Java NIO Selector高并发场景下CPU占用飙升问题排查与解决方案
  • NIO零拷贝
  • MySQL的union、union all导致排序失效
  • 低输入电源5.5V/2A同步降压转换器具有多种模式选择
  • roslaunch 文件的核心语法和使用技巧
  • (LeetCode 每日一题) 1233. 删除子文件夹 (排序)
  • TCP/UDP协议深度解析(四):TCP的粘包问题以及异常情况处理
  • 7.19 换根dp | vpp |滑窗
  • 医养照护与管理实训基地建设:创新模式与突破路径