Rama Siemens:
- Update decodifica altri valori contatori
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
"BrowseValue": 0,
|
||||
"kvDelim": "#",
|
||||
"memDelim": ".",
|
||||
"keyPartCount": "Production#GEN.Float.0",
|
||||
"keyPartCount": "PV_Exchange_DB_R.Production#GEN.Float.0",
|
||||
"keyPartReq": "",
|
||||
"keyPartId": "",
|
||||
"keyProgName": "",
|
||||
@@ -14,22 +14,22 @@
|
||||
"maxNullRead": 500,
|
||||
"condWork": [
|
||||
{
|
||||
"keyName": "Fabric Run",
|
||||
"keyName": "PV_Exchange_DB_R.Fabric Run",
|
||||
"bitNum": 0,
|
||||
"targetValue": "1"
|
||||
},
|
||||
{
|
||||
"keyName": "Enabled",
|
||||
"keyName": "PV_Exchange_DB_R.Enabled",
|
||||
"bitNum": 0,
|
||||
"targetValue": "1"
|
||||
},
|
||||
{
|
||||
"keyName": "Enabled",
|
||||
"keyName": "PV_Exchange_DB_R.Enabled",
|
||||
"bitNum": 4,
|
||||
"targetValue": "1"
|
||||
},
|
||||
{
|
||||
"keyName": "Enabled",
|
||||
"keyName": "PV_Exchange_DB_R.Enabled",
|
||||
"bitNum": 5,
|
||||
"targetValue": "1"
|
||||
}
|
||||
@@ -38,12 +38,12 @@
|
||||
"checkMode": "OR",
|
||||
"checkList": [
|
||||
{
|
||||
"keyName": "Enabled",
|
||||
"keyName": "PV_Exchange_DB_R.Enabled",
|
||||
"bitNum": 4,
|
||||
"targetValue": "1"
|
||||
},
|
||||
{
|
||||
"keyName": "Enabled",
|
||||
"keyName": "PV_Exchange_DB_R.Enabled",
|
||||
"bitNum": 5,
|
||||
"targetValue": "1"
|
||||
}
|
||||
@@ -53,7 +53,7 @@
|
||||
"checkMode": "AND",
|
||||
"checkList": [
|
||||
{
|
||||
"keyName": "Enabled",
|
||||
"keyName": "PV_Exchange_DB_R.Enabled",
|
||||
"bitNum": 5,
|
||||
"targetValue": "1"
|
||||
}
|
||||
@@ -63,7 +63,7 @@
|
||||
"checkMode": "OR",
|
||||
"checkList": [
|
||||
{
|
||||
"keyName": "Fabric Run",
|
||||
"keyName": "PV_Exchange_DB_R.Fabric Run",
|
||||
"bitNum": 0,
|
||||
"targetValue": "0"
|
||||
}
|
||||
@@ -77,7 +77,7 @@
|
||||
"checkMode": "AND",
|
||||
"checkList": [
|
||||
{
|
||||
"keyName": "\"Alarms\"",
|
||||
"keyName": "PV_Exchange_DB_R.Alarms",
|
||||
"bitNum": 0,
|
||||
"targetValue": "1"
|
||||
}
|
||||
@@ -96,7 +96,10 @@
|
||||
"ns=3;s=\"PV_Exchange_DB_R\".\"Enabled\"",
|
||||
"ns=3;s=\"PV_Exchange_DB_R\".\"Fabric Run\"",
|
||||
"ns=3;s=\"PV_Exchange_DB_R\".\"Production\"",
|
||||
"ns=3;s=\"PV_Exchange_DB_R\".\"Alarms\""
|
||||
"ns=3;s=\"PV_Exchange_DB_R\".\"Alarms\"",
|
||||
"ns=3;s=\"SP_Exchange_DB_R\".\"Enabling\"",
|
||||
"ns=3;s=\"SP_Exchange_DB_R\".\"Fabric Enabling\"",
|
||||
"ns=3;s=\"SP_Exchange_DB_R\".\"Fabric Speed\""
|
||||
],
|
||||
"filterItemsNodeId": [
|
||||
"ns=2;s=RamosaETN21.RamosaCJ2._Hints",
|
||||
@@ -226,7 +229,7 @@
|
||||
"OPC_Prod_PartMetCount": {
|
||||
"name": "OPC_Prod_PartMetCount",
|
||||
"description": "Contatore Metri Parziale",
|
||||
"memAddr": "\"Production\"#GEN.Float.0",
|
||||
"memAddr": "PV_Exchange_DB_R.Production#GEN.Float.0",
|
||||
"tipoMem": "FloatABCD",
|
||||
"index": 1,
|
||||
"size": 1,
|
||||
@@ -240,7 +243,7 @@
|
||||
"OPC_Prod_TotMetCount": {
|
||||
"name": "OPC_Prod_TotMetCount",
|
||||
"description": "Contatore Metri Totale",
|
||||
"memAddr": "\"Production\"#GEN.Float.4",
|
||||
"memAddr": "PV_Exchange_DB_R.Production#GEN.Float.4",
|
||||
"tipoMem": "FloatABCD",
|
||||
"index": 1,
|
||||
"size": 1,
|
||||
@@ -254,7 +257,7 @@
|
||||
"OPC_Prod_TotHourCount": {
|
||||
"name": "OPC_Prod_TotHourCount",
|
||||
"description": "Contatore Ore Totale",
|
||||
"memAddr": "\"Production\"#GEN.Float.8",
|
||||
"memAddr": "PV_Exchange_DB_R.Production#GEN.Float.8",
|
||||
"tipoMem": "FloatABCD",
|
||||
"index": 1,
|
||||
"size": 1,
|
||||
@@ -274,7 +277,7 @@
|
||||
"MemConfWrite": "",
|
||||
"MaxVal": 9999
|
||||
},
|
||||
"BaseIdMask": "\"PV_Exchange_DB_R\".",
|
||||
"BaseIdMask": "",
|
||||
"DictOpcNameReplace": {
|
||||
"\"": ""
|
||||
}
|
||||
|
||||
@@ -891,6 +891,40 @@ namespace IOB_WIN_NEXT.IobOpc
|
||||
return changed;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fix stringa da versione "raw " a "bonificata"
|
||||
/// </summary>
|
||||
/// <param name="origName"></param>
|
||||
/// <returns></returns>
|
||||
internal string stringFixOpcUaName(string origName)
|
||||
{
|
||||
string answ = origName;
|
||||
// se ho dizionari di sostituzione caratteri sistemo!
|
||||
if (opcUaParams.DictOpcNameReplace.Count > 0)
|
||||
{
|
||||
// cerco nel dizionario LUT di traduzione
|
||||
if (DictOpcFixKeys.ContainsKey(origName))
|
||||
{
|
||||
answ = DictOpcFixKeys[origName];
|
||||
}
|
||||
else
|
||||
{
|
||||
// altrimenti sitemo e metto in dizionario
|
||||
foreach (var item in opcUaParams.DictOpcNameReplace)
|
||||
{
|
||||
answ = answ.Replace(item.Key, item.Value);
|
||||
}
|
||||
DictOpcFixKeys.Add(origName, answ);
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario chiavi OpcUa bonificate da char non standard
|
||||
/// </summary>
|
||||
internal Dictionary<string, string> DictOpcFixKeys { get; set; } = new Dictionary<string, string>();
|
||||
|
||||
/// <summary>
|
||||
/// Verifica ed invia variazioni DAL FORMATO RAW data (byte[])
|
||||
/// </summary>
|
||||
@@ -923,7 +957,10 @@ namespace IOB_WIN_NEXT.IobOpc
|
||||
string descr = "";
|
||||
DateTime locTStamp = DateTime.Now;
|
||||
descr = itemTranslation("OPC", uuid);
|
||||
sVal = $"Change 02: {locTStamp.ToString()} | descr: {descr} | Id: {MonIt.StartNodeId} | Val: {currVal}";
|
||||
// calcolo nomi "bonificati"
|
||||
string startNodeId = stringFixOpcUaName($"{MonIt.StartNodeId}");
|
||||
string displayName = stringFixOpcUaName($"{MonIt.DisplayName}");
|
||||
sVal = $"Change 02: {locTStamp.ToString()} | descr: {descr} | Id: {startNodeId} | Val: {currVal}";
|
||||
lgDebug(sVal);
|
||||
|
||||
// verifico se salvare
|
||||
@@ -933,7 +970,7 @@ namespace IOB_WIN_NEXT.IobOpc
|
||||
// cerco filtro ANCHE PER solo display name x contains...
|
||||
if (!isFiltered)
|
||||
{
|
||||
isFiltered = opcUaParams.fluxLogVetoContains.Contains(uuid) || opcUaParams.fluxLogVetoContains.Contains(MonIt.DisplayName);
|
||||
isFiltered = opcUaParams.fluxLogVetoContains.Contains(uuid) || opcUaParams.fluxLogVetoContains.Contains(displayName);
|
||||
}
|
||||
if (isFiltered)
|
||||
{
|
||||
@@ -950,22 +987,40 @@ namespace IOB_WIN_NEXT.IobOpc
|
||||
if (memMap.mMapRead != null && memMap.mMapRead.Count > 0)
|
||||
{
|
||||
// elenco aree collegate...
|
||||
var listRelated = memMap.mMapRead.Where(x => x.Value.memAddr.Contains(uuid));
|
||||
var listRelated = memMap.mMapRead.Where(x => x.Value.memAddr.Contains(uuid)).ToList();
|
||||
if (listRelated != null && listRelated.Count() > 0)
|
||||
{
|
||||
foreach (var item in listRelated)
|
||||
{
|
||||
// ciclo e calcolo valore
|
||||
var rByte= dataItemMem[uuid].rawByte;
|
||||
string convVal = ConvBArr(rByte, item.Value.memAddr, opcUaParams.memDelim);
|
||||
var rByte = dataItemMem[uuid].rawByte;
|
||||
int iPos = item.Value.memAddr.IndexOf(opcUaParams.kvDelim);
|
||||
string varDef = item.Value.memAddr.Substring(iPos + 1);
|
||||
string convVal = ConvBArr(rByte, varDef, opcUaParams.memDelim);
|
||||
// metto in array currData...
|
||||
upsertKey(item.Key, convVal);
|
||||
accodaFLog($"mMapRead | {item.Key} | {convVal}", qEncodeFLog(item.Key, convVal));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (memMap.mMapWrite != null && memMap.mMapWrite.Count > 0)
|
||||
{
|
||||
|
||||
// elenco aree collegate...
|
||||
var listRelated = memMap.mMapWrite.Where(x => x.Value.memAddr.Contains(uuid)).ToList();
|
||||
if (listRelated != null && listRelated.Count() > 0)
|
||||
{
|
||||
foreach (var item in listRelated)
|
||||
{
|
||||
// ciclo e calcolo valore
|
||||
var rByte = dataItemMem[uuid].rawByte;
|
||||
int iPos = item.Value.memAddr.IndexOf(opcUaParams.kvDelim);
|
||||
string varDef = item.Value.memAddr.Substring(iPos + 1);
|
||||
string convVal = ConvBArr(rByte, varDef, opcUaParams.memDelim);
|
||||
// metto in array currData...
|
||||
upsertKey(item.Key, convVal);
|
||||
accodaFLog($"mMapRead | {item.Key} | {convVal}", qEncodeFLog(item.Key, convVal));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1357,15 +1412,7 @@ namespace IOB_WIN_NEXT.IobOpc
|
||||
{
|
||||
answ = fullCode.Replace(opcUaParams.BaseIdMask, "");
|
||||
}
|
||||
// tolgo eventuali caratteri speciali mappati...
|
||||
// se c'è gestione fix nomi sistemo...
|
||||
if (opcUaParams.DictOpcNameReplace.Count > 0)
|
||||
{
|
||||
foreach (var item in opcUaParams.DictOpcNameReplace)
|
||||
{
|
||||
answ = answ.Replace(item.Key, item.Value);
|
||||
}
|
||||
}
|
||||
answ = stringFixOpcUaName(answ);
|
||||
// trimmo spazi x ridurre dimensione se > 50...
|
||||
if (answ.Length > 50)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user