From e54d3632543bc6f79d10edf8135c3d89ca6b51cf Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 27 Apr 2018 21:42:48 +0200 Subject: [PATCH] update lettura area di memoria generica x counter + cambio nome var memoria --- IOB-WIN/DATA/CONF/3002.ini | 12 +++--- IOB-WIN/IobFanuc.cs | 76 +++++++++++++++++++++------------ IOB-WIN/IobSiemensTorri.cs | 2 +- IOB-WIN/memAddress.cs | 87 ++++++++++++++++++++++++++++++++++++-- Jenkinsfile | 2 +- 5 files changed, 141 insertions(+), 38 deletions(-) diff --git a/IOB-WIN/DATA/CONF/3002.ini b/IOB-WIN/DATA/CONF/3002.ini index cc3b9540..1339617b 100644 --- a/IOB-WIN/DATA/CONF/3002.ini +++ b/IOB-WIN/DATA/CONF/3002.ini @@ -59,12 +59,12 @@ BLINK_FILT=0 ;BLINK_FILT=28 [OPTPAR] -;PZCOUNT_MODE=STD|BIT.indice -PZCOUNT_MODE=STD.D.DW.1604 ;contapezzi.area.indice.tipo_mem -PZ_CAD_MADDR=1602; cad -PZ_REQ_MADDR=1603; pz richiesti (DW) -PZ_DONE_MADDR=1604; pz fatti -PZ_GTOT_MADDR=1605; pz tot macchina +;PZCOUNT_MODE=STD.[PAR/MEM].info|BIT.indice +PZCOUNT_MODE=STD.D.1604.DW;contapezzi.area.indice.tipo_mem +;PZ_CAD_MADDR=1602; cad +;PZ_REQ_MADDR=1603; pz richiesti (DW) +;PZ_DONE_MADDR=1604; pz fatti +;PZ_GTOT_MADDR=1605; pz tot macchina [BRANCH] NAME=develop \ No newline at end of file diff --git a/IOB-WIN/IobFanuc.cs b/IOB-WIN/IobFanuc.cs index 8f6fa233..fc73448f 100644 --- a/IOB-WIN/IobFanuc.cs +++ b/IOB-WIN/IobFanuc.cs @@ -106,23 +106,23 @@ namespace IOB_WIN /// /// Dati dell'area D /// - protected memAddressFanuc areaD; + protected memAreaFanuc areaD; /// /// Dati dell'area PARameters /// - protected memAddressFanuc areaPAR; + protected memAreaFanuc areaPAR; /// /// Dati dell'area R /// - protected memAddressFanuc areaR; + protected memAreaFanuc areaR; /// /// Dati dell'area X /// - protected memAddressFanuc areaX; + protected memAreaFanuc areaX; /// /// Dati dell'area Y /// - protected memAddressFanuc areaY; + protected memAreaFanuc areaY; /// /// estende l'init della classe base... @@ -155,31 +155,31 @@ namespace IOB_WIN enablePrgName = fIni.ReadBoolean("CNC", "GETPRGNAME", true); // salvo le aree X-Y-D (per dump/sample/ottimizzazione lettura) - areaD = new memAddressFanuc + areaD = new memAreaFanuc { areaName = "AreaD", startIdx = fIni.ReadInteger("MEMORY", "AREAD_START", 0), arraySize = fIni.ReadInteger("MEMORY", "AREAD_SIZE", 0) }; - areaPAR = new memAddressFanuc + areaPAR = new memAreaFanuc { areaName = "AreaPARR", startIdx = fIni.ReadInteger("MEMORY", "PAR_START", 0), arraySize = fIni.ReadInteger("MEMORY", "PAR_SIZE", 0) }; - areaR = new memAddressFanuc + areaR = new memAreaFanuc { areaName = "AreaR", startIdx = fIni.ReadInteger("MEMORY", "AREAR_START", 0), arraySize = fIni.ReadInteger("MEMORY", "AREAR_SIZE", 0) }; - areaX = new memAddressFanuc + areaX = new memAreaFanuc { areaName = "AreaX", startIdx = fIni.ReadInteger("MEMORY", "AREAX_START", 0), arraySize = fIni.ReadInteger("MEMORY", "AREAX_SIZE", 0) }; - areaY = new memAddressFanuc + areaY = new memAreaFanuc { areaName = "AreaY", startIdx = fIni.ReadInteger("MEMORY", "AREAY_START", 0), @@ -642,14 +642,15 @@ namespace IOB_WIN // verifico quale modalità sia richiesta: STD (6711) oppure BIT (Custom, con indicazione area) if (currIobConf.optPar.Count > 0 && currIobConf.optPar["PZCOUNT_MODE"] != "") { - if (currIobConf.optPar["PZCOUNT_MODE"].StartsWith("STD")) + string memAddr = currIobConf.optPar["PZCOUNT_MODE"]; + if (memAddr.StartsWith("STD")) { + // inizio verifica area memoria/parametro levando prima parte codice + memAddr = memAddr.Replace("STD.", ""); // var di appoggio - object output = new object(); int cntAddr = 0; - // inizio verifica area memoria/parametro levando prima aprte codice - string memAddr = currIobConf.optPar["PZCOUNT_MODE"].Replace("STD.", ""); - // verifico se si tratta di lettura parametro... + object outputVal = new object(); + // verifico se si tratta di lettura parametro... formatp tipo STD.PAR.6711 if (memAddr.StartsWith("PAR.")) { // recupero parametro... @@ -658,22 +659,45 @@ namespace IOB_WIN // processo parametro contapezzi (lavorati) stopwatch.Restart(); - FANUC_ref.F_RW_Param_Integer(false, cntAddr, 3, ref output); + FANUC_ref.F_RW_Param_Integer(false, cntAddr, 3, ref outputVal); if (utils.CRB("recTime")) TimingData.addResult(currIobConf.codIOB, string.Format("R{0}-PAR", 4), stopwatch.ElapsedTicks); + + // salvo ultimo conteggio rilevato + Int32.TryParse(outputVal.ToString(), out lastCountCNC); } - // altrimenti se legge da area memoria specifica leggo da li... + // altrimenti se legge da area memoria specifica leggo da li... formto tipo STD.D.1604.DW else { - // in primis AREA di memoria... - string area = memAddr.Substring(0, memAddr.IndexOf(".")); - memAddr = memAddr.Replace(area + ".", ""); - // poi controllo tipo di memoria - string tipo = ""; - // infine recupero indirizzo... - } + memAddressFanuc areaCounter = new memAddressFanuc(memAddr); - // salvo ultimo conteggio rilevato - Int32.TryParse(output.ToString(), out lastCountCNC); + // 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(false, areaCounter.mType, areaCounter.mPos, ref valB); + outputVal = valB; + break; + case "D": + ushort valW = 0; + FANUC_ref.F_RW_Word(false, areaCounter.mType, areaCounter.mPos, ref valW); + outputVal = valW; + break; + case "DW": + uint valDW = 0; + FANUC_ref.F_RW_DWord(false, areaCounter.mType, areaCounter.mPos, ref valDW); + outputVal = valDW; + break; + default: + break; + } + if (utils.CRB("recTime")) TimingData.addResult(currIobConf.codIOB, string.Format("R-{0}.{1}.{2}", areaCounter.mType, areaCounter.mPos, areaCounter.vType), stopwatch.ElapsedTicks); + + // salvo... + Int32.TryParse(outputVal.ToString(), out lastCountCNC); + } stopwatch.Stop(); } } diff --git a/IOB-WIN/IobSiemensTorri.cs b/IOB-WIN/IobSiemensTorri.cs index d10a4daf..e4bfa9cb 100644 --- a/IOB-WIN/IobSiemensTorri.cs +++ b/IOB-WIN/IobSiemensTorri.cs @@ -71,7 +71,7 @@ namespace IOB_WIN if (testCncConn()) { // decodifico memoria... - memAddressSiemens memoria = new memAddressSiemens(parametri.memAddrRead); + memAreaSiemens memoria = new memAreaSiemens(parametri.memAddrRead); int numByte = parametri.memSizeRead; Byte[] memByteRead = currPLC.ReadBytes(DataType.DataBlock, memoria.DbNum, memoria.indiceMem, numByte); // copio in value, sennò do errore... diff --git a/IOB-WIN/memAddress.cs b/IOB-WIN/memAddress.cs index 5c5b0949..f547d6f6 100644 --- a/IOB-WIN/memAddress.cs +++ b/IOB-WIN/memAddress.cs @@ -1,4 +1,5 @@ -using System; +using CncLib.CNC; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -9,7 +10,7 @@ namespace IOB_WIN /// /// Definizione area memoria SIEMENS /// - public class memAddressSiemens + public class memAreaSiemens { /// /// Indice DB @@ -27,7 +28,7 @@ namespace IOB_WIN /// Inizializza da un formato stringa /// /// - public memAddressSiemens(string strFormat) + public memAreaSiemens(string strFormat) { string[] memComp = strFormat.Split('.'); int.TryParse(memComp[0].Replace("DB", ""), out DbNum); @@ -39,7 +40,7 @@ namespace IOB_WIN /// /// Definizione area memoria FANUC /// - public class memAddressFanuc + public class memAreaFanuc { /// /// Nome area memoria @@ -54,4 +55,82 @@ namespace IOB_WIN /// public int arraySize; } + /// + /// Definizione indirizzo memoria FANUC + /// + public class memAddressFanuc + { + /// + /// Tipo memoria + /// + public FANUC.MemType mType; + /// + /// Posizione memoria + /// + public int mPos; + /// + /// Tipo valore + /// + public string vType; + /// + /// Inizializza da un formato stringa + /// + /// Stringa TipoMem.Indice.DimMem (es D.1604.DW) + public memAddressFanuc(string strFormat) + { + string[] memComp = strFormat.Split('.'); + switch (memComp[0]) + { + case "A": + mType = FANUC.MemType.A; + break; + case "C": + mType = FANUC.MemType.C; + break; + case "CM": + mType = FANUC.MemType.CM; + break; + case "D": + mType = FANUC.MemType.D; + break; + case "E": + mType = FANUC.MemType.E; + break; + case "F": + mType = FANUC.MemType.F; + break; + case "G": + mType = FANUC.MemType.G; + break; + case "K": + mType = FANUC.MemType.K; + break; + case "M": + mType = FANUC.MemType.M; + break; + case "N": + mType = FANUC.MemType.N; + break; + case "R": + mType = FANUC.MemType.R; + break; + case "T": + mType = FANUC.MemType.T; + break; + case "X": + mType = FANUC.MemType.X; + break; + case "Y": + mType = FANUC.MemType.Y; + break; + case "Z": + mType = FANUC.MemType.Z; + break; + default: + break; + } + int.TryParse(memComp[1], out mPos); + vType = memComp[2]; + } + } } diff --git a/Jenkinsfile b/Jenkinsfile index ed7796bb..6c4e83e7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,7 +14,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=260']) { + withEnv(['NEXT_BUILD_NUMBER=261']) { // env.versionNumber = VersionNumber(versionNumberString : '1.18.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '1.18.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN'