Resolving 16# Hex Display on LOGO! 8 Web Editor Calendar Values
The Siemens LOGO! 8 Web Server and the bundled LOGO! Web Editor (LWE) tool provide browser-based access to timer, counter, and calendar setpoints on a LOGO! 8 base module (catalog family 6ED1052-xxx08-0BA0 and the LOGO! 8.3 variant 6ED1052-xxx08-0BA1). A recurring field complaint is that after the operator types a numeric value into a calendar or weekly-timer input on the integrated web server, the entered figure is echoed back prefixed with the IEC 61131-3 literal 16# (for example 16#0C08 for the time 12:08) instead of being shown as a plain decimal. This article documents the underlying cause, the data-type mapping in LSC and LWE, and the step-by-step configuration changes required to restore a normal decimal readback.
1. Problem Description
When a user navigates to the LOGO! Web Server in a browser (default URL http://<LOGO-IP> on port 80) and opens a custom dashboard built with LWE, numeric input widgets bound to LOGO! variables display the IEC hex literal prefix 16# immediately after a value is submitted. The variables in question are typically:
- Weekly timer (
B001-B019block) setpoints such as hour, minute, weekday, or on/off time. - Annual timer (
B001-B012) setpoints such as month, day, hour, minute. - Astronomical clock (
B050-B058) latitude, longitude, and time-zone offsets. - Up/down counter (
B002-B011) on/off, threshold, and hysteresis parameters. - Analog threshold trigger (
B003) setpoints for analog timers.
Symptom sequence observed in the field:
- Operator clicks an input field, types a value (for example
1208for the time 12:08). - The web server briefly shows "submitted" feedback text.
- When focus is removed from the field, the value reappears as
16#04B0(hex of 1208) or16#0C08depending on byte order. - Despite the cosmetic echo, the LOGO! program still processes the decimal value correctly — only the display format is wrong.
The issue is purely a visualization / representation problem in the LWE numeric widget; no logic is corrupted and the write to the LOGO! tag succeeds. Operators who interpret 16# as an error may, however, re-enter values, leading to parameter drift.
2. Root Cause Analysis
The 16# prefix is the canonical IEC 61131-3 notation for a hexadecimal literal. LOGO! 8 stores all timer/counter setpoints internally as 16-bit WORD values (data type UINT in the LOGO! tag database, range 0..65535). When a numeric widget in LWE is bound directly to a WORD-typed variable without an explicit display-format override, the LWE runtime library falls back to the safest unambiguous representation for a 16-bit word — hexadecimal with the 16# prefix.
2.1 LSC Tag Data Types Relevant to LWE
| LOGO! Block Parameter | LSC Symbol Type | Bit Width | LWE Default Render |
|---|---|---|---|
| Weekly timer hour / minute | WORD (UINT) | 16 | Hex (16#…) |
| Annual timer month / day | WORD (UINT) | 16 | Hex (16#…) |
| Counter threshold / on-off | WORD (UINT) | 16 | Hex (16#…) |
| Analog threshold setpoint | WORD (UINT) | 16 | Hex (16#…) |
| Variable memory (VW/VM) | WORD (UINT) | 16 | Hex (16#…) |
| Variable memory (VD) | DWORD (UDINT) | 32 | Decimal (no prefix) |
| Analog input IWx (0..1000 = 0..10 V) | WORD scaled | 16 | Decimal if scaling enabled |
2.2 Why LWE Chooses Hex by Default
The LWE widget library exposes a single NumericInput class for both decimal and hexadecimal variables. Internally, it inspects the LSC project file (.lsc) tag definition to determine whether the underlying symbol is a WORD (16-bit, ambiguous — could be flags, BCD time, or decimal integer) or a DWORD (32-bit, almost always decimal). Because the LOGO! firmware does not propagate a format hint across the Web Server JSON interface, the widget defaults to hex for any 16-bit tag to avoid silently misrepresenting bit-mapped values.
The format selection logic in the LWE runtime is roughly equivalent to:
if (tag.bitWidth == 16) format = "hex";
else format = "dec";
That heuristic is the reason the calendar fields render in hex even when the operator always enters them in decimal.
3. Solution 1 — Apply the Decimal Display Override in LWE
The most direct fix is to override the format on the widget itself. The LWE widget property panel exposes a Format selector for NumericInput and NumericOutput widgets.
3.1 Procedure
- Open the LOGO! Web Editor and load the dashboard project (
*.lwe) that targets the affected LOGO! base module. - Select the numeric input widget that is bound to the timer or counter setpoint.
- In the Properties pane, expand the Display section.
- Change the Format drop-down from
Auto / HextoDecimal. - If available, set MinValue and MaxValue to the logical range of the parameter (for example
0..23for hour,0..59for minute). - Click Apply and save the project.
- Transfer the updated dashboard to the LOGO! via the Web Server user page or the LWE Deploy function.
3.2 Verification
- Reload the dashboard in the browser (
Ctrl+F5to bypass cache). - Type a test value such as
1208into the affected field and click Submit. - Confirm the field re-renders as
1208without the16#prefix.
Mo|Tu|We|Th|Fr|Sa|Su), forcing decimal will render the raw integer (0..127) rather than friendly names. Use Solution 2 for those cases.4. Solution 2 — Use a 32-bit DWORD Mirror Variable
When the display format is non-negotiable (the operator must see plain decimal) and you cannot use Solution 1 — for example when the project is exported as a static HTML dashboard — add a 32-bit DWORD mirror tag in the LOGO! program, copy the timer setpoint into the mirror on every cycle, and bind the LWE widget to the mirror instead of the raw 16-bit parameter.
4.1 LSC FBD Example
Insert an Analog Flag block and a Math Instruction block in a free UDF region of the circuit diagram. The Math block computes VD200 := UINT_TO_DWORD(VW100), where VW100 is the calendar time setpoint exposed by the weekly timer block.
4.2 LWE Binding
- In the LWE variable selector, choose VM DWORD and pick
VD200. - Insert a
NumericInputwidget and bind it toVD200. - Leave the widget format as
Auto— the 32-bit width forces a decimal render. - Deploy the dashboard.
4.3 Verification
- Browse to the LOGO! Web Server.
- Type
1208into the new mirror field; the value should persist as decimal. - In the LOGO! program monitor (LSC online view), confirm that the original timer block still receives the integer
1208.
5. Solution 3 — Update LWE and LOGO! Firmware
Earlier LWE revisions (V1.0.0 and V1.0.1) shipped with the 16-bit auto-format heuristic hard-coded. Siemens released LWE V1.0.2 in conjunction with LOGO! Soft Comfort V8.3 Service Pack 2 to expose a Format = Auto/Decimal/Hex/Binary selector per widget. Always run the latest combination of the two packages.
| Component | Recommended Version | Source |
|---|---|---|
| LOGO! 8 base module firmware | FS05 or newer | Siemens Industry Online Support |
| LOGO! Soft Comfort (LSC) | V8.4.0 or newer | Siemens Industry Online Support |
| LOGO! Web Editor (LWE) | V1.0.2 or newer | Bundled with LSC installer |
| Browser (client side) | Chromium 100+, Firefox 95+, Edge 100+ | LOGO! Web Server release notes |
5.1 Procedure
- Download the latest LSC package from Siemens Industry Online Support and install it. The LWE plug-in is part of the bundle.
- Open the LSC project, then re-open the LWE dashboard. The new widget properties will be detected.
- Re-apply Solution 1 (or use the new Auto default which now respects the bit width and tag comment metadata).
- Transfer the program and the dashboard to the LOGO! base module via Ethernet or SD card.
6. Solution 4 — Use the Built-in Calendar Custom Page (No LWE)
For installations that do not need a custom LWE dashboard, the LOGO! 8 Web Server already exposes a standardized calendar view that renders all weekly and annual timers in friendly decimal text. This view is generated from the program itself and is not affected by the LWE widget heuristic.
- In LSC, open File → Web Server Settings and enable Allow Web Server Access plus Allow Custom Web Pages.
- Set a user password (mandatory for write access on firmware FS04+).
- Compile and transfer the program to the LOGO!.
- Browse to
http://<LOGO-IP>/, log in, and click the Calendar tab. All timer setpoints will appear in decimal hh:mm.
This page is built into the firmware and bypasses the LWE widget stack entirely, so the 16# issue cannot occur.
7. Cross-Verification Matrix
| Observed Symptom | Likely Cause | Fix | Verify In |
|---|---|---|---|
| 16# prefix on every numeric input | LWE default 16-bit hex heuristic | Apply Solution 1 (widget format = Decimal) | Browser field echo |
| 16# prefix only on calendar time fields | Timer setpoints are 16-bit WORD | Apply Solution 2 (32-bit mirror) | LSC online monitor |
| 16# prefix persists after LWE update | Stale browser cache or LWE version mismatch | Clear cache, redeploy LWE V1.0.2+ | LWE Help → About |
| 16# prefix on analog input display | AIN scaled as raw 0..1000 WORD | Enable analog scaling in LSC and bind scaled VM | Web Server dashboard |
| 16# prefix intermittent (some widgets, some not) | Mixed WORD / DWORD tags in same dashboard | Set format explicitly per widget | LWE Properties pane |
| 16# prefix on input but correct decimal on output | Write path uses ASCII parser, read path returns raw JSON | Force format on both read and write widgets | Browser DevTools network tab |
8. Edge Cases and Field-Proven Caveats
-
Bit-packed weekday fields. The weekly timer Day of week parameter is a 7-bit mask, not a decimal number. Forcing decimal will show values such as
62for Mon..Fri. Use a separate Text widget with seven Boolean tags instead. - Time-zone offsets for astronomical clock. These are signed 16-bit integers ranging from -720 to +720 minutes. Hex rendering wraps at 4096 minutes, so always use the 32-bit mirror pattern from Solution 2.
-
BCD-encoded time words. Some legacy LSC V7 libraries expose timer setpoints in BCD. The LWE widget will not auto-detect BCD; use the Math block
BCD_TO_INTto convert before binding to the LWE widget. -
User permission level. The Web Server write API requires Operator or higher on firmware FS04+. If a low-privilege user types a value, the server silently discards it but the LWE widget still displays the previous value with the
16#prefix, which can be mistaken for a successful write. -
SD card project transfer. LWE dashboards are stored under
/logo/webuser/on the SD card. If the SD card is removed or thewebuserfolder is empty, the LOGO! falls back to the default hex view. Verify the SD card is seated and the folder is populated. - Network MTU and JSON truncation. A 32-bit mirror widget returning values above 32767 (for example 65535) will be serialized as a 5-digit decimal. If the browser truncates the response due to an MTU bottleneck, the field may appear blank. Use a wired Ethernet connection for commissioning.
9. Safety and Operational Notes
- Activate the LOGO! Web Server password protection (FS04+) to prevent unauthorized calendar edits that could affect production schedules.
- Document the affected VM addresses in the LSC project header comment to help future maintenance engineers understand the 32-bit mirror mapping.
- When deploying a new LWE dashboard, back up the existing
webuserfolder from the SD card to a versioned repository. - Do not run a live production system on a LOGO! 8 base module below firmware FS03; the Web Server stability fixes in FS03 are required for reliable write-back.
10. Quick Reference — Decision Flow
11. Frequently Asked Questions
Why does my LOGO! Web Editor show values like 16#0C08 instead of 12:08?
LOGO! 8 stores timer setpoints as 16-bit WORD values, and the LWE numeric widget defaults to hexadecimal display for any 16-bit tag without an explicit format hint. Change the widget Format property to Decimal in the LWE Properties pane, or mirror the value into a 32-bit VM DWORD tag and bind the widget to the mirror.
Does the 16# prefix mean the value was not written to the LOGO!?
No. The write succeeds; the LOGO! program processes the decimal value (for example 1208). The 16# prefix is only a display representation in the LWE widget, equivalent to the IEC 61131-3 hex literal syntax. Verify successful writes in the LSC online monitor rather than relying on the Web Server echo.
Which LOGO! Soft Comfort and LWE versions fix the 16# hex echo?
LOGO! Soft Comfort V8.3 SP2 (released together with LWE V1.0.2) added the per-widget Format selector that defaults to Decimal when the bound tag is a WORD with a calendar/comment metadata flag. Always run LSC V8.4.0 or newer and LWE V1.0.2 or newer for the most reliable behavior.
Can I use the built-in Calendar page of the Web Server instead of LWE?
Yes. Enable the Web Server in LSC (File → Web Server Settings), set a user password, transfer the program, and browse to http://<LOGO-IP>. The Calendar tab displays all weekly and annual timer setpoints in decimal hh:mm without the 16# prefix, because the page is rendered by the LOGO! firmware and does not use the LWE widget library.
My calendar values show as 16# but the input field still accepts decimal — is this a bug in the LOGO! firmware?
It is not a firmware bug. The LOGO! firmware stores the integer correctly; only the LWE widget render path uses a hex default for 16-bit tags. Either upgrade LWE to V1.0.2+ and select Decimal per widget, mirror the value into a 32-bit VM DWORD, or use the firmware-native Calendar page to avoid the issue entirely.