Пример #1
0
        protected override void Calculate(OverLimitConfigEntity overLimitConfig, List <TagValue> tagAttributeList)
        {
            if (!string.IsNullOrEmpty(overLimitConfig.FourthLimitingTag))
            {
                H4(overLimitConfig, tagAttributeList);
            }
            if (!string.IsNullOrEmpty(overLimitConfig.ThirdLimitingTag))
            {
                H3(overLimitConfig, tagAttributeList);
            }
            if (!string.IsNullOrEmpty(overLimitConfig.SecondLimitingTag))
            {
                H2(overLimitConfig, tagAttributeList);
            }
            if (!string.IsNullOrEmpty(overLimitConfig.FirstLimitingTag))
            {
                H1(overLimitConfig, tagAttributeList);
            }

            if (!string.IsNullOrEmpty(overLimitConfig.LowLimit1Tag))
            {
                L1(overLimitConfig, tagAttributeList);
            }
            if (!string.IsNullOrEmpty(overLimitConfig.LowLimit2Tag))
            {
                L2(overLimitConfig, tagAttributeList);
            }
            if (!string.IsNullOrEmpty(overLimitConfig.LowLimit3Tag))
            {
                L3(overLimitConfig, tagAttributeList);
            }
        }
Пример #2
0
        private OverLimitConfigParameter InitOverLimitParameter(OverLimitConfigEntity faultConfiguration)
        {
            OverLimitConfigParameter parameter = new OverLimitConfigParameter();

            if (faultConfiguration.LowLimit1Value != null)
            {
                parameter.Low1 = Convert.ToDouble(faultConfiguration.LowLimit1Value.Value);                                           //低1限值
            }
            if (faultConfiguration.LowLimit2Value != null)
            {
                parameter.Low2 = Convert.ToDouble(faultConfiguration.LowLimit2Value.Value);                                           //低2限值
            }
            if (faultConfiguration.LowLimit3Value != null)
            {
                parameter.Low3 = Convert.ToDouble(faultConfiguration.LowLimit3Value.Value);                                           //低3限值
            }
            if (faultConfiguration.FirstLimitingValue != null)
            {
                parameter.High1 = Convert.ToDouble(faultConfiguration.FirstLimitingValue.Value);                                               //高1限值
            }
            if (faultConfiguration.SecondLimitingValue != null)
            {
                parameter.High2 = Convert.ToDouble(faultConfiguration.SecondLimitingValue.Value);                                                //高2限值
            }
            if (faultConfiguration.ThirdLimitingValue != null)
            {
                parameter.High3 = Convert.ToDouble(faultConfiguration.ThirdLimitingValue.Value);                                               //高3限值
            }
            if (faultConfiguration.FourthLimitingValue != null)
            {
                parameter.High4 = Convert.ToDouble(faultConfiguration.FourthLimitingValue.Value);                                                //高4限值
            }
            return(parameter);
        }
Пример #3
0
        protected override void Calculate(OverLimitConfigEntity overLimitConfig, List <TagValue> tagAttributeList)
        {
            OverLimitConfigParameter parameter = InitOverLimitParameter(overLimitConfig);

            if (parameter.High4 != double.MaxValue)
            {
                H4(overLimitConfig, tagAttributeList, parameter.High4);
            }
            if (parameter.High3 != double.MaxValue)
            {
                H3(overLimitConfig, tagAttributeList, parameter.High3, parameter.High4);
            }
            if (parameter.High2 != double.MaxValue)
            {
                H2(overLimitConfig, tagAttributeList, parameter.High2, parameter.High3);
            }
            if (parameter.High1 != double.MaxValue)
            {
                H1(overLimitConfig, tagAttributeList, parameter.High1, parameter.High2);
            }

            if (parameter.Low1 != double.MinValue)
            {
                L1(overLimitConfig, tagAttributeList, parameter.Low2, parameter.Low1);
            }
            if (parameter.Low2 != double.MinValue)
            {
                L2(overLimitConfig, tagAttributeList, parameter.Low3, parameter.Low2);
            }
            if (parameter.Low3 != double.MinValue)
            {
                L3(overLimitConfig, tagAttributeList, parameter.Low3);
            }
        }
Пример #4
0
        public OverLimitConfigEntity GetOverLimitConfig(string overLimitConfigID)
        {
            OverLimitConfigEntity overLimitConfig = null;
            SqlParameter          parame          = new SqlParameter(param_OverLimitConfigID, SqlDbType.VarChar);

            parame.Value = overLimitConfigID;
            using (IDataReader dataReader = DBAccess.GetRelation().ExecuteReader(CommandType.Text, sql_SearchOverLimitConfigByID, parame)) {
                while (dataReader.Read())
                {
                    overLimitConfig = new OverLimitConfigEntity {
                        OverLimitConfigID   = dataReader["OverLimitConfigID"].ToString(),
                        TagName             = dataReader["TagName"] == DBNull.Value ? string.Empty : dataReader["TagName"].ToString(),
                        RealDesc            = dataReader["RealDesc"] == DBNull.Value ? string.Empty : dataReader["RealDesc"].ToString(),
                        FirstLimitingValue  = dataReader["FirstLimitingValue"] == DBNull.Value ? null : (decimal?)dataReader["FirstLimitingValue"],
                        SecondLimitingValue = dataReader["SecondLimitingValue"] == DBNull.Value ? null : (decimal?)dataReader["SecondLimitingValue"],
                        ThirdLimitingValue  = dataReader["ThirdLimitingValue"] == DBNull.Value ? null : (decimal?)dataReader["ThirdLimitingValue"],
                        FourthLimitingValue = dataReader["FourthLimitingValue"] == DBNull.Value ? null : (decimal?)dataReader["FourthLimitingValue"],
                        LowLimit1Value      = dataReader["LowLimit1Value"] == DBNull.Value ? null : (decimal?)dataReader["LowLimit1Value"],
                        LowLimit2Value      = dataReader["LowLimit2Value"] == DBNull.Value ? null : (decimal?)dataReader["LowLimit2Value"],
                        LowLimit3Value      = dataReader["LowLimit3Value"] == DBNull.Value ? null : (decimal?)dataReader["LowLimit3Value"],

                        Comment = dataReader["Comment"] == DBNull.Value ? string.Empty : dataReader["Comment"].ToString(),
                    };
                }
            }

            return(overLimitConfig);
        }
Пример #5
0
 /// <summary>
 /// 启动报警,向KPI_OverLimitRecord表中添加数据
 /// </summary>
 /// <param name="faultConfiguration">报警配置信息</param>
 /// <param name="alarmType">报警类型 1=超高限,2=超高高限,3=超更高</param>
 /// <param name="alarmTime">开始报警时间</param>
 /// <param name="maxValue">超标极值</param>
 /// <param name="standardValue">标准值</param>
 private void StartAlarm(OverLimitConfigEntity faultConfiguration, int alarmType,
                         DateTime alarmTime, double standardValue, double maxValue)
 {
     //Console.WriteLine(String.Format("测点{0}的报警类型是:{1}报警值是:{2}", faultConfiguration.TagDesc, alarmType, maxValue));
     try {
         KPI_OverLimitRecordEntity entity = new KPI_OverLimitRecordEntity();
         entity.AlarmID        = Guid.NewGuid() + "";
         entity.UnitID         = faultConfiguration.UnitID;
         entity.TagID          = faultConfiguration.TagName;
         entity.AlarmType      = alarmType;
         entity.AlarmStartTime = alarmTime;
         entity.StandardValue  = Convert.ToDecimal(standardValue);
         entity.Offset         = Convert.ToDecimal(maxValue - standardValue);
         entity.Duration       = 0;
         entity.AlarmValue     = Convert.ToDecimal(maxValue);
         String Period = "";
         String Shift  = "";
         GetShiftAndPeriod(faultConfiguration.UnitID, out Shift, out Period, alarmTime);
         entity.Shift  = Shift;
         entity.Period = Period;
         using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
             if (DataAccess.ExistsOverLimitRecord(entity))
             {
                 DataAccess.UpdateAlarmMaxValue(entity);
                 return;
             }
             DataAccess.AddOverLimitRecord(entity);
         }
     }
     catch (Exception ex) {
         m_Logger.InfoFormat("StartAlarm安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}",
                             ex.Message, ex.StackTrace);
         m_Logger.Error(ex.Message, ex);
     }
 }
        public void SaveReadTimeConfigEntity(string tagName)
        {
            string errorInfo = null;
            OverLimitConfigEntity overLimitConfig = InitRealTimeTypeConfigEntity(tagName, out errorInfo);

            if (errorInfo != null)
            {
                // Response.Write(string.Format("<script>alert('{0}');window.opener.location.href=window.opener.location.href;</script>", errorInfo));
                return;
            }
            if (hidFlag.Value == "INSERT")
            {
                if (overLimitConfigDal.Insert(overLimitConfig))
                {
                    this.Pager.CurrentPageIndex = 1;
                    BindingData(this.Pager.CurrentPageIndex, this.Pager.PageSize);
                }
            }
            else
            {
                overLimitConfig.OverLimitConfigID = hidCode.Value;
                if (overLimitConfigDal.Update(overLimitConfig))
                {
                    hidCode.Value = string.Empty;
                    this.Pager.CurrentPageIndex = 1;
                    BindingData(this.Pager.CurrentPageIndex, this.Pager.PageSize);
                }
            }
        }
Пример #7
0
 public bool SavOverLimitConfigs(OverLimitConfigEntity OverLimitConfig)
 {
     if (HasOverLimitConfigs(OverLimitConfig.TagCode))
     {
         return(Update(OverLimitConfig));
     }
     else
     {
         return(Insert(OverLimitConfig));
     }
 }
Пример #8
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;
     }
 }
Пример #9
0
        public bool Update(OverLimitConfigEntity overLimitConfig)
        {
            try {
                int result = DBAccess.GetRelation().ExecuteNonQuery(sql_UpdateInfo,
                                                                    GetParameters(overLimitConfig));
                if (result == 0)
                {
                    return(false);
                }
            }
            catch (Exception ex) {
                throw ex;
            }

            return(true);
        }
Пример #10
0
        private void H4(OverLimitConfigEntity overLimitConfig, List <TagValue> tagAttributeList, double high4)
        {
            double maxValue = tagAttributeList.Max(p => Convert.ToDouble(p.TagStringValue));

            foreach (TagValue item in tagAttributeList)
            {
                if (item.TagDoubleValue > high4)
                {
                    AddOrUpdateOverLimitRecordToDB(overLimitConfig, 4, item.TimeStamp, high4, maxValue);
                }
                else
                {
                    UpdateExistOverLimitRecordToDB(overLimitConfig, 4, item.TimeStamp);
                }
            }
        }
Пример #11
0
 /// <summary>
 /// 解除报警,更新KPI_OverLimitRecord表中数据
 /// </summary>
 /// <param name="faultConfiguration">报警配置信息</param>
 /// <param name="alarmType">报警类型 1=超高限,2=超高高限,3=超更高;</param>
 /// <param name="alarmTime">解除报警时间</param>
 private void StopAlarm(OverLimitConfigEntity faultConfiguration, int alarmType, DateTime alarmTime)
 {
     try {
         KPI_OverLimitRecordEntity entity = new KPI_OverLimitRecordEntity();
         entity.TagID          = faultConfiguration.TagName;
         entity.AlarmStartTime = alarmTime;
         entity.AlarmType      = alarmType;
         using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
             DataAccess.UpdateOverLimitRecord(entity);
         }
     }
     catch (Exception ex) {
         LogUtil.LogMessage(string.Format("安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}",
                                          ex.Message, ex.StackTrace));
     }
 }
Пример #12
0
        private void H4(OverLimitConfigEntity faultConfiguration, List <TagValue> tagAttributeList, double standardValue)
        {
            double maxValue = tagAttributeList.Max(p => Convert.ToDouble(p.TagStringValue));

            foreach (TagValue item in tagAttributeList)
            {
                if (item.TagDoubleValue > standardValue)
                {
                    StartAlarm(faultConfiguration, 4, item.TimeStamp, standardValue, maxValue);
                }
                else
                {
                    StopAlarm(faultConfiguration, 4, item.TimeStamp);
                }
            }
        }
Пример #13
0
 /// <summary>
 /// 解除报警,更新KPI_OverLimitRecord表中数据
 /// </summary>
 /// <param name="faultConfiguration">报警配置信息</param>
 /// <param name="alarmType">报警类型 1=超高限,2=超高高限,3=超更高;</param>
 /// <param name="alarmTime">解除报警时间</param>
 private void StopAlarm(OverLimitConfigEntity faultConfiguration, int alarmType, DateTime alarmTime)
 {
     try {
         KPI_OverLimitRecordEntity entity = new KPI_OverLimitRecordEntity();
         entity.TagID        = faultConfiguration.TagName;
         entity.AlarmEndTime = alarmTime;
         entity.AlarmType    = alarmType;
         using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
             DataAccess.UpdateOverLimitRecord(entity);
         }
     }
     catch (Exception ex) {
         m_Logger.InfoFormat("StopAlarm安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}",
                             ex.Message, ex.StackTrace);
         m_Logger.Error(ex.Message, ex);
     }
 }
Пример #14
0
        private void L2(OverLimitConfigEntity overLimitConfig, List <TagValue> tagAttributeList,
                        double lowValue, double hightValue)
        {
            double minValue = tagAttributeList.Min(p => Convert.ToDouble(p.TagStringValue));

            foreach (TagValue item in tagAttributeList)
            {
                if ((item.TagDoubleValue < hightValue) && (item.TagDoubleValue >= lowValue))
                {
                    AddOrUpdateOverLimitRecordToDB(overLimitConfig, -2, item.TimeStamp, hightValue, minValue);
                }
                else
                {
                    UpdateExistOverLimitRecordToDB(overLimitConfig, -2, item.TimeStamp);
                }
            }
        }
Пример #15
0
        private void L3(OverLimitConfigEntity overLimitConfig, List <TagValue> tagAttributeList,
                        double standardValue)
        {
            double minValue = tagAttributeList.Min(p => Convert.ToDouble(p.TagStringValue));

            foreach (TagValue item in tagAttributeList)
            {
                if (item.TagDoubleValue <= standardValue)
                {
                    AddOrUpdateOverLimitRecordToDB(overLimitConfig, -3, item.TimeStamp, standardValue, minValue);
                }
                else
                {
                    UpdateExistOverLimitRecordToDB(overLimitConfig, -3, item.TimeStamp);
                }
            }
        }
Пример #16
0
        private void L3(OverLimitConfigEntity overLimitConfig, List <TagValue> tagAttributeList)
        {
            double minValue = tagAttributeList.Min(p => Convert.ToDouble(p.TagStringValue));

            foreach (TagValue item in tagAttributeList)
            {
                double low3 = GetTagValue(overLimitConfig.LowLimit3Tag, item.TimeStamp);
                if (item.TagDoubleValue <= low3)
                {
                    AddOrUpdateOverLimitRecordToDB(overLimitConfig, -3, item.TimeStamp, low3, minValue);
                }
                else
                {
                    UpdateExistOverLimitRecordToDB(overLimitConfig, -3, item.TimeStamp);
                }
            }
        }
Пример #17
0
        private void L2(OverLimitConfigEntity faultConfiguration, List <TagValue> tagAttributeList,
                        double lowValue, double hightValue)
        {
            double minValue = tagAttributeList.Min(p => Convert.ToDouble(p.TagStringValue));

            foreach (TagValue item in tagAttributeList)
            {
                if ((item.TagDoubleValue < hightValue) && (item.TagDoubleValue >= lowValue))
                {
                    StartAlarm(faultConfiguration, -2, item.TimeStamp, hightValue, minValue);
                }
                else
                {
                    StopAlarm(faultConfiguration, -2, item.TimeStamp);
                }
            }
        }
Пример #18
0
        private IDbDataParameter[] GetParameters(OverLimitConfigEntity OverLimitConfig)
        {
            IDbDataParameter[] parames = new SqlParameter[] {
                new SqlParameter(param_TagName, SqlDbType.VarChar, 50),
                new SqlParameter(param_FirstLimitingValue, SqlDbType.Decimal),
                new SqlParameter(param_SecondLimitingValue, SqlDbType.Decimal),
                new SqlParameter(param_ThirdLimitingValue, SqlDbType.Decimal),
                new SqlParameter(param_FourthLimitingValue, SqlDbType.Decimal),
                new SqlParameter(param_LowLimit1Value, SqlDbType.Decimal),
                new SqlParameter(param_LowLimit2Value, SqlDbType.Decimal),
                new SqlParameter(param_LowLimit3Value, SqlDbType.Decimal),
                new SqlParameter(param_Comment, SqlDbType.VarChar, 255),
                new SqlParameter(param_OverLimitConfigID, SqlDbType.VarChar),

                new SqlParameter(param_FirstLimitingTag, SqlDbType.VarChar, 50),
                new SqlParameter(param_SecondLimitingTag, SqlDbType.VarChar, 50),
                new SqlParameter(param_ThirdLimitingTag, SqlDbType.VarChar, 50),
                new SqlParameter(param_FourthLimitingTag, SqlDbType.VarChar, 50),
                new SqlParameter(param_LowLimit1Tag, SqlDbType.VarChar, 50),
                new SqlParameter(param_LowLimit2Tag, SqlDbType.VarChar, 50),
                new SqlParameter(param_LowLimit3Tag, SqlDbType.VarChar, 50),
                new SqlParameter(param_OverLimitComputeType, SqlDbType.Int)
            };

            parames[0].Value = OverLimitConfig.TagName;
            parames[1].Value = OverLimitConfig.FirstLimitingValue;
            parames[2].Value = OverLimitConfig.SecondLimitingValue;
            parames[3].Value = OverLimitConfig.ThirdLimitingValue;
            parames[4].Value = OverLimitConfig.FourthLimitingValue;
            parames[5].Value = OverLimitConfig.LowLimit1Value;
            parames[6].Value = OverLimitConfig.LowLimit2Value;
            parames[7].Value = OverLimitConfig.LowLimit3Value;
            parames[8].Value = OverLimitConfig.Comment;
            parames[9].Value = OverLimitConfig.OverLimitConfigID;

            parames[10].Value = OverLimitConfig.FirstLimitingTag;
            parames[11].Value = OverLimitConfig.SecondLimitingTag;
            parames[12].Value = OverLimitConfig.ThirdLimitingTag;
            parames[13].Value = OverLimitConfig.FourthLimitingTag;
            parames[14].Value = OverLimitConfig.LowLimit1Tag;
            parames[15].Value = OverLimitConfig.LowLimit2Tag;
            parames[16].Value = OverLimitConfig.LowLimit3Tag;
            parames[17].Value = OverLimitConfig.OverLimitComputeType;
            return(parames);
        }
Пример #19
0
        /// <summary>
        /// 交接时关闭上一班报警
        /// </summary>
        /// <param name="faultConfiguration"></param>
        private void StopLastShiftAlarm(OverLimitConfigEntity faultConfiguration)
        {
            KPI_UnitEntity Entity = KPI_UnitDal.GetEntity(faultConfiguration.UnitID);

            if (Entity == null)
            {
                return;
            }
            String strWorkID        = Entity.WorkID;
            String strStartTime     = "";
            String strEndTime       = "";
            String Shift            = "";
            String Period           = "";
            String strCurrentMinute = DateTime.Now.ToString("yyyy-MM-dd HH:mm:00");

            KPI_WorkDal.GetShiftAndPeriod(strWorkID, strCurrentMinute,
                                          ref Shift, ref Period, ref strStartTime, ref strEndTime);
            DateTime ShiftStartTime = Convert.ToDateTime(strStartTime);
            DateTime CurrentTime    = DateTime.Now;
            TimeSpan Span           = CurrentTime - ShiftStartTime;
            double   TotalMinutes   = Span.TotalMinutes;

            if (TotalMinutes <= 10)
            {
                try {
                    using (KPI_OverLimitRecordDal DataAccess = new KPI_OverLimitRecordDal()) {
                        KPI_OverLimitRecordEntity entity = new KPI_OverLimitRecordEntity();
                        for (int i = 1; i < 4; i++)
                        {
                            entity.TagID          = faultConfiguration.TagName;
                            entity.AlarmStartTime = ShiftStartTime;
                            entity.AlarmType      = i;
                            DataAccess.UpdateOverLimitRecord(entity);
                        }
                    }
                }
                catch (Exception ex) {
                    m_Logger.InfoFormat("StopLastShiftAlarm安全指标超限报警计算错误,错误信息是:{0},调用栈信息是:{1}",
                                        ex.Message, ex.StackTrace);
                    m_Logger.Error(ex);
                }
            }
        }
Пример #20
0
        public void InitCalculate(RTInterface mdataAccess, OverLimitConfigEntity overLimitConfig, DateTime startDate, DateTime endDate)
        {
            m_DataAccess = mdataAccess;

            if (CheckUnitIsRunning(overLimitConfig.UnitID) == false)
            {
                return;
            }

            List <TagValue> tagAttributeList = RTDataAccess.GetHistoryDataList(overLimitConfig.TagCode, startDate, endDate);

            if (tagAttributeList == null || tagAttributeList.Count <= 0)
            {
                m_Logger.InfoFormat("读取测点{0}{1}信息失败!", overLimitConfig.TagCode, overLimitConfig.TagDesc);
                return;
            }
            tagAttributeList = tagAttributeList.OrderBy(p => p.TimeStamp).ToList <TagValue>();

            Calculate(overLimitConfig, tagAttributeList);
        }
Пример #21
0
        private void L2(OverLimitConfigEntity overLimitConfig, List <TagValue> tagAttributeList)
        {
            double minValue = tagAttributeList.Min(p => Convert.ToDouble(p.TagStringValue));

            foreach (TagValue item in tagAttributeList)
            {
                double low2 = GetTagValue(overLimitConfig.LowLimit2Tag, item.TimeStamp);
                double low3 = double.MinValue;
                if (!string.IsNullOrEmpty(overLimitConfig.LowLimit3Tag))
                {
                    low3 = GetTagValue(overLimitConfig.LowLimit3Tag, item.TimeStamp);
                }

                if ((item.TagDoubleValue < low2) && (item.TagDoubleValue >= low3))
                {
                    AddOrUpdateOverLimitRecordToDB(overLimitConfig, -2, item.TimeStamp, low2, minValue);
                }
                else
                {
                    UpdateExistOverLimitRecordToDB(overLimitConfig, -2, item.TimeStamp);
                }
            }
        }
Пример #22
0
        private void H2(OverLimitConfigEntity overLimitConfig, List <TagValue> tagAttributeList)
        {
            double maxValue = tagAttributeList.Max(p => Convert.ToDouble(p.TagStringValue));

            foreach (TagValue item in tagAttributeList)
            {
                double High2 = GetTagValue(overLimitConfig.SecondLimitingTag, item.TimeStamp);
                double High3 = double.MaxValue;
                if (!string.IsNullOrEmpty(overLimitConfig.ThirdLimitingTag))
                {
                    High3 = GetTagValue(overLimitConfig.ThirdLimitingTag, item.TimeStamp);
                }

                if ((item.TagDoubleValue > High2) && (item.TagDoubleValue <= High3))
                {
                    AddOrUpdateOverLimitRecordToDB(overLimitConfig, 2, item.TimeStamp, High2, maxValue);
                }
                else
                {
                    UpdateExistOverLimitRecordToDB(overLimitConfig, 2, item.TimeStamp);
                }
            }
        }
        private void SaveFixedParaConfigEntity(string tagName)
        {
            OverLimitConfigEntity overLimitConfig = GetFixedParaConfigEntity(tagName);

            if (hidFlag.Value == "INSERT")
            {
                if (overLimitConfigDal.Insert(overLimitConfig))
                {
                    this.Pager.CurrentPageIndex = 1;
                    BindingData(this.Pager.CurrentPageIndex, this.Pager.PageSize);
                }
            }
            else
            {
                overLimitConfig.OverLimitConfigID = hidCode.Value;
                if (overLimitConfigDal.Update(overLimitConfig))
                {
                    hidCode.Value = string.Empty;
                    this.Pager.CurrentPageIndex = 1;
                    BindingData(this.Pager.CurrentPageIndex, this.Pager.PageSize);
                }
            }
        }
Пример #24
0
        /// <summary>
        /// 停止前一轮起报的报警
        /// </summary>
        private void StopPreviousAlarm(OverLimitConfigEntity faultConfiguration, List <TagValue> tagAttributeList)
        {
            double high1, high2, high3, high4;
            double low1, low2, low3;
            double FirstItemValue;

            high1 = double.MaxValue;
            high2 = double.MaxValue;
            high3 = double.MaxValue;
            high4 = double.MaxValue;
            low1  = double.MinValue;
            low2  = double.MinValue;
            low3  = double.MinValue;

            if (tagAttributeList.Count <= 0)
            {
                return;
            }
            if (faultConfiguration.LowLimit1Value != null)
            {
                low1 = Convert.ToDouble(faultConfiguration.LowLimit1Value.Value);                                           //低1限值
            }
            if (faultConfiguration.LowLimit2Value != null)
            {
                low2 = Convert.ToDouble(faultConfiguration.LowLimit2Value.Value);                                           //低2限值
            }
            if (faultConfiguration.LowLimit3Value != null)
            {
                low3 = Convert.ToDouble(faultConfiguration.LowLimit3Value.Value);                                           //低3限值
            }
            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限值
            }
            if (faultConfiguration.FourthLimitingValue != null)
            {
                high4 = Convert.ToDouble(faultConfiguration.FourthLimitingValue.Value);                                                //高4限值
            }
            FirstItemValue = tagAttributeList.First().TagDoubleValue;

            //停高4
            if ((FirstItemValue <= high4) && (high4 != double.MaxValue))
            {
                StopAlarm(faultConfiguration, 4, tagAttributeList.First().TimeStamp);
            }

            //停高3
            if ((FirstItemValue <= high3) && (high3 != double.MaxValue))
            {
                StopAlarm(faultConfiguration, 3, tagAttributeList.First().TimeStamp);
            }

            //停高2
            if ((FirstItemValue <= high2) && (high2 != double.MaxValue))
            {
                StopAlarm(faultConfiguration, 2, tagAttributeList.First().TimeStamp);
            }

            //停高1
            if ((FirstItemValue <= high1) && (high1 != double.MaxValue))
            {
                StopAlarm(faultConfiguration, 1, tagAttributeList.First().TimeStamp);
            }

            //停低1
            if ((FirstItemValue >= low1) && (low1 != double.MinValue))
            {
                StopAlarm(faultConfiguration, -1, tagAttributeList.First().TimeStamp);
            }

            //停低2
            if ((FirstItemValue >= low2) && (low2 != double.MinValue))
            {
                StopAlarm(faultConfiguration, -2, tagAttributeList.First().TimeStamp);
            }

            //停低3
            if ((FirstItemValue >= low3) && (low3 != double.MinValue))
            {
                StopAlarm(faultConfiguration, -3, tagAttributeList.First().TimeStamp);
            }
        }
Пример #25
0
        private void CalcAlarm(OverLimitConfigEntity faultConfiguration, List <TagValue> tagAttributeList)
        {
            double high1, high2, high3, high4;
            double low1, low2, low3;

            high1 = double.MaxValue;
            high2 = double.MaxValue;
            high3 = double.MaxValue;
            high4 = double.MaxValue;
            low1  = double.MinValue;
            low2  = double.MinValue;
            low3  = double.MinValue;

            if (tagAttributeList.Count <= 0)
            {
                return;
            }
            if (faultConfiguration.LowLimit1Value != null)
            {
                low1 = Convert.ToDouble(faultConfiguration.LowLimit1Value.Value);                                           //低1限值
            }
            if (faultConfiguration.LowLimit2Value != null)
            {
                low2 = Convert.ToDouble(faultConfiguration.LowLimit2Value.Value);                                           //低2限值
            }
            if (faultConfiguration.LowLimit3Value != null)
            {
                low3 = Convert.ToDouble(faultConfiguration.LowLimit3Value.Value);                                           //低3限值
            }
            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限值
            }
            if (faultConfiguration.FourthLimitingValue != null)
            {
                high4 = Convert.ToDouble(faultConfiguration.FourthLimitingValue.Value);                                                //高4限值
            }
            if (high4 != double.MaxValue)
            {
                H4(faultConfiguration, tagAttributeList, high4);
            }
            if (high3 != double.MaxValue)
            {
                H3(faultConfiguration, tagAttributeList, high3, high4);
            }
            if (high2 != double.MaxValue)
            {
                H2(faultConfiguration, tagAttributeList, high2, high3);
            }
            if (high1 != double.MaxValue)
            {
                H1(faultConfiguration, tagAttributeList, high1, high2);
            }
            if (low1 != double.MinValue)
            {
                L1(faultConfiguration, tagAttributeList, low2, low1);
            }
            if (low2 != double.MinValue)
            {
                L2(faultConfiguration, tagAttributeList, low3, low2);
            }
            if (low3 != double.MinValue)
            {
                L3(faultConfiguration, tagAttributeList, low3);
            }

            //tagAttributeList = tagAttributeList.OrderBy(p => p.TimeStamp).ToList<TagValue>();
            //超高4

            /*var q = (from p in tagAttributeList where p.TagDoubleValue > high4 select p);
             * if (q.Count() > 0) {
             *  H4(faultConfiguration, tagAttributeList, high4);
             * }
             * //超高3
             * q = (from p in tagAttributeList where p.TagDoubleValue > high3 && p.TagDoubleValue <= high4 select p);
             * if (q.Count() > 0) {
             *  H3(faultConfiguration, tagAttributeList, high3, high4);
             * }
             *
             * //超高2
             * q = (from p in tagAttributeList where p.TagDoubleValue > high2 && p.TagDoubleValue <= high3 select p);
             * if (q.Count() > 0) {
             *  H2(faultConfiguration, tagAttributeList, high2, high3);
             * }
             *
             * //超高1
             * q = (from p in tagAttributeList where p.TagDoubleValue > high1 && p.TagDoubleValue <= high2 select p);
             * if (q.Count() > 0) {
             *  H1(faultConfiguration, tagAttributeList, high1, high2);
             * }
             *
             * //超低1
             * q = (from p in tagAttributeList where p.TagDoubleValue >= low2 && p.TagDoubleValue < low1 select p);
             * if (q.Count() > 0) {
             *  L1(faultConfiguration, tagAttributeList, low2, low1);
             * }
             *
             * //超低2
             * q = (from p in tagAttributeList where p.TagDoubleValue >= low3 && p.TagDoubleValue < low2 select p);
             * if (q.Count() > 0) {
             *  L2(faultConfiguration, tagAttributeList, low3, low2);
             * }
             *
             * //超低3
             * q = (from p in tagAttributeList where p.TagDoubleValue < low3 select p);
             * if (q.Count() > 0) {
             *  L3(faultConfiguration, tagAttributeList, low3);
             * }*/
        }
        private OverLimitConfigEntity GetFixedParaConfigEntity(string tagName)
        {
            decimal?firstLimiting = null, secondLimiting = null,
                   thirdLimiting = null, FourthLimiting = null,
                   lowLimit1Value = null, lowLimit2Value = null, lowLimit3Value = null;

            if (!string.IsNullOrWhiteSpace(txtLowLimit1Value.Text))
            {
                lowLimit1Value = Convert.ToDecimal(txtLowLimit1Value.Text);
            }
            if (!string.IsNullOrWhiteSpace(txtLowLimit2Value.Text))
            {
                lowLimit2Value = Convert.ToDecimal(txtLowLimit2Value.Text);
            }
            if (!string.IsNullOrWhiteSpace(txtLowLimit3Value.Text))
            {
                lowLimit3Value = Convert.ToDecimal(txtLowLimit3Value.Text);
            }

            if (!string.IsNullOrWhiteSpace(txtFirstLimiting.Text))
            {
                firstLimiting = Convert.ToDecimal(txtFirstLimiting.Text);
            }
            if (!string.IsNullOrWhiteSpace(txtSecondLimiting.Text))
            {
                secondLimiting = Convert.ToDecimal(txtSecondLimiting.Text);
            }
            if (!string.IsNullOrWhiteSpace(txtThirdLimiting.Text))
            {
                thirdLimiting = Convert.ToDecimal(txtThirdLimiting.Text);
            }
            if (!string.IsNullOrWhiteSpace(txtFourthLimiting.Text))
            {
                FourthLimiting = Convert.ToDecimal(txtFourthLimiting.Text);
            }

            string comment = txtComment.Text;

            OverLimitConfigEntity overLimitConfig = new OverLimitConfigEntity {
                TagName                  = tagName,
                FirstLimitingValue       = firstLimiting,
                SecondLimitingValue      = secondLimiting,
                ThirdLimitingValue       = thirdLimiting,
                FourthLimitingValue      = FourthLimiting,
                LowLimit1Value           = lowLimit1Value,
                LowLimit2Value           = lowLimit2Value,
                LowLimit3Value           = lowLimit3Value,
                Comment                  = comment,
                EnumOverLimitComputeType = OverLimitComputeTypeEnum.FixedPara,
                OverLimitComputeType     = 0,


                FirstLimitingTag  = "",
                SecondLimitingTag = "",
                ThirdLimitingTag  = "",
                FourthLimitingTag = "",
                LowLimit1Tag      = "",
                LowLimit2Tag      = "",
                LowLimit3Tag      = "",
            };

            return(overLimitConfig);
        }
        private OverLimitConfigEntity InitRealTimeTypeConfigEntity(string tagName, out string errorInfo)
        {
            errorInfo = null;
            decimal?firstLimiting = null, secondLimiting = null,
                   thirdLimiting = null, FourthLimiting = null,
                   lowLimit1Value = null, lowLimit2Value = null, lowLimit3Value = null;

            string lowLimit1Tag      = null;
            string lowLimit2Tag      = null;
            string lowLimit3Tag      = null;
            string firstLimitingTag  = null;
            string secondLimitingTag = null;
            string thirdLimitingTag  = null;
            string fourthLimitingTag = null;

            ///string baseInfo = "在PI中没有找到对应{0}测点";
            if (!string.IsNullOrWhiteSpace(txtLowLimit1Value.Text))
            {
                lowLimit1Tag = txtLowLimit1Value.Text.Trim();
                //if (!RTDataAccess.ExistPoint(lowLimit1Tag))
                //{
                //    errorInfo = string.Format(baseInfo, "低一");
                //    return null;
                //}
            }

            if (!string.IsNullOrWhiteSpace(txtLowLimit2Value.Text))
            {
                lowLimit2Tag = txtLowLimit2Value.Text.Trim();
                //if (!RTDataAccess.ExistPoint(lowLimit2Tag))
                //{
                //    errorInfo = string.Format(baseInfo, "低二");
                //    return null;
                //}
            }

            if (!string.IsNullOrWhiteSpace(txtLowLimit3Value.Text))
            {
                lowLimit3Tag = txtLowLimit3Value.Text.Trim();
                //if (!RTDataAccess.ExistPoint(lowLimit3Tag))
                //{
                //    errorInfo = string.Format(baseInfo, "低三");
                //    return null;
                //}
            }

            if (!string.IsNullOrWhiteSpace(txtFirstLimiting.Text))
            {
                firstLimitingTag = txtFirstLimiting.Text.Trim();
                //if (!RTDataAccess.ExistPoint(firstLimitingTag))
                //{
                //    errorInfo = string.Format(baseInfo, "高一");
                //    return null;
                //}
            }

            if (!string.IsNullOrWhiteSpace(txtSecondLimiting.Text))
            {
                secondLimitingTag = txtSecondLimiting.Text.Trim();
                //if (!RTDataAccess.ExistPoint(secondLimitingTag))
                //{
                //    errorInfo = string.Format(baseInfo, "高二");
                //    return null;
                //}
            }

            if (!string.IsNullOrWhiteSpace(txtThirdLimiting.Text))
            {
                thirdLimitingTag = txtThirdLimiting.Text.Trim();
                //if (!RTDataAccess.ExistPoint(thirdLimitingTag))
                //{
                //    errorInfo = string.Format(baseInfo, "高三");
                //    return null;
                //}
            }

            if (!string.IsNullOrWhiteSpace(txtFourthLimiting.Text))
            {
                fourthLimitingTag = txtFourthLimiting.Text.Trim();
                //if (!RTDataAccess.ExistPoint(fourthLimitingTag))
                //{
                //    errorInfo = string.Format(baseInfo, "高四");
                //    return null;
                //}
            }

            string comment = txtComment.Text;
            OverLimitConfigEntity overLimitConfig = new OverLimitConfigEntity {
                TagName             = tagName,
                FirstLimitingValue  = firstLimiting,
                SecondLimitingValue = secondLimiting,
                ThirdLimitingValue  = thirdLimiting,
                FourthLimitingValue = FourthLimiting,
                LowLimit1Value      = lowLimit1Value,
                LowLimit2Value      = lowLimit2Value,
                LowLimit3Value      = lowLimit3Value,

                FirstLimitingTag  = firstLimitingTag,
                SecondLimitingTag = secondLimitingTag,
                ThirdLimitingTag  = thirdLimitingTag,
                FourthLimitingTag = fourthLimitingTag,
                LowLimit1Tag      = lowLimit1Tag,
                LowLimit2Tag      = lowLimit2Tag,
                LowLimit3Tag      = lowLimit3Tag,

                Comment = comment,
                EnumOverLimitComputeType = OverLimitComputeTypeEnum.Realtime,
                OverLimitComputeType     = 1
            };

            return(overLimitConfig);
        }
Пример #28
0
 protected abstract void Calculate(OverLimitConfigEntity overLimitConfig, List <TagValue> tagAttributeList);