ajustado referenciamento

This commit is contained in:
Diego Freitas 2025-04-14 19:36:55 -03:00
parent dd63a55523
commit 91ff480bbb
25 changed files with 183 additions and 127 deletions

Binary file not shown.

View File

@ -3,16 +3,28 @@
"WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\", "WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\",
"Documents": [ "Documents": [
{ {
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\modules\\atuadormodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\atuadormodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}, },
{ {
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\modules\\sensoriamentomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\modules\\movimentacaounificadomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\sensoriamentomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\movimentacaounificadomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}, },
{ {
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\services\\canservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\modules\\direcionalmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\direcionalmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\services\\mks057dcanservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\mks057dcanservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\services\\canservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\canservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\canservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\mks057dmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\mks057dmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
} }
], ],
"DocumentGroupContainers": [ "DocumentGroupContainers": [
@ -22,45 +34,84 @@
"DocumentGroups": [ "DocumentGroups": [
{ {
"DockedWidth": 200, "DockedWidth": 200,
"SelectedChildIndex": 1, "SelectedChildIndex": 3,
"Children": [ "Children": [
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 2, "DocumentIndex": 5,
"Title": "MKS057DModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MKS057DModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\MKS057DModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MKS057DModel.cs",
"RelativeToolTip": "AgroBase\\Models\\MKS057DModel.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAA6AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-14T22:08:11.705Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "CANService.cs", "Title": "CANService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\CANService.cs", "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\CANService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\CANService.cs", "RelativeDocumentMoniker": "AgroBase\\Services\\CANService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\CANService.cs", "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\CANService.cs",
"RelativeToolTip": "AgroBase\\Services\\CANService.cs", "RelativeToolTip": "AgroBase\\Services\\CANService.cs",
"ViewState": "AQIAAAMAAAAAAAAAAAAAABwAAAAAAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAADoAAAAlAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-14T11:55:37.44Z", "WhenOpened": "2025-04-14T19:46:16.662Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "AtuadorModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\AtuadorModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\AtuadorModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\AtuadorModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Modules\\AtuadorModel.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAEgDAAAiAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-12T19:46:19.183Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 1, "DocumentIndex": 1,
"Title": "SensoriamentoModel.cs", "Title": "MovimentacaoUnificadoModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\SensoriamentoModel.cs", "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\SensoriamentoModel.cs", "RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\SensoriamentoModel.cs", "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Modules\\SensoriamentoModel.cs", "RelativeToolTip": "AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"ViewState": "AQIAAIkEAAAAAAAAAAAkwM4FAAAeAAAA", "ViewState": "AQIAAAAAAAAAAAAAAAAAAIUBAAA9AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-12T19:46:16.524Z", "WhenOpened": "2025-04-14T19:32:58.021Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "OperacaoModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"ViewState": "AQIAAAQBAAAAAAAAAAAywCwBAAAIAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-14T16:46:36.149Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "MKS057DCanService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\MKS057DCanService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\MKS057DCanService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\MKS057DCanService.cs",
"RelativeToolTip": "AgroBase\\Services\\MKS057DCanService.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAA0AAABRAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-14T16:42:11.447Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "DirecionalModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\DirecionalModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\DirecionalModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\DirecionalModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Modules\\DirecionalModel.cs",
"ViewState": "AQIAAGQBAAAAAAAAAIAwwJkBAAA/AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-04-14T16:38:57.306Z",
"EditorCaption": "" "EditorCaption": ""
} }
] ]

View File

@ -222,7 +222,7 @@ namespace AgroBase.Forms.Operacoes
double Angulo = Modulo.DirMotor.Angulo; double Angulo = Modulo.DirMotor.Angulo;
Label lblAngulo = pnl.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lblDir_" + ID); Label lblAngulo = pnl.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lblDir_" + ID);
lblAngulo.Text = ID + " " + Angulo.ToString("000") + "; lblAngulo.Text = ID + " " + Angulo.ToString("000") + (" + Modulo.DirMotor.SentidoReal.ToString() + ")";
lblAngulo.ForeColor = Modulo.DirMotor.Inicializado ? Color.Green : Color.Red; lblAngulo.ForeColor = Modulo.DirMotor.Inicializado ? Color.Green : Color.Red;
Label lblMov = pnl.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lblMov_" + ID); Label lblMov = pnl.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lblMov_" + ID);
@ -474,12 +474,12 @@ namespace AgroBase.Forms.Operacoes
gridDados.Rows[20].Cells[1].Value = _Sensoriamento.Atuador.VazaoMedia.ToString("0.00"); gridDados.Rows[20].Cells[1].Value = _Sensoriamento.Atuador.VazaoMedia.ToString("0.00");
gridDados.Rows[21].Cells[1].Value = _Sensoriamento.Atuador.VolumeVazaoMl.ToString("0.00"); gridDados.Rows[21].Cells[1].Value = _Sensoriamento.Atuador.VolumeVazaoMl.ToString("0.00");
gridDados.Rows[22].Cells[1].Value = ""; gridDados.Rows[22].Cells[1].Value = "";
gridDados.Rows[23].Cells[1].Value = _SensorIMU.Roll.ToString("0.00"); gridDados.Rows[23].Cells[1].Value = (_SensorIMU?.Roll ?? 0).ToString("0.00");
gridDados.Rows[24].Cells[1].Value = _SensorIMU.Pitch.ToString("0.00"); gridDados.Rows[24].Cells[1].Value = (_SensorIMU?.Pitch ?? 0).ToString("0.00");
gridDados.Rows[25].Cells[1].Value = _SensorIMU.Yaw.ToString("0.00"); gridDados.Rows[25].Cells[1].Value = (_SensorIMU?.Yaw ?? 0).ToString("0.00");
gridDados.Rows[26].Cells[1].Value = _SensorIMU.Temperatura.ToString("0.00"); gridDados.Rows[26].Cells[1].Value = (_SensorIMU?.Temperatura ?? 0).ToString("0.00");
gridDados.Rows[27].Cells[1].Value = _SensorIMU.Pressao.ToString("0.00"); gridDados.Rows[27].Cells[1].Value = (_SensorIMU?.Pressao ?? 0).ToString("0.00");
gridDados.Rows[28].Cells[1].Value = _SensorIMU.Altitude.ToString("0.00"); gridDados.Rows[28].Cells[1].Value = (_SensorIMU?.Altitude ?? 0).ToString("0.00");
} }
#endregion #endregion

View File

@ -12,9 +12,7 @@ namespace AgroBase.Models
{ {
get get
{ {
// Houve comandos recebidos do driver dentro dos ultimos 10 segundos return UltimoComandoRecebido.AddSeconds(10) > DateTime.Now;
int tempo = MKS057DCanService.UltimoReferenciamento.AddSeconds(10) > DateTime.Now || MKS057DCanService.Referenciando ? 120 : 10;
return UltimoComandoRecebido.AddSeconds(tempo) > DateTime.Now;
} }
} }
public DateTime UltimoComandoRecebido { get; set; } public DateTime UltimoComandoRecebido { get; set; }

View File

@ -54,7 +54,14 @@ namespace AgroBase.Models.Modules
{ {
get get
{ {
return IN1_Atuado ? Sentido.Horario : Sentido.Antihorario; if (Mod_ID == "EF" || Mod_ID == "DT")
{
return IN1_Atuado ? Sentido.Antihorario : Sentido.Horario;
}
else
{
return IN1_Atuado ? Sentido.Horario : Sentido.Antihorario;
}
} }
} }
public double Angulo public double Angulo
@ -75,17 +82,17 @@ namespace AgroBase.Models.Modules
{ {
get get
{ {
return (Leitura?.Entradas?[0] ?? false); return !(Leitura?.Entradas?[0] ?? false);
} }
} }
public bool IN2_Atuado public bool IN2_Atuado
{ {
get get
{ {
return (Leitura?.Entradas?[1] ?? false); return !(Leitura?.Entradas?[1] ?? false);
} }
} }
public bool Referenciando { get; set; } = false;
public bool Comandar { get; set; } = false; public bool Comandar { get; set; } = false;
public bool Inicializado public bool Inicializado
@ -321,65 +328,72 @@ namespace AgroBase.Models.Modules
public async Task ReferenciaMotor() public async Task ReferenciaMotor()
{ {
byte Addr = EnderecoByte; Referenciando = true;
MKS057DCanService.IniciarReferenciamento(Addr);
await Task.Delay(1000); await Task.Delay(1000);
//await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoSetZero(Addr)); //await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoSetZero(Addr));
await SetZero(Addr); await SetZero();
bool Sucesso = false; bool Sucesso = false;
bool EstadoInicial = IN1_Atuado; bool EstadoInicial = IN1_Atuado;
double AnguloEntrada = 9999; double AnguloEntrada = 9999;
double AnguloSaida = 9999; double AnguloSaida = 9999;
DateTime TimeoutGeral = DateTime.Now.AddMinutes(2); // Timeout geral para o processo. DateTime TimeoutGeral = DateTime.Now.AddMinutes(2); // Timeout geral para o processo.
Sentido _sentido = SentidoReal == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario; Sentido _sentido = SentidoReal == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario;
double _anguloSP = 180 * (_sentido == Sentido.Antihorario ? -1 : 1); double _anguloSP = 360 * (_sentido == Sentido.Antihorario ? -1 : 1);
double _anguloSpAnterior = 0;
while (!Sucesso && TimeoutGeral > DateTime.Now) while (!Sucesso && TimeoutGeral > DateTime.Now)
{ {
int VelocidadeGiro = DefineVelocidadeReferenciamento(); int VelocidadeGiro = DefineVelocidadeReferenciamento();
//await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoMovimento(Addr, _angulo, VelocidadeGiro, _sentido)); //await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoMovimento(Addr, _angulo, VelocidadeGiro, _sentido));
MKS057DCanService.Movimento(Addr, _anguloSP, VelocidadeGiro, _sentido); if (_anguloSP != _anguloSpAnterior)
{
MKS057DCanService.Movimento(EnderecoByte, _anguloSP, VelocidadeGiro, _sentido);
_anguloSpAnterior = _anguloSP;
}
if (IN1_Atuado != EstadoInicial && AnguloEntrada == 9999) if (IN1_Atuado != EstadoInicial && AnguloEntrada == 9999)
{ {
Console.WriteLine($"Angulo de Entrada Definido: {Angulo}");
AnguloEntrada = Angulo; AnguloEntrada = Angulo;
MKS057DCanService.Movimento(Addr, Angulo, VelocidadeGiro, _sentido); //MKS057DCanService.Movimento(Addr, Angulo, VelocidadeGiro, _sentido);
await SetZero(Addr); //await Task.Delay(100);
_sentido = SentidoReal == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario; //await SetZero(Addr);
_anguloSP = 180 * (_sentido == Sentido.Antihorario ? -1 : 1); //await Task.Delay(500);
_sentido = _sentido == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario;
_anguloSP *= -1;
Console.WriteLine($"Invertendo Sentido de Giro para {_sentido.ToString()}");
} }
else if (IN1_Atuado == EstadoInicial && AnguloEntrada != 9999 && AnguloSaida == 9999) if (IN1_Atuado == EstadoInicial && AnguloEntrada != 9999 && AnguloSaida == 9999)
{ {
Console.WriteLine($"Angulo de Saída Definido: {Angulo}");
AnguloSaida = Angulo; AnguloSaida = Angulo;
MKS057DCanService.Movimento(Addr, Angulo, VelocidadeGiro, _sentido);
_sentido = _sentido == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario;
Console.WriteLine($"Invertendo Sentido de Giro para {_sentido.ToString()}");
_sentido = SentidoReal == Sentido.Horario ? Sentido.Antihorario : Sentido.Horario; _anguloSP = CalcularCentroCompensado(AnguloEntrada, AnguloSaida, FolgaMecanica, _sentido);
_anguloSP = AnguloSaida / 2.0;
//await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoMovimento(Addr, _centro, 36, Sentido.Horario)); //await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoMovimento(Addr, _centro, 36, Sentido.Horario));
MKS057DCanService.Movimento(Addr, _anguloSP, VelocidadeGiro, _sentido); //MKS057DCanService.Movimento(EnderecoByte, _centro, VelocidadeGiro, _sentido);
await Task.Delay(2000); //await Task.Delay(2000);
await SetZero(Addr); //await SetZero();
} }
Sucesso = AnguloEntrada != 9999 && AnguloSaida != 9999 && FuncoesMatematicas.ValorEstaEntre(AnguloSaida, 0, 0.5); Sucesso = AnguloEntrada != 9999 && AnguloSaida != 9999 && FuncoesMatematicas.ValorEstaEntre(Angulo, _anguloSP, 0.5);
if (Sucesso)
{
await SetZero();
Console.WriteLine($"Referenciamento Concluído!");
}
} }
if (!Sucesso) Referenciando = false;
{
//await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoParada(Addr));
MKS057DCanService.Parar(Addr);
}
MKS057DCanService.FinalizarReferenciamento();
} }
private int DefineVelocidadeReferenciamento() private int DefineVelocidadeReferenciamento()
@ -393,7 +407,7 @@ namespace AgroBase.Models.Modules
double centro = (entrada + saida) / 2.0; double centro = (entrada + saida) / 2.0;
// Determina o sentido do giro baseado na diferença // Determina o sentido do giro baseado na diferença
double direcao = sentido == Sentido.Horario ? 1 : -1; double direcao = sentido == Sentido.Horario ? -1 : 1;
double compensacao = (folga / 2.0) * direcao; double compensacao = (folga / 2.0) * direcao;
@ -404,19 +418,27 @@ namespace AgroBase.Models.Modules
return centroCompensado; return centroCompensado;
} }
private async Task SetZero(byte Addr) private async Task SetZero()
{ {
MKS057DCanService.SetZero(EnderecoByte);
for (int i = 0; i < 5; i++) for (int i = 0; i < 5; i++)
{ {
MKS057DCanService.SetZero(Addr); await Task.Delay(500);
if (FuncoesMatematicas.ValorEstaEntre(Angulo, 0, 1)) if (FuncoesMatematicas.ValorEstaEntre(Angulo, 0, 1))
{ {
Console.WriteLine($"Set Zero");
break; break;
} }
else
await Task.Delay(1000); {
MKS057DCanService.SetZero(EnderecoByte);
}
} }
MKS057DCanService.Movimento(EnderecoByte, 0, 10, Sentido.Parado);
Console.WriteLine($"Comando Angulo Zero: {Angulo}");
} }
} }

View File

@ -318,21 +318,18 @@ namespace AgroBase.Models.Modules
foreach (var Modulo in Modulos.Where(x => x.DirMotor.Inicializado)) foreach (var Modulo in Modulos.Where(x => x.DirMotor.Inicializado))
{ {
byte modAddr = Modulo.DirMotor.EnderecoByte; byte modAddr = Modulo.DirMotor.EnderecoByte;
if (!MKS057DCanService.Referenciando || (MKS057DCanService.Referenciando && MKS057DCanService.AddrRef == modAddr)) //MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoRequisicaoPulsos(modAddr));
{ MKS057DCanService.RequisitarDado(modAddr, MKS057DCanService.MksHandler.MksFuncCode.PulsosRecebidos);
//MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoRequisicaoPulsos(modAddr)); //MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoRequisicaoIO(modAddr));
MKS057DCanService.RequisitarDado(modAddr, MKS057DCanService.MksHandler.MksFuncCode.PulsosRecebidos); MKS057DCanService.RequisitarDado(modAddr, MKS057DCanService.MksHandler.MksFuncCode.IO);
//MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoRequisicaoIO(modAddr));
MKS057DCanService.RequisitarDado(modAddr, MKS057DCanService.MksHandler.MksFuncCode.IO);
// Verifica se o angulo de set point do motor em questao e diferente do angulo atual, e se for, reenvia o comando para garantir que o motor esteja coerente com o set point // Verifica se o angulo de set point do motor em questao e diferente do angulo atual, e se for, reenvia o comando para garantir que o motor esteja coerente com o set point
if (!MKS057DCanService.Referenciando && (Modulo.DirMotor.UltimoComandoEnviado.AddMilliseconds(MKS057DCanService.TaxaAmostragem) < DateTime.Now) && !Modulo.DirMotor.AtingiuAnguloSP) if (!MKS057DCanService.Referenciando && (Modulo.DirMotor.UltimoComandoEnviado.AddMilliseconds(MKS057DCanService.TaxaAmostragem) < DateTime.Now) && !Modulo.DirMotor.AtingiuAnguloSP)
{
var Controle = Variaveis.OperacaoEmAndamento.Controle.TiposControle?.FirstOrDefault(x => x.Tipo == T_Code.Dir);
if (Controle != null)
{ {
var Controle = Variaveis.OperacaoEmAndamento.Controle.TiposControle?.FirstOrDefault(x => x.Tipo == T_Code.Dir); Modulo.DirMotor.EnviarComandoControle(Controle.UltimaDirecao);
if (Controle != null)
{
Modulo.DirMotor.EnviarComandoControle(Controle.UltimaDirecao);
}
} }
} }
} }
@ -397,10 +394,11 @@ namespace AgroBase.Models.Modules
TipoMovimentoDirecional tipoControle = Variaveis.OperacaoEmAndamento.Controle.TipoMovimento; TipoMovimentoDirecional tipoControle = Variaveis.OperacaoEmAndamento.Controle.TipoMovimento;
Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = TipoMovimentoDirecional.Diagnostico; Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = TipoMovimentoDirecional.Diagnostico;
var ModsRef = Modulos.Where(x => x.DirMotor.Comandar && x.DirMotor.Inicializado && !x.DirMotor.IN1_Atuado).ToList(); var ModsRef = Modulos.Where(x => x.DirMotor.Comandar && x.DirMotor.Inicializado).ToList();
foreach (var Modulo in ModsRef) foreach (var Modulo in ModsRef)
{ {
await Modulo.DirMotor.ReferenciaMotor(); Task.Run(async () => await Modulo.DirMotor.ReferenciaMotor());
//await Modulo.DirMotor.ReferenciaMotor();
} }
Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = tipoControle; Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = tipoControle;
} }

View File

@ -1823,7 +1823,7 @@ namespace AgroBase.Models
{ {
Variaveis.OperacaoEmAndamento.AtualizarDadosControle(true); Variaveis.OperacaoEmAndamento.AtualizarDadosControle(true);
} }
else else if (Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.Manual && !MKS057DCanService.Referenciando)
{ {
GeneralJoystick.EnviaComandoMotor(Keys.Escape, T_Code.Mov, true); GeneralJoystick.EnviaComandoMotor(Keys.Escape, T_Code.Mov, true);
GeneralJoystick.EnviaComandoMotor(Keys.Escape, T_Code.Dir, true); GeneralJoystick.EnviaComandoMotor(Keys.Escape, T_Code.Dir, true);
@ -2373,7 +2373,7 @@ namespace AgroBase.Models
Cod |= 0x1000; // Bit 12: Movimentação Direita inoperante Cod |= 0x1000; // Bit 12: Movimentação Direita inoperante
// Verificação de falhas específicas em `modsComFalha` // Verificação de falhas específicas em `modsComFalha`
foreach (var modFalha in modsComFalha) foreach (var modFalha in modsComFalha ?? new List<T_Code>())
{ {
switch (modFalha) switch (modFalha)
{ {
@ -2426,7 +2426,7 @@ namespace AgroBase.Models
} }
// Verificação de `atuModsFalha` // Verificação de `atuModsFalha`
foreach (var falha in atuModsFalha) foreach (var falha in atuModsFalha ?? new List<string>())
{ {
switch (falha) switch (falha)
{ {
@ -2458,7 +2458,7 @@ namespace AgroBase.Models
} }
// Verificação de `senModsFalha` // Verificação de `senModsFalha`
foreach (var falha in senModsFalha) foreach (var falha in senModsFalha ?? new List<string>())
{ {
switch (falha) switch (falha)
{ {
@ -2511,7 +2511,7 @@ namespace AgroBase.Models
} }
// Verificação de `dirModsFalha` // Verificação de `dirModsFalha`
foreach (var falha in dirModsFalha) foreach (var falha in dirModsFalha ?? new List<string>())
{ {
switch (falha) switch (falha)
{ {
@ -2531,7 +2531,7 @@ namespace AgroBase.Models
} }
// Verificação de `movEsqModsFalha` // Verificação de `movEsqModsFalha`
foreach (var falha in movEsqModsFalha) foreach (var falha in movEsqModsFalha ?? new List<string>())
{ {
switch (falha) switch (falha)
{ {
@ -2545,7 +2545,7 @@ namespace AgroBase.Models
} }
// Verificação de `movDirModsFalha` // Verificação de `movDirModsFalha`
foreach (var falha in movDirModsFalha) foreach (var falha in movDirModsFalha ?? new List<string>())
{ {
switch (falha) switch (falha)
{ {

View File

@ -333,7 +333,7 @@ namespace AgroBase.Services
{ {
_PortaCAN.Write(comando); _PortaCAN.Write(comando);
Console.WriteLine($"[CAN] Frame enviado: {comando}"); //Console.WriteLine($"[CAN] Frame enviado: {comando}");
} }
} }

View File

@ -23,12 +23,11 @@ namespace AgroBase.Services
return CanService.IsConnected && SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Dir) && DadosLeitura.Any(x => x.Iniciado); return CanService.IsConnected && SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Dir) && DadosLeitura.Any(x => x.Iniciado);
} }
} }
public static byte AddrRef = 0x00;
public static bool Referenciando public static bool Referenciando
{ {
get get
{ {
return AddrRef > 0x00; return Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.Modulos?.Any(x => x?.DirMotor?.Referenciando ?? false) ?? false;
} }
} }
public static DateTime UltimoReferenciamento = DateTime.MinValue; public static DateTime UltimoReferenciamento = DateTime.MinValue;
@ -36,7 +35,7 @@ namespace AgroBase.Services
{ {
get get
{ {
return Referenciando ? 100 : 300; return Referenciando ? 50 : 300;
} }
} }
@ -133,18 +132,6 @@ namespace AgroBase.Services
return val; return val;
} }
public static void IniciarReferenciamento(byte Addr)
{
AddrRef = Addr;
UltimoReferenciamento = DateTime.Now;
}
public static void FinalizarReferenciamento()
{
AddrRef = 0x00;
UltimoReferenciamento = DateTime.Now;
}
#endregion #endregion
#region COMANDOS #region COMANDOS

View File

@ -29,7 +29,7 @@ namespace AgroBase.Services
public static List<T_Code> DispositivosConexaoInicial = new List<T_Code>() { T_Code.Mvd, T_Code.Atu, T_Code.Sen }; public static List<T_Code> DispositivosConexaoInicial = new List<T_Code>() { T_Code.Mvd, T_Code.Atu, T_Code.Sen };
public static List<T_Code> DispositivosProprios = new List<T_Code>() { T_Code.Atu, T_Code.Sen }; public static List<T_Code> DispositivosProprios = new List<T_Code>() { T_Code.Atu, T_Code.Sen };
public static List<T_Code> DispositivosModbus = new List<T_Code>() { T_Code.Pzm, T_Code.Wit, T_Code.A05 }; public static List<T_Code> DispositivosModbus = new List<T_Code>() { T_Code.Pzm, T_Code.Wit, T_Code.A05 };
public static List<T_Code> DispositivosCan = new List<T_Code>() { T_Code.Mks, T_Code.Sen, T_Code.Atu }; public static List<T_Code> DispositivosCan = new List<T_Code>() { T_Code.Dir, T_Code.Mks, T_Code.Sen, T_Code.Atu };
public static List<T_Code> DispositivosMultiplos = new List<T_Code>() { T_Code.Bld, T_Code.Mks, T_Code.Mvd, T_Code.Oid, T_Code.Mov, T_Code.Dir }; public static List<T_Code> DispositivosMultiplos = new List<T_Code>() { T_Code.Bld, T_Code.Mks, T_Code.Mvd, T_Code.Oid, T_Code.Mov, T_Code.Dir };
public static List<DispositivoDetalhesModel> DispositivosMapeados = new List<DispositivoDetalhesModel>(); public static List<DispositivoDetalhesModel> DispositivosMapeados = new List<DispositivoDetalhesModel>();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -25,7 +25,7 @@
<meta name="viewport" content="width=device-width, <meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style> <style>
#map_9732a3a481e157ff8ba61a30462a8ce8 { #map_f39a2eeeafc2e53a380e049fb0eabbad {
position: relative; position: relative;
width: 100.0%; width: 100.0%;
height: 100.0%; height: 100.0%;
@ -39,14 +39,14 @@
<body> <body>
<div class="folium-map" id="map_9732a3a481e157ff8ba61a30462a8ce8" ></div> <div class="folium-map" id="map_f39a2eeeafc2e53a380e049fb0eabbad" ></div>
</body> </body>
<script> <script>
var map_9732a3a481e157ff8ba61a30462a8ce8 = L.map( var map_f39a2eeeafc2e53a380e049fb0eabbad = L.map(
"map_9732a3a481e157ff8ba61a30462a8ce8", "map_f39a2eeeafc2e53a380e049fb0eabbad",
{ {
center: [0.0, 0.0], center: [0.0, 0.0],
crs: L.CRS.EPSG3857, crs: L.CRS.EPSG3857,
@ -60,13 +60,13 @@
var tile_layer_b28cc1434b76a05db69db0ade9dd15a6 = L.tileLayer( var tile_layer_3f2633897e8c84372d3f03a0dd6f2143 = L.tileLayer(
"https://tile.openstreetmap.org/{z}/{x}/{y}.png", "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false} {"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
); );
tile_layer_b28cc1434b76a05db69db0ade9dd15a6.addTo(map_9732a3a481e157ff8ba61a30462a8ce8); tile_layer_3f2633897e8c84372d3f03a0dd6f2143.addTo(map_f39a2eeeafc2e53a380e049fb0eabbad);
</script> </script>
@ -87,7 +87,7 @@
} }
trajeto_json_add({"features": []}); trajeto_json_add({"features": []});
trajeto_json.addTo(map_9732a3a481e157ff8ba61a30462a8ce8); trajeto_json.addTo(map_f39a2eeeafc2e53a380e049fb0eabbad);
function adicionarGeometria(novaGeometria) { function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria); trajeto_json.addData(novaGeometria);
@ -145,7 +145,7 @@
var marcadorDinamico = L.marker([0, 0], { var marcadorDinamico = L.marker([0, 0], {
icon: customIcon icon: customIcon
}).addTo(map_9732a3a481e157ff8ba61a30462a8ce8); }).addTo(map_f39a2eeeafc2e53a380e049fb0eabbad);
// Conectar ao broker MQTT // Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
@ -183,7 +183,7 @@
marcadorDinamico.setRotationAngle(angulo); marcadorDinamico.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]); adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
map_9732a3a481e157ff8ba61a30462a8ce8.setView(novaPosicao, map_9732a3a481e157ff8ba61a30462a8ce8.getZoom()); map_f39a2eeeafc2e53a380e049fb0eabbad.setView(novaPosicao, map_f39a2eeeafc2e53a380e049fb0eabbad.getZoom());
}); });
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) { function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {

View File

@ -482,4 +482,4 @@ C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.GenerateR
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CoreCompileInputs.cache C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CoreCompileInputs.cache
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.exe C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.exe
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.pdb C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.pdb
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CopyComplete C:\ZendionINC\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.Up2Date