#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