From e5ccff73b5016746c8a05f163f6de29ecbbe8a11 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Wed, 22 Jan 2020 17:56:46 +0100 Subject: [PATCH] Riportate alcune variabili in memoria (NO REDIS) --- IOB-UT/Objects.cs | 18 ++- IOB-UT/RedisMan.cs | 48 ++++++-- IOB-UT/baseUtils.cs | 56 +++++---- IOB-WIN/DATA/CONF/MAIN.ini | 9 +- IOB-WIN/IobFanuc.cs | 30 +++-- IOB-WIN/IobGeneric.cs | 236 +++++++++++++++++++++++++++---------- IOB-WIN/IobMTC.cs | 4 +- IOB-WIN/IobSiemens.cs | 4 +- 8 files changed, 275 insertions(+), 130 deletions(-) diff --git a/IOB-UT/Objects.cs b/IOB-UT/Objects.cs index 3d4dcad2..411525f6 100644 --- a/IOB-UT/Objects.cs +++ b/IOB-UT/Objects.cs @@ -471,21 +471,13 @@ namespace IOB_UT public class ServerMpStatus { /// - /// ID univoco + /// IP server /// - public string Id { get; set; } + public string IP { get; set; } /// /// Status del server /// public bool online { get; set; } = false; - /// - /// DataOra veto invio chaimate a server - /// - public DateTime dtVetoPing { get; set; } = DateTime.Now.AddDays(-1); - /// - /// DataOra veto invio chaimate a server - /// - public DateTime dtVetoCall { get; set; } = DateTime.Now.AddDays(-1); } /// /// Rappresentazione dello stato corrente dell'IOB @@ -495,12 +487,16 @@ namespace IOB_UT /// /// ID univoco /// - public string Id { get; set; } = "0"; + public string CodIob { get; set; } = "0"; /// /// Status del SINGOLO IOB /// public bool online { get; set; } = false; /// + /// Indica se sia correntemente in setup + /// + public bool inSetup { get; set; } = false; + /// /// Semaforo IN (IOB-PLC) /// public Semaforo SemIn { get; set; } = Semaforo.ND; diff --git a/IOB-UT/RedisMan.cs b/IOB-UT/RedisMan.cs index 969160d6..b55251bd 100644 --- a/IOB-UT/RedisMan.cs +++ b/IOB-UT/RedisMan.cs @@ -9,7 +9,6 @@ namespace IOB_UT { public class RedisIobCache { - #region gestione valori in RedisCache /// @@ -862,11 +861,8 @@ namespace IOB_UT #endregion + #region gestione redis specifica - /// - /// Codice server MP - /// - protected string CodServer = "1"; /// /// Cod IOB /// @@ -880,6 +876,17 @@ namespace IOB_UT /// protected string redIobKey = ""; /// + /// init classe "implicita" + /// + /// + /// + public RedisIobCache() + { + // init dati di base... + redServKey = redHash($"MP"); + redIobKey = redHash($"IOB:{CodIob}"); + } + /// /// init classe gestione dati IOB su Redis /// /// @@ -887,20 +894,19 @@ namespace IOB_UT public RedisIobCache(string codServer, string codIob) { // init dati di base... - CodServer = codServer; CodIob = codIob; - redServKey = redHash($"MP:{CodServer}"); + redServKey = redHash($"MP"); redIobKey = redHash($"IOB:{CodIob}"); // init oggetti gestiti ServerMpStatus newSrvStatus = new ServerMpStatus() { - Id = CodServer, + IP = codServer, online = false }; // init oggetto IOB IobWinStatus newIobStatus = new IobWinStatus() { - Id = CodIob, + CodIob = CodIob, online = false }; // salvo in area REDIS @@ -922,7 +928,6 @@ namespace IOB_UT { answ = new ServerMpStatus() { - Id = CodServer, online = false }; // salvo serializzando... @@ -957,7 +962,7 @@ namespace IOB_UT { answ = new IobWinStatus() { - Id = CodIob, + CodIob = CodIob, online = false }; // salvo serializzando... @@ -977,9 +982,8 @@ namespace IOB_UT setRSV(redIobKey, rawData); } } - /// - /// Variabile in cui viene salvato lo stato del server MP-IO + /// Variabile in cui viene salvato lo stato ONLINE del server MP-IO /// public bool MPIO_Online { @@ -994,6 +998,24 @@ namespace IOB_UT servStatus = currData; } } + /// + /// Variabile in cui viene salvato lo stato ONLINE dell'IOB + /// + public bool IOB_Online + { + get + { + return iobStatus.online; + } + set + { + var currData = iobStatus; + currData.online = value; + iobStatus = currData; + } + } + + #endregion } } diff --git a/IOB-UT/baseUtils.cs b/IOB-UT/baseUtils.cs index 3885b74f..ec6275a8 100644 --- a/IOB-UT/baseUtils.cs +++ b/IOB-UT/baseUtils.cs @@ -45,33 +45,49 @@ namespace IOB_UT public class baseUtils { -#if false + /// - /// Variabile in cui viene salvato lo stato del server MP-IO + /// Oggetto connessione REDIS /// - public static bool MPIO_Online - { - get - { - return redManager.servStatus.online; - } - set - { - var currData = redManager.servStatus; - currData.online = value; - //currData.dtVetoCall = DateTime.Now; - redManager.servStatus = currData; - } - } -#endif + public static RedisIobCache redisMan = new RedisIobCache(); /// /// Indicazione VETO PING a server sino alla data-ora indicata /// public static DateTime dtVetoPing = DateTime.Now; +#if false + { + get + { + return redisMan.servStatus.dtVetoPing; + } + set + { + var currData = redisMan.servStatus; + currData.dtVetoPing = value; + redisMan.servStatus = currData; + } + } +#endif /// /// Indicazione VETO invio a server sino alla data-ora indicata /// public static DateTime dtVetoSend = DateTime.Now; + #if false + { + get + { + return redisMan.servStatus.dtVetoSend; + } + set + { + var currData = redisMan.servStatus; + currData.dtVetoSend = value; + redisMan.servStatus = currData; + } + } + #endif + + /// /// Calcola una pausa con errore casuale x il prossimo send programmato verso SERVER /// @@ -88,12 +104,6 @@ namespace IOB_UT return answ; } } -#if false - /// - /// oggetto static x gestione baseUtils - /// - public static baseUtils mgr = new baseUtils(); -#endif /// /// Classe logger /// diff --git a/IOB-WIN/DATA/CONF/MAIN.ini b/IOB-WIN/DATA/CONF/MAIN.ini index 7a474602..748b548c 100644 --- a/IOB-WIN/DATA/CONF/MAIN.ini +++ b/IOB-WIN/DATA/CONF/MAIN.ini @@ -7,12 +7,13 @@ NAME=master ;MPIP=192.168.1.7 ; server VALVITAL ;MPIP=192.168.214.4 -; Server Steamware -;MPIP=10.74.82.218 ; server interclays -MPIP=10.0.0.233 +;MPIP=10.0.0.233 ; server REMOSA -MPIP=192.168.0.110 +;MPIP=192.168.0.110 + +; Server Steamware +MPIP=10.74.82.218 MPURL=/MP/IO CMDREBO=/IOB/sendRebootGateway?GWIP= CMDIOB2CALL=/IOB/getIob2call?GWIP= diff --git a/IOB-WIN/IobFanuc.cs b/IOB-WIN/IobFanuc.cs index 65a3ce97..0ec13149 100644 --- a/IOB-WIN/IobFanuc.cs +++ b/IOB-WIN/IobFanuc.cs @@ -203,13 +203,13 @@ namespace IOB_WIN // aggiungo referenza obj FANUC FANUC_ref = (FANUC)Runtime.NC; - if (isVerboseLog) + if (isVerboseLog) { lgInfo("FANUC_ref da CncLib"); } // disconnetto e connetto... - if (isVerboseLog) + if (isVerboseLog) { lgInfo("FANUC: tryDisconnect"); } @@ -361,7 +361,7 @@ namespace IOB_WIN { memAddressFanuc areaCounter = new memAddressFanuc(memAddr); - if (isVerboseLog) + if (isVerboseLog) { lgInfo("[0] area memoria: {0}.{1}.{2}", areaCounter.mType, areaCounter.mPos, areaCounter.vType); } @@ -936,14 +936,16 @@ namespace IOB_WIN } // salvo ultimo conteggio rilevato - Int32.TryParse(outputVal.ToString(), out lastCountCNC); + int newVal = -1; + Int32.TryParse(outputVal.ToString(), out newVal); + lastCountCNC = newVal > -1 ? newVal : lastCountCNC; } // altrimenti se legge da area memoria specifica leggo da li... formto tipo STD.D.1604.DW else { memAddressFanuc areaCounter = new memAddressFanuc(memAddr); - if (isVerboseLog) + if (isVerboseLog) { lgInfo("[0] area memoria: {0}.{1}.{2}", areaCounter.mType, areaCounter.mPos, areaCounter.vType); } @@ -966,13 +968,13 @@ namespace IOB_WIN case "DW": uint valDW = 0; FANUC_ref.F_RW_DWord(false, areaCounter.mType, areaCounter.mPos, ref valDW); - if (isVerboseLog) + if (isVerboseLog) { lgInfo("[1] valDW contapezzi: {0}", valDW); } outputVal = valDW; - if (isVerboseLog) + if (isVerboseLog) { lgInfo("[2] outputVal contapezzi: {0}", outputVal); } @@ -987,8 +989,10 @@ namespace IOB_WIN } // salvo... - Int32.TryParse(outputVal.ToString(), out lastCountCNC); - if (isVerboseLog) + int newVal = -1; + Int32.TryParse(outputVal.ToString(), out newVal); + lastCountCNC = newVal > -1 ? newVal : lastCountCNC; + if (isVerboseLog) { lgInfo("[3] lastCountCNC contapezzi: {0}", lastCountCNC); } @@ -1091,7 +1095,7 @@ namespace IOB_WIN { memAddressFanuc areaCounter = new memAddressFanuc(memAddr); - if (isVerboseLog) + if (isVerboseLog) { lgInfo("[0] area memoria: {0}.{1}.{2}", areaCounter.mType, areaCounter.mPos, areaCounter.vType); } @@ -1114,13 +1118,13 @@ namespace IOB_WIN case "DW": uint valDW = 0; FANUC_ref.F_RW_DWord(false, areaCounter.mType, areaCounter.mPos, ref valDW); - if (isVerboseLog) + if (isVerboseLog) { lgInfo("[1] valDW PAR: {0}", valDW); } outputVal = valDW; - if (isVerboseLog) + if (isVerboseLog) { lgInfo("[2] outputVal PAR: {0}", outputVal); } @@ -1136,7 +1140,7 @@ namespace IOB_WIN // salvo... answ = outputVal.ToString(); - if (isVerboseLog) + if (isVerboseLog) { lgInfo("[3] PAR letto: {0} | {1}", varName, answ); } diff --git a/IOB-WIN/IobGeneric.cs b/IOB-WIN/IobGeneric.cs index cad31eec..673c65f2 100644 --- a/IOB-WIN/IobGeneric.cs +++ b/IOB-WIN/IobGeneric.cs @@ -46,13 +46,163 @@ namespace IOB_WIN } public class IobGeneric - { + { + #region variabili serializzate in REDIS + + /// + /// Oggetto connessione REDIS + /// + public RedisIobCache redisMan; + /// + /// Indica impianto IN SETUP (fino a quando SMETTE di esserlo...) + /// + protected bool inSetup + { + get + { + return redisMan.iobStatus.inSetup; + } + set + { + var currData = redisMan.iobStatus; + currData.inSetup = value; + redisMan.iobStatus = currData; + } + } + /// + /// Indicazione VETO PING a server sino alla data-ora indicata + /// + public DateTime dtVetoPing + { + get + { + return utils.dtVetoPing; + } + set + { + utils.dtVetoPing = value; + } +#if false + get + { + return redisMan.servStatus.dtVetoPing; + } + set + { + var currData = redisMan.servStatus; + currData.dtVetoPing = value; + redisMan.servStatus = currData; + } +#endif + } + /// + /// Indicazione VETO invio a server sino alla data-ora indicata + /// + public DateTime dtVetoSend + { + get + { + return utils.dtVetoSend; + } + set + { + utils.dtVetoSend = value; + } +#if false + get + { + return redisMan.servStatus.dtVetoSend; + } + set + { + var currData = redisMan.servStatus; + currData.dtVetoSend = value; + redisMan.servStatus = currData; + } +#endif + } + /// + /// Indicazione VETO check status IOB x evitare loop troppo stretti... + /// + public DateTime dtVetoCheckIOB = DateTime.Now.AddDays(-1); +#if false + { + get + { + return redisMan.iobStatus.dtVetoCheckIOB; + } + set + { + var currData = redisMan.iobStatus; + currData.dtVetoCheckIOB = value; + redisMan.iobStatus = currData; + } + } +#endif + /// + /// Contapezzi attuale + /// + public Int32 contapezzi + { + get + { + return (Int32)redisMan.iobStatus.counterIOB; + } + set + { + var currData = redisMan.iobStatus; + currData.counterIOB = value; + redisMan.iobStatus = currData; + } + } + /// + /// Ultima lettura variabile contapezzi da CNC + /// + public Int32 lastCountCNC + { + get + { + return (Int32)redisMan.iobStatus.counterMAC; + } + set + { + var currData = redisMan.iobStatus; + currData.counterMAC = value; + redisMan.iobStatus = currData; + } + } + /// + /// stato Online/Offline della IOB + /// + public bool IobOnline + { + get + { + return redisMan.IOB_Online; + } + set + { + redisMan.IOB_Online = value; + } + } + /// + /// stato Online/Offline del server MP IO (su REDIS) + /// + public bool MPOnline + { + get + { + return redisMan.MPIO_Online; + } + set + { + redisMan.MPIO_Online = value; + } + } + #endregion + #region variabili ed oggetti base - /// - /// Oggetto connessioen REDIS - /// - public RedisIobCache redisMan; /// /// Dizionario valori impostati x produzione /// @@ -61,10 +211,6 @@ namespace IOB_WIN /// TImeout x ping al server /// protected int pingServerMsTimeout = utils.CRI("pingMsTimeout"); - /// - /// Indica impianto IN SETUP (fino a quando SMETTE di esserlo...) - /// - protected bool inSetup = false; /// /// Log verboso da configurazione (SOLO CHAIVE "verbose"... /// @@ -72,33 +218,9 @@ namespace IOB_WIN /// /// Coda massima ammessa per FLog (se <=0 disattivata...) /// - protected int maxQueueFLog { get; set; } = utils.CRI("maxQueueFLog"); - /// - /// Indicazione VETO invio a server sino alla data-ora indicata - /// - public static DateTime dtVetoPing - { - get - { - return utils.dtVetoPing; - } - set - { - utils.dtVetoPing = value; - } - } - /// - /// Indicazione VETO check status IOB x evitare loop troppo stretti... - /// - public DateTime dtVetoCheckIOB = DateTime.Now; - /// - /// Contapezzi attuale - /// - public Int32 contapezzi; - /// - /// Ultima lettura variabile contapezzi da CNC - /// - public Int32 lastCountCNC; + protected int maxQueueFLog { get; set; } = utils.CRI("maxQueueFLog"); + + /// /// ODL attualmente sulla macchina /// @@ -443,24 +565,7 @@ namespace IOB_WIN /// Conteggio ATTUALE ore macchina IN LAVORO /// public double contOreMaccLav; - /// - /// stato Online/Offline della IOB - /// - public bool IobOnline; - /// - /// stato Online/Offline del server MP IO (su REDIS) - /// - public bool MPOnline - { - get - { - return redisMan.MPIO_Online; - } - set - { - redisMan.MPIO_Online = value; - } - } + /// /// Data/ora ultima volta che IOB รจ stato dichairato online /// @@ -476,10 +581,11 @@ namespace IOB_WIN /// /// Dizionario di VARIABILI da trattare come eventi (da inviare quando cambiano oppure a scadenza periodo...) /// - protected Dictionary VarArray = new Dictionary(); - + protected Dictionary VarArray = new Dictionary(); + #endregion + /// /// Form chiamante /// @@ -1010,8 +1116,10 @@ namespace IOB_WIN { // se "-1" resto a ultimo... if (currServerCount != "-1") - { - int.TryParse(currServerCount, out contapezzi); + { + int newVal = -1; + Int32.TryParse(currServerCount, out newVal); + contapezzi = newVal > -1 ? newVal : contapezzi; lgInfo("Ricevuta conferma da server di {0} pezzi registrati per ODL", currServerCount); } else @@ -2873,16 +2981,16 @@ namespace IOB_WIN } // salvo status... IobOnline = answ; - // se offline imposto veto check a 5 x tempo reinvio... - if (!answ) + // se offline imposto veto check a 2 x tempo reinvio... + if (answ) { - dtVetoCheckIOB = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 10); + // non controllo x meno... + dtVetoCheckIOB = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 2); + lastIobOnline = DateTime.Now; } else { - // non controllo x meno... - dtVetoCheckIOB = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 5); - lastIobOnline = DateTime.Now; + dtVetoCheckIOB = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 10); } } catch diff --git a/IOB-WIN/IobMTC.cs b/IOB-WIN/IobMTC.cs index 18939a16..f9725df7 100644 --- a/IOB-WIN/IobMTC.cs +++ b/IOB-WIN/IobMTC.cs @@ -912,7 +912,9 @@ namespace IOB_WIN // se ho un contapezzi... processo... if (!string.IsNullOrEmpty(currPzCount)) { - int.TryParse(currPzCount, out lastCountCNC); + int newVal = -1; + Int32.TryParse(currPzCount, out newVal); + lastCountCNC = newVal > -1 ? newVal : lastCountCNC; } } } diff --git a/IOB-WIN/IobSiemens.cs b/IOB-WIN/IobSiemens.cs index 708b6a68..c4945a33 100644 --- a/IOB-WIN/IobSiemens.cs +++ b/IOB-WIN/IobSiemens.cs @@ -1106,7 +1106,9 @@ namespace IOB_WIN break; } // salvo... - Int32.TryParse(outputVal.ToString(), out lastCountCNC); + int newVal = -1; + Int32.TryParse(outputVal.ToString(), out newVal); + lastCountCNC = newVal > -1 ? newVal : lastCountCNC; if (isVerboseLog) { lgInfo("[2] outputVal contapezzi: {0}", outputVal);