Troubleshooting Siemens S7-1500 TO103 Drive Configuration

David Krause12 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

Troubleshooting Siemens S7-1500 TO103 "Error in Drive Configuration Adaptation"

TO alarm 103 "Error in drive configuration adaptation" is one of the most disruptive faults encountered on SIMATIC S7-1500 and S7-1500T motion-control projects. It belongs to the configuration error number range (100-199) and, unlike operational faults, it cannot be cleared by toggling enable, power-cycling the drive, or re-downloading individual blocks. The alarm surfaces in the TIA Portal TO commissioning window, blocks axis motion, and on installations with many axes (the typical case is 8 to 24 positioning or synchronized axes) it can immobilise an entire machine after a single network disturbance.

This article provides the diagnostic procedure, the official Siemens acknowledgment method using MC_Reset with Restart = TRUE, and field-proven measures for preventing the fault from re-appearing after PROFINET interruption or runtime reconfiguration.

Alarm class: 100-199 = configuration errors. These alarms indicate an inconsistency between the configured technology object data and the drive / encoder data. Standard error acknowledgement paths (MC_Reset with Restart = FALSE, drive-side fault reset via PROFINET) will not clear the alarm. A technology-object restart is mandatory.

1. Problem Description

The fault is reported in three places simultaneously:

  • TIA Portal online view: TIA Portal > Project tree > Technology objects > [TO name] > Commissioning > Status and error messages
  • PLC diagnostic buffer: technology alarm with the identifier 103 and message text "Error in drive configuration adaptation"
  • HMI alarm view (when the alarm is wired to an HMI tag, typically via the TO.AlarmXxxx status word)

Observable plant behaviour:

  • The affected axis rejects MC_Power.Enable = TRUE or powers up and immediately drops enable.
  • MC_MoveJog, MC_MoveAbsolute, MC_GearIn, and other motion commands return error IDs that map back to the configuration adaptation fault.
  • All motion on the affected Technology Object is blocked until the alarm is cleared.
  • When the trigger is a network interruption, multiple axes (frequently all axes sharing the same PROFINET line) raise the alarm simultaneously.

The Siemens technical documentation entry for this alarm is documented in the S7-1500 / S7-1500T Motion Control alarms and error IDs V7.0 manual and the corresponding V8.0 manual, both confirming alarm number 103 and the acknowledgment path described below.

2. Affected Platforms and Versions

Component Affected / Verified Notes
S7-1500 CPU (T-CPU) All firmware versions >= V2.5 Native Motion Control technology objects (TO_PositioningAxis, TO_SynchronousAxis, TO_ExternalEncoder, TO_Cam, TO_CamTrack)
S7-1500T CPU All firmware versions Same TOs plus TO_Kinematics
Sinamics drives S210, V90 PN, S120 (with Startdrive / HSP) Fault originates in the TO-Drive adaptation handshake, not the drive itself
TIA Portal V15.1 and newer Alarm text identical across versions
Manual reference (V7.0) Edition 06/2022 Number range 100-199, alarm 103
Manual reference (V8.0) Edition 06/2023 Number range 100-199, alarm 103

The alarm has also been reported with SINAMICS S210 drives in Siemens support entry 109781853, where the underlying mechanism is identical: the TO detects a mismatch between the configured drive telegram and the drive actually online on PROFINET.

3. Root Cause

TO 103 is raised when the technology object's drive configuration adaptation step detects an inconsistency. The two underlying classes of mismatch are:

3.1 Configuration mismatch (static)

Data the technology object reads back from the drive (or expects to read back) does not match the data downloaded with the project. Typical items that are checked:

  • Motor type / motor order number
  • Direction of rotation (positive / negative polarity)
  • Encoder type, resolution, and gear ratio
  • Maximum speed, maximum acceleration, maximum jerk
  • Mechanical system (load gear ratio, position tolerance, following error limits)
  • Telegram selection (Standard Telegram 3, 5, 6, 9, Siemens Telegram 10x)

If any of these values diverge between the project, the drive parameter set, and the technology object data block, the TO rejects the assignment and raises 103.

3.2 Runtime mismatch (dynamic)

More commonly seen in production, this class is caused by something that changes the TO's view of the drive between two CPU stop/start cycles or during runtime:

  • PROFINET interruption followed by a substituted device coming back with stale parameters
  • Online modification of the mechanical settings (gear ratio, modulo value) while the axis is enabled
  • Change of the position limit switch polarity or the software position limits during operation
  • Drive firmware update performed without subsequent TO restart
  • Replacement of a drive without re-running the drive configuration wizard
  • HMI-driven writes to the TO data block that violate the configured adaptation rules

In the source incident (19 positioning axes on a single S7-1500T CPU), the trigger was a system-wide network error: all 19 objects went into 103 simultaneously because the PROFINET I/O connection was renegotiated and the drives came back online with parameter sets that the TO considered "changed". This is the canonical network-induced case.

Important: The drive itself may not report any fault (no SINAMICS F-code is raised). The fault is generated by the technology object inside the CPU, not by the converter. Do not chase the fault on the drive diagnostic page; the source of truth is the PLC's TO instance DB.

4. Why the Standard Reset Path Does Not Work

Many operators attempt the following sequence first, and observe that the alarm persists:

  1. Disable the axis (MC_Power.Enable = FALSE).
  2. Call MC_Reset with Restart = FALSE (the standard "acknowledge drive error").
  3. Re-enable the axis (MC_Power.Enable = TRUE).

The Siemens alarms / error IDs manual classifies alarm 103 as an alarm that "can only be acknowledged by performing a technology object restart". The alarm attribute table in both the V7.0 and V8.0 manuals indicates the acknowledgment mechanism is Remove enable, X15, which translates to the MC_Reset with Restart = TRUE command.

Downloading the technology object again (the workaround described in the original report) works only because the download implicitly triggers a reinitialisation of the TO instance DB, which clears the alarm. It is not the intended fix and is destructive to any in-process reference values; the correct API-level fix is described next.

5. Solution: MC_Reset with Restart = TRUE

The Siemens-documented recovery is to restart the technology object through the motion-control API:

  1. Disable the axis by setting MC_Power.Enable = FALSE. Wait for the axis status to report Standstill or to confirm the axis is no longer enabled.
  2. Call MC_Reset with Restart = TRUE while Axis = <axis handle> and Execute = TRUE.
  3. Hold Execute = TRUE for at least one CPU cycle after MC_Reset.Done becomes TRUE.
  4. Re-enable the axis with MC_Power.Enable = TRUE.
  5. Re-issue the original motion command (for example MC_MoveAbsolute).

5.1 Structured Text implementation (SCL)

// Global tag for "error 103 detected" trigger (e.g. derived from TO.StatusWord
// or from the alarm handling OB that picks up the TechnologyAlarm)
IF #iError103Detected THEN
    // Step 1: drop enable
    #iPower.Enable := FALSE;
    #iPowerBusy   := #iPower.Busy;

    // Step 2: wait for axis to report Standstill (optional but recommended)
    IF #iAxisStatus = TO_Struct.StatusStandstill THEN
        // Step 3: issue a TO restart
        #iReset.Restart := TRUE;
        #iReset.Execute := TRUE;
    END_IF;

    IF #iReset.Done THEN
        // Step 4: clear the trigger and re-enable
        #iError103Detected := FALSE;
        #iReset.Execute    := FALSE;
        #iPower.Enable     := TRUE;
    END_IF;
END_IF;

5.2 Ladder logic implementation

// Network 1: detect TO alarm 103 from the technology object status
A   "TO_Axis_1".StatusWord.Error          // axis error flag
A   "AlarmHandler".Alarm103Active         // OR with technology alarm flag
=   #TO103

// Network 2: power-off the axis
A   #TO103
=   "MC_Power_1".Enable                   // FALSE on rising edge

// Network 3: wait for Standstill, then trigger TO restart
A   #TO103
A   "TO_Axis_1".StatusWord.Standstill
=   "MC_Reset_1".Execute
S   "MC_Reset_1".Restart                  // latched, cleared after Done

// Network 4: re-enable once restart is acknowledged
A   "MC_Reset_1".Done
R   "MC_Reset_1".Execute
R   "MC_Reset_1".Restart
S   "MC_Power_1".Enable                   // re-enable axis

5.3 Behaviour of MC_Reset with Restart

Input Value Effect
Execute Rising edge Starts the restart sequence
Restart TRUE Performs a full technology-object restart (required for alarm 103)
Restart FALSE Acknowledges runtime errors only; will not clear 103
Done TRUE TO restart complete; new parameters are now active
Busy TRUE Restart in progress; axis must remain disabled
Error TRUE Restart itself failed (typically persistent configuration mismatch; investigate before retrying)

While the restart is in progress, do not toggle MC_Power.Enable or issue motion commands. Doing so re-arms the alarm path and can leave the axis in an undefined intermediate state.

6. Scaling the Fix to Multi-Axis Systems

On the 19-axis system that motivated this article, the practical implementation is a single routine that loops over an axis array rather than 19 hand-coded blocks:

// Iterate through all TOs registered in the axis array
FOR #i := 1 TO 19 DO
    // Detect alarm 103 on the current axis (read from StatusWord or Alarm handler)
    #bAlarm103 := AxisArray[#i].StatusWord.Alarm103;

    IF #bAlarm103 AND NOT AxisArray[#i].RestartInProgress THEN
        // Disable
        AxisArray[#i].MC_Power.Enable := FALSE;

        IF AxisArray[#i].StatusWord.Standstill THEN
            // Issue TO restart
            AxisArray[#i].MC_Reset.Execute := TRUE;
            AxisArray[#i].MC_Reset.Restart := TRUE;
            AxisArray[#i].RestartInProgress := TRUE;
        END_IF;
    END_IF;

    IF AxisArray[#i].MC_Reset.Done THEN
        AxisArray[#i].MC_Reset.Execute := FALSE;
        AxisArray[#i].MC_Reset.Restart := FALSE;
        AxisArray[#i].RestartInProgress := FALSE;
        AxisArray[#i].MC_Power.Enable := TRUE;
    END_IF;
END_FOR;

For installations that escalate TO restarts to the operator through HMI, expose the per-axis restart button as a separate confirmation dialog that lists which axes are about to be restarted, because a TO restart reinitialises the technology object and clears any latched homing status ("homed" flag is reset on power-down of the TO).

Side effect of a TO restart: the axis loses its homed status. After the restart, the homing procedure (active or passive) must be executed again before absolute positioning commands will be accepted. Plan for this on any machine where TO 103 has been seen during operation, otherwise the machine will fail the next move with "homing required".

7. Verification

After the restart, confirm that:

  1. TO_Axis_X.StatusWord.Error is FALSE on every affected axis.
  2. The alarm number 103 has been removed from the PLC diagnostic buffer (online > diagnostic buffer, filter on technology alarms).
  3. The commissioning window in TIA Portal no longer shows the alarm in red on the affected TO.
  4. Each affected axis has been re-homed (active or passive) before resuming absolute moves.
  5. A single test motion (for example MC_MoveJog in both directions at low speed) executes cleanly without the alarm reappearing.

If the alarm reappears within seconds of MC_Reset.Done = TRUE, the underlying configuration mismatch has not been resolved; jump to Section 9.

8. Preventive Measures

8.1 Lock down dynamic TO writes

If the application writes to TO data block parameters at runtime (for example, recipe-driven gear ratios or speed overrides), those writes must be followed by a controlled TO restart sequence. Uncoordinated runtime writes are the most common field cause of alarm 103.

8.2 Drive replacement procedure

Document a drive replacement procedure that, at minimum:

  1. Powers down the machine section.
  2. Replaces the drive.
  3. Performs a full "Commissioning > Drive" wizard from TIA Portal so the new drive's parameters match the project.
  4. Downloads the project and runs the TO restart on the affected axis.
  5. Re-homes the axis.

8.3 PROFINET robustness

  • Set the PROFINET watchdog on the drives high enough to ride through short topology reconfigurations (typical: 1000 ms for non-safety motion, longer if the segment uses IRT).
  • Use ring redundancy (MRP) or PRP on the motion segment so a single cable break does not require I/O re-negotiation.
  • Disable the "device substitution" mode on the drive ports unless explicitly required; substitution devices will not have the expected parameters and the TO will reject them with 103.

8.4 Avoid online edits of the mechanical configuration

Changing encoder gear ratio, position limits, or direction of rotation in TIA Portal online and downloading only the technology object is a classic trigger. Make these changes offline, then download the entire station (or at minimum the TO and the affected drive) and run a TO restart.

8.5 Audit MC_Reset calls

Search the project for every call of MC_Reset. Confirm that at least one call uses Restart := TRUE and that this call is reachable from the alarm handler that picks up technology alarm 103.

9. When the Restart Fails: Persistent Configuration Mismatch

If the MC_Reset with Restart = TRUE returns Error = TRUE or the alarm reappears within seconds, the cause is a genuine mismatch between project and drive. Walk through the following matrix:

Suspected item Check Fix
Drive telegram mismatch Compare telegram configured on the drive in TIA Portal (Device view > Properties > PROFINET interface > Telegram configuration) with the actual telegram selected in the drive (p0922 for S210, p2079 for S120) Align both sides, download project, restart TO
Motor order number mismatch Compare p0301 of the drive with the motor selected in the TO configuration Re-run drive commissioning
Encoder resolution mismatch Compare p0408 / p0418 of the drive with the encoder settings in TO > Mechanics Re-enter encoder data, download, restart TO
Direction of rotation Compare TO > Mechanics > Direction (positive/negative) with drive p1820 Align both sides; consider a controlled rotation test before production
Drive firmware change Compare drive FW version with the version used when the project was last downloaded Re-import drive GSDML/HSP if needed, re-download project, restart TO
Stale PROFINET device Check the I/O diagnostic for a "device substituted" or "different module inserted" event Clear the PROFINET state, then restart the TO

10. Frequently Asked Questions

Why does alarm 103 not clear with a normal MC_Reset (Restart = FALSE)?

Alarm 103 belongs to the configuration-error number range (100-199) and can only be acknowledged with a technology-object restart, which is triggered by calling MC_Reset with Restart = TRUE. A standard Restart = FALSE only acknowledges runtime errors, not configuration mismatches.

Does a TO restart lose the homed state of the axis?

Yes. A TO restart reinitialises the technology object instance, which clears the "homed" flag. After the restart, the axis must be re-homed (active or passive) before absolute positioning commands will be accepted.

Can I just re-download the technology object from TIA Portal instead?

Re-downloading the project forces a TO reinitialisation, which clears alarm 103. This is the workaround the original report relied on, but it is destructive (any online-modified parameters are lost) and is not the Siemens-documented acknowledgment path. Use MC_Reset with Restart = TRUE instead.

All of my axes raised alarm 103 at the same time after a network glitch. What should I check?

A PROFINET interruption that forces I/O re-negotiation is the typical cause when several or all axes go into 103 together. Verify MRP/PRP redundancy on the motion segment, check for substituted devices in the I/O diagnostic, and confirm that the drive port watchdogs are large enough to ride through the reconnection.

Is the fault generated by the drive or by the technology object?

It is generated by the technology object inside the S7-1500 CPU. The drive itself will not necessarily report an F-code for it. The diagnostic source of truth is the TO instance DB and the PLC's technology-alarm buffer, not the SINAMICS fault memory.

Which Siemens documentation officially covers alarm 103?

The "S7-1500/S7-1500T Motion Control alarms and error IDs" manual, available in both V7.0 (entry 109812061) and V8.0 (entry 109817890) editions, lists alarm 103 with its acknowledgment attribute. The Siemens support entry 109781853 also documents the alarm and the recommended restart procedure.

Back to blog