Problem Overview
When integrating SINAMICS G120 CU250S-2 PN drives with a SIMATIC S7-400 CPU 414F-3 PN/DP for position control using the SINA_POS standard function block in STEP 7 V5.x Simatic Manager, engineers frequently encounter a "no signal" condition between the CPU and the drive. The SINA_POS block compiles, the instance DB loads, the IO addresses 528–551 appear active in the watch table, yet no axis motion occurs and the drive reports no PROFIdrive telegram reception. The same hardware configuration and SINA_POS instance work immediately in TIA Portal, which confirms the issue is not with the drive, the wiring, or the telegram structure, but with how STEP 7 V5.x binds the block to the PROFINET IO device.
This article documents the root causes, configuration procedure, and verification steps required to make SINA_POS operate correctly in Simatic Manager. The discussion is specific to the S7-400 platform (CPU 414F-3 PN/DP) communicating with a G120 CU250S-2 PN over PROFINET using telegram 111 (12 PZD input / 12 PZD output), but the principles apply to any S7-300/400 controller paired with a SINAMICS drive that supports SINA_POS, including G120, G120D, S110, and S120.
System Architecture and Telegram 111 Structure
The reference configuration consists of the following components:
- Controller: SIMATIC S7-400 CPU 414F-3 PN/DP (6ES7 414-3EM07-... or compatible firmware V6.x or later for PROFINET IO Controller functionality)
- Drive: SINAMICS G120 with Control Unit CU250S-2 PN (6SL3246-0BA22-1FA0 or compatible)
- Engineering tool: STEP 7 V5.5 SPx with HSP (Hardware Support Package) for G120 CU250S-2 PN
- Communication: PROFINET IO, real-time class 1 (RT), telegram 111
- Function block: SINA_POS from the SINAMICS S7 Block Library
Telegram 111 is the standard PROFIdrive telegram for positioning applications on SINAMICS drives, defined in the PROFIdrive profile V4.2. It provides 12 words of process data in each direction. The standard mapping of the 12 input and output words is documented in the SINAMICS G120 CU250S-2 List Manual and the PROFIdrive profile specification. The telegram must be selected both in the drive parameterization (p0922) and in HW Config on the PLC side; a mismatch causes the drive to reject the cyclic data exchange and the SINA_POS block to receive zero-valued process data.
Root Cause Analysis: Why SINA_POS Fails in Simatic Manager
The SINA_POS block encapsulates the PROFIdrive state machine for positioning, but it does not contain any direct hardware access code. Instead, it calls the standard system functions DPRD_DAT (SFC14) and DPWR_DAT (SFC15) to read and write the consistent data areas associated with the drive's PROFINET/PROFIBUS slot. These functions require a hardware identifier (HW ID) that uniquely identifies the IO device slot on the PROFINET IO system.
In TIA Portal, the HW ID is exposed as a system constant in the PLC tag table. The engineer drags the drive's system constant into the SINA_POS instance, and the block automatically receives the correct diagnostic address. The constant updates automatically if the device is renamed or repositioned in the device configuration.
In Simatic Manager (STEP 7 V5.x), there is no equivalent system constant mechanism that auto-updates. The engineer must enter the diagnostic address manually in the SINA_POS instance DB or in the input parameter of the block. The most common failure mode occurs when the engineer enters the IO start address (process data base address, e.g., 528 decimal / 0x210 hex) instead of the diagnostic address of the PROFINET slot. The IO start address defines where the process image places the cyclic data, but DPRD_DAT and DPWR_DAT require the diagnostic address of the slot, which is a different value configured in HW Config under the device's properties.
Other root causes that produce identical symptoms include:
- Diagnostic address (HW_ID) entered incorrectly: The IO start address (528 decimal) is entered where the diagnostic address is required. The block compiles, the instance DB loads, the watch table shows the IO toggling because the process image is updated by the PROFINET stack regardless of the application logic.
- Telegram mismatch: The drive parameter p0922 is set to a value other than 111, or HW Config assigns a different telegram to the drive, causing the PROFIdrive state machine in the drive to reject the cyclic telegram.
- SCL source not compiled: The SINA_POS block is distributed as SCL source. If the engineer copies the source into the project but does not compile it (or the SCL compiler is not installed/licensed), the block may not be generated, and a stub FB with no logic replaces it.
- Drive operating mode not set to positioning: The G120 CU250S-2 must be parameterized for "Positioning" mode (p1300 = 21 or equivalent) and the basic positioner must be commissioned (p29200 group) before SINA_POS can control the axis.
- PROFINET device name mismatch: The PROFINET device name assigned in HW Config must match the name programmed into the CU250S-2 PN. A mismatch prevents the cyclic connection from establishing, and the drive's status LEDs indicate a configuration error.
- Non-optimized block access unchecked (TIA Portal case): In TIA Portal, the SINA_POS instance DB must be created with "Non-optimized" (or "Standard") block access so that the absolute addresses referenced by the block's internal code match the process image. In Simatic Manager this concept does not apply, but the instance DB must be generated from the SINA_POS source and must not be overwritten by a user-defined structure that breaks the bit/byte layout.
Prerequisites and HW Identifier Identification
Before configuring SINA_POS in Simatic Manager, verify the following prerequisites:
- STEP 7 V5.5 SPx (or later) with the SCL compiler add-on installed and licensed
- Hardware Support Package (HSP) for the G120 CU250S-2 PN installed, or the GSDML file for the CU250S-2 PN imported manually
- SINAMICS S7 Block Library installed (provides the SINA_POS, SINA_SPEED, SINA_INFEED, and auxiliary FBs)
- G120 CU250S-2 PN with firmware version V4.7 SPx or later (required for telegram 111 positioning mode)
- STARTER commissioning tool or SINAMICS Web Server for drive parameterization
- PROFINET network analyzer (e.g., PRONETA) for diagnostic verification
The SINAMICS S7 Block Library is available from Siemens Support and must be installed into the STEP 7 library directory. The library contains the SINA_POS FB as both a compiled block and an SCL source; the SCL source is provided so the engineer can inspect the implementation or regenerate the block after firmware updates.
Understanding the difference between the IO start address and the diagnostic address (HW ID) is essential to resolving SINA_POS communication failures in Simatic Manager.
| Address Type | Where Configured | Purpose | Used By |
|---|---|---|---|
| IO Start Address (Process Data Address) | HW Config → Device → Properties → I/O Addresses | Defines the byte offset in the process image where the cyclic PZD words appear (input and output ranges) | Direct I/O access (e.g., L PIB 528), process image partition updates |
| Diagnostic Address | HW Config → Device → Properties → Diagnostics | Unique identifier for the PROFINET/PROFIBUS slot, used for consistent data access and diagnostic interrupts |
DPRD_DAT, DPWR_DAT, RD_REC, WR_REC
|
For the SINA_POS block to communicate with the drive, the diagnostic address of the CU250S-2 PN slot must be entered as the HW_ID input of the block (or as the input to the internal DPRD_DAT/DPWR_DAT calls). The IO start address (528 in the reference case) is used only for direct peripheral access, not for the SFC14/SFC15 consistent data functions.
DPRD_DAT will return error code W#16#8090 (address not configured) or W#16#80A0 (negative acknowledge from IO device), and SINA_POS will never receive valid process data.To locate the diagnostic address in HW Config, open the PROFINET IO system, right-click the CU250S-2 PN device, select "Properties", and navigate to the "Diagnostics" tab. The diagnostic address is displayed as a decimal value (e.g., 2046) and is assigned automatically by HW Config based on the slot position. Record this value and enter it as the HW ID parameter in the SINA_POS instance.
SINA_POS Block Parameters and State Machine
The SINA_POS block provides a structured interface for position control. The key input and output parameters are summarized below; the complete list is documented in the SINAMICS S7 Block Library manual.
| Parameter | Direction | Type | Description |
|---|---|---|---|
| EnableAxis | Input | BOOL | Enables the drive's basic positioner; must remain TRUE for the axis to accept motion commands |
| CancelTraversing | Input | BOOL | Cancels the active traversing block; edge-triggered |
| IntermediateStop | Input | BOOL | Stops the axis with the configured deceleration ramp; level-sensitive |
| ExecuteMode | Input | BOOL | Activates the operating mode (e.g., jog, traversing block, direct setpoint) defined by ModePos |
| Execute | Input | BOOL | Starts a direct setpoint job when ModePos = direct setpoint; edge-triggered |
| ModePos | Input | INT | Selects the positioning mode: 0 = relative, 1 = absolute, 3 = jog, 5 = traversing block |
| Position | Input | DINT | Target position in LU (length units), range dependent on p29247 |
| Velocity | Input | DINT | Velocity in LU/min (when using direct setpoint) or % override (when in jog/traversing) |
| Override | Input | DINT | Velocity override; the value is written directly to the telegram's override word |
| HW_ID | Input | WORD | Diagnostic address of the PROFINET/PROFIBUS slot; required by SFC14/SFC15 |
| AxisPos | Output | DINT | Actual position in LU |
| AxisVel | Output | DINT | Actual velocity (signed) |
| AxisStatus | Output | WORD | Status word of the axis; bit assignments are documented in the block header |
| Warn | Output | BOOL | Drive warning active |
| Fault | Output | BOOL | Drive fault active |
| Error | Output | BOOL | Block execution error (e.g., SFC14/SFC15 return code indicates failure) |
| ErrorID | Output | WORD | Block-specific error code or SFC return code |
Internally, SINA_POS packs the control words, setpoint, and override into the 12-word output PZD area and writes them via DPWR_DAT using the HW_ID. It then reads the 12-word input PZD area via DPRD_DAT, unpacks the status words, actual position, and actual velocity, and presents them on the output parameters. If DPRD_DAT or DPWR_DAT fails, the block sets Error TRUE and writes the SFC return code to ErrorID.
The block manages the PROFIdrive state machine transitions: S1 (Switching On Inhibited) → S2 (Ready To Switch On) → S3 (Ready To Operate) → S4 (Operation Enabled). The EnableAxis input drives the OFF1/ON command; the ExecuteMode and Execute inputs drive the operating mode selection and jog/direct setpoint commands. The status of the state machine is visible in AxisStatus and in the drive's r2090 parameter.
Step-by-Step Configuration Procedure
The following procedure configures SINA_POS for a G120 CU250S-2 PN on an S7-400 CPU 414F-3 PN/DP in Simatic Manager.
Step 1: Install the SINAMICS S7 Block Library
- Download the SINAMICS S7 Block Library from Siemens Support article 109763387 (or the current equivalent).
- Extract the archive and run the setup program; the library is installed into the STEP 7 library directory.
- In SIMATIC Manager, open the library and locate the SINA_POS block (FB type) and its associated UDTs.
- Copy the SINA_POS FB, its instance DB template, and the UDT definitions into your S7 program (S7 Program → Blocks).
Step 2: Configure the PROFINET IO System in HW Config
- Open HW Config and add the CPU 414F-3 PN/DP to the rack.
- Open the PROFINET IO interface properties and create the PROFINET network.
- Drag the G120 CU250S-2 PN from the hardware catalog (under PROFINET IO → Drives → Siemens AG → SINAMICS → G120 CU250S-2 PN) onto the PROFINET IO system.
- Assign a unique PROFINET device name to the CU250S-2 (e.g., "g120cu250s1") and a unique IP address.
- Configure the IO addresses: set the input start address to 528 (decimal) and the output start address to 528 (decimal), matching the application's expectation.
- Open the slot properties of the CU250S-2 and navigate to the "Diagnostics" tab; record the diagnostic address (e.g., 2046 decimal). This value is the
HW_IDfor the SINA_POS block. - Assign telegram 111 to the slot: in the device properties, select "Telegram selection" and choose "Standard telegram 111 PZD-12/12".
- Save and compile HW Config.
Step 3: Commission the Drive for Positioning Mode
- Connect to the CU250S-2 PN using STARTER (via PROFINET) or the integrated web server.
- Restore the drive to factory defaults if this is a new installation (p0970 = 1 or use the web server reset function).
- Set the control mode to "Positioning" — for the basic positioner, set p1300 = 21 (closed-loop speed/torque control with positioning) and configure the basic positioner parameter group (p29200 onwards) per the application requirements.
- Set p0922 = 111 to enable telegram 111.
- Commission the basic positioner: configure the mechanical system (p29247 LU per motor revolution, gear ratio p29248/p29249), referencing (p29240 group), and software limit switches (p29250 group).
- Configure the safety functions (STO, SS1) if required by the application; the F-variant CPU supports PROFIsafe integration with the drive.
- Save the parameters to non-volatile memory (copy RAM to ROM via p0977 = 1 or the web server save function).
Step 4: Assign the PROFINET Device Name
- Open PRONETA (or use the web server's "PROFINET device naming" page accessible via the drive's IP address).
- Discover the CU250S-2 PN, right-click, and assign the device name configured in HW Config.
- Restart the drive (power cycle or p0972 = 1) to apply the name.
Step 5: Insert the SINA_POS Block in the S7 Program
- Open OB1 (or a cyclic OB such as OB35) and insert the SINA_POS FB call with an instance DB (e.g., DB100).
- Wire the inputs:
EnableAxis= TRUE for commissioning,ModePos= 3 (jog) for initial motion verification,VelocityandOverride= 50%. - Set the
HW_IDinput to the diagnostic address recorded in Step 2 (e.g., 2046 decimal / 0x7FE hex), NOT the IO start address (528 decimal / 0x210 hex). - Wire the outputs to a watch table or status page for monitoring.
Step 6: Compile and Download
- If the SINA_POS block was inserted as SCL source, right-click the source file and select "Compile". The SCL compiler generates the FB and any dependent UDTs.
- Perform a full compile of the S7 program (Blocks → Compile → All).
- Download the hardware configuration and the S7 program to the CPU.
- Place the CPU in RUN and verify the PROFINET connection establishes (no diagnostic interrupts, green PROFINET LEDs on the CU250S-2).
SCL Source Compilation and DPRD_DAT/DPWR_DAT Integration
The SINA_POS block is distributed as SCL source to allow customization and to keep the block synchronized with SINAMICS firmware updates. If the SCL source is not compiled correctly, the block may not exist in the program, or a stub FB with no logic may be present. Verify the compilation as follows:
- In SIMATIC Manager, navigate to the S7 Program → Sources folder.
- Right-click the SINA_POS source file and select "Compile".
- Check the SCL compiler output for errors. Common errors include:
- Syntax errors from manual edits to the source
- Missing UDT references (the UDTs must be imported into the program before the SCL source is compiled)
- Version mismatch between the SCL compiler and the source (the SCL compiler add-on must be installed and licensed)
- After successful compilation, verify the FB appears in the Blocks folder with the correct number and version.
The SINA_POS block calls DPRD_DAT (SFC14) to read consistent data and DPWR_DAT (SFC15) to write consistent data. The function signatures are:
DPRD_DAT(LADDR := HW_ID, RET_VAL := ErrorCode, RECORD := PZD_Input_Area);DPWR_DAT(LADDR := HW_ID, RET_VAL := ErrorCode, RECORD := PZD_Output_Area);
The LADDR parameter must be the diagnostic address of the PROFINET/PROFIBUS slot, formatted as a WORD. The RECORD parameter is the area in the instance DB where the PZD data is stored. If LADDR is incorrect, the functions return the following error codes:
| RET_VAL (Hex) | Meaning | Remediation |
|---|---|---|
| W#16#8090 | Address not configured | Verify LADDR matches the diagnostic address in HW Config; check that the slot is assigned to the CPU |
| W#16#80A0 | Negative acknowledge from IO device | Check PROFINET connection, device name, IP address, and telegram configuration |
| W#16#80B0 | Error in block access (non-optimized DB required) | Verify the instance DB is created with "Standard" access (in Simatic Manager this is the default; in TIA Portal, uncheck "Optimized block access") |
| W#16#80C0 | Data inconsistency | Check that the RECORD area size matches the telegram length (24 bytes for telegram 111) |
The SINA_POS block internally checks these return codes and surfaces them via the Error and ErrorID outputs. If ErrorID matches one of the values above, the root cause is the diagnostic address or the telegram length, not the application logic.
Verification, Diagnostics, and Troubleshooting Matrix
After configuring and downloading, perform the following verification steps.
Hardware-Level Verification
- Check the PROFINET status LEDs on the CU250S-2 PN. A solid green "LINK" LED and a solid green "RDY" LED indicate an established PROFINET connection.
- In HW Config online view (PLC → Online → Online View), verify the CU250S-2 PN shows "OK" status with no diagnostic interrupts.
- In PRONETA, verify the device is reachable and the assigned name/IP match the configuration.
Drive-Level Verification
- In STARTER or the web server, monitor r2050 (PZD receive) and r2060 (PZD send). Verify the PZD words are changing when the PLC toggles the control bits.
- Check r2090 (PROFIdrive state machine). The drive must transition through the standard states: S1 (ready to switch on) → S2 (ready to operate) → S3 (Operation enabled). If the drive remains in S1, the control word is not being received or p0922 does not match the telegram.
- Check r2135 (status word faults) and r2136 (status word warnings) for active drive diagnostics.
PLC-Level Verification
- In a watch table, monitor the SINA_POS instance DB. Verify:
-
Error= FALSE andErrorID= 0 (block execution successful) -
WarnandFaultreflect the drive status -
AxisStatusbits update as the control sequence progresses
-
- Force
EnableAxis= TRUE andModePos= 3 (jog positive). Verify the axis moves at the configured velocity. - Force
ModePos= 1 (absolute positioning) and set a targetPosition. Verify the axis moves to the target andAxisPosreaches the setpoint.
Online Block Status
- Open the SINA_POS instance DB online and monitor the raw PZD areas. Verify the input PZD area is updating with the drive's actual values and the output PZD area reflects the commanded values.
- If the input PZD area remains zero but the IO addresses in the process image are updating, the issue is in the
DPRD_DATcall (diagnostic address mismatch).
Troubleshooting Matrix
| Symptom | Likely Root Cause | Diagnostic Step | Remediation |
|---|---|---|---|
| IO addresses toggle in watch table, but SINA_POS Error = TRUE, ErrorID = W#16#8090 | Diagnostic address (HW_ID) entered incorrectly; LADDR does not match slot | Open HW Config, check device diagnostic address; compare to HW_ID input | Correct the HW_ID input to match the diagnostic address |
| SINA_POS Error = FALSE, but AxisStatus bits do not change, drive does not move | Telegram mismatch; p0922 ≠ 111 or HW Config telegram ≠ 111 | Check p0922 in drive; check telegram in HW Config slot properties | Set p0922 = 111; reassign telegram 111 in HW Config; download HW Config |
| Drive reports F08501 (PROFIdrive telegram configuration error) | p0922 set to a telegram not supported by the drive, or HW Config telegram inconsistent | Check p0922 and r0922 in drive; check telegram selection in HW Config | Set p0922 = 111; ensure both sides use telegram 111 |
| No PROFINET connection; drive BF LED flashes red | PROFINET device name mismatch | Compare device name in PRONETA with name in HW Config | Assign correct device name; restart drive |
| SINA_POS block does not appear in program; call to FB fails | SCL source not compiled | Check Sources folder; check Blocks folder for SINA_POS FB | Compile SCL source; verify SCL compiler is installed and licensed |
| Drive moves briefly, then faults with F08502 (sign-of-life error) | PROFINET update time too short; PROFINET watchdog triggers | Check PROFINET IO update time in HW Config; check r2065[8] (sign-of-life counter) | Increase PROFINET update time to 2 ms or higher; verify PROFINET network quality |
| AxisStatus operating mode bits do not reflect commanded ModePos | ModePos value not supported; drive not in EPOS mode | Check p1300 in drive; check ModePos value in PLC program | Set p1300 = 21; ensure ModePos is within supported range (0, 1, 3, 5) |
| Axis does not reference on power-up; referencing required every cycle | Referencing not completed; drive requires referencing before positioning | Check r2684.0 (referenced status) in drive | Execute referencing sequence; configure p29240 group for active referencing |
Simatic Manager vs TIA Portal: Key Differences
Engineers familiar with TIA Portal often expect certain automated behaviors that are not present in Simatic Manager. The key differences are:
| Feature | TIA Portal | Simatic Manager (STEP 7 V5.x) |
|---|---|---|
| HW identifier as system constant | Automatic; drag from PLC tag table | Manual; must enter diagnostic address directly |
| Block access optimization | Default optimized; must be unchecked for SFC14/SFC15 | Not applicable; all blocks are non-optimized |
| SCL source handling | Compiled transparently; sources stored in project | Requires manual compilation via SCL compiler |
| Drive integration | Drive proxy with automatic telegram and GSDML handling | HSP or GSD file import; manual configuration |
| Device name assignment | Automatic during project download | Manual via PRONETA or topology editor |
| Safety integration (PROFIsafe) | Integrated safety configuration with F-CPU | Requires separate F-configuration tool or manual PROFIsafe address assignment |
These differences do not make Simatic Manager inferior; they require the engineer to explicitly configure the diagnostic address and to verify the SCL compilation, both of which are good engineering practices that TIA Portal partially automates. For new projects, TIA Portal is recommended; for existing Simatic Manager installations or migration scenarios, the manual configuration steps documented in this article ensure correct SINA_POS operation.
Frequently Asked Questions
Why does SINA_POS work in TIA Portal with the same hardware but fail in Simatic Manager?
TIA Portal exposes the drive's diagnostic address (HW identifier) as a system constant in the PLC tag table, which the SINA_POS block uses automatically. Simatic Manager does not provide this automation; the engineer must manually enter the diagnostic address of the PROFINET/PROFIBUS slot as the HW_ID input of the block. Entering the IO start address (e.g., 528 decimal) instead of the diagnostic address (e.g., 2046 decimal) causes the internal DPRD_DAT/DPWR_DAT calls to fail with return code W#16#8090, even though the IO addresses appear active in the watch table.
Can the CPU 414F-3 PN/DP execute SINA_POS SCL source code?
Yes. The CPU 414F-3 PN/DP fully supports SCL-compiled FBs. The SCL source is compiled on the engineering station (Simatic Manager with the SCL compiler add-on) and downloaded as a compiled FB; the CPU executes the compiled code, not the SCL source. There is no runtime SCL interpreter in the S7-400. If the SCL source is not compiled before download, the SINA_POS FB will be missing from the program and the call instruction will fail.
Which telegram should be configured for SINA_POS position control with G120 CU250S-2 PN?
Telegram 111 is the standard PROFIdrive telegram for positioning applications on the G120 CU250S-2 PN. It provides 12 PZD words in each direction and carries the control and status words, position setpoint and actual value, velocity override, and the basic positioner control bits. The telegram must be configured both in HW Config (slot properties → Telegram selection → Standard telegram 111 PZD-12/12) and in the drive parameter p0922 = 111. A mismatch prevents the drive from entering the positioning state machine.
How do I find the diagnostic address (HW identifier) of a PROFINET device in Simatic Manager?
Open HW Config, right-click the PROFINET device (e.g., the CU250S-2 PN slot), select "Properties", and navigate to the "Diagnostics" tab. The diagnostic address is displayed as a decimal value assigned automatically by HW Config. Record this value and enter it as the HW_ID input of the SINA_POS block. The value is unrelated to the IO start address configured on the "I/O Addresses" tab; using the IO start address as the HW_ID is the most common cause of SINA_POS communication failure in Simatic Manager.
What should I check if the SINA_POS block sets Error=TRUE with ErrorID=W#16#80A0?
ErrorID W#16#80A0 indicates a negative acknowledge from the IO device, meaning the PROFINET/PROFIBUS connection cannot be established or the drive rejected the data. Verify the PROFINET device name in PRONETA matches the name configured in HW Config, the IP address is correct, the telegram selection matches (telegram 111 on both sides), the drive is in the correct operating mode (p1300 = 21 for positioning), and the PROFINET cable is properly connected. Also check the drive's diagnostic buffer for fault codes such as F08501 or F08502, which indicate telegram configuration or sign-of-life errors.