Class EnergyMeter3Module
Defined in File EnergyMeter3Module.hpp
Inheritance Relationships
Base Type
public Module
(Class Module)
Class Documentation
-
class EnergyMeter3Module : public Module
This class represents the 3 Phase Energy Meters Module connected via eMOD bus to controller module. This module is a three-phase 4 quadrants energy meter that allows to monitor the electrical parameters of your installation including active energy, reactive energy, voltage, current, power, maximum demand and more.
Class example 1
/* * This example uses a EnergyMeter3Module to configure and display some meters. */ #include "EnergyMeter3Module.hpp" #include "EmodRetMng.hpp" #include "HAL.hpp" int main() { EnergyMeter3Module module; if (module.init() != 0) { printf("Module could not be initialized!\n"); return 1; } // Configures transformers, work mode and metering standard module.configCurrentFullScale(1000, 1000, 1000); module.configVoltageFullScale(230, 230, 230); module.configSecondaryVoltageFullScale(230, 230, 230); module.configCurrentDirection(true, false, true); uint16_t work_mode = 0; module.configWorkMode(work_mode); uint16_t metering_standard = 0; module.configMeteringStandard(metering_standard); // Gets the power and energy measurements of phase 1 PhasePowerParameters power_L1; EnergyParameters energy_L1; while (1) { if(module.getPowerParameters(1, &power_L1) == EmodRetOk){ printf("Power-Phase-L1 Voltage=%010.3f V Current =%010.3f A Frequency =%010.3f Hz Cosine =%010.3f Angle =%010.3f º\n", power_L1.voltage, power_L1.current, power_L1.frequency, power_L1.cosine, power_L1.angle); printf(" ActivePower=%010.3f kW AparentPower=%010.3f kVA ReactivePower =%010.3f kVAr\n", power_L1.active_power, power_L1.aparent_power, power_L1.reactive_power); printf(" /*EXPORTED*/ ActivePower=%010.3f kW AparentPower=%010.3f kVA InductivePower=%010.3f kVArl CapacitivePower=%010.3f kVArc\n", power_L1.exported_active_power, power_L1.exported_aparent_power, power_L1.exported_inductive_power, power_L1.exported_capacitive_power); printf(" /*IMPORTED*/ ActivePower=%010.3f kW AparentPower=%010.3f kVA InductivePower=%010.3f kVArl CapacitivePower=%010.3f kVArc\n", power_L1.imported_active_power, power_L1.imported_aparent_power, power_L1.imported_inductive_power, power_L1.imported_capacitive_power); printf(" MaximumPower(15')=%010.3f kW \n\n", power_L1.maximeter); } if(module.getEnergyParameters(1, &energy_L1) == EmodRetOk){ printf("Energy-Phase-L1 ActiveEnergy=%010.3f kWh AparentEnergy=%010.3f kVAh InductiveEnergy=%010.3f kVArlh CapacitiveEnergy=%010.3f kVArch\n", energy_L1.active_energy, energy_L1.aparent_energy, energy_L1.inductive_energy, energy_L1.capacitive_energy); printf(" /*EXPORTED*/ ActiveEnergy=%010.3f kWh AparentEnergy=%010.3f kVAh InductiveEnergy=%010.3f kVArlh CapacitiveEnergy=%010.3f kVArch\n", energy_L1.exported_active_energy, energy_L1.exported_aparent_energy, energy_L1.exported_inductive_energy, energy_L1.exported_capacitive_energy); printf(" /*IMPORTED*/ ActiveEnergy=%010.3f kWh AparentEnergy=%010.3f kVAh InductiveEnergy=%010.3f kVArlh CapacitiveEnergy=%010.3f kVArch\n\n", energy_L1.imported_active_energy, energy_L1.imported_aparent_energy, energy_L1.imported_inductive_energy, energy_L1.imported_capacitive_energy); } } }
Public Functions
-
EnergyMeter3Module()
-
~EnergyMeter3Module()
-
EmodRet init(const ModuleType em3_type = ModuleType::typeEM3, const EnergyMeter3ModuleCallback_Type callback_func = nullptr, void *const callback_context = nullptr, const uint8_t variant = 1)
Initialize module. It is important to emphasize that init() method is mandatory to call it and must be called always after instantiating the module. It can be called several times, each of which the module is initialized again.
- Parameters
callback_func(optional) -- [in] function that will be called when a configured event occurs.
callback_context(optional) -- [in] context that will be passed to the callback function.
variant(optional) -- [in] identifies the module in case more than one module of the same type are present.
-
EmodRet init(const ModuleType em3_type, const EnergyMeter3ModuleCookedCallback_Type callback_func, void *const callback_context, const uint8_t variant)
-
EmodRet init(const uint8_t variant)
Initialize module. It is important to emphasize that init() method is mandatory to call it and must be called always after instantiating the module. It can be called several times, each of which the module is initialized again.
- Parameters
variant -- [in] identifies the module in case more than one module of the same type are present.
-
EmodRet configCurrentFullScale(const float full_current_L1, const float full_current_L2, const float full_current_L3)
Configs the full scale amperage, 1:N ratio of the current transformer. Secondary full scale is 1 Amper (typeEM3) or 250mA (typeEM3_250).
- Parameters
full_current_L1 -- [in] full scale or ratio of conversion of the transformer (clamp, tiroidal, ...) at L1.
full_current_L2 -- [in] full scale or ratio of conversion of the transformer (clamp, tiroidal, ...) at L2.
full_current_L3 -- [in] full scale or ratio of conversion of the transformer (clamp, tiroidal, ...) at L3.
-
EmodRet configVoltageFullScale(const float full_voltage_L1, const float full_voltage_L2, const float full_voltage_L3)
Configs the full scale of the primary voltage of the transformer. If no transformer is present, this value should be the means voltage, ex. 230V
- Parameters
full_voltage_L1 -- [in] full scale of the transformer's primary at L1.
full_voltage_L2 -- [in] full scale of the transformer's primary at L2.
full_voltage_L3 -- [in] full scale of the transformer's primary at L3.
-
EmodRet configSecondaryVoltageFullScale(const float full_voltage_L1, const float full_voltage_L2, const float full_voltage_L3)
Configs the full scale of the secondary voltage of the transformer. In most scenarios this value is 230V. Note: this might fail with an EmodRetErrOldFirmware return error if Firmware is outdated. Contact us for a solution.
- Parameters
full_voltage_L1 -- [in] full scale of the transformer's secondary at L1.
full_voltage_L2 -- [in] full scale of the transformer's secondary at L2.
full_voltage_L3 -- [in] full scale of the transformer's secondary at L3.
-
EmodRet configCurrentDirection(const bool current_direction_L1, const bool current_direction_L2, const bool current_direction_L3)
Configs the current direction of each phase. The current direction will be reversed if it is set to true.
- Parameters
current_direction_L1 -- [in] current direction at L1.
current_direction_L2 -- [in] current direction at L2.
current_direction_L3 -- [in] current direction at L3.
-
EmodRet configWorkMode(const uint16_t mode)
Configs the work mode as explained in SEM Three manual
- Parameters
mode -- [in] Mode 0 (All L1, L2 & L3 are single phased), Mode 1 (L2 & L3 are single phased, L1 isequilibrated three phased), Mode 2 (L3 is single phased, L1 & L2 are equilibrated three phased), Mode 3 (All L1, L2 & L3 are equilibrated three phased).
-
EmodRet configMeteringStandard(const uint16_t standard)
Configs the metering standard
- Parameters
standard -- [in] 0 (Circutor), 1 (IEC62053-23), 2 (IEEE 1459-2000)
-
EmodRet getCurrentFullScale(float *full_current_L1, float *full_current_L2, float *full_current_L3)
Gets the full scale amperage, 1:N ratio of the current transformer.
- Parameters
full_current_L1 -- [in] full scale or ratio of conversion of the transformer (clamp, tiroidal, ...) at L1.
full_current_L2 -- [in] full scale or ratio of conversion of the transformer (clamp, tiroidal, ...) at L2.
full_current_L3 -- [in] full scale or ratio of conversion of the transformer (clamp, tiroidal, ...) at L3.
-
EmodRet getVoltageFullScale(float *full_voltage_L1, float *full_voltage_L2, float *full_voltage_L3)
Gets the full scale of the primary voltage of the transformer.
- Parameters
full_voltage_L1 -- [in] full scale of the transformer's primary at L1.
full_voltage_L2 -- [in] full scale of the transformer's primary at L2.
full_voltage_L3 -- [in] full scale of the transformer's primary at L3.
-
EmodRet getSecondaryVoltageFullScale(float *full_voltage_L1, float *full_voltage_L2, float *full_voltage_L3)
Gets the full scale of the secondary voltage of the transformer.
- Parameters
full_voltage_L1 -- [in] full scale of the transformer's secondary at L1.
full_voltage_L2 -- [in] full scale of the transformer's secondary at L2.
full_voltage_L3 -- [in] full scale of the transformer's secondary at L3.
-
EmodRet getCurrentDirection(bool *current_direction_L1, bool *current_direction_L2, bool *current_direction_L3)
Gets the current direction of each phase. The current direction is reversed if set to true.
- Parameters
current_direction_L1 -- [in] current direction at L1.
current_direction_L2 -- [in] current direction at L2.
current_direction_L3 -- [in] current direction at L3.
-
EmodRet getWorkMode(uint16_t *mode)
Gets the work mode as explained in SEM Three manual
- Parameters
mode -- [out] Mode 0 (All L1, L2 & L3 are single phased), Mode 1 (L2 & L3 are single phased, L1 isequilibrated three phased), Mode 2 (L3 is single phased, L1 & L2 are equilibrated three phased), Mode 3 (All L1, L2 & L3 are equilibrated three phased).
-
EmodRet getMeteringStandard(uint16_t *standard)
Gets the metering standard
- Parameters
standard -- [out] 0 (Circutor), 1 (IEC62053-23), 2 (IEEE 1459-2000)
-
EmodRet getPowerParameters(const int32_t phase, PhasePowerParameters *parameters)
Gets all the power parameters for a given phase
- Parameters
phase -- [in] integer corresponding to phases L1 L2 L3.
parameters -- [out] Structured list of parameters as seen in EnergyMeterParameters.hpp
-
EmodRet getEnergyParameters(const int32_t phase, EnergyParameters *parameters)
Gets all the energy parameters for a given phase
- Parameters
phase -- [in] integer corresponding to phases L1 L2 L3.
parameters -- [out] Structured list of parameters as seen in EnergyMeterParameters.hpp
-
EmodRet getPowerParameters_L123Combined(CombinedPowerParameters *parameters)
Gets all the power parameters for the combination of the three phases
- Parameters
parameters -- [out] Structured list of parameters as seen in EnergyMeterParameters.hpp
-
EmodRet getEnergyParameters_L123Combined(EnergyParameters *parameters)
Gets all the energy parameters for the combination of the three phases
- Parameters
parameters -- [out] Structured list of parameters as seen in EnergyMeterParameters.hpp
Protected Attributes
-
EnergyMeterFunctions *energy_meter
-
EnergyMeter3ModuleCookedCallback_Type cooked_callback_func_
-
void *callback_ctx_
Protected Static Functions
-
static void cookedCallback(const uint8_t *data, const uint16_t data_len, const uint8_t id_function, void *ctx)
-
EnergyMeter3Module()