diff --git a/CVCncLib/CVCncLib.dll b/CVCncLib/CVCncLib.dll index fd43c085..1b9feef7 100644 Binary files a/CVCncLib/CVCncLib.dll and b/CVCncLib/CVCncLib.dll differ 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/IOB-WIN-NEXT.csproj b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj index bd86ca74..6eeeb9bd 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 @@ -900,11 +900,11 @@ - + - + \ No newline at end of file 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 diff --git a/IOB-WIN-NEXT/IobOpcUa.cs b/IOB-WIN-NEXT/IobOpcUa.cs index 9ea373e7..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,17 +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); + } + ).ToList(); + + // aspetta un tempo random da 10-100 ms... + Random rnd = new Random(); + Task.Delay(rnd.Next(10, 100)); // invio il dataItem serializzato... sendDataItemsList(elencoDataItems); } 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)) { 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 @@ - - + +