Esempio n. 1
0
        public string GetData()
        {
            var value = data.GetData();

            TagValueContainer.SetValue(id, value);
            return(value);
        }
Esempio n. 2
0
 public string GetData()
 {
     return(TagValueContainer.GetValue(id));
 }
Esempio n. 3
0
        /// <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);
            }
        }
Esempio n. 4
0
        /// <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);
            }
        }