When the panel offers no runtime text-entry object, operators cannot type recipe names. Give every recipe a number, keep that number as the PLC selection value, and show a fixed label for each number in the panel project. Pack letters into retentive registers, two characters per register, only when operators truly need free-form names, and only after a stored name survives a power cycle.
A small HMI panel without a runtime text-entry object gives an operator no way to type letters, and nothing you build in the project changes that. The design that works the same day is numeric. Give every recipe a number, keep that number as the value the PLC uses to select the recipe, and show a fixed text label for each number from the panel project. The operator enters 12 and the screen reads PART A 1500. If operators genuinely need to type their own names, the one solid path is to pack characters into retentive PLC registers, two characters per 16-bit register, and rebuild the text on screen. That path is a second project and it releases only after a stored name survives a real power cycle. Both designs follow, with the register arithmetic worked out for a 32-recipe set.
Check for a documented text-entry object first
One large HMI vendor documents direct entry in its runtime manual: select the object, double-click in it and type, and the text goes into the object. That is the feature the whole question turns on, and it is easy to check. Open the project software on your PC, set the target to your exact panel model, and read the object palette. A text-entry object appears there if the runtime has one, with its own page in the manual.
If the object is there, place it, point it at the name field your PLC holds for each recipe, and skip the rest of this page. If it is not there, no project trick produces it. An update can only add features the runtime was built to draw, so read the release notes after any update and then re-read the palette. What a small panel nearly always has is fixed text, lookup text driven by a value, and a numeric entry object. Those three carry everything below.
Keep three kinds of text separate as you plan. The project draws fixed labels. The operator types runtime text, where the panel allows it. The PLC stores the recipe and, in the second design, its name. A screen can show a name the PLC never stored, which is why the naming scheme has to live where the recipes live.
What you need
- The HMI project software for your panel, with the panel selected as the target.
- The PLC program open, with the register that selects a recipe identified: address, data type, and whether it is retentive.
- The recipe list, one line each: number, the name the process knows it by, the label operators should see.
- The PLC manual pages for the retentive memory range: which registers hold their values through power loss, what backs them, and the retention time the manual states.
- An ASCII table showing printable codes 32 to 126.
Number every recipe and show a fixed label
- Number the recipes in the PLC. Give each recipe a permanent ID, 1 upward. For a set of 32, the largest value 32 needs 6 bits, because 2^6 = 64 covers every value to 63, and one 16-bit register holds it with room to 65535, so the same register still serves the set when it grows past 64 recipes. Make the register retentive if the machine should return in its last selected recipe after a power cut.
- Place a numeric entry object on the panel and point it at that register. Set the project's entry limits to 1 and the recipe count, so the worst an operator can enter is a real recipe number.
- Check the number in the PLC anyway. Run the value through limit logic before the recipe-load step and hold the last valid recipe when the value is out of range, the same way you cap a recipe entry value in the PLC when the keypad allows 9999. Add a no-recipe flag bit the panel can display.
- Draw the label from the number. Drive a text list, the panel's lookup text, from the selection register so the screen shows the matching name, and give every entry its own string: two IDs sharing one string is the setup that produces duplicate HMI lookup text on the screen. If the project has no lookup text, draw one labeled button per recipe. That works to about a dozen choices and stops being practical well before 30.
- Load recipes by number only. The number is the key; the label is decoration. You can edit a label any afternoon from the project software, the same job as renaming a recipe button label without a download, but never renumber a recipe operators already run, and never change what a number means in the PLC program and in the label list at different times.
The split is the usual one on these panels: the panel shows and the PLC decides, the same rule as doing the sum in the PLC when the panel has no math functions. It gives operators an unambiguous way to identify every recipe the day you download it, and it is the version to release first.
Worked example: 32 recipes with 16-character names
Inputs. Recipe count 32, the round case of the 30-plus set a small plant typically asks for. Name length capped at 16 characters, a design choice for this example, picked to fit one line on a small panel. Packing rule: two characters per 16-bit register. Selection storage: one 16-bit retentive register. ASCII printable codes 32 to 126, seven bits each, from any ASCII table.
Rule. One printable character fits in 7 bits, so two fit in the 16 bits of one register. Pack a pair as first code x 256 + second code. Decode by integer division: the quotient of register / 256 is the first character, the remainder is the second.
Arithmetic. Registers per name: 16 / 2 = 8. Registers for the set: 32 recipes x 8 = 256 retentive registers. Selection: IDs 1 to 32, largest value 32, which needs 6 bits because 2^6 = 64, held in one 16-bit register rated to 65535. Sample pack, first two characters of PART A 1500: P is code 80, A is code 65, so the register holds 80 x 256 + 65 = 20480 + 65 = 20545. Decode check: 20545 / 256 = 80 remainder 65, which reads back PA. A blank name is the space code twice in every register: 32 x 256 + 32 = 8224.
Result. 256 retentive registers hold every name, plus the one selection register: 257 registers in all. The panel project holds a 32-entry text list, or 32 fixed labels.
Decision. Read the retentive range in the PLC manual. If it confirms 256 or more free retentive registers, build the name storage. With fewer, cap names at 8 characters, which halves the storage to 4 registers per name and 128 in all, or release numbers and labels and leave name storage out.
Store custom names in retentive registers, two characters at a time
Build this only when operators must enter names the fixed list cannot cover. A character-cycling keypad on a small panel needs a cursor, a character set, insert and delete, write sequencing and a decode-and-display routine, all assembled from ordinary objects. It is slow to use on a 3-inch screen and it becomes a second project to maintain for the life of the machine. Set the limits first: 16 characters maximum, the permitted character set, the space code 32 as the pad for unused positions, and no name edits while the recipe-load bit is active.
Then confirm the memory. Start from what retentive means on an HMI panel and in the PLC behind it, then read the PLC manual's memory map. Store names only in the range the manual marks retentive, and note what backs it: battery-backed RAM holds values while the battery is within its stated life; flash or EEPROM-backed ranges hold them with the power off. Leave panel-internal text memory out unless its own manual marks that area retentive; a name parked in ordinary text memory can vanish at restart and take the naming scheme with it.
Keep the machinery in one order: characters to codes, codes packed two per register, registers written, read back, decoded, shown. Keep the numeric ID as the recipe's load key the whole time, so a garbled name string can never select the wrong recipe. Numbers and labels stay the released design until every check below passes.
Test the set before release
- Step through every recipe number on the panel and confirm the label on screen matches the recipe the machine actually loads. Do it in a safe state, on test product or none, because the load logic really runs.
- Enter 0 and one number above the count. The PLC holds the last valid recipe and the no-recipe flag shows.
- Enter a 16-character name, commit it, power the PLC down by the plant's normal shutdown, wait, power up. The name comes back character for character.
- Restart the panel as well and confirm the label list returns intact.
- Blank one name, commit, power-cycle, and confirm it shows as a blank line with no leftover characters.
- Attempt a name edit while a recipe load runs, if your interlock permits the attempt, and confirm the load wins and the edit is rejected or held.
Recommendation: release numbers and fixed labels as the plant's recipe naming, and start the packed-character project only when operators must type names the fixed list cannot cover, the PLC manual confirms 256 or more free retentive registers for a 32-recipe set with 16-character names, and a stored name has survived a power cycle on your bench.
Questions
Can a firmware update add text entry to a panel that lacks it?
Expect no. A runtime either includes a text-entry object or it does not, and an update can only add features the runtime was built to draw. After any update, read the release notes, then check the object palette in the project software for your exact panel model. Until a text-entry object actually appears there, run the numeric design.
How many recipe name characters fit in one 16-bit register?
Two. Printable ASCII runs from code 32 to code 126, seven bits a character, so one register holds the first code x 256 plus the second, well inside its 0 to 65535 range. A 16-character name takes 8 registers, and naming 32 recipes takes 256 registers, the number to confirm against the retentive range in the PLC manual. Exclude codes below 32; they are control characters, not printable text.
How long does a stored recipe name survive with the power off?
As long as the manual states for that memory. Battery-backed RAM holds register values while the battery is within its stated life, often several years at room temperature; flash or EEPROM-backed ranges hold with no battery at all. Read the retention figure for your register range, change the battery on the schedule the manual prints, and prove it with a power-cycle test before release.
Should the number or the label select the recipe?
The number, always. The label is project text you can rename, translate or duplicate; the numeric ID is the value the PLC load logic switches on. If a screen label and the loaded recipe ever disagree, the number wins, and the fix is to correct the label in the project. Renumbering a recipe that operators already run is the change to avoid.
Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.