diff --git a/MP.MONO.ADAPTER.OPC/CONF/Alarms.multiax.json b/MP.MONO.ADAPTER.OPC/CONF/Alarms.multiax.json index 6532f6f..f64383c 100644 --- a/MP.MONO.ADAPTER.OPC/CONF/Alarms.multiax.json +++ b/MP.MONO.ADAPTER.OPC/CONF/Alarms.multiax.json @@ -130,5 +130,65 @@ "MaxVal": 0, "DisplFormat": "", "IsNumeric": false + }, + { + "Order": 12, + "ExtCode": "ns=1;s=3_12_ALARM PLC 11", + "Type": "ALARM", + "Title": "ALARM PLC 11", + "Value": "", + "ValueNum": 0, + "MinVal": 0, + "MaxVal": 0, + "DisplFormat": "", + "IsNumeric": false + }, + { + "Order": 13, + "ExtCode": "ns=1;s=3_13_ALARM PLC 12", + "Type": "ALARM", + "Title": "ALARM PLC 12", + "Value": "", + "ValueNum": 0, + "MinVal": 0, + "MaxVal": 0, + "DisplFormat": "", + "IsNumeric": false + }, + { + "Order": 14, + "ExtCode": "ns=1;s=3_14_ALARM PLC 13", + "Type": "ALARM", + "Title": "ALARM PLC 13", + "Value": "", + "ValueNum": 0, + "MinVal": 0, + "MaxVal": 0, + "DisplFormat": "", + "IsNumeric": false + }, + { + "Order": 15, + "ExtCode": "ns=1;s=3_15_ALARM PLC 14", + "Type": "ALARM", + "Title": "ALARM PLC 14", + "Value": "", + "ValueNum": 0, + "MinVal": 0, + "MaxVal": 0, + "DisplFormat": "", + "IsNumeric": false + }, + { + "Order": 16, + "ExtCode": "ns=1;s=3_16_ALARM PLC 15", + "Type": "ALARM", + "Title": "ALARM PLC 15", + "Value": "", + "ValueNum": 0, + "MinVal": 0, + "MaxVal": 0, + "DisplFormat": "", + "IsNumeric": false } ] \ No newline at end of file diff --git a/MP.MONO.ADAPTER.OPC/IobOpcUa.cs b/MP.MONO.ADAPTER.OPC/IobOpcUa.cs index 8aed9ff..cb929b5 100644 --- a/MP.MONO.ADAPTER.OPC/IobOpcUa.cs +++ b/MP.MONO.ADAPTER.OPC/IobOpcUa.cs @@ -47,7 +47,10 @@ namespace MP.MONO.ADAPTER.OPC msVetoRedCache = config.GetValue("OptPar:VetoSendCache"); MinWait = config.GetValue("OptPar:MinWait"); MaxWait = config.GetValue("OptPar:MaxWait"); - logInfo($"VetoSendCache: {msVetoRedCache}s | MinWait: {MinWait} | MaxWait: {MaxWait}"); + AlarmCleanPre = config.GetValue("OptPar:AlarmCleanPre"); + AlarmCleanPost= config.GetValue("OptPar:AlarmCleanPost"); + AlarmTrimWSpace = config.GetValue("OptPar:AlarmTrimWSpace"); + logInfo($"VetoSendCache: {msVetoRedCache}s | MinWait: {MinWait} | MaxWait: {MaxWait} | AlarmCleanPre: {AlarmCleanPre} | AlarmCleanPost: {AlarmCleanPost}"); // gestione data filtering... if (!string.IsNullOrEmpty(config.GetValue("ENABLE_DATA_FILTER"))) @@ -803,13 +806,30 @@ namespace MP.MONO.ADAPTER.OPC // Allarmi if (AlarmsKList.Contains(uuid)) { + // allarmi: effettuo PRE processing x filtrare pre/post { } + if (!string.IsNullOrEmpty(AlarmCleanPre)) + { + rawDataVal = rawDataVal.Replace(AlarmCleanPre, ""); + } + if (!string.IsNullOrEmpty(AlarmCleanPost)) + { + rawDataVal = rawDataVal.Replace(AlarmCleanPost, ""); + } + if (AlarmTrimWSpace && string.IsNullOrWhiteSpace(rawDataVal)) + { + rawDataVal = rawDataVal.Trim(); + } // aggiorno nella lista dei valori quello cambiato... var currItem = AlarmsStatus.FirstOrDefault(x => x.ExtCode == uuid); currItem.Value = rawDataVal; // salvo in redis! redisDb.StringSet(Constants.ALARMS_ADAP_CONF_KEY, JsonConvert.SerializeObject(AlarmsStatus)); // genero elenco allarmi attivi - List adpActiveAlarm = AlarmsStatus.Select(x => x.Value).Where(x => !string.IsNullOrEmpty(x)).OrderBy(x => x).ToList(); + List adpActiveAlarm = AlarmsStatus + .Select(x => x.Value) + .Where(x => !string.IsNullOrEmpty(x)) + .OrderBy(x => x) + .ToList(); logTrace($"R&S | AlarmsKList | {uuid} | {currItem.Value}"); var payloadAlarms = JsonConvert.SerializeObject(adpActiveAlarm); @@ -936,6 +956,20 @@ namespace MP.MONO.ADAPTER.OPC /// private List AlarmsKList { get; set; } = new List(); + /// + /// Char x bonifica stringa allarmi - PRE + /// + private string AlarmCleanPre = ""; + /// + /// Char x bonifica stringa allarmi - POST + /// + private string AlarmCleanPost = ""; + + /// + /// Indica se forzare trim dei whitespace da allarmi + /// + private bool AlarmTrimWSpace = false; + /// /// Elenco oggetti DisplayDTO da gestire come Allarmi /// diff --git a/MP.MONO.ADAPTER.OPC/appsettings.json b/MP.MONO.ADAPTER.OPC/appsettings.json index 055fc03..12055af 100644 --- a/MP.MONO.ADAPTER.OPC/appsettings.json +++ b/MP.MONO.ADAPTER.OPC/appsettings.json @@ -42,6 +42,7 @@ //"AlarmRegexp": "^{.*}", "AlarmCleanPre": "{", "AlarmCleanPost": "}", + "AlarmTrimWSpace": true, "CleanupRegexpPre": "", //"CleanupRegexpPre": "[^a-zA-Z0-9 %/,.\\-\\+\\r\\n]", "CleanupRegexpPost": "[^a-zA-Z0-9 %\\{\\},.\\-\\+]", diff --git a/MP.MONO.Core/ConfigManager.cs b/MP.MONO.Core/ConfigManager.cs index 5a67617..7e444cc 100644 --- a/MP.MONO.Core/ConfigManager.cs +++ b/MP.MONO.Core/ConfigManager.cs @@ -86,7 +86,7 @@ namespace MP.MONO.Core { currConf = JsonConvert.DeserializeObject>(rawData); // salvo in redis! - redisDb.StringSetAsync(Constants.ALARMS_ADAP_CONF_KEY, JsonConvert.SerializeObject(currConf)); + redisDb.StringSet(Constants.ALARMS_ADAP_CONF_KEY, JsonConvert.SerializeObject(currConf)); } } if (currConf == null) diff --git a/MP.MONO.DECODER/appsettings.json b/MP.MONO.DECODER/appsettings.json index 98af583..78d4e75 100644 --- a/MP.MONO.DECODER/appsettings.json +++ b/MP.MONO.DECODER/appsettings.json @@ -33,8 +33,8 @@ } }, "OptPar": { - "AlarmCleanPre": "{", - "AlarmCleanPost": "}", + "AlarmCleanPre": "", + "AlarmCleanPost": "", "AlarmIgnoreEmpty": true, "AlarmMode": "RawList", "AlarmRegexp": "^{[\\d\\w\\:\\ \\.\\/\\(\\)]*}",