private void InitCurrentAircraftModel()
        {
            string modelName = ConfigurationManager.AppSettings["AircraftModelName"];
            string modelCaption = ConfigurationManager.AppSettings["AircraftModelCaption"];

            AircraftModel model = new AircraftModel() { ModelName = modelName, Caption = modelCaption, LastUsed = DateTime.Now };

            m_currentAircraftModel = model;
        }
        /// <summary>
        /// 传空则直接取得Common库
        /// </summary>
        /// <param name="mongoServer"></param>
        /// <param name="aircraftModel"></param>
        /// <returns></returns>
        internal MongoDatabase GetMongoDatabaseByAircraftModel(MongoServer mongoServer, AircraftModel aircraftModel)
        {
            //DEBUG
            //if (aircraftModel != null && !string.IsNullOrEmpty(aircraftModel.ModelName))
            //{
            //    return mongoServer.GetDatabase(AircraftMongoDb.COLLECTION_AIRCRAFT_INSTANCE + "_" + aircraftModel.ModelName);
            //}

            return mongoServer.GetDatabase(AircraftMongoDb.DATABASE_COMMON);
        }
 public FlightParameters GetAllFlightParameters(AircraftModel model)
 {
     try
     {
         LogHelper.Info("AircraftService.GetAllFlightParameters Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetAllFlightParameters(model);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetAllFlightParameters", e);
         return null;
     }
 }
 public FlightDataEntities.Charts.ChartPanel[] GetAllChartPanels(AircraftModel aircraftModel)
 {
     try
     {
         LogHelper.Info("AircraftService.GetAllChartPanels Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetAllChartPanels(aircraftModel);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetAllChartPanels", e);
         return null;
     }
 }
Esempio n. 5
0
        internal FlightDataEntities.Charts.ChartPanel[] GetAllChartPanels(
            AircraftModel aircraftModel)
        {
            //DEBUG: 目前先写死

            FlightDataEntities.Charts.ChartPanel[] panels = new FlightDataEntities.Charts.ChartPanel[]{
                new ChartPanel(){ PanelID = "A", PanelName = "左发动机",
                    ParameterIDs = new string[]{"Hp","Vi", "T6L","NHL","KG7","KG8"}},
                    //气压高度 指示空速 左发排气温度 左发高压转速 襟翼放下25°襟翼放下35°

                                    new ChartPanel(){ PanelID = "B", PanelName = "右发动机",
                    ParameterIDs = new string[]{"Hp","Vi", "T6R","NHR","KG7","KG8"}},
                                                //气压高度 指示空速 右发排气温度 右发高压转速 襟翼放下25°襟翼放下35°

                                    new ChartPanel(){ PanelID = "C", PanelName = "发动机",
                    ParameterIDs = new string[]{"M","T6L", "T6R","NHL","NHR","Tt"}},
                    //马赫数 左发排气温度 右发排气温度 左发高压转速 右发高压转速  大气总温

                                    new ChartPanel(){ PanelID = "D", PanelName = "大气机数据",
                    ParameterIDs = new string[]{"Hp","Vi", "M","aT","Vy","GS"}},
                    //气压高度 指示空速 马赫数 真攻角 升降速度 地速

                                    new ChartPanel(){ PanelID = "E", PanelName = "惯导飞控",
                    ParameterIDs = new string[]{"ZH","HG", "FY","DR","KZB","KCB"}},
                    //真航向 倾斜角 俯仰角 偏流角 纵向状态标志 横向状态标志

                                    new ChartPanel(){ PanelID = "F", PanelName = "位移",
                    ParameterIDs = new string[]{"Dx","Dy", "Dz","ZS","CS"}},
                    //副翼角位移 方向舵角位移 平尾角位移 平尾伺服器输入 副翼伺服器输入

                                    new ChartPanel(){ PanelID = "G", PanelName = "着陆姿态A",
                    ParameterIDs = new string[]{"Hp","Vi", "HG","FY","NHL","KG5","KG7"}},
                    //气压高度 指示空速 倾斜角 俯仰角 左发高压转速 左起落架放下 襟翼放下25°

                                    new ChartPanel(){ PanelID = "H", PanelName = "着陆姿态B",
                    ParameterIDs = new string[]{"aT","Vy", "Ny","Nx","NHL","KG6","KG8"}},
                    //真攻角 升降速度 法向过载 纵向过载 右发高压转速 右起落架放下 襟翼放下35°

                                    new ChartPanel(){ PanelID = "I", PanelName = "角速度",
                    ParameterIDs = new string[]{"Wy","Wx", "Wz"}},
                    //俯仰角速度 横滚角速度 盘旋角速度

                                    new ChartPanel(){ PanelID = "J", PanelName = "过载",
                    ParameterIDs = new string[]{"Ny","Nx", "Nz"}},
                    //法向过载 纵向过载 侧向过载

                                    new ChartPanel(){ PanelID = "K", PanelName = "告警信号A",
                    ParameterIDs = new string[]{"KG2","KG3", "KG4","KG9","KG10"}},
                    //剩油1000kg 主液压系统压降 助液压系统压降 前舱盖锁紧 后舱盖锁紧

                                    new ChartPanel(){ PanelID = "L", PanelName = "告警信号B",
                    ParameterIDs = new string[]{"KG11","KG12", "KG13","KG14","KG15"}},
                    //左防冰接通 右防冰接通 左主电源脱网 右主电源脱网 失速警告信号

            };

            return panels;
        }
Esempio n. 6
0
        internal FlightRawDataRelationPoint[] GetFlightRawDataRelationPoints(AircraftModel aircraft, string flightID,
            string XAxisParameterID, string YAxisParameterID)
        {
            if (string.IsNullOrEmpty(flightID))
            {
                LogHelper.Warn("flight为空或FlightID为空(GetFlightRawDataRelationPoints)。", null);
                return null;
            }

            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,需要拆分存储的记录,最好在DAL里面去处理表名构建逻辑
                    MongoDatabase database =
                        dal.GetMongoDatabaseByAircraftModel(mongoServer,
                        aircraft);
                    if (database != null)
                    {
                        MongoCollection<FlightDataEntities.FlightRawDataRelationPoint> modelCollection
                            = dal.GetFlightRawDataRelationPointsMongoCollection(database, flightID);

                        List<IMongoQuery> qs = new List<IMongoQuery>();
                        IMongoQuery q1 = Query.EQ("FlightID", flightID);
                        if (!string.IsNullOrEmpty(XAxisParameterID))
                        {
                            IMongoQuery q2 = Query.EQ("XAxisParameterID", XAxisParameterID);
                            qs.Add(q2);
                        }
                        if (!string.IsNullOrEmpty(YAxisParameterID))
                        {
                            IMongoQuery q3 = Query.EQ("YAxisParameterID", YAxisParameterID);
                            qs.Add(q3);
                        }

                        if (qs.Count == 0)
                        {
                            var cursor = modelCollection.Find(q1);
                            var result = cursor.AsQueryable();
                            return result.ToArray();
                        }
                        else
                        {
                            qs.Insert(0, q1);
                            IMongoQuery all = Query.And(qs);
                            var cursor = modelCollection.Find(all);
                            var result = cursor.AsQueryable();
                            return result.ToArray();
                        }
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("GetFlightRawDataRelationPoints", e);
                }
            }
            return null;
        }
Esempio n. 7
0
        internal GlobeData[] GetGlobeDatas(string flightID, AircraftModel model, int startIndex, int endIndex)
        {
            if (model == null || string.IsNullOrEmpty(model.ModelName) || string.IsNullOrEmpty(flightID))
            {
                LogHelper.Warn("aircraftModel为空或aircraftModel.ModelName为空或FlightID为空(GetGlobeDatas)。", null);
                return null;
            }

            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,需要拆分存储的记录,最好在DAL里面去处理表名构建逻辑
                    MongoDatabase database =
                        dal.GetMongoDatabaseByAircraftModel(mongoServer, model);
                    if (database != null)
                    {
                        MongoCollection<FlightDataEntities.GlobeData> modelCollection
                            = dal.GetFlightGlobeDataMongoCollectionByFlight(database, flightID);

                        List<IMongoQuery> qs = new List<IMongoQuery>();

                        IMongoQuery q1 = Query.EQ("FlightID", new MongoDB.Bson.BsonString(flightID));
                        IMongoQuery q2 = Query.GTE("Index", new MongoDB.Bson.BsonInt32(startIndex));
                        IMongoQuery q3 = Query.LTE("Index", new MongoDB.Bson.BsonInt32(endIndex));
                        IMongoQuery q4 = Query.EQ("AircraftModelName", new MongoDB.Bson.BsonString(model.ModelName));
                        IMongoQuery query = Query.And(q1, q2, q3, q4);

                        var cursor = modelCollection.Find(query);
                        var result = cursor.AsQueryable();
                        return result.ToArray();
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("GetGlobeDatas", e);
                }
            }
            return null;
        }
Esempio n. 8
0
        internal int GetEarliestYear(AircraftModel model)
        {
            if (model == null || string.IsNullOrEmpty(model.ModelName))
            {
                LogHelper.Warn("aircraftModel为空或aircraftModel.ModelName为空或FlightID为空(GetEarliestYear)。", null);
                return DateTime.Now.Year;
            }

            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,需要拆分存储的记录,最好在DAL里面去处理表名构建逻辑
                    MongoDatabase database = dal.GetMongoDatabaseCommon(mongoServer);
                    if (database != null)
                    {
                        if (database != null)
                        {
                            MongoCollection<Flight> modelCollection
                                = database.GetCollection<Flight>(AircraftMongoDb.COLLECTION_FLIGHT);

                            var queryable = modelCollection.AsQueryable();
                            var result = from one in queryable
                                         where one.Aircraft != null && one.Aircraft.AircraftModel != null
                                         && one.Aircraft.AircraftModel.ModelName == model.ModelName
                                         select Convert.ToInt32(one.FlightDate.Year);

                            if (result != null && result.Count() > 0)
                            {
                                return result.ToArray().Min();
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("GetAllAircrafts", e);
                }
            }
            return DateTime.Now.Year;
        }
Esempio n. 9
0
        internal DecisionRecord[] GetFlightConditionDecisionRecords(AircraftModel model,
            DateTime startYearMonth, DateTime endYearMonth, string[] aircraftNumbers)
        {
            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息,
                    //建议不要分表,存放在Common里面
                    MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, model);

                    IMongoQuery q1 = Query.GTE("FlightDate", new BsonDateTime(startYearMonth));
                    IMongoQuery q2 = Query.LTE("FlightDate", new BsonDateTime(endYearMonth));

                    IMongoQuery q0 = null;
                    if (database != null)
                    {
                        if (aircraftNumbers != null && aircraftNumbers.Length > 0)
                        {
                            MongoCollection<Flight> modelCollection1 =
                                database.GetCollection<Flight>(AircraftMongoDb.COLLECTION_FLIGHT);

                            var queryableFlights = modelCollection1.AsQueryable();
                            var flights = from oneFlight in queryableFlights
                                          where oneFlight.Aircraft != null && oneFlight.Aircraft.AircraftModel != null
                                          && oneFlight.Aircraft.AircraftModel.ModelName == model.ModelName
                                          && oneFlight.FlightDate > startYearMonth && oneFlight.FlightDate <= endYearMonth
                                          && aircraftNumbers.Contains(oneFlight.Aircraft.AircraftNumber)
                                          select oneFlight.FlightID;

                            var flights2 = flights.Distinct();

                            List<MongoDB.Bson.BsonString> list = new List<BsonString>();
                            foreach (var f in flights2)
                            {
                                list.Add(new BsonString(f));
                            }
                            q0 = Query.In("FlightID", list);
                        }
                    }

                    MongoCollection<FlightDataEntities.Decisions.DecisionRecord> modelCollection2
                        = dal.GetFlightConditionDecisionRecordMongoCollectionByFlight(database, null);//没有按Flight分割的

                    IMongoQuery query = q0;//(q0 == null) ? Query.And(q1, q2) : Query.And(q1, q2, q0);

                    if (query != null)
                    {
                        var cursor = modelCollection2.Find(query);

                        return cursor.ToArray();
                    }

                    return new DecisionRecord[] { };
                }
                catch (Exception e)
                {
                    LogHelper.Error("GetFlightConditionDecisionRecords", e);
                    return new DecisionRecord[] { };
                }
            }

            return new DecisionRecord[] { };
        }
Esempio n. 10
0
 public string AddOrReplaceFlightGlobeDataBatch(string flightId, AircraftModel model,
     int startIndex, int endIndex, FlightDataEntities.GlobeData[] globedatas)
 {
     try
     {
         LogHelper.Info("DataInputService.AddOrReplaceFlightGlobeDataBatch Requested.", null);
         DataInputServiceBll bll = new DataInputServiceBll();
         return bll.AddOrReplaceFlightGlobeDataBatch(flightId, model, startIndex, endIndex, globedatas);
     }
     catch (Exception ex)
     {
         LogHelper.Error("AddOrReplaceFlightGlobeDataBatch", ex);
         return ex.Message;
     }
 }
Esempio n. 11
0
        internal Flight[] GetAllFlights(AircraftModel model, AircraftInstance instance)
        {
            if (model == null || string.IsNullOrEmpty(model.ModelName))
            {
                LogHelper.Warn("model为空或ModelName为空(GetAllFlights)。", null);
                return null;
            }

            if (instance == null || string.IsNullOrEmpty(instance.AircraftNumber))
                return GetAllFlights(model);

            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {
                    MongoDatabase database = dal.GetMongoDatabaseCommon(mongoServer);
                    //这是实体,直接取Common吧
                    //dal.GetMongoDatabaseByAircraftModel(mongoServer, flight.Aircraft.AircraftModel);

                    if (database != null)
                    {
                        MongoCollection<Flight> modelCollection
                            = database.GetCollection<Flight>(AircraftMongoDb.COLLECTION_FLIGHT);

                        var queryable = modelCollection.AsQueryable();
                        var result = from one in queryable
                                     where one.Aircraft != null && one.Aircraft.AircraftModel != null
                                     && one.Aircraft.AircraftModel.ModelName == model.ModelName
                                     && one.Aircraft.AircraftNumber == instance.AircraftNumber //加上机号判断
                                     select one;

                        return result.ToArray();
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("GetAllFlights", e);
                }
            }

            return null;
        }
Esempio n. 12
0
        internal FlightDataEntities.Decisions.Decision[] GetAllDecisions(AircraftModel aircraftModel)
        {
            FlightDataEntities.Decisions.Decision[] decisions = new FlightDataEntities.Decisions.Decision[]{
                new Decision(){ DecisionID = "001", DecisionName="起飞时仰角大", EventLevel = 2, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@FY#=##FY@°>11°,dT=##dT@s≥1s",
                      //俯仰角=00°>11°,dT=0s≥1s
                      SolutionInstruction = "(1)通知训练部门;(2)查看飞机腹鳍是否擦伤",
                      RelatedParameters =new string[]{"FY","NHL","NHR","KG5","KG6","KG7"  },
                     //俯仰角(10/FY),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下25°(32->7/Kg7)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.GreaterThan , ParameterValue =11},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 95},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 95},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "002", DecisionName="起飞时未放襟翼", EventLevel = 1, LastTime = 2,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥2s",
                      //dT=0s≥2s
                      SolutionInstruction = "(1)检查飞机襟翼收放系统,同时查看前一架次飞参记录襟翼指示系统情况;(2)检查飞参襟翼通道参数记录情况。",
                      RelatedParameters =new string[]{"NHL","NHR","KG5","KG6","KG7","KG8" },
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下25°(32->7/Kg7),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =95},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 95},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "KG7", Operator = CompareOperator.Equal , ParameterValue=0},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "003", DecisionName="起飞时襟翼放到35°", EventLevel = 1, LastTime = 2,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥2s",
                      //dT=0s≥12s
                      SolutionInstruction = "(1)向飞行员了解当时的情况,同时查看前一架次飞参记录襟翼指示系统情况;(2)检查襟翼收放系统",
                      RelatedParameters =new string[]{"NHL","NHR","KG5","KG6","KG8" },
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =95},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 95},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "004", DecisionName="失速时未告警", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@Vi#=##Vi@km/h>150km/h,@@aT#=##aT@°>12.5°,dT=##dT@s≥1s",
                      //指示空速=000km/h>150km/h,真攻角=00°>12.5°,dT=0s≥1s
                      SolutionInstruction = "(1)通电检查振杆器工作情况;(2)检查大气数据系统",
                      RelatedParameters =new string[]{"Vi","aT","KG15" },
                     //指示空速(3/Vi),真攻角(5/aT),失速告警信号(32->15/Kg15)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "aT", Operator = CompareOperator.GreaterThan , ParameterValue = 12.5F},
                         new SubCondition(){ ParameterID = "KG15", Operator = CompareOperator.Equal , ParameterValue = 0},
                     }},
                     new Decision(){ DecisionID = "005", DecisionName="起飞后未收起落架", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      SolutionInstruction = "(1)向飞行员了解当时的情况;(2)检查起落架收放系统",
                      RelatedParameters =new string[]{"Vi","NHL","NHR","KG5","KG6" },
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =90},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 90},
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue=500},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "006", DecisionName="剩余油量1000千克", EventLevel = 1, LastTime = 2,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥2s",
                      //dT=0s≥2s
                      SolutionInstruction = "(1)向飞行员了解情况;(2)进行加输油检查",
                      RelatedParameters =new string[]{ "NHL","NHR","KG2"},
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),剩油1000kg(32->2/Kg2)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG2", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "007", DecisionName="主液压系统压降信号", EventLevel = 1, LastTime = 4,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥4s",
                      //dT=0s≥4s
                      RelatedParameters =new string[]{ "NHL","NHR","KG3"},
                      SolutionInstruction = "(1)向飞行员了解情况;(2)进行加输油检查",
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),主液压系统压降(32->3/Kg3)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG3", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "008", DecisionName="助力液压系统压降信号", EventLevel = 1, LastTime = 3,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥3s",
                      //dT=0s≥3s
                      SolutionInstruction = "(1)向飞行员了解情况;(2)供压检查助力液压情况",
                      RelatedParameters =new string[]{ "NHL","NHR","KG4"},
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),助液压系统压降(32->4/Kg4)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG4", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "009", DecisionName="前舱盖未锁紧", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      SolutionInstruction = "(1)检查前舱盖开启、关闭及信号情况;(2)查看前一架次飞参记录前舱盖未锁紧指示情况",
                      RelatedParameters =new string[]{ "Vi","NHL","NHR","KG9"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),前舱盖锁紧(32->9/Kg9)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG9", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "010", DecisionName="后舱盖未锁紧", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      SolutionInstruction = "(1)检查后舱盖开启、关闭及信号情况;(2)查看前一架次飞参记录后舱盖未锁紧指示情况",
                      //dT=0s≥1s
                      RelatedParameters =new string[]{ "NHL","NHR","KG10"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),后舱盖锁紧(32->10/Kg10)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG10", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "011", DecisionName="左发防冰接通", EventLevel = 2, LastTime = 1,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      SolutionInstruction = "更换左防冰压差开关或左防冰电磁阀",
                      RelatedParameters =new string[]{ "NHL","NHR","T6L","T6R","KG11"},
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R),左防冰接通(32->11/Kg11)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG11", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "012", DecisionName="右发防冰接通", EventLevel = 2, LastTime = 1,
                     DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      SolutionInstruction = "更换右防冰压差开关或右防冰电磁阀",
                       RelatedParameters =new string[]{ "NHL","NHR","T6L","T6R","KG12"},
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),,左发排气温度(28/T6L),右发排气温度(29/T6R)右防冰接通(32->11/Kg11)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG12", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "013", DecisionName="左发电机故障", EventLevel = 1, LastTime = 1,
                       DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      SolutionInstruction = "更换左调压控制保护盒或左发电机",
                      RelatedParameters =new string[]{"NHL","NHR","T6L","T6R","KG13" },
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R),左主电源脱网(32->13/Kg13)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG13", Operator = CompareOperator.Equal , ParameterValue = 1},
                     }},
                     new Decision(){ DecisionID = "014", DecisionName="右发电机故障", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      SolutionInstruction = "更换右调压控制保护盒或右发电机",
                     RelatedParameters =new string[]{ "NHL","NHR","T6L","T6R","KG14" },
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R),右主电源脱网(32->14/Kg14)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG14", Operator = CompareOperator.Equal , ParameterValue = 1},
                     }},
                     new Decision(){ DecisionID = "015", DecisionName="左发转速达到99%", EventLevel = 1, LastTime = 10,
                     DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%>99%,dT=##dT@s≥10s",
                      //左发转速=00%>99%,dT=00s≥10s
                      SolutionInstruction = "调整左发动机转速",
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R" },
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 99},
                     }},
                     new Decision(){ DecisionID = "016", DecisionName="右发转速达到99%", EventLevel = 1, LastTime = 10,
                     DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%>99%,dT=##dT@s≥10s",
                      //右发转速=00%>99%,dT=00s≥10s
                      SolutionInstruction = "调整右发动机转速",
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R" },
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 99},
                     }},
                     new Decision(){ DecisionID = "017", DecisionName="左发转速超转", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%>101%,dT=##dT@s≥1s",
                      //左发转速=00%>101%,dT=0s≥1s
                      SolutionInstruction = "调整左发动机转速",
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 101},
                     }},
                     new Decision(){ DecisionID = "018", DecisionName="右发转速超转", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%>101%,dT=##dT@s≥1s",
                      //右发转速=00%>101%,dT=0s≥1s
                      SolutionInstruction = "调整右发动机转速",
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 101},
                     }},
                     new Decision(){ DecisionID = "019", DecisionName="左发中间转速超时", EventLevel = 1, LastTime = 1800,
                      DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%>94.7%,dT=##dT@s≥1800s",
                      //左发转速=00%>94.7%,dT=000s≥1800
                      SolutionInstruction = "提醒飞行人员使用发动机",
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 94.7F},
                     }},
                     new Decision(){ DecisionID = "020", DecisionName="右发中间转速超时", EventLevel = 1, LastTime = 1800,
                      DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%>94.7%,dT=##dT@s≥1800s",
                      //右发转速=00%>94.7%,dT=000s≥1800s
                      SolutionInstruction = "提醒飞行人员使用发动机",
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 94.7F},
                     }},
                     new Decision(){ DecisionID = "021", DecisionName="左发最大军用转速超时", EventLevel = 1, LastTime = 720,
                      DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%>96%,dT=##dT@s≥720s",
                      //左发转速=00%>96%,dT=000s≥720s
                      SolutionInstruction = "提醒飞行人员使用发动机",
                      RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 96},
                     }},
                     new Decision(){ DecisionID = "022", DecisionName="右发最大军用转速超时", EventLevel = 1, LastTime = 720,
                      DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%>96%,dT=##dT@s≥720s",
                      //右发转速=00%>96%,dT=000s≥720s
                      SolutionInstruction = "提醒飞行人员使用发动机",
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 96},
                     }},
                     new Decision(){ DecisionID = "023", DecisionName="空中左发停车", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%<50%,@@NHR#=##NHR@%>53%,dT=##dT@s≥1s",
                      //左发转速=00%<50%,右发转速=00%>53%,dT=0s≥1s
                      SolutionInstruction = "(1)向飞行员了解情况;(2)机务人员加强左发动机检查 ",
                      RelatedParameters =new string[]{ "Vi","NHL","NHR","KG5","KG6","KG13"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),左主电源脱网(32->13/Kg13)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 53},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG13", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "024", DecisionName="空中右发停车", EventLevel = 1, LastTime = 1,
                       DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%<50%,@@NHL#=##NHL@%>53%,dT=##dT@s≥1s",
                      //右发转速=00%<50%,左发转速=00%>53%,dT=0s≥1s
                      SolutionInstruction = "(1)向飞行员了解情况;(2)机务人员加强右发动机检查 ",
                         RelatedParameters =new string[]{  "Vi","NHL","NHR","KG5","KG6","KG14"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),右主电源脱网(32->14/Kg14)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 53},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG14", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "025", DecisionName="空速超限", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@Vi#=##Vi@km/h>1250km/h,dT=##dT@s≥1s",
                      //指示空速=0000km/h>1250km/h,dT=0s≥1s
                      SolutionInstruction = "(1)向飞行员了解当时的情况;(2)根据飞机的高度、总温、真空速和气象等条件,判断实际表速;(3)检查空速表和大气数据系统",
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","KG5","KG6"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue = 1250},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "026", DecisionName="高度超限", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@Hp#=##Hp@km/h>15200km/h,dT=##dT@s≥1s",
                      //气压高度=00000km/h>15200km/h,dT=0s≥1s
                      SolutionInstruction = "(1)飞行员了解当时的情况;(2)检查大气数据系统",
                     RelatedParameters =new string[]{ "Hp", "Vi","NHL","NHR","KG5","KG6"},
                     //气压高度(2/Hp),指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Hp", Operator = CompareOperator.GreaterThan , ParameterValue =15200},
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue = 100},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "027", DecisionName="升降速度超限", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@Vy#绝对值=##Vy@m/s>150 m/s,dT=##dT@s≥1s",
                      //升降速度绝对值=000m/s>150 m/s,dT=0s≥1s
                      SolutionInstruction = "(1)飞行员了解当时的情况;(2)检查大气数据系统",
                     RelatedParameters =new string[]{  "Vi","Vy","NHL","NHR"},
                     //指示空速(3/Vi),升降速度(6/Vy),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Vy",  Operator = CompareOperator.SmallerThan , ParameterValue = -150},
                                 new SubCondition(){ ParameterID = "Vy",  Operator = CompareOperator.GreaterThan , ParameterValue = 150},
                             }
                         },
                     }},
                     new Decision(){ DecisionID = "028", DecisionName="马赫数超限", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@M#=##M@>1.7,dT=##dT@s≥1s",
                      //马赫数=0>1.7,dT=0s≥1s
                      SolutionInstruction = "(1)飞行员了解当时的情况;(2)检查大气数据系统",
                     RelatedParameters =new string[]{ "Vi","M","NHL","NHR","KG5","KG6"},
                     //指示空速(3/Vi),马赫数(4/M),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.GreaterThan , ParameterValue = 1.7F},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "029", DecisionName="着陆仰角过大", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@FY#=##FY@°>11°,dT=##dT@s≥1s",
                      //俯仰角=00°>11°,dT=0s≥1s
                      SolutionInstruction = "(1)通知飞行人员;(2)机务人员查看飞机腹鳍是否擦伤",
                     RelatedParameters =new string[]{ "FY","NHL","NHR","KG5","KG6","KG8"},
                     //俯仰角(10/FY),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.GreaterThan , ParameterValue =11},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 70},
                          new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 70},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                        new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "030", DecisionName="着陆时襟翼未放", EventLevel = 1, LastTime = 20,
                     DecisionDescriptionStringTemplate = "dT=##dT@s≥20s",
                      //dT=0s≥1s
                      SolutionInstruction = "(1)向飞行人员了解情况;(2)机务人员检查襟翼工作情况",
                     RelatedParameters =new string[]{  "Vi","NHL","NHR","KG5","KG6","KG8"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =310},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                          new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                        new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "031", DecisionName="着陆时垂直过载过大", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@Hp#=##Hp@m<100m,@@Ny#=##Ny@g绝对值>2g,dT=##dT@s≥10s",
                      //气压高度=00m<100m,法向过载=0g绝对值>2g,dT=0s≥1s
                      SolutionInstruction = "(1)查看侧向过载和纵向过载是否正确;(2)通知训练部门;(3)机务人员加强起落架检查",
                     RelatedParameters =new string[]{ "Hp","Ny","NHL","NHR","KG5","KG6","KG8"},
                     //气压高度(2/Hp),法向过载(22/Ny),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Hp", Operator = CompareOperator.SmallerThan , ParameterValue = 100},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Ny",  Operator = CompareOperator.SmallerThan , ParameterValue = -2},
                                 new SubCondition(){ ParameterID = "Ny",  Operator = CompareOperator.GreaterThan , ParameterValue = 2},
                             }
                         },
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue= 1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue= 1},
                     }},
                     new Decision(){ DecisionID = "032", DecisionName="着陆时未放起落架", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@Nx#=##Nx@g<0,dT=##dT@s≥10s",
                      //纵向过载=0g<0,dT=0s≥1s
                      SolutionInstruction = "(1)向飞行人员了解情况;(2)机务人员检查起落架收放系统工作情况",
                     RelatedParameters =new string[]{  "Nx","NHL","NHR","KG5","KG6","KG8"},
                     //纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.SmallerThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue= 0},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue= 1},
                     }},
                     new Decision(){ DecisionID = "033", DecisionName="M=1附近时间过长", EventLevel = 2, LastTime = 10,
                     DecisionDescriptionStringTemplate = "0.95<(@@M#=##M@)<1.02,dT=##dT@s≥10s",
                      //0.95<(马赫数=0)<1.02,dT=0s≥10s
                      SolutionInstruction = "检查发动机和飞机结构",
                      RelatedParameters =new string[]{  "M","NHL","NHR","KG5","KG6"},
                     //马赫数(4/M),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.GreaterThan , ParameterValue =0.95F},
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.SmallerThan , ParameterValue = 1.02F},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "034", DecisionName="零载荷超过2秒", EventLevel = 2, LastTime = 2,
                     DecisionDescriptionStringTemplate = "@@Ny#=##Ny@g<0.2g,dT=##dT@s≥2s",
                      //法向过载=0g<0.2g,dT=0s≥2s
                      SolutionInstruction = "(1)检查发动机和飞机结构;(2)更换三轴加速度计",
                      RelatedParameters =new string[]{ "Vi","Ny","NHL","NHR"},
                     //指示空速(3/Vi),法向过载(22/Ny),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "Ny", Operator = CompareOperator.SmallerThan , ParameterValue = 0.2F},
                     }},
                     new Decision(){ DecisionID = "035", DecisionName="法向过载超限", EventLevel = 2, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@Ny#=##Ny@g<-1g或>7g,dT=##dT@s≥1s",
                      //法向过载=0g<-1g或>7g,dT=0s≥1s
                      SolutionInstruction = "(1)查看空中其他状态时数据; (2)提醒飞行人员;(3)更换三轴加速度计",
                      RelatedParameters =new string[]{ "Vi","Ny","NHL","NHR"},
                     //指示空速(3/Vi),法向过载(22/Ny),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                          new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Ny",  Operator = CompareOperator.SmallerThan , ParameterValue = -1},
                                 new SubCondition(){ ParameterID = "Ny",  Operator = CompareOperator.GreaterThan , ParameterValue = 7},
                             }
                         },
                     }},
                     new Decision(){ DecisionID = "036", DecisionName="纵向过载超限", EventLevel = 2, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@Nx#=##Nx@g>0.7g,dT=##dT@s≥1s",
                      //纵向过载=0g>0.7g,dT=0s≥1s
                      SolutionInstruction = "(1)查看空中其他状态时数据; (2)提醒飞行人员;(3)更换三轴加速度计",
                      RelatedParameters =new string[]{ "Vi","Nx","NHL","NHR"},
                     //指示空速(3/Vi),纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.GreaterThan , ParameterValue = 0.7F},
                     }},
                     new Decision(){ DecisionID = "037", DecisionName="侧向过载超限", EventLevel = 2, LastTime = 1,
                       DecisionDescriptionStringTemplate = "@@Nz#=##Nz@g>0.5g,dT=##dT@s≥1s",
                      SolutionInstruction = "(1)查看空中其他状态时数据; (2)提醒飞行人员;(3)更换三轴加速度计",
                      //侧向过载=0g>0.5g,dT=0s≥1s
                      RelatedParameters =new string[]{  "Vi","Nz","NHL","NHR"},
                     //指示空速(3/Vi),侧向过载(24/Nz),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "Nz", Operator = CompareOperator.GreaterThan , ParameterValue = 0.5F},
                     }},
                     new Decision(){ DecisionID = "038", DecisionName="倾斜角超限", EventLevel = 1, LastTime = 1,
                       DecisionDescriptionStringTemplate = "@@HG#=##HG@°>65°,dT=##dT@s≥1s",
                      //倾斜角=00°>65°,dT=0s≥1s
                      SolutionInstruction = "(1)了解飞行科目;(2)查看空中其他状态时数据;(3)更换惯导设备",
                      RelatedParameters =new string[]{  "Vi","HG","NHL","NHR"},
                     //指示空速(3/Vi),倾斜角(9/HG),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "HG", Operator = CompareOperator.GreaterThan , ParameterValue = 65},
                     }},
                     new Decision(){ DecisionID = "039", DecisionName="俯仰角超限", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@FY#=##FY@°>25°,dT=##dT@s≥1s",
                      //俯仰角=00°>25°,dT=0s≥1s
                      SolutionInstruction = "(1)了解飞行科目;(2)查看空中其他状态时数据;(3)更换惯导设备",
                     RelatedParameters =new string[]{  "Vi","FY","NHL","NHR"},
                     //指示空速(3/Vi),俯仰角(10/FY),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.GreaterThan , ParameterValue = 25},
                     }},
                     new Decision(){ DecisionID = "040", DecisionName="总温传感器故障", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@Tt#=##Tt@℃ 绝对值>80℃,dT=##dT@s≥1s",
                      //大气总温=00℃绝对值>80℃,dT=0s≥1s
                      SolutionInstruction = "(1)更换飞参记录仪;(2)更换大气机;(3)更换大气总温传感器",
                     RelatedParameters =new string[]{  "Vi","Tt","NHL","NHR"},
                     //指示空速(3/Vi),大气总温(7/Tt),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Tt",  Operator = CompareOperator.GreaterThan , ParameterValue = 80},
                                 new SubCondition(){ ParameterID = "Tt",  Operator = CompareOperator.SmallerThan , ParameterValue = -80},
                             }
                         },
                     }},
                     new Decision(){ DecisionID = "041", DecisionName="攻角传感器故障", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@aT#=##aT@>15°,dT=##dT@≥1s",
                      //真攻角=00°>15°,dT=0s≥1s
                      SolutionInstruction = "(1)查看空中其他状态数据;(2)更换大气机;(3)更换攻角传感器",
                     RelatedParameters =new string[]{  "Vi","aT","NHL","NHR"},
                     //指示空速(3/Vi),真攻角(5/aT),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "aT", Operator = CompareOperator.GreaterThan , ParameterValue = 15},
                     }},
                     new Decision(){ DecisionID = "042", DecisionName="着陆时坡度大于40°", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@HG#=##HG@>40°,dT=##dT@≥1s",
                      //倾斜角=00°>40°,dT=0s≥1s
                      SolutionInstruction = "(1)向飞行人员了解情况;(2)更换惯导",
                     RelatedParameters =new string[]{  "Vi","HG","NHL","NHR","KG5","KG6","KG8"},
                     //指示空速(3/Vi),倾斜角(9/HG),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "HG", Operator = CompareOperator.GreaterThan , ParameterValue =40},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "043", DecisionName="副翼偏角超限", EventLevel = 1, LastTime = 2,
                    DecisionDescriptionStringTemplate = "@@Dx#=##Dx@° 绝对值>21°,dT=##dT@≥2s",
                      //副翼角位移=00°绝对值>21°,dT=0s≥2s
                      SolutionInstruction = "(1)查看当时状态;(2)调整副翼角位移传感器",
                      RelatedParameters =new string[]{  "Vi","Dx","NHL","NHR"},
                     //指示空速(3/Vi),副翼角位移(25/Dx),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Dx", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -21},
                                 new SubCondition(){ ParameterID = "Dx", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = 21},
                             }
                         },
                     }},
                     new Decision(){ DecisionID = "044", DecisionName="副翼传感器故障", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "副翼角位移变化率=##Dx@° 绝对值<0.3°,dT=##dT@s≥1s",
                      //副翼角位移变化率=0°绝对值<0.3°,dT=0s≥1s
                      SolutionInstruction = "(1)查看当时状态;(2)更换副翼角位移传感器",
                      RelatedParameters =new string[]{ "Vi","Dx","KZB","NHL","NHR"},
                     //指示空速(3/Vi),副翼角位移(25/Dx),纵向状态标志(18/KZB),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Dx", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 0.3F},
                                 new SubCondition(){ ParameterID = "Dx", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -0.3F},
                             }
                         },
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -8600},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -10100},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -4100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -8400},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 10100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -3900},
                                     }
                                 },
                             }
                         }
                     }},
                     new Decision(){ DecisionID = "045", DecisionName="平尾传感器故障", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "平尾角位移变化率=##Dz@° 绝对值<0.3°,dT=##dT@s≥1s",
                      //平尾角位移变化率=0°绝对值<0.3°,dT=0s≥1s
                      SolutionInstruction = "(1)查看当时状态;(2)更换平尾角位移传感器",
                      RelatedParameters =new string[]{ "Vi","Dz","KZB","NHL","NHR"},
                     //指示空速(3/Vi),平尾角位移(27/Dz),纵向状态标志(18/KZB),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Dz", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 0.3F},
                                 new SubCondition(){ ParameterID = "Dz", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -0.3F},
                             }
                         },
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -8600},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -10100},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -4100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -8400},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 10100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -3900},
                                     }
                                 },
                             }
                         }
                     }},
                     new Decision(){ DecisionID = "046", DecisionName="方向舵传感器故障", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "方向舵角位移变化率=##Dy@°绝对值<0.3°,dT=##dT@s≥1s",
                      //方向舵角位移变化率=0°绝对值<0.3°,dT=0s≥1s
                      SolutionInstruction = "(1)查看当时状态;(2)更换方向舵角位移传感器",
                      RelatedParameters =new string[]{ "Vi","Dy","KZB","NHL","NHR"},
                     //指示空速(3/Vi),方向舵角位移(26/Dy),纵向状态标志(18/KZB),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Dy", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 0.3F},
                                 new SubCondition(){ ParameterID = "Dy", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -0.3F},
                             }
                         },
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -8600},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -10100},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -4100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -8400},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 10100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -3900},
                                     }
                                 },
                             }
                         }
                     }},
                     new Decision(){ DecisionID = "047", DecisionName="飞控出现自动拉起信号", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      SolutionInstruction = "(1)查看当时状态;(2)更换无线电高度表",
                      RelatedParameters =new string[]{  "KZB","KG5","KG6"},
                     //纵向状态标志(18/KZB),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "KZB", Operator = CompareOperator.GreaterThan , ParameterValue = 3400},
                         new SubCondition(){ ParameterID = "KZB", Operator = CompareOperator.SmallerThan , ParameterValue = 3600},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "048", DecisionName="起飞时左发转速低", EventLevel = 2, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%<95%,dT=##dT@s≥1s",
                      //左发转速=00%<95%,dT=00s≥1s
                      SolutionInstruction = "(1)调整左发动机军用转速;(2)更换左发主燃条",
                      RelatedParameters =new string[]{  "M","Nx","NHL","NHR","KG7"},
                     //马赫数(4/M),纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(31/NHR),襟翼放下25°(31->7/Kg7)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.GreaterThan , ParameterValue = 0.19F},
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.SmallerThan , ParameterValue = 0.22F},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.GreaterThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG7", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 70},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 95},
                     }},
                     new Decision(){ DecisionID = "049", DecisionName="起飞时右发转速低", EventLevel = 2, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%<95%,dT=##dT@s≥1s",
                      //右发转速=00%<95%,dT=00s≥1s
                      SolutionInstruction = "(1)调整右发动机军用转速;(2)更换右发主燃条",
                     RelatedParameters =new string[]{ "M","Nx","NHL","NHR","KG7"},
                     //马赫数(4/M),纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(30/NHR),襟翼放下25°(32->7/Kg7)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.GreaterThan , ParameterValue = 0.19F},
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.SmallerThan , ParameterValue = 0.22F},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.GreaterThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG7", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 70},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 95},
                     }},
                     new Decision(){ DecisionID = "050", DecisionName="左发起动时超温", EventLevel = 1, LastTime = 1,
                          DecisionDescriptionStringTemplate = "@@T6L#=##T6L@℃>630℃,dT=##dT@s≥1s",
                          SolutionInstruction = "(1)更换左发起动机;(2)更换左发动机",
                     RelatedParameters =new string[]{ "T6L","T6R","KG13"},
                     //左发排气温度(28/T6L),右发排气温度(29/T6R),左主电源脱网(37->13/Kg13)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "T6L", Operator = CompareOperator.GreaterThan , ParameterValue =630},
                         new SubCondition(){ ParameterID = "KG13", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "051", DecisionName="右发起动时超温", EventLevel = 1, LastTime = 1,
                          DecisionDescriptionStringTemplate = "@@T6R#=##T6R@℃>630℃,dT=##dT@s≥1s",
                          SolutionInstruction = "(1)更换右发起动机;(2)更换右发动机",
                     RelatedParameters =new string[]{ "T6L","T6R","KG14"},
                     //左发排气温度(28/T6L),右发排气温度(29/T6R),右主电源脱网(37->14/Kg14)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "T6R", Operator = CompareOperator.GreaterThan , ParameterValue =630},
                         new SubCondition(){ ParameterID = "KG14", Operator = CompareOperator.Equal , ParameterValue = 1},
                     }},
                     new Decision(){ DecisionID = "052", DecisionName="左发起动后超温", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@T6L#=##T6L@℃>700℃,dT=##dT@s≥1s",
                      //左发排气温度=000℃>700℃,dT=00s≥1s
                      SolutionInstruction ="更换左发动机",
                      RelatedParameters =new string[]{ "T6L","T6R","KG13"},
                     //左发排气温度(28/T6L),右发排气温度(29/T6R),左主电源脱网(37->13/Kg13)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "T6L", Operator = CompareOperator.GreaterThan , ParameterValue =700},
                         new SubCondition(){ ParameterID = "KG13", Operator = CompareOperator.Equal , ParameterValue = 0},
                     }},
                     new Decision(){ DecisionID = "053", DecisionName="右发起动后超温", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@T6R#=##T6R@℃>700℃,dT=##dT@s≥1s",
                      //右发排气温度=000℃>700℃,dT=00s≥1s
                      SolutionInstruction    = "更换左发动机",
                      RelatedParameters =new string[]{ "T6L","T6R","KG14"},
                     //左发排气温度(28/T6L),右发排气温度(29/T6R),右主电源脱网(37->14/Kg14)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "T6R", Operator = CompareOperator.GreaterThan , ParameterValue =700},
                         new SubCondition(){ ParameterID = "KG14", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "054", DecisionName="放伞时指示空速大", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@Vi#=##Vi@km/h>305km/h,dT=##dT@≥1s",
                      //指示空速=0000km/h>305km/h,dT=0s≥1s
                      RelatedParameters =new string[]{  "Vi","Nx","NHL","NHR","KG8"},
                      SolutionInstruction  = "(1)向飞行员了解情况;(2)通知保伞室监控该减速伞",
                     //指示空速(3/Vi),纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(31/NHR),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue = 305},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.SmallerThan , ParameterValue = -0.25F},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue = 1},
                     }},
                     new Decision(){ DecisionID = "055", DecisionName="襟翼35°时指示空速小", EventLevel = 2, LastTime = 1,
                      DecisionDescriptionStringTemplate = "100km/h<(@@Vi#=##Vi@km/h)<280km/h,dT=##dT@≥1s",
                      //100km/h<(指示空速=000km/h)<280km/h,dT=0s≥1s
                      SolutionInstruction = "调整微动开关",
                      RelatedParameters =new string[]{  "Vi","NHL","NHR","KG8"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.SmallerThan , ParameterValue = 280},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.GreaterThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG8", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "056", DecisionName="飞机滑行时俯仰角大", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "@@FY#=##FY@° 绝对值>6°,dT=##dT@s≥1s",
                      //俯仰角=0°绝对值>6°,dT=0s≥1s
                      SolutionInstruction = "(1)向飞行员了解情况;(2)更换惯导",
                      RelatedParameters =new string[]{ "Vi","NHL","NHR","FY"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),俯仰角(10/FY)
                     Conditions = new SubCondition[]{ new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.SmallerThan , ParameterValue =200},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 90},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 90},
                         new SubCondition()
                            { ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                                {
                                     new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.GreaterThan , ParameterValue = 6},
                                     new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.SmallerThan , ParameterValue = -6}
                                }
                            }
                     }},
                     new Decision(){ DecisionID = "057", DecisionName="飞机滑行时倾斜角大", EventLevel = 1, LastTime = 1,
                      DecisionDescriptionStringTemplate = "@@HG#=##HG@° 绝对值>6°,dT=##dT@s≥1s",
                      //倾斜角=0°绝对值>6°,dT=0s≥1s
                      SolutionInstruction = "(1)向飞行员了解情况;(2)更换惯导",
                         RelatedParameters =new string[]{  "Vi","NHL","NHR","HG"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),倾斜角(9/HG)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.SmallerThan , ParameterValue =200},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 90},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 90},
                         new SubCondition()
                            { ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                                {
                                     new SubCondition(){ ParameterID = "HG", Operator = CompareOperator.GreaterThan , ParameterValue = 6},
                                     new SubCondition(){ ParameterID = "HG", Operator = CompareOperator.SmallerThan , ParameterValue = -6}
                                }
                            }
                     }},
            };

            return decisions;
        }
     GetAllFlightConditionDecisions(AircraftModel aircraft)
 {
     try
     {
         LogHelper.Info("AircraftService.GetAllFlightConditionDecisions Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetAllFlightConditionDecisions(aircraft);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetAllFlightConditionDecisions", e);
         return null;
     }
 }
      GetFlightRawDataRelationPoints(AircraftModel aircraftModel, string flightID,
     string XAxisParameterID, string YAxisParameterID)
 {
     try
     {
         LogHelper.Info("AircraftService.GetFlightRawDataRelationPoints Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetFlightRawDataRelationPoints(aircraftModel, flightID, XAxisParameterID, YAxisParameterID);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetFlightRawDataRelationPoints", e);
         return null;
     }
 }
 public FlightDataEntities.Decisions.DecisionRecord[] GetFlightConditionDecisionRecords(AircraftModel model,
      DateTime startYearMonth, DateTime endYearMonth, string[] aircraftNumbers)
 {
     try
     {
         LogHelper.Info("AircraftService.GetFlightConditionDecisionRecords Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetFlightConditionDecisionRecords(model,
             startYearMonth, endYearMonth, aircraftNumbers);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetFlightConditionDecisionRecords", e);
         return new FlightDataEntities.Decisions.DecisionRecord[] { };
     }
 }
 public int GetEarliestYear(AircraftModel model)
 {
     try
     {
         LogHelper.Info("AircraftService.GetEarliestYear Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetEarliestYear(model);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetEarliestYear", e);
         return DateTime.Now.Year;
     }
 }
 public AircraftInstance[] GetAllAircrafts(AircraftModel model)
 {
     try
     {
         LogHelper.Info("AircraftService.GetAllAircrafts Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetAllAircrafts(model);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetAllAircrafts", e);
         return null;
     }
 }
 public GlobeData[] GetGlobeDatas(string flightID, AircraftModel model, int startIndex, int endIndex)
 {
     try
     {
         LogHelper.Info("AircraftService.GetGlobeDatas Requested.", null);
         AircraftServiceBll bll = new AircraftServiceBll();
         return bll.GetGlobeDatas(flightID, model, startIndex, endIndex);
     }
     catch (Exception e)
     {
         LogHelper.Error("AircraftService.GetGlobeDatas", e);
         return null;
     }
 }
Esempio n. 19
0
        public FlightParameters GetAllFlightParameters(AircraftModel model)
        {
            string basePath = this.CombineFromBasePath("FlightParameters.xml");

            if (!string.IsNullOrEmpty(basePath) && File.Exists(basePath))
                using (StreamReader reader = new StreamReader(basePath))
                {
                    XElement element = XElement.Load(reader);
                    if (element != null)
                    {
                        FlightParameters root = new FlightParameters();
                        var bc = element.Attribute("BytesCount");
                        if (bc != null)
                        {
                            root.BytesCount = Convert.ToInt32(bc.Value);
                        }

                        var parameters = element.Descendants("Parameter");
                        if (parameters != null && parameters.Count() > 0)
                        {
                            try
                            {
                                List<FlightParameter> fps = new List<FlightParameter>();

                                foreach (var one in parameters)
                                {
                                    FlightParameter ps = new FlightParameter()
                                    {
                                        ParameterID = one.Attribute("ParameterID").Value,
                                        Caption = one.Attribute("Caption").Value,
                                        Index = Convert.ToInt32(one.Attribute("Index").Value),
                                        SubIndex = Convert.ToInt32(one.Attribute("SubIndex").Value),
                                        ParameterDataType = one.Attribute("ParameterDataType").Value
                                    };
                                    var eles = one.Elements("Byte");
                                    if (eles != null && eles.Count() > 0)
                                    {
                                        List<ByteIndex> bis = new List<ByteIndex>();
                                        foreach (var ele in eles)
                                        {
                                            ByteIndex bi = new ByteIndex() { Index = Convert.ToInt32(ele.Attribute("Index").Value) };

                                            var eles2 = ele.Elements("Bit");
                                            if (eles2 != null && eles2.Count() > 0)
                                            {
                                                List<BitIndex> bitIndex = new List<BitIndex>();
                                                foreach (var ele2 in eles2)
                                                {
                                                    bitIndex.Add(
                                                        new BitIndex() { SubIndex = Convert.ToInt32(ele2.Attribute("Index").Value) });
                                                }
                                                bi.SubIndexes = bitIndex.ToArray();
                                            }

                                            bis.Add(bi);
                                        }

                                        ps.ByteIndexes = bis.ToArray();
                                    }

                                    fps.Add(ps);
                                }

                                root.Parameters = fps.ToArray();
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                            }
                        }

                        return root;
                    }
                }

            return null;

            //MongoServer mongoServer = this.GetMongoServer();
            //if (mongoServer != null)
            //{
            //    MongoDatabase database = mongoServer.GetDatabase(AircraftMongoDb.DATABASE_COMMON);
            //    if (database != null)
            //    {
            //        MongoCollection<FlightParameter> modelCollection
            //            = database.GetCollection<FlightParameter>(
            //            AircraftMongoDb.COLLECTION_AIRCRAFT_PARAMETER);

            //        IQueryable<FlightParameter> models = modelCollection.AsQueryable<FlightParameter>();

            //        var results = from one in models
            //                      where one.ModelName == modelName
            //                      orderby one.Index, one.SubIndex
            //                      select one;

            //        if (results != null && results.Count() > 0)
            //            return results.ToArray();

            //        return new FlightParameter[] { };
            //    }
            //}

            //throw new Exception(string.Format(
            //    "No MongoServer {0} finded, or no MongoCollection {1} finded.",
            //    AircraftMongoDb.DATABASE_COMMON, AircraftMongoDb.COLLECTION_AIRCRAFT_PARAMETER));
        }
Esempio n. 20
0
        internal FlightConditionDecision[] GetAllFlightConditionDecisions(AircraftModel aircraft)
        {
            FlightDataEntities.Decisions.FlightConditionDecision[] decisions = new FlightDataEntities.Decisions.FlightConditionDecision[]{
                new FlightConditionDecision(){ DecisionID = "1", DecisionName="停车通电状态", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "(Vi<5)&((NHL<5%)+(NHR<5%))",
                      //(Vi<5)&((NHL<5%)+(NHR<5%))
                      RelatedParameters =new string[]{"Vi","NHL","NHR" },

                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.SmallerOrEqual , ParameterValue =5},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "NHL",  Operator = CompareOperator.SmallerThan , ParameterValue = 5},
                                 new SubCondition(){ ParameterID = "NHR",  Operator = CompareOperator.SmallerThan , ParameterValue = 5},
                             }
                         },
                     }},

                      new FlightConditionDecision(){ DecisionID = "2", DecisionName="发动机地面开车状态", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "(Vi<5)&((NHL>5%)+(NHR>5%))",
                      //(Vi<5)&((NHL>5%)+(NHR>5%))
                      RelatedParameters =new string[]{"Vi","NHL","NHR" },

                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.SmallerOrEqual , ParameterValue =5},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "NHL",  Operator = CompareOperator.GreaterThan , ParameterValue = 5},
                                 new SubCondition(){ ParameterID = "NHR",  Operator = CompareOperator.GreaterThan , ParameterValue = 5},
                             }
                         },
                     }},

                      new FlightConditionDecision(){ DecisionID = "3", DecisionName="正常飞行状态", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "(Vi>5)&((NHL>5%)+(NHR>5%))",
                      //(Vi>5)&((NHL>5%)+(NHR>5%))
                      RelatedParameters =new string[]{"Vi","NHL","NHR" },

                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =5},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "NHL",  Operator = CompareOperator.GreaterThan , ParameterValue = 5},
                                 new SubCondition(){ ParameterID = "NHR",  Operator = CompareOperator.GreaterThan , ParameterValue = 5},
                             }
                         },
                     }},

                      new FlightConditionDecision(){ DecisionID = "4", DecisionName="最大军用转速状态", EventLevel = 1, LastTime = 1,
                     DecisionDescriptionStringTemplate = "(Vi>5)&((NHL>96%)+(NHR>96%))",
                      //(Vi>5)&((NHL>96%)+(NHR>96%))
                      RelatedParameters =new string[]{"Vi","NHL","NHR" },

                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =5},
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "NHL",  Operator = CompareOperator.GreaterThan , ParameterValue = 96},
                                 new SubCondition(){ ParameterID = "NHR",  Operator = CompareOperator.GreaterThan , ParameterValue = 96},
                             }
                         },
                     }},
            };

            return decisions;
        }
        internal string AddOrReplaceFlightGlobeDataBatch(string flightId, AircraftModel model,
            int startIndex, int endIndex, FlightDataEntities.GlobeData[] globedatas)
        {
            using (AircraftMongoDbDal dal = new AircraftMongoDbDal())
            {
                MongoServer mongoServer = dal.GetMongoServer();
                //不用判断是否为空,必须不能为空才能继续,否则内部要抛异常
                try
                {//此方法操作的记录为跟架次密切相关,但肯定LevelTopRecord需要包含趋势分析等信息,
                    //建议不要分表,存放在Common里面
                    MongoDatabase database = dal.GetMongoDatabaseByAircraftModel(mongoServer, model);
                    if (database != null)
                    {
                        MongoCollection<FlightDataEntities.GlobeData> modelCollection1
                            = dal.GetFlightGlobeDataMongoCollectionByFlight(database, flightId);

                        IMongoQuery q1 = Query.EQ("FlightID", new MongoDB.Bson.BsonString(flightId));
                        IMongoQuery q2 = Query.GTE("Index", new MongoDB.Bson.BsonInt32(startIndex));
                        IMongoQuery q3 = Query.LTE("Index", new MongoDB.Bson.BsonInt32(endIndex));
                        IMongoQuery q4 = Query.EQ("AircraftModelName", new MongoDB.Bson.BsonString(model.ModelName));
                        IMongoQuery query = Query.And(q1, q2, q3, q4);
                        modelCollection1.Remove(query);

                        modelCollection1.InsertBatch(globedatas);
                    }
                }
                catch (Exception e)
                {
                    LogHelper.Error("AddOrReplaceFlightGlobeDataBatch", e);
                    return e.Message;
                }
            }
            return string.Empty;
        }
        internal FlightDataEntities.Decisions.Decision[] GetAllDecisions(AircraftModel aircraftModel)
        {
            FlightDataEntities.Decisions.Decision[] decisions = new FlightDataEntities.Decisions.Decision[]{
                new Decision(){ DecisionID = "001", DecisionName="起飞时仰角大", EventLevel = 2, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@FY#=##FY@°>11°,dT=##dT@s≥1s",
                      //俯仰角=00°>11°,dT=0s≥1s
                      RelatedParameters =new string[]{"FY","NHL","NHR","KG5","KG6","KG7"  },
                     //俯仰角(10/FY),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下25°(32->7/Kg7)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.GreaterThan , ParameterValue =11},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 95},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "002", DecisionName="起飞时未放襟翼", EventLevel = 1, LastTime = 2, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥2s",
                      //dT=0s≥2s
                      RelatedParameters =new string[]{"NHL","NHR","KG5","KG6","KG7","KG8" },
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下25°(32->7/Kg7),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =95},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 95},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "KG7", Operator = CompareOperator.Equal , ParameterValue=0},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "003", DecisionName="起飞时襟翼放到35°", EventLevel = 1, LastTime = 2, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥2s",
                      //dT=0s≥12s
                      RelatedParameters =new string[]{"NHL","NHR","KG5","KG6","KG8" },
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =95},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 95},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "004", DecisionName="失速时未告警", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@Vi#=##Vi@km/h>150km/h,@@aT#=##aT@°>12.5°,dT=##dT@s≥1s",
                      //指示空速=000km/h>150km/h,真攻角=00°>12.5°,dT=0s≥1s
                      RelatedParameters =new string[]{"Vi","aT","KG15" },
                     //指示空速(3/Vi),真攻角(5/aT),失速告警信号(32->15/Kg15)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "aT", Operator = CompareOperator.GreaterThan , ParameterValue = 12.5F},
                         new SubCondition(){ ParameterID = "KG15", Operator = CompareOperator.Equal , ParameterValue = 0},
                     }},
                     new Decision(){ DecisionID = "005", DecisionName="起飞后未收起落架", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      RelatedParameters =new string[]{"Vi","NHL","NHR","KG5","KG6" },
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =90},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 90},
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue=500},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "006", DecisionName="剩余油量1000千克", EventLevel = 1, LastTime = 2, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥2s",
                      //dT=0s≥2s
                      RelatedParameters =new string[]{ "NHL","NHR","KG2"},
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),剩油1000kg(32->2/Kg2)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG12", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "007", DecisionName="主液压系统压降信号", EventLevel = 1, LastTime = 4, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥4s",
                      //dT=0s≥4s
                      RelatedParameters =new string[]{ "NHL","NHR","KG3"},
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),主液压系统压降(32->3/Kg3)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG3", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "008", DecisionName="助力液压系统压降信号", EventLevel = 1, LastTime = 3, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥3s",
                      //dT=0s≥3s
                      RelatedParameters =new string[]{ "NHL","NHR","KG4"},
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),助液压系统压降(32->4/Kg4)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG4", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "009", DecisionName="前舱盖未锁紧", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      RelatedParameters =new string[]{ "Vi","NHL","NHR","KG9"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),前舱盖锁紧(32->9/Kg9)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG9", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "010", DecisionName="后舱盖未锁紧", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      RelatedParameters =new string[]{ "NHL","NHR","KG10"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),后舱盖锁紧(32->10/Kg10)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG10", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "011", DecisionName="左发防冰接通", EventLevel = 2, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      RelatedParameters =new string[]{ "NHL","NHR","T6L","T6R","KG11"},
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R),左防冰接通(32->11/Kg11)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG11", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "012", DecisionName="右发防冰接通", EventLevel = 2, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                       RelatedParameters =new string[]{ "NHL","NHR","T6L","T6R","KG11"},
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),,左发排气温度(28/T6L),右发排气温度(29/T6R)右防冰接通(32->11/Kg11)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG12", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "013", DecisionName="左发电机故障", EventLevel = 1, LastTime = 1, 
                       DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      RelatedParameters =new string[]{"NHL","NHR","T6L","T6R","KG13" },
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R),左主电源脱网(32->13/Kg13)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG13", Operator = CompareOperator.Equal , ParameterValue = 1},
                     }},
                     new Decision(){ DecisionID = "014", DecisionName="右发电机故障", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                     RelatedParameters =new string[]{ "NHL","NHR","T6L","T6R","KG14" },
                     //左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R),右主电源脱网(32->14/Kg14)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue =50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "KG14", Operator = CompareOperator.Equal , ParameterValue = 1},
                     }},
                     new Decision(){ DecisionID = "015", DecisionName="左发转速达到99%", EventLevel = 1, LastTime = 10, 
                     DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%>99%,dT=##dT@s≥10s",
                      //左发转速=00%>99%,dT=00s≥10s
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R" },
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 99},
                     }},
                     new Decision(){ DecisionID = "016", DecisionName="右发转速达到99%", EventLevel = 1, LastTime = 10, 
                     DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%>99%,dT=##dT@s≥10s",
                      //右发转速=00%>99%,dT=00s≥10s
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R" },
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 99},
                     }},
                     new Decision(){ DecisionID = "017", DecisionName="左发转速超转", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%>101%,dT=##dT@s≥1s",
                      //左发转速=00%>101%,dT=0s≥1s
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 101},
                     }},
                     new Decision(){ DecisionID = "018", DecisionName="右发转速超转", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%>101%,dT=##dT@s≥1s",
                      //右发转速=00%>101%,dT=0s≥1s
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 101},
                     }},
                     new Decision(){ DecisionID = "019", DecisionName="左发中间转速超时", EventLevel = 1, LastTime = 1800, 
                      DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%>94.7%,dT=##dT@s≥1800s",
                      //左发转速=00%>94.7%,dT=000s≥1800
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 94.7F},
                     }},
                     new Decision(){ DecisionID = "020", DecisionName="右发中间转速超时", EventLevel = 1, LastTime = 1800, 
                      DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%>94.7%,dT=##dT@s≥1800s",
                      //右发转速=00%>94.7%,dT=000s≥1800s
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 94.7F},
                     }},
                     new Decision(){ DecisionID = "021", DecisionName="左发最大军用转速超时", EventLevel = 1, LastTime = 720, 
                      DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%>96%,dT=##dT@s≥720s",
                      //左发转速=00%>96%,dT=000s≥720s
                      RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 96},
                     }},
                     new Decision(){ DecisionID = "022", DecisionName="右发最大军用转速超时", EventLevel = 1, LastTime = 720, 
                      DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%>96%,dT=##dT@s≥720s",
                      //右发转速=00%>96%,dT=000s≥720s
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","T6L","T6R"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左发排气温度(28/T6L),右发排气温度(29/T6R)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 96},
                     }},
                     new Decision(){ DecisionID = "023", DecisionName="空中左发停车", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%<50%,@@NHR#=##NHR@%>53%,dT=##dT@s≥1s",
                      //左发转速=00%<50%,右发转速=00%>53%,dT=0s≥1s
                      RelatedParameters =new string[]{ "Vi","NHL","NHR","KG5","KG6","KG13"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),左主电源脱网(32->13/Kg13)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 53},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG14", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "024", DecisionName="空中右发停车", EventLevel = 1, LastTime = 1, 
                       DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%<50%,@@NHL#=##NHL@%>53%,dT=##dT@s≥1s",
                      //右发转速=00%<50%,左发转速=00%>53%,dT=0s≥1s
                         RelatedParameters =new string[]{  "Vi","NHL","NHR","KG5","KG6","KG14"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),右主电源脱网(32->14/Kg14)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 53},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG14", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "025", DecisionName="空速超限", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@Vi#=##Vi@km/h>1250km/h,dT=##dT@s≥1s",
                      //指示空速=0000km/h>1250km/h,dT=0s≥1s
                     RelatedParameters =new string[]{ "Vi","NHL","NHR","KG5","KG6"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue = 1250},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "026", DecisionName="高度超限", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@Hp#=##Hp@km/h>15200km/h,dT=##dT@s≥1s",
                      //气压高度=00000km/h>15200km/h,dT=0s≥1s
                     RelatedParameters =new string[]{  "Vi","NHL","NHR","KG5","KG6"},
                     //气压高度(2/Hp),指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Hp", Operator = CompareOperator.GreaterThan , ParameterValue =15200},
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue = 100},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "027", DecisionName="升降速度超限", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@Vy#绝对值=##Vy@m/s>150 m/s,dT=##dT@s≥1s",
                      //升降速度绝对值=000m/s>150 m/s,dT=0s≥1s
                     RelatedParameters =new string[]{  "Vi","Vy","NHL","NHR"},
                     //指示空速(3/Vi),升降速度(6/Vy),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition()
                         { 
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Vy",  Operator = CompareOperator.SmallerThan , ParameterValue = -150},
                                 new SubCondition(){ ParameterID = "Vy",  Operator = CompareOperator.GreaterThan , ParameterValue = 150},
                             }
                         },
                     }},
                     new Decision(){ DecisionID = "028", DecisionName="马赫数超限", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@M#=##M@>1.7,dT=##dT@s≥1s",
                      //马赫数=0>1.7,dT=0s≥1s
                     RelatedParameters =new string[]{ "Vi","M","NHL","NHR","KG5","KG6"},
                     //指示空速(3/Vi),马赫数(4/M),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.GreaterThan , ParameterValue = 1.7F},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "029", DecisionName="着陆仰角过大", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@FY#=##FY@°>11°,dT=##dT@s≥1s",
                      //俯仰角=00°>11°,dT=0s≥1s
                     RelatedParameters =new string[]{ "FY","NHL","NHR","KG5","KG6","KG8"},
                     //俯仰角(10/FY),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.GreaterThan , ParameterValue =11},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 70},
                          new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 70},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                        new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "030", DecisionName="着陆时襟翼未放", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "dT=##dT@s≥10s",
                      //dT=0s≥1s
                     RelatedParameters =new string[]{  "Vi","NHL","NHR","KG5","KG6","KG8"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =310},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                          new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                        new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "031", DecisionName="着陆时垂直过载过大", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@Hp#=##Hp@m<100m,@@Ny#=##Ny@g绝对值>2g,dT=##dT@s≥10s",
                      //气压高度=00m<100m,法向过载=0g绝对值>2g,dT=0s≥1s
                     RelatedParameters =new string[]{ "Hp","Ny","NHL","NHR","KG5","KG6","KG8"},
                     //气压高度(2/Hp),法向过载(22/Ny),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Hp", Operator = CompareOperator.SmallerThan , ParameterValue = 100},
                         new SubCondition()
                         { 
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Ny",  Operator = CompareOperator.SmallerThan , ParameterValue = -2},
                                 new SubCondition(){ ParameterID = "Ny",  Operator = CompareOperator.GreaterThan , ParameterValue = 2},
                             }
                         },
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue= 1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue= 1},
                     }},
                     new Decision(){ DecisionID = "032", DecisionName="着陆时未放起落架", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@Nx#=##Nx@g<0,dT=##dT@s≥10s",
                      //纵向过载=0g<0,dT=0s≥1s
                     RelatedParameters =new string[]{  "Nx","NHL","NHR","KG5","KG6","KG8"},
                     //纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.SmallerThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue= 0},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue= 1},
                     }},
                     new Decision(){ DecisionID = "033", DecisionName="M=1附近时间过长", EventLevel = 2, LastTime = 10, 
                     DecisionDescriptionStringTemplate = "0.95<(@@M#=##M@)<1.02,dT=##dT@s≥10s",
                      //0.95<(马赫数=0)<1.02,dT=0s≥10s
                      RelatedParameters =new string[]{  "M","NHL","NHR","KG5","KG6"},
                     //马赫数(4/M),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.GreaterThan , ParameterValue =0.95F},
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.SmallerThan , ParameterValue = 1.02F},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "034", DecisionName="零载荷超过2秒", EventLevel = 2, LastTime = 2, 
                     DecisionDescriptionStringTemplate = "@@Ny#=##Ny@g<0.2g,dT=##dT@s≥2s",
                      //法向过载=0g<0.2g,dT=0s≥2s
                      RelatedParameters =new string[]{ "Vi","Ny","NHL","NHR"},
                     //指示空速(3/Vi),法向过载(22/Ny),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "Ny", Operator = CompareOperator.SmallerThan , ParameterValue = 0.2F},
                     }},
                     new Decision(){ DecisionID = "035", DecisionName="法向过载超限", EventLevel = 2, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@Ny#=##Ny@g<-1g或>7g,dT=##dT@s≥1s",
                      //法向过载=0g<-1g或>7g,dT=0s≥1s
                      RelatedParameters =new string[]{ "Vi","Ny","NHL","NHR"},
                     //指示空速(3/Vi),法向过载(22/Ny),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                          new SubCondition()
                         { 
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Ny",  Operator = CompareOperator.SmallerThan , ParameterValue = -1},
                                 new SubCondition(){ ParameterID = "Ny",  Operator = CompareOperator.GreaterThan , ParameterValue = 7},
                             }
                         },
                     }},
                     new Decision(){ DecisionID = "036", DecisionName="纵向过载超限", EventLevel = 2, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@Nx#=##Nx@g>0.7g,dT=##dT@s≥1s",
                      //纵向过载=0g>0.7g,dT=0s≥1s
                      RelatedParameters =new string[]{ "Vi","Nx","NHL","NHR"},
                     //指示空速(3/Vi),纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.GreaterThan , ParameterValue = 0.7F},
                     }},
                     new Decision(){ DecisionID = "037", DecisionName="侧向过载超限", EventLevel = 2, LastTime = 1, 
                       DecisionDescriptionStringTemplate = "@@Nz#=##Nz@g>0.5g,dT=##dT@s≥1s",
                      //侧向过载=0g>0.5g,dT=0s≥1s
                      RelatedParameters =new string[]{  "Vi","Nz","NHL","NHR"},
                     //指示空速(3/Vi),侧向过载(24/Nz),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "Nz", Operator = CompareOperator.GreaterThan , ParameterValue = 0.5F},
                     }},
                     new Decision(){ DecisionID = "038", DecisionName="倾斜角超限", EventLevel = 1, LastTime = 1, 
                       DecisionDescriptionStringTemplate = "@@HG#=##HG@°>65°,dT=##dT@s≥1s",
                      //倾斜角=00°>65°,dT=0s≥1s
                      RelatedParameters =new string[]{  "Vi","HG","NHL","NHR"},
                     //指示空速(3/Vi),倾斜角(9/HG),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "HG", Operator = CompareOperator.GreaterThan , ParameterValue = 65},
                     }},
                     new Decision(){ DecisionID = "039", DecisionName="俯仰角超限", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@FY#=##FY@°>25°,dT=##dT@s≥1s",
                      //俯仰角=00°>25°,dT=0s≥1s
                     RelatedParameters =new string[]{  "Vi","FY","NHL","NHR"},
                     //指示空速(3/Vi),俯仰角(10/FY),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.GreaterThan , ParameterValue = 25},
                     }},
                     new Decision(){ DecisionID = "040", DecisionName="总温传感器故障", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@Tt#=##Tt@℃ 绝对值>80℃,dT=##dT@s≥1s",
                      //大气总温=00℃绝对值>80℃,dT=0s≥1s
                     RelatedParameters =new string[]{  "Vi","Tt","NHL","NHR"},
                     //指示空速(3/Vi),大气总温(7/Tt),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         { 
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Tt",  Operator = CompareOperator.GreaterThan , ParameterValue = 80},
                                 new SubCondition(){ ParameterID = "Tt",  Operator = CompareOperator.SmallerThan , ParameterValue = -80},
                             }
                         },
                     }},
                     new Decision(){ DecisionID = "041", DecisionName="攻角传感器故障", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@aT#=##aT@>15°,dT=##dT@≥1s",
                      //真攻角=00°>15°,dT=0s≥1s
                     RelatedParameters =new string[]{  "Vi","aT","NHL","NHR"},
                     //指示空速(3/Vi),真攻角(5/aT),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "aT", Operator = CompareOperator.GreaterThan , ParameterValue = 15},
                     }},
                     new Decision(){ DecisionID = "042", DecisionName="着陆时坡度大于40°", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@HG#=##HG@>40°,dT=##dT@≥1s",
                      //倾斜角=00°>40°,dT=0s≥1s
                     RelatedParameters =new string[]{  "Vi","HG","NHL","NHR","KG5","KG6","KG8"},
                     //指示空速(3/Vi),倾斜角(9/HG),左发高压转速(30/NHL),右发高压转速(31/NHR),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition(){ ParameterID = "HG", Operator = CompareOperator.GreaterThan , ParameterValue =40},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 80},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 1},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "043", DecisionName="副翼偏角超限", EventLevel = 1, LastTime = 2, 
                    DecisionDescriptionStringTemplate = "@@Dx#=##Dx@° 绝对值>21°,dT=##dT@≥2s",
                      //副翼角位移=00°绝对值>21°,dT=0s≥2s
                      RelatedParameters =new string[]{  "Vi","Dx","NHL","NHR"},
                     //指示空速(3/Vi),副翼角位移(25/Dx),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         { 
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Dx", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -21},
                                 new SubCondition(){ ParameterID = "Dx", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = 21},
                             }
                         },
                     }},
                     new Decision(){ DecisionID = "044", DecisionName="副翼传感器故障", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "副翼角位移变化率=##Dx@° 绝对值<0.3°,dT=##dT@s≥1s",
                      //副翼角位移变化率=0°绝对值<0.3°,dT=0s≥1s
                      RelatedParameters =new string[]{ "Vi","Dx","KZB","NHL","NHR"},
                     //指示空速(3/Vi),副翼角位移(25/Dx),纵向状态标志(18/KZB),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         { 
                             ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Dx", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 0.3F},
                                 new SubCondition(){ ParameterID = "Dx", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -0.3F},
                             }
                         },
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[] 
                             {
                                 new SubCondition(){ 
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -8600},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -10100},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -4100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -8400},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 10100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -3900},
                                     }
                                 },
                             }
                         }
                     }},
                     new Decision(){ DecisionID = "045", DecisionName="平尾传感器故障", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "平尾角位移变化率=##Dz@° 绝对值<0.3°,dT=##dT@s≥1s",
                      //平尾角位移变化率=0°绝对值<0.3°,dT=0s≥1s
                      RelatedParameters =new string[]{ "Vi","Dz","KZB","NHL","NHR"},
                     //指示空速(3/Vi),平尾角位移(27/Dz),纵向状态标志(18/KZB),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         { 
                             ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Dz", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 0.3F},
                                 new SubCondition(){ ParameterID = "Dz", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -0.3F},
                             }
                         },
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[] 
                             {
                                 new SubCondition(){ 
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -8600},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -10100},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -4100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -8400},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 10100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -3900},
                                     }
                                 },
                             }
                         }
                     }},
                     new Decision(){ DecisionID = "046", DecisionName="方向舵传感器故障", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "方向舵角位移变化率=##Dy@°绝对值<0.3°,dT=##dT@s≥1s",
                      //方向舵角位移变化率=0°绝对值<0.3°,dT=0s≥1s
                      RelatedParameters =new string[]{ "Vi","Dy","KZB","NHL","NHR"},
                     //指示空速(3/Vi),方向舵角位移(26/Dy),纵向状态标志(18/KZB),左发高压转速(30/NHL),右发高压转速(31/NHR)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =150},
                         new SubCondition()
                         { 
                             ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                             {
                                 new SubCondition(){ ParameterID = "Dy", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 0.3F},
                                 new SubCondition(){ ParameterID = "Dy", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -0.3F},
                             }
                         },
                         new SubCondition()
                         {
                             ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[] 
                             {
                                 new SubCondition(){ 
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -8600},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -10100},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = -4100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -8400},
                                     }
                                 },
                                 new SubCondition(){
                                     ParameterID = string.Empty, Relation = ConditionRelation.AND, SubConditions = new SubCondition[]
                                     {
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.SmallerThan , ParameterValue = 10100},
                                         new SubCondition(){ ParameterID = "KZB", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue = -3900},
                                     }
                                 },
                             }
                         }
                     }},
                     new Decision(){ DecisionID = "047", DecisionName="飞控出现自动拉起信号", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "dT=##dT@s≥1s",
                      //dT=0s≥1s
                      RelatedParameters =new string[]{  "KZB","KG5","KG6"},
                     //纵向状态标志(18/KZB),左起落架放下(32->5/Kg5),右起落架放下(32->6/Kg6)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "KZB", Operator = CompareOperator.GreaterThan , ParameterValue = 3400},
                         new SubCondition(){ ParameterID = "KZB", Operator = CompareOperator.SmallerThan , ParameterValue = 3600},
                         new SubCondition(){ ParameterID = "KG5", Operator = CompareOperator.Equal , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG6", Operator = CompareOperator.Equal , ParameterValue=0}, 
                     }},
                     new Decision(){ DecisionID = "048", DecisionName="起飞时左发转速低", EventLevel = 2, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@NHL#=##NHL@%<95%,dT=##dT@s≥1s",
                      //左发转速=00%<95%,dT=00s≥1s
                      RelatedParameters =new string[]{  "M","Nx","NHL","NHR","KG7"},
                     //马赫数(4/M),纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(31/NHR),襟翼放下25°(31->7/Kg7)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.GreaterThan , ParameterValue = 0.19F},
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.SmallerThan , ParameterValue = 0.22F},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.GreaterThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG7", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 70},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 95},
                     }},
                     new Decision(){ DecisionID = "049", DecisionName="起飞时右发转速低", EventLevel = 2, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@NHR#=##NHR@%<95%,dT=##dT@s≥1s",
                      //右发转速=00%<95%,dT=00s≥1s
                     RelatedParameters =new string[]{ "M","Nx","NHL","NHR","KG7"},
                     //马赫数(4/M),纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(30/NHR),襟翼放下25°(32->7/Kg7)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.GreaterThan , ParameterValue = 0.19F},
                         new SubCondition(){ ParameterID = "M", Operator = CompareOperator.SmallerThan , ParameterValue = 0.22F},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.GreaterThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG7", Operator = CompareOperator.Equal , ParameterValue=1},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 70},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 95},
                     }},
                     new Decision(){ DecisionID = "050", DecisionName="左发起动时超温", EventLevel = 1, LastTime = 1, 
                          DecisionDescriptionStringTemplate = "@@T6L#=##T6L@℃>630℃,dT=##dT@s≥1s",
                     RelatedParameters =new string[]{ "T6L","T6R","KG13"},
                     //左发排气温度(28/T6L),右发排气温度(29/T6R),左主电源脱网(37->13/Kg13)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "T6L", Operator = CompareOperator.GreaterThan , ParameterValue =630},
                         new SubCondition(){ ParameterID = "KG13", Operator = CompareOperator.Equal , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "051", DecisionName="右发起动时超温", EventLevel = 1, LastTime = 1, 
                          DecisionDescriptionStringTemplate = "@@T6R#=##T6R@℃>630℃,dT=##dT@s≥1s",
                     RelatedParameters =new string[]{ "T6L","T6R","KG14"},
                     //左发排气温度(28/T6L),右发排气温度(29/T6R),右主电源脱网(37->14/Kg14)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "T6R", Operator = CompareOperator.GreaterThan , ParameterValue =630},
                         new SubCondition(){ ParameterID = "KG14", Operator = CompareOperator.Equal , ParameterValue = 1},
                     }},
                     new Decision(){ DecisionID = "052", DecisionName="左发起动后超温", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@T6L#=##T6L@℃>700℃,dT=##dT@s≥1s",
                      //左发排气温度=000℃>700℃,dT=00s≥1s
                      RelatedParameters =new string[]{ "T6L","T6R","KG13"},
                     //左发排气温度(28/T6L),右发排气温度(29/T6R),左主电源脱网(37->13/Kg13)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "T6L", Operator = CompareOperator.GreaterThan , ParameterValue =700},
                         new SubCondition(){ ParameterID = "KG13", Operator = CompareOperator.Equal , ParameterValue = 0},
                     }},
                     new Decision(){ DecisionID = "053", DecisionName="右发起动后超温", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@T6R#=##T6R@℃>700℃,dT=##dT@s≥1s",
                      //右发排气温度=000℃>700℃,dT=00s≥1s
                      RelatedParameters =new string[]{ "T6L","T6R","KG14"},
                     //左发排气温度(28/T6L),右发排气温度(29/T6R),右主电源脱网(37->14/Kg14)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "T6R", Operator = CompareOperator.GreaterThan , ParameterValue =700},
                         new SubCondition(){ ParameterID = "KG14", Operator = CompareOperator.Equal , ParameterValue=0},
                     }},
                     new Decision(){ DecisionID = "054", DecisionName="放伞时指示空速大", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@Vi#=##Vi@km/h>305km/h,dT=##dT@≥1s",
                      //指示空速=0000km/h>305km/h,dT=0s≥1s
                      RelatedParameters =new string[]{  "Vi","Nx","NHL","NHR","KG8"},
                     //指示空速(3/Vi),纵向过载(23/Nx),左发高压转速(30/NHL),右发高压转速(31/NHR),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue = 305},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.SmallerThan , ParameterValue = -0.25F},
                         new SubCondition(){ ParameterID = "KG8", Operator = CompareOperator.Equal , ParameterValue = 1},
                     }},
                     new Decision(){ DecisionID = "055", DecisionName="襟翼35°时指示空速小", EventLevel = 2, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "100km/h<(@@Vi#=##Vi@km/h)<280km/h,dT=##dT@≥1s",
                      //100km/h<(指示空速=000km/h)<280km/h,dT=0s≥1s
                      RelatedParameters =new string[]{  "Vi","NHL","NHR","KG8"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),襟翼放下35°(32->8/Kg8)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.GreaterThan , ParameterValue =100},
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.SmallerThan , ParameterValue = 280},
                         new SubCondition(){ ParameterID = "Nx", Operator = CompareOperator.GreaterThan , ParameterValue = 0},
                         new SubCondition(){ ParameterID = "KG8", ConditionType = SubConditionType.DeltaRate, Operator = CompareOperator.GreaterThan , ParameterValue=1},
                     }},
                     new Decision(){ DecisionID = "056", DecisionName="飞机滑行时俯仰角大", EventLevel = 1, LastTime = 1, 
                     DecisionDescriptionStringTemplate = "@@FY#=##FY@° 绝对值>6°,dT=##dT@s≥1s",
                      //俯仰角=0°绝对值>6°,dT=0s≥1s
                      RelatedParameters =new string[]{ "Vi","NHL","NHR","FY"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),俯仰角(10/FY)
                     Conditions = new SubCondition[]{ new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.SmallerThan , ParameterValue =200},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 90},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 90},
                         new SubCondition()
                            { ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                                {
                                     new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.GreaterThan , ParameterValue = 6},
                                     new SubCondition(){ ParameterID = "FY", Operator = CompareOperator.SmallerThan , ParameterValue = -6}
                                }
                            }
                     }},
                     new Decision(){ DecisionID = "057", DecisionName="飞机滑行时倾斜角大", EventLevel = 1, LastTime = 1, 
                      DecisionDescriptionStringTemplate = "@@HG#=##HG@° 绝对值>6°,dT=##dT@s≥1s",
                      //倾斜角=0°绝对值>6°,dT=0s≥1s
                         RelatedParameters =new string[]{  "Vi","NHL","NHR","HG"},
                     //指示空速(3/Vi),左发高压转速(30/NHL),右发高压转速(31/NHR),倾斜角(9/HG)
                     Conditions = new SubCondition[]{
                         new SubCondition(){ ParameterID = "Vi", Operator = CompareOperator.SmallerThan , ParameterValue =200},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHL", Operator = CompareOperator.SmallerThan , ParameterValue = 90},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.GreaterThan , ParameterValue = 50},
                         new SubCondition(){ ParameterID = "NHR", Operator = CompareOperator.SmallerThan , ParameterValue = 90},
                         new SubCondition()
                            { ParameterID = string.Empty, Relation = ConditionRelation.OR, SubConditions = new SubCondition[]
                                {
                                     new SubCondition(){ ParameterID = "HG", Operator = CompareOperator.GreaterThan , ParameterValue = 6},
                                     new SubCondition(){ ParameterID = "HG", Operator = CompareOperator.SmallerThan , ParameterValue = -6}
                                }
                            }
                     }},
            };

            return decisions;
        }