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( op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba, Bomba,
Services.CanMessagePosicaoDados.Command1, Services.CanMessagePosicaoDados.Command1,
Bomba.ComandoAtuar setarControle: true,
status: Bomba.ComandoAtuar
); );
} }
@ -167,7 +168,8 @@ namespace AgroBase.Forms.Atuador
op.DispAtu?.Dados?.EnviarComandoFisicoBomba( op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba, Bomba,
Services.CanMessagePosicaoDados.Command1, Services.CanMessagePosicaoDados.Command1,
true setarControle: true,
status: true
); );
} }
@ -178,7 +180,8 @@ namespace AgroBase.Forms.Atuador
op.DispAtu?.Dados?.EnviarComandoFisicoBomba( op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba, Bomba,
Services.CanMessagePosicaoDados.Command1, Services.CanMessagePosicaoDados.Command1,
false setarControle: true,
status: false
); );
} }
@ -208,7 +211,8 @@ namespace AgroBase.Forms.Atuador
Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.EnviarComandoFisicoBico( Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.EnviarComandoFisicoBico(
Bico, Bico,
Services.CanMessagePosicaoDados.Command1, 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).Invalidate();
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Controls.OfType<Label>().First(x => x.Name == "lblCmd_" + ID).Text = "Comando: Desligado"; 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( Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.EnviarComandoFisicoBico(
Bico, Bico,
Services.CanMessagePosicaoDados.Command1, 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).Invalidate();
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Controls.OfType<Label>().First(x => x.Name == "lblCmd_" + ID).Text = "Comando: Ligado"; 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( op.DispAtu?.Dados?.EnviarComandoFisicoBomba(
Bomba, Bomba,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
Ligar, setarControle: true,
status: Ligar,
potencia: 100, potencia: 100,
pressao: Pressao + 10 pressao: Pressao + 10
); );
@ -553,7 +554,8 @@ namespace AgroBase.Forms.IHM
Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.EnviarComandoFisicoBico( Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.EnviarComandoFisicoBico(
Bico, Bico,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
Ligar setarControle: true,
status: Ligar
); );
DateTime inicio = DateTime.Now; DateTime inicio = DateTime.Now;
while (DateTime.Now < inicio.AddMilliseconds(Timeout)) while (DateTime.Now < inicio.AddMilliseconds(Timeout))

View File

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

View File

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

View File

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

View File

@ -671,7 +671,7 @@ namespace AgroBase.Models
if (!_TrajetoriaFixaDefinida) return; if (!_TrajetoriaFixaDefinida) return;
// Atualiza apenas os pontos dentro do intervalo definido // Atualiza apenas os pontos dentro do intervalo definido
foreach (var ponto in _TrajetoriaJanela) foreach (var ponto in _TrajetoriaJanela ?? new List<PontoTrajetoriaModel>())
{ {
ponto.AtualizarPropriedades(); ponto.AtualizarPropriedades();
} }
@ -2847,8 +2847,16 @@ namespace AgroBase.Models
var op = Variaveis.OperacaoEmAndamento; var op = Variaveis.OperacaoEmAndamento;
// Valida índice do corredor // 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; return;
}
// Se já registrou esse corredor como liberado e travado/feito, não recalcula // Se já registrou esse corredor como liberado e travado/feito, não recalcula
if (CorredoresLiberados.ContainsKey(idxCorredor) && CorredoresLiberados[idxCorredor].Liberado) if (CorredoresLiberados.ContainsKey(idxCorredor) && CorredoresLiberados[idxCorredor].Liberado)