Continuo modifica Adige x gestione allarmi nuovi

This commit is contained in:
Samuele Locatelli
2023-12-20 16:04:18 +01:00
parent 5e35ba60b4
commit 55b97a540a
7 changed files with 226 additions and 48 deletions
+2
View File
@@ -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
+42
View File
@@ -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",
+110
View File
@@ -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)"
]
}
]
+1 -1
View File
@@ -59,7 +59,7 @@
},
"NumAllarmi": {
"name": "NumAllarmi",
"description": "NUmero Allarmi Presenti",
"description": "Numero Allarmi Presenti",
"memAddr": "40005",
"tipoMem": "Int",
"index": 5,
+3
View File
@@ -503,6 +503,9 @@
<None Include="DATA\CONF\TFT_RAMA_001.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\STEL_210_alarm.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="DATA\CONF\TFT_RAMA_001_alarm.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
+68
View File
@@ -99,5 +99,73 @@ namespace IOB_WIN_NEXT.IobOpc
}
#endregion Protected Methods
/// <summary>
/// Verifica presenza eventuali allarmi in modalità BLM/Adige
/// </summary>
/// <returns></returns>
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;
}
}
}
-47
View File
@@ -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
/// <summary>