refinamentos fluxo do atuador
This commit is contained in:
parent
b88852cbab
commit
8eee8e5012
|
|
@ -32,7 +32,7 @@ namespace AgroBase.Forms.Atuador
|
||||||
txtPressaoVmax.Text = DispAtu.Dados._PressaoVmax.ToString();
|
txtPressaoVmax.Text = DispAtu.Dados._PressaoVmax.ToString();
|
||||||
txtMLRef.Text = DispAtu.Dados.VazaoFluxoMLpSReferencia.ToString();
|
txtMLRef.Text = DispAtu.Dados.VazaoFluxoMLpSReferencia.ToString();
|
||||||
//txtPulsosRef.Text = DispAtu.Dados._FluxoPulsoRef.ToString();
|
//txtPulsosRef.Text = DispAtu.Dados._FluxoPulsoRef.ToString();
|
||||||
txtVolume.Text = DispAtu.Dados.VolumeVazaoAferido.ToString();
|
//txtVolume.Text = DispAtu.Dados.VolumeVazaoAferido.ToString();
|
||||||
|
|
||||||
grdSensoriamento.Rows.Clear();
|
grdSensoriamento.Rows.Clear();
|
||||||
grdSensoriamento.Columns.Clear();
|
grdSensoriamento.Columns.Clear();
|
||||||
|
|
@ -135,7 +135,7 @@ namespace AgroBase.Forms.Atuador
|
||||||
|
|
||||||
private void AtualizarGridSensores()
|
private void AtualizarGridSensores()
|
||||||
{
|
{
|
||||||
var BombaPressurizadora = DispAtu.Dados.BombasPressurizadoras.FirstOrDefault();
|
var BombaPressurizadora = DispAtu.Dados.BombaPressurizadora;
|
||||||
grdSensoriamento.Rows[0].Cells[1].Value = BombaPressurizadora.Inicializado;
|
grdSensoriamento.Rows[0].Cells[1].Value = BombaPressurizadora.Inicializado;
|
||||||
grdSensoriamento.Rows[1].Cells[1].Value = BombaPressurizadora.ComandoAtuar;
|
grdSensoriamento.Rows[1].Cells[1].Value = BombaPressurizadora.ComandoAtuar;
|
||||||
grdSensoriamento.Rows[2].Cells[1].Value = BombaPressurizadora._EstadoLeitura;
|
grdSensoriamento.Rows[2].Cells[1].Value = BombaPressurizadora._EstadoLeitura;
|
||||||
|
|
@ -150,20 +150,20 @@ namespace AgroBase.Forms.Atuador
|
||||||
|
|
||||||
private void nudPressaoSP_ValueChanged(object sender, EventArgs e)
|
private void nudPressaoSP_ValueChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault();
|
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||||
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Convert.ToInt32(((NumericUpDown)sender).Value);
|
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Convert.ToInt32(((NumericUpDown)sender).Value);
|
||||||
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ID, Status: Bomba.ComandoAtuar, Comando: Services.CanMessagePosicaoDados.Command1);
|
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ID, Status: Bomba.ComandoAtuar, Comando: Services.CanMessagePosicaoDados.Command1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnLigarBomba_Click(object sender, EventArgs e)
|
private void btnLigarBomba_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault();
|
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||||
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ID, Status: true, Comando: Services.CanMessagePosicaoDados.Command1, Forcar: true);
|
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ID, Status: true, Comando: Services.CanMessagePosicaoDados.Command1, Forcar: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnDesligarBomba_Click(object sender, EventArgs e)
|
private void btnDesligarBomba_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault();
|
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||||
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ID, Status: false, Comando: Services.CanMessagePosicaoDados.Command1, Forcar: true);
|
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ID, Status: false, Comando: Services.CanMessagePosicaoDados.Command1, Forcar: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -209,7 +209,7 @@ namespace AgroBase.Forms.Atuador
|
||||||
DispAtu.Dados._PressaoVmax = Convert.ToDouble(txtPressaoVmax.Text);
|
DispAtu.Dados._PressaoVmax = Convert.ToDouble(txtPressaoVmax.Text);
|
||||||
//DispAtu.Dados._FluxoMlRef = Convert.ToDouble(txtMLRef.Text);
|
//DispAtu.Dados._FluxoMlRef = Convert.ToDouble(txtMLRef.Text);
|
||||||
//DispAtu.Dados._FluxoPulsoRef = Convert.ToDouble(txtPulsosRef.Text);
|
//DispAtu.Dados._FluxoPulsoRef = Convert.ToDouble(txtPulsosRef.Text);
|
||||||
DispAtu.Dados.VolumeVazaoAferido = Convert.ToDouble(txtVolume.Text);
|
//DispAtu.Dados.VolumeVazaoAferido = Convert.ToDouble(txtVolume.Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnCalibrarVazao_Click(object sender, EventArgs e)
|
private void btnCalibrarVazao_Click(object sender, EventArgs e)
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@ namespace AgroBase.Forms
|
||||||
//CameraSolo.IniciarRotinaProcesso();
|
//CameraSolo.IniciarRotinaProcesso();
|
||||||
|
|
||||||
CameraSolo.camera.IniciarCamera(
|
CameraSolo.camera.IniciarCamera(
|
||||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.ScriptDeteccaoErvas,
|
"", //Variaveis.OperacaoEmAndamento.DispAtu.Dados.ScriptDeteccaoErvas,
|
||||||
new string[] {
|
new string[] {
|
||||||
CameraSolo.MaxLeituras.ToString(),
|
CameraSolo.MaxLeituras.ToString(),
|
||||||
CameraSolo.VideoPorta,
|
CameraSolo.VideoPorta,
|
||||||
|
|
|
||||||
|
|
@ -430,8 +430,8 @@ namespace AgroBase.Forms.IHM
|
||||||
bool Inicializado = Dispositivo != null && Dispositivo.Dados.ConexaoAtiva;
|
bool Inicializado = Dispositivo != null && Dispositivo.Dados.ConexaoAtiva;
|
||||||
idx = PreencheDadosLinha(grid, Testes, idx, Inicializado ? 1 : 0);
|
idx = PreencheDadosLinha(grid, Testes, idx, Inicializado ? 1 : 0);
|
||||||
|
|
||||||
AtuadorBombaModel Bomba = Dispositivo.Dados.BombasPressurizadoras.FirstOrDefault();
|
AtuadorBombaModel Bomba = Dispositivo.Dados.BombaPressurizadora;
|
||||||
bool BombaInicializado = Bomba.Inicializado;
|
bool BombaInicializado = Bomba?.Inicializado ?? false;
|
||||||
idx = PreencheDadosLinha(grid, Testes, idx, BombaInicializado ? 1 : 0);
|
idx = PreencheDadosLinha(grid, Testes, idx, BombaInicializado ? 1 : 0);
|
||||||
|
|
||||||
SensorModel sMAS = Dispositivo.Dados.Sensores.FirstOrDefault(x => x.Componente == Enums.S_Code.sMAS);
|
SensorModel sMAS = Dispositivo.Dados.Sensores.FirstOrDefault(x => x.Componente == Enums.S_Code.sMAS);
|
||||||
|
|
@ -525,7 +525,7 @@ namespace AgroBase.Forms.IHM
|
||||||
|
|
||||||
private async Task EnviarComandoBomba(bool Ligar, double Pressao, int Timeout, AtuadorModel disp = null)
|
private async Task EnviarComandoBomba(bool Ligar, double Pressao, int Timeout, AtuadorModel disp = null)
|
||||||
{
|
{
|
||||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault();
|
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||||
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Pressao + 10;
|
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Pressao + 10;
|
||||||
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ID, Status: Ligar, Comando: CanMessagePosicaoDados.Command1);
|
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ID, Status: Ligar, Comando: CanMessagePosicaoDados.Command1);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
cmbModoAgitador.Items.AddRange(Enum.GetNames(typeof(ModoAgitadorCalda)));
|
cmbModoAgitador.Items.AddRange(Enum.GetNames(typeof(ModoAgitadorCalda)));
|
||||||
cmbModoAgitador.SelectedIndex = (int)pC.AtuAgitadorModo;
|
cmbModoAgitador.SelectedIndex = (int)pC.AtuAgitadorModo;
|
||||||
|
|
||||||
var b = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(x => x.ID == "BMBLN");
|
var b = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||||
if (b != null)
|
if (b != null)
|
||||||
{
|
{
|
||||||
txtKp.Text = b.Controle.Kp.ToString();
|
txtKp.Text = b.Controle.Kp.ToString();
|
||||||
|
|
@ -592,7 +592,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
gridDados.Rows[34].Cells[1].Value = (_Atuador?.VolumeVazaoMl ?? 0).ToString("0.00");
|
gridDados.Rows[34].Cells[1].Value = (_Atuador?.VolumeVazaoMl ?? 0).ToString("0.00");
|
||||||
gridDados.Rows[35].Cells[1].Value = (_Atuador?.AnguloBarraEsquerda ?? 0).ToString("0.00");
|
gridDados.Rows[35].Cells[1].Value = (_Atuador?.AnguloBarraEsquerda ?? 0).ToString("0.00");
|
||||||
gridDados.Rows[36].Cells[1].Value = (_Atuador?.AnguloBarraDireita ?? 0).ToString("0.00");
|
gridDados.Rows[36].Cells[1].Value = (_Atuador?.AnguloBarraDireita ?? 0).ToString("0.00");
|
||||||
gridDados.Rows[37].Cells[1].Value = (Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.ContadorCarga?.AgitadorCalda?._Potencia ?? 0).ToString("0.00");
|
gridDados.Rows[37].Cells[1].Value = (Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.AgitadorDeCalda?._Potencia ?? 0).ToString("0.00");
|
||||||
gridDados.Rows[38].Cells[1].Value = "";
|
gridDados.Rows[38].Cells[1].Value = "";
|
||||||
gridDados.Rows[39].Cells[1].Value = (_IMU?.RollSeguro ?? 0).ToString("0.00");
|
gridDados.Rows[39].Cells[1].Value = (_IMU?.RollSeguro ?? 0).ToString("0.00");
|
||||||
gridDados.Rows[40].Cells[1].Value = (_IMU?.PitchSeguro ?? 0).ToString("0.00");
|
gridDados.Rows[40].Cells[1].Value = (_IMU?.PitchSeguro ?? 0).ToString("0.00");
|
||||||
|
|
@ -673,7 +673,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
|
|
||||||
private void btnLigarBomba_Click(object sender, EventArgs e)
|
private void btnLigarBomba_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(x => x.ID == "BMBLN");
|
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||||
if (Bomba != null)
|
if (Bomba != null)
|
||||||
{
|
{
|
||||||
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuModoControle = (ModoControleBomba)cmbModoBomba.SelectedIndex;
|
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuModoControle = (ModoControleBomba)cmbModoBomba.SelectedIndex;
|
||||||
|
|
@ -691,14 +691,14 @@ namespace AgroBase.Forms.Operacoes
|
||||||
|
|
||||||
private void btnDesligarBomba_Click(object sender, EventArgs e)
|
private void btnDesligarBomba_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(x => x.ID == "BMBLN");
|
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||||
if (Bomba != null)
|
if (Bomba != null)
|
||||||
GeneralJoystick.EnviarComandoAtuador(Bomba.Componente, Bomba.ID, Status: false, Comando: CanMessagePosicaoDados.Command1, Forcar: true);
|
GeneralJoystick.EnviarComandoAtuador(Bomba.Componente, Bomba.ID, Status: false, Comando: CanMessagePosicaoDados.Command1, Forcar: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnLigarAgitador_Click(object sender, EventArgs e)
|
private void btnLigarAgitador_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var Agitador = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(x => x.ID == "BMBAGT");
|
var Agitador = Variaveis.OperacaoEmAndamento.DispAtu.Dados.AgitadorDeCalda;
|
||||||
if (Agitador != null)
|
if (Agitador != null)
|
||||||
{
|
{
|
||||||
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuAgitadorModo = (ModoAgitadorCalda)cmbModoAgitador.SelectedIndex;
|
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuAgitadorModo = (ModoAgitadorCalda)cmbModoAgitador.SelectedIndex;
|
||||||
|
|
@ -710,7 +710,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
|
|
||||||
private void btnDeslsigarAgitador_Click(object sender, EventArgs e)
|
private void btnDeslsigarAgitador_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var Agitador = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(x => x.ID == "BMBAGT");
|
var Agitador = Variaveis.OperacaoEmAndamento.DispAtu.Dados.AgitadorDeCalda;
|
||||||
if (Agitador != null)
|
if (Agitador != null)
|
||||||
GeneralJoystick.EnviarComandoAtuador(Agitador.Componente, Agitador.ID, Status: false, Comando: CanMessagePosicaoDados.Command1, Forcar: true);
|
GeneralJoystick.EnviarComandoAtuador(Agitador.Componente, Agitador.ID, Status: false, Comando: CanMessagePosicaoDados.Command1, Forcar: true);
|
||||||
}
|
}
|
||||||
|
|
@ -729,7 +729,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
{
|
{
|
||||||
var Atuador = Variaveis.OperacaoEmAndamento.DispAtu.Dados;
|
var Atuador = Variaveis.OperacaoEmAndamento.DispAtu.Dados;
|
||||||
|
|
||||||
bool ligado = Atuador.BombasPressurizadoras.FirstOrDefault()?._BombaLigada ?? false;
|
bool ligado = Atuador.BombaPressurizadora?._BombaLigada ?? false;
|
||||||
AtuadorFuncoesGerais.DesenharAtuadores(
|
AtuadorFuncoesGerais.DesenharAtuadores(
|
||||||
pnlAtuadores,
|
pnlAtuadores,
|
||||||
e,
|
e,
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
Posicao = x.Posicao,
|
Posicao = x.Posicao,
|
||||||
StatusBico = x._EstadoLeitura == Enums.Estado.Ligado,
|
StatusBico = x._EstadoLeitura == Enums.Estado.Ligado,
|
||||||
TempoAtuado = x.TempoAtuado,
|
TempoAtuado = x.TempoAtuado,
|
||||||
}).ToList(), Atuador.BombasPressurizadoras.FirstOrDefault()?._BombaLigada ?? false, Atuador.PressaoLinha, Atuador.TempoAtuado);
|
}).ToList(), Atuador.BombaPressurizadora?._BombaLigada ?? false, Atuador.PressaoLinha, Atuador.TempoAtuado);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pnlCaminho_Paint(object sender, PaintEventArgs e)
|
private void pnlCaminho_Paint(object sender, PaintEventArgs e)
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -376,10 +376,12 @@ namespace AgroBase.Models.Modules
|
||||||
{
|
{
|
||||||
await SetZero();
|
await SetZero();
|
||||||
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotor] [DIR {Mod_ID}] - Referenciamento Concluído!");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotor] [DIR {Mod_ID}] - Referenciamento Concluído!");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Dir, StatusModulo.Operante, 100, $"Referenciamento Concluído!", id: Mod_ID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotor] [DIR {Mod_ID}] - Referenciamento Falhou!");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotor] [DIR {Mod_ID}] - Referenciamento Falhou!");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Dir, StatusModulo.Falha, 0, $"Referenciamento Falhou!", id: Mod_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
Referenciando = false;
|
Referenciando = false;
|
||||||
|
|
@ -468,6 +470,7 @@ namespace AgroBase.Models.Modules
|
||||||
if (!Sucesso)
|
if (!Sucesso)
|
||||||
{
|
{
|
||||||
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotorRelativo] [DIR {Mod_ID}] - ReferenciaMotorRelativo falhou (timeout ou não inicializado). Entrada={AnguloEntrada}, Saida={AnguloSaida}");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotorRelativo] [DIR {Mod_ID}] - ReferenciaMotorRelativo falhou (timeout ou não inicializado). Entrada={AnguloEntrada}, Saida={AnguloSaida}");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Dir, StatusModulo.Falha, 0, $"ReferenciaMotorRelativo falhou (timeout ou não inicializado). Entrada={AnguloEntrada}, Saida={AnguloSaida}", id: Mod_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Sucesso;
|
return Sucesso;
|
||||||
|
|
|
||||||
|
|
@ -458,10 +458,14 @@ namespace AgroBase.Models.Modules
|
||||||
if (calDir[Modulo.Modulo_ID]) continue;
|
if (calDir[Modulo.Modulo_ID]) continue;
|
||||||
tasks.Add(Modulo.DirMotor.ReferenciaMotor().ContinueWith(t => {
|
tasks.Add(Modulo.DirMotor.ReferenciaMotor().ContinueWith(t => {
|
||||||
if (t.IsFaulted)
|
if (t.IsFaulted)
|
||||||
|
{
|
||||||
Variaveis.MostrarLog($"[MovimentacaoUnificadaModel] [RealizarCalibragemDirAsync] Erro no referenciamento do módulo {Modulo.Modulo_ID}: {t.Exception?.InnerException?.Message}");
|
Variaveis.MostrarLog($"[MovimentacaoUnificadaModel] [RealizarCalibragemDirAsync] Erro no referenciamento do módulo {Modulo.Modulo_ID}: {t.Exception?.InnerException?.Message}");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(Dispositivo, StatusModulo.Falha, 0, $"Erro no referenciamento do módulo {Modulo.Modulo_ID}: {t.Exception?.InnerException?.Message}");
|
||||||
|
}
|
||||||
if (t.IsCompleted)
|
if (t.IsCompleted)
|
||||||
{
|
{
|
||||||
Variaveis.MostrarLog($"[MovimentacaoUnificadaModel] [RealizarCalibragemDirAsync] Referenciamento do módulo {Modulo.Modulo_ID} concluído com sucesso!");
|
Variaveis.MostrarLog($"[MovimentacaoUnificadaModel] [RealizarCalibragemDirAsync] Referenciamento do módulo {Modulo.Modulo_ID} concluído com sucesso!");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(Dispositivo, StatusModulo.Operante, 100, $"Referenciamento do módulo {Modulo.Modulo_ID} concluído com sucesso!");
|
||||||
calDir[Modulo.Modulo_ID] = true;
|
calDir[Modulo.Modulo_ID] = true;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
|
||||||
|
|
@ -1304,10 +1304,12 @@ namespace AgroBase.Models
|
||||||
if (!calibragemAtuNecessaria && !calibragemDirNecessaria && !calibragemMovNecessaria) return;
|
if (!calibragemAtuNecessaria && !calibragemDirNecessaria && !calibragemMovNecessaria) return;
|
||||||
|
|
||||||
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Pausa para calibragem inicial");
|
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Pausa para calibragem inicial");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Mod, StatusModulo.Operante, 100, $"Pausa para calibragem inicial");
|
||||||
Variaveis.OperacaoEmAndamento.Pausa = true;
|
Variaveis.OperacaoEmAndamento.Pausa = true;
|
||||||
await Task.Delay(5000);
|
await Task.Delay(5000);
|
||||||
|
|
||||||
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Calibragem dos modulos inciada...");
|
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Calibragem dos modulos inciada...");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Mod, StatusModulo.Operante, 100, $"Calibragem dos modulos inciada...");
|
||||||
Variaveis.OperacaoEmAndamento.Calibrando = true;
|
Variaveis.OperacaoEmAndamento.Calibrando = true;
|
||||||
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("calibrando", Variaveis.OperacaoEmAndamento.Calibrando));
|
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("calibrando", Variaveis.OperacaoEmAndamento.Calibrando));
|
||||||
|
|
||||||
|
|
@ -1322,6 +1324,7 @@ namespace AgroBase.Models
|
||||||
if (tasks.Count == 0)
|
if (tasks.Count == 0)
|
||||||
{
|
{
|
||||||
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Nenhuma calibragem foi iniciada.");
|
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Nenhuma calibragem foi iniciada.");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Mod, StatusModulo.Alerta, 50, $"Nenhuma calibragem foi iniciada.");
|
||||||
_Controle.TipoMovimento = tipoControle;
|
_Controle.TipoMovimento = tipoControle;
|
||||||
Variaveis.OperacaoEmAndamento.Calibrando = false;
|
Variaveis.OperacaoEmAndamento.Calibrando = false;
|
||||||
Variaveis.OperacaoEmAndamento.Pausa = false;
|
Variaveis.OperacaoEmAndamento.Pausa = false;
|
||||||
|
|
@ -1336,15 +1339,18 @@ namespace AgroBase.Models
|
||||||
if (completed == allTasks)
|
if (completed == allTasks)
|
||||||
{
|
{
|
||||||
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Calibragem finalizada com sucesso!");
|
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Calibragem finalizada com sucesso!");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Mod, StatusModulo.Operante, 100, $"Calibragem finalizada com sucesso!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Timeout na calibragem. Continuando mesmo assim.");
|
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Timeout na calibragem. Continuando mesmo assim.");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Mod, StatusModulo.Alerta, 50, $"Timeout na calibragem. Continuando mesmo assim.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Variaveis.MostrarLog($"[OperacaoModel] [RealizarCalibragemInicialAsync] Erro durante calibragem: {ex.Message}");
|
Variaveis.MostrarLog($"[OperacaoModel] [RealizarCalibragemInicialAsync] Erro durante calibragem: {ex.Message}");
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Mod, StatusModulo.Falha, 0, $"Erro durante calibragem: {ex.Message}");
|
||||||
}
|
}
|
||||||
_Controle.TipoMovimento = tipoControle;
|
_Controle.TipoMovimento = tipoControle;
|
||||||
Variaveis.OperacaoEmAndamento.Calibrando = false;
|
Variaveis.OperacaoEmAndamento.Calibrando = false;
|
||||||
|
|
@ -1623,26 +1629,12 @@ namespace AgroBase.Models
|
||||||
}
|
}
|
||||||
case T_Code.Atu:
|
case T_Code.Atu:
|
||||||
{
|
{
|
||||||
bool enviarComando = false;
|
|
||||||
for (int i = 0; i < _Controle.Bicos.Count; i++)
|
for (int i = 0; i < _Controle.Bicos.Count; i++)
|
||||||
{
|
{
|
||||||
Estado comandoEstado = _Controle.Bicos[i].ComandoAtuar ? Estado.Ligado : Estado.Desligado;
|
Estado comandoEstado = _Controle.Bicos[i].ComandoAtuar ? Estado.Ligado : Estado.Desligado;
|
||||||
if (ForcarEnvio || comandoEstado != _Controle.Bicos[i]._EstadoLeitura)
|
if (ForcarEnvio || comandoEstado != _Controle.Bicos[i]._EstadoLeitura)
|
||||||
{
|
{
|
||||||
GeneralJoystick.EnviarComandoAtuador(_Controle.Bicos[i].Componente, _Controle.Bicos[i].ID, Status: _Controle.Bicos[i].ComandoAtuar);
|
GeneralJoystick.EnviarComandoAtuador(_Controle.Bicos[i].Componente, _Controle.Bicos[i].ID, Status: _Controle.Bicos[i].ComandoAtuar);
|
||||||
enviarComando = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ligar a bomba caso esteja desligada e tenha herbicida suficiente no reservatorio
|
|
||||||
if ((Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.ContadorCarga?.PulverizadorLiberado ?? false) && enviarComando)
|
|
||||||
{
|
|
||||||
foreach (var Bomba in Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras)
|
|
||||||
{
|
|
||||||
if (Bomba._EstadoLeitura == Estado.Desligado)
|
|
||||||
{
|
|
||||||
GeneralJoystick.EnviarComandoAtuador(Bomba.Componente, Bomba.ID, Status: true, Comando: CanMessagePosicaoDados.Command1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2066,8 +2058,8 @@ namespace AgroBase.Models
|
||||||
HerbicidaPorAtuacao = Variaveis.OperacaoEmAndamento.DispAtu.Dados.ContadorCarga.HerbicidaPorAtuacao_L,
|
HerbicidaPorAtuacao = Variaveis.OperacaoEmAndamento.DispAtu.Dados.ContadorCarga.HerbicidaPorAtuacao_L,
|
||||||
PressaoLinha_SP = Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha,
|
PressaoLinha_SP = Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha,
|
||||||
PressaoLinha = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha,
|
PressaoLinha = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha,
|
||||||
PotenciaBomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault()?._Potencia ?? 0,
|
PotenciaBomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora?._Potencia ?? 0,
|
||||||
BombaLigada = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault().ComandoAtuar,
|
BombaLigada = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora?.ComandoAtuar ?? false,
|
||||||
VazaoFluxoMLpSInstantanea = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VazaoFluxoMLpSInstantanea,
|
VazaoFluxoMLpSInstantanea = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VazaoFluxoMLpSInstantanea,
|
||||||
VazaoFluxoMLpSMedia = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VazaoMediaMLs,
|
VazaoFluxoMLpSMedia = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VazaoMediaMLs,
|
||||||
VolumeVazaoML = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeVazadoML,
|
VolumeVazaoML = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeVazadoML,
|
||||||
|
|
@ -2731,7 +2723,7 @@ namespace AgroBase.Models
|
||||||
_DispMvd?.Dados?.AtualizarDadosFreio();
|
_DispMvd?.Dados?.AtualizarDadosFreio();
|
||||||
_DispSen?.Dados?.AtualizarStatusSinaleiros(Variaveis.OperacaoEmAndamento.Parametros?.Modo ?? ModoOperacao.NaoDefinido, Variaveis.OperacaoEmAndamento.StatusAtual);
|
_DispSen?.Dados?.AtualizarStatusSinaleiros(Variaveis.OperacaoEmAndamento.Parametros?.Modo ?? ModoOperacao.NaoDefinido, Variaveis.OperacaoEmAndamento.StatusAtual);
|
||||||
_DispSen?.Dados?.AtualizarDadosCameras();
|
_DispSen?.Dados?.AtualizarDadosCameras();
|
||||||
_DispAtu?.Dados?.AtualizaTempoAtuadoGeral();
|
_DispAtu?.Dados?.AtualizarMetricasOperacao();
|
||||||
_Cooler?.Atualizar(tmp_max, DateTime.Now);
|
_Cooler?.Atualizar(tmp_max, DateTime.Now);
|
||||||
_Bateria?.AtualizarConsumo(_DispMvd?.Dados?.DistanciaPercorridaTotal ?? 0);
|
_Bateria?.AtualizarConsumo(_DispMvd?.Dados?.DistanciaPercorridaTotal ?? 0);
|
||||||
_Reservatorio?.AtualizarConsumo(_DispMvd?.Dados?.DistanciaPercorridaTotal ?? 0, Variaveis.OperacaoEmAndamento.TempoDecorridoSegs, _DispMvd?.Dados?.VelocidadeMedia ?? 0);
|
_Reservatorio?.AtualizarConsumo(_DispMvd?.Dados?.DistanciaPercorridaTotal ?? 0, Variaveis.OperacaoEmAndamento.TempoDecorridoSegs, _DispMvd?.Dados?.VelocidadeMedia ?? 0);
|
||||||
|
|
@ -2743,7 +2735,7 @@ namespace AgroBase.Models
|
||||||
bool imu_iniciado = sIMU?.timestamp > 0 && HealthWorkerService.ModulosSaude.FirstOrDefault(x => x.modulo == T_Code.Imu)?.status != StatusModulo.Desconectado;
|
bool imu_iniciado = sIMU?.timestamp > 0 && HealthWorkerService.ModulosSaude.FirstOrDefault(x => x.modulo == T_Code.Imu)?.status != StatusModulo.Desconectado;
|
||||||
var dadosIMU = sIMU != null && imu_iniciado ? sIMU.Clone() : new ModuloIMUModel();
|
var dadosIMU = sIMU != null && imu_iniciado ? sIMU.Clone() : new ModuloIMUModel();
|
||||||
|
|
||||||
var bombaLinha = _DispAtu?.Dados?.BombasPressurizadoras?.FirstOrDefault(x => x.ID == "BMBLN");
|
var bombaLinha = _DispAtu?.Dados?.BombaPressurizadora;
|
||||||
var dadosAtuador = _DispAtu != null ? new OperacaoSensoriamentoLogAtuModel()
|
var dadosAtuador = _DispAtu != null ? new OperacaoSensoriamentoLogAtuModel()
|
||||||
{
|
{
|
||||||
QtdCamerasSolo = _DispSen.Dados.CamerasSolo.Count,
|
QtdCamerasSolo = _DispSen.Dados.CamerasSolo.Count,
|
||||||
|
|
@ -2765,11 +2757,11 @@ namespace AgroBase.Models
|
||||||
VazaoInstantaneaCalc = _DispAtu.Dados.VazaoFluxoMLpSInstantaneaCalc,
|
VazaoInstantaneaCalc = _DispAtu.Dados.VazaoFluxoMLpSInstantaneaCalc,
|
||||||
VazaoMedia = _DispAtu.Dados.VazaoMediaMLs,
|
VazaoMedia = _DispAtu.Dados.VazaoMediaMLs,
|
||||||
TempoBombaAtuada = _DispAtu.Dados.TempoAtuado,
|
TempoBombaAtuada = _DispAtu.Dados.TempoAtuado,
|
||||||
ComandoBomba = bombaLinha.ComandoAtuar,
|
ComandoBomba = bombaLinha?.ComandoAtuar ?? false,
|
||||||
LeituraComandoBomba = bombaLinha._EstadoLeitura == Estado.Ligado,
|
LeituraComandoBomba = bombaLinha?._EstadoLeitura == Estado.Ligado,
|
||||||
LeituraPotenciaBomba = FuncoesMatematicas.Clamp(bombaLinha._Potencia, 0, 100),
|
LeituraPotenciaBomba = FuncoesMatematicas.Clamp(bombaLinha?._Potencia ?? 0, 0, 100),
|
||||||
VolumeVazaoMl = _DispAtu.Dados.VolumeVazadoML,
|
VolumeVazaoMl = _DispAtu.Dados.VolumeVazadoML,
|
||||||
BombaCavitada = _DispAtu.Dados.Conectado && _DispAtu.Dados.PressaoLinha < pControle?.AtuPressaoLinha && _DispAtu.Dados.PressaoLinha < VariaveisEquipamento.PressaoMinimaCavitacao && bombaLinha._EstadoLeitura == Estado.Ligado && bombaLinha._Potencia > 20,
|
BombaCavitada = _DispAtu.Dados.Conectado && _DispAtu.Dados.PressaoLinha < pControle?.AtuPressaoLinha && _DispAtu.Dados.PressaoLinha < VariaveisEquipamento.PressaoMinimaCavitacao && bombaLinha?._EstadoLeitura == Estado.Ligado && bombaLinha?._Potencia > 20,
|
||||||
Iniciados = _DispAtu.Dados.Sensores.Select(s => new { s.ID, s.Inicializado }).Union(_DispAtu.Dados.BicosPulverizadores.Select(b => new { b.ID, b.Inicializado })).Union(_DispAtu.Dados.BombasPressurizadoras.Select(b => new { b.ID, b.Inicializado })).ToDictionary(x => x.ID, x => x.Inicializado),
|
Iniciados = _DispAtu.Dados.Sensores.Select(s => new { s.ID, s.Inicializado }).Union(_DispAtu.Dados.BicosPulverizadores.Select(b => new { b.ID, b.Inicializado })).Union(_DispAtu.Dados.BombasPressurizadoras.Select(b => new { b.ID, b.Inicializado })).ToDictionary(x => x.ID, x => x.Inicializado),
|
||||||
AnguloBarraEsquerda = _DispAtu.Dados.AnguloBarraEsquerda,
|
AnguloBarraEsquerda = _DispAtu.Dados.AnguloBarraEsquerda,
|
||||||
AnguloBarraDireita = _DispAtu.Dados.AnguloBarraDireita,
|
AnguloBarraDireita = _DispAtu.Dados.AnguloBarraDireita,
|
||||||
|
|
|
||||||
|
|
@ -1214,19 +1214,17 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
_Trajetoria?.AtualizarDistanciaPercorrida(distancia);
|
_Trajetoria?.AtualizarDistanciaPercorrida(distancia);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
var bicos = Variaveis.OperacaoEmAndamento.Controle?.Bicos;
|
var bicos = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BicosPulverizadores;
|
||||||
if (bicos != null)
|
if (bicos != null)
|
||||||
{
|
|
||||||
foreach (var bico in bicos)
|
|
||||||
{
|
{
|
||||||
if (!bico.Inicializado || !bico.Comandar || bico._EstadoLeitura != Estado.Ligado)
|
foreach (var bico in bicos)
|
||||||
{
|
{
|
||||||
continue;
|
if (!bico.Inicializado || !bico.Comandar || !bico.ComandoAtuar)
|
||||||
}
|
continue;
|
||||||
|
|
||||||
bico.AdicionarPontoTrechoAtivo(UltimaLeitura.Latitude, UltimaLeitura.Longitude);
|
bico.AdicionarPontoTrechoAtivo(UltimaLeitura.Latitude, UltimaLeitura.Longitude);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -138,10 +138,6 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
private bool _inicializado;
|
private bool _inicializado;
|
||||||
|
|
||||||
private SensorModel SensorMassaReservatorio => Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.Sensores?.FirstOrDefault(x => x.Componente == S_Code.sMAS && x.ID == "MASRS");
|
|
||||||
|
|
||||||
public AtuadorBombaModel AgitadorCalda => Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BombasPressurizadoras?.FirstOrDefault(x => x.ID == "AGTCLD");
|
|
||||||
|
|
||||||
public void IniciarOperacao(double distanciaTotalMetrosAtual, double tempoTotalSegundosAtual)
|
public void IniciarOperacao(double distanciaTotalMetrosAtual, double tempoTotalSegundosAtual)
|
||||||
{
|
{
|
||||||
if (!_inicializado)
|
if (!_inicializado)
|
||||||
|
|
@ -169,10 +165,19 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
public void AtualizarConsumo(double distanciaTotalMetrosAtual, double tempoTotalSegundosAtual, double velocidadeAtual_m_s)
|
public void AtualizarConsumo(double distanciaTotalMetrosAtual, double tempoTotalSegundosAtual, double velocidadeAtual_m_s)
|
||||||
{
|
{
|
||||||
Iniciado = SensorMassaReservatorio?.Inicializado ?? false;
|
Iniciado = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.SensorMassaReservatorio?.Inicializado ?? false;
|
||||||
|
|
||||||
if (!Iniciado)
|
if (!Iniciado)
|
||||||
|
{
|
||||||
|
PulverizadorLiberado = false;
|
||||||
|
BicosAtivos = 0;
|
||||||
|
Pulverizando = false;
|
||||||
|
VazaoFluxoAtual_mLs = 0;
|
||||||
|
VazaoEstimativaBicos_mLs = 0;
|
||||||
|
VazaoReferencia_mLs = 0;
|
||||||
|
LPorMinutoEstimadoBicos = 0;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
LerReservatorio(out double massaLida_Kg, out double massaCalc_Kg, out double volumeMedido_L);
|
LerReservatorio(out double massaLida_Kg, out double massaCalc_Kg, out double volumeMedido_L);
|
||||||
|
|
||||||
|
|
@ -237,11 +242,12 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
private void LerReservatorio(out double massaLida_Kg, out double massaCalc_Kg, out double volumeMedido_L)
|
private void LerReservatorio(out double massaLida_Kg, out double massaCalc_Kg, out double volumeMedido_L)
|
||||||
{
|
{
|
||||||
massaLida_Kg = SensorMassaReservatorio?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Massa)?.atual?.valor ?? 0;
|
var sensor = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.SensorMassaReservatorio;
|
||||||
|
massaLida_Kg = sensor?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Massa)?.atual?.valor ?? 0;
|
||||||
|
|
||||||
double leituraBruta = SensorMassaReservatorio?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.LeituraBruta)?.atual?.valor ?? 0;
|
double leituraBruta = sensor?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.LeituraBruta)?.atual?.valor ?? 0;
|
||||||
|
|
||||||
double.TryParse(SensorMassaReservatorio?.Parametros?.FirstOrDefault(x => x.Descricao == "Offset")?.Valor ?? "0", out double offset);
|
double.TryParse(sensor?.Parametros?.FirstOrDefault(x => x.Descricao == "Offset")?.Valor ?? "0", out double offset);
|
||||||
|
|
||||||
massaCalc_Kg = leituraBruta + offset;
|
massaCalc_Kg = leituraBruta + offset;
|
||||||
|
|
||||||
|
|
@ -520,35 +526,69 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
public void AtualizarAgitadorCalda(ModoAgitadorCalda modo)
|
public void AtualizarAgitadorCalda(ModoAgitadorCalda modo)
|
||||||
{
|
{
|
||||||
if (!(AgitadorCalda?.Inicializado ?? false))
|
var operacao = Variaveis.OperacaoEmAndamento;
|
||||||
return;
|
|
||||||
|
|
||||||
var controle = Variaveis.OperacaoEmAndamento?.Parametros?.Controle;
|
if (operacao?.Calibrando == true)
|
||||||
if (controle == null)
|
|
||||||
{
|
{
|
||||||
AgitadorCalda.PotenciaSP = 0;
|
/*
|
||||||
|
* Durante a calibração, RealizarTestesIniciais()
|
||||||
|
* é o proprietário temporário do agitador.
|
||||||
|
*/
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operacaoIniciada = Variaveis.OperacaoEmAndamento?.Iniciado ?? false;
|
var agitador =
|
||||||
bool pausado = Variaveis.OperacaoEmAndamento?.Pausa ?? false;
|
operacao?.DispAtu?.Dados?.AgitadorDeCalda;
|
||||||
bool operacaoAtiva = operacaoIniciada && !pausado;
|
|
||||||
|
if (!(agitador?.Inicializado ?? false))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var controle = operacao.Parametros?.Controle;
|
||||||
|
|
||||||
|
if (controle == null)
|
||||||
|
{
|
||||||
|
agitador.ComandoAtuar = false;
|
||||||
|
agitador.PotenciaSP = 0;
|
||||||
|
agitador.PressaoSP = -1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operacaoConcluida =
|
||||||
|
operacao.Sensoriamento?.StatusOperacao ==
|
||||||
|
StatusOperacao.Concluido;
|
||||||
|
|
||||||
|
bool operacaoAtiva =
|
||||||
|
operacao.Iniciado &&
|
||||||
|
!operacao.Pausa &&
|
||||||
|
!operacaoConcluida &&
|
||||||
|
PulverizadorLiberado;
|
||||||
|
|
||||||
bool bicosAtuando =
|
bool bicosAtuando =
|
||||||
Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BicosPulverizadores?
|
operacao.DispAtu?.Dados?.BicosPulverizadores?
|
||||||
.Any(x => x.Comandar && x.ComandoAtuar) ?? false;
|
.Any(x =>
|
||||||
|
x.Comandar &&
|
||||||
|
x.ComandoAtuar)
|
||||||
|
?? false;
|
||||||
|
|
||||||
double potenciaFinal = 0;
|
double potenciaFinal = 0;
|
||||||
DateTime agora = DateTime.Now;
|
DateTime agora = DateTime.Now;
|
||||||
|
|
||||||
if (operacaoAtiva && !_agitadorOperacaoAtivaAnterior)
|
if (
|
||||||
|
operacaoAtiva &&
|
||||||
|
!_agitadorOperacaoAtivaAnterior
|
||||||
|
)
|
||||||
{
|
{
|
||||||
_agitadorBoostAte = agora.AddMilliseconds(AtuAgitadorBoostRetomadaMs);
|
_agitadorBoostAte =
|
||||||
|
agora.AddMilliseconds(
|
||||||
|
AtuAgitadorBoostRetomadaMs
|
||||||
|
);
|
||||||
|
|
||||||
_agitadorUltimaTroca = agora;
|
_agitadorUltimaTroca = agora;
|
||||||
_agitadorIntermitenteLigado = true;
|
_agitadorIntermitenteLigado = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool emBoost = agora < _agitadorBoostAte;
|
bool emBoost =
|
||||||
|
agora < _agitadorBoostAte;
|
||||||
|
|
||||||
switch (modo)
|
switch (modo)
|
||||||
{
|
{
|
||||||
|
|
@ -560,11 +600,20 @@ namespace AgroBase.Services
|
||||||
if (operacaoAtiva)
|
if (operacaoAtiva)
|
||||||
{
|
{
|
||||||
if (emBoost)
|
if (emBoost)
|
||||||
potenciaFinal = AtuAgitadorPotenciaBoost;
|
{
|
||||||
|
potenciaFinal =
|
||||||
|
AtuAgitadorPotenciaBoost;
|
||||||
|
}
|
||||||
else if (bicosAtuando)
|
else if (bicosAtuando)
|
||||||
potenciaFinal = AtuAgitadorPotenciaContinua;
|
{
|
||||||
|
potenciaFinal =
|
||||||
|
AtuAgitadorPotenciaContinua;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
potenciaFinal = AtuAgitadorPotenciaManutencao;
|
{
|
||||||
|
potenciaFinal =
|
||||||
|
AtuAgitadorPotenciaManutencao;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -577,32 +626,57 @@ namespace AgroBase.Services
|
||||||
}
|
}
|
||||||
else if (emBoost)
|
else if (emBoost)
|
||||||
{
|
{
|
||||||
potenciaFinal = AtuAgitadorPotenciaBoost;
|
potenciaFinal =
|
||||||
|
AtuAgitadorPotenciaBoost;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int tempoAtualMs = _agitadorIntermitenteLigado
|
int tempoAtualMs =
|
||||||
? AtuAgitadorTempoLigadoMs
|
_agitadorIntermitenteLigado
|
||||||
: AtuAgitadorTempoDesligadoMs;
|
? AtuAgitadorTempoLigadoMs
|
||||||
|
: AtuAgitadorTempoDesligadoMs;
|
||||||
|
|
||||||
if ((agora - _agitadorUltimaTroca).TotalMilliseconds >= tempoAtualMs)
|
if (
|
||||||
|
(agora - _agitadorUltimaTroca)
|
||||||
|
.TotalMilliseconds >=
|
||||||
|
tempoAtualMs
|
||||||
|
)
|
||||||
{
|
{
|
||||||
_agitadorIntermitenteLigado = !_agitadorIntermitenteLigado;
|
_agitadorIntermitenteLigado =
|
||||||
|
!_agitadorIntermitenteLigado;
|
||||||
|
|
||||||
_agitadorUltimaTroca = agora;
|
_agitadorUltimaTroca = agora;
|
||||||
}
|
}
|
||||||
|
|
||||||
potenciaFinal = _agitadorIntermitenteLigado
|
potenciaFinal =
|
||||||
? AtuAgitadorPotenciaIntermitente
|
_agitadorIntermitenteLigado
|
||||||
: 0;
|
? AtuAgitadorPotenciaIntermitente
|
||||||
|
: 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
potenciaFinal = Math.Min(potenciaFinal, PotenciaLimitePorNivel(PercentualAtual));
|
potenciaFinal =
|
||||||
potenciaFinal = Clamp(potenciaFinal, 0, 100);
|
Math.Min(
|
||||||
|
potenciaFinal,
|
||||||
|
PotenciaLimitePorNivel(PercentualAtual)
|
||||||
|
);
|
||||||
|
|
||||||
AgitadorCalda.PotenciaSP = potenciaFinal;
|
potenciaFinal =
|
||||||
_agitadorOperacaoAtivaAnterior = operacaoAtiva;
|
Clamp(potenciaFinal, 0, 100);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Este método é a fonte de verdade do agitador.
|
||||||
|
*/
|
||||||
|
agitador.PotenciaSP = potenciaFinal;
|
||||||
|
agitador.PressaoSP = -1;
|
||||||
|
|
||||||
|
agitador.ComandoAtuar =
|
||||||
|
agitador.Comandar &&
|
||||||
|
potenciaFinal > 0;
|
||||||
|
|
||||||
|
_agitadorOperacaoAtivaAnterior =
|
||||||
|
operacaoAtiva;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue