From b1a0aa5406dad0beb6394fdec9ea2ee38eae1ce9 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 3 Nov 2021 15:21:23 +0100 Subject: [PATCH] reset outval x modbus --- IOB-UT-NEXT/ToMapo.cs | 2 +- IOB-WIN-NEXT/IobGeneric.cs | 10 +++-- IOB-WIN-NEXT/IobModbusTCP.cs | 18 +++++--- IOB-WIN-NEXT/IobModbusTCPHam.cs | 77 --------------------------------- 4 files changed, 18 insertions(+), 89 deletions(-) diff --git a/IOB-UT-NEXT/ToMapo.cs b/IOB-UT-NEXT/ToMapo.cs index 25c7a879..cac2af0e 100644 --- a/IOB-UT-NEXT/ToMapo.cs +++ b/IOB-UT-NEXT/ToMapo.cs @@ -26,7 +26,7 @@ namespace IOB_UT_NEXT #region Public Properties /// - /// Elenco dei contatori blink (x gestione caso frponte salita/discesa segnale hce blinka) + /// Elenco dei contatori blink (x gestione caso fronte salita/discesa segnale che blinka) /// public int[] alarmsBlinkCounter { get; set; } diff --git a/IOB-WIN-NEXT/IobGeneric.cs b/IOB-WIN-NEXT/IobGeneric.cs index 418f4f7d..3e72adce 100644 --- a/IOB-WIN-NEXT/IobGeneric.cs +++ b/IOB-WIN-NEXT/IobGeneric.cs @@ -541,6 +541,11 @@ namespace IOB_WIN_NEXT int maxRetry = maxPingRetry + 1; int numRetry = 1; string ipAddr = cIobConf.serverData.MPIP.Replace($"{cIobConf.serverData.TRANSP}://", ""); + // fix se fosse ip + porta... + if (ipAddr.IndexOf(":") >= 0) + { + ipAddr = ipAddr.Substring(0, ipAddr.IndexOf(":")); + } IPAddress.TryParse(ipAddr, out address); // se null --> provo DNS... if (address == null) @@ -4127,10 +4132,7 @@ namespace IOB_WIN_NEXT if (enableByApp || enableByIob) { - if (periodicLog) - { - lgInfo("Inizio processDynData"); - } + lgInfo("Inizio processDynData"); if (connectionOk) { currDynData = getDynData(); diff --git a/IOB-WIN-NEXT/IobModbusTCP.cs b/IOB-WIN-NEXT/IobModbusTCP.cs index 0874ca84..7d798664 100644 --- a/IOB-WIN-NEXT/IobModbusTCP.cs +++ b/IOB-WIN-NEXT/IobModbusTCP.cs @@ -222,6 +222,7 @@ namespace IOB_WIN_NEXT foreach (var item in memItemList) { double valore = 0; + double valoreScal = 0; bool dataOk = false; // in primis DEVO determinare di quale TIPO di valore ho bisogno... dalla PRIMA cifra di memAddr... modBusAddrType memAddrType = getAddrType(item.Value.memAddr); @@ -257,12 +258,13 @@ namespace IOB_WIN_NEXT if (dataOk) { // moltiplico x fattore conversione... - valore = valore * item.Value.factor; - saveValue(ref outVal, valore, item.Key); + valoreScal = valore * item.Value.factor; + saveValue(ref outVal, valoreScal, item.Key); + lgInfo($"getDynData: valore ricevuto | {item.Key} | val: {valore} | valoreScal: {valoreScal}"); } else { - lgError($"getDynData: valore scartato x limiti min/max | {item.Key} | val: {valore} | min-max: {item.Value.minVal}-{item.Value.maxVal} | deltaVal: {deltaVal}"); + lgError($"getDynData: valore scartato x limiti min/max | {item.Key} | val: {valore} | valoreScal: {valoreScal} | min-max: {item.Value.minVal}-{item.Value.maxVal} | deltaVal: {deltaVal}"); readErrorList.Add(item.Key, item.Value); lgInfo($"--> rimesso in coda lettura | parametro: {item.Key} | index: {item.Value.index} | size: {item.Value.size}"); } @@ -779,15 +781,16 @@ namespace IOB_WIN_NEXT // se qualcosa รจ andato storto riprovo a caricare SOLO gli errori... 1 sola volta if (readErrorList.Count > 0) { + lgInfo($"Effettuo rilettura per {readErrorList.Count} variabili"); readErrorListRepeat = getDataDictionary(readErrorList, ref outVal); } - // se avessi acnora errori --> disconnetto + // se avessi ancora errori --> disconnetto if (readErrorListRepeat.Count > 0) { - lgInfo("Trovati valori non validi al secondo tentativo --> resetto adapter con tryDisconnect!"); - //// rendo non valida lettura dati - //lastReadPLC = DateTime.Now.AddMinutes(-4); + lgInfo("Trovati valori non validi al secondo tentativo --> invalido valori letti e resetto adapter con tryDisconnect!"); tryDisconnect(); + // invalido output + outVal = new Dictionary(); tryConnect(); } else @@ -804,6 +807,7 @@ namespace IOB_WIN_NEXT { lgError(exc, "Errore in getDynData x ModBus TCP PLC --> ciclo disconnect/reconnect"); tryDisconnect(); + outVal = new Dictionary(); tryConnect(); } } diff --git a/IOB-WIN-NEXT/IobModbusTCPHam.cs b/IOB-WIN-NEXT/IobModbusTCPHam.cs index 749664e4..f25353d8 100644 --- a/IOB-WIN-NEXT/IobModbusTCPHam.cs +++ b/IOB-WIN-NEXT/IobModbusTCPHam.cs @@ -185,83 +185,6 @@ namespace IOB_WIN_NEXT #endregion Protected Methods -#if false - /// - /// Processo i task richiesti e li elimino dalla coda 1:1 - /// - /// - public override Dictionary executeTasks(Dictionary task2exe) - { - lgInfo($"Chiamata executeTasks specifica ModBus TCP HAM: {task2exe.Count} task ricevuti"); - // Verificare il protocollo: dovrebeb togliere SOLO i task eseguiti... - Dictionary taskDone = new Dictionary(); - bool taskOk = false; - string taskVal = ""; - // inizio con 1 byte di default - byte[] MemBlock = new byte[1]; - string memAddrWrite = ""; - if (task2exe != null) - { - // cerco task specifici - foreach (var item in task2exe) - { - taskOk = false; - taskVal = ""; - // converto richiesta in enum... - taskType tName = taskType.nihil; - Enum.TryParse(item.Key, out tName); - // controllo sulla KEY - switch (tName) - { - case taskType.nihil: - case taskType.fixStopSetup: - case taskType.forceResetPzCount: - case taskType.forceSetPzCount: - case taskType.setProg: - case taskType.sendWatchDogMes2Plc: - case taskType.startSetup: - case taskType.stopSetup: - case taskType.setPzComm: - case taskType.setArt: - case taskType.setComm: - taskVal = $"taskReq: {tName} | key: {item.Key} | val: {item.Value} | SKIPPED | NO EXEC"; - break; - - case taskType.setParameter: - // richiedo da URL i parametri WRITE da popolare - lgInfo("Chiamata processMemWriteRequests"); - - taskVal = processMemWriteRequests(); - // se restituiscce "" faccio altra prova... - if (string.IsNullOrEmpty(taskVal)) - { - // i parametri me li aspetto come stringa composta paramName|paramvalue - if (item.Value.Contains("|")) - { - string[] paramsJob = item.Value.Split('|'); - taskVal = $"REQUEST SET PARAMETERS: {paramsJob[0]} --> {paramsJob[1]}"; - } - else - { - taskVal = $"WRONG REQUEST FOR SET PARAMETERS: {item.Value} doesnt contain pipe for splitting key/value"; - } - } - - break; - - default: - taskVal = "SKIPPED | NO EXEC"; - break; - } - // aggiungo task! - taskDone.Add(item.Key, taskVal); - taskOk = true; - } - } - return taskDone; - } -#endif - #region Public Methods ///