The PLC, as the driver's master, polls a numeric entry tag that still holds the last entry, so switching local/remote lets the unselected panel's old value into the process. Give each panel its own buffer register and notification bit, enable the entry's notification and handshake option, and move buffer to application value only when the bit and the selector both agree.
The old number comes back because it never left. On an Ethernet driver in which the panel is the slave and the PLC is the master, the panel never pushes a value out unasked; the PLC polls the numeric entry tag, and that tag still holds the last entry, selected or not. Flip the selector from local to remote, your logic reads the remote panel's tag, finds a value sitting there, and accepts it as a fresh command. Clearing the register to 0 fails for the same reason: the panel still holds the old number and answers the next poll with it. The fix is a buffer register and a notification bit per panel, the numeric entry's notification and handshake option, and a transfer that runs only when the notification bit and the selector both agree.
Why the old value arrives after the switch
The roles on this kind of driver are fixed. The PLC is the master and each panel is a slave, so a panel only ever answers with the data it holds. The numeric entry tag is data the panel holds, so it is present on every poll, whether that panel is selected or not. Changing the selector decides which panel has authority; it leaves the tag contents of the panel that just lost authority untouched.
That is why the replay happens at the switch, and not at an entry. The logic that feeds the process value from the entry register runs on every scan. While local was selected, someone typed a new number into the local panel's tag. The remote panel's tag still holds whatever was typed into it last. The moment the selector changes, that rung reads the remote tag, and the stored number lands in the process.
Zeroing the PLC register buys exactly one poll cycle. The panel's tag is untouched, the master asks for it again, and the same number returns. A null marker such as -9999 behaves the same way unless your own ladder defines the marker and checks for it before every use of the value.
Symptoms and what each points to
Match what you see on the floor to a cause before you change any logic:
- The value changes the instant you flip the selector, with nobody typing. Process logic is reading the unselected panel's entry tag as if a new entry had happened. This is the replay.
- A register you zeroed fills again with the same old number. The zeroing cleared the PLC copy only. The panel still holds the entry and hands it back on the next poll.
- New entries take on one panel and never on the other. Both panels share one buffer register or one notification bit, so one panel's notification can qualify the other panel's stored value.
- An entry throws a handshake or timeout error on the panel. The PLC side is breaking the handshake: the trigger bit is cleared before the handshake bit is latched, or never cleared at all. The bit mechanics are in numeric entry notification and handshake bits explained.
The second symptom is the trap. The register reads 0 right after you clear it, so the fix looks good. Judge it at the switch, one poll cycle later. On a driver polling at 10 Hz, one poll cycle is 100 ms, so the stale value lands within about 100 ms of the switch.
The fix: qualify every transfer with notification and selection
The fix changes the question your logic asks. It stops asking whether a value is present and starts asking whether an operator invoked an entry on the panel the selector has chosen. Present reads true on every poll. Invoked and selected reads true once per real entry.
- Stop driving the process from the entry tag. Create a separate application value, plus one buffer register and one notification bit for each panel. Two panels means two buffers and two bits. The move-from-buffer-on-enter pattern for a single panel is in move an HMI numeric entry into PLC memory on Enter; the two-panel gating is what this article adds.
- Turn on the notification and handshake option in each numeric entry object. Point the entry value at that panel's buffer register and the notification at that panel's bit. Keep them separate per panel: a shared buffer lets panel A's notification qualify panel B's stored value.
- Gate the transfer with both conditions. On the rising edge of a panel's notification bit, and only while the selector names that panel, one-shot move the buffer register into the application value. Then release the handshake in the sequence the option documents: latch the handshake bit first and clear the trigger within one poll cycle of the panel (100 ms on a 10 Hz poll). An entry made on the unselected panel sits in its buffer with nowhere to go.
- Leave the display registers shared. Both panels keep reading the same status and display registers from the PLC; only the entry path changes.
- Use the application value everywhere downstream. Any rung still reading a panel tag directly is a bypass around the gate.
The notification and the selector answer different questions, and the transfer needs both. The notification marks that an entry event happened. The selector decides which panel may commit one. A valid notification from the panel that is not selected stays a stored number in a buffer, nothing more.
Commission it one panel at a time
Test each panel on its own, so a real entry is never confused with a stored one. Use values that are safe for the process, and keep real entries inside the limits your ladder clamps; the clamp pattern is in clamp HMI numeric entry limits in PLC ladder logic.
- Record the starting application value and put both panels' buffer registers and notification bits on a watch list.
- With local selected, enter a test value on the local panel. Watch the buffer update, the notification bit set, the application value take the number, and the bit clear within one poll cycle, 100 ms on a 10 Hz poll.
- Switch the selector to remote without typing anything on the remote panel. The application value must hold its starting value across the switch and for one poll cycle (100 ms at 10 Hz) after it.
- If the interface permits entry while a panel is unselected, type a second value on it. Its buffer may change; the application value must stay where it was.
- Select that panel. The stored value still stays put. Then enter a fresh value and watch only that one arrive.
- Run the same sequence in the other direction.
Watch the notification bit clear after every accepted entry. A bit that stays set turns one entry into a repeated transfer every time the selector passes that panel, and a stuck bit is a commissioning stop, because the line would take the same command again and again.
Example: two panels, one selector bit, one application register
The inputs, and where each comes from:
- 2 panels writing 1 PLC through a local/remote selector: the arrangement this article fixes.
- 1 buffer register + 1 notification bit per panel: from step 1 of the fix, so each panel's entry is stored and flagged separately.
- 1 selector bit in the PLC (0 = local panel selected, 1 = remote selected): the existing local/remote switch.
- 1 application register: the value the process actually uses, created in step 1.
- Clear the trigger within 1 poll cycle (100 ms at a 10 Hz poll) of latching the handshake bit: the option's documented sequence, from step 3.
The rule in words: buffer n moves into the application register once, on the rising edge of notification bit n, while the selector reads n.
The arithmetic. Entry-control tags reserved: 2 panels x (1 buffer register + 1 notification bit) = 2 x 2 = 4 tags. The selector adds 1 bit: 4 + 1 = 5 tag points standing between the 2 panels and the 1 application register.
The replay case, step by step. During local, the operator enters a new value: buffer 1 takes it, notification bit 1 pulses, the gated rung moves it within 100 ms, application register updates. The selector flips to remote. Buffer 2 still holds the old entry from whenever remote was last used, but notification bit 2 reads 0, so the gated rung executes 0 times and the application register takes 0 new values from the switch. Before the gating, the same switch moved 1 stale value into the application register. After it, 0.
Result: 5 tag points, 1 transfer per real entry, 0 transfers per selection change.
Decision: any write to the application register in a poll where its panel's notification bit reads 0 means the gate is bypassed. Find the rung reading a panel tag directly, remove it, and repeat the switch test before the line runs product.
The decision
Recommendation: On any line where two panels write one process value through a local/remote selector, give each panel its own buffer register and notification bit, turn on the notification and handshake option in each numeric entry object, and move buffer to application value only on that panel's notification edge while the selector names it. Give a third panel the same two tags, its own buffer and its own bit, before it is ever handed control, and leave no rung reading a panel's entry tag directly. Keep the switch test passing in both directions with the application value holding, and the replay stays gone.
If the line also needs a separate notice board or andon status screen next to the panels, that is a display job, not an HMI job. The floor screens in our shop-floor signage range are built for notices and status content, and they take nothing away from the entry panels' role.
Questions
What does the panel show if the handshake never completes?
When a numeric entry that uses notification and handshake fails to complete in time, the panel software reports a handshake timeout error for that object and the entry is not committed. The usual causes on the PLC side are a trigger bit the ladder never clears, or one it clears before the handshake bit is latched. Fix the PLC side and the error stops on the next entry.
Do the display registers need separating too?
No. Only the entry path needs separating. Both panels can keep reading the same display and status registers from the PLC at the same time, because that read path carries no command and has nothing to replay. Separate the tags a panel can write: each panel's entry buffer, its notification bit, and any setpoint object that commits a value to the process.
Can I use a null value like -9999 instead of the handshake?
A null marker such as -9999 works only if your own ladder defines it and checks for it before every use of the value. The panel keeps the displayed number in its entry tag regardless, so the marker has to live on the PLC side of the qualified transfer: move the buffer only on a notification, and treat every other value, including -9999, as no entry.
Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.