代码拉取完成,页面将自动刷新
实验器材: 公司自制电路板 实验目的: 作为模组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是会有什么情况需要注意!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。