private List <OverLimitConfigEntity> GetOverLimitConfigList() { IKPI_OverLimitConfigDal dataAccess = new KPI_OverLimitConfigDal(); List <OverLimitConfigEntity> faultOverLimitConfigList = dataAccess.GetOverLimitConfigs(); return(faultOverLimitConfigList); }
private void SaveDataToDB(DataTable SourceTable) { using (KPI_OverLimitConfigDal DataAccess = new KPI_OverLimitConfigDal()) { OverLimitConfigEntity OverLimitConfig; String OverLimitType = ""; String Message = "<ul>"; DataRowCollection Rows = SourceTable.Rows; foreach (DataRow Row in Rows) { OverLimitConfig = new OverLimitConfigEntity(); OverLimitConfig.TagName = GetTagID(Convert.ToString(Row[0])); OverLimitConfig.TagCode = Convert.ToString(Row[0]); if (String.IsNullOrWhiteSpace(OverLimitConfig.TagName)) { //Message += "<li>测点" + OverLimitConfig.TagCode + "导入失败。</li>"; continue; } OverLimitConfig.FirstLimitingValue = ConvertToDecimal(Row[1]); OverLimitConfig.SecondLimitingValue = ConvertToDecimal(Row[2]); OverLimitConfig.ThirdLimitingValue = ConvertToDecimal(Row[3]); OverLimitConfig.FourthLimitingValue = ConvertToDecimal(Row[4]); OverLimitConfig.LowLimit1Value = ConvertToDecimal(Row[5]); OverLimitConfig.LowLimit2Value = ConvertToDecimal(Row[6]); OverLimitConfig.LowLimit3Value = ConvertToDecimal(Row[7]); OverLimitConfig.OverLimitComputeType = 0; OverLimitType = Convert.ToString(Row[8]); if ((!String.IsNullOrWhiteSpace(OverLimitType)) && (OverLimitType == "曲线")) { OverLimitConfig.OverLimitComputeType = 1; } OverLimitConfig.FirstLimitingTag = Convert.ToString(Row[9]); OverLimitConfig.SecondLimitingTag = Convert.ToString(Row[10]); OverLimitConfig.ThirdLimitingTag = Convert.ToString(Row[11]); OverLimitConfig.FourthLimitingTag = Convert.ToString(Row[12]); OverLimitConfig.LowLimit1Tag = Convert.ToString(Row[13]); OverLimitConfig.LowLimit2Tag = Convert.ToString(Row[14]); OverLimitConfig.LowLimit3Tag = Convert.ToString(Row[15]); OverLimitConfig.Comment = Convert.ToString(Row[16]); try { DataAccess.SavOverLimitConfigs(OverLimitConfig); } catch (Exception ex) { Message += "<li>" + ex.Message + "</li>"; } } Message += "</ul>"; lblError.Text = Message; } }
internal void ReCalcuateOverLimit(DateTime StartDate, DateTime EndDate) { IKPI_OverLimitConfigDal dataAccess = new KPI_OverLimitConfigDal(); try { //返回超限配置列表 List <OverLimitConfigEntity> faultConfigurations = dataAccess.GetOverLimitConfigs(); if (faultConfigurations == null) { m_Logger.Info("数据库不存在超限配置"); return; } //endDate = DateTime.Now; //endDate = endDate.AddSeconds(-1 * endDate.Second); //startDate = endDate.AddMinutes(-1 * AlarmInterval); //startDate = new DateTime(2013, 11, 28, 4, 30, 0); //endDate = new DateTime(2013, 11, 28, 4, 40, 0); List <TagValue> tagAttributeList; //faultConfigurations = faultConfigurations.Where(p => p.TagCode == @"\mjdc\DCS1\TE_31251F_PV").ToList<KPI_OverLimitConfig>(); foreach (OverLimitConfigEntity faultConfiguration in faultConfigurations) { //StopLastShiftAlarm(faultConfiguration);//停止上一班未结束的报警 if (UnitIsRunning(faultConfiguration.UnitID) == false) { continue; } tagAttributeList = RTDataAccess.GetHistoryDataList(faultConfiguration.TagCode, StartDate, EndDate); if (tagAttributeList == null) { m_Logger.InfoFormat("读取测点{0}{1}信息失败!", faultConfiguration.TagCode, faultConfiguration.TagDesc); continue; } tagAttributeList = tagAttributeList.OrderBy(p => p.TimeStamp).ToList <TagValue>(); //StopPreviousAlarm(faultConfiguration, tagAttributeList);//停止前一轮起报的报警 CalcAlarm(faultConfiguration, tagAttributeList);//计算报警 } } catch (Exception ex) { m_Logger.InfoFormat("PorcessExceedLimit安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}", ex.Message, ex.StackTrace); m_Logger.Error(ex); } }
internal void PorcessExceedLimit() { IKPI_OverLimitConfigDal dataAccess = new KPI_OverLimitConfigDal(); try { m_DataAccess.Connection(); //返回超限配置列表 List <OverLimitConfigEntity> faultConfigurations = dataAccess.GetOverLimitConfigs(); DateTime startDate, endDate; endDate = DateTime.Now; endDate = endDate.AddSeconds(-1 * endDate.Second); startDate = endDate.AddMinutes(-1 * 10); List <TagValue> tagAttributeList; double high1, high2, high3; foreach (OverLimitConfigEntity faultConfiguration in faultConfigurations) { StopLastShiftAlarm(faultConfiguration); //停止上一班未结束的报警 tagAttributeList = m_DataAccess.GetHistoryDataList(faultConfiguration.TagCode, startDate, endDate); high1 = double.MaxValue; high2 = double.MaxValue; high3 = double.MaxValue; if (tagAttributeList.Count <= 0) { continue; } if (faultConfiguration.FirstLimitingValue != null) { high1 = Convert.ToDouble(faultConfiguration.FirstLimitingValue.Value); //高1限值 } if (faultConfiguration.SecondLimitingValue != null) { high2 = Convert.ToDouble(faultConfiguration.SecondLimitingValue.Value); //高2限值 } if (faultConfiguration.ThirdLimitingValue != null) { high3 = Convert.ToDouble(faultConfiguration.ThirdLimitingValue.Value); //高3限值 } //超高3 var q = (from p in tagAttributeList where p.TagDoubleValue > high3 select p); if (q.Count() > 0) { H3(faultConfiguration, tagAttributeList, high3); } q = (from p in tagAttributeList where p.TagDoubleValue <= high3 select p); if (q.Count() > 0) { StopAlarm(faultConfiguration, 3, tagAttributeList.First().TimeStamp); } //超高2 q = (from p in tagAttributeList where p.TagDoubleValue > high2 && p.TagDoubleValue <= high3 select p); if (q.Count() > 0) { H2(faultConfiguration, tagAttributeList, high2, high3); } q = (from p in tagAttributeList where p.TagDoubleValue <= high2 select p); if (q.Count() > 0) { StopAlarm(faultConfiguration, 2, tagAttributeList.First().TimeStamp); } //超高1 q = (from p in tagAttributeList where p.TagDoubleValue > high1 && p.TagDoubleValue <= high2 select p); if (q.Count() > 0) { H1(faultConfiguration, tagAttributeList, high1, high2); } q = (from p in tagAttributeList where p.TagDoubleValue <= high1 select p); if (q.Count() > 0) { StopAlarm(faultConfiguration, 1, tagAttributeList.First().TimeStamp); } } } catch (Exception ex) { LogUtil.LogMessage(string.Format("安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}", ex.Message, ex.StackTrace)); } }