ajustes de controle atuador e trajetoria

This commit is contained in:
Diego Freitas 2026-07-03 08:42:47 -03:00
parent c4862a7ce4
commit aa827bb57b
6 changed files with 55 additions and 25 deletions

View File

@ -156,7 +156,8 @@ namespace AgroBase.Forms.Atuador
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba,
Services.CanMessagePosicaoDados.Command1,
Bomba.ComandoAtuar
setarControle: true,
status: Bomba.ComandoAtuar
);
}
@ -167,7 +168,8 @@ namespace AgroBase.Forms.Atuador
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba,
Services.CanMessagePosicaoDados.Command1,
true
setarControle: true,
status: true
);
}
@ -178,7 +180,8 @@ namespace AgroBase.Forms.Atuador
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba,
Services.CanMessagePosicaoDados.Command1,
false
setarControle: true,
status: false
);
}
@ -208,7 +211,8 @@ namespace AgroBase.Forms.Atuador
Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.EnviarComandoFisicoBico(
Bico,
Services.CanMessagePosicaoDados.Command1,
false
setarControle: true,
status: false
);
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Invalidate();
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Controls.OfType<Label>().First(x => x.Name == "lblCmd_" + ID).Text = "Comando: Desligado";
@ -223,7 +227,8 @@ namespace AgroBase.Forms.Atuador
Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.EnviarComandoFisicoBico(
Bico,
Services.CanMessagePosicaoDados.Command1,
true
setarControle: true,
status: true
);
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Invalidate();
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Controls.OfType<Label>().First(x => x.Name == "lblCmd_" + ID).Text = "Comando: Ligado";

View File

@ -530,7 +530,8 @@ namespace AgroBase.Forms.IHM
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba,
CanMessagePosicaoDados.Command1,
Ligar,
setarControle: true,
status: Ligar,
potencia: 100,
pressao: Pressao + 10
);
@ -553,7 +554,8 @@ namespace AgroBase.Forms.IHM
Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.EnviarComandoFisicoBico(
Bico,
CanMessagePosicaoDados.Command1,
Ligar
setarControle: true,
status: Ligar
);
DateTime inicio = DateTime.Now;
while (DateTime.Now < inicio.AddMilliseconds(Timeout))

View File

@ -675,7 +675,8 @@ namespace AgroBase.Forms.Operacoes
op.DispAtu?.Dados?.EnviarComandoFisicoBico(
Bico,
CanMessagePosicaoDados.Command1,
comando
setarControle: true,
status: comando
);
pnlAtuadores.Controls.OfType<Label>().First(x => x.Name == "lblCmd_" + ID).Text = "Comando: " + (comando ? "Ligado" : "Desligado");
@ -700,7 +701,8 @@ namespace AgroBase.Forms.Operacoes
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba,
CanMessagePosicaoDados.Command2,
true,
setarControle: true,
status: true,
modo: (ModoControleBomba)cmbModoBomba.SelectedIndex,
potenciaMinPid: potMin,
Kp: Kp,
@ -711,7 +713,8 @@ namespace AgroBase.Forms.Operacoes
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba,
CanMessagePosicaoDados.Command1,
true,
setarControle: true,
status: true,
potencia: potMax,
pressao: pressao
);
@ -725,7 +728,8 @@ namespace AgroBase.Forms.Operacoes
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba,
CanMessagePosicaoDados.Command1,
false
setarControle: true,
status: false
);
}
@ -740,7 +744,8 @@ namespace AgroBase.Forms.Operacoes
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Agitador,
CanMessagePosicaoDados.Command2,
true,
setarControle: true,
status: true,
modo: Agitador.Controle.Modo,
potenciaMinPid: Agitador.Controle.PotenciaMinPID,
Kp: Agitador.Controle.Kp,
@ -751,7 +756,8 @@ namespace AgroBase.Forms.Operacoes
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Agitador,
CanMessagePosicaoDados.Command1,
true,
setarControle: true,
status: true,
potencia: potencia
);
}
@ -764,7 +770,8 @@ namespace AgroBase.Forms.Operacoes
op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Agitador,
CanMessagePosicaoDados.Command1,
false
setarControle: true,
status: false
);
}

View File

@ -631,7 +631,8 @@ namespace AgroBase
op?.DispAtu?.Dados?.EnviarComandoFisicoBico(
bico,
Comando.Comando,
Comando.EstadoAplicar
setarControle: true,
status: Comando.EstadoAplicar
);
return;
@ -639,7 +640,8 @@ namespace AgroBase
op?.DispAtu?.Dados?.EnviarComandoFisicoBomba(
bomba,
Comando.Comando,
Comando.EstadoAplicar
setarControle: true,
status: Comando.EstadoAplicar
);
return;
}

View File

@ -95,11 +95,11 @@ namespace AgroBase.Models
{
get
{
return _tmrLogsOperacao.Interval;
return _tmrLogsOperacao?.Interval ?? 1000;
}
set
{
_tmrLogsOperacao.SetInterval((int)value);
_tmrLogsOperacao?.SetInterval((int)value);
}
}
private AsyncTaskTimerModel _tmrLogsOperacao;
@ -1249,6 +1249,8 @@ namespace AgroBase.Models
novaOp.DefinirComponentesEmUso();
Variaveis.OperacaoEmAndamento = novaOp;
var ruasSelecionadas = parametros.RuasPercorrer ?? new List<string>();
if (parametros.Mapa != null)
@ -1258,8 +1260,6 @@ namespace AgroBase.Models
novaOp.Mapa.PopularTrajetoriaMapa(parametros.Mapa);
}
Variaveis.OperacaoEmAndamento = novaOp;
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false));
return novaOp;
@ -1986,7 +1986,8 @@ namespace AgroBase.Models
op.DispAtu?.Dados?.EnviarComandoFisicoBico(
bicos[i],
CanMessagePosicaoDados.Command1,
bicos[i].ComandoAtuar
setarControle: true,
status: bicos[i].ComandoAtuar
);
}
}
@ -2590,7 +2591,8 @@ namespace AgroBase.Models
dadosAtu?.EnviarComandoFisicoBico(
bico,
CanMessagePosicaoDados.Command1,
controleBase.Controle.Estado == true,
setarControle: true,
status: controleBase.Controle.Estado == true,
angulo: controleBase.Controle.AnguloSP
);
return;
@ -2616,7 +2618,8 @@ namespace AgroBase.Models
dadosAtu?.EnviarComandoFisicoBomba(
bomba,
CanMessagePosicaoDados.Command1,
controleBase.Controle.Estado == true,
setarControle: true,
status: controleBase.Controle.Estado == true,
potencia: controleBase.Controle.Potencia,
pressao: controleBase.Controle.Pressao,
modo: op.Parametros.Controle.AtuModoControle
@ -4899,6 +4902,9 @@ namespace AgroBase.Models
{
if (op == null) return;
if (!ReferenceEquals(Variaveis.OperacaoEmAndamento, op))
op = Variaveis.OperacaoEmAndamento;
DateTime agora = DateTime.Now;
// Contexto

View File

@ -671,7 +671,7 @@ namespace AgroBase.Models
if (!_TrajetoriaFixaDefinida) return;
// Atualiza apenas os pontos dentro do intervalo definido
foreach (var ponto in _TrajetoriaJanela)
foreach (var ponto in _TrajetoriaJanela ?? new List<PontoTrajetoriaModel>())
{
ponto.AtualizarPropriedades();
}
@ -2847,8 +2847,16 @@ namespace AgroBase.Models
var op = Variaveis.OperacaoEmAndamento;
// Valida índice do corredor
if (op.Trajetoria?._Corredores?.Count <= idxCorredor)
if ((op.Trajetoria?._Corredores?.Count ?? 0) <= idxCorredor)
{
Liberado = false;
Motivos = new List<string>()
{
$"Trajetória não possui corredores definidos. {idxCorredor}/{op.Trajetoria?._Corredores?.Count}"
};
Status = AutonomiaCorredorStatus.Critico;
return;
}
// Se já registrou esse corredor como liberado e travado/feito, não recalcula
if (CorredoresLiberados.ContainsKey(idxCorredor) && CorredoresLiberados[idxCorredor].Liberado)