1. Problem Overview
A KINCO HMI scrollbar writes an analog value over Ethernet to a Siemens LOGO! 8 controller. The target is a Network Analog Input (NAI) block intended to feed a 0–10 V Analog Output (AQ) for dimming a light or driving a pump. The expected behavior is that the HMI value holds on the LOGO!, the AQ tracks it, and the 0–10 V output is stable. The observed behavior is that the value appears on the TDE for roughly one second and then drops back to zero, with the HMI slider returning to the zero position at the same time.
The symptom is symmetrical on both ends: the LOGO! never retains the value, and the HMI register also reads zero. This rules out a one-sided display problem and points to a register-type / write-authority mismatch in the data path between the HMI and the LOGO!.
2. Affected Hardware and Firmware
| Component | Role | Notes |
|---|---|---|
| Siemens LOGO! 8 (6ED1052-xxx08-0BA1 or 0BA2) | Controller with 0–10 V AQ | 2 AQ onboard on BM; AM2 AQ expansion available for additional channels |
| LOGO! TDE (6ED1055-4MH08-0BA1) | Text display for monitoring | Reads the same VM area as the HMI |
| KINCO HMI (e.g., GL070 / MT4000 series) | Operator panel with scrollbar / numeric input | Configured as Modbus TCP master (or S7 client) to LOGO! |
| Ethernet switch / direct cable | Transport | LOGO! 8 has integrated Ethernet, no extra module required |
LOGO! 8 firmware 8.x (current 8.3) provides the VM (Variable Memory) area used for cross-tag and Modbus mapping. The same VM area is exposed to the TDE, to LOGO! Soft Comfort, and to the S7/Modbus Ethernet interface.
3. Root Cause: NAI Is Read-Only
The Network Analog Input (NAI) and Network Digital Input (NI) blocks in LOGO! are read-only inputs. They are populated by the LOGO! communication layer from inbound telegrams and are not writable user memory. The TDE and Soft Comfort can show the value because they observe the same incoming frame, but the LOGO! program itself cannot latch a value through NAI; once the master stops writing, the value falls back to its power-on default (0).
The reason the value seems to "hold for a second" is that the HMI master typically issues a periodic write (poll / heartbeat). The instant the write window closes, the NAI reverts. If the HMI is configured as a read-only client or is writing to an Input Register (function code 0x04) instead of a Holding Register (function code 0x06 / 0x10), the LOGO! may echo the value briefly in its local status but never commit it to persistent memory.
4. Why the Original Communication Setup Fails
Three configuration issues typically combine to produce the symptom in this scenario:
- Port assignment: the LOGO! Modbus TCP server listens on TCP/502 by default. The KINCO project in the source case used a non-standard port; the master therefore never reached the LOGO! server, or the LOGO! never received the write.
- Register class: KINCO was writing to a LOGO! Input Register (IR) range. Input registers are read-only by Modbus definition; the LOGO! discards the write and reports no error back to the HMI, which then displays the most recent acknowledged value before falling back to 0.
- Memory target: instead of pointing at a VW/VM address, the HMI widget was bound to the NAI block address. Because NAI is a network mirror, not a latch, the value never persists in the LOGO! program.
Switching to Holding Registers (HR) on TCP/502, and pointing the HMI at the VM area starting at VW700 / VW800, resolves all three at once.
5. The Fix: VM Mapping with Holding Registers
LOGO! 8 exposes the Variable Memory area to the Ethernet interface in three ways:
| LOGO! tag | Soft Comfort address | Modbus register class | Modbus offset (zero-based) | Writable from HMI? |
|---|---|---|---|---|
| VW 0 – VW 850 | VM 0 – VM 849 (16-bit words) | Holding Register | 0 – 849 | Yes (FC 0x06 / 0x10) |
| VW 0 – VW 850 | VM 0 – VM 849 | Input Register | 0 – 849 (FC 0x04) | No (read-only echo) |
| NAI / NI | n/a (network symbol) | Input Register | computed by LOGO! | No |
| NAQ / NQ | n/a (network symbol) | Holding Register | computed by LOGO! | Yes (master → slave) |
The VW700 / VW800 addresses mentioned in the source resolution are simply the upper portion of the VM word space, well above any address the LOGO! firmware itself uses for system data, which is why they are safe user targets.
6. Prerequisites
- LOGO! 8 with firmware ≥ 8.0 (1.80.01), recommend 8.3 for cleanest VM mapping
- LOGO! Soft Comfort ≥ 8.3 with the project file (.lsc) available
- KINCO HMI programming software (KincoBuilder / DTools) with the project file (.hmi or .kfp) available
- PC with Ethernet access to the LOGO! (default IP 192.168.0.222, port 502 TCP)
- Static IP on the HMI in the same subnet as the LOGO!
7. Step-by-Step Procedure
7.1 Configure the LOGO! side
- Open the project in LOGO! Soft Comfort.
- Insert an Analog Flag (A-Flag) or use an Analog Amplifier with its source bound to VM 700 (display: VW700 in the tag view). This is the user-space analog word the HMI will write to.
- Wire the flag / amplifier output to the AQ block. Select the desired range (0–10 V). The amplifier performs the scaling from 0–1000 internal units to 0–10 V; if you need a different curve, add a second amplifier or an arithmetic block.
- Open Extras → Ethernet Connections and add a S7 / Modbus Server connection on port 502 (default). Enable Allow access via VM mapping and declare the VM range 700–702 as accessible to the server.
- Save and download the program to the LOGO! over Ethernet.
7.2 Configure the HMI side
- In the KINCO editor, open the project and add the LOGO! as a Modbus TCP master device: IP
192.168.0.222, port502, slave/unit ID1, register type Holding Register, function code 0x06 (write single) or 0x10 (write multiple). - Bind the scrollbar / numeric input widget's write address to the LOGO! VM target (e.g.,
4x00701in Modbus 1-based notation, which corresponds to VM word 700 in Soft Comfort). - Bind a read-only numeric display widget to the same address to confirm the LOGO! is echoing the value.
- Set the widget's data type to 16-bit signed (INT) and the engineering range to 0–1000 (which the LOGO! maps to 0–10 V through the amplifier).
- Compile and download the HMI project to the panel.
7.3 Wire the analog output
- Connect the LOGO! AQ terminal (e.g., AQ1: pin 1 = signal, pin 2 = ground) to the receiving device. Respect the AQ load limits of the LOGO! (max 10 mA on the onboard AQ; use an AM2 AQ module for higher loads).
- For a 0–10 V dimmer or pump input, share the same 24 V reference and ground.
- Power-cycle the LOGO! and the HMI so the new connection tables take effect.
8. Verification
- On the HMI, drag the scrollbar from 0 to 1000. The numeric display should follow in real time and stay at the value when released.
- On the TDE, navigate to the AQ status page. The displayed analog value should match the HMI and remain stable.
- Measure the AQ terminal with a multimeter: 0.000 V at slider 0, ~10.00 V at slider 1000, linear in between.
- Disconnect the HMI Ethernet cable. The LOGO! should retain the last-written VM value indefinitely (VM is non-volatile in the LOGO! 8; analog flag / amplifier will continue to drive the AQ).
- Reconnect the HMI; the value should resume tracking from the HMI widget without any 1-second drop.
9. Alternative Path: Control Loop via TDE Only
If the HMI cannot be reconfigured (firmware locked, vendor-locked project), the same dimming behavior can be implemented with the LOGO! TDE alone. The TDE supports arrow-key value entry, which the program can route to a VM word through the Cursor and Display configuration tools. Functionally identical to the HMI scrollbar, but with a 6-character text interface. The KINCO panel is unnecessary in that case, and the entire 0–10 V path becomes a pure LOGO!-internal mapping.
10. The Corrected Data Path
After the fix, the data flow is:
KINCO HMI scrollbar
│ Modbus TCP write (FC 0x06 / 0x10)
▼
LOGO! Modbus TCP server (port 502)
│ decode into VM area
▼
VM 700 (Analog Flag, retentive)
│ used as amplifier input
▼
Analog Amplifier (scaling 0–1000 → 0–10 V)
│
▼
AQ1 (0–10 V output to dimmer / pump)
The NAI / NAQ blocks are no longer in the path. The HMI talks directly to user memory; the LOGO! program reads user memory and drives the hardware. This is the standard pattern for any PLC where a panel writes setpoints.
11. Common Pitfalls and Field-Engineering Notes
| Pitfall | Symptom | Resolution |
|---|---|---|
| Writing to NAI / NI address | Value visible for 1 s, then 0 | Switch to VM / VW address and bind in the LOGO! program |
| Port 503 / 504 on HMI side | HMI shows "No response", LOGO! ignores writes | Set HMI master to TCP/502 (LOGO! default server port) |
| Function code 0x04 (Read Input Registers) | Write silently rejected | Use 0x06 / 0x10 against Holding Registers |
| Two amplifiers + two flags on overlapping VM | Writes to one address bleed into another | Use a single amplifier + single A-Flag; pick one VM word |
| Direct amplifier on VM, no retention | Value OK while HMI polling, 0 on HMI stop | Insert retentive Analog Flag between VM and amplifier |
| LOGO! BM with 2 AQ loaded as 0–10 V, expecting 4–20 mA | Output pegged at 0 V | Set the AQ block range to 0–10 V explicitly in Soft Comfort |
| KINCO project bound to "S7 / Siemens" driver, not Modbus | Writes accepted by LOGO! but read inconsistent | For LOGO! 8 prefer Modbus TCP; S7 is also supported but the address mapping differs |
12. Reference: LOGO! 8 Analog Output Scaling
The onboard AQ of a LOGO! 8 BM is a 0–10 V output with 10-bit resolution. Internally the LOGO! uses the value range 0–1000 to represent 0–10 V. The scaling is therefore:
V_out (V) = (AQ_internal / 1000) × 10
For a 4–20 mA output on an AM2 AQ module, the LOGO! internally uses 0–1000 to represent 4–20 mA:
I_out (mA) = 4 + (AQ_internal / 1000) × 16
Because the HMI is writing a 16-bit INT (0–65535), the HMI engineer must scale the widget range to 0–1000 in the KINCO project. Attempting to write the raw 0–10 V as 0–10, or as 0–4095, results in the AQ pegging at 0 or at full scale.
13. Diagnostics: A 30-Second Field Test
If a similar issue is reported in the future, the following minimal check sequence localizes the fault in under a minute:
- Bind a KINCO numeric display to the same address being written. If the display shows the value, the HMI is sending; if it shows 0, the HMI is not sending (port, FC, or wiring).
- In Soft Comfort, place a watch on the VM target word. If the VM word never changes while the HMI writes, the LOGO! is not accepting the write (port, server enable, or register class).
- If the VM word updates but the AQ does not, the amplifier / scaling path in the LOGO! program is wrong.
- If the VM word updates and the AQ updates but the receiving device does not, the analog wiring (signal, ground, range) is wrong.
Each layer is independently observable. Pin down the failing layer first; do not reconfigure all four.
14. Standards and Background
The Modbus TCP portion of this integration is governed by the Modbus Organization's Modbus Application Protocol Specification, currently at v1.1b3, with Modbus TCP per the Modbus Messaging on TCP/IP Implementation Guide v1.0b. The 0–10 V analog signaling is a de-facto industrial standard; refer to the Siemens TIA Portal documentation for general principles on processing of analog values. For the LOGO! 8 specifically, the LOGO! 8 system manual defines the VM area, the Modbus TCP server behavior, and the AQ block scaling. The LOGO! 8 application examples collection includes a "LOGO! as Modbus server" sample that demonstrates the exact VM-to-Holding-Register mapping used in this article.
15. FAQ
Why does the KINCO HMI value appear for one second and then drop to zero on the LOGO! TDE?
Because the HMI is writing to a LOGO! Network Analog Input (NAI) address, which is a read-only network mirror. As soon as the HMI master stops writing (or the LOGO! discards the write because it is directed at an Input Register), the NAI reverts to 0. Switch the HMI to write a Holding Register on TCP/502 targeting a VM address (e.g., VW700) and use an Analog Flag in the LOGO! program to hold the value.
Which Modbus TCP port should the HMI use to reach a LOGO! 8?
Use TCP port 502, the default Modbus TCP server port on the LOGO! 8. The HMI master should be configured for Function Code 0x06 (write single) or 0x10 (write multiple) against the Holding Register range, not Function Code 0x04 against Input Registers.
What is the correct internal scaling for a 0–10 V output on the LOGO!?
The LOGO! AQ block uses 0–1000 internal units for 0–10 V. Configure the HMI widget to write a 16-bit INT in the range 0–1000. A 0–10 V dimmer or 4–20 mA pump input receives V_out = (value / 1000) × 10. The onboard LOGO! AQ is rated for 10 mA; use an AM2 AQ expansion module for higher loads.
Do I need both an Analog Amplifier and an Analog Flag in the LOGO! program?
Use a retentive Analog Flag as the storage element for the HMI value, and an Analog Amplifier to scale it to the AQ range. Two amplifiers on overlapping VM addresses cause writes to one word to bleed into the other and produce unstable output. A single A-Flag plus a single amplifier is sufficient.
Can I dim a light or drive a pump from a KINCO HMI → LOGO! → 0–10 V chain without using a Modbus server in between?
Yes. The KINCO can use the S7 protocol or Modbus TCP directly to a LOGO! 8. No intermediate gateway is required. Bind the HMI widget to a LOGO! VM address (a Holding Register in Modbus terms), and program the LOGO! with a retentive Analog Flag and an amplifier feeding the AQ block. The TDE will then show the value holding steady at the slider position.