Show a saved name on an HMI screen when buttons are static

6 min read · Published November 7, 2026

Pushbutton captions on this class of HMI panel are static text set at design time. Store the saved name in the string register, show it in a Dynamic Text field, and place a fixed-caption pushbutton such as Load this data immediately beside it. One field and one button per saved data set, with the label refresh driven by the same logic that selects the data.

The saved name can sit on the screen beside the button, but it will never sit inside the button. On this class of HMI panel the pushbutton caption is static text set at design time, and no runtime value rewrites it. The supported layout is two objects: a Dynamic Text field that reads the saved name from the string register, and a pushbutton with a fixed caption such as Load this data immediately beside it. The label changes, the button stays put, and the operator pairs them by position, the way an engraved plate pairs with a pushbutton on a hardwired control panel. Below are the behavior rules, the object list, the steps, a worked layout example, and the two tests that release the screen.

What is fixed and what can change

Three behaviors set the design.

The pushbutton caption is written in the editor. The runtime has no call that rewrites a caption, so a plain pushbutton cannot carry a name the operator saves later.

The Dynamic Text field is the part that changes. It displays ASCII string data stored in PLC memory, its tag is the first address of that string, and the project can trigger its update from a button status or from ladder logic status. The same variable-text technique applies when embedding a PLC variable in an HMI message string, so a saved name can also travel inside a banner message on another screen.

The layout rules are strict. The editor refuses a text object placed over a pushbutton, pushbuttons cannot be transparent, and the Dynamic Text object has no transparent setting either. A frameless Dynamic Text field works, and that is what lets the label read like the plate beside a real button.

So the layout is decided: two objects per data set, one label and one button, side by side.

What you need

  • The panel editor project open on the screen that carries the saved-data controls.
  • The first address of the string register where each name is written, and the character count the save routine reserves. The Dynamic Text tag points at that first address.
  • The saved data itself and its home in the panel or PLC. Storing PLC data on an HMI panel for later retrieval is its own subject.
  • One pushbutton per data set, wired to the action that selects and loads that set.
  • One Dynamic Text field per data set.
  • A test value that differs between data sets, so you can tell which set actually loaded.

Six saved data sets on one screen means 12 objects, so plan the space before placing anything.

Steps

  1. Cap the name length and fix the store. Decide the longest name you accept; 16 characters is a workable cap on a compact panel. Have the save routine write every name as ASCII into consecutive registers starting at one fixed address. The write side is the same store used when passing a recipe name from the HMI to a PLC variable.
  2. Add the Dynamic Text object and set its tag to that first address. Size the field for the longest name you allow, and set the frame off so the label reads like a plate.
  3. Place the pushbutton immediately beside the field and give it a fixed, action-oriented caption: Load this data. The caption names the operation; the changing name lives in the field next to it.
  4. Wire the button to the action that selects and loads its data set. The press must drive the same selection register the load logic reads. The binding of a visible name to the action behind it is the whole point of the pairing, and other operator interfaces build it the same way: PHV buttons there open the saved chart you select.
  5. Trigger the field refresh from logic. Update the label from the same ladder logic that changes the selection, or from the button status when the selection changes only by touch.
  6. Repeat for each data set and keep every pair in one row, with the same gap between label and button on each row.

Example

A packaging line keeps three saved settings for three carton sizes. Operators name each setting at the text entry, 16 characters maximum, and the panel sits 2 ft from the operator's working position.

Letter height. The FHWA planning figure allows 30 ft of viewing distance per inch of letter height, and 20 ft per inch is the safer ratio for fast reading. The labels are block capitals, so letter height and capital height match, and the safe ratio at 2 ft asks for 2 ft ÷ 20 ft/in = 0.1 in letters.

Label width. A monospaced character cell is typically about 0.6 in wide per 1 in of letter height, so 16 characters need 16 × 0.06 in = 0.96 in of text. Add 0.12 in of padding at each end and the field is 0.96 in + 0.24 in = 1.2 in wide.

Object count. Three settings need three fields and three buttons, 6 objects in three rows, with a 0.4 in gap between label and button.

Result. The operator saves the name Carton B, waits 3 seconds for the refresh, and the frameless field beside Load this data shows Carton B in 0.1 in letters, legible at 2 ft. The press behind that button loads the Carton B registers, and the same three rows work for every name the operators save.

Why the overlay workaround fails

The tempting shortcut is to draw your own button: a bitmap that looks like a button, with changing text over it. On this panel class the path is closed twice. The editor refuses a text object over a pushbutton, so the label cannot sit on the bitmap, and a bitmap is built in advance, so it cannot contain a name the operator has yet to type. Every possible name would need its own image before anyone saves it, which only works when the name list is fixed and small.

Drop the shortcut and build the two-object row. Write the restriction into the project notes so a later edit does not reintroduce an overlapping layout.

How to check it worked

  • Save a test name at the text entry and wait 3 seconds. The frameless field shows that name. If it still shows the old text, the tag address is wrong or the refresh has no trigger.
  • Press the adjacent Load this data button and compare the loaded values against the saved set, value by value. The display test and the load test are separate tests: a passing display confirms the field reads the register, and only the value comparison confirms the load.
  • Repeat with a second saved name. The label and the loaded data must change together. If the label follows the new name and the loaded values stay with the old set, the button drives a fixed address, and the mapping needs correcting before the screen goes back in service.
  • If the field shows numbers where letters belong, the registers hold packed integer words and the data needs converting; displaying ASCII from integer words has its own fix on this site.

A screen that displays one name and loads another will put the wrong settings into a running line, so keep the screen out of service until display and load agree on both test names.

Recommendation

Recommendation: On a panel whose pushbutton captions are design-time text, build one Dynamic Text field and one fixed-caption pushbutton per saved data set, size every field for the longest name you allow, and trigger the label refresh from the same logic that selects the data set. Keep each pair in one row with a fixed gap, so the operator reads the name and the command as one control. If your editor offers a button object with a dynamic caption or a text list, use that object and keep this two-object row for the panels that lack it.

Questions

Can a current panel editor change a pushbutton caption at runtime?

Some newer editors offer a button object whose caption follows a text list or a string register. If the object palette in your software has one, use it and retire the two-object layout on that screen. Panels of the generation described here have no such object, and on those the Dynamic Text field beside a fixed-caption button stays the supported way to show a saved name.

The Dynamic Text field shows numbers instead of the name. What is wrong?

The Dynamic Text object expects ASCII bytes starting at the tag address, and the registers it points at hold packed integer words. Point the tag at the string storage the save routine writes, or convert the values to ASCII first. Displaying ASCII when the PLC string data arrives as integer words has its own article on this site.

Can one button serve every saved data set?

Yes, if the project selects the data set first. Point the Dynamic Text field at the selector's name register and keep a single button captioned Load this data. The label then shows whichever set is selected, and one press loads that set. With one button there is no wrong button to press; the operator reads the label, then the press loads the set that label names.

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