Esempio n. 1
0
        public Mode Clone(GetN getN, ModesManager newOwner, string name = "")
        {
            Mode clone = (Mode)MemberwiseClone();

            clone.getN          = getN;
            clone.owner         = newOwner;
            clone.baseOperation = baseOperation.Clone(clone);

            if (name != "")
            {
                clone.name = name;
            }

            clone.stepsMngr = new List <State>();
            for (int idx = 0; idx < stepsMngr.Count; idx++)
            {
                clone.stepsMngr.Add(stepsMngr[idx].Clone());
            }

            clone.operPar = operPar.Clone(clone);

            clone.restrictionMngr = restrictionMngr.Clone();
            clone.SetItems();

            return(clone);
        }
        /// <summary>
        /// Создание технологического объекта.
        /// </summary>
        /// <param name="name">Имя.</param>
        /// <param name="getN">Функция получения порядкового локального номера.
        /// </param>
        /// <param name="technologicalNumber">Технологический номер.</param>
        /// <param name="nameEplan">ОУ объекта в Eplan'е.</param>
        /// <param name="cooperParamNumber">Время совместного перехода шагов
        /// (параметр).</param>
        /// <param name="attachedObjects">Привязанные объекты</param>
        /// <param name="baseTechObject">Базовый технологический объект</param>
        /// <param name="NameBC">Имя объекта Monitor</param>
        /// <param name="techType">Номер типа</param>
        public TechObject(string name, GetN getLocalNum,
                          int technologicalNumber, int techType, string nameEplan,
                          int cooperParamNumber, string NameBC, string attachedObjects,
                          BaseTechObject baseTechObject)
        {
            this.name        = name;
            this.getLocalNum = getLocalNum;

            this.techNumber = new TechObjectN(this, technologicalNumber);
            this.techType   = new ObjectProperty("Тип", techType);
            this.nameBC     = new ObjectProperty("Имя объекта Monitor",
                                                 NameBC);
            this.nameEplan         = new NameInEplan(nameEplan, this);
            this.cooperParamNumber = new ObjectProperty(
                "Время совместного перехода шагов (параметр)",
                cooperParamNumber);

            this.attachedObjects = new AttachedToObjects(attachedObjects,
                                                         this);

            modes = new ModesManager(this);

            paramsManager        = new ParamsManager();
            paramsManager.Parent = this;

            equipment = new Equipment(this);

            InitBaseTechObject(baseTechObject);
            SetItems();
        }
        public TechObject Clone(GetN getLocalNum, int newNumber,
                                int oldGlobalNum, int newGlobalNum)
        {
            TechObject clone = (TechObject)MemberwiseClone();

            clone.techNumber      = new TechObjectN(clone, newNumber);
            clone.techType        = new ObjectProperty("Тип", TechType);
            clone.nameBC          = new ObjectProperty("Имя объекта Monitor", NameBC);
            clone.nameEplan       = new NameInEplan(NameEplan, clone);
            clone.attachedObjects = new AttachedToObjects(AttachedObjects.Value,
                                                          clone);

            clone.getLocalNum = getLocalNum;

            if (baseTechObject != null)
            {
                clone.baseTechObject = baseTechObject.Clone(clone);
            }

            clone.paramsManager = paramsManager.Clone();

            clone.modes = modes.Clone(clone);
            clone.modes.ModifyDevNames(TechNumber);
            clone.modes.ModifyRestrictObj(oldGlobalNum, newGlobalNum);

            clone.equipment = equipment.Clone(clone);
            clone.equipment.ModifyDevNames();

            clone.SetItems();
            return(clone);
        }
Esempio n. 4
0
        public Step Clone(GetN getN, string name = "")
        {
            Step clone = (Step)MemberwiseClone();

            clone.getN = getN;

            if (name != "")
            {
                clone.name = name.Substring(3);
            }

            clone.actions = new List <Action>();
            foreach (Action action in actions)
            {
                clone.actions.Add(action.Clone());
            }

            clone.items = new List <Editor.ITreeViewItem>();
            clone.items.AddRange(clone.actions.ToArray());

            if (!IsMode)
            {
                clone.timeParam = timeParam.Clone();
                clone.nextStepN = nextStepN.Clone();

                clone.items.Add(clone.timeParam);
                clone.items.Add(clone.nextStepN);
            }

            clone.baseStep       = baseStep.Clone();
            clone.baseStep.Owner = this;

            return(clone);
        }
Esempio n. 5
0
        public Param(GetN getN, string name, bool isRuntime = false,
                     double value        = 0, string meter = "шт", string nameLua = "",
                     bool isUseOperation = false)
        {
            this.isRuntime = isRuntime;
            this.name      = name;
            this.getN      = getN;
            if (!isRuntime)
            {
                this.value = new ParamProperty("Значение", value);
            }
            if (isUseOperation)
            {
                this.oper        = new ParamOperationsProperty("Операция", -1, -1);
                this.oper.Parent = this;
            }
            this.meter   = new ParamProperty("Размерность", meter, string.Empty);
            this.nameLua = new ParamProperty("Lua имя", nameLua, string.Empty);

            items = new List <ITreeViewItem>();
            if (!isRuntime)
            {
                items.Add(this.value);
            }
            items.Add(this.meter);
            if (isUseOperation)
            {
                items.Add(oper);
            }
            items.Add(this.nameLua);
        }
Esempio n. 6
0
        public TechObject Clone(GetN getN, int newNumber, int oldObjN,
                                int newObjN)
        {
            TechObject clone = (TechObject)MemberwiseClone();

            clone.techNumber = new TechObjectN(clone, newNumber);
            clone.techType   = new Editor.ObjectProperty("Тип", TechType);
            clone.nameBC     = new Editor.ObjectProperty("Имя объекта Monitor",
                                                         NameBC);
            clone.nameEplan       = new NameInEplan(NameEplan, clone);
            clone.s88Level        = new ObjS88Level(S88Level, clone);
            clone.attachedObjects = new AttachedToObjects(AttachedObjects.Value,
                                                          clone);

            clone.getN = getN;

            clone.baseTechObject = baseTechObject.Clone(clone);

            clone.parameters = parameters.Clone();

            clone.modes.ChngeOwner(clone);
            clone.modes = modes.Clone(clone);
            clone.modes.ModifyDevNames(TechNumber);
            clone.modes.ModifyRestrictObj(oldObjN, newObjN);

            clone.equipment = equipment.Clone(clone);
            clone.equipment.ModifyDevNames();

            clone.SetItems();
            return(clone);
        }
Esempio n. 7
0
        /// <summary>
        /// Создание технологического объекта.
        /// </summary>
        /// <param name="name">Имя.</param>
        /// <param name="getN">Функция получения порядкового номера.</param>
        /// <param name="technologicalNumber">Технологический номер.</param>
        /// <param name="nameEplan">ОУ объекта в Eplan'е.</param>
        /// <param name="cooperParamNumber">Время совместного перехода шагов (параметр).</param>
        public TechObject(string name, GetN getN, int technologicalNumber,
                          int techType, string nameEplan, int cooperParamNumber,
                          string NameBC, string attachedObjects)
        {
            this.name = name;
            this.getN = getN;

            this.techNumber = new TechObjectN(this, technologicalNumber);
            this.techType   = new Editor.ObjectProperty("Тип", techType);
            this.nameBC     = new Editor.ObjectProperty("Имя объекта Monitor",
                                                        NameBC);
            this.nameEplan         = new NameInEplan(nameEplan, this);
            this.cooperParamNumber = new Editor.ObjectProperty(
                "Время совместного перехода шагов (параметр)",
                cooperParamNumber);

            this.s88Level        = new ObjS88Level(0, this);
            this.attachedObjects = new AttachedToObjects(attachedObjects,
                                                         this);

            // Экземпляр класса базового агрегата
            baseTechObject = new BaseTechObject(this);

            modes             = new ModesManager(this);
            parameters        = new Params();
            parameters.Parent = this;

            equipment = new Equipment(this);

            SetItems();
        }
Esempio n. 8
0
        /// <summary>
        /// Создание новой операции.
        /// </summary>
        /// <param name="name">Имя операции.</param>
        /// <param name="getN">Функция получения номера операции.</param>
        /// <param name="newOwner">Владелец операции (Менеджер операций)
        /// </param>
        public Mode(string name, GetN getN, ModesManager newOwner)
        {
            this.name  = name;
            this.getN  = getN;
            this.owner = newOwner;

            restrictionMngr = new RestrictionManager();

            stepsMngr = new List <State>();

            var lastState   = State.StateType.STATES_CNT;
            var secondState = State.StateType.PAUSE;

            stepsMngr.Add(new State(State.StateType.RUN, this, true));
            for (var state = secondState; state < lastState; state++)
            {
                stepsMngr.Add(new State(state, this));
            }

            operPar = new OperationParams();

            // Экземпляр класса базовой операции
            baseOperation = new BaseOperation(this);

            SetItems();
        }
Esempio n. 9
0
        public Param(GetN getN, string name, double value = 0,
                     string meter = "шт", string nameLua = "")
        {
            this.name        = name;
            this.getN        = getN;
            this.value       = new Editor.ObjectProperty("Значение", value);
            this.oper        = new ParamProperty("Операция", -1);
            this.oper.Parent = this;

            this.meter   = new Editor.ObjectProperty("Размерность", meter);
            this.nameLua = new Editor.ObjectProperty("Lua имя", nameLua);

            items = new List <Editor.ITreeViewItem>();
            items.Add(this.value);
            items.Add(this.meter);
            items.Add(oper);
            items.Add(this.nameLua);
        }
Esempio n. 10
0
        /// <summary>
        /// Создание технологического объекта.
        /// </summary>
        /// <param name="name">Имя.</param>
        /// <param name="getN">Функция получения порядкового локального номера.
        /// </param>
        /// <param name="technologicalNumber">Технологический номер.</param>
        /// <param name="nameEplan">ОУ объекта в Eplan'е.</param>
        /// <param name="cooperParamNumber">Время совместного перехода шагов
        /// (параметр).</param>
        /// <param name="attachedObjects">Привязанные объекты</param>
        /// <param name="baseTechObject">Базовый технологический объект</param>
        /// <param name="NameBC">Имя объекта Monitor</param>
        /// <param name="techType">Номер типа</param>
        public TechObject(string name, GetN getLocalNum,
                          int technologicalNumber, int techType, string nameEplan,
                          int cooperParamNumber, string NameBC, string attachedObjects,
                          BaseTechObject baseTechObject)
        {
            this.name        = name;
            this.getLocalNum = getLocalNum;

            this.techNumber = new TechObjectN(this, technologicalNumber);
            this.techType   = new ObjectProperty("Тип", techType);
            this.nameBC     = new ObjectProperty("Имя объекта Monitor",
                                                 NameBC);
            this.nameEplan         = new NameInEplan(nameEplan, this);
            this.cooperParamNumber = new ObjectProperty(
                "Время совместного перехода шагов (параметр)",
                cooperParamNumber, -1);

            var allowedObjects = new List <BaseTechObjectManager.ObjectType>()
            {
                BaseTechObjectManager.ObjectType.Aggregate
            };
            string attachObjectsName    = "Привязанные агрегаты";
            string attachObjectsLuaName = "attached_objects";

            this.attachedObjects = new AttachedObjects(attachedObjects,
                                                       this, new AttachedObjectStrategy.AttachedWithInitStrategy(
                                                           attachObjectsName, attachObjectsLuaName, allowedObjects));

            modes = new ModesManager(this);

            paramsManager        = new ParamsManager();
            paramsManager.Parent = this;

            string sysParName   = "Системные параметры";
            string sysParLuName = "system_parameters";

            systemParams        = new SystemParams(sysParName, sysParLuName);
            systemParams.Parent = this;

            equipment = new Equipment(this);

            InitBaseTechObject(baseTechObject);
            SetItems();
        }
Esempio n. 11
0
        public SystemParam(GetN getN, string name, double value = 0,
                           string meter = "шт", string nameLua = "")
        {
            this.name = name;
            this.getN = getN;

            bool editable = false;

            this.value = new ParamProperty("Значение", value);
            this.meter = new ParamProperty("Размерность", meter,
                                           string.Empty, editable);
            this.nameLua = new ParamProperty("Lua имя",
                                             nameLua, string.Empty, editable);

            items = new List <ITreeViewItem>();
            items.Add(this.value);
            items.Add(this.meter);
            items.Add(this.nameLua);
        }
Esempio n. 12
0
        /// <summary>
        /// Создание новой операции.
        /// </summary>
        /// <param name="name">Имя операции.</param>
        /// <param name="getN">Функция получения номера операции.</param>
        /// <param name="newOwner">Владелец операции (Менеджер операций)
        /// </param>
        public Mode(string name, GetN getN, ModesManager newOwner)
        {
            this.name  = name;
            this.getN  = getN;
            this.owner = newOwner;

            restrictionMngr = new RestrictionManager();

            stepsMngr = new List <State>();

            stepsMngr.Add(new State(StateStr[(int)StateName.RUN], true, this,
                                    true));
            for (StateName i = StateName.PAUSE; i < StateName.STATES_CNT; i++)
            {
                stepsMngr.Add(new State(StateStr[(int)i], true, this));
            }

            operPar = new OperationParams();

            // Экземпляр класса базовой операции
            baseOperation = new BaseOperation(this);

            SetItems();
        }
Esempio n. 13
0
 /// <summary>
 /// Установить делегат для поиска локального номера объекта;
 /// </summary>
 /// <param name="getLocalNumMethod">Метод</param>
 public void SetGetLocalN(GetN getLocalNumMethod)
 {
     getLocalNum = getLocalNumMethod;
 }
Esempio n. 14
0
        /// <summary>
        /// Создание нового шага.
        /// </summary>
        /// <param name="name">Имя шага.</param>
        /// <param name="getN">Функция получения номера шага.</param>
        /// <param name="isMode">Признак того, является ли шаг шагом операции.
        /// </param>
        /// <param name="owner">Владелец шага (Состояние)</param>
        public Step(string name, GetN getN, State owner, bool isMode = false)
        {
            this.name           = name;
            this.getN           = getN;
            this.IsMode         = isMode;
            this.owner          = owner;
            this.baseStep       = new ActiveParameter("", "");
            this.baseStep.Owner = this;

            items = new List <Editor.ITreeViewItem>();

            actions = new List <Action>();
            actions.Add(new Action("Включать", this,
                                   "opened_devices",
                                   new Device.DeviceType[3] {
                Device.DeviceType.V,
                Device.DeviceType.DO,
                Device.DeviceType.M
            }));

            actions.Add(new Action("Включать реверс", this,
                                   "opened_reverse_devices",
                                   new Device.DeviceType[1] {
                Device.DeviceType.M
            }));

            actions.Add(new Action("Выключать", this,
                                   "closed_devices",
                                   new Device.DeviceType[3] {
                Device.DeviceType.V,
                Device.DeviceType.DO,
                Device.DeviceType.M
            }));

            actions[2].DrawStyle = Editor.DrawInfo.Style.RED_BOX;
            actions.Add(new Action_WashSeats("Верхние седла", this,
                                             "opened_upper_seat_v"));

            actions[3].DrawStyle = Editor.DrawInfo.Style.GREEN_UPPER_BOX;
            actions.Add(new Action_WashSeats("Нижние седла", this,
                                             "opened_lower_seat_v"));

            actions[4].DrawStyle = Editor.DrawInfo.Style.GREEN_LOWER_BOX;
            actions.Add(new Action("Сигналы для включения", this,
                                   "required_FB",
                                   new Device.DeviceType[2] {
                Device.DeviceType.DI,
                Device.DeviceType.GS
            }));

            actions.Add(new Action_Wash("Мойка( DI, DO, устройства)", this,
                                        "wash_data"));

            actions.Add(new Action_DI_DO("Группы DI -> DO DO ...", this,
                                         "DI_DO"));

            actions.Add(new Action_AI_AO("Группы AI -> AO AO ...", this,
                                         "AI_AO"));

            items.AddRange(actions.ToArray());

            if (!isMode)
            {
                timeParam = new Editor.ObjectProperty("Время (параметр)", -1);
                nextStepN = new Editor.ObjectProperty(
                    "Номер следующего шага", -1);

                items.Add(timeParam);
                items.Add(nextStepN);
            }
        }
Esempio n. 15
0
 public void SetUpTheTest()
 {
     GetNReturn1 += delegate(object obj) { return(1); };
 }
Esempio n. 16
0
        /// <summary>
        /// Создание нового шага.
        /// </summary>
        /// <param name="name">Имя шага.</param>
        /// <param name="getN">Функция получения номера шага.</param>
        /// <param name="isMainStep">Признак того, является ли шаг
        /// шагом операции. </param>
        /// <param name="owner">Владелец шага (Состояние)</param>
        public Step(string name, GetN getN, State owner,
                    bool isMainStep = false)
        {
            this.name      = name;
            this.getN      = getN;
            IsMainStep     = isMainStep;
            Owner          = owner;
            baseStep       = new BaseStep(string.Empty, string.Empty);
            baseStep.Owner = this;

            items = new List <ITreeViewItem>();

            actions = new List <Action>();
            actions.Add(new Action("Включать", this, Action.OpenDevices,
                                   new Device.DeviceType[]
            {
                Device.DeviceType.V,
                Device.DeviceType.DO,
                Device.DeviceType.M
            }));

            actions.Add(new Action("Включать реверс", this,
                                   Action.OpenReverseDevices,
                                   new Device.DeviceType[]
            {
                Device.DeviceType.M
            },
                                   new Device.DeviceSubType[]
            {
                Device.DeviceSubType.M_REV_FREQ,
                Device.DeviceSubType.M_REV_FREQ_2,
                Device.DeviceSubType.M_REV_FREQ_2_ERROR,
                Device.DeviceSubType.M_ATV,
                Device.DeviceSubType.M
            }));

            actions.Add(new Action("Выключать", this, Action.CloseDevices,
                                   new Device.DeviceType[]
            {
                Device.DeviceType.V,
                Device.DeviceType.DO,
                Device.DeviceType.M
            }));
            actions[2].DrawStyle = DrawInfo.Style.RED_BOX;

            actions.Add(new ActionGroup("Верхние седла", this,
                                        ActionGroup.OpenedUpperSeats,
                                        new Device.DeviceType[]
            {
                Device.DeviceType.V
            },
                                        new Device.DeviceSubType[]
            {
                Device.DeviceSubType.V_MIXPROOF,
                Device.DeviceSubType.V_AS_MIXPROOF,
                Device.DeviceSubType.V_IOLINK_MIXPROOF
            }));
            actions[3].DrawStyle = DrawInfo.Style.GREEN_UPPER_BOX;

            actions.Add(new ActionGroup("Нижние седла", this,
                                        ActionGroup.OpenedLowerSeats,
                                        new Device.DeviceType[]
            {
                Device.DeviceType.V
            },
                                        new Device.DeviceSubType[]
            {
                Device.DeviceSubType.V_MIXPROOF,
                Device.DeviceSubType.V_AS_MIXPROOF,
                Device.DeviceSubType.V_IOLINK_MIXPROOF
            }));
            actions[4].DrawStyle = DrawInfo.Style.GREEN_LOWER_BOX;

            actions.Add(new Action("Сигналы для включения", this,
                                   Action.RequiredFB,
                                   new Device.DeviceType[]
            {
                Device.DeviceType.DI,
                Device.DeviceType.GS
            }));

            actions.Add(new ActionGroupWash("Устройства", this,
                                            ActionGroupWash.SingleGroupAction));

            // Специальное действие - выдача дискретных сигналов
            // при наличии входного дискретного сигнала.
            actions.Add(new ActionGroup("Группы DI -> DO DO ...", this,
                                        ActionGroup.DIDO,
                                        new Device.DeviceType[]
            {
                Device.DeviceType.DI,
                Device.DeviceType.SB,
                Device.DeviceType.DO
            }));

            // Специальное действие - выдача аналоговых сигналов при
            // наличии входного  аналогового сигнала.
            actions.Add(new ActionGroup("Группы AI -> AO AO ...", this,
                                        ActionGroup.AIAO,
                                        new Device.DeviceType[]
            {
                Device.DeviceType.AI,
                Device.DeviceType.AO,
                Device.DeviceType.M
            }));

            items.AddRange(actions.ToArray());

            if (!isMainStep)
            {
                timeParam = new ObjectProperty("Время (параметр)", -1, -1);
                nextStepN = new ObjectProperty("Номер следующего шага", -1, -1);

                items.Add(timeParam);
                items.Add(nextStepN);
            }
        }