meterCalcParam.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package dataStruct
  2. type MeterCalcParam struct {
  3. Id string //电表编码
  4. Time int64 //计算日期
  5. PowerRate CalcPowerRate //负荷率
  6. TotalEnergy CalcDataEnergy //总电能
  7. DayTotalEnergy CalcDataEnergy //日总电能
  8. isClean bool
  9. }
  10. // CalcPowerRate 负荷率
  11. type CalcPowerRate struct {
  12. SumPower float32 //有功功率总和
  13. MaxPower float32 //最大有功功率
  14. Count int //有功功率个数
  15. }
  16. // CalcDataEnergy 电能
  17. type CalcDataEnergy struct {
  18. Tp float32
  19. Tq float32
  20. Fp float32
  21. Fq float32
  22. }
  23. // CalcAndSetPowerRate 计算负荷率
  24. func (m *MeterCalcParam) CalcAndSetPowerRate(colData *CollectData) float32 {
  25. m.PowerRate.Count++
  26. m.PowerRate.SumPower += colData.P
  27. if m.PowerRate.MaxPower < colData.P {
  28. m.PowerRate.MaxPower = colData.P
  29. }
  30. return m.CalcRate()
  31. }
  32. // CalcRate 计算负荷率
  33. func (m *MeterCalcParam) CalcRate() float32 {
  34. pv := float32(0)
  35. if m.PowerRate.MaxPower > float32(0.0001) && m.PowerRate.Count > 0 {
  36. pv = m.PowerRate.SumPower / (float32(m.PowerRate.Count) * m.PowerRate.MaxPower)
  37. }
  38. return pv
  39. }
  40. // ClearDayEnergy 日总电能清零
  41. func (m *MeterCalcParam) ClearDayEnergy() {
  42. m.DayTotalEnergy.Tp = 0
  43. m.DayTotalEnergy.Tq = 0
  44. m.DayTotalEnergy.Fp = 0
  45. m.DayTotalEnergy.Fq = 0
  46. m.isClean = true
  47. }
  48. // CalcAndSetDayEnergy 计算并设置日电能
  49. func (m *MeterCalcParam) CalcAndSetDayEnergy(colData *CollectData) {
  50. if m.isClean {
  51. m.isClean = false
  52. return
  53. }
  54. m.DayTotalEnergy.Tp += colData.Tps - m.TotalEnergy.Tp
  55. m.DayTotalEnergy.Tq += colData.Tqs - m.TotalEnergy.Tq
  56. m.DayTotalEnergy.Fp += colData.Fps - m.TotalEnergy.Fp
  57. m.DayTotalEnergy.Fq += colData.Fqs - m.TotalEnergy.Fq
  58. }
  59. // SetTotalEnergy 设置总电能
  60. func (m *MeterCalcParam) SetTotalEnergy(colData *CollectData) {
  61. m.TotalEnergy.Tp = colData.Tps
  62. m.TotalEnergy.Tq = colData.Tqs
  63. m.TotalEnergy.Fp = colData.Fps
  64. m.TotalEnergy.Fq = colData.Fqs
  65. }