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( EnviarComandoFisicoBomba(
bomba, bomba,
CanMessagePosicaoDados.Command2, CanMessagePosicaoDados.Command2,
true, setarControle: true,
status: true,
modo: bomba.Controle.Modo, modo: bomba.Controle.Modo,
potenciaMinPid: bomba.Controle.PotenciaMinPID, potenciaMinPid: bomba.Controle.PotenciaMinPID,
Kp: bomba.Controle.Kp, Kp: bomba.Controle.Kp,
@ -1361,7 +1362,8 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBomba( 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,
@ -1431,7 +1433,8 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBomba( EnviarComandoFisicoBomba(
bomba, bomba,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
statusDesejado, setarControle: false,
status: statusDesejado,
potencia: potenciaEfetiva, potencia: potenciaEfetiva,
pressao: pressaoEfetiva pressao: pressaoEfetiva
); );
@ -1738,7 +1741,8 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBico( EnviarComandoFisicoBico(
bico, bico,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
statusDesejado, setarControle: false,
status: statusDesejado,
angulo: anguloDesejado angulo: anguloDesejado
); );
} }
@ -1826,12 +1830,13 @@ namespace AgroBase.Models.Modules
bool pressaoDivergente = bomba.Sensor_ID_Num > -1 && Math.Abs(bomba._PressaoSP - pressaoEfetiva) > 0.05; bool pressaoDivergente = bomba.Sensor_ID_Num > -1 && Math.Abs(bomba._PressaoSP - pressaoEfetiva) > 0.05;
if (potenciaDivergente || pressaoDivergente) // estadoDivergente || if (estadoDivergente || potenciaDivergente || pressaoDivergente)
{ {
EnviarComandoFisicoBomba( EnviarComandoFisicoBomba(
bomba, bomba,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
statusDesejado, setarControle: false,
status: statusDesejado,
potencia: potenciaEfetiva, potencia: potenciaEfetiva,
pressao: pressaoEfetiva pressao: pressaoEfetiva
); );
@ -1851,9 +1856,10 @@ namespace AgroBase.Models.Modules
} }
public void EnviarComandoFisicoBico( public void EnviarComandoFisicoBico(
AtuadorBicoModel bico, AtuadorBicoModel bico,
CanMessagePosicaoDados dado, CanMessagePosicaoDados dado,
bool status, bool setarControle,
bool status,
double? angulo = null double? angulo = null
) )
{ {
@ -1862,20 +1868,46 @@ namespace AgroBase.Models.Modules
if (dispAtu?.Dados?.Conectado != true || bico == null) if (dispAtu?.Dados?.Conectado != true || bico == null)
return; return;
bico.ComandoAtuar = status; bool comandoControle = bico.ComandoAtuar;
if (angulo.HasValue) bico.AnguloControle = angulo.Value; double anguloControle = bico.AnguloControle;
(_, _, byte[] data) = bico.ProtocoloComando(); try
{
bico.ComandoAtuar = status;
dispAtu.AdicionarMensagemFila(bico.ID_Num, dado, dado, data, false); if (angulo.HasValue)
bico.UltimoComandoEnviado = DateTime.Now; bico.AnguloControle = angulo.Value;
bico.UltimoStatusDesejado = status;
if (angulo.HasValue) bico.UltimoAnguloDesejado = 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( public void EnviarComandoFisicoBomba(
AtuadorBombaModel bomba, AtuadorBombaModel bomba,
CanMessagePosicaoDados dado, CanMessagePosicaoDados dado,
bool setarControle,
bool status, bool status,
double? potencia = null, double? potencia = null,
double? pressao = null, double? pressao = null,
@ -1891,9 +1923,24 @@ namespace AgroBase.Models.Modules
if (dispAtu?.Dados?.Conectado != true || bomba == null) if (dispAtu?.Dados?.Conectado != true || bomba == null)
return; return;
bomba.ComandoAtuar = status; bool comandoControle = bomba.ComandoAtuar;
if (potencia.HasValue) bomba.PotenciaSP = potencia.Value; double potenciaControle = bomba.PotenciaSP;
if (pressao.HasValue) bomba.PressaoSP = pressao.Value; 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 (modo.HasValue) bomba.Controle.Modo = modo.Value;
if (potenciaMinPid.HasValue) bomba.Controle.PotenciaMinPID = potenciaMinPid.Value; if (potenciaMinPid.HasValue) bomba.Controle.PotenciaMinPID = potenciaMinPid.Value;
if (Kp.HasValue) bomba.Controle.Kp = Kp.Value; if (Kp.HasValue) bomba.Controle.Kp = Kp.Value;
@ -1908,6 +1955,18 @@ namespace AgroBase.Models.Modules
bomba.UltimoStatusDesejado = status; bomba.UltimoStatusDesejado = status;
if (potencia.HasValue) bomba.UltimaPotenciaDesejada = potencia.Value; if (potencia.HasValue) bomba.UltimaPotenciaDesejada = potencia.Value;
if (pressao.HasValue) bomba.UltimaPressaoDesejada = pressao.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( EnviarComandoFisicoBomba(
Bomba, Bomba,
CanMessagePosicaoDados.Command2, CanMessagePosicaoDados.Command2,
true, setarControle: true,
status: true,
modo: op.Parametros.Controle.AtuModoControle, modo: op.Parametros.Controle.AtuModoControle,
potenciaMinPid: Bomba.Controle.PotenciaMinPID, potenciaMinPid: Bomba.Controle.PotenciaMinPID,
Kp: Bomba.Controle.Kp, Kp: Bomba.Controle.Kp,
@ -1977,8 +2037,9 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBomba( EnviarComandoFisicoBomba(
Bomba, Bomba,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
true, setarControle: true,
status: true,
potencia: 100, potencia: 100,
pressao: op.Parametros.Controle.AtuPressaoLinha pressao: op.Parametros.Controle.AtuPressaoLinha
); );
@ -1989,7 +2050,8 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBomba( EnviarComandoFisicoBomba(
Bomba, Bomba,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
ligar, setarControle: true,
status: ligar,
potencia: 100, potencia: 100,
pressao: -1 pressao: -1
); );
@ -2017,7 +2079,8 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBico( EnviarComandoFisicoBico(
Bico, Bico,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
true setarControle: true,
status: true
); );
} }
@ -2028,7 +2091,8 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBico( EnviarComandoFisicoBico(
Bico, Bico,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
false setarControle: true,
status: false
); );
} }
@ -2052,7 +2116,8 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBico( EnviarComandoFisicoBico(
Bico, Bico,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
true setarControle: true,
status: true
); );
await Task.Delay(200); await Task.Delay(200);
@ -2060,7 +2125,8 @@ namespace AgroBase.Models.Modules
EnviarComandoFisicoBico( EnviarComandoFisicoBico(
Bico, Bico,
CanMessagePosicaoDados.Command1, CanMessagePosicaoDados.Command1,
false setarControle: true,
status: false
); );
await Task.Delay(200); await Task.Delay(200);