예제 #1
0
파일: YSP_A.aspx.cs 프로젝트: athree/YSP
        protected void ShowDiagButton_Click(object sender, EventArgs e)
        {
            if (Session["SelectedData"] == null)
            {
                ViewState["ErrorMsg"] = Language.Selected["Alert_SelData"];
                //Response.Write("<script>$(function(){$('#ErrorMsg p').innerText='" + Language.Selected["Alert_SelData"] + "';$('#ErrorMsg').show();})</script>");
                //Response.Write("<script>alert(" + Language.Selected["Alert_SelData"] + "')</script>");

                return;
            }
            if (Session["SelectedAbs"] == null)
            {
                ViewState["ErrorMsg"] = Language.Selected["Alert_SelAbs"];
                //Response.Write("<script>alert(" + Language.Selected["Alert_SelAbs"] + "')</script>");
                return;
            }
            if (Session["SelectedRel"] == null)
            {
                ViewState["ErrorMsg"] = Language.Selected["Alert_SelRel"];
                //Response.Write("<script>alert(" + Language.Selected["Alert_SelRel"] + "')</script>");
                return;
            }

            ContentData data = (ContentData)Session["SelectedData"];
            ContentData abs  = (ContentData)Session["SelectedAbs"];
            ContentData rel  = (ContentData)Session["SelectedRel"];

            if (data.ReadDate <= abs.ReadDate)
            {
                ViewState["ErrorMsg"] = Language.Selected["Alert_TimeErr1"];
                //Response.Write("<script>alert('" + Language.Selected["Alert_TimeErr1"] + "')</script>");
                return;
            }
            if (data.ReadDate <= rel.ReadDate)
            {
                ViewState["ErrorMsg"] = Language.Selected["Alert_TimeErr2"];
                //Response.Write("<script>alert('" + Language.Selected["Alert_TimeErr2"] + "')</script>");
                return;
            }
            ViewState["ErrorMsg"] = "";
            switch (ShowDiagDrop.SelectedValue)
            {
            case "大卫三角形法":
                Session["DiagType"] = "DavidDiag";
                break;

            case "立体图示法":
                Session["DiagType"] = "ThreeShow";
                break;
            }



            AnlyInformation    anlyInfo  = null;
            List <AlarmMsgAll> alarmList = null;

            MongoHelper <Config> _cfg             = new MongoHelper <Config>();
            Expression <Func <Config, bool> > ex  = p => p.DevID == devId && p.Alarm != null;
            Expression <Func <Config, bool> > ex1 = p => p.DevID == devId && p.AnalyPara.EnviSet != null;
            Config cfg = _cfg.FindOneBy(ex);

            if (cfg == null || cfg.Alarm == null || cfg.AnalyPara.EnviSet == null)
            {
                //。。。。。。。。。。。。。从下位机取。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
            }
            AlarmAll           hold    = cfg.Alarm;
            EnvironmentSetting setting = cfg.AnalyPara.EnviSet;

            if (hold == null || setting == null)
            {
                //从下位机取。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
            }
            //告警信息
            alarmList = Diagnose.GasAlarm(data, abs, rel, setting, hold);

            ////故障分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
            anlyInfo = Diagnose.GasDiagnose(devId, data, abs, rel, setting, hold.DiagSet);
            DiagnoseResult dr = Diagnose.WrapperAnlyResult(devId, 2, anlyInfo);

            TB_Result.Text = "";

            //TB_Result.Text += "\r\n------告警信息(" + alarmList.Length.ToString() + ")条------\r\n";//ljb:alarmList为空的时候不知道有没有Length这个属性(这个地方一直没法运行下去,估计这就是问题)
            TB_Result.Text += "\r\n------告警信息------\r\n";//ljb
            //有告警信息
            if (alarmList != null && alarmList.Count() != 0)
            {
                TB_Result.Text += "\r\n------告警信息(" + alarmList.Count().ToString() + ")条------\r\n";//ljb
                for (int i = 0; i < alarmList.Count(); i++)
                {
                    string msg = "";
                    msg += Language.Selected["Alarm_Device"] + devId + "\r\n";
                    msg += Language.Selected["Alarm_Gas"] + alarmList[i].GasName + "\r\n";

                    string msgType = "";
                    switch (alarmList[i].Type)
                    {
                    case 0:
                        msgType = Language.Selected["Alarm_Type_Content"];
                        break;

                    case 1:
                        msgType = Language.Selected["Alarm_Type_Abs"];
                        break;

                    case 2:
                        msgType = Language.Selected["Alarm_Type_Rel"];
                        break;

                    default:
                        msgType = Language.Selected["Alarm_Type_Content"];
                        break;
                    }

                    msg += Language.Selected["Alarm_Type"] + msgType + "\r\n";
                    msg += Language.Selected["Alarm_Value"] + alarmList[i].AlarmValue.ToString("F1") + ", " + Language.Selected["Alarm_RealValue"] + alarmList[i].RealValue.ToString("F3") + "\r\n";
                    msg += Language.Selected["Alarm_Level"] + WarringLevel[alarmList[i].Level] + "\r\n";

                    TB_Result.Text += msg + "\r\n";
                }
            }
            else
            {
                TB_Result.Text += "\r\n------无信息------\r\n";
            }

            //有故障信息
            TB_Result.Text += "\r\n------故障诊断信息------\r\n";
            if (anlyInfo != null)
            {
                //最终 诊断结果
                TB_Result.Text += "\r\n" + Language.Selected["Diag_Result"] + "\r\n" + dr.Result + "\r\n";
                //其它诊断中间数据,三比值、大卫三角形、立体图示
                TB_Result.Text += "\r\n" + Language.Selected["ThreeRatio_Diag_Result"] + "\r\n" + dr.ThreeRatioCode + "(" + dr.ThreeRatioResult + ")\r\n";
                TB_Result.Text += "\r\n" + Language.Selected["David_Result"] + "\r\n" + dr.DevidCode + "(" + dr.DevidResult + ")\r\n";
                TB_Result.Text += "\r\n" + Language.Selected["Cube_Diag_Result"] + "\r\n" + dr.CubeCode + "\r\n";

                //
                LB_Ratio.Text = dr.ThreeRatioCode;

                //大卫三角形数据
                //"C2H2:10%, C2H4:20%, CH4:30%"
                string   sr  = dr.DevidCode;
                string[] str = sr.Split(',');
                for (int i = 0; i < str.Length; i++)
                {
                    string[] temp = str[i].Split(':');
                    if (temp[0] == "C2H2" || temp[0] == "C2H4" || temp[0] == "CH4")
                    {
                        Session[temp[0]] = temp[1];
                    }
                }
                if (Session["C2H2"] != null & Session["C2H4"] != null && Session["CH4"] != null)
                {
                    get_temp_Map();
                    Timer1.Enabled = true;
                }

                else
                {
                    Response.Write("<script>alert(" + "session出错,请重新诊断!" + "')</script>");
                }
                //dr = dr.Replace('%', ' ');
                //dr = dr.Replace(',', '&');
                //dr = dr.Replace(":", "=");
                //dr = dr.Replace(" ", "");
                //string str = "javascript:showPopWin('" + Language.Selected["Title_Sample"] + "', 'DevidShow.aspx?";
                //str += dr;
                //str += "',  620, 330, null, true, true);return false;";
                //BT_Devid.OnClientClick = str;
                //BT_Devid.Enabled = true;

                //string str1 = "javascript:showPopWin('" + Language.Selected["CubeShow"] + "', 'ThreeShow.aspx?";
                //str1 += dr;
                //str1 += "',  900, 440, null, true, true);return false;";
                //BT_Cube.OnClientClick = str1;
                //BT_Cube.Enabled = true;
                ////立体图 命令参数
                ////"C2H2/C2H4=1, C2H4/C2H6=1, CH4/H2=1"
//#if false
//                                    //dr = anlyInfo._cubecode;

//                                    //string cmd = anlyInfo.Value.ratio.CH4_H2.ToString() + ",";
//                                    //cmd += anlyInfo.Value.ratio.C2H2_C2H4.ToString() + ",";
//                                    //cmd += anlyInfo.Value.ratio.C2H4_C2H6.ToString();
//                                    //ViewState["CMD"] = cmd;
//#else
//                ViewState["CMD"] = null;//这是谁改的?它和else里面的一样,那ViewState["CMD"]永远为null了,上面这段为什么注释掉?--ljb
//#endif
            }
            else
            {
                TB_Result.Text += "\r\n------无信息------\r\n";

                //ljb
                //BT_Devid.Enabled = true;
                //BT_Devid.Enabled = false;
                //BT_Cube.Enabled = false;

                ViewState["CMD"] = null;
            }
        }
예제 #2
0
파일: ThreeRatio.cs 프로젝트: athree/YSP
        public static void Diagnose(decimal H2, decimal CH4, decimal C2H2, decimal C2H4, decimal C2H6, ref AnlyInformation info)
        {
            //if (Math.Abs(H2) < MIN || Math.Abs(CH4) < MIN || Math.Abs(C2H2) < MIN || Math.Abs(C2H4) < MIN || Math.Abs(C2H6) < MIN)
            //{
            //    return;
            //}

            #region  高亮

            /*
             * info = new AnlyInfo();
             * info.devidInfo = new DevidTriAnlyInfo();
             * info.devidInfo.Desc = "";
             * info.ratio = new Ratio();
             * info.threevar = new ThreeValue();
             * info.threevar.Desc = "";
             * info.chDesc = "";
             * info.enDesc = "";
             * info.Desc = "";
             *
             *
             *
             *
             * //----------立体图示法(每一个比值的范围 0-10,10代表无穷大,参考GB/T 7252-2001 附录E)
             * info.ratio.C2H2_C2H4 = info.ratio.C2H4_C2H6 = info.ratio.CH4_H2 = -1.0m;        //-1.0代表无法计算判断
             *
             * bool canCalc = true;
             * if ((Math.Abs(C2H4) < MIN && Math.Abs(C2H2) < MIN)
             || (Math.Abs(C2H6) < MIN && Math.Abs(C2H4) < MIN)
             || (Math.Abs(H2) < MIN && Math.Abs(CH4) < MIN))         // 0.0/0.0 无意义
             ||{
             || canCalc = false;
             ||}
             ||
             ||if (canCalc)
             ||{
             || if (Math.Abs(C2H4) >= MIN)       //if(C2H4!=0)
             || {
             ||     info.ratio.C2H2_C2H4 = C2H2 / C2H4;
             || }
             || else
             || {
             ||     info.ratio.C2H2_C2H4 = 10.0m;
             || }
             || if (info.ratio.C2H2_C2H4 > 10.0m)
             || {
             ||     info.ratio.C2H2_C2H4 = 10.0m;
             || }
             ||
             || if (Math.Abs(C2H6) >= MIN)       //if(C2H6!=0)
             || {
             ||     info.ratio.C2H4_C2H6 = C2H4 / C2H6;
             || }
             || else
             || {
             ||     info.ratio.C2H4_C2H6 = 10.0m;
             || }
             || if (info.ratio.C2H4_C2H6 > 10.0m)
             || {
             ||     info.ratio.C2H4_C2H6 = 10.0m;
             || }
             ||
             || if (Math.Abs(H2) >= MIN)       //if(C2H6!=0)
             || {
             ||     info.ratio.CH4_H2 = CH4 / H2;
             || }
             || else
             || {
             ||     info.ratio.CH4_H2 = 10.0m;
             || }
             || if (info.ratio.CH4_H2 > 10.0m)
             || {
             ||     info.ratio.CH4_H2 = 10.0m;
             || }
             ||}
             ||
             ||
             ||//----------三比值法
             || //根据各气体浓度值编码
             ||int[] a = new int[3];
             ||a[0] = a[1] = a[2] = -1;       //-1表示相应比值无效或无意义
             ||
             ||canCalc = true;
             ||if ((Math.Abs(C2H2) < MIN && Math.Abs(C2H4) < MIN)
             || (Math.Abs(CH4) < MIN && Math.Abs(H2) < MIN)
             || (Math.Abs(C2H4) < MIN && Math.Abs(C2H6) < MIN))         // 0.0/0.0 无意义
             ||{
             || canCalc = false;
             ||}
             ||
             ||if (canCalc)
             ||{
             || if (Math.Abs(C2H4) < MIN)       //c2h4==0
             || {
             ||     a[0] = 2;
             || }
             || else
             || {
             ||     if (C2H2 / C2H4 < 0.1m)
             ||     {
             ||         a[0] = 0;
             ||     }
             ||     if (C2H2 / C2H4 >= 0.1m && C2H2 / C2H4 < 3.0m)
             ||     {
             ||         a[0] = 1;
             ||     }
             ||     if (C2H2 / C2H4 >= 3.0m)
             ||     {
             ||         a[0] = 2;
             ||     }
             || }
             ||
             || if (Math.Abs(H2) < MIN)       //H2==0
             || {
             ||     a[1] = 2;
             || }
             || else
             || {
             ||     if (CH4 / H2 < 0.1m)
             ||     {
             ||         a[1] = 1;
             ||     }
             ||     if (CH4 / H2 < 1.0m && CH4 / H2 >= 0.1m)
             ||     {
             ||         a[1] = 0;
             ||     }
             ||     if (CH4 / H2 >= 1.0m)
             ||     {
             ||         a[1] = 2;
             ||     }
             || }
             ||
             || if (Math.Abs(C2H6) < MIN)       //C2H6==0
             || {
             ||     a[2] = 2;
             || }
             || else
             || {
             ||     if (C2H4 / C2H6 < 1.0m)
             ||     {
             ||         a[2] = 0;
             ||     }
             ||     if (C2H4 / C2H6 < 3.0m && C2H4 / C2H6 >= 1.0m)
             ||     {
             ||         a[2] = 1;
             ||     }
             ||     if (C2H4 / C2H6 >= 3.0m)
             ||     {
             ||         a[2] = 2;
             ||     }
             || }
             ||}
             ||info.threevar.Var1 = a[0];
             ||info.threevar.Var2 = a[1];
             ||info.threevar.Var3 = a[2];
             ||
             ||
             ||//----------图形三比值法
             ||decimal Percent_C2H2 = -1.0m, Percent_C2H4 = -1.0m, Percent_CH4 = -1.0m;        //-1表示无法计算判断
             ||if (Math.Abs((C2H2 + C2H4 + CH4)) > MIN
             || && Math.Abs(C2H2) > MIN
             || && Math.Abs(C2H4) > MIN
             || && Math.Abs(CH4) > MIN)
             ||{
             || Percent_C2H2 = C2H2 / (C2H2 + C2H4 + CH4);
             || Percent_C2H4 = C2H4 / (C2H2 + C2H4 + CH4);
             || Percent_CH4 = CH4 / (C2H2 + C2H4 + CH4);
             ||}
             ||info.devidInfo.percent_C2H2 = Percent_C2H2;
             ||info.devidInfo.percent_C2H4 = Percent_C2H4;
             ||info.devidInfo.percent_CH4 = Percent_CH4;
             ||
             ||
             ||
             ||
             ||
             ||
             ||string desc = "";
             ||//----------三比值法 判断故障类型
             ||if (a[0] >= 0 && a[1] >= 0 && a[2] >= 0)         //比值有效时诊断
             ||{
             || if (0 == a[0] && 0 == a[1] && 1 == a[2])
             || {
             ||     desc = ANLYINFO_T1;
             || }
             || else if ((0 == a[0] || (-1) == a[0]) && 2 == a[1] && 0 == a[2])
             || {
             ||     desc = ANLYINFO_T2;
             || }
             || else if (0 == a[0] && 2 == a[1] && 1 == a[2])
             || {
             ||     desc = ANLYINFO_T3;
             || }
             || else if (0 == a[0] && 3 > a[1] && 0 <= a[1] && 2 == a[2])
             || {
             ||     desc = ANLYINFO_T4;
             || }
             || else if ((0 == a[0] || (-1) == a[0]) && 1 == a[1] && 0 == a[2])
             || {
             ||     desc = ANLYINFO_PD;
             || }
             || else if (1 == a[0] && 2 > a[1] && 0 <= a[1] && 3 > a[2] && 0 <= a[2])
             || {
             ||     desc = ANLYINFO_LD;
             || }
             || else if (1 == a[0] && 2 == a[1] && 3 > a[2] && 0 <= a[2])
             || {
             ||     desc = ANLYINFO_DT;
             || }
             || else if (2 == a[0] && 2 > a[1] && 0 <= a[1] && 3 > a[2] && 0 <= a[2])
             || {
             ||     desc = ANLYINFO_AD;
             || }
             || else if (2 == a[0] && 2 == a[1] && 0 <= a[2] && 3 > a[2])
             || {
             ||     desc = ANLYINFO_ADT;
             || }
             ||}
             ||if (desc != "")
             ||{
             || info.threevar.Desc = desc;
             ||}
             ||else
             ||{
             || info.threevar.Desc = ANLYINFO_UNKNOWN;     //未知故障
             ||}
             ||
             ||
             ||//----------图形法 判断故障类型
             ||desc = "";
             ||if (Percent_C2H2 >= 0.0m && Percent_C2H4 >= 0.0m && Percent_CH4 >= 0.0m)    //计算结果有效时诊断
             ||{
             || if (Percent_CH4 > 0.98m)
             || {
             ||     desc = ANLYINFO_PD;
             || }
             || if (Percent_C2H2 > 0.13m && Percent_C2H4 < 0.23m)
             || {
             ||     desc = ANLYINFO_LD;
             || }
             || if (Percent_C2H4 > 0.23m && Percent_C2H2 > 0.13m && Percent_C2H2 > 0.29m && Percent_C2H4 > 0.23m && Percent_C2H4 > 0.38m)
             || {
             ||     desc = ANLYINFO_HD;
             || }
             || if (Percent_C2H2 < 0.04m && Percent_C2H4 < 0.10m)
             || {
             ||     desc = ANLYINFO_T2A;	//低温过热,小于300°
             || }
             || if (Percent_C2H2 < 0.04m && Percent_C2H4 > 0.10m && Percent_C2H4 < 0.50m)
             || {
             ||     desc = ANLYINFO_T3; //热故障,300°~ 700°
             || }
             || if (Percent_C2H2 < 0.15m && C2H4 > 0.50m)
             || {
             ||     desc = ANLYINFO_T4; //热故障,> 700℃
             || }
             ||}
             ||if (desc != "")
             ||{
             || info.devidInfo.Desc = desc;
             ||}
             ||else
             ||{
             || info.devidInfo.Desc = ANLYINFO_UNKNOWN;     //未知故障
             ||}
             ||
             ||
             ||
             ||//---最终故障结论
             ||if (info.threevar.Desc != ANLYINFO_UNKNOWN)
             ||{
             || info.Desc = info.threevar.Desc;     //优先采用三比值判断结果
             ||}
             ||else if (info.devidInfo.Desc != ANLYINFO_UNKNOWN)
             ||{
             || info.Desc = info.devidInfo.Desc;    //三比值不能判断时,用图形法判断结果
             ||}
             ||
             ||if (info.Desc == "")
             ||{
             || info.Desc = ANLYINFO_UNKNOWN;     //无故障结果(无法判断)
             ||}
             ||
             ||int len = info.Desc.Length;
             ||int index = info.Desc.IndexOf("^");
             ||info.enDesc = info.Desc.Substring(0, index);
             ||info.chDesc = info.Desc.Substring(index + 1, len - index - 1);
             */
            #endregion

            #region  Code
            info                = new AnlyInformation();
            info.devidInfo      = new DevidTriAnlyInfo();
            info.devidInfo.Desc = "";
            info.ratio          = new Ratio();
            info.threevar       = new ThreeValue();
            info.threevar.Desc  = "";
            info.chDesc         = "";
            info.enDesc         = "";
            info.Desc           = "";



            //----------立体图示法(每一个比值的范围 0-10,10代表无穷大,参考GB/T 7252-2001 附录E)
            info.ratio.C2H2_C2H4 = info.ratio.C2H4_C2H6 = info.ratio.CH4_H2 = -1.0m;        //-1.0代表无法计算判断

            bool canCalc = true;
            if ((Math.Abs(C2H4) < MIN && Math.Abs(C2H2) < MIN) ||
                (Math.Abs(C2H6) < MIN && Math.Abs(C2H4) < MIN) ||
                (Math.Abs(H2) < MIN && Math.Abs(CH4) < MIN))            // 0.0/0.0 无意义
            {
                canCalc = false;
            }

            if (canCalc)
            {
                if (Math.Abs(C2H4) >= MIN)       //if(C2H4!=0)
                {
                    info.ratio.C2H2_C2H4 = C2H2 / C2H4;
                }
                else
                {
                    info.ratio.C2H2_C2H4 = 10.0m;
                }
                if (info.ratio.C2H2_C2H4 > 10.0m)
                {
                    info.ratio.C2H2_C2H4 = 10.0m;
                }

                if (Math.Abs(C2H6) >= MIN)       //if(C2H6!=0)
                {
                    info.ratio.C2H4_C2H6 = C2H4 / C2H6;
                }
                else
                {
                    info.ratio.C2H4_C2H6 = 10.0m;
                }
                if (info.ratio.C2H4_C2H6 > 10.0m)
                {
                    info.ratio.C2H4_C2H6 = 10.0m;
                }

                if (Math.Abs(H2) >= MIN)       //if(C2H6!=0)
                {
                    info.ratio.CH4_H2 = CH4 / H2;
                }
                else
                {
                    info.ratio.CH4_H2 = 10.0m;
                }
                if (info.ratio.CH4_H2 > 10.0m)
                {
                    info.ratio.CH4_H2 = 10.0m;
                }
            }


            //----------三比值法
            //根据各气体浓度值编码
            int[] a = new int[3];
            a[0] = a[1] = a[2] = -1;       //-1表示相应比值无效或无意义

            canCalc = true;
            if ((Math.Abs(C2H2) < MIN && Math.Abs(C2H4) < MIN) ||
                (Math.Abs(CH4) < MIN && Math.Abs(H2) < MIN) ||
                (Math.Abs(C2H4) < MIN && Math.Abs(C2H6) < MIN))            // 0.0/0.0 无意义
            {
                canCalc = false;
            }

            if (canCalc)
            {
                if (Math.Abs(C2H4) < MIN || Math.Abs(C2H2 / C2H4) > 2.0m)       //c2h4==0
                {
                    //   a[0] = 2;
                }
                else
                {
                    if (C2H2 / C2H4 < 0.1m)
                    {
                        a[0] = 0;
                    }
                    if (C2H2 / C2H4 >= 0.1m && C2H2 / C2H4 <= 1.0m)
                    {
                        a[0] = 1;
                    }
                    if (C2H2 / C2H4 > 1.0m && C2H2 / C2H4 <= 2.0m)
                    {
                        a[0] = 2;
                    }
                }

                if (Math.Abs(H2) < MIN || Math.Abs(CH4 / H2) > 2.0m)       //H2==0
                {
                    //   a[1] = 2;
                }
                else
                {
                    if (CH4 / H2 < 0.1m)
                    {
                        a[1] = 0;
                    }
                    if (CH4 / H2 < 1.0m && CH4 / H2 >= 0.1m)
                    {
                        a[1] = 1;
                    }
                    if (CH4 / H2 >= 1.0m)
                    {
                        a[1] = 2;
                    }
                }

                if (Math.Abs(C2H6) < MIN || Math.Abs(C2H4 / C2H6) > 2.0m)       //C2H6==0
                {
                    //  a[2] = 2;
                }
                else
                {
                    if (C2H4 / C2H6 < 0.1m)
                    {
                        a[2] = 0;
                    }
                    if (C2H4 / C2H6 < 1.0m && C2H4 / C2H6 >= 0.1m)
                    {
                        a[2] = 1;
                    }
                    if (C2H4 / C2H6 >= 1.0m && C2H4 / C2H6 <= 2.0m)
                    {
                        a[2] = 2;
                    }
                }
            }
            info.threevar.Var1 = a[0];
            info.threevar.Var2 = a[1];
            info.threevar.Var3 = a[2];


            //----------图形三比值法
            decimal Percent_C2H2 = -1.0m, Percent_C2H4 = -1.0m, Percent_CH4 = -1.0m;        //-1表示无法计算判断
            if (Math.Abs((C2H2 + C2H4 + CH4)) > MIN &&
                Math.Abs(C2H2) > MIN &&
                Math.Abs(C2H4) > MIN &&
                Math.Abs(CH4) > MIN)
            {
                Percent_C2H2 = C2H2 / (C2H2 + C2H4 + CH4);
                Percent_C2H4 = C2H4 / (C2H2 + C2H4 + CH4);
                Percent_CH4  = CH4 / (C2H2 + C2H4 + CH4);
            }
            info.devidInfo.percent_C2H2 = Percent_C2H2;
            info.devidInfo.percent_C2H4 = Percent_C2H4;
            info.devidInfo.percent_CH4  = Percent_CH4;



            string desc = "";
            //----------三比值法 判断故障类型
            if (a[0] >= 0 && a[1] >= 0 && a[2] >= 0)         //比值有效时诊断
            {
                if (0 == a[0] && 0 == a[1] && 1 == a[2])
                {
                    desc = ANLYINFO_T1;
                }
                else if (0 == a[0] && 2 == a[1] && 0 == a[2])
                {
                    desc = ANLYINFO_T2;
                }
                else if (0 == a[0] && 2 == a[1] && 1 == a[2])
                {
                    desc = ANLYINFO_T3;
                }
                else if (0 == a[0] && 2 >= a[1] && 0 <= a[1] && 2 == a[2])
                {
                    desc = ANLYINFO_T4;
                }
                else if (0 == a[0] && 1 == a[1] && 0 == a[2])
                {
                    desc = ANLYINFO_PD;
                }
                else if (1 == a[0] && 1 >= a[1] && 0 <= a[1] && 2 >= a[2] && 0 <= a[2])
                {
                    desc = ANLYINFO_LD;
                }
                else if (1 == a[0] && 2 == a[1] && 2 >= a[2] && 0 <= a[2])
                {
                    desc = ANLYINFO_DT;
                }
                else if (2 == a[0] && 1 >= a[1] && 0 <= a[1] && 2 >= a[2] && 0 <= a[2])
                {
                    desc = ANLYINFO_AD;
                }
                else if (2 == a[0] && 2 == a[1] && 0 <= a[2] && 2 >= a[2])
                {
                    desc = ANLYINFO_ADT;
                }
            }
            if (desc != "")
            {
                info.threevar.Desc = desc;
            }
            else
            {
                info.threevar.Desc = ANLYINFO_UNKNOWN;     //未知故障
            }


            //----------图形法 判断故障类型
            desc = "";
            if (Percent_C2H2 >= 0.0m && Percent_C2H4 >= 0.0m && Percent_CH4 >= 0.0m)    //计算结果有效时诊断
            {
                if (Percent_CH4 > 0.98m)
                {
                    desc = ANLYINFO_PD;
                }
                if (Percent_C2H2 > 0.13m && Percent_C2H4 < 0.23m)
                {
                    desc = ANLYINFO_LD;
                }
                if (Percent_C2H4 > 0.23m && Percent_C2H2 > 0.13m && Percent_C2H2 > 0.29m && Percent_C2H4 > 0.23m && Percent_C2H4 > 0.38m)
                {
                    desc = ANLYINFO_HD;
                }
                if (Percent_C2H2 < 0.04m && Percent_C2H4 < 0.10m)
                {
                    desc = ANLYINFO_T2A;        //低温过热,小于300°
                }
                if (Percent_C2H2 < 0.04m && Percent_C2H4 > 0.10m && Percent_C2H4 < 0.50m)
                {
                    desc = ANLYINFO_T3; //热故障,300°~ 700°
                }
                if (Percent_C2H2 < 0.15m && C2H4 > 0.50m)
                {
                    desc = ANLYINFO_T4; //热故障,> 700℃
                }
            }
            if (desc != "")
            {
                info.devidInfo.Desc = desc;
            }
            else
            {
                info.devidInfo.Desc = ANLYINFO_UNKNOWN;     //未知故障
            }



            //---最终故障结论
            if (info.threevar.Desc != ANLYINFO_UNKNOWN)
            {
                info.Desc = info.threevar.Desc;     //优先采用三比值判断结果
            }
            else if (info.devidInfo.Desc != ANLYINFO_UNKNOWN)
            {
                info.Desc = info.devidInfo.Desc;    //三比值不能判断时,用图形法判断结果
            }

            if (info.Desc == "")
            {
                info.Desc = ANLYINFO_UNKNOWN;     //无故障结果(无法判断)
            }

            int len   = info.Desc.Length;
            int index = info.Desc.IndexOf("^");
            info.enDesc = info.Desc.Substring(0, index);
            info.chDesc = info.Desc.Substring(index + 1, len - index - 1);


            #endregion
        }