SINAMICS G120C P2051 SinaPara Write Error HEX 14 BICO Encoding

David Krause14 min read
SiemensTroubleshootingVFD / Drives
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

1. Problem Summary

When commissioning a SINAMICS G120C drive in freely configurable telegram mode (P0922 = 999, P2079 = 999), the standard tools such as Startdrive and the SINAMICS IOP allow operators to edit parameter r2050 / P2051 / P2060 and its sub-indices directly through the parameter list. When the same write operation is performed from a SIMATIC controller using the SinaPara function block, the drive rejects the request and the block returns error code 16#14 in swErrorNo.

According to the SINAMICS G120C List Manual, error 0x14 (decimal 20) corresponds to the DPRAM/parameter status "value impermissible / not allowed to write". The operator normally interprets this as an access-rights problem, particularly when:

  • The drive is at standstill with no active command.
  • STO (Safe Torque Off) is active and r2 = [45] Switching on inhibited.
  • Both P0922 and P2079 have been verified at 999 in Startdrive.
  • The same value is freely accepted by Startdrive but rejected by SinaPara.

Under all of these conditions the actual cause is not a write-protection state. The real cause is the data type and encoding of the parameter being targeted: P2051, P2050, P2060 and similar free-telegram interconnect parameters are CI/CO connectors (BICO inputs/outputs). They do not accept a numeric setpoint — they require a BICO source descriptor encoded as a 32-bit double word.

2. Root Cause: BICO Connector Encoding Requirements

The SINAMICS G120C stores every BICO interconnection as a 32-bit value with the structure defined in the SINAMICS Function Manual for Drive Functions:

Word Bits Content
High word (bits 31-16) Parameter number (decimal 0-65535) of the source
Low word (bits 15-0) Sub-index / bit-mask of the source; for indexed parameters the pattern 0xFCii (where ii is the sub-index) is used

When a Siemens commissioning tool such as Startdrive is used, the user simply picks the parameter from a drop-down list and the tool writes the encoded double word transparently. When the operator uses SinaPara, the sdValue input is a DWORD (REAL/WRONG, must be DWORD) and the engineer is responsible for performing the encoding manually. If a plain numeric value (for example 2129 or 16#00000851) is supplied without the BICO framing, the parameter manager responds with 0x14 because the value violates the CI/CO data type range.

Crucial point: P2051[0..15], P2050[0..15], P2060[0..15], and P2059[0..15] are all CI/CO connectors. Only the high/low sub-set of the SINAMICS parameter list is writable in this form. Numeric (N4, N8) and floating-point parameters follow a different encoding (the unit, index, and text-bit tables are not part of the connector descriptor).

3. Prerequisites for Writing P2051 via SinaPara

Before SinaPara writes can succeed, the following prerequisites must be met. The diagnostic flow is intentionally strict because the 0x14 error masks several different root causes.

  1. Firmware / Library level: G120C firmware ≥ V4.7 (recommended V4.7 SP10 or V5.x for current safety/Safety Integrated variants) and the SINAMICS blocks library installed in the SIMATIC project (TIA Portal ≥ V16 or STEP 7 V5.5 + SPx with the matching SINAMICS S7 block set). The SinaPara FB can be found in the library "SINAMICS_SinaPara" under Communication > SINAMICS.
  2. PROFIdrive channel: The PLC must have an established acyclic channel. SinaPara uses the DPV1 / PROFIdrive acyclic services (read/write record, indices 0xB02E / 0xB02F). Verify the drive is on the same PROFINET/IO or PROFIBUS-DP network and that the telegram configured in the device matches the one selected on the PLC side (the standard free-telegram "999" in TIA). For PN, check the drive's parameter P0922 reflects "Free telegram configuration with BICO" and P2079 is also 999.
  3. Drive state: The drive must be in a state that allows parameter writes. Either OFF, Stop, or Operation with ramp enable is fine. Switching on inhibited (r2 = 45) is permissible for parameter writes. The drive does not need to be in run for the BICO interconnections to be accepted.
  4. Access level: Confirm P0003 is ≥ 3 (Expert) if any expert-level parameter is targeted. The P2051 / P2060 connectors are accessible at level 3. With Startdrive logged in as Expert, the same project transfers the elevated rights to SinaPara automatically; if SinaPara is the only tool used, the right must be set either by writing P0003 first or by configuring the user class in the drive.
  5. Data type of sdValue: Use a DWORD typed variable or a literal of type WORD/DWORD. Float (REAL) inputs are silently coerced and then rejected with 0x14.

4. The SinaPara Value Encoding Format Explained

The SinaPara FB signature (in the SINAMICS blocks library, FB number and instance depend on the library version; in TIA Portal the block is typically labelled SinaPara [FB30500] or the S7-300/400 compatible variant SinaPara [FB2889]) has the following relevant inputs:

Input Data type Meaning
siParaNo INT Parameter number to read or write (decimal, e.g. 2051)
siIndex INT Sub-index of the target parameter (decimal, 0-15 typical for connectors)
sdValue DWORD Encoded value (32-bit BICO descriptor when writing a CI/CO parameter)
sReq / sAct BOOL Edge / status hand-shake
sWriteRead BOOL TRUE = write, FALSE = read

The 32-bit sdValue must be built as follows for a write to a connector parameter:

sdValue := 16#[Source parameter number in HEX]_[Source sub-index encoding]

Two sub-cases for the low word are used in practice:

  • Source parameter has no sub-index (most parameters): low word is 16#0000.
    Example: P2129 (Faults/alarms trigger signal) → 16#0851_0000 (2129dec = 0x0851hex).
  • Source parameter has sub-indices: low word uses the pattern 16#FCii where ii is the destination sub-index of the connector itself, e.g. 16#FC02 for sub-index 2 of P2051 / P2060.
Hex/Dec conversion: The high word is the decimal parameter number expressed in hexadecimal. Quick reference values used in G120C applications:
  • 2050 = 0x0802
  • 2051 = 0x0803
  • 2060 = 0x080C
  • 2129 = 0x0851
  • 1006 = 0x03EE
  • 1138 = 0x0472

5. Step-by-Step: Writing P2051 Sub-Indices via SinaPara

Assume the application must extend the standard PROFIdrive telegram so that:

  • PZD7 (send): Source = P2129 (Faults/alarms trigger signal)
  • PZD8 (send): Source = P1006 (Fixed speed setpoint 6)
  1. Set the drive into free-telegram mode. Using SinaPara or Startdrive, write 999 to P0922 and 999 to P2079.
  2. Define the length of the send and receive words. The default P2051[0..15] array is 16 connectors. The number of valid connectors is controlled by P2079 (length PZD send) and P2078 (length PZD receive). Adjust these before populating sub-indices.
  3. Compute the encoded sdValue for PZD7.
    // P2051[6] = source P2129
    siParaNo := 2051;
    siIndex  := 6;
    sdValue  := 16#0851_0000;    // 0x0851 = 2129 dec, P2129 has no sub-index
    sWriteRead := TRUE;
    
  4. Compute the encoded sdValue for PZD8.
    // P2051[7] = source P1006
    siParaNo := 2051;
    siIndex  := 7;
    sdValue  := 16#03EE_0000;    // 0x03EE = 1006 dec, P1006 has no sub-index
    sWriteRead := TRUE;
    
  5. Trigger the SinaPara call. With the request-edge input sReq pulsed (rising edge), the block issues the DPV1 write record. Wait for sDone or sError.
  6. Read back the parameter to verify. Reset sWriteRead := FALSE, keep siParaNo := 2051 and the same siIndex, and re-trigger sReq. The returned sdValue should equal the value just written.

6. Complete Worked Examples

The following four examples cover the most common variants encountered in the field. All examples use the SinaPara FB; a single instance must be used for every call (one request at a time per drive). Multiplex the inputs.

6.1 Write a fault word to PZD7 (send)

// Target: P2051[6] (PZD7 transmit, word) = source P2129
siParaNo   := 2051;
siIndex    := 6;
sdValue    := 16#0851_0000;   // 2129 dec = 0x0851 hex; P2129 has no sub-index
sWriteRead := TRUE;

6.2 Write a fixed setpoint to PZD8 (send)

// Target: P2051[7] (PZD8 transmit, word) = source P1006
siParaNo   := 2051;
siIndex    := 7;
sdValue    := 16#03EE_0000;   // 1006 dec = 0x03EE hex; P1006 has no sub-index
sWriteRead := TRUE;

6.3 Connect ramp-up scaling to PZD3+4 (receive DWord)

// P1138 (CI: ramp-fn generator ramp-up time scaling) must be
// fed by P2060[2] which is the PROFIdrive PZD3+4 receive DWord.
// In this case we WRITE TO P1138 (the CI) and the value is the
// BICO descriptor pointing at P2060 sub-index 2.
siParaNo   := 1138;
siIndex    := 0;              // P1138 itself has no sub-index
sdValue    := 16#080C_FC02;   // 0x080C = 2060 dec; FC02 selects sub-index 2 of P2060
sWriteRead := TRUE;

6.4 Receive a 16-bit word to a control word (PZD3 receive word)

// If the source is a 16-bit connector (e.g. P2050, the PZD receive word
// index 2), write directly to the parameter that consumes the connector.
// P2050[2] is the connector for PZD3 receive (word); a parameter that needs
// a 16-bit source uses the descriptor 0x0802_FC02.
siParaNo   := 2050;           // Example: writing to connector input 2050
siIndex    := 2;
sdValue    := 16#0802_FC02;   // 0x0802 = 2050 dec; FC02 selects sub-index 2
sWriteRead := TRUE;

7. SinaPara FB Interface Reference

The SinaPara block exists in two main variants in the Siemens libraries:

Library FB number Used with
SINAMICS S7-300/400 (legacy, STEP 7 V5.5) FB2889 S7-300, S7-400, S7-1500 (legacy port)
SINAMICS blocks for TIA Portal FB30500 / SinaPara V3 S7-1500 with PROFINET/PROFIBUS

Inputs and outputs common to both variants:

I/O Type Description
hwId / hardwareId HW_IO PROFINET/IO device hardware identifier (TIA) or logical address (STEP 7 V5.5)
siParaNo INT Parameter number (decimal)
siIndex INT Parameter sub-index (decimal)
sWriteRead BOOL 1 = write, 0 = read
sReq BOOL Rising-edge triggered request
sdValue DWORD 32-bit BICO descriptor (write) or returned value (read)
sBusy BOOL TRUE while request is being processed
sDone BOOL TRUE when the request has finished successfully
sError BOOL TRUE on error
swErrorNo WORD Error code (see Section 8)

Important behavioural notes:

  • Only one active request per FB instance. Multiplex the inputs in a sequencer or instantiate one FB per logical parameter stream.
  • The FB does not retry on transient acyclic errors. Implement your own retry loop with back-off if a "PROFIdrive drive busy" (0x0E) error appears.
  • The FB silently clamps the parameter number to the valid SINAMICS range (0-65535) and the index to 0-255. Out-of-range values are rejected with 0x14 (value impermissible).

8. Error Code Reference

The SinaPara swErrorNo follows the DPV1 parameter request error codes. The most common values are listed below; for the complete list refer to the SINAMICS S120 / G120 Parameter Manual.

Code (hex) Code (dec) Meaning Typical cause / remedy
0x00 0 No error Operation completed
0x01 1 Impermissible parameter number Parameter does not exist on the drive; check r9450 for the valid list
0x02 2 Sub-index not present Index out of range for the selected parameter
0x03 3 Read job with write-only parameter Reverse the request direction
0x04 4 Read/write job with read-only parameter Inspect parameter read/write attribute
0x05 5 Type error sdValue data type mismatch (REAL vs DWORD)
0x0B 11 Operation cannot be executed Drive in wrong operating state; wait for OFF/STOP or handle r2 = 45
0x0E 14 Drive busy, cannot accept new request Retry after 100-200 ms; another acyclic request is in flight
0x14 20 Value impermissible / not allowed to write BICO encoding missing or wrong (this article's topic)
0x15 21 Service cannot currently be executed Drive in commissioning mode; do a RAM → ROM save or power-cycle
0x16 22 Password not set / incorrect access level Write P0003 ≥ 3 first
0x17 23 Parameter is currently being edited Another tool is holding the parameter; close Startdrive/IOP
0x1F 31 Parameter is not indexed Index must be 0
0x20 32 Drive reports transfer error Check cable/PROFINET connection; verify r2067[0] and r2067[1] for diagnostic counters
Field tip: If swErrorNo = 0x14 persists even when Startdrive writes the same value, the only way to get past it is to fix the BICO encoding. The error code does not indicate access rights; it is a content/type mismatch reported by the parameter manager.

9. Verification Procedure

After each batch of BICO writes, verify the interconnections with the following checklist:

  1. Read-back check. Use SinaPara to read the same siParaNo / siIndex with sWriteRead := FALSE. The returned sdValue must equal what was written. If it returns 0, the BICO was not accepted (sometimes the drive silently zeros the connector on error; the read-back reveals it).
  2. Inspect r2050 / r2051 / r2060 contents in Startdrive. The parameter list shows the resolved source connectors in symbolic form (e.g. "P2129"). They should match the intended sources.
  3. Check the I&M / device trace. If the application uses SINAMICS Trace, capture the I/O words (r2050[0..15] for received PZDs, r2051[0..15] for transmitted PZDs) and confirm the values flow as expected.
  4. Cycle the drive. A RAM → ROM save (P0971 = 1) makes the connections non-volatile. Power-cycle the drive; verify the connections persist (re-read r2051 / r2050 after power-up).
  5. Run a reference speed test. Bring the drive to operating state, apply a small fixed setpoint, and verify the transmitted PZD7/PZD8 words cycle through their expected values.

10. Troubleshooting Matrix

Symptom Likely cause Corrective action
SinaPara returns 0x14, Startdrive accepts the same value sdValue is plain numeric, not BICO-encoded Build sdValue as 16#SourceParam_HEX_0000 (or _FCii for indexed sources)
SinaPara returns 0x14 only for some sub-indices Length parameters (P2078 / P2079) are shorter than the targeted sub-index Write P2078 / P2079 = 999 (free) or extend the length before populating sub-indices
Read returns 0, write returned no error Drive silently rejected the connector; the destination is a read-only parameter Confirm the destination is a CI/CO parameter, not a display parameter
0x16 returned Access level too low Write P0003 = 3 (or higher) before the BICO writes
0x0B returned during commissioning Drive in switching-on-inhibited (r2 = 45) but BICO write is blocked by an interlock Check P0727 / P0748 / P0800 bit masks; some connectors require P0003 = 4 (Service) for edit
SinaPara returns 0x17 Another tool (Startdrive, IOP, S7COMM) is holding the parameter Close the other tool and retry
Interconnection drops after power cycle Changes are in RAM only Write P0971 = 1 to copy RAM to ROM
PZD does not appear in the trace Telegram is still the standard one, not free Verify P0922 = 999 in the drive and re-import the GSDML in TIA Portal

11. Field-Proven Caveats

  • The 16#FC prefix in the low word is not a magic value you can omit for indexed sources. The parameter manager uses the bits in the low word to determine if the source is a connector, a parameter without sub-index, or a text reference. Stripping the FC makes the value look like a parameter with no sub-index, which the parameter manager rejects when the destination is itself indexed.
  • Do not confuse P2050 (PZD receive word) and P2060 (PZD receive double word). Sub-index 2 of P2050 is PZD3 (16-bit). Sub-index 2 of P2060 is PZD3+4 (32-bit, packed). Using the wrong connector type in sdValue leads to 0x14 on subsequent writes when the encoder telegram is rebuilt.
  • Always re-read after writing; do not assume the write succeeded. The acyclic channel silently drops malformed requests on some firmware versions and the FB reports sDone = TRUE with an empty sdValue.
  • The G120C variants 6SL3210-1PE (PROFINET) and 6SL3210-1NE (PROFIBUS) both use the same BICO encoding. The same sdValue works on either interface.
  • For safety-related drive variants (G120C with CU250S-2 safety firmware), safety parameters (r/r9799, r/r9720) are read-only from the acyclic channel; attempting a write returns 0x04. SinaPara should not be used to configure the safety channel.

12. FAQ

Why does Startdrive accept my P2051 value but SinaPara returns HEX 14?

Startdrive translates your selection into the BICO double-word format (high word = source parameter in hex, low word = source sub-index encoding). SinaPara requires the same encoded 32-bit value in sdValue; a plain numeric value violates the CI/CO data type and the drive returns error 0x14 (value impermissible). Use the format 16#SourceParamHex_0000 for non-indexed sources or 16#SourceParamHex_FCii for indexed sources.

What is the exact value to write to P2051[6] to bring P2129 onto PZD7 (send)?

Use siParaNo = 2051, siIndex = 6, sdValue = 16#0851_0000. The high word 0x0851 is 2129 in hexadecimal, and the low word 0x0000 indicates that P2129 has no sub-index.

How do I encode an indexed source parameter?

Use the low-word pattern 16#FCii, where ii is the sub-index of the connector (e.g. P2051[6] → FC06, P2060[2] → FC02). For example, P2050[2] = PZD3 receive word would be encoded as 16#0802_FC02.

Does the drive state (OFF, run, switching-on-inhibited) affect BICO writes?

No. BICO interconnections can be written in any drive state, including when r2 = [45] Switching on inhibited. If you get 0x0B ("operation cannot be executed") you are likely in commissioning mode (drive not yet in standby) or in a state where the specific parameter is locked; write P0003 = 3 first.

My interconnections disappear after a power cycle. How do I make them permanent?

SinaPara writes land in the drive's volatile RAM. To make them non-volatile, write parameter P0971 = 1 (save all parameters) via SinaPara, or trigger the same operation from Startdrive's "Copy RAM to ROM" button. The drive then takes a few seconds to complete the save; do not power-cycle during that window.

Can SinaPara be used to write safety parameters on a G120C with Safety Integrated?

No. The acyclic channel used by SinaPara only has access to standard (non-safety) parameters. Safety parameters (r/r9799, r/r9720, r/r9798, etc.) are read-only from PROFIdrive and can only be modified through the safety commissioning tools (Startdrive Safety or the web server under the safety login). A SinaPara write attempt will return 0x04 (read-only).

Back to blog