question

Hugo Russouw avatar image
Hugo Russouw asked

Can I use an ABB energy meter with the Venus?

I have an ABB B21 Energy Meter on my mains supply. Can the Venus be configured to use this as the Grid meter and how?

Thanks

Energy Meter
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

7 Answers
Warwick Bruce Chapman avatar image
Warwick Bruce Chapman answered ·

ABB meters are supported as of 2.92:


2CMA100155R1000 B21 312-100 65A Direct Connected Meter, 2 output, 2 input, RS-485
2CMA100169R1000 B23 312-100 65A Direct Connected Meter, 2 output, 2 input, RS-485
2CMA100183R1000 B24 352-100 CT Connected Meter, 2 output, 2 input, RS-485
1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Blazej M avatar image Blazej M commented ·

Hello Warwick, happy new year. Are you able to confirm if B21 112-100 is also supported please ? 2cma100150R1000

0 Likes 0 ·
mucmak avatar image
mucmak answered ·
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

wkirby avatar image
wkirby answered ·

No, only the Carlo Gavazzi meters are supported in Venus.

https://www.victronenergy.com/live/energy-meters:start

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Hugo Russouw avatar image
Hugo Russouw answered ·

Hi

The ABB B21 meter can also do RS 485 Modbus with all the registers as the ET 112.

I have a ET 112 installed on my PV inverter and it is working.

I can not find any information about the modbus registers on the ET 112 meter to see what the difference is between the two.

Or what is the default settings for the ET 112 to work with the Venus?

Can the Venus Firmware be updated to support the ABB meter?

Thanks


2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

kurtinge avatar image
kurtinge answered ·


Did you work this out? There at so many modbus energy meters available, but I don't know if they will work

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

sharpener avatar image
sharpener answered ·

In general I don't think they will because e.g. the Eastron registers are not the same as the Carlo Gavazzi ones.

However some compatibiity has been achieved by @thomasw-1, see this thread https://community.victronenergy.com/idea/114716/power-meter-lib-for-modbus-rtu-based-meters-from-a.html.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

mannipv avatar image
mannipv answered ·

Hello,

the ABB energy meter A4x uses the same Modbus Register as the supported B2x energy meter

  • 1 Phase ABB A41/A42 same register as supported B21
  • 3 Phase ABB A43/A44 same register as supported B23/B24

the updated file abb.py from Cerbo GX firmware v3.30 which now also supports ABB energy meters of the A series. Is it possible to add this in the next firmware.

Tested on ABB A44 552-100, works perfectly.

File: /opt/victronenergy/dbus-modbus-client/abb.py

import struct
import device
import probe
from register import Reg, Reg_s32b, Reg_u16, Reg_u32b, Reg_u64b, Reg_text

class Reg_serial(Reg, str):
    """ ABB meters use a 32-bit integer as serial number. Make it a string
        because that is what dbus (and modbus-tcp) expects. """
    def __init__(self, base, name):
        super().__init__(base, 2, name)

    def decode(self, values):
        v = struct.unpack('>i', struct.pack('>2H', *values))
        return self.update(str(v[0]))

class ABB_Meter(device.CustomName, device.EnergyMeter):
    productid = 0xb033
    min_timeout = 0.5

    def device_init(self):
        self.info_regs = [
            Reg_serial(0x8900, '/Serial'),
            Reg_text(0x8908, 8, '/FirmwareVersion'),
        ]

        self.data_regs = [
            Reg_s32b(0x5B14, '/Ac/Power',          100, '%.1f W'),
            Reg_u16( 0x5B2C, '/Ac/Frequency',      100, '%.1f Hz'),
            Reg_u64b(0x5000, '/Ac/Energy/Forward', 100, '%.1f kWh'),
            Reg_u64b(0x5004, '/Ac/Energy/Reverse', 100, '%.1f kWh', invalid=0xffffffffffffffff),

            # We always have L1 voltage and current
            Reg_u32b(0x5B00, '/Ac/L1/Voltage',      10, '%.1f V'),
            Reg_u32b(0x5B0C, '/Ac/L1/Current',     100, '%.1f A'),
        ]

    def get_ident(self):
        return 'abb_{}'.format(self.info['/Serial'])

class ABB_Meter_1P(ABB_Meter):
    productname = 'ABB 1P Energy Meter'
    nr_phases = 1

    def device_init(self):
        super().device_init()

        # Copies of overall values, because phase values show not-supported.
        self.data_regs += [
            Reg_s32b(0x5B14, '/Ac/L1/Power',          100, '%.1f W'),
            Reg_u64b(0x5000, '/Ac/L1/Energy/Forward', 100, '%.1f kWh'),
            Reg_u64b(0x5004, '/Ac/L1/Energy/Reverse', 100, '%.1f kWh', invalid=0xffffffffffffffff),
        ]

class ABB_Meter_3P(ABB_Meter):
    productname = 'ABB 3P Energy Meter'
    nr_phases = 3

    def device_init(self):
        super().device_init()
        self.data_regs += [
            Reg_u32b(0x5B02, '/Ac/L2/Voltage',      10, '%.1f V'),
            Reg_u32b(0x5B04, '/Ac/L3/Voltage',      10, '%.1f V'),
            Reg_u32b(0x5B0E, '/Ac/L2/Current',     100, '%.1f A'),
            Reg_u32b(0x5B10, '/Ac/L3/Current',     100, '%.1f A'),

            Reg_s32b(0x5B16,  '/Ac/L1/Power',       100, '%.1f W'),
            Reg_s32b(0x5B18,  '/Ac/L2/Power',       100, '%.1f W'),
            Reg_s32b(0x5B1A,  '/Ac/L3/Power',       100, '%.1f W'),

            Reg_u64b(0x5460, '/Ac/L1/Energy/Forward', 100, '%.1f kWh'),
            Reg_u64b(0x5464, '/Ac/L2/Energy/Forward', 100, '%.1f kWh'),
            Reg_u64b(0x5468, '/Ac/L3/Energy/Forward', 100, '%.1f kWh'),
            Reg_u64b(0x546C, '/Ac/L1/Energy/Reverse', 100, '%.1f kWh', invalid=0xffffffffffffffff),
            Reg_u64b(0x5470, '/Ac/L2/Energy/Reverse', 100, '%.1f kWh', invalid=0xffffffffffffffff),
            Reg_u64b(0x5474, '/Ac/L3/Energy/Reverse', 100, '%.1f kWh', invalid=0xffffffffffffffff),
        ]

class ABB_Meter_1P_B21(ABB_Meter_1P):
    productname = 'ABB B21 Energy Meter'

class ABB_Meter_1P_A41(ABB_Meter_1P):
    productname = 'ABB A41 Energy Meter'

class ABB_Meter_1P_A42(ABB_Meter_1P):
    productname = 'ABB A42 Energy Meter'

class ABB_Meter_3P_B23(ABB_Meter_3P):
    productname = 'ABB B23 Energy Meter'

class ABB_Meter_3P_B24(ABB_Meter_3P):
    productname = 'ABB B24 Energy Meter'

class ABB_Meter_3P_A43(ABB_Meter_3P):
    productname = 'ABB A43 Energy Meter'

class ABB_Meter_3P_A44(ABB_Meter_3P):
    productname = 'ABB A44 Energy Meter'

models = {
    0x42323120: { # B21 (space)
        'model':    'B21',
        'handler':  ABB_Meter_1P_B21,
    },
    0x41343120: { # A41 (space)
        'model':    'A41',
        'handler':  ABB_Meter_1P_A41,
    },
    0x41343220: { # A42 (space)
        'model':    'A42',
        'handler':  ABB_Meter_1P_A42,
    },
    0x42323320: { # B23 (space)
        'model':    'B23',
        'handler':  ABB_Meter_3P_B23,
    },
    0x42323420: { # B24 (space)
        'model':    'B24',
        'handler':  ABB_Meter_3P_B24,
    },
    0x41343320: { # A43 (space)
        'model':    'A43',
        'handler':  ABB_Meter_3P_A43,
    },
    0x41343420: { # A44 (space)
        'model':    'A44',
        'handler':  ABB_Meter_3P_A44,
    }
}

probe.add_handler(probe.ModelRegister(Reg_u32b(0x8960), models,
                                      methods=['rtu', 'tcp'],
                                      units=[1, 2]))


ABB A44: Three-phase meter, uses Current Transformers, ABB A44 552-100, Product ID 2CMA170545R1000, Platin, Modbus RS485, 0A...10kA, indirect with 5A current transformer

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

Related Resources