Mitigazione allarmi in getDynData
- implementato x modbus (cedax) - veto invio cablato a 120 sec (no conf x allarmi x ora)
This commit is contained in:
+63
-33
@@ -1727,6 +1727,35 @@ namespace IOB_WIN_NEXT
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua conversione da valore bitmap ai valori configurati x allarme
|
||||
/// </summary>
|
||||
/// <param name="memConf">Configurazione banco allarmi</param>
|
||||
/// <param name="bState">BitState allarmi</param>
|
||||
/// <returns></returns>
|
||||
public string getAlarmState(BaseAlarmConf memConf, byte[] bState)
|
||||
{
|
||||
string valTransl = "";
|
||||
List<string> descAttivi = new List<string>();
|
||||
BitArray bitAttivi = new BitArray(bState);
|
||||
bool[] bitStati = new bool[bitAttivi.Count];
|
||||
bitAttivi.CopyTo(bitStati, 0);
|
||||
// cerco bit attivi
|
||||
int idx = 0;
|
||||
foreach (var item in bitStati)
|
||||
{
|
||||
if (item && memConf.messages.Count > idx)
|
||||
{
|
||||
string currState = memConf.messages[idx];
|
||||
descAttivi.Add(currState);
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
// combino string
|
||||
valTransl = string.Join(",", descAttivi);
|
||||
return valTransl;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// effettua recupero dati ed invio valori modificati...
|
||||
/// </summary>
|
||||
@@ -1910,35 +1939,6 @@ namespace IOB_WIN_NEXT
|
||||
return valTransl;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua conversione da valore bitmap ai valori configurati x allarme
|
||||
/// </summary>
|
||||
/// <param name="memConf">Configurazione banco allarmi</param>
|
||||
/// <param name="bState">BitState allarmi</param>
|
||||
/// <returns></returns>
|
||||
public string getAlarmState(BaseAlarmConf memConf, byte[] bState)
|
||||
{
|
||||
string valTransl = "";
|
||||
List<string> descAttivi = new List<string>();
|
||||
BitArray bitAttivi = new BitArray(bState);
|
||||
bool[] bitStati = new bool[bitAttivi.Count];
|
||||
bitAttivi.CopyTo(bitStati, 0);
|
||||
// cerco bit attivi
|
||||
int idx = 0;
|
||||
foreach (var item in bitStati)
|
||||
{
|
||||
if (item && memConf.messages.Count > idx)
|
||||
{
|
||||
string currState = memConf.messages[idx];
|
||||
descAttivi.Add(currState);
|
||||
}
|
||||
idx++;
|
||||
}
|
||||
// combino string
|
||||
valTransl = string.Join(",", descAttivi);
|
||||
return valTransl;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupera eventuali allarmi CNC...
|
||||
/// </summary>
|
||||
@@ -3034,11 +3034,41 @@ namespace IOB_WIN_NEXT
|
||||
/// <summary>
|
||||
/// Effettua salvataggio in LUT del valore ricevuto (valori string)
|
||||
/// - non serve calcolo medie o altro
|
||||
/// - aggoda in out val e basta
|
||||
/// - accoda in out val e basta
|
||||
/// </summary>
|
||||
/// <param name="outVal"></param>
|
||||
/// <param name="valore"></param>
|
||||
/// <param name="chiave"></param>
|
||||
/// <param name="outVal">Array eventi da popolare</param>
|
||||
/// <param name="valore">valore da salvare</param>
|
||||
/// <param name="chiave">ID/chiave di riferimento</param>
|
||||
/// <returns></returns>
|
||||
public virtual void saveAlarmString(ref Dictionary<string, string> outVal, string valore, string chiave)
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
//check obj preliminare
|
||||
if (outVal == null)
|
||||
{
|
||||
outVal = new Dictionary<string, string>();
|
||||
}
|
||||
// default invio: blindato a 120 sec (rivedere da conf?)
|
||||
int vetoSendAlarms = 120;
|
||||
// verifico se sia scaduto OVVERO variato rispetto a prima oppure oltre tempo
|
||||
bool scaduto = !LastTSSSend.ContainsKey(chiave) || (LastTSSSend[chiave].AddSeconds(vetoSendAlarms) < adesso);
|
||||
bool cambiato = !LastTSS.ContainsKey(chiave) || !LastTSS[chiave].Equals(valore);
|
||||
if (scaduto || cambiato)
|
||||
{
|
||||
outVal.Add(chiave, valore);
|
||||
LastTSS[chiave] = valore;
|
||||
LastTSSSend[chiave] = adesso;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Effettua salvataggio in LUT del valore ricevuto (valori string)
|
||||
/// - non serve calcolo medie o altro
|
||||
/// - accoda in out val e basta
|
||||
/// </summary>
|
||||
/// <param name="outVal">Array eventi da popolare</param>
|
||||
/// <param name="valore">valore da salvare</param>
|
||||
/// <param name="chiave">ID/chiave di riferimento</param>
|
||||
/// <returns></returns>
|
||||
public virtual void saveValueString(ref Dictionary<string, string> outVal, string valore, string chiave)
|
||||
{
|
||||
|
||||
@@ -248,17 +248,15 @@ namespace IOB_WIN_NEXT
|
||||
{
|
||||
if (hasAlarms)
|
||||
{
|
||||
string bankVal = "";
|
||||
foreach (var item in alarmMaps)
|
||||
{
|
||||
bankVal = "";
|
||||
var currState = currAlarmsState(item);
|
||||
// calcolo vettore stringa degli allarmi...
|
||||
string bankVal = getAlarmState(item, currState);
|
||||
// se !=null --> accodo
|
||||
if (!string.IsNullOrEmpty(bankVal))
|
||||
{
|
||||
// accodo al dictionary our
|
||||
outVal.Add(item.description, bankVal);
|
||||
}
|
||||
bankVal = getAlarmState(item, currState);
|
||||
bankVal = string.IsNullOrEmpty(bankVal) ? "OK":bankVal;
|
||||
saveAlarmString(ref outVal, bankVal, item.description);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user