Skip to content
Contact

DALI · API access

Modbus slave register map

The exact registers a SCADA system or PLC reads from a station's Modbus slave, with data types, byte order, parameter order and error responses.

A station can act as a Modbus slave, so a SCADA system, PLC or other Modbus master can poll it for the latest values. The same register map is served on all three slave ports: TCP, RS-485 and RS-232. You turn each one on and set it up on the Modbus page; each slave tab also shows this map for the station's current parameters, under Slave Information.

The rules in short

  • Function code 4 only (Read Input Registers). Any other function code gets exception 01.
  • Read-only. Nothing a master sends can change the station.
  • Addresses are zero-based protocol addresses. If your SCADA package numbers input registers from 30001, register 0 here is 30001 there.
  • Floating-point values are 32-bit, in two registers, byte order CDAB: the low 16-bit word first, each word most significant byte first. Some tools call this "Float, little-endian, byte swap" or "word swapped".
  • At most 125 registers per read.
  • Values refresh once per second.

Register map

RegistersContentData type
0YearUnsigned 16-bit
1MonthUnsigned 16-bit
2DayUnsigned 16-bit
3HourUnsigned 16-bit
4MinuteUnsigned 16-bit
5SecondUnsigned 16-bit
6 to 7Network status: the cellular signal strength value reported by the station's modemFloat, CDAB
8 to 9Latitude, in degreesFloat, CDAB
10 to 11Longitude, in degreesFloat, CDAB
12 to 13Altitude, from GPSFloat, CDAB
14 to 25Reserved. Reads return 0. Do not rely on them.
26 onwardsParameter values, two registers each, in parameter orderFloat, CDAB
3000 onwardsParameter quality, one register each, in parameter order (firmware 4.1 and later)Unsigned 16-bit

The time in registers 0 to 5 is the station's local date and time when the values were published.

Latitude and longitude are the station's location as set on the Device page (entered by hand, or taken from GPS). Altitude always comes from the GPS.

Parameter registers

Parameter number n (its position on the Parameters page, starting at 1) is at:

Register
Value, first register26 + 2 × (n − 1)
Value, second register27 + 2 × (n − 1)
Quality (4.1 and later)3000 + (n − 1)

So parameter 1 is at 26 and 27, parameter 2 at 28 and 29, parameter 10 at 44 and 45. The slave serves up to 255 parameters, which ends at registers 534 and 535.

Each value is rounded to the number of decimals set for that parameter, the same as in a downloaded file.

Worked example

A value of 812.5 is the 32-bit float 0x444B2000. The station sends it as:

RegisterHexBytes
260x2000C D
270x444BA B

A master set to "ABCD" (big-endian) byte order would read the two words the wrong way round and show a meaningless number. Set it to CDAB.

Quality registers and stale values

On firmware 4.1 and later, each parameter also has a quality register:

QualityMeaning
1Fresh: read from the sensor in this cycle
0Held: the last good value, between reads
2Stale: the sensor has stopped answering

When a value is stale, or its sensor has not answered at all since the station started, the value registers hold NaN (not a number) rather than the last reading, so a real zero is never confused with missing data. If your master cannot handle NaN, switch Device, Storage, Stale Value Representation off to send 0 instead. That setting also changes downloads and cloud uploads.

Registers from 4000 are reserved for sensor calibration status in a later release. Do not build on them yet.

Setting the parameter order

The register a parameter lives at is set by its position on the Parameters page:

  1. 1

    Open Parameters. The # column is each parameter's position and the Addr column is its first register on the Modbus slave.

  2. 2

    Drag a row by its grip, or double-click its number to type a new position. Clear any Type filter first; reordering is only possible with the full list showing.

  3. 3

    Click Save Order. The new order applies to the Modbus slave, to the column order of downloaded files, and to Live3.

Reordering moves registers

Adding, deleting or reordering parameters changes the registers of every parameter after the change. Update the mapping in your SCADA system whenever you change the list, and check the Addr column afterwards.

How reads are checked

You sendThe station answers
A function code other than 4Exception 01, illegal function
A read of 0 registers, or more than 125Exception 03, illegal data value
An odd number of registers anywhere in registers 0 onwards up to the last parameterException 03. Read the header and values in whole pairs.
A read that runs past the last configured parameter, or past the last quality registerException 02, illegal data address
A read in the unused ranges between blocksException 02
Any read beyond register 25 before the station has published its first values after startingException 02, until the station publishes its first values

Reads of the quality block may be any length within the configured parameters.

Connection settings

SettingTCP slaveRS-485 and RS-232 slaves
ProtocolModbus TCPModbus RTU
Slave ID1 to 2551 to 255
PortDefault 502, 1 to 65535
Slave ID MatchIgnored by default: any unit ID is accepted. Can be set to Enforced.
Baud rate9600, 19200, 38400, 57600 or 115200
ParityNone, Even or Odd
Stop bits1 or 2
Data bits8
Simultaneous connectionsUp to 5

Modbus has no sign-in or encryption of its own. Allow port 502 only from your SCADA network, and turn off any slave you do not use. See Security.