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);