Reading SINAMICS DCM Fault Numbers with SINAPARA_S in TIA Portal

David Krause13 min read
SiemensTIA PortalTroubleshooting
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

Reading SINAMICS DCM 6RA80 Fault Numbers with SINAPARA_S in TIA Portal

The SINAMICS DCM (DC Converter Module, 6RA80 series) exposes its diagnostic buffer and fault codes through standard parameter access (r0947 / r2131). When the drive is networked via PROFIBUS DP with a free telegram (e.g. 8/8) and parameterized from TIA Portal, the Siemens library block SINAPARA_S is the standard mechanism for acyclic parameter read/write. The block, however, requires two non-obvious configuration items: a correct AxisNo and a valid HW_ID referencing the slave head module. The most common reason SINAPARA_S reports Error on a SINAMICS DCM is the wrong axis number — for a 6RA80, axis 1 is the CUD, not the drive object.

1. Problem Description

Symptom observed in a TIA Portal V18+ project with SINAMICS DCM 6RA80 on PROFIBUS DP:

  • Hardware configuration: SINAMICS DCM inserted as DP slave, GSD file from Siemens Industry Online Support, free telegram 8/8 selected (8 words PZD in, 8 words PZD out).
  • Online connection to the CPU establishes successfully, free-telegram process data exchanges without SF/BF.
  • A SINAPARA_S instance is called in cyclic OB1 with a parameter number for the actual fault code (e.g. r0947 = 9487 decimal, index 0).
  • The instance's Busy bit toggles, but Done never asserts and Error returns true, typically with ErrorID = 16#80B1 ("Drive object not found") or 16#80B2 ("Parameter does not exist").

No module access point number is visible in the SINAMICS DCM device view because the 6RA80 publishes a single PROFIBUS slot whose HW_ID is the slave head module identifier, not a sub-slot like SINAMICS S/G drives expose.

2. Root Cause

Two structural issues prevent SINAPARA_S from completing a read on a 6RA80:

  1. Axis number is wrong. The 6RA80 firmware models the CUD (Control Unit DC) as drive object 1. The actual DC drive object is drive object 2. Other SINAMICS families (S120, G120, G150) start with the drive object at axis 1, so the default instinct is incorrect for DCM.
  2. Hardware identifier is empty. Because the DCM only exposes one DP slot, there is no dropdown list of sub-slots. The HW_ID must be entered manually as a constant of type HW_DEVICE and pointed to the system constant <SlaveName>~Head of the slave in the device view.

When either value is wrong, the acyclic DP-V1 read/write request is rejected by the slave and SINAPARA_S exits with the documented error codes listed below.

3. Prerequisites

Item Requirement
Controller S7-1500 or S7-1200 CPU with PN/DP interface, firmware ≥ V2.0
Engineering TIA Portal V18 (or V16/V17) with SINAMICS DCM HSP / GSD installed
Drive SINAMICS DCM 6RA80 with CUD in slot 1, firmware ≥ V1.4 (recommended ≥ V2.5 SP1)
Library block SINAPARA_S from "SINAMICS blocks" / "SINAMICS_Blocks" global library, version ≥ V1.0
Fieldbus PROFIBUS DP, 1.5 Mbps typical; DP-V1 services enabled for acyclic access
Telegram Free telegram 8/8 (or any free/standard telegram that includes the control/status word in PZD 1)
Critical: DP-V1 acyclic services are required for parameter access. The PROFIBUS master must support DP-V1. Disable DP-V1 only if your master is DP-V0 only (in which case SINAPARA_S cannot function and you must switch to PROFINET or use a different access path).

4. Step-by-Step Configuration

4.1 Insert the SINAMICS DCM in HW Configuration

  1. Open the device configuration of the S7-1500 CPU and add a PROFIBUS subnet.
  2. From the hardware catalog, navigate to Other field devices > PROFIBUS DP > Drives > SINAMICS > SINAMICS DCM and insert the slave.
  3. Assign the PROFIBUS address matching the DCM's address switches (default = 3).
  4. Open the DCM's slot configuration. In slot 0, select the Free telegram 8/8 (PZD input length 8, PZD output length 8). This places the 16-bit control word (CTW) at PZD1 out and the status word (ZSW) at PZD1 in.
  5. Compile and download the hardware configuration.

4.2 Expose the System Constant for the Slave Head

  1. Right-click the SINAMICS DCM in the network view and select Properties.
  2. Navigate to System constants in the navigation pane.
  3. Enable the constant by checking the box "Show all system constants" if it is hidden.
  4. Note the constant name. By default the slave head is published as <SlaveName>~Head (e.g. Slave_1~Head, DCM_3~Head). This is the value to assign to the HW_ID input of SINAPARA_S.

The HW_ID is not the same as a sub-module I/O address. For SINAMICS DCM, the slave head is the only valid HW_ID for acyclic parameter services on PROFIBUS DP.

4.3 Insert the SINAPARA_S Instance

  1. Open the project library and copy SINAPARA_S (FB 287 / FB 288 in the SINAMICS library, depending on version) into your program blocks.
  2. Create an instance DB (e.g. iDB_SinaparaDCM) and place the call in OB1 or a cyclic OB.
  3. Open the instance DB and on the Static tab set HW_ID by clicking the dropdown and selecting the <SlaveName>~Head system constant. This binds the constant value at compile time.

4.4 Call the Block in STL/SCL

The following SCL call demonstrates a request to read parameter r0947 (actual fault number) on a 6RA80 with axis 2:

// Read actual fault number r0947 from SINAMICS DCM
// r0947 parameter number = 947 (dec), axis = 2 (drive object), index = 0

IF "DB_SinaparaDCM".Busy = FALSE AND "DB_SinaparaDCM".Done = FALSE AND "DB_SinaparaDCM".Error = FALSE THEN
    "DB_SinaparaDCM".Req       := TRUE;       // rising edge triggers read
    "DB_SinaparaDCM".ReadWrite := FALSE;      // FALSE = read, TRUE = write
    "DB_SinaparaDCM".AxisNo    := 2;          // 6RA80 drive object (NOT 1)
    "DB_SinaparaDCM".ParamNo   := 947;        // r0947 = actual fault number
    "DB_SinaparaDCM".Index     := 0;          // index 0 of the parameter
    "DB_SinaparaDCM".Execute   := TRUE;       // alternative edge depending on FB version
END_IF;

IF "DB_SinaparaDCM".Done = TRUE THEN
    "DCM_ActualFaultCode" := WORD_TO_INT("DB_SinaparaDCM".Value); // r0947 result
    "DB_SinaparaDCM".Execute := FALSE;        // release for next request
END_IF;

IF "DB_SinaparaDCM".Error = TRUE THEN
    "DCM_FaultReadErrorID" := "DB_SinaparaDCM".ErrorID;
    "DB_SinaparaDCM".Execute := FALSE;
END_IF;

The exact input names vary between SINAPARA_S revisions. The two inputs that must be set correctly for a 6RA80 are highlighted in the following table.

Input Value for 6RA80 Why
AxisNo 2 1 = CUD, 2 = drive object (DC converter)
HW_ID (static, instance DB) <SlaveName>~Head Slave head constant; only valid HW_ID for acyclic DP-V1 services on DCM
ParamNo 947 (r0947) Actual fault code (unsigned 16)
Index 0 Index of array parameters / sub-fields
ReadWrite FALSE Read request

5. SINAMICS DCM Fault Parameter Reference

Use the following parameter numbers to populate ParamNo for typical fault diagnostics on a 6RA80. Numbers are decimal. The firmware rejects any axis number other than 1 or 2.

r-Parameter Dec Description Index range
r0947[0] 947 Actual fault number (current fault code) 0
r0949[0..63] 949 Fault value (interpreting information for r0947) 0..63
r0944[0..7] 944 Fault code list (last 8 faults, FIFO) 0..7
r0945[0..7] 945 Number of faults occurred 0..7
r2131 2131 Current fault code (after ACK, == r0947 if not acked) 0
r2132 2132 Current alarm code (active warning) 0
r3120[0..63] 3120 Component fault (if 6RA80 in line-up) 0..63
r3113.0..15 3113 CO/BO: Fault present (bit field) 0
Tip: To read the entire fault buffer, issue 8 sequential SINAPARA_S jobs with Index = 0..7 against ParamNo = 944. Sequence them in a small state machine; do not call SINAPARA_S in parallel because the block is not re-entrant.

6. Telegram Wiring for Free Telegram 8/8

A free telegram 8/8 means 8 PZD words in each direction. The default assignment when only the first two words are mapped to the standard control/status words is shown below. PZD2..8 are user-configurable and typically carry analog setpoints, feedback, or connector outputs such as r0021 (motor speed smoothed), r0025 (armature voltage), r0027 (armature current).

PZD word Direction PLC receives / sends Typical signal
1 out PLC → DCM Control word 1 (STW1) Bits: OFF1, OFF2, OFF3, Enable, Enable Ramp, Enable Setpoint, Acknowledge
2 out PLC → DCM Speed setpoint (NSOLL) 4000 hex = 100% ref (P2000)
1 in DCM → PLC Status word 1 (ZSW1) Bits: Ready, Enabled, Fault, Coast stop, No OFF2, No OFF3, Lockout, Alarm
2 in DCM → PLC Actual speed (NIST) 4000 hex = 100% ref
3..8 in/out Both User-defined e.g. r0021 / r0025 / r0027

To acknowledge a drive fault from the PLC, set bit 7 of the control word 1 (STW1.7 = 0→1→0 pulse) in PZD1 out. This is the same edge that will be used inside the SINAPARA_S write jobs against p3981 if a write-based ACK is preferred.

7. Verification Procedure

  1. Place a watch table on the SINAPARA_S instance DB. Confirm HW_ID is non-zero and matches the slave's ~Head constant.
  2. Trigger one read of r0947 on a healthy (non-faulted) drive. Expected result: Done = TRUE, Value = 0 (no current fault).
  3. Force a known fault (e.g. trip the line fuse via parameter p2101[0] = 3 as a test signal) and re-trigger the read. Expected: Value = 3 (F00300 according to SINAMICS DCM fault list).
  4. Cross-check the value against STARTER / Startdrive diagnostics by going online with the drive and reading r0947 in the parameter list. The two values must match exactly.
  5. Verify Error stays FALSE throughout. If Error asserts, capture ErrorID and consult the troubleshooting matrix below.

8. Troubleshooting Matrix

ErrorID (hex) Meaning Likely cause Corrective action
16#80B1 Drive object not found AxisNo = 1 used on a 6RA80 (CUD, not drive) Set AxisNo = 2
16#80B2 Parameter does not exist Wrong parameter number, e.g. S/G series parameter used on DCM Confirm parameter exists for DCM firmware; use r0947 / r0944
16#80B5 Access level insufficient Parameter write blocked by access level (P0003) Set expert access in STARTER/Startdrive; check p0003 = 4
16#80B6 Parameter access temporarily unavailable Drive in commissioning state (C000 = 4) or save in progress Exit commissioning mode; wait for p0009 to return to 0
16#80B8 Write protection active p3981 or p0927 write-protected Disable write protection, p3981 = 0
16#80C3 DP-V1 service not supported Master set to DP-V0, or slave address mismatch Enable DP-V1 in master; verify PROFIBUS address
16#80C5 No system constant for HW_ID HW_ID left at 0 or pointed to a sub-slot Assign <SlaveName>~Head system constant
16#0000 No error — Read Value and proceed

9. Common Pitfalls and Field-Proven Notes

  • AxisNo = 1 on a 6RA80 reads the CUD, not the drive. The CUD carries a small subset of parameters (e.g. its own diagnostics) but not r0947. A read on axis 1 against r0947 returns 16#80B2 for most firmware versions. Always use axis 2 for drive-level parameters.
  • Do not confuse drive object 1 of a 6RA80 with a CU320-2 in an S120 line-up. In S120, the CU320-2 is the head module and uses axis 1; the drive objects (Motor Module, Line Module) are higher numbers. In DCM, the CUD and the drive are integrated, but they remain two drive objects in the firmware model.
  • Free telegram 8/8 vs. standard telegram 5/6. Free telegrams require manual BICO wiring of the PZD slots. If you only need fault diagnostics, standard telegram 5/9 (9 PZD in, 9 PZD out) or 6/14 is simpler and is the recommended starting point. Free 8/8 is appropriate when you need specific custom connectors mapped to PZD3..8.
  • Watch the Busy/Error/Execute pattern. Multiple Siemens library blocks exist with similar names (SINAPARA, SINAPARA_S, SINA_PARA_S). The single-instance SINAPARA_S is the correct block for sequential acyclic access from TIA Portal; do not parallelize calls.
  • PROFIBUS DP-V1 vs. DP-V0. Some legacy PROFIBUS masters are configured as DP-V0 by default. Acyclic parameter access requires DP-V1. Check the master's properties in TIA Portal; on Siemens CP/CM modules, the mode is on Operating mode = "DP master DPV1".
  • Hardware identifier drift after re-importing GSD. After re-importing the GSD file, the ~Head system constant may be renamed (e.g. Slave_2~Head). Re-link the instance DB to the renamed constant and re-download the project.
  • Reading during commissioning mode (C000). When the drive is in p0009 = 1..30 commissioning phases, most r-parameters return 16#80B6. Bring p0009 = 0 before calling SINAPARA_S for fault reads.
  • Index 0 for non-array parameters. For scalar parameters (r0947, r2131), always set Index = 0. Setting a non-zero index against a scalar parameter is treated as an out-of-range access and returns 16#80B2.
  • Type mismatch on the result. SINAPARA_S returns Value as a 16-bit WORD/DWORD depending on parameter type. For fault numbers, a plain WORD_TO_INT cast is sufficient because the high bit is never set in practice.

10. Migrating to PROFINET (Alternative Path)

If the application allows, switching the SINAMICS DCM to PROFINET via the CBE20 communication board simplifies the HW_ID assignment: every slot 0 has a slot 0 sub-module, and the system constant ~Head resolves to the same identifier with no GSD file to manage. The acyclic parameter services (DPT_READ / DPT_WRITE on PROFINET IO) are functionally identical to DP-V1, and the same SINAPARA_S call sequence applies with AxisNo = 2 unchanged. The diagnostic buffer parameters (r0947, r0944, r2131) are firmware-level, not transport-level, so the parameter numbers are portable across both fieldbuses.

11. Acknowledgment from the PLC

Once a fault is captured, acknowledge it from the PLC by either:

  1. Setting STW1.7 (bit 7 of the control word) to 1 and then back to 0 in the cyclic PZD1 out — the most common approach; or
  2. Calling SINAPARA_S in write mode (ReadWrite := TRUE) against parameter p3981 (number 3981), index 0, value 1, axis 2. The same axis-2 rule applies.

Both methods are firmware-equivalent; the standard STW1.7 pulse method is preferred for deterministic scan-time behavior.

12. Field Commissioning Checklist

  • GSD file matches the 6RA80 firmware version (consult the firmware/hardware compatibility list in the operating instructions).
  • DP-V1 enabled on the PROFIBUS master interface.
  • <SlaveName>~Head system constant visible in the project (check Show all system constants).
  • SINAPARA_S instance DB has HW_ID non-zero and tied to the ~Head constant.
  • AxisNo = 2 on every read/write call against drive parameters.
  • ParamNo cross-checked against the SINAMICS DCM parameter list for the installed firmware.
  • Read of r0947 on a healthy drive returns 0.
  • Forced fault is read back correctly via SINAPARA_S and matches STARTER diagnostics.
  • Acknowledgment via STW1.7 or p3981 write clears the fault state and r0947 returns to 0.
Safety note: Always coordinate fault acknowledgment with the plant's interlock logic. Cleared faults on a 6RA80 do not imply the drive is safe to re-energize; the application-level safety chain (e.g. PROFIsafe or hardwired E-stop) takes precedence over PLC-driven acknowledgments.

FAQ

Why must AxisNo = 2 for a SINAMICS DCM 6RA80?

The 6RA80 firmware reports the CUD (Control Unit DC) as drive object 1 and the DC drive as drive object 2. Fault parameters such as r0947 and r0944 live on the drive object, so AxisNo must be set to 2 in SINAPARA_S. Using axis 1 returns ErrorID = 16#80B1 (drive object not found) or 16#80B2 (parameter not found).

Where do I find the hardware identifier for the SINAMICS DCM in TIA Portal?

There is no sub-slot list for a DCM on PROFIBUS DP. Open the DCM's Properties > System constants and enable Show all system constants. The system constant <SlaveName>~Head is the valid HW_ID. Assign it to the static HW_ID field of the SINAPARA_S instance DB.

Which parameter number returns the current fault code?

r0947 = decimal 947 with index 0 returns the current fault code as an unsigned 16-bit value. For a history of the last 8 faults, read r0944 (decimal 944) at indices 0..7. For an active warning, read r2132 (decimal 2132) at index 0. Use AxisNo = 2 for all three reads.

SINAPARA_S reports ErrorID 16#80C5 — what does that mean?

This indicates the HW_ID is invalid or has not been linked to a real hardware object. Open the instance DB, go to the Static section, and assign the <SlaveName>~Head system constant of the SINAMICS DCM. A value of 0 or an I/O sub-module address (e.g. IW0) is not valid for acyclic parameter services on a 6RA80.

Can I read the fault buffer with a single SINAPARA_S call?

No. SINAPARA_S reads one parameter at one index per request. To read the 8-entry fault buffer of r0944, issue 8 sequential calls with ParamNo = 944 and Index = 0, then 1, 2, 3, 4, 5, 6, 7. Sequence them in a small state machine, waiting on Done before incrementing the index, and use the same HW_ID and AxisNo = 2 for each call.

Back to blog