/// <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; } } } }
/// <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; }
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); }