diff --git a/IOB-WIN/DATA/CONF/3001.ini b/IOB-WIN/DATA/CONF/3001.ini index 2c688b2a..b3bfc0f4 100644 --- a/IOB-WIN/DATA/CONF/3001.ini +++ b/IOB-WIN/DATA/CONF/3001.ini @@ -65,7 +65,8 @@ BLINK_FILT=0 PZCOUNT_MODE=STD.D.6416.DW PZREQ_MODE=STD.D.6412.DW PZCAD_MODE=STD.D.6408.DW -PZGTOT_MODE=STD.D.6420.DW +PZGTOT_MODE=STD.D.6420.DW +ENABLE_PZ_RESET=TRUE ;PZ_DONE_MADDR=1604; pz fatti ;PZ_REQ_MADDR=1603; pz richiesti (DW) ;PZ_CAD_MADDR=1602; cad diff --git a/IOB-WIN/DATA/CONF/3002.ini b/IOB-WIN/DATA/CONF/3002.ini index b3e4371b..b99334d9 100644 --- a/IOB-WIN/DATA/CONF/3002.ini +++ b/IOB-WIN/DATA/CONF/3002.ini @@ -66,6 +66,7 @@ PZCOUNT_MODE=STD.D.6416.DW PZREQ_MODE=STD.D.6412.DW PZCAD_MODE=STD.D.6408.DW PZGTOT_MODE=STD.D.6420.DW +ENABLE_PZ_RESET=TRUE ;PZ_DONE_MADDR=1604; pz fatti ;PZ_REQ_MADDR=1603; pz richiesti (DW) ;PZ_CAD_MADDR=1602; cad diff --git a/IOB-WIN/DATA/CONF/3003.ini b/IOB-WIN/DATA/CONF/3003.ini index 5e6a4089..178c2615 100644 --- a/IOB-WIN/DATA/CONF/3003.ini +++ b/IOB-WIN/DATA/CONF/3003.ini @@ -61,7 +61,8 @@ BLINK_FILT=0 [OPTPAR] ;PZCOUNT_MODE=STD|BIT -PZCOUNT_MODE=STD.PAR.6711 +PZCOUNT_MODE=STD.PAR.6711 +ENABLE_PZ_RESET=TRUE ;PZ_CAD_MADDR=1602 ;PZ_REQ_MADDR=1603 ;PZ_DONE_MADDR=1604 diff --git a/IOB-WIN/DATA/CONF/MAIN.ini b/IOB-WIN/DATA/CONF/MAIN.ini index 7906162c..54cefa3b 100644 --- a/IOB-WIN/DATA/CONF/MAIN.ini +++ b/IOB-WIN/DATA/CONF/MAIN.ini @@ -3,16 +3,16 @@ NAME=master [SERVER] -MPIP=192.168.1.7 -;MPIP=10.74.82.218 +;MPIP=192.168.1.7 +MPIP=10.74.82.218 MPURL=/MP/IO CMDREBO=/IOB/sendRebootGateway?GWIP= CMDIOB2CALL=/IOB/getIob2call?GWIP= [IOB] ;--- TEST SIMULAZIONE -STARTLIST=3010 -;STARTLIST=SIMUL_01 +;STARTLIST=3010 +STARTLIST=SIMUL_01 ;STARTLIST=3015 ;STARTLIST=SIMUL_05,SIMUL_06,SIMUL_07,SIMUL_08,SIM_DP_01,SIM_DP_02 diff --git a/IOB-WIN/DATA/CONF/SIMUL_01.ini b/IOB-WIN/DATA/CONF/SIMUL_01.ini index 0f120c98..25a85e10 100644 --- a/IOB-WIN/DATA/CONF/SIMUL_01.ini +++ b/IOB-WIN/DATA/CONF/SIMUL_01.ini @@ -29,7 +29,8 @@ BLINK_FILT=0 [OPTPAR] ;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice -PZCOUNT_MODE=BIT +PZCOUNT_MODE=BIT +ENABLE_PZ_RESET=TRUE ; per il simulatore: 50|1 = WAIT 50, DURATION 1 con riferimento al PERIODO base (PER_BASE in ms, default 1 secondo) PER_BASE=1200 SIM_PZCNT=5|1 diff --git a/IOB-WIN/IobFanuc.cs b/IOB-WIN/IobFanuc.cs index 199c5afe..da195e17 100644 --- a/IOB-WIN/IobFanuc.cs +++ b/IOB-WIN/IobFanuc.cs @@ -289,16 +289,100 @@ namespace IOB_WIN return answ; } /// - /// Effettua effettvo reset del contapezzi + /// Effettua reset del contapezzi /// /// public override bool resetContapezziCNC() { bool answ = false; - // ...SE abilitato da conf IOB - if (false) + // ...SE abilitato da conf IOB + if (cIobConf.optPar.Count > 0 && cIobConf.optPar["ENABLE_PZ_RESET"] == "TRUE") { - // scrivo valore 0 nel parametro o nell'area D + // scrivo valore 0 x il contapezzi + try + { + // controllo di AVERE parametri opzionali x conteggi vari + if (cIobConf.optPar.Count > 0) + { + // contapezzi ATTUALE + if (cIobConf.optPar["PZCOUNT_MODE"] != "") + { + // verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con indicazione area) + string memAddr = cIobConf.optPar["PZCOUNT_MODE"]; + if (memAddr.StartsWith("STD")) + { + // inizio verifica area memoria/parametro levando prima parte codice + memAddr = memAddr.Replace("STD.", ""); + // var di appoggio + int cntAddr = 0; + // var contapezzi a zero.... + object newVal = new object(); + newVal = 0; + // verifico se si tratta di lettura parametro... formato tipo STD.PAR.6711 + if (memAddr.StartsWith("PAR.")) + { + // recupero parametro... + int.TryParse(memAddr.Replace("PAR.", ""), out cntAddr); + if (cntAddr == 0) + { + cntAddr = 6711; + } + + // processo RESET contapezzi (lavorati) + stopwatch.Restart(); + FANUC_ref.F_RW_Param_Integer(true, cntAddr, 3, ref newVal); + if (utils.CRB("recTime")) + { + TimingData.addResult(cIobConf.codIOB, string.Format("W{0}-PAR", 4), stopwatch.ElapsedTicks); + } + } + // altrimenti se legge da area memoria specifica leggo da li... formto tipo STD.D.1604.DW + else + { + memAddressFanuc areaCounter = new memAddressFanuc(memAddr); + + if (utils.CRB("verbose")) + { + lgInfo("[0] area memoria: {0}.{1}.{2}", areaCounter.mType, areaCounter.mPos, areaCounter.vType); + } + // leggo! + stopwatch.Restart(); + // switch x tipo dati --> tipo lettura... e salvo ultimo conteggio rilevato + switch (areaCounter.vType) + { + case "B": + byte valB = 0; + FANUC_ref.F_RW_Byte(true, areaCounter.mType, areaCounter.mPos, ref valB); + newVal = valB; + break; + case "D": + ushort valW = 0; + FANUC_ref.F_RW_Word(true, areaCounter.mType, areaCounter.mPos, ref valW); + newVal = valW; + break; + case "DW": + uint valDW = 0; + FANUC_ref.F_RW_DWord(true, areaCounter.mType, areaCounter.mPos, ref valDW); + break; + default: + break; + } + if (utils.CRB("recTime")) + { + TimingData.addResult(cIobConf.codIOB, string.Format("W-{0}.{1}.{2}", areaCounter.mType, areaCounter.mPos, areaCounter.vType), stopwatch.ElapsedTicks); + } + } + stopwatch.Stop(); + } + } + } + } + catch (Exception exc) + { + lgError(exc, "Errore in RESET contapezzi FANUC"); + connectionOk = false; + } + answ = true; } return answ; } diff --git a/IOB-WIN/IobGeneric.cs b/IOB-WIN/IobGeneric.cs index 44d03ccd..92aa3699 100644 --- a/IOB-WIN/IobGeneric.cs +++ b/IOB-WIN/IobGeneric.cs @@ -833,13 +833,37 @@ namespace IOB_WIN /// /// public virtual Dictionary executeTasks(Dictionary task2exe) - { - // di default segno NOT IMPLEMENTED... + { + // Verificare il protocollo: dovrebeb togliere SOLO i task eseguiti... Dictionary taskDone = new Dictionary(); + bool taskOk = false; + string taskVal = ""; + // cerco task specifici: se ho startSetup --> imposto bit DBB701.DBB0.4 foreach (var item in task2exe) { - taskDone.Add(item.Key, "SKIPPED | NO EXEC"); + taskOk = false; + taskVal = ""; + // controllo sulal KEY + switch (item.Key) + { + case "startSetup": + // reset contapezzi inizio setup + taskOk = resetContapezziCNC(); + taskVal = taskOk ? "RESET: SETUP START" : "PZ RESET DISABLED | NO EXEC"; + break; + case "stopSetup": + // reset contapezzi fine setup + taskOk = resetContapezziCNC(); + taskVal = taskOk ? "RESET: SETUP END" : "PZ RESET DISABLED | NO EXEC"; + break; + default: + // anche se non faccio nulla SEGNO con value = SKIPPED + taskVal = "SKIPPED | NO EXEC"; + break; + } + taskDone.Add(item.Key, taskVal); } + return taskDone; } /// diff --git a/IOB-WIN/IobSiemensTorri.cs b/IOB-WIN/IobSiemensTorri.cs index c54073a8..71352a8c 100644 --- a/IOB-WIN/IobSiemensTorri.cs +++ b/IOB-WIN/IobSiemensTorri.cs @@ -38,6 +38,7 @@ namespace IOB_WIN // inizio con 1 byte VUOTO byte[] MemBlock = new byte[1]; + string taskVal = ""; // cerco task specifici: se ho startSetup --> imposto bit DBB701.DBB0.4 foreach (var item in task2exe) { @@ -56,22 +57,24 @@ namespace IOB_WIN // anche se non faccio nulla SEGNO con value = NOT DONE break; } -#endif +#endif + taskVal = ""; // controllo sulal KEY switch (item.Key) { case "startSetup": MemBlock[0] += (1 << 4); - answ.Add(item.Key, "VALUE DB701.0.4 --> 1"); + taskVal = "VALUE DB701.0.4 --> 1"; break; case "stopSetup": - answ.Add(item.Key, "VALUE DB701.0.4 --> 0"); + taskVal = "VALUE DB701.0.4 --> 0"; break; default: // anche se non faccio nulla SEGNO con value = NOT DONE - answ.Add(item.Key, "UNKNOWN KEY | NO EXEC"); + taskVal = "UNKNOWN KEY | NO EXEC"; break; } + answ.Add(item.Key, taskVal); } // scrivo comunque! bool fatto = S7WriteBB(ref MemBlock); diff --git a/IOB-WIN/IobSimula.cs b/IOB-WIN/IobSimula.cs index b6ab76bb..8d23b993 100644 --- a/IOB-WIN/IobSimula.cs +++ b/IOB-WIN/IobSimula.cs @@ -100,6 +100,21 @@ namespace IOB_WIN bit4 = setupSimPar("SIM_MANU"); bit5 = setupSimPar("SIM_SLOW"); } + } + /// + /// Effettua reset del contapezzi + /// + /// + public override bool resetContapezziCNC() + { + bool answ = false; + // ...SE abilitato da conf IOB + if (cIobConf.optPar.Count > 0 && cIobConf.optPar["ENABLE_PZ_RESET"] == "TRUE") + { + // fingo di aver fatto... + answ = true; + } + return answ; } /// /// Setup aprametri di simulazione per BIT indicato diff --git a/Jenkinsfile b/Jenkinsfile index 1a037a0e..92edfc18 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=367']) { + withEnv(['NEXT_BUILD_NUMBER=369']) { // env.versionNumber = VersionNumber(versionNumberString : '2.2.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '2.2.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN'