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();
|
||||
txtMLRef.Text = DispAtu.Dados.VazaoFluxoMLpSReferencia.ToString();
|
||||
//txtPulsosRef.Text = DispAtu.Dados._FluxoPulsoRef.ToString();
|
||||
txtVolume.Text = DispAtu.Dados.VolumeVazaoAferido.ToString();
|
||||
//txtVolume.Text = DispAtu.Dados.VolumeVazaoAferido.ToString();
|
||||
|
||||
grdSensoriamento.Rows.Clear();
|
||||
grdSensoriamento.Columns.Clear();
|
||||
|
|
@ -135,7 +135,7 @@ namespace AgroBase.Forms.Atuador
|
|||
|
||||
private void AtualizarGridSensores()
|
||||
{
|
||||
var BombaPressurizadora = DispAtu.Dados.BombasPressurizadoras.FirstOrDefault();
|
||||
var BombaPressurizadora = DispAtu.Dados.BombaPressurizadora;
|
||||
grdSensoriamento.Rows[0].Cells[1].Value = BombaPressurizadora.Inicializado;
|
||||
grdSensoriamento.Rows[1].Cells[1].Value = BombaPressurizadora.ComandoAtuar;
|
||||
grdSensoriamento.Rows[2].Cells[1].Value = BombaPressurizadora._EstadoLeitura;
|
||||
|
|
@ -150,20 +150,20 @@ namespace AgroBase.Forms.Atuador
|
|||
|
||||
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);
|
||||
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ID, Status: Bomba.ComandoAtuar, Comando: Services.CanMessagePosicaoDados.Command1);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
@ -209,7 +209,7 @@ namespace AgroBase.Forms.Atuador
|
|||
DispAtu.Dados._PressaoVmax = Convert.ToDouble(txtPressaoVmax.Text);
|
||||
//DispAtu.Dados._FluxoMlRef = Convert.ToDouble(txtMLRef.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)
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ namespace AgroBase.Forms
|
|||
//CameraSolo.IniciarRotinaProcesso();
|
||||
|
||||
CameraSolo.camera.IniciarCamera(
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.ScriptDeteccaoErvas,
|
||||
"", //Variaveis.OperacaoEmAndamento.DispAtu.Dados.ScriptDeteccaoErvas,
|
||||
new string[] {
|
||||
CameraSolo.MaxLeituras.ToString(),
|
||||
CameraSolo.VideoPorta,
|
||||
|
|
|
|||
|
|
@ -430,8 +430,8 @@ namespace AgroBase.Forms.IHM
|
|||
bool Inicializado = Dispositivo != null && Dispositivo.Dados.ConexaoAtiva;
|
||||
idx = PreencheDadosLinha(grid, Testes, idx, Inicializado ? 1 : 0);
|
||||
|
||||
AtuadorBombaModel Bomba = Dispositivo.Dados.BombasPressurizadoras.FirstOrDefault();
|
||||
bool BombaInicializado = Bomba.Inicializado;
|
||||
AtuadorBombaModel Bomba = Dispositivo.Dados.BombaPressurizadora;
|
||||
bool BombaInicializado = Bomba?.Inicializado ?? false;
|
||||
idx = PreencheDadosLinha(grid, Testes, idx, BombaInicializado ? 1 : 0);
|
||||
|
||||
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)
|
||||
{
|
||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault();
|
||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Pressao + 10;
|
||||
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.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)
|
||||
{
|
||||
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[35].Cells[1].Value = (_Atuador?.AnguloBarraEsquerda ?? 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[39].Cells[1].Value = (_IMU?.RollSeguro ?? 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)
|
||||
{
|
||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(x => x.ID == "BMBLN");
|
||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||
if (Bomba != null)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuModoControle = (ModoControleBomba)cmbModoBomba.SelectedIndex;
|
||||
|
|
@ -691,14 +691,14 @@ namespace AgroBase.Forms.Operacoes
|
|||
|
||||
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)
|
||||
GeneralJoystick.EnviarComandoAtuador(Bomba.Componente, Bomba.ID, Status: false, Comando: CanMessagePosicaoDados.Command1, Forcar: true);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuAgitadorModo = (ModoAgitadorCalda)cmbModoAgitador.SelectedIndex;
|
||||
|
|
@ -710,7 +710,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
|
||||
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)
|
||||
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;
|
||||
|
||||
bool ligado = Atuador.BombasPressurizadoras.FirstOrDefault()?._BombaLigada ?? false;
|
||||
bool ligado = Atuador.BombaPressurizadora?._BombaLigada ?? false;
|
||||
AtuadorFuncoesGerais.DesenharAtuadores(
|
||||
pnlAtuadores,
|
||||
e,
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
Posicao = x.Posicao,
|
||||
StatusBico = x._EstadoLeitura == Enums.Estado.Ligado,
|
||||
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)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -376,10 +376,12 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
await SetZero();
|
||||
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
|
||||
{
|
||||
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;
|
||||
|
|
@ -468,6 +470,7 @@ namespace AgroBase.Models.Modules
|
|||
if (!Sucesso)
|
||||
{
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -458,10 +458,14 @@ namespace AgroBase.Models.Modules
|
|||
if (calDir[Modulo.Modulo_ID]) continue;
|
||||
tasks.Add(Modulo.DirMotor.ReferenciaMotor().ContinueWith(t => {
|
||||
if (t.IsFaulted)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}));
|
||||
|
|
|
|||
|
|
@ -1304,10 +1304,12 @@ namespace AgroBase.Models
|
|||
if (!calibragemAtuNecessaria && !calibragemDirNecessaria && !calibragemMovNecessaria) return;
|
||||
|
||||
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;
|
||||
await Task.Delay(5000);
|
||||
|
||||
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;
|
||||
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("calibrando", Variaveis.OperacaoEmAndamento.Calibrando));
|
||||
|
||||
|
|
@ -1322,6 +1324,7 @@ namespace AgroBase.Models
|
|||
if (tasks.Count == 0)
|
||||
{
|
||||
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;
|
||||
Variaveis.OperacaoEmAndamento.Calibrando = false;
|
||||
Variaveis.OperacaoEmAndamento.Pausa = false;
|
||||
|
|
@ -1336,15 +1339,18 @@ namespace AgroBase.Models
|
|||
if (completed == allTasks)
|
||||
{
|
||||
Variaveis.MostrarLog("[OperacaoModel] [RealizarCalibragemInicialAsync] Calibragem finalizada com sucesso!");
|
||||
Variaveis.OperacaoEmAndamento.Sensoriamento.InserirLog(T_Code.Mod, StatusModulo.Operante, 100, $"Calibragem finalizada com sucesso!");
|
||||
}
|
||||
else
|
||||
{
|
||||
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)
|
||||
{
|
||||
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;
|
||||
Variaveis.OperacaoEmAndamento.Calibrando = false;
|
||||
|
|
@ -1623,26 +1629,12 @@ namespace AgroBase.Models
|
|||
}
|
||||
case T_Code.Atu:
|
||||
{
|
||||
bool enviarComando = false;
|
||||
for (int i = 0; i < _Controle.Bicos.Count; i++)
|
||||
{
|
||||
Estado comandoEstado = _Controle.Bicos[i].ComandoAtuar ? Estado.Ligado : Estado.Desligado;
|
||||
if (ForcarEnvio || comandoEstado != _Controle.Bicos[i]._EstadoLeitura)
|
||||
{
|
||||
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,
|
||||
PressaoLinha_SP = Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha,
|
||||
PressaoLinha = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha,
|
||||
PotenciaBomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault()?._Potencia ?? 0,
|
||||
BombaLigada = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault().ComandoAtuar,
|
||||
PotenciaBomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora?._Potencia ?? 0,
|
||||
BombaLigada = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora?.ComandoAtuar ?? false,
|
||||
VazaoFluxoMLpSInstantanea = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VazaoFluxoMLpSInstantanea,
|
||||
VazaoFluxoMLpSMedia = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VazaoMediaMLs,
|
||||
VolumeVazaoML = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeVazadoML,
|
||||
|
|
@ -2731,7 +2723,7 @@ namespace AgroBase.Models
|
|||
_DispMvd?.Dados?.AtualizarDadosFreio();
|
||||
_DispSen?.Dados?.AtualizarStatusSinaleiros(Variaveis.OperacaoEmAndamento.Parametros?.Modo ?? ModoOperacao.NaoDefinido, Variaveis.OperacaoEmAndamento.StatusAtual);
|
||||
_DispSen?.Dados?.AtualizarDadosCameras();
|
||||
_DispAtu?.Dados?.AtualizaTempoAtuadoGeral();
|
||||
_DispAtu?.Dados?.AtualizarMetricasOperacao();
|
||||
_Cooler?.Atualizar(tmp_max, DateTime.Now);
|
||||
_Bateria?.AtualizarConsumo(_DispMvd?.Dados?.DistanciaPercorridaTotal ?? 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;
|
||||
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()
|
||||
{
|
||||
QtdCamerasSolo = _DispSen.Dados.CamerasSolo.Count,
|
||||
|
|
@ -2765,11 +2757,11 @@ namespace AgroBase.Models
|
|||
VazaoInstantaneaCalc = _DispAtu.Dados.VazaoFluxoMLpSInstantaneaCalc,
|
||||
VazaoMedia = _DispAtu.Dados.VazaoMediaMLs,
|
||||
TempoBombaAtuada = _DispAtu.Dados.TempoAtuado,
|
||||
ComandoBomba = bombaLinha.ComandoAtuar,
|
||||
LeituraComandoBomba = bombaLinha._EstadoLeitura == Estado.Ligado,
|
||||
LeituraPotenciaBomba = FuncoesMatematicas.Clamp(bombaLinha._Potencia, 0, 100),
|
||||
ComandoBomba = bombaLinha?.ComandoAtuar ?? false,
|
||||
LeituraComandoBomba = bombaLinha?._EstadoLeitura == Estado.Ligado,
|
||||
LeituraPotenciaBomba = FuncoesMatematicas.Clamp(bombaLinha?._Potencia ?? 0, 0, 100),
|
||||
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),
|
||||
AnguloBarraEsquerda = _DispAtu.Dados.AnguloBarraEsquerda,
|
||||
AnguloBarraDireita = _DispAtu.Dados.AnguloBarraDireita,
|
||||
|
|
|
|||
|
|
@ -1214,19 +1214,17 @@ namespace AgroBase.Services
|
|||
|
||||
_Trajetoria?.AtualizarDistanciaPercorrida(distancia);
|
||||
}
|
||||
}
|
||||
|
||||
var bicos = Variaveis.OperacaoEmAndamento.Controle?.Bicos;
|
||||
if (bicos != null)
|
||||
{
|
||||
foreach (var bico in bicos)
|
||||
var bicos = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BicosPulverizadores;
|
||||
if (bicos != null)
|
||||
{
|
||||
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 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)
|
||||
{
|
||||
if (!_inicializado)
|
||||
|
|
@ -169,10 +165,19 @@ namespace AgroBase.Services
|
|||
|
||||
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)
|
||||
{
|
||||
PulverizadorLiberado = false;
|
||||
BicosAtivos = 0;
|
||||
Pulverizando = false;
|
||||
VazaoFluxoAtual_mLs = 0;
|
||||
VazaoEstimativaBicos_mLs = 0;
|
||||
VazaoReferencia_mLs = 0;
|
||||
LPorMinutoEstimadoBicos = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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;
|
||||
|
||||
|
|
@ -520,35 +526,69 @@ namespace AgroBase.Services
|
|||
|
||||
public void AtualizarAgitadorCalda(ModoAgitadorCalda modo)
|
||||
{
|
||||
if (!(AgitadorCalda?.Inicializado ?? false))
|
||||
return;
|
||||
var operacao = Variaveis.OperacaoEmAndamento;
|
||||
|
||||
var controle = Variaveis.OperacaoEmAndamento?.Parametros?.Controle;
|
||||
if (controle == null)
|
||||
if (operacao?.Calibrando == true)
|
||||
{
|
||||
AgitadorCalda.PotenciaSP = 0;
|
||||
/*
|
||||
* Durante a calibração, RealizarTestesIniciais()
|
||||
* é o proprietário temporário do agitador.
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
bool operacaoIniciada = Variaveis.OperacaoEmAndamento?.Iniciado ?? false;
|
||||
bool pausado = Variaveis.OperacaoEmAndamento?.Pausa ?? false;
|
||||
bool operacaoAtiva = operacaoIniciada && !pausado;
|
||||
var agitador =
|
||||
operacao?.DispAtu?.Dados?.AgitadorDeCalda;
|
||||
|
||||
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 =
|
||||
Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BicosPulverizadores?
|
||||
.Any(x => x.Comandar && x.ComandoAtuar) ?? false;
|
||||
operacao.DispAtu?.Dados?.BicosPulverizadores?
|
||||
.Any(x =>
|
||||
x.Comandar &&
|
||||
x.ComandoAtuar)
|
||||
?? false;
|
||||
|
||||
double potenciaFinal = 0;
|
||||
DateTime agora = DateTime.Now;
|
||||
|
||||
if (operacaoAtiva && !_agitadorOperacaoAtivaAnterior)
|
||||
if (
|
||||
operacaoAtiva &&
|
||||
!_agitadorOperacaoAtivaAnterior
|
||||
)
|
||||
{
|
||||
_agitadorBoostAte = agora.AddMilliseconds(AtuAgitadorBoostRetomadaMs);
|
||||
_agitadorBoostAte =
|
||||
agora.AddMilliseconds(
|
||||
AtuAgitadorBoostRetomadaMs
|
||||
);
|
||||
|
||||
_agitadorUltimaTroca = agora;
|
||||
_agitadorIntermitenteLigado = true;
|
||||
}
|
||||
|
||||
bool emBoost = agora < _agitadorBoostAte;
|
||||
bool emBoost =
|
||||
agora < _agitadorBoostAte;
|
||||
|
||||
switch (modo)
|
||||
{
|
||||
|
|
@ -560,11 +600,20 @@ namespace AgroBase.Services
|
|||
if (operacaoAtiva)
|
||||
{
|
||||
if (emBoost)
|
||||
potenciaFinal = AtuAgitadorPotenciaBoost;
|
||||
{
|
||||
potenciaFinal =
|
||||
AtuAgitadorPotenciaBoost;
|
||||
}
|
||||
else if (bicosAtuando)
|
||||
potenciaFinal = AtuAgitadorPotenciaContinua;
|
||||
{
|
||||
potenciaFinal =
|
||||
AtuAgitadorPotenciaContinua;
|
||||
}
|
||||
else
|
||||
potenciaFinal = AtuAgitadorPotenciaManutencao;
|
||||
{
|
||||
potenciaFinal =
|
||||
AtuAgitadorPotenciaManutencao;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -577,32 +626,57 @@ namespace AgroBase.Services
|
|||
}
|
||||
else if (emBoost)
|
||||
{
|
||||
potenciaFinal = AtuAgitadorPotenciaBoost;
|
||||
potenciaFinal =
|
||||
AtuAgitadorPotenciaBoost;
|
||||
}
|
||||
else
|
||||
{
|
||||
int tempoAtualMs = _agitadorIntermitenteLigado
|
||||
? AtuAgitadorTempoLigadoMs
|
||||
: AtuAgitadorTempoDesligadoMs;
|
||||
int tempoAtualMs =
|
||||
_agitadorIntermitenteLigado
|
||||
? AtuAgitadorTempoLigadoMs
|
||||
: AtuAgitadorTempoDesligadoMs;
|
||||
|
||||
if ((agora - _agitadorUltimaTroca).TotalMilliseconds >= tempoAtualMs)
|
||||
if (
|
||||
(agora - _agitadorUltimaTroca)
|
||||
.TotalMilliseconds >=
|
||||
tempoAtualMs
|
||||
)
|
||||
{
|
||||
_agitadorIntermitenteLigado = !_agitadorIntermitenteLigado;
|
||||
_agitadorIntermitenteLigado =
|
||||
!_agitadorIntermitenteLigado;
|
||||
|
||||
_agitadorUltimaTroca = agora;
|
||||
}
|
||||
|
||||
potenciaFinal = _agitadorIntermitenteLigado
|
||||
? AtuAgitadorPotenciaIntermitente
|
||||
: 0;
|
||||
potenciaFinal =
|
||||
_agitadorIntermitenteLigado
|
||||
? AtuAgitadorPotenciaIntermitente
|
||||
: 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
potenciaFinal = Math.Min(potenciaFinal, PotenciaLimitePorNivel(PercentualAtual));
|
||||
potenciaFinal = Clamp(potenciaFinal, 0, 100);
|
||||
potenciaFinal =
|
||||
Math.Min(
|
||||
potenciaFinal,
|
||||
PotenciaLimitePorNivel(PercentualAtual)
|
||||
);
|
||||
|
||||
AgitadorCalda.PotenciaSP = potenciaFinal;
|
||||
_agitadorOperacaoAtivaAnterior = operacaoAtiva;
|
||||
potenciaFinal =
|
||||
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