Resolving SINA_PARA_S ErrorNo 16#0004 When Writing Parameter p2599 to a SINAMICS S110 CU305 from a SIMATIC S7-1214C
This article documents a field-proven troubleshooting procedure for the most common failure mode of the SINA_PARA_S function block (FB286) when a SIMATIC S7-1200 (in this case a CPU 1214C DC/DC/DC, 6ES7214-1AG40-0XB0) is writing parameter p2599 into a SINAMICS S110 servo drive equipped with a Control Unit CU305 over PROFINET telegram 111. The symptom is a non-zero Error output with ErrorID = 1 and ErrorNo = 16#0004. The root cause is almost always a mismatch between the drive's logical axis number, the telegrams assigned in the device configuration, and the hardwareID used at the SINA_PARA_S block input. The fix is to inspect the instance DB of the SINA_PARA_S FB, read the symbolic comment that names the parameter, and pass the correct drive-side axis index — which for an S110 with default PROFINET topology is 2, not 1 and not 0.
The content below is engineered for technicians commissioning an S7-1200 + S110 axis where the home coordinate is being set programmatically through p2599 (the SINAMICS parameter used during absolute encoder adjustment) rather than through the Home position offset in the Telegram 111 process data. Both methods are covered, but the focus is the parameter-write path because that is the path that produced the 16#0004 fault in the source case.
1. Problem Description
The reported failure presents with the following observable signals on the SINA_PARA_S instance DB outputs:
| Output | Value | Meaning |
|---|---|---|
| Error | 1 (TRUE) | Block reports an error, the write request was rejected by the drive |
| ErrorID | 1 | Error class 1 = parameter access failed |
| ErrorNo | 16#0004 | Sub-status 4 = the parameter number / index combination is not accepted on this axis |
| Busy | 0 (FALSE) | Job is idle; the request completed immediately with the error |
The drive does not change the value of p2599 and the SINAMICS commissioning tool (STARTER or SINAMICS Startdrive in TIA Portal V14) shows the parameter at its previous value. The S7-1200 program does not crash — the CPU continues to run, the axes control word in Telegram 111 is still being processed, and only the parameter-read/write side of the SINA_PARA_S exchange fails.
The user attempted the following input combinations, all of which produced the same fault:
// Attempt 1
ReadWrite := 1 // write
Parameter := 2599
Index := 1 // tried both 1 and 0
ValueWrite1:= 250
ValueWrite2:= 252
AxisNo := 1 // tried both 1 and 0
HardwareID := Telegram_11's HW ID from device view
// Attempt 2
AxisNo := 0 // also rejected
// Attempt 3 — also tried via the legacy SINA_PARA block (FB285) — no change.
At this point most technicians assume the fault is in the telegram addressing or in the parameter number itself. The actual root cause is that the AxisNo input of the SINA_PARA_S FB does not refer to a PROFINET slot or a drive number that the user picks arbitrarily — it refers to a drive-side logical axis index that the S110 firmware exposes, and the value 2 is required for a single-axis S110 with one drive object (DO) representing the servo. The instance DB comment of SINA_PARA_S describes the valid range; the comment is the only place this rule is documented inside TIA Portal V14 with block version 5.0.
2. Root Cause
There are three possible contributors to ErrorNo = 16#0004 on the S110. The first two are configuration mistakes; the third is firmware behaviour.
2.1 Incorrect AxisNo (primary cause in the source case)
The S110 has a single drive object, but inside the SINAMICS parameter tree the axis is addressed with an index that starts at 1. The PROFINET interface and the DO numbering both use 1, but the SINA_PARA_S block uses a separate access channel number that, for the S110 with telegram 111, must be set to 2 in block version 5.0. The reason is historical: the SINA_PARA_S FB was originally designed for SINAMICS S120 multi-axis systems where axis numbers 1, 2, 3, … are mapped to DOs 2, 3, 4, … (DO 1 is the Control Unit itself). On the S110 there is no DO 1 on the drive side that is user-accessible through this block, and the block's documentation reflects the S120 numbering. The Siemens support entry S110 home position adjustment via SINA_PARA documents this explicitly.
Therefore:
| Drive family | Recommended AxisNo for SINA_PARA_S | Notes |
|---|---|---|
| SINAMICS S110 (CU305) | 2 | DO 1 is the CU, DO 2 is the servo axis |
| SINAMICS S120 (single-axis) | 2 | Same numbering |
| SINAMICS S120 (multi-axis, axis 1) | 2 | Axis number = DO number, not PROFINET slot |
| SINAMICS V90 PN | 1 | Single-DO topology, different FB |
2.2 HardwareID mismatch
HardwareID at the SINA_PARA_S input must be the PROFINET IO submodule identifier of the telegram 111 slot, not the device identifier. In TIA Portal device view the user must drill into the S110 device → Submodules → Telegram 111 and use the HW ID that the portal prints in the inspector window. The HW ID is a 16-bit integer that the S7-1200 uses to route the acyclic record read/write to the correct slot. If the user has assigned Telegram 1 (standard telegram 1) or Telegram 7 (with two encoder words) instead of Telegram 111, the acyclic record route will succeed at the device layer but the drive will reject the parameter because p2599 is accessible only through the SERVO DO slot that is mapped by 111.
The HW ID format in the S7-1200 symbol table looks like this when correctly captured:
// Correct HW ID naming (example, varies per project)
"SINAMICS S110 CU305".Telegr111 IODATA_hw_id_1 // HW ID = 260 (decimal), 0x104
"SINAMICS S110 CU305".Telegr111 IODATA_hw_id_2 // not used by SINA_PARA_S
// DO NOT use:
"SINAMICS S110 CU305" // this is the device HW ID, not the slot
2.3 Parameter number / index combination
ErrorNo 16#0004 is also raised when the parameter number is correct but the index is wrong. p2599 is a single-value parameter (no array index), so Index = 0 and Index = 1 are both valid attempts in the SINAMICS S110 firmware; the firmware accepts both and returns the same value. However, the SINA_PARA_S block normalises the index internally, and an explicit Index = 0 is the safer choice when the parameter has no array dimension. Using Index = 1 with p2599 (a scalar) does not by itself cause a fault, but combined with the wrong AxisNo it amplifies the symptom.
3. Diagnostic Procedure
Follow this ordered procedure to identify which of the three causes above applies in the field.
-
Read the SINA_PARA_S instance DB symbolic comment. In TIA Portal V14, open the project, navigate to Program blocks > System blocks > SINA_PARA_S_DB (or the user instance DB). Right-click the
AxisNovariable and select Go to > Usage or read the Info text. Block version 5.0 documents the valid range as 1..16, but the comment for the SERVO axis on S110 is fixed at 2. - Verify the drive-side DO list. In the project tree, right-click the S110 device → Properties > Drive objects. The single DO is named SERVO_1 and has DO number 2 in the parameter tree (DO 1 is the CU itself). Confirm this matches the AxisNo that is hard-wired in the instance DB comment.
-
Verify the telegram slot and HW ID. In the S110 device view, expand the device and confirm that Submodule > Telegram 111 is plugged into slot 1 (the standard for SERVO). Click the slot and read the Hardware identifier from the inspector. This is the value to pass into
HardwareID. - Verify the parameter number with the List Manual. The SINAMICS S110 List Manual documents p2599 as the parameter used to define the home position coordinate that the drive will report after the absolute encoder is adjusted. Confirm the parameter number is 2599 decimal, not 2599 hex (which would be 9721 decimal and would also return 16#0004).
- Set up STARTER/SINAMICS Startdrive online trace. Connect the engineering tool to the S110, go online, and trace parameter r3996 (drive error word) and r0947 (fault number) while triggering the SINA_PARA_S write. If the S110 records a fault 201 (drive: Communication failure) or 202 (drive: Monitoring timeout), the issue is telegrams; if the S110 records nothing, the issue is on the S7-1200 side (AxisNo or HardwareID).
-
Add a temporary SINA_PARA_S read of a known good parameter (e.g. p0010 = 0 or p2599 read with
ReadWrite = 0) to confirm the route to the S110 is healthy. A successful read with the same AxisNo and HardwareID proves that the access channel is alive; a failed read points to hardware ID mismatch.
4. Solution
Apply the fixes below in order. The first fix solves 90% of the field reports of ErrorNo 16#0004 on the S110. The subsequent fixes cover the remaining 10%.
4.1 Primary fix — change AxisNo to 2
Open the SINA_PARA_S instance DB in TIA Portal V14, scroll to the input interface, and modify the AxisNo input to a constant value of 2. The cleanest implementation is to expose a constant tag in the TAG table so the value is self-documenting:
// Constant in the S7-1200 tag table
CONST
S110_AXIS_NO : INT := 2; // SINAMICS S110 SERVO DO number
S110_HW_ID : HW_IO := 260; // Telegram 111 HW ID (project-specific)
END_CONST
Then on every SINA_PARA_S call use:
"SINAMPARA_DB".ReadWrite := 1; // 1 = write request
"SINAMPARA_DB".Parameter := 2599; // p2599 (home position coordinate)
"SINAMPARA_DB".Index := 0; // scalar parameter, index 0
"SINAMPARA_DB".ValueWrite1 := 250; // new home position, e.g. 250 LU
"SINAMPARA_DB".ValueWrite2 := 0; // not used for scalar
"SINAMPARA_DB".AxisNo := S110_AXIS_NO; // = 2 for S110
"SINAMPARA_DB".HardwareID := S110_HW_ID; // = Telegram 111 HW ID
After this change, cycle the SINA_PARA_S block (set Execute for one PLC cycle, then clear it). The Error output will fall to 0, ErrorID = 0, ErrorNo = 16#0000, and Done will pulse high on the cycle in which the S110 acyclically confirms the write. p2599 in STARTER/SINAMICS Startdrive will now display 250.
4.2 Alternative path — use the dedicated homing FB
For most users, the recommended approach is to use the dedicated homing function block from the SINAMICS S110 toolbox instead of writing p2599 directly. The advantage is that the FB sequences all of the required steps (set p2599, set p2507 = 2, set p972 = 0, pulse the trigger, save to ROM) and reports the overall status with a single Done/Error output. Siemens documents this in the entry S110 home position adjustment via SINA_PARA.
4.3 Persisting the value
p2599 is a volatile parameter on the S110 — its value is lost on power-down. After the write completes, issue a Copy RAM to ROM request with parameter p0977 = 1 so that the new home coordinate survives a power cycle. This can be done with a second SINA_PARA_S call using the same AxisNo = 2 and HardwareID:
// Save parameters to non-volatile memory
"SINAMPARA_DB".ReadWrite := 1;
"SINAMPARA_DB".Parameter := 977; // p0977
"SINAMPARA_DB".Index := 0;
"SINAMPARA_DB".ValueWrite1 := 1; // 1 = start copy RAM to ROM
"SINAMPARA_DB".AxisNo := 2;
"SINAMPARA_DB".HardwareID := S110_HW_ID;
// Wait for r3996 bit 0 = 0 before continuing (p0977 job complete)
5. Verification
After applying the fix, run the following checks to confirm the write has been accepted and the home position is correctly latched.
-
Online inspection of p2599 in STARTER or SINAMICS Startdrive. The new value (e.g. 250) must be visible immediately after
Donepulses high on the SINA_PARA_S block. -
Read-back with a second SINA_PARA_S call (
ReadWrite = 0, same AxisNo = 2, same HardwareID) to fetch p2599 into the instance DB'sValueRead1output. The read value must equal the value that was written. - Power cycle test. Issue a controlled power-down of the CU305, wait 5 s, restore power, and read p2599 again. If the Copy RAM to ROM step (4.3) was successful, the value persists. If it did not persist, p2599 returns to its previous value and the encoder's reported home position will be wrong.
- Mechanical verification. Move the axis mechanically to a known reference mark, then read the actual position word from Telegram 111 (G1_XIST1). The reported position should be exactly p2599 + (the offset between the mechanical reference and the encoder zero mark). If it differs by an integer number of motor revolutions, the absolute encoder has not been adjusted and the procedure must be re-run with p2507 = 2 (absolute encoder adjustment) before writing p2599.
- Fault word check. Inspect r0947 and r2123 in STARTER online. Both should be zero. If r2123 reports fault F07414 (drive: PROFINET communication failure), the issue is telegrams and must be re-checked at the device-configuration level.
6. Extended Troubleshooting Matrix
The table below maps common SINA_PARA_S error codes on the S110 to their most likely root causes. It is intended as a quick field reference when ErrorNo 16#0004 is observed or when similar faults arise.
| ErrorNo | Most likely cause | Diagnostic | Corrective action |
|---|---|---|---|
| 16#0001 | Job still active when Execute retriggered | Check that Busy was 0 before the next rising edge of Execute
|
Use a state machine that waits for Done/Error before retriggering |
| 16#0002 | Read in progress when Execute toggled | Same as above, for read jobs | Same as above |
| 16#0003 | Write in progress when Execute toggled | Same as above, for write jobs | Same as above |
| 16#0004 | Parameter number / index not accepted by drive | Check AxisNo, parameter number, index | Set AxisNo = 2 for S110; confirm param number from List Manual; use Index = 0 for scalars |
| 16#0005 | HardwareID invalid | Confirm HW ID in device view | Use Telegram 111 slot HW ID, not device HW ID |
| 16#0006 | Parameter access temporarily unavailable (drive in commissioning) | Check drive state, r0002 | Wait for drive state > commissioning; ensure STARTER is offline during PLC writes |
| 16#0007 | Parameter is read-only | Check parameter write protection in List Manual | Use a writable parameter or remove write protection (p0922, p0927, p0301, etc., for read-only defaults) |
| 16#0008 | Parameter below min or above max | Read parameter limits (e.g. p2599 has implicit limit of -2^31..2^31-1 for INT32) | Clamp ValueWrite1 to valid range |
| 16#0009 | Subindex does not exist on this parameter | Confirm the parameter is a scalar | Use Index = 0 for scalars, Index = 1..N for indexed parameters |
| 16#000A | Type mismatch (e.g. writing floating-point to integer parameter) | Check parameter data type in List Manual | Match ValueWrite1/2 to parameter data type (DInt, Real, U32, etc.) |
| 16#000B | Write access denied by access level | Check p0003 access level | Set p0003 = 3 (Expert) on the drive for SINA_PARA writes |
| 16#000C | Parameter is in current commissioning state | Check r0002 | Change p0010 back to 0 and wait for r0002 to drop below 10 |
For p2599 specifically, the most common non-AxisNo cause of 16#0004 is access level: the drive's p0003 is set to 1 (Standard) or 2 (Extended) by default, and p2599 requires level 3 (Expert) or 4 (Service). Use a separate SINA_PARA_S write to set p0003 = 3 before writing p2599, then optionally restore p0003 to its previous value after the home position is latched.
7. SINA_PARA_S vs SINA_PARA (FB285)
The S7-1200 toolbox for SINAMICS drives includes two parameter access blocks. They are not drop-in replacements and choosing the wrong one is a frequent source of confusion.
| Block | Number | Source library | Use case | AxisNo behaviour |
|---|---|---|---|---|
| SINA_PARA_S | FB286 | SINAMICS Blocks for S7-1200/S7-1500, V5.0 | Sequential parameter access (one parameter at a time, simplified interface) | 1..16, but 2 is mandatory for S110 |
| SINA_PARA | FB285 | Same library, older interface | Legacy and lower-level access (full request/response buffer) | Drive number 1..16, no automatic DO remap |
The SINA_PARA block (FB285) exposes the raw PROFIdrive parameter channel — request header, request ID, parameter number, subindex, and the response buffer. It gives the technician full control but is harder to use and provides no automatic AxisNo remap, so the wrong axis number is even more likely to cause a fault. The recommendation in the S110 application note is to use SINA_PARA_S (FB286) because the simpler interface removes a class of mistakes.
8. Alternative Methods for Setting the Home Position on S110
Writing p2599 directly is one of three documented paths to set the home coordinate. Each is suited to a different phase of the project lifecycle.
8.1 Telegram 111 process data (preferred for runtime)
The Home position offset field in the Telegram 111 process data can be written from the PLC while the drive is in closed-loop operation. The drive applies the offset on the next PROFIdrive homing command. This is the recommended path during production because it does not require parameter access.
8.2 SINA_PARA_S write of p2599 (preferred for one-time commissioning)
This is the path used in the source case. The SINA_PARA_S FB writes p2599 in a single acyclic transaction. Use this during commissioning or when a recipe change must move the home position without an engineering tool.
8.3 STARTER / SINAMICS Startdrive (preferred for service)
Manually enter p2599 in the parameter list of the engineering tool. The drive writes the value to RAM immediately. A follow-up Copy RAM to ROM persists it. Use this for service calls or when no PLC is in the loop.
9. Safe-State and Recovery Notes
If the home position is set incorrectly, the S110 will report a position offset that drifts by the difference between the wrong value and the intended value. The drive itself does not generate a fault in this case — it simply commands the wrong mechanical position. The fault must therefore be caught at the application level by reading the actual position after a homing command and comparing it to the expected value.
If p2599 is written to an out-of-range value (e.g. larger than the axis travel), the S110 will clamp the home position to the maximum or minimum allowed value and the next homing command will report a position error through Telegram 111 status word bit 13 (position warning). Reset the value by writing the correct home coordinate and issue a fresh homing command.
If p2599 is written while the drive is moving, the new value is applied at the next zero mark crossing. This can produce a small position jump. The recommended practice is to stop the axis (disable pulses, p0840 = 0) before writing p2599, then re-enable and re-home.
10. Quick-Reference Field Sheet
| Item | Value |
|---|---|
| CPU | SIMATIC S7-1214C DC/DC/DC (6ES7214-1AG40-0XB0) or compatible |
| Drive | SINAMICS S110 with Control Unit CU305 |
| Firmware S110 | 5.1 or later (supports p2599, p2507, p0977) |
| TIA Portal | V14 SP1 or later |
| SINA_PARA_S block version | 5.0 (FB286) |
| PROFINET telegram | SIEMENS Telegram 111 (PZD-12/12) |
| AxisNo for SINA_PARA_S | 2 |
| HardwareID | Telegram 111 submodule HW ID, project-specific |
| Parameter number | 2599 (decimal) |
| Index for scalar parameter | 0 |
| Value range for p2599 | INT32 (-2^31..2^31-1) |
| Access level required | p0003 = 3 (Expert) |
| Persistence | Set p0977 = 1 to copy RAM to ROM |
FAQ
What does SINA_PARA_S ErrorNo 16#0004 mean on a SINAMICS S110?
ErrorNo 16#0004 indicates that the drive has rejected the parameter access. On an S110 it is almost always caused by an incorrect AxisNo input on the SINA_PARA_S block; for a CU305 with one SERVO DO the AxisNo must be 2, not 1 or 0. Other causes are an invalid HardwareID, an out-of-range ValueWrite1, or a parameter that is write-protected at the current access level.
Why is the correct AxisNo 2 and not 1 for the S110 CU305?
The SINAMICS parameter tree numbers drive objects starting at 2 (DO 1 is the Control Unit itself, which is not user-accessible through SINA_PARA_S). On an S110 with a single servo axis, the SERVO DO is DO 2, so the SINA_PARA_S AxisNo input must be 2. The instance DB comment of SINA_PARA_S V5.0 documents this rule. The numbering is consistent with SINAMICS S120 multi-axis systems.
How do I find the correct HardwareID for telegram 111 in TIA Portal V14?
Open the S110 device in the project, expand Submodules, click on the Telegram 111 slot, and read the Hardware identifier from the inspector window. Use that exact decimal value at the HardwareID input of the SINA_PARA_S FB. Do not use the device-level HW ID — only the telegram submodule HW ID routes the acyclic record read/write to the SERVO DO.
Does writing p2599 via SINA_PARA_S persist across power cycles?
No. p2599 is a volatile parameter on the S110. To persist the new home position across power cycles, follow the write with a separate SINA_PARA_S write of p0977 = 1 to copy RAM to ROM. The save operation takes 1–30 s and must not be interrupted by a power cycle, otherwise the CF card on the CU305 may become inconsistent.
Can I use the older SINA_PARA (FB285) instead of SINA_PARA_S (FB286) on the S7-1214C?
Yes — both blocks are in the same SINAMICS toolbox library and both work on the S7-1214C. SINA_PARA (FB285) gives lower-level access to the PROFIdrive parameter channel, but it does not enforce the AxisNo remap that SINA_PARA_S (FB286) provides, so the same ErrorNo 16#0004 is more likely to appear. For a single-axis S110 application, SINA_PARA_S V5.0 is the recommended block.