Ejemplo n.º 1
0
        private List <OverLimitConfigEntity> GetOverLimitConfigList()
        {
            IKPI_OverLimitConfigDal      dataAccess = new KPI_OverLimitConfigDal();
            List <OverLimitConfigEntity> faultOverLimitConfigList = dataAccess.GetOverLimitConfigs();

            return(faultOverLimitConfigList);
        }
Ejemplo n.º 2
0
 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;
     }
 }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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));
            }
        }