package dataStruct import "MeterService/core/logger" type MeterCalcParam struct { Id string //电表编码 Time int64 //计算日期 PowerRate CalcPowerRate //负荷率 TotalEnergy CalcDataEnergy //总电能 DayTotalEnergy CalcDataEnergy //日总电能 isClean bool } // CalcPowerRate 负荷率 type CalcPowerRate struct { SumPower float32 //有功功率总和 MaxPower float32 //最大有功功率 Count int //有功功率个数 } // CalcDataEnergy 电能 type CalcDataEnergy struct { Tp float32 Tq float32 Fp float32 Fq float32 } // CalcAndSetPowerRate 计算负荷率 func (m *MeterCalcParam) CalcAndSetPowerRate(colData *CollectData) float32 { m.PowerRate.Count++ m.PowerRate.SumPower += colData.P if m.PowerRate.MaxPower < colData.P { m.PowerRate.MaxPower = colData.P } return m.CalcRate() } // CalcRate 计算负荷率 func (m *MeterCalcParam) CalcRate() float32 { pv := float32(0) if m.PowerRate.MaxPower > float32(0.0001) && m.PowerRate.Count > 0 { pv = m.PowerRate.SumPower / (float32(m.PowerRate.Count) * m.PowerRate.MaxPower) } return pv } // ClearDayEnergy 日总电能清零 func (m *MeterCalcParam) ClearDayEnergy() { m.DayTotalEnergy.Tp = 0 m.DayTotalEnergy.Tq = 0 m.DayTotalEnergy.Fp = 0 m.DayTotalEnergy.Fq = 0 m.PowerRate.Count = 0 m.PowerRate.MaxPower = 0 m.PowerRate.SumPower = 0 logger.Debug("计算电表数据清零") m.isClean = true } // CalcAndSetDayEnergy 计算并设置日电能 func (m *MeterCalcParam) CalcAndSetDayEnergy(colData *CollectData) { if m.isClean { m.isClean = false logger.Debug("当日电表日电能第一次采集 电表编码: %s", colData.Slave.NO) return } m.DayTotalEnergy.Tp += colData.Tps - m.TotalEnergy.Tp m.DayTotalEnergy.Tq += colData.Tqs - m.TotalEnergy.Tq m.DayTotalEnergy.Fp += colData.Fps - m.TotalEnergy.Fp m.DayTotalEnergy.Fq += colData.Fqs - m.TotalEnergy.Fq } // SetTotalEnergy 设置总电能 func (m *MeterCalcParam) SetTotalEnergy(colData *CollectData) { m.TotalEnergy.Tp = colData.Tps m.TotalEnergy.Tq = colData.Tqs m.TotalEnergy.Fp = colData.Fps m.TotalEnergy.Fq = colData.Fqs }