A triggered or lookup message keeps re-reading the live clock tag, so the timestamp advances instead of freezing. Copy the values and the controller clock into dedicated holding registers with a one-shot at 10:00, then point the screen at the copies. The record then holds for 24 h, until the next capture.
You want one screen that collects a few process values at 10:00 each morning, shows the time it collected them, and keeps that record on view for the rest of the day. The message objects fight you. A triggered or lookup message keeps reading the live clock tag while its visibility bit stays on, so the time advances. An event can do the copy, but its actions can also land in the alarm log, where you did not ask for them. The clean fix is to stop asking the panel to freeze anything. Let the controller copy the values and its own clock into holding registers once per day, and point the screen at the copies. This page walks the storage, the one-shot capture, the missed-capture rule and the checks.
Why does the timestamp keep updating on the screen?
Because the message is tied to a live tag: while the visibility bit stays on, the panel keeps reading the clock tag, so the displayed time advances with the controller clock instead of freezing at your 10:00 capture.
Visibility answers one question, whether the object appears. It never latches the value behind it. Turn the bit off and back on, and the object returns showing the current tag value, at the moment you re-enabled it, stored nowhere. A lookup text object works the same way: it translates the register it is reading now, so a lookup driven by a live clock register updates as the register moves. Bitmaps behave the same when several share one screen, which showing several bitmaps with visibility tags covers. None of these objects store data. The storage belongs one layer down, in the controller, and the panel reads the result.
Where should the snapshot data live?
In holding registers in the controller, set aside for the snapshot alone: one write per day from the capture rung, and the panel reads them like any other tag.
The panel is a viewer, so give it stored data. Two rules keep the record honest. First, snapshot registers are separate from the live registers the process writes; if a counter register changes every scan, copy it at 10:00 into a different register. Second, copy the values and the timestamp as one operation, so the screen can never mix a temperature from one capture with a time from the next. Keep the timestamp in its own registers beside the value registers, and label the fields on the page.
What do you need before building it?
Four things: a controller with a running real-time clock, a panel that reads controller tags, at least 10 spare registers for the copy, and one spare bit for the daily flag.
- The clock, set and checked. A clock running 20 min fast moves every capture 20 min early; correct it before you commission the schedule.
- The clock values reachable from logic. Most controllers expose them as status or data-table addresses; when the driver lists no clock tags, reading PLC clock values without listed RTC tags shows where the fields usually live.
- Spare registers: six for the timestamp, one per integer value, two per floating-point value. The example below takes 10 registers in all.
- A screen page with numeric objects for the values and the timestamp fields.
- Retentive storage, or a log-file route, when the record must survive a power cycle.
How do you copy the clock and the values once at 10:00?
Compare the controller clock with 10:00, run the copy through a one-shot instruction so it executes for one scan, and hold it off with a daily flag that clears when the date changes.
- Write down the six clock addresses, year, month, day, hour, minute, second, exactly as the controller documentation prints them. A guessed layout swaps month and day silently.
- Choose the snapshot registers and the flag bit, and keep them out of every other rung.
- Build the compare rung: true when the hour field equals 10 and the minute field equals 0. The condition stays true for a whole minute, 60,000 ms, which at a 10 ms scan time is 60,000 ms ÷ 10 ms per scan = 6,000 scans.
- Put a one-shot instruction in that rung. A one-shot (ONS in many instruction sets) passes the rung for one scan per false-to-true transition, so the copy executes exactly once.
- Set the daily flag after the copy, and gate the compare with a normally closed contact of that flag, so the rest of the window cannot retrigger.
- Copy the values and the clock fields together, in the same group of rungs, as one capture.
- Clear the flag when the day field no longer equals the stored day. Tomorrow's 10:00 can capture again.
- Point the screen objects at the snapshot registers. Keep any live clock on another part of the page and label it; showing a digital clock from PLC RTC values covers that object.
What happens if the controller stops before 10:00?
The capture is missed: a minute match only fires if the controller is scanning inside that minute, so add a catch-up rung that runs once when the clock has passed 10:00 and the daily flag is still clear.
The catch-up rung drives the same copy behind a different condition: time of day past 10:00:00, flag clear. The one-shot and the flag give exactly one copy, at 10:00 or at 10:47 after a restart. The timestamp then reads 10:47 with seconds, and that is the honest record: it states when the values were taken. Stamping a late copy 10:00:00 would misdate the data. If the process is down the whole day, the flag stays clear and the catch-up fires on the restart scan: one copy, timestamped at restart.
Does the snapshot survive a power loss?
Only when the storage behind the snapshot registers is retentive: check how your controller treats those addresses across a power cycle, because working memory can come back zeroed after a restart.
Two paths make the record durable. Configure the snapshot registers as retained, battery-backed or configured-retentive, whichever the controller supports. Or write the record to a file on removable memory, which storing PLC data on the panel for later retrieval covers; on the logging side, triggered snapshot logging configuration walks the same idea with a file destination. Then test it: cycle controller power with the machine in a safe state and read the screen. Retained registers show yesterday's record; zeroed registers tell you the storage choice was wrong. Never run that test mid-cycle with actuators live.
What does an example capture look like?
A packaging line with three values, a case counter, a dryer temperature and a downtime total, copied with the clock at 10:00 into 10 registers, and the screen holds those numbers for the next 24 h.
At the capture moment the case counter reads 1,842, an integer in one register. The dryer temperature reads 68.4 °C, a floating-point value in two registers. The downtime total reads 37 min, one integer register. The clock fields read year 25, month 6, day 14, hour 10, minute 0, second 3: the scan that satisfied the compare landed 3 s into the minute, and the one-shot still made one copy.
| Field | Live source | Snapshot storage | Copied value |
|---|---|---|---|
| Case counter | 1 integer register | 1 register | 1,842 |
| Dryer temperature | 1 float value | 2 registers | 68.4 °C |
| Downtime total | 1 integer register | 1 register | 37 min |
| Clock | 6 fields | 6 registers | 25-06-14 10:00:03 |
| Total | 10 registers |
Storage math: 1 + 2 + 1 = 4 value registers, plus 6 clock registers, 10 registers in all. The screen line reads "Collected 14-06 10:00:03: 1,842 cases, 68.4 °C, 37 min down". The next capture comes 1,440 min later, 24 h x 60 min/h, and until then every read of those registers returns the same values whatever the live tags do.
How do you check the screen after the first capture?
Watch the snapshot registers before 10:00, confirm exactly one write at the capture, then leave the page open and confirm the values and timestamp hold while the live clock keeps advancing.
- Before 10:00: the registers hold the previous record and the flag bit is 0.
- In the capture minute: the registers change once and the flag goes to 1. Two changes mean the flag gating is wrong; no change means the compare fields are mapped wrong.
- During the day: the live clock object advances and the snapshot line holds. A moving snapshot value means another rung writes your registers; move the storage.
- At midnight: the date change clears the flag once.
- At the next 10:00: the new record replaces the old in one write.
Recommendation: build the snapshot in the controller: one one-shot copy at 10:00 of the values and the clock fields into dedicated registers, a daily flag cleared on date change, and a catch-up rung for a missed 10:00, with the panel reading only the copies. Choose retentive registers, or a log file, when the record must survive a power cycle; plain working registers are enough when the screen only needs today's record.
Questions
Will turning the visibility bit off and on freeze the timestamp?
No. The bit only hides and shows the object; when the object comes back, the panel reads the live tag again and prints the new time. The value behind a message object is never stored on the panel, so the freeze has to happen in the controller. Copy the clock into holding registers and point the object at those.
Can the event system take the snapshot instead of PLC logic?
It can fire actions on a schedule, and some panels offer file or transfer actions that suit a snapshot. Check the action list first: if the event also writes entries to the alarm log, the log fills with records you did not ask for. The register copy keeps the alarm log untouched and needs no event at all.
How many registers does a daily snapshot need?
Six for the clock fields, plus one per integer value and two per floating-point value. A three-value snapshot with one float takes 1 + 2 + 1 + 6 = 10 registers, plus one bit for the daily flag. Size the table for every value you plan to add later.
What timestamp should a catch-up capture show?
The time the copy actually ran. If the controller restarts at 10:47 and the catch-up fires on the first scan past 10:00, the clock fields read 10:47 plus seconds; store that. A late copy stamped 10:00:00 misdates the data, and the point of the record is when the values were true.
Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.