示例#1
0
        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);
            }
        }
示例#2
0
        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();
        }
示例#3
0
        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();
        }
示例#4
0
        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();
        }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
文件: ECU.cs 项目: nalale/LFService
 public ECU(EcuModelId modelId, byte DiagAdressId)
 {
     ModelId = modelId;
     Address = DiagAdressId;
 }
示例#9
0
        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);
        }
示例#10
0
        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);
        }