diff --git a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj index d2353efd..3b777385 100644 --- a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj +++ b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj @@ -399,6 +399,8 @@ VersGen.cs + + diff --git a/IOB-WIN-NEXT/Iob/BaseObj.cs b/IOB-WIN-NEXT/Iob/BaseObj.cs new file mode 100644 index 00000000..9d4fa326 --- /dev/null +++ b/IOB-WIN-NEXT/Iob/BaseObj.cs @@ -0,0 +1,286 @@ +using IOB_UT_NEXT; +using System; +using System.Collections.Generic; +using System.Diagnostics; + +namespace IOB_WIN_NEXT.Iob +{ + /// + /// Classe di base per IOB + /// + public class BaseObj + { + #region Public Fields + + /// + /// valore booleano di check se sia stato AVVIATO l'adapter (Running) + /// + public bool adpRunning = false; + + /// + /// valore booleano di check se l'adapter STIA SALVANDO + /// + public bool adpSaving = false; + + /// + /// valore booleano (richiesta di riavvio automatico) + /// + public bool adpTryRestart; + + /// + /// Struttura allarmi mappati + /// + public List alarmMaps = new List(); + + /// + /// Conf adapter corrente + /// + public IobConfiguration cIobConf; + + /// + /// Conteggio ATTUALE ore macchina IN LAVORO + /// + public double contOreMaccLav; + + /// + /// Conteggio ATTUALE ore macchina ON + /// + public double contOreMaccOn; + + /// + /// contatore x simulazione valori input + /// + public int countSim = 0; + + /// + /// ODL attualmente sulla macchina + /// + public Int32 currIdxODL = 0; + + /// + /// Modo corrente (da classe ENUM) + /// + public CNC_MODE currMode; + + /// + /// ODL corrente caricato sulla macchina (stringa, da chiamata MP/IO) + /// + public string currODL = ""; + + /// + /// Indica se sia richiesto campionamento memoria PERIODICO + /// + public bool doSampleMemory; + + /// + /// Indica se si debba leggere e fare DUMP delle aree di memoria (1 volta solo all'avvio x debug...) + /// + public bool doStartMemDump; + + /// + /// Data/ora ultimo avvio adapter + /// + public DateTime dtAvvioAdp = DateTime.Now; + + /// + /// Data/ora ultimo spegnimento adapter + /// + public DateTime dtStopAdp = DateTime.Now; + + /// + /// Indicazione VETO check status IOB x evitare loop troppo stretti... + /// + public DateTime dtVetoCheckIOB = DateTime.Now.AddDays(-1); + + /// + /// Indicazione VETO check sync ricette x evitare loop troppo stretti... + /// + public DateTime dtVetoCheckSyncRecipe = DateTime.Now.AddHours(-1); + + /// + /// Abilitazione lettura PrgName + /// + public bool enablePrgName = true; + + /// + /// Abilitazione invio pezzi "in blocco" per recupero contapezzi + /// + public bool enableSendPzCountBlock = false; + + /// + /// Determina se sia encessario convertire valori little/big endian (SIEMENS=true, OSAI=FALSE) + /// + public bool hasBigEndian = false; + + /// + /// dataOra ultima verifica CNC disconnesso... + /// + public DateTime lastDisconnCheck; + + /// + /// Data/ora ultima volta che IOB è stato dichiarato online + /// + public DateTime lastIobOnline = DateTime.Now.AddHours(-1); + + /// + /// dataOra ultimo log periodico... + /// + public DateTime lastPeriodicLog; + + /// + /// dataOra ultimo PING inviato verso il PLC... + /// + public DateTime lastPING = DateTime.Now.AddHours(-1); + + /// + /// DataOra ultima lettura da PLC + /// + public DateTime lastReadPLC; + + /// + /// ULtimo valore inviato (in caso di disconnessione lo reinvia x garantire watchdog...) + /// + public string lastSignInVal = ""; + + /// + /// DateTime Ultimo valore simulazione generato + /// + public DateTime lastSim; + + /// + /// dataOra ultimo segnale inviato al SERVER... + /// + public DateTime lastWatchDog; + + /// + /// dataOra ultimo segnale inviato a macchina/PLC... + /// + public DateTime lastWatchDogPLC = DateTime.Now; + + /// + /// Massimo numero di px da inviare in blocco + /// + public int maxSendPzCountBlock = 10; + + /// + /// Struttura memoria PLC x lettura/scrittura da JSON file + /// + public plcMemMapExt memMap; + + /// + /// Minimo numero di px da inviare in blocco + /// + public int minSendPzCountBlock = 5; + + /// + /// Variabile booleana che indica se sia necessario fare refresh del contapezzi + /// + public bool needRefreshPzCount = true; + + /// + /// Dizionario di persistenza per i valori da salvare da/su file + /// + public Dictionary persistenceLayer; + + /// + /// Determina se utilizzare blocchi di memoria IOT contigui (e quindi processing + /// "monoblocco" semplificato"= + /// + public bool procIotMem = false; + + /// + /// Coda valori ALLARMI ove gestiti... + /// + public DataQueue QueueAlarm = new DataQueue("000", "QueueAlarm", false); + + //public ConcurrentQueue QueueAlarm = new ConcurrentQueue(); + + /// + /// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi) + /// + public DataQueue QueueFLog = new DataQueue("000", "QueueFLog", false); + + //public ConcurrentQueue QueueFLog = new ConcurrentQueue(); + + /// + /// Oggetto della coda degli elementi letti (e non ancora trasmessi) + /// + public DataQueue QueueIN = new DataQueue("000", "QueueIN", false); + + //public ConcurrentQueue QueueIN = new ConcurrentQueue(); + + /// + /// Coda valori MESSAGGI/EVENTI (da non sottocampionare come samples)... + /// + public DataQueue QueueMessages = new DataQueue("000", "QueueMessages", false); + + //public ConcurrentQueue QueueMessages = new ConcurrentQueue(); + + /// + /// Oggetto della coda degli elementi di tipo RawTransf (e non ancora trasmessi) + /// NB: sono salvati serializzati come stringhe + /// + public DataQueue QueueRawTransf = new DataQueue("000", "QueueRawTransf", false); + + //public ConcurrentQueue QueueRawTransf = new ConcurrentQueue(); + + /// + /// Coda valori LOG UTENTE (da non sottocampionare come samples)... + /// + public DataQueue QueueULog = new DataQueue("000", "QueueULog", false); + + //public ConcurrentQueue QueueULog = new ConcurrentQueue(); + + /// + /// alias booleano false = R + /// + public bool R = false; + + /// + /// 32 byte input base (es strobe, 8 word da 32 bit di flags...) + /// + public byte[] RawInput = new byte[32]; + + /// + /// 32 byte output base (es ack, 8 word da 32 bit di flags...) + /// + public byte[] RawOutput = new byte[32]; + + /// + /// Oggetto connessione REDIS + /// + public RedisIobCache redisMan; + + /// + /// Oggetto cronometro x campionamento durate chiamate + /// + public Stopwatch stopwatch = new Stopwatch(); + + /// + /// Oggetto gestione TempiCiclo e contapezzi + /// + public TCMan tcMan = new TCMan(0.5, 1.3, 5); + + /// + /// Imposta veto lettura dati (es per DB a 2 sec) + /// + public DateTime vetoDataRead = DateTime.Now; + + /// + /// Imposta veto SYNC dati (es per DB 2 DB a 10 sec) + /// + public DateTime vetoDataSync = DateTime.Now; + + /// + /// Imposta veto chiamata split (durante chiamata, per 60 sec) + /// + public DateTime vetoSplit = DateTime.Now.AddMinutes(1); + + /// + /// alias booleano true = W + /// + public bool W = true; + + #endregion Public Fields + } +} \ No newline at end of file diff --git a/IOB-WIN-NEXT/Iob/Generic.cs b/IOB-WIN-NEXT/Iob/Generic.cs index 944e540e..8edea34d 100644 --- a/IOB-WIN-NEXT/Iob/Generic.cs +++ b/IOB-WIN-NEXT/Iob/Generic.cs @@ -27,273 +27,8 @@ using static MapoSDK.WharehouseData; namespace IOB_WIN_NEXT.Iob { - public class Generic + public class Generic :BaseObj { - #region Public Fields - - /// - /// valore booleano di check se sia stato AVVIATO l'adapter (Running) - /// - public bool adpRunning = false; - - /// - /// valore booleano di check se l'adapter STIA SALVANDO - /// - public bool adpSaving = false; - - /// - /// valore booleano (richiesta di riavvio automatico) - /// - public bool adpTryRestart; - - /// - /// Struttura allarmi mappati - /// - public List alarmMaps = new List(); - - /// - /// Conf adapter corrente - /// - public IobConfiguration cIobConf; - - /// - /// Conteggio ATTUALE ore macchina IN LAVORO - /// - public double contOreMaccLav; - - /// - /// Conteggio ATTUALE ore macchina ON - /// - public double contOreMaccOn; - - /// - /// contatore x simulazione valori input - /// - public int countSim = 0; - - /// - /// ODL attualmente sulla macchina - /// - public Int32 currIdxODL = 0; - - /// - /// Modo corrente (da classe ENUM) - /// - public CNC_MODE currMode; - - /// - /// ODL corrente caricato sulla macchina (stringa, da chiamata MP/IO) - /// - public string currODL = ""; - - /// - /// Indica se sia richiesto campionamento memoria PERIODICO - /// - public bool doSampleMemory; - - /// - /// Indica se si debba leggere e fare DUMP delle aree di memoria (1 volta solo all'avvio x debug...) - /// - public bool doStartMemDump; - - /// - /// Data/ora ultimo avvio adapter - /// - public DateTime dtAvvioAdp = DateTime.Now; - - /// - /// Data/ora ultimo spegnimento adapter - /// - public DateTime dtStopAdp = DateTime.Now; - - /// - /// Indicazione VETO check status IOB x evitare loop troppo stretti... - /// - public DateTime dtVetoCheckIOB = DateTime.Now.AddDays(-1); - /// - /// Indicazione VETO check sync ricette x evitare loop troppo stretti... - /// - public DateTime dtVetoCheckSyncRecipe = DateTime.Now.AddHours(-1); - - /// - /// Abilitazione lettura PrgName - /// - public bool enablePrgName = true; - - /// - /// Abilitazione invio pezzi "in blocco" per recupero contapezzi - /// - public bool enableSendPzCountBlock = false; - - /// - /// Determina se sia encessario convertire valori little/big endian (SIEMENS=true, OSAI=FALSE) - /// - public bool hasBigEndian = false; - - /// - /// dataOra ultima verifica CNC disconnesso... - /// - public DateTime lastDisconnCheck; - - /// - /// Data/ora ultima volta che IOB è stato dichiarato online - /// - public DateTime lastIobOnline = DateTime.Now.AddHours(-1); - - /// - /// dataOra ultimo log periodico... - /// - public DateTime lastPeriodicLog; - - /// - /// dataOra ultimo PING inviato verso il PLC... - /// - public DateTime lastPING = DateTime.Now.AddHours(-1); - - /// - /// DataOra ultima lettura da PLC - /// - public DateTime lastReadPLC; - - /// - /// ULtimo valore inviato (in caso di disconnessione lo reinvia x garantire watchdog...) - /// - public string lastSignInVal = ""; - - /// - /// DateTime Ultimo valore simulazione generato - /// - public DateTime lastSim; - - /// - /// dataOra ultimo segnale inviato al SERVER... - /// - public DateTime lastWatchDog; - - /// - /// dataOra ultimo segnale inviato a macchina/PLC... - /// - public DateTime lastWatchDogPLC = DateTime.Now; - - /// - /// Massimo numero di px da inviare in blocco - /// - public int maxSendPzCountBlock = 10; - - /// - /// Struttura memoria PLC x lettura/scrittura da JSON file - /// - public plcMemMapExt memMap; - - /// - /// Minimo numero di px da inviare in blocco - /// - public int minSendPzCountBlock = 5; - - /// - /// Variabile booleana che indica se sia necessario fare refresh del contapezzi - /// - public bool needRefreshPzCount = true; - - /// - /// Dizionario di persistenza per i valori da salvare da/su file - /// - public Dictionary persistenceLayer; - - /// - /// Determina se utilizzare blocchi di memoria IOT contigui (e quindi processing - /// "monoblocco" semplificato"= - /// - public bool procIotMem = false; - - /// - /// Coda valori ALLARMI ove gestiti... - /// - public DataQueue QueueAlarm = new DataQueue("000", "QueueAlarm", false); - //public ConcurrentQueue QueueAlarm = new ConcurrentQueue(); - - /// - /// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi) - /// - public DataQueue QueueFLog = new DataQueue("000", "QueueFLog", false); - //public ConcurrentQueue QueueFLog = new ConcurrentQueue(); - - /// - /// Oggetto della coda degli elementi letti (e non ancora trasmessi) - /// - public DataQueue QueueIN = new DataQueue("000", "QueueIN", false); - //public ConcurrentQueue QueueIN = new ConcurrentQueue(); - - /// - /// Coda valori MESSAGGI/EVENTI (da non sottocampionare come samples)... - /// - public DataQueue QueueMessages = new DataQueue("000", "QueueMessages", false); - //public ConcurrentQueue QueueMessages = new ConcurrentQueue(); - - /// - /// Oggetto della coda degli elementi di tipo RawTransf (e non ancora trasmessi) - /// NB: sono salvati serializzati come stringhe - /// - public DataQueue QueueRawTransf = new DataQueue("000", "QueueRawTransf", false); - //public ConcurrentQueue QueueRawTransf = new ConcurrentQueue(); - - /// - /// Coda valori LOG UTENTE (da non sottocampionare come samples)... - /// - public DataQueue QueueULog = new DataQueue("000", "QueueULog", false); - //public ConcurrentQueue QueueULog = new ConcurrentQueue(); - - /// - /// alias booleano false = R - /// - public bool R = false; - - /// - /// 32 byte input base (es strobe, 8 word da 32 bit di flags...) - /// - public byte[] RawInput = new byte[32]; - - /// - /// 32 byte output base (es ack, 8 word da 32 bit di flags...) - /// - public byte[] RawOutput = new byte[32]; - - /// - /// Oggetto connessione REDIS - /// - public RedisIobCache redisMan; - - /// - /// Oggetto cronometro x campionamento durate chiamate - /// - public Stopwatch stopwatch = new Stopwatch(); - - /// - /// Oggetto gestione TempiCiclo e contapezzi - /// - public TCMan tcMan = new TCMan(0.5, 1.3, 5); - - /// - /// Imposta veto lettura dati (es per DB a 2 sec) - /// - public DateTime vetoDataRead = DateTime.Now; - - /// - /// Imposta veto SYNC dati (es per DB 2 DB a 10 sec) - /// - public DateTime vetoDataSync = DateTime.Now; - - /// - /// Imposta veto chiamata split (durante chiamata, per 60 sec) - /// - public DateTime vetoSplit = DateTime.Now.AddMinutes(1); - - /// - /// alias booleano true = W - /// - public bool W = true; - - #endregion Public Fields #region Public Constructors @@ -8575,44 +8310,4 @@ namespace IOB_WIN_NEXT.Iob #endregion Private Methods } - - /// - /// Evento per incapsulare dati x refresh pagina - /// - public class iobRefreshedEventArgs : EventArgs - { - #region Public Constructors - - /// - /// salvataggio obj - /// - /// - public iobRefreshedEventArgs(newDisplayData newObject) - { - _newDisplayData = newObject; - } - - #endregion Public Constructors - - #region Public Properties - - /// - /// Proprietà lettura displayData aggiornato - /// - public newDisplayData DisplayDataObject - { - get { return _newDisplayData; } - } - - #endregion Public Properties - - #region Private Fields - - /// - /// classe obj privata - /// - private readonly newDisplayData _newDisplayData; - - #endregion Private Fields - } } \ No newline at end of file diff --git a/IOB-WIN-NEXT/Iob/iobRefreshedEventArgs.cs b/IOB-WIN-NEXT/Iob/iobRefreshedEventArgs.cs new file mode 100644 index 00000000..b9fa89eb --- /dev/null +++ b/IOB-WIN-NEXT/Iob/iobRefreshedEventArgs.cs @@ -0,0 +1,45 @@ +using IOB_UT_NEXT; +using System; + +namespace IOB_WIN_NEXT.Iob +{ + /// + /// Evento per incapsulare dati x refresh pagina + /// + public class iobRefreshedEventArgs : EventArgs + { + #region Public Constructors + + /// + /// salvataggio obj + /// + /// + public iobRefreshedEventArgs(newDisplayData newObject) + { + _newDisplayData = newObject; + } + + #endregion Public Constructors + + #region Public Properties + + /// + /// Proprietà lettura displayData aggiornato + /// + public newDisplayData DisplayDataObject + { + get { return _newDisplayData; } + } + + #endregion Public Properties + + #region Private Fields + + /// + /// classe obj privata + /// + private readonly newDisplayData _newDisplayData; + + #endregion Private Fields + } +} \ No newline at end of file