Skip to main content
Siemens · Level 01 practical guide

Siemens PLC to Energy Meter over Modbus RTU: Read Power Data

Read voltage, current, power and energy into a Siemens PLC over Modbus RTU. Learn register offsets, float decoding, polling and data-quality checks.

Softwell Automation · Updated 8 September 2026

Quick answer

Configure a compatible Siemens serial master, read the meter’s documented registers into a raw buffer, then decode each value using the specified type, word order and units. Verify readings against the meter display before using them in an HMI or report.

Identify the meter and establish a read-only test

Begin with the complete meter model, firmware and communication option. A meter with Ethernet does not automatically have RS485. This guide uses an S7-1200 serial master and a Siemens SENTRON PAC3200 with the documented PAC RS485 expansion option as a concrete register example.

For another meter, retain the workflow but replace the register map. Record slave ID, baud rate, parity, stop bits, supported read function, address convention, data type, word order and units. These belong in the project handover, not only in a technician’s notebook.

Meter installation and current-transformer circuits must be handled by qualified personnel using the equipment instructions. This communication exercise does not require changing energized measurement wiring or resetting stored energy counters.

Prepare a register sheet with both address conventions

The cited PAC RS485 manual lists these offsets. The DATA_ADDR values below use legacy MB_MASTER holding-register notation: 40001 plus the zero-based offset. Confirm the map revision for the installed meter before using the example.

QuantityDocumented offsetDATA_ADDR for FC03Words / format / unit
Average phase-to-phase voltage59400602 / Float32 / V
Average current61400622 / Float32 / A
Total active power65400662 / Float32 / W
Import active energy, tariff 1801408024 / Float64 / Wh

Use MODE=0 for the applicable legacy holding-register read. DATA_LEN counts 16-bit registers, not bytes and not the number of engineering values. The energy example is a tariff-specific counter; it is not automatically total energy across all tariffs.

Do not assume consecutive quantities are always contiguous or share a data type. Start with one documented quantity, validate it, then combine reads only across a supported continuous range.

Initialize the port and schedule requests

  1. Configure the compatible RS485 module in TIA Portal and match the serial settings to the meter. Start with one uniquely addressed slave.
  2. Initialize the port with the instruction family appropriate to the controller and module. Confirm successful initialization before starting the read scheduler.
  3. Create separate raw receive buffers and engineering-value tags. Check the access requirements of DATA_PTR for the inserted block version.
  4. Issue one read job and keep its arguments stable until DONE or ERROR. Do not launch overlapping requests on the same port.
  5. After a valid response, decode the buffer and update the engineering tag with its quality and update time.
  6. On a timeout, preserve diagnostics and mark data stale. Use a bounded retry strategy so one unavailable meter does not monopolize a shared bus.

A faster PLC scan does not mean the meter produces a new measurement every scan. Select a polling interval suitable for the meter update rate, number of slaves and reporting requirement. Keep trend timestamps associated with successful updates.

Decode floating-point data without numeric conversion

Two 16-bit registers can contain the bit pattern of one IEEE-754 Float32 value. The correct operation is to arrange the documented bytes and reinterpret that pattern as a REAL. Converting the integer magnitude of the combined DWORD to REAL produces a different number.

Illustrative IEEE-754 test vector:
230.0 = hexadecimal 0x43660000
High word first: 0x4366, 0x0000
Low word first:  0x0000, 0x4366
Choose the order specified by the meter; do not guess.

This is a decoder test vector, not a statement about every meter’s transport order. Verify ordering from the device documentation and at least two known readings. If the library already normalizes bytes within each register, an additional byte swap can corrupt otherwise correct data.

A four-register Float64 energy value requires a compatible 64-bit floating-point destination or a validated conversion routine. Do not discard half the words or decode it as two independent REAL values. For the example register, convert Wh to kWh by dividing the decoded value by 1000.

Similarly, divide a decoded watt value by 1000 for kW. Confirm whether transformer ratios are already applied by the meter; scaling the same CT/PT ratio again in the PLC can create a large, consistent error.

Practical lab: validate readings and data quality

Read a stable voltage value and compare it with the local display. Record raw words, decoded value, unit, display reading and timestamp. Repeat at a second operating point where practicable. A plausible reading at just one point is weak evidence of a correct decoder.

Next compare current and active power. Investigate sign and phase conventions before treating negative power as a communication fault. For energy, choose the same tariff and import/export counter on the display as in the register sheet.

TestRequired observation
Normal readFresh value with matching units and valid quality
Meter unavailableCommunication alarm and stale indication
RecoveryFresh valid value after a successful response
Energy decreases unexpectedlyCounter reset, replacement, rollover or changed counter investigated

For consumption over an interval, subtract two valid readings from the same counter. A negative difference should trigger a reset/rollover review rather than silently becoming negative consumption. Keep sufficient precision for small increments on a large accumulated total.

Avoid writing zero into an HMI value on timeout: zero volts, zero demand and unavailable data have different meanings. Retain the last good value with a visible stale state, or use an explicitly invalid display state according to the application.

Troubleshoot the result in layers

SymptomLikely diagnostic layer
No replyPhysical bus, address and serial format
Exception responseFunction, offset, length or unavailable register
Very large, tiny or non-finite numberMisaligned data type, word order or bit reinterpretation
Consistent factor-of-1000 errorW/kW or Wh/kWh conversion
Frozen but plausible valuePolling state, stale quality or display refresh

Keep a known-good single-register-group read in the project as a diagnostic reference. Add the final register sheet and a sample raw response to the handover so future maintenance can distinguish a meter configuration change from a PLC decoding problem.

For the underlying protocol distinction, see Modbus RTU versus Modbus TCP. For a drive-control application using the same serial principles, see Siemens PLC to G120 over Modbus RTU.

Frequently asked questions

Are energy-meter register addresses universal?

No. The table is an identified PAC RS485 example. Other models can use different offsets, functions, formats, word order and units.

Why does the PLC show a huge number?

Check the register start, data length and byte/word order. A floating-point bit pattern must be reinterpreted, not numerically converted from an integer.

Should I show zero when communication fails?

Use an explicit invalid or stale quality state. A communication failure is not evidence that the measured quantity is zero.

Technical references

Use the document edition matching your installed hardware and firmware. The linked manuals establish the device-specific facts; the worked examples and check sheets are training exercises.

Practice with guidance

Discuss Siemens PLC and drive training with Softwell Automation.

Contact Softwell
☎ Call WhatsApp ✉ Email Enquire Now