Compare commits
2 Commits
c4862a7ce4
...
504277b6bd
| Author | SHA1 | Date |
|---|---|---|
|
|
504277b6bd | |
|
|
aa827bb57b |
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1335,7 +1335,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBomba(
|
||||
bomba,
|
||||
CanMessagePosicaoDados.Command2,
|
||||
true,
|
||||
setarControle: true,
|
||||
status: true,
|
||||
modo: bomba.Controle.Modo,
|
||||
potenciaMinPid: bomba.Controle.PotenciaMinPID,
|
||||
Kp: bomba.Controle.Kp,
|
||||
|
|
@ -1361,7 +1362,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBomba(
|
||||
agitador,
|
||||
CanMessagePosicaoDados.Command2,
|
||||
true,
|
||||
setarControle: true,
|
||||
status: true,
|
||||
modo: agitador.Controle.Modo,
|
||||
potenciaMinPid: agitador.Controle.PotenciaMinPID,
|
||||
Kp: agitador.Controle.Kp,
|
||||
|
|
@ -1431,7 +1433,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBomba(
|
||||
bomba,
|
||||
CanMessagePosicaoDados.Command1,
|
||||
statusDesejado,
|
||||
setarControle: false,
|
||||
status: statusDesejado,
|
||||
potencia: potenciaEfetiva,
|
||||
pressao: pressaoEfetiva
|
||||
);
|
||||
|
|
@ -1738,7 +1741,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBico(
|
||||
bico,
|
||||
CanMessagePosicaoDados.Command1,
|
||||
statusDesejado,
|
||||
setarControle: false,
|
||||
status: statusDesejado,
|
||||
angulo: anguloDesejado
|
||||
);
|
||||
}
|
||||
|
|
@ -1826,12 +1830,13 @@ namespace AgroBase.Models.Modules
|
|||
|
||||
bool pressaoDivergente = bomba.Sensor_ID_Num > -1 && Math.Abs(bomba._PressaoSP - pressaoEfetiva) > 0.05;
|
||||
|
||||
if (potenciaDivergente || pressaoDivergente) // estadoDivergente ||
|
||||
if (estadoDivergente || potenciaDivergente || pressaoDivergente)
|
||||
{
|
||||
EnviarComandoFisicoBomba(
|
||||
bomba,
|
||||
CanMessagePosicaoDados.Command1,
|
||||
statusDesejado,
|
||||
setarControle: false,
|
||||
status: statusDesejado,
|
||||
potencia: potenciaEfetiva,
|
||||
pressao: pressaoEfetiva
|
||||
);
|
||||
|
|
@ -1853,6 +1858,7 @@ namespace AgroBase.Models.Modules
|
|||
public void EnviarComandoFisicoBico(
|
||||
AtuadorBicoModel bico,
|
||||
CanMessagePosicaoDados dado,
|
||||
bool setarControle,
|
||||
bool status,
|
||||
double? angulo = null
|
||||
)
|
||||
|
|
@ -1862,20 +1868,46 @@ namespace AgroBase.Models.Modules
|
|||
if (dispAtu?.Dados?.Conectado != true || bico == null)
|
||||
return;
|
||||
|
||||
bool comandoControle = bico.ComandoAtuar;
|
||||
double anguloControle = bico.AnguloControle;
|
||||
|
||||
try
|
||||
{
|
||||
bico.ComandoAtuar = status;
|
||||
if (angulo.HasValue) bico.AnguloControle = angulo.Value;
|
||||
|
||||
if (angulo.HasValue)
|
||||
bico.AnguloControle = angulo.Value;
|
||||
|
||||
(_, _, byte[] data) = bico.ProtocoloComando();
|
||||
|
||||
dispAtu.AdicionarMensagemFila(bico.ID_Num, dado, dado, data, false);
|
||||
dispAtu.AdicionarMensagemFila(
|
||||
bico.ID_Num,
|
||||
dado,
|
||||
dado,
|
||||
data,
|
||||
false
|
||||
);
|
||||
|
||||
bico.UltimoComandoEnviado = DateTime.Now;
|
||||
bico.UltimoStatusDesejado = status;
|
||||
if (angulo.HasValue) bico.UltimoAnguloDesejado = angulo.Value;
|
||||
|
||||
if (angulo.HasValue)
|
||||
bico.UltimoAnguloDesejado = angulo.Value;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (!setarControle)
|
||||
{
|
||||
bico.ComandoAtuar = comandoControle;
|
||||
bico.AnguloControle = anguloControle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void EnviarComandoFisicoBomba(
|
||||
AtuadorBombaModel bomba,
|
||||
CanMessagePosicaoDados dado,
|
||||
bool setarControle,
|
||||
bool status,
|
||||
double? potencia = null,
|
||||
double? pressao = null,
|
||||
|
|
@ -1891,9 +1923,24 @@ namespace AgroBase.Models.Modules
|
|||
if (dispAtu?.Dados?.Conectado != true || bomba == null)
|
||||
return;
|
||||
|
||||
bool comandoControle = bomba.ComandoAtuar;
|
||||
double potenciaControle = bomba.PotenciaSP;
|
||||
double pressaoControle = bomba.PressaoSP;
|
||||
var modoControle = bomba.Controle.Modo;
|
||||
double potenciaMinPidControle = bomba.Controle.PotenciaMinPID;
|
||||
double kpControle = bomba.Controle.Kp;
|
||||
double kiControle = bomba.Controle.Ki;
|
||||
double kdControle = bomba.Controle.Kd;
|
||||
|
||||
bool ehComandoEstado = dado == CanMessagePosicaoDados.Command1;
|
||||
|
||||
if (ehComandoEstado)
|
||||
{
|
||||
bomba.ComandoAtuar = status;
|
||||
if (potencia.HasValue) bomba.PotenciaSP = potencia.Value;
|
||||
if (pressao.HasValue) bomba.PressaoSP = pressao.Value;
|
||||
}
|
||||
|
||||
if (modo.HasValue) bomba.Controle.Modo = modo.Value;
|
||||
if (potenciaMinPid.HasValue) bomba.Controle.PotenciaMinPID = potenciaMinPid.Value;
|
||||
if (Kp.HasValue) bomba.Controle.Kp = Kp.Value;
|
||||
|
|
@ -1908,6 +1955,18 @@ namespace AgroBase.Models.Modules
|
|||
bomba.UltimoStatusDesejado = status;
|
||||
if (potencia.HasValue) bomba.UltimaPotenciaDesejada = potencia.Value;
|
||||
if (pressao.HasValue) bomba.UltimaPressaoDesejada = pressao.Value;
|
||||
|
||||
if (!setarControle)
|
||||
{
|
||||
bomba.ComandoAtuar = comandoControle;
|
||||
bomba.PotenciaSP = potenciaControle;
|
||||
bomba.PressaoSP = pressaoControle;
|
||||
bomba.Controle.Modo = modoControle;
|
||||
bomba.Controle.PotenciaMinPID = potenciaMinPidControle;
|
||||
bomba.Controle.Kp = kpControle;
|
||||
bomba.Controle.Ki = kiControle;
|
||||
bomba.Controle.Kd = kdControle;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1967,7 +2026,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBomba(
|
||||
Bomba,
|
||||
CanMessagePosicaoDados.Command2,
|
||||
true,
|
||||
setarControle: true,
|
||||
status: true,
|
||||
modo: op.Parametros.Controle.AtuModoControle,
|
||||
potenciaMinPid: Bomba.Controle.PotenciaMinPID,
|
||||
Kp: Bomba.Controle.Kp,
|
||||
|
|
@ -1978,7 +2038,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBomba(
|
||||
Bomba,
|
||||
CanMessagePosicaoDados.Command1,
|
||||
true,
|
||||
setarControle: true,
|
||||
status: true,
|
||||
potencia: 100,
|
||||
pressao: op.Parametros.Controle.AtuPressaoLinha
|
||||
);
|
||||
|
|
@ -1989,7 +2050,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBomba(
|
||||
Bomba,
|
||||
CanMessagePosicaoDados.Command1,
|
||||
ligar,
|
||||
setarControle: true,
|
||||
status: ligar,
|
||||
potencia: 100,
|
||||
pressao: -1
|
||||
);
|
||||
|
|
@ -2017,7 +2079,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBico(
|
||||
Bico,
|
||||
CanMessagePosicaoDados.Command1,
|
||||
true
|
||||
setarControle: true,
|
||||
status: true
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -2028,7 +2091,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBico(
|
||||
Bico,
|
||||
CanMessagePosicaoDados.Command1,
|
||||
false
|
||||
setarControle: true,
|
||||
status: false
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -2052,7 +2116,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBico(
|
||||
Bico,
|
||||
CanMessagePosicaoDados.Command1,
|
||||
true
|
||||
setarControle: true,
|
||||
status: true
|
||||
);
|
||||
|
||||
await Task.Delay(200);
|
||||
|
|
@ -2060,7 +2125,8 @@ namespace AgroBase.Models.Modules
|
|||
EnviarComandoFisicoBico(
|
||||
Bico,
|
||||
CanMessagePosicaoDados.Command1,
|
||||
false
|
||||
setarControle: true,
|
||||
status: false
|
||||
);
|
||||
|
||||
await Task.Delay(200);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue