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会查询不到? 在…

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

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

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

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

解决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…

微服务SpringCloud分布式事务之Seata

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

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

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

多点通信、流式域套接字

一、广播 1.1广播的发送端模型&#xff1a; #include<myhead.h>#define BEN_IP "192.168.191.129" #define BEN_PORT 8888#define PORT 6666int main(int argc, const char *argv[]) {int oldfd socket(AF_INET,SOCK_DGRAM,0);if(oldfd -1){perror("soc…

AMBA-APB

目录 1.APB 协议 2.APB信号列表 3.数据传输 3.1写传输&#xff08;2种&#xff09; 3.1.1 无等待状态的写传输 3.1.2有等待状态的写传输 3.2写选通信号 (PSTRB) 字节通道映射 3.3读传输&#xff08;2种&#xff09; 3.3.1 无等待状态的读传输 3.3.2有等待状态的读传…

linux自动化一键批量检查主机端口

1、准备 我们可以使用下面命令关闭一个端口 sudo iptables -A INPUT -p tcp --dport 端口号 -j DROP我关闭的是22端口&#xff0c;各位可以关其它的或者打开其它端口测试&#xff0c;谨慎关闭22端口&#xff01;不然就会像我下面一样握手超时&#x1f62d;&#x1f62d;&…

【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地

前言&#xff1a;本文教程为&#xff0c;上传文件到服务器并训练深度学习模型&#xff0c;与下载服务器文件到本地。演示指令输入&#xff0c;完整的上传文件到服务器&#xff0c;并训练模型过程&#xff1b;并演示完整的下载服务器文件到本地的过程。 本文使用的服务器为云服…

从零开始开发纯血鸿蒙应用之逻辑封装

从零开始开发纯血鸿蒙应用 一、前言二、逻辑封装的原则三、实现 FileUtil1、统一的存放位置2、文件的增删改查2.1、文件创建与文件保存2.2、文件读取2.2.1、读取内部文件2.2.2、读取外部文件 3、文件删除 四、总结 一、前言 应用的动态&#xff0c;借助 UI 响应完成&#xff0…

python读写文件的三种做法

对于文件操作&#xff0c;python提供了3种做法&#xff1a;open(), os.open() 和with open()语句。 1. open()函数&#xff1a;一般用于更高级的文件读写操作&#xff0c;即人能读懂的用法&#xff0c;如果是写入数据&#xff0c;可用传入字符串。 用法&#xff1a;open(path…

MySQL如何只取根据某列连续重复行的第一条记录

前言 MySQL如何只取根据某列连续重复行的第一条记录&#xff0c;条件&#xff1a;某列、连续、验重 建表准备 DROP TABLE IF EXISTS test; CREATE TABLE test (id bigint NOT NULL,time datetime NULL DEFAULT NULL,price int NULL DEFAULT NULL,PRIMARY KEY (id) USING BT…

Fetch处理大模型流式数据请求与解析

为什么有的大模型可以一次返回多个 data&#xff1f; Server-Sent Events (SSE)&#xff1a;允许服务器连续发送多个 data: 行&#xff0c;每个代表一个独立的数据块。 流式响应&#xff1a;大模型服务通常以流式响应方式返回数据&#xff0c;提高响应速度。 批量处理&#x…