diff --git a/MP-IO/Controllers/IOBController.cs b/MP-IO/Controllers/IOBController.cs index 3983b4ed..c37a896f 100644 --- a/MP-IO/Controllers/IOBController.cs +++ b/MP-IO/Controllers/IOBController.cs @@ -223,10 +223,12 @@ namespace MP_IO.Controllers } /// /// AGGIUNGE TASK richiesto x macchina: - /// - /// GET: IOB/addTask2Exe/SIMUL_03?taskName=T180326160502&taskVal=setPrg:PRG001 + /// /// GET: IOB/addTask2Exe/3010?taskName=startSetup&taskVal=T190406101512 /// GET: IOB/addTask2Exe/3010?taskName=stopSetup&taskVal=T190406101512 + /// GET: IOB/addTask2Exe/SIMUL_03?taskName=setProg&taskVal=P00000001 + /// GET: IOB/addTask2Exe/SIMUL_03?taskName=setComm&taskVal=ODL_0000123 + /// GET: IOB/addTask2Exe/SIMUL_03?taskName=setArt&taskVal=ART_0000321 /// /// /// @@ -240,7 +242,17 @@ namespace MP_IO.Controllers connDb.scriviKeepAlive(id, DateTime.Now); try { - DataLayer.addTask4Machine(id, taskName, taskVal); + // converto stringa in tipo task... + taskType tName = taskType.nihil; + bool fatto = Enum.TryParse(taskName, out tName); + if (fatto) + { + DataLayer.addTask4Machine(id, tName, taskVal); + } + else + { + logger.lg.scriviLog($"addTask2Exe: impossibile riconoscere il comando {taskName} come uno deitipi ammessi, NON aggiunto", tipoLog.ERROR); + } answ = getTask2Exe(id); } catch diff --git a/MP-TAB/WebUserControls/mod_ODL.ascx b/MP-TAB/WebUserControls/mod_ODL.ascx index fc54b946..cf0534e1 100644 --- a/MP-TAB/WebUserControls/mod_ODL.ascx +++ b/MP-TAB/WebUserControls/mod_ODL.ascx @@ -104,6 +104,11 @@ Effettua Riattrezzaggio +
+
+ Fix chiusura attrezzaggio (PLC) +
+
diff --git a/MP-TAB/WebUserControls/mod_ODL.ascx.cs b/MP-TAB/WebUserControls/mod_ODL.ascx.cs index 44fc55e3..4513e04b 100644 --- a/MP-TAB/WebUserControls/mod_ODL.ascx.cs +++ b/MP-TAB/WebUserControls/mod_ODL.ascx.cs @@ -435,6 +435,7 @@ namespace MoonProTablet.WebUserControls divOpRiattr.Visible = (showSplitOdlOnTavVal || showReopOdlTav); lbtSplitOdlSuTav.Visible = showSplitOdlOnTavVal; lbtReopOdlSuTav.Visible = showReopOdlTav; + lbtFixEndSetup.Visible = !maccInAttr && memLayer.ML.CRB("OptEnableFixSetup"); } /// /// Sistema CSS x status enabled/disabled @@ -712,9 +713,12 @@ namespace MoonProTablet.WebUserControls StringBuilder sb = new StringBuilder(); sb.AppendLine(String.Format(evText, idxODL_curr)); processaEvento(idxMacchina, idxEvento, sb.ToString(), idxODL_curr); - // indico INIZIO SETUP su REDIS coem EXE della macchina... + // indico INIZIO SETUP su REDIS come EXE della macchina... string ts = string.Format("{0:yyMMdd}T{0:HHmmss.fff}Z", DateTime.Now); - DataLayer.addTask4Machine(idxMacchina, "startSetup", $"TS:{ts}|MATR:{DataLayer.MatrOpr}|ODL:{idxODL_curr}"); +#if false + //DataLayer.addTask4Machine(idxMacchina, "startSetup", $"TS:{ts}|MATR:{DataLayer.MatrOpr}|ODL:{idxODL_curr}"); +#endif + DataLayer.addTask4Machine(idxMacchina, taskType.startSetup, $"TS:{ts}|MATR:{DataLayer.MatrOpr}|ODL:{idxODL_curr}"); // se è multi CHIUDO ODL x altra tavola... if (isMulti) { @@ -793,9 +797,10 @@ namespace MoonProTablet.WebUserControls StringBuilder sb = new StringBuilder(); sb.AppendLine(String.Format(evText, idxODL)); processaEvento(idxMacchina, idxEvento, sb.ToString(), idxODL); - // indico INIZIO SETUP su REDIS coem EXE della macchina... + // indico INIZIO SETUP su REDIS come EXE della macchina... string ts = string.Format("{0:yyMMdd}T{0:HHmmss.fff}Z", DateTime.Now); - DataLayer.addTask4Machine(idxMacchina, "stopSetup", $"TS:{ts}|MATR:{DataLayer.MatrOpr}|ODL:{idxODL}"); + //DataLayer.addTask4Machine(idxMacchina, "stopSetup", $"TS:{ts}|MATR:{DataLayer.MatrOpr}|ODL:{idxODL}"); + DataLayer.addTask4Machine(idxMacchina, taskType.stopSetup, $"TS:{ts}|MATR:{DataLayer.MatrOpr}|ODL:{idxODL}"); // se è multi processo chiusura setup x altra tavola... if (isMulti) { @@ -1183,5 +1188,14 @@ namespace MoonProTablet.WebUserControls { odsODL.DataBind(); } + + protected void lbtFixEndSetup_Click(object sender, EventArgs e) + { + string ts = string.Format("{0:yyMMdd}T{0:HHmmss.fff}Z", DateTime.Now); + string outData = $"TS:{ts}|MATR:{DataLayer.MatrOpr}|ODL:{idxOdlMacc}"; + DataLayer.addTask4Machine(idxMacchina, taskType.fixStopSetup, outData); + outData = "Inserita richiesta invio Fix chiusura attrezzaggio " + outData; + lblOut.Text = outData; + } } } \ No newline at end of file diff --git a/MP-TAB/WebUserControls/mod_ODL.ascx.designer.cs b/MP-TAB/WebUserControls/mod_ODL.ascx.designer.cs index 719d6986..f9bd9b73 100644 --- a/MP-TAB/WebUserControls/mod_ODL.ascx.designer.cs +++ b/MP-TAB/WebUserControls/mod_ODL.ascx.designer.cs @@ -237,6 +237,15 @@ namespace MoonProTablet.WebUserControls { /// protected global::System.Web.UI.WebControls.LinkButton lbtSplitODL; + /// + /// Controllo lbtFixEndSetup. + /// + /// + /// Campo generato automaticamente. + /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind. + /// + protected global::System.Web.UI.WebControls.LinkButton lbtFixEndSetup; + /// /// Controllo divOdlProvv. /// diff --git a/MapoDb/DataLayer.cs b/MapoDb/DataLayer.cs index ef4a7c9c..a7c46640 100644 --- a/MapoDb/DataLayer.cs +++ b/MapoDb/DataLayer.cs @@ -1148,7 +1148,30 @@ namespace MapoDb } return answ; } - + /// + /// Aggiunge un task all'elenco di quelli salvati (in modalità upsert) + /// + /// + /// + /// + /// + public static bool addTask4Machine(string idxMacchina, taskType taskKey, string taskVal) + { + bool answ = false; + string currHash = exeTaskHash(idxMacchina); + try + { + // leggo task attuali... + var currTask = mTaskMacchina(idxMacchina); + currTask[taskKey.ToString()] = taskVal; + answ = memLayer.ML.redSaveHashDict(currHash, currTask); + logger.lg.scriviLog($"Task ADD - idxMacchina: {idxMacchina} | taskKey: {taskKey.ToString()} | taskVal: {taskVal}"); + } + catch + { } + return answ; + } +#if false /// /// Aggiunge un task all'elenco di quelli salvati (in modalità upsert) /// @@ -1166,12 +1189,13 @@ namespace MapoDb var currTask = mTaskMacchina(idxMacchina); currTask[taskKey] = taskVal; answ = memLayer.ML.redSaveHashDict(currHash, currTask); - logger.lg.scriviLog($"Task ADD - idxMacchina: {idxMacchina} | taskKey: {taskKey} | taskVal: {taskVal}"); + logger.lg.scriviLog($"Task ADD - idxMacchina: {idxMacchina} | taskKey: {taskKey} | taskVal: {taskVal}"); } catch { } return answ; - } + } +#endif /// /// RIMUOVE un task dall'elenco di quelli salvati /// @@ -1925,6 +1949,52 @@ namespace MapoDb } } +/// +/// Elenco task ammessi (x IOB-WIN da eseguire...) +/// +public enum taskType +{ + /// + /// Task nullo / fake + /// + nihil, + /// + /// Rimanda a PLC eventuale segnale NON in setup (MA NON RESETTA) + /// + fixStopSetup, + /// + /// Indica al PLC di forzare il reset del contapezzi + /// + forceResetPzCount, + /// + /// Indica al PLC di forzare il NUOVO valore di contapezzi (impostato come value) + /// + forceSetPzCount, + /// + /// Imposta Articolo su PLC + /// + setArt, + /// + /// Imposta Commessa su PLC + /// + setComm, + /// + /// Set Programma CNC su PLC + /// + setProg, + /// + /// Indica al PLC iniziato setup (e secondo casi ferma contapezzi /resetta) + /// + startSetup, + /// + /// Indica al PLC finito setup (e secondo casi ferma contapezzi /resetta) + /// + stopSetup, + /// + /// Richiesta invio watchdog a PLC + /// + sendWatchDogMes2Plc +} public enum tipoSelettore { articoli diff --git a/MapoDb/utility.cs b/MapoDb/utility.cs index 7db5c50b..c15e7c71 100644 --- a/MapoDb/utility.cs +++ b/MapoDb/utility.cs @@ -230,6 +230,8 @@ public class utility #endregion } + + public enum tipoBarcode { ///