BMS存储模块的设计

目的

  • 电池管理系统中存在着数据本地存储的要求,保证控制器重新上电后能够根据存储器中的一些参数恢复控制状态,和信息的下电存储
  • 1.继电器故障信息的存储。2. 系统性故障的存储。3.SOC、SOH相关信息的存储。4.均衡参数的存储。5.系统时间信息。6.出厂信息的存储。7.业务模块控制信息存储

结构

  • 上软软件结构进行说明
    在这里插入图片描述

实现

信号组装和解析

  • 嵌入系统信号值类型一般采用基本类型也就是整数和浮点数,实现组装成数据块时(也就是定长无符号整数uint32数组),需要对信号值进行转换和拼接,最终放入数组中。
  1. 将数组划分为多个段 boolean、uint8、uint16、uint32,用于存放信号
  2. 根据信号的数值范围,确定所属的段。最终一个段内有0或多个信号
  3. 段内的一组信号进行排列组装(eg: 一个uint32 能够容纳32 个boolean数值范围的信号;u8、u16、u32 以此类推),需要记录信号的排列位置,读取时根据位置解析。
  4. 保存好信号排布的描述文件,模块实现过程中依赖此文件

读写控制

  • 模块运行过程中内部的读写状态是互斥的。软件在上电的时候,会将EEFROM中的数据搬运到一块特定RAM空间中,后续将不会重新进行EEFROM——>RAM的搬运。存储模块在进行写数据时将会发生 特定RAM空间——>EEFROM动作。
  • 这种特性也就意味着上电后,整个过程信号的输出值不会改变(读取完EEFROM后)
  1. 上电系统处于初始化阶段,模块处于读状态,使能解析模块开始解析数据块
  2. 模块读写状态互斥,初始化阶段模块不进入写状态
  3. 系统初始化完毕后,模块切换为写状态,解析模块停止使能维持上一时刻值。(整个上电循环系统只会出现一次初始化)
  4. 模块处于写状态下,当触发存储条件时,使能组装模块,并请求底软进行存储

注意事项

  1. 注意读写状态的互斥,虽然在系统初始化阶段存储器可能已经就绪,但是为了设计上的简单化。在整个系统初始化阶段不进行写请求。
  2. 基于数据块更新的策略也就以为着时一批信号的同时存储,在信号设计上要考虑打其他信号的存储需求,存入信号本身非期望的值(例如异常下电,存储中的值可能是信号的过程值,如果过程值是无效值那么会覆盖上一次下电时存储的有效值),设计上对于值是无效的过程需要进行逻辑上的防护避免这种过程的出现,其他信号会触发存储将 无效值信号进行存储
  3. 在处理存储需求时采用队列,用于应对连续触发存储条件的场景。底软在完成一次存储动作过程中无法响应存储需求,存储需求是串行处理的。如果底软实现了队列,那么上软只需要连续发送请求即可,如果底软没有做队列,那么上软就需要实现队列。当然上下都可以实现队列
  4. 信号的精度设置和偏移缩放运算
  5. 谨慎使用存储区域,一旦使用该区域将会永久使用(其他信号复用存在风险 ,因为区域存在旧信号值)

总结

  • 主要从模块的结构、实现、注意事项三个方面说明了下存储模块的设计,这里只是简单的说明了下上软的实现方案,具体到如何保证存储的一致性和可靠性还有待研究讨论,对于上软和底软的交互受限于篇幅也没有说明,后面有机会会结合matlab单独出一期实现和讲解

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

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

相关文章

Python爬取城市天气信息,并存储到csv文件中

1.爬取的网址为:天气网 (weather.com.cn) 2.需要建立Weather.txt文件,并在里面加入如下形式的字段: 101120701济宁 101010100北京 3.代码运行后,在命令行输入Weather.txt文件中添加过的城市,如:济宁。 …

MySQL线上事故:使用`WHERE`条件`!=xxx`无法查询到NULL数据

前言 在一次 MySQL 的线上查询操作中,因为 ! 的特性导致未能正确查询到为 NULL 的数据,险些引发严重后果。本文将详细解析 NULL 在 SQL 中的行为,如何避免类似问题,并提供实际操作建议。 1. 为什么NULL会查询不到? 在…

JVM和异常

Java 虚拟机(Java Virtual Machine,简称 JVM) 概述 JVM 是运行 Java 字节码的虚拟计算机,它是 Java 程序能够实现 “一次编写,到处运行(Write Once, Run Anywhere)” 特性的关键所在。Java 程序…

Mybatis 为什么不需要给Mapper接口写实现类,为什么要使用代理而不是硬编码?

文章目录 核心机制概述源码分析1. 获取 Mapper 实例2. 创建 Mapper 代理对象3. 拦截方法调用 MapperProxy4. 关联 SQL 并执行 为什么 MyBatis 采用了代理机制,而不是简单地面向流程化的方式?1. 解耦和灵活性2. 方法拦截和事务管理3. 动态代理支持方法级别的 SQL 定…

DevOps流程CICD之Jenkins使用操作

一、jenkins的docker-compose安装部署 请参考 jenkins的docker安装部署配置全网最详细教程-CSDN博客 二、创建repository 三、创建ssh 四、创建视图 五、创建任务 六、配置gitlab钩子 七、自动构建部署CI/CD验证

Solidworks打开无法获得许可,提示(-15,10,10061)错误解决办法

参考文章: https://blog.csdn.net/2301_81263647/article/details/140904773

四、AI知识(其他算法)

四、AI知识(其他算法) 1.其他算法 终身学习 元学习 2.建模预处理与评估 数据清洗 数据规约 空缺值 噪声数据 数据变换 数据规范化(如正则化、归一化) 数据压缩 数据规约 数值数据离散化/分类数据概念分层 模型评估 …

【云原生】Docker Compose 从入门到实战使用详解

目录 一、前言 二、Docker Compose 介绍 2.1 Docker Compose概述 2.2 Docker Compose特点 2.3 Docker Compose使用场景 三、Docker Compose 安装 3.1 安装docker环境 3.2 Docker Compose安装方式一 3.2.1 下载最新版 3.2.2 设置权限 3.2.3 设置软链接 3.2.4 查看版本…

wangEditor/editor自定义粘贴后续

背景 按照上一篇文章处理自定义粘贴之后,发现复制表格之后,会出现表格样式失效问题,原因是自定义粘贴没有处理表格数据,导致按照文本格式粘贴了 处理方式 自定义表格(如果业务有需求需要更新表格样式的,…

【OTA】论文笔记--《智能网联汽车整车OTA功能设计研究》智能网联汽车OTA系统设计分析报告

智能网联汽车OTA系统设计分析报告 引言 随着汽车智能化、网联化水平不断提升,现代汽车中电子控制单元(ECU)的数量和复杂度持续增加。据统计,高级轿车上电子电气元件的成本已占整车开发成本的60%~70%。为了实现对这些电控单元的软件开发调试、数据标定、文件更新和故障修复,…

【电路理论四】正弦电流电路

正弦电流 正弦量是随时间按正弦规律变动的电路变量。 随时间按正弦规律变动的电流称为正弦电流。 正弦电流的瞬时值表达式: 称为正弦电流的三要素。 分别为振幅/幅值,角频率,初相。 幅值为正弦电流的最大值,恒为正。 为正弦电…

解决Windows无法同时使用有线网和无线网WIFI的问题

参考资料 电脑无线网wifi和有线网同时使用(内网外网同时使用)用route命令解决Wifi和网卡不能同时上内外网问题 解决方法 对于Windows系统同时连接有线网和无线网Wifi时,只会有一个网关生效,因此我们需要手动通过route命令设置网…

FOC控制原理-ADC采样时机

0、文章推荐 SimpleFOC移植STM32(五)—— 电流采样及其变换_极对数对电流采样的影响-CSDN博客 FOC 电流采样方案对比(单电阻/双电阻/三电阻) - 知乎 (zhihu.com) FOC中的三种电流采样方式,你真的会选择吗?…

uniapp:编译微信、h5都正常的,编译钉钉小程序无法找到页面

我们在做uniapp的开发的时候遇到很多莫名其妙的问题,其中就有个很奇葩的问题,我们开发的过程中使用微信小程序/h5调试都是正常编译正常跳转,然后在要上架的时候,编译钉钉小程序成功,但是访问页面无法访问, …

zentao ubuntu上安装

#下载ZenTaoPMS-21.2-zbox_amd64.tar.gz(https://www.zentao.net/downloads.html) https://dl.zentao.net/zentao/21.2/ZenTaoPMS-21.2-zbox_amd64.tar.gzcd /opt tar -zxvf ZenTaoPMS-21.2-zbox_amd64.tar.gz#启动 /opt/zbox/zbox start /opt/zbox/zbox…

REDIS2.0

string list hash set 无序集合 声明一个key,键里面的值是元素,元素的类型是string 元素的值是唯一的,不能重复 多个集合类型之间可以进行并集,交集,集查的运算 sadd test1 a b c c d :添加5个元素&am…

【论文阅读】DebSDF:深入研究神经室内场景重建的细节和偏差

【论文阅读】DebSDF:深入研究神经室内场景重建的细节和偏差 Abstract3.METHOD3.1 Preliminaries3.2 Uncertainty Guided Prior Filtering3.3 Uncertainty-Guided Ray Sampling3.4 Uncertainty-Guided Smooth Regularization3.5 Bias-aware SDF to Density Transform…

golang,多个proxy拉包的处理逻辑

在Go语言中,当你设置了多个代理(GOPROXY)时,Go工具链会按照你设置的顺序尝试每个代理。如果第一个代理失败,它会尝试下一个代理,直到成功获取到模块或者所有代理都尝试失败。最后,如果所有代理都…

微服务SpringCloud分布式事务之Seata

视频教程:https://www.bilibili.com/video/BV16P63Y3ESq 效果演示 准备的微服务项目调用的链路如下: 文字描述: gateway模块接收到请求,并发送到order订单模块order订单模块接收到请求,新增一个订单数据后发送一个…

Pyhton知识分享-利用KNN算法实现手写数字识别

利用KNN算法实现手写数字识别 MNIST手写数字识别 是计算机视觉领域中 "hello world"级别的数据集 1999年发布,成为分类算法基准测试的基础随着新的机器学习技术的出现,MNIST仍然是研究人员和学习者的可靠资源。 本次案例中,我们的…