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