diff --git a/IOB-WIN-NEXT/DATA/CONF/STEL_210.ini b/IOB-WIN-NEXT/DATA/CONF/STEL_210.ini
index 445c4994..42d9689e 100644
--- a/IOB-WIN-NEXT/DATA/CONF/STEL_210.ini
+++ b/IOB-WIN-NEXT/DATA/CONF/STEL_210.ini
@@ -69,6 +69,8 @@ DISABLE_SEND_WDST=TRUE
; conf parametri memoria READ/WRITE
OPC_PARAM_CONF=STEL_210.json
+; conf aree allarme
+ALARM_CONF=STEL_210_alarm.json
[BRANCH]
NAME=master
\ No newline at end of file
diff --git a/IOB-WIN-NEXT/DATA/CONF/STEL_210.json b/IOB-WIN-NEXT/DATA/CONF/STEL_210.json
index a96b130c..e33fefc0 100644
--- a/IOB-WIN-NEXT/DATA/CONF/STEL_210.json
+++ b/IOB-WIN-NEXT/DATA/CONF/STEL_210.json
@@ -99,6 +99,7 @@
]
},
"fluxLogVeto": [
+ "AlarmCode(0)",
"AlarmCode(1)",
"AlarmCode(2)",
"AlarmCode(3)",
@@ -118,6 +119,7 @@
"AlarmCode(17)",
"AlarmCode(18)",
"AlarmCode(19)",
+ "AlarmText(0)",
"AlarmText(1)",
"AlarmText(2)",
"AlarmText(3)",
@@ -202,6 +204,16 @@
"ns=4;s=AlarmCode(7)",
"ns=4;s=AlarmCode(8)",
"ns=4;s=AlarmCode(9)",
+ "ns=4;s=AlarmCode(10)",
+ "ns=4;s=AlarmCode(11)",
+ "ns=4;s=AlarmCode(12)",
+ "ns=4;s=AlarmCode(13)",
+ "ns=4;s=AlarmCode(14)",
+ "ns=4;s=AlarmCode(15)",
+ "ns=4;s=AlarmCode(16)",
+ "ns=4;s=AlarmCode(17)",
+ "ns=4;s=AlarmCode(18)",
+ "ns=4;s=AlarmCode(19)",
"ns=4;s=AlarmText(0)",
"ns=4;s=AlarmText(1)",
"ns=4;s=AlarmText(2)",
@@ -212,6 +224,16 @@
"ns=4;s=AlarmText(7)",
"ns=4;s=AlarmText(8)",
"ns=4;s=AlarmText(9)",
+ "ns=4;s=AlarmText(10)",
+ "ns=4;s=AlarmText(11)",
+ "ns=4;s=AlarmText(12)",
+ "ns=4;s=AlarmText(13)",
+ "ns=4;s=AlarmText(14)",
+ "ns=4;s=AlarmText(15)",
+ "ns=4;s=AlarmText(16)",
+ "ns=4;s=AlarmText(17)",
+ "ns=4;s=AlarmText(18)",
+ "ns=4;s=AlarmText(19)",
"ns=4;s=MessageCode(0)",
"ns=4;s=MessageCode(1)",
"ns=4;s=MessageCode(2)",
@@ -222,6 +244,16 @@
"ns=4;s=MessageCode(7)",
"ns=4;s=MessageCode(8)",
"ns=4;s=MessageCode(9)",
+ "ns=4;s=MessageCode(10)",
+ "ns=4;s=MessageCode(11)",
+ "ns=4;s=MessageCode(12)",
+ "ns=4;s=MessageCode(13)",
+ "ns=4;s=MessageCode(14)",
+ "ns=4;s=MessageCode(15)",
+ "ns=4;s=MessageCode(16)",
+ "ns=4;s=MessageCode(17)",
+ "ns=4;s=MessageCode(18)",
+ "ns=4;s=MessageCode(19)",
"ns=4;s=MessageText(0)",
"ns=4;s=MessageText(1)",
"ns=4;s=MessageText(2)",
@@ -232,6 +264,16 @@
"ns=4;s=MessageText(7)",
"ns=4;s=MessageText(8)",
"ns=4;s=MessageText(9)",
+ "ns=4;s=MessageText(10)",
+ "ns=4;s=MessageText(11)",
+ "ns=4;s=MessageText(12)",
+ "ns=4;s=MessageText(13)",
+ "ns=4;s=MessageText(14)",
+ "ns=4;s=MessageText(15)",
+ "ns=4;s=MessageText(16)",
+ "ns=4;s=MessageText(17)",
+ "ns=4;s=MessageText(18)",
+ "ns=4;s=MessageText(19)",
"ns=4;s=BladeName",
"ns=4;s=BladeCutSpeed",
"ns=4;s=BladeRotSpeed",
diff --git a/IOB-WIN-NEXT/DATA/CONF/STEL_210_alarm.json b/IOB-WIN-NEXT/DATA/CONF/STEL_210_alarm.json
new file mode 100644
index 00000000..64c487e8
--- /dev/null
+++ b/IOB-WIN-NEXT/DATA/CONF/STEL_210_alarm.json
@@ -0,0 +1,110 @@
+[
+ {
+ "description": "Messaggi",
+ "tipoMem": "UInt",
+ "memAddr": "Message",
+ "index": 0,
+ "size": 20,
+ "blockType": "ActiveList",
+ "blockLevel": "Message",
+ "activeCountKey": "NumOfMessages",
+ "activeKeys": [
+ "MessageCode(0)",
+ "MessageCode(1)",
+ "MessageCode(2)",
+ "MessageCode(3)",
+ "MessageCode(4)",
+ "MessageCode(5)",
+ "MessageCode(6)",
+ "MessageCode(7)",
+ "MessageCode(8)",
+ "MessageCode(9)",
+ "MessageCode(10)",
+ "MessageCode(11)",
+ "MessageCode(12)",
+ "MessageCode(13)",
+ "MessageCode(14)",
+ "MessageCode(15)",
+ "MessageCode(16)",
+ "MessageCode(17)",
+ "MessageCode(18)",
+ "MessageCode(19)"
+ ],
+ "activeValues": [
+ "MessageText(0)",
+ "MessageText(1)",
+ "MessageText(2)",
+ "MessageText(3)",
+ "MessageText(4)",
+ "MessageText(5)",
+ "MessageText(6)",
+ "MessageText(7)",
+ "MessageText(8)",
+ "MessageText(9)",
+ "MessageText(10)",
+ "MessageText(11)",
+ "MessageText(12)",
+ "MessageText(13)",
+ "MessageText(14)",
+ "MessageText(15)",
+ "MessageText(16)",
+ "MessageText(17)",
+ "MessageText(18)",
+ "MessageText(19)"
+ ]
+ },
+ {
+ "description": "Allarmi",
+ "tipoMem": "UInt",
+ "memAddr": "Alarm",
+ "index": 0,
+ "size": 20,
+ "blockType": "ActiveList",
+ "blockLevel": "Alarm",
+ "activeCountKey": "NumOfAlarms",
+ "activeKeys": [
+ "AlarmCode(0)",
+ "AlarmCode(1)",
+ "AlarmCode(2)",
+ "AlarmCode(3)",
+ "AlarmCode(4)",
+ "AlarmCode(5)",
+ "AlarmCode(6)",
+ "AlarmCode(7)",
+ "AlarmCode(8)",
+ "AlarmCode(9)",
+ "AlarmCode(10)",
+ "AlarmCode(11)",
+ "AlarmCode(12)",
+ "AlarmCode(13)",
+ "AlarmCode(14)",
+ "AlarmCode(15)",
+ "AlarmCode(16)",
+ "AlarmCode(17)",
+ "AlarmCode(18)",
+ "AlarmCode(19)"
+ ],
+ "activeValues": [
+ "AlarmText(0)",
+ "AlarmText(1)",
+ "AlarmText(2)",
+ "AlarmText(3)",
+ "AlarmText(4)",
+ "AlarmText(5)",
+ "AlarmText(6)",
+ "AlarmText(7)",
+ "AlarmText(8)",
+ "AlarmText(9)",
+ "AlarmText(10)",
+ "AlarmText(11)",
+ "AlarmText(12)",
+ "AlarmText(13)",
+ "AlarmText(14)",
+ "AlarmText(15)",
+ "AlarmText(16)",
+ "AlarmText(17)",
+ "AlarmText(18)",
+ "AlarmText(19)"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/IOB-WIN-NEXT/DATA/CONF/Tend_FIMAT_01.json b/IOB-WIN-NEXT/DATA/CONF/Tend_FIMAT_01.json
index fdf36e51..fd1d7891 100644
--- a/IOB-WIN-NEXT/DATA/CONF/Tend_FIMAT_01.json
+++ b/IOB-WIN-NEXT/DATA/CONF/Tend_FIMAT_01.json
@@ -59,7 +59,7 @@
},
"NumAllarmi": {
"name": "NumAllarmi",
- "description": "NUmero Allarmi Presenti",
+ "description": "Numero Allarmi Presenti",
"memAddr": "40005",
"tipoMem": "Int",
"index": 5,
diff --git a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj
index c4ae2328..b3af7cb8 100644
--- a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj
+++ b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj
@@ -503,6 +503,9 @@
Always
+
+ Always
+
Always
diff --git a/IOB-WIN-NEXT/IobOpc/OpcUaEwonAdige.cs b/IOB-WIN-NEXT/IobOpc/OpcUaEwonAdige.cs
index 0eb10eda..4c2aeb47 100644
--- a/IOB-WIN-NEXT/IobOpc/OpcUaEwonAdige.cs
+++ b/IOB-WIN-NEXT/IobOpc/OpcUaEwonAdige.cs
@@ -99,5 +99,73 @@ namespace IOB_WIN_NEXT.IobOpc
}
#endregion Protected Methods
+
+ ///
+ /// Verifica presenza eventuali allarmi in modalità BLM/Adige
+ ///
+ ///
+ protected override bool hasAlarms()
+ {
+ /*----------------------------------------------
+ * verifica lo stato allarmi da
+ * - condizione allarme (key)
+ * - numero allarmi presenti
+ * - lettura relative chiavi OPC-UA dei codici
+ * - lettura relative chiavi OPC-UA del testo allarme
+ * - verifica variazione dell'insieme dei codici attivi (INT)
+ * - costruzione della stringa finale allarmi attivi (unico banco)
+ ----------------------------------------------*/
+ bool answ = false;
+ int numErrors = 0;
+ int currStatus = 0;
+ ushort full16 = 65535;
+ int[] listInt = new int[2];
+ if (alarmMaps != null)
+ {
+ // leggo a ciclo le aree degli allarmi CONFIGURATI, se ne trovo --> segnalo allarme...
+ foreach (var item in alarmMaps)
+ {
+ // banchi in array Int16 --> scompongo
+ for (int i = 0; i < item.size / 2; i++)
+ {
+ currStatus = getAlarmStatus(item);
+ // ora filtro x l'i-esimo banco a 16 bit...
+ if (i == 0)
+ {
+ currStatus = (ushort)(currStatus & full16);
+ }
+ else
+ {
+ var temp = currStatus >> 16;
+ currStatus = (ushort)temp;
+ }
+
+ // aggiornamento blink counters dato nuovo valore
+ item.checkBlinkCounter(i, (uint)currStatus);
+
+ // 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))
+ {
+ // 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));
+ }
+ }
+ }
+ }
+ }
+ answ = numErrors > 0;
+ return answ;
+ }
}
}
\ No newline at end of file
diff --git a/IOB-WIN-NEXT/IobSiemens/SiemensComeca.cs b/IOB-WIN-NEXT/IobSiemens/SiemensComeca.cs
index 155a5510..fd027151 100644
--- a/IOB-WIN-NEXT/IobSiemens/SiemensComeca.cs
+++ b/IOB-WIN-NEXT/IobSiemens/SiemensComeca.cs
@@ -148,53 +148,6 @@ namespace IOB_WIN_NEXT.IobSiemens
#endregion Protected Fields
-#if false
- protected bool hasAlarms
- {
- get
- {
- bool answ = false;
- int numErrors = 0;
- uint currStatus = 0;
- if (alarmMaps != null)
- {
- // leggo a ciclo le aree degli allarmi CONFIGURATI, se ne trovo --> segnalo allarme...
- foreach (var item in alarmMaps)
- {
- // banchi in WORD (2 byte) --> scompongo
- for (int i = 0; i < item.size / 2; i++)
- {
- currStatus = S7.Net.Types.Counter.FromByteArray(RawInput.Skip(item.index + 2 * i).Take(2).ToArray());
- // verifica e decremento blink...
- item.checkBlinkCounter(i, (uint)currStatus);
-
- // 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, 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))
- {
- // se inviato --> salvo stato da current...
- item.updStatusVal(i, (uint)(item.alarmsMask[i] & currStatus));
- }
- }
- }
- }
- }
- answ = numErrors > 0;
- return answ;
- }
- }
-#endif
-
#region Protected Methods
///