Пример #1
0
 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;
     }
 }
Пример #2
0
 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());
     }
 }
Пример #3
0
 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());
     }
 }
Пример #4
0
 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";
     }
 }
Пример #5
0
 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());
     }
 }
Пример #6
0
        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());
            }
        }
Пример #7
0
 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());
     }
 }
Пример #8
0
 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());
     }
 }
Пример #9
0
 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());
     }
 }
Пример #10
0
 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;
     }
 }
Пример #11
0
        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);
            }
        }
Пример #12
0
 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());
     }
 }
Пример #13
0
        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;
            }
        }
Пример #14
0
        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());
            }
        }