38baf71728
- aggiunta gestione FRER - test in Jetco primo device
95 lines
2.9 KiB
C#
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
|
|
}
|
|
} |