Impostata nuova gestione invio pezzi in blocco x Torri
This commit is contained in:
@@ -57,6 +57,8 @@ PZCOUNT_MODE=STD.DB1275.DBDW4
|
||||
DISABLE_PZCOUNT=TRUE
|
||||
ENABLE_DYN_DATA=TRUE
|
||||
FORCE_DYN_DATA=TRUE
|
||||
ENABLE_SEND_PZC_BLOCK=TRUE
|
||||
MAX_SEND_PZC_BLOCK=10
|
||||
|
||||
; conf parametri memoria READ/WRITE
|
||||
PARAM_CONF=VL24.json
|
||||
|
||||
+107
-2
@@ -273,6 +273,16 @@ namespace IOB_WIN
|
||||
/// Ultimo Override set letto
|
||||
/// </summary>
|
||||
public string lastOverrideRapid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Abilitazione invio pezzi "in blocco" per recupero contapezzi
|
||||
/// </summary>
|
||||
public bool enableSendPzCountBlock { get; set; } = false;
|
||||
/// <summary>
|
||||
/// Massimo numero di px da inviare in blocco
|
||||
/// </summary>
|
||||
public int maxSendPzCountBlock { get; set; } = 0;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Array dei contatori x segnali blinking
|
||||
@@ -603,6 +613,28 @@ namespace IOB_WIN
|
||||
protected virtual void loadMemConf()
|
||||
{
|
||||
lgInfo("BEGIN loadMemConf");
|
||||
// variabili x gestione send contapezzi in blocco
|
||||
string currPar = getOptPar("ENABLE_SEND_PZC_BLOCK");
|
||||
if (!string.IsNullOrEmpty(currPar))
|
||||
{
|
||||
bool enableSend = false;
|
||||
bool.TryParse(currPar, out enableSend);
|
||||
enableSendPzCountBlock = enableSend;
|
||||
// se abilitato leggo num pezzi da reinviare in blocco
|
||||
if (enableSendPzCountBlock)
|
||||
{
|
||||
currPar = getOptPar("MAX_SEND_PZC_BLOCK");
|
||||
if (!string.IsNullOrEmpty(currPar))
|
||||
{
|
||||
int numMax = 0;
|
||||
int.TryParse(currPar, out numMax);
|
||||
if (numMax > 0)
|
||||
{
|
||||
maxSendPzCountBlock = numMax;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// inizializzo LUT decodifica
|
||||
string jsonConf = getOptPar("PARAM_CONF");
|
||||
if (!string.IsNullOrEmpty(jsonConf))
|
||||
@@ -2169,6 +2201,44 @@ namespace IOB_WIN
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// URL per salvataggio contapezzi (quelli della macchina: PLC/CNC)...
|
||||
/// </summary>
|
||||
public string urlSetPzCountMAC
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "";
|
||||
try
|
||||
{
|
||||
answ = string.Format(@"http://{0}{1}{2}/setCounter/MAC_{3}?counter=", cIobConf.serverData.MPIP, cIobConf.serverData.MPURL, cIobConf.serverData.CMDALIVE, cIobConf.codIOB);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Errore in composizione urlSetPzCountMAC");
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// URL per INVIO IN BLOCCO di un INCREMENTO x contapezzi (quelli della macchina: PLC/CNC)...
|
||||
/// </summary>
|
||||
public string urlAddPzCount
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "";
|
||||
try
|
||||
{
|
||||
answ = string.Format(@"http://{0}{1}{2}/doPzCountInc/{3}?qty=", cIobConf.serverData.MPIP, cIobConf.serverData.MPURL, cIobConf.serverData.CMDALIVE, cIobConf.codIOB);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
lgError(exc, "Errore in composizione urlAddPzCount");
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// URL per salvataggio VALORI opzionali...
|
||||
/// </summary>
|
||||
public string urlSetOptVal
|
||||
@@ -3010,7 +3080,43 @@ namespace IOB_WIN
|
||||
accodaFLog(sVal, qEncodeFLog("PROG", currPrgName));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua verifica se abilitato invio pezzi in blocco e nel caso
|
||||
/// - invio in blocco pezzi
|
||||
/// - aggiornamento del contapezzi (passato come ref) x nuovo valore post invio
|
||||
/// </summary>
|
||||
/// <param name="contapezzi"></param>
|
||||
/// <param name="lastCountCNC"></param>
|
||||
public void trySendPzCountBlock(ref int contapezzi, int lastCountCNC)
|
||||
{
|
||||
int numIncr = 0;
|
||||
int qtyAdded = 0;
|
||||
int delta = lastCountCNC - contapezzi;
|
||||
// verifico se la funzione SIA abilitata
|
||||
if (enableSendPzCountBlock)
|
||||
{
|
||||
// se è abilitata verifico differenza: se ho DELTA > 3 --> invio un blocco <= maxSendPzCountBlock
|
||||
if (delta > 2)
|
||||
{
|
||||
numIncr = delta > maxSendPzCountBlock ? maxSendPzCountBlock : delta - 1;
|
||||
// invio il num max di pezzi ammesso in blocco!
|
||||
lgInfo($"Predisposizione chiamata incremento contapezzi in blocco per {numIncr} pezzi");
|
||||
string resp = utils.callUrlNow(urlAddPzCount + numIncr.ToString());
|
||||
if (!string.IsNullOrEmpty(resp))
|
||||
{
|
||||
lgInfo($"Risposta chiamata incremento contapezzi: {resp}");
|
||||
// dalla risposta (come numero) capisco SE ha aggiunto i pezzi (e quanti)
|
||||
int.TryParse(resp, out qtyAdded);
|
||||
if (qtyAdded > 0)
|
||||
{
|
||||
// incremento il contapezzi della quantità restituita e confermata
|
||||
contapezzi += qtyAdded;
|
||||
lgInfo($"Confermato incremento contapezzi interno a {contapezzi} post chiamata diretta");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Verifica se sia machcina multi = DoppioPallet da CONF
|
||||
/// </summary>
|
||||
@@ -3041,7 +3147,6 @@ namespace IOB_WIN
|
||||
/// <summary>
|
||||
/// Verifica e processing x gestione ODL automatica
|
||||
/// </summary>
|
||||
|
||||
public void processAutoOdl()
|
||||
{
|
||||
bool fatto = false;
|
||||
|
||||
+24
-11
@@ -157,11 +157,11 @@ namespace IOB_WIN
|
||||
{
|
||||
currODL = utils.callUrl(urlGetCurrODL);
|
||||
// solo SE HO un ODL...
|
||||
if (currODL == "" || currODL == "0")
|
||||
if (string.IsNullOrEmpty(currODL) || currODL == "0")
|
||||
{
|
||||
if (periodicLog)
|
||||
{
|
||||
lgInfo(string.Format("SiemensTorri | Lettura ODL andata a vuoto: currODL: {0}", currODL));
|
||||
lgInfo($"SiemensTorri | Lettura ODL andata a vuoto: currODL: {currODL}");
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -169,7 +169,7 @@ namespace IOB_WIN
|
||||
// se variato o scaduto timeout log...
|
||||
if (periodicLog || (currIdxODL.ToString() != currODL))
|
||||
{
|
||||
lgInfo(string.Format("SiemensTorri | Lettura ODL, currODL: {0} --> currIdxODL prec: {1}", currODL, currIdxODL));
|
||||
lgInfo($"SiemensTorri | Lettura ODL, currODL: {currODL} --> currIdxODL prec: {currIdxODL}");
|
||||
}
|
||||
// provo a salvare nuovo ODL
|
||||
int.TryParse(currODL, out currIdxODL);
|
||||
@@ -179,42 +179,53 @@ namespace IOB_WIN
|
||||
{
|
||||
if (DateTime.Now.Subtract(lastWarnODL).TotalSeconds > 15)
|
||||
{
|
||||
lgError(exc, "Errore in fase di chiamata URL x ODL corrente | URL chiamato: {0}", urlGetCurrODL);
|
||||
lgError(exc, $"Errore in fase di chiamata URL x ODL corrente | URL chiamato: {urlGetCurrODL}");
|
||||
lastWarnODL = DateTime.Now;
|
||||
}
|
||||
}
|
||||
if (currODL != null && currODL != "" && currODL != "0")
|
||||
if (!string.IsNullOrEmpty(currODL) && currODL != "0")
|
||||
{
|
||||
// ora processo il contapezzi...
|
||||
string retVal = "";
|
||||
// controllo se è passato intervallo minimo tra 2 controlli/elaborazioni x distanziare invio e ridurre letture
|
||||
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
|
||||
{
|
||||
// PRIMA salvo il contapezzi della macchina
|
||||
retVal = utils.callUrlNow(urlSetPzCountMAC + lastCountCNC.ToString());
|
||||
// verifica se tutto OK
|
||||
if (retVal != "OK")
|
||||
{
|
||||
// errore salvataggio contapezzi
|
||||
lgInfo($"Errore salvataggio Contapezzi PLC SIEMENST-TORRI: {lastCountCNC} | Contapezzi interno IOB {contapezzi} | Errore salvataggio: {retVal}");
|
||||
}
|
||||
|
||||
// se sono differenti MOSTRO...
|
||||
if (lastCountCNC != contapezzi)
|
||||
{
|
||||
// registro contapezzi
|
||||
lgInfo(string.Format("Differenza Contapezzi: CNC READ: {0} | Interno IOB {1}", lastCountCNC, contapezzi));
|
||||
lgInfo($"Differenza Contapezzi: CNC READ: {lastCountCNC} | Interno IOB {contapezzi}");
|
||||
}
|
||||
// verifico se variato contapezzi... e se passato ritardo minimo...
|
||||
if (lastCountCNC > contapezzi)
|
||||
{
|
||||
trySendPzCountBlock(ref contapezzi, lastCountCNC);
|
||||
// salvo nuovo contapezzi (incremento di 1...)
|
||||
contapezzi++;
|
||||
// salvo in semaforo!
|
||||
B_input += 1 << 2;
|
||||
// registro contapezzi
|
||||
lgInfo(string.Format("Contapezzi SIEMENST-TORRI: {0} | Contapezzi interno IOB {1}", lastCountCNC, contapezzi));
|
||||
lgInfo($"Contapezzi SIEMENST-TORRI: {lastCountCNC} | Contapezzi interno IOB {contapezzi}");
|
||||
}
|
||||
|
||||
// invio a server contapezzi (aggiornato)
|
||||
string retVal = utils.callUrl(urlSetPzCount + contapezzi.ToString());
|
||||
retVal = utils.callUrlNow(urlSetPzCount + contapezzi.ToString());
|
||||
// verifica se tutto OK
|
||||
if (retVal != "OK")
|
||||
{
|
||||
// errore salvataggio contapezzi
|
||||
lgInfo(string.Format("Errore salvataggio Contapezzi SIEMENST-TORRI: {0} | Contapezzi interno IOB {1} | Errore salvataggio: {2}", lastCountCNC, contapezzi, retVal));
|
||||
lgInfo($"Errore salvataggio Contapezzi SIEMENST-TORRI: {lastCountCNC} | Contapezzi interno IOB {contapezzi} | Errore salvataggio: {retVal}");
|
||||
}
|
||||
|
||||
// resetto timer...
|
||||
lastPzCountSend = DateTime.Now;
|
||||
}
|
||||
@@ -223,7 +234,7 @@ namespace IOB_WIN
|
||||
{
|
||||
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
|
||||
{
|
||||
lgInfo(string.Format("Attenzione: mancanza ODL non procedo con gestione contapezzi. Contapezzi SIEMENST-TORRI: {0} | Contapezzi interno {1}", lastCountCNC, contapezzi));
|
||||
lgInfo($"Attenzione: mancanza ODL non procedo con gestione contapezzi. Contapezzi SIEMENST-TORRI: {lastCountCNC} | Contapezzi interno {contapezzi}");
|
||||
// resetto timer...
|
||||
lastPzCountSend = DateTime.Now;
|
||||
}
|
||||
@@ -232,9 +243,11 @@ namespace IOB_WIN
|
||||
// log opzionale!
|
||||
if (verboseLog)
|
||||
{
|
||||
lgInfo(string.Format("Trasformazione B_input: {0}", B_input));
|
||||
lgInfo("Trasformazione B_input: {B_input}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Recupero programma in lavorazione
|
||||
/// </summary>
|
||||
|
||||
Vendored
+1
-1
@@ -16,7 +16,7 @@ pipeline {
|
||||
|
||||
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
|
||||
script {
|
||||
withEnv(['NEXT_BUILD_NUMBER=588']) {
|
||||
withEnv(['NEXT_BUILD_NUMBER=589']) {
|
||||
// env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
|
||||
env.versionNumber = VersionNumber(versionNumberString : '2.6.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
|
||||
env.APP_NAME = 'MAPO-IOB-WIN'
|
||||
|
||||
Reference in New Issue
Block a user