ajustes de fluxo
This commit is contained in:
parent
23852cd6c4
commit
bc9fc9a0b8
|
|
@ -1636,9 +1636,9 @@ namespace AgroBase.Forms.Operacoes
|
|||
|
||||
var logVent = LogsOperacao[idxMomentoAtual].CoolerControl;
|
||||
lblVentilacaoModo.Text = $"Modo: {logVent?.Modo ?? CoolerControlService.CoolerMode.Off}";
|
||||
lblVentilacaoModo.Text = $"Temperatura: {logVent?.Temperatura ?? 0:F2} ºC";
|
||||
lblVentilacaoTemperatura.Text = $"Temperatura: {logVent?.Temperatura ?? 0:F2} ºC";
|
||||
lblVentilacaoRLIN.Text = $"RLIN: {logVent?.EstadoEntrada ?? Enums.Estado.Desligado} ({logVent?.LeituraEntrada ?? Enums.Estado.Desligado})";
|
||||
lblVentilacaoRLIN.Text = $"RLOUT: {logVent?.EstadoSaida ?? Enums.Estado.Desligado} ({logVent?.LeituraSaida ?? Enums.Estado.Desligado})";
|
||||
lblVentilacaoRLOUT.Text = $"RLOUT: {logVent?.EstadoSaida ?? Enums.Estado.Desligado} ({logVent?.LeituraSaida ?? Enums.Estado.Desligado})";
|
||||
}
|
||||
|
||||
private void AtualizarInformacoesComandos()
|
||||
|
|
|
|||
|
|
@ -740,14 +740,17 @@ namespace AgroBase
|
|||
|
||||
public static void EnviarComandoAtuador(S_Code Componente, string ID, bool? Status = null, double? Valor = null, bool Forcar = false)
|
||||
{
|
||||
var DispAtu = Variaveis.OperacaoEmAndamento.DispAtu;
|
||||
if (!DispAtu.Dados.Conectado)
|
||||
return;
|
||||
|
||||
if (!Forcar)
|
||||
{
|
||||
if (!Variaveis.OperacaoEmAndamento.Iniciado) return;
|
||||
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Atu && x.ComponentesEmUso[ID].Item2);
|
||||
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Atu && x.ComponentesEmUso != null && x.ComponentesEmUso[ID].Item2);
|
||||
if (!componente_em_uso && (Status ?? false)) return; // Impede execucao de comandos que liguem componentes quando estiver marcado para nao utilizar
|
||||
}
|
||||
|
||||
var DispAtu = Variaveis.OperacaoEmAndamento.DispAtu;
|
||||
int id_num = -1;
|
||||
CanMessagePosicaoDados posicao = CanMessagePosicaoDados.Command1;
|
||||
byte[] data = null;
|
||||
|
|
@ -794,9 +797,13 @@ namespace AgroBase
|
|||
|
||||
public static void EnviarComandoSensoriamento(S_Code Componente, string ID, dynamic Status, bool Forcar = false)
|
||||
{
|
||||
var DispSen = Variaveis.OperacaoEmAndamento.DispSen;
|
||||
if (!DispSen.Dados.Conectado)
|
||||
return;
|
||||
|
||||
if (!Forcar)
|
||||
{
|
||||
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Sen && x.ComponentesEmUso[ID].Item2);
|
||||
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Sen && x.ComponentesEmUso != null && x.ComponentesEmUso[ID].Item2);
|
||||
if (!componente_em_uso)
|
||||
{
|
||||
// Impede execucao de comandos que liguem componentes quando estiver marcado para nao utilizar
|
||||
|
|
@ -805,8 +812,6 @@ namespace AgroBase
|
|||
}
|
||||
}
|
||||
|
||||
var DispSen = Variaveis.OperacaoEmAndamento.DispSen;
|
||||
|
||||
int id_num = -1;
|
||||
CanMessagePosicaoDados posicao = CanMessagePosicaoDados.Command1;
|
||||
byte[] data = null;
|
||||
|
|
|
|||
|
|
@ -858,33 +858,33 @@ namespace AgroBase.Models
|
|||
case T_Code.Mov:
|
||||
if (Variaveis.OperacaoEmAndamento.DispMvd != null)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(m => d.Add(m.MovMotor.Mod_ID, (true, m.MovMotor.Comandar)));
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos?.ForEach(m => d.Add(m.MovMotor.Mod_ID, (true, m.MovMotor.Comandar)));
|
||||
}
|
||||
break;
|
||||
case T_Code.Dir:
|
||||
if (Variaveis.OperacaoEmAndamento.DispMvd != null)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(m => d.Add(m.DirMotor.Mod_ID, (true, m.DirMotor.Comandar)));
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos?.ForEach(m => d.Add(m.DirMotor.Mod_ID, (true, m.DirMotor.Comandar)));
|
||||
}
|
||||
break;
|
||||
case T_Code.Atu:
|
||||
if (Variaveis.OperacaoEmAndamento.DispAtu != null)
|
||||
{
|
||||
var da = Variaveis.OperacaoEmAndamento.DispAtu.Dados;
|
||||
da.Sensores.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
||||
da.BombasPressurizadoras.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
||||
da.BicosPulverizadores.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
||||
da.Servos.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||
da.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
||||
da.BombasPressurizadoras?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
||||
da.BicosPulverizadores?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
||||
da.Servos?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||
}
|
||||
break;
|
||||
case T_Code.Sen:
|
||||
if (Variaveis.OperacaoEmAndamento.DispSen != null)
|
||||
{
|
||||
var ds = Variaveis.OperacaoEmAndamento.DispSen.Dados;
|
||||
ds.Sensores.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
||||
ds.Sinaleiros.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||
ds.Servos.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||
ds.Reles.ForEach(r => d.Add(r.ID, (r.Mandatorio, r.Controlar)));
|
||||
ds.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
||||
ds.Sinaleiros?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||
ds.Servos?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||
ds.Reles?.ForEach(r => d.Add(r.ID, (r.Mandatorio, r.Controlar)));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,10 +24,10 @@ namespace AgroBase.Services
|
|||
// Estado interno
|
||||
public CoolerMode ModoAtual { get; private set; } = CoolerMode.Off;
|
||||
public Estado CoolerEntradaEstado { get; private set; } = Estado.Desligado;
|
||||
public Estado CoolerEntradaEstadoAnterior { get; private set; } = Estado.Desligado;
|
||||
public Estado CoolerSaidaEstado { get; private set; } = Estado.Desligado;
|
||||
public Estado CoolerEntradaLeitura => ReleCoolerEntrada?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.EstadoLeitura)?.atual?.valor ?? Estado.Desligado;
|
||||
public Estado CoolerSaidaLeitura => ReleCoolerSaida?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.EstadoLeitura)?.atual?.valor ?? Estado.Desligado;
|
||||
|
||||
public Estado CoolerSaidaEstadoAnterior { get; private set; } = Estado.Desligado;
|
||||
|
||||
public double? TemperaturaFiltrada { get; private set; }
|
||||
public DateTime UltimaMudancaModo { get; private set; } = DateTime.MinValue;
|
||||
|
||||
|
|
@ -103,6 +103,19 @@ namespace AgroBase.Services
|
|||
{
|
||||
Variaveis.OperacaoEmAndamento.Sensoriamento?.InserirLog(T_Code.Npc, StatusModulo.Alerta, 50, "Temperatura limite excedida no NPC");
|
||||
}
|
||||
else if (_alertaAnterior && !AlertaTemperaturaCritica)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.Sensoriamento?.InserirLog(T_Code.Npc, StatusModulo.Alerta, 100, "Temperatura limite recuperada no NPC");
|
||||
}
|
||||
|
||||
if (Variaveis.Fechando)
|
||||
{
|
||||
ModoAtual = CoolerMode.Off;
|
||||
CoolerEntradaEstado = Estado.Desligado;
|
||||
CoolerSaidaEstado = Estado.Desligado;
|
||||
EnviarComando();
|
||||
return;
|
||||
}
|
||||
|
||||
if (ModoAtual == CoolerMode.Manual)
|
||||
return;
|
||||
|
|
@ -140,9 +153,6 @@ namespace AgroBase.Services
|
|||
break;
|
||||
}
|
||||
|
||||
if (Variaveis.Fechando)
|
||||
novoModo = CoolerMode.Off;
|
||||
|
||||
CoolerEntradaEstado = novoModo == CoolerMode.IntakeAndExhaust ? Estado.Ligado : Estado.Desligado;
|
||||
CoolerSaidaEstado = novoModo == CoolerMode.ExhaustOnly || novoModo == CoolerMode.IntakeAndExhaust ? Estado.Ligado : Estado.Desligado;
|
||||
|
||||
|
|
@ -157,10 +167,16 @@ namespace AgroBase.Services
|
|||
|
||||
private void EnviarComando()
|
||||
{
|
||||
if (ReleCoolerEntrada != null && ReleCoolerEntrada._EstadoLeitura != CoolerEntradaEstado)
|
||||
if (ReleCoolerEntrada != null && CoolerEntradaEstadoAnterior != CoolerEntradaEstado)
|
||||
{
|
||||
GeneralJoystick.EnviarComandoSensoriamento(ReleCoolerEntrada.Componente, ReleCoolerEntrada.ID, CoolerEntradaEstado);
|
||||
if (ReleCoolerSaida != null && ReleCoolerSaida._EstadoLeitura != CoolerSaidaEstado)
|
||||
CoolerEntradaEstadoAnterior = CoolerEntradaEstado;
|
||||
}
|
||||
if (ReleCoolerSaida != null && CoolerSaidaEstadoAnterior != CoolerSaidaEstado)
|
||||
{
|
||||
GeneralJoystick.EnviarComandoSensoriamento(ReleCoolerSaida.Componente, ReleCoolerSaida.ID, CoolerSaidaEstado);
|
||||
CoolerSaidaEstadoAnterior = CoolerSaidaEstado;
|
||||
}
|
||||
}
|
||||
|
||||
public CoolerControlDataModel GetResumo()
|
||||
|
|
@ -173,8 +189,8 @@ namespace AgroBase.Services
|
|||
TemperaturaTurbo = TempTurbo,
|
||||
EstadoEntrada = CoolerEntradaEstado,
|
||||
EstadoSaida = CoolerSaidaEstado,
|
||||
LeituraEntrada = CoolerEntradaLeitura,
|
||||
LeituraSaida = CoolerSaidaLeitura,
|
||||
LeituraEntrada = ReleCoolerEntrada?._EstadoLeitura ?? Estado.Desligado,
|
||||
LeituraSaida = ReleCoolerSaida?._EstadoLeitura ?? Estado.Desligado,
|
||||
Temperatura = TemperaturaFiltrada ?? 0,
|
||||
Alerta = AlertaTemperaturaCritica
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1297,28 +1297,35 @@ namespace AgroBase.Services
|
|||
|
||||
public static void AtualizaDadosRedis()
|
||||
{
|
||||
GPSModel posicaoAtual = Variaveis.OperacaoEmAndamento.Simulando ? historicoPosicao.Peek() : UltimaLeitura;
|
||||
try
|
||||
{
|
||||
GPSModel posicaoAtual = Variaveis.OperacaoEmAndamento.Simulando ? historicoPosicao.Peek() : UltimaLeitura;
|
||||
|
||||
RedisService.AtualizarCampos(
|
||||
RedisService.ModKey(T_Code.Gps),
|
||||
("conectado", Iniciado),
|
||||
("freq_base", TaxaAmostragemHz),
|
||||
("lat", posicaoAtual.Latitude),
|
||||
("lon", posicaoAtual.Longitude),
|
||||
("theta", posicaoAtual.AnguloCarroDefinido),
|
||||
("fix", (int)posicaoAtual.QualidadeFix),
|
||||
("rtk", posicaoAtual.IdadeCorrecao < rtk_timeout),
|
||||
("hAcc", posicaoAtual.PrecisaoCm),
|
||||
("nSatelites", posicaoAtual.NumeroSatelites),
|
||||
("freq.posicao", posicaoAtual.TimestampPos.frequencia),
|
||||
("freq.orientacao", posicaoAtual.TimestampOri.frequencia),
|
||||
("latency.posicao", posicaoAtual.TimestampPos.dt),
|
||||
("latency.orientacao", posicaoAtual.TimestampOri.dt),
|
||||
("timestamp.posicao", posicaoAtual.TimestampPos.valor),
|
||||
("timestamp.orientacao", posicaoAtual.TimestampOri.valor),
|
||||
("age", posicaoAtual.IdadeCorrecao),
|
||||
("heartbeat", posicaoAtual.Heartbeat)
|
||||
);
|
||||
RedisService.AtualizarCampos(
|
||||
RedisService.ModKey(T_Code.Gps),
|
||||
("conectado", Iniciado),
|
||||
("freq_base", TaxaAmostragemHz),
|
||||
("lat", posicaoAtual.Latitude),
|
||||
("lon", posicaoAtual.Longitude),
|
||||
("theta", posicaoAtual.AnguloCarroDefinido),
|
||||
("fix", (int)posicaoAtual.QualidadeFix),
|
||||
("rtk", posicaoAtual.IdadeCorrecao < rtk_timeout),
|
||||
("hAcc", posicaoAtual.PrecisaoCm),
|
||||
("nSatelites", posicaoAtual.NumeroSatelites),
|
||||
("freq.posicao", posicaoAtual.TimestampPos.frequencia),
|
||||
("freq.orientacao", posicaoAtual.TimestampOri.frequencia),
|
||||
("latency.posicao", posicaoAtual.TimestampPos.dt),
|
||||
("latency.orientacao", posicaoAtual.TimestampOri.dt),
|
||||
("timestamp.posicao", posicaoAtual.TimestampPos.valor),
|
||||
("timestamp.orientacao", posicaoAtual.TimestampOri.valor),
|
||||
("age", posicaoAtual.IdadeCorrecao),
|
||||
("heartbeat", posicaoAtual.Heartbeat)
|
||||
);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Erro ao salvar dados do GPS no Redis: {e.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
public static Queue<GPSModel> historicoPosicao = new Queue<GPSModel>();
|
||||
|
|
|
|||
|
|
@ -146,10 +146,10 @@ namespace AgroBase.Services.Operadores
|
|||
dist_dir = _t.DistanciaDireita,
|
||||
angulo = _t.AnguloMedioCorredor,
|
||||
pontos_restantes = _t.CorredorAtual.QtdPontos - pontoComparar.idxPontoCorredor,
|
||||
liberado = _t.AutonomiaCooredor?.Liberado ?? false,
|
||||
motivo = _t.AutonomiaCooredor?.Motivo ?? "",
|
||||
bateria_ok = _t.AutonomiaCooredor?.BateriaSuficiente ?? false,
|
||||
herbicida_ok = _t.AutonomiaCooredor?.HerbicidaSuficiente ?? false
|
||||
//liberado = _t.AutonomiaCooredor?.Liberado ?? false,
|
||||
//motivo = _t.AutonomiaCooredor?.Motivo ?? "",
|
||||
//bateria_ok = _t.AutonomiaCooredor?.BateriaSuficiente ?? false,
|
||||
//herbicida_ok = _t.AutonomiaCooredor?.HerbicidaSuficiente ?? false
|
||||
},
|
||||
} : null
|
||||
),
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue