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_Sinstance is called in cyclic OB1 with a parameter number for the actual fault code (e.g.r0947= 9487 decimal, index 0). - The instance's
Busybit toggles, butDonenever asserts andErrorreturns true, typically withErrorID = 16#80B1("Drive object not found") or16#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:
- 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.
-
Hardware identifier is empty. Because the DCM only exposes one DP slot, there is no dropdown list of sub-slots. The
HW_IDmust be entered manually as a constant of typeHW_DEVICEand pointed to the system constant<SlaveName>~Headof 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) |
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
- Open the device configuration of the S7-1500 CPU and add a PROFIBUS subnet.
- From the hardware catalog, navigate to Other field devices > PROFIBUS DP > Drives > SINAMICS > SINAMICS DCM and insert the slave.
- Assign the PROFIBUS address matching the DCM's address switches (default = 3).
- 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.
- Compile and download the hardware configuration.
4.2 Expose the System Constant for the Slave Head
- Right-click the SINAMICS DCM in the network view and select Properties.
- Navigate to System constants in the navigation pane.
- Enable the constant by checking the box "Show all system constants" if it is hidden.
- 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 theHW_IDinput ofSINAPARA_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
- Open the project library and copy
SINAPARA_S(FB 287 / FB 288 in the SINAMICS library, depending on version) into your program blocks. - Create an instance DB (e.g.
iDB_SinaparaDCM) and place the call in OB1 or a cyclic OB. - Open the instance DB and on the Static tab set
HW_IDby clicking the dropdown and selecting the<SlaveName>~Headsystem 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 |
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
- Place a watch table on the SINAPARA_S instance DB. Confirm
HW_IDis non-zero and matches the slave's~Headconstant. - Trigger one read of r0947 on a healthy (non-faulted) drive. Expected result:
Done = TRUE,Value = 0(no current fault). - Force a known fault (e.g. trip the line fuse via parameter
p2101[0] = 3as a test signal) and re-trigger the read. Expected:Value = 3(F00300 according to SINAMICS DCM fault list). - Cross-check the value against STARTER / Startdrive diagnostics by going online with the drive and reading
r0947in the parameter list. The two values must match exactly. - Verify
Errorstays FALSE throughout. IfErrorasserts, captureErrorIDand 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#80B2for 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-instanceSINAPARA_Sis 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
~Headsystem 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..30commissioning phases, most r-parameters return16#80B6. Bringp0009 = 0before callingSINAPARA_Sfor 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 returns16#80B2. -
Type mismatch on the result.
SINAPARA_SreturnsValueas a 16-bit WORD/DWORD depending on parameter type. For fault numbers, a plainWORD_TO_INTcast 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:
- 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
- Calling
SINAPARA_Sin write mode (ReadWrite := TRUE) against parameterp3981(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>~Headsystem constant visible in the project (check Show all system constants). -
SINAPARA_Sinstance DB hasHW_IDnon-zero and tied to the~Headconstant. -
AxisNo = 2on every read/write call against drive parameters. -
ParamNocross-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_Sand matches STARTER diagnostics. - Acknowledgment via STW1.7 or p3981 write clears the fault state and r0947 returns to 0.
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.