Pārlūkot izejas kodu

加入soh的计算和获取

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 4 gadi atpakaļ
vecāks
revīzija
452107cbd2

+ 1 - 0
Application/app/protocol_old.c

@@ -96,6 +96,7 @@ static int get_response_data(uint8_t *data, uint8_t operate, uint8_t result){
 		memset(&data[head->size], 0, sizeof(times_response_t));
 		times_response_t *resp = (times_response_t *)&data[head->size];
 		resp->charger_cycle = soc_get_cycle();
+		resp->soh = soc_get_soh();
 		head->size += sizeof(times_response_t);
 	}else if (operate == OP_CELL_VOL){
 		data[head->size ++] = CELLS_NUM;

+ 1 - 1
Application/app/protocol_old.h

@@ -43,7 +43,7 @@ typedef struct
 #pragma  pack (push,1)  
 typedef struct
 {
-	uint8_t res1[2];
+	uint16_t soh;
 	uint32_t charger_cycle;
 	uint8_t res2[36];
 }times_response_t;

+ 5 - 0
Application/app/sox/soc.c

@@ -190,6 +190,7 @@ void soc_log(void){
 	soc_debug("C energy: %f\n", _soc.energy);
 	soc_debug("C delta time %f,%f, -- %d\n", max_soc_delta_time, soc_delta_time, force_full_ts);
 	soc_debug("C discharger coefficient = %f\n", _discharger_coefficient);
+	soc_debug("C SOH = %d\n", soc_get_soh());
 	if (chargering){
 		soc_debug("C remain %d\n", charger_remain_time);
 	}
@@ -393,6 +394,10 @@ uint32_t soc_get_cycle(void){
 	return _soc.total_coulomb/MAX_HA/2;
 }
 
+uint8_t soc_get_soh(void){
+	return (_soc.coulomb_max - _soc.coulomb_min)/_soc.coulomb_max * 100;
+}
+
 uint32_t soc_get_charger_remain_time(void){
 	return charger_remain_time;
 }

+ 1 - 0
Application/app/sox/soc.h

@@ -24,6 +24,7 @@ void soc_init(void);
 void soc_update(void);
 int soc_update_by_ocv(void);
 uint32_t soc_get_cycle(void);
+uint8_t soc_get_soh(void);
 uint32_t soc_get_charger_remain_time(void);
 soc_t *get_soc(void);
 void soc_log(void);