Change HMI screens from the PLC and give control back

8 min read · Published November 6, 2026

Write the screen number once into the Switch to Screen Number word the panel watches, confirm the jump on the Current Screen word, then clear the switch word to hand the buttons back. Use 0 as the release value when it holds the screen; when it pulls the panel back to the previous screen, release with one above your highest screen number.

Yes, you can change the HMI screen from the PLC. The panel watches one word register you map in its programming software, under Setup > Project Attributes on the PLC to Panel tab, in the Switch to Screen Number (word) field. The PLC writes the target screen number into that word once and the panel jumps to that screen. The trap is the handback: while the word holds a number, the panel follows the PLC and its own Change Screen buttons are dead. Clear the word once the panel reports the jump on its Current Screen (word), and the operator gets the buttons back. The sections below cover the mapping, the one-shot write, the release rung, and the test that settles which release value your software uses.

Symptoms and what each one points to

Put the switch word in a data view or status table first; every symptom below is read from it. Watch the word for 5 seconds after the event fires: if the value has not moved by then, the rung is not executing at all.

  • The panel jumps to the right screen and every Change Screen button is dead. The switch word still holds the request, so the release step never ran. Add the release rung.
  • The word stays 0 for the full 5 seconds the event is ON. The rung is not executing: the trigger contact is wrong, or the rung sits in a stage or subroutine that is not active. Fix the PLC logic.
  • The word shows a number, but the wrong one. The constant you load is not a screen number. The value in the word is the screen number, so screen 5 needs the value 5.
  • The word holds the right number and the panel still shows the old screen after 5 seconds. Re-check the tag's register against the PLC address, confirm the project was downloaded after the mapping change, and confirm the number names a screen that exists; a request for a screen that was never built cannot display.
  • The second event is ignored. The register acts on a change of value, so the same number written again does nothing. Retriggering the same screen has its own article.
  • The panel jumps, then snaps back to the previous screen. Your software release reads 0 as go back one screen. Use the release-value test below.

Map the two words first

Open the panel programming software and go to Setup > Project Attributes. Assign a tag on the PLC to Panel tab to Switch to Screen Number (word). A blank field means the panel ignores PLC screen requests, so this is the first thing to check on a panel that never jumps. Then assign a tag on the Panel to PLC tab to Current Screen (word); the release rung needs it.

Field Tab What it does
Switch to Screen Number (word) PLC to Panel Carries the screen number the PLC requests
Current Screen (word) Panel to PLC Carries the screen number the panel is showing

This article's examples use two adjacent free word registers: V2000 for the switch word and V2001 for the current-screen word. V2000 is a 16-bit integer word holding a screen number, and its initial value is 0. Substitute registers that are free in your program, then download the project to the panel.

Panel software without this tab does the same job two other ways: a PLC control object with its type set to Change window, pointed at a register or tag on the PLC, or a value-change event on the screen-number tag that activates a screen by number. The write, confirm, release loop is the same in all three.

Write the number once, on a transition

The write is a plain data move: load the screen number constant into the switch word when the trigger goes true. Use a one-shot on the trigger so the move fires once per event, not on every scan. A typical PLC scan runs in the low milliseconds, so without the one-shot the same value lands in the word every few milliseconds and only the first write counts as a change.

// Pseudo-logic, not vendor syntax
// V2000: switch word, 16-bit integer, initial value 0
// V2001: current-screen word, 16-bit integer, reported by the panel
// C0:    example trigger bit, goes ON with the event
 ONE_SHOT C0
 MOVE 15 -> V2000        // 15 = the alarm screen number

The register acts on a change of value. A fresh number selects that screen; the same number written again selects nothing. That is what the one-shot protects: one event, one new value in the word.

Release on the current-screen word

While the switch word holds a nonzero number the panel follows the PLC, and the Change Screen buttons are dead. Writing 0 returns control to the touchscreen. Clear only after the panel has acted on the request: the release rung waits for the current-screen word to equal the request.

IF V2000 <> 0 AND V2001 = V2000 THEN
  MOVE 0 -> V2000      // hand the buttons back

Clearing in the same scan as the request can drop it, because the word can go back to 0 before the panel ever reads the number. The equal check shows the panel switched, and the clear that follows is safe. A screen call is an operator aid: keep the alarm itself on the stack light and horn, and use the screen to explain it. The same current-screen word can also gate PLC logic to the screen that is displayed.

Example: an alarm calls screen 15 on a line with 24 screens

Inputs: the alarm screen is screen 15, built in the panel project; the operator sits on screen 1, the main screen; the highest built screen number is 24, read off the project's screen list; the switch word V2000 is a 16-bit integer whose initial value is 0; the current-screen word V2001 reports what the panel shows; C0 is the alarm bit. The panel reads its registers once per update cycle, so allow up to 1 second for the jump to land before you judge the rung. V2000 and V2001 are this article's example addresses, so substitute free registers from your program.

Rule in words: the switch word acts when its value changes. A nonzero value selects that screen. A release value must change the word a second time and leave the operator on screen 15 with working buttons, so it can be 0 only when 0 holds the screen; otherwise it must be greater than the highest built screen number.

The arithmetic, step by step:

  1. C0 goes ON and the one-shot writes 15 to V2000. Within the panel's update cycle, well under 1 second, the panel switches to screen 15 and V2001 reads 15. The release rung sees 15 is not 0 and 15 equals 15, so it writes its release value.
  2. Release test with 0: V2000 goes from 15 to 0, which is a change, so it acts. On this software the panel returns to screen 1, the previous screen, inside that same 1 second window. The buttons work but the operator was pulled off the alarm screen, so 0 fails here.
  3. Release test with one above the highest built screen: 24 + 1 = 25. Writing 25 takes V2000 from 15 to 25, a change, so it acts. 25 is greater than 24, so it names no built screen and nothing new is displayed. The operator stays on screen 15 and the Change Screen buttons respond.

Result: this software releases with 25, and the operator keeps the alarm screen for as long as the shift needs it.

Decision: keep 0 as the release value when writing 0 leaves the panel on the alarm screen with the buttons working. When 0 pulls the panel back to the previous screen, the release value must be greater than the highest built screen number, and one above is the smallest choice: 25 for 24 screens.

Test which release value your software uses

Two behaviors are reported for 0 in the switch word. One release reads 0 as hand control back to the touchscreen, and the operator stays where they are. The other reads 0 as show the previous screen, a hidden behavior that pulls the operator off the alarm screen. Which one you get depends on the software release.

The help under the PLC-to-panel setup page prints the behavior for your release; read it first. Then test it on the panel: trigger the jump to the alarm screen, write 0 from the data view, and watch for the 1 second it takes the panel to act. Screen holds and the buttons work: keep 0. Screen reverts: change the release rung to write one above the highest built screen number, and run the event twice, spaced about 10 seconds apart, to confirm the panel still jumps on the second request.

Recommendation: map both words and download the project, write the screen number once from a one-shot, and release by writing 0 once the current-screen word matches the request. When 0 pulls the panel back to the previous screen, release with one more than your highest built screen number instead. Run the event twice before sign-off, because the second request is where a stuck release shows up.

The repair and the proof

A panel locked on a PLC screen right now needs no laptop: open the data view for the switch word, force 0 into it, or one above the highest built screen number if 0 reverts, and confirm the buttons respond within 1 second. Remove the force before you leave. The rung overwrites it the next time the event fires, so a force left in place hides the fault from the next shift.

Permanent repair:

  1. Map Switch to Screen Number (word) and Current Screen (word), and download the project.
  2. Add the one-shot write of the screen number from the event contact.
  3. Add the release rung on the current-screen word.
  4. Run the event twice in a row; the second run exercises the transition.

How to check it worked:

  • Start on the main screen with the switch word at 0.
  • Trigger the event: the panel goes to the alarm screen within 1 second, the current-screen word matches, and the switch word clears on its own.
  • Press a Change Screen button: it works.
  • Trigger the event from a different screen: the panel still jumps.
  • Trigger it while already on the alarm screen: the panel stays put and the word still clears.

A screen the PLC calls up on an event is doing andon work. For the placement and sizing side of that job, read where a small screen fits on an andon board.

Questions

Why a word register and not a bit for the screen change?

The switch field is a word: the number in it is the screen number, and it carries any screen in the project. A bit has two states and cannot say which screen to show. Map the switch tag to a 16-bit word register and the current-screen tag to a second word, and pick two adjacent free registers so the pair is easy to find in the data view.

What happens if two rungs write different screen numbers in the same scan?

The register ends the scan holding whichever number the last executed write put there, and the panel acts on that final value once. Sequence the writes so the higher-priority alarm rung fires last, or interlock the rungs so only one fires per event. The release rung then confirms on the current-screen word as usual.

Do I need to initialize the switch word at power-up?

Set the switch word to 0 in first-scan logic so the panel starts with the operator's buttons working. Whether the register holds its value through a power cycle depends on whether the address is retentive in your PLC, and initializing it removes the question. A screen number already sitting in the word at power-up is a live request, so the panel can come up under PLC control.

Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.

Keep reading

Build your signAsk for a quote