diff --git a/IOB-UT-NEXT/ToMapo.cs b/IOB-UT-NEXT/ToMapo.cs
index e5954cf4..cd5d82d8 100644
--- a/IOB-UT-NEXT/ToMapo.cs
+++ b/IOB-UT-NEXT/ToMapo.cs
@@ -2,6 +2,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.Collections.Generic;
+using System;
namespace IOB_UT_NEXT
{
@@ -649,7 +650,6 @@ namespace IOB_UT_NEXT
///
public bool doSubsSample { get; set; } = true;
-
#endregion Public Properties
}
diff --git a/IOB-WIN-FORM/Iob/Generic.Protected.cs b/IOB-WIN-FORM/Iob/Generic.Protected.cs
index 126809cf..2bb1c900 100644
--- a/IOB-WIN-FORM/Iob/Generic.Protected.cs
+++ b/IOB-WIN-FORM/Iob/Generic.Protected.cs
@@ -141,6 +141,16 @@ namespace IOB_WIN_FORM.Iob
///
protected bool enableCliRestart = false;
+ ///
+ /// Abilitazione invio dataitem
+ ///
+ protected bool enableSendDataItem = true;
+ protected int minVetoSendDataItem = 60;
+ ///
+ /// DataOra x veto all'invio dataItem
+ ///
+ protected DateTime dtVetoSenDataItem= DateTime.Now;
+
///
/// Boolean x indicare contapezzi abilitato a livello di conf applicazione
///
diff --git a/IOB-WIN-MTC/DATA/CONF/3024.ini b/IOB-WIN-MTC/DATA/CONF/3024.ini
index e6e2b290..b62e2499 100644
--- a/IOB-WIN-MTC/DATA/CONF/3024.ini
+++ b/IOB-WIN-MTC/DATA/CONF/3024.ini
@@ -64,6 +64,10 @@ ENABLE_CLI_RESTART=TRUE
MAX_ELAPSED_TIME_SEC=60
READ_ERROR_MAX=10
READ_ERROR_SLEEP_TIME=30000
+; gestione custom timer
+timerIntMs=150
+ENABLE_SEND_DATAITEM=true
+MIN_VETO_SEND_DATAITEM=120
; conf parametri memoria READ/WRITE
MTC_PARAM_CONF=3024.json
diff --git a/IOB-WIN-MTC/Iob/MTConn.cs b/IOB-WIN-MTC/Iob/MTConn.cs
index 047a2416..d1b48070 100644
--- a/IOB-WIN-MTC/Iob/MTConn.cs
+++ b/IOB-WIN-MTC/Iob/MTConn.cs
@@ -39,7 +39,6 @@ namespace IOB_WIN_MTC.Iob
readErrorSleepTime = IobConfFull.Device.ReadErrorSleepTime;
enableCliRestart = IobConfFull.Device.Connect.EnableRestart;
-
// gestione data unavailable = poweroff...
if (!string.IsNullOrEmpty(getOptPar("UNAVAIL_POWEROFF")))
{
@@ -50,39 +49,16 @@ namespace IOB_WIN_MTC.Iob
{
bool.TryParse(getOptPar("ENABLE_MTC_RESTART"), out enableMtcRestart);
}
-
- // gestione override contapezzi
-
-
- // vecchia gestione custom OPT_PAR
-#if false
- // gestione data filtering...
- if (!string.IsNullOrEmpty(getOptPar("ENABLE_DATA_FILTER")))
+ // gestione parametri x sendDataItem
+ if (!string.IsNullOrEmpty(getOptPar("ENABLE_SEND_DATAITEM")))
{
- bool.TryParse(getOptPar("ENABLE_DATA_FILTER"), out enableDataFilter);
- }
- // init MaxSecReload
- if (!string.IsNullOrEmpty(getOptPar("MAX_ELAPSED_TIME_SEC")))
+ bool.TryParse(getOptPar("ENABLE_SEND_DATAITEM"), out enableSendDataItem);
+ }
+ if (!string.IsNullOrEmpty(getOptPar("MIN_VETO_SEND_DATAITEM")))
{
- int.TryParse(getOptPar("MAX_ELAPSED_TIME_SEC"), out MaxSecReload);
+ int.TryParse(getOptPar("MIN_VETO_SEND_DATAITEM"), out minVetoSendDataItem);
}
- // init gestione reset errori lettura
- if (!string.IsNullOrEmpty(getOptPar("READ_ERROR_MAX")))
- {
- int.TryParse(getOptPar("READ_ERROR_MAX"), out readErrorMax);
- }
- if (!string.IsNullOrEmpty(getOptPar("READ_ERROR_SLEEP_TIME")))
- {
- int.TryParse(getOptPar("READ_ERROR_SLEEP_TIME"), out readErrorSleepTime);
- }
-
- // gestione restart OpcUa client...
- if (!string.IsNullOrEmpty(getOptPar("ENABLE_CLI_RESTART")))
- {
- bool.TryParse(getOptPar("ENABLE_CLI_RESTART"), out enableCliRestart);
- }
-#endif
// init datetime counters
DateTime adesso = DateTime.Now;
@@ -1758,10 +1734,6 @@ namespace IOB_WIN_MTC.Iob
{
lgInfo($"STEP 03 invio dati di {elencoDataItems.Count} records");
sendDataItemsList(elencoDataItems);
-#if false
- // provo a tracciare dataitems...
- trackExchDataRaw(elencoDataItems, 1024);
-#endif
trackExchData(1024, 4096);
}
@@ -1978,8 +1950,19 @@ namespace IOB_WIN_MTC.Iob
///
private void sendDataItemsList(List dataItems)
{
- string rawData = JsonConvert.SerializeObject(dataItems);
- utils.CallUrlPost($"{urlSaveDataItems}", rawData);
+ // verifico abilitazione preliminare all'invio
+ if (enableSendDataItem)
+ {
+ // verifico veto ad invio (ogni 60 min...)
+ DateTime adesso = DateTime.Now;
+ if (adesso > dtVetoSenDataItem)
+ {
+ string rawData = JsonConvert.SerializeObject(dataItems);
+ var resp = utils.CallUrlPost($"{urlSaveDataItems}", rawData);
+ // imposto nuovo veto
+ dtVetoSenDataItem = adesso.AddMinutes(minVetoSendDataItem);
+ }
+ }
}
///
diff --git a/IOB-WIN-SIEMENS/DATA/CONF/3010.ini b/IOB-WIN-SIEMENS/DATA/CONF/3010.ini
index 199acd53..cd7fc4c5 100644
--- a/IOB-WIN-SIEMENS/DATA/CONF/3010.ini
+++ b/IOB-WIN-SIEMENS/DATA/CONF/3010.ini
@@ -68,6 +68,8 @@ MAX_SEND_PZC_BLOCK=100
DISABLE_SEND_WDST=TRUE
; conf aree allarme
ALARM_CONF=3010_alarm.json
+; gestione custom timer
+timerIntMs=100
[BRANCH]
NAME=develop
diff --git a/IOB-WIN-SIEMENS/DATA/CONF/3011.ini b/IOB-WIN-SIEMENS/DATA/CONF/3011.ini
index f070fe10..d6e129b6 100644
--- a/IOB-WIN-SIEMENS/DATA/CONF/3011.ini
+++ b/IOB-WIN-SIEMENS/DATA/CONF/3011.ini
@@ -69,6 +69,8 @@ MAX_SEND_PZC_BLOCK=100
DISABLE_SEND_WDST=TRUE
; conf aree allarme
ALARM_CONF=3011_alarm.json
+; gestione custom timer
+timerIntMs=100
[BRANCH]
NAME=master
diff --git a/IOB-WIN-SIEMENS/DATA/CONF/3013.ini b/IOB-WIN-SIEMENS/DATA/CONF/3013.ini
index 75e4d6c0..7b2740c6 100644
--- a/IOB-WIN-SIEMENS/DATA/CONF/3013.ini
+++ b/IOB-WIN-SIEMENS/DATA/CONF/3013.ini
@@ -68,6 +68,8 @@ MAX_SEND_PZC_BLOCK=100
DISABLE_SEND_WDST=TRUE
; conf aree allarme
ALARM_CONF=3013_alarm.json
+; gestione custom timer
+timerIntMs=100
[BRANCH]
NAME=develop
diff --git a/IOB-WIN-SIEMENS/DATA/CONF/3020.ini b/IOB-WIN-SIEMENS/DATA/CONF/3020.ini
index 87f68df3..b6b146e8 100644
--- a/IOB-WIN-SIEMENS/DATA/CONF/3020.ini
+++ b/IOB-WIN-SIEMENS/DATA/CONF/3020.ini
@@ -69,6 +69,8 @@ MAX_SEND_PZC_BLOCK=100
DISABLE_SEND_WDST=TRUE
; gestione veto coda ingresso dati
VETO_QUEUE_IN=10
+; gestione custom timer
+timerIntMs=100
; conf aree allarme
ALARM_CONF=3020_alarm.json