1 # Copyright (C) 2010 Richard Lincoln
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA, USA
17 from CIM14
.IEC61968
.Metering
.DeviceFunction
import DeviceFunction
19 class ElectricMeteringFunction(DeviceFunction
):
20 """Functionality performed by an electric meter.
23 def __init__(self
, billingMultiplierApplied
=False, kWMultiplier
=0, demandMultiplier
=0.0, demandMultiplierApplied
=False, transformerRatiosApplied
=False, voltageRating
=0.0, billingMultiplier
=0.0, transformerVTRatio
=0.0, kWhMultiplier
=0, transformerCTRatio
=0.0, currentRating
=0.0, *args
, **kw_args
):
24 """Initialises a new 'ElectricMeteringFunction' instance.
26 @param billingMultiplierApplied: True if the billingMultiplier ratio has already been applied to the associated quantities.
27 @param kWMultiplier: Meter kW (pulse) multiplier, used as a multiplier for a meter register reading to determine the actual amount of usage for which to bill a customer.
28 @param demandMultiplier: An additional multiplier that may be used for normalization of the demand value to an hourly value. For example, if the demand interval were set to 15 min, the demand multiplier would be 4. If the meter design is such that the demand value reported and displayed is compensated for by the meter itself and no additional scaling is required outside of the meter, the value of the demand multiplier should be '1'.
29 @param demandMultiplierApplied: True if the demandMultiplier ratio has already been applied to the associated quantities.
30 @param transformerRatiosApplied: True if transformer ratios have been already applied to the associated quantities.
31 @param voltageRating: The service voltage at which the meter is designed to operate. Typical voltage ratings in North America are 120 V, 240 V, 277 V or 480 V.
32 @param billingMultiplier: Customer billing value = meter multiplier * transformer ratios * reading value. The multiplier identifies the scaling value to apply to the reported value after delivery of the tagged item.
33 @param transformerVTRatio: Voltage transformer ratio used to convert associated quantities to real measurements.
34 @param kWhMultiplier: Meter kWh multiplier, used as a multiplier for a meter register reading to determine the actual amount of usage for which to bill a customer.
35 @param transformerCTRatio: Current transformer ratio used to convert associated quantities to real measurements.
36 @param currentRating: The current class of the meter. Typical current classes in North America are 10 A, 20 A, 100 A, 200 A, or 320 A.
38 #: True if the billingMultiplier ratio has already been applied to the associated quantities.
39 self
.billingMultiplierApplied
= billingMultiplierApplied
41 #: Meter kW (pulse) multiplier, used as a multiplier for a meter register reading to determine the actual amount of usage for which to bill a customer.
42 self
.kWMultiplier
= kWMultiplier
44 #: An additional multiplier that may be used for normalization of the demand value to an hourly value. For example, if the demand interval were set to 15 min, the demand multiplier would be 4. If the meter design is such that the demand value reported and displayed is compensated for by the meter itself and no additional scaling is required outside of the meter, the value of the demand multiplier should be '1'.
45 self
.demandMultiplier
= demandMultiplier
47 #: True if the demandMultiplier ratio has already been applied to the associated quantities.
48 self
.demandMultiplierApplied
= demandMultiplierApplied
50 #: True if transformer ratios have been already applied to the associated quantities.
51 self
.transformerRatiosApplied
= transformerRatiosApplied
53 #: The service voltage at which the meter is designed to operate. Typical voltage ratings in North America are 120 V, 240 V, 277 V or 480 V.
54 self
.voltageRating
= voltageRating
56 #: Customer billing value = meter multiplier * transformer ratios * reading value. The multiplier identifies the scaling value to apply to the reported value after delivery of the tagged item.
57 self
.billingMultiplier
= billingMultiplier
59 #: Voltage transformer ratio used to convert associated quantities to real measurements.
60 self
.transformerVTRatio
= transformerVTRatio
62 #: Meter kWh multiplier, used as a multiplier for a meter register reading to determine the actual amount of usage for which to bill a customer.
63 self
.kWhMultiplier
= kWhMultiplier
65 #: Current transformer ratio used to convert associated quantities to real measurements.
66 self
.transformerCTRatio
= transformerCTRatio
68 #: The current class of the meter. Typical current classes in North America are 10 A, 20 A, 100 A, 200 A, or 320 A.
69 self
.currentRating
= currentRating
71 super(ElectricMeteringFunction
, self
).__init
__(*args
, **kw_args
)
73 _attrs
= ["billingMultiplierApplied", "kWMultiplier", "demandMultiplier", "demandMultiplierApplied", "transformerRatiosApplied", "voltageRating", "billingMultiplier", "transformerVTRatio", "kWhMultiplier", "transformerCTRatio", "currentRating"]
74 _attr_types
= {"billingMultiplierApplied": bool, "kWMultiplier": int, "demandMultiplier": float, "demandMultiplierApplied": bool, "transformerRatiosApplied": bool, "voltageRating": float, "billingMultiplier": float, "transformerVTRatio": float, "kWhMultiplier": int, "transformerCTRatio": float, "currentRating": float}
75 _defaults
= {"billingMultiplierApplied": False, "kWMultiplier": 0, "demandMultiplier": 0.0, "demandMultiplierApplied": False, "transformerRatiosApplied": False, "voltageRating": 0.0, "billingMultiplier": 0.0, "transformerVTRatio": 0.0, "kWhMultiplier": 0, "transformerCTRatio": 0.0, "currentRating": 0.0}