added TAC2100 support to _P078_Eastron plugin

This commit is contained in:
repa6
2025-08-02 13:30:18 +02:00
parent a180e3b920
commit f756bddb4d
4 changed files with 164 additions and 131 deletions
+37 -10
View File
@@ -235,16 +235,43 @@
#define DDM_IMPORT_REACTIVE_ENERGY 0x0400 // kVArh | 1 |
//---------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------
// REGISTERS LIST FOR DEVNAME DEVICE |
//---------------------------------------------------------------------------------------------------------
// REGISTER NAME REGISTER ADDRESS UNIT | DEVNAME |
//---------------------------------------------------------------------------------------------------------
//#define DEVNAME_VOLTAGE 0x0000 // V | 1 |
//#define DEVNAME_CURRENT 0x0002 // A | 1 |
//#define DEVNAME_POWER 0x0004 // W | 1 |
//---------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------
// REGISTERS LIST FOR TAC2100 DEVICE |
//-------------------------------------------------------------------------------------------------------------
// REGISTER NAME REGISTER ADDRESS UNIT | TAC2100 |
//-------------------------------------------------------------------------------------------------------------
#define TAC2100_PHASE_1_VOLTAGE 0x0000 // V | 1 |
#define TAC2100_PHASE_1_CURRENT 0x0006 // A | 1 |
#define TAC2100_PHASE_1_POWER 0x000C // W | 1 |
#define TAC2100_PHASE_1_APPARENT_POWER 0x0012 // VA | 1 |
#define TAC2100_PHASE_1_REACTIVE_POWER 0x0018 // VAr | 1 |
#define TAC2100_PHASE_1_POWER_FACTOR 0x001E // | 1 |
#define TAC2100_PHASE_1_ANGLE 0x0024 // Degrees | 1 |
#define TAC2100_FREQUENCY 0x0030 // Hz | 1 |
#define TAC2100_IMPORT_ACTIVE_ENERGY 0x0500 // kWh/MWh | 1 |
#define TAC2100_EXPORT_ACTIVE_ENERGY 0x0502 // kWh/MWh | 1 |
#define TAC2100_IMPORT_REACTIVE_ENERGY 0x0508 // kVArh/MVArh | 1 |
#define TAC2100_EXPORT_REACTIVE_ENERGY 0x050A // kVArh/MVArh | 1 |
#define TAC2100_TOTAL_SYSTEM_POWER_DEMAND 0x008C // W | 1 |
#define TAC2100_MAXIMUM_TOTAL_SYSTEM_POWER_DEMAND 0x00A2 // W | 1 |
#define TAC2100_CURRENT_SYSTEM_POSITIVE_POWER_DEMAND 0x009A // W | 1 |
#define TAC2100_MAXIMUM_SYSTEM_POSITIVE_POWER_DEMAND 0x00B0 // W | 1 |
#define TAC2100_CURRENT_SYSTEM_REVERSE_POWER_DEMAND 0x009C // W | 1 |
#define TAC2100_MAXIMUM_SYSTEM_REVERSE_POWER_DEMAND 0x00B2 // W | 1 |
#define TAC2100_PHASE_1_CURRENT_DEMAND 0x0092 // A | 1 |
#define TAC2100_MAXIMUM_PHASE_1_CURRENT_DEMAND 0x00A8 // A | 1 |
#define TAC2100_TOTAL_ACTIVE_ENERGY 0x0504 // kWh | 1 |
#define TAC2100_TOTAL_REACTIVE_ENERGY 0x050C // kVArh | 1 |
//-------------------------------------------------------------------------------------------------------------
// FURTHER REGISTERS NOT IMPLEMENTED YET |
//-------------------------------------------------------------------------------------------------------------
//#define TAC2100_REACTIVE_POWER_DEMAND 0x008E // VAr | 1 |
//#define TAC2100_APPARENT_POWER_DEMAND 0x0090 // VA | 1 |
//#define TAC2100_MAX_REACTIVE_POWER_DEMAND 0x00A4 // VAr | 1 |
//#define TAC2100_MAX_APPARENT_POWER_DEMAND 0x00A6 // VA | 1 |
//#define TAC2100_NATURE_OF_LOAD 0x004E // | 1 |
//TAC2100_NATURE_OF_LOAD: (Resistive=1, inductive=2, capacitive=3, Non Load=4) |
//-------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------
// REGISTERS LIST FOR DEVICE SETTINGS |
+5 -3
View File
@@ -3,13 +3,13 @@
#ifdef USES_P078
// #######################################################################################################
// ############## Plugin 078: SDM120/SDM120CT/220/230/630/72D/DDM18SD Eastron Energy Meter ###############
// ############## Plugin 078: SDM120/SDM120CT/220/230/630/72D/DDM18SD/TAC2100 Eastron Energy Meter ###############
// #######################################################################################################
/*
Plugin written by: Sergio Faustino sjfaustino__AT__gmail.com
This plugin reads available values of an Eastron SDM120C SDM120/SDM120CT/220/230/630/72D & also DDM18SD.
This plugin reads available values of an Eastron SDM120C SDM120/SDM120CT/220/230/630/72D & also DDM18SD and TAC2100.
*/
/** Changelog:
@@ -27,6 +27,7 @@
# define P078_NR_OUTPUT_OPTIONS_SDM630 86
# define P078_NR_OUTPUT_OPTIONS_SDM72D 9
# define P078_NR_OUTPUT_OPTIONS_DDM18SD 7
# define P078_NR_OUTPUT_OPTIONS_TAC2100 22
# include "src/PluginStructs/P078_data_struct.h"
@@ -191,7 +192,8 @@ boolean Plugin_078(uint8_t function, struct EventStruct *event, String& string)
F("DDM18SD"),
F("SDM630"),
F("SDM72_V2"),
F("SDM320C")
F("SDM320C"),
F("TAC2100")
};
constexpr size_t nrOptions = NR_ELEMENTS(options_model);
const FormSelectorOptions selector(nrOptions, options_model);
+117 -116
View File
@@ -11,122 +11,122 @@
// Uncrustify may mess up this nice table, so turn uncrustify off for this table.
// *INDENT-OFF*
constexpr p078_register_description register_description_list[] = {
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// REGISTERS LIST FOR SDM DEVICES |
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// REGISTER NAME REGISTER ADDRESS UNIT | phase | dir | SDM630 | SDM320C | SDM230 | SDM220 | SDM120CT| SDM120 | SDM72D | SDM72 V2 | DDM18SD |
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{ SDM_PHASE_1_VOLTAGE /* 0x0000 */ , SDM_UOM::V , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 },
{ SDM_PHASE_2_VOLTAGE /* 0x0002 */ , SDM_UOM::V , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_3_VOLTAGE /* 0x0004 */ , SDM_UOM::V , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_1_CURRENT /* 0x0006 */ , SDM_UOM::A , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 },
{ SDM_PHASE_2_CURRENT /* 0x0008 */ , SDM_UOM::A , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_3_CURRENT /* 0x000A */ , SDM_UOM::A , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_1_POWER /* 0x000C */ , SDM_UOM::W , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 },
{ SDM_PHASE_2_POWER /* 0x000E */ , SDM_UOM::W , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_3_POWER /* 0x0010 */ , SDM_UOM::W , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_1_APPARENT_POWER /* 0x0012 */ , SDM_UOM::VA , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 },
{ SDM_PHASE_2_APPARENT_POWER /* 0x0014 */ , SDM_UOM::VA , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_3_APPARENT_POWER /* 0x0016 */ , SDM_UOM::VA , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_1_REACTIVE_POWER /* 0x0018 */ , SDM_UOM::VAr , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 },
{ SDM_PHASE_2_REACTIVE_POWER /* 0x001A */ , SDM_UOM::VAr , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_3_REACTIVE_POWER /* 0x001C */ , SDM_UOM::VAr , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_1_POWER_FACTOR /* 0x001E */ , SDM_UOM::cos_phi , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 },
{ SDM_PHASE_2_POWER_FACTOR /* 0x0020 */ , SDM_UOM::cos_phi , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_3_POWER_FACTOR /* 0x0022 */ , SDM_UOM::cos_phi , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_1_ANGLE /* 0x0024 */ , SDM_UOM::degrees , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_2_ANGLE /* 0x0026 */ , SDM_UOM::degrees , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_3_ANGLE /* 0x0028 */ , SDM_UOM::degrees , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AVERAGE_L_TO_N_VOLTS /* 0x002A */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_AVERAGE_LINE_CURRENT /* 0x002E */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_SUM_LINE_CURRENT /* 0x0030 */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_TOTAL_SYSTEM_POWER /* 0x0034 */ , SDM_UOM::W , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 },
{ SDM_TOTAL_SYSTEM_APPARENT_POWER /* 0x0038 */ , SDM_UOM::VA , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_TOTAL_SYSTEM_REACTIVE_POWER /* 0x003C */ , SDM_UOM::VAr , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_TOTAL_SYSTEM_POWER_FACTOR /* 0x003E */ , SDM_UOM::cos_phi , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_TOTAL_SYSTEM_PHASE_ANGLE /* 0x0042 */ , SDM_UOM::degrees , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_FREQUENCY /* 0x0046 */ , SDM_UOM::Hz , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 },
{ SDM_IMPORT_ACTIVE_ENERGY /* 0x0048 */ , SDM_UOM::kWh , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 },
{ SDM_EXPORT_ACTIVE_ENERGY /* 0x004A */ , SDM_UOM::kWh , 0 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 },
{ SDM_IMPORT_REACTIVE_ENERGY /* 0x004C */ , SDM_UOM::kVArh , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 },
{ SDM_EXPORT_REACTIVE_ENERGY /* 0x004E */ , SDM_UOM::kVArh , 0 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 },
{ SDM_VAH_SINCE_LAST_RESET /* 0x0050 */ , SDM_UOM::kVAh , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AH_SINCE_LAST_RESET /* 0x0052 */ , SDM_UOM::Ah , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_POWER_DEMAND /* 0x0054 */ , SDM_UOM::W , 0 , 3 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_TOTAL_SYSTEM_POWER_DEMAND /* 0x0056 */ , SDM_UOM::W , 0 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_CURRENT_SYSTEM_POSITIVE_POWER_DEMAND /* 0x0058 */ , SDM_UOM::W , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_SYSTEM_POSITIVE_POWER_DEMAND /* 0x005A */ , SDM_UOM::W , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_CURRENT_SYSTEM_REVERSE_POWER_DEMAND /* 0x005C */ , SDM_UOM::W , 0 , 2 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_SYSTEM_REVERSE_POWER_DEMAND /* 0x005E */ , SDM_UOM::W , 0 , 2 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_VA_DEMAND /* 0x0064 */ , SDM_UOM::VA , 0 , 3 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_TOTAL_SYSTEM_VA_DEMAND /* 0x0066 */ , SDM_UOM::VA , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_NEUTRAL_CURRENT_DEMAND /* 0x0068 */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_NEUTRAL_CURRENT /* 0x006A */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_REACTIVE_POWER_DEMAND /* 0x006C */ , SDM_UOM::VAr , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_REACTIVE_POWER_DEMAND /* 0x006E */ , SDM_UOM::VAr , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_LINE_1_TO_LINE_2_VOLTS /* 0x00C8 */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_LINE_2_TO_LINE_3_VOLTS /* 0x00CA */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_LINE_3_TO_LINE_1_VOLTS /* 0x00CC */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_AVERAGE_LINE_TO_LINE_VOLTS /* 0x00CE */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_NEUTRAL_CURRENT /* 0x00E0 */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_PHASE_1_LN_VOLTS_THD /* 0x00EA */ , SDM_UOM::percent , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_2_LN_VOLTS_THD /* 0x00EC */ , SDM_UOM::percent , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_3_LN_VOLTS_THD /* 0x00EE */ , SDM_UOM::percent , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_1_CURRENT_THD /* 0x00F0 */ , SDM_UOM::percent , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_2_CURRENT_THD /* 0x00F2 */ , SDM_UOM::percent , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_3_CURRENT_THD /* 0x00F4 */ , SDM_UOM::percent , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AVERAGE_LINE_TO_NEUTRAL_VOLTS_THD /* 0x00F8 */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AVERAGE_LINE_CURRENT_THD /* 0x00FA */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_POWER_FACTOR_INV /* 0x00FE */ , SDM_UOM::cos_phi , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_1_CURRENT_DEMAND /* 0x0102 */ , SDM_UOM::A , 1 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_2_CURRENT_DEMAND /* 0x0104 */ , SDM_UOM::A , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_3_CURRENT_DEMAND /* 0x0106 */ , SDM_UOM::A , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_PHASE_1_CURRENT_DEMAND /* 0x0108 */ , SDM_UOM::A , 1 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_PHASE_2_CURRENT_DEMAND /* 0x010A */ , SDM_UOM::A , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_PHASE_3_CURRENT_DEMAND /* 0x010C */ , SDM_UOM::A , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_LINE_1_TO_LINE_2_VOLTS_THD /* 0x014E */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_LINE_2_TO_LINE_3_VOLTS_THD /* 0x0150 */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_LINE_3_TO_LINE_1_VOLTS_THD /* 0x0152 */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AVERAGE_LINE_TO_LINE_VOLTS_THD /* 0x0154 */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_TOTAL_ACTIVE_ENERGY /* 0x0156 */ , SDM_UOM::kWh , 0 , 3 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 },
{ SDM_TOTAL_REACTIVE_ENERGY /* 0x0158 */ , SDM_UOM::kVArh , 0 , 3 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 },
{ SDM_L1_IMPORT_ACTIVE_ENERGY /* 0x015A */ , SDM_UOM::kWh , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_IMPORT_ACTIVE_ENERGY /* 0x015C */ , SDM_UOM::kWh , 2 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_IMPORT_ACTIVE_ENERGY /* 0x015E */ , SDM_UOM::kWh , 3 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_EXPORT_ACTIVE_ENERGY /* 0x0160 */ , SDM_UOM::kWh , 1 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_EXPORT_ACTIVE_ENERGY /* 0x0162 */ , SDM_UOM::kWh , 2 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_EXPORT_ACTIVE_ENERGY /* 0x0164 */ , SDM_UOM::kWh , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_TOTAL_ACTIVE_ENERGY /* 0x0166 */ , SDM_UOM::kWh , 1 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_TOTAL_ACTIVE_ENERGY /* 0x0168 */ , SDM_UOM::kWh , 2 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_TOTAL_ACTIVE_ENERGY /* 0x016a */ , SDM_UOM::kWh , 3 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_IMPORT_REACTIVE_ENERGY /* 0x016C */ , SDM_UOM::kVArh , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_IMPORT_REACTIVE_ENERGY /* 0x016E */ , SDM_UOM::kVArh , 2 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_IMPORT_REACTIVE_ENERGY /* 0x0170 */ , SDM_UOM::kVArh , 3 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_EXPORT_REACTIVE_ENERGY /* 0x0172 */ , SDM_UOM::kVArh , 1 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_EXPORT_REACTIVE_ENERGY /* 0x0174 */ , SDM_UOM::kVArh , 2 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_EXPORT_REACTIVE_ENERGY /* 0x0176 */ , SDM_UOM::kVArh , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_TOTAL_REACTIVE_ENERGY /* 0x0178 */ , SDM_UOM::kVArh , 1 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_TOTAL_REACTIVE_ENERGY /* 0x017A */ , SDM_UOM::kVArh , 2 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_TOTAL_REACTIVE_ENERGY /* 0x017C */ , SDM_UOM::kVArh , 3 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_CURRENT_RESETTABLE_TOTAL_ACTIVE_ENERGY /* 0x0180 */ , SDM_UOM::kWh , 0 , 3 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 1 , 0 },
{ SDM_CURRENT_RESETTABLE_TOTAL_REACTIVE_ENERGY /* 0x0182 */ , SDM_UOM::kVArh , 0 , 3 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_CURRENT_RESETTABLE_IMPORT_ENERGY /* 0x0184 */ , SDM_UOM::kWh , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 },
{ SDM_CURRENT_RESETTABLE_EXPORT_ENERGY /* 0x0186 */ , SDM_UOM::kWh , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 },
{ SDM_CURRENT_RESETTABLE_IMPORT_REACTIVE_ENERGY /* 0x0188 */ , SDM_UOM::kVArh , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 },
{ SDM_CURRENT_RESETTABLE_EXPORT_REACTIVE_ENERGY /* 0x018A */ , SDM_UOM::kVArh , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 },
{ SDM_NET_KWH /* 0x018C */ , SDM_UOM::kWh , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_NET_KVARH /* 0x018E */ , SDM_UOM::kVArh , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ SDM_IMPORT_POWER /* 0x0500 */ , SDM_UOM::W , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 },
{ SDM_EXPORT_POWER /* 0x0502 */ , SDM_UOM::W , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 },
{ DDM_PHASE_1_VOLTAGE /* 0x0000 */ , SDM_UOM::V , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ DDM_PHASE_1_CURRENT /* 0x0008 */ , SDM_UOM::A , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ DDM_PHASE_1_POWER /* 0x0012 */ , SDM_UOM::W , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ DDM_PHASE_1_REACTIVE_POWER /* 0x001A */ , SDM_UOM::VAr , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ DDM_PHASE_1_POWER_FACTOR /* 0x002A */ , SDM_UOM::cos_phi , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ DDM_FREQUENCY /* 0x0036 */ , SDM_UOM::Hz , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ DDM_IMPORT_ACTIVE_ENERGY /* 0x0100 */ , SDM_UOM::kWh , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ DDM_IMPORT_REACTIVE_ENERGY /* 0x0400 */ , SDM_UOM::kVArh , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 }
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// REGISTERS LIST FOR SDM DEVICES |
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// REGISTER NAME REGISTER ADDRESS UNIT | phase | dir | SDM630 | SDM320C | SDM230 | SDM220 | SDM120CT| SDM120 | SDM72D | SDM72 V2 | DDM18SD | TAC2100 |
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{ SDM_PHASE_1_VOLTAGE /* 0x0000 */ , SDM_UOM::V , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 , 1 },
{ SDM_PHASE_2_VOLTAGE /* 0x0002 */ , SDM_UOM::V , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_3_VOLTAGE /* 0x0004 */ , SDM_UOM::V , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_1_CURRENT /* 0x0006 */ , SDM_UOM::A , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 , 1 },
{ SDM_PHASE_2_CURRENT /* 0x0008 */ , SDM_UOM::A , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_3_CURRENT /* 0x000A */ , SDM_UOM::A , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_1_POWER /* 0x000C */ , SDM_UOM::W , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 , 1 },
{ SDM_PHASE_2_POWER /* 0x000E */ , SDM_UOM::W , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_3_POWER /* 0x0010 */ , SDM_UOM::W , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_1_APPARENT_POWER /* 0x0012 */ , SDM_UOM::VA , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 , 1 },
{ SDM_PHASE_2_APPARENT_POWER /* 0x0014 */ , SDM_UOM::VA , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_3_APPARENT_POWER /* 0x0016 */ , SDM_UOM::VA , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_1_REACTIVE_POWER /* 0x0018 */ , SDM_UOM::VAr , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 , 1 },
{ SDM_PHASE_2_REACTIVE_POWER /* 0x001A */ , SDM_UOM::VAr , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_3_REACTIVE_POWER /* 0x001C */ , SDM_UOM::VAr , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_1_POWER_FACTOR /* 0x001E */ , SDM_UOM::cos_phi , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 , 1 },
{ SDM_PHASE_2_POWER_FACTOR /* 0x0020 */ , SDM_UOM::cos_phi , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_3_POWER_FACTOR /* 0x0022 */ , SDM_UOM::cos_phi , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_1_ANGLE /* 0x0024 */ , SDM_UOM::degrees , 1 , 0 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 1 },
{ SDM_PHASE_2_ANGLE /* 0x0026 */ , SDM_UOM::degrees , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_3_ANGLE /* 0x0028 */ , SDM_UOM::degrees , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AVERAGE_L_TO_N_VOLTS /* 0x002A */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_AVERAGE_LINE_CURRENT /* 0x002E */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_SUM_LINE_CURRENT /* 0x0030 */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_POWER /* 0x0034 */ , SDM_UOM::W , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_APPARENT_POWER /* 0x0038 */ , SDM_UOM::VA , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_REACTIVE_POWER /* 0x003C */ , SDM_UOM::VAr , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_POWER_FACTOR /* 0x003E */ , SDM_UOM::cos_phi , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_PHASE_ANGLE /* 0x0042 */ , SDM_UOM::degrees , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_FREQUENCY /* 0x0046 */ , SDM_UOM::Hz , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 , 1 },
{ SDM_IMPORT_ACTIVE_ENERGY /* 0x0048 */ , SDM_UOM::kWh , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 },
{ SDM_EXPORT_ACTIVE_ENERGY /* 0x004A */ , SDM_UOM::kWh , 0 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 },
{ SDM_IMPORT_REACTIVE_ENERGY /* 0x004C */ , SDM_UOM::kVArh , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 1 },
{ SDM_EXPORT_REACTIVE_ENERGY /* 0x004E */ , SDM_UOM::kVArh , 0 , 2 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 1 },
{ SDM_VAH_SINCE_LAST_RESET /* 0x0050 */ , SDM_UOM::kVAh , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AH_SINCE_LAST_RESET /* 0x0052 */ , SDM_UOM::Ah , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_POWER_DEMAND /* 0x0054 */ , SDM_UOM::W , 0 , 3 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ SDM_MAXIMUM_TOTAL_SYSTEM_POWER_DEMAND /* 0x0056 */ , SDM_UOM::W , 0 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ SDM_CURRENT_SYSTEM_POSITIVE_POWER_DEMAND /* 0x0058 */ , SDM_UOM::W , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ SDM_MAXIMUM_SYSTEM_POSITIVE_POWER_DEMAND /* 0x005A */ , SDM_UOM::W , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ SDM_CURRENT_SYSTEM_REVERSE_POWER_DEMAND /* 0x005C */ , SDM_UOM::W , 0 , 2 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ SDM_MAXIMUM_SYSTEM_REVERSE_POWER_DEMAND /* 0x005E */ , SDM_UOM::W , 0 , 2 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ SDM_TOTAL_SYSTEM_VA_DEMAND /* 0x0064 */ , SDM_UOM::VA , 0 , 3 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_TOTAL_SYSTEM_VA_DEMAND /* 0x0066 */ , SDM_UOM::VA , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_NEUTRAL_CURRENT_DEMAND /* 0x0068 */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_NEUTRAL_CURRENT /* 0x006A */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_REACTIVE_POWER_DEMAND /* 0x006C */ , SDM_UOM::VAr , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_REACTIVE_POWER_DEMAND /* 0x006E */ , SDM_UOM::VAr , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_LINE_1_TO_LINE_2_VOLTS /* 0x00C8 */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_LINE_2_TO_LINE_3_VOLTS /* 0x00CA */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_LINE_3_TO_LINE_1_VOLTS /* 0x00CC */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_AVERAGE_LINE_TO_LINE_VOLTS /* 0x00CE */ , SDM_UOM::V , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_NEUTRAL_CURRENT /* 0x00E0 */ , SDM_UOM::A , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_PHASE_1_LN_VOLTS_THD /* 0x00EA */ , SDM_UOM::percent , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_2_LN_VOLTS_THD /* 0x00EC */ , SDM_UOM::percent , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_3_LN_VOLTS_THD /* 0x00EE */ , SDM_UOM::percent , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_1_CURRENT_THD /* 0x00F0 */ , SDM_UOM::percent , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_2_CURRENT_THD /* 0x00F2 */ , SDM_UOM::percent , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_3_CURRENT_THD /* 0x00F4 */ , SDM_UOM::percent , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AVERAGE_LINE_TO_NEUTRAL_VOLTS_THD /* 0x00F8 */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AVERAGE_LINE_CURRENT_THD /* 0x00FA */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_TOTAL_SYSTEM_POWER_FACTOR_INV /* 0x00FE */ , SDM_UOM::cos_phi , 0 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_1_CURRENT_DEMAND /* 0x0102 */ , SDM_UOM::A , 1 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ SDM_PHASE_2_CURRENT_DEMAND /* 0x0104 */ , SDM_UOM::A , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_PHASE_3_CURRENT_DEMAND /* 0x0106 */ , SDM_UOM::A , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_PHASE_1_CURRENT_DEMAND /* 0x0108 */ , SDM_UOM::A , 1 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
{ SDM_MAXIMUM_PHASE_2_CURRENT_DEMAND /* 0x010A */ , SDM_UOM::A , 2 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_MAXIMUM_PHASE_3_CURRENT_DEMAND /* 0x010C */ , SDM_UOM::A , 3 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_LINE_1_TO_LINE_2_VOLTS_THD /* 0x014E */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_LINE_2_TO_LINE_3_VOLTS_THD /* 0x0150 */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_LINE_3_TO_LINE_1_VOLTS_THD /* 0x0152 */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_AVERAGE_LINE_TO_LINE_VOLTS_THD /* 0x0154 */ , SDM_UOM::percent , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_TOTAL_ACTIVE_ENERGY /* 0x0156 */ , SDM_UOM::kWh , 0 , 3 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 },
{ SDM_TOTAL_REACTIVE_ENERGY /* 0x0158 */ , SDM_UOM::kVArh , 0 , 3 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 1 , 0 , 1 },
{ SDM_L1_IMPORT_ACTIVE_ENERGY /* 0x015A */ , SDM_UOM::kWh , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_IMPORT_ACTIVE_ENERGY /* 0x015C */ , SDM_UOM::kWh , 2 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_IMPORT_ACTIVE_ENERGY /* 0x015E */ , SDM_UOM::kWh , 3 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_EXPORT_ACTIVE_ENERGY /* 0x0160 */ , SDM_UOM::kWh , 1 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_EXPORT_ACTIVE_ENERGY /* 0x0162 */ , SDM_UOM::kWh , 2 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_EXPORT_ACTIVE_ENERGY /* 0x0164 */ , SDM_UOM::kWh , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_TOTAL_ACTIVE_ENERGY /* 0x0166 */ , SDM_UOM::kWh , 1 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_TOTAL_ACTIVE_ENERGY /* 0x0168 */ , SDM_UOM::kWh , 2 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_TOTAL_ACTIVE_ENERGY /* 0x016a */ , SDM_UOM::kWh , 3 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_IMPORT_REACTIVE_ENERGY /* 0x016C */ , SDM_UOM::kVArh , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_IMPORT_REACTIVE_ENERGY /* 0x016E */ , SDM_UOM::kVArh , 2 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_IMPORT_REACTIVE_ENERGY /* 0x0170 */ , SDM_UOM::kVArh , 3 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_EXPORT_REACTIVE_ENERGY /* 0x0172 */ , SDM_UOM::kVArh , 1 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_EXPORT_REACTIVE_ENERGY /* 0x0174 */ , SDM_UOM::kVArh , 2 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_EXPORT_REACTIVE_ENERGY /* 0x0176 */ , SDM_UOM::kVArh , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L1_TOTAL_REACTIVE_ENERGY /* 0x0178 */ , SDM_UOM::kVArh , 1 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L2_TOTAL_REACTIVE_ENERGY /* 0x017A */ , SDM_UOM::kVArh , 2 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_L3_TOTAL_REACTIVE_ENERGY /* 0x017C */ , SDM_UOM::kVArh , 3 , 3 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_CURRENT_RESETTABLE_TOTAL_ACTIVE_ENERGY /* 0x0180 */ , SDM_UOM::kWh , 0 , 3 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 1 , 0 , 0 },
{ SDM_CURRENT_RESETTABLE_TOTAL_REACTIVE_ENERGY /* 0x0182 */ , SDM_UOM::kVArh , 0 , 3 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
{ SDM_CURRENT_RESETTABLE_IMPORT_ENERGY /* 0x0184 */ , SDM_UOM::kWh , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 },
{ SDM_CURRENT_RESETTABLE_EXPORT_ENERGY /* 0x0186 */ , SDM_UOM::kWh , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 },
{ SDM_CURRENT_RESETTABLE_IMPORT_REACTIVE_ENERGY /* 0x0188 */ , SDM_UOM::kVArh , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 },
{ SDM_CURRENT_RESETTABLE_EXPORT_REACTIVE_ENERGY /* 0x018A */ , SDM_UOM::kVArh , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 },
{ SDM_NET_KWH /* 0x018C */ , SDM_UOM::kWh , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_NET_KVARH /* 0x018E */ , SDM_UOM::kVArh , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 },
{ SDM_IMPORT_POWER /* 0x0500 */ , SDM_UOM::W , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 },
{ SDM_EXPORT_POWER /* 0x0502 */ , SDM_UOM::W , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 },
{ DDM_PHASE_1_VOLTAGE /* 0x0000 */ , SDM_UOM::V , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ DDM_PHASE_1_CURRENT /* 0x0008 */ , SDM_UOM::A , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ DDM_PHASE_1_POWER /* 0x0012 */ , SDM_UOM::W , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ DDM_PHASE_1_REACTIVE_POWER /* 0x001A */ , SDM_UOM::VAr , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ DDM_PHASE_1_POWER_FACTOR /* 0x002A */ , SDM_UOM::cos_phi , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ DDM_FREQUENCY /* 0x0036 */ , SDM_UOM::Hz , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ DDM_IMPORT_ACTIVE_ENERGY /* 0x0100 */ , SDM_UOM::kWh , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
{ DDM_IMPORT_REACTIVE_ENERGY /* 0x0400 */ , SDM_UOM::kVArh , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }
};
// *INDENT-ON*
@@ -294,6 +294,7 @@ bool p078_register_description::match_SDM_model(SDM_MODEL model) const
case SDM_MODEL::SDM72D: return bitRead(val, 12);
case SDM_MODEL::SDM72_V2: return bitRead(val, 13);
case SDM_MODEL::DDM18SD: return bitRead(val, 14);
case SDM_MODEL::TAC2100: return bitRead(val, 15);
}
return false;
}
+5 -2
View File
@@ -65,7 +65,8 @@ enum class SDM_MODEL {
DDM18SD = 3,
SDM630 = 4,
SDM72_V2 = 5,
SDM320C = 6
SDM320C = 6,
TAC2100 = 7
};
enum class SDM_DIRECTION {
@@ -97,7 +98,8 @@ struct p078_register_description {
uint8_t SDM120,
uint8_t SDM72D,
uint8_t SDM72_V2,
uint8_t DDM18SD
uint8_t DDM18SD,
uint8_t TAC2100
) : val(
(static_cast<uint32_t>(uom) & 0xF) |
static_cast<uint32_t>(phase & 0x3) << 4 |
@@ -111,6 +113,7 @@ struct p078_register_description {
static_cast<uint32_t>(SDM72D & 0x1) << 12 |
static_cast<uint32_t>(SDM72_V2 & 0x1) << 13 |
static_cast<uint32_t>(DDM18SD & 0x1) << 14 |
static_cast<uint32_t>(TAC2100 & 0x1) << 15 |
static_cast<uint32_t>(reg & 0xFFFF) << 16)
{}