Ajustado culomb counter

This commit is contained in:
Diego Freitas 2026-03-03 13:44:19 -03:00
parent b090ed7495
commit 84962cb7de
4 changed files with 28 additions and 12 deletions

View File

@ -75,7 +75,7 @@ namespace AgroBase.Forms
lblGPS.ForeColor = Gps.Inicializado ? Color.Green : Color.Red;
if (Gps.Inicializado)
{
lblGPSDetalhes.Text = Gps.QualidadeFix.ToString() + " - " + Gps.PrecisaoCm.ToString("0.00") + " cm";
lblGPSDetalhes.Text = $"{Gps.QualidadeFix} - {Gps.PrecisaoCm:F2} cm";
}
lblPerformance.Text = Variaveis.OperacaoEmAndamento.DadosPerformance.PerformanceStr;
@ -87,8 +87,9 @@ namespace AgroBase.Forms
if (DalyBMSService.Iniciado)
{
var Bat = DalyBMSService.DadosLeitura;
lblVBat.Text = $"Bateria: {Bat.Pack.TensaoTotal_V:0.00}V {Bat.Pack.Corrente_A:0.00}A {Bat.Pack.SOC_percent:0.00}% {Bat.TemperaturaMax:0.00}ºC";
lblVBat.Text = $"Bateria: {Bat.Pack.TensaoTotal_V:F2}V {Bat.Pack.Corrente_A:F2}A {Bat.Pack.SOC_percent:F2}% {Bat.TemperaturaMax:Fw}ºC";
}
lblVBat.ForeColor = DalyBMSService.Iniciado ? Color.Green : Color.Red;
}
private void AtualizarDadosSensorCorrente(string id, Label lbl)

View File

@ -115,19 +115,34 @@ namespace AgroBase.Services
public void AtualizarConsumo(double distanciaTotalMetrosAtual)
{
var Sensor = Variaveis.OperacaoEmAndamento.DispSen?.Dados?.Sensores?.FirstOrDefault(x => x.ID == "AB36V");
var DalyBms = DalyBMSService.DadosLeitura;
bool bms_iniciado = DalyBms?.Iniciado ?? false;
DateTime? bms_ultima_leitura = DalyBms?.UltimoComandoRecebido;
double bms_tensao = DalyBms?.Pack?.TensaoTotal_V ?? 0;
double bms_corrente = DalyBms?.Pack?.Corrente_A ?? 0;
double bms_potencia = bms_tensao * bms_corrente;
double bms_soc = DalyBms?.Pack?.SOC_percent ?? 0;
Iniciado = Sensor?.Inicializado ?? false;
var Sensor = Variaveis.OperacaoEmAndamento.DispSen?.Dados?.Sensores?.FirstOrDefault(x => x.ID == "AB36V");
bool sen_iniciado = Sensor?.Inicializado ?? false;
DateTime? sen_ultima_leitura = Sensor?.UltimaLeitura;
double sen_dt = Sensor?.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.dt ?? 0;
double sen_tensao = Sensor?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao)?.atual?.valor ?? 0;
double sen_corrente = (Sensor?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.valor ?? 0) / 1000.0;
double sen_potencia = Sensor?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Potencia)?.atual?.valor ?? 0;
double sen_soc = Math.Round(FuncoesMatematicas.Map(sen_tensao, VariaveisEquipamento.TensaoMinimaBateria, VariaveisEquipamento.TensaoMaximaBateria, 0.0, 100.0), 2);
Iniciado = bms_iniciado || sen_iniciado;
if (!Iniciado)
return;
_dt = Sensor.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.dt ?? 0;
TensaoInstantanea = Sensor.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao)?.atual?.valor ?? 0;
CorrenteInstantanea = (Sensor.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.valor ?? 0) / 1000.0;
PotenciaInstantanea = Sensor.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Potencia)?.atual?.valor ?? 0;
PercentualBateria = Math.Round(FuncoesMatematicas.Map(TensaoInstantanea, VariaveisEquipamento.TensaoMinimaBateria, VariaveisEquipamento.TensaoMaximaBateria, 0.0, 100.0), 2);
//_dt = Sensor.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.dt ?? 0;
_dt = (DateTime.Now - ((bms_iniciado ? bms_ultima_leitura : sen_ultima_leitura) ?? DateTime.Now)).TotalSeconds;
TensaoInstantanea = bms_iniciado ? bms_tensao : sen_tensao;
CorrenteInstantanea = bms_iniciado ? bms_corrente : sen_corrente;
PotenciaInstantanea = bms_iniciado ? bms_potencia : sen_potencia;
PercentualBateria = bms_iniciado ? bms_soc : sen_soc;
PercentualBateria = FuncoesMatematicas.Clamp(PercentualBateria, 0, 100);
// Verifique se as datas são válidas (não MinValue, MaxValue ou valores anômalos)

View File

@ -8,7 +8,6 @@ using AgroBase.Services;
using AgroBase.Models;
using static AgroBase.Models.Enums;
using OperationControl.Models;
using System.Windows;
using Application = System.Windows.Application;
namespace OperationControl.Services
@ -266,6 +265,7 @@ namespace OperationControl.Services
if (!sucesso)
{
Models.Variaveis.MostrarLog("Configurando módulo como base survery in...");
BaseFix.fimProcesso = null;
BaseFix.inicioProcesso = DateTime.UtcNow;
await ConfigurarModuloBase(tempo_fixacao: TempoSurveryIn, porta_usb: "com3", porta_saida: "com3");
BaseFix.inicioFix = DateTime.UtcNow;

View File

@ -310,7 +310,7 @@ namespace OperationControl.Windows
var gpsService = Variaveis.GpsService;
lblDispositivos_Status.Content = VariaveisControleOperacao.StatusBase.ToString();
AplicarStatusModuloNaLabel(lblDispositivos_Status, VariaveisControleOperacao.StatusBase, true, false);
double progresso = (gpsService?.BaseFix?.PosicaoBaseFixada ?? false) ? gpsService?.BaseFix?.Progresso ?? double.NaN : double.NaN;
double progresso = !(gpsService?.BaseFix?.PosicaoBaseFixada ?? false) ? gpsService?.BaseFix?.Progresso ?? double.NaN : double.NaN;
AtualizarDadosTela_GNSS(Variaveis.GpsService?.UltimaLeitura?.ToGnssModel() ?? new AgroBase.Models.Operacoes.OperacaoParametrosDadosGNSSModel(), marker_id: VariaveisControleOperacao.BaseMarkerID, progresso);
AtualizarDadosTela_Heading(Variaveis.GpsService?.UltimaLeitura?.AnguloCarroDefinido ?? 0);
}