Problem Overview
The Siemens SINA_SPEED function block (FB 285 / SINA_SPEED, part of the SINAMICS blocks library) is the standard interface for cyclic speed control of SINAMICS drives (S120, G120, G130, G150, S210) from SIMATIC controllers (S7-1200, S7-1500, ET 200SP) over PROFINET / PROFIdrive. The block hides the underlying DPRD_DAT (read) and DPWR_DAT (write) record calls but inherits their parameter constraints.
When the drive telegram is configured as a free telegram instead of a standard telegram, the user must match the cyclic I/O length manually. A mismatch produces:
-
Error code #8600 on the SINA_SPEED output
Error(WORD) andStatus(WORD) withErrorId/DIAGIDindicating the internalDPRD_DATcall failed. -
DIAGID 80B1 at parameter
DIAGID(WORD), which decodes to "length error in record read" in the PROFIdrive diagnostic table.
This article documents the root cause, the exact diagnostic chain, the fix in TIA Portal V15, and how to verify the corrected configuration.
Affected Products and Versions
| Component | Version / Article | Notes |
|---|---|---|
| SINAMICS blocks for TIA Portal | V14, V15, V15.1, V16, V17 | SINA_SPEED, SINA_POS, SINA_INFEED shipped with the library |
| TIA Portal engineering | V15, V15.1 and higher | V14 online help does not contain the SINA_XXXX block help; switch to V15+ |
| SINA_SPEED FB | FB 285 (renumbered across versions) | Instance DB carries Error, Status, DIAGID
|
| Drives | SINAMICS S120, G120, G120C, G120P, G130, G150, S210 | Any drive with PROFINET PROFIdrive profile and free telegram support |
| PLC | S7-1200 / S7-1500 / ET 200SP CPU | Must support PROFINET IRT or RT class 1+ |
Standard Telegram Assignments for SINA_XXXX Blocks
The SINAMICS blocks library assumes the following default cyclic telegrams unless explicitly overridden:
| Function Block | Default Telegram | Direction | Purpose |
|---|---|---|---|
| SINA_SPEED (FB 285) | Telegram 1 (Standard Telegram 1, PZD-2/2) | Speed setpoint / actual | Cyclic speed control, 2 control words + 2 status words |
| SINA_POS | Telegram 111 (SIEMENS Telegram 111, PZD-12/12) | Positioning with EPOS | Basic Positioner (EPOS) interface |
| SINA_INFEED | Telegram 370 (SIEMENS Telegram 370, PZD-14/14) | Infeed unit control | Active Line Module (ALM) interface |
If you configure the drive with a different (free) telegram and the controller is wired to that telegram via PROFINET, every cyclic word is still consumed - but the layout no longer matches the block's offsets. This alone does not trigger error 8600; the issue arises from the parameter RECORD length mismatch between PLC and drive.
Root Cause Analysis
Error code 8600 originates inside the DPRD_DAT (read record data) call that SINA_SPEED makes on each OB1 cycle to fetch the cyclic process data from the drive's PROFINET interface. The Siemens documentation states:
"The length of the specific target range at parameter RECORD is shorter than the configured user data length."
Two separate definitions of length must agree:
-
PLC side: the byte length of the ANY pointer passed into
RECORDat theDPRD_DATcall inside SINA_SPEED. - Drive side: the configured cyclic I/O length (sum of all PZD words) of the telegram selected in the SINAMICS drive (e.g. p0922, p2071, p2079).
If the PLC side is shorter than the drive side, the read fails because the PROFIdrive stack cannot fit the incoming frame into the buffer. The block then sets:
Error = 1-
Status = 8600(decimal) =0x2198 -
DIAGID = 80B1hex =32945decimal
DIAGID 80B1 in the SINAMICS diagnostic mapping corresponds to length error in record read / parameter access. It indicates the record index or the record length passed by the PLC does not match the parameter access definition of the drive object.
Diagnostic Chain Inside SINA_SPEED
Internally SINA_SPEED performs, per call:
- Build the request
RECORDANY pointer atHWIDSTW/HWIDZSWoffsets. - Call
DPRD_DAT(LADDR := HWID, RECORD := pInData, RET_VAL := tmpRet)to read the receive PZD area. - Evaluate
tmpRetand theBUSY/DONEoutputs ofDPRD_DAT. - Map any non-zero
RET_VALto the block outputsError,Status, andDIAGID. - If
tmpRet = W#16#8600, the drive rejects the record because the PLC buffer length (RECORD) is shorter than the configured telegram length (drive parameter p0922 / p2071).
The mapping inside SINA_SPEED for the most common failure modes is:
| Status (hex) | Status (dec) | DIAGID | Meaning | Likely Cause |
|---|---|---|---|---|
| 0x7000 | 28672 | 0000 | No job active | Normal idle |
| 0x7001 | 28673 | 0000 | First call, job running | Normal in-flight read |
| 0x7002 | 28674 | 0000 | Subsequent call, job running | Normal in-flight read |
| 0x0000 | 0 | 0000 | Job completed without error | Normal |
| 0x8600 | 34304 | 80B1 | DPRD_DAT length error | RECORD too short / telegram mismatch (this article) |
| 0x8601 | 34305 | 80B0 / 80FF | Drive reports WARN / FAULT in ZSW1 | Drive-side fault, check r2139, r2135 |
| 0x8090 | 32912 | 0000 | No module / wrong HWID | PROFINET device not configured or HWID wrong |
*.alhlp) for the precise mapping shipped with your TIA Portal installation.Prerequisites Before Troubleshooting
- TIA Portal V15, V15.1, V16, or V17 installed. (V14 ships without the integrated SINA_XXXX block online help; the library must be opened from the standalone PDF.)
- Siemens SINAMICS blocks library V15 or later installed (e.g.
SINAMICS_Blocks_V15.zip). - Access to the SINAMICS drive commissioning tool: SINAMICS S120 Commissioning Manual (109475044) or STARTER / Startdrive for G120.
- The PROFINET device name and IP address of the drive.
- The current
p0922value of the drive (telegram selection) and the configured PZD layout (p2051 / p2061).
Step-by-Step Resolution
Step 1 - Confirm the error and capture DIAGID
Online, with the PLC in RUN, open the SINA_SPEED instance DB and force a monitor to the following tags:
"iDB".Error // BOOL -> must be TRUE
"iDB".Status // WORD -> must show 8600 (decimal) / 0x2198
"iDB".DIAGID // WORD -> must show 80B1 (hex) / 32945 (decimal)
"iDB".AxisEnabled // BOOL -> usually FALSE
"iDB".ActVelocity // REAL -> stays at 0.0
Capture a screenshot of the instance DB. The DIAGID value is the authoritative diagnostic; Status alone is ambiguous because the same decimal value can appear in different SINA_XXXX blocks for different reasons.
Step 2 - Verify the PROFINET telegram on the drive side
In the SINAMICS drive (S120, G120, etc.) check:
p0922 = 999 // free telegram configured (not 1)
// OR
p0922 = 1 // standard telegram 1 - this is what SINA_SPEED expects
Record all PZD assignments:
p2051[0..15] // transmit (drive -> PLC) PZD word mapping
p2061[0..15] // receive (PLC -> drive) PZD word mapping
Count the total number of active words. Example for a 6-word free telegram (12 bytes):
| Word | p2051 (Tx) | p2061 (Rx) |
|---|---|---|
| 0 | r2089[0] - ZSW1 | p2089[0] - STW1 |
| 1 | r2089[1] - NIST_A | p2089[1] - NSOLL_A |
| 2 | r2089[2] - ZSW2 | p2089[2] - STW2 |
| 3 | r2089[3] - actual torque | p2089[3] - torque limit |
| 4 | r2089[4] - fault code | p2089[4] - reserved |
| 5 | r2089[5] - reserved | p2089[5] - reserved |
Total receive length = 6 words = 12 bytes. Total transmit length = 6 words = 12 bytes.
Step 3 - Verify the PROFINET telegram on the PLC side
In TIA Portal, open Devices & Networks, select the drive's PROFINET interface, and inspect the Device configuration > Module parameters > Telegram configuration. The PROFINET slot must show:
- Same number of input PZD words as the drive's p0922 / p2051 configuration.
- Same number of output PZD words as p2061.
If the slot shows "Standard telegram 1" but the drive is set to "free telegram 999", the PROFINET stack on the drive will still try to send/receive the p0922 layout, and the PLC will read into a buffer sized for telegram 1 (4 words = 8 bytes). The PLC buffer is too short for the drive's real layout - this triggers exactly the 8600 / 80B1 combination.
Step 4 - Adjust either the PLC telegram or the drive telegram so both agree
Choose one of two paths:
Path A - Use the standard telegram (recommended for SINA_SPEED):
- On the drive, set
p0922 = 1and copy/activate factory defaults (p0010 = 30, p970 = 1). - In TIA Portal, change the drive device configuration so the slot uses Standard telegram 1 (PZD-2/2). The IO length becomes 4 words each direction.
- Recompile and download the project. The SINA_SPEED defaults (4-word layout) now match.
Path B - Keep the free telegram and tell SINA_SPEED the exact length:
- Keep
p0922 = 999on the drive. - In TIA Portal, configure the drive slot with the matching free telegram layout (same word count as the drive).
- In the SINA_SPEED call, ensure the input
ConfigAxisand the data block layout match. SINA_SPEED does not automatically detect the telegram length; it uses the ANY pointer generated at compile time from the PROFINET slot assignment. Therefore the slot length must be identical to the drive-sidep0922layout. - Recompile, download, monitor DIAGID - it should now show
0000.
Step 5 - Recompile and download
- In TIA Portal, mark the PLC and choose Compile > Hardware (rebuild all).
- Download the hardware configuration to the PLC.
- Download the program blocks (or do a full download).
- Cold restart the drive if you changed p0922 (
p0009 = 0; p0976 = 1).
Step 6 - Verify the fix
Online, with the PLC in RUN and the drive in cyclic communication:
- Confirm
iDB.Error = FALSE. - Confirm
iDB.Status = 0000or7000(idle). - Confirm
iDB.DIAGID = 0000. - Confirm
iDB.ActVelocitytracks the drive's actual speed (read via STARTER / Startdriver0063). - Toggle
iDB.EnableAxis = TRUE(oriDB.Enabledepending on block version). Drive should run toiDB.SetVelocity.
Manual Locations for SINA_XXXX Help
-
SINAMICS S120 Commissioning Manual (Entry ID 109475044) - includes the canonical description of
DPRD_DATreturn value 8600 and DIAGID mapping. - SINAMICS blocks for TIA Portal V15 (Entry ID 109751049) - download archive for V15 library.
- SINA_SPEED function manual (Entry ID 109762715) - block-level help for FB 285 and the DIAGID table.
- PROFIdrive Profile drive technology (Entry ID 109740115) - telegram definitions and PZD conventions.
Common Pitfalls When Migrating From V14 to V15
| Pitfall | Symptom | Fix |
|---|---|---|
| V14 project upgraded to V15 without reinstalling the library | Block help missing, DIAGID unknown | Install SINAMICS_Blocks_V15.zip from Siemens support |
| Drive uses telegram 1, PLC slot uses free telegram | 8600 / 80B1 at first cycle | Align both sides to telegram 1 or both to the same free layout |
| Drive I/O configured in slot 0 of the PROFINET device instead of the dedicated telegram slot | DPRD_DAT reports 8090 (no module) | Drag the correct telegram submodule into the slot |
| p0922 set to 999 but p2051 / p2061 not populated | PROFINET startup, but 8600 persists | Populate p2051[0..n] and p2061[0..n] before save/restore |
| Two SINA_SPEED blocks pointed at the same HWID | Intermittent 8600 / 80FF | Use distinct HWIDs per drive, or use SINA_SPEED multi-instance with separate IO |
Extended Diagnostics: Reading Drive-Side Faults
Once error 8600 is cleared, monitor the drive's own fault buffer to ensure no PROFIdrive fault is being silently masked:
r2139.0..15 // current fault code, decimal
r2135.0..15 // last fault code, decimal
r9747.0..15 // PROFIdrive fault code (from telegram)
F30001, F08501 // typical drive-side faults to clear before retry
Clear faults with p3981 = 1 (acknowledge all) and p0952 = 0 after the cause is removed.
Formula: Telegram Length Check
Use this sanity check whenever a free telegram is involved:
RECORD_len_PLC = N_in * 2 // bytes, N_in = input PZD word count
RECORD_len_drive = N_p2051 * 2 // bytes, N_p2051 = number of populated p2051 entries
DIAGID 80B1 iff RECORD_len_PLC < RECORD_len_drive
Example: drive has 6 words populated in p2051 (12 bytes). PLC slot shows 4 input words (8 bytes). 8 < 12, so 80B1 will fire on the very first read.
When SINA_SPEED Still Returns 8600 After the Fix
- Confirm the GSD file version matches the drive firmware. Older GSD versions may report a default telegram of 0 words for "free telegram".
- Confirm the PROFINET topology is RT class 1+ or IRT, not RT class UDP. PROFIdrive telegrams require RT.
- Check that the IO controller slot for the drive is enabled (slot 0 submodule inserted).
- Force a cold restart of the drive after any p0922 change so PROFINET re-negotiates the AR.
- Watch
iDB.Statusfor one full second - SINA_SPEED only updatesDIAGIDon the cycle where the error is raised. If the drive recovers mid-run, you may catch a stale 80B1.
What does DIAGID 80B1 mean inside SINA_SPEED?
DIAGID 80B1 (hex) is the SINAMICS blocks library code for "length error in record read". It indicates that the DPRD_DAT call inside SINA_SPEED failed because the buffer pointed to by RECORD is shorter than the cyclic I/O length configured on the drive side. It is almost always raised together with Status = 8600 decimal.
Why does SINA_SPEED default to telegram 1 if I configured a free telegram?
SINA_SPEED assumes the drive uses the standard telegram 1 (PZD-2/2, 4 words each direction). It does not auto-detect the telegram type; it relies on the PROFINET slot configuration in TIA Portal matching the drive's p0922 setting. If the drive uses a free telegram (p0922 = 999), the PLC slot must be configured with the same word count, or DPRD_DAT will return 8600 with DIAGID 80B1.
Can I use SINA_SPEED with SINA_POS on the same drive at the same time?
No. SINA_SPEED expects telegram 1, SINA_POS expects telegram 111, and SINA_INFEED expects telegram 370. A single SINAMICS drive object can only be operated with one telegram at a time. For combined speed and position control, use a free telegram that contains the union of PZD words, and use a single SINA_SPEED call - then handle the positioner logic in the PLC manually, or switch to a higher-level block such as LAcycCom from the Easy Motion Control library.
Where do I find the SINA_XXXX manual for TIA Portal V15?
The canonical reference is the SINAMICS S120 Commissioning Manual (Entry ID 109475044). The V15 library itself ships with the function manual at Entry ID 109762715. V14 does not include the integrated SINA_XXXX online help - that was added in V15 and later.
How do I clear error 8600 without restarting the drive?
You cannot reliably clear 8600 in software alone; it is a structural mismatch between PLC and drive. First align the telegrams (drive p0922 to PLC slot, or vice versa), recompile and download the TIA Portal project to the PLC, then acknowledge any drive faults with p3981 = 1 or via the SINA_SPEED AckError input. After the next OB1 cycle, iDB.Error must read FALSE and iDB.DIAGID must read 0000.