S7-1500 Timezone and DST: Resolving LCD vs TIA Portal Configuration Conflicts
Setting timezone and daylight saving time (DST) on a Siemens SIMATIC S7-1500 CPU can be performed from two independent locations: the TIA Portal Device Configuration > Time of Day property page, and the front-panel LCD of the CPU. The two sources do not always agree, and a third actor — the SET_TIMEZONE instruction executing in the user program — can silently overwrite both. This reference explains the precedence model, the behavior on power cycle, the difference between a hardware-configuration download and a software-only download, and the field-proven procedure to make the timezone/DST configuration deterministic.
1. The Two Configuration Locations and a Third Actor
The S7-1500 holds its time-of-day model in two cooperating areas:
- TIA Portal Device Configuration — Time of Day — This is the engineering-time setting compiled into the hardware configuration. It is stored in the project and downloaded to the CPU as part of the system data. It includes the local timezone offset, the DST rule (active/inactive), and the DST start/end rule definition.
- Front-panel LCD — The 6-line or 4-line display on the CPU face allows the operator to navigate to Settings > Time > Time Zone and Settings > Time > DST and modify values at runtime. These values are stored in non-volatile CPU memory and survive a power cycle.
-
User program —
SET_TIMEZONEinstruction — A third, less obvious writer. When called, this instruction overwrites the active timezone and DST rule from a referenced data block. If the source DB is initialized to NULL (all zero bytes), the call writes a zero offset and disables DST, which manifests as UTC with no DST switching.
The remainder of this article addresses why these three writers produce inconsistent results and how to lock down the configuration.
2. Precedence: Who Wins, and When
Siemens documentation does not state a single global winner; instead, the precedence is event-driven. The following table summarizes the observed precedence for each event.
| Event | Winner / Source of Truth | Notes |
|---|---|---|
| Initial download of hardware configuration (STOP → RUN with HW download) | TIA Portal Device Configuration | Overwrites LCD and runtime values. |
| Download of software (no STOP prompt) | Unchanged from last hardware download | Software-only downloads do not push Time of Day values. |
| Operator edit on LCD after a project is loaded | LCD value (runtime override) | Persists across warm restart and power cycle. |
| Power cycle / STOP-RUN | Last writer wins (LCD or HW config) | The CPU does not revert to the project value; it keeps the most recent in-memory value. |
Execution of SET_TIMEZONE in user program |
User program (DB contents) | Overwrites the active runtime timezone on every scan if called unconditionally. |
| MRES (memory reset) | Factory default (UTC, no DST) | Resets LCD entries and runtime overrides. Next download restores the project value. |
3. The SET_TIMEZONE Failure Mode (Field-Proven)
The most common root cause of a CPU reverting to UTC at a specific hour of the day is the SET_TIMEZONE instruction executing from a NULL data block. The signature is unmistakable:
- Timezone is correct (e.g., UTC-05:00 EST) immediately after the hardware configuration download.
- At a fixed wall-clock time (commonly 03:00 because of a daily scheduled task), the timezone reverts to UTC and DST switching disappears.
- The DST entries in the LCD are intact but the timezone is shown as "UTC Coordinated Universal Time".
3.1 Inspecting the Data Block
Open the project in TIA Portal, expand Program blocks > System blocks > <your time DB> and check the Initial value column. A NULL DB will show all zeros for the timezone offset, DST rule, and DST start/end structures. When the SET_TIMEZONE instruction is called, the CPU reads the DB and writes those zeros into the active runtime parameters.
The TIA Portal Watch table or a cross-reference to the SET_TIMEZONE instance is the fastest path to the offending call. Search the program for any call of SET_TIMEZONE, SET_TIMEZONE_NORDIC, or the older SET_TIMEZONE from the extended instructions library. If the DB is uninitialized or loaded from a recipe/HMI tag that is blank, the symptom is guaranteed.
3.2 Correct SET_TIMEZONE DB Population
The SET_TIMEZONE instruction expects a structure of type DTL-based timezone rule. The minimum populated fields are shown below.
| DB element | Type | Required value for US Eastern |
|---|---|---|
timezone.bias |
INT | -300 (minutes from UTC; -5:00 × 60) |
timezone.daylightBias |
INT | -60 (DST adds 60 minutes to bias) |
timezone.standardName |
STRING | 'EST' |
timezone.daylightName |
STRING | 'EDT' |
timezone.standardStart |
DTL | First Sunday of November, 02:00 local |
timezone.daylightStart |
DTL | Second Sunday of March, 02:00 local |
If the user program is the authoritative writer, ensure the DB is initialized with the correct values at startup (OB100) and not overwritten by a blank HMI tag or an empty recipe.
4. Hardware Download vs. Software Download — Why the Timezone Did Not Update
A frequently observed symptom is "I changed DST in Device Configuration and downloaded, but the DST entries on the LCD are still there." The cause is the download type. TIA Portal distinguishes two download operations:
- Software download — Pushes the program blocks only. The CPU remains in RUN if possible. Time of Day parameters are not transmitted.
- Hardware download (full) — Prompts to STOP the CPU and transmits the system data, including Time of Day.
If TIA Portal did not prompt to STOP the CPU when you downloaded, only software blocks were transferred. The timezone and DST settings you see on the LCD are the unchanged runtime values from the previous download, regardless of what is in the project.
5. LCD Override Behavior (The Persistent Override)
Once the project is loaded and the CPU is in RUN, an operator can change the timezone and DST rule from the front-panel LCD. The CPU applies the change immediately and stores it in non-volatile memory. The key behavior is:
- The LCD value overrides the compiled hardware configuration for runtime operation.
- The LCD value persists across warm restart, cold restart, and complete power loss.
- The next hardware download overwrites the LCD value with the project value.
- If the project has no Time of Day configuration (the property page is empty or default), the LCD value still persists; it is never auto-cleared.
This explains the "mystery reversion" in the source scenario: a hardware configuration was downloaded, then the operator set the timezone on the LCD to EST. The CPU ran in EST until the next full hardware download, at which point the compiled UTC value replaced EST. No power cycle, no daily schedule, and no user program was involved — the reversion was triggered by a later full download.
6. Time of Day Properties in TIA Portal Device Configuration
The relevant property page is reached via Devices & networks > <CPU> > Properties > Time of Day. The fields are:
| Property | Function | Recommended setting for US Eastern |
|---|---|---|
| Local time vs. UTC | Selects whether the CPU clock keeps local time or UTC. | Local time (US/Eastern) |
| Time zone offset | Hours and minutes from UTC. | -05:00 (EST) or -04:00 (EDT active) |
| DST active | Enables automatic DST switching. | Yes |
| DST rule | Defines start and end of DST. | Second Sunday of March 02:00 → First Sunday of November 02:00, +60 min |
| Time synchronization | Source for time master (NTP, PLC, none). | NTP via CP 1543-1, or leave disabled if SNTP is not required |
The full functional description is published in the Siemens TIA Portal Help under Functional description of S7-1500 CPUs > Setting the operating behavior > Time-of-day functions > Setting and reading the time of day (S7-1500) at docs.tia.siemens.cloud.
7. User-Programmatic Time Reads and Writes
Beyond configuration, the user program can read and write the clock with the following instructions from the Extended instructions > Time library.
| Instruction | Function | Typical use |
|---|---|---|
RD_SYS_T |
Reads the current system time (UTC or local per configuration). | Time-stamping alarms and audit logs. |
WR_SYS_T |
Writes the system time. | Initial sync from a master clock. |
RD_LOC_T |
Reads local time (timezone applied). | HMI display strings. |
WR_LOC_T |
Writes local time (timezone stripped). | Manual correction by operator. |
SET_TIMEZONE |
Writes the active timezone rule. | Multi-region machines. |
TIME_TCK |
Reads the CPU tick counter (100 ns units). | High-resolution interval timing. |
For more detail on WR_SYS_T and the read instructions, refer to the same Siemens functional description page linked above.
8. Step-by-Step: Locking Down the Timezone and DST
Use the following procedure when the timezone or DST is observed to drift, revert, or not match the project.
Prerequisites
- TIA Portal V15.1 or later (V20 recommended for current documentation).
- Online connection to the S7-1500 CPU.
- Project archive of the current machine program.
Procedure
- Open the project, expand Devices & networks > <CPU> > Properties > Time of Day and set the local time, timezone offset, DST active flag, and DST rule to the correct values for the site.
- Cross-reference the program for any call of
SET_TIMEZONEorSET_TIMEZONE_NORDIC. If found, open the referenced DB and confirm the Initial values are populated, not all zero. If the program must change the timezone at runtime, ensure the DB is loaded with valid data in OB100 or before the first call. - Right-click the CPU in the project tree, choose Download to device > Hardware and software (only if different). Confirm TIA Portal prompts to STOP the CPU. If it does not prompt, repeat with Download to device > Hardware and software (full).
- After the download completes and the CPU returns to RUN, navigate the front-panel LCD to Settings > Time > Time Zone and Settings > Time > DST. Confirm the values match the project.
- Power cycle the CPU (turn off the 24 V supply for 10 seconds, restore). Re-check the LCD. The values should be unchanged.
- Search the program for any scheduled task (time-of-day interrupt OB, cyclic OB) that calls
SET_TIMEZONE. Remove the call if the timezone is not supposed to change at runtime. - Document the configuration in the project release notes so that a future software-only download does not invalidate the assumption.
Verification
Create a watch table with the following tags and confirm the values remain stable for at least 24 hours, including across a DST boundary if the schedule permits:
-
%DB_TIMEZONE.bias(or the active timezone tag if exposed) %DB_TIMEZONE.daylightBias%DB_TIMEZONE.standardStart%DB_TIMEZONE.daylightStart
Compare the watch table values to the project DB. Any drift indicates a SET_TIMEZONE call executing with a NULL or stale DB.
9. Troubleshooting Matrix
| Observed Symptom | Likely Root Cause | Diagnostic Action | Fix |
|---|---|---|---|
| Timezone reverts to UTC at a fixed wall-clock time (e.g., 03:00) |
SET_TIMEZONE called with NULL DB |
Cross-reference for SET_TIMEZONE; inspect DB initial values |
Populate DB; remove the call or guard it with valid data |
| Timezone reverts after a software download | Software-only download did not push Time of Day | Confirm whether STOP was requested | Perform a full hardware download |
| Timezone reverts to project value after a power cycle | Operator changed LCD, then a later hardware download restored the project | Check download history in TIA Portal | Align project and LCD or document the LCD as the runtime authority |
| DST switching does not occur on the boundary date | DST rule mis-configured or SET_TIMEZONE cleared the rule |
Inspect Time of Day properties and runtime DB | Correct DST rule; re-download hardware |
| Time drifts gradually (seconds per day) | No NTP/SNTP master and no synchronization configured | Check Time synchronization properties | Configure NTP master or accept the drift tolerance |
| Diagnostics buffer timestamps are off by the timezone offset | CPU set to UTC and HMI expects local | Compare CPU clock mode to HMI display logic | Set CPU to local time or convert in HMI tag |
10. Best Practices for Field Deployment
-
Pick one source of truth. Either the TIA Portal Device Configuration or the LCD or a runtime
SET_TIMEZONEcall. Never run all three. -
Never call
SET_TIMEZONEfrom a DB that is loaded from a blank HMI tag or recipe. Initialize the DB with the actual values in OB100, or build the structure from constants in the program. - Always perform a full hardware download when changing Time of Day. Verify that TIA Portal prompts to STOP the CPU.
- Disable LCD editing in production if the runtime authority is the project. Protect the CPU with a password so that the front-panel settings menu is not user-accessible.
- Document the timezone in the HMI project as well. A mismatch between the HMI timezone offset and the CPU timezone will manifest as a one- or two-hour display error that looks like a DST bug.
- Centralize NTP. If the site has multiple CPUs, configure one as the NTP master or use a plant-wide NTP server via the CP 1543-1. Avoid each CPU drifting independently.
11. Verification Checklist
After applying the procedure in Section 8, confirm each item:
- Project Time of Day properties show the correct timezone and DST rule.
- No unconditional
SET_TIMEZONEcall exists in the program; if one exists, the referenced DB is populated and not overwritten by blank data. - Full hardware download performed (TIA Portal prompted to STOP).
- Front-panel LCD timezone and DST match the project.
- 24-hour stability test passed — no reversion to UTC.
- Power cycle test passed — LCD values persist and remain correct.
- DST boundary test passed (if scheduled to occur within the test window) — clock advances or falls back by exactly 60 minutes at 02:00 local.
Does the TIA Portal Device Configuration timezone override the front-panel LCD setting?
Only on a full hardware download. The compiled configuration is the initialization source, not a periodic reassertion. After the download, the LCD or a user program can change the timezone, and the CPU will keep the new value across STOP/RUN and power cycle until another full hardware download pushes the project value back.
My CPU reverts to UTC at 03:00 every night. What is the cause?
A SET_TIMEZONE instruction in the user program is executing with a NULL data block. Cross-reference the project for SET_TIMEZONE or SET_TIMEZONE_NORDIC, open the referenced DB, and populate the timezone bias, daylight bias, and DST start/end structures. Initialize the DB in OB100 or remove the call.
Why did my DST change not take effect after a download?
TIA Portal performed a software-only download and did not prompt to STOP the CPU. Software-only downloads do not transmit Time of Day parameters. Repeat the download with Download to device > Hardware and software (only if different) or Hardware and software (full) and confirm the STOP prompt appears.
What is the correct DST rule for US Eastern Time?
Bias -300 minutes (UTC-05:00), daylight bias -60 minutes, DST start second Sunday of March at 02:00 local, DST end first Sunday of November at 02:00 local. Daylight name 'EDT' and standard name 'EST' are conventional but not required for CPU operation.
How do I prevent operators from changing the timezone on the LCD?
Assign a password to the front-panel access protection in Device Configuration > Protection > Front panel access. With protection set to "Password required for write access", the operator must enter the password to modify the timezone or DST settings, preventing accidental override of the project value.