diff --git a/Thermo.Active.NC/NcAdapter.cs b/Thermo.Active.NC/NcAdapter.cs index c551b726..326228bb 100644 --- a/Thermo.Active.NC/NcAdapter.cs +++ b/Thermo.Active.NC/NcAdapter.cs @@ -1449,10 +1449,24 @@ namespace Thermo.Active.NC { currentProdPanel.LastCadenza = Math.Round((double)3600000 / lastProdInfoData.TimeCycleGross, 2); } + // se il valore SALVATO รจ > 3 * valore rilevato --> uso SOLO ultimo + if (lastCycle > 3 * currentProdPanel.LastCadenza) + { + lastCycle = currentProdPanel.LastCadenza; + } + // altrimenti EWMA da parametro calcolato standard, default 50% + else + { + //lastCycle = 0.5 * lastCycle + 0.5 * lastDuration; + lastCycle = ewmaLambda * currentProdPanel.LastCadenza + (1 - ewmaLambda) * lastCycle; + } + // salvo anche nei live data della ricetta... + RecipeLiveData.TC_last = lastCycle; + // stima durata da pz fatti... //currentProdPanel.StimaDurata = Math.Round((currentProdPanel.NumTarget - currentProdPanel.NumDone) * currentProdPanel.LastTCiclo, 2); - // 2020.09.03 uso dati da ricetta corrente... stimata con EWMA - currentProdPanel.StimaDurata = Math.Round((currentProdPanel.NumTarget - currentProdPanel.NumDone) * RecipeLiveData.TC_last, 2); + // 2020.09.03 uso dati da ricetta corrente... stimata con EWMA, in SECONDI! + currentProdPanel.StimaDurata = Math.Round((currentProdPanel.NumTarget - currentProdPanel.NumDone) * lastCycle, 2) ; // se stima negativa (+ pezzi di quanti richiesti...) --> ZERO! currentProdPanel.StimaDurata = currentProdPanel.StimaDurata < 0 ? 0 : currentProdPanel.StimaDurata; } @@ -1507,6 +1521,7 @@ namespace Thermo.Active.NC try { currentProdPanel.InizioProd = prodInfoFirst.FirstOrDefault().DtEvent; + lottoStart = currentProdPanel.InizioProd; } catch { }