meterCalcParam.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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.PowerRate.Count = 0
  47. m.PowerRate.MaxPower = 0
  48. m.PowerRate.SumPower = 0
  49. m.isClean = true
  50. }
  51. // CalcAndSetDayEnergy 计算并设置日电能
  52. func (m *MeterCalcParam) CalcAndSetDayEnergy(colData *CollectData) {
  53. if m.isClean {
  54. m.isClean = false
  55. return
  56. }
  57. m.DayTotalEnergy.Tp += colData.Tps - m.TotalEnergy.Tp
  58. m.DayTotalEnergy.Tq += colData.Tqs - m.TotalEnergy.Tq
  59. m.DayTotalEnergy.Fp += colData.Fps - m.TotalEnergy.Fp
  60. m.DayTotalEnergy.Fq += colData.Fqs - m.TotalEnergy.Fq
  61. }
  62. // SetTotalEnergy 设置总电能
  63. func (m *MeterCalcParam) SetTotalEnergy(colData *CollectData) {
  64. m.TotalEnergy.Tp = colData.Tps
  65. m.TotalEnergy.Tq = colData.Tqs
  66. m.TotalEnergy.Fp = colData.Fps
  67. m.TotalEnergy.Fq = colData.Fqs
  68. }