1 Star 3 Fork 3

天海戈林/RACK_BMS_SOCOMEC

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
实验器材:
公司自制电路板

实验目的:
作为模组BMS的上位机,接收CAN数据,并把数据转为485发送到昆仑通态显示屏中

数据内容:
1.14路电压数据,以浮点数展示;
2.5路温度数据,以浮点数展现,但其实为有符号整数
3.4路告警,分别是过压(4.2V)、欠压(3V)、过温(70C)、低温(0C);
4.1路均衡,展示均衡状态
特殊说明:
1.告警信息采用或操作,及报警信息只有在软件重启后才可以清零
2.10s无数据发送,则认为通讯故障,重新初始化uart
3.温度数据采用1、2、3、4、6


1、增加了IIC的存储和读取,当系统第一次上电时,存储初始化数据,其他情况读取IIC数据作为初始化数据。
2、系统存盘需要Stay_Flag = 1,此位由上位机或显示屏控制,后期也需要实时存取,例如SOC的数据信息
3、增加的SOC的设计,充放电时采用电流积分方法,静置达到1h后,采用OCV_SOC曲线校正(根据最低电芯电压和平均温度运算)
4、增加了手动校正SOC功能,当系统第一次上电的时候,需要手动或者根据上位机情况进行进行校正

20190404
1、增加了reg2PC的结构体和相关函数声明,并未增加实体
2、辅助上位机调试完成初步的机柜通讯内容

20190405
2、增加了上位机通讯的所有结构体和函数,但是以模组调试上位机的程序仍有问题:上位机接收不到数据


20190412
1、过压、欠压、过温、低温等判断应该在模组中进行,否则机柜的计算压力与时间太长,机柜暂时只接收模组的故障信息————需要修改模组BMS以及通讯协议
2、增加判断BMS离线功能,1s内收不到任何BMS的通讯数据,则认为该BMS离线,报故障,然后切断接触器

3、模组均衡数据中增加了均衡故障以及温差、压差过大的信息,需要后期更改相关函数
4、SOH按照充满、放空减少1次寿命,起始寿命为1000

5、SOC按照静置1h启动查表OCV运算
20190421
1、查表的SOC调试完成
2、调试完成部分通讯任务,如下:电压、温度的数值

20190422
1、增加大部分函数的注释
2、去掉原文件注释
3、调试完成IIC的数据存储
4、确认原电压、电流、绝缘检测硬件有bug

20190423
1、调试完成IO的输出信号

20190424
1、完成10个模组并联发送数据:电压数据发送没有问题
2、调整了接受的数据函数的先后顺序
3、调试完成了离线故障的告警,当设备离线时,会有离线告警,当设备恢复在线后,告警消失

20190425
1、加入了CAN筛选器和屏蔽器的使用
2、DA1388的EEPROM功能改为了页写页读,减少延时,但是写入时间仍需8 - 10ms(芯片本身性质决定),读取延时设置10us。IIC传输信号保持也从2us缩减到1us。
3、DA1388手册显示其最快速度为400k
4、经测试CAN通讯延时100ms

20190427
1、为使用模组BMS,SYS_Reset_CMD.Banlance_Time[2]改为SYS_Reset_CMD.Banlance_Time

20190604
1、系统状态分为:就绪、充电、放电、静置。接触器断开为就绪,继电器闭合且无充、放电现象为静置。
2、系统状态与系统故障显示为2条分支,因为系统分4级故障,在1 - 3级故障时仍可进行充、放电
3、只有在系统无4级故障,且状态处于“上电”状态时,才可以闭合接触器上电
4、只要有4级故障和不可复位故障,需要断开接触器


20191109
针对第二版BMS工程程序,可充、放电,逻辑正确
待优化:
1.IIC
2.SD卡
3.网络通讯
4.SOH
5.均衡
6.显示屏和通讯协议


20191112
1、在RS485_Send_Data() 函数中增加了RS485_TX_EN 来控制函数的收发信号
2、按照通讯协议编写的数据函数,但是未经显示屏调试

20191124
1、删除了原来DS1388的EEP和RTC相关内容
2、增加了SOH的flash存储
3、调整与模组的通讯方式为问询制
4、修正上电逻辑,删除原来初始化就闭合接触器的部分
5、修改与模组通讯协议,可强制电压最高模组风扇强制启动
6、增加了CANbootloader功能,但只能使用图莫斯的上位机和CAN盒

20191128
1、删掉除malloc文件,本程序暂时不用SD卡,暂时先不使用内存中的“堆”,“ZI - DATA"回归到正常范围
2、屏蔽掉bootloader中的部分未使用变量

20191130
1、程序中增加了绝缘监测的保护
2、温差和压差过大的保护,有监测但是并没有实际保护
3、在control中增加了对闭合接触器的判断条件,当第一次上电时,仅有欠压故障时可闭合充电接触器,当仅有过压故障时,可闭合放电接触器
4、使用了Astyle进行了代码风格整理

20191201
1、更改了HAL_CAN_Transmit()函数对应超时的判断,从原来的利用uwtick的判断方式改为用systick的判断,改变了can总线单节点程序卡死的问题


RTC程序暂时无晶振,调试时程序会出现HAL_I2C_ERROR_AF问题,后期需要仔细研究问题是什么

为了适应奥耐充电机,单独设置了奥耐模式,在这种模式下,只有在放电时出现欠压才会切断放电接触器,其余不会。且一旦系统不在放电模式时,大概过2min,放电接触器会自动闭合。

SOC第一次上电的时候,利用OCV进行计算,其余上电时读取之前的EEP存储的
SOH第一次上电时1000,其余读取EEP

调试的时候需要仔细查看对应电压、电流的单位
接触器闭合无反馈,只是根据系统上电、下单判断是否有闭合,并不能根据实际进行反馈

HAL_NVIC_SetPriorityGrouping ( NVIC_PRIORITYGROUP_2 ); //中断优先级分组2
设定2位抢占优先级,2位响应优先级
通讯协议的进一步检验与完善
系统状态位设定与调整
通讯延时保护的处理

**if ( Reg_Mes_Tol.Reg_I < 100 )   数值需要后期具体调试
    ** ( Reg_Mes_Tol.Reg_I > 10000 )   数值需要后期具体调试

    需要调试的内容:
    CAN2_Overtime中的 HAL_GetTick() - reg_time_count > 1000
    对于过零点的检测


    故障处理需要做

    中断优先级需要整体调整调配

    利用HAL_GetTick() 进行通讯中断判断,当HAL_GetTick() 归0是会有什么情况需要注意!

空文件

简介

机柜BMS,针对两线制索克曼等USP 展开 收起
C
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/goering_of_the_sky/RACK_BMS_SOCOMEC.git
git@gitee.com:goering_of_the_sky/RACK_BMS_SOCOMEC.git
goering_of_the_sky
RACK_BMS_SOCOMEC
RACK_BMS_SOCOMEC
master

搜索帮助