Input mapping means linking each physical input channel (for example %IX0.1) to a meaningful variable (DI_Start_PB). In Automation Builder you type the variable name directly in the module's I/O Mapping tab, which creates a global variable at that address. Safety-related stop devices are wired NC, so their input is TRUE when healthy and FALSE when pressed or when the wire breaks.
- Name inputs by device and function: DI_ + device + function (DI_Start_PB)
- Stop and E-stop are wired NC: TRUE = healthy, FALSE = pressed or broken wire
- Type names in the I/O Mapping tab so the address lives in one place
- Test every input on the real kit and tick it off before writing logic
Readable programs start with readable inputs. A rung that reads DI_Stop_PB AND DI_EStop_OK explains itself; one that reads %IX0.2 AND %IX0.0 needs the drawing open on another screen.
Step 1: Understand NO, NC and PNP Inputs
| Device | Wired as | Input when idle | Input when operated | Why |
|---|---|---|---|---|
| Start push button | NO | FALSE | TRUE | Starting needs a deliberate action |
| Stop push button | NC | TRUE | FALSE | A broken wire must stop the machine, like a press |
| E-stop (via safety relay) | NC healthy contact | TRUE | FALSE | Fail-safe: loss of signal = stop |
| Auto/Manual selector | Two NO contacts | one TRUE | other TRUE | Both FALSE or both TRUE = selector fault |
| PNP proximity sensor | 3-wire, switches +24 V | FALSE | TRUE (target present) | Matches sourcing sensors and sink inputs |
| MPCB auxiliary | NO, closed when healthy | TRUE | FALSE when tripped | Healthy feedback, not a fault contact |
Name the variable after what TRUE means. DI_EStop_OK is TRUE when healthy; never call it DI_EStop, which leaves the reader guessing.
Step 2: Try the Inputs on the Simulator
Input mapping simulator
Press and hold Start, press Stop, latch the E-stop and switch Auto. Watch how NC devices go FALSE when operated.
Green contact = passing power. Orange moving wire = rung is true and the output is energised.
Notice that the Stop button uses a normally open contact symbol in the ladder even though the device is NC. The contact asks “is the input TRUE?”, and a healthy NC button gives TRUE.
Step 3: Enter Input Names in the I/O Mapping Tab
- Open the CPU onboard I/O node and select the I/O Mapping tab.
- In the Variable column of DI0, type
DI_EStop_OK. Continue down the list using the table below. - Add a comment/description on each line; it appears in tooltips and printouts.
- Repeat on
DX561_Slot1for its eight inputs. - Build the project. The new names are now available in every POU.
| Tag name | Address* | Channel | Device | TRUE means |
|---|---|---|---|---|
DI_EStop_OK | %IX0.0 | CPU onboard DI0 | Safety relay healthy contact (NC chain) | 1 = healthy |
DI_Start_PB | %IX0.1 | CPU onboard DI1 | Start push button (NO) | 1 = pressed |
DI_Stop_PB | %IX0.2 | CPU onboard DI2 | Stop push button (NC) | 0 = pressed |
DI_Reset_PB | %IX0.3 | CPU onboard DI3 | Fault reset push button (NO) | 1 = pressed |
DI_Auto_Sel | %IX0.4 | CPU onboard DI4 | Selector switch AUTO position | 1 = auto |
DI_Manual_Sel | %IX0.5 | CPU onboard DI5 | Selector switch MANUAL position | 1 = manual |
DI_Jog_Fwd_PB | %IX1.0 | DX561 DI0 | Jog forward push button | 1 = pressed |
DI_Jog_Rev_PB | %IX1.1 | DX561 DI1 | Jog reverse push button | 1 = pressed |
DI_Entry_Sensor | %IX1.2 | DX561 DI2 | Part present at conveyor entry (PNP) | 1 = part |
DI_Exit_Sensor | %IX1.3 | DX561 DI3 | Part present at conveyor exit (PNP) | 1 = part |
DI_MPCB_OK | %IX1.4 | DX561 DI4 | Motor protection breaker aux contact | 1 = healthy |
DI_Contactor_FB | %IX1.5 | DX561 DI5 | Main contactor auxiliary contact | 1 = closed |
DI_Lamp_Test_PB | %IX1.6 | DX561 DI6 | Lamp test push button | 1 = pressed |
DI_Silence_PB | %IX1.7 | DX561 DI7 | Buzzer silence push button | 1 = pressed |
* Addresses shown are the ones Automation Builder assigned on our trainer project. Your project may differ depending on CPU variant, firmware and module order, so always read the actual address from the module's I/O Mapping tab.
Step 4: Test Every Input on the Kit
Once a program is downloaded (Lab 8), log in and open the I/O Mapping tab online. Operate each device and confirm the value changes on the right line. This is the same check done in a FAT on a real panel.
| ID | Check | How to check | Pass criterion | Result |
|---|---|---|---|---|
| Operator devices | ||||
| I-01 | Start PB | Press and hold | DI_Start_PB TRUE only while pressed | |
| I-02 | Stop PB | Press and hold | DI_Stop_PB goes FALSE | |
| I-03 | E-stop | Press, then release + reset relay | DI_EStop_OK FALSE, then TRUE | |
| I-04 | Selector | Turn AUTO / MANUAL | Only one of DI_Auto_Sel / DI_Manual_Sel TRUE | |
| Sensors and feedbacks | ||||
| I-05 | Entry and exit sensors | Hold a part at each sensor | Matching input TRUE, sensor LED on | |
| I-06 | MPCB feedback | Trip the MPCB test button | DI_MPCB_OK goes FALSE | |
| I-07 | Contactor feedback | Force DO_Motor_Run (Lab 10) with motor isolated | DI_Contactor_FB TRUE | |
Practice Exercise
Disconnect the Stop button wire at the terminal (power off first). Power up and check DI_Stop_PB. Explain to your trainer why this behaviour is safer than a NO-wired stop button.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Input LED on, variable stays FALSE | Variable mapped to the wrong channel | Recheck the I/O Mapping line for that channel |
| Input never turns on | Input common not connected / NPN sensor on sink input | Check the group common and sensor type |
| Selector shows both positions TRUE | Wiring error at the selector | Check the two contact blocks |
| Stop works backwards | Button wired NO instead of NC | Rewire as NC; keep the logic unchanged |
Frequently asked questions
How do I map inputs in ABB Automation Builder?
Open the module or onboard I/O node, go to the I/O Mapping tab and type a variable name in the Variable column for each channel. Automation Builder creates a global variable at that address.
Why is the stop button wired NC to the PLC?
So that a broken wire or loose terminal has the same effect as pressing stop. The input is TRUE when healthy and FALSE when pressed or broken.
Should I use the address or the tag name in my program?
Always the tag name. It makes logic readable and keeps the address defined in one place.
What naming convention should I use for PLC inputs?
A prefix for the signal type (DI_), the device and its function, and a suffix that says what TRUE means, for example DI_MPCB_OK or DI_Start_PB.