Resolving LOGO! Web Editor Time Base Errors with VM Mapping in LOGO!Soft Comfort 8.4
Setting a writable time parameter for an On-delay timer from the LOGO! Web Editor (LWE) on a Siemens LOGO! 8 base module is a common commissioning task. When the value typed in the LWE web page does not match the expected timer duration, the fault is almost always one of two issues: an incorrect time base configured in the LOGO!Soft Comfort (LSC) timer block, or an incorrect VM (Variable Memory) address width selected in the LWE variable list. This reference walks through both root causes, then explains how to switch to the dedicated Scaled Time component to eliminate the scale conversion entirely.
1. Problem Description
The reported symptom is reproducible on a freshly compiled LSC 8.4 project:
- A writable analog value element is placed on a custom LWE web page.
- The element is bound to a VM address that the engineer expects to control an On-delay timer parameter (T = setpoint time).
- After downloading the program to the LOGO! BM and opening the LWE page from a browser, the engineer types a value in seconds (e.g.,
5), but the timer does not run for 5 seconds. The actual delay is wrong by a factor of 100, 60, or 3600, or the value is rejected entirely. - Editing the VM address from
VD0toVW0(or vice-versa) changes the behaviour but does not give a correct seconds value.
The root cause is a mismatch between the time base selected inside the LSC timer block and the unit the LWE element transmits to the LOGO!. The LOGO! does not have a floating-point "seconds" data type at the timer parameter input; the parameter is always a 16-bit integer in the time base selected in the block properties.
2. Background: LOGO! 8 VM Memory and Timer Parameters
The LOGO! 8 base module exposes a Variable Memory (VM) area used for cross-block parameter sharing and for read/write access from the integrated web server. According to the LOGO!Soft Comfort Online Help, the VM area is byte-addressed but is normally accessed in aligned 16-bit word (VW) or 32-bit double-word (VD) groups.
2.1 VM Address Map Relevant to Timers
| Address Prefix | Width | Typical Use | Notes |
|---|---|---|---|
VB0..VB850
|
8-bit byte | Flags, bit packing | Avoid for time parameters |
VW0..VW848
|
16-bit word | Timer setpoints, counters, integer parameters | Recommended for single timers |
VD0..VD844
|
32-bit double-word | Analog values, scaled values, long counters | Occupies two VWs; misaligned addresses are accepted but waste space |
VQ0.. |
Bit addressable | Discrete flags only | Not valid for time parameters |
On a 0BA8 BM, the maximum usable VM area is 850 bytes (VB0..VB849). When a VD is allocated, two adjacent VWs are consumed. Always select an even-numbered VW base if you intend to extend a parameter to a VD later.
2.2 Timer Time Bases Available in LSC 8.4
The On-delay, Off-delay, On-/Off-delay, Retentive on-delay, and Edge-triggered wiping relay blocks all share the same four selectable time bases:
| Time Base Code | Unit | Resolution | Range | Integer Multiplier for 1 s |
|---|---|---|---|---|
| S | Seconds | 1 s | 0..99:99 s (1) | 1 |
| M | Minutes | 1 min | 0..99:59 min | n/a (use 1/60 s input) |
| H | Hours | 1 h | 0..99:59 h | n/a |
| 1/100 s | Hundredths | 10 ms | 0..99:99 (= 99.99 s) | 100 |
(1) The "99:99" display format in LSC means 99 units + 99 sub-units. For S base, 99:99 s = 9999 s; for M base, 99:59 min; for H base, 99:59 h; for 1/100 s base, 99:99 = 99.99 s.
The integer the LOGO! expects at the T parameter of the timer block is therefore scaled by the time base. The LWE analog-value widget does not know about this scaling; it transmits the raw typed integer to the underlying VM address.
3. Root Cause Analysis
Two independent defects combine to produce the reported fault:
-
Time base mismatch (most common). The engineer configured the timer with the 1/100 s base (very common, because that is the LSC default in many localized templates). To obtain 2 s, the parameter must be set to 200. If the LWE widget is configured to write the typed value
2to VW0, the timer block interprets that 2 as 0.02 s, not 2 s. -
Address-width mismatch. The engineer configured the LWE variable on
VD0(a 32-bit double-word). The timer block in LSC 8.4 only consumes a 16-bit word. Writing a value into VD0 therefore overwrites VW0 and VW1. The high word VW1 will be set to zero (because browsers transmit ASCII integers, not packed 32-bit values), and the visible timer may flicker, read back a wrong value, or get clipped at 65535.
The Scaled Time element from the LSC Tools menu avoids both issues: it always exposes a human-readable hh:mm:ss representation in the LWE page and performs the unit conversion server-side inside the LOGO!, so the user can simply type 2 to mean "2 seconds" regardless of the underlying time base.
4. Solution A — Correct the Time Base in the Timer Block
If you want to keep the standard Analog Value widget in LWE, you must align the integer the user types with the timer block's time base.
4.1 Procedure
- Open the project in LOGO!Soft Comfort 8.4.
- Double-click the On-delay block (or any timer block) to open its properties dialog.
- On the Parameter tab, locate the T setpoint field and the time-base pull-down (the pull-down shows the current unit such as s, min, h, or 1/100 s).
- Change the time base to Seconds (s). This sets the T parameter to "seconds" and the integer the LOGO! expects equals the number of seconds.
- Bind T to a VM address: VW0 (16-bit word, not VD0).
- Click OK and recompile.
4.2 LWE Variable Configuration
- In the LSC project tree, click Tools → Web Editor (or press F8).
- Add a new Analog value element to the page.
- In the Configuration pane, set:
- Type: Write
- Variable: VW0 (not VD0)
- Display range: 0..9999
- Default value: 0
- Save, then drag the project to the LOGO! BM (or use Network → Download).
Now entering 5 in the web widget writes the integer 5 to VW0; the On-delay block with the Seconds time base interprets that as 5 seconds and the timer runs for exactly 5 s.
5. Solution B — Use the Scaled Time Component (Recommended)
The Scaled Time tool, available from the LSC Tools toolbar since V8.2, is the canonical solution because it removes the unit math from the LWE page entirely.
5.1 Procedure
- Drag the Scaled Time element from the toolbar onto the FBD diagram.
- Double-click it. The dialog shows From and To mapping parameters, where the From range is the user-facing integer (seconds) and the To range is the timer's native integer (in the time-base units of the target block).
- Set From range: 0..9999 s.
- Set To range: 0..9999 (1/100 s base) or 0..599940 s (1 s base, with the linear scaling factor 1).
- Bind the Scaled Time block's input to a VM address (e.g.,
VW10) that you will read from the web page. - Connect the Scaled Time output to the T parameter of the On-delay block.
5.2 LWE Configuration for the Scaled Time
- Add a new Time widget (LSC inserts this automatically when the Scaled Time block is added to the Web Editor page list).
- Set the widget to Write and bind to the same VM address you assigned to the Scaled Time block (VW10 in the example).
- The widget now displays a spinner with hh:mm:ss format. The user types or selects the desired value, and the LOGO! firmware scales it into the timer's native units.
Because the scaling is performed by the Scaled Time block, the engineer can switch the timer's time base later (for example from 1/100 s to Seconds) without re-labelling the LWE page. The Time widget will continue to mean "seconds" from the operator's point of view.
6. Verification
After applying either Solution A or Solution B, run the following verification sequence on the live LOGO! BM:
- Online monitor. In LSC, click Online → Start Online Test (or press Ctrl+F9). Right-click the On-delay block and confirm the T parameter shows the value the LWE page is sending.
-
Web round-trip. Open the LOGO! BM's IP address in a browser, navigate to the custom LWE page, and enter
5. The T parameter in the online monitor must update to 5 (Seconds base) or 500 (1/100 s base) within one scan cycle (typically 10..50 ms on a 0BA8). - Timing check. Connect a stopwatch or scope to the timer's output. With Seconds base, the output must transition to TRUE exactly 5.0 s ±1 scan after the input is asserted. With 1/100 s base, the tolerance is ±0.1 s.
- Boundary test. Enter 0 (timer should be permanently off), 1 (shortest usable delay), and 9999 (longest allowed by the widget range). Confirm no overflow or wraparound.
- Power-cycle test. Power off the LOGO! BM for 10 s, repower, log into LWE, and confirm the widget still reads the previously entered value. The LOGO! 8 retains VM values across power cycles as long as the retentive bit is set on the Scaled Time block (default = retentive).
7. Troubleshooting Matrix
| Observed Symptom | Likely Cause | Fix |
|---|---|---|
| Timer runs 100× too long or too short | Time base is 1/100 s but widget writes raw seconds | Switch timer base to Seconds, or use Scaled Time |
| Widget rejects values above 32767 | LWE variable bound to a signed VD instead of an unsigned VW | Change to VW0..VW849 |
| Timer reads back a different value than typed | Address misaligned; high word (VW+1) is overwritten by something else | Switch to an unused even-numbered VW, e.g. VW0, VW2, VW4 |
| Page does not show widget at all | Web Editor tool was not opened; "Webserver User" access right is missing | In LSC: Tools → Web Editor; in BM menu: Set → Webserver Access |
| Value reverts on every scan | Program re-initialises the VM address on each cycle (e.g., block is in a running sub-program) | Move the T parameter binding to a persistent VM address; enable retentivity on the Scaled Time block |
| Only 0 or 65535 is accepted | Variable is mapped to a network input/output (NI/NAQ) rather than a VM | Re-bind to a VM address (VW or VD) |
8. Edge Cases and Field-Proven Caveats
8.1 Time base visibility in the widget
Standard Analog value widgets do not display the unit. A common field complaint is "I set 2 seconds and the output turned on for 200 seconds". The 200 s value indicates the LWE widget wrote 2 to a 1/100 s base — actually a 0.02 s timer. The user will often re-type 200, see a 200 s output, and conclude the widget is broken. Use a Text annotation next to the widget stating "Time in hundredths of a second" or switch to the Scaled Time approach.
8.2 Sharing VM addresses between blocks
If the same VM word is bound to two timer T parameters, both timers will receive the same setpoint. This is by design but is frequently missed. To control two timers independently, allocate two separate VM words.
8.3 Web Editor authentication and access
On firmware FS:04 and later, the LOGO! BM supports per-user access control. A "User" role may not have write access to VM addresses. If the widget appears read-only, check LOGO! BM → Set → Webserver Access → Access rights and grant the set_vm permission to the user account.
8.4 LOGO! 0BA7 (LOGO! 7) compatibility
LOGO! 7 has a different VM layout (only 48 bytes). The Scaled Time tool exists, but the maximum time range is correspondingly smaller. The LWE web server in LOGO! 7 is a separate, limited implementation; if you must use legacy hardware, prefer Solution A and verify the VM byte count in the project's Statistics report before downloading.
8.5 Scaling math reference
The general conversion from operator-facing seconds ts to the integer N expected by a timer of base b (in seconds per count) is:
N = round(ts / b)
For the 1/100 s base, b = 0.01, so 5.00 s → N = 500. For the Seconds base, b = 1, so 5.00 s → N = 5. The Scaled Time block performs this calculation automatically using the From/To linear mapping:
Out = ((In - From_min) * (To_max - To_min) / (From_max - From_min)) + To_min
Set From range to the operator-facing range (0..9999 s) and To range to the timer-native range (0..9999 for 1/100 s, 0..9999 for Seconds, etc.) and the math reduces to the identity transform.
9. Commissioning Checklist
- Confirm LSC version is 8.4 or later (Help → About LOGO!Soft Comfort).
- Confirm BM firmware is FS:04 or later (LOGO! BM → Diagnostics → FW Version on the device display).
- Set the On-delay block time base to Seconds unless sub-second resolution is required.
- Bind T to an unused VW address, not a VD or NI/NAQ.
- Open the Web Editor (Tools → Web Editor) and place a Time widget (Scaled Time) or a labelled Analog value widget.
- Grant the operator web account the
set_vmaccess right. - Download the project, run the five verification steps in Section 6, and record the timing result on the commissioning sheet.
10. Standards and Reference Documentation
For deeper reading, refer to the official LOGO!Soft Comfort Online Help (PDF) on the Siemens Industry Online Support portal. The On Time / Off Time fields described in the help are distinct from the LWE problem in this article: On Time and Off Time are the calendar-date triggers used by the Weekly timer and Yearly timer blocks, which use a different parameter set (month, day, hour, minute). Do not confuse the two; a LOGO! Weekly timer cannot be controlled by a VM address in the same way an On-delay block can. The Scaled Time tool is the correct bridging element only for the T parameter of standard timer blocks, not for calendar timers.
Why does my On-delay timer run for 100× the value I type in the LOGO! Web Editor?
Your timer block is configured with the 1/100 s time base, but the Analog value widget transmits the raw typed integer. Type 500 for 5.00 s, or change the time base to Seconds in the LSC block properties. Using the Scaled Time tool eliminates this scaling entirely.
Should I bind a writable widget to VW0 or VD0 in LOGO!Soft Comfort 8.4?
For a single timer setpoint, always use a 16-bit word (VW0, VW2, etc.). VD0 is 32 bits and occupies two VWs, which can collide with neighbouring parameters. Reserve VDs for analog values and counters where the full 32-bit range is required.
How do I let the operator enter a time in hh:mm:ss from the LOGO! web page?
Add a Scaled Time block (Tools → Scaled Time) and a Time widget on the Web Editor page. The widget then displays a hh:mm:ss spinner and the LOGO! firmware converts it into the timer's native units, regardless of whether the underlying block uses 1/100 s, seconds, minutes, or hours.
My typed value disappears after a power cycle. How do I retain the setpoint?
Open the Scaled Time block properties and enable Retentive. The parameter value will then be stored in the LOGO!'s non-volatile memory. Note that the Scaled Time block must be placed in a part of the program that is not re-initialised on every scan (e.g., not inside a UDF that resets its outputs).
Does the Scaled Time approach work for Weekly and Yearly timers in LOGO!Soft Comfort?
No. The Scaled Time tool scales a linear integer to a linear integer. Weekly and Yearly timers use calendar parameters (month, day, hour, minute) that are not linear. Use the LOGO! Display or a separate visualisation layer to edit calendar timer parameters, and use Scaled Time only for the T parameter of on-delay, off-delay, and related blocks.