Page 3 1. Introduction The Modbus Unit has been specifically designed to work with Elster's A1140 and A1700 energy meters and fits under the terminal cover. The power supply of the unit is taken directly from a A1140 and from an additional power adapter when used with the A1700. The unit can be configured in one of three modes;...
The program mode command interpreter will listen on the RS232 port (RJ12) at 9600 baud, no parity and one stop bit. A USB dongle available from Camax UK may be used to gain access to the RS232 port. 3.1.1 Command set Typing help at the command line displays the available commands, these are: METER, RS232 and RS485.
Page 5 3.1.1.1 METER command Sets the outstation and password via parameters: --addr=<outstation> --pass=<oldpass,newpass> e.g. meter --addr=2 meter --pass=FEDC0003,12345678 3.1.1.2 RS232 command Sets the parameters for the RS232 port (RJ12) via parameters: --baud=<baudrate> --parity=<0=none | 1=odd | 2=even> --stopbits=<1 | 2> --read-timeout=<milliseconds>...
Page 6 3.3 Addressed transparent mode This mode is entered then the address bits are set to a non zero address and the modbus disable bit is set to on. The meter type field is ignored. 1 2 3 4 5 6 7 In this mode the unit acts as an addressable RS232 to RS485 converter.
Page 7 Annexure A: Register Map Instrumentation Register Address Description Data type Total Active Power float32 Phase A Active Power float32 Phase B Active Power float32 Phase C Active Power float32 Total Reactive Power float32 Phase A Reactive Power float32 Phase B Reactive Power float32 Phase C Reactive Power...
Page 8
Page 8 Cumulatives Register Address Description Data type Import Wh float64 Export Wh float64 Q1 varh float64 Q2 varh float64 Q3 varh float64 Q4 varh float64 float64 Customer Defined 1 float64 Customer Defined 2 float64 Customer Defined 3 float64 Hist Import Wh float64 Hist Export Wh float64...
Page 10
Page 10 Time of use (32bit Alternatives) Register Address Description Data type 1300 TOU1 float32 1302 TOU2 float32 1304 TOU3 float32 1306 TOU4 float32 1316 HIST_TOU1 float32 1318 HIST_TOU2 float32 1320 HIST_TOU3 float32 1322 HIST_TOU4 float32 Maximum Demand Register Address Description Data type float64 float64...
Page 11
Page 11 Maximum Demand (32bit Alternatives) Register Address Description Data type 1500 float32 1502 float32 1504 float32 1506 float32 1524 HIST_MD1 float32 1526 HIST_MD2 float32 1528 HIST_MD3 float32 1530 HIST_MD4 float32 Multi Utility Register Address Description Data type MULTI_UTIL1 float64 MULTI_UTIL2 float64 MULTI_UTIL3...
Page 12
Page 12 General Register Address Description Data type Meter Date (seconds since 1 Jan 1970) uint32 Uptime uint32 Version uint32 Meter Serial Number digit 1 and 2 uint16 Meter Serial Number digit 3 and 4 uint16 Meter Serial Number digit 5 and 6 uint16 Meter Serial Number digit 7 and 8 uint16...
Page 13 Annexure B: Status indication Status LED (A) Modbus enabled (Address > 0), meter found: 80ms on/80ms 0ff/80ms on/3s off, repeat Modbus enabled (Address > 0), meter not found: 500ms on/500ms 0ff, repeat Modbus enabled (Address = 0), invalid setting: All LEDS 100ms on/100ms 0ff, repeat Modbus disabled (Address = 0), non addressed transparent mode: 100ms on/1000ms 0ff, repeat...
Page 14
Page 14 RS485 Receive LED (D) Indicates incoming data on the RS485 interface. RS485 Transmit LED (E) Indicates outgoing data on the RS485 interface. Program mode LEDS will show a walking 'on' from left to right.
Page 15 Annexure C: Pinouts RS232 – RJ12 Pin Number Name Direction Description Output Transmit data output Input Receive data input Not used Not used Power supply common Power supply voltage (5..12VDC) RS485 – RJ12 Pin Number Name Direction Description Bidir Positive RS485 signal Bidir...
Page 16 Annexure D: USB Adapter Configuration of the modem on a PC is done via a USB adapter that provides the communications interface and PSU. The FTDI controller chip is used in the adapter. The newest driver is available at www.ftdichip.com...
Page 18
Page 18 readCumulatives.py import sys import getopt import struct from pymodbus.client.sync import ModbusSerialClient as ModbusClient def getFloatBigEndian(client,unit, address): regs = client.read_input_registers(address=address, count=2, unit=unit).registers ii = regs[0] * 0x10000 + regs[1] f = struct.unpack('f', struct.pack('I', ii)) return f[0] def getDoubleBigEndian(client, unit, address): try: tmpaddress = int(address) tmpunit = int(unit)
Page 19
Page 19 readTOU.py import sys import getopt import struct from pymodbus.client.sync import ModbusSerialClient as ModbusClient def getFloatBigEndian(client,unit, address): regs = client.read_input_registers(address=address, count=2, unit=unit).registers ii = regs[0] * 0x10000 + regs[1] f = struct.unpack('f', struct.pack('I', ii)) return f[0] def getDoubleBigEndian(client, unit, address): try: tmpaddress = int(address) tmpunit = int(unit)
Page 20
Page 20 readMD.py import sys import getopt import struct from pymodbus.client.sync import ModbusSerialClient as ModbusClient def getIntBigEndian(client,unit, address): regs = client.read_input_registers(address=address, count=2, unit=unit).registers i = regs[0] * 0x10000 + regs[1] return i def getDoubleBigEndian(client, unit, address): try: tmpaddress = int(address) tmpunit = int(unit) except: return None...
Page 21
Page 21 readMeterSerial.py import sys import getopt import struct from pymodbus.client.sync import ModbusSerialClient as ModbusClient def regArrayToString(regs): s = '' for reg in regs: s += chr((reg >> 8) & 0x00FF) s += chr(reg & 0x00FF) s = s.strip('\x00') return s name == ' main ':...