This module implements support for the Veris H8035 and H8036 Energy Meters.
The H8036 is similar to the H8035, but provides much more data.
The Enercept H8035/H8036 is an innovative three-phase networked (Modbus RTU) power transducer that combines electronics and high accuracy industrial grade CTs in a single package. The need for external electrical enclosures is eliminated, greatly reducing installation time and cost. Color-coordination between voltage leads and CTs makes phase matching easy. Additionally, these transducers automatically detect and compensate for phase reversal, eliminating the concern of CT load orientation. Up to 63 Transducers can be daisy-chained on a single RS-485 network.
This module was developed using libmodbus 3.1.2, and the H8035. The H8036 has not been tested. libmodbus 3.1.2 must be present for this module to build.
It was developed using an RS232->RS485 interface. You cannot use the built in MCU TTL UART pins for accessing this device – you must use a full Serial RS232->RS485 or USB-RS485 interface connected via USB.
string defaultDev = "/dev/ttyUSB0";
if (argc > 1)
defaultDev = string(argv[1]);
cout << "Using device " << defaultDev << endl;
cout << "Initializing..." << endl;
cout << "Slave ID: " << sensor.getSlaveID() << endl;
cout << endl;
while (shouldRun) {
cout << "Consumption (kWh): " << sensor.getConsumption() << endl;
cout << "Real Power (kW): " << sensor.getRealPower() << endl;
if (sensor.isH8036()) {
cout << "Reactive Power (kVAR): " << sensor.getReactivePower() << endl;
cout << "Apparent Power (kVA): " << sensor.getApparentPower() << endl;
cout << "Power Factor: " << sensor.getPowerFactor() << endl;
cout << "Volts Line to Line: " << sensor.getVoltsLineToLine() << endl;
cout << "Volts Line to Neutral: " << sensor.getVoltsLineToNeutral() << endl;
cout << "Current: " << sensor.getCurrent() << endl;
cout << "Real Power Phase A (kW): " << sensor.getRealPowerPhaseA() << endl;
cout << "Real Power Phase B (kW): " << sensor.getRealPowerPhaseB() << endl;
cout << "Real Power Phase C (kW): " << sensor.getRealPowerPhaseC() << endl;
cout << "Power Factor Phase A: " << sensor.getPowerFactorPhaseA() << endl;
cout << "Power Factor Phase B: " << sensor.getPowerFactorPhaseB() << endl;
cout << "Power Factor Phase C: " << sensor.getPowerFactorPhaseC() << endl;
cout << "Volts Phase A to B: " << sensor.getVoltsPhaseAToB() << endl;
cout << "Volts Phase B to C: " << sensor.getVoltsPhaseBToC() << endl;
cout << "Volts Phase A to C: " << sensor.getVoltsPhaseAToC() << endl;
cout << "Volts Phase A to Neutral: " << sensor.getVoltsPhaseAToNeutral() << endl;
cout << "Volts Phase B to Neutral: " << sensor.getVoltsPhaseBToNeutral() << endl;
cout << "Volts Phase C to Neutral: " << sensor.getVoltsPhaseCToNeutral() << endl;
cout << "Current Phase A: " << sensor.getCurrentPhaseA() << endl;
cout << "Current Phase B: " << sensor.getCurrentPhaseB() << endl;
cout << "Current Phase C: " << sensor.getCurrentPhaseC() << endl;
cout << "Avg Real Power (kW): " << sensor.getAvgRealPower() << endl;
cout << "Min Real Power (kW): " << sensor.getMinRealPower() << endl;
cout << "Max Real Power (kW): " << sensor.getMaxRealPower() << endl;
}
cout << endl;
upm_delay(2);
}
cout << "Exiting..." << endl;
|
enum | HOLDING_REGS_T {
HOLDING_CONSUMPTION_KWH_INT_L = 0,
HOLDING_CONSUMPTION_KWH_INT_H = 1,
HOLDING_CONSUMPTION_KWH = 258,
HOLDING_REAL_POWER_KW = 260,
HOLDING_REACTIVE_POWER_KVAR = 262,
HOLDING_APPARENT_POWER_KVA = 264,
HOLDING_POWER_FACTOR = 266,
HOLDING_VOLTS_LINE_TO_LINE = 268,
HOLDING_VOLTS_LINE_TO_NEUTRAL = 270,
HOLDING_CURRENT = 272,
HOLDING_REAL_POWER_PHASE_A_KWH = 274,
HOLDING_REAL_POWER_PHASE_B_KWH = 276,
HOLDING_REAL_POWER_PHASE_C_KWH = 278,
HOLDING_POWER_FACTOR_PHASE_A = 280,
HOLDING_POWER_FACTOR_PHASE_B = 282,
HOLDING_POWER_FACTOR_PHASE_C = 284,
HOLDING_VOLTS_PHASE_AB = 286,
HOLDING_VOLTS_PHASE_BC = 288,
HOLDING_VOLTS_PHASE_AC = 290,
HOLDING_VOLTS_PHASE_AN = 292,
HOLDING_VOLTS_PHASE_BN = 294,
HOLDING_VOLTS_PHASE_CN = 296,
HOLDING_CURRENT_PHASE_A = 298,
HOLDING_CURRENT_PHASE_B = 300,
HOLDING_CURRENT_PHASE_C = 302,
HOLDING_AVG_REAL_POWER_KW = 304,
HOLDING_MIN_REAL_POWER_KW = 306,
HOLDING_MAX_REAL_POWER_KW = 308
} |
|
enum | MULTIPLIERS_T {
MULT_100A = 128,
MULT_300A_400A = 32,
MULT_800A = 16,
MULT_1600A = 8,
MULT_2400A = 4
} |
|