|
|
@ -60,11 +60,11 @@ public partial class Battery250UpRecord
|
|
|
|
|
|
|
|
|
|
|
|
public readonly struct AuxBitInformation_
|
|
|
|
public readonly struct AuxBitInformation_
|
|
|
|
{
|
|
|
|
{
|
|
|
|
public Boolean DischargeEnabled => ((Self._IoStates >> 0) & 1) == 1;
|
|
|
|
public Boolean DischargeEnabled => ((Self._AuxBitInformation >> 0) & 1) == 1;
|
|
|
|
public Boolean ChargeEnabled => ((Self._IoStates >> 1) & 1) == 1;
|
|
|
|
public Boolean ChargeEnabled => ((Self._AuxBitInformation >> 1) & 1) == 1;
|
|
|
|
public Boolean WarmUpActive => ((Self._IoStates >> 2) & 1) == 1;
|
|
|
|
public Boolean WarmUpActive => ((Self._AuxBitInformation >> 2) & 1) == 1;
|
|
|
|
public Boolean TOCRequested => ((Self._IoStates >> 3) & 1) == 1;
|
|
|
|
public Boolean TOCRequested => ((Self._AuxBitInformation >> 3) & 1) == 1;
|
|
|
|
public Boolean EOCReached => ((Self._IoStates >> 4) & 1) == 1;
|
|
|
|
public Boolean EOCReached => ((Self._AuxBitInformation >> 4) & 1) == 1;
|
|
|
|
|
|
|
|
|
|
|
|
internal AuxBitInformation_(Battery250UpRecord self) => Self = self;
|
|
|
|
internal AuxBitInformation_(Battery250UpRecord self) => Self = self;
|
|
|
|
private Battery250UpRecord Self { get; }
|
|
|
|
private Battery250UpRecord Self { get; }
|
|
|
@ -134,9 +134,6 @@ public partial class Battery250UpRecord
|
|
|
|
if (HasBit(7) ) yield return "VBm2 : Bus voltage too low";
|
|
|
|
if (HasBit(7) ) yield return "VBm2 : Bus voltage too low";
|
|
|
|
if (HasBit(9) ) yield return "VBM2 : Bus voltage too high";
|
|
|
|
if (HasBit(9) ) yield return "VBM2 : Bus voltage too high";
|
|
|
|
if (HasBit(11)) yield return "IDM2 : Discharge current too high";
|
|
|
|
if (HasBit(11)) yield return "IDM2 : Discharge current too high";
|
|
|
|
if (HasBit(12)) yield return "ISOB : Electrical insulation failure";
|
|
|
|
|
|
|
|
if (HasBit(13)) yield return "MSWE : Main switch failure";
|
|
|
|
|
|
|
|
if (HasBit(14)) yield return "FUSE : Main fuse blown";
|
|
|
|
|
|
|
|
if (HasBit(15)) yield return "HTRE : Battery failed to warm up";
|
|
|
|
if (HasBit(15)) yield return "HTRE : Battery failed to warm up";
|
|
|
|
if (HasBit(16)) yield return "TCPE : Temperature sensor failure";
|
|
|
|
if (HasBit(16)) yield return "TCPE : Temperature sensor failure";
|
|
|
|
if (HasBit(17)) yield return "STRE : Voltage measurement circuit fails";
|
|
|
|
if (HasBit(17)) yield return "STRE : Voltage measurement circuit fails";
|
|
|
@ -149,11 +146,11 @@ public partial class Battery250UpRecord
|
|
|
|
if (HasBit(27)) yield return "iCM2 : Charge current too high";
|
|
|
|
if (HasBit(27)) yield return "iCM2 : Charge current too high";
|
|
|
|
if (HasBit(29)) yield return "iDM2 : Discharge current too high";
|
|
|
|
if (HasBit(29)) yield return "iDM2 : Discharge current too high";
|
|
|
|
if (HasBit(31)) yield return "MID2 : String voltage unbalance too high";
|
|
|
|
if (HasBit(31)) yield return "MID2 : String voltage unbalance too high";
|
|
|
|
|
|
|
|
if (HasBit(33)) yield return "CCBF : Charger Circuit not working";
|
|
|
|
if (HasBit(42)) yield return "HTFS : Heater Fuse Blown";
|
|
|
|
if (HasBit(42)) yield return "HTFS : Heater Fuse Blown";
|
|
|
|
if (HasBit(43)) yield return "DATA : Parameters out of range";
|
|
|
|
if (HasBit(43)) yield return "DATA : Parameters out of range";
|
|
|
|
if (HasBit(45)) yield return "LMPA : Unbalance string voltages";
|
|
|
|
if (HasBit(45)) yield return "LMPA : Unbalance string voltages";
|
|
|
|
if (HasBit(46)) yield return "HEBT : Loss of heartbeat";
|
|
|
|
if (HasBit(54)) yield return "ULAL : The safety microprocessor intervened";
|
|
|
|
if (HasBit(48)) yield return "CURM : Battery charge requested after EDCH";
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[SuppressMessage("ReSharper", "StringLiteralTypo")]
|
|
|
|
[SuppressMessage("ReSharper", "StringLiteralTypo")]
|
|
|
@ -161,24 +158,12 @@ public partial class Battery250UpRecord
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Boolean HasBit(Int16 bit) => (_WarningFlags & 1uL << bit) > 0;
|
|
|
|
Boolean HasBit(Int16 bit) => (_WarningFlags & 1uL << bit) > 0;
|
|
|
|
|
|
|
|
|
|
|
|
if (HasBit(1) ) yield return "TaM1: BMS temperature high";
|
|
|
|
|
|
|
|
if (HasBit(4) ) yield return "TbM1: Battery temperature high";
|
|
|
|
if (HasBit(4) ) yield return "TbM1: Battery temperature high";
|
|
|
|
if (HasBit(6) ) yield return "VBm1: Bus voltage low";
|
|
|
|
|
|
|
|
if (HasBit(8) ) yield return "VBM1: Bus voltage high";
|
|
|
|
|
|
|
|
if (HasBit(10)) yield return "IDM1: Discharge current high";
|
|
|
|
|
|
|
|
if (HasBit(22)) yield return "vsm1: String voltage too low";
|
|
|
|
if (HasBit(22)) yield return "vsm1: String voltage too low";
|
|
|
|
if (HasBit(24)) yield return "vsM1: String voltage high";
|
|
|
|
if (HasBit(28)) yield return "iDM1: String discharge current high";
|
|
|
|
if (HasBit(26)) yield return "iCM1: Charge current high";
|
|
|
|
|
|
|
|
if (HasBit(28)) yield return "iDM1: Discharge current high";
|
|
|
|
|
|
|
|
if (HasBit(30)) yield return "MID1: String voltages unbalanced";
|
|
|
|
if (HasBit(30)) yield return "MID1: String voltages unbalanced";
|
|
|
|
if (HasBit(32)) yield return "BLPW: Not enough charging power on bus";
|
|
|
|
if (HasBit(32)) yield return "BLPW: Charging power is not available. Bus voltage low";
|
|
|
|
if (HasBit(33)) yield return "CCBF : Internal charger hardware failure";
|
|
|
|
if (HasBit(49)) yield return "TOCW : TOC is less than 100% from 14 days";
|
|
|
|
if (HasBit(35)) yield return "Ah_W: String SOC low";
|
|
|
|
|
|
|
|
if (HasBit(38)) yield return "MPMM: Midpoint wiring problem";
|
|
|
|
|
|
|
|
if (HasBit(40)) yield return "TCdi: Temperature difference between strings high";
|
|
|
|
|
|
|
|
if (HasBit(44)) yield return "LMPW : String voltages unbalance warning";
|
|
|
|
|
|
|
|
if (HasBit(47)) yield return "TOCW : Top of Charge requested";
|
|
|
|
|
|
|
|
if (HasBit(49)) yield return "BUSL : Bus lower than string";
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|