using IOB_UT_NEXT; using IOB_UT_NEXT.Config; using IOB_UT_NEXT.Objects; 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 /// /// Classe base con i metodi x ModBusTCP /// /// Form chiamante /// Configurazione (legacy) /// Configurazione (v 4.x) 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 /// /// Effettua lettura semafori principale Parametri da /// aggiornare x display in form /// 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(DtHelp.lastReadPLC).TotalMinutes < 1) { B_input = 3; // aggiungo NON emergenza... B_input += (1 << 7); } else { B_input = 0; } DtHelp.lastReadPLC = DateTime.Now; DtHelp.lastWatchDog = adesso; } #endregion Protected Methods } }