All devices

Enapter · Electrolyser

Electrolyser 4.1 (EL 4.1) Modbus register map

Default configuration

Protocol
Modbus TCP
Port
502
Unit ID
1
Addressing
0-based
Byte order
Big endian
Word order
High word first

Register map

AddressCountNameTypeUnitScaleAccess
02
Device model
0x45533431 for the EL 4.1.
UInt32-1R
21
Firmware major and minor version
e.g. 769 means major 769 // 256 = 3 and minor 769 % 256 = 1, i.e. 3.1.
UInt16-1R
31
Firmware patch version
UInt16-1R
42
Firmware build number
UInt32-1R
181
System state
0 = internal error / system not initialised, 1 = system in operation, 2 = error, 3 = fatal error, 4 = system in expert mode.
UInt16-1R
202
Live time
Total time the system has been powered up, not only the time the stack was working.
UInt32s1R
222
Uptime
How long the system has been running.
UInt32s1R
10002
Product code
Enumeration of the ELE41 product variants (e.g. 0x44 = ELE410535A2ASV01).
UInt32-1R
10022
Stack start/stop cycles
How many start/stop cycles the stack has run.
UInt32-1R
10042
Stack total runtime
UInt32s1R
10062
Stack total hydrogen production
Float32NL1R
10082
Hydrogen flow rate
NaN when the electrolyser is not producing hydrogen.
Float32NL/h1R
10141
Cooling type
1 = air cooling, 2 = liquid cooling.
UInt16-1R
12001
Electrolyser state
0 = halted, 1 = maintenance mode, 2 = idle, 3 = steady, 4 = stand-by (max pressure), 5 = curve.
UInt16-1R
40001
Configuration progress
1 = a configuration is in progress.
UInt16-1R
40011
Configuration source
1 = configuration over Modbus.
UInt16-1R
40022
Last configuration result
0 = OK, 1 = permanent failure, 2 = no entry / interrupted, 5 = I/O data save error, 11 = try again, 13 = access denied (a changed register is read-only), 16 = busy, 22 = invalid data.
Int32-1R
40041
Last configuration wrong holding register
First invalid holding register number that prevented a successful configuration commit.
UInt16-1R
46001
Heartbeat
Modbus heartbeat timeout in seconds; 0 = disabled (default).
UInt16s1R
60001
Dryer error flags
16-bit bitmask; bit 0-3 = TT00-TT03 invalid, bit 4-7 = TT00-TT03 value growth not enough, bit 8 = pressure switch PS00 triggered, bit 9 = pressure switch PS01 triggered, bit 10-12 = F100-F102 invalid RPM, bit 13 = PT00 invalid, bit 14 = PT01 invalid.
UInt16-1R
60011
Dryer warning flags
Same bitmask as register 6000.
UInt16-1R
60022
Dryer TT00 temperature
Heater element temperature, cartridge 0 (first line).
Float32°C1R
60042
Dryer TT01 temperature
Heater element temperature, cartridge 1 (second line).
Float32°C1R
60062
Dryer TT02 temperature
Heater element temperature, cartridge 2 (first line).
Float32°C1R
60082
Dryer TT03 temperature
Heater element temperature, cartridge 3 (second line).
Float32°C1R
60102
Dryer PT00 input pressure
Float32bar1R
60122
Dryer PT01 output pressure
Float32bar1R
60211
Dryer state
Dryer logic state.
UInt16-1R
70001
High electrolyte level switch LSH102B
1 = electrolyte level above the sensor, 0 = below.
UInt16-1R
70011
Very high electrolyte level switch LSHH102A
1 = electrolyte level above the sensor, 0 = below.
UInt16-1R
70021
Low electrolyte level switch LSL102D
1 = electrolyte level above the sensor, 0 = below.
UInt16-1R
70031
Medium electrolyte level switch LSM102C
1 = electrolyte level above the sensor, 0 = below.
UInt16-1R
70041
Electrolyte tank high pressure switch PSH102
1 = pressure too high, 0 = normal.
UInt16-1R
70071
Electronic compartment high temperature switch TSH108
1 = temperature too high, 0 = normal.
UInt16-1R
70091
Chassis water presence switch WPS104
1 = water present on the input, 0 = no water input.
UInt16-1R
70101
Dry contact
1 = OK (closed), 0 = not OK (open).
UInt16-1R
75002
Electrolyte cooler fan speed F103A
Float32rpm1R
75022
Air circulation fan speed F104B
Float32rpm1R
75042
Electronic compartment cooling fan speed F108C
Float32rpm1R
75062
Electrolyte flow FM106
Float32L/min1R
75082
Stack current HASS
Float32A1R
75102
Stack voltage (PSU)
Float32V1R
75122
Inner hydrogen pressure PT101A
Float32bar1R
75142
Outer hydrogen pressure PT101C
Float32bar1R
75162
Water inlet pressure PT105
Float32bar1R
75182
Electrolyte temperature TT102A
Float32°C1R
75202
Downstream temperature TT106
Float32°C1R
75262
Board power 24 V
Float32V1R
75322
Board temperature
Float32°C1R
75382
Gas presence HT104
Float32ppm1R
75402
Safety board temperature TE108
Float32°C1R
80022
Outer hydrogen pressure PT101C, raw sensor value
Raw sensor voltage, not a pressure.
Float32V1R
80042
Stack current HASS, raw sensor value
Raw sensor voltage, not a current.
Float32V1R

Read this device live with Modbus Connect, free for Windows, macOS and Linux

Related guides

Notes

Register map of the Enapter Electrolyser 4.1 as published for firmware 3.5.0; Enapter versions this document per firmware release (the handbook also holds 3.4.0, 3.4.1 and 3.4.2 for this model) and the register set does differ between the EL 4.1 and the older EL 2.1, which has its own seed. The vendor states port 502 and Modbus slave address 1 ('Enapter Electrolyser always addressed as a slave'). Addresses are the document's own register numbers, which it defines as protocol addresses (holding register 0 is 40001, addressed as 0000 in the PDU), so they are used unchanged as zero-based wire addresses. Data is big-endian, high word first; boolean fields are 16-bit registers where 0 is false and any other value is true. Configuration registers are written as a transaction: open with 4000, write, commit with 4001. This firmware also exposes the Water Tank 4.1 block (6200-6223) through the electrolyser. Left out because the format has no 64-bit or 128-bit type: holding 0 (Unix time), input 6 (control board serial, uint128), 14 (chassis serial) and 1010 (stack serial); also left out are the warning and error code arrays at input 768 and 832 (whose first register holds the count) and the reserved water-tank rows 6212-6218 and 6223. Source: Enapter Handbook, 'EL 4.1 FW 3.5.0 Modbus TCP Communication Interface'.

Related devices