private void UpdateChargeData(object sender, EventArgs e)
        {
            Battery battery = BatteryChargeService.Instance.BatteryService.BatteryData;

            ChargeData chargeData = new ChargeData
            {
                DateTime        = DateTime.Now,
                SOC             = battery.SOCPercentage,
                ChargeCurrentA  = BatteryChargeService.Instance.ChargerActualCurrent,
                ChargeVoltagemV = BatteryChargeService.Instance.ChargerActualVoltage,
                PackmA          = battery.BatteryCurrent,
                PackmV          = battery.BatteryVoltage,
                MinCellmV       = battery.MinCellVoltage,
                MaxCellmV       = battery.MaxCellVoltage,
                MinCellTemp     = battery.MinCellTemp,
                MaxCellTemp     = battery.MaxCellTemp,
                BalanceVoltageThresholdFalling = battery.BalanceVoltageThresholdFalling,
                BalanceVoltageThresholdRising  = battery.BalanceVoltageThresholdRising,
                ChargeCellVoltageError         = battery.MinChargeCellVoltageError,
                DischargeCellVoltageError      = battery.MinDischargeCellVoltageError
            };

            if (BatteryChargeService.Instance.IsCharging && BatteryDischargeService.Instance.IsDischarging)
            {
                chargeData.State = ChargeData.STATE_ERROR;
            }
            else if (BatteryChargeService.Instance.IsCharging)
            {
                chargeData.State = ChargeData.STATE_CHARGE;
            }
            else if (BatteryDischargeService.Instance.IsDischarging)
            {
                chargeData.State = ChargeData.STATE_DISCHARGE;
            }
            else
            {
                chargeData.State = ChargeData.STATE_IDLE;
            }
            chargeDataSet.Add(chargeData);

            BatteryMonitorUpdateEventHandler?.Invoke(new ChargeDataReceivedEventArgs(chargeData));
        }
Beispiel #2
0
        private void UpdateChargeData(object sender, EventArgs e)
        {
            Battery battery = BatteryChargeService.Instance.BatteryService.BatteryData;

            ChargeData chargeData = new ChargeData
            {
                DateTime        = DateTime.Now,
                SOC             = battery.SOCPercentage,
                ChargeCurrentA  = BatteryChargeService.Instance.ChargerActualCurrent,
                ChargeVoltagemV = BatteryChargeService.Instance.ChargerActualVoltage,
                PackmA          = battery.BatteryCurrent,
                PackmV          = battery.BatteryVoltage,
                MinCellmV       = battery.MinCellVoltage,
                MaxCellmV       = battery.MaxCellVoltage,
                MinCellTemp     = battery.MinCellTemp,
                MaxCellTemp     = battery.MaxCellTemp,
                BalanceVoltageThresholdFalling = battery.BalanceVoltageThresholdFalling,
                BalanceVoltageThresholdRising  = battery.BalanceVoltageThresholdRising,
                ChargeCellVoltageError         = battery.MinChargeCellVoltageError,
                DischargeCellVoltageError      = battery.MinDischargeCellVoltageError
            };

            if (BatteryChargeService.Instance.IsCharging && BatteryDischargeService.Instance.IsDischarging)
            {
                chargeData.State = ChargeData.STATE_ERROR;
            }
            else if (BatteryChargeService.Instance.IsCharging)
            {
                chargeData.State = ChargeData.STATE_CHARGE;
            }
            else if (BatteryDischargeService.Instance.IsDischarging)
            {
                chargeData.State = ChargeData.STATE_DISCHARGE;
            }
            else
            {
                chargeData.State = ChargeData.STATE_IDLE;
            }

            // Add all of the CMU voltages
            foreach (BMU bmu in battery.GetActiveBMUs())
            {
                foreach (CMU cmu in bmu.GetActiveCMUs())
                {
                    if (cmu.State == CanReceivingNode.STATE_ON)
                    {
                        uint?[] voltages = new uint?[9];
                        voltages[0] = cmu.Cell0mV;
                        voltages[1] = cmu.Cell1mV;
                        voltages[2] = cmu.Cell2mV;
                        voltages[3] = cmu.Cell3mV;
                        voltages[4] = cmu.Cell4mV;
                        voltages[5] = cmu.Cell5mV;
                        voltages[6] = cmu.Cell6mV;
                        voltages[7] = cmu.Cell7mV;
                        voltages[8] = (uint?)cmu.SerialNumber;


                        if (chargeData.CellVoltages == null)
                        {
                            chargeData.CellVoltages = new List <uint?[]>();
                        }
                        chargeData.CellVoltages.Add(voltages);
                    }
                }
            }

            chargeDataSet.Add(chargeData);

            if (IsSavingCharge)
            {
                SaveChargeData(chargeData);
            }

            BatteryMonitorUpdateEventHandler?.Invoke(new ChargeDataReceivedEventArgs(chargeData));
        }