Liberado calibragem direcional, padronizado Logs
This commit is contained in:
parent
c00b08dc88
commit
e03d84b498
|
|
@ -107,7 +107,7 @@ namespace AgroBase.Models
|
||||||
double dt = (DateTime.Now - MomentoUltimaLeitura).TotalMilliseconds;
|
double dt = (DateTime.Now - MomentoUltimaLeitura).TotalMilliseconds;
|
||||||
double estimado = AnguloAtual + (VelocidadeEstimada * dt);
|
double estimado = AnguloAtual + (VelocidadeEstimada * dt);
|
||||||
|
|
||||||
Console.WriteLine($"[Estimativa] {AnguloAtual:F2}° + ({VelocidadeEstimada:F4} * {dt:F0}ms) = {estimado:F2}°");
|
Variaveis.MostrarLog($"[MKS057DModel] [AnguloEstimado] [ADDR {EnderecoTx}] Estimativa {AnguloAtual:F2}° + ({VelocidadeEstimada:F4} * {dt:F0}ms) = {estimado:F2}°");
|
||||||
return estimado;
|
return estimado;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -375,11 +375,11 @@ namespace AgroBase.Models.Modules
|
||||||
if (Referenciado)
|
if (Referenciado)
|
||||||
{
|
{
|
||||||
await SetZero();
|
await SetZero();
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - Referenciamento Concluído!");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotor] [DIR {Mod_ID}] - Referenciamento Concluído!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - Referenciamento Falhou!");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotor] [DIR {Mod_ID}] - Referenciamento Falhou!");
|
||||||
}
|
}
|
||||||
|
|
||||||
Referenciando = false;
|
Referenciando = false;
|
||||||
|
|
@ -393,7 +393,7 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
if (angControle <= 0.8)
|
if (angControle <= 0.8)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - RefAbs: AnguloReal já dentro da tolerância ({AnguloReal:F2}°).");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotorAbsoluto] [DIR {Mod_ID}] - RefAbs: AnguloReal já dentro da tolerância ({AnguloReal:F2}°).");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -438,19 +438,19 @@ namespace AgroBase.Models.Modules
|
||||||
if (IN1_Atuado != EstadoInicial && AnguloEntrada == 9999)
|
if (IN1_Atuado != EstadoInicial && AnguloEntrada == 9999)
|
||||||
{
|
{
|
||||||
AnguloEntrada = Leitura.AnguloEstimado();
|
AnguloEntrada = Leitura.AnguloEstimado();
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - Angulo de Entrada Definido: {AnguloEntrada} (Leitura: {AnguloLeitura})");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotorRelativo] [DIR {Mod_ID}] - Angulo de Entrada Definido: {AnguloEntrada} (Leitura: {AnguloLeitura})");
|
||||||
|
|
||||||
_sentido = _sentido == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario;
|
_sentido = _sentido == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario;
|
||||||
_anguloSP *= -1;
|
_anguloSP *= -1;
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - Invertendo Sentido de Giro para {_sentido.ToString()}");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotorRelativo] [DIR {Mod_ID}] - Invertendo Sentido de Giro para {_sentido.ToString()}");
|
||||||
}
|
}
|
||||||
if (IN1_Atuado == EstadoInicial && AnguloEntrada != 9999 && AnguloSaida == 9999)
|
if (IN1_Atuado == EstadoInicial && AnguloEntrada != 9999 && AnguloSaida == 9999)
|
||||||
{
|
{
|
||||||
AnguloSaida = Leitura.AnguloEstimado();
|
AnguloSaida = Leitura.AnguloEstimado();
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - Angulo de Saída Definido: {AnguloSaida} (Leitura: {AnguloLeitura})");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotorRelativo] [DIR {Mod_ID}] - Angulo de Saída Definido: {AnguloSaida} (Leitura: {AnguloLeitura})");
|
||||||
|
|
||||||
_sentido = _sentido == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario;
|
_sentido = _sentido == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario;
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - Invertendo Sentido de Giro para {_sentido.ToString()}");
|
Variaveis.MostrarLog($"[DirecionalModel] [ReferenciaMotorRelativo] [DIR {Mod_ID}] - Invertendo Sentido de Giro para {_sentido.ToString()}");
|
||||||
|
|
||||||
_anguloSP = CalcularCentroCompensado(AnguloEntrada, AnguloSaida, _sentido);
|
_anguloSP = CalcularCentroCompensado(AnguloEntrada, AnguloSaida, _sentido);
|
||||||
}
|
}
|
||||||
|
|
@ -467,7 +467,7 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
if (!Sucesso)
|
if (!Sucesso)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"[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}");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Sucesso;
|
return Sucesso;
|
||||||
|
|
@ -491,7 +491,7 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
double centroCompensado = centro + compensacao;
|
double centroCompensado = centro + compensacao;
|
||||||
|
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - Folga: {folga}, Entrada: {entrada}, Saida: {saida}, Centro: {centro}, Compensacao: {compensacao}, Centro Compensado: {centroCompensado}");
|
Variaveis.MostrarLog($"[DirecionalModel] [CalcularCentroCompensado] [DIR {Mod_ID}] - Folga: {folga}, Entrada: {entrada}, Saida: {saida}, Centro: {centro}, Compensacao: {compensacao}, Centro Compensado: {centroCompensado}");
|
||||||
|
|
||||||
FolgaMecanica = folga;
|
FolgaMecanica = folga;
|
||||||
|
|
||||||
|
|
@ -510,7 +510,7 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
if (FuncoesMatematicas.ValorEstaEntre(AnguloLeitura, -1, 1))
|
if (FuncoesMatematicas.ValorEstaEntre(AnguloLeitura, -1, 1))
|
||||||
{
|
{
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - Set Zero");
|
Variaveis.MostrarLog($"[DirecionalModel] [SetZero] [DIR {Mod_ID}] - Set Zero");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -520,7 +520,7 @@ namespace AgroBase.Models.Modules
|
||||||
}
|
}
|
||||||
|
|
||||||
MKS057DCanService.Movimento(_EnderecoCAN_Tx, _EnderecoCAN_Rx, 0, 10, Sentido.Parado);
|
MKS057DCanService.Movimento(_EnderecoCAN_Tx, _EnderecoCAN_Rx, 0, 10, Sentido.Parado);
|
||||||
Console.WriteLine($"[DIR {Mod_ID}] - Comando Angulo Zero: {AnguloLeitura}");
|
Variaveis.MostrarLog($"[DirecionalModel] [SetZero] [DIR {Mod_ID}] - Comando Angulo Zero: {AnguloLeitura}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -458,10 +458,10 @@ 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)
|
||||||
Console.WriteLine($"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}");
|
||||||
if (t.IsCompleted)
|
if (t.IsCompleted)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"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!");
|
||||||
calDir[Modulo.Modulo_ID] = true;
|
calDir[Modulo.Modulo_ID] = true;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
|
||||||
|
|
@ -1254,6 +1254,8 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
public async Task RealizarCalibragemInicialAsync(bool forcar)
|
public async Task RealizarCalibragemInicialAsync(bool forcar)
|
||||||
{
|
{
|
||||||
|
if (Variaveis.OperacaoEmAndamento.Calibrando) return;
|
||||||
|
|
||||||
bool modsCalibrados = Variaveis.OperacaoEmAndamento.ModsCalibragem.All(x => x.Value.Values.Count > 0 && x.Value.Values.All(y => y == true));
|
bool modsCalibrados = Variaveis.OperacaoEmAndamento.ModsCalibragem.All(x => x.Value.Values.Count > 0 && x.Value.Values.All(y => y == true));
|
||||||
if (!forcar && modsCalibrados) return;
|
if (!forcar && modsCalibrados) return;
|
||||||
|
|
||||||
|
|
@ -1267,7 +1269,6 @@ namespace AgroBase.Models
|
||||||
bool calibragemAtuNecessaria = pControle.PulverizadorAutomatico && (DispAtu?.Dados != null && sv.Contains(s.FirstOrDefault(x => x.modulo == T_Code.Atu)?.status ?? StatusModulo.Desconectado) && (forcar || Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Atu].Any(x => !x.Value) || !Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Atu].Any()));
|
bool calibragemAtuNecessaria = pControle.PulverizadorAutomatico && (DispAtu?.Dados != null && sv.Contains(s.FirstOrDefault(x => x.modulo == T_Code.Atu)?.status ?? StatusModulo.Desconectado) && (forcar || Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Atu].Any(x => !x.Value) || !Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Atu].Any()));
|
||||||
bool calibragemDirNecessaria = (DispMvd?.Dados != null && sv.Contains(s.FirstOrDefault(x => x.modulo == T_Code.Dir)?.status ?? StatusModulo.Desconectado) && (forcar || Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Dir].Any(x => !x.Value) || !Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Dir].Any()));
|
bool calibragemDirNecessaria = (DispMvd?.Dados != null && sv.Contains(s.FirstOrDefault(x => x.modulo == T_Code.Dir)?.status ?? StatusModulo.Desconectado) && (forcar || Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Dir].Any(x => !x.Value) || !Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Dir].Any()));
|
||||||
bool calibragemMovNecessaria = (DispMvd?.Dados != null && sv.Contains(s.FirstOrDefault(x => x.modulo == T_Code.Mov)?.status ?? StatusModulo.Desconectado) && (forcar || Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Mov].Any(x => !x.Value) || !Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Mov].Any()));
|
bool calibragemMovNecessaria = (DispMvd?.Dados != null && sv.Contains(s.FirstOrDefault(x => x.modulo == T_Code.Mov)?.status ?? StatusModulo.Desconectado) && (forcar || Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Mov].Any(x => !x.Value) || !Variaveis.OperacaoEmAndamento.ModsCalibragem[T_Code.Mov].Any()));
|
||||||
calibragemDirNecessaria = false;
|
|
||||||
|
|
||||||
if (!calibragemAtuNecessaria && !calibragemDirNecessaria && !calibragemMovNecessaria) return;
|
if (!calibragemAtuNecessaria && !calibragemDirNecessaria && !calibragemMovNecessaria) return;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,11 +90,11 @@
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBlock Text="Movimento" Foreground="White" FontSize="15" FontWeight="SemiBold" Margin="0,0,0,12"/>
|
<TextBlock Text="Movimento" Foreground="White" FontSize="15" FontWeight="SemiBold" Margin="0,0,0,12"/>
|
||||||
|
|
||||||
<CheckBox Content="Automático" IsChecked="{Binding Parametros.Controle.MovimentoAutomatico}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
<CheckBox Content="Controle Automático" IsChecked="{Binding Parametros.Controle.MovimentoAutomatico}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
||||||
|
<CheckBox Content="Assistido por Sonar" IsChecked="{Binding Parametros.Controle.MovAuxilioSonar}" Style="{StaticResource ParamCheckBoxStyle}" />
|
||||||
<CheckBox Content="Parada por Obstáculo (OAK)" IsChecked="{Binding Parametros.Controle.OakParadaPorObstaculo}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
<CheckBox Content="Parada por Obstáculo (OAK)" IsChecked="{Binding Parametros.Controle.OakParadaPorObstaculo}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
||||||
<CheckBox Content="Parada por Inclinação (IMU)" IsChecked="{Binding Parametros.Controle.ImuParadaPorInclinacao}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
<CheckBox Content="Parada por Inclinação (IMU)" IsChecked="{Binding Parametros.Controle.ImuParadaPorInclinacao}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
||||||
<CheckBox Content="Frenagem Automática ao Parar" IsChecked="{Binding Parametros.Controle.FrenagemAutomaticaAoParar}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
<CheckBox Content="Frenagem Automática ao Parar" IsChecked="{Binding Parametros.Controle.FrenagemAutomaticaAoParar}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
||||||
<CheckBox Content="Assistido por Sonar" IsChecked="{Binding Parametros.Controle.MovAuxilioSonar}" Style="{StaticResource ParamCheckBoxStyle}" />
|
|
||||||
|
|
||||||
<TextBlock Text="Velocidade sem Ervas (%)" Style="{StaticResource ParamLabelStyle}"/>
|
<TextBlock Text="Velocidade sem Ervas (%)" Style="{StaticResource ParamLabelStyle}"/>
|
||||||
<TextBox Text="{Binding Parametros.Controle.MovVelocidadeSErvasPercent, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource ParamTextBoxStyle}"/>
|
<TextBox Text="{Binding Parametros.Controle.MovVelocidadeSErvasPercent, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource ParamTextBoxStyle}"/>
|
||||||
|
|
@ -115,7 +115,7 @@
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBlock Text="Direcional" Foreground="White" FontSize="15" FontWeight="SemiBold" Margin="0,0,0,12"/>
|
<TextBlock Text="Direcional" Foreground="White" FontSize="15" FontWeight="SemiBold" Margin="0,0,0,12"/>
|
||||||
|
|
||||||
<CheckBox Content="Direcional Automático" IsChecked="{Binding Parametros.Controle.DirecionalAutomatico}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
<CheckBox Content="Controle Automático" IsChecked="{Binding Parametros.Controle.DirecionalAutomatico}" Style="{StaticResource ParamCheckBoxStyle}"/>
|
||||||
<CheckBox Content="Assistido por Sonar" IsChecked="{Binding Parametros.Controle.DirAuxilioSonar}" Style="{StaticResource ParamCheckBoxStyle}" />
|
<CheckBox Content="Assistido por Sonar" IsChecked="{Binding Parametros.Controle.DirAuxilioSonar}" Style="{StaticResource ParamCheckBoxStyle}" />
|
||||||
|
|
||||||
<TextBlock Text="Ângulo Máximo (°)" Style="{StaticResource ParamLabelStyle}"/>
|
<TextBlock Text="Ângulo Máximo (°)" Style="{StaticResource ParamLabelStyle}"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue