From 5cc48d60fcebc00e0a015a65cc0b7f691e4698f6 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 11 May 2022 12:19:31 +0200 Subject: [PATCH 1/6] Aggiornamento WPS drivers --- IOB-WIN-NEXT/IOB-WIN-NEXT.csproj | 6 +++--- IOB-WIN-NEXT/packages.config | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj index 99ba2b71..2629ff5d 100644 --- a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj +++ b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj @@ -174,7 +174,7 @@ ..\ExtLibs\AdsApi\.NET\v4.0.30319\TwinCAT.Ads.dll - ..\packages\Selenium.WebDriver.4.1.0\lib\net46\WebDriver.dll + ..\packages\Selenium.WebDriver.4.1.1\lib\net46\WebDriver.dll @@ -878,11 +878,11 @@ - + - + \ No newline at end of file diff --git a/IOB-WIN-NEXT/packages.config b/IOB-WIN-NEXT/packages.config index 798b3c17..689d5481 100644 --- a/IOB-WIN-NEXT/packages.config +++ b/IOB-WIN-NEXT/packages.config @@ -19,8 +19,8 @@ - - + + From 72910d544f9d0d90db884cf2630a7d1e57e39833 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 12 May 2022 17:59:36 +0200 Subject: [PATCH 2/6] Aggiunto delay notifica pagrametri trovati x Icoel --- CVCncLib/CVCncLib.dll | Bin 967680 -> 967680 bytes IOB-WIN-NEXT/IobOpcUa.cs | 3 +++ 2 files changed, 3 insertions(+) diff --git a/CVCncLib/CVCncLib.dll b/CVCncLib/CVCncLib.dll index fd43c0852aaff56f31c5a32bf13764b954642ea6..1b9feef7c3f1a0d33d799edabc4fe21d95faf316 100644 GIT binary patch delta 134 zcmZqZux{wEp3uR3MX$E8yS1CKwVSE6o4K`{rL~*2wVSQAo4vK0qqUo}wVSK8n|o_F zkL5yvuZLLI&zhR(+rn9xe%1Y8Mf;V7JV4C5{mMeVJA67oqmmeafC-3Y7#SE&oa19S jv4M{vDA*-9!tv6^=h?g67fdK?d1bSXZ~L7Md@8~K8?ZGZ delta 134 zcmZqZux{wEp3uR}zpAFOyS1CKwVSE6o4K`{rL~*2wVSQAo4vK0qqUo}wVSK8n|o_F zkL5yvCm%l5#44R~ni1=6l98MKq5aB29w6r3eq|xw9X=hPQArFyzy!oHj0_AX&hasv j*ucjS6zmdg- Date: Thu, 12 May 2022 18:22:16 +0200 Subject: [PATCH 3/6] =?UTF-8?q?Cambio=20modalit=C3=A0=20composizione=20ele?= =?UTF-8?q?nco=20item=20da=20inviare=20a=20IO=20server=20x=20variabili=20c?= =?UTF-8?q?ablate=20ICOEL,=20test=2002?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IOB-WIN-NEXT/App.config | 2 +- IOB-WIN-NEXT/IobOpcUa.cs | 30 ++++++++++++++++++------------ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/IOB-WIN-NEXT/App.config b/IOB-WIN-NEXT/App.config index bb1a3721..8d6de859 100644 --- a/IOB-WIN-NEXT/App.config +++ b/IOB-WIN-NEXT/App.config @@ -19,7 +19,7 @@ - + diff --git a/IOB-WIN-NEXT/IobOpcUa.cs b/IOB-WIN-NEXT/IobOpcUa.cs index 10f6312e..c92a8a14 100644 --- a/IOB-WIN-NEXT/IobOpcUa.cs +++ b/IOB-WIN-NEXT/IobOpcUa.cs @@ -597,7 +597,14 @@ namespace IOB_WIN_NEXT private void sendDataItemsList(List dataItems) { string rawData = JsonConvert.SerializeObject(dataItems); - utils.callUrlNow($"{urlSaveDataItems}", rawData); + try + { + utils.callUrlNow($"{urlSaveDataItems}", rawData); + } + catch(Exception exc) + { + lgError($"Eccezione in sendDataItemsList{Environment.NewLine} - url: {urlSaveDataItems}{Environment.NewLine}- payload:{rawData}{Environment.NewLine}Eccezione:{Environment.NewLine}{exc}"); + } } /// @@ -776,7 +783,6 @@ namespace IOB_WIN_NEXT // provo a creare oggetto in memoria... try { - List elencoDataItems = new List(); int dSamplePeriod = 0; int threshDBand = 0; uuid = ""; @@ -786,20 +792,20 @@ namespace IOB_WIN_NEXT currDataItem.valueTimestamp = adesso; // aggiungo dataItemMem.Add(uuid, currDataItem); - // salvo oggetto x registrazione su server MP-IO - var currMapoDataItem = new machDataItem() + // converto gli attuali nell'elenco dataitem... + List elencoDataItems = dataItemMem.Select(d => new machDataItem() { - uuid = uuid, + uuid = d.Key, Category = DataItemCategory.EVENT, - Name = dataItem.DisplayName, - Type = $"{dataItem.NodeClass}", + Name = d.Value.DisplayName, + Type = $"{d.Value.NodeClass}", SubType = $"{dataItem.StartNodeId}" - }; - // aggiungo - elencoDataItems.Add(currMapoDataItem); - // aspetta un tempo random da 100-200 ms... + } + ).ToList(); + + // aspetta un tempo random da 10-100 ms... Random rnd = new Random(); - Task.Delay(rnd.Next(100, 200)); + Task.Delay(rnd.Next(10, 100)); // invio il dataItem serializzato... sendDataItemsList(elencoDataItems); } From 1d966ea0ce956b0de67e1102d1c72b4f2cb9693d Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 12 May 2022 18:22:36 +0200 Subject: [PATCH 4/6] redo timeout a 9999ms --- IOB-WIN-NEXT/App.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IOB-WIN-NEXT/App.config b/IOB-WIN-NEXT/App.config index 8d6de859..bb1a3721 100644 --- a/IOB-WIN-NEXT/App.config +++ b/IOB-WIN-NEXT/App.config @@ -19,7 +19,7 @@ - + From ab48c5fb48311495c38c343f669ea17931ce6c65 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 12 May 2022 18:30:06 +0200 Subject: [PATCH 5/6] Aggiunta attesa random x evitare congestione in fase invio --- IOB-WIN-NEXT/App.config | 1 + IOB-WIN-NEXT/IobGeneric.cs | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/IOB-WIN-NEXT/App.config b/IOB-WIN-NEXT/App.config index bb1a3721..820f073c 100644 --- a/IOB-WIN-NEXT/App.config +++ b/IOB-WIN-NEXT/App.config @@ -20,6 +20,7 @@ + diff --git a/IOB-WIN-NEXT/IobGeneric.cs b/IOB-WIN-NEXT/IobGeneric.cs index 753f7cde..74a0030e 100644 --- a/IOB-WIN-NEXT/IobGeneric.cs +++ b/IOB-WIN-NEXT/IobGeneric.cs @@ -196,6 +196,11 @@ namespace IOB_WIN_NEXT /// public bool adpRunning = false; + /// + /// Valore di attesa (random) dopo ogni invio x evitare congestione send... + /// + protected static int urlRandWait = 0; + /// /// valore booleano di check se l'adapter STIA SALVANDO /// @@ -2072,6 +2077,9 @@ namespace IOB_WIN_NEXT lastAlarm = ""; doStartMemDump = utils.CRB("doStartMemDump"); doSampleMemory = utils.CRB("doSampleMemory"); + // fix url wait random... + urlRandWait = utils.CRI("urlRandWait"); + // svuoto code se richiesto if (resetQueue) { @@ -3274,11 +3282,21 @@ namespace IOB_WIN_NEXT //Task resp = utils.callUrlAsync(URL); //answ = resp.Result; answ = utils.callUrlAsync(URL); + if (urlRandWait > 0) + { + Random rnd = new Random(); + Thread.Sleep(rnd.Next(urlRandWait / 10, urlRandWait)); + } } // chiamata SOLO NORMALE SINCRONA... else { answ = utils.callUrl(URL); + if (urlRandWait > 0) + { + Random rnd = new Random(); + Thread.Sleep(rnd.Next(urlRandWait / 10, urlRandWait)); + } } return answ; } @@ -3297,11 +3315,21 @@ namespace IOB_WIN_NEXT if (doAsync) { answ = utils.callUrlAsync(URL, payload); + if (urlRandWait > 0) + { + Random rnd = new Random(); + Thread.Sleep(rnd.Next(urlRandWait / 10, urlRandWait)); + } } // chiamata SOLO NORMALE SINCRONA... else { answ = utils.callUrl(URL, payload); + if (urlRandWait > 0) + { + Random rnd = new Random(); + Thread.Sleep(rnd.Next(urlRandWait / 10, urlRandWait)); + } } return answ; } @@ -5014,6 +5042,8 @@ namespace IOB_WIN_NEXT { // chiamo URL! string answ = callUrlWithPayload(lastUrl, payload, doAsync); + // attesa opzionale se configurata + // loggo! lgInfo($"[SEND payload] TipoURL: {tipoUrl} | {listQueueVal.Count} records --> {answ}"); // se "OK" verde, altrimenti errore --> ROSSO From cd4675349f8021fcd79788d4154fc31d56e3d06a Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 12 May 2022 19:07:51 +0200 Subject: [PATCH 6/6] Esplicitate le variabili stato come enum --- IOB-WIN-NEXT/IobOpcUaOmronIcoel.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/IOB-WIN-NEXT/IobOpcUaOmronIcoel.cs b/IOB-WIN-NEXT/IobOpcUaOmronIcoel.cs index 7fd8a32c..3afd1935 100644 --- a/IOB-WIN-NEXT/IobOpcUaOmronIcoel.cs +++ b/IOB-WIN-NEXT/IobOpcUaOmronIcoel.cs @@ -10,9 +10,16 @@ using System.Threading.Tasks; namespace IOB_WIN_NEXT { + public enum IcoelStatus + { + Allarme = 0, + Stop = 1, + Manuale = 2, + Automatico = 3 + } public class MesItemStatus { - public UInt16 Stato { get; set; } = 0; + public IcoelStatus Stato { get; set; } = 0; public UInt16 Velocita { get; set; } = 0; public bool Termico { get; set; } = false; public bool MagnetoTermico { get; set; } = false; @@ -20,7 +27,7 @@ namespace IOB_WIN_NEXT public MesItemStatus(byte[] rawData) { - Stato = BitConverter.ToUInt16(rawData, 0); + Stato = (IcoelStatus)BitConverter.ToUInt16(rawData, 0); Velocita = BitConverter.ToUInt16(rawData, 2); Termico = !rawData.Skip(4).Take(1).FirstOrDefault().Equals(0); MagnetoTermico = !rawData.Skip(5).Take(1).FirstOrDefault().Equals(0); @@ -34,7 +41,7 @@ namespace IOB_WIN_NEXT public byte[] serialize() { byte[] answ = new byte[7]; - Buffer.BlockCopy(BitConverter.GetBytes(Stato), 0, answ, 0, 2); + Buffer.BlockCopy(BitConverter.GetBytes((short)Stato), 0, answ, 0, 2); Buffer.BlockCopy(BitConverter.GetBytes(Velocita), 0, answ, 2, 2); Buffer.BlockCopy(BitConverter.GetBytes(Termico), 0, answ, 4, 1); Buffer.BlockCopy(BitConverter.GetBytes(MagnetoTermico), 0, answ, 5, 1); @@ -325,7 +332,7 @@ namespace IOB_WIN_NEXT testSendProperty(new Opc.Ua.Client.MonitoredItem() { DisplayName = $"{blockName}_AvariaInverter", NodeClass = NodeClass.Variable, StartNodeId = startNodeId }, $"{newBlock.AvariaInverter}", forceSend); } } - + /// /// Verifica ed invia variazioni DAL FORMATO RAW data (byte[]) --> esplode oggetti e li testa 1:1 @@ -339,7 +346,7 @@ namespace IOB_WIN_NEXT { if (NotifyValue != null && NotifyValue.Length > 0) { - + // verifico variazione "globale" if (!lastData.Equals(currData)) {