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 @@
-
-
+
+