ajustes ao carregar os parametros da operacao

This commit is contained in:
Diego Freitas 2026-07-01 14:18:00 -03:00
parent c9f3bd69d7
commit 84e2c88b4f
5 changed files with 34 additions and 36 deletions

View File

@ -204,6 +204,7 @@ namespace AgroBase.Models.Modules
ID = T_Code.Dir.ToString(),
_EnderecoCAN_Tx = _EnderecoTx,
_EnderecoCAN_Rx = _EnderecoRx,
Comandar = true,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.PUL,

View File

@ -281,6 +281,7 @@ namespace AgroBase.Models.Modules
ID = T_Code.Mov.ToString(),
_EnderecoCAN_Tx = _EnderecoTx,
_EnderecoCAN_Rx = _EnderecoRx,
Comandar = true,
Funcoes = new List<FuncoesPinout>()
{
FuncoesPinout.TMP,

View File

@ -191,6 +191,12 @@ namespace AgroBase.Models
Mapa = null,
PontosRetorno = null,
DadosLeitura = new OperacaoParametrosDadosModel(),
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
{
new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Npc, Mandatorio = true, Utilizar = true },
new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Can, Mandatorio = true, Utilizar = true },
new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Bat, Mandatorio = true, Utilizar = true },
}
}
};
op.Sensoriamento = new OperacaoSensoriamentoConjuntoModel(op)
@ -217,7 +223,7 @@ namespace AgroBase.Models
switch (Modo)
{
case ModoOperacao.NaoDefinido:
op.Parametros.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>();
break;
case ModoOperacao.Manual:
op.Parametros.Controle = new OperacaoParametrosControleModel()
@ -255,7 +261,7 @@ namespace AgroBase.Models
AtuAgitadorModo = ModoAgitadorCalda.SemAgitacao,
AtuModoControle = ModoControleBomba.PID
};
op.Parametros.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
op.Parametros.ModulosMandatorios.AddRange(new List<OperacaoModulosMandatoriosModel>()
{
new OperacaoModulosMandatoriosModel()
{
@ -275,7 +281,7 @@ namespace AgroBase.Models
Mandatorio = false,
Utilizar = true,
}
};
});
op.Parametros.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{
new OperacaoParametrosMandatoriosModel()
@ -366,7 +372,7 @@ namespace AgroBase.Models
AtuAgitadorModo = ModoAgitadorCalda.Continuo,
AtuModoControle = ModoControleBomba.PID,
};
op.Parametros.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
op.Parametros.ModulosMandatorios.AddRange(new List<OperacaoModulosMandatoriosModel>()
{
new OperacaoModulosMandatoriosModel()
{
@ -416,7 +422,7 @@ namespace AgroBase.Models
Mandatorio = true,
Utilizar = true,
},
};
});
op.Parametros.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{
new OperacaoParametrosMandatoriosModel()
@ -506,7 +512,7 @@ namespace AgroBase.Models
AtuAgitadorModo = ModoAgitadorCalda.SemAgitacao,
AtuModoControle = ModoControleBomba.PID,
};
op.Parametros.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
op.Parametros.ModulosMandatorios.AddRange(new List<OperacaoModulosMandatoriosModel>()
{
new OperacaoModulosMandatoriosModel()
{
@ -548,7 +554,7 @@ namespace AgroBase.Models
Dispositivo = T_Code.Lra,
Mandatorio = true,
}
};
});
op.Parametros.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{
new OperacaoParametrosMandatoriosModel()
@ -645,7 +651,7 @@ namespace AgroBase.Models
AtuAgitadorModo = ModoAgitadorCalda.SemAgitacao,
AtuModoControle = ModoControleBomba.PID,
};
op.Parametros.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
op.Parametros.ModulosMandatorios.AddRange(new List<OperacaoModulosMandatoriosModel>()
{
new OperacaoModulosMandatoriosModel()
{
@ -665,7 +671,7 @@ namespace AgroBase.Models
Mandatorio = true,
Utilizar = true,
}
};
});
op.Parametros.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{
new OperacaoParametrosMandatoriosModel()
@ -744,7 +750,7 @@ namespace AgroBase.Models
AtuAgitadorModo = ModoAgitadorCalda.SemAgitacao,
AtuModoControle = ModoControleBomba.PID,
};
op.Parametros.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
op.Parametros.ModulosMandatorios.AddRange(new List<OperacaoModulosMandatoriosModel>()
{
new OperacaoModulosMandatoriosModel()
{
@ -788,7 +794,7 @@ namespace AgroBase.Models
Mandatorio = true,
Utilizar = true,
},
};
});
op.Parametros.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>();
op.Controle = new OperacaoControleModel()
{
@ -827,10 +833,6 @@ namespace AgroBase.Models
}
op.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Npc, Mandatorio = true, Utilizar = true });
op.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Can, Mandatorio = true, Utilizar = true });
op.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Bat, Mandatorio = true, Utilizar = true });
op.Parametros.ModulosMandatorios.ForEach(m => m.ComponentesEmUso = op.PreencherComponentesEmUso(m.Dispositivo));
if (CarregarModulos)
{
@ -850,29 +852,25 @@ namespace AgroBase.Models
switch (Modulo)
{
case T_Code.Mov:
if (op.DispMvd != null)
op.DispMvd?.Dados?.Modulos?.ForEach(m => d.Add(m.Modulo_ID, (true, m.MovMotor.Comandar)));
var dadosMov = op?.DispMvd?.Dados ?? MovimentacaoUnificadaModel.CarregarParametrosIniciais();
dadosMov?.Modulos?.ForEach(m => d.Add(m.Modulo_ID, (true, m.MovMotor.Comandar)));
break;
case T_Code.Dir:
if (op.DispMvd != null)
op.DispMvd?.Dados?.Modulos?.ForEach(m => d.Add(m.Modulo_ID, (true, m.DirMotor.Comandar)));
var dadosDir = op?.DispMvd?.Dados ?? MovimentacaoUnificadaModel.CarregarParametrosIniciais();
dadosDir?.Modulos?.ForEach(m => d.Add(m.Modulo_ID, (true, m.DirMotor.Comandar)));
break;
case T_Code.Atu:
if (op.DispAtu != null)
{
op.DispAtu?.Dados?.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
op.DispAtu?.Dados?.BombasPressurizadoras?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
op.DispAtu?.Dados?.BicosPulverizadores?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
}
var dadosAtu = op?.DispAtu?.Dados ?? AtuadorModel.CarregarParametrosIniciais();
dadosAtu?.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
dadosAtu?.BombasPressurizadoras?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
dadosAtu?.BicosPulverizadores?.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
break;
case T_Code.Sen:
if (op.DispSen != null)
{
op.DispSen?.Dados?.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
op.DispSen?.Dados?.Sinaleiros?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
op.DispSen?.Dados?.Servos?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
op.DispSen?.Dados?.Reles?.ForEach(r => d.Add(r.ID, (r.Mandatorio, r.Controlar)));
}
var dadosSen = op?.DispSen?.Dados ?? SensoriamentoModel.CarregarParametrosIniciais();
dadosSen?.Sensores?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
dadosSen?.Sinaleiros?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
dadosSen?.Servos?.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
dadosSen?.Reles?.ForEach(r => d.Add(r.ID, (r.Mandatorio, r.Controlar)));
break;
}
return d;

View File

@ -448,7 +448,7 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento.Diagnostico
if (!string.IsNullOrWhiteSpace(item.LabelModulo))
{
return dados.DadosLeitura?.Operacao?.ModulosMandatorios?
return dados.ModulosMandatorios?
.FirstOrDefault(x => x.Dispositivo == item.Modulo)?
.ComponentesEmUso?
.Any(x => x.Key == item.LabelModulo && x.Value.Item1) ?? false;
@ -464,7 +464,7 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento.Diagnostico
if (!string.IsNullOrWhiteSpace(item.LabelModulo))
{
return dados.DadosLeitura?.Operacao?.ModulosMandatorios?
return dados.ModulosMandatorios?
.FirstOrDefault(x => x.Dispositivo == item.Modulo)?
.ComponentesEmUso?
.Any(x => x.Key == item.LabelModulo && x.Value.Item2) ?? false;

View File

@ -185,8 +185,6 @@
<StackPanel>
<TextBlock Text="MPC" Foreground="White" FontSize="15" FontWeight="SemiBold" Margin="0,0,0,12"/>
<CheckBox Content="Matriz de Custo" ToolTip="Define se o MPC deve usar a matriz de custo para filtrar candidatos e evitar regiões ruins ou com obstáculos." IsChecked="{Binding Parametros.Controle.MpcMatrizCusto}" Style="{StaticResource ParamCheckBoxStyle}"/>
<TextBlock Text="Horizonte (m)" Style="{StaticResource ParamLabelStyle}"/>
<TextBox ToolTip="Distância, em metros, que o MPC usa como horizonte de previsão para escolher a melhor trajetória." Text="{Binding Parametros.Controle.MpcHorizonte, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource ParamTextBoxStyle}" Margin="0,0,0,0"/>