Resolving S7-1200 MC_Home Mode 3 Rising Edge Invalid Error

David Krause13 min read
Motion ControlSiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

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:

  1. 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.
  2. A tag used as an MC_Home input (most often Position, Mode, or the boolean Execute) 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
On S7-1200 firmware V3.x and earlier, the Technology Object was named Axis rather than PositioningAxis and a different error-code table applies. The 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

  1. Traverse in the configured approach direction at the configured approach velocity until the configured homing switch edge is detected.
  2. Decelerate to the configured creep velocity and continue until the opposite edge of the home switch clears the sensor.
  3. 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.

Removing the rising-edge / falling-edge enable check-boxes in Device Configuration is the correct fix for the specific reported failure. Do not delete the hardware interrupt OB if it exists for other channels; only remove the enable for the channels that the TO consumes.

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

  1. Open TIA Portal → Project tree → Devices & networks → select the S7-1214C.
  2. Open Device view and select the CPU.
  3. In the Properties pane, click DI / Digital inputs.
  4. 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

  1. In the same DI properties view, expand Channel 0 through Channel 2.
  2. Under Inputs, un-check Enable rising edge detection and Enable falling edge detection for the three channels reserved by the axis TO.
  3. Compile (Project → Compile all) and download to the CPU.

Step 3 — Verify Hardware Interrupt OB

  1. Project tree → Program blocks → confirm whether a hardware interrupt OB exists (e.g., OB40 – OB47).
  2. 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

  1. Project tree → Technology objects → PositioningAxis_1 → Configuration → Hardware interface.
  2. Confirm Drive signal type = PTO (Pulse Train Output) on the correct CPU output pair.
  3. 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

  1. On each MC_Home call, hover the parameter; the tooltip shows the expected type.
  2. Open the PLC tag table and the instance DBs. Match every MC_Home.Position to a REAL or LREAL tag.
  3. Match Mode to an INT constant (3) or to a tag typed as INT.

Step 6 — Recompile and Download

  1. Project → Compile all → Software (rebuild all blocks).
  2. Download to the target device, STOP → RUN.
  3. Online → Monitor & force → observe the MC_Home instance DB.

8. Verification Procedure

  1. Power on the axis with MC_Power.Enable = TRUE. Confirm Status = 3 (Standstill) on the instance DB.
  2. Issue a one-shot rising edge on MC_Home.Execute. Observe Busy = TRUE.
  3. 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.
  4. Read MC_Home.ActualPosition — value should equal HomePosition within encoder/PTO resolution.
  5. Trigger the high-limit switch during a manual jog — axis must stop with error ID 0x8029 and require MC_Reset.
  6. Cycle power. The axis is now homed; a subsequent MC_MoveAbsolute with the same Position must 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.Busy with a 30 s timeout and force an MC_Stop if exceeded, then an MC_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).

Back to blog