Exemplo n.º 1
0
        /// <summary>
        /// 处理延迟结束告警
        /// </summary>
        private void ProcessAlarmReadyEnd(
            AlarmConfigData set,
            float temperture,
            AlarmInfo info)
        {
            if (info.mAlarmStatus == AlarmStatus.AlarmReadyEnd)
            {
                if (set.mAlarmReason == AlarmReason.High)
                {
                    AlarmLevel level;
                    if (temperture >= (set.mCriticalThreshold - HIGH_ALARM_ERROR_RANGE))
                    {
                        level = AlarmLevel.Critical;
                    }
                    else if (temperture >= (set.mSeriousThreshold - HIGH_ALARM_ERROR_RANGE))
                    {
                        level = AlarmLevel.Serious;
                    }
                    else if (temperture >= (set.mGeneralThreshold - HIGH_ALARM_ERROR_RANGE))
                    {
                        level = AlarmLevel.General;
                    }
                    else
                    {
                        level = AlarmLevel.Unknown;
                    }

                    if (level > AlarmLevel.Unknown)
                    {
                        info.mAlarmStatus       = AlarmStatus.Alarming;
                        info.mCurrentAlarmLevel = info.mLastAlarmLevel;
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 计算组选区温升/温差告警信息
        /// </summary>
        private void SpecialCalAlarmInfo(
            AlarmConfigData set,
            float temperture,
            AlarmInfo info)
        {
            AlarmLevel level = AlarmLevel.Unknown;

            if (set.mAlarmReason == AlarmReason.High)
            {
                if (temperture >= set.mCriticalThreshold)
                {
                    level = AlarmLevel.Critical;
                }
                else if (temperture >= set.mSeriousThreshold)
                {
                    level = AlarmLevel.Serious;
                }
                else if (temperture >= set.mGeneralThreshold)
                {
                    level = AlarmLevel.General;
                }
                else if (temperture < 0)
                {
                    level = AlarmLevel.General;
                }
                else
                {
                    level = AlarmLevel.Unknown;
                }
            }
            else if (set.mAlarmReason == AlarmReason.Low)
            {
                if (temperture <= set.mCriticalThreshold)
                {
                    level = AlarmLevel.Critical;
                }
                else if (temperture <= set.mSeriousThreshold)
                {
                    level = AlarmLevel.Serious;
                }
                else if (temperture <= set.mGeneralThreshold)
                {
                    level = AlarmLevel.General;
                }
                else if (temperture < 0)
                {
                    level = AlarmLevel.General;
                }
                else
                {
                    level = AlarmLevel.Unknown;
                }
            }

            if (level > AlarmLevel.Unknown)
            {
                if (info.mAlarmStatus == AlarmStatus.Unknown)
                {
                    // 进入告警开始延迟状态
                    info.mAlarmStatus   = AlarmStatus.AlarmReadyStart;
                    info.mReadyAlarmNum = 0;
                }
                else if (info.mAlarmStatus == AlarmStatus.AlarmReadyEnd)
                {
                    // 告警结束延迟未结束时, 告警等级不为正常, 则切换至告警进行时状态
                    info.mAlarmStatus   = AlarmStatus.Alarming;
                    info.mReadyAlarmNum = 0;
                }
                else if (info.mAlarmStatus == AlarmStatus.AlarmReadyStart)
                {
                    // 告警开始延迟, 计数
                    info.mReadyAlarmNum++;
                    if (info.mReadyAlarmNum >= mMaxReadyAlarmNum)
                    {
                        info.mAlarmStatus = AlarmStatus.AlarmStart;
                    }
                }
                else if ((info.mAlarmStatus == AlarmStatus.Alarming) &&
                         (info.mCurrentAlarmLevel != level))
                {
                    // 告警等级准备改变
                    info.mAlarmingLevel = info.mCurrentAlarmLevel;
                    info.mAlarmStatus   = AlarmStatus.AlarmingReadyChanged;
                    info.mReadyAlarmNum = 0;
                }
                else if (info.mAlarmStatus == AlarmStatus.AlarmingReadyChanged)
                {
                    if (info.mCurrentAlarmLevel == level)
                    {
                        // 告警等级改变
                        info.mReadyAlarmNum++;
                        if (info.mReadyAlarmNum >= mMaxReadyAlarmNum)
                        {
                            info.mAlarmStatus = AlarmStatus.AlarmingChanged;
                        }
                    }
                    else if (info.mAlarmingLevel == level)
                    {
                        info.mAlarmStatus   = AlarmStatus.Alarming;
                        info.mReadyAlarmNum = 0;
                    }
                    else
                    {
                        info.mReadyAlarmNum = 0;
                    }
                }
            }
            else
            {
                if ((info.mAlarmStatus == AlarmStatus.Alarming) ||
                    (info.mAlarmStatus == AlarmStatus.AlarmingReadyChanged))
                {
                    // 进入告警结束延迟状态
                    info.mAlarmStatus   = AlarmStatus.AlarmReadyEnd;
                    info.mReadyAlarmNum = 0;
                }
                else if (info.mAlarmStatus == AlarmStatus.AlarmReadyStart)
                {
                    // 告警开始延迟未结束时, 告警等级为正常, 则切换至正常状态
                    info.mAlarmStatus   = AlarmStatus.Unknown;
                    info.mReadyAlarmNum = 0;
                }
                else if (info.mAlarmStatus == AlarmStatus.AlarmReadyEnd)
                {
                    // 告警结束延迟, 计数
                    info.mReadyAlarmNum++;
                    if (info.mReadyAlarmNum >= mMaxReadyAlarmNum)
                    {
                        info.mAlarmStatus = AlarmStatus.AlarmEnd;
                    }
                }
            }

            info.mCurrentAlarmLevel = level;
        }
Exemplo n.º 3
0
        private static IAlarmConfigData ImportAppSettings()
        {
            string baseLogString = $"{typeof(AlarmConfigDataHelper)} [static] =>";

            var data = new AlarmConfigData();

            if (ConfigurationManager.AppSettings["LowPowerLimit"] is string lowPowerLimitSetting)
            {
                if (float.TryParse(lowPowerLimitSetting, out float lowPowerLimit))
                {
                    data.LowPowerLimit = lowPowerLimit;
                }
                else
                {
                    string errorMessage = $"{baseLogString} ImportAppSettings => LowPowerLimit in Alarm configuration is either not defined or not valid.";
                    Logger.LogError(errorMessage);
                    throw new Exception(errorMessage);
                }
            }

            if (ConfigurationManager.AppSettings["HighPowerLimit"] is string highPowerLimitSetting)
            {
                if (float.TryParse(highPowerLimitSetting, out float highPowerLimit))
                {
                    data.HighPowerLimit = highPowerLimit;
                }
                else
                {
                    string errorMessage = $"{baseLogString} ImportAppSettings => HighPowerLimit in Alarm configuration is either not defined or not valid.";
                    Logger.LogError(errorMessage);
                    throw new Exception(errorMessage);
                }
            }

            if (ConfigurationManager.AppSettings["LowVoltageLimit"] is string lowVoltageLimitSetting)
            {
                if (float.TryParse(lowVoltageLimitSetting, out float lowVolageLimit))
                {
                    data.LowVoltageLimit = lowVolageLimit;
                }
                else
                {
                    string errorMessage = $"{baseLogString} ImportAppSettings => LowVoltageLimit in Alarm configuration is either not defined or not valid.";
                    Logger.LogError(errorMessage);
                    throw new Exception(errorMessage);
                }
            }

            if (ConfigurationManager.AppSettings["HighVoltageLimit"] is string highVoltageLimitSetting)
            {
                if (float.TryParse(highVoltageLimitSetting, out float highVoltageLimit))
                {
                    data.HighVolageLimit = highVoltageLimit;
                }
                else
                {
                    string errorMessage = $"{baseLogString} ImportAppSettings => HighVoltageLimit in Alarm configuration is either not defined or not valid.";
                    Logger.LogError(errorMessage);
                    throw new Exception(errorMessage);
                }
            }

            if (ConfigurationManager.AppSettings["LowFeederCurrentLimit"] is string LowFeederCurrentLimitSetting)
            {
                if (float.TryParse(LowFeederCurrentLimitSetting, out float lowFeederCurrentLimit))
                {
                    data.LowFeederCurrentLimit = lowFeederCurrentLimit;
                }
                else
                {
                    string errorMessage = $"{baseLogString} ImportAppSettings => LowFeederCurrentLimit in Alarm configuration is either not defined or not valid.";
                    Logger.LogError(errorMessage);
                    throw new Exception(errorMessage);
                }
            }

            if (ConfigurationManager.AppSettings["HighFeederCurrentLimit"] is string highFeederCurrentLimitSetting)
            {
                if (float.TryParse(highFeederCurrentLimitSetting, out float highFeederCurrentLimit))
                {
                    data.HighFeederCurrentLimit = highFeederCurrentLimit;
                }
                else
                {
                    string errorMessage = $"{baseLogString} ImportAppSettings => HighFeederCurrentLimit in Alarm configuration is either not defined or not valid.";
                    Logger.LogError(errorMessage);
                    throw new Exception(errorMessage);
                }
            }

            if (ConfigurationManager.AppSettings["LowCurrentLimit"] is string lowCurrentLimitSetting)
            {
                if (float.TryParse(lowCurrentLimitSetting, out float lowCurrentLimit))
                {
                    data.LowCurrentLimit = lowCurrentLimit;
                }
                else
                {
                    string errorMessage = $"{baseLogString} ImportAppSettings => LowCurrentLimit in Alarm configuration is either not defined or not valid.";
                    Logger.LogError(errorMessage);
                    throw new Exception(errorMessage);
                }
            }

            if (ConfigurationManager.AppSettings["HighCurrentLimit"] is string highCurrentLimitSetting)
            {
                if (float.TryParse(highCurrentLimitSetting, out float highCurrentLimit))
                {
                    data.HighCurrentLimit = highCurrentLimit;
                }
                else
                {
                    string errorMessage = $"{baseLogString} ImportAppSettings => HighCurrentLimit in Alarm configuration is either not defined or not valid.";
                    Logger.LogError(errorMessage);
                    throw new Exception(errorMessage);
                }
            }

            string infoMessage = $"{baseLogString} ImportAppSettings => Alarm config data Imported.";

            Logger.LogInformation(infoMessage);

            string debugMessage = $"{baseLogString} ImportAppSettings => CurrentLimits: [{data.LowCurrentLimit}, {data.HighCurrentLimit}], PowerLimits: [{data.LowPowerLimit}, {data.HighPowerLimit}], VoltageLimits: [{data.LowVoltageLimit}, {data.HighVolageLimit}].";

            Logger.LogDebug(debugMessage);

            return(data);
        }