meterCalcParam.go 2.1 KB

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