LOGO! Modbus: Reading Kamstrup smart-me 32-bit Float Values

David Krause23 min read
ModbusSiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Problem Overview

Field installations that pair a Siemens LOGO! 8 base module (BM) as a Modbus TCP client with a smart-me Kamstrup HAN gateway consistently report a single failure mode: the LOGO! reads a constant 0 from the energy meter while an independent Modbus master test tool (QModMaster, Modbus Poll, the Home Assistant Modbus integration, or libmodbus-based scripts) reads the same register and returns a valid IEEE-754 32-bit float. The fault is layered: three independent root causes stack on top of each other, and any one of them produces the identical 0-value symptom that the LOGO! program surfaces.

This article documents the three failure modes, the correct Network Analog Input (NAI) configuration in LOGO! Soft Comfort V8.x, the F/I converter pattern required to scale the 32-bit float into the LOGO!'s native 16-bit signed integer range, and the verification sequence using the LOGO! Online Test Data Table.

Symptom Matrix

Observed symptom Tool that reports the symptom Most likely root cause Section
LOGO! reads 0 from a register that QModMaster reads as a valid float LOGO! Soft Comfort Online Test / Data Table Register width mismatch (16-bit read of a 32-bit value) Fix #2
LOGO! connection times out, no NAI update LOGO! Soft Comfort diagnostics Wrong IP address in NAI server field (e.g., 198.168.0.x) Fix #1
LOGO! and QModMaster both receive ECONNREFUSED on TCP/502 Wireshark / Modbus Poll / QModMaster smart-me local Modbus server disabled in firmware Fix #3
LOGO! reads non-zero but oscillating or scaled incorrectly LOGO! Online Test Byte order / word swap between VW pairs Byte Order
LOGO! Online Test shows NAI value stuck at -32768 LOGO! Soft Comfort Server returns signed 16-bit value; LOGO! native range reached Integer Range
Scope and firmware baseline: This reference covers LOGO! 8 base modules 6ED1052-1MD08-0BA1 (FS04), 6ED1052-1xx08-0BA2 (FS05), and 6ED1052-2xx08-0BA2 with Ethernet interface, running LOGO! Soft Comfort V8.3 or later. Smart-me Kamstrup HAN gateway modules with firmware 1.2.x and later are covered. LOGO! 8 FS-03 modules (6ED1052-1MD08-0BA0) ship with reduced Modbus client support (4 concurrent connections instead of 8) and are called out where divergent.

Root Cause Analysis

The three independent failure modes are documented below in the order they should be ruled out during commissioning. Each section provides the diagnosis, the corrective action, and the verification step.

Failure Mode A — Network Address Misconfiguration

The LOGO! NAI block contains a four-field IP address (octet 1 through octet 4) and a separate port field. A single typo in any of the four octets — most commonly 198.168.0.x instead of 192.168.0.x — sends the TCP SYN to a non-existent host. The LOGO! Modbus client implementation reports the timeout to the FBD interpreter, the NAI value is never updated, and the local V-memory location retains its power-on reset value of 0.

The IP address in the LOGO! program must match the IP address that QModMaster uses to read the same smart-me module. The QModMaster connection status (green indicator) confirms the TCP path; if QModMaster reads the meter but LOGO! reads 0, the LOGO! NAI IP address field is wrong even when it looks correct at a glance.

Failure Mode B — Register Width Mismatch

A single LOGO! NAI block issues Modbus function code 0x03 (Read Holding Registers) with quantity = 1, returning a single 16-bit register. The Kamstrup meter exposes active power, voltage, current, and energy values as 32-bit IEEE-754 floats across two consecutive holding registers (4 bytes). With quantity = 1, the LOGO! receives only the first 2 bytes of the 4-byte value; the remaining 2 bytes are silently discarded by the master. The high 16 bits of an IEEE-754 float representing a normal residential active power value (e.g., 1.234 kW) often decode to a value that the LOGO! FBD interpreter rejects as out-of-range, and the NAI output is clamped to 0.

The correct pattern is to use two NAI blocks at consecutive V-memory addresses (e.g., VW0 and VW2) that read the same starting register address, then combine the two 16-bit halves into a 32-bit value using the LOGO! arithmetic block, and finally convert the IEEE-754 float to a LOGO! integer with the F/I (Float-to-Integer) converter block.

Failure Mode C — smart-me Local Modbus Server Disabled

Smart-me Kamstrup HAN gateway modules ship with the local Modbus TCP server on port 502 disabled by default in firmware revisions up to and including 1.2.x. Until the local connection is enabled through the smart-me cloud onboarding flow or the local web UI, every Modbus client (LOGO!, QModMaster, Home Assistant Modbus integration) receives a TCP RST on the SYN, surfacing as ECONNREFUSED in Linux or a connection failure dialog in QModMaster.

The smart-me setup flow includes a "Local connection test" that exercises the TCP/502 endpoint after the user enables local API access. If the test fails, the smart-me firmware keeps the local Modbus server disabled until the user re-runs the cloud configuration or until the device is power-cycled.

System Topology

Kamstrup Meter HAN / NMI interface smart-me HAN Gateway Modbus TCP Server 192.168.0.121:502 LOGO! 8 BM 6ED1052-1xx08-0BA2 192.168.0.10 Modbus TCP Client (8 conn.) HAN TCP/502 Ethernet 192.168.0.0/24

Siemens LOGO! Modbus Architecture Reference

The LOGO! 8 base module integrates an Ethernet interface that supports three concurrent roles: S7 communication (PUT/GET), Modbus TCP server, and Modbus TCP client. The Modbus TCP client functionality is exposed inside the FBD program through three block families:

  • NAI — Network Analog Input: reads a single 16-bit signed integer holding register (function code 0x03, quantity = 1) from a remote Modbus server.
  • NAQ — Network Analog Output: writes a single 16-bit signed integer holding register (function code 0x06 or 0x10) to a remote Modbus server.
  • Network Digital Input (NDI) / Output (NDQ): reads/writes a single coil (function code 0x01 / 0x05).

There is no native 32-bit read block. Two consecutive 16-bit NAI blocks must be combined in the FBD program to reconstruct a 32-bit value. The LOGO! Soft Comfort program editor allows the user to assign the V-memory target of each NAI block explicitly; this is the mechanism used to align two NAI blocks to a 32-bit-aligned address (VW0 + VW2 = VD0).

LOGO! Modbus Client Limits

Parameter LOGO! 8 FS04 / FS05 LOGO! 8 FS03 LOGO! 7
Concurrent Modbus TCP client connections 8 4 0 (not supported)
Modbus function codes supported 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x10 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 N/A
Maximum polling rate (combined NAI/NAQ blocks) ~10 Hz aggregate, scan-time dependent ~4 Hz aggregate N/A
Default Modbus TCP port (server role) 502 (configurable 1–65535) 502 N/A
V-memory byte address range 0–850 (VW0–VW848) 0–850 N/A
Polling rate caveat: Each NAI block contributes one Modbus transaction per LOGO! scan cycle. With 6 NAI blocks configured (3 float values × 2 registers each), the aggregate Modbus polling rate is bounded by the LOGO! scan time, which on a fully loaded FS05 BM is typically 8–15 ms. Practical continuous polling for 6 NAI blocks measures ~4 Hz on FS04 and ~6 Hz on FS05. Energy meters that require faster update rates (e.g., for closed-loop control) should be re-architectured with a dedicated Modbus master such as a SIMATIC S7-1200 or an IOT2050 gateway.

Pre-Commissioning Network Verification

Before opening LOGO! Soft Comfort, verify the TCP path from the LOGO! base module to the smart-me module with a generic Modbus master. This step isolates the network from the LOGO! configuration and prevents misdiagnosis.

  1. Connect a Windows PC to the same Ethernet subnet as the smart-me module and the LOGO! BM.
  2. Install QModMaster (open-source) or Modbus Poll (commercial).
  3. Configure the connection: TCP/IP, IP address = the smart-me module IP (commonly 192.168.0.121 for the HAN gateway default), port = 502, timeout = 1000 ms.
  4. Issue a Read Holding Registers request at function code 0x03, starting address = 0, quantity = 2. The response should decode to a valid IEEE-754 float when interpreted as a 32-bit value (little-endian word order).
  5. If the read returns an exception code (e.g., 0x02 ILLEGAL_DATA_ADDRESS), confirm the smart-me register map and verify that the local Modbus server is enabled.
  6. If the read returns ECONNREFUSED, the smart-me local Modbus server is disabled. Enable it through the smart-me cloud onboarding or local web UI before continuing.

Record the IP address, port, and a representative register value (e.g., active power in kW) returned by QModMaster. These values are required for the LOGO! Soft Comfort NAI configuration in the next section.

Fix #1: IP Address Configuration in the NAI Block

Open the LOGO! Soft Comfort FBD program and double-click the NAI block that targets the smart-me module. The block properties dialog contains four fields in the IP Address group: IP1, IP2, IP3, IP4, plus a Port field. Enter each octet of the smart-me module's IP address in its respective field:

Field Example value (smart-me HAN default) Common typo
IP1 192 198
IP2 168 rare
IP3 0 rare
IP4 121 122, 221
Port 502 503, 8052

Save the FBD program and transfer to the LOGO! BM. Open the LOGO! Online Test view and watch the NAI block status. If the IP address is correct, the NAI block status indicator turns green within one scan cycle and the V-memory target begins updating.

Verification: The LOGO! BM does not provide an explicit "connection failed" diagnostic in the Online Test view. The indirect signal is that the NAI value remains at its power-on reset value of 0 indefinitely. To confirm the network path, use ping from a PC on the same subnet or use Wireshark on the LOGO! Ethernet port to observe the absence of Modbus TCP traffic.

Fix #2: Register Width and NAI Configuration

A single NAI block reads one 16-bit register. To reconstruct a 32-bit IEEE-754 float, configure two NAI blocks at consecutive V-memory addresses that both target the same starting holding register address on the smart-me module:

  1. Add a first NAI block. Set IP Address to the smart-me module IP (see Fix #1), Port = 502, Register Address = the starting register of the 32-bit value (e.g., 0 for active power on the standard Kamstrup register map), V-memory Target = VW0.
  2. Add a second NAI block with the same IP, port, but with Register Address = (starting register + 1) and assign V-memory Target = VW2.
  3. Both blocks return one 16-bit register each (the first and second halves of the 32-bit value). The pair VW0 + VW2 is byte-aligned to VD0.

The LOGO! arithmetic block then combines VW0 and VW2 into a 32-bit value. Because LOGO! Soft Comfort V8.x does not provide a native 32-bit register combinator block, the combination is done in two steps: scale VW2 by 65536 and add VW0 to produce a 32-bit integer in the range 0–4294967295, then convert to a LOGO! integer range with the F/I (Float-to-Integer) block.

NAI Configuration Table — Active Power Read

Block Server IP Port Register address (decimal) Function code V-memory target Notes
NAI #1 (low word) 192.168.0.121 502 0 0x03 (Read Holding) VW0 Low 16 bits of 32-bit IEEE-754 value
NAI #2 (high word) 192.168.0.121 502 1 0x03 (Read Holding) VW2 High 16 bits of 32-bit IEEE-754 value
Arithmetic combiner — — — — VD0 (VW0 + VW2 × 65536) Forms 32-bit IEEE-754 raw value
F/I converter — — — — VW4 IEEE-754 → LOGO! signed 16-bit integer

Note that for many Kamstrup register maps the low word is held at the lower Modbus register address and the high word is at register address+1 (little-endian word order). The LOGO! F/I converter expects the 32-bit IEEE-754 representation in the LOGO!'s internal format; if the float reads backwards (e.g., 1.234 decodes as -1.923e-18), swap the V-memory targets of NAI #1 and NAI #2 or insert a word-swap using the arithmetic block (multiply VW0 by 65536 and add VW2 instead).

Register Width Diagram

32-bit IEEE-754 Float (4 bytes from Kamstrup register) High 16 bits (Register N+1) Low 16 bits (Register N) NAI #1 → VW2 (high word) Register N+1, Quantity = 1, FC 0x03 NAI #2 → VW0 (low word) Register N, Quantity = 1, FC 0x03

Data Type Conversion with F/I and I/F Blocks

The LOGO! Soft Comfort FBD library provides two converter blocks that bridge the gap between IEEE-754 32-bit floats and LOGO!'s native 16-bit signed integer range (-32768 to +32767):

  • F/I (Float-to-Integer): accepts a 32-bit IEEE-754 float on input EN and a scaling gain on input G. Output Q produces round(input_float × gain), clamped to the LOGO! 16-bit signed range. The block truncates silently if the input exceeds the integer range.
  • I/F (Integer-to-Float): the inverse: accepts a 16-bit signed integer on EN and a scaling gain on G. Output Q produces (input_integer ÷ gain) as a 32-bit IEEE-754 float.

Scaling Gain Calculation

The F/I converter is the workhorse for displaying meter values on the LOGO! built-in display or for driving an analog output. The gain G is selected to map the expected meter range into the LOGO! 16-bit signed range:

Meter quantity Typical full-scale value LOGO! display range Recommended gain G
Active power (kW) 0.000–10.000 kW residential 0–10000 (1 unit = 1 W) 1000
Voltage L1 (V) 0.0–250.0 V 0–2500 (1 unit = 0.1 V) 10
Current L1 (A) 0.0–100.0 A 0–1000 (1 unit = 0.1 A) 10
Energy total (kWh) 0.0–99999.9 kWh 0–999999 (1 unit = 0.1 kWh) 10
Power factor -1.00 to +1.00 -100 to +100 (1 unit = 0.01) 100
Reactive power (kvar) -10.000 to +10.000 kvar -10000 to +10000 (1 unit = 1 var) 1000
Frequency (Hz) 45.00–55.00 Hz (EU) / 55.00–65.00 Hz (US) 4500–5500 (1 unit = 0.01 Hz) 100

The integer output of the F/I block can then be displayed on the LOGO! built-in text display, written to an NAQ block (16-bit write to a SCADA), or routed through additional scaling for use in a control loop.

Precision loss: The F/I converter performs implicit truncation to a signed 16-bit integer. Values outside -32768 to +32767 are clamped, and fractional parts below 1/G are lost. For energy metering where 0.1 kWh resolution is acceptable, the gain table above is appropriate. For revenue-grade metering or sub-watt power resolution, route the raw 32-bit float to a more capable controller (S7-1200 with FB "MODBUS_PNI"), an IOT2050, or a Pi with a Modbus-to-MQTT bridge.

F/I Scaling Diagram

IEEE-754 32-bit Float Input: 1.234 kW F/I Gain = G LOGO! Signed 16-bit -32768 to +32767 Output: 1234 (gain = 1000)

Byte Order and Word Swap

The Kamstrup meter transmits 32-bit IEEE-754 values with the low word at the lower Modbus register address (little-endian word order, the Modbus standard). The LOGO! F/I converter assumes the IEEE-754 representation is byte-swapped to LOGO! internal order. If the resulting float reads backwards (e.g., 1.234 decodes as -1.923e-18, or reads 0.0 for a non-zero meter load), the word order in the LOGO! is reversed.

To diagnose, write the combined 32-bit raw value to VD0 and observe it in the Online Test Data Table as a hexadecimal word pair:

  • Correct little-endian word order (Kamstrup default): VD0 = VW0 + (VW2 × 65536). The arithmetic block computes VW2 × 65536 + VW0 and writes the result to VD0. The F/I block then reads VD0 and produces the correct float.
  • Reversed (big-endian word order): VD0 = VW2 + (VW0 × 65536). Swap the arithmetic operands and re-test.

A quick field check: if the LOGO! reads 0.0 for all loads but QModMaster reads the expected value, the arithmetic operands are likely inverted. Reverse the operand order and confirm.

Kamstrup smart-me Modbus Register Map

The smart-me Kamstrup HAN gateway exposes the underlying Kamstrup meter register map through a thin Modbus TCP wrapper on port 502. The exact register map depends on the smart-me firmware revision and the connected meter type (single-phase, three-phase, or three-phase with neutral). The typical register layout for a single-phase Kamstrup meter exposed through the smart-me gateway is:

Register address (decimal) Quantity Data type Unit Description
0 Active power, total IEEE-754 float, 32-bit kW Instantaneous total active power (positive = import)
2 Voltage L1 IEEE-754 float, 32-bit V RMS voltage phase L1
4 Current L1 IEEE-754 float, 32-bit A RMS current phase L1
6 Active energy, import IEEE-754 float, 32-bit kWh Cumulative imported active energy
8 Active energy, export IEEE-754 float, 32-bit kWh Cumulative exported active energy
10 Reactive power, total IEEE-754 float, 32-bit kvar Instantaneous total reactive power
12 Power factor IEEE-754 float, 32-bit — Cos φ, signed
14 Frequency IEEE-754 float, 32-bit Hz Grid frequency
16 Active power L1 IEEE-754 float, 32-bit kW Per-phase active power L1 (three-phase meters only)
18 Active power L2 IEEE-754 float, 32-bit kW Per-phase active power L2 (three-phase meters only)
20 Active power L3 IEEE-754 float, 32-bit kW Per-phase active power L3 (three-phase meters only)
22 Voltage L2 IEEE-754 float, 32-bit V RMS voltage L2 (three-phase meters only)
24 Voltage L3 IEEE-754 float, 32-bit V RMS voltage L3 (three-phase meters only)
26 Current L2 IEEE-754 float, 32-bit A RMS current L2 (three-phase meters only)
28 Current L3 IEEE-754 float, 32-bit A RMS current L3 (three-phase meters only)

The exact register layout for the smart-me gateway is published in the smart-me developer documentation and is subject to firmware revision. The LOGO! program should be parameterized against the live register map returned by QModMaster rather than against a printed table; if a register returns an exception code 0x02 (ILLEGAL_DATA_ADDRESS), the meter does not support that quantity and the NAI block must be removed or re-mapped.

Modbus Exception Codes

Code Name Meaning Action
0x01 ILLEGAL_FUNCTION Function code not supported by meter Verify function code (typically 0x03 for holding registers)
0x02 ILLEGAL_DATA_ADDRESS Starting register or quantity out of range Re-query register map; reduce quantity
0x03 ILLEGAL_DATA_VALUE Value in request field invalid Check quantity range (1–125 for FC 0x03)
0x04 SERVER_DEVICE_FAILURE Meter internal error (e.g., HAN link down) Check Kamstrup HAN/NMI link; cycle smart-me power
0x05 ACKNOWLEDGE Long-duration command in progress Retry after delay; not applicable to LOGO! reads
0x06 SERVER_DEVICE_BUSY Meter busy with another request Increase LOGO! poll interval; serialize NAI blocks

smart-me Local Modbus Server Activation

Smart-me Kamstrup HAN gateway modules ship with the local Modbus TCP server disabled by default. The local server is independent of the smart-me cloud API and must be enabled through one of three paths:

  1. Cloud onboarding flow: during the initial smart-me setup, the user is prompted to enable the local connection. Selecting "Enable local Modbus" writes a configuration bit to the device and reboots the local Modbus server on port 502.
  2. Local web UI: browse to http://<smart-me IP> from a PC on the same subnet, log in with the device credentials (default username admin, password on the device label), navigate to Settings → Local API → Modbus TCP, and toggle Enable. The change applies after a device reboot (~30 s).
  3. Cloud API configuration endpoint: the smart-me cloud exposes a REST endpoint that toggles the local Modbus server. This path is reserved for OEM integrators; the endpoint URL and authentication token are documented in the smart-me developer portal.
Cloud dependency caveat: Enabling the local Modbus server on some firmware revisions requires that the smart-me device be online with the smart-me cloud during the configuration write. If the device is offline or the cloud account is in a read-only state, the toggle is rejected. Confirm cloud connectivity (blue LED on the smart-me module) before attempting to enable the local server.

Online Test Data Table Verification

The LOGO! Soft Comfort Online Test Data Table is the primary verification tool for confirming that the LOGO! Modbus client is correctly reading the smart-me module. The procedure is:

  1. Connect LOGO! Soft Comfort to the BM via Ethernet (Tools → PC ↔ LOGO! Connection, or the online button in the toolbar).
  2. Open the Tools → Online Test view, or press F8.
  3. Switch to the Data Table tab. The table supports byte, word, and double-word address entries: VB0, VW0, VD0, etc.
  4. Add the following entries to the watch list:
    • VW0 — low 16 bits of the active power read
    • VW2 — high 16 bits of the active power read
    • VD0 — combined 32-bit view
    • VW4 — output of the F/I converter
  5. Observe the values update at the LOGO! scan rate. If VW0 and VW2 both change in step with the live meter load, the NAI blocks are reading correctly. If VW0 and VW2 are both stuck at 0, the NAI blocks are not receiving responses (network or register address issue). If VW0 changes but VW2 is stuck at 0, the high register address is out of range or the byte order is reversed.
Online Test caveat: The LOGO! BM does not expose a Modbus client diagnostic log. The Data Table is the only real-time view of the NAI block values; without it, the FBD program must be instrumented with explicit display or write blocks to surface the values to the user. For commissioning, always open the Data Table before declaring the integration complete.

Verification State Machine

Power-on Reset V-memory = 0 NAI read 16-bit 2× NAI = 32-bit Arithmetic combine VW0 + VW2×65536 F/I converter output → VW4 Display on TDE value matches meter OK gain scaled

Troubleshooting Matrix

Observed value at VW0 / VW2 / VW4 Diagnosis Action
VW0 = 0, VW2 = 0, VW4 = 0 No Modbus response; check IP address and server availability Verify IP in NAI block; ping smart-me IP; check port 502 with QModMaster
VW0 = 0, VW2 = nonzero, VW4 = 0 NAI #1 reading wrong register or out of range Confirm register address matches smart-me map; verify quantity = 1 (16-bit) per NAI
VW0 = nonzero, VW2 = 0, VW4 = 0 NAI #2 reading out of range Confirm register address = (start) + 1; verify server accepts second register
VW0 = nonzero, VW2 = nonzero, VW4 = 0 Combination arithmetic or F/I gain is wrong Inspect arithmetic block scaling; verify F/I gain matches expected magnitude
VW0 / VW2 updating, VW4 = -32768 F/I output exceeds 16-bit signed range; gain too high Reduce F/I gain; meter value × gain must fit -32768 to +32767
VW0 / VW2 updating, VW4 oscillating wildly Byte order reversed; high and low 16-bit halves swapped Swap NAI #1 and NAI #2 V-memory targets (use VW0/VW2 reversed)
All values match QModMaster but display on LOGO! shows wrong unit F/I gain does not match display scaling Adjust gain; for 0.1 V display, gain = 10
Values update once then freeze Modbus client connection lost; LOGO! scan time saturated Reduce number of NAI blocks; verify network stability; check for duplicate IP
VW0 = -32768, VW2 = -32768 Server returns signed 16-bit negative; LOGO! native range reached Use F/I to scale into LOGO! range; meter returns negative value (e.g., exported power)
VW4 jumps between 0 and valid value Intermittent network; NAI timeout mid-read Check Ethernet cable; verify switch port speed/duplex; reduce LOGO! scan load
Exception code 0x02 visible in QModMaster Register address not in meter map Re-query register map; remove or remap the NAI block
Exception code 0x04 visible in QModMaster HAN/NMI link down between meter and gateway Verify Kamstrup meter HAN LED; reseat HAN cable; cycle smart-me power

Verification Procedure

After completing the configuration, follow this end-to-end verification sequence to confirm that the LOGO! is reading the Kamstrup smart-me module correctly:

  1. Network path: from a PC on the same subnet, run ping 192.168.0.121 (replace with the smart-me IP). Reply time should be < 5 ms on a wired Ethernet segment.
  2. Modbus TCP endpoint: with QModMaster, connect to the smart-me IP on port 502 and read holding register 0, quantity = 2. Confirm a valid IEEE-754 float response. Record the value.
  3. LOGO! NAI status: in LOGO! Soft Comfort Online Test Data Table, add VW0, VW2, VW4. Within 5 seconds, all three should show non-zero values that change as the meter load changes.
  4. F/I converter output: confirm that VW4 (F/I output) matches the expected scaled value. For active power = 1.234 kW with gain = 1000, expected VW4 = 1234.
  5. Display test: configure a LOGO! display message to show VW4. Confirm the displayed value matches the QModMaster value scaled by the F/I gain.
  6. Stress test: run the program for 24 hours. Confirm VW4 remains non-zero and updates at the scan rate. Investigate any NAI timeout events by checking the smart-me cloud for connection logs.
  7. Failover test: power-cycle the smart-me module. The LOGO! should automatically re-establish the Modbus TCP connection within one scan cycle and resume updating VW0 / VW2 / VW4.

Frequently Asked Questions

Why does my LOGO! read 0 from the smart-me module while QModMaster reads a valid value?

Three layered causes are most common: a typo in the IP address field of the LOGO! NAI block (e.g., 198.168.0.x instead of 192.168.0.x), a register width mismatch where the LOGO! reads only one 16-bit register of a 32-bit IEEE-754 float (correct pattern: two NAI blocks at VW0 and VW2, then F/I converter), or the smart-me local Modbus TCP server disabled on port 502 in the device firmware. Open the LOGO! Online Test Data Table and watch VW0, VW2, and the F/I output to isolate which layer is failing.

How do I read a 32-bit float value from the smart-me Kamstrup meter in LOGO! Soft Comfort?

Add two NAI (Network Analog Input) blocks with identical IP and port (502), but with consecutive register addresses (e.g., 0 and 1), and assign V-memory targets VW0 and VW2 respectively. Combine the two 16-bit halves with an arithmetic block (VW2 × 65536 + VW0 for little-endian Kamstrup output), then add an F/I (Float-to-Integer) converter with gain G to scale into the LOGO! native 16-bit signed integer range (-32768 to +32767). For active power in kW with one-decimal display, gain = 1000.

Does LOGO! support DInt (32-bit signed integer) natively?

No. LOGO! 8 base modules support 16-bit signed integers (-32768 to +32767) in the FBD program. 32-bit IEEE-754 floats can be imported through two consecutive NAI blocks into V-memory (VW0 + VW2 = VD0) and viewed in the Online Test Data Table, but arithmetic on 32-bit values requires the F/I or I/F converter blocks. For native 32-bit integer arithmetic, migrate to a SIMATIC S7-1200 / S7-1500 controller with the MODBUS_PNI function block.

How do I enable the local Modbus TCP server on a smart-me Kamstrup HAN gateway?

Smart-me modules ship with port 502 disabled by default. Enable the local server through the smart-me cloud onboarding flow (select "Enable local Modbus" during device setup), through the local web UI at http://<smart-me IP> (Settings → Local API → Modbus TCP → Enable), or through the smart-me cloud REST API for OEM integrators. The change applies after a ~30 second device reboot. Confirm cloud connectivity (blue LED on the module) before toggling, since some firmware revisions require the cloud to authorize the configuration write.

Can I forward the LOGO! Modbus data to AWS, S7, or another SCADA?

Yes. The LOGO! 8 BM exposes the V-memory range (VB0–VB850, VW0–VW848, VD0–VD424) as both a Modbus TCP server (port 502 by default) and an S7 PUT/GET server. The VW4 value containing the scaled active power can be read by an S7-1200 via PUT/GET, by an AWS IoT Greengrass gateway via Modbus TCP, or by any SCADA supporting S7 or Modbus TCP. Configure the LOGO! BM as a Modbus TCP server (Tools → Ethernet Connections → Modbus Server) and ensure that the destination client is on the same subnet or routed through the BM gateway.

Why does the LOGO! F/I block output jump between 0 and the meter value?

This symptom indicates intermittent network connectivity. The LOGO! Modbus client issues a TCP SYN to the smart-me module; if the SYN times out or the response is lost, the NAI block retains its last valid value rather than reporting an error. Check the Ethernet cable, verify the switch port is configured for auto-negotiation (or 100 Mbps / full duplex explicitly), confirm there is no duplicate IP on the subnet, and reduce the LOGO! scan load by removing unused blocks. If the issue persists, replace the Ethernet cable or move the smart-me module to a different switch port.

Back to blog