void OpenEcuCodingForm() { //! DEBUG //Global.EcuList.CurrentEcu = new Battery_ECU(); EcuModelId ecuModel = EcuModelId.none; if (DiagAddress >= (byte)EcuDiagAddress.GENERAL_ECU_DIAG_ID && DiagAddress < (byte)EcuDiagAddress.DISPLAY_ECU_DIAG_ID) { ecuModel = EcuModelId.gEcu; } else if (DiagAddress >= (byte)EcuDiagAddress.DISPLAY_ECU_DIAG_ID && DiagAddress < (byte)EcuDiagAddress.MAIN_ECU_DIAG_ID) { ecuModel = EcuModelId.dEcu; } else if (DiagAddress >= (byte)EcuDiagAddress.MAIN_ECU_DIAG_ID && DiagAddress < (byte)EcuDiagAddress.BATTERY_ECU_ID) { ecuModel = EcuModelId.mEcu; } else if (DiagAddress >= (byte)EcuDiagAddress.BATTERY_ECU_ID) { ecuModel = EcuModelId.bms; } if (ecuModel == EcuModelId.none) { return; } codingForm = null; switch (Global.EcuList.CurrentEcu.ModelId) { case EcuModelId.bms: codingForm = new Bms_ECUCoding(); break; case EcuModelId.gEcu: codingForm = new General_ECUCoding(); break; case EcuModelId.mEcu: codingForm = new Mcu_ECUCoding(); break; case EcuModelId.dEcu: codingForm = new Display_ECUCoding(); break; } grid.Children.Clear(); if (codingForm != null) { codingForm.CurrentEcu = Global.EcuList.CurrentEcu; grid.Children.Add(codingForm as UIElement); } }
public Main_ECU(EcuModelId modelId, byte address) : base(modelId, address) { Data = new CodingData_t(); _diagData = new List <DiagnosticData>(); Data.SteeringBrakeSpeedTable = new ushort[12]; _diagSrv = new Diag.A_Service_ReadDataByIdentifier(); EcuAddress = address; SetDiagData(); }
public Display_ECU(EcuModelId modelId, byte address) : base(modelId, address) { Data = new CodingData_t(); _diagData = new List <DiagnosticData>(); Data.MotorRpm = new short[TABLE_CNT * 2]; Data.SoC = new short[TABLE_CNT * 2]; Data.TrimPosition = new short[TABLE_CNT * 2]; _diagSrv = new Diag.A_Service_ReadDataByIdentifier(); EcuAddress = address; SetDiagData(); }
public General_ECU(EcuModelId modelId, byte address) : base(modelId, address) { Data = new CodingData_t(); _diagData = new List <DiagnosticData>(); Data.AnalogOutput = new byte[AN_OUT_COUNT]; Data.DigitalOutput = new byte[DIG_OUT_COUNT]; Data.CurrentThreshold_A = new byte[AN_OUT_COUNT]; Data.tab = new canRepItem[REPEATER_TABLE_SIZE]; _diagSrv = new Diag.A_Service_ReadDataByIdentifier(); EcuAddress = address; SetDiagData(); }
public static ECU CreateEcu(byte DiagAddress) { EcuModelId ecuModel = EcuModelId.none; if (DiagAddress >= (byte)EcuDiagAddress.GENERAL_ECU_DIAG_ID && DiagAddress < (byte)EcuDiagAddress.DISPLAY_ECU_DIAG_ID) { ecuModel = EcuModelId.gEcu; } else if (DiagAddress >= (byte)EcuDiagAddress.DISPLAY_ECU_DIAG_ID && DiagAddress < (byte)EcuDiagAddress.MAIN_ECU_DIAG_ID) { ecuModel = EcuModelId.dEcu; } else if (DiagAddress >= (byte)EcuDiagAddress.MAIN_ECU_DIAG_ID && DiagAddress < (byte)EcuDiagAddress.BATTERY_ECU_ID) { ecuModel = EcuModelId.mEcu; } else if (DiagAddress >= (byte)EcuDiagAddress.BATTERY_ECU_ID) { ecuModel = EcuModelId.bms; } switch (ecuModel) { case EcuModelId.gEcu: return(new General_ECU(ecuModel, DiagAddress)); case EcuModelId.mEcu: return(new Main_ECU(ecuModel, DiagAddress)); case EcuModelId.bms: return(new Bms_ECU(ecuModel, DiagAddress)); case EcuModelId.dEcu: return(new Display_ECU(ecuModel, DiagAddress)); default: return(null); } }
bool LoadFromXml(XmlNode node) { foreach (XmlNode n in node.ChildNodes) { if (n.Name == "EcuClassId") { EcuModelId cid = (EcuModelId)Convert.ToInt32(n.InnerText); if (cid != CurrentEcu.ModelId) { MessageBox.Show("Файл кодировок предназначен для ЭБУ класса \"" + cid.ToString() + "\"."); return(false); } } else if (n.Name == "DiagnosticID") { gEcu.Data.DiagnosticID = (byte)Convert.ToByte(n.InnerText); } else if (n.Name == "Index") { gEcu.Data.Index = Convert.ToByte(n.InnerText); } else if (n.Name == "AnalogOutput") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < General_ECU.AN_OUT_COUNT) { gEcu.Data.AnalogOutput[i] = Convert.ToByte(val.InnerText); } i++; } } else if (n.Name == "DigitalOutput") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < General_ECU.DIG_OUT_COUNT) { gEcu.Data.DigitalOutput[i] = Convert.ToByte(val.InnerText); } i++; } } else if (n.Name == "CurrentThreshold_A") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < General_ECU.AN_OUT_COUNT) { gEcu.Data.CurrentThreshold_A[i] = Convert.ToByte(val.InnerText); } i++; } } else if (n.Name == "IsPowerManger") { gEcu.IsPowerManger = Convert.ToBoolean(n.InnerText); } else if (n.Name == "PowerOffDelay_ms") { gEcu.Data.PowerOffDelay_ms = Convert.ToUInt16(n.InnerText); } else if (n.Name == "KeyOffTime_ms") { gEcu.Data.KeyOffTime_ms = Convert.ToUInt16(n.InnerText); } else if (n.Name == "PullUp_IN1") { gEcu.PullUp_IN1 = Convert.ToBoolean(n.InnerText); } else if (n.Name == "PullUp_IN2") { gEcu.PullUp_IN2 = Convert.ToBoolean(n.InnerText); } else if (n.Name == "PullUp_IN3") { gEcu.PullUp_IN3 = Convert.ToBoolean(n.InnerText); } else if (n.Name == "PullUp_IN4") { gEcu.PullUp_IN4 = Convert.ToBoolean(n.InnerText); } } return(true); }
bool LoadFromXml(XmlNode node) { foreach (XmlNode n in node.ChildNodes) { if (n.Name == "EcuClassId") { EcuModelId cid = (EcuModelId)Convert.ToInt32(n.InnerText); if (cid != CurrentEcu.ModelId) { MessageBox.Show("Файл кодировок предназначен для ЭБУ класса \"" + cid.ToString() + "\"."); return(false); } } else if (n.Name == "DiagnosticID") { bms.Data.DiagnosticID = (byte)Convert.ToInt32(n.InnerText); } else if (n.Name == "BatteryIndex") { bms.Data.BatteryIndex = (byte)Convert.ToInt32(n.InnerText); } else if (n.Name == "ModuleIndex") { bms.Data.ModuleIndex = (byte)Convert.ToInt32(n.InnerText); } // Flags else if (n.Name == "IsMaster") { bms.IsMaster = Convert.ToBoolean(n.InnerText); } else if (n.Name == "CheckContactor") { bms.CheckContactor = Convert.ToBoolean(n.InnerText); } else if (n.Name == "CheckInterlock") { bms.CheckInterlock = Convert.ToBoolean(n.InnerText); } else if (n.Name == "IsTimeServer") { bms.IsTimeServer = Convert.ToBoolean(n.InnerText); } else if (n.Name == "VcuControled") { bms.VcuControled = Convert.ToBoolean(n.InnerText); } else if (n.Name == "Offline") { bms.TestMode = Convert.ToBoolean(n.InnerText); } else if (n.Name == "IsPowerManager") { bms.IsPowerManager = Convert.ToBoolean(n.InnerText); } // Батареи else if (n.Name == "BaseID") { bms.Data.BaseID = Convert.ToUInt32(n.InnerText); } else if (n.Name == "CurrentSensType") { bms.Data.CurrentSensType = Convert.ToByte(n.InnerText); } else if (n.Name == "CurrentSensDirection") { bms.Data.CurrentSensDirection = Convert.ToByte(n.InnerText); } else if (n.Name == "HaveCurrentSensor") { bms.HaveCurrentSensor = Convert.ToBoolean(n.InnerText); } else if (n.Name == "MaxVoltageDisbalanceS") { bms.Data.MaxVoltageDisbalanceS = Convert.ToByte(n.InnerText); } else if (n.Name == "TotalCapacity") { bms.Data.TotalCapacity = Convert.ToUInt16(n.InnerText); } else if (n.Name == "MaxVoltageDisbalanceP") { bms.Data.MaxVoltageDisbalanceP = Convert.ToUInt16(n.InnerText); } // DCL/CCL else if (n.Name == "MaxDCL") { bms.Data.MaxDCL = Convert.ToInt16(n.InnerText); } else if (n.Name == "MaxCCL") { bms.Data.MaxCCL = Convert.ToInt16(n.InnerText); } else if (n.Name == "ModulesCountS") { bms.Data.ModulesCountS = Convert.ToByte(n.InnerText); } else if (n.Name == "ModulesCountP") { bms.Data.ModulesCountP = Convert.ToByte(n.InnerText); } // Балансировка else if (n.Name == "CellNumber") { bms.Data.CellNumber = Convert.ToByte(n.InnerText); } else if (n.Name == "MaxCellVoltage_mV") { bms.Data.MaxCellVoltage_mV = Convert.ToUInt16(n.InnerText); } else if (n.Name == "MinCellVoltage_mV") { bms.Data.MinCellVoltage_mV = Convert.ToUInt16(n.InnerText); } else if (n.Name == "MinBalancerLevel_mV") { bms.Data.MinBalancerLevel_mV = Convert.ToUInt16(n.InnerText); } else if (n.Name == "VoltageCCLpoint") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < Bms_ECU.VoltageArrayLen) { bms.Data.VoltageCCLpoint[i] = Convert.ToInt16(val.InnerText); } i++; } } else if (n.Name == "TemperatureCCLpoint") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < Bms_ECU.TemperatureArrayLen) { bms.Data.TemperatureCCLpoint[i] = Convert.ToInt16(val.InnerText); } i++; } } // Предзаряд else if (n.Name == "PreMaxDuration") { bms.Data.PreMaxDuration = Convert.ToUInt16(n.InnerText); } else if (n.Name == "PreZeroCurrentDuration") { bms.Data.PreZeroCurrentDuration = Convert.ToUInt16(n.InnerText); } else if (n.Name == "PreZeroCurrent") { bms.Data.PreZeroCurrent = Convert.ToUInt16(n.InnerText); } else if (n.Name == "PreMaxCurrent") { bms.Data.PreMaxCurrent = Convert.ToUInt16(n.InnerText); } // Термостатирование else if (n.Name == "BalancingTime_s") { bms.Data.BalancingTime_s = Convert.ToByte(n.InnerText); } else if (n.Name == "MaxBalancingDiff_mV") { bms.Data.MaxBalancingDiff_mV = Convert.ToByte(n.InnerText); } else if (n.Name == "OCVpoint") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < Bms_ECU.OCVArrayLen) { bms.Data.OCVpoint[i] = Convert.ToInt16(val.InnerText); } i++; } } else if (n.Name == "PowerOffDelay_ms") { bms.Data.PowerOffDelay_ms = Convert.ToInt16(n.InnerText); } else if (n.Name == "KeyOffTime_ms") { bms.Data.KeyOffTime_ms = Convert.ToInt16(n.InnerText); } else if (n.Name == "ModulesInAssembly") { bms.Data.ModulesInAssembly = Convert.ToByte(n.InnerText); } } return(true); }
public ECU(EcuModelId modelId, byte DiagAdressId) { ModelId = modelId; Address = DiagAdressId; }
bool LoadFromXml(XmlNode node) { foreach (XmlNode n in node.ChildNodes) { if (n.Name == "EcuClassId") { EcuModelId cid = (EcuModelId)Convert.ToInt32(n.InnerText); if (cid != CurrentEcu.ModelId) { MessageBox.Show("Файл кодировок предназначен для ЭБУ класса \"" + cid.ToString() + "\"."); return(false); } } else if (n.Name == "DiagnosticID") { dEcu.Data.DiagnosticID = (byte)Convert.ToByte(n.InnerText); } else if (n.Name == "Index") { dEcu.Data.Index = (byte)Convert.ToByte(n.InnerText); } else if (n.Name == "MotorRpmpoint") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < Bms_ECU.VoltageArrayLen) { dEcu.Data.MotorRpm[i] = Convert.ToInt16(val.InnerText); } i++; } } else if (n.Name == "Socpoint") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < Bms_ECU.TemperatureArrayLen) { dEcu.Data.SoC[i] = Convert.ToInt16(val.InnerText); } i++; } } else if (n.Name == "TrimPospoint") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < Bms_ECU.OCVArrayLen) { dEcu.Data.TrimPosition[i] = Convert.ToInt16(val.InnerText); } i++; } } else if (n.Name == "SpecPowerpoint") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < Bms_ECU.OCVArrayLen) { dEcu.Data.SpecPower[i] = Convert.ToInt16(val.InnerText); } i++; } } else if (n.Name == "PowerOffDelay_ms") { dEcu.Data.PowerOffDelay_ms = Convert.ToUInt16(n.InnerText); } else if (n.Name == "KeyOffTime_ms") { dEcu.Data.KeyOffTime_ms = Convert.ToUInt16(n.InnerText); } } return(true); }
bool LoadFromXml(XmlNode node) { foreach (XmlNode n in node.ChildNodes) { if (n.Name == "EcuClassId") { EcuModelId cid = (EcuModelId)Convert.ToInt32(n.InnerText); if (cid != CurrentEcu.ModelId) { MessageBox.Show("Файл кодировок предназначен для ЭБУ класса \"" + cid.ToString() + "\"."); return(false); } } else if (n.Name == "DiagnosticID") { mEcu.Data.DiagnosticID = (byte)Convert.ToByte(n.InnerText); } else if (n.Name == "IsPowerManger") { mEcu.IsPowerManger = Convert.ToBoolean(n.InnerText); } else if (n.Name == "AccPedalFstCh_0V") { mEcu.Data.AccPedalFstCh_0V = Convert.ToByte(n.InnerText); } else if (n.Name == "AccPedalFstCh_MaxV") { mEcu.Data.AccPedalFstCh_MaxV = Convert.ToByte(n.InnerText); } else if (n.Name == "fltSteeringPeriod") { mEcu.Data.SteeringKp = Convert.ToInt16(n.InnerText); } else if (n.Name == "AccPedalSndCh_0V") { mEcu.Data.SteeringKd = Convert.ToInt16(n.InnerText); } else if (n.Name == "AccPedalSndCh_MaxV") { mEcu.Data.AccPedalSndCh_MaxV = Convert.ToByte(n.InnerText); } else if (n.Name == "fltSteeringLength") { mEcu.Data.SteeringKi = Convert.ToInt16(n.InnerText); } else if (n.Name == "BaseCanId") { mEcu.Data.BaseCanId = Convert.ToUInt16(n.InnerText); } else if (n.Name == "KeyOffTime_ms") { mEcu.Data.KeyOffTime_ms = Convert.ToUInt16(n.InnerText); } else if (n.Name == "MaxInverterT") { mEcu.Data.MaxInverterT = Convert.ToInt16(n.InnerText); } else if (n.Name == "MaxMotorSpeedD") { mEcu.Data.MaxMotorSpeedD = Convert.ToUInt16(n.InnerText); } else if (n.Name == "MaxTorque") { mEcu.Data.MaxTorque = Convert.ToUInt16(n.InnerText); } else if (n.Name == "MaxMotorT") { mEcu.Data.MaxMotorT = Convert.ToInt16(n.InnerText); } else if (n.Name == "PowerOffDelay_ms") { mEcu.Data.PowerOffDelay_ms = Convert.ToUInt16(n.InnerText); } else if (n.Name == "SteeringMaxCurrent_0p1A") { mEcu.Data.SteeringMaxCurrent_0p1A = Convert.ToInt16(n.InnerText); } else if (n.Name == "SteeringMaxVal_0p1V") { mEcu.Data.SteeringMaxVal_0p1V = Convert.ToByte(n.InnerText); } else if (n.Name == "SteeringMinVal_0p1V") { mEcu.Data.SteeringMinVal_0p1V = Convert.ToByte(n.InnerText); } else if (n.Name == "TrimMaxCurrent_0p1A") { mEcu.Data.TrimUpLimitDrive_0p1V = Convert.ToInt16(n.InnerText); } else if (n.Name == "TrimMaxVal_0p1V") { mEcu.Data.TrimMaxVal_0p1V = Convert.ToByte(n.InnerText); } else if (n.Name == "TrimMinVal_0p1V") { mEcu.Data.TrimMinVal_0p1V = Convert.ToByte(n.InnerText); } else if (n.Name == "InvCoolingOn") { mEcu.Data.InvCoolingOn = Convert.ToByte(n.InnerText); } else if (n.Name == "MotorCoolingOn") { mEcu.Data.MotorCoolingOn = Convert.ToByte(n.InnerText); } else if (n.Name == "SteeringBrakeSpeedTable") { int i = 0; foreach (XmlNode val in n.ChildNodes) { if (i < 12) { mEcu.Data.SteeringBrakeSpeedTable[i] = Convert.ToUInt16(val.InnerText); } i++; } } else if (n.Name == "MaxChargingCurrent_A") { mEcu.Data.MaxChargingCurrent_A = Convert.ToByte(n.InnerText); } else if (n.Name == "ChargersNumber") { mEcu.Data.ChargersNumber = Convert.ToByte(n.InnerText); } else if (n.Name == "RateMotorTorque_Nm") { mEcu.Data.RateMotorTorque_Nm = Convert.ToUInt16(n.InnerText); } } return(true); }