How to build a PLC address map — Turn the groups of the system diagram into partitions and give each number one writer

Last updated: 2026-09-25 / Category: PLC programming, hardware I/O allocation

An address map is the one table that decides which number is used by whom and for what. This guide is for anyone about to allocate PLC numbers, or sharing numbers with the HMI and drawing people.

1. Drawings, programs and screens are connected only by numbers

The drawings, the PLC program and the touch panel know nothing about each other. All that connects them is a number such as X10 or D200. If nobody owns the rules for those numbers, you get numbers that shift after an addition, and two programs writing the same number.

Both are the kind of accident found during commissioning or after the line has started. An address map decides two things: how the numbers are partitioned, and who writes each number.

2. The two decisions an address map makes

① Turn the groups of the system diagram into memory partitions as they are

The first rule: the groups decided in the system diagram — "Station 1", "Robot", "Operator panel" — become the memory partitions as they are. For each group, decide the device and the number of points, including 10 to 20 percent spare. Numbers are assigned inside that partition.

On the left, a system diagram with three devices: operator panel, Station 1, robot. On the right, the memory space X0–X2F split into three partitions with the same names, each with spare at the end. A sensor added to Station 1 goes into Station 1's spare X1C; the robot's partition from X20 does not move.
The devices of the system diagram become the names of the partitions. A sensor added on site goes into that device's spare.

Why it matters — When the physical configuration and the partitions match, an on-site addition stays inside its partition. Add one point to a sequence with no spare and every number after it shifts, and you end up fixing hundreds of references. Partitioned like the system diagram, a sensor added to Station 1 does not move the robot's numbers.

② Give every number exactly one writer

The second rule: declare the writer of each number — "the touch panel writes this partition", "the PLC writes this one". Suppose the touch panel writes the production count to D200, and the program also uses D200 to hold an intermediate result. The count goes wrong now and then, and the screen never tells you which side did it.

Left: two arrows, the touch panel's "production count" and the program's "intermediate result", both write to the same D200 and overwrite each other. Right: the touch panel writes only setpoints in D0–D999 and the PLC writes only actual values in D1000–D1999.
Left: a number without a decided writer. Right: partitions with exactly one writer each.

Why it matters — Overwrite bugs are the hardest to find on site. The value only goes wrong when the two writers happen to collide. With the writer in the table, a collision is found while the numbers are being allocated.

3. Rules for I/O, names and 32-bit values

4. Example partitions — a table of range and writer for each group of the system diagram

The example uses Mitsubishi Electric notation (I/O numbers in hexadecimal). The partitioning works the same on any PLC.

DeviceRangeGroup in the system diagramWriterSpare
X (inputs)X000 - X01FOperator panel switchesWiringLast 8 points
X (inputs)X020 - X05FStation 1 on-machine sensorsWiringLast 16 points; each station starts on a new boundary
Y (outputs)Y000 - Y01FOperator panel lamps and buzzerPLCLast 8 points
Y (outputs)Y020 - Y05FStation 1 solenoid valvesPLCUp to the largest valve manifold
M (internal relays)M0 - M499Operator panel logicPLC20 %
M (internal relays)M500 - M999Station 1 automatic operationPLC100 per step
M (internal relays)M1000 - M1199Commands to the robotPLC20 %
M (internal relays)M1200 - M1399Status from the robotRobot20 %
M (internal relays)M2000 - M2999Faults and alarmsPLCSplit into major and minor faults
D (data registers)D0 - D999SetpointsTouch panelGrouped by product type
D (data registers)D1000 - D1999Actual values and monitoringPLC32-bit values start on even numbers

5. Build in this order: devices → partitions → variables → numbers → check

  1. Take the devices and blocks from the system diagram PLC, remote I/O, robot, and the groups inside them (units, functions). The system diagram is the source.
  2. Allocate a partition and spare for each device Decide the device and the number of points for each block first. The count includes the spare.
  3. Write the writer of each partition Exactly one of PLC, touch panel, robot or wiring.
  4. List the variables inside each partition and assign numbers They come from the rows of the timing chart or the I/O list from mechanical design. Start 32-bit values on even numbers.
  5. Check for duplicates and out-of-range numbers, then hand over to the PLC software Export as device comments or labels. Every change of a number starts in the table and flows from the table into the program and the drawings.

6. Where people trip: hexadecimal counting and numbers outside their partition

Tools for the steps in this article

  • Address Map Editor — For each device received from the system diagram, allocate a device and point count to every block. The allocated range appears as empty rows; type a name and it gets its number. Duplicates and out-of-range numbers are detected automatically, and the map exports as device comments or labels to paste into the PLC software.
  • System Diagram Editor — Draw the devices and blocks, and use them as the containers of the address map.
  • Timing Chart Editor — Draw the order in which the allocated signals change.

No installation, no sign-up. They run in the browser.

Related articles

yk.builds