# SYS_BMS **Repository Path**: goering_of_the_sky/SYS_BMS ## Basic Information - **Project Name**: SYS_BMS - **Description**: No description available - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-06-17 - **Last Updated**: 2024-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 2020-06-22 1、完成了充电过温、低温的保护与告警的编写 2、完成了放电过温、低温的保护与告警的编写 3、完成了压差多大、温差过大的保护与告警的编写 4、故障报警编写到充电低温,剩余的需要在完成pack之间的CAN通讯协议之后在编写 2020-07-01 1、完成了EEP的编写 2、完成了RTC的编写 3、完成了电流采样的编写 4、完成与UPS的通讯部分程序的编写 2020-07-04 1、完成CAN通讯的配置以及发送程序,但是基于上位机调试的CAN控制程序未编写 2、完成EEP的存储逻辑 3、根据硬件修正CAN的通讯接口 4、根据硬件修正485第一路的接口,第二路硬件设定有问题未更改 5、完成模拟IIC的IO匹配 6、完成EEP和电流采样的端口配置 7、SOC的LED状态显示 2020-07-05 1、根据技术要求,修正SOC的显示方案(192V控制策略) 2、根据原理图,增加485的收发控制 3、增加综合状态判断的函数,电流大于1A认为充电,小于-1A认为放电,其余是静置 4、在故障保护逻辑中,增加实际电流检测值,并把放电保护阈值定义为负值 5、SPI的硬件匹配 6、在CAN通讯协议中根据485通讯协议增加了调试部分,并在程序中增加了接收程序的编写 7、增加编码开关的编写,在485中加入了设备地址的信息,但在can中未加入 8、完成了celect程序的对应变量的编写 9、增加了两路电压采样的程序,但是由于硬件电路暂时未确定,细节配置暂无完善 10、用Alarm_Reg.Slight_Alarm1.Bit.Other_Alarm做为风扇异常的告警信号 11、编写风扇控制和反馈函数 2020-07-06 1、完成了CAN通讯中电压、温度最值和对应编码的设定 2、完成了CAN通讯中总故障的编写 3、增加了充电、放电、预充接触器的失效检测 4、增加了充电、放电、预充接触器的上电和下电函数 5、完后才能了拨码开关的控制函数 6、计算了平均电压、平均温度,用485发送 7、整理了CAN通讯中发送数据的赋值,但电芯电压、温度、均衡、历史SOC、历史SOH未接入 8、完成了故障和运行LED的显示逻辑和相关程序 2020-07-09 1、完成综合状态的编写 2、修正485通讯中的偏移量、倍数关系 3、磁保持继电器的控制流程图绘制、程序的编写 4、充电电压过高禁止闭合充电接触器,禁止充电,完成相应更改 5、加入反接保护、电芯检测失效保护、温度检测失效 6、根据电路图调整了3路SPI的外设接口 7、根据电路图修正了两路电压采样的计算过程 8、根据通讯协议修正了总压、电流的变量显示,变量采用s16类型,且要求1位小数,因此所有的数据全部*10 2020-07-13 1、增加了产品序列号的输入信号 2020-07-14 1、增加了dubug的调试命令程序,包括继电器、LEN、下电指令等等 2、预充接触器断开的判断条件从10V改为了6V 3、风扇启动温度改为50摄氏度,停止温度改为40摄氏度 4、对所有的c文件和h文件进行了注释的优化 5、在CAN发送报文中增加了地址变量因素 2020-07-18 1、延长了电流采集芯片的转换启动到读取数据的时间,从1改为50us,后期酌情修正 2020-07-24 1、增加了BQ唤醒逻辑,先唤醒600,然后通过stack唤醒616。同时对wakeup和slp2act进行区分 2、修正了shutdown指令和sleep指令,采用单设备写入休眠控制命令的方式进行休关机和休眠 3、修正了自动寻址过程中的唤醒语句为唤醒函数,并增加了唤醒延时时间 4、芯片的TWARN设置是85摄氏度。 5、增加了BQ79616的sleep时间设定和芯片过温阈值设定 6、增加了BQ79616的长短通讯超时和进入的状态 2020-07-27 1、采集了芯片main和aux的gain和offset出厂数值,在电芯电压和温度采集时加入了矫正 2、修正了最大、最小温度的函数入口参数,从原来的电压值改为温度值 3、关闭了OTCB的故障保护,因硬件未见到相关信号 4、UV比较阈值选用UV,弃用VCBDONE,UT比较阈值选用UT,弃用OTCB 5、增加了校验文件bq_debug.c,对VC-CB的压差,温差、VC和CB的开路、LPF、均衡的FET进行校验,结果直接返回到寄存器中,后期可从寄存器中读取校验结果 2020-07-29 1、HextoASCII(cell_id_hex, cell_id_ascii, 10);的长度从20改为10;ASCIItoHex(hex_mid_id,&cell_id_hex[0],10);20改为10 2、地址从原来的0-16改为16-25 3、修正HextoASCII()函数的转换顺序 4、修改rs485文件的写入函数,原函数只支持单个寄存器写入,现在改为多寄存器写入,同时修改Data_BUF_485[20]为Data_BUF_485[40] 5、修正485通讯中的错误帧回复内容 6、在CAN通讯中把需要上位机发送的内容发送会上位机,增加相应函数CAN1_Send_DebugMsg() 7、增加BQ79600和BQ79616的非屏蔽故障和故障读取 2020-08-03 1、SPI的CRC校验改为485校验,原校验存在问题,后期需要仔细调试 2、修正了bq79600.c中的BQ79600_Stack_Wr(0x00, S_OVUV_CTRL, &Bq79616_Reg[0].OVUV_CTRL.Byte);的S_OVUV_CTRL值 2020-08-10 1、修改AUX_ADC_OFFSET和MAIN_ADC_OFFSET的数据类型,从s8改为u8 2、原来的温度查表中热敏电阻值多放大了100倍,现在进行了修正 3、温度查表时,把//temper[i]=table_mid-20; 的屏蔽打开,并去掉了-20的偏移。在这个温度电表中经常会出现while不满足的条件 2020-08-10 1、增加MAIN和AUX的GAIN和OFFSET的获取计算设置宏定义公式 2、增加了BQ79616芯片的OUV计算宏定义,并修正其中的设置 3、删除在BQ79616内部信号protect中的对OUV和OUT的设置,移植BQ79616的init中 4、修正BQ79616的OUT的值,但是未增加计算公式,后期需要自己根据热敏电阻点表自己计算 5、修正BQ79616的读写函数中的size为size-1, 6、增加了busbar电压采集函数,但并未增加相应的数据故障处理函数 7、增加VBAT的电压采集,并修正其显示精度从mV变为0.1V 8、修正电芯均衡程序的寄存器设置 2020-08-11 1、重新修正声明BQ79616的DIAG_PWR_CTRL寄存器 2、修正BQ79616的UV声明 3、修正VC的开路检测中间增加1ms的延时 2020-08-12 1、修改BQ79616的过温和低温声明寄存器的位数 2、BQ79616的温度采集采集启动的最后,重新启动OTUT的启动,否则无能完成温度比较功能 2020-08-13 1、修改BQ79616的采集程序,删除手动校正部分,改为寄存器设置内部校准。 2、手动设置校准值,后期全程调试中应注意采集精度 3、增加BQ芯片配置失败故障,但此故障并不通过485协议传输 4、每次唤醒预先读取上一次关机的标志位,然后把标志位通过CAN传输到上位机上,但并不通过485传输到UPS上(上位机主动读取,并不是定时发送) 5、增加唤醒之后复位上一次关机的标志位和电源故障位 6、删掉了protect.c中的对于时间跨年的代码,使用u32变量,及时跨年也能检测到条件满足,只是可能时间会变短。与增加代码复杂程度来考虑,可以舍弃。 2020-08-14 1、经计算,BQ79616使用本热敏电阻的进行低温保护时,最低保护阈值只能设置成-8C,因此屏蔽该故障模式 2020-08-17 1、修正了CAN2通讯,把CAN_IT_FMP0和CAN_FILTER_FIFO0以及__HAL_CAN_ENABLE_IT(&CAN2_Handler, CAN_IT_FMP0);做了匹配,最重要的是下面这一条语句 if (HAL_CAN_ConfigFilter(&CAN1_Handler, &CAN2_FilerConf) != HAL_OK) return 2; 2、修正了原来的485通讯,485通讯的硬件接口设计中,DE引脚和RX和TX分别连接在了不同的UART3上,而引脚同时初始化,导致引脚输出电平存在问题。且原来RE和DE定义反了 2020-08-18 1、修正了BQ79600的模式切换 2、增加了BQ79600的通讯超时禁止休眠和关机的设定 3、增加了允许BQ79600发送BQ79616的tone和nfault使能 4、修改了EEP的存储地址,页写的起始地址必须是页的起始地址。 2020-08-19 1、调试完成RTC部分,并增加了对读取数据的处理,2405芯片在读取数据的时候会出现1s可读取,1s不可读取的现象,屏蔽掉了不能读取的数据 2、增加了对ALARM 的LED显示控制引脚的初始化 3、修正了对硬件看门狗的引脚定义 2020-08-20 1、增加继电器控制芯片的温度告警反馈 2、增加磁保持控制继电器的控制引脚和反馈引脚的配置 2020-08-24 1、修正ADS1260的复位和下电的引脚宏定义方式 问题: 1、放电过温、低温单独检测;充电过温和低温与静止、故障作为一种状态检测 2、系统中暂时未定义系统状态变量,暂时定义临时变量替代 4、最后需要最一次中断统一匹配 5、把通用IO和复用IO进行匹配 6、Pack_Mes_Tol.Pack_Alm耦合性太强,后期需要优化 7、是否有UPS输出过压检测保护,暂时定义了UPS_Out_OV变量,但未加入到保护系统中 8、电池总压0.1V,小数点后一位小数位;总电流0.1A,小数点后一位小数,偏移量30000;电池额定容量0.1Ah;温度偏移40; 9、protect.c文件耦合性太高 10、后期需要测试反接保护的响应时间 11、BQ79600的RDY和FAULT引脚。程序中使用的是RDY,在电气图中用的是FAULT,后期查看区别,而且还有一个EN引脚 12、BQ79616的采集延时时间、滤波设置、采集频率最佳配合参数 13、BQ79616的保护阈值怎设定 14、编写BQ79616的自测函数BIST 15、C电芯均衡失效告警有相关变量,但是未进行相关动作 16、SPI和485共同使用了一路CRC校验,后期需要分开减少冗余 17、需要在protect中增加BQ79616的保护和复位,并融入到继电器的开断控制中 18、BQ79616的断线检测、内部电压检测等信息为同步到新程序中;均衡未同步到新程序中 19、BQ79616的唤醒、进入休眠和sleep的程序部分需要更改 20、BQ79600和BQ79616的NFAULT和故障读取以及故障复位需要重新梳理,以及故障屏蔽 2020-09-11 1、进行4块BQ79616串联调试,可采集电芯电压、温度、总电压、参考电压等 2、可进行故障的读取 3、可进行工作模式的切换 4、加入了仔坤的SOC、SOH、均衡部分,并且静态调试完成 注意: 1、计数器矫正可以在任何情况下进行,但是不建议在充、放电的情况下进行。而且仅矫正了硬件定时器的CNT和1s、0.75s的计数值。 调试时注意查看矫正帧是否需要人为发送 如果不理想,则改为在接收中断中进行调整 /******在均衡开始之前,应该先读取均衡状态,查看是否有均衡冲突********/