otimizado fluxo de controle
This commit is contained in:
parent
9fa0e5832e
commit
c260596838
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -145,7 +145,7 @@ namespace AgroBase.Forms.Atuador
|
||||||
grdSensoriamento.Rows[0].Cells[1].Value = DispAtu.Dados.BombaPressurizadora.Inicializado;
|
grdSensoriamento.Rows[0].Cells[1].Value = DispAtu.Dados.BombaPressurizadora.Inicializado;
|
||||||
grdSensoriamento.Rows[1].Cells[1].Value = DispAtu.Dados.BombaPressurizadora.ComandoAtuar;
|
grdSensoriamento.Rows[1].Cells[1].Value = DispAtu.Dados.BombaPressurizadora.ComandoAtuar;
|
||||||
grdSensoriamento.Rows[2].Cells[1].Value = DispAtu.Dados.BombaPressurizadora.LeituraEstado;
|
grdSensoriamento.Rows[2].Cells[1].Value = DispAtu.Dados.BombaPressurizadora.LeituraEstado;
|
||||||
grdSensoriamento.Rows[3].Cells[1].Value = DispAtu.Dados.BombaPressurizadora.Potencia;
|
grdSensoriamento.Rows[3].Cells[1].Value = DispAtu.Dados.BombaPressurizadora.LeituraPotencia;
|
||||||
grdSensoriamento.Rows[4].Cells[1].Value = DispAtu.Dados.PressaoLinha.ToString("0.00000");
|
grdSensoriamento.Rows[4].Cells[1].Value = DispAtu.Dados.PressaoLinha.ToString("0.00000");
|
||||||
grdSensoriamento.Rows[5].Cells[1].Value = DispAtu.Dados.PressaoLinhaCalc.ToString("0.00000");
|
grdSensoriamento.Rows[5].Cells[1].Value = DispAtu.Dados.PressaoLinhaCalc.ToString("0.00000");
|
||||||
grdSensoriamento.Rows[6].Cells[1].Value = DispAtu.Dados.VazaoFluxoMLpS.ToString("0.00000");
|
grdSensoriamento.Rows[6].Cells[1].Value = DispAtu.Dados.VazaoFluxoMLpS.ToString("0.00000");
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,8 @@
|
||||||
using AgroBase.Forms.Sensoriamento;
|
using AgroBase.Forms.Sensoriamento;
|
||||||
using AgroBase.Models;
|
using AgroBase.Models;
|
||||||
using AgroBase.Models.Modules;
|
using AgroBase.Models.Modules;
|
||||||
using Emgu.CV.Ocl;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using static AgroBase.Models.Enums;
|
using static AgroBase.Models.Enums;
|
||||||
|
|
||||||
|
|
@ -32,7 +25,7 @@ namespace AgroBase.Forms.Atuador
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
chbBicosAtuacao.Checked = Disp.Dados.AtuacaoNivelAlto;
|
chbBicosAtuacao.Checked = Disp.Dados.BicosPulverizadores.Any(x => x.AtuacaoNivelAlto);
|
||||||
nudBicosQtd.Value = Disp.Dados.QuantidadeBicos;
|
nudBicosQtd.Value = Disp.Dados.QuantidadeBicos;
|
||||||
txtDensidade.Text = Disp.Dados.DensidadeHerbicida.ToString("0.00");
|
txtDensidade.Text = Disp.Dados.DensidadeHerbicida.ToString("0.00");
|
||||||
nudCapMax.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.CapacidadeReservatorio);
|
nudCapMax.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.CapacidadeReservatorio);
|
||||||
|
|
@ -46,7 +39,7 @@ namespace AgroBase.Forms.Atuador
|
||||||
|
|
||||||
private void btnSalvar_Click(object sender, EventArgs e)
|
private void btnSalvar_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Disp.Dados.AtuacaoNivelAlto = chbBicosAtuacao.Checked;
|
Disp.Dados.BicosPulverizadores.ForEach(x => x.AtuacaoNivelAlto = chbBicosAtuacao.Checked);
|
||||||
Disp.Dados.QuantidadeBicos = Convert.ToInt32(nudBicosQtd.Value);
|
Disp.Dados.QuantidadeBicos = Convert.ToInt32(nudBicosQtd.Value);
|
||||||
Disp.Dados.DensidadeHerbicida = Convert.ToDouble(txtDensidade.Text.Replace(".", ","));
|
Disp.Dados.DensidadeHerbicida = Convert.ToDouble(txtDensidade.Text.Replace(".", ","));
|
||||||
Variaveis.OperacaoEmAndamento.CapacidadeReservatorio = Convert.ToDouble(nudCapMax.Value);
|
Variaveis.OperacaoEmAndamento.CapacidadeReservatorio = Convert.ToDouble(nudCapMax.Value);
|
||||||
|
|
|
||||||
|
|
@ -814,7 +814,7 @@ namespace AgroBase.Forms.IHM
|
||||||
|
|
||||||
foreach (var Modulo in Dispositivo.Dados.Modulos)
|
foreach (var Modulo in Dispositivo.Dados.Modulos)
|
||||||
{
|
{
|
||||||
var Leitura = MKS057DService.DadosLeitura.FirstOrDefault(x => x.Endereco == Convert.ToByte(Modulo.DirMotor.Endereco, 16));
|
var Leitura = Modulo.DirMotor.Leitura;
|
||||||
|
|
||||||
bool Conectado = SerialService.DispositivosMapeados.Any(x => x.Dispositivo == Enums.T_Code.Mks && x.Mod_ID == Modulo.Modulo_ID);
|
bool Conectado = SerialService.DispositivosMapeados.Any(x => x.Dispositivo == Enums.T_Code.Mks && x.Mod_ID == Modulo.Modulo_ID);
|
||||||
idx = PreencheDadosLinha(grid, Testes, idx, Conectado ? 1 : 0);
|
idx = PreencheDadosLinha(grid, Testes, idx, Conectado ? 1 : 0);
|
||||||
|
|
@ -857,7 +857,7 @@ namespace AgroBase.Forms.IHM
|
||||||
|
|
||||||
private async Task EnviarComandoDir(ModuloMvdModel Modulo, Enums.Direcao Sentido, ColunasDiagnosticoModel Teste, int Timeout)
|
private async Task EnviarComandoDir(ModuloMvdModel Modulo, Enums.Direcao Sentido, ColunasDiagnosticoModel Teste, int Timeout)
|
||||||
{
|
{
|
||||||
await Modulo.DirMotor.EnviarComandoControle(Sentido);
|
Modulo.DirMotor.EnviarComandoControle(Sentido);
|
||||||
|
|
||||||
DateTime Inicio = DateTime.Now;
|
DateTime Inicio = DateTime.Now;
|
||||||
bool Sucesso = false;
|
bool Sucesso = false;
|
||||||
|
|
@ -1476,7 +1476,7 @@ namespace AgroBase.Forms.IHM
|
||||||
await EnviarComandoSinaleiro(Dispositivo, Sinaleiro, true, 1000);
|
await EnviarComandoSinaleiro(Dispositivo, Sinaleiro, true, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusLED Status = (((FirmwareSinaleiro)Sinaleiro.Leitura)?.Leitura ?? StatusLED.Apagado);
|
StatusLED Status = Sinaleiro.LeituraStatus;
|
||||||
idx = PreencheDadosLinha(grid, Testes, idx, Iniciado && Status == StatusLED.Aceso ? 1 : 0);
|
idx = PreencheDadosLinha(grid, Testes, idx, Iniciado && Status == StatusLED.Aceso ? 1 : 0);
|
||||||
|
|
||||||
if (Iniciado)
|
if (Iniciado)
|
||||||
|
|
@ -1484,7 +1484,7 @@ namespace AgroBase.Forms.IHM
|
||||||
await EnviarComandoSinaleiro(Dispositivo, Sinaleiro, false, 1000);
|
await EnviarComandoSinaleiro(Dispositivo, Sinaleiro, false, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = (((FirmwareSinaleiro)Sinaleiro.Leitura)?.Leitura ?? StatusLED.Apagado);
|
Status = Sinaleiro.LeituraStatus;
|
||||||
idx = PreencheDadosLinha(grid, Testes, idx, Iniciado && Status == StatusLED.Apagado ? 0 : 1);
|
idx = PreencheDadosLinha(grid, Testes, idx, Iniciado && Status == StatusLED.Apagado ? 0 : 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||||
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
|
System.Windows.Forms.DataVisualization.Charting.Legend legend3 = new System.Windows.Forms.DataVisualization.Charting.Legend();
|
||||||
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
|
System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series();
|
||||||
this.pnlCamerasSolo = new System.Windows.Forms.Panel();
|
this.pnlCamerasSolo = new System.Windows.Forms.Panel();
|
||||||
this.pnlCameraSoloE = new System.Windows.Forms.Panel();
|
this.pnlCameraSoloE = new System.Windows.Forms.Panel();
|
||||||
this.pnlCameraSoloD = new System.Windows.Forms.Panel();
|
this.pnlCameraSoloD = new System.Windows.Forms.Panel();
|
||||||
|
|
@ -77,6 +77,7 @@
|
||||||
this.lblKmh = new System.Windows.Forms.Label();
|
this.lblKmh = new System.Windows.Forms.Label();
|
||||||
this.cmbTipoMovimento = new System.Windows.Forms.ComboBox();
|
this.cmbTipoMovimento = new System.Windows.Forms.ComboBox();
|
||||||
this.lblTipoMovimento = new System.Windows.Forms.Label();
|
this.lblTipoMovimento = new System.Windows.Forms.Label();
|
||||||
|
this.chbPulverizador = new System.Windows.Forms.CheckBox();
|
||||||
this.pnlCamerasSolo.SuspendLayout();
|
this.pnlCamerasSolo.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.chartGraficos)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.chartGraficos)).BeginInit();
|
||||||
this.tabControl1.SuspendLayout();
|
this.tabControl1.SuspendLayout();
|
||||||
|
|
@ -149,17 +150,17 @@
|
||||||
//
|
//
|
||||||
this.chartGraficos.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
this.chartGraficos.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
chartArea1.Name = "ChartArea1";
|
chartArea3.Name = "ChartArea1";
|
||||||
this.chartGraficos.ChartAreas.Add(chartArea1);
|
this.chartGraficos.ChartAreas.Add(chartArea3);
|
||||||
legend1.Name = "Legend1";
|
legend3.Name = "Legend1";
|
||||||
this.chartGraficos.Legends.Add(legend1);
|
this.chartGraficos.Legends.Add(legend3);
|
||||||
this.chartGraficos.Location = new System.Drawing.Point(640, 7);
|
this.chartGraficos.Location = new System.Drawing.Point(640, 7);
|
||||||
this.chartGraficos.Margin = new System.Windows.Forms.Padding(2);
|
this.chartGraficos.Margin = new System.Windows.Forms.Padding(2);
|
||||||
this.chartGraficos.Name = "chartGraficos";
|
this.chartGraficos.Name = "chartGraficos";
|
||||||
series1.ChartArea = "ChartArea1";
|
series3.ChartArea = "ChartArea1";
|
||||||
series1.Legend = "Legend1";
|
series3.Legend = "Legend1";
|
||||||
series1.Name = "Series1";
|
series3.Name = "Series1";
|
||||||
this.chartGraficos.Series.Add(series1);
|
this.chartGraficos.Series.Add(series3);
|
||||||
this.chartGraficos.Size = new System.Drawing.Size(591, 318);
|
this.chartGraficos.Size = new System.Drawing.Size(591, 318);
|
||||||
this.chartGraficos.TabIndex = 2;
|
this.chartGraficos.TabIndex = 2;
|
||||||
this.chartGraficos.Text = "chart1";
|
this.chartGraficos.Text = "chart1";
|
||||||
|
|
@ -522,7 +523,7 @@
|
||||||
// chbSonar
|
// chbSonar
|
||||||
//
|
//
|
||||||
this.chbSonar.AutoSize = true;
|
this.chbSonar.AutoSize = true;
|
||||||
this.chbSonar.Location = new System.Drawing.Point(227, 311);
|
this.chbSonar.Location = new System.Drawing.Point(157, 310);
|
||||||
this.chbSonar.Margin = new System.Windows.Forms.Padding(2);
|
this.chbSonar.Margin = new System.Windows.Forms.Padding(2);
|
||||||
this.chbSonar.Name = "chbSonar";
|
this.chbSonar.Name = "chbSonar";
|
||||||
this.chbSonar.Size = new System.Drawing.Size(183, 17);
|
this.chbSonar.Size = new System.Drawing.Size(183, 17);
|
||||||
|
|
@ -610,12 +611,25 @@
|
||||||
this.lblTipoMovimento.TabIndex = 34;
|
this.lblTipoMovimento.TabIndex = 34;
|
||||||
this.lblTipoMovimento.Text = "Tipo de Movimento";
|
this.lblTipoMovimento.Text = "Tipo de Movimento";
|
||||||
//
|
//
|
||||||
|
// chbPulverizador
|
||||||
|
//
|
||||||
|
this.chbPulverizador.AutoSize = true;
|
||||||
|
this.chbPulverizador.Location = new System.Drawing.Point(342, 310);
|
||||||
|
this.chbPulverizador.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.chbPulverizador.Name = "chbPulverizador";
|
||||||
|
this.chbPulverizador.Size = new System.Drawing.Size(139, 17);
|
||||||
|
this.chbPulverizador.TabIndex = 35;
|
||||||
|
this.chbPulverizador.Text = "Pulverizador automático";
|
||||||
|
this.chbPulverizador.UseVisualStyleBackColor = true;
|
||||||
|
this.chbPulverizador.CheckedChanged += new System.EventHandler(this.chbPulverizador_CheckedChanged);
|
||||||
|
//
|
||||||
// frmOperacaoManual
|
// frmOperacaoManual
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.BackColor = System.Drawing.Color.White;
|
this.BackColor = System.Drawing.Color.White;
|
||||||
this.ClientSize = new System.Drawing.Size(1243, 649);
|
this.ClientSize = new System.Drawing.Size(1243, 649);
|
||||||
|
this.Controls.Add(this.chbPulverizador);
|
||||||
this.Controls.Add(this.lblTipoMovimento);
|
this.Controls.Add(this.lblTipoMovimento);
|
||||||
this.Controls.Add(this.cmbTipoMovimento);
|
this.Controls.Add(this.cmbTipoMovimento);
|
||||||
this.Controls.Add(this.lblKmh);
|
this.Controls.Add(this.lblKmh);
|
||||||
|
|
@ -716,5 +730,6 @@
|
||||||
private System.Windows.Forms.Label lblKmh;
|
private System.Windows.Forms.Label lblKmh;
|
||||||
private System.Windows.Forms.ComboBox cmbTipoMovimento;
|
private System.Windows.Forms.ComboBox cmbTipoMovimento;
|
||||||
private System.Windows.Forms.Label lblTipoMovimento;
|
private System.Windows.Forms.Label lblTipoMovimento;
|
||||||
|
private System.Windows.Forms.CheckBox chbPulverizador;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -187,8 +187,10 @@ namespace AgroBase.Forms.Operacoes
|
||||||
string ID = pnl.Name.Replace("pnlDir_", "");
|
string ID = pnl.Name.Replace("pnlDir_", "");
|
||||||
|
|
||||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(m => m.Modulo_ID == ID);
|
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(m => m.Modulo_ID == ID);
|
||||||
|
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 + " " + (Modulo.DirMotor.Angulo).ToString("000") + "º";
|
lblAngulo.Text = ID + " " + Angulo.ToString("000") + "º";
|
||||||
|
|
||||||
// Use o objeto Graphics para desenhar a representação do motor
|
// Use o objeto Graphics para desenhar a representação do motor
|
||||||
Graphics g = e.Graphics;
|
Graphics g = e.Graphics;
|
||||||
|
|
@ -238,10 +240,13 @@ namespace AgroBase.Forms.Operacoes
|
||||||
g.DrawLine(Pens.Green, arrowEnd, arrowPoint2);
|
g.DrawLine(Pens.Green, arrowEnd, arrowPoint2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Modulo.Modulo_ID.Contains("D"))
|
||||||
|
{
|
||||||
|
Angulo *= -1;
|
||||||
|
}
|
||||||
|
|
||||||
// Desenhe uma linha para representar a posição do eixo do motor
|
// Desenhe uma linha para representar a posição do eixo do motor
|
||||||
double angleInRadians = (Modulo.DirMotor.Angulo * Math.PI) / 180;
|
double angleInRadians = (Angulo * Math.PI) / 180;
|
||||||
int x = centerX + (int)(radius * Math.Sin(angleInRadians));
|
int x = centerX + (int)(radius * Math.Sin(angleInRadians));
|
||||||
int y = centerY - (int)(radius * Math.Cos(angleInRadians));
|
int y = centerY - (int)(radius * Math.Cos(angleInRadians));
|
||||||
g.DrawLine(Pens.Red, centerX, centerY, x, y);
|
g.DrawLine(Pens.Red, centerX, centerY, x, y);
|
||||||
|
|
@ -288,8 +293,8 @@ namespace AgroBase.Forms.Operacoes
|
||||||
Rectangle rect = new Rectangle(xA - radiusCircle, yA - radiusCircle, 2 * radiusCircle, 2 * radiusCircle);
|
Rectangle rect = new Rectangle(xA - radiusCircle, yA - radiusCircle, 2 * radiusCircle, 2 * radiusCircle);
|
||||||
bool Acionado = false;
|
bool Acionado = false;
|
||||||
Acionado =
|
Acionado =
|
||||||
(angle == 0 && !(MKS057DService.DadosLeitura.FirstOrDefault(leitura => leitura.Endereco == Convert.ToByte(Modulo.DirMotor.Endereco, 16))?.Entradas?[0] ?? true)) ||
|
(angle == 0 && !Modulo.DirMotor.IN2_Atuado) ||
|
||||||
(angle == Math.PI / 2 && !(MKS057DService.DadosLeitura.FirstOrDefault(leitura => leitura.Endereco == Convert.ToByte(Modulo.DirMotor.Endereco, 16))?.Entradas?[1] ?? true));
|
(angle == Math.PI / 2 && !Modulo.DirMotor.IN2_Atuado);
|
||||||
using (SolidBrush brush = new SolidBrush(Acionado ? Color.Red : Color.DarkRed))
|
using (SolidBrush brush = new SolidBrush(Acionado ? Color.Red : Color.DarkRed))
|
||||||
{
|
{
|
||||||
g.FillEllipse(brush, rect);
|
g.FillEllipse(brush, rect);
|
||||||
|
|
@ -414,7 +419,7 @@ namespace AgroBase.Forms.Operacoes
|
||||||
gridDados.Rows[15].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PercentualReservatorio.ToString("00.00");
|
gridDados.Rows[15].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PercentualReservatorio.ToString("00.00");
|
||||||
gridDados.Rows[16].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeReservatorio.ToString("0.000");
|
gridDados.Rows[16].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeReservatorio.ToString("0.000");
|
||||||
gridDados.Rows[17].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha.ToString("0.00");
|
gridDados.Rows[17].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha.ToString("0.00");
|
||||||
gridDados.Rows[18].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.Potencia.ToString("0.00");
|
gridDados.Rows[18].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.LeituraPotencia.ToString("0.00");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -531,5 +536,11 @@ namespace AgroBase.Forms.Operacoes
|
||||||
{
|
{
|
||||||
Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = (TipoMovimentoDirecional)cmbTipoMovimento.SelectedIndex;
|
Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = (TipoMovimentoDirecional)cmbTipoMovimento.SelectedIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void chbPulverizador_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Variaveis.OperacaoEmAndamento.Controle.PulverizadorAutomatico = chbPulverizador.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,8 @@ namespace AgroBase.Forms.Operacoes
|
||||||
|
|
||||||
private void AtualizarDispositivos()
|
private void AtualizarDispositivos()
|
||||||
{
|
{
|
||||||
chbMOVativo.Checked = Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.Modulos?.Any(x => x.MovMotor.Inicializado) ?? false;
|
chbMOVativo.Checked = Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.Modulos?.Any(x => x.MovMotor.BLD_Inicializado) ?? false;
|
||||||
chbDIRativo.Checked = Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.Modulos?.Any(x => x.DirMotor.Inicializado) ?? false;
|
chbDIRativo.Checked = Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.Modulos?.Any(x => x.DirMotor.MKS_Inicializado) ?? false;
|
||||||
chbATUativo.Checked = Variaveis.OperacaoEmAndamento.DispAtu?.Dados.Conectado ?? false;
|
chbATUativo.Checked = Variaveis.OperacaoEmAndamento.DispAtu?.Dados.Conectado ?? false;
|
||||||
chbGPSativo.Checked = GPSService.PortaGPS?.IsOpen ?? false;
|
chbGPSativo.Checked = GPSService.PortaGPS?.IsOpen ?? false;
|
||||||
Variaveis.OperacaoEmAndamento.chartGraficos = chartGraficos;
|
Variaveis.OperacaoEmAndamento.chartGraficos = chartGraficos;
|
||||||
|
|
|
||||||
|
|
@ -859,12 +859,13 @@ namespace AgroBase.Forms.Operacoes
|
||||||
{
|
{
|
||||||
var Log = LogsDirecional.Where(x => x.Modulo_ID == ID).FirstOrDefault(x => x.Momento == MomentoAtual);
|
var Log = LogsDirecional.Where(x => x.Modulo_ID == ID).FirstOrDefault(x => x.Momento == MomentoAtual);
|
||||||
|
|
||||||
double Angulo = Math.Abs(Log?.Angulo ?? 0);
|
double Angulo = Log?.Angulo ?? 0;
|
||||||
double Multiplicador = (Log?.Sentido ?? Enums.Sentido.Parado) == Enums.Sentido.Horario ? 1 : -1;
|
double Multiplicador = 1;
|
||||||
Image img = Resources.roda_superior;
|
Image img = Resources.roda_superior;
|
||||||
if (ID.StartsWith("D"))
|
if (ID.StartsWith("D"))
|
||||||
{
|
{
|
||||||
img = FuncoesGlobais.EspelharImagemHorizontalmente(img);
|
img = FuncoesGlobais.EspelharImagemHorizontalmente(img);
|
||||||
|
Multiplicador = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
PictureBox pic = FuncoesGlobais.FindControlRecursive<PictureBox>(tabDirecional, "picDIR_" + ID);
|
PictureBox pic = FuncoesGlobais.FindControlRecursive<PictureBox>(tabDirecional, "picDIR_" + ID);
|
||||||
|
|
|
||||||
|
|
@ -317,8 +317,8 @@ namespace AgroBase.Forms
|
||||||
Rectangle rect = new Rectangle(xA - radiusCircle, yA - radiusCircle, 2 * radiusCircle, 2 * radiusCircle);
|
Rectangle rect = new Rectangle(xA - radiusCircle, yA - radiusCircle, 2 * radiusCircle, 2 * radiusCircle);
|
||||||
bool Acionado = false;
|
bool Acionado = false;
|
||||||
Acionado =
|
Acionado =
|
||||||
(angle == 0 && !(MKS057DService.DadosLeitura.FirstOrDefault(leitura => leitura.Endereco == Convert.ToByte(Modulo.DirMotor.Endereco, 16))?.Entradas?[0] ?? true)) ||
|
(angle == 0 && !Modulo.DirMotor.IN1_Atuado) ||
|
||||||
(angle == Math.PI / 2 && !(MKS057DService.DadosLeitura.FirstOrDefault(leitura => leitura.Endereco == Convert.ToByte(Modulo.DirMotor.Endereco, 16))?.Entradas?[1] ?? true));
|
(angle == Math.PI / 2 && !Modulo.DirMotor.IN2_Atuado);
|
||||||
using (SolidBrush brush = new SolidBrush(Acionado ? Color.Red : Color.DarkRed))
|
using (SolidBrush brush = new SolidBrush(Acionado ? Color.Red : Color.DarkRed))
|
||||||
{
|
{
|
||||||
g.FillEllipse(brush, rect);
|
g.FillEllipse(brush, rect);
|
||||||
|
|
|
||||||
|
|
@ -597,31 +597,26 @@ namespace AgroBase
|
||||||
|
|
||||||
for (int i = 0; i < 1; i++)
|
for (int i = 0; i < 1; i++)
|
||||||
{
|
{
|
||||||
var Protocolos = new Dictionary<string, string>();
|
|
||||||
IDispositivosService Dispositivo = default(IDispositivosService);
|
|
||||||
switch (Comando.Dispositivo)
|
switch (Comando.Dispositivo)
|
||||||
{
|
{
|
||||||
case T_Code.Mov:
|
case T_Code.Mov:
|
||||||
{
|
{
|
||||||
Protocolos = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ToDictionary(x => x.Modulo_ID, x => x.MovMotor.ProtocoloComando(DirecaoAtual));
|
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(x => x.MovMotor.EnviarComandoControle(DirecaoAtual));
|
||||||
Dispositivo = Variaveis.OperacaoEmAndamento.DispMvd;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case T_Code.Dir:
|
case T_Code.Dir:
|
||||||
{
|
{
|
||||||
if (MovimentosCombinados.Contains(Variaveis.OperacaoEmAndamento.Controle.TipoMovimento))
|
if (MovimentosCombinados.Contains(Variaveis.OperacaoEmAndamento.Controle.TipoMovimento))
|
||||||
{
|
{
|
||||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.ExecutarMovimentoDirecionalCombinado(DirecaoAtual).ConfigureAwait(false);
|
Task.Run(async () => await Variaveis.OperacaoEmAndamento.DispMvd.Dados.ExecutarMovimentoDirecionalCombinado(DirecaoAtual));
|
||||||
|
}
|
||||||
|
else if (DirecaoAtual == Direcao.Referenciar)
|
||||||
|
{
|
||||||
|
Task.Run(async () => await Variaveis.OperacaoEmAndamento.DispMvd.Dados.RealizarReferenciamentoDirecional());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Task.Run(async () =>
|
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(x => x.DirMotor.EnviarComandoControle(DirecaoAtual));
|
||||||
{
|
|
||||||
foreach (var Modulo in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos)
|
|
||||||
{
|
|
||||||
await Modulo.DirMotor.EnviarComandoControle(DirecaoAtual);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -637,12 +632,6 @@ namespace AgroBase
|
||||||
{
|
{
|
||||||
Ctrl.UltimaDirecao = DirecaoAtual;
|
Ctrl.UltimaDirecao = DirecaoAtual;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var ProtocoloMotor in Protocolos)
|
|
||||||
{
|
|
||||||
Dispositivo.AdicionarMensagemFila(ProtocoloMotor.Key, ProtocoloMotor.Value, true, false);
|
|
||||||
Console.WriteLine(ProtocoloMotor);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UltimaDirecao = DirecaoAtual;
|
UltimaDirecao = DirecaoAtual;
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ namespace AgroBase.Models.Modules
|
||||||
};
|
};
|
||||||
public int QuantidadeBicos { get; set; } = 4;
|
public int QuantidadeBicos { get; set; } = 4;
|
||||||
public double DensidadeHerbicida { get; set; } = 1.1;
|
public double DensidadeHerbicida { get; set; } = 1.1;
|
||||||
public bool AtuacaoNivelAlto { get; set; } = true;
|
|
||||||
public List<AtuadorBicoModel> BicosPulverizadores { get; set; } = new List<AtuadorBicoModel>();
|
public List<AtuadorBicoModel> BicosPulverizadores { get; set; } = new List<AtuadorBicoModel>();
|
||||||
public List<AtuadorBombaModel> BombasPressurizadoras { get; set; } = new List<AtuadorBombaModel>();
|
public List<AtuadorBombaModel> BombasPressurizadoras { get; set; } = new List<AtuadorBombaModel>();
|
||||||
public List<SensorModel> Sensores { get; set; } = new List<SensorModel>();
|
public List<SensorModel> Sensores { get; set; } = new List<SensorModel>();
|
||||||
|
|
@ -523,10 +522,15 @@ namespace AgroBase.Models.Modules
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (Conectado && RequisitarDados)
|
if (Conectado)
|
||||||
|
{
|
||||||
|
if (RequisitarDados)
|
||||||
{
|
{
|
||||||
RequisitarDadosModulo();
|
RequisitarDadosModulo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VerificaControleLeitura();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RequisitarDadosModulo()
|
public void RequisitarDadosModulo()
|
||||||
|
|
@ -579,6 +583,24 @@ namespace AgroBase.Models.Modules
|
||||||
return (_atuadorOperante, ModsComFalha);
|
return (_atuadorOperante, ModsComFalha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void VerificaControleLeitura()
|
||||||
|
{
|
||||||
|
// Caso a pressao de set point da bomba seja diferente da pressao de set point de controle, reenvia o comando para garantir a integridade do controle
|
||||||
|
if (BombaPressurizadora.LeituraPressaoSP != Variaveis.OperacaoEmAndamento.Controle.PressaoLinha || !FuncoesMatematicas.ValorEstaEntre(BombaPressurizadora.LeituraPressao, Variaveis.OperacaoEmAndamento.Controle.PressaoLinha, 20))
|
||||||
|
{
|
||||||
|
GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, true, BombaPressurizadora.ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Caso o comando do bico for diferente da leitura, reenvia o comando para garantir a integridade do controle
|
||||||
|
foreach (var bico in BicosPulverizadores.Where(x => x.Comandar && x.Inicializado))
|
||||||
|
{
|
||||||
|
if (bico.ComandoAtuar != bico.LeituraStatusBico)
|
||||||
|
{
|
||||||
|
GeneralJoystick.EnviarComandoAtuador(S_Code.sBIC, bico.ComandoAtuar, bico.ID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AtuadorBicoModel
|
public class AtuadorBicoModel
|
||||||
|
|
@ -726,13 +748,27 @@ namespace AgroBase.Models.Modules
|
||||||
public bool Comandar { get; set; }
|
public bool Comandar { get; set; }
|
||||||
public bool Testando { get; set; }
|
public bool Testando { get; set; }
|
||||||
public List<FuncoesPinout> Funcoes { get; set; } = new List<FuncoesPinout>();
|
public List<FuncoesPinout> Funcoes { get; set; } = new List<FuncoesPinout>();
|
||||||
public double Potencia
|
public double LeituraPotencia
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return Leitura?.Potencia ?? 0;
|
return Leitura?.Potencia ?? 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public double LeituraPressaoSP
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.PressaoSP ?? 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public double LeituraPressao
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Pressao ?? 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private FirmwareBombaPressurizadora _leitura = null;
|
private FirmwareBombaPressurizadora _leitura = null;
|
||||||
public FirmwareBombaPressurizadora Leitura
|
public FirmwareBombaPressurizadora Leitura
|
||||||
|
|
@ -981,6 +1017,8 @@ namespace AgroBase.Models.Modules
|
||||||
public bool Iniciado { get; set; }
|
public bool Iniciado { get; set; }
|
||||||
public Estado Estado { get; set; }
|
public Estado Estado { get; set; }
|
||||||
public double Potencia { get; set; }
|
public double Potencia { get; set; }
|
||||||
|
public double PressaoSP { get; set; }
|
||||||
|
public double Pressao { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AtuadorMensagemJsonModel
|
public class AtuadorMensagemJsonModel
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,8 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
public static int LogsManter { get; set; } = 60;
|
public static int LogsManter { get; set; } = 60;
|
||||||
public AsyncTaskTimerModel tmrRegistrador;
|
public AsyncTaskTimerModel tmrRegistrador;
|
||||||
|
public AsyncTaskTimerModel tmrRegistradorBLD;
|
||||||
|
public AsyncTaskTimerModel tmrRegistradorMKS;
|
||||||
|
|
||||||
|
|
||||||
public List<ModuloMvdModel> Modulos { get; set; } = new List<ModuloMvdModel>();
|
public List<ModuloMvdModel> Modulos { get; set; } = new List<ModuloMvdModel>();
|
||||||
|
|
@ -117,10 +119,8 @@ namespace AgroBase.Models.Modules
|
||||||
var Dados = _dados as MovimentacaoUnificadaModel;
|
var Dados = _dados as MovimentacaoUnificadaModel;
|
||||||
Dados.Modulos.ForEach(x =>
|
Dados.Modulos.ForEach(x =>
|
||||||
{
|
{
|
||||||
x.MovMotor.Inicializado = false;
|
x.MovMotor.Leitura = null;
|
||||||
x.DirMotor.Inicializado = false;
|
x.DirMotor.Leitura = null;
|
||||||
|
|
||||||
x.UltimoProtocoloRecebido = DateTime.MaxValue.AddDays(-1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
ReiniciarLeituras(Dados);
|
ReiniciarLeituras(Dados);
|
||||||
|
|
@ -136,23 +136,13 @@ namespace AgroBase.Models.Modules
|
||||||
{
|
{
|
||||||
x.MovMotor.Alarme = false;
|
x.MovMotor.Alarme = false;
|
||||||
x.MovMotor.ConfigFreio.Leitura = false;
|
x.MovMotor.ConfigFreio.Leitura = false;
|
||||||
x.MovMotor.Ligado = false;
|
|
||||||
x.MovMotor.LogGrafico = new List<MvdMotorMOVSensorimanetoGrafico>();
|
x.MovMotor.LogGrafico = new List<MvdMotorMOVSensorimanetoGrafico>();
|
||||||
x.MovMotor.TemperaturaDriver = 0;
|
|
||||||
x.MovMotor.Temperatura = 0;
|
x.MovMotor.Temperatura = 0;
|
||||||
//x.MovMotor.RPM_Motor = 0;
|
|
||||||
x.MovMotor.RPM_Roda = 0;
|
|
||||||
x.MovMotor.RPM_SP = 0;
|
x.MovMotor.RPM_SP = 0;
|
||||||
x.MovMotor.RPM_SP_Controle = 0;
|
x.MovMotor.RPM_SP_Controle = 0;
|
||||||
x.MovMotor.Corrente_Max = 0;
|
|
||||||
x.MovMotor.Sentido = Sentido.Parado;
|
|
||||||
x.MovMotor.CodigoAlarme = 0;
|
|
||||||
x.MovMotor.Corrente = 0;
|
x.MovMotor.Corrente = 0;
|
||||||
x.MovMotor.Tensao = 0;
|
|
||||||
|
|
||||||
x.DirMotor.Angulo = 0;
|
|
||||||
x.DirMotor.Angulo_SP = 0;
|
x.DirMotor.Angulo_SP = 0;
|
||||||
x.DirMotor.Sentido = Sentido.Parado;
|
|
||||||
x.DirMotor.Sentido_SP = Sentido.Parado;
|
x.DirMotor.Sentido_SP = Sentido.Parado;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -170,164 +160,7 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
public void RecebeProtocoloModulo(string Protocolo)
|
public void RecebeProtocoloModulo(string Protocolo)
|
||||||
{
|
{
|
||||||
string Mod_ID = Protocolo.Split(SerialService.SplitMessage[0])[0];
|
|
||||||
string mensagem = Protocolo.Substring(Mod_ID.Length + 1, Protocolo.Length - Mod_ID.Length - 1);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(Protocolo) && mensagem[0].ToString() == SerialService.BeginSensor)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
string[] Dados = mensagem.Replace(SerialService.BeginSensor, "").Split(SerialService.EndLine[0])[0].Split(SerialService.SplitMessage[0]);
|
|
||||||
S_Code TipoSensor = (S_Code)(int.Parse(Dados[0]));
|
|
||||||
string _IDcomponente = Dados[1];
|
|
||||||
|
|
||||||
ModuloMvdModel Modulo = Modulos.FirstOrDefault(x => x.Modulo_ID == Mod_ID);
|
|
||||||
|
|
||||||
if (Modulo == null)
|
|
||||||
{
|
|
||||||
Console.WriteLine("Módulo " + Mod_ID + " não encontrado!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Modulo.UltimoProtocoloRecebido = DateTime.Now;
|
|
||||||
|
|
||||||
/*if (_IDcomponente == Modulo.Modulo_ID)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
switch (TipoSensor)
|
|
||||||
{
|
|
||||||
case S_Code.sBLD:
|
|
||||||
{
|
|
||||||
Modulo.MovMotor.Inicializado = Dados[2] == "1";
|
|
||||||
double rpm = 0;
|
|
||||||
double.TryParse(Dados[3].Replace(".", ","), out rpm);
|
|
||||||
//Modulo.MovMotor.RPM_Motor = rpm;
|
|
||||||
Modulo.MovMotor.RPM_Roda = rpm;
|
|
||||||
double temperatura = 0;
|
|
||||||
double.TryParse(Dados[4].Replace(".", ","), out temperatura);
|
|
||||||
temperatura = FuncoesMatematicas.CalcularTemperatura(temperatura, 0.0);
|
|
||||||
Modulo.MovMotor.Temperatura = temperatura;
|
|
||||||
double tensao = 0;
|
|
||||||
double.TryParse(Dados[5].Replace(".", ","), out tensao);
|
|
||||||
Modulo.MovMotor.Tensao = tensao;
|
|
||||||
double corrente_max = 0;
|
|
||||||
double.TryParse(Dados[6].Replace(".", ","), out corrente_max);
|
|
||||||
Modulo.MovMotor.Corrente_Max = corrente_max;
|
|
||||||
bool ligado = Dados[7] == "1";
|
|
||||||
Modulo.MovMotor.Ligado = ligado;
|
|
||||||
int sentido = 0;
|
|
||||||
int.TryParse(Dados[8], out sentido);
|
|
||||||
Modulo.MovMotor.Sentido = (Sentido)sentido;
|
|
||||||
bool freio = Dados[9] == "1";
|
|
||||||
Modulo.MovMotor.ConfigFreio.Leitura = freio;
|
|
||||||
int codAlarme = 0;
|
|
||||||
int.TryParse(Dados[10], out codAlarme);
|
|
||||||
Modulo.MovMotor.CodigoAlarme = codAlarme;
|
|
||||||
double tempDriver = 0;
|
|
||||||
double.TryParse(Dados[11].Replace(".", ","), out tempDriver);
|
|
||||||
Modulo.MovMotor.TemperaturaDriver = tempDriver;
|
|
||||||
|
|
||||||
RegistrarLogMov(Modulo);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case S_Code.sENC:
|
|
||||||
{
|
|
||||||
int _sentido = 0;
|
|
||||||
int.TryParse(Dados[2].ToString(), out _sentido);
|
|
||||||
Modulo.DirMotor.Sentido = (Sentido)_sentido;
|
|
||||||
int _angulo = 0;
|
|
||||||
int.TryParse(Dados[3].ToString(), out _angulo);
|
|
||||||
Modulo.DirMotor.Angulo = _angulo;
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case S_Code.sCFG:
|
|
||||||
{
|
|
||||||
bool Inicializado = Dados[2] == "1";
|
|
||||||
if (_IDcomponente == Modulo.MovMotor.ID)
|
|
||||||
{
|
|
||||||
Modulo.MovMotor.Inicializado = Inicializado;
|
|
||||||
}
|
|
||||||
else if (_IDcomponente == Modulo.DirMotor.ID)
|
|
||||||
{
|
|
||||||
Modulo.DirMotor.Inicializado = Inicializado;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case S_Code.sMVD:
|
|
||||||
{
|
|
||||||
Modulo.MovMotor.Inicializado = Dados[2] == "1";
|
|
||||||
double rpm = 0;
|
|
||||||
double.TryParse(Dados[3].Replace(".", ","), out rpm);
|
|
||||||
//Modulo.MovMotor.RPM_Motor = rpm;
|
|
||||||
Modulo.MovMotor.RPM_Roda = rpm;
|
|
||||||
double temperatura = 0;
|
|
||||||
double.TryParse(Dados[4].Replace(".", ","), out temperatura);
|
|
||||||
temperatura = FuncoesMatematicas.CalcularTemperatura(temperatura, 0.0);
|
|
||||||
Modulo.MovMotor.Temperatura = temperatura;
|
|
||||||
double tensao = 0;
|
|
||||||
double.TryParse(Dados[5].Replace(".", ","), out tensao);
|
|
||||||
Modulo.MovMotor.Tensao = tensao;
|
|
||||||
double corrente_max = 0;
|
|
||||||
double.TryParse(Dados[6].Replace(".", ","), out corrente_max);
|
|
||||||
Modulo.MovMotor.Corrente_Max = corrente_max;
|
|
||||||
bool ligado = Dados[7] == "1";
|
|
||||||
Modulo.MovMotor.Ligado = ligado;
|
|
||||||
int sentido = 0;
|
|
||||||
int.TryParse(Dados[8], out sentido);
|
|
||||||
Modulo.MovMotor.Sentido = (Sentido)sentido;
|
|
||||||
bool freio = Dados[9] == "1";
|
|
||||||
Modulo.MovMotor.ConfigFreio.Leitura = freio;
|
|
||||||
int codAlarme = 0;
|
|
||||||
int.TryParse(Dados[10], out codAlarme);
|
|
||||||
Modulo.MovMotor.CodigoAlarme = codAlarme;
|
|
||||||
double tempDriver = 0;
|
|
||||||
double.TryParse(Dados[11].Replace(".", ","), out tempDriver);
|
|
||||||
Modulo.MovMotor.TemperaturaDriver = tempDriver;
|
|
||||||
Modulo.DirMotor.Inicializado = Dados[12] == "1";
|
|
||||||
int _sentido = 0;
|
|
||||||
int.TryParse(Dados[13].ToString(), out _sentido);
|
|
||||||
Modulo.DirMotor.Sentido = (Sentido)_sentido;
|
|
||||||
double _angulo = 0;
|
|
||||||
double.TryParse(Dados[14].ToString().Replace(".", ","), out _angulo);
|
|
||||||
Modulo.DirMotor.Angulo = _angulo;
|
|
||||||
|
|
||||||
/*Modulo.MovMotor.Inicializado = Dados[2] == "1";
|
|
||||||
double temperatura = 0;
|
|
||||||
double.TryParse(Dados[3].Replace(".", ","), out temperatura);
|
|
||||||
temperatura = FuncoesMatematicas.CalcularTemperatura(temperatura, 0.0);
|
|
||||||
Modulo.DirMotor.Inicializado = Dados[4] == "1";
|
|
||||||
int _sentido = 0;
|
|
||||||
int.TryParse(Dados[5].ToString(), out _sentido);
|
|
||||||
Modulo.DirMotor.Sentido = (Sentido)_sentido;
|
|
||||||
double _angulo = 0;
|
|
||||||
double.TryParse(Dados[6].ToString().Replace(".", ","), out _angulo);
|
|
||||||
Modulo.DirMotor.Angulo = _angulo;*/
|
|
||||||
|
|
||||||
RegistrarLogMov(Modulo);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine(ex.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine(ex.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RegistrarLogMov(ModuloMvdModel Modulo)
|
public void RegistrarLogMov(ModuloMvdModel Modulo)
|
||||||
|
|
@ -392,12 +225,20 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
tmrRegistrador = new AsyncTaskTimerModel("tmrRegistrador_" + T_Code.Mvd.ToString(), tmrRegistrador_Tick, _TaxaAmostragem);
|
tmrRegistrador = new AsyncTaskTimerModel("tmrRegistrador_" + T_Code.Mvd.ToString(), tmrRegistrador_Tick, _TaxaAmostragem);
|
||||||
tmrRegistrador.Start();
|
tmrRegistrador.Start();
|
||||||
|
|
||||||
|
tmrRegistradorBLD = new AsyncTaskTimerModel("tmrRegistrador_" + T_Code.Bld.ToString(), tmrRegistradorBLD_Tick, BLD300RService.TaxaAmostragem);
|
||||||
|
tmrRegistradorBLD.Start();
|
||||||
|
|
||||||
|
tmrRegistradorMKS = new AsyncTaskTimerModel("tmrRegistrador_" + T_Code.Mks.ToString(), tmrRegistradorMKS_Tick, MKS057DService.TaxaAmostragem);
|
||||||
|
tmrRegistradorMKS.Start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PararRegistrador()
|
public void PararRegistrador()
|
||||||
{
|
{
|
||||||
tmrRegistrador?.Dispose();
|
tmrRegistrador?.Dispose();
|
||||||
|
tmrRegistradorBLD?.Dispose();
|
||||||
|
tmrRegistradorMKS?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task tmrRegistrador_Tick()
|
public async Task tmrRegistrador_Tick()
|
||||||
|
|
@ -413,35 +254,99 @@ namespace AgroBase.Models.Modules
|
||||||
DistanciaPercorridaOperacao += 1 * VelocidadeMedia;
|
DistanciaPercorridaOperacao += 1 * VelocidadeMedia;
|
||||||
Variaveis.OperacaoEmAndamento.Sensoriamento.VelocidadeMedia = VelocidadeMedia;
|
Variaveis.OperacaoEmAndamento.Sensoriamento.VelocidadeMedia = VelocidadeMedia;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DateTime Agora = DateTime.Now;
|
private async Task tmrRegistradorBLD_Tick()
|
||||||
if (Modulos.Any(x => x.Conectado && x.UltimoProtocoloRecebido.AddMilliseconds(_TaxaAmostragem * 20) < Agora))
|
|
||||||
{
|
{
|
||||||
foreach (var Modulo in Modulos.Where(x => x.Conectado && x.UltimoProtocoloRecebido.AddMilliseconds(_TaxaAmostragem * 20) < Agora))
|
if (!BLD300RService.Iniciado && SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Bld))
|
||||||
{
|
{
|
||||||
Modulo.MovMotor.Inicializado = false;
|
foreach (var Leitura in BLD300RService.DadosLeitura.Where(x => x.UltimoComandoRecebido.AddSeconds(10) < DateTime.Now))
|
||||||
Modulo.DirMotor.Inicializado = false;
|
{
|
||||||
|
BLD300RService.AdicionarComandoNaFila(new BLD300RService.BLDComandoModel()
|
||||||
|
{
|
||||||
|
Endereco = Leitura.Endereco,
|
||||||
|
Parametro = BLD300RService.Parametros.First(x => x.Chave == "Versao"),
|
||||||
|
Get = true,
|
||||||
|
AguardaResposta = true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
tmrRegistradorBLD.SetInterval(3000);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmrRegistradorBLD.SetInterval(BLD300RService.TaxaAmostragem);
|
||||||
|
|
||||||
|
var Controle = Variaveis.OperacaoEmAndamento.Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Mov);
|
||||||
|
foreach (var Modulo in Modulos.Where(x => x.MovMotor.BLD_Inicializado).OrderBy(x => x.MovMotor.EnderecoByte))
|
||||||
|
{
|
||||||
|
foreach (var Parametro in BLD300RService.Parametros.Where(x => x.LeituraLoop))
|
||||||
|
{
|
||||||
|
var Comando = new BLD300RService.BLDComandoModel()
|
||||||
|
{
|
||||||
|
Endereco = Modulo.MovMotor.EnderecoByte,
|
||||||
|
AguardaResposta = true,
|
||||||
|
Parametro = Parametro,
|
||||||
|
Get = true,
|
||||||
|
TimeoutResposta = 500
|
||||||
|
};
|
||||||
|
BLD300RService.AdicionarComandoNaFila(Comando);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tenta reiniciar o alarme dos modulos se a operacao nao estiver liberada
|
||||||
|
if (Modulo.MovMotor.CodigoAlarme > 0 && Modulo.MovMotor.CodigoAlarme <= 99 && !Variaveis.OperacaoEmAndamento.OperacaoLiberada)
|
||||||
|
{
|
||||||
|
BLD300RService.RegisrarErrosComunicacao(Modulo.MovMotor.EnderecoByte, $"Módulo com código de alarme {Modulo.MovMotor.CodigoAlarme}, reiniciando o módulo...");
|
||||||
|
BLD300RService.AdicionarComandoNaFila(new BLD300RService.BLDComandoModel()
|
||||||
|
{
|
||||||
|
Endereco = Modulo.MovMotor.EnderecoByte,
|
||||||
|
AguardaResposta = true,
|
||||||
|
TimeoutResposta = 200,
|
||||||
|
Get = false,
|
||||||
|
Parametro = BLD300RService.Parametros.First(x => x.Chave == "AlarmeCode"),
|
||||||
|
Valor = 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Modulo.MovMotor.EnviarComandoControle(Controle.UltimaDirecao);
|
||||||
|
|
||||||
|
Modulo.MovMotor.ConfigFreio.Leitura = Modulo.MovMotor.Leitura?.Freado ?? false;
|
||||||
|
|
||||||
|
Variaveis.OperacaoEmAndamento.DispMvd.Dados.RegistrarLogMov(Modulo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*foreach (var Modulo in Modulos.Where(x => (!x.MovMotor.Inicializado && x.MovMotor.Comandar) || (!x.DirMotor.Inicializado && x.DirMotor.Comandar)))
|
private async Task tmrRegistradorMKS_Tick()
|
||||||
{
|
{
|
||||||
if (!Modulo.MovMotor.Inicializado && Modulo.MovMotor.Comandar)
|
if (!MKS057DService.Iniciado && SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Mks))
|
||||||
{
|
{
|
||||||
string Protocolo = Modulo.MovMotor.ProtocoloConfiguracao(true);
|
foreach (var Leitura in MKS057DService.DadosLeitura.Where(x => x.UltimoComandoRecebido.AddSeconds(10) < DateTime.Now))
|
||||||
Variaveis.OperacaoEmAndamento.DispMvd.AdicionarMensagemFila(Modulo.Modulo_ID, Protocolo, true, false);
|
{
|
||||||
|
MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoRequisicaoPulsos(Leitura.Endereco));
|
||||||
}
|
}
|
||||||
if (!Modulo.DirMotor.Inicializado && Modulo.DirMotor.Comandar)
|
|
||||||
{
|
|
||||||
string Protocolo = Modulo.DirMotor.ProtocoloConfiguracao(true);
|
|
||||||
Variaveis.OperacaoEmAndamento.DispMvd.AdicionarMensagemFila(Modulo.Modulo_ID, Protocolo, true, false);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
foreach (var Modulo in Modulos.Where(x => x.RequisitarDados && (x.MovMotor.Inicializado || x.DirMotor.Inicializado)))
|
tmrRegistradorMKS.SetInterval(3000);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
MKS057DService.TaxaAmostragem = MKS057DService.Referenciando ? 200 : 1000;
|
||||||
|
tmrRegistradorMKS.SetInterval(MKS057DService.TaxaAmostragem);
|
||||||
|
|
||||||
|
var Controle = Variaveis.OperacaoEmAndamento.Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Dir);
|
||||||
|
foreach (var Modulo in Modulos.Where(x => x.DirMotor.MKS_Inicializado))
|
||||||
{
|
{
|
||||||
string Protocolo = Modulo.ProtocoloAquisicaoDados();
|
byte modAddr = Modulo.DirMotor.EnderecoByte;
|
||||||
Variaveis.OperacaoEmAndamento.DispMvd.AdicionarMensagemFila(Modulo.Modulo_ID, Protocolo, false, false);
|
if (!MKS057DService.Referenciando || (MKS057DService.Referenciando && MKS057DService.AddrRef == modAddr))
|
||||||
|
{
|
||||||
|
MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoRequisicaoPulsos(modAddr));
|
||||||
|
MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoRequisicaoIO(modAddr));
|
||||||
|
|
||||||
|
// 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 (!MKS057DService.Referenciando)
|
||||||
|
{
|
||||||
|
Modulo.DirMotor.EnviarComandoControle(Controle.UltimaDirecao);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -453,7 +358,7 @@ namespace AgroBase.Models.Modules
|
||||||
{
|
{
|
||||||
foreach (var Modulo in Modulos)
|
foreach (var Modulo in Modulos)
|
||||||
{
|
{
|
||||||
Modulo.MovMotor.ProtocoloComando(Direcao.Parado);
|
Modulo.MovMotor.EnviarComandoControle(Direcao.Parado);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
|
|
@ -466,7 +371,7 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
foreach (var Modulo in Modulos.Where(x => x.DirMotor.MKS_Inicializado && !x.DirMotor.PosicaoTipoMovimentoConcluido(DirecaoAtual)))
|
foreach (var Modulo in Modulos.Where(x => x.DirMotor.MKS_Inicializado && !x.DirMotor.PosicaoTipoMovimentoConcluido(DirecaoAtual)))
|
||||||
{
|
{
|
||||||
await Modulo.DirMotor.EnviarComandoControle(DirecaoAtual);
|
Modulo.DirMotor.EnviarComandoControle(DirecaoAtual);
|
||||||
}
|
}
|
||||||
|
|
||||||
DateTime Agora = DateTime.Now;
|
DateTime Agora = DateTime.Now;
|
||||||
|
|
@ -482,7 +387,7 @@ namespace AgroBase.Models.Modules
|
||||||
Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP = 20;
|
Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP = 20;
|
||||||
foreach (var Modulo in Modulos)
|
foreach (var Modulo in Modulos)
|
||||||
{
|
{
|
||||||
Modulo.MovMotor.ProtocoloComando(
|
Modulo.MovMotor.EnviarComandoControle(
|
||||||
DirecaoAtual == Direcao.Direita ? Direcao.Frente :
|
DirecaoAtual == Direcao.Direita ? Direcao.Frente :
|
||||||
DirecaoAtual == Direcao.Esquerda ? Direcao.Tras :
|
DirecaoAtual == Direcao.Esquerda ? Direcao.Tras :
|
||||||
Direcao.Parado
|
Direcao.Parado
|
||||||
|
|
@ -495,6 +400,21 @@ namespace AgroBase.Models.Modules
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task RealizarReferenciamentoDirecional()
|
||||||
|
{
|
||||||
|
if (!MKS057DService.Referenciando)
|
||||||
|
{
|
||||||
|
TipoMovimentoDirecional tipoControle = Variaveis.OperacaoEmAndamento.Controle.TipoMovimento;
|
||||||
|
|
||||||
|
Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = TipoMovimentoDirecional.Diagnostico;
|
||||||
|
foreach (var Modulo in Modulos.Where(x => x.DirMotor.Comandar && x.DirMotor.MKS_Inicializado))
|
||||||
|
{
|
||||||
|
await Modulo.DirMotor.ReferenciaMotor();
|
||||||
|
}
|
||||||
|
Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = tipoControle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -512,7 +432,6 @@ namespace AgroBase.Models.Modules
|
||||||
return MovMotor.BLD_Inicializado || DirMotor.MKS_Inicializado;
|
return MovMotor.BLD_Inicializado || DirMotor.MKS_Inicializado;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public DateTime UltimoProtocoloRecebido { get; set; } = DateTime.MaxValue.AddDays(-1);
|
|
||||||
|
|
||||||
public MvdMotorBLDC MovMotor { get; set; }
|
public MvdMotorBLDC MovMotor { get; set; }
|
||||||
public MvdMotorPasso DirMotor { get; set; }
|
public MvdMotorPasso DirMotor { get; set; }
|
||||||
|
|
@ -595,16 +514,6 @@ namespace AgroBase.Models.Modules
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ProtocoloAquisicaoDados()
|
|
||||||
{
|
|
||||||
string ProtocoloMotor =
|
|
||||||
((int)F_Code.Req).ToString() + SerialService.SplitMessage +
|
|
||||||
Modulo_ID + SerialService.SplitParams +
|
|
||||||
"";
|
|
||||||
return ProtocoloMotor;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void AtualizarSensoresMotor()
|
public void AtualizarSensoresMotor()
|
||||||
{
|
{
|
||||||
var sensorTmp = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura.SensoresTemperatura.FirstOrDefault(x => x.ID.Contains(Modulo_ID));
|
var sensorTmp = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura.SensoresTemperatura.FirstOrDefault(x => x.ID.Contains(Modulo_ID));
|
||||||
|
|
@ -627,7 +536,6 @@ namespace AgroBase.Models.Modules
|
||||||
if (sensorCor != null)
|
if (sensorCor != null)
|
||||||
{
|
{
|
||||||
MovMotor.Corrente = (double)sensorCor.Current;
|
MovMotor.Corrente = (double)sensorCor.Current;
|
||||||
MovMotor.Tensao = sensorCor.BusVoltage;
|
|
||||||
|
|
||||||
AlarmeModel _Alarme = new AlarmeModel()
|
AlarmeModel _Alarme = new AlarmeModel()
|
||||||
{
|
{
|
||||||
|
|
@ -658,7 +566,7 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
if (MovMotor.BLD_Inicializado && (!AlarmeAnterior || Adicionado) && AlarmeAtual) // Motor iniciado, Não estava em alarme anteriormente ou foi adicionado agora, alarme atual
|
if (MovMotor.BLD_Inicializado && (!AlarmeAnterior || Adicionado) && AlarmeAtual) // Motor iniciado, Não estava em alarme anteriormente ou foi adicionado agora, alarme atual
|
||||||
{
|
{
|
||||||
Variaveis.OperacaoEmAndamento.DispMvd.AdicionarMensagemFila(Modulo_ID, MovMotor.ProtocoloComando(Direcao.Parado, true), true, false);
|
MovMotor.EnviarComandoControle(Direcao.Parado, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Alm.Valor = _Alarme.Valor;
|
Alm.Valor = _Alarme.Valor;
|
||||||
|
|
@ -676,9 +584,29 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
// SETs
|
// SETs
|
||||||
public string Endereco { get; set; }
|
public string Endereco { get; set; }
|
||||||
public bool Ligado { get; set; } = false;
|
public byte EnderecoByte
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Convert.ToByte(Endereco.Replace("0x", ""), 16);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public bool LeituraLigado
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Ativado ?? false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public bool ComandoLigado { get; set; } = false;
|
||||||
//public bool Freio { get; set; } = false;
|
//public bool Freio { get; set; } = false;
|
||||||
public int CodigoAlarme { get; set; } = 0;
|
public int CodigoAlarme
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.CodigoAlarme ?? 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
public int RPM_SP { get; set; } = 0;
|
public int RPM_SP { get; set; } = 0;
|
||||||
public int RPM_SP_Controle { get; set; } = 0;
|
public int RPM_SP_Controle { get; set; } = 0;
|
||||||
public int RPM_SP_Leitura
|
public int RPM_SP_Leitura
|
||||||
|
|
@ -695,12 +623,42 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
|
|
||||||
// GETs
|
// GETs
|
||||||
public double RPM_Roda { get; set; } = 0;
|
public double RPM_Roda
|
||||||
public Sentido Sentido { get; set; } = Sentido.Parado;
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return (Leitura?.RPM ?? 0) * OffsetLeitura;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public Sentido Sentido
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Direcao ?? Sentido.Parado;
|
||||||
|
}
|
||||||
|
}
|
||||||
public double Temperatura { get; set; } = 0;
|
public double Temperatura { get; set; } = 0;
|
||||||
public double TemperaturaDriver { get; set; } = 0;
|
public double TemperaturaDriver
|
||||||
public double Tensao { get; set; } = 0;
|
{
|
||||||
public double Corrente_Max { get; set; } = 0;
|
get
|
||||||
|
{
|
||||||
|
return Math.Round(Leitura?.Temperatura ?? 0, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public double Tensao
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Math.Round(Leitura?.Tensao ?? 0, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public double Corrente_Max
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Math.Round(Leitura?.CorrenteMax ?? 0, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
public double Corrente { get; set; } = 0;
|
public double Corrente { get; set; } = 0;
|
||||||
public double RPM_Motor
|
public double RPM_Motor
|
||||||
{
|
{
|
||||||
|
|
@ -722,15 +680,26 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
public bool Comandar { get; set; } = false;
|
public bool Comandar { get; set; } = false;
|
||||||
public bool Alarme { get; set; } = false;
|
public bool Alarme { get; set; } = false;
|
||||||
public bool Inicializado { get; set; } = false;
|
|
||||||
public bool BLD_Inicializado
|
public bool BLD_Inicializado
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return BLD300RService.DadosLeitura.Any(x => x.Iniciado && Convert.ToByte(Endereco.Replace("0x", ""), 16) == x.Endereco);
|
return Leitura?.Iniciado ?? false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private BLD300RModel _leitura = null;
|
||||||
|
public BLD300RModel Leitura
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
_leitura = BLD300RService.DadosLeitura?.FirstOrDefault(x => x.Endereco == EnderecoByte);
|
||||||
|
return _leitura;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_leitura = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public Dictionary<TipoMovimentoDirecional,ConfiguracaoSentidoMotor> ConfigSentidos { get; set; }
|
public Dictionary<TipoMovimentoDirecional,ConfiguracaoSentidoMotor> ConfigSentidos { get; set; }
|
||||||
|
|
@ -862,14 +831,12 @@ namespace AgroBase.Models.Modules
|
||||||
return Protocolo;
|
return Protocolo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ProtocoloComando(Direcao DirecaoAtual, bool CmdAlarme = false)
|
public void EnviarComandoControle(Direcao DirecaoAtual, bool CmdAlarme = false)
|
||||||
{
|
{
|
||||||
string ProtocoloMotor = "";
|
|
||||||
|
|
||||||
bool Freado = DirecaoAtual == Direcao.EmFreio;
|
bool Freado = DirecaoAtual == Direcao.EmFreio;
|
||||||
(bool AtuarServo, int AnguloFreio) = ConfigFreio.AtualizarDadosFreio(Freado, 0, -1, 5);
|
(bool AtuarServo, int AnguloFreio) = ConfigFreio.AtualizarDadosFreio(Freado, 0, -1, 5);
|
||||||
|
|
||||||
if (Comandar && ((!Alarme && CodigoAlarme == 0) || CmdAlarme))
|
if (Comandar && ((!Alarme && CodigoAlarme == 0) || CmdAlarme) && BLD_Inicializado)
|
||||||
{
|
{
|
||||||
if (!CmdAlarme)
|
if (!CmdAlarme)
|
||||||
{
|
{
|
||||||
|
|
@ -881,7 +848,7 @@ namespace AgroBase.Models.Modules
|
||||||
DirecaoAtual == Direcao.Parado || Freado || CmdAlarme ? 0 :
|
DirecaoAtual == Direcao.Parado || Freado || CmdAlarme ? 0 :
|
||||||
RPM_SP_Controle;
|
RPM_SP_Controle;
|
||||||
|
|
||||||
Ligado = RPM_SP > 0;
|
ComandoLigado = RPM_SP > 0;
|
||||||
|
|
||||||
switch (DirecaoAtual)
|
switch (DirecaoAtual)
|
||||||
{
|
{
|
||||||
|
|
@ -893,10 +860,7 @@ namespace AgroBase.Models.Modules
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BLD_Inicializado)
|
byte Addr = EnderecoByte;
|
||||||
{
|
|
||||||
byte Addr = Convert.ToByte(Endereco.Replace("0x", ""), 16);
|
|
||||||
var Leitura = BLD300RService.DadosLeitura.FirstOrDefault(x => x.Endereco == Addr);
|
|
||||||
DateTime Agora = DateTime.Now;
|
DateTime Agora = DateTime.Now;
|
||||||
|
|
||||||
if (Leitura == null || Leitura.Direcao != Sentido_SP)
|
if (Leitura == null || Leitura.Direcao != Sentido_SP)
|
||||||
|
|
@ -911,7 +875,7 @@ namespace AgroBase.Models.Modules
|
||||||
TimeoutResposta = 500,
|
TimeoutResposta = 500,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (Ligado && (Leitura == null || Leitura.RPM_SP != RPM_SP_Controle))
|
if (ComandoLigado && (Leitura == null || Leitura.RPM_SP != RPM_SP_Controle))
|
||||||
{
|
{
|
||||||
BLD300RService.AdicionarComandoNaFila(new BLD300RService.BLDComandoModel()
|
BLD300RService.AdicionarComandoNaFila(new BLD300RService.BLDComandoModel()
|
||||||
{
|
{
|
||||||
|
|
@ -935,29 +899,19 @@ namespace AgroBase.Models.Modules
|
||||||
TimeoutResposta = 500,
|
TimeoutResposta = 500,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (Leitura == null || Leitura.Ativado != Ligado)
|
if (Leitura == null || ComandoLigado != LeituraLigado)
|
||||||
{
|
{
|
||||||
BLD300RService.AdicionarComandoNaFila(new BLD300RService.BLDComandoModel()
|
BLD300RService.AdicionarComandoNaFila(new BLD300RService.BLDComandoModel()
|
||||||
{
|
{
|
||||||
Endereco = Addr,
|
Endereco = Addr,
|
||||||
Parametro = BLD300RService.Parametros.First(x => x.Chave == "Enabled"),
|
Parametro = BLD300RService.Parametros.First(x => x.Chave == "Enabled"),
|
||||||
Valor = RPM_SP > 0 ? 1 : 0,
|
Valor = ComandoLigado ? 1 : 0,
|
||||||
Get = false,
|
Get = false,
|
||||||
AguardaResposta = true,
|
AguardaResposta = true,
|
||||||
TimeoutResposta = 500,
|
TimeoutResposta = 500,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (Inicializado)
|
|
||||||
{
|
|
||||||
ProtocoloMotor =
|
|
||||||
((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
|
|
||||||
ID + SerialService.SplitParams +
|
|
||||||
((int)Sentido_SP).ToString() + SerialService.SplitParams +
|
|
||||||
RPM_SP.ToString() + SerialService.SplitParams +
|
|
||||||
(Freado ? "1" : "0");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AtuarServo)
|
if (AtuarServo)
|
||||||
{
|
{
|
||||||
|
|
@ -968,11 +922,10 @@ namespace AgroBase.Models.Modules
|
||||||
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sFRO, ServoFreio.ID, AnguloFreio);
|
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sFRO, ServoFreio.ID, AnguloFreio);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ProtocoloMotor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MvdMotorPasso
|
public class MvdMotorPasso
|
||||||
|
|
@ -981,23 +934,82 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
// SETs
|
// SETs
|
||||||
public string Endereco { get; set; }
|
public string Endereco { get; set; }
|
||||||
|
public byte EnderecoByte
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Convert.ToByte(Endereco.Replace("0x", ""), 16);
|
||||||
|
}
|
||||||
|
}
|
||||||
public Sentido Sentido_SP { get; set; } = Sentido.Parado;
|
public Sentido Sentido_SP { get; set; } = Sentido.Parado;
|
||||||
public double Angulo_SP { get; set; } = 0;
|
public double Angulo_SP { get; set; } = 0;
|
||||||
public double Angulo_Offset { get; set; } = 0;
|
public double Angulo_Offset { get; set; } = 0;
|
||||||
public double Velocidade_Max { get; set; } = 600;
|
public double Velocidade_Max { get; set; } = 600;
|
||||||
|
public int Velocidade
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Convert.ToInt32(((Variaveis.OperacaoEmAndamento.Controle?.VelocidadeMP ?? 0) / 100.0) * Velocidade_Max);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// GETs
|
// GETs
|
||||||
public Sentido Sentido { get; set; } = Sentido.Parado;
|
public Sentido Sentido
|
||||||
public double Angulo { get; set; } = 0;
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Direcao ?? Sentido.Parado;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public double Angulo
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return MKS057DService.PulsosParaAngulo(Leitura?.NumeroPulsos ?? 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public double RPM
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.RPM ?? 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public bool IN1_Atuado
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Entradas?[0] ?? true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public bool IN2_Atuado
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Entradas?[1] ?? true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public bool Comandar { get; set; } = false;
|
public bool Comandar { get; set; } = false;
|
||||||
public bool Inicializado { get; set; } = false;
|
|
||||||
public bool MKS_Inicializado
|
public bool MKS_Inicializado
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return MKS057DService.DadosLeitura.Any(x => x.Iniciado && Convert.ToByte(Endereco.Replace("0x", ""), 16) == x.Endereco);
|
return Leitura?.Iniciado ?? false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private MKS057DModel _leitura = null;
|
||||||
|
public MKS057DModel Leitura
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
_leitura = MKS057DService.DadosLeitura?.FirstOrDefault(x => x.Endereco == EnderecoByte);
|
||||||
|
return _leitura;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_leitura = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1121,90 +1133,9 @@ namespace AgroBase.Models.Modules
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void EnviarComandoControle(Direcao Direcao)
|
||||||
public string ProtocoloConfiguracao(bool Conectar)
|
|
||||||
{
|
{
|
||||||
var _pinout = new PinoutDataModel()
|
if (Comandar && MKS_Inicializado)
|
||||||
{
|
|
||||||
ExpansorGPIO = ModuloMvdModel.Pinout.ExpansorGPIO,
|
|
||||||
EnderecoExpansor = ModuloMvdModel.Pinout.EnderecoExpansor,
|
|
||||||
Pinos = ModuloMvdModel.Pinout.Pinos.ToList(),
|
|
||||||
};
|
|
||||||
_pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
|
|
||||||
|
|
||||||
string Protocolo =
|
|
||||||
((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
|
|
||||||
ID + SerialService.SplitParams +
|
|
||||||
(Conectar ? "1" : "0") + SerialService.SplitParams +
|
|
||||||
//(Estabilizar ? "1" : "0") + SerialService.SplitParams +
|
|
||||||
Angulo_Offset.ToString() + SerialService.SplitParams +
|
|
||||||
PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitParams);
|
|
||||||
|
|
||||||
return Protocolo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string ProtocoloComando(Direcao Direcao)
|
|
||||||
{
|
|
||||||
string ProtocoloMotor = "";
|
|
||||||
|
|
||||||
if (Comandar)
|
|
||||||
{
|
|
||||||
int AnguloTipoMovimento = VariaveisEquipamento.AnguloMovimento[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento];
|
|
||||||
|
|
||||||
Angulo_SP =
|
|
||||||
(Direcao != Direcao.Esquerda && Direcao != Direcao.Direita) ? 0 :
|
|
||||||
AnguloTipoMovimento != -1 ? AnguloTipoMovimento :
|
|
||||||
Variaveis.OperacaoEmAndamento.Controle.Angulo;
|
|
||||||
|
|
||||||
Sentido_SP =
|
|
||||||
Direcao == Direcao.Direita ? ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Direita :
|
|
||||||
Direcao == Direcao.Esquerda ? ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Esquerda :
|
|
||||||
Sentido_SP == Sentido.Horario ? Sentido.Antihorario :
|
|
||||||
Sentido_SP == Sentido.Antihorario ? Sentido.Horario :
|
|
||||||
Sentido.Parado;
|
|
||||||
|
|
||||||
if (MKS_Inicializado)
|
|
||||||
{
|
|
||||||
if (Direcao == Direcao.Referenciar)
|
|
||||||
{
|
|
||||||
ReferenciaMotor().ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int mx = Sentido_SP == Sentido.Antihorario ? -1 : 1;
|
|
||||||
|
|
||||||
int vel = Convert.ToInt32((Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP / 100.0) * Velocidade_Max);
|
|
||||||
|
|
||||||
MKS057DService.AdicionarComandoNaFila(new MKS057ComandoModel()
|
|
||||||
{
|
|
||||||
Get = false,
|
|
||||||
Comando = Convert.ToByte("13"),
|
|
||||||
Endereco = Convert.ToByte(Endereco, 16),
|
|
||||||
Angulo = Angulo_SP * mx,
|
|
||||||
Velocidade = vel,
|
|
||||||
_Sentido = Sentido_SP,
|
|
||||||
ModoControle = ModosControle.AnguloAbsoluto,
|
|
||||||
AguardaResposta = false,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (Inicializado)
|
|
||||||
{
|
|
||||||
ProtocoloMotor =
|
|
||||||
((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
|
|
||||||
ID + SerialService.SplitParams +
|
|
||||||
((int)Sentido_SP).ToString() + SerialService.SplitParams +
|
|
||||||
Angulo_SP.ToString() + SerialService.SplitParams +
|
|
||||||
Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP.ToString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ProtocoloMotor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task EnviarComandoControle(Direcao Direcao)
|
|
||||||
{
|
|
||||||
if (Comandar)
|
|
||||||
{
|
{
|
||||||
int AnguloTipoMovimento = VariaveisEquipamento.AnguloMovimento[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento];
|
int AnguloTipoMovimento = VariaveisEquipamento.AnguloMovimento[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento];
|
||||||
|
|
||||||
|
|
@ -1224,39 +1155,28 @@ namespace AgroBase.Models.Modules
|
||||||
|
|
||||||
Angulo_SP = Math.Abs(Angulo_SP) * mx;
|
Angulo_SP = Math.Abs(Angulo_SP) * mx;
|
||||||
|
|
||||||
if (MKS_Inicializado)
|
if (!FuncoesMatematicas.ValorEstaEntre(Angulo, Angulo_SP, 3) && RPM == 0)
|
||||||
{
|
{
|
||||||
if (Direcao == Direcao.Referenciar)
|
MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoMovimento(EnderecoByte, Angulo_SP, Velocidade, Sentido_SP));
|
||||||
{
|
|
||||||
await ReferenciaMotor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int vel = Convert.ToInt32((Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP / 100.0) * Velocidade_Max);
|
|
||||||
|
|
||||||
MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoMovimento(Convert.ToByte(Endereco.Replace("0x", ""), 16), Angulo_SP, vel, Sentido_SP));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ReferenciaMotor()
|
public async Task ReferenciaMotor()
|
||||||
{
|
{
|
||||||
byte Addr = Convert.ToByte(Endereco, 16);
|
byte Addr = EnderecoByte;
|
||||||
|
|
||||||
MKS057DService.AddrRef = Addr;
|
MKS057DService.AddrRef = Addr;
|
||||||
MKS057DService.UltimoReferenciamento = DateTime.Now;
|
MKS057DService.UltimoReferenciamento = DateTime.Now;
|
||||||
|
|
||||||
await Task.Delay(2000);
|
await Task.Delay(2000);
|
||||||
|
|
||||||
await RequisitarDadosReferenciamento(Addr);
|
|
||||||
|
|
||||||
await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoSetZero(Addr));
|
await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoSetZero(Addr));
|
||||||
|
|
||||||
await Task.Delay(500);
|
await Task.Delay(500);
|
||||||
|
|
||||||
bool Sucesso = false;
|
bool Sucesso = false;
|
||||||
bool EstadoInicial = ReferenciaEstaEmZero(Addr);
|
bool EstadoInicial = ReferenciaEstaEmZero();
|
||||||
bool EstadoAnterior = EstadoInicial;
|
bool EstadoAnterior = EstadoInicial;
|
||||||
|
|
||||||
double _anguloAnterior = Angulo;
|
double _anguloAnterior = Angulo;
|
||||||
|
|
@ -1282,9 +1202,7 @@ namespace AgroBase.Models.Modules
|
||||||
bool inverterGiro = false;
|
bool inverterGiro = false;
|
||||||
while (!Sucesso && !inverterGiro && Inicio.AddSeconds(40) > DateTime.Now)
|
while (!Sucesso && !inverterGiro && Inicio.AddSeconds(40) > DateTime.Now)
|
||||||
{
|
{
|
||||||
await RequisitarDadosReferenciamento(Addr);
|
bool _ref = ReferenciaEstaEmZero();
|
||||||
|
|
||||||
bool _ref = ReferenciaEstaEmZero(Addr);
|
|
||||||
|
|
||||||
//Sucesso = (EstadoInicial && !_ref) || (!EstadoInicial && _ref);
|
//Sucesso = (EstadoInicial && !_ref) || (!EstadoInicial && _ref);
|
||||||
|
|
||||||
|
|
@ -1380,20 +1298,12 @@ namespace AgroBase.Models.Modules
|
||||||
MKS057DService.AddrRef = 0x00;
|
MKS057DService.AddrRef = 0x00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool ReferenciaEstaEmZero()
|
||||||
private bool ReferenciaEstaEmZero(byte Addr)
|
|
||||||
{
|
{
|
||||||
var Leitura = MKS057DService.DadosLeitura.FirstOrDefault(x => x.Endereco == Addr);
|
bool atuado = !IN1_Atuado;
|
||||||
bool atuado = (Leitura?.Entradas?[0] ?? true) == false;
|
|
||||||
return atuado;
|
return atuado;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task RequisitarDadosReferenciamento(byte Addr)
|
|
||||||
{
|
|
||||||
await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoRequisicaoPulsos(Addr));
|
|
||||||
await MKS057DService.EnviarComandoControle(MKS057DService.MontarComandoRequisicaoIO(Addr));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using AgroBase.Services;
|
using AgroBase.Forms.IHM;
|
||||||
|
using AgroBase.Services;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
@ -728,10 +729,15 @@ namespace AgroBase.Models.Modules
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (Conectado && RequisitarDados)
|
if (Conectado)
|
||||||
|
{
|
||||||
|
if (RequisitarDados)
|
||||||
{
|
{
|
||||||
RequisitarDadosModulo();
|
RequisitarDadosModulo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VerificaControleLeitura();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RequisitarDadosModulo()
|
public void RequisitarDadosModulo()
|
||||||
|
|
@ -773,6 +779,51 @@ namespace AgroBase.Models.Modules
|
||||||
return (_sensoriamentoOperante, ModsComFalha);
|
return (_sensoriamentoOperante, ModsComFalha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void VerificaControleLeitura()
|
||||||
|
{
|
||||||
|
if (!frmDiagnosticos.Diagnosticando)
|
||||||
|
{
|
||||||
|
var ledOP = Sinaleiros.FirstOrDefault(x => x.ID == "LEDOP" && x.Inicializado);
|
||||||
|
var ledAT = Sinaleiros.FirstOrDefault(x => x.ID == "LEDAT" && x.Inicializado);
|
||||||
|
var ledMN = Sinaleiros.FirstOrDefault(x => x.ID == "LEDMN" && x.Inicializado);
|
||||||
|
|
||||||
|
var comportamento = VariaveisEquipamento.ComportamentoPorStatus();
|
||||||
|
if (ledOP != null && (!ledOP.Comportamento.Equals(comportamento) || (ledOP.LeituraComando != comportamento.statusLED)))
|
||||||
|
{
|
||||||
|
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sLED, ledOP.ID, comportamento);
|
||||||
|
}
|
||||||
|
|
||||||
|
var statusLedAt = Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.MapaGPS ? StatusLED.Aceso : StatusLED.Apagado;
|
||||||
|
if (ledAT != null && (!ledAT.Comportamento.statusLED.Equals(statusLedAt) || (ledAT.LeituraComando != statusLedAt)))
|
||||||
|
{
|
||||||
|
ledAT.Comportamento.statusLED = statusLedAt;
|
||||||
|
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sLED, ledAT.ID, ledAT.Comportamento);
|
||||||
|
}
|
||||||
|
|
||||||
|
var statusLedMn = Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.Manual ? StatusLED.Aceso : StatusLED.Apagado;
|
||||||
|
if (ledMN != null && (!ledMN.Comportamento.statusLED.Equals(statusLedMn) || (ledMN.LeituraComando != statusLedMn)))
|
||||||
|
{
|
||||||
|
ledMN.Comportamento.statusLED = statusLedMn;
|
||||||
|
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sLED, ledMN.ID, ledMN.Comportamento);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var rele in Reles.Where(x => x.Controlar && x.Inicializado))
|
||||||
|
{
|
||||||
|
if (rele.StatusControle != rele.LeituraEstado)
|
||||||
|
{
|
||||||
|
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sRLE, rele.ID, rele.StatusControle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var servo in Servos.Where(x => x.Controlar && x.Inicializado))
|
||||||
|
{
|
||||||
|
if (servo._AnguloControle != servo.LeituraAngulo)
|
||||||
|
{
|
||||||
|
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sFRO, servo.ID, servo._AnguloControle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -883,6 +934,20 @@ namespace AgroBase.Models.Modules
|
||||||
return Leitura?.Iniciado ?? false;
|
return Leitura?.Iniciado ?? false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public StatusLED LeituraComando
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Comando ?? StatusLED.Apagado;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public StatusLED LeituraStatus
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Leitura ?? StatusLED.Apagado;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
|
public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
|
||||||
{
|
{
|
||||||
|
|
@ -946,6 +1011,13 @@ namespace AgroBase.Models.Modules
|
||||||
return Leitura?.Iniciado ?? false;
|
return Leitura?.Iniciado ?? false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public Estado LeituraEstado
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Leitura ?? Estado.Desligado;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
|
public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
|
||||||
{
|
{
|
||||||
|
|
@ -1006,6 +1078,13 @@ namespace AgroBase.Models.Modules
|
||||||
return Leitura?.Iniciado ?? false;
|
return Leitura?.Iniciado ?? false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public double LeituraAngulo
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Leitura?.Angulo ?? 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
|
public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
|
||||||
{
|
{
|
||||||
|
|
@ -1261,6 +1340,7 @@ namespace AgroBase.Models.Modules
|
||||||
public string ID { get; set; }
|
public string ID { get; set; }
|
||||||
public bool Iniciado { get; set; }
|
public bool Iniciado { get; set; }
|
||||||
public StatusLED Leitura { get; set; }
|
public StatusLED Leitura { get; set; }
|
||||||
|
public StatusLED Comando { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class FirmwareRele
|
public class FirmwareRele
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ using static AgroBase.Models.Enums;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms.DataVisualization.Charting;
|
using System.Windows.Forms.DataVisualization.Charting;
|
||||||
using AgroBase.Forms.IHM;
|
|
||||||
using OpenHardwareMonitor.Hardware;
|
using OpenHardwareMonitor.Hardware;
|
||||||
using CefSharp.WinForms;
|
using CefSharp.WinForms;
|
||||||
|
using MathNet.Numerics;
|
||||||
|
|
||||||
namespace AgroBase.Models
|
namespace AgroBase.Models
|
||||||
{
|
{
|
||||||
|
|
@ -867,8 +867,6 @@ namespace AgroBase.Models
|
||||||
SalvarLogs(false);
|
SalvarLogs(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
AtualizarSinaleiroOperacao();
|
|
||||||
|
|
||||||
Variaveis.OperacaoEmAndamento.Finalizando = false;
|
Variaveis.OperacaoEmAndamento.Finalizando = false;
|
||||||
|
|
||||||
tmrLogs?.Stop();
|
tmrLogs?.Stop();
|
||||||
|
|
@ -908,7 +906,7 @@ namespace AgroBase.Models
|
||||||
if (DispMvd != null)
|
if (DispMvd != null)
|
||||||
{
|
{
|
||||||
// Referenciar motores de passo
|
// Referenciar motores de passo
|
||||||
if (DispMvd.Dados.Modulos.Any(x => x.DirMotor.Inicializado))
|
if (DispMvd.Dados.Modulos.Any(x => x.DirMotor.MKS_Inicializado))
|
||||||
{
|
{
|
||||||
GeneralJoystick.EnviaComandoMotor(Keys.R);
|
GeneralJoystick.EnviaComandoMotor(Keys.R);
|
||||||
}
|
}
|
||||||
|
|
@ -1170,7 +1168,6 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
OperacaoControleTipoModel ControleMov = _Controle.TiposControle != null ? _Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Mov) : null;
|
OperacaoControleTipoModel ControleMov = _Controle.TiposControle != null ? _Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Mov) : null;
|
||||||
OperacaoControleTipoModel ControleDir = _Controle.TiposControle != null ? _Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Dir) : null;
|
OperacaoControleTipoModel ControleDir = _Controle.TiposControle != null ? _Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Dir) : null;
|
||||||
OperacaoControleTipoModel ControleAtu = _Controle.TiposControle != null ? _Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Atu) : null;
|
|
||||||
|
|
||||||
if (ControleMov != null && _Controle.RPM_SP != _ControleAnterior.RPM_SP && (Agora - ControleMov.UltimoComando).TotalMilliseconds > ControleMov.DelayEnvioComando)
|
if (ControleMov != null && _Controle.RPM_SP != _ControleAnterior.RPM_SP && (Agora - ControleMov.UltimoComando).TotalMilliseconds > ControleMov.DelayEnvioComando)
|
||||||
{
|
{
|
||||||
|
|
@ -1190,6 +1187,20 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
_ControleAnterior.Angulo = _Controle.Angulo;
|
_ControleAnterior.Angulo = _Controle.Angulo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AtualizarDadosOperacao();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AtualizarDadosControlePulverizador(bool ForcarEnvio)
|
||||||
|
{
|
||||||
|
if (Variaveis.OperacaoEmAndamento.Controle.PulverizadorAutomatico)
|
||||||
|
{
|
||||||
|
DateTime Agora = DateTime.Now;
|
||||||
|
|
||||||
|
var _Controle = Variaveis.OperacaoEmAndamento.Controle;
|
||||||
|
var _ControleAnterior = Variaveis.OperacaoEmAndamento.ControleAnterior;
|
||||||
|
|
||||||
|
OperacaoControleTipoModel ControleAtu = _Controle.TiposControle != null ? _Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Atu) : null;
|
||||||
if (ControleAtu != null && !_Controle.BicosAtuados.Select(x => x.ComandoAtuar).SequenceEqual(_ControleAnterior.BicosAtuados.Select(x => x.ComandoAtuar)) && (Agora - ControleAtu.UltimoComando).TotalMilliseconds > ControleAtu.DelayEnvioComando)
|
if (ControleAtu != null && !_Controle.BicosAtuados.Select(x => x.ComandoAtuar).SequenceEqual(_ControleAnterior.BicosAtuados.Select(x => x.ComandoAtuar)) && (Agora - ControleAtu.UltimoComando).TotalMilliseconds > ControleAtu.DelayEnvioComando)
|
||||||
{
|
{
|
||||||
// Enviar comando ATU
|
// Enviar comando ATU
|
||||||
|
|
@ -1203,8 +1214,7 @@ namespace AgroBase.Models
|
||||||
_ControleAnterior.BicosAtuados.Add(bico.Clone());
|
_ControleAnterior.BicosAtuados.Add(bico.Clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
AtualizarDadosOperacao();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<string> EnviarProtocoloComando(IDispositivosService Dispositivo, T_Code Tipo, bool ForcarEnvio)
|
public List<string> EnviarProtocoloComando(IDispositivosService Dispositivo, T_Code Tipo, bool ForcarEnvio)
|
||||||
|
|
@ -1587,6 +1597,7 @@ namespace AgroBase.Models
|
||||||
Variaveis.OperacaoEmAndamento.AtualizarControleAtuadores();
|
Variaveis.OperacaoEmAndamento.AtualizarControleAtuadores();
|
||||||
Variaveis.OperacaoEmAndamento.AtualizarDadosControle(false);
|
Variaveis.OperacaoEmAndamento.AtualizarDadosControle(false);
|
||||||
}
|
}
|
||||||
|
Variaveis.OperacaoEmAndamento.AtualizarDadosControlePulverizador(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AtualizarGrafico()
|
private void AtualizarGrafico()
|
||||||
|
|
@ -1600,7 +1611,7 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
// Primeiro, coletar todos os logs alinhados por índice em uma lista de tuplas (index, moduloLog)
|
// Primeiro, coletar todos os logs alinhados por índice em uma lista de tuplas (index, moduloLog)
|
||||||
var Logs = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos
|
var Logs = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos
|
||||||
.Where(x => x.MovMotor.Inicializado)
|
.Where(x => x.MovMotor.BLD_Inicializado)
|
||||||
.SelectMany(m => m.MovMotor.LogGrafico.Select((log, index) => new { Index = index, Log = log }))
|
.SelectMany(m => m.MovMotor.LogGrafico.Select((log, index) => new { Index = index, Log = log }))
|
||||||
.GroupBy(x => x.Index) // Agrupa por índice
|
.GroupBy(x => x.Index) // Agrupa por índice
|
||||||
.OrderBy(g => g.Key) // Ordena pelos índices (opcional, mas ajuda na leitura)
|
.OrderBy(g => g.Key) // Ordena pelos índices (opcional, mas ajuda na leitura)
|
||||||
|
|
@ -1728,6 +1739,7 @@ namespace AgroBase.Models
|
||||||
Variaveis.OperacaoEmAndamento.Controle.Angulo = 0; // Angulo Zero (direcional reto)
|
Variaveis.OperacaoEmAndamento.Controle.Angulo = 0; // Angulo Zero (direcional reto)
|
||||||
Variaveis.OperacaoEmAndamento.Controle.BicosAtuados.ForEach(x => x.ComandoAtuar = false); // Bicos desatuados
|
Variaveis.OperacaoEmAndamento.Controle.BicosAtuados.ForEach(x => x.ComandoAtuar = false); // Bicos desatuados
|
||||||
AtualizarDadosControle(true);
|
AtualizarDadosControle(true);
|
||||||
|
AtualizarDadosControlePulverizador(true);
|
||||||
Variaveis.OperacaoEmAndamento.Controle.TiposControle.ForEach(x => x.UltimaDirecao = Direcao.Parado);
|
Variaveis.OperacaoEmAndamento.Controle.TiposControle.ForEach(x => x.UltimaDirecao = Direcao.Parado);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1837,8 +1849,6 @@ namespace AgroBase.Models
|
||||||
{
|
{
|
||||||
SalvarLogs(false);
|
SalvarLogs(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
AtualizarSinaleiroOperacao();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SalvarLogs(bool Fim)
|
public void SalvarLogs(bool Fim)
|
||||||
|
|
@ -1895,7 +1905,8 @@ namespace AgroBase.Models
|
||||||
MovEsq_Status = Variaveis.OperacaoEmAndamento.DispMvd.Dados.StatusModulosBLD(Direcao.Esquerda),
|
MovEsq_Status = Variaveis.OperacaoEmAndamento.DispMvd.Dados.StatusModulosBLD(Direcao.Esquerda),
|
||||||
MovDir_Status = Variaveis.OperacaoEmAndamento.DispMvd.Dados.StatusModulosBLD(Direcao.Direita),
|
MovDir_Status = Variaveis.OperacaoEmAndamento.DispMvd.Dados.StatusModulosBLD(Direcao.Direita),
|
||||||
PercentualErvasTerreno = Variaveis.OperacaoEmAndamento.Sensoriamento.PercentualErvasTerreno,
|
PercentualErvasTerreno = Variaveis.OperacaoEmAndamento.Sensoriamento.PercentualErvasTerreno,
|
||||||
SonarFrontal_old = null
|
SonarFrontal_old = null,
|
||||||
|
Controle = Variaveis.OperacaoEmAndamento.Controle,
|
||||||
};
|
};
|
||||||
SalvarLog("operacao", logGeral, Fim);
|
SalvarLog("operacao", logGeral, Fim);
|
||||||
|
|
||||||
|
|
@ -1935,7 +1946,7 @@ namespace AgroBase.Models
|
||||||
Velocidade = Modulo.MovMotor.VelocidadeInstantanea,
|
Velocidade = Modulo.MovMotor.VelocidadeInstantanea,
|
||||||
CodAlarme = Modulo.MovMotor.CodigoAlarme,
|
CodAlarme = Modulo.MovMotor.CodigoAlarme,
|
||||||
EmFreio = Modulo.MovMotor.ConfigFreio.Leitura,
|
EmFreio = Modulo.MovMotor.ConfigFreio.Leitura,
|
||||||
Ativado = Modulo.MovMotor.Ligado,
|
Ativado = Modulo.MovMotor.LeituraLigado,
|
||||||
};
|
};
|
||||||
SalvarLog(T_Code.Mov.ToString(), logMov, false);
|
SalvarLog(T_Code.Mov.ToString(), logMov, false);
|
||||||
|
|
||||||
|
|
@ -1963,7 +1974,7 @@ namespace AgroBase.Models
|
||||||
VolumeReservatorio = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeReservatorio,
|
VolumeReservatorio = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeReservatorio,
|
||||||
PressaoLinha_SP = Variaveis.OperacaoEmAndamento.Controle.PressaoLinha,
|
PressaoLinha_SP = Variaveis.OperacaoEmAndamento.Controle.PressaoLinha,
|
||||||
PressaoLinha = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha,
|
PressaoLinha = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha,
|
||||||
PotenciaBomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.Potencia,
|
PotenciaBomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.LeituraPotencia,
|
||||||
BombaLigada = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.ComandoAtuar,
|
BombaLigada = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.ComandoAtuar,
|
||||||
VazaoFluxoMLpS = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VazaoFluxoMLpS,
|
VazaoFluxoMLpS = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VazaoFluxoMLpS,
|
||||||
VolumeVazaoML = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeVazaoML,
|
VolumeVazaoML = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeVazaoML,
|
||||||
|
|
@ -2233,36 +2244,6 @@ namespace AgroBase.Models
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
public void AtualizarSinaleiroOperacao()
|
|
||||||
{
|
|
||||||
if (DispSen != null && DispSen.Dados.Conectado && !frmDiagnosticos.Diagnosticando)
|
|
||||||
{
|
|
||||||
var ledOP = DispSen.Dados.Sinaleiros.FirstOrDefault(x => x.ID == "LEDOP");
|
|
||||||
var ledAT = DispSen.Dados.Sinaleiros.FirstOrDefault(x => x.ID == "LEDAT");
|
|
||||||
var ledMN = DispSen.Dados.Sinaleiros.FirstOrDefault(x => x.ID == "LEDMN");
|
|
||||||
|
|
||||||
var comportamento = VariaveisEquipamento.ComportamentoPorStatus();
|
|
||||||
if (!ledOP.Comportamento.Equals(comportamento))
|
|
||||||
{
|
|
||||||
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sLED, ledOP.ID, comportamento);
|
|
||||||
}
|
|
||||||
|
|
||||||
var statusLedAt = Modo == ModoOperacao.MapaGPS ? StatusLED.Aceso : StatusLED.Apagado;
|
|
||||||
if (!ledAT.Comportamento.statusLED.Equals(statusLedAt))
|
|
||||||
{
|
|
||||||
ledAT.Comportamento.statusLED = statusLedAt;
|
|
||||||
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sLED, ledAT.ID, ledAT.Comportamento);
|
|
||||||
}
|
|
||||||
|
|
||||||
var statusLedMn = Modo == ModoOperacao.Manual ? StatusLED.Aceso : StatusLED.Apagado;
|
|
||||||
if (!ledMN.Comportamento.statusLED.Equals(statusLedMn))
|
|
||||||
{
|
|
||||||
ledMN.Comportamento.statusLED = statusLedMn;
|
|
||||||
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sLED, ledMN.ID, ledMN.Comportamento);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AbrirForm()
|
public void AbrirForm()
|
||||||
{
|
{
|
||||||
if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
|
if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
|
||||||
|
|
@ -2915,6 +2896,7 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
public List<OperacaoControleTipoModel> TiposControle { get; set; }
|
public List<OperacaoControleTipoModel> TiposControle { get; set; }
|
||||||
public PIDModel PIDdirecional { get; set; } = new PIDModel();
|
public PIDModel PIDdirecional { get; set; } = new PIDModel();
|
||||||
|
public bool PulverizadorAutomatico { get; set; } = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class OperacaoControleTipoModel
|
public class OperacaoControleTipoModel
|
||||||
|
|
@ -3022,6 +3004,7 @@ namespace AgroBase.Models
|
||||||
public (bool, List<string>) MovDir_Status { get; set; }
|
public (bool, List<string>) MovDir_Status { get; set; }
|
||||||
public (bool, List<string>) Dir_Status { get; set; }
|
public (bool, List<string>) Dir_Status { get; set; }
|
||||||
public double PercentualErvasTerreno { get; set; }
|
public double PercentualErvasTerreno { get; set; }
|
||||||
|
public OperacaoControleModel Controle { get; set; }
|
||||||
|
|
||||||
public void ReiniciarLeituras()
|
public void ReiniciarLeituras()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -183,7 +183,6 @@ namespace AgroBase.Services
|
||||||
private static readonly object FilaLock = new object();
|
private static readonly object FilaLock = new object();
|
||||||
|
|
||||||
private static AsyncTaskTimerModel tmrLoopComandos;
|
private static AsyncTaskTimerModel tmrLoopComandos;
|
||||||
private static AsyncTaskTimerModel tmrReceberDados;
|
|
||||||
|
|
||||||
private static bool EnvioLiberado { get; set; } = true;
|
private static bool EnvioLiberado { get; set; } = true;
|
||||||
|
|
||||||
|
|
@ -193,15 +192,11 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
tmrLoopComandos = new AsyncTaskTimerModel("tmrLoopComandos", tmrLoopComandos_Tick, 100);
|
tmrLoopComandos = new AsyncTaskTimerModel("tmrLoopComandos", tmrLoopComandos_Tick, 100);
|
||||||
tmrLoopComandos.Start();
|
tmrLoopComandos.Start();
|
||||||
|
|
||||||
tmrReceberDados = new AsyncTaskTimerModel("tmrReceberDados", tmrReceberDados_Tick, TaxaAmostragem);
|
|
||||||
tmrReceberDados.Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void PararRotinas()
|
public static void PararRotinas()
|
||||||
{
|
{
|
||||||
tmrLoopComandos?.Dispose();
|
tmrLoopComandos?.Dispose();
|
||||||
tmrReceberDados?.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -249,7 +244,7 @@ namespace AgroBase.Services
|
||||||
byte Addr = 0;
|
byte Addr = 0;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Addr = Convert.ToByte(Modulo.MovMotor.Endereco, 16);
|
Addr = Modulo.MovMotor.EnderecoByte;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
@ -363,7 +358,7 @@ namespace AgroBase.Services
|
||||||
foreach (var Mod_ID in Mod_IDs)
|
foreach (var Mod_ID in Mod_IDs)
|
||||||
{
|
{
|
||||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == Mod_ID);
|
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == Mod_ID);
|
||||||
byte Addr = Convert.ToByte(Modulo.MovMotor.Endereco.Replace("0x", ""), 16);
|
byte Addr = Modulo.MovMotor.EnderecoByte;
|
||||||
|
|
||||||
if (DadosLeitura.Any(x => x.Endereco == Addr && !x.Configurado))
|
if (DadosLeitura.Any(x => x.Endereco == Addr && !x.Configurado))
|
||||||
{
|
{
|
||||||
|
|
@ -387,7 +382,7 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
private static void ConfigurarDriver(byte Addr)
|
private static void ConfigurarDriver(byte Addr)
|
||||||
{
|
{
|
||||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => Convert.ToByte(x.MovMotor.Endereco.Replace("0x", ""), 16) == Addr);
|
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.MovMotor.EnderecoByte == Addr);
|
||||||
AdicionarComandoNaFila(new BLDComandoModel()
|
AdicionarComandoNaFila(new BLDComandoModel()
|
||||||
{
|
{
|
||||||
Endereco = Addr,
|
Endereco = Addr,
|
||||||
|
|
@ -519,7 +514,7 @@ namespace AgroBase.Services
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void RegisrarErrosComunicacao(byte addr, string mensagem)
|
public static void RegisrarErrosComunicacao(byte addr, string mensagem)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -549,79 +544,6 @@ namespace AgroBase.Services
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async Task tmrReceberDados_Tick()
|
|
||||||
{
|
|
||||||
if (!Iniciado && SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Bld))
|
|
||||||
{
|
|
||||||
foreach (var Leitura in DadosLeitura.Where(x => x.UltimoComandoRecebido.AddSeconds(10) < DateTime.Now))
|
|
||||||
{
|
|
||||||
AdicionarComandoNaFila(new BLDComandoModel()
|
|
||||||
{
|
|
||||||
Endereco = Leitura.Endereco,
|
|
||||||
Parametro = Parametros.First(x => x.Chave == "Versao"),
|
|
||||||
Get = true,
|
|
||||||
AguardaResposta = true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
TaxaAmostragem = 3000;
|
|
||||||
|
|
||||||
tmrReceberDados.SetInterval(TaxaAmostragem);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var Leitura in DadosLeitura.Where(x => x.Iniciado).OrderBy(x => x.Endereco))
|
|
||||||
{
|
|
||||||
foreach (var Parametro in Parametros.Where(x => x.LeituraLoop))
|
|
||||||
{
|
|
||||||
var Comando = new BLDComandoModel()
|
|
||||||
{
|
|
||||||
Endereco = Leitura.Endereco,
|
|
||||||
AguardaResposta = true,
|
|
||||||
Parametro = Parametro,
|
|
||||||
Get = true,
|
|
||||||
TimeoutResposta = 500
|
|
||||||
};
|
|
||||||
AdicionarComandoNaFila(Comando);
|
|
||||||
}
|
|
||||||
|
|
||||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => Convert.ToByte(x.MovMotor.Endereco.Replace("0x", ""), 16) == Leitura.Endereco);
|
|
||||||
if (Modulo != null)
|
|
||||||
{
|
|
||||||
//Modulo.MovMotor.RPM_Motor = Leitura.RPM;
|
|
||||||
Modulo.MovMotor.RPM_Roda = Leitura.RPM * Modulo.MovMotor.OffsetLeitura;
|
|
||||||
Modulo.MovMotor.TemperaturaDriver = Math.Round(Leitura.Temperatura, 2);
|
|
||||||
Modulo.MovMotor.Corrente_Max = Math.Round(Leitura.CorrenteMax, 2);
|
|
||||||
Modulo.MovMotor.Tensao = Math.Round(Leitura.Tensao, 2);
|
|
||||||
Modulo.MovMotor.Ligado = Leitura.Ativado;
|
|
||||||
Modulo.MovMotor.ConfigFreio.Leitura = Leitura.Freado;
|
|
||||||
Modulo.MovMotor.Sentido = Leitura.Direcao;
|
|
||||||
Modulo.MovMotor.CodigoAlarme = Leitura.CodigoAlarme;
|
|
||||||
|
|
||||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.RegistrarLogMov(Modulo);
|
|
||||||
|
|
||||||
// Tenta reiniciar o alarme dos modulos se a operacao nao estiver liberada
|
|
||||||
if (Modulo.MovMotor.CodigoAlarme > 0 && Modulo.MovMotor.CodigoAlarme <= 99 && !Variaveis.OperacaoEmAndamento.OperacaoLiberada)
|
|
||||||
{
|
|
||||||
RegisrarErrosComunicacao(Leitura.Endereco, $"Módulo com código de alarme {Modulo.MovMotor.CodigoAlarme}, reiniciando o módulo...");
|
|
||||||
AdicionarComandoNaFila(new BLDComandoModel()
|
|
||||||
{
|
|
||||||
Endereco = Leitura.Endereco,
|
|
||||||
AguardaResposta = true,
|
|
||||||
TimeoutResposta = 200,
|
|
||||||
Get = false,
|
|
||||||
Parametro = Parametros.First(x => x.Chave == "AlarmeCode"),
|
|
||||||
Valor = 0
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var Controle = Variaveis.OperacaoEmAndamento.Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Mov);
|
|
||||||
Modulo.MovMotor.ProtocoloComando(Controle.UltimaDirecao);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static async Task tmrLoopComandos_Tick()
|
private static async Task tmrLoopComandos_Tick()
|
||||||
{
|
{
|
||||||
if (!EnvioLiberado)
|
if (!EnvioLiberado)
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ namespace AgroBase.Services
|
||||||
}
|
}
|
||||||
public static int TaxaAmostragem { get; set; } = 1000;
|
public static int TaxaAmostragem { get; set; } = 1000;
|
||||||
private static AsyncTaskTimerModel tmrLoopComandos;
|
private static AsyncTaskTimerModel tmrLoopComandos;
|
||||||
private static AsyncTaskTimerModel tmrReceberDados;
|
|
||||||
private static List<MKS057ComandoModel> FilaComandos = new List<MKS057ComandoModel>();
|
private static List<MKS057ComandoModel> FilaComandos = new List<MKS057ComandoModel>();
|
||||||
private static readonly object FilaLock = new object();
|
private static readonly object FilaLock = new object();
|
||||||
private static bool EnvioLiberado { get; set; } = true;
|
private static bool EnvioLiberado { get; set; } = true;
|
||||||
|
|
@ -46,15 +45,11 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
tmrLoopComandos = new AsyncTaskTimerModel("tmrLoopComandos", tmrLoopComandos_Tick, 100);
|
tmrLoopComandos = new AsyncTaskTimerModel("tmrLoopComandos", tmrLoopComandos_Tick, 100);
|
||||||
tmrLoopComandos.Start();
|
tmrLoopComandos.Start();
|
||||||
|
|
||||||
tmrReceberDados = new AsyncTaskTimerModel("tmrReceberDados", tmrReceberDados_Tick, TaxaAmostragem);
|
|
||||||
tmrReceberDados.Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void PararRotinas()
|
public static void PararRotinas()
|
||||||
{
|
{
|
||||||
tmrLoopComandos?.Dispose();
|
tmrLoopComandos?.Dispose();
|
||||||
tmrReceberDados?.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inicializa o serviço Ethernet com IP e porta específicos
|
// Inicializa o serviço Ethernet com IP e porta específicos
|
||||||
|
|
@ -97,7 +92,7 @@ namespace AgroBase.Services
|
||||||
// Verifica e inicializa cada módulo conectado
|
// Verifica e inicializa cada módulo conectado
|
||||||
foreach (var Modulo in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Where(x => !x.DirMotor.MKS_Inicializado))
|
foreach (var Modulo in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Where(x => !x.DirMotor.MKS_Inicializado))
|
||||||
{
|
{
|
||||||
byte Addr = Convert.ToByte(Modulo.DirMotor.Endereco, 16);
|
byte Addr = Modulo.DirMotor.EnderecoByte;
|
||||||
DataSended = Convert.ToByte("43");
|
DataSended = Convert.ToByte("43");
|
||||||
|
|
||||||
// Envia comando relevante para verificar o dispositivo
|
// Envia comando relevante para verificar o dispositivo
|
||||||
|
|
@ -171,7 +166,7 @@ namespace AgroBase.Services
|
||||||
foreach (var Mod_ID in Mod_IDs)
|
foreach (var Mod_ID in Mod_IDs)
|
||||||
{
|
{
|
||||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == Mod_ID);
|
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == Mod_ID);
|
||||||
byte Addr = Convert.ToByte(Modulo.DirMotor.Endereco.Replace("0x", ""), 16);
|
byte Addr = Modulo.DirMotor.EnderecoByte;
|
||||||
|
|
||||||
if (!SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Mks && x.Mod_ID == Mod_ID))
|
if (!SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Mks && x.Mod_ID == Mod_ID))
|
||||||
{
|
{
|
||||||
|
|
@ -193,38 +188,10 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
private static bool EnderecoValido(byte addr)
|
private static bool EnderecoValido(byte addr)
|
||||||
{
|
{
|
||||||
return Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Any(x => Convert.ToByte(x.DirMotor.Endereco.Replace("0x", ""), 16) == addr);
|
return Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Any(x => x.DirMotor.EnderecoByte == addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static async Task tmrReceberDados_Tick()
|
|
||||||
{
|
|
||||||
if (!Iniciado && SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Mks))
|
|
||||||
{
|
|
||||||
foreach (var Leitura in DadosLeitura.Where(x => x.UltimoComandoRecebido.AddSeconds(10) < DateTime.Now))
|
|
||||||
{
|
|
||||||
AdicionarComandoNaFila(MontarComandoRequisicaoPulsos(Leitura.Endereco));
|
|
||||||
}
|
|
||||||
|
|
||||||
TaxaAmostragem = 3000;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
TaxaAmostragem = 1000;
|
|
||||||
|
|
||||||
if (Variaveis.OperacaoEmAndamento.DispMvd != null)
|
|
||||||
{
|
|
||||||
foreach (var Modulo in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Where(x => x.DirMotor.MKS_Inicializado))
|
|
||||||
{
|
|
||||||
AdicionarComandoNaFila(MontarComandoRequisicaoPulsos(Convert.ToByte(Modulo.DirMotor.Endereco, 16)));
|
|
||||||
AdicionarComandoNaFila(MontarComandoRequisicaoIO(Convert.ToByte(Modulo.DirMotor.Endereco, 16)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void AdicionarComandoNaFila(MKS057ComandoModel Comando)
|
public static void AdicionarComandoNaFila(MKS057ComandoModel Comando)
|
||||||
{
|
{
|
||||||
if (!EnderecoValido(Comando.Endereco))
|
if (!EnderecoValido(Comando.Endereco))
|
||||||
|
|
@ -584,47 +551,17 @@ namespace AgroBase.Services
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void AdicionaComandosGoHomeFila(byte Endereco)
|
|
||||||
{
|
|
||||||
// Configura o GoHome
|
|
||||||
AdicionarComandoNaFila(new MKS057ComandoModel()
|
|
||||||
{
|
|
||||||
Get = false,
|
|
||||||
Comando = Convert.ToByte("46"),
|
|
||||||
Endereco = Endereco,
|
|
||||||
Angulo = 0,
|
|
||||||
Velocidade = 1, // 0 ~ 4
|
|
||||||
_Sentido = Sentido.Horario,
|
|
||||||
ModoControle = ModosControle.AnguloAbsoluto,
|
|
||||||
AguardaResposta = false,
|
|
||||||
});
|
|
||||||
// Inicia o GoHome
|
|
||||||
AdicionarComandoNaFila(new MKS057ComandoModel()
|
|
||||||
{
|
|
||||||
Get = false,
|
|
||||||
Comando = Convert.ToByte("32"),
|
|
||||||
Endereco = Endereco,
|
|
||||||
Angulo = 0,
|
|
||||||
Velocidade = 1,
|
|
||||||
_Sentido = Sentido.Horario,
|
|
||||||
ModoControle = ModosControle.AnguloAbsoluto,
|
|
||||||
AguardaResposta = false,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static void DefinirDadosModulo(MKS057DModel leitura)
|
private static void DefinirDadosModulo(MKS057DModel leitura)
|
||||||
{
|
{
|
||||||
if (Variaveis.OperacaoEmAndamento.DispMvd != null)
|
/*if (Variaveis.OperacaoEmAndamento.DispMvd != null)
|
||||||
{
|
{
|
||||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => Convert.ToByte(x.DirMotor.Endereco, 16) == leitura.Endereco);
|
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.DirMotor.EnderecoByte == leitura.Endereco);
|
||||||
if (Modulo != null)
|
if (Modulo != null)
|
||||||
{
|
{
|
||||||
Modulo.DirMotor.Angulo = PulsosParaAngulo(leitura.NumeroPulsos);
|
Modulo.DirMotor.Angulo = PulsosParaAngulo(leitura.NumeroPulsos);
|
||||||
Modulo.DirMotor.Sentido = leitura.Direcao;
|
Modulo.DirMotor.Sentido = leitura.Direcao;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -94023,3 +94023,161 @@ Parameter name: values
|
||||||
02/12/2024 15:38:26:833 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
02/12/2024 15:38:26:833 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
02/12/2024 15:38:26:865 - Endereço 1 (192.168.105.10): Resposta inválida. 10
|
02/12/2024 15:38:26:865 - Endereço 1 (192.168.105.10): Resposta inválida. 10
|
||||||
02/12/2024 15:38:26:865 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
02/12/2024 15:38:26:865 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:35:881 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:36:100 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:36:315 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:36:519 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:36:722 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:36:939 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:37:141 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:37:343 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:37:552 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:37:765 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:37:982 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:38:183 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:38:387 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:38:591 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:38:794 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:38:998 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:39:200 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:39:417 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:39:623 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:39:826 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:40:345 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:07:40:858 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:07:41:062 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:41:264 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:41:466 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:41:682 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:41:884 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:42:086 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:42:304 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:42:507 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:42:711 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:42:916 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:43:120 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:43:324 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:43:527 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:43:744 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:43:963 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:44:181 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:44:386 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:44:603 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:44:806 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:45:009 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:45:525 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:07:46:028 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:07:46:232 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:46:447 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:46:650 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:46:854 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:47:071 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:47:275 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:47:478 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:47:681 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:47:886 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:48:091 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:48:294 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:48:495 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:48:697 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:48:900 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:49:104 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:49:321 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:49:524 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:49:726 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:49:931 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:50:148 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:50:664 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:07:51:182 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:07:51:400 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:51:603 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:51:805 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:52:010 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:52:214 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:52:417 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:52:620 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:52:823 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:53:025 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:53:227 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:53:432 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:53:636 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:53:838 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:54:054 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:54:258 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:54:462 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:54:663 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:54:867 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:55:070 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:55:274 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:55:789 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:07:56:307 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:07:56:509 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:56:711 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:56:915 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:57:131 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:57:349 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:57:554 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:57:760 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:57:965 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:58:170 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:58:372 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:58:575 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:07:58:794 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:07:58:996 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:07:59:201 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:07:59:417 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:07:59:635 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:07:59:839 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:08:00:043 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:08:00:248 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:00:466 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:00:984 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:08:01:500 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:08:01:705 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:01:910 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:02:112 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:08:02:316 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:08:02:533 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:08:02:739 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:08:02:955 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:03:158 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:03:359 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:08:03:576 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:08:03:782 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:08:03:985 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:08:04:189 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:04:394 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:04:598 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:08:04:820 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:08:05:024 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:08:05:242 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:08:05:476 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:05:696 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:06:213 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:08:06:729 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:08:06:946 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:07:151 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:07:368 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:08:07:572 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:08:07:778 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:08:07:991 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:08:08:210 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:08:415 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:08:620 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:08:08:836 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:08:09:039 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:08:09:241 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:08:09:445 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:09:646 - Endereço 2 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:09:848 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
03/12/2024 17:08:10:053 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=AlarmeCode, Valor=0
|
||||||
|
03/12/2024 17:08:10:256 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=NumPolos, Valor=10
|
||||||
|
03/12/2024 17:08:10:460 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=RPM_Max, Valor=500
|
||||||
|
03/12/2024 17:08:10:664 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:10:868 - Endereço 4 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:11:369 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:08:11:885 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Direction, Valor=1
|
||||||
|
03/12/2024 17:08:12:091 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Rampa, Valor=0
|
||||||
|
03/12/2024 17:08:12:309 - Endereço 1 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=Enabled, Valor=0
|
||||||
|
03/12/2024 17:08:12:336 - Endereço 3 (192.168.105.10): Resposta inválida. 0E
|
||||||
|
03/12/2024 17:08:12:336 - Endereço 3 (192.168.105.10): Timeout ou erro ao receber resposta. GET=False, Parametro=ControleRS485, Valor=1
|
||||||
|
|
|
||||||
|
|
@ -8927,3 +8927,63 @@ Parameter name: source
|
||||||
02/12/2024 15:26:42:706 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Index was outside the bounds of the array.
|
02/12/2024 15:26:42:706 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Index was outside the bounds of the array.
|
||||||
02/12/2024 15:28:52:959 - Endereço 252 (192.168.105.11): Dados recebidos de um endereço inválido: [251 252]
|
02/12/2024 15:28:52:959 - Endereço 252 (192.168.105.11): Dados recebidos de um endereço inválido: [251 252]
|
||||||
02/12/2024 15:32:30:636 - Endereço 191 (192.168.105.11): Dados recebidos de um endereço inválido: [251 191 179 159 247 1 48]
|
02/12/2024 15:32:30:636 - Endereço 191 (192.168.105.11): Dados recebidos de um endereço inválido: [251 191 179 159 247 1 48]
|
||||||
|
03/12/2024 17:07:30:345 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:30:346 - Endereço 1 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:408 - Endereço 1 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:422 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:30:424 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:438 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:30:438 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:503 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:514 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:30:515 - Endereço 2 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:526 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:30:526 - Endereço 2 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:583 - Endereço 2 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:594 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:30:594 - Endereço 4 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:607 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:30:607 - Endereço 4 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:660 - Endereço 4 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
|
||||||
|
03/12/2024 17:07:30:682 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:39:044 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:40:047 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:41:124 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:42:304 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:43:308 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:44:386 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:45:399 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:46:478 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:47:493 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:48:495 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:49:570 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:50:758 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:51:774 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:52:853 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:53:870 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:54:944 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:55:948 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:56:961 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:07:58:029 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:07:59:201 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:08:00:217 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:08:01:282 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:08:02:286 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:08:03:360 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:08:04:378 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:08:05:383 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:08:06:447 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:08:07:633 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:08:08:650 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:08:09:725 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:08:10:744 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:08:11:807 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:08:12:838 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:08:13:853 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
|
||||||
|
03/12/2024 17:08:14:918 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:08:16:099 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
|
||||||
|
03/12/2024 17:08:16:726 - Endereço 251 (192.168.105.11): Dados recebidos de um endereço inválido: [65 251 2 51 0 0 0 0]
|
||||||
|
03/12/2024 17:09:35:953 - Endereço 195 (192.168.105.11): Dados recebidos de um endereço inválido: [251 195]
|
||||||
|
03/12/2024 17:12:39:312 - Endereço 209 (192.168.105.11): Dados recebidos de um endereço inválido: [251 209 4 245 2 246 244 254]
|
||||||
|
03/12/2024 17:13:45:089 - Endereço 245 (192.168.105.11): Dados recebidos de um endereço inválido: [3 245 2 245]
|
||||||
|
03/12/2024 17:15:04:958 - Endereço 159 (192.168.105.11): Dados recebidos de um endereço inválido: [160 159 245]
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"tmrRegistrador":{"State":2,"IsRunning":false,"IsStopped":true,"IsCreated":false,"Interval":1000,"StackTrace":"AtuadorModel.IniciarRegistrador","Id":"tmrRegistrador_Atu","TimeTick":"00:00:00"},"Modulo_ID":"Atu","IP":"192.168.100.13","RequisitarDados":true,"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"AtuacaoNivelAlto":true,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Componente":422,"AtuacaoNivelAlto":false,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B02","Posicao":2,"Componente":422,"AtuacaoNivelAlto":false,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B03","Posicao":3,"Componente":422,"AtuacaoNivelAlto":false,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B04","Posicao":4,"Componente":422,"AtuacaoNivelAlto":false,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0}],"BombasPressurizadoras":[{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"Potencia":0.0,"Leitura":null,"Inicializado":false}],"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","LimiteMaximo":120.0,"LimiteMinimo":60.0}],"BombaPressurizadora":{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"Potencia":0.0,"Leitura":null,"Inicializado":false},"ScriptDeteccaoErvas":"weed_detector-1_0.py","DadosLeitura":{"Conectado":false,"Mod_ID":null,"Momento":"0001-01-01T00:00:00","BicosPulverizadores":[],"BombasPressurizadoras":[],"SensoresFluxo":[],"SensoresMassa":[],"SensoresPressao":[]},"_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"MassaReservatorio":0.0,"VolumeReservatorio":0.0,"PercentualReservatorio":0.0,"VolumeVazaoAferido":0.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"VazaoFluxoMLpS":0.0,"VolumeVazaoML":0.0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"PressaoLinha":0.0,"PressaoLinhaCalc":0.0}
|
{"tmrRegistrador":{"State":2,"IsRunning":false,"IsStopped":true,"IsCreated":false,"Interval":1000,"StackTrace":"AtuadorModel.IniciarRegistrador","Id":"tmrRegistrador_Atu","TimeTick":"00:00:00"},"Modulo_ID":"Atu","IP":"192.168.100.13","RequisitarDados":true,"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B02","Posicao":2,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B03","Posicao":3,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B04","Posicao":4,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0}],"BombasPressurizadoras":[{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false}],"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","LimiteMaximo":120.0,"LimiteMinimo":60.0}],"BombaPressurizadora":{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false},"ScriptDeteccaoErvas":"weed_detector-1_0.py","DadosLeitura":{"Conectado":false,"Mod_ID":null,"Momento":"0001-01-01T00:00:00","BicosPulverizadores":[],"BombasPressurizadoras":[],"SensoresFluxo":[],"SensoresMassa":[],"SensoresPressao":[]},"_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"MassaReservatorio":0.0,"VolumeReservatorio":0.0,"PercentualReservatorio":0.0,"VolumeVazaoAferido":0.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"VazaoFluxoMLpS":0.0,"VolumeVazaoML":0.0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"PressaoLinha":0.0,"PressaoLinhaCalc":0.0}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -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_c0a5b8b94387d9cfe32ff1a870dcfc93 {
|
#map_25eea00ac1923151642c61c60e0aa577 {
|
||||||
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_c0a5b8b94387d9cfe32ff1a870dcfc93" ></div>
|
<div class="folium-map" id="map_25eea00ac1923151642c61c60e0aa577" ></div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
|
||||||
var map_c0a5b8b94387d9cfe32ff1a870dcfc93 = L.map(
|
var map_25eea00ac1923151642c61c60e0aa577 = L.map(
|
||||||
"map_c0a5b8b94387d9cfe32ff1a870dcfc93",
|
"map_25eea00ac1923151642c61c60e0aa577",
|
||||||
{
|
{
|
||||||
center: [0.0, 0.0],
|
center: [0.0, 0.0],
|
||||||
crs: L.CRS.EPSG3857,
|
crs: L.CRS.EPSG3857,
|
||||||
|
|
@ -59,15 +59,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var tile_layer_25d47e42b5225c1d55453f85875cf674 = L.tileLayer(
|
|
||||||
"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}
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
tile_layer_25d47e42b5225c1d55453f85875cf674.addTo(map_c0a5b8b94387d9cfe32ff1a870dcfc93);
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -87,7 +78,7 @@
|
||||||
}
|
}
|
||||||
trajeto_json_add({"features": []});
|
trajeto_json_add({"features": []});
|
||||||
|
|
||||||
trajeto_json.addTo(map_c0a5b8b94387d9cfe32ff1a870dcfc93);
|
trajeto_json.addTo(map_25eea00ac1923151642c61c60e0aa577);
|
||||||
|
|
||||||
function adicionarGeometria(novaGeometria) {
|
function adicionarGeometria(novaGeometria) {
|
||||||
trajeto_json.addData(novaGeometria);
|
trajeto_json.addData(novaGeometria);
|
||||||
|
|
@ -145,7 +136,7 @@
|
||||||
|
|
||||||
var marcadorDinamico = L.marker([0, 0], {
|
var marcadorDinamico = L.marker([0, 0], {
|
||||||
icon: customIcon
|
icon: customIcon
|
||||||
}).addTo(map_c0a5b8b94387d9cfe32ff1a870dcfc93);
|
}).addTo(map_25eea00ac1923151642c61c60e0aa577);
|
||||||
|
|
||||||
// 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 +174,7 @@
|
||||||
marcadorDinamico.setRotationAngle(angulo);
|
marcadorDinamico.setRotationAngle(angulo);
|
||||||
|
|
||||||
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
||||||
map_c0a5b8b94387d9cfe32ff1a870dcfc93.setView(novaPosicao, map_c0a5b8b94387d9cfe32ff1a870dcfc93.getZoom());
|
map_25eea00ac1923151642c61c60e0aa577.setView(novaPosicao, map_25eea00ac1923151642c61c60e0aa577.getZoom());
|
||||||
});
|
});
|
||||||
|
|
||||||
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
|
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
|
@ -170,6 +170,8 @@ String MontarMensagemSensores() {
|
||||||
sensorData["Iniciado"] = sensor->Iniciado;
|
sensorData["Iniciado"] = sensor->Iniciado;
|
||||||
sensorData["Estado"] = sensor->EstadoLeitura;
|
sensorData["Estado"] = sensor->EstadoLeitura;
|
||||||
sensorData["Potencia"] = sensor->PercentualPotenciaLeitura;
|
sensorData["Potencia"] = sensor->PercentualPotenciaLeitura;
|
||||||
|
sensorData["PressaoSP"] = sensor->_PressaoSP;
|
||||||
|
sensorData["Pressao"] = sensor->sensorPressao->Pressao;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Array JSON para sensores de fluxo
|
// Array JSON para sensores de fluxo
|
||||||
|
|
|
||||||
|
|
@ -177,6 +177,7 @@ String MontarMensagemSensores() {
|
||||||
sensorData["Id"] = sensor->_ID;
|
sensorData["Id"] = sensor->_ID;
|
||||||
sensorData["Iniciado"] = sensor->Iniciado;
|
sensorData["Iniciado"] = sensor->Iniciado;
|
||||||
sensorData["Leitura"] = sensor->_StatusLeitura;
|
sensorData["Leitura"] = sensor->_StatusLeitura;
|
||||||
|
sensorData["Comando"] = sensor->_Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Array JSON para reles
|
// Array JSON para reles
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue