adicionado atuador

This commit is contained in:
Diego Freitas 2026-07-03 08:42:59 -03:00
parent aa827bb57b
commit 504277b6bd
1 changed files with 92 additions and 26 deletions

View File

@ -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
);
@ -1851,9 +1856,10 @@ namespace AgroBase.Models.Modules
}
public void EnviarComandoFisicoBico(
AtuadorBicoModel bico,
AtuadorBicoModel bico,
CanMessagePosicaoDados dado,
bool status,
bool setarControle,
bool status,
double? angulo = null
)
{
@ -1862,20 +1868,46 @@ namespace AgroBase.Models.Modules
if (dispAtu?.Dados?.Conectado != true || bico == null)
return;
bico.ComandoAtuar = status;
if (angulo.HasValue) bico.AnguloControle = angulo.Value;
bool comandoControle = bico.ComandoAtuar;
double anguloControle = bico.AnguloControle;
(_, _, byte[] data) = bico.ProtocoloComando();
try
{
bico.ComandoAtuar = status;
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.AnguloControle = angulo.Value;
(_, _, byte[] data) = bico.ProtocoloComando();
dispAtu.AdicionarMensagemFila(
bico.ID_Num,
dado,
dado,
data,
false
);
bico.UltimoComandoEnviado = DateTime.Now;
bico.UltimoStatusDesejado = status;
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;
bomba.ComandoAtuar = status;
if (potencia.HasValue) bomba.PotenciaSP = potencia.Value;
if (pressao.HasValue) bomba.PressaoSP = pressao.Value;
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,
@ -1977,8 +2037,9 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBomba(
Bomba,
CanMessagePosicaoDados.Command1,
true,
CanMessagePosicaoDados.Command1,
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);