1. Problem Summary
On a Siemens SIMATIC S7-1214C DC/DC/DC controlling a stepper-driven linear axis through a PTO (Pulse Train Output) interface, calling MC_Power followed by MC_Home with Mode = 3 produces a Technology Object configuration error and refuses to release the axis. The diagnostic buffer reports "the rising edge address is invalid", while the homing function block returns error code 0x8003. The PLC program is structurally correct (single MC_Home call with the appropriate instance DB), the three 24 V sensors (HW-limit-low, HW-limit-high, home switch) are wired to onboard digital inputs, and the Technology Object (TO) PositioningAxis has been configured with all three sensor addresses filled in. The error does not appear at compile time; it appears the first time the axis attempts to transition from Disabled to Standstill.
This is a configuration conflict between the Technology Object and the CPU's Device Configuration, not a wiring fault. It almost always traces to one of two conditions:
- The same onboard digital input that the Positioning Axis TO has already reserved for a hardware limit, software limit, or homing switch has been re-reserved in the CPU Device Configuration as the event source of a hardware interrupt OB (rising-edge or falling-edge detection enabled) that is not actually attached to any OB in the program.
- A tag used as an
MC_Homeinput (most oftenPosition,Mode, or the booleanExecute) has a mismatched data type — typically a 32-bit tag passed where a 16-bit BOOL is expected, or a DINT written into a REAL parameter slot.
The first cause is by far the most common on S7-1200 Motion Control projects that mix Process Interrupts with TO configuration on the same DI channel. See the Siemens reference at Siemens Support entry 109747174 — Homing – Active (Positioning axis technology object V4) for the canonical Mode = 3 documentation.
2. Affected Hardware and Software Versions
| Component | Value used in this case | Notes |
|---|---|---|
| CPU | SIMATIC S7-1214C DC/DC/DC | Firmware V4.x, Positioning axis TO V4 |
| Drive interface | PTO on onboard outputs Q0.0 (PUL) / Q0.1 (DIR) | Stepper driver PUL/DIR |
| Stepper | 2-phase NEMA, 1.8° step | Driven via PUL+/PUL-, DIR+/DIR- |
| Encoder option | None (open-loop PTO, no encoder feedback) | Position derived from issued pulses |
| Sensors | 3 × 24 V PNP inductive / optical | HW-LSW-low, HW-LSW-high, Home (mid-track) |
| DI channels used | I0.0, I0.1, I0.2 (board inputs) | 24 V DC, Type 1 per IEC 61131-2 |
| Engineering | TIA Portal V16 / V17 / V18 | S7-1200 Motion Control library V4.0+ |
| Firmware update path | Supported up to V4.6 on 1214C | See Siemens Online Support |
Mode = 3 semantics, however, are identical from V3.0 onward. The diagnostic message wording ("rising edge address is invalid") is consistent across V3.0 – V4.6.3. Active Homing Mode 3 — Functional Reference
Active homing with Mode = 3 is the documented Siemens procedure for S7-1200 axis reference traversal. The motion sequence is started by the MC_Home instruction; the PLC does not write any discrete output to the drive for the home reference itself. The TO fully owns the travel, the deceleration on the home switch, and the coordinate reset. Reference: Siemens Support entry 109011420 — Active homing (STEP 7 V13.1) and the TIA Portal manual S7-1200 Motion Control — Homing.
3.1 Motion Sequence for Mode = 3
- Traverse in the configured approach direction at the configured approach velocity until the configured homing switch edge is detected.
- Decelerate to the configured creep velocity and continue until the opposite edge of the home switch clears the sensor.
- Stop at the configured
HomePosition; the TO sets the axis coordinate to that value. The axis state becomes Standstill / Homed.
3.2 MC_Home Parameter Set
| Parameter | Direction | Data Type | Meaning (Mode = 3) |
|---|---|---|---|
| Axis | IN | TO_Axis_PTO (instance DB) | Instance of the Positioning Axis TO |
| Execute | IN | BOOL | Rising edge starts the homing travel |
| Mode | IN | INT (or DINT) | 3 = Active homing |
| Position | IN | REAL (LREAL on V5+ libs) | Target absolute position after homing |
| Busy | OUT | BOOL | 1 = homing in progress |
| Done | OUT | BOOL | 1 = axis is homed and at position |
| CommandAborted | OUT | BOOL | 1 = command aborted by another instruction |
| Error | OUT | BOOL | 1 = error during homing |
| ErrorID | OUT | WORD | Error code (e.g., 0x8003, 0x8004, 0x8029) |
3.3 MC_Power — Prerequisite State
The axis must leave the Disabled state before homing is accepted. MC_Power with Enable = TRUE transitions the axis to Standstill (enabled but stationary). The homing command is then accepted.
| Axis state before MC_Home | MC_Home accepted? | Remediation |
|---|---|---|
| Disabled | No | Re-issue MC_Power.Enable = TRUE
|
| Standstill (enabled) | Yes | Proceed |
| Discrete Motion / Continuous Motion | Yes, aborts current motion | Plan for the abort |
| Error | No | Execute MC_Reset first |
| Homing (in progress) | Yes, aborts in-progress homing | Re-issue with new edge |
4. Root Cause: Double Digital Input Reservation
On S7-1200 firmware V4.x, every digital input channel referenced by a Technology Object (axis homing switch, hardware limit switch low, hardware limit switch high, or reference point switch for an external encoder) is reserved internally to the motion control subsystem. The input channel is then no longer available as a general-purpose DI, and — critically — the channel cannot also be the event source of a hardware interrupt OB unless the OB is the one consumed by the motion control logic itself.
The CPU rejects this configuration at the first call to MC_Home with a Technology Object configuration error and surfaces the message "the rising edge address is invalid" because the address the TO is asking the CPU to attach to its rising-edge event is either:
- Not in the process image of the CPU at all (because the channel has been disabled by another reservation), or
- Already claimed by a hardware interrupt OB (e.g.,
HW_INT_0/OB40) that the user added in Device Configuration → DI → Channel → Rising edge / Falling edge → "Hardware interrupt" without attaching any OB to that event.
This matches the original observation that the channel had edge detection enabled but no hardware interrupt OB was added. The TO cannot find a valid edge source for the homing switch, so it refuses to release the axis and emits the configuration error.
5. Secondary Cause: Data Type Mismatch
If the configuration is correct and the error persists, the next most likely cause is a data type mismatch on an MC_Home input parameter. The instruction expects Position as a floating-point value. If you pass an INT or DWORD from a HMI tag, the instruction writes a non-finite value into the axis homing target and rejects it with 0x8003.
| Parameter | Expected Data Type | Common Mistake | Symptom |
|---|---|---|---|
| Execute | BOOL | INT or BOOL array element with offset | Command never starts |
| Mode | INT (or DINT) | REAL or BOOL | Error 0x8003 |
| Position | REAL (LREAL on V5+) | DINT or INT | Error 0x8003 or value ignored |
| Axis | DB instance of TO | Wrong DB or multi-instance | Error 0x8001 |
The diagnostic procedure for both root causes is identical — see Section 6.
6. Diagnostic Procedure with GET_DIAG
The Siemens recommended procedure for resolving "configuration error" messages on Motion Control is to call GET_DIAG from the instruction's instance DB. Reference: Siemens FAQ 75167627 — S7-1200 Motion Control diagnostic FAQ.
6.1 Sample GET_DIAG Call
// Cyclic OB1 - after MC_Home instance DB
IF "Axis_Home_DB".Error THEN
"Diag_RetVal" := GET_DIAG(
LADDR := "Axis_Home_DB".HardwareAddress, // from TO configuration
CHANNEL := 0,
ALL_INFORMATION := TRUE,
DIAG := "Diag_Variant"
);
END_IF;
6.2 Error Code Mapping (MC_Home Context)
| ErrorID (hex) | Meaning (MC_Home context) | Most Likely Cause |
|---|---|---|
| 0x8001 | Axis not enabled | MC_Power not called or Enable = FALSE |
| 0x8002 | Axis in error state | Run MC_Reset, then MC_Power |
| 0x8003 | Homing configuration invalid | Mode not supported or homing switch address invalid |
| 0x8004 | Mode not supported by axis type | Encoder-only axis with Mode = 3 |
| 0x8029 | Hardware limit reached during approach | Limit switch wiring or approach direction wrong |
| 0x8040 | Absolute move requested before homing | Run homing first |
| 0x80B0 | Homing switch not found in travel range | Sensor wiring or approach velocity too high |
| 0x80C1 | Homing direction reversed by limit | Reverse approach direction in TO |
The reported case maps to 0x8003 "homing configuration invalid" with the supplementary text "rising edge address is invalid." The full structured record in the diagnostic buffer is what GET_DIAG surfaces.
7. Step-by-Step Resolution
Step 1 — Confirm the Affected Inputs
- Open TIA Portal → Project tree → Devices & networks → select the S7-1214C.
- Open Device view and select the CPU.
- In the Properties pane, click DI / Digital inputs.
- Note the channel numbers used by the TO: e.g., I0.0 (HW limit low), I0.1 (HW limit high), I0.2 (homing switch).
Step 2 — Remove Redundant Edge Configuration
- In the same DI properties view, expand Channel 0 through Channel 2.
- Under Inputs, un-check Enable rising edge detection and Enable falling edge detection for the three channels reserved by the axis TO.
- Compile (Project → Compile all) and download to the CPU.
Step 3 — Verify Hardware Interrupt OB
- Project tree → Program blocks → confirm whether a hardware interrupt OB exists (e.g.,
OB40–OB47). - If the only hardware-interrupt OBs in the project are tied to the three reserved inputs, delete those OBs. If they are shared with other channels, edit the OB's startup event in Device Configuration so that the event channel is no longer the axis-reserved input.
Step 4 — Verify TO Configuration
- Project tree → Technology objects → PositioningAxis_1 → Configuration → Hardware interface.
- Confirm Drive signal type = PTO (Pulse Train Output) on the correct CPU output pair.
- Open Homing → Active homing and confirm:
| Field | Value |
|---|---|
| Enable homing | True |
| Home position | 0.0 (units consistent with mechanical reference) |
| Approach direction | Positive / Negative — consistent with sensor layout |
| Homing switch | Configured to a DI not used by limits |
| Active level | High-active (or Low-active) matching sensor wiring |
| Approach velocity | ≤ 10% of MaxVelocity |
| Creep velocity | ≤ 25% of approach velocity |
| Mode selection in MC_Home | 3 (active) |
Step 5 — Correct Any Data Type Mismatch
- On each
MC_Homecall, hover the parameter; the tooltip shows the expected type. - Open the PLC tag table and the instance DBs. Match every
MC_Home.Positionto aREALorLREALtag. - Match
Modeto anINTconstant (3) or to a tag typed asINT.
Step 6 — Recompile and Download
- Project → Compile all → Software (rebuild all blocks).
- Download to the target device, STOP → RUN.
- Online → Monitor & force → observe the
MC_Homeinstance DB.
8. Verification Procedure
- Power on the axis with
MC_Power.Enable = TRUE. ConfirmStatus = 3(Standstill) on the instance DB. - Issue a one-shot rising edge on
MC_Home.Execute. ObserveBusy = TRUE. - The drive traverses in the configured direction. The homing switch (mid-track) triggers the deceleration. The drive stops at the configured
HomePosition.Done = TRUE;Error = FALSE. - Read
MC_Home.ActualPosition— value should equalHomePositionwithin encoder/PTO resolution. - Trigger the high-limit switch during a manual jog — axis must stop with error ID
0x8029and requireMC_Reset. - Cycle power. The axis is now homed; a subsequent
MC_MoveAbsolutewith the samePositionmust land within tolerance.
9. Hardware Interrupt OB vs. TO Reservation — Architecture Detail
The S7-1200 CPU allocates each DI channel to one of three owners at any given time: (a) the standard process image, (b) a hardware interrupt OB, or (c) a Technology Object consumer. The motion control subsystem reads the channel directly via a dedicated fast path and bypasses both the standard process image and the hardware interrupt logic. Once a channel is allocated to a TO, the channel cannot simultaneously serve as the event source of OB40 – OB47; the CPU raises a configuration error on the first attempted homing.
Practical rule of thumb: if a DI is named in the TO under Hardware limit switch, Homing switch, or Probe, leave its Enable rising edge detection and Enable falling edge detection check-boxes cleared. Use hardware interrupt OBs only on DIs that are not consumed by any TO.
10. Best Practices for Homing Configuration
- Reserve axis inputs in the TO only. Do not enable edge detection in Device Configuration for any input that the TO consumes. Edge detection in Device Configuration is intended for general-purpose DIs that drive hardware interrupt OBs.
- Use a separate DI for the home switch if your application needs to debounce or filter the signal in user code; do not double-purpose the limit-switch inputs.
- Configure the home switch in the geometric middle of the travel to minimize approach time when the absolute axis position is unknown at power-on.
- Use Mode 5 (passive homing) at runtime if the absolute home reference does not need to be re-acquired on every start-up and a marker is available from a master or external encoder. Reserve Mode 3 for commissioning and recovery.
- Always run MC_Reset after any axis error before issuing MC_Home; the axis must be in Standstill, not Error.
-
Keep homing velocity low (≤ 10% of
MaxVelocity) to avoid missing the homing switch at high acceleration or with switch bounce. -
Use a watchdog tag in OB1 to monitor
MC_Home.Busywith a 30 s timeout and force anMC_Stopif exceeded, then anMC_Reset. - Document the home position in millimeters (or user units) in the project comments so commissioning engineers do not have to re-derive it from the wiring drawing.
11. Extended Troubleshooting Matrix
| Symptom | Likely Cause | First Action |
|---|---|---|
| "Rising edge address is invalid" | TO input has hardware interrupt OB | Remove edge enable in Device Configuration |
| ErrorID 0x8001 | MC_Power.Enable missing | Verify Enable and Status |
| ErrorID 0x8002 | Axis in error state | MC_Reset, then MC_Power |
| ErrorID 0x8003 | Bad Mode or bad switch address | Verify Mode = 3 and homing switch address |
| ErrorID 0x8004 | Mode not allowed for axis type | Switch to PTO/analog axis type |
| ErrorID 0x8029 | Hardware limit reached during approach | Reverse approach direction or reposition sensors |
| ErrorID 0x80B0 | Home switch not seen in travel | Reduce homing velocity, verify wiring |
| Done never sets | Switch polarity inverted | Invert Active level of homing switch in TO |
| Position drifts each restart | No absolute encoder, only incremental homing | Run Mode 3 on every start-up |
| Axis oscillates at home switch | Approach and creep velocities too close | Reduce creep velocity to ≤ 25% of approach |
12. S7-1200 vs S7-1500 Homing — Brief Comparison
| Aspect | S7-1200 (TO V4) | S7-1500 (TO V5+) |
|---|---|---|
| Homing modes supported | 0, 1, 2, 3, 5, 7 | 0 – 35 (per PROFIdrive profile) |
| Position data type | REAL | LREAL |
| Hardware interrupt OBs on TO DIs | Disallowed | Disallowed |
| Diagnostic via GET_DIAG | Yes (FAQ 75167627) | Yes (extended record set) |
| Recommended firmware | V4.4 – V4.6 | V2.5 – V3.1 |
13. FAQ
What does "rising edge address is invalid" mean on S7-1200 MC_Home Mode 3?
The Technology Object cannot attach a rising-edge event to the homing switch digital input because the channel is already reserved by a hardware interrupt OB or by another device configuration reservation. Disable rising/falling-edge detection in Device Configuration for the inputs used by the axis (I0.0–I0.2 in this case), compile, and re-download.
Which TIA Portal versions support MC_Home Mode 3 on S7-1214C?
Mode 3 active homing is supported from S7-1200 firmware V3.0 onward and from TIA Portal V13 SP1 upward. V4 of the Positioning Axis TO (firmware V4.x) is the most widely deployed variant and is the default in TIA Portal V16, V17, and V18 projects.
How do I read the exact cause of a homing error?
Call the Siemens GET_DIAG function (FAQ 75167627) from a cyclic OB, passing the TO's hardware address and channel index. The returned Diag.Variant contains a structured record with the error code, error source, and channel number.
Do I need a hardware interrupt OB for MC_Home Mode 3?
No. The motion control subsystem handles the homing switch transition in firmware and does not require a user-side hardware interrupt OB. Adding one on the same input causes the configuration conflict that produces this error.
What is the difference between active homing Mode 3 and passive homing Mode 5?
Mode 3 (active) drives the axis to the home switch automatically and is typically run once at start-up. Mode 5 (passive) listens for the home switch during a user-controlled motion and is used for continuous referencing without a full traverse. See the S7-1200 Motion Control manual on the TIA Portal documentation portal at Siemens TIA Portal documentation — S7-1200 homing.
Can I keep edge detection enabled and still use the input for homing?
No. The TO must own the input exclusively; edge detection must be disabled in Device Configuration. If you need edge detection for application logic, route the same physical signal through two parallel DI channels (e.g., one for the TO, one for the application interrupt).