Socomec DIRIS A-40 Modbus register map

Panel mounted multifunction power meter for single and three phase networks with RS485 Modbus RTU. The map covers network voltages, load currents, power and power factor, import and export energy, tariffs and logical inputs and outputs.

Protocol
Modbus RTU
Addresses in the manual
0-based protocol addresses, as sent on the wire
32 and 64-bit values
High word first (AB CD)
Registers listed
71
Checked against
MODBUS TABLES - A-40 v1.7.4 (file CMT-1.7.4B, dated 2025-01)

Address base. The communication table lists a decimal address with the same value in hex (for example 36867 is 0x9003) and no function prefix. Socomec's technical note on reading DIRIS meters (written for the A-200, said to apply to other DIRIS models such as the A-40) shows reading a register by entering the printed number unchanged in a client that uses protocol addresses, and says to add 1 only when a client numbers registers from 1. Registers are read with function 3 (pp. 4, 7-8 of that note). Treat the printed number as the wire address. Address 36867 in the manual is address 36867 on the wire.

Word order. 32-bit values put the high word first. This comes from Socomec's DIRIS technical note (p. 5), which states big-endian 32-bit registers for DIRIS meters; the A-40 communication table itself does not repeat it.

Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.

Downloads

The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.

Registers

71 registers
Manual Wire Register Type Regs Unit Scale Access Area
36867 36867 System phase to neutral voltageVoltageLN_Sys uint32 2 V 0.01 R Holding (FC03)
36869 36869 System phase to phase voltageVoltageLL_Sys uint32 2 V 0.01 R Holding (FC03)
36871 36871 FrequencyFrequency · Raw value is in millihertz. uint32 2 Hz 0.001 R Holding (FC03)
36873 36873 Phase 1 to neutral voltageVoltage_V1 uint32 2 V 0.01 R Holding (FC03)
36875 36875 Phase 2 to neutral voltageVoltage_V2 uint32 2 V 0.01 R Holding (FC03)
36877 36877 Phase 3 to neutral voltageVoltage_V3 uint32 2 V 0.01 R Holding (FC03)
36879 36879 Neutral voltage VnVoltage_Vn uint32 2 V 0.01 R Holding (FC03)
36881 36881 Line 1 to line 2 voltageVoltage_U12 uint32 2 V 0.01 R Holding (FC03)
36883 36883 Line 2 to line 3 voltageVoltage_U23 uint32 2 V 0.01 R Holding (FC03)
36885 36885 Line 3 to line 1 voltageVoltage_U31 uint32 2 V 0.01 R Holding (FC03)
36893 36893 Phase voltage unbalance (Vnb)VoltageUnbalance_Vnb uint16 1 % 0.01 R Holding (FC03)
36898 36898 Line voltage unbalance (Unb)VoltageUnbalance_Unb uint16 1 % 0.01 R Holding (FC03)
37150 37150 System voltage THD (phase to neutral)THD_V_Sys uint16 1 % 0.01 R Holding (FC03)
37151 37151 System voltage THD (phase to phase)THD_U_Sys uint16 1 % 0.01 R Holding (FC03)
37144 37144 Phase 1 to neutral voltage THDTHD_V1 uint16 1 % 0.01 R Holding (FC03)
37145 37145 Phase 2 to neutral voltage THDTHD_V2 uint16 1 % 0.01 R Holding (FC03)
37146 37146 Phase 3 to neutral voltage THDTHD_V3 uint16 1 % 0.01 R Holding (FC03)
18440 18440 System currentCurrent_Sys uint32 2 A 0.001 R Holding (FC03)
18458 18458 Phase 1 currentCurrent_I1 uint32 2 A 0.001 R Holding (FC03)
18460 18460 Phase 2 currentCurrent_I2 uint32 2 A 0.001 R Holding (FC03)
18462 18462 Phase 3 currentCurrent_I3 uint32 2 A 0.001 R Holding (FC03)
18464 18464 Neutral currentCurrent_In uint32 2 A 0.001 R Holding (FC03)
18466 18466 Current unbalance (Inba)CurrentUnbalance_Inba uint16 1 % 0.01 R Holding (FC03)
18476 18476 Total active powerActivePower_Total int32 2 W 1 R Holding (FC03)
18478 18478 Total reactive powerReactivePower_Total int32 2 var 1 R Holding (FC03)
18480 18480 Total lagging reactive powerReactivePowerLagging_Total int32 2 var 1 R Holding (FC03)
18482 18482 Total leading reactive powerReactivePowerLeading_Total int32 2 var 1 R Holding (FC03)
18484 18484 Total apparent powerApparentPower_Total uint32 2 VA 1 R Holding (FC03)
18486 18486 Total power factorPowerFactor_Total int16 1 0.001 R Holding (FC03)
18487 18487 Total power factor typePowerFactorType_Total · 0 = undefined, 1 = leading, 2 = lagging. The table lists it as an 8-bit value in one register. uint16 1 1 R Holding (FC03)
18488 18488 Phase 1 active powerActivePower_P1 int32 2 W 1 R Holding (FC03)
18490 18490 Phase 2 active powerActivePower_P2 int32 2 W 1 R Holding (FC03)
18492 18492 Phase 3 active powerActivePower_P3 int32 2 W 1 R Holding (FC03)
18494 18494 Phase 1 reactive powerReactivePower_Q1 int32 2 var 1 R Holding (FC03)
18496 18496 Phase 2 reactive powerReactivePower_Q2 int32 2 var 1 R Holding (FC03)
18498 18498 Phase 3 reactive powerReactivePower_Q3 int32 2 var 1 R Holding (FC03)
18512 18512 Phase 1 apparent powerApparentPower_S1 uint32 2 VA 1 R Holding (FC03)
18514 18514 Phase 2 apparent powerApparentPower_S2 uint32 2 VA 1 R Holding (FC03)
18516 18516 Phase 3 apparent powerApparentPower_S3 uint32 2 VA 1 R Holding (FC03)
18518 18518 Phase 1 power factorPowerFactor_PF1 int16 1 0.001 R Holding (FC03)
18519 18519 Phase 2 power factorPowerFactor_PF2 int16 1 0.001 R Holding (FC03)
18520 18520 Phase 3 power factorPowerFactor_PF3 int16 1 0.001 R Holding (FC03)
19843 19843 Total positive active energy (Ea+)EnergyActiveImport_kWh · Whole kWh. The tenths of a Wh are in the residual register at 19845. uint32 2 kWh 1 R Holding (FC03)
19845 19845 Total positive active energy, residual partEnergyActiveImport_Residual uint16 1 Wh 0.1 R Holding (FC03)
19846 19846 Total negative active energy (Ea-)EnergyActiveExport_kWh · Whole kWh. Residual at 19848. uint32 2 kWh 1 R Holding (FC03)
19848 19848 Total negative active energy, residual partEnergyActiveExport_Residual uint16 1 Wh 0.1 R Holding (FC03)
19849 19849 Total positive reactive energy (Er+)EnergyReactiveImport_kvarh · The table gives the unit as varh x 10^3, so the raw value is in kvarh. Residual at 19851. uint32 2 kvarh 1 R Holding (FC03)
19851 19851 Total positive reactive energy, residual partEnergyReactiveImport_Residual uint16 1 varh 0.1 R Holding (FC03)
19852 19852 Total negative reactive energy (Er-)EnergyReactiveExport_kvarh · Residual at 19854. uint32 2 kvarh 1 R Holding (FC03)
19854 19854 Total negative reactive energy, residual partEnergyReactiveExport_Residual uint16 1 varh 0.1 R Holding (FC03)
19855 19855 Total apparent energy (Eap)EnergyApparent_kVAh · Residual at 19857. uint32 2 kVAh 1 R Holding (FC03)
19857 19857 Total apparent energy, residual partEnergyApparent_Residual uint16 1 VAh 0.1 R Holding (FC03)
19841 19841 Total hour meterHourMeterTotal uint32 2 s 1 R Holding (FC03)
19872 19872 Partial positive active energyEnergyActiveImportPartial_kWh uint32 2 kWh 1 R Holding (FC03)
19875 19875 Partial negative active energyEnergyActiveExportPartial_kWh uint32 2 kWh 1 R Holding (FC03)
19870 19870 Partial hour meterHourMeterPartial uint32 2 s 1 R Holding (FC03)
512 512 Total operating hours counterOperatingHoursTotal uint32 2 s 1 R Holding (FC03)
514 514 Partial operating hours counterOperatingHoursPartial uint32 2 s 1 R Holding (FC03)
35214 35214 Tariff number in progressTariffInProgress · 0 to 7 for tariffs 1 to 8. uint16 1 1 R Holding (FC03)
20225 20225 Positive active energy, tariff 1EnergyActiveImport_T1 uint32 2 kWh 1 R Holding (FC03)
20227 20227 Positive active energy, tariff 2EnergyActiveImport_T2 uint32 2 kWh 1 R Holding (FC03)
20229 20229 Positive active energy, tariff 3EnergyActiveImport_T3 uint32 2 kWh 1 R Holding (FC03)
20231 20231 Positive active energy, tariff 4EnergyActiveImport_T4 uint32 2 kWh 1 R Holding (FC03)
13504 13504 Number of loadsLoadsNumber uint16 1 1 R Holding (FC03)
11280 11280 Number of logical outputsOutputsNumber uint16 1 1 R Holding (FC03)
11282 11282 Output activation bitsOutputsActivated · Bit x set means output x is activated. The table lists this block as read and write. bitfield16 1 1 RW Holding (FC03)
11521 11521 Logical input 1 stateInput1State · 0 = deactivated, 1 = activated. uint16 1 1 R Holding (FC03)
50007 50007 Product software versionSoftwareVersion · Encoded as in the manual example, 100 meaning version 1.00. uint16 1 1 R Holding (FC03)
50006 50006 Modbus table versionModbusTableVersion uint16 1 1 R Holding (FC03)
50042 50042 Vendor nameVendorName string 8 1 R Holding (FC03)
50050 50050 Product nameProductName string 8 1 R Holding (FC03)

Scale is the number to multiply the raw value by to get the unit. Types with more than one register (32 and 64-bit) follow the word order above.

Open in Modbus Poll

  1. Download the Modbus Poll blocks file.
  2. Open Modbus Poll, connect to the device and set its unit ID. In Modbus Poll set Word order to AB CD.
  3. In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
  4. The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.

Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.

Source and accuracy

Manufacturer document: MODBUS tables of DIRIS A-40 (communication table) (www.socomec.fr)

MODBUS TABLES - A-40 v1.7.4 (file CMT-1.7.4B, dated 2025-01), Network Inst., Load Inst., Energy meters, Tariff and I/O tables. Read on 2026-10-24.

Also used: How to read measurement data via Modbus on Socomec DIRIS power meters (technical note) (www.socomec.us)

Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.

Found a mistake? Report it by email with the register address and the manual page.

Other power meters

All register maps · Modbus addressing explained