From c51ff708f672a51a88784eb8e2181c2f48a72f18 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 26 Oct 2021 17:28:10 +0200 Subject: [PATCH 1/3] Aggiunta unit measure x PIZ 3/8 --- IOB-WIN-NEXT/DATA/CONF/PIZ03.json | 63 ++++++++++++++++++++----------- IOB-WIN-NEXT/DATA/CONF/PIZ08.json | 63 ++++++++++++++++++++----------- 2 files changed, 84 insertions(+), 42 deletions(-) diff --git a/IOB-WIN-NEXT/DATA/CONF/PIZ03.json b/IOB-WIN-NEXT/DATA/CONF/PIZ03.json index 115d3deb..ea86bc93 100644 --- a/IOB-WIN-NEXT/DATA/CONF/PIZ03.json +++ b/IOB-WIN-NEXT/DATA/CONF/PIZ03.json @@ -6,7 +6,8 @@ "tipoMem": "Real", "memAddr": "DB85.DBB280", "index": 280, - "size": 4 + "size": 4, + "unit": "°C" }, "MinTemp02": { "name": "MinTemp02", @@ -14,7 +15,8 @@ "tipoMem": "Real", "memAddr": "DB85.DBB284", "index": 284, - "size": 4 + "size": 4, + "unit": "°C" } }, "mMapRead": { @@ -27,7 +29,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE1A": { "name": "TE1A", @@ -38,7 +41,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE3A": { "name": "TE3A", @@ -49,7 +53,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "Temp01": { "name": "Temp01", @@ -60,7 +65,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "Level": { "name": "Level", @@ -71,7 +77,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "Kg" }, "PressBH": { "name": "PressBH", @@ -82,7 +89,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "PressBL": { "name": "PressBL", @@ -93,7 +101,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "MainPress": { "name": "MainPress", @@ -104,7 +113,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "Temp02": { "name": "Temp02", @@ -115,7 +125,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE06": { "name": "TE06", @@ -126,7 +137,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE05": { "name": "TE05", @@ -137,7 +149,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE2B ": { "name": "TE2B", @@ -148,7 +161,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE1B ": { "name": "TE1B", @@ -159,7 +173,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE3B": { "name": "TE3B", @@ -170,7 +185,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "PressH": { "name": "PressH", @@ -181,7 +197,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "PressM": { "name": "PressM", @@ -192,7 +209,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "LivelloPerc": { "name": "LivelloPerc", @@ -203,7 +221,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "%" }, "MinTemp01": { "name": "MinTemp01", @@ -214,7 +233,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "MinTemp02": { "name": "MinTemp02", @@ -225,7 +245,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" } } } \ No newline at end of file diff --git a/IOB-WIN-NEXT/DATA/CONF/PIZ08.json b/IOB-WIN-NEXT/DATA/CONF/PIZ08.json index 115d3deb..ea86bc93 100644 --- a/IOB-WIN-NEXT/DATA/CONF/PIZ08.json +++ b/IOB-WIN-NEXT/DATA/CONF/PIZ08.json @@ -6,7 +6,8 @@ "tipoMem": "Real", "memAddr": "DB85.DBB280", "index": 280, - "size": 4 + "size": 4, + "unit": "°C" }, "MinTemp02": { "name": "MinTemp02", @@ -14,7 +15,8 @@ "tipoMem": "Real", "memAddr": "DB85.DBB284", "index": 284, - "size": 4 + "size": 4, + "unit": "°C" } }, "mMapRead": { @@ -27,7 +29,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE1A": { "name": "TE1A", @@ -38,7 +41,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE3A": { "name": "TE3A", @@ -49,7 +53,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "Temp01": { "name": "Temp01", @@ -60,7 +65,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "Level": { "name": "Level", @@ -71,7 +77,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "Kg" }, "PressBH": { "name": "PressBH", @@ -82,7 +89,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "PressBL": { "name": "PressBL", @@ -93,7 +101,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "MainPress": { "name": "MainPress", @@ -104,7 +113,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "Temp02": { "name": "Temp02", @@ -115,7 +125,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE06": { "name": "TE06", @@ -126,7 +137,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE05": { "name": "TE05", @@ -137,7 +149,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE2B ": { "name": "TE2B", @@ -148,7 +161,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE1B ": { "name": "TE1B", @@ -159,7 +173,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "TE3B": { "name": "TE3B", @@ -170,7 +185,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "PressH": { "name": "PressH", @@ -181,7 +197,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "PressM": { "name": "PressM", @@ -192,7 +209,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "bar" }, "LivelloPerc": { "name": "LivelloPerc", @@ -203,7 +221,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "%" }, "MinTemp01": { "name": "MinTemp01", @@ -214,7 +233,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" }, "MinTemp02": { "name": "MinTemp02", @@ -225,7 +245,8 @@ "size": 4, "func": "MAX", "period": 60, - "factor": 1 + "factor": 1, + "unit": "°C" } } } \ No newline at end of file From aff454bedfbe1236939e47d3221ba62be90efae5 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 26 Oct 2021 17:28:23 +0200 Subject: [PATCH 2/3] Aggiunto conf x min/max val x setup parametri (opzionale) --- IOB-UT-NEXT/Objects.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/IOB-UT-NEXT/Objects.cs b/IOB-UT-NEXT/Objects.cs index 7a8a0b8e..18df25e9 100644 --- a/IOB-UT-NEXT/Objects.cs +++ b/IOB-UT-NEXT/Objects.cs @@ -167,6 +167,8 @@ namespace IOB_UT_NEXT public string func { get; set; } = ""; public string key { get; set; } = ""; + public int maxVal { get; set; } + public int minVal { get; set; } public string name { get; set; } = ""; public int sPeriod { get; set; } = 60; public string unit { get; set; } = ""; From ad4a555865a610f1ed8ddbfa7fe04b9164dd0bf0 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 26 Oct 2021 17:28:38 +0200 Subject: [PATCH 3/3] Gestione strobe/ack su comeca x scrittura parametri --- IOB-WIN-NEXT/IobGeneric.cs | 9 +++---- IOB-WIN-NEXT/IobSiemensComeca.cs | 43 ++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/IOB-WIN-NEXT/IobGeneric.cs b/IOB-WIN-NEXT/IobGeneric.cs index 764ce09f..ea1c431a 100644 --- a/IOB-WIN-NEXT/IobGeneric.cs +++ b/IOB-WIN-NEXT/IobGeneric.cs @@ -2032,7 +2032,7 @@ namespace IOB_WIN_NEXT /// private void svuotaCodaFLog() { - //controllo se è passato oltre watchdog e non ho inviato nulla --> RE-INVIO (ultimo inviato)!!!! + // controllo se è passato oltre watchdog e non ho inviato nulla --> RE-INVIO (ultimo inviato)!!!! if (DateTime.Now.Subtract(lastWatchDog).TotalSeconds > utils.CRI("watchdogMaxSec")) { string wdStatus = "elapsed"; @@ -2069,6 +2069,7 @@ namespace IOB_WIN_NEXT listaValori.Add(currVal); } sendDataBlock(urlType.FLog, listaValori); + lastWatchDog = DateTime.Now; } else { @@ -2078,6 +2079,7 @@ namespace IOB_WIN_NEXT sendDataBlock(urlType.FLog, listaValori); // svuoto! QueueFLog = new ConcurrentQueue(); + lastWatchDog = DateTime.Now; } } else @@ -2085,6 +2087,7 @@ namespace IOB_WIN_NEXT // INVIO SINGOLO...!!! QueueFLog.TryDequeue(out currVal); sendToMoonPro(urlType.FLog, currVal); + lastWatchDog = DateTime.Now; } } else @@ -4753,10 +4756,6 @@ namespace IOB_WIN_NEXT lgInfo(string.Format("{0} -> [SIM]", queueVal)); } nSendOut++; - // riporto cosa inviato -#if false - displayOutData(); -#endif currDispData.newUrlCallData = lastUrl; // aggiorno data ultimo watchdog... lastWatchDog = DateTime.Now; diff --git a/IOB-WIN-NEXT/IobSiemensComeca.cs b/IOB-WIN-NEXT/IobSiemensComeca.cs index 12339100..10fc1fed 100644 --- a/IOB-WIN-NEXT/IobSiemensComeca.cs +++ b/IOB-WIN-NEXT/IobSiemensComeca.cs @@ -35,6 +35,12 @@ namespace IOB_WIN_NEXT * * -------------------------------------------------------------------------------- */ + #region Protected Fields + + protected int strobeVal = 0; + + #endregion Protected Fields + #region Public Constructors /// @@ -91,6 +97,35 @@ namespace IOB_WIN_NEXT #endregion Protected Properties + #region Private Methods + + private void checkStrobeHack() + { + // verifico SE ho un hack sulla var DB85.DB268 + byte[] byteCtrlW = new byte[2]; + bool fatto = S7ReadBB(ref byteCtrlW, "DB85.DBB268", 2); + ushort valCtrlW = S7.Net.Types.Word.FromByteArray(byteCtrlW.ToArray()); + // se vale 1 --> resetto strobe! + if (valCtrlW == 1) + { + // aggiunta finale bit a 0 x chiusura processing.. + var MemBlock = S7.Net.Types.Int.ToByteArray(0); + var memAddrWrite = "DB85.DBB308"; + // imposto valore strobe x check successivi + var taskOk = S7WriteBB(ref MemBlock, memAddrWrite); + if (taskOk) + { + strobeVal = 0; + } + } + else + { + lgInfo("SiemensComeca: Strobe attivo su DBB308, ack non rilevato su DBB268"); + } + } + + #endregion Private Methods + #region Protected Methods /// @@ -133,6 +168,11 @@ namespace IOB_WIN_NEXT byteSignals += (1 << 1); } + // verifico SE ho strobe/hack da chiudere + if (strobeVal != 0) + { + checkStrobeHack(); + } // salvo! B_input = byteSignals; } @@ -185,6 +225,7 @@ namespace IOB_WIN_NEXT 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)) @@ -204,6 +245,8 @@ namespace IOB_WIN_NEXT // aggiunta finale bit a 1 x richiesta processing.. MemBlock = S7.Net.Types.Int.ToByteArray(1); memAddrWrite = "DB85.DBB308"; + // imposto valore strobe x check successivi + strobeVal = 1; break;