diff --git a/IOB-UT-NEXT/ToMapo.cs b/IOB-UT-NEXT/ToMapo.cs
index dbd3a1e9..380e74ca 100644
--- a/IOB-UT-NEXT/ToMapo.cs
+++ b/IOB-UT-NEXT/ToMapo.cs
@@ -143,17 +143,6 @@ namespace IOB_UT_NEXT
}
}
-#if false
- ///
- /// Effettua decremento blicnk counters
- ///
- ///
- ///
- public void updateBlinkCounter()
- {
- }
-#endif
-
///
/// Confronta un valore di stato allarme con lo stato precedentemente salvato considerando blink/veto
///
@@ -220,22 +209,6 @@ namespace IOB_UT_NEXT
///
public void updStatusVal(int num, uint newStatus)
{
-#if false
- if (resetBlink)
- {
- // calcola la maschera di variazione da valore precedente
- var variations = newStatus ^ alarmsState[num];
- // ciclo sui 16 bit...
- for (int i = 0; i < 16; i++)
- {
- if ((variations & (1 << i)) == (1 << i))
- {
- alarmsBlinkCounter[num * 16 + i] = blinkDownVal;
- }
- }
- }
-#endif
-
// salvo nuovo valore
alarmsState[num] = newStatus;
}
@@ -243,202 +216,6 @@ namespace IOB_UT_NEXT
#endregion Public Methods
}
-#if false
- ///
- /// Classe gestione configurazione parametri di base x allarmi
- ///
- public class BaseAlarmConf
- {
- #region Public Fields
-
- ///
- /// valore di partenza x un segnale di blink in caso di fine variazione (fronte discesa)
- ///
- public int blinkDownVal { get; set; } = 10;
-
- ///
- /// valore di partenza x un segnale di blink in caso di inizio variazione (fronte salita)
- ///
- public int blinkUpVal { get; set; } = 3;
-
- #endregion Public Fields
-
- #region Public Properties
-
- ///
- /// Elenco dei contatori blink x gestione caso fronte discesa segnale che blinka
- ///
- public int[] alarmsBlinkDownCounter { get; set; }
-
- ///
- /// Elenco dei contatori blink x gestione caso fronte salita segnale che blinka
- ///
- public int[] alarmsBlinkUpCounter { get; set; }
-
- ///
- /// BitMask 16bit (1 = valido, 0 = filtro) degli allarmi silenziati/disabilitati (se iniziano per ##) come valore da sottrarre x check
- ///
- public uint[] alarmsMask { get; set; }
-
- ///
- /// Array dei valori allarme correnti
- ///
- public uint[] alarmsState { get; set; }
-
- ///
- /// Descrizione area allarmi
- ///
- public string description { get; set; } = "";
-
- ///
- /// Indice nell'area di memoria (da valore iniziale = 0)
- ///
- public int index { get; set; } = 0;
-
- ///
- /// Nome "assoluto" della posizione nell'area di memoria (anche diverso da indice)
- ///
- public string memAddr { get; set; } = "";
-
- ///
- /// Elenco allarmi configurati x la bitmap
- ///
- public List messages { get; set; } = new List();
-
- ///
- /// Size in byte
- ///
- public int size { get; set; } = 0;
-
- ///
- /// Tipo di dato
- ///
- [JsonConverter(typeof(StringEnumConverter))]
- public plcDataType tipoMem { get; set; } = plcDataType.Boolean;
-
- #endregion Public Properties
-
- #region Public Methods
-
- ///
- /// Calcola il filtro da condizione blink (ovvero maschera per valori indicati blinking)
- ///
- ///
- ///
- public uint blinkFilter(int num)
- {
- uint answ = 0;
- int idx = 16 * num;
- for (int i = 0; i < 16; i++)
- {
- if (alarmsBlinkDownCounter[idx + i] > 0)
- {
- answ += (uint)1 << i;
- }
- }
- return answ;
- }
-
- ///
- /// Effettua update dei contatori blink per gestire i segnali alternati sul fronte di salita/discesa
- ///
- public void updateBlinkCounter()
- {
- // decremento contatori discesa
- int idx = 0;
- foreach (var item in alarmsBlinkDownCounter)
- {
- alarmsBlinkDownCounter[idx] = item > 0 ? item - 1 : item;
- idx++;
- }
- }
-
- ///
- /// Confronta un valore di stato allarme con lo stato precedentemente salvato considerando blink/veto
- ///
- /// Numero/indice del banco di allarme (uint16)
- /// Valore (bitmap) allarmi come uint16
- ///
- public bool isChanged(int num, uint newValue)
- {
- // per prima cosa controllo valori RAW
- bool answ = !alarmsState[num].Equals(newValue);
- if (answ)
- {
- // controllo valori filtrati con ## (sottraendo BITMASK dai valori di filtro)
- answ = ((alarmsState[num] & alarmsMask[num]) != (newValue & alarmsMask[num]));
- // se fossero ancora differenti controllo ulteriore mask dato il counter dei blink:
- if (answ)
- {
- var blinkFilt = blinkFilter(num);
- answ = ((alarmsState[num] & (alarmsMask[num] | blinkFilt)) != (newValue & (alarmsMask[num] | blinkFilt)));
- }
- }
- return answ;
- }
-
- ///
- /// Inizializzazione classe con valori calcolati: attenzione si aspetta banchi da 32 bit...
- ///
- public void setupData()
- {
- // inizializzo vettore valore allarmi x banco int16
- alarmsState = new uint[size / 2];
- alarmsMask = new uint[size / 2];
-
- // una volta inizializzata la classe di base sistemo vettori allarmi disabilitati ed il contatore blink dei fronti di discesa
- alarmsBlinkDownCounter = new int[messages.Count];
- int idx = 0;
- int bank = 0;
- foreach (var item in messages)
- {
- if (item.StartsWith("##"))
- {
- alarmsBlinkDownCounter[idx] = -999;
- alarmsBlinkUpCounter[idx] = -999;
- }
- else
- {
- //alarmsBlinkDownCounter[idx] = blinkDownVal;
- alarmsBlinkDownCounter[idx] = 1;
- alarmsBlinkUpCounter[idx] = blinkUpVal;
- alarmsMask[bank] += (uint)1 << idx;
- }
- idx++;
- // sistemo bank/indice
- if (idx > 15)
- {
- bank++;
- idx = 0;
- }
- }
- }
-
- ///
- /// Imposta il valore dello status attuale allarme impostando eventuale valore blink x le variazioni
- ///
- ///
- ///
- public void updStatusVal(int num, uint newStatus)
- {
- // calcola la maschera di variazione da valore precedente
- var variations = newStatus ^ alarmsState[num];
- // ciclo sui 16 bit...
- for (int i = 0; i < 16; i++)
- {
- if ((variations & (1 << i)) == (1 << i))
- {
- alarmsBlinkDownCounter[num * 16 + i] = blinkDownVal;
- }
- }
- // salvo nuovo valore
- alarmsState[num] = newStatus;
- }
-
- #endregion Public Methods
- }
-#endif
-
///
/// Classe gestione configurazione parametri di base x configuraizone estesa (es MTConnect, OPC-UA, ...)
///
diff --git a/IOB-WIN-NEXT/DATA/CONF/MAIN.ini b/IOB-WIN-NEXT/DATA/CONF/MAIN.ini
index 84f43446..bb7dc74b 100644
--- a/IOB-WIN-NEXT/DATA/CONF/MAIN.ini
+++ b/IOB-WIN-NEXT/DATA/CONF/MAIN.ini
@@ -73,6 +73,6 @@ CLI_INST=SteamWareSim
;STARTLIST=MECART_80
;STARTLIST=PING
;STARTLIST=PIZ09
-STARTLIST=PIZ04
+STARTLIST=PIZ05
MAXCNC=10
\ No newline at end of file
diff --git a/IOB-WIN-NEXT/DATA/CONF/PIZ05.json b/IOB-WIN-NEXT/DATA/CONF/PIZ05.json
index 4bcdae83..1ffd2f6c 100644
--- a/IOB-WIN-NEXT/DATA/CONF/PIZ05.json
+++ b/IOB-WIN-NEXT/DATA/CONF/PIZ05.json
@@ -100,8 +100,8 @@
"func": "MEDIAN",
"period": 90,
"factor": 270,
- "minVal": 0,
- "maxVal": 100,
+ "minVal": -1,
+ "maxVal": 101,
"unit": "Kg"
},
"MainPress": {
diff --git a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj
index ab3afa88..9903147e 100644
--- a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj
+++ b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj
@@ -254,6 +254,10 @@
Always
+
+
+
+
Always
diff --git a/IOB-WIN-NEXT/IobModbusTCP.cs b/IOB-WIN-NEXT/IobModbusTCP.cs
index 97efdabf..051ac134 100644
--- a/IOB-WIN-NEXT/IobModbusTCP.cs
+++ b/IOB-WIN-NEXT/IobModbusTCP.cs
@@ -131,55 +131,6 @@ namespace IOB_WIN_NEXT
// leggo a ciclo le aree degli allarmi CONFIGURATI, se ne trovo --> segnalo allarme...
foreach (var item in alarmMaps)
{
-#if false
- // in primis decremento eventuali blink...
- item.updateBlinkCounter();
- // banchi in array Int16 --> scompongo
- for (int i = 0; i < item.size / 2; i++)
- {
- // verifico se usare LUT
- bool useLUT = memSetR != null && memSetR.Count > 0;
- if (useLUT)
- {
- int lutAddress = 40000 + item.index;
- if (HoldingRegisterLUT.ContainsKey(lutAddress))
- {
- try
- {
- listInt = HoldingRegisterLUT[lutAddress];
- }
- catch (Exception exc)
- {
- lgError($"Errore in lettura da HoldingRegisterLUT per indirizzo {lutAddress} | item {item.memAddr}{Environment.NewLine}{exc}");
- }
- }
- }
- else
- {
- listInt = readInputReg(item.index, item.size);
- }
- currStatus = ModbusClient.ConvertRegistersToInt(listInt);
-
- // verifico SE sia variato... confronto allarmi filtrato stile blink per bit status:
- // - allarmi che iniziano per # IGNORATI
- // - altri allarmi con un countdown da MAX_COUNTER_BLINK a 0 per il fronte di discesa
- if (item.isChanged(i, (uint)currStatus))
- {
- answ = currStatus > 0;
- if (answ)
- {
- numErrors++;
- }
- // registro gli allarmi attivi e trasmetto...
- if (sendAlarmVariations(item.memAddr, i, item.alarmsState[i], (uint)(item.alarmsMask[i] & currStatus), item.messages))
- {
- // se inviato --> salvo stato da current...
- item.updStatusVal(i, (uint)(item.alarmsMask[i] & currStatus));
- }
- }
- }
-#endif
-
// banchi in array Int16 --> scompongo
for (int i = 0; i < item.size / 2; i++)
{
@@ -208,19 +159,17 @@ namespace IOB_WIN_NEXT
// aggiornamento blink counters dato nuovo valore
item.checkBlinkCounter(i, (uint)currStatus);
-#if false
- item.updateBlinkCounter();
-#endif
+ // calcolo indice errori
+ if ((uint)(item.alarmsMask[i] & currStatus) > 0)
+ {
+ numErrors++;
+ }
// verifico SE sia variato... confronto allarmi filtrato stile blink per bit status:
// - allarmi che iniziano per # IGNORATI
// - altri allarmi con un countdown da MAX_COUNTER_BLINK a 0 per il fronte di discesa
if (item.isChanged(i, (uint)currStatus))
{
- if (currStatus > 0)
- {
- numErrors++;
- }
// registro gli allarmi attivi e trasmetto...
if (sendAlarmVariations(item.memAddr, i, item.alarmsState[i], (uint)(item.alarmsMask[i] & currStatus), item.messages))
{
@@ -725,7 +674,7 @@ namespace IOB_WIN_NEXT
string deltaValStr = getOptPar("DELTA_VAL");
if (!string.IsNullOrEmpty(deltaValStr))
{
- double.TryParse(deltaValStr, out deltaVal);
+ double.TryParse(deltaValStr.Replace(".",","), out deltaVal);
}
bool enableByApp = utils.CRB("enableContapezzi");
bool enableByIob = (getOptPar("ENABLE_PZCOUNT") == "TRUE");
@@ -1272,9 +1221,10 @@ namespace IOB_WIN_NEXT
// refresh stato allarmi!!!
if (connectionOk)
{
+ lgInfo($"Connessione OK: {connectionOk}");
if (adpRunning)
{
- lgInfo($"Connessione OK: {connectionOk} | adpRunning: {adpRunning}");
+ lgInfo($"AdpRunning: {adpRunning}");
}
}
else
@@ -1313,18 +1263,21 @@ namespace IOB_WIN_NEXT
///
public override void tryDisconnect()
{
- lgInfo("Richiesta disconnessione adapter ModBusTCP!");
- try
+ if (currPLC != null && currPLC.Connected)
{
- if (currPLC.Connected)
+ lgInfo("Richiesta disconnessione adapter ModBusTCP!");
+ try
{
- currPLC.Disconnect();
+ if (currPLC.Connected)
+ {
+ currPLC.Disconnect();
+ }
+ lgInfo("Effettuata disconnessione adapter ModBusTCP!");
+ }
+ catch (Exception exc)
+ {
+ lgFatal($"Errore nella disconnessione dall'adapter ModBusTCP{Environment.NewLine}{exc}");
}
- lgInfo("Effettuata disconnessione adapter ModBusTCP!");
- }
- catch (Exception exc)
- {
- lgFatal($"Errore nella disconnessione dall'adapter ModBusTCP{Environment.NewLine}{exc}");
}
connectionOk = false;
}
diff --git a/IOB-WIN-NEXT/IobSiemensComeca.cs b/IOB-WIN-NEXT/IobSiemensComeca.cs
index 0715bf85..948d5656 100644
--- a/IOB-WIN-NEXT/IobSiemensComeca.cs
+++ b/IOB-WIN-NEXT/IobSiemensComeca.cs
@@ -75,7 +75,6 @@ namespace IOB_WIN_NEXT
currStatus = S7.Net.Types.Counter.FromByteArray(RawInput.Skip(item.index + 2 * i).Take(2).ToArray());
// verifica e decremento blink...
item.checkBlinkCounter(i, (uint)currStatus);
- //item.updateBlinkCounter();
// verifico SE sia variato... confronto allarmi filtrato stile blink per bit status:
// - allarmi che iniziano per # IGNORATI