Reserve PLC memory for an HMI text panel map without collisions

7 min read · Published November 11, 2026

Reserve seven 16-bit V-memory words, 112 bits in total, at V2400 through V2406 once the cross-reference shows those addresses free. Map F1 through F4 to C340, C341, C342 and C343, confirm both address notations and the data type agree, and test every bit in the PLC monitor before the download and before motion runs.

A text panel that talks to a PLC asks you to reserve a block of controller memory for it. In this setup the panel wants 112 bits. Three decisions settle the job: how many words 112 bits is, which words are safe to take, and how you show the choice is clean before anything downloads. The arithmetic is fixed, because a V-memory word on a micro PLC is 16 bits wide. The placement is a check against the ranges your program already owns. The keys are separate bits, one per function key, and the rung that reads each bit decides whether that key acts momentary or maintained. This article carries one first installation through all three decisions, using V2400 through V2406 for the block and C340 through C343 for the keys, with the monitor tests that close the job out.

How many PLC words hold 112 bits?

Seven 16-bit words. A V-memory word is 16 bits wide on a micro PLC, so the reservation is 112 ÷ 16 = 7 consecutive words, such as V2400 through V2406. A shorter range starves the panel of bits and a longer one spends addresses your program may want later.

The panel counts its reservation in bits, one per function key plus the status flags it exchanges with the controller. Its configuration asks for words, so the number you enter is 7, and the panel turns that back into 112 bits at its end of the link. Write both figures on the setup sheet. A panel software update that changes the reservation size is easier to catch against a written number than against memory.

How does the example map fit beside motion and analog data?

In this example the program already owns V3630 through V3637 for motion control. It also owns eight words, V2000, V2001, V2010, V2011, V2100, V2110, V2300 and V2301, for the analog card. The proposed block V2400 through V2406 clears both with wide margins.

V-memory addresses on this PLC family count in octal, and an engineering page on why V12000 fails when V2000 works walks through that numbering. Compare the addresses as octal numbers, counted from V0000 as word 0. V2301 works out to 2×512 + 3×64 + 0×8 + 1 = 1217. V2400 works out to 2×512 + 4×64 = 1280, so the block starts 1280 - 1217 = 63 words above the last analog word. Motion starts at V3630: 3×512 + 6×64 + 3×8 = 1944. The block ends at V2406, word 1286, which sits 1944 - 1286 = 658 words below the first motion word. The seven words occupy word positions 1280 to 1286, open space between the two users, and none of the sixteen addresses the program already holds falls inside the block.

The margins earn their keep later, because routines grow and a 63-word gap absorbs a small analog expansion with no remap. What the arithmetic clears is the known users; the cross-reference clears everyone else, and that is step 1 of the setup below.

Recommendation: take V2400 through V2406 when the cross-reference shows no reference to those seven words or to C340 through C343, enter the reservation as 7 words at start address V2400, and keep any panel write that feeds a motion setpoint disabled until the monitor tests in this article have passed.

What do you need before you change the memory map?

You need four things ready: a saved backup of the PLC program, a saved backup of the panel project, the PLC programming software with its cross-reference and monitor modes working, and the cable that links the panel to the PLC port.

  • The panel manual page that states the reservation size and the address notation the panel expects on the PLC side.
  • A written record of current use: motion at V3630 through V3637, analog at the eight words above, plus any recipe, alarm or communications ranges already mapped.
  • A confirmed driver. The panel must speak the PLC's protocol on the port you wired, and check the PLC serial protocol before replacing a legacy HMI covers that first step for a controller the panel has never talked to.

How do you set up the panel memory map step by step?

Five steps take the map from a cleared range to a configured panel: show the range unused, zero it, set the panel's start address and word count, match the PLC-side words, and save both projects before anything downloads.

  1. Clear the range in the cross-reference. Search V2400 through V2406, V40610 through V40616 and C340 through C343; a clean result shows no contact, coil, move or compare naming any of them. The list drops duplicate entries after an update, so read it as one entry per distinct use. Open the first-scan and initialization rungs too, because a register can be loaded once at start-up and never appear again as a contact. The memory area table in the CPU specifications chapter of the PLC user manual says what each V range is reserved for, so confirm the block you pick is user data.
  2. Zero the seven words so the panel starts from a known state; clearing a V-memory range with the FILL instruction shows the rung that does it.
  3. In the panel's configuration software, find the reserved-area fields and enter the start address V2400 and the length 7 words, in the notation the panel's own screens ask for.
  4. Set the PLC-side mapping, here V40610 through V40616, and make three things agree: the word count, 7 on both sides; the data type, a plain 16-bit word unless the panel manual names another; and the transfer direction of each field, panel-to-PLC or PLC-to-panel. Matching counts confirm the size, and the notation and data type come from the panel manual's addressing section.
  5. With the machine in a safe state, download the edited PLC program, because the fill rung is a program change, and download the panel project. Keep both backups where they can be restored from.

How do you map the function keys to C bits?

Assign F1 to C340, F2 to C341, F3 to C342 and F4 to C343, four separate control bits, and set each key's action, momentary or maintained, to match the rung that reads the bit.

Separate bits keep the logic honest: the start rung, the stop rung and the menu rung each see exactly one key. A momentary key sets its bit while held and clears it on release, which suits a rung built as a pulse. A maintained key flips its bit on each press, which suits a state the operator toggles. The two have to agree, because a maintained key feeding a pulse-built rung leaves a bit latched on with nothing to clear it and the machine keeps the last command. Search the cross-reference for C340 through C343 here as well, so no existing rung drives one of the four bits from the other side.

How do you test the map before the machine runs?

Test each direction separately in the monitor: change a value on the panel and watch its V word move, press each key and watch only its own C bit set, then release the key and watch the bit clear.

  1. Panel to PLC: enter a value at the panel, open the monitor on V40610 through V40616 and confirm the word you wrote changes. Then watch V3630 through V3637 and the eight analog words and confirm they sit still.
  2. PLC to panel: change one of the words the panel reads from the programming software and confirm the panel display follows.
  3. Keys: press F1 and confirm C340 sets while C341 through C343 stay at 0, then release F1 and confirm C340 clears. Repeat for the other three keys.
  4. Machine functions: with the bits tested clean, run each panel action the machine can safely act on, and hold any write that feeds a motion setpoint disabled until the motion routine itself is under test; test the panel's writes before motion is enabled covers that order.

One safety note belongs here: a key whose rung reaches a motion enable acts the instant its bit sets, so run the key tests in the machine state where an unexpected command can be absorbed.

What should you check when mapped values look wrong?

Check the data type and the address notation first: a 16-bit word read as BCD or with the byte order swapped shows meaningless numbers even while every address in the map is otherwise correct.

The symptoms split cleanly. Nonsense in every field points at data type or byte order, and the narrow case of a BCD register read as binary is worked through in HMI panel shows nonsense numbers from a PLC BCD analog register. A panel that updates nothing while the monitor shows real values points at notation: the panel is writing its words somewhere else, and V40610 through V40616 is simply not the block it names. One dead key beside three working ones points at the key bit assignment inside the panel project, and the cross-reference settles which bit the project actually drives. When values come through but a motion or analog routine starts acting differently, a writer has landed on a range it should not own: restore both backups, find the overlapping writer in the cross-reference, and move the block to a fresh seven words with the same checks.

Decision order when a remap misbehaves: data type first, then notation, then the key bits, then block placement, with a restored backup as the fastest way back to a known machine.

Questions

Can two function keys share one C bit?

Yes, and then the PLC logic has no way to tell which key was pressed: F1 and F2 both driving C340 makes the rung react to either key. Share a bit only where the program genuinely wants an OR of two keys, such as a common acknowledge from two stations, and give every other key its own bit so the rest of the logic stays readable.

Why does every example in the manual use the same addresses?

Publishers code the examples in a manual with one small set of addresses so the chapters stay consistent with each other, and those are exactly the values a first-time programmer copies onto a real machine. Copy the example's format, meaning address style and field layout, and pick the actual values from your own cross-reference.

How do you catch a pointer write the cross-reference misses?

An instruction that computes its destination at run time appears in the cross-reference under the pointer register, never under every address it can reach. Search the program listing for instructions that move an address into a pointer, work out the range the pointer can cover, and if your seven words fall inside it, move the block and rerun the search.

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