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 = FALSEorAxisHomed = 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.
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
- 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).
- 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. - Telegram 3 (or Telegram 5 / 6 for IRT or extended setpoints) selected in the device configuration of the drive.
- The drive must be set to "Control via PROFINET" (p922 = 1) and "Setpoint via PROFINET" through Telegram 3.
- 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
- Open the device view of the S200 PN in TIA Portal.
- Open Properties > PROFINET interface > Telegram configuration.
- 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.
- Open the Technology Object Axis_1 in the project tree.
- 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
- In the Technology Object, open Configuration > Mechanics.
- Set
Encoder type = Absolute rotary(NOT "Cyclic absolute"). The S200 PN only supports the on-demand absolute value, not a continuously broadcasted one. - Open Configuration > Encoder.
- 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.
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:
- In the project tree, right-click the S200 PN device and choose Delete.
- Right-click the TO Axis_1 under Technology Objects and choose Delete.
- Open Devices & networks > Add new device > SINAMICS S200 PN from the catalog.
- Open Technology Objects > Add new > Positioning Axis > TO_Axis_1.
- Re-wire the TO to the new S200 PN device, then re-run Steps 1 to 3 of this procedure.
Verification
-
Cold start test 1 - Power off the S200 PN, wait 30 s, power on. The PLC should not request a re-homing.
MC_MoveAbsoluteto position 180° should execute without any error and the axis should reach 180° on the first try. - 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.
-
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 = FALSEtoHomingDone = TRUEafter one MC_Home Mode 7 call. -
TO diagnostic view - In TIA Portal online > Technology Object > Diagnostics, the value of
ActPositionshould match the mechanical position in user units to within the encoder resolution. TheHomingDonebit should be set. -
Watch table - In online > Watch & Force tables, monitor
Axis_1.StatusWord.X13_HomingDone. The bit must remainTRUEacross 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
- 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.
- 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.
- 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.
- 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.
-
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 forMC_Power.Done. - 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.