public virtual void AddAnalog(ProtectionTools Analog)
 {
     if (Analogs.Any(p => DomainHelper.EqualDomainObjects(p, Analog)))
     {
         logger.Warn("Такой аналог уже добавлен. Пропускаем...");
         return;
     }
     if (DomainHelper.EqualDomainObjects(this, Analog))
     {
         logger.Warn("Нельзя добавлять в качестве аналога себя. Пропускаем...");
         return;
     }
     ObservableAnalog.Add(Analog);
 }
Esempio n. 2
0
        public void UpdateLastChangeTime(float updateTime)
        {
            int analogCount = Analogs.GetLength(0);

            for (int i = 0; i < analogCount; i++)
            {
                if (Analogs[i].HasChanged)
                {
                    LastChangeTime = updateTime;
                    return;
                }
            }

            int buttonCount = Buttons.GetLength(0);

            for (int i = 0; i < buttonCount; i++)
            {
                if (Buttons[i].HasChanged)
                {
                    LastChangeTime = updateTime;
                    return;
                }
            }
        }
Esempio n. 3
0
        public void ApplyChanges()
        {
            if (type == typeof(VSStruct))
            {
                VSStruct temp = obj as VSStruct;
                temp.ECindxArrDI  = Outputs[0]._index;
                temp.MPCindxArrDI = Outputs[1]._index;
                temp.PCindxArrDI  = Outputs[2]._index;
                temp.BusSecIndex  = Outputs[3]._index;
                //   temp.PCindxArrAI = Analogs[0].Index;

                /*  temp.valuePC = Analogs[0].ValueNom;
                 * temp.valuePCspd = Analogs[0].ValueSpd;
                 */
                temp.Description = Name;
                temp.Group       = Group;
                temp.En          = En;

                temp.ABBindxArrDO = inputs[0]._index;
                temp.ABOindxArrDO = inputs[1]._index;

                if (_analogs.Count > 0)
                {
                    temp.controledAIs = _analogs.ToArray();
                }
                else
                {
                    temp.controledAIs = null;
                }

                /* if (ANInputs != null && ANInputs.Count > 0)
                 * {
                 *   temp.SetRPM_Addr = ANInputs[0].PLCAddr;
                 *   temp.ADCtoRPM = ANInputs[0].ADCtoRPM;
                 * }*/
                temp.AnCmdIndex = AnalogCommands[0]._index;

                for (int i = 4; i < Outputs.Count; i++)
                {
                    if (Outputs[i].Index != null)
                    {
                        temp.CustomDIs.Add(new DIItem(Outputs[i].Name, Outputs[i]._index));
                    }
                }
            }
            if (type == typeof(KLStruct))
            {
                KLStruct temp = obj as KLStruct;
                temp.DOBindxArrDO = inputs[0]._index;
                temp.DKBindxArrDO = inputs[1]._index;

                temp.OKCindxArrDI = Outputs[0]._index;
                temp.CKCindxArrDI = Outputs[1]._index;

                temp.Description = Name;
                temp.Group       = Group;
                temp.En          = En;
            }
            if (type == typeof(ZDStruct))
            {
                ZDStruct temp = obj as ZDStruct;

                temp.Description   = Name;
                temp.Group         = Group;
                temp.En            = En;
                temp.OKCindxArrDI  = Outputs[0]._index;
                temp.CKCindxArrDI  = Outputs[1]._index;
                temp.VoltindxArrDI = Outputs[2]._index;
                temp.ODCindxArrDI  = Outputs[3]._index;
                temp.CDCindxArrDI  = Outputs[4]._index;
                temp.MCindxArrDI   = Outputs[5]._index;
                temp.DCindxArrDI   = Outputs[6]._index;
                temp.BSIndex       = Outputs[7]._index;

                temp.DOBindxArrDO  = inputs[0]._index;
                temp.DCBindxArrDO  = inputs[1]._index;
                temp.DKBindxArrDO  = inputs[2]._index;
                temp.DCBZindxArrDO = inputs[3]._index;

                temp.ZD_Pos_index = _analogs[0]._index;

                if (Outputs.Count > 8)
                {
                    temp.CustomDIs = new List <DIItem>();
                    for (int i = 8; i < Outputs.Count; i++)
                    {
                        temp.CustomDIs.Add(new DIItem(Outputs[i].Name, Outputs[i]._index));
                    }
                }
                //TODO: добавить запись настроек аналогов
            }
            if (type == typeof(MPNAStruct))
            {
                MPNAStruct agr = obj as MPNAStruct;

                agr.Description    = Name;
                agr.Group          = Group;
                agr.En             = En;
                agr.MBC11indxArrDI = Outputs[0]._index;
                agr.MBC12indxArrDI = Outputs[1]._index;
                agr.MBC21indxArrDI = Outputs[2]._index;
                agr.MBC22indxArrDI = Outputs[3]._index;

                agr.ECBindxArrDI   = Outputs[4]._index;
                agr.ECO11indxArrDI = Outputs[5]._index;
                agr.ECO12indxArrDI = Outputs[6]._index;
                //      agr.ECxindxArrDI = Outputs[7]._index;

                agr.ABBindxArrDO  = inputs[0]._index;
                agr.ABOindxArrDO  = inputs[1]._index;
                agr.ABO2indxArrDO = inputs[2]._index;

                /*  agr.CurrentIndx = Analogs[0].Index;
                 * agr.Current_nominal = Analogs[0].ValueNom;
                 * agr.Current_spd = Analogs[0].ValueSpd;
                 *
                 * agr.RPMindxArrAI = Analogs[1].Index;
                 * agr.RPM_nominal = Analogs[1].ValueNom;
                 * agr.RPM_spd = Analogs[1].ValueSpd;*/
                if (Analogs.Count > 0)
                {
                    agr.controledAIs = Analogs.ToArray();
                }
                else
                {
                    agr.controledAIs = null;
                }

                agr.CustomDIs = new List <DIItem>();
                for (int i = 7; i < Outputs.Count; i++)
                {
                    if (Outputs[i].Index != null)
                    {
                        agr.CustomDIs.Add(new DIItem(Outputs[i].Name, Outputs[i]._index));
                    }
                }
            }
        }