Files
Mapo-IOB-WIN/IOB-WIN-MBUS/IobModbustTCP/ModbusTCPFrer.cs
T
Samuele Locatelli 38baf71728 ModBUS:
- aggiunta gestione FRER
- test in Jetco primo device
2025-05-22 14:20:09 +02:00

95 lines
2.9 KiB
C#

using IOB_UT_NEXT;
using IOB_UT_NEXT.Config;
using System;
using System.Globalization;
using System.IO;
namespace IOB_WIN_MBUS.IobModbusTCP
{
/* --------------------------------------------------------------------------------
* Controlli ModBusTCP FRER per controllo potenza
* - protocollo ModBus TCP
* - gestione letture via Modbus
* - dati INT (x 1000) oppure real
* - gestione set esteso (65k)
*
* G:\Drive condivisi\30_Clienti\Jetco\Manuali Frer Energy Monitor
*
* -------------------------------------------------------------------------------- */
public class ModbusTCPFrer : ModbusTCP
{
#region Public Constructors
/// <summary>
/// Classe base con i metodi x ModBusTCP
/// </summary>
/// <param name="caller">Form chiamante</param>
/// <param name="IOBConf">Configurazione (legacy)</param>
/// <param name="IobConfFull">Configurazione (v 4.x)</param>
public ModbusTCPFrer(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init IOB ModbusTCPFrer");
setupSpecialParams();
// provo lettura una prima volta i dati DYN
if (currPLC != null && currPLC.Connected)
{
try
{
processDynData();
if (EnableTest)
{
testReadExt();
}
}
catch (Exception exc)
{
lgError($"Eccezione in processDynData iniziale x ModbusTCPFrer:{Environment.NewLine}{exc}");
}
}
}
#endregion Public Constructors
#region Protected Methods
/// <summary>
/// Effettua lettura semafori principale <paramref name="currDispData">Parametri da
/// aggiornare x display in form</paramref>
/// </summary>
public override void readSemafori(ref newDisplayData currDispData)
{
/* -----------------------------------------------------
* bitmap MAPO STANDARD 60
* B0: POWER_ON
* B1: RUN
* B2: pzCount
* B3: allarme
* B4: manuale
* B5: slowTC
* B6: WarmUpCoolDown
* B7: EmergArmata
*
----------------------------------------------------- */
DateTime adesso = DateTime.Now;
// se ha risposto ad ultima chiamata --> ok
if (connectionOk && adesso.Subtract(lastReadPLC).TotalMinutes < 1)
{
B_input = 3;
// aggiungo NON emergenza...
B_input += (1 << 7);
}
else
{
B_input = 0;
}
lastReadPLC = DateTime.Now;
lastWatchDog = adesso;
}
#endregion Protected Methods
}
}