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; lblGPS.ForeColor = Gps.Inicializado ? Color.Green : Color.Red;
if (Gps.Inicializado) 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; lblPerformance.Text = Variaveis.OperacaoEmAndamento.DadosPerformance.PerformanceStr;
@ -87,8 +87,9 @@ namespace AgroBase.Forms
if (DalyBMSService.Iniciado) if (DalyBMSService.Iniciado)
{ {
var Bat = DalyBMSService.DadosLeitura; 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) private void AtualizarDadosSensorCorrente(string id, Label lbl)

View File

@ -115,19 +115,34 @@ namespace AgroBase.Services
public void AtualizarConsumo(double distanciaTotalMetrosAtual) 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) if (!Iniciado)
return; return;
_dt = Sensor.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.dt ?? 0; //_dt = Sensor.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.dt ?? 0;
TensaoInstantanea = Sensor.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao)?.atual?.valor ?? 0; _dt = (DateTime.Now - ((bms_iniciado ? bms_ultima_leitura : sen_ultima_leitura) ?? DateTime.Now)).TotalSeconds;
CorrenteInstantanea = (Sensor.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.valor ?? 0) / 1000.0; TensaoInstantanea = bms_iniciado ? bms_tensao : sen_tensao;
PotenciaInstantanea = Sensor.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Potencia)?.atual?.valor ?? 0; CorrenteInstantanea = bms_iniciado ? bms_corrente : sen_corrente;
PotenciaInstantanea = bms_iniciado ? bms_potencia : sen_potencia;
PercentualBateria = Math.Round(FuncoesMatematicas.Map(TensaoInstantanea, VariaveisEquipamento.TensaoMinimaBateria, VariaveisEquipamento.TensaoMaximaBateria, 0.0, 100.0), 2); PercentualBateria = bms_iniciado ? bms_soc : sen_soc;
PercentualBateria = FuncoesMatematicas.Clamp(PercentualBateria, 0, 100); PercentualBateria = FuncoesMatematicas.Clamp(PercentualBateria, 0, 100);
// Verifique se as datas são válidas (não MinValue, MaxValue ou valores anômalos) // 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 AgroBase.Models;
using static AgroBase.Models.Enums; using static AgroBase.Models.Enums;
using OperationControl.Models; using OperationControl.Models;
using System.Windows;
using Application = System.Windows.Application; using Application = System.Windows.Application;
namespace OperationControl.Services namespace OperationControl.Services
@ -266,6 +265,7 @@ namespace OperationControl.Services
if (!sucesso) if (!sucesso)
{ {
Models.Variaveis.MostrarLog("Configurando módulo como base survery in..."); Models.Variaveis.MostrarLog("Configurando módulo como base survery in...");
BaseFix.fimProcesso = null;
BaseFix.inicioProcesso = DateTime.UtcNow; BaseFix.inicioProcesso = DateTime.UtcNow;
await ConfigurarModuloBase(tempo_fixacao: TempoSurveryIn, porta_usb: "com3", porta_saida: "com3"); await ConfigurarModuloBase(tempo_fixacao: TempoSurveryIn, porta_usb: "com3", porta_saida: "com3");
BaseFix.inicioFix = DateTime.UtcNow; BaseFix.inicioFix = DateTime.UtcNow;

View File

@ -310,7 +310,7 @@ namespace OperationControl.Windows
var gpsService = Variaveis.GpsService; var gpsService = Variaveis.GpsService;
lblDispositivos_Status.Content = VariaveisControleOperacao.StatusBase.ToString(); lblDispositivos_Status.Content = VariaveisControleOperacao.StatusBase.ToString();
AplicarStatusModuloNaLabel(lblDispositivos_Status, VariaveisControleOperacao.StatusBase, true, false); 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_GNSS(Variaveis.GpsService?.UltimaLeitura?.ToGnssModel() ?? new AgroBase.Models.Operacoes.OperacaoParametrosDadosGNSSModel(), marker_id: VariaveisControleOperacao.BaseMarkerID, progresso);
AtualizarDadosTela_Heading(Variaveis.GpsService?.UltimaLeitura?.AnguloCarroDefinido ?? 0); AtualizarDadosTela_Heading(Variaveis.GpsService?.UltimaLeitura?.AnguloCarroDefinido ?? 0);
} }