Completata prima review x gestione autoODL x RAMA TFT

This commit is contained in:
Samuele Locatelli
2025-03-05 12:15:55 +01:00
parent 18ed2c231c
commit 28f8d4877e
23 changed files with 328 additions and 235 deletions
+7 -6
View File
@@ -21,22 +21,23 @@ namespace IOB_UT_NEXT.Config.Base
/// <summary>
/// Modalità di esecuzione del cambio ODL automatico (tipicamente a tempo/simulazione su qty)
/// - TIME (default)
/// - SIMUL
/// - DAILY
/// - ...
/// </summary>
public string ChangeOdlMode { get; set; } = "";
public string ChangeOdlMode { get; set; } = "TIME";
/// <summary>
/// Numero di ore di durata minima (ODL corrente) prima di eseguire una richiesta di cambio ODL automatico
/// Durata minima ODL in Ore (ODL corrente) prima di eseguire una richiesta di cambio ODL automatico
/// </summary>
public int ChangeOdlHours { get; set; } = 24;
public int OdlDurationHours { get; set; } = 24;
/// <summary>
/// Durata minima in minuti dello stato idle prima di eseguire una richiesta di cambio ODL
/// Serve ad evitare un cambio ODL mentre la amcchina è in RUN
/// </summary>
public int ChangeOdlIdleMin { get; set; } = 0;
public int IdleStateMin { get; set; } = 0;
/// <summary>
/// Abilitazione cambio ODL in caso di Reset Contapezzi guardando parametri ResetCount Min/Max...
@@ -56,8 +57,8 @@ namespace IOB_UT_NEXT.Config.Base
#if false
/// <summary>
/// Parametri opzionali di configurazione cambio ODL, ad esempio
/// - ChangeOdlHours
/// - ChangeOdlIdleMin
/// - OdlDurationHours
/// - IdleStateMin
/// - ResetMinCountPre
/// - ResetMaxCountPost
/// </summary>
+6 -4
View File
@@ -158,12 +158,14 @@ namespace IOB_UT_NEXT.Config
{
AutoChangeOdl = bool.Parse(fIni.ReadString("OPTPAR", "AUTO_CHANGE_ODL", "false")),
ChangeOdlMode = fIni.ReadString("OPTPAR", "CHANGE_ODL_MODE", ""),
ChangeOdlHours = fIni.ReadInteger("OPTPAR", "CHANGE_ODL_HOURS", 24),
ChangeOdlIdleMin = fIni.ReadInteger("OPTPAR", "CHANGE_ODL_IDLE_MIN", 0),
OdlDurationHours = fIni.ReadInteger("OPTPAR", "CHANGE_ODL_HOURS", 24),
IdleStateMin = fIni.ReadInteger("OPTPAR", "CHANGE_ODL_IDLE_MIN", 0),
// il change ODL al reset contapezzi può essere configurato in 2 modi: con chiave esplicita oppure con il CHANGE_ODL_MODE specifico...
ChangeOnResetCount = bool.Parse(fIni.ReadString("OPTPAR", "CHANGE_PZCOUNT_RESET", "false")) || (fIni.ReadString("OPTPAR", "CHANGE_ODL_MODE", "") == "PZCOUNT_RESET"),
ResetCountMinPre = fIni.ReadInteger("OPTPAR", "RESET_COUNT_PRE", 100),
ResetCountMaxPost = fIni.ReadInteger("OPTPAR", "RESET_COUNT_POST", 1),
// gestione precedente: bastava 1 solo pezzo pre...
ResetCountMinPre = fIni.ReadInteger("OPTPAR", "RESET_COUNT_PRE", 1),
// e reset a zero...
ResetCountMaxPost = fIni.ReadInteger("OPTPAR", "RESET_COUNT_POST", 0),
};
exclOptPar.Add("AUTO_CHANGE_ODL");
+206 -94
View File
@@ -1890,9 +1890,10 @@ namespace IOB_WIN_FORM.Iob
public void processAutoOdl()
{
bool fatto = false;
if (!string.IsNullOrEmpty(getOptPar("AUTO_CHANGE_ODL")))
//if (!string.IsNullOrEmpty(getOptPar("AUTO_CHANGE_ODL")))
if (IOBConfFull.Odl.AutoChangeOdl)
{
lgTrace("Richiesta processAutoOdl");
lgTrace("processAutoOdl | AutoChangeOdl abilitato");
// imposto il veto lettura contapezzi a 1 minuto x iniziare...
dtVetoReadPzCount = DateTime.Now.AddMinutes(delayMinReadPzCount);
string IOB_MULTI_CNAME = "";
@@ -1904,8 +1905,6 @@ namespace IOB_WIN_FORM.Iob
IOB_MULTI_CNAME = getOptPar("IOB_MULTI_CNAME");
elencoMulti = IOB_MULTI_CNAME.Split(',');
}
// controllo SIA abilitato...
bool doProc = false;
DateTime adesso = DateTime.Now;
DateTime inizioOdl = adesso;
string rawDataInizio = "";
@@ -1915,18 +1914,14 @@ namespace IOB_WIN_FORM.Iob
}
else
{
bool.TryParse(getOptPar("AUTO_CHANGE_ODL"), out doProc);
if (doProc)
bool callChangeODL = false;
switch (IOBConfFull.Odl.ChangeOdlMode)
{
lgTrace("AUTO_CHANGE_ODL abilitato");
bool callChangeODL = false;
if (CHANGE_ODL_MODE == "PZCOUNT_RESET")
{
case "PZCOUNT_RESET":
/* verifico se sia "armato" il reset cambio ODL, DEVO essere :
* - NON in produzione
* - contapezzi ACT < contapezzi LAST
* */
* - NON in produzione
* - contapezzi ACT < contapezzi LAST
* */
lgTrace("processAutoOdl: caso PZCOUNT_RESET");
if ((!isRunning || forceResetInRun) && pzCountResetted)
{
@@ -1937,9 +1932,8 @@ namespace IOB_WIN_FORM.Iob
{
lgInfo($"isRunning: {isRunning} | pzCountResetted: {pzCountResetted} | forceResetInRun: {forceResetInRun} | contapezziIOB: {contapezziIOB} | contapezziPLC: {contapezziPLC}");
}
}
else if (CHANGE_ODL_MODE == "DAILY")
{
break;
case "DAILY":
// verifico inizio ODL, se è data di oggi NON eseguo...
if (currOdlStart().Date < adesso.Date)
{
@@ -1949,9 +1943,8 @@ namespace IOB_WIN_FORM.Iob
string autoOdlRes = utils.callUrl(urlFixDailyOdl);
fatto = autoOdlRes == "OK";
}
}
else if (CHANGE_ODL_MODE == "DAILY_CONF_PZ")
{
break;
case "DAILY_CONF_PZ":
// verifico inizio ODL, se è data di oggi NON eseguo...
if (currOdlStart().Date < adesso.Date)
{
@@ -1961,106 +1954,221 @@ namespace IOB_WIN_FORM.Iob
string autoOdlRes = utils.callUrl(urlFixDailyOdlConfPzCount);
fatto = autoOdlRes == "OK";
}
}
else if (CHANGE_ODL_MODE == "TIME" || CHANGE_ODL_MODE == "SIMUL")
{
break;
case "SIMUL":
case "TIME":
// imposto x prox controllo veto a 1 min
VetoProcessAutoOdl = adesso.AddMinutes(1);
// carico i parametri di configurazione x reset ODL...
string CHANGE_ODL_HOURS = getOptPar("CHANGE_ODL_HOURS");
string CHANGE_ODL_IDLE_MIN = getOptPar("CHANGE_ODL_IDLE_MIN");
if (!string.IsNullOrEmpty(CHANGE_ODL_HOURS) && !string.IsNullOrEmpty(CHANGE_ODL_IDLE_MIN))
// controllo parametri validi
if (IOBConfFull.Odl.OdlDurationHours > 0 && IOBConfFull.Odl.IdleStateMin >= 0)
{
int minOdlDurHours = -1;
int minPlcIdelMin = -1;
int.TryParse(CHANGE_ODL_HOURS, out minOdlDurHours);
int.TryParse(CHANGE_ODL_IDLE_MIN, out minPlcIdelMin);
// controllo parametri validi
if (minOdlDurHours > 0 && minPlcIdelMin >= 0)
// leggo da server inizio ODL... se non multi 1 solo...
inizioOdl = DateTime.Now;
rawDataInizio = "";
if (!isMulti)
{
// leggo da server inizio ODL... se non multi 1 solo...
inizioOdl = DateTime.Now;
rawDataInizio = "";
rawDataInizio = callUrl(urlInizioOdlIob, false);
DateTime.TryParse(rawDataInizio, out inizioOdl);
}
else
{
DateTime tmpData = DateTime.Now;
// prendo il + vecchio...
foreach (var item in elencoMulti)
{
fullUrl = $"{urlInizioOdlIob}|{item}";
rawDataInizio = callUrl(fullUrl, false);
DateTime.TryParse(rawDataInizio, out tmpData);
inizioOdl = (tmpData < inizioOdl) ? tmpData : inizioOdl;
}
}
// verifico se sia scaduto...
if (inizioOdl.AddHours(IOBConfFull.Odl.OdlDurationHours) < adesso)
{
string rawIdle = "";
int idlePeriod = 0;
if (!isMulti)
{
rawDataInizio = callUrl(urlInizioOdlIob, false);
DateTime.TryParse(rawDataInizio, out inizioOdl);
// controllo SE sono fermo (spento o in manuale) per il
// periodo minimo richiesto...
rawIdle = callUrl(urlIdleTime, false);
int.TryParse(rawIdle, out idlePeriod);
}
else
{
DateTime tmpData = DateTime.Now;
// prendo il + vecchio...
int tmpIdle = 0;
// prendo il + grande...
foreach (var item in elencoMulti)
{
fullUrl = $"{urlInizioOdlIob}|{item}";
rawDataInizio = callUrl(fullUrl, false);
DateTime.TryParse(rawDataInizio, out tmpData);
inizioOdl = (tmpData < inizioOdl) ? tmpData : inizioOdl;
fullUrl = $"{urlIdleTime}|{item}";
rawIdle = callUrl(fullUrl, false);
int.TryParse(rawIdle, out tmpIdle);
idlePeriod = tmpIdle > idlePeriod ? tmpIdle : idlePeriod;
}
}
// verifico se sia scaduto...
if (inizioOdl.AddHours(minOdlDurHours) < adesso)
if (idlePeriod >= IOBConfFull.Odl.IdleStateMin)
{
string rawIdle = "";
int idlePeriod = 0;
if (!isMulti)
{
// controllo SE sono fermo (spento o in manuale) per il
// periodo minimo richiesto...
rawIdle = callUrl(urlIdleTime, false);
int.TryParse(rawIdle, out idlePeriod);
}
else
{
int tmpIdle = 0;
// prendo il + grande...
foreach (var item in elencoMulti)
{
fullUrl = $"{urlIdleTime}|{item}";
rawIdle = callUrl(fullUrl, false);
int.TryParse(rawIdle, out tmpIdle);
idlePeriod = tmpIdle > idlePeriod ? tmpIdle : idlePeriod;
}
}
if (idlePeriod >= minPlcIdelMin)
{
callChangeODL = true;
}
}
}
// se NON fosse scaduto MA è simulato esegue controllo sul num pezzi da
// fare, se sfora (RANDOM) > +(50...110)% --> cambia!
if (!callChangeODL && CHANGE_ODL_MODE == "SIMUL")
{
var rawCount = callUrl(urlGetNumPzCurrODL, false);
if (int.TryParse(rawCount, out var numPzReqOdl))
{
int limitQty = (numPzReqOdl * rndGen.Next(150, 210)) / 100;
callChangeODL = contapezziPLC > limitQty;
callChangeODL = true;
}
}
}
}
// se NON fosse scaduto MA è simulato esegue controllo sul num pezzi da
// fare, se sfora (RANDOM) > +(50...110)% --> cambia!
if (!callChangeODL && IOBConfFull.Odl.ChangeOdlMode == "SIMUL")
{
var rawCount = callUrl(urlGetNumPzCurrODL, false);
if (int.TryParse(rawCount, out var numPzReqOdl))
{
int limitQty = (numPzReqOdl * rndGen.Next(150, 210)) / 100;
callChangeODL = contapezziPLC > limitQty;
}
}
break;
default:
break;
}
// vero processing...
if (callChangeODL)
#if false
if (IOBConfFull.Odl.ChangeOdlMode == "PZCOUNT_RESET")
{
/* verifico se sia "armato" il reset cambio ODL, DEVO essere :
* - NON in produzione
* - contapezzi ACT < contapezzi LAST
* */
lgTrace("processAutoOdl: caso PZCOUNT_RESET");
if ((!isRunning || forceResetInRun) && pzCountResetted)
{
lgTrace("Chiamata: processAutoOdl --> forceSplitODL");
fatto = forceSplitOdl();
pzCountResetted = false;
lgInfo("Esecuzione processAutoOdl completata --> pzCountResetted = false");
callChangeODL = true;
lgInfo("Attivato cambio ODL da PZCOUNT_RESET");
}
else
{
lgInfo($"isRunning: {isRunning} | pzCountResetted: {pzCountResetted} | forceResetInRun: {forceResetInRun} | contapezziIOB: {contapezziIOB} | contapezziPLC: {contapezziPLC}");
}
}
else
else if (IOBConfFull.Odl.ChangeOdlMode == "DAILY")
{
lgTrace("AUTO_CHANGE_ODL DISABILITATO");
// verifico inizio ODL, se è data di oggi NON eseguo...
if (currOdlStart().Date < adesso.Date)
{
// imposto x prox controllo veto a 10 min
VetoProcessAutoOdl = adesso.AddMinutes(10);
// chiamo stored x creare ODL giornalieri alla data...
string autoOdlRes = utils.callUrl(urlFixDailyOdl);
fatto = autoOdlRes == "OK";
}
}
else if (IOBConfFull.Odl.ChangeOdlMode == "DAILY_CONF_PZ")
{
// verifico inizio ODL, se è data di oggi NON eseguo...
if (currOdlStart().Date < adesso.Date)
{
// imposto x prox controllo veto a 10 min
VetoProcessAutoOdl = adesso.AddMinutes(10);
// chiamo stored x creare ODL giornalieri alla data + conferma pezzi...
string autoOdlRes = utils.callUrl(urlFixDailyOdlConfPzCount);
fatto = autoOdlRes == "OK";
}
}
else if (IOBConfFull.Odl.ChangeOdlMode == "TIME" || IOBConfFull.Odl.ChangeOdlMode == "SIMUL")
{
// imposto x prox controllo veto a 1 min
VetoProcessAutoOdl = adesso.AddMinutes(1);
// carico i parametri di configurazione x reset ODL...
string CHANGE_ODL_HOURS = getOptPar("CHANGE_ODL_HOURS");
string CHANGE_ODL_IDLE_MIN = getOptPar("CHANGE_ODL_IDLE_MIN");
if (!string.IsNullOrEmpty(CHANGE_ODL_HOURS) && !string.IsNullOrEmpty(CHANGE_ODL_IDLE_MIN))
{
int minOdlDurHours = -1;
int minPlcIdelMin = -1;
int.TryParse(CHANGE_ODL_HOURS, out minOdlDurHours);
int.TryParse(CHANGE_ODL_IDLE_MIN, out minPlcIdelMin);
// controllo parametri validi
if (minOdlDurHours > 0 && minPlcIdelMin >= 0)
{
// leggo da server inizio ODL... se non multi 1 solo...
inizioOdl = DateTime.Now;
rawDataInizio = "";
if (!isMulti)
{
rawDataInizio = callUrl(urlInizioOdlIob, false);
DateTime.TryParse(rawDataInizio, out inizioOdl);
}
else
{
DateTime tmpData = DateTime.Now;
// prendo il + vecchio...
foreach (var item in elencoMulti)
{
fullUrl = $"{urlInizioOdlIob}|{item}";
rawDataInizio = callUrl(fullUrl, false);
DateTime.TryParse(rawDataInizio, out tmpData);
inizioOdl = (tmpData < inizioOdl) ? tmpData : inizioOdl;
}
}
// verifico se sia scaduto...
if (inizioOdl.AddHours(minOdlDurHours) < adesso)
{
string rawIdle = "";
int idlePeriod = 0;
if (!isMulti)
{
// controllo SE sono fermo (spento o in manuale) per il
// periodo minimo richiesto...
rawIdle = callUrl(urlIdleTime, false);
int.TryParse(rawIdle, out idlePeriod);
}
else
{
int tmpIdle = 0;
// prendo il + grande...
foreach (var item in elencoMulti)
{
fullUrl = $"{urlIdleTime}|{item}";
rawIdle = callUrl(fullUrl, false);
int.TryParse(rawIdle, out tmpIdle);
idlePeriod = tmpIdle > idlePeriod ? tmpIdle : idlePeriod;
}
}
if (idlePeriod >= minPlcIdelMin)
{
callChangeODL = true;
}
}
}
// se NON fosse scaduto MA è simulato esegue controllo sul num pezzi da
// fare, se sfora (RANDOM) > +(50...110)% --> cambia!
if (!callChangeODL && IOBConfFull.Odl.ChangeOdlMode == "SIMUL")
{
var rawCount = callUrl(urlGetNumPzCurrODL, false);
if (int.TryParse(rawCount, out var numPzReqOdl))
{
int limitQty = (numPzReqOdl * rndGen.Next(150, 210)) / 100;
callChangeODL = contapezziPLC > limitQty;
}
}
}
}
#endif
// vero processing...
if (callChangeODL)
{
lgTrace("Chiamata: processAutoOdl --> forceSplitODL");
fatto = forceSplitOdl();
pzCountResetted = false;
lgInfo("Esecuzione processAutoOdl completata --> pzCountResetted = false");
}
}
}
else
{
lgTrace("processAutoOdl | AutoChangeOdl DISABILITATO");
}
// loggo se ok + processing post opzionali
if (fatto)
{
lgInfo($"Effettuato processAutoOdl | mode: {CHANGE_ODL_MODE}");
lgInfo($"Effettuato processAutoOdl | mode: {IOBConfFull.Odl.ChangeOdlMode}");
processAutoOdlExtraStep();
}
}
@@ -3546,10 +3654,12 @@ namespace IOB_WIN_FORM.Iob
/// </summary>
protected int B_previous = -1;
#if false
/// <summary>
/// Modalità cambio ODL
/// </summary>
protected string CHANGE_ODL_MODE = "";
protected string CHANGE_ODL_MODE = "";
#endif
/// <summary>
/// Cod grupo IOB x creazione PODL al volo
@@ -8264,12 +8374,14 @@ namespace IOB_WIN_FORM.Iob
{
bool.TryParse(getOptPar("ENABLE_SLOW_DATA"), out enableSlowData);
}
#if false
// modalità change ODL
CHANGE_ODL_MODE = "TIME";
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
}
#endif
if (!string.IsNullOrEmpty(getOptPar("ENABLE_MEM_REWRITE")))
{
bool.TryParse(getOptPar("ENABLE_MEM_REWRITE"), out ENABLE_MEM_REWRITE);
@@ -50,6 +50,9 @@ BLINK_FILT=0
AUTO_CHANGE_ODL=TRUE
;CHANGE_ODL_MODE=PZCOUNT_RESET
CHANGE_ODL_MODE=DAILY_CONF_PZ
CHANGE_PZCOUNT_RESET=TRUE
RESET_COUNT_PRE=100
RESET_COUNT_POST=20
PZCOUNT_MODE=OPC
DISABLE_PZCOUNT=FALSE
ENABLE_SEND_PZC_BLOCK=TRUE
+9 -3
View File
@@ -245,9 +245,15 @@
<None Include="DATA\CONF\Tend_RAMA_10_47_alarm.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\TFT_RAMA_001.ini" />
<None Include="DATA\CONF\TFT_RAMA_001.json" />
<None Include="DATA\CONF\TFT_RAMA_001_alarm.json" />
<None Include="DATA\CONF\TFT_RAMA_001.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\TFT_RAMA_001.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\TFT_RAMA_001_alarm.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="NLog.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
+62 -31
View File
@@ -48,10 +48,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
int.TryParse(getOptPar("MAX_TRY_PING"), out maxTryPing);
}
// gestione data filtering...
if (!string.IsNullOrEmpty(getOptPar("ENABLE_DATA_FILTER")))
{
@@ -472,15 +468,30 @@ namespace IOB_WIN_OPC_UA.IobOpc
{
if (enablePzCountByApp)
{
if (string.IsNullOrEmpty(opcUaParams.keyPartCount))
bool hasReset = false;
string currPzCount = "";
// modalità 1: verifico se ho condizioni di abilitazione del contapezzi
if (checkMultiCondition(opcUaParams.condCountEnabled) || opcUaParams.condCountEnabled.checkList.Count == 0)
{
lgTrace("Gestione contapezzi: manca parametro per keyPartCount");
lgTrace($"processContapezzi | check 01 | opcUaParams.keyPartCount: {opcUaParams.keyPartCount}");
// cerco parametro contapezzi...
currPzCount = getDataItemValue(opcUaParams.keyPartCount);
}
else
{
lgTrace("processContapezzi | check 01 | manca parametro per keyPartCount");
}
// modalità 2: verifico conf di keyPartCount
if (string.IsNullOrEmpty(opcUaParams.keyPartCount))
{
lgTrace("processContapezzi | check 02 | check 022 | manca parametro per keyPartCount");
}
else
{
lgTrace($"processContapezzi | check 02 | opcUaParams.keyPartCount: {opcUaParams.keyPartCount}");
// cerco parametro contapezzi... gest alternativa se è un parametro SPECIALE
// (con "#")
string currPzCount = "";
if (opcUaParams.keyPartCount.Contains(opcUaParams.kvDelim))
{
int iPos = opcUaParams.keyPartCount.IndexOf(opcUaParams.kvDelim);
@@ -495,38 +506,58 @@ namespace IOB_WIN_OPC_UA.IobOpc
currPzCount = getDataItemValue(opcUaParams.keyPartCount);
}
// se ho un contapezzi... processo...
if (!string.IsNullOrEmpty(currPzCount))
}
// se ho un contapezzi... processo...
if (!string.IsNullOrEmpty(currPzCount))
{
int newVal = -1;
bool fatto = Int32.TryParse(currPzCount, out newVal);
if (fatto)
{
int newVal = -1;
bool fatto = Int32.TryParse(currPzCount, out newVal);
if (fatto)
// gestione decremento contapezzi: viene "messo via" solo SE c'è un
// effettivo decremento contapezzi...
if (newVal < contapezziPLC)
{
// gestione decremento contapezzi: viene "messo via" solo SE c'è un
// effettivo decremento contapezzi...
if (newVal < contapezziPLC)
{
pzCountResetted = true;
// incremento contatore richiesta
countKeyRichiesta = countKeyRichiesta + 1;
// log
lgInfo("Contapezzi resettato (PLC) --> pzCountResetted = true");
}
hasReset = true;
// incremento contatore richiesta
countKeyRichiesta = countKeyRichiesta + 1;
// log
lgInfo("Rilevato Reset Contapezzi PLC 01");
}
// salvo nuovo valore contapezziPLC
contapezziPLC = newVal > -1 ? newVal : contapezziPLC;
}
else
{
lgError($"Errore in decodifica valore contapezzi, valore rilevato: {currPzCount}");
}
// salvo nuovo valore contapezziPLC
contapezziPLC = newVal > -1 ? newVal : contapezziPLC;
}
else
{
lgError("Errore in decodifica valore contapezzi, valore vuoto!");
lgError($"Errore in decodifica valore contapezzi, valore rilevato: {currPzCount}");
}
}
else
{
lgError($"Errore in decodifica valore contapezzi da {opcUaParams.keyPartCount} | valore vuoto!");
}
// controllo comunque, se è ZERO il contapezzi, e sul server è maggiore il
// valore x ODL e NON abilitato il trigger reset --> abilito trigger...
if (!pzCountResetted && contapezziPLC <= IOBConfFull.Odl.ResetCountMaxPost && contapezziIOB >= IOBConfFull.Odl.ResetCountMinPre)
{
hasReset = true;
// incremento contatore richiesta
countKeyRichiesta = countKeyRichiesta + 1;
// log
lgInfo($"Rilevato Reset Contapezzi PLC 02 | PLC = {contapezziPLC} <= {IOBConfFull.Odl.ResetCountMaxPost} | IOB = {contapezziIOB} >= {IOBConfFull.Odl.ResetCountMinPre}) | pzCountResetted = true");
}
// 2025.03.05 calcolo condizione contapezzi con NUOVO CONF
if (IOBConfFull.Odl.ChangeOnResetCount)
{
pzCountResetted = hasReset;
lgInfo("Registrato trigger pzCountResetted");
}
}
}
+6 -9
View File
@@ -23,13 +23,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
/// <param name="IobConfFull">Configurazione (v 4.x)</param>
public OpcUaCMS(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
// impostazioni specifiche OpcUA SCM
// impostazioni specifiche OpcUA CMS/SCM
lgInfo("Start adapter OpcUaCMS");
}
#endregion Public Constructors
@@ -46,6 +41,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
return base.executeTasks(task2exe);
}
#if false
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -92,7 +88,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
}
if (CHANGE_ODL_MODE == "PZCOUNT_RESET")
if (IOBConfFull.Odl.ChangeOdlMode == "PZCOUNT_RESET")
{
// controllo comunque, se è ZERO il contapezzi, e sul server è maggiore il
// valore x ODL e NON abilitato il trigger reset --> abilito trigger...
@@ -103,10 +99,11 @@ namespace IOB_WIN_OPC_UA.IobOpc
countKeyRichiesta = countKeyRichiesta + 1;
// log
lgInfo("Contapezzi resettato (PLC==0 e IOB>PLC) --> pzCountResetted = true");
}
}
}
}
}
#endif
/// <summary>
/// Effettua reset del contapezzi, NON POSSIBILE in questa versione
+4 -6
View File
@@ -23,11 +23,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
/// <param name="IobConfFull">Configurazione (v 4.x)</param>
public OpcUaEwon(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
lgInfo("Start adapter OpcUaEwon");
sendKeyRichiesta = true;
}
@@ -45,6 +41,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
return base.executeTasks(task2exe);
}
#if false
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -105,7 +102,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
}
}
}
}
#endif
/// <summary>
/// Effettua reset del contapezzi, NON POSSIBILE in questa versione
-6
View File
@@ -22,12 +22,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaEwonAdige(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init Ewon versione Adige/BLM");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
sendKeyRichiesta = true;
}
-6
View File
@@ -20,12 +20,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaEwonBLM(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init Ewon versione BLM (Mecart)");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
sendKeyRichiesta = true;
}
@@ -22,12 +22,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaEwonMecolpress(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init Ewon versione Mecolpress (STEL)");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
sendKeyRichiesta = true;
}
+3 -6
View File
@@ -23,11 +23,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaEwonMonti(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init Ewon versione Monti (Tenditalia)");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
// impostazioni specifiche Ewon di Monti
forceResetInRun = true;
sendKeyRichiesta = true;
@@ -37,6 +32,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
#region Public Methods
#if false
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -97,7 +93,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
}
}
}
}
#endif
#endregion Public Methods
+3 -6
View File
@@ -24,11 +24,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaImas(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init OpcUa IMAS");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
sendKeyRichiesta = true;
}
@@ -46,6 +41,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
return base.executeTasks(task2exe);
}
#if false
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -106,7 +102,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
}
}
}
}
#endif
/// <summary>
/// Effettua reset del contapezzi, NON POSSIBILE in questa versione
+3 -6
View File
@@ -24,11 +24,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaKpw(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init OpcUa Kepware");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
// gestione restart OpcUa client...
if (!string.IsNullOrEmpty(getOptPar("ENABLE_CLI_RESTART")))
{
@@ -48,6 +43,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
#if false
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -108,7 +104,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
}
}
}
}
#endif
/// <summary>
/// Effettua reset del contapezzi, NON POSSIBILE in questa versione
-5
View File
@@ -27,11 +27,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaKpwRama(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init OpcUa Kepware x RAMA");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
// gestione restart OpcUa client...
if (!string.IsNullOrEmpty(getOptPar("ENABLE_CLI_RESTART")))
{
+3 -6
View File
@@ -24,11 +24,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaMBH(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init OpcUa MBH");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
// gestione restart OpcUa client...
if (!string.IsNullOrEmpty(getOptPar("ENABLE_CLI_RESTART")))
{
@@ -56,6 +51,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
return base.executeTasks(task2exe);
}
#if false
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -116,7 +112,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
}
}
}
}
#endif
/// <summary>
/// Effettua reset del contapezzi, NON POSSIBILE in questa versione
-5
View File
@@ -27,11 +27,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
lgInfo("Init OpcUa MBH versione Cimolai (Baglietto)");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
lgInfo($"CHANGE_ODL_MODE: {CHANGE_ODL_MODE}");
}
if (!string.IsNullOrEmpty(getOptPar("VETO_SEND_SNAPSHOT")))
{
string strVETO_SEND_SNAPSHOT = getOptPar("VETO_SEND_SNAPSHOT");
+4 -6
View File
@@ -23,12 +23,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
/// <param name="IobConfFull">Configurazione (v 4.x)</param>
public OpcUaOmron(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
sendKeyRichiesta = true;
lgInfo("Avvio OpcUaOmron");
}
#endregion Public Constructors
@@ -45,6 +41,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
return base.executeTasks(task2exe);
}
#if false
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -105,7 +102,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
}
}
}
}
#endif
/// <summary>
/// Effettua reset del contapezzi, NON POSSIBILE in questa versione
-4
View File
@@ -213,10 +213,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaOmronIcoel(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
sendKeyRichiesta = true;
doByteRead = true;
lgInfo($"Avviato IobOpcUaOmronIcoel | encodeReadData: {doByteRead}");
+3 -6
View File
@@ -28,11 +28,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaSiemens(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init OpcUa Siemens");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
// gestione restart OpcUa client...
if (!string.IsNullOrEmpty(getOptPar("ENABLE_CLI_RESTART")))
{
@@ -114,6 +109,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
return base.executeTasks(task2exe);
}
#if false
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -188,7 +184,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
}
}
}
}
#endif
/// <summary>
/// Effettua reset del contapezzi, NON POSSIBILE in questa versione
+1 -7
View File
@@ -21,14 +21,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
/// <param name="IobConfFull">Configurazione (v 4.x)</param>
public OpcUaSiemensOMP(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init OpcUa Siemens versione OMP (Cereria Finassi)");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
sendKeyRichiesta = true;
lgInfo("Init OpcUa Siemens versione OMP (Cereria Finassi)");
}
#endregion Public Constructors
+3 -6
View File
@@ -24,11 +24,6 @@ namespace IOB_WIN_OPC_UA.IobOpc
public OpcUaUlma(AdapterFormNext caller, IobConfTree IobConfFull) : base(caller, IobConfFull)
{
lgInfo("Init OpcUa ULMA");
// inizializzo classe base...
if (!string.IsNullOrEmpty(getOptPar("CHANGE_ODL_MODE")))
{
CHANGE_ODL_MODE = getOptPar("CHANGE_ODL_MODE");
}
sendKeyRichiesta = true;
}
@@ -46,6 +41,7 @@ namespace IOB_WIN_OPC_UA.IobOpc
return base.executeTasks(task2exe);
}
#if false
/// <summary>
/// Effettua vero processing contapezzi
/// </summary>
@@ -106,7 +102,8 @@ namespace IOB_WIN_OPC_UA.IobOpc
}
}
}
}
}
#endif
/// <summary>
/// Effettua reset del contapezzi, NON POSSIBILE in questa versione
+2 -1
View File
@@ -43,8 +43,9 @@ REM IOBVPN4MACHINE
REM ROBOCOPY %2 \\10.51.90.5\Steamware\IOB-WIN-OPC-UA-DEB /MIR
REM ROBOCOPY %2 \\10.51.90.5\Steamware\IOB-WIN-OPC-UA-DEB /MIR /log:RobocopyTransfer.log
REM ROBOCOPY %2 Z:\IOB-WIN-OPC-UA-DEB /MIR
ROBOCOPY %2 \\10.51.90.9\Steamware\IOB-WIN-OPC-UA-DEB /MIR
REM ROBOCOPY %2 \\10.51.90.9\Steamware\IOB-WIN-OPC-UA-DEB /MIR
REM ROBOCOPY %2 \\10.51.90.10\Steamware\IOB-WIN-OPC-UA-DEB /MIR
ROBOCOPY %2 \\10.51.90.15\Steamware\IOB-WIN-OPC-UA-DEB /MIR
goto END