1. Problem Overview
When integrating a SIMATIC S7-1200 CPU with a SINAMICS S120 drive via PROFINET and the SINA_POS (FB284) library block, the most common commissioning failure produces three coupled symptoms:
- The SINAMICS S120 reports
F07220in its fault buffer. - The
SINA_POSinstance reportsError = 5(drive fault), thenError = 6(switching on inhibited), and finallyFaultAct = 1C34on each new attempt. - Acknowledging with FN on the S120 only clears the drive-side fault momentarily; the next SINA_POS execution re-triggers it within one second.
The combination is almost always traceable to one of three configuration defects: a missing PROFINET partner-port assignment, an unassigned or incorrect telegram-111 hardware identifier (HWID), or a missing control-word enable in STW1. This reference walks through each layer, in the order that must be verified.
Error = 5 and should be ruled out before further debugging.2. Required Hardware and Software Stack
| Component | Value used in the documented case | Notes |
|---|---|---|
| Controller | SIMATIC S7-1200 CPU 1214C DC/DC/DC | FW V1.0 — end-of-life branch |
| Drive | SINAMICS S120 (Control Unit + Line Module + Motor Module) | Configured with STARTER / Startdrive offline |
| PROFINET telegram | Standard telegram 111 | HWID 279 on the S120 in this configuration |
| Library block | SINA_POS (FB284) | S7-1200 variant from Siemens library |
| Engineering tool | TIA Portal V13 / V14 (compatible with FW 1.0 CPU) | HW configuration & symbol mapping |
| Drive tool | STARTER (or Startdrive) | Drive topology and enable logic |
The PROFINET telegram 111 is a Siemens-specific, position-control oriented standard telegram containing two 16-bit control words (STW1, STW2), two 16-bit status words (ZSW1, ZSW2), a 32-bit speed setpoint, a 32-bit actual speed, and a 32-bit position setpoint/actual pair. It is the default selection when using the SINA_POS library because the block expects that exact PZD layout.
3. F07220 — Fault Code Analysis
F07220 on the SINAMICS S120 family belongs to the controller-level fault group. In the S120/S150 List Manual (LH1), it indicates a configuration or enable-logic violation within the control sequence and is most often triggered when:
- The drive receives a closed-loop enable (
p0840, OFF1) without the corresponding pulse enable (p0850, drive enable / inverter enable). - The PROFINET partner port on the S120 side is configured but the S7-1200 port has not been assigned as the IO controller.
- Smart Line Module (SLM) or Active Line Module (ALM) pre-charge and DC link readiness is incomplete when the drive enable arrives.
- Word
STW1bits 0–3 are toggled in an order that violates the S120 state machine (e.g., ON/OFF1 = 1 before the drive has reached "Ready to switch on").
The fault is recoverable (Acknowledgeable), which matches the behavior reported: pressing FN on the S120 clears the buffer, but the fault re-appears on the next SINA_POS pulse because the underlying enable sequence is still wrong.
4. SINA_POS (FB284) Error State Machine
The Error and FaultAct outputs of SINA_POS form an internal state machine. The sequence reported in the source — Error 5, then Error 6, then Error 5 with FaultAct = 1C34 hex — maps as follows:
SINA_POS Error
|
Meaning | Typical trigger |
|---|---|---|
| 0 | No error / done | Successful completion |
| 5 | Drive fault | F07220 or any other active drive fault read via ZSW1 |
| 6 | Switching-on inhibited active | OFF1/OFF2/OFF3 present; STW1.0 and pulse enable not yet aligned |
| 7 | Drive not ready | Line Module not ready, encoder not initialised, or DC link not charged |
The FaultAct output carries the decoded fault/cause word from the SINA_POS internal buffer. 0x1C34 decomposes as:
- High byte
0x1C= drive is in "Switching on inhibited" because the OFF1/OFF2 chain is open. - Low byte
0x34= the SINA_POS has detected thatZSW1.0 / ZSW1.1 / ZSW1.2do not match the requested enable sequence.
This pattern is the SINA_POS equivalent of "the drive was commanded to run but never reached the run state", and it is the most common response when the partner port on one side of the PROFINET IO is missing.
5. Root Cause #1 — Missing PROFINET Partner Port
The user confirmed that the original error 5 / error 6 cycle was resolved by defining the partner port on both the CPU and the S120 in TIA Portal. This is the single most common first-time integration mistake on S7-1200 to S120 links.
CPU side (IO Controller)
- In the TIA Portal device view, open the S7-1200 CPU Properties → PROFINET interface.
- Assign the PROFINET device name of the S120 Control Unit (the name configured in STARTER / Startdrive) as the IO device in the topology editor.
- In Topology view, right-click the S120 port → Assign partner port → select the matching port on the CPU (port 1 in this case).
Drive side (IO Device)
- In the S120 STARTER project, the Control Unit's PROFINET interface must have the device name assigned exactly as set in the TIA Portal project (case-sensitive, including hyphens).
- If using an SLM/ALM in the same rack, the Line Module's PROFINET interface must also be assigned a partner port, even if no cyclic data is exchanged with it.
FaultAct values in the 1Cxx range.6. Root Cause #2 — Telegram 111 and HWID 279
The PROFINET slot carrying telegram 111 on the S120 is what SINA_POS writes STW/ZSW through. If the HWID in the FB284 call does not match the slot assigned by TIA Portal, SINA_POS reports drive faults even though the drive is healthy.
Confirming the HWID
- Open the device view in TIA Portal → S120 Control Unit → Properties → PROFINET IO → Module parameters.
- Locate slot 1 (or whichever slot carries telegram 111). The Hardware identifier field shows the HWID — 279 in the documented case.
- Pass this value to the FB284 inputs
LaddrSP(setpoint) andLaddrAV(actual value). Both inputs must reference the same HWID for telegram 111 because send and receive PDUs share the slot.
// SINA_POS FB284 call wiring (illustrative)
#SINA_POS(LaddrSP := 279, // HWID for telegram 111 - setpoint
LaddrAV := 279, // HWID for telegram 111 - actual value
ModePos := 1, // 1 = relative positioning (test)
Enable := TRUE, // FB284 enable
Execute := "Tag_Execute_Toggle",
RejTrvTsk:= TRUE,
IntMStop := TRUE,
Pos := 1,
Neg := FALSE,
Jog1 := FALSE,
Jog2 := FALSE,
FlyRef := FALSE,
AckFault:= "Tag_Ack",
Velocity:= 1000.0,
OverVAD := 100.0);
7. Root Cause #3 — STW1 Enable Signal
Even when the PROFINET link and telegram 111 are correct, the drive will reject any positioning command if STW1 does not carry the expected enable pattern. The S120 expects the following sequence, applied in order:
| Step | STW1 bits | Hex pattern | Effect on drive state |
|---|---|---|---|
| 1 | Bit 10 = 1 (control by PLC) | 0x0400 | Drive accepts PROFINET control |
| 2 | Bit 0 = 1 (ON/OFF1) | 0x0401 | Drive transitions to "Ready to switch on" |
| 3 | Bit 1 = 1 (OFF2 clear) | 0x0403 | Drive transitions to "Switched on" |
| 4 | Bit 2 = 1 (OFF3 clear) | 0x0407 | Drive transitions to "Operation enabled" — pulse enable permitted |
| 5 | Bit 3 = 1 (inverter enable) | 0x040F | Drive reaches "Run" and accepts motion commands |
SINA_POS internally drives these bits via STW1 when the Enable input is set; however, the block also depends on the application setting STW1.Bit15 if the configured drive profile uses it as "External pulse enable" or "Slave-to-slave enable". A common configuration in STARTER is to map STW1 bit 15 to the parameter p0850 via the bit-3-to-p0850 linkage; if the bit is not set in the SINA_POS internal image, the drive never reaches "Operation enabled", and F07220 is logged the next time the drive tries to close the pulse enable.
Diagnostic path
- In TIA Portal, place a watch table on the SINA_POS instance DB and inspect
SinaPos.sxSendBuf.sxSTW1at runtime. - Confirm bits 0, 1, 2, 3 are all
1beforeExecuteis pulsed. - If bit 3 is
0even afterEnable = TRUE, the drive has not signalled readiness inZSW1— this is typically a Line Module (SLM/ALM) readiness issue.
8. Step-by-Step Commissioning Procedure
The following sequence, executed in order, resolves the F07220 / FaultAct 1C34 combination in the vast majority of S7-1200 + S120 integrations.
-
Verify CPU firmware / library compatibility. CPU 1214C FW V1.0 only supports the legacy SINA_POS block (FB284 with
V1.xtoV2.xinternals). Upgrade the CPU firmware or downgrade the SINA_POS library version if TIA Portal installed a newer block. - Assign PROFINET partner port on both sides. Topology view in TIA Portal + PROFINET device name in STARTER / Startdrive must match.
-
Configure telegram 111 with HWID 279 (or whatever value your slot configuration yields). Pass it to
LaddrSPandLaddrAV. -
Validate enable logic in STARTER:
-
p0840(OFF1) must be sourced fromr889.0(PROFINET STW1 bit 0). -
p0852(OFF3) must be sourced fromr889.2(STW1 bit 2 inverted). -
p0850(pulse enable) must be sourced fromr889.3(STW1 bit 3) AND the inverter enable bit configured in the expert list.
-
-
Check the Line Module: If using a Smart Line Module, confirm
r863.0(Line Module ready) is fed into the drive enable chain. The drive will refuse to close the pulse enable until the DC link is charged. -
Place SINA_POS in test mode first. Use
ModePos = 0(speed control) withExecuteas a toggle bit to confirm that the basic enable sequence closes. IfError = 0and the motor responds, the PROFINET and enable wiring is correct. -
Move to relative positioning (
ModePos = 1), then absolute (ModePos = 2), then homing (ModePos = 4). Only progress when the previous mode is stable. -
Monitor
FaultActcontinuously in a watch table. Any non-zeroFaultActpoints to the block's internal cause buffer — decode via the SINA_POS documentation table.
9. Speed Control Test Mode (Recommended First Validation)
The discussion recommended the following wiring for the initial test before any position-mode operation. This is the recommended pattern because it bypasses encoder and reference-point dependencies and verifies only the enable + PROFINET chain:
| SINA_POS input | Test value | Reason |
|---|---|---|
| ModePos | 0 | Speed control, no encoder dependency |
| RejTrvTsk | 1 | Reject traverse task on rising edge of Execute |
| IntMStop | 1 | Intermediate stop — drive stops but stays in operation |
| Pos / Neg | 1 / 0 | Direction selection for jog/test run |
| Jog1 / Jog2 | 0 / 0 | No jog mode in this test |
| FlyRef | 0 | No flying reference |
| AckFault | Tag reset | Fault acknowledge on rising edge |
| Execute | Toggle bit | Avoid continuous re-triggering |
| Positioning | 0 | Speed mode |
| Velocity | Variable (e.g. 500 rpm) | Safe initial speed |
| OverVAD | 100.0 | 100% override of velocity / accel / decel |
| LaddrSP / LaddrAV | 279 | Telegram 111 HWID |
If the drive accelerates to the requested speed under this wiring without raising F07220, the PROFINET partner port, telegram HWID, and STW1 enable chain are all confirmed correct. Subsequent steps can then build position control on top of a known-good foundation.
10. Position Modes
| ModePos value | Mode | Prerequisite | Notes |
|---|---|---|---|
| 0 | Speed control (jog) | None | Used for commissioning |
| 1 | Relative positioning | Encoder configured, units consistent | Position values are incremental |
| 2 | Absolute positioning | Reference point set (homed) | Position values refer to machine zero |
| 3 | Setup / setup mode | None | Manual travel for commissioning |
| 4 | Homing / reference point setting | Reference cam / zero mark wired | Run once before absolute positioning |
| 5 | Flying referencing | Master value telegram or equivalent | Used for synchronised axes |
The documented case confirms ModePos = 4 must run before ModePos = 2. Attempting absolute positioning without a successful reference will produce a ZSW1 "referenced" bit of 0, which SINA_POS interprets as a fault and re-arms F07220 on the next cycle.
11. Fault / Symptom Reference Matrix
| Symptom | Likely root cause | First check |
|---|---|---|
| Error 5 immediately on first call | PROFINET link not established / partner port missing | Online & Diagnostics on S120 |
| Error 6 after Error 5 | Switching-on inhibited state held by drive | ZSW1 bits 0, 1, 2, 5, 6 |
| FaultAct = 1C34 hex | Enable pattern in STW1 does not match drive readiness | STW1 Bit 3 and p0850 linkage |
| F07220 only on first Execute | STW1 pulse enable arrives before OFF1 | Re-order Enable inputs in SINA_POS |
| F07220 recurring every 1 second | Line Module not ready / DC link undervoltage | SLM/ALM status and p0860 |
| Drive runs in test mode but fails in position mode | Encoder not referenced or HW limit hit | ZSW1 bit 13 (referenced) and p0410 |
| FB284 Error 1 | PROFINET bus error or telegram mismatch | HWID and slot consistency |
| Drive acknowledges but Error 5 returns | AckFault rising-edge timing or fault persistence in drive | Inspect drive fault buffer detail |
12. Verification Checklist After Repair
- S120 fault buffer is empty after a 60-second idle period.
- SINA_POS
Error = 0andFaultAct = 0for at least one minute in speed control mode. - The drive accelerates, holds, and decelerates without raising
F07220. - Relative positioning (
ModePos = 1) completes withDone=TRUE. - Homing (
ModePos = 4) setsZSW1.13to1and writes a non-zero value tor2521. - Absolute positioning (
ModePos = 2) executes to the requested setpoint and stops within tolerance.
What does F07220 mean on a SINAMICS S120 drive?
F07220 belongs to the S120 controller-level fault group. It is logged when the S120 receives a closed-loop enable (OFF1) without the corresponding pulse enable, when the PROFINET partner port is not configured, when the Line Module DC link is not yet ready, or when STW1 bits 0–3 are toggled in a sequence that violates the S120 state machine. The fault is acknowledgeable, so pressing FN clears the buffer — but it will reappear on the next motion command until the underlying cause is corrected.
Why does SINA_POS report Error 5 first and then Error 6?
SINA_POS reads the S120 fault word at the start of each call. If a drive fault is active (e.g., F07220), it reports Error 5 (drive fault). After acknowledgement the drive enters the "Switching-on inhibited" state, which SINA_POS reports as Error 6. Once the SINA_POS Enable input is held TRUE and Execute is toggled again, the drive will either close the enable chain cleanly (Error = 0) or fail again with the same FaultAct value.
What does SINA_POS FaultAct = 1C34 hex mean?
FaultAct 1C34 decomposes into high byte 0x1C (drive in "Switching on inhibited" because the OFF1/OFF2 chain is open) and low byte 0x34 (ZSW1 status bits do not match the requested STW1 enable pattern). It is the SINA_POS internal label for "the drive was commanded to run but never reached the run state" and is typically the result of a missing PROFINET partner port or a missing STW1 bit 3 (inverter enable).
Which telegram should I use with SINA_POS and what is the HWID?
Use standard telegram 111 for the SINA_POS library block on S7-1200 / S7-1500 controllers. In the documented configuration the HWID of the telegram-111 submodule was 279; pass that value to both the LaddrSP (setpoint) and LaddrAV (actual value) inputs of FB284. The HWID is found in TIA Portal under the S120 Control Unit → PROFINET IO → Module parameters, on the slot that carries telegram 111.
Why does S7-1200 FW V1.0 cause SINA_POS problems?
The S7-1200 CPU 1214C with firmware V1.0 is from the early S7-1200 generation. It only supports the original (legacy) SINA_POS library block. If TIA Portal installs a newer version of SINA_POS into the project, the block may produce Error 5 because its internal interface or state machine differs from what FW V1.0 of the CPU supports. Either upgrade the CPU firmware to a current S7-1200 version or install the legacy SINA_POS library that matches V1.0.
How do I configure the PROFINET partner port between S7-1200 and S120?
In TIA Portal, open the device view and the topology editor. Select the S120 PROFINET port, right-click → Assign partner port, and choose the matching port on the S7-1200 CPU (typically port 1). Then assign the PROFINET device name of the S120 Control Unit from the TIA Portal project to the physical Control Unit using STARTER / Startdrive or the S120 web server. Both sides must agree, and the device name is case-sensitive.
What is the recommended first test before using SINA_POS for positioning?
Use ModePos = 0 (speed control) with Execute as a toggle bit, RejTrvTsk = 1, IntMStop = 1, Pos = 1, Neg = 0, Jog1 = Jog2 = 0, FlyRef = 0, AckFault driven by a separate reset tag, Velocity = a safe rpm value, and OverVAD = 100.0. If the drive runs without raising F07220, the PROFINET partner port, telegram HWID, and STW1 enable chain are all confirmed. Then move to ModePos = 1 (relative), ModePos = 4 (homing), and finally ModePos = 2 (absolute).