public string GetData() { var value = data.GetData(); TagValueContainer.SetValue(id, value); return(value); }
public string GetData() { return(TagValueContainer.GetValue(id)); }
/// <summary> /// Метод создающий тревоги. /// </summary> private static void CheckAlarms() { while (_stopAlarmServer) { lock (_alarms) { lock (ConfigLocker) { //collect alarms sources; // string result = _cfgs.Where(cfg => cfg.Tag != "").Aggregate("", (current, cfg) => current + ("'" + cfg.Tag + "',")); // var s = result.Trim(','); // var qr = MyDB.sql_query_local("SELECT tag, opc, sql from c_tags where tag in(" + s + ");"); // var t = new List<AlSrc>(); // for (var i = 0; i < qr.count_rows; i++) // { // t.Add(new AlSrc // { // Tag = qr.GetValue(i, 0), // Opc = qr.GetValue(i, 1), // Sql = qr.GetValue(i, 2) // }); // } foreach (AlarmThreadManagerConfig config in _cfgs) { if (!config.Enabled) { continue; } //var src = t.FirstOrDefault(x => x.Tag == config.TagId); //if (src == null) continue; TagValueContainer rawVal = null; if (!String.IsNullOrEmpty(config.Tag.TagName)) { rawVal = _opcPoller.ReadTag(config.Tag); //rawVal = OpcThreadsManager.ReadOpcTag("alarm", src.Opc, true); goto calc; } //if (!String.IsNullOrEmpty(src.Sql)) //{ // rawVal = _opcclient == 1 ? MOpcThreadManager.ReadOpcTag(src.Opc) : OpcThreadsManager.ReadOpcTag("alarm", src.Opc, true); // //rawVal = OpcThreadsManager.ReadOpcTag("alarm", src.Opc, true); // goto calc; //} // continue; calc: // if (rawVal == null || rawVal.LastAnalogValue == null && rawVal.LastDiscreteValue == null) continue; // double val; // if (rawVal.LastValue == null) // val = rawVal.LastDiscreteValue == true ? 1 : 0; // else // val = (double) rawVal.LastAnalogValue; // if (rawVal == null || rawVal.LastValue == null) { continue; } double val; if (!Double.TryParse(rawVal.LastValue.Replace('.', ','), out val)) { val = rawVal.LastValue.ToLower() == "true" ? 1 : 0; } if (val >= config.HihiSeverity) { ProcessAlarm(config, val, 2); continue; } if (val >= config.HiSeverity) { ProcessAlarm(config, val, 1); continue; } if (val <= config.LoloSeverity) { ProcessAlarm(config, val, -2); continue; } if (val <= config.LoSeverity) { ProcessAlarm(config, val, -1); continue; } ProcessAlarm(config, val, 0); } } } Thread.Sleep(1000); } }
/// <summary> /// Метод создающий тревоги. /// </summary> private static void CheckAlarms() { while (_stopAlarmServer) { lock (_events) { lock (ConfigLocker) { foreach (EventThreadManagerConfig config in _cfgsEv) { if (!config.Active) { continue; } TagValueContainer rawVal = null; if (!String.IsNullOrEmpty(config.Tag.TagName)) { rawVal = _opcPoller.ReadTag(config.Tag); //rawVal = OpcThreadsManager.ReadOpcTag("alarm", src.Opc, true); goto calc; } calc: if (rawVal == null || rawVal.LastValue == null) { continue; } double val; if (!Double.TryParse(rawVal.LastValue.Replace('.', ','), out val)) { val = rawVal.LastValue.ToLower() == "true" ? 1 : 0; } if (val != config.LastValue) { foreach (var _event in config.EventMessages) { if (val == _event.Value) { config.LastValue = val; logger.Logged("Info", "Add event [tag:" + config.Tag + ";sval:" + config.LastValue + "; STime:" + DateTime.Now + " ]...", "AlarmThreadManager", "LoadAlarmsLastStates"); AddEvent(config, _event.Value); continue; } } } } } } lock (_alarms) { lock (ConfigLocker) { foreach (AlarmThreadManagerConfig config in _cfgs) { if (!config.Permit) { continue; } //var src = t.FirstOrDefault(x => x.Tag == config.TagId); //if (src == null) continue; TagValueContainer rawVal = null; if (!String.IsNullOrEmpty(config.Tag.TagName)) { rawVal = _opcPoller.ReadTag(config.Tag.TagName); //rawVal = OpcThreadsManager.ReadOpcTag("alarm", src.Opc, true); goto calc; } calc: if (rawVal == null || rawVal.LastValue == null) { continue; } double val; if (!Double.TryParse(rawVal.LastValue.Replace('.', ','), out val)) { val = rawVal.LastValue.ToLower() == "true" ? 1 : 0; } if (val >= config.HihiSeverity) { ProcessAlarm(config, val, 2); continue; } if (val >= config.HiSeverity) { ProcessAlarm(config, val, 1); continue; } if (val <= config.LoloSeverity) { ProcessAlarm(config, val, -2); continue; } if (val <= config.LoSeverity) { ProcessAlarm(config, val, -1); continue; } ProcessAlarm(config, val, 0); } } } Thread.Sleep(1000); } }