Modbus – KWh meter – Eastron SDM120
BESTELLEN
Info (ENG)
SDM120-Modbus, Single-Phase Multifunction DIN rail Meter
- Measures kWh, Kvarh, KW, Kvar, KVA, PF, Hz, dmd, V, A, etc.
- Bi-directional measurement IMP & EXP
- Two pulse outputs
- RS485 Modbus
- Din rail mounting 17.5mm
- 45A direct connection
- Better than Class 1 accuracy
The energy-meters “with a blue back-lighted LCD screen for prefect reading” are used to measure single-phase like residential, utility and Industrial application. The unit measures and displays various important electrical parameters, and provide a RS485 communication port for remote reading and monitoring. Bi-directional energy measurement makes the unit a good choice for solar PV energy metering. The compact design and din rail installation provides a easy and economical solution for your metering demand
Performance criteria:
Operating humidity ≤ 85%
Storage humidity ≤ 95%
Operating temperature -20°C – +50°C
Storage temperature -30°C – +70°C
International standard IEC 62053-21
Accuracy class 1
Protection against penetration
of dust and water IP51
Insulating encased meter of
Protective class Ⅱ
Specifications:
Meter type SDM120A (Mechanical register display)
SDM120D (LCD display)
SDM120DB (LCD with backlit)
Nominal voltage (Un) 230V AC
Operational voltage 161 – 300V AC
Insulation capabilities:
– AC voltage withstand 2KV for 1 minute
– Impulse voltage withstand 6KV – 1.2µS waveform
Basic current (Ib) 5A
Maximum rated current (Imax) 45A
Operational current range 0.4% Ib- Imax
Over current withstand 30Imax for 0.01s
Operational frequency range 50Hz ±10%
Internal power consumption ≤2W / 10VA
Test output flash rate (RED LED) 1000imp/kWh (2000imp/kWh optional)
Pulse output rate (pins 6 & 7) 1000imp/kWh (2000imp/kWh optional)
Consumption indicator (RED LED) Flashing at load running
Ps. De vraag of deze meters hun meterstanden onthouden na stroomuitval: Ja, getest bij de modbus RS485 versie.
Schema’s
Foto’s
Mobus registers
Function code 04 to read input parameters:
Address Register |
Input Register Parameter | Modbus Protocol Start Address Hex |
|||
Parameter | Units | Format | Hi byte | Lo byte | |
30001 | Voltage | Volts | Float | 00 | 00 |
30007 | Current | Amps | Float | 00 | 06 |
30013 | Active power | Watts | Float | 00 | 0C |
30019 | Apparent power | VA | Float | 00 | 12 |
30025 | Reactive power | VAr | Float | 00 | 18 |
30031 | Power factor | None | Float | 00 | 1E |
30071 | Frequency | Hz | Float | 00 | 46 |
30073 | Import active energy | kWh | Float | 00 | 48 |
30075 | Export active energy | kWh | Float | 00 | 4A |
30077 | Import reactive energy | kvarh | Float | 00 | 4C |
30079 | Export reactive energy | kvarh | Float | 00 | 4E |
30343 | Total active energy | kWh | Float | 01 | 56 |
30345 | Total reactive energy | Kvarh | Float | 01 | 58 |
Function code 10 to set holding parameter ,function code 03 to read holding parameter
Address Register |
Holding Register Parameter | Modbus Protocol Start Address Hex |
Description | ||
Parameters | Format | Hi byte | Lo byte | ||
40013 | Relay Pulse Width |
Float | 00 | 0C | Write relay on period in milliseconds: 60, 100 or 200, default 100ms. |
40019 | Network Parity Stop |
Float | 00 | 12 | Write the network port parity/stop bits for MODBUS Protocol, where: 0 = One stop bit and no parity, default. 1 = One stop bit and even parity. 2 = One stop bit and odd parity.3 = Two stop bits and no parity.Requires a restart to become effective. |
40021 | Meter ID | Float | 00 | 14 | Ranges from 1 to 247, .Default ID is 1. |
40029 | Baud rate | Float | 00 | 1C | 0:2400bps(default) 1:4800bps 2:9600bps 5:1200bps |
40087 | Pulse 1 output mode |
Hex | 00 | 56 | 0001: Import active energy, 0002: Import + export active energy, 0004: Export active energy, (default). 0005: Import reactive energy, 0006: Import + export reactive energy, 0008: Export reactive energy, |
463745 | Time of scroll display |
BCD | F9 | 00 | 0-30s Default 0:does not display in turns |
463761 | Pulse 1 output | Hex | F9 | 10 | 0000:0.001kWh/imp(default) 0001:0.01kWh/imp 0002:0.1kWh/imp 0003:1kWh/imp |
463777 | Measurement mode |
Hex | F9 | 20 | Data Format:Hex 0001:mode 1(total = import) 0002:mode 2 (total = import + export)(default) 0003:mode 3 (total = import – export) |
Voorbeeld uitlezen
Fabriek gegevens
Standaard adres: 1
Baud rate: 2400
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#!/usr/bin/env python # Modbus uitlezen # Apparaat: EASTRON SDM120 (KWh meter) # # Script gemaakt door S. Ebeltjes (domoticx.nl) from __future__ import division import pymodbus import serial from pymodbus.pdu import ModbusRequest from pymodbus.client.sync import ModbusSerialClient as ModbusClient #initialize a serial RTU client instance from pymodbus.transaction import ModbusRtuFramer from pymodbus.constants import Endian # Nodig voor 32-bit float getallen (2 registers / 4 bytes) from pymodbus.payload import BinaryPayloadDecoder # Nodig voor 32-bit float getallen (2 registers / 4 bytes) from pymodbus.payload import BinaryPayloadBuilder # Nodig om 32-bit floats te schrijven naar register method = "rtu" port = "/dev/ttyUSB0" baudrate = 2400 stopbits = 1 bytesize = 8 parity = "N" timeout = 1 retries = 2 try: client = ModbusClient(method = method, port = port, stopbits = stopbits, bytesize = bytesize, parity = parity, baudrate = baudrate, timeout = timeout, retries = retries) connection = client.connect() except: print "Modbus connectie error / EASTRON SDM120" def kwh(appid): try: data = client.read_input_registers(342, 2, unit=appid) decoder = BinaryPayloadDecoder.fromRegisters(data.registers, endian=Endian.Big) # endian=Endian.Little / endian=Endian.Big eastron_sdm120_kwh = round(decoder.decode_32bit_float(), 3) client.close() return eastron_sdm120_kwh except: print "Modbus register error (kwh)" return 0 print kwh(1) |
Voorbeeld uitlezen met pymodbus 2.4.0+ versie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#!/usr/bin/env python # Modbus uitlezen # Apparaat: EASTRON SDM120 (KWh meter) # # Script gemaakt door S. Ebeltjes (domoticx.nl) from __future__ import division import pymodbus import serial from pymodbus.pdu import ModbusRequest from pymodbus.client.sync import ModbusSerialClient as ModbusClient #initialize a serial RTU client instance from pymodbus.transaction import ModbusRtuFramer from pymodbus.constants import Endian # Nodig voor 32-bit float getallen (2 registers / 4 bytes) from pymodbus.payload import BinaryPayloadDecoder # Nodig voor 32-bit float getallen (2 registers / 4 bytes) from pymodbus.payload import BinaryPayloadBuilder # Nodig om 32-bit floats te schrijven naar register method = "rtu" port = "/dev/ttyUSB0" baudrate = 9600 stopbits = 1 bytesize = 8 parity = "N" timeout = 1 retries = 2 appid = 1 try: client = ModbusClient(method = method, port = port, stopbits = stopbits, bytesize = bytesize, parity = parity, baudrate = baudrate, timeout = timeout, retries = retries) connection = client.connect() except: print "Modbus connectie error" #SDM120 - Read KWH try: data = client.read_input_registers(342, 2, unit=appid) decoder = BinaryPayloadDecoder.fromRegisters(data.registers, byteorder=Endian.Big, wordorder=Endian.Big) kwh = round(decoder.decode_32bit_float(), 3) client.close() except: print "Modbus error" #SDM120 - Read VOLT try: data = client.read_input_registers(0, 2, unit=appid) decoder = BinaryPayloadDecoder.fromRegisters(data.registers, byteorder=Endian.Big, wordorder=Endian.Big) volt = round(decoder.decode_32bit_float(), 3) client.close() except: print "Modbus error" print volt print kwh |
Voorbeeld baudrate instellen pymodbus v2.4.0+ versie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# SCHRIJF nieuwe baudrate def setbaud(appid, newbaud): try: builder = BinaryPayloadBuilder(byteorder=Endian.Big, wordorder=Endian.Big) builder.add_32bit_float(newbaud) payload = builder.to_registers() payload = builder.build() data = client.write_registers(28, payload, skip_encode=True, unit=appid) client.close() print "Baudrate aangepast naar", newbaud return 1 except: print "Modbus register error (setbaud), staat de unit nog op -SET- ?" return 0 setbaud(1, 2) |
[#/handleidingen/modbus_eastron_SDM120″ ]