Example #1
0
        /// <summary>
        ///     获取单个位号转化后的值
        /// </summary>
        /// <param name="formule"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static double GetOneData_Jabil(M_BS_TagDefine model, string[] arr)
        {
            double dValue = 0;
            var    index  = 0;

            index = model.DataIndex + 1;
            //dataindex<=0会造成求用电量时错误
            if (model == null || index < 0)
            {
                return(dValue);
            }
            if (string.IsNullOrEmpty(arr[index]))
            {
                return(dValue);
            }
            switch (model.Formule)
            {
                #region 获取转化后的值

            case "1000":

                break;     //直接读取和存储原值,无需转换

            default:

                dValue = Convert.ToDouble(arr[index]) + Convert.ToDouble(arr[index - 1]);
                break;

                #endregion
            }
            if (model.CompensateRatio > 0)
            {
                dValue = dValue * Convert.ToDouble(model.CompensateRatio.ToString());
            }
            return(dValue);
        }
Example #2
0
        /// <summary>
        /// 将实时数据进行处理
        /// </summary>
        /// <param name="lst"></param>
        /// <returns></returns>
        private DataTable GetSendTable(List <M_BS_Realdata_Spt> lst, string type = "0")
        {
            var     dt     = BaseFunction.CreateTable("TagID,TagValue,TagName,TagStatus,RealValue,RealTime");
            DataRow dr     = null;
            double  value  = 0;
            var     status = 0;
            var     str    = "";

            foreach (var item in lst)
            {
                M_BS_TagDefine model_Tag = null;
                MTKeyValue     mtRow     = null;
                if (type == "0")
                {
                    model_Tag = (from li in BasePublic.lstTagsAll where li.ID == item.TagID select li).FirstOrDefault();
                    //查找该位号的缓存数据
                    mtRow = (from li in mtTable where li.Key == item.TagID select li).FirstOrDefault();
                }
                else
                {
                    model_Tag = (from li in BasePublic.lstTagsAllNQ where li.ID == item.TagID select li).FirstOrDefault();
                    //查找该位号的缓存数据
                    mtRow = (from li in mtTableNQ where li.Key == item.TagID select li).FirstOrDefault();
                }

                if (mtRow == null || model_Tag == null)
                {
                    continue;
                }

                if (mtRow.Count == 0)
                {
                    mtRow.StartTime = DateTime.Now;
                }
                mtRow.Count      += 1;
                mtRow.NoDataCount = 0;

                if (mtRow.Count >= BasePublic.OneDataCount)
                {
                    mtRow.Value = BasePublic.OneDataCount;
                    mtRow.Count = 0;
                    //mtRow.AlarmCount = 0;
                }
                dr              = dt.NewRow();
                dr["RealTime"]  = DateTime.Now.ToString(BasePublic.strTimeFormat);
                dr["RealValue"] = item.RealValue;
                dr["TagID"]     = item.TagID;
                dr["TagName"]   = model_Tag.TagName;
                str             = "";
                status          = 0;
                var IsAlarm = false;
                if (model_Tag.IsAlarm)
                {
                    var model_PreTags =
                        (from li in BasePublic.lstTagsAll where li.ID == model_Tag.PreTags select li).FirstOrDefault();
                    if (model_PreTags == null || model_PreTags.PreTags.Trim().Length == 0)
                    {
                        IsAlarm = true;
                    }
                    else
                    {
                        var model_PreValue =
                            (from li in lst where li.TagID == model_PreTags.ID select li).FirstOrDefault();
                        if (model_PreValue.RealValue > 0)
                        {
                            IsAlarm = true;
                        }
                    }
                    if (IsAlarm)
                    {
                        if (item.RealValue > model_Tag.TagHH)
                        {
                            status = 1;
                            str    = string.Format("参数值({1})过高,正常值{2}({3}至{4})", model_Tag.TagName, item.RealValue,
                                                   model_Tag.TagVal, model_Tag.TagLL, model_Tag.TagHH);
                        }
                        if (item.RealValue < model_Tag.TagLL)
                        {
                            status = 1;
                            str    = string.Format("参数值({1})过低,正常值{2}({3}至{4})", model_Tag.TagName, item.RealValue,
                                                   model_Tag.TagVal, model_Tag.TagLL, model_Tag.TagHH);
                        }
                        mtRow.AlarmCount += 1;
                        mtRow.Status      = status;
                        mtRow.Msg         = str;

                        if (mtRow.AlarmCount >= 10)
                        {
                            try
                            {
                            }
                            catch (Exception e)
                            {
                                var msg = string.Format("{0}  {1}  {2}",
                                                        DateTime.Now.ToString(BasePublic.strTimeFormat), "转化实时数据出错", e.Message);
                                Console.WriteLine(string.Format(msg));
                                BasePublic.ExceptionDeal(BaseEnum.Socket, msg);
                                continue;
                            }
                        }
                    }
                }

                dr["TagStatus"] = status;
                dr["TagValue"]  = str;
                dt.Rows.Add(dr);
            }
            return(dt);
        }
Example #3
0
        /// <summary>
        ///     验证数据是否报警,并操作
        /// </summary>
        /// <param name="lstAll"></param>
        /// <param name="dtStore"></param>
        /// <param name="mtTemp"></param>
        /// <param name="dtAlarm"></param>
        public void VerfyAlarm(List <M_BS_TagDefine> lstAll, DataTable dtStore, MTTable mtTemp, ref DataTable dtAlarm)
        {
            var            rs       = false;
            M_BS_TagDefine modelTag = null;
            MTKeyValue     tempInfo = null;

            foreach (DataRow item in dtStore.Rows)
            {
                modelTag = (from li in lstAll where li.ID == item["TagID"].ToString() select li).FirstOrDefault();
                tempInfo = (from li in mtTemp where li.Key == item["TagID"].ToString() select li).FirstOrDefault();
                if (tempInfo == null || modelTag == null)
                {
                    continue;
                }
                if (tempInfo.Count == 0)
                {
                    tempInfo.StartTime  = DateTime.Now;
                    tempInfo.AlarmCount = 0;
                }
                if (tempInfo.Count >= BasePublic.OneDataCount)
                {
                    tempInfo.StartTime  = DateTime.Now;
                    tempInfo.Count      = 0;
                    tempInfo.AlarmCount = 0;
                }
                tempInfo.Count += 1;
                var IsAlarm = false;
                var status  = 0;
                if (modelTag.IsAlarm)
                {
                    //该位号的前置位号
                    var modelPreTags =
                        (from li in BasePublic.lstTagsAll where li.ID == modelTag.PreTags select li).FirstOrDefault();
                    if (modelPreTags == null || string.IsNullOrEmpty(modelPreTags.PreTags))
                    {
                    }
                    else
                    {
                        //查找前置位号的值
                        var modelPreValue =
                            dtStore.Select(string.Format("TagID='{0}'", modelPreTags.ID)).FirstOrDefault();
                        //(from li in lst where li.TagID == model_PreTags.ID select li).FirstOrDefault();
                        if (modelPreValue != null && decimal.Parse(modelPreValue["RealValue"].ToString()) > 0)
                        {
                            IsAlarm = true;
                        }
                    }
                    if (IsAlarm)
                    {
                        var isDo = (decimal.Parse(item["RealValue"].ToString()) > modelTag.TagHH) ||
                                   (decimal.Parse(item["RealValue"].ToString()) < modelTag.TagLL);
                        if (isDo)
                        {
                            tempInfo.AlarmCount += 1;
                            //tempInfo.Status = status;
                        }
                        else
                        {
                            tempInfo.AlarmCount = 0;
                            //tempInfo.Status = 0;
                        }
                        if (tempInfo.AlarmCount >= BasePublic.LimitAlarmCount)
                        {
                            if (
                                !(modelTag.AlarmTime <=
                                  DateTime.Parse(item["RealTime"].ToString()).AddSeconds(-BasePublic.AlarmPeriod)))
                            {
                                continue;
                            }
                            var modelEquipTag =
                                (from li in lstEquipTags where li.TagCode == modelTag.ID select li).FirstOrDefault();
                            if (modelEquipTag == null)
                            {
                                continue;
                            }
                            var drAlarm = dtAlarm.NewRow();
                            drAlarm["ID"]        = Guid.NewGuid();
                            drAlarm["EquCode"]   = modelEquipTag.EquCode;
                            drAlarm["EquName"]   = modelEquipTag.EquipName;
                            drAlarm["TagCode"]   = modelEquipTag.TagCode;
                            drAlarm["TagName"]   = modelEquipTag.TagName;
                            drAlarm["TagEU"]     = modelTag.TagEU;
                            drAlarm["TagLL"]     = modelTag.TagLL;
                            drAlarm["TagL"]      = modelTag.TagL;
                            drAlarm["TagH"]      = modelTag.TagH;
                            drAlarm["TagHH"]     = modelTag.TagHH;
                            drAlarm["RealValue"] = item["RealValue"];
                            drAlarm["RealState"] = 1;
                            drAlarm["RealTime"]  = item["RealTime"];
                            drAlarm["IsDealed"]  = 1;
                            dtAlarm.Rows.Add(drAlarm);

                            tempInfo.AlarmCount = 0;
                            tempInfo.Status     = 0;
                        }
                    }
                }
            }
            InsertToServer(dtAlarm, "T_EP_EquipWarning");
        }
Example #4
0
        /// <summary>
        ///     获取单个位号转化后的值
        /// </summary>
        /// <param name="formule"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static decimal GetOneData2(M_BS_TagDefine model, string[] arr)
        {
            decimal dValue = 0;
            var     index  = 0;

            index = model.DataIndex - 1;
            //dataindex<=0会造成求用电量时错误
            if (model == null || string.IsNullOrEmpty(model.Formule) || index < 0)
            {
                return(dValue);
            }
            if (string.IsNullOrEmpty(arr[index]))
            {
                return(dValue);
            }
            switch (model.Formule)
            {
                #region 获取转化后的值

            case "0":
                dValue = decimal.Parse(arr[index]);
                if (dValue > 50000)
                {
                    dValue = dValue - 65536;
                }
                break;     //直接读取和存储原值,无需转换

            case "1":
                dValue = rhValue(arr[index]);
                break;     //温湿度传感器湿度转换

            case "2":
                dValue = tValue(arr[index]);
                break;     //温湿度传感器温度转换

            case "3":
                dValue = ttValue(arr[index]);
                break;     //温度传感器温度转换

            case "4":
                dValue = ldValue(arr[index]);
                break;     //露点仪数据转换

            case "5":
                dValue = ylValue(arr[index]);
                break;     //压力传感器压力值转换

            case "6":
                dValue = csjValue(arr[index]);
                break;     //除湿机数据转换

            case "7":
                dValue = kyjDl(arr[index]);
                break;

            case "8":
                dValue = gzjDl(arr[index]);
                break;

            case "9":
                dValue = zdjDl(arr[index]);
                break;

            case "10":
                dValue = decimal.Parse(arr[index]);
                break;

            case "13":
                if (index < 1)
                {
                    return(dValue);
                }
                dValue = kyjNh2(arr[index]) + kyjNh1(arr[index - 1]);
                break;

            case "14":
                if (index < 1)
                {
                    return(dValue);
                }
                dValue = gzjNh2(arr[index]) + gzjNh1(arr[index - 1]);
                break;

            case "15":
                if (index < 1)
                {
                    return(dValue);
                }
                dValue = zdjNh2(arr[index]) + zdjNh1(arr[index - 1]);
                break;

            case "16":
                dValue = kyjGl(arr[index]);
                break;

            case "17":
                dValue = gzjGl(arr[index]);
                break;

            case "18":
                dValue = zdjGl(arr[index]);
                break;

            default:
                break;

                #endregion
            }
            if (model.CompensateRatio > 0)
            {
                dValue = dValue * model.CompensateRatio;
            }
            return(dValue);
        }