Example #1
0
        public SetupTableModel(ZDStruct zd)
        {
            showAO = false;
            type   = typeof(ZDStruct);
            obj    = zd;

            En    = zd.En;
            Name  = zd.Description;
            Group = zd.Group;

            Outputs = new ObservableCollection <InputOutputItem>();

            //  List<string> names = new List<string>();
            Dictionary <string, string> names = new Dictionary <string, string>
            {
                { "OKC", zd.OKC != null ? zd.OKC.NameDI : "не определен" },
                { "CKC", zd.CKC != null ? zd.CKC.NameDI : "не определен" },
                { "Volt", zd.Volt != null ? zd.Volt.NameDI : "не определен" },
                { "ODC", zd.ODC != null ? zd.ODC.NameDI : "не определен" },
                { "CDC", zd.CDC != null ? zd.CDC.NameDI : "не определен" },
                { "MC", zd.MC != null ? zd.MC.NameDI : "не определен" },
                { "DC", zd.DC != null ? zd.DC.NameDI : "не определен" },
                { "BS", zd.BS != null ? zd.BS.NameDI : "не определен" },

                { "DOB", zd.DOB != null ? zd.DOB.NameDO : "не определен" },
                { "DCB", zd.DCB != null ? zd.DCB.NameDO : "не определен" },
                { "DKB", zd.DKB != null ? zd.DKB.NameDO : "не определен" },
                { "DCBZ", zd.DCBZ != null ? zd.DCBZ.NameDO : "не определен" }
            };

            Outputs.Add(new InputOutputItem("КВО", zd.OKCindxArrDI, names["OKC"], ESignalType.DI));
            Outputs.Add(new InputOutputItem("КВЗ", zd.CKCindxArrDI, names["CKC"], ESignalType.DI));
            Outputs.Add(new InputOutputItem("Наличие напряжения", zd.VoltindxArrDI, names["Volt"], ESignalType.DI));
            Outputs.Add(new InputOutputItem("МПО", zd.ODCindxArrDI, names["ODC"], ESignalType.DI));
            Outputs.Add(new InputOutputItem("МПЗ", zd.CDCindxArrDI, names["CDC"], ESignalType.DI));
            Outputs.Add(new InputOutputItem("Муфта", zd.MCindxArrDI, names["MC"], ESignalType.DI));
            Outputs.Add(new InputOutputItem("Дистанционное управление", zd.DCindxArrDI, names["DC"], ESignalType.DI));
            Outputs.Add(new InputOutputItem("Наличие напряжения на СШ", zd.BSIndex, names["BS"], ESignalType.DI));

            if (zd.CustomDIs == null || zd.CustomDIs.Count == 0)
            {
                zd.CustomDIs = new List <DIItem>
                {
                    new DIItem("RS485. Открыта"),      //открыта
                    new DIItem("RS485. Закрыта"),      //закрыта
                    new DIItem("RS485. Открывается"),  //открывается
                    new DIItem("RS485. Закрывается"),  //закрывается
                    new DIItem("RS485. В дистанции"),  //закрыта
                    new DIItem("RS485. Наличие связи") //наличие связи
                };
            }
            foreach (DIItem c in zd.CustomDIs)
            {
                Outputs.Add(new InputOutputItem(c.Name, c.Index, c.GetSignalName, ESignalType.DI));
            }


            inputs = new ObservableCollection <InputOutputItem>
            {
                new InputOutputItem("команда - открыть", zd.DOBindxArrDO, names["DOB"], ESignalType.DO),
                new InputOutputItem("команда - остановить", zd.DCBindxArrDO, names["DCB"], ESignalType.DO),
                new InputOutputItem("команда - закрыть", zd.DKBindxArrDO, names["DKB"], ESignalType.DO),
                new InputOutputItem("команда - стоп закрытия", zd.DCBZindxArrDO, names["DCBZ"], ESignalType.DO)
            };


            _analogs = new ObservableCollection <AnalogIOItem>
            {
                new AnalogIOItem("Положение затвора", zd.ZD_Pos_index, 100, 0, zd.PositionAIName)
            };

            AddDICommand = new AddDICommand(Outputs);
            RemDICommand = new RemoveDICommand(Outputs, 14);

            InitSelectMenu();
        }
Example #2
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));
                    }
                }
            }
        }
Example #3
0
 public static ZDStruct[] GetArray()
 {
     ZDStruct[] temp = new ZDStruct[_zds.Count];
     _zds.CopyTo(temp, 0);
     return(temp);
 }