Tratamentos e alerta de NCP desconectado

This commit is contained in:
Diego Freitas 2026-03-13 16:30:21 -03:00
parent ffbd86d8a4
commit 6b87783f43
4 changed files with 64 additions and 32 deletions

View File

@ -1082,6 +1082,8 @@ namespace AgroBase.Models
if (_Controle.ticks_sem_resposta != DateTime.MinValue)
{
if (_Controle.ticks_sem_resposta.AddMilliseconds(max_ticks_sem_resposta) < agora)
{
if (Variaveis.OperacaoEmAndamento?.Sensoriamento?.Controle?.RPM_SP > 0)
{
Variaveis.OperacaoEmAndamento.Sensoriamento?.InserirLog(T_Code.Npc, StatusModulo.Falha, 0, "Muito tempo sem receber novo comando do Manager Worker! Parando Movimento!");
Console.WriteLine("Muito tempo sem receber novo comando do Manager Worker! Parando Movimento!");
@ -1090,7 +1092,10 @@ namespace AgroBase.Models
("velocidade_sp", 0)
);
}
}
else if (_Controle.ticks_sem_resposta.AddMilliseconds(min_ticks_sem_resposta) < agora)
{
if (Variaveis.OperacaoEmAndamento?.Sensoriamento?.Controle?.RPM_SP > Variaveis.OperacaoEmAndamento.Parametros.Controle.MovVelocidadeCErvasPercent)
{
Variaveis.OperacaoEmAndamento.Sensoriamento?.InserirLog(T_Code.Npc, StatusModulo.Alerta, 80, "Muito tempo sem receber novo comando do Manager Worker! Reduzindo Velocidade!");
Console.WriteLine("Muito tempo sem receber novo comando do Manager Worker! Reduzindo Velocidade!");
@ -1101,6 +1106,7 @@ namespace AgroBase.Models
}
}
}
}
private (List<List<GPSModel>>, List<double>) ProjetarCorredores()

View File

@ -90,6 +90,8 @@ namespace AgroBase.Services.Operadores
var _Controle = Variaveis.OperacaoEmAndamento.Controle;
if (Variaveis.OperacaoEmAndamento.Parametros.Controle.MovimentoAutomatico)
{
if (_Controle.PercentualVelocidadeSP > 0)
{
_Controle.PercentualVelocidadeSP = 0;
RedisService.AtualizarCampos(
@ -97,8 +99,11 @@ namespace AgroBase.Services.Operadores
("velocidade_sp", _Controle.PercentualVelocidadeSP)
);
}
}
if (Variaveis.OperacaoEmAndamento.Parametros.Controle.DirecionalAutomatico)
{
if (_Controle.Angulo != 0)
{
_Controle.Angulo = 0;
RedisService.AtualizarCampos(
@ -106,14 +111,19 @@ namespace AgroBase.Services.Operadores
("angulo_sp", _Controle.Angulo)
);
}
}
if (Variaveis.OperacaoEmAndamento.Parametros.Controle.PulverizadorAutomatico)
{
if (_Controle.Bicos.Any(x => x.ComandoAtuar))
{
_Controle.Bicos.ForEach(x => x.ComandoAtuar = false);
RedisService.AtualizarCampos(
CtxKey.DadosControle,
("angulo_sp", _Controle.Angulo),
("velocidade_sp", _Controle.PercentualVelocidadeSP),
("controle_bicos", _Controle.Bicos.ToDictionary(x => x.Posicao - 1, x => x.ComandoAtuar))
);
}
}
Variaveis.OperacaoEmAndamento.AtualizaInformacoesControleOperacao();
}

View File

@ -88,9 +88,9 @@ namespace OperationControl.ViewModels.Views.Operacao
}
public void AtualizarStatus(StatusModulo status, string titulo, string linha1, string linha2, string status_str, string resumo)
public void AtualizarStatus(StatusModulo status, string titulo, StatusOperacao status_op, string linha1, string linha2, string status_str, string resumo)
{
ContextoSelecionado = titulo;
ContextoSelecionado = $"{titulo} • {status_op}";
TituloStatus = linha1;
MotivoPrincipal = linha2;
BadgeTexto = status_str;

View File

@ -370,6 +370,21 @@ namespace OperationControl.ViewModels
var eventos = new List<MotivoTopBarModel>();
if (obj.ModulosSaude?.All(x => (x?.status ?? StatusModulo.Desconectado) == StatusModulo.Desconectado) ?? false)
{
// ============================
// 0) NCP desconectado
// ============================
eventos.Add(new MotivoTopBarModel
{
Prioridade = 1100,
Fonte = "Núcleo Central de Processamento",
Titulo = "NÚCLEO CENTRAL DE PROCESSAMENTO DESCONECTADO",
Descricao = "O núcleo central de processamento foi desconectado, tentando reconectar...",
StatusVisual = StatusModulo.Falha
});
}
// ============================
// 1) Emergência
// ============================
@ -567,6 +582,7 @@ namespace OperationControl.ViewModels
_viewOperacaoTop?._vm.AtualizarStatus(
statusVisual,
rover.RoverId,
obj?.Operacao?.Status ?? StatusOperacao.NaoIniciado,
linha1,
linha2,
badge,
@ -579,7 +595,7 @@ namespace OperationControl.ViewModels
{
System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
_viewOperacaoTop?._vm.AtualizarStatus(status, titulo, linha1, linha2.Replace("\n\n", " • "), status_str, resumo);
_viewOperacaoTop?._vm.AtualizarStatus(status, titulo, StatusOperacao.Parametrizando, linha1, linha2.Replace("\n\n", " • "), status_str, resumo);
}));
}