Troubleshooting SINAMICS S200 Homing with S7-1200 MC_Home Mode 7

David Krause14 min read
SiemensTIA PortalTroubleshooting
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

Problem Overview

A common failure mode when commissioning a SIMATIC S7-1200 (or S7-1200 G2) controlling a SINAMICS S200 PN servo drive over PROFINET is that the absolute encoder is treated as if it had no persistent position memory. After every power-off / power-on cycle, the application requires a re-homing routine before it can issue MC_MoveAbsolute commands. Engineers typically observe:

  • The drive powers up, the encoder LED is solid green, but the Technology Object (TO) reports HomingDone = FALSE or AxisHomed = FALSE.
  • Calling MC_Home with Mode 7 does not latch a valid absolute position; the TO returns to the un-homed state on the next STOP -> RUN.
  • In Startdrive > S200 PN > Parameterization > Technology Functions > Basic Positioner > Homing > Absolute Encoder Adjustment, the SET button is greyed out in offline mode and the page requires the drive to be online.
  • As soon as the project goes online, TIA Portal collapses the Basic Positioner node and displays the diagnostic: "no basic positioner function" (German: "keine Basic-Positionier-Funktion").
  • Telegram 3 has been selected and the drive has been added as a TO under Technology > Positioning Axis with encoder type "Absolute rotary" (the cyclic absolute option is intentionally not available).

This article explains why the S200 PN behaves this way, what the correct configuration on the S7-1200 side looks like, and the field-proven procedure to recover a project that has been pushed into an inconsistent state by attempts to use the EPOS page.

Root Cause Analysis

Why "No Basic Positioner Function" Appears

SINAMICS S200 PN is a servo drive intended to be controlled cyclically by a SIMATIC controller through a PROFIdrive telegram. The drive does not implement a run-time Basic Positioner (EPOS) function block in the PROFINET device variant. The EPOS pages in Startdrive (and the corresponding parameters p2585, p2590, p2617, etc. that exist on SINAMICS S120 / S210 / V90 PN) are present in the parameter tree only as a placeholder inherited from the GSDML definition. As soon as the project is brought online, the Startdrive plug-in hides the Technology Functions > Basic Positioner node and replaces it with the diagnostic message:

Status: no basic positioner function

Any attempt to write a SET offset to p2525 from the EPOS page is therefore rejected by the drive. The absolute position is derived not from the drive's EPOS, but from the encoder itself, by the Technology Object running inside the S7-1200. The S7-1200 reads the absolute value on demand through Telegram 3 and latches it with MC_Home Mode 7.

The Real Job of MC_Home Mode 7

Mode 7 of the Motion Control instruction MC_Home is "Absolute Encoder Adjustment (Absolute)". Its purpose is to read the absolute position from the encoder (or drive telegram) on the first call after the drive is ready, and from that single reading, establish the position of the axis in user units. After a successful Mode-7 call, the TO considers the axis absolutely homed and no further homing is required as long as power is not removed from the encoder (and the encoder has not lost its absolute reference, e.g. by a battery-low condition on third-party encoders or a mechanical shock above the limit).

For MC_Home Mode 7 to succeed, the Technology Object must know the encoder's multiturn range. This is held in the instance DB of the TO under:

Axis_1.Sensor[1].Parameter.DeterminableRevolutions   // DWORD, e.g. 4096
Axis_1.Sensor[1].Parameter.DeterministicZero        // BOOL
Axis_1.Sensor[1].Parameter.DistancePerRevolution    // LREAL, user units per rev

If DeterminableRevolutions is 0 or wrong, the TO cannot validate the absolute value returned by the drive and the homing routine either returns an error (typical: 0x8001 "Homing error") or silently reverts the axis to the "not homed" state on every restart.

Critical: MC_Home Mode 7 must be called from the S7-1200, not from a drive-side EPOS page. The S200 PN has no EPOS, so any reference to "Basic Positioner" in Startdrive is a dead end on this device family.

Affected Hardware and Firmware

Component Article Number Required FW / Version
S7-1200 CPU 1211C / 1212C / 1214C / 1215C / 1217C 6ES721x-1xxxx-xxxx Firmware V4.5 or higher (stable Mode 7)
S7-1200 G2 CPU 1212G / 1214G / 1215G (second generation) 6ES721x-1xx10-xxxx TIA Portal V20 + Startdrive V20
SINAMICS S200 PN (servo drive) 6SL551x-xxxxx-xxx Firmware V6.1 or higher
SIMOTICS S-1FK2 / 1FS2 motor with absolute multiturn encoder 6SL50xx-xxxxx-xxx 22-bit singleturn + 12-bit multiturn = 4096 revolutions
TIA Portal + Startdrive (classic) 6AV2xxx / 6SL5xxx DVD V18 SP1 or higher
PROFINET cable (Type C) 6XV1870-5Bxxxx —

The S200 PN GSDML is named GSDML-V2.3x-Siemens-SINAMICS_S200_PN-xxxxxxxx.xml and is installed together with Startdrive. For the S7-1200 G2 lineup, the matching application example is available on the Siemens support portal as a configuration package.

Prerequisites

  1. A complete TIA Portal project with the S7-1200 CPU and the S200 PN drive inserted from the catalog (not via GSDML, unless you specifically need the GSDML-based speed control example from the Siemens support manual SINAMICS S200 PN speed control with SIMATIC S7-1500 using GSDML).
  2. The drive must be commissioned at least once with the Startdrive plug-in: motor selected, encoder identified, current and speed limits set, drive Operation enabled.
  3. Telegram 3 (or Telegram 5 / 6 for IRT or extended setpoints) selected in the device configuration of the drive.
  4. The drive must be set to "Control via PROFINET" (p922 = 1) and "Setpoint via PROFINET" through Telegram 3.
  5. The encoder type on the TO must be set to "Absolute rotary". The S200 PN does not expose a cyclic absolute value over PROFINET; the absolute value is read on demand when MC_Home Mode 7 is called. The "Cyclic absolute" option in TIA Portal is grayed out for the S200 PN precisely because the drive does not broadcast a continuous absolute value.

Step-by-Step Recovery Procedure

Step 1 - Verify Drive Telegram and Assignment

  1. Open the device view of the S200 PN in TIA Portal.
  2. Open Properties > PROFINET interface > Telegram configuration.
  3. Confirm Telegram 3 is selected. If a different telegram has been used, the encoder slot assignment is different and the TO will not read the absolute value.
  4. Open the Technology Object Axis_1 in the project tree.
  5. Open Configuration > Hardware interface > Drive. Confirm the Telegram selected here matches Telegram 3 and the IO addresses are the ones wired to the S7-1200 process image.

Step 2 - Configure the Encoder on the TO

  1. In the Technology Object, open Configuration > Mechanics.
  2. Set Encoder type = Absolute rotary (NOT "Cyclic absolute"). The S200 PN only supports the on-demand absolute value, not a continuously broadcasted one.
  3. Open Configuration > Encoder.
  4. Enter the following values:
Parameter Value (example) Meaning
Sensor[1].Parameter.DeterminableRevolutions 4096 Multiturn range (12-bit for AS20D / 1FK2)
Sensor[1].Parameter.DistancePerRevolution 360.0 User units per mechanical revolution (360 for degrees)
Sensor[1].Parameter.EncoderType Absolute rotary —
Sensor[1].Parameter.StepsPerRevolution 1 For rotary, set to 1 when using floating-point units

For a 1FK2 or AS20D motor, the multiturn range is 4096 revolutions. If the motor has a different multiturn range (e.g. 65536 for some 1FS2 / 1FT7 retrofits), adjust DeterminableRevolutions accordingly. The reference value is in the motor data sheet, in the field "Number of revolutions that can be resolved".

Step 3 - Call MC_Home Mode 7 Once on First Start-Up

In OB100 (warm restart) or once after the first MC_Power.Done = TRUE, call:

// SCL example
"Axis_1_Home"(
    Axis           := "Axis_1",
    Execute        := TRUE,
    Mode           := 7,        // Absolute Encoder Adjustment (Absolute)
    Position       := 0.0,      // Position value to be set at the home location
    Done           => "Axis_1_Home_Done",
    Busy           => "Axis_1_Home_Busy",
    CommandAborted => "Axis_1_Home_Aborted",
    Error          => "Axis_1_Home_Error",
    ErrorId        => "Axis_1_Home_ErrorId"
);

Wait for Done = TRUE or check the StatusWord. A successful Mode 7 call sets Axis_1.StatusWord.X13 (HomingDone) = TRUE permanently for the current absolute reference. After Mode 7 has been executed successfully once, it should not be re-called every cycle. The TO remembers the offset internally. A typical field-proven pattern is to call Mode 7 only on the first start-up, latched by a retentive flag in a global DB:

IF NOT "FirstRun_Homing_Latch" AND "Axis_1".StatusWord.X0_PowerOn THEN
    "Axis_1_Home".Execute := TRUE;
    "Axis_1_Home".Mode    := 7;
    "Axis_1_Home".Position:= 0.0;
    IF "Axis_1_Home".Done THEN
        "FirstRun_Homing_Latch" := TRUE;   // persistent in a retentive DB
    END_IF;
END_IF;

Step 4 - Do NOT Navigate to the Basic Positioner Page

Once the project is verified to work, do not attempt to access:

Startdrive > S200 PN > Parameterization > Technology Functions > Basic Positioner

This page exists in the parameter tree as a placeholder, but it is not functional on the S200 PN. Opening it online will hide the subtree and show "no basic positioner function". The correct location for absolute encoder adjustment is the TO on the S7-1200 side, as covered in Steps 2 and 3 above.

Note: For a complete two-axis / leading-axis configuration example, see the Siemens application example Configuring technology objects with the SIMATIC S7-1200 G2 and SINAMICS S200 in TIA Portal. It documents two S200 drives, one position-controlled, the other acting as a leading axis, and confirms that all positioning and homing is performed via PLC-side TOs, not via drive-side EPOS.

Step 5 - Recover a Corrupted Project

If the TIA Portal project is in an inconsistent state (Telegram 3 cannot be re-assigned, the TO references a missing sensor, the plug-in keeps reverting changes, or the S200 device has become "locked" by an attempted online write to the EPOS parameters), the field-proven recovery is to delete the S200 PN device and the Technology Object entirely, and re-insert them from the catalog. Configure the drive first, download only the drive configuration, then configure the TO and download the S7-1200 program. This is the procedure that resolved the original case:

  1. In the project tree, right-click the S200 PN device and choose Delete.
  2. Right-click the TO Axis_1 under Technology Objects and choose Delete.
  3. Open Devices & networks > Add new device > SINAMICS S200 PN from the catalog.
  4. Open Technology Objects > Add new > Positioning Axis > TO_Axis_1.
  5. Re-wire the TO to the new S200 PN device, then re-run Steps 1 to 3 of this procedure.

Verification

  1. Cold start test 1 - Power off the S200 PN, wait 30 s, power on. The PLC should not request a re-homing. MC_MoveAbsolute to position 180° should execute without any error and the axis should reach 180° on the first try.
  2. Cold start test 2 - Power off the S7-1200 only, leave the drive powered. The PLC should still not request a re-homing once it re-boots.
  3. Encoder fault test - Disconnect the encoder cable while the drive is powered. Reconnect, cycle power. The PLC should request a re-homing only if the encoder lost its absolute reference (red Encoder LED on the drive). The Homing state on the TO should transition from HomingDone = FALSE to HomingDone = TRUE after one MC_Home Mode 7 call.
  4. TO diagnostic view - In TIA Portal online > Technology Object > Diagnostics, the value of ActPosition should match the mechanical position in user units to within the encoder resolution. The HomingDone bit should be set.
  5. Watch table - In online > Watch & Force tables, monitor Axis_1.StatusWord.X13_HomingDone. The bit must remain TRUE across a STOP -> RUN of the PLC.

Common Error Codes and Remedies

Error Code Meaning Remedy
0x8001 Homing error - encoder could not be read Check Telegram 3 selection, check encoder cable, verify DeterminableRevolutions
0x8002 Homing mode not supported with this encoder type Use Mode 7 only for absolute encoders; use Mode 5 for incremental
0x8011 DeterminableRevolutions out of range Set to 1, 4096, 65536 etc. depending on motor data sheet
0x8012 Encoder configuration inconsistent Verify the encoder is "Absolute rotary" in TO and not "Cyclic absolute"
0x8020 Drive not ready Wait for MC_Power.Done before calling MC_Home
0x80B0 Telegram assignment error Check Telegram 3 selection in both the S200 and the TO; re-assign IO addresses

Cross-Platform Notes

  • S7-1500 / S7-1500T - The same MC_Home Mode 7 procedure applies. The TIA Portal views are slightly different, but the underlying parameter remains TO.Actor.Sensor[1].Parameter.DeterminableRevolutions.
  • S7-1200 G2 - The procedure is identical; the only change is that TIA Portal V20 is required and the Startdrive version is V20. The S7-1200 G2 hardware uses the same PROFINET telegram structure, so Telegram 3 and MC_Home Mode 7 are unchanged.
  • SINAMICS V90 PN - The V90 PN does support Basic Positioner (EPOS) over PROFINET in firmware V1.x and above, so the "no basic positioner function" diagnostic does not occur. The MC_Home Mode 7 procedure is still valid for the V90 PN when an absolute encoder is fitted.
  • SINAMICS S210 - The S210 also does not support EPOS in PROFINET mode. The procedure is the same as for the S200 PN. The same caveat applies to the S210 with high-feature motors from the 1FK2 / 1FS2 family.

Related Configuration Pitfalls

  1. Cyclic Absolute vs Absolute Rotary - If "Cyclic absolute" is selected in the TO encoder configuration but the drive does not broadcast an absolute value (which is the case for the S200 PN), the axis will fail to home and the encoder value will read 0. Always select "Absolute rotary" for the S200 PN.
  2. Multiturn Range Mismatch - The S200 PN motors of the AS20D family have 4096 revolutions. Some third-party multiturn encoders have 65536 or 8388608. If the wrong value is set, the absolute position will appear valid for a few revolutions and then jump by 360° every time the encoder crosses a multiturn boundary.
  3. Retentive Latch for First MC_Home Call - Mode 7 should be called only once, on the first start-up. Calling it every scan can cause inconsistent values if the drive is in the process of recovering from an encoder error or if Telegram 3 was just re-assigned.
  4. Telegram Mismatch - The TO in TIA Portal references an IO address pair for the encoder. If Telegram 3 is changed to Telegram 1, 5, 6, 7, 9, 25, etc., the address pair changes. The TO must be re-configured to match.
  5. Power-On Sequence - The PLC must be in RUN and the drive must be in Operation enabled (r899.0 = 1) before MC_Home is called. A common bug is to call MC_Home from OB100 without waiting for MC_Power.Done.
  6. Drive Name and IP Address - After re-inserting the S200 device, the IP address and PROFINET device name are reset to the catalog defaults. Both must be re-assigned to match the project, otherwise the PLC will report IO device failure at run-up.

Summary

The "no basic positioner function" message in the S200 PN Startdrive plug-in is not a configuration error, it is a structural feature of the S200 PN: the drive does not implement EPOS. Absolute homing must be performed on the controller side using MC_Home Mode 7, with DeterminableRevolutions set to the encoder's multiturn range (4096 for the standard 1FK2 / AS20D motor). When the project is corrupted by an attempt to use the EPOS page, the cleanest recovery is to remove and re-insert the S200 PN device and the TO. After that, the axis will hold its absolute position across power cycles without any further homing. For a 2-position rotary table (0° and 180°), the rotary table is homed once at commissioning with Mode 7 and Position = 0, and subsequent motion is performed with MC_MoveAbsolute to Position = 180.0.

Why does TIA Portal show "no basic positioner function" on my SINAMICS S200 PN?

The S200 PN does not implement the Basic Positioner (EPOS) function when used as a PROFINET drive. The Startdrive plug-in hides the EPOS page and shows the diagnostic message as soon as the project goes online. Absolute homing must be performed by the S7-1200 Technology Object using MC_Home Mode 7.

What value do I set for DeterminableRevolutions on the TO for an AS20D or 1FK2 motor?

For AS20D and 1FK2 motors with the standard absolute multiturn encoder, set DeterminableRevolutions to 4096 (12-bit multiturn). For motors with a higher multiturn range, set it to the documented value (e.g. 65536 for some 1FT7 / 1FS2 variants). Setting it to 0 will prevent MC_Home Mode 7 from completing successfully and the axis will revert to un-homed on every power cycle.

Why does my S200 PN lose absolute position after every power cycle?

Either the encoder is incremental (not absolute), or the Technology Object is misconfigured. The most common causes are: encoder type set to "Incremental" instead of "Absolute rotary", DeterminableRevolutions set to 0, or Telegram 3 not selected in both the drive and the TO. Verify the encoder is absolute in the motor data sheet and that MC_Home Mode 7 has been called at least once after download.

Do I need to call MC_Home Mode 7 every PLC scan?

No. Call it once on the first start-up, latched by a retentive bit in a global DB. The Technology Object remembers the absolute offset internally. Re-calling Mode 7 on every scan can produce inconsistent values if the drive is recovering from an encoder fault or if the Telegram 3 IO addresses have just been re-assigned.

Can I use MC_Home Mode 6 instead of Mode 7 for the absolute encoder?

Mode 6 is "Absolute Encoder Adjustment (Relative)" and writes a relative offset to the current absolute value. Mode 7 is "Absolute Encoder Adjustment (Absolute)" and is the correct choice for a cold start. For a 2-position rotary table with positions 0° and 180°, Mode 7 with Position = 0 is the correct choice for the first start-up; subsequent absolute moves to 180° use MC_MoveAbsolute.

Back to blog