Copy the seven DL206 clock fields into two dedicated user V-memory groups, one snapshot on the process-start transition and one on the process-stop transition, and point the SCADA at those snapshot addresses. Take the duration from an accumulating timer that resets and starts at process start, so the record never depends on timestamp subtraction or rollover math.
Timestamp a process on a DL206 by copying the clock registers into your own V-memory at the instant the process starts and again when it stops, and measure the run with an accumulating timer. The clock registers keep counting whatever the process does, so a screen aimed at them shows the current time and preserves nothing. Seven fields go into one register group as the start record, the same seven into a second group as the stop record, and the duration comes from the timer, with no timestamp subtraction anywhere. The SCADA then reads the snapshot registers. This page gives the register map, the two copy routines, the timer settings to confirm, the SCADA tags, and a worked batch with the arithmetic shown.
Why the live clock cannot be the event record
The clock registers keep the current time and nothing else. A poll that reads them a minute after the event returns the current minute, so a display pointed at them looks right and records nothing. Two quick fixes fail for predictable reasons. Pointing the event display at the live clock stores whatever time you happened to look. Subtracting the stop display from the start display means borrowing across seconds, minutes, hours and day boundaries, and the raw register values are probably BCD, which ordinary integer math misreads.
The working design holds three records: a clock snapshot taken at the start transition, a second snapshot taken at the stop transition, and a duration from an accumulating timer that runs for the process. The snapshots give the two readable event times. The timer gives the duration with no calendar arithmetic at all.
The DL206 clock registers and their format
On a DL206 the real-time clock occupies seven V-memory registers:
| Clock field | Register |
|---|---|
| Second | V7766 |
| Minute | V7767 |
| Hour | V7770 |
| Day of week | V7771 |
| Day | V7772 |
| Month | V7773 |
| Year | V7774 |
The values are most likely stored as BCD, so confirm the encoding in the DL206 user manual (d2uservol1.pdf, clock chapter, pp. 3-51 and 5-44) before any field reaches a screen. Watch the registers live while you set the clock from a known reference: the second register should tick once per second and each field should follow the change. If you ever let the HMI set the clock as well as read it, the same field order applies and the packed format has to survive the write; that is the trap covered in setting the PLC clock from an HMI without breaking the packed format.
What you need
- The DL206 user manual (d2uservol1.pdf), open to the clock and timer chapters.
- Your programming software, connected to the CPU.
- Fourteen spare user V-memory registers for the two snapshot groups and one more for the retained duration, taken from a range the manual lists as user memory.
- An HMI or SCADA tag editor that can address the CPU's V-memory.
- A process you can start and stop under controlled test conditions.
Reserve the snapshot registers
Assign seven registers per group from a free user range. The two groups stay separate for the life of the program, so a stop copy can never overwrite the start record. One example layout, with your own free range substituted: V7800 through V7806 for the start snapshot, V7810 through V7816 for the stop snapshot, V7817 for the retained duration. Keep the field order identical to the clock table so tags map one to one. Write the address list into the HMI tag sheet before any logic is written.
Copy the clock on the start edge
- Detect the rising edge of the process-start bit with a one-shot, so the copy executes once per start instead of every scan while the process runs.
- Load each clock field from V7766, V7767 and V7770 through V7774 and output it to the matching register in the start group, keeping the clock table's order.
- Reset the accumulating timer and start it on the same edge.
This edge-triggered copy is the same compare-and-save pattern used to log PLC data when a register changes; the difference is the trigger, your start bit instead of a value that moves.
Copy the clock and freeze the timer on the stop edge
On the rising edge of the process-stop bit, run a second one-shot that copies the same seven fields into the stop group. Freeze the duration on the same edge: copy the timer's accumulated value into the retained duration register before any logic can reset or restart the timer. The order is fixed. The stop snapshot and the duration capture happen together, once, and then both records sit still until the next cycle.
Run the accumulating timer for duration
An accumulating timer started at process start answers the duration question directly: reset and start it on the start edge, and read its accumulated value at the stop edge into the retained duration register. Check the timer's range, resolution and units in the DL206 programming reference, and pick a timebase whose range covers the longest run the line can produce.
A timer's accumulated value is volatile: a power cycle erases it, so decide before startup what a run split by an outage should record. Keep the duration in timer units as the record of truth. If the SCADA converts timestamps to Unix seconds for its reports, the year 2038 limit on 32-bit Unix time in PLCs and RTUs is one more reason to leave duration in the timer. How the number reads on screen, total seconds versus minutes and seconds, is a formatting choice covered in how to format a PLC timer duration display.
Point the SCADA at the snapshots
Map the event-time tags to the snapshot registers and the duration tag to the retained duration register. No tag points at V7766 through V7774; those stay live for the clock display and nothing else. Format a field as a date or time only after the encoding is confirmed, because a BCD value decoded as binary shows a plausible but wrong number. The register-to-display conversions are worked through in PLC timestamp unit conversion for factory displays. If the HMI has data logging, treat it as a separate configuration: logged tags, trigger, storage destination and retention are settings of the panel in front of you, and the PLC snapshots hold the latest run regardless.
Worked example: one batch from start to stop
A mixer run begins at 14:32:05 and stops at 16:47:30 the same day, 14 March 2026. On the start edge the copy fills the start group: year 26, month 03, day 14, hour 14, minute 32, second 05, which reads as 2026-03-14 14:32:05. On the stop edge the stop group fills with 16:47:30 and the retained duration register freezes.
Timer check: with a timebase of 0.1 s (an illustrative timebase; the manual's timer chapter gives the real one for your CPU), the accumulated value at stop should read 81,250. The wall clock agrees: from 14:32:05 to 16:32:05 is 2 h 00 min 00 s, and from there to 16:47:30 is 15 min 25 s, so the run is 2 h 15 min 25 s. In seconds: 2 x 3600 + 15 x 60 + 25 = 7200 + 900 + 25 = 8125 s, and 81,250 tenths is 8125 s. Timer and clock match.
Encoding check: the stop minute was 32, and the register holds BCD 0x32. Read as binary, 0x32 is 3 x 16 + 2 = 50. A screen showing a 50-minute stop when the wall clock says 32 is the signature of BCD decoded as binary, and the fix lives in the SCADA's field format, not in the ladder.
After the stop, both groups hold their values and the live clock at V7766 through V7774 keeps counting. Nothing in the record changes until the next start edge.
How to check it worked
Make the program change with the process stopped and the machine in a safe state, then run these checks on a batch you can afford to discard:
- Start a test run. The start group copies once at the edge and holds, unchanged, for the whole run.
- Stop the run. The stop group records the stop time and the retained duration register freezes at the timer's value.
- Compare the displayed start and stop fields with the clock at each transition. A field that reads high in the 32-becomes-50 style is an encoding problem in the SCADA format.
- Repeat with a run that crosses an hour boundary and confirm the duration still matches the wall clock.
- Start a second run. Only the start group updates, at the new start edge; the finished stop record and the retained duration stay until the next stop.
Release the change only when the snapshots hold and the duration matches. If the register map, encoding or timer behavior differs from the manual for your CPU, stop and resolve it with the distributor before production.
Recommendation: reserve two seven-register snapshot groups plus one retained duration register in user V-memory, copy V7766 through V7774 on each transition with a one-shot, reset and start the accumulating timer at process start, and point the SCADA only at the snapshot registers and the retained duration. Subtract timestamps only as the recovery path when a timer value is lost, and only after the fields are decoded.
Questions
What happens if the operator starts the process twice without a stop?
Each start transition overwrites the start snapshot with the newest time and restarts the timer, so the previous pair is gone from the PLC. The stop group keeps the last completed stop. If every start must be recorded, have the SCADA store its own history when the start group changes, or use the HMI's data logging if the panel has it; the two PLC register groups hold only the latest run.
How many spare registers does this scheme need?
Seven registers per snapshot, because the clock occupies seven fields from second through year: fourteen for the two groups, one more for the retained duration, and the accumulating timer itself. That is fifteen user registers plus the timer, all chosen from a range the manual lists as free user memory. Fifteen is the planning count; the manual's memory map decides the actual addresses.
Can a duration be rebuilt after the fact?
Yes, as a recovery path: decode both snapshots from BCD first, then subtract, borrowing across seconds, minutes, hours and days, or convert both to total seconds in the SCADA and subtract. Never do the arithmetic on raw registers. The timer stays the primary duration record because it needs none of this; the subtraction exists for the day a timer value is lost to a power cycle or a reset.
How do I show a snapshot as one readable date and time?
The seven fields live in separate registers, so the SCADA builds the string field by field: two digits each for month, day, hour, minute and second, with the year per its register width. Assemble the text in the SCADA display object after the encoding is confirmed. Keep the raw snapshot registers as the stored record so a later formatting change never touches the values themselves.
Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.