latest version

This commit is contained in:
2026-03-10 13:17:00 +03:00
parent 5ea401f34d
commit f410ea90aa
179 changed files with 151928 additions and 110001 deletions

54
Core/Src/meter.c Executable file
View File

@@ -0,0 +1,54 @@
/*
* meter.c
*
* Created on: 27 сент. 2024 г.
* Author: root
*/
#include "meter.h"
#include "charger_config.h"
#include "charger_control.h"
METER_t METER;
// Функция для расчета и накопления энергии c дробной частью без счетчиков
void METER_CalculateEnergy() {
// Проверяем, что индекс находится в пределах массива
METER.online = 0;
if(CONN.connState == Charging){
METER.enable = 1;
}else{
METER.enable = 0;
}
uint32_t currentTick = HAL_GetTick(); // Получаем текущее время в миллисекундах
uint32_t elapsedTimeMs = currentTick - METER.lastTick; // Вычисляем время, прошедшее с последнего вызова в секундах
METER.lastTick = currentTick; // Обновляем время последнего вызова для текущего коннектора
uint32_t energyWs = CONN.Power * elapsedTimeMs / 1000; // Рассчитываем энергию в ватт-секундах за прошедший промежуток времени
//Расчет энергии теперь идет всегда, смещение берем суммарное
METER.EnergyPSU_Ws += energyWs;
// Абсолютное значение энергии разъема складывается из накопленной дробной части и значения со счетчиков
METER.AbsoluteEnergy = (uint32_t)METER.EnergyPSU_Ws/3600; //переводим в Вт*час
if(METER.enable) {
//enabled state
CONN.Energy = METER.AbsoluteEnergy - METER.EnergyOffset;//переводим в Вт*час
}else{
// Reset statе
CONN.Energy = 0;
METER.EnergyOffset = METER.AbsoluteEnergy;
}
}