ZDBMS/code_gasguage/GasGaugeV4_13.h

156 lines
10 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __GAS_GAUGE_H
#define __GAS_GAUGE_H
#define mAhVALUE 3600
//************容量统计的接口变量,在调用容量计函数前须将系统变量全部赋值给输入类型的接口变量,调用完成后将输出类型的接口变量赋值回系统变量**************
//************也可以直接用接口变量作为系统变量,但数值恒定不变的系统/接口变量须在每次调用容量计前重新赋值一次**************
//************接口变量的名称、类型、所属RAM区块不可改变************
//对外Uart输出显示若部分参数不需要显示可以不将其赋值给系统的uart输出变量
extern U16 xdata Info_uiRSOC; //对外显示的电量(%变量类型U16 xdata输出
extern U32 xdata Info_ulFCC; //对外显示的满充容量mAh变量类型U32 xdata输出
extern U32 xdata Info_ulRC; //对外显示的剩余容量mAh变量类型U32 xdata输出
extern U16 xdata Info_uiCycleCount; //对外显示的放电循环次数变量类型U16 xdata输出
extern U32 xdata Info_ulDfilterRC; //滤波前的剩余容量值对外显示变量类型U32输出
extern U32 xdata Info_ulTempDsgFcc; //计算的可放电容量值对外显示变量类型U32输出
extern U16 xdata Info_uiSocDecTime; //剩余电量百分比(%的变化率对外显示变量类型U16输出
extern U16 xdata Info_uiRsocCnt; //剩余电量百分比(%变化计时对外显示变量类型U16输出
//保护标志
extern BOOL bOCD1; //放电过流1标志变量类型BOOL输入
extern BOOL bOCD2; //放电过流2标志变量类型BOOL输入
extern BOOL bOCC; //充电过流标志变量类型BOOL输入
extern BOOL bAFE_SC; //短路标志变量类型BOOL输入
extern BOOL bUV; //单节电芯欠压标志变量类型BOOL输入
extern BOOL bOV; //单节电芯过压标志变量类型BOOL输入
//存入E2或者赋值为常量的参数
extern U16 xdata E2uiVOC[10]; //OCV电压数组分别对应静置时10%容量100%容量共10个电压点且E2uiVOC_D[0]对应10%、E2uiVOC_D[9]对应100%变量类型U16 xdata输入
extern U32 xdata E2ulDesignCapacity; //设计容量变量类型U32 xdata输入
extern U32 xdata E2ulFCC; //满充容量变量类型U32 xdata输入\输出存入E2
extern U32 xdata E2ulDfRC; //RSOC滤波前的剩余容量变量类型U32 xdata输入\输出存入E2
extern U8 xdata E2ucSOC; //滤波后用于对外显示的RSOC变量类型U8 xdata输入\输出存入E2
extern U16 xdata E2uiChgEndVol; //充电截止电压变量类型U16 xdata输入
extern S16 xdata E2siChgEndCurr; //充电截止电流变量类型S16 xdata输入
extern U8 xdata E2ucChgEndDelay; //充电截止延时变量类型U8 xdata输入
extern U16 xdata E2uiDsgEndVol; //放电截止电压变量类型U16 xdata输入
extern S32 xdata E2slDsgEndCurr; //放电截止电流变量类型S32 xdata输入
extern U8 xdata E2ucDsgEndDelay; //放电截止延时变量类型U8 xdata输入
extern U8 xdata E2ucDsgEndFlg; //放电截止标志变量类型U8 xdata输入\输出存入E2
extern U16 xdata E2uiOVvol; //单节过压阈值变量类型U16 xdata输入
extern U16 xdata E2uiUVvol; //单节欠压阈值变量类型U16 xdata输入
extern U32 xdata E2ulCycleThreshold; //循环次数更新阈值变量类型U32 xdata输入
extern U32 xdata E2ulCycleThresholdCount;//循环电量计数变量类型U32 xdata输入\输出存入E2
extern U16 xdata E2uiCycleCount; //循环次数变量类型U16 xdata输入\输出存入E2
extern U16 xdata E2uiLastCCount; //上次更新容量时的循环次数 变量类型U16 xdata输入\输出存入E2
extern S16 xdata E2siDfilterCur; //零电流窗口变量类型S16 xdata输入
extern U16 xdata E2uiDsgAdjLowTemp; //放电末端调节的最低温度,数值 = 温度×10 + 2731变量类型U16 xdata输入
extern S32 xdata E2slDsgAdjMaxCurr; //放电末端调节的最大放电电流(mA)变量类型S32 xdata输入
extern U8 xdata E2ucDsgAdjLowFlg; //低温或大电流放电欠压时允许SOC跳至1%的标志1允许0禁止变量类型U8 xdata输入
extern U8 xdata E2ucDsgAdjLowSoc; //低温或大电流放电欠压时允许SOC跳至1%的阈值(%变量类型U8 xdata输入
extern U8 xdata E2ucFullDsgDelay; //静置时判断满放的延时S变量类型U8 xdata输入
extern U32 xdata E2ulLoadEndVol; //负载或电芯总压截止总电压mV变量类型U32 xdata输入
extern U32 xdata E2ulChgerEndVol; //充电器或电芯总压截止总电压mV变量类型U32 xdata输入
extern U8 xdata E2ucChgerEndDelay; //充电器或电芯总压截止延时S变量类型U8 xdata输入
extern U32 xdata E2ulIdleSocTimes; //需要调节SOC的自唤醒次数变量类型U32 xdata输入
extern U8 xdata E2ucInitSocDif; //第一次上电容量条件差值30%一般不用修改变量类型U8 xdata输入
extern U8 xdata E2ucInitUpSoc; //第一次上电上调容量的OCV容量阈值变量类型U8 xdata输入
extern U8 xdata E2ucChgAdjRatio; //充电末端调节的比例系数约等于充电时电压从OCV 100%电压~充电截止电压充进的电量百分比(%)(暂定)变量类型U8 xdata输入
extern U16 xdata E2uiTempFCC_K1; //根据温度调节FCC一阶系数变量类型U16 xdata输入
extern U16 xdata E2uiTempFCC_K2; //根据温度调节FCC二阶系数变量类型U16 xdata输入
extern U16 xdata E2uiTempFCC_B; //根据温度调节FCC偏移量变量类型U16 xdata输入
extern U16 xdata E2uiDsgCorrectVol; //开始放电末端修调的电压mV变量类型U16 xdata输入
extern U8 xdata E2ucDsgCorrectSOC; //开始放电末端修调的容量(%变量类型U8 xdata输入
extern U8 xdata E2ucDsgVolDet; //放电末端电压检测幅度mV变量类型U8 xdata输入
extern U16 xdata E2uiChgCorrectVol; //开始充电末端修调的电压mV变量类型U16 xdata输入
extern U8 xdata E2ucChgCorrectSOC; //开始充电末端修调的容量(%变量类型U8 xdata输入
extern U8 xdata E2ucChg100Ratio; //满足满充条件后上调1%间隔时间S变量类型U8 xdata输入
extern U8 xdata E2ucChgCurRatio; //充电时调节滤波前剩余容量的充电倍率单位0.1C变量类型U8 xdata输入
extern U8 xdata E2ucChgChangeSocDif; //充电时修改滤波前剩余容量的容量差值(%变量类型U8 xdata输入
extern U8 xdata E2ucChgChangeSocRatio; //充电时在CHGCUR_RATIO充电倍率下OCV容量上抬的大致幅度(%)变量类型U8 xdata输入
extern U8 xdata E2ucFccUpdatePercent; //单次容量学习更新的最大百分比(%变量类型U8 xdata输入
extern U16 xdata E2uiChgEndTemp; //充电截止温度,数值 = X×10 + 2731变量类型U16 xdata输入
extern U16 xdata E2uiDsgEndTemp; //放电截止温度,数值 = X×10 + 2731变量类型U16 xdata输入
extern U16 xdata E2ui_CYCLECOUNTA; //根据循环次数调节FCC的衰减阶段一起始循环次数变量类型U16 xdata输入
extern U16 xdata E2ui_CYCLECOUNTA_K; //根据循环次数调节FCC的衰减阶段一衰减斜率=(CYCLECOUNTB - CYCLECOUNTA)/10变量类型U16 xdata输入
extern U16 xdata E2ui_CYCLECOUNTA_B; //根据循环次数调节FCC的衰减阶段一衰减截距=(CYCLECOUNTB *100 -CYCLECOUNTA *95) / (CYCLECOUNTB - CYCLECOUNTA)变量类型U16 xdata输入
extern U16 xdata E2ui_CYCLECOUNTB; //调节FCC的衰减阶段二起始循环次数变量类型U16 xdata输入
extern U16 xdata E2ui_CYCLECOUNTB_K; //调节FCC的衰减阶段二衰减斜率=(CYCLECOUNTC -CYCLECOUNTB)/10变量类型U16 xdata输入
extern U16 xdata E2ui_CYCLECOUNTB_B; //调节FCC的衰减阶段二衰减截距=(CYCLECOUNTC *95 -CYCLECOUNTB *85) /(CYCLECOUNTC -CYCLECOUNTB)变量类型U16 xdata输入
extern U16 xdata E2ui_CYCLECOUNTC; //调节FCC的衰减阶段三起始循环次数变量类型U16 xdata输入
extern U16 xdata E2uiUpdateCycleCount; //上次更新容量后需再次更新容量的循环次数变量类型U16 xdata输入
//其他输入的系统全局变量
extern S32 xdata Info_slCurr; //经零电流窗口过滤后用于判断充放电状态的主控回路电流mA变量类型S32 xdata输入
extern U16 xdata Info_uiTemp; //对外显示的电芯温度,数值 = X×10 + 2731变量类型U16 xdata输入
extern U32 xdata Info_ulVoltage; //电芯总电压U32 xdata输入
extern U16 data uiCellVmaxG; //当前电压最高的电芯电压变量类型U16 data输入
extern U16 data uiCellVminG; //当前电压最低的电芯电压变量类型U16 data输入
extern U8 data ucCellNum; //电芯串数变量类型U8 data输入
//extern S32 xdata slCadcCurAverage; //用于库伦积分的平均电流主控充放电回路变量类型S32 xdata输入
extern S32 xdata slAdcCur2; //用于库伦积分的平均电流辅控放电回路如没有可以恒为0变量类型S32 xdata输入
extern S16 xdata siCurCompens; //系统功耗电流补偿预留可以恒为0变量类型U16 xdata输入
//*****************************************************************
//************************容量统计的接口函数,每次调用功能函数时,就会分别调用一次接口函数输入、输出容量计相关的变量值*********************************
//**********************根据开发的需求不同,可直接使用容量计的变量作为系统全局变量**********************
//**********************或者重新自定义全局变量,并编写接口函数将自定义的数值输入给容量计变量**********************
extern void GasGaugeVarIn(void); //变量值输入容量计,每个容量计功能函数执行时均在第一步调用该接口函数
extern void GasGaugeVarOut(void); //容量计变量值输出,每个容量计功能函数执行时均在最后一步调用该接口函数
//*******************************************************************************
//************************容量统计的功能实现函数*********************************
extern void GasGaugeInit(void); //上电/开机初始化和欠压低功耗MCU不断电下唤醒时调用
extern void GasGaugeIdle(void); //静置低功耗MCU不断电下自唤醒时调用
extern void GasGaugeWkUp(void); //静置低功耗MCU不断电下唤醒准备正常工作前调用
extern void GasGaugeManage(void); //工作功耗状态下的容量管理
//*******************************************************************************
//**********************容量统计的内部变量,仅作参考,无需作任何处理***********************
extern BOOL bCHGEndFlg; //充电截止标志
extern BOOL bCHG100Flg; //充电显示100标志
extern BOOL bVDQFlg; //容量学习标志
extern BOOL bFCCUpdateFlg; //容量更新标志
extern U16 idata uiRCCharge; //充电容量统计
extern U16 idata uiRCDischarge; //放电容量统计
extern U16 idata uiTempBK; //温度备份
//extern U16 idata uiChgVolBK; //充电电压备份
extern U16 idata uiDsgVolBK; //放电电压备份
extern U32 idata ulTotalVolBK; //总电压备份
extern U16 xdata uiVolSpeedCnt; //充放电末端电压变化率
extern U16 xdata uiDfRSOC; //滤波前RSOC
extern U8 xdata ucDSGEndDelay1;
extern U8 xdata ucDSGEndDelay2;
extern U8 xdata ucCHG100Delay;
extern U8 xdata ucCHGEndDelay;
extern U16 xdata uiDfRSOCBK; //滤波前RSOC的上一秒备份
extern U16 xdata uiFullDSGDelay;
extern U16 xdata uiRSOCCnt;
extern S32 xdata slCur; //充/放电总电流
extern S32 xdata slCurBK; //充/放电总电流的上一秒备份
extern U32 xdata ulFccCount; //累计充电电量
extern U32 xdata ulCurAdjSpeed;
extern U32 xdata ultempfcc;
extern BOOL bCHGFlg;
extern U8 xdata ucCHGFlgCounter;
extern U8 xdata flashcode[6];
extern U8 code flashcheck[6];
extern BOOL bCHGRcVolFlg;
extern U8 xdata ucCHGRcVolFlgCounter;
extern U32 xdata ulIdleCnt;
//*****************************************************************************************
#endif