Riportate alcune variabili in memoria (NO REDIS)

This commit is contained in:
Samuele E. Locatelli
2020-01-22 17:56:46 +01:00
parent bcf7639e2c
commit e5ccff73b5
8 changed files with 275 additions and 130 deletions
+7 -11
View File
@@ -471,21 +471,13 @@ namespace IOB_UT
public class ServerMpStatus
{
/// <summary>
/// ID univoco
/// IP server
/// </summary>
public string Id { get; set; }
public string IP { get; set; }
/// <summary>
/// Status del server
/// </summary>
public bool online { get; set; } = false;
/// <summary>
/// DataOra veto invio chaimate a server
/// </summary>
public DateTime dtVetoPing { get; set; } = DateTime.Now.AddDays(-1);
/// <summary>
/// DataOra veto invio chaimate a server
/// </summary>
public DateTime dtVetoCall { get; set; } = DateTime.Now.AddDays(-1);
}
/// <summary>
/// Rappresentazione dello stato corrente dell'IOB
@@ -495,12 +487,16 @@ namespace IOB_UT
/// <summary>
/// ID univoco
/// </summary>
public string Id { get; set; } = "0";
public string CodIob { get; set; } = "0";
/// <summary>
/// Status del SINGOLO IOB
/// </summary>
public bool online { get; set; } = false;
/// <summary>
/// Indica se sia correntemente in setup
/// </summary>
public bool inSetup { get; set; } = false;
/// <summary>
/// Semaforo IN (IOB-PLC)
/// </summary>
public Semaforo SemIn { get; set; } = Semaforo.ND;
+35 -13
View File
@@ -9,7 +9,6 @@ namespace IOB_UT
{
public class RedisIobCache
{
#region gestione valori in RedisCache
/// <summary>
@@ -862,11 +861,8 @@ namespace IOB_UT
#endregion
#region gestione redis specifica
/// <summary>
/// Codice server MP
/// </summary>
protected string CodServer = "1";
/// <summary>
/// Cod IOB
/// </summary>
@@ -880,6 +876,17 @@ namespace IOB_UT
/// </summary>
protected string redIobKey = "";
/// <summary>
/// init classe "implicita"
/// </summary>
/// <param name="codServer"></param>
/// <param name="codIob"></param>
public RedisIobCache()
{
// init dati di base...
redServKey = redHash($"MP");
redIobKey = redHash($"IOB:{CodIob}");
}
/// <summary>
/// init classe gestione dati IOB su Redis
/// </summary>
/// <param name="codServer"></param>
@@ -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);
}
}
/// <summary>
/// Variabile in cui viene salvato lo stato del server MP-IO
/// Variabile in cui viene salvato lo stato ONLINE del server MP-IO
/// </summary>
public bool MPIO_Online
{
@@ -994,6 +998,24 @@ namespace IOB_UT
servStatus = currData;
}
}
/// <summary>
/// Variabile in cui viene salvato lo stato ONLINE dell'IOB
/// </summary>
public bool IOB_Online
{
get
{
return iobStatus.online;
}
set
{
var currData = iobStatus;
currData.online = value;
iobStatus = currData;
}
}
#endregion
}
}
+33 -23
View File
@@ -45,33 +45,49 @@ namespace IOB_UT
public class baseUtils
{
#if false
/// <summary>
/// Variabile in cui viene salvato lo stato del server MP-IO
/// Oggetto connessione REDIS
/// </summary>
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();
/// <summary>
/// Indicazione VETO PING a server sino alla data-ora indicata
/// </summary>
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
/// <summary>
/// Indicazione VETO invio a server sino alla data-ora indicata
/// </summary>
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
/// <summary>
/// Calcola una pausa con errore casuale x il prossimo send programmato verso SERVER
/// </summary>
@@ -88,12 +104,6 @@ namespace IOB_UT
return answ;
}
}
#if false
/// <summary>
/// oggetto static x gestione baseUtils
/// </summary>
public static baseUtils mgr = new baseUtils();
#endif
/// <summary>
/// Classe logger
/// </summary>
+5 -4
View File
@@ -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=
+17 -13
View File
@@ -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);
}
+172 -64
View File
@@ -46,13 +46,163 @@ namespace IOB_WIN
}
public class IobGeneric
{
{
#region variabili serializzate in REDIS
/// <summary>
/// Oggetto connessione REDIS
/// </summary>
public RedisIobCache redisMan;
/// <summary>
/// Indica impianto IN SETUP (fino a quando SMETTE di esserlo...)
/// </summary>
protected bool inSetup
{
get
{
return redisMan.iobStatus.inSetup;
}
set
{
var currData = redisMan.iobStatus;
currData.inSetup = value;
redisMan.iobStatus = currData;
}
}
/// <summary>
/// Indicazione VETO PING a server sino alla data-ora indicata
/// </summary>
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
}
/// <summary>
/// Indicazione VETO invio a server sino alla data-ora indicata
/// </summary>
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
}
/// <summary>
/// Indicazione VETO check status IOB x evitare loop troppo stretti...
/// </summary>
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
/// <summary>
/// Contapezzi attuale
/// </summary>
public Int32 contapezzi
{
get
{
return (Int32)redisMan.iobStatus.counterIOB;
}
set
{
var currData = redisMan.iobStatus;
currData.counterIOB = value;
redisMan.iobStatus = currData;
}
}
/// <summary>
/// Ultima lettura variabile contapezzi da CNC
/// </summary>
public Int32 lastCountCNC
{
get
{
return (Int32)redisMan.iobStatus.counterMAC;
}
set
{
var currData = redisMan.iobStatus;
currData.counterMAC = value;
redisMan.iobStatus = currData;
}
}
/// <summary>
/// stato Online/Offline della IOB
/// </summary>
public bool IobOnline
{
get
{
return redisMan.IOB_Online;
}
set
{
redisMan.IOB_Online = value;
}
}
/// <summary>
/// stato Online/Offline del server MP IO (su REDIS)
/// </summary>
public bool MPOnline
{
get
{
return redisMan.MPIO_Online;
}
set
{
redisMan.MPIO_Online = value;
}
}
#endregion
#region variabili ed oggetti base
/// <summary>
/// Oggetto connessioen REDIS
/// </summary>
public RedisIobCache redisMan;
/// <summary>
/// Dizionario valori impostati x produzione
/// </summary>
@@ -61,10 +211,6 @@ namespace IOB_WIN
/// TImeout x ping al server
/// </summary>
protected int pingServerMsTimeout = utils.CRI("pingMsTimeout");
/// <summary>
/// Indica impianto IN SETUP (fino a quando SMETTE di esserlo...)
/// </summary>
protected bool inSetup = false;
/// <summary>
/// Log verboso da configurazione (SOLO CHAIVE "verbose"...
/// </summary>
@@ -72,33 +218,9 @@ namespace IOB_WIN
/// <summary>
/// Coda massima ammessa per FLog (se <=0 disattivata...)
/// </summary>
protected int maxQueueFLog { get; set; } = utils.CRI("maxQueueFLog");
/// <summary>
/// Indicazione VETO invio a server sino alla data-ora indicata
/// </summary>
public static DateTime dtVetoPing
{
get
{
return utils.dtVetoPing;
}
set
{
utils.dtVetoPing = value;
}
}
/// <summary>
/// Indicazione VETO check status IOB x evitare loop troppo stretti...
/// </summary>
public DateTime dtVetoCheckIOB = DateTime.Now;
/// <summary>
/// Contapezzi attuale
/// </summary>
public Int32 contapezzi;
/// <summary>
/// Ultima lettura variabile contapezzi da CNC
/// </summary>
public Int32 lastCountCNC;
protected int maxQueueFLog { get; set; } = utils.CRI("maxQueueFLog");
/// <summary>
/// ODL attualmente sulla macchina
/// </summary>
@@ -443,24 +565,7 @@ namespace IOB_WIN
/// Conteggio ATTUALE ore macchina IN LAVORO
/// </summary>
public double contOreMaccLav;
/// <summary>
/// stato Online/Offline della IOB
/// </summary>
public bool IobOnline;
/// <summary>
/// stato Online/Offline del server MP IO (su REDIS)
/// </summary>
public bool MPOnline
{
get
{
return redisMan.MPIO_Online;
}
set
{
redisMan.MPIO_Online = value;
}
}
/// <summary>
/// Data/ora ultima volta che IOB è stato dichairato online
/// </summary>
@@ -476,10 +581,11 @@ namespace IOB_WIN
/// <summary>
/// Dizionario di VARIABILI da trattare come eventi (da inviare quando cambiano oppure a scadenza periodo...)
/// </summary>
protected Dictionary<string, EVData> VarArray = new Dictionary<string, EVData>();
protected Dictionary<string, EVData> VarArray = new Dictionary<string, EVData>();
#endregion
/// <summary>
/// Form chiamante
/// </summary>
@@ -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
+3 -1
View File
@@ -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;
}
}
}
+3 -1
View File
@@ -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);