Compare commits

..

No commits in common. "179c2fe0fcead9c762c2bd7ec5df167a05fbcbe4" and "38afc5b0036dc02f1270b9dc7be6830aab206c6b" have entirely different histories.

2 changed files with 38 additions and 32 deletions

View File

@ -36,7 +36,7 @@ public partial class Battery48TlRecord
public Current BusCurrent => _BusCurrent; public Current BusCurrent => _BusCurrent;
public Current CellsCurrent => _CellsCurrent; public Current CellsCurrent => _CellsCurrent;
public Current HeatingCurrent => _BusCurrent - _CellsCurrent; public Current HeatingCurrent => _BusCurrent - _CellsCurrent;
public DcPower HeatingPower => HeatingCurrent * Dc.Voltage; public DcPower HeatingPower => HeatingCurrent * Dc.Voltage;
@ -45,7 +45,7 @@ public partial class Battery48TlRecord
// When The battery is full charged (reached EOC) the Time Since TOC is set to 0 // When The battery is full charged (reached EOC) the Time Since TOC is set to 0
public TimeSpan TimeSinceTOC => TimeSpan.FromMinutes(_TimeSinceToc); public TimeSpan TimeSinceTOC => TimeSpan.FromMinutes(_TimeSinceToc);
public Boolean CalibrationChargeRequested => TimeSinceTOC > TimeSpan.FromDays(7); // From AF0A (Fw Version) Each 14 days , But Max and Peter asked for 7 days. public Boolean CalibrationChargeRequested => TimeSinceTOC > TimeSpan.FromDays(7); // From AF0A (Fw Version) Each 14 days , we do calibration. But there is wait time for all batteries to request and for next day calibration rule we put this 13 days
public readonly struct Leds_ public readonly struct Leds_
{ {
@ -124,36 +124,42 @@ public partial class Battery48TlRecord
} }
[SuppressMessage("ReSharper", "StringLiteralTypo")] [SuppressMessage("ReSharper", "StringLiteralTypo")]
private IEnumerable<String> ParseAlarms() private Strings ParseAlarms()
{ {
Boolean HasBit(Int16 bit) => (_AlarmFlags & 1uL << bit) > 0; var x = new List<String>
{
"Tam : BMS temperature too low",
};
return x;
if (HasBit(0) ) yield return "Tam : BMS temperature too low"; // UInt64 x = 0b100;
if (HasBit(2) ) yield return "TaM2 : BMS temperature too high"; // Boolean HasBit(Int16 bit) => (x & 1uL << bit) > 0;//(_AlarmFlags & 1uL << bit) > 0;
if (HasBit(3) ) yield return "Tbm : Battery temperature too low"; // if (HasBit(0) ) yield return "Tam : BMS temperature too low";
if (HasBit(5) ) yield return "TbM2 : Battery temperature too high"; // if (HasBit(2) ) yield return "TaM2 : BMS temperature too high";
if (HasBit(7) ) yield return "VBm2 : Bus voltage too low"; // if (HasBit(3) ) yield return "Tbm : Battery temperature too low";
if (HasBit(9) ) yield return "VBM2 : Bus voltage too high"; // if (HasBit(5) ) yield return "TbM2 : Battery temperature too high";
if (HasBit(11)) yield return "IDM2 : Discharge current too high"; // if (HasBit(7) ) yield return "VBm2 : Bus voltage too low";
if (HasBit(12)) yield return "ISOB : Electrical insulation failure"; // if (HasBit(9) ) yield return "VBM2 : Bus voltage too high";
if (HasBit(13)) yield return "MSWE : Main switch failure"; // if (HasBit(11)) yield return "IDM2 : Discharge current too high";
if (HasBit(14)) yield return "FUSE : Main fuse blown"; // if (HasBit(12)) yield return "ISOB : Electrical insulation failure";
if (HasBit(15)) yield return "HTRE : Battery failed to warm up"; // if (HasBit(13)) yield return "MSWE : Main switch failure";
if (HasBit(16)) yield return "TCPE : Temperature sensor failure"; // if (HasBit(14)) yield return "FUSE : Main fuse blown";
if (HasBit(17)) yield return "STRE : Voltage measurement circuit fails"; // if (HasBit(15)) yield return "HTRE : Battery failed to warm up";
if (HasBit(18)) yield return "CME : Current sensor failure"; // if (HasBit(16)) yield return "TCPE : Temperature sensor failure";
if (HasBit(19)) yield return "HWFL : BMS hardware failure"; // if (HasBit(17)) yield return "STRE : Voltage measurement circuit fails";
if (HasBit(20)) yield return "HWEM : Hardware protection tripped"; // if (HasBit(18)) yield return "CME : Current sensor failure";
if (HasBit(21)) yield return "ThM : Heatsink temperature too high"; // if (HasBit(19)) yield return "HWFL : BMS hardware failure";
if (HasBit(23)) yield return "vsm2 : Low string voltage failure"; // if (HasBit(20)) yield return "HWEM : Hardware protection tripped";
if (HasBit(25)) yield return "vsM2 : String voltage too high"; // if (HasBit(21)) yield return "ThM : Heatsink temperature too high";
if (HasBit(27)) yield return "iCM2 : Charge current too high"; // if (HasBit(23)) yield return "vsm2 : Low string voltage failure";
if (HasBit(29)) yield return "iDM2 : Discharge current too high"; // if (HasBit(25)) yield return "vsM2 : String voltage too high";
if (HasBit(31)) yield return "MID2 : String voltage unbalance too high"; // if (HasBit(27)) yield return "iCM2 : Charge current too high";
if (HasBit(42)) yield return "HTFS : Heater Fuse Blown"; // if (HasBit(29)) yield return "iDM2 : Discharge current too high";
if (HasBit(43)) yield return "DATA : Parameters out of range"; // if (HasBit(31)) yield return "MID2 : String voltage unbalance too high";
if (HasBit(45)) yield return "CELL2: Unbalance string voltages"; // if (HasBit(42)) yield return "HTFS : Heater Fuse Blown";
if (HasBit(46)) yield return "HEBT : Loss of heartbeat"; // if (HasBit(43)) yield return "DATA : Parameters out of range";
// if (HasBit(45)) yield return "CELL2: Unbalance string voltages";
// if (HasBit(46)) yield return "HEBT : Loss of heartbeat";
} }
[SuppressMessage("ReSharper", "StringLiteralTypo")] [SuppressMessage("ReSharper", "StringLiteralTypo")]

View File

@ -37,7 +37,7 @@ public class Battery48TlRecords
Temperature = records.Average(b => b.Temperatures.Cells.Average.Value), Temperature = records.Average(b => b.Temperatures.Cells.Average.Value),
HeatingPower = records.Sum(b => b.HeatingPower), HeatingPower = records.Sum(b => b.HeatingPower),
TimeSinceToc = records.Max(r => r.TimeSinceTOC), TimeSinceToc = records.Max(r => r.TimeSinceTOC),
CalibrationChargeRequested = records.Any(r => r.CalibrationChargeRequested), // we changed this to Any instead of All, it's mean we wait only one battery to reach the 14 days CalibrationChargeRequested = records.All(r => r.CalibrationChargeRequested), // we changed this to All instead of Any, it's mean we wait for all batteries to reach the 14 days
Dc = new() Dc = new()
{ {