meterCalcParam.go 2.1 KB

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