private static void ReadMaximums(RS232 paracom, ValenceBattery paramBattery) { try { paracom.Write(paramBattery.BatteryMaximumRead()); if (paracom.Read(21) == -1) { throw new Exception("Read Maximums Error!"); } if (!paramBattery.BatteryMaximumReturn(paracom.InputStream)) { throw new Exception("Read Maximums Error!"); } Console.WriteLine($"Max Temp (life)): {Convert.ToString(paramBattery.MaxBattLifeTemperature)}"); Console.WriteLine($"Min Temp (life): {Convert.ToString(paramBattery.MinBattLifeTemperature)}"); Console.WriteLine($"Max Cell Voltage: { Convert.ToString(paramBattery.MaximumCellVolt)}"); Console.WriteLine($"Min Cell Voltage: { Convert.ToString(paramBattery.MinimumCellVolt)}"); Console.WriteLine($"Fault Oscillator Count: { Convert.ToString(paramBattery.FaultOscillatorCount.ToString())}"); Console.WriteLine($"Fault Memory Access Count: { Convert.ToString(paramBattery.FaultMemAccessCount.ToString())}"); } catch (Exception ex) { throw ex; } }
private static void ReadStatusByte(RS232 paramcom, ValenceBattery parambattery) { try { paramcom.Write(parambattery.BatteryStatusRead()); if (paramcom.Read(9) != -1) { if (!parambattery.BatteryStatusReturn(paramcom.InputStream)) { throw new Exception("Read Battery Status Error"); } Console.WriteLine("Battery Status Flags"); Console.WriteLine($"Under 2.3V: {parambattery.fault_UV2v3}"); Console.WriteLine($"Under 2.5V: {parambattery.fault_UV2v5}"); // Console.WriteLine($"Under 2.3V w/ Chg Curr: ") Console.WriteLine($"Exceed 4V: {parambattery.fault_OV4v0}"); Console.WriteLine($"Exceed 4.5V: {parambattery.fault_OV4v5}"); Console.WriteLine($"Cell Over 60c: {parambattery.fault_OTcell60c}"); Console.WriteLine($"Cell Over 65c: {parambattery.fault_OTcell65c}"); Console.WriteLine($"PCBA Over 80c: {parambattery.fault_OTpcba80c}"); Console.WriteLine($"Cell Over 100c: {parambattery.fault_OTpcba100c}"); Console.WriteLine($"NMI Error: {parambattery.fault_NMIFailure}"); Console.WriteLine($"Battery Failure: {parambattery.fault_WeakCellBank}"); } } catch (Exception ex) { throw new Exception(ex.Message.ToString()); } }
private static void ReadEventLog(RS232 paracom, ValenceBattery paramBattery) { try { paracom.Write(paramBattery.EventLogRead()); if (paracom.Read(30) == -1) { throw new Exception("Read Event Log Error!"); } if (!paramBattery.EventLogReturn(paracom.InputStream)) { throw new Exception("Read Event Log Error!"); } Console.WriteLine($"Max Temp: {Convert.ToString(paramBattery.HTLimit)}"); Console.WriteLine($"Min Temp: {Convert.ToString(paramBattery.LTLimit)}"); Console.WriteLine($"MaxDschrgCurrent: {Convert.ToString(paramBattery.MaxDschrgCurrent)}"); Console.WriteLine($"MaxChrgCurrent: {Convert.ToString(paramBattery.MaxChrgCurrent)}"); Console.WriteLine($"CalibrationCorrection: {Convert.ToString(paramBattery.CalibrationCorrection)}"); Console.WriteLine($"ExceedHighOutput: {Convert.ToString(paramBattery.ExceedHighOutput)}"); Console.WriteLine($"DischargeCutoff: {Convert.ToString(paramBattery.DischargeCutoff)}"); Console.WriteLine($"ChargeCutoff: {Convert.ToString(paramBattery.ChargeCutoff)}"); Console.WriteLine($"CommunicationErrors: {Convert.ToString(paramBattery.CommunicationErrors)}"); Console.WriteLine($"IntraModuleBalanceCount: {Convert.ToString(paramBattery.IntraModuleBalanceCount)}"); Console.WriteLine($"InterModuleBalanceCount: {Convert.ToString(paramBattery.InterModuleBalanceCount)}"); } catch (Exception ex) { throw new Exception(ex.Message.ToString()); } }
private static void ReadRev2Data(RS232 paramcom, ValenceBattery parambattery) { try { ReadMaximums(paramcom, parambattery); ReadCalCycleCount(paramcom, parambattery); ReadStatusByte(paramcom, parambattery); if (parambattery.HardwareRevision == 2) { ReadWattHour(paramcom, parambattery); ReadEventLog(paramcom, parambattery); ReadEventLog2(paramcom, parambattery); if (parambattery.Balancing) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Balance Active"); Console.ForegroundColor = ConsoleColor.White; } else { Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("Balance Inactive"); Console.ForegroundColor = ConsoleColor.White; } Console.WriteLine($"Battery Failure? {parambattery.fault_BatteryFailure}"); } else { } } catch (Exception ex) { strErrorMessage = "Communication Error"; } }
private static void ReadEventLog2(RS232 paracom, ValenceBattery paramBattery) { try { paracom.Write(paramBattery.EventLog2Read()); if (paracom.Read(43) == -1) { throw new Exception("Read Event Log 2 Error"); } if (!paramBattery.EventLog2Return(paracom.InputStream)) { throw new Exception("Read Event Log 2 Error"); } Console.WriteLine($"Fault_UV_S: {paramBattery.Fault_UV_S.ToString()}"); Console.WriteLine($"Fault_OV_S: {paramBattery.Fault_OV_S.ToString()}"); Console.WriteLine($"Fault_OCC_S: {paramBattery.Fault_OCC_S.ToString()}"); Console.WriteLine($"Fault_OCD_S: {paramBattery.Fault_OCD_S.ToString()}"); Console.WriteLine($"Fault_UT_S: {paramBattery.Fault_UT_S.ToString()}"); Console.WriteLine($"Fault_OT_S: {paramBattery.Fault_OT_S.ToString()}"); Console.WriteLine($"Reset Count: {paramBattery.ResetCount.ToString()}"); } catch (Exception ex) { throw new Exception(ex.Message.ToString()); } }
private static void ReadBatteryTemperature(RS232 paramcom, ValenceBattery paramBattery) { try { paramcom.Write(paramBattery.TempRead()); if (paramcom.Read(21) == -1) { throw new Exception("Read Temperature Error!"); } if (!paramBattery.TempReturn(paramcom.InputStream)) { throw new Exception("Read Temperature Error!"); } strCellTemp[0] = Convert.ToString(paramBattery.TEMP1); strCellTemp[1] = Convert.ToString(paramBattery.TEMP2); strCellTemp[2] = Convert.ToString(paramBattery.TEMP3); strCellTemp[3] = Convert.ToString(paramBattery.TEMP4); //strCellTemp[4] = Convert.ToString(paramBattery.TEMP5); //strCellTemp[5] = Convert.ToString(paramBattery.TEMP6); strPCBATemp = Convert.ToString(paramBattery.TEMPPCB); Console.WriteLine($"C1 Temp: {Convert.ToString(paramBattery.TEMP1)}"); Console.WriteLine($"C2 Temp: {Convert.ToString(paramBattery.TEMP2)}"); Console.WriteLine($"C3 Temp: {Convert.ToString(paramBattery.TEMP3)}"); Console.WriteLine($"C4 Temp: {Convert.ToString(paramBattery.TEMP4)}"); Console.WriteLine($"PCBA Temp: {Convert.ToString(paramBattery.TEMPPCB)}"); } catch (Exception ex) { strErrorMessage = "Communication Error"; WriteError(ex.Message.ToString()); } }
private static void ReadBatteryBalanceStatus(RS232 paramcom, ValenceBattery paramBattery) { try { paramcom.Write(paramBattery.BalanceReadSend()); if (paramcom.Read(9) == -1) { throw new Exception("Read SOC Error!"); } if (paramBattery.BalanceReadReturn(paramcom.InputStream)) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Balance: Enabled"); Console.ForegroundColor = ConsoleColor.White; } else { Console.Write("Balance: "); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Disabled"); Console.ForegroundColor = ConsoleColor.White; } } catch (Exception ex) { throw new Exception(ex.Message.ToString()); } }
private static void ReadWattHour(RS232 paramcom, ValenceBattery parambattery) { try { paramcom.Write(parambattery.BatteryWHRead()); if (paramcom.Read(11) != -1) { if (!parambattery.BatteryWHReturn(paramcom.InputStream)) { throw new Exception("Read Watt Hour Error"); } Console.WriteLine($"Watt Hours: {Convert.ToString(parambattery.WattHour)}"); } } catch (Exception ex) { throw new Exception(ex.Message.ToString()); } }
private static void ReadBatterySocRefresh(RS232 paramcom, ValenceBattery paramBattery) { try { paramcom.Write(paramBattery.SNSOCReadSend()); if (paramcom.Read(23) == -1) { throw new Exception("Read SOC Error on SNSOCReadSend!"); } if (!paramBattery.SNSOCReadReturn(paramcom.InputStream)) { throw new Exception("Read SOC Error on SNSOCReadReturn!"); } } catch (Exception ex) { throw new Exception(ex.Message.ToString()); } }
private static void ReadCalCycleCount(RS232 paracom, ValenceBattery paramBattery) { try { paracom.Write(paramBattery.BatteryCycleRead()); if (paracom.Read(11) == -1) { throw new Exception("Read Num Cycle Error!"); } if (!paramBattery.BatteryCycleReturn(paracom.InputStream)) { throw new Exception("Read Num Cycle Error!"); } Console.WriteLine($"NumChargeDischargeCycle: {Convert.ToString(paramBattery.NumChargeDischargeCycle)}"); Console.WriteLine($"NumHardwareCalibration: {Convert.ToString(paramBattery.NumHardwareCalibration)}"); } catch (Exception ex) { throw ex; } }
private static void Openbalancing(RS232 paramcom, ValenceBattery paramBattery) { var errorMsg = "Open balancing Return Error!"; try { paramcom.Write(paramBattery.OpenbalancingRead()); if (paramcom.Read(6) == -1) { throw new Exception(errorMsg); } if (!paramBattery.OpenbalancingReturn(paramcom.InputStream)) { throw new Exception(errorMsg); } } catch (Exception ex) { WriteError(ex.Message.ToString()); throw new Exception("Error during Open balancing check: " + ex.Message); } }
private static void ReadBatteryVersion(RS232 paramcom, ValenceBattery paramBattery) { try { paramcom.Write(paramBattery.BatteryVersionRead()); if (paramcom.Read(51) == -1) { throw new Exception("Read Battery Version Error!"); } if (!paramBattery.BatteryVersionReturn(paramcom.InputStream)) { throw new Exception("Read Battery Version Error!"); } Console.WriteLine($"Version: {paramBattery.Version}"); Console.WriteLine($"Firmware Date: {paramBattery.BuildRevision}"); Console.WriteLine($"Revision: {paramBattery.Revision}"); } catch (Exception ex) { throw new Exception(ex.Message.ToString()); } }
private static void ReadBatterySoc(RS232 paramcom, ValenceBattery paramBattery) { try { paramcom.Write(paramBattery.SNSOCReadSend()); if (paramcom.Read(23) == -1) { throw new Exception("Read SOC Error!"); } if (!paramBattery.SNSOCReadReturn(paramcom.InputStream)) { throw new Exception("Read SOC Error!"); } Console.WriteLine($"VerfN: {paramBattery.VerfN}"); Console.WriteLine($"VerfP: {paramBattery.VerfP}"); Console.WriteLine($"GainN: {paramBattery.GainN}"); Console.WriteLine($"GainP: {paramBattery.GainP}"); Console.WriteLine($"SoC: {Convert.ToString(Math.Round(paramBattery.SOC, 3))}"); Console.WriteLine($"Current: {paramBattery.CURRENT}"); Console.WriteLine($"Model: {paramBattery.MODEL}"); Console.WriteLine($"Serial Number: { Convert.ToInt32(paramBattery.SN).ToString("00000")}"); if (paramBattery.Bal_Cell_1) { //TxtStatusV1.BackColor = Color.PowderBlue; } else { //TxtStatusV1.BackColor = Color.White; } if (paramBattery.Bal_Cell_2) { //TxtStatusV2.BackColor = Color.PowderBlue; } else { //TxtStatusV2.BackColor = Color.White; } if (paramBattery.Bal_Cell_3) { //TxtStatusV3.BackColor = Color.PowderBlue; } else { //TxtStatusV3.BackColor = Color.White; } if (paramBattery.Bal_Cell_4) { //TxtStatusV4.BackColor = Color.PowderBlue; } else { //TxtStatusV4.BackColor = Color.White; } if (Convert.ToDouble(paramBattery.MODE) == 6.0) { if (paramBattery.Bal_Cell_5) { //TxtStatusV5.BackColor = Color.PowderBlue; } else { //TxtStatusV5.BackColor = Color.White; } if (paramBattery.Bal_Cell_6) { //TxtStatusV6.BackColor = Color.PowderBlue; } else { //TxtStatusV6.BackColor = Color.White; } } else { } } catch (Exception ex) { throw ex; } }
private static void ReadBatteryBankVoltage(RS232 paramcom, ValenceBattery paramBattery) { try { paramcom.Write(paramBattery.VoltRead()); if (paramcom.Read(25) == -1) { throw new Exception("Read Voltage Error!"); } if (!paramBattery.VoltReturn(paramcom.InputStream)) { throw new Exception("Read Voltage Error!"); } strCellVolt[0] = Convert.ToString(paramBattery.VOLT1); strCellVolt[1] = Convert.ToString(paramBattery.VOLT2); strCellVolt[2] = Convert.ToString(paramBattery.VOLT3); strCellVolt[3] = Convert.ToString(paramBattery.VOLT4); strModuleV = Convert.ToString(paramBattery.VOLTS); strCellVoltDiff = (checked (paramBattery.CellVoltage_Max - paramBattery.CellVoltage_Min) * 0.001m); strCellVoltMin = paramBattery.CellVoltage_Min * 0.001m; strCellVoltMax = paramBattery.CellVoltage_Max * 0.001m; Console.WriteLine($"C1 voltage: {strCellVolt[0]}"); Console.WriteLine($"C2 voltage: {strCellVolt[1]}"); Console.WriteLine($"C3 voltage: {strCellVolt[2]}"); Console.WriteLine($"C4 voltage: {strCellVolt[3]}"); Console.WriteLine($"Voltage: {strModuleV}"); Console.WriteLine($"Cell Voltage Difference: {Convert.ToString(strCellVoltDiff)}"); Console.WriteLine($"Cell Voltage Min: {Convert.ToString(strCellVoltMin)}"); Console.WriteLine($"Cell Voltage Max: {Convert.ToString(strCellVoltMax)}"); #region TODO in other software // monitoring TODO: implement things like this in the visual console that reads from the dataset directly** //if (strCellVoltDiff > strStandardVD) //{ // //TxtStatusVD.BackColor = Color.Pink; // //strVoltDiffStatus = "FAIL"; //} //else //{ // //TxtStatusVD.BackColor = Color.GreenYellow; // //strVoltDiffStatus = "PASS"; //} //if (strCellVoltMin < strStandardCellMin) //{ // //txtCellMin.BackColor = Color.Pink; // //strVoltMinStatus = "FAIL"; //} //else //{ // //txtCellMin.BackColor = Color.GreenYellow; // //strVoltMinStatus = "PASS"; //} //if (strCellVoltMax > strStandardCellMax) //{ // //txtCellMax.BackColor = Color.Pink; //} //else //{ // //txtCellMax.BackColor = Color.GreenYellow; //} #endregion } catch (Exception ex) { strErrorMessage = "Communication Error"; WriteError(ex.Message.ToString()); } }