Integrating Schenck DISOCONT as Profibus DP Slave in PCS7

David Krause12 min read
ProfibusSiemensTechnical Reference
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

Overview

The Schenck DISOCONT Master PCI is a gravimetric loss-in-weight feeder controller used in batching, dosing, and continuous weighing skids. When integrated as a Profibus DP slave on a Siemens S7-400 running PCS7, the controller exchanges cyclic process data (setpoint, actual flow, status word, command bits) and acyclic parameter data (calibration, recipe setpoints, totals) with the automation system over a single physical segment.

Field experience shows that the integration rarely fails because of incorrect PLC programming. The dominant failure mode is a slave-side process-data configuration mismatch that prevents the controller from publishing the data block the master is requesting, even though the Profibus diagnostic LED on the slave and the master both report a healthy cyclic link.

This reference documents the full integration procedure, including GSD module selection, SFC14/SFC15 call conventions, the PCS7 ANY-pointer workaround, and the slave-side configuration steps that resolve the all-too-common symptom of zero inputs with no SFC error.

Prerequisites

Item Specification
SIMATIC S7-400 CPU CPU 414-3 / 416-3 or higher; PCS7 V8.x or V9.x
Engineering station SIMATIC Manager (Step 7 V5.5+) or PCS7 Engineering Toolset
Profibus DP master interface CP 443-5 Extended or integrated DP port on the CPU
Schenck GSD file Vendor-supplied GSD for DISOCONT Master PCI (file dated from controller firmware)
Cable plant Profibus DP cable, 9.6 kbit/s to 12 Mbit/s; terminating resistors at both ends
Termination / shielding Profibus connector with switchable termination, 360° shield contact
Slave firmware DISOCONT controller firmware matched to the GSD revision (verify in controller menu)
Always confirm the GSD revision against the active controller firmware revision. Schenck has released multiple GSD versions; mixing a new GSD with an older controller firmware is the single most common cause of partial-dataexchange states.

Schenck DISOCONT Communication Profile

The DISOCONT GSD defines the slave as a modular DP device. Four cyclic I/O modules ship in the same GSD, all sharing the same identification string DISOCONT MASTER PCI:

Module name I/O length Bytes per direction Typical use
DISOCONT MASTER PCI — 32 bytes 32 B in / 32 B out 32 Compact, status-only exchanges
DISOCONT MASTER PCI — 64 bytes 64 B in / 64 B out 64 Extended status without floating-point words
DISOCONT MASTER PCI — 32 words 32 W in / 32 W out 64 Standard setpoint + actual flow
DISOCONT MASTER PCI — 64 words 64 W in / 64 W out 128 Full process image including KME optionals

Although all four variants carry the same device identifier, only one can occupy the slot in the slave. The selected module determines the I/O length the master must reserve in its process image and the LADDR value passed to SFC14/SFC15.

Hardware Configuration in PCS7

  1. Copy the DISOCONT GSD file into Siemens\Automation\SIMATIC Manager\S7libs\gsd (or the equivalent path in the PCS7 installation).
  2. Open HW Config and run Options → Install GSD File. The DISOCONT Master PCI appears under PROFIBUS DP → Additional Field Devices → Weighing → Schenck.
  3. Drag the slave onto the DP master system and assign the desired Profibus address (typical: 3–32, must match the address set on the DISOCONT front panel).
  4. Insert the appropriate module into slot 1 of the slave. Choose the 64-word module unless a Schenck sizing study explicitly recommends a smaller variant.
  5. Compile and download the HW Config to the AS. Confirm with PLC → Compile and Download Objects.

The Address tab in HW Config now displays the base I-address for inputs and Q-address for outputs. These values are the LADDR you must pass to SFC14/SFC15.

Why the 32-Byte Variant Reports a Red Slash

A red slash through the DP slave icon in HW Config online view means the master has detected the slave in a non-dataexchange state. The two common root causes with the DISOCONT are:

  1. The controller firmware cannot pack the configured process-data block into 32 bytes (it requires at least 64 bytes / 32 words), so it rejects the configuration telegram and remains in Wait Prm.
  2. The DP slave diagnostic buffer reports PRM-ERROR because the master requested a module length the slave does not support in the active firmware.

Switching to the 64-word module increases the I/O area to 128 bytes per direction, which provides enough room for the standard setpoint, actual flow, status, and command registers. The diagnostic clears once the slave accepts the configuration.

A green PROFIBUS LED on the slave does not guarantee data exchange. Always confirm with the HW Config online view, not the slave LED alone.

LADDR Derivation for SFC14 and SFC15

The LADDR parameter expects the logical base address of the module in the I area (for SFC14) or Q area (for SFC15). It must be supplied as a WORD in hex.

HW Config display Decimal LADDR Hex LADDR SFC
Input module base I-address = 1720 1720 16#06B8 SFC14 (DPRD_DAT)
Output module base Q-address = 656 656 16#0290 SFC15 (DPWR_DAT)

If the HW Config online view reports the input module base at a different value (for example 1270), trust the HW Config online value over any offline calculation: addresses are reassigned automatically by PCS7 after a download. Convert the displayed decimal value to hex before assigning it to the SFC LADDR input.

A common pitfall is to pass a hex value that matches a slot offset instead of the module base. Doing so returns SFC14 RET_VAL = 16#8090 (address error). When RET_VAL is zero but inputs still read zero, the slave is in data exchange but is publishing stale or zero data — the symptom is software-correct on the master side.

SFC14 (DPRD_DAT) and SFC15 (DPWR_DAT) Usage

Because the 64-word module (128 bytes per direction) exceeds the 4-byte consistency limit of standard I/O accesses, consistent data transfer via the DP standard SFCs is mandatory. Direct byte/word/dword load instructions would risk reading a torn image.

// Read 128 bytes from DISOCONT inputs into DB202
CALL  "DPRD_DAT"
     LADDR  := W#16#6B8        // base I-address of 64W input module
     RET_VAL := MW100          // 0 = no error
     RECORD := P#DB202.DBX0.0 BYTE 128

// Write 128 bytes from DB203 to DISOCONT outputs
CALL  "DPWR_DAT"
     LADDR  := W#16#290        // base Q-address of 64W output module
     RECORD := P#DB203.DBX0.0 BYTE 128
     RET_VAL := MW102          // 0 = no error

SFC14 / SFC15 RET_VAL diagnostics

RET_VAL (hex) Meaning Likely cause with DISOCONT
0000 No error Slave in data exchange; problem is data content, not transport
8090 Address error LADDR does not match the module base shown in HW Config
8091 Length error RECORD length does not match configured module length
8092 Parameter error RECORD pointer not aligned, or wrong ANY format
80A0 / 80A1 Negative acknowledge on read / write Slave rejected access; usually a slave-side lock or wrong process-data slot
80B0 Slave not in data exchange Red-slash condition; configuration telegram rejected
80B1 Length spec too short Module selected in HW Config is shorter than the slave expects
80B2 / 80B3 Inconsistent state / resource unavailable Slave in transition (firmware update, parameter download)
80C0 – 80C5 Transient slave-side issues Slave temporarily busy; retry with a small delay

ANY-Pointer Handling in PCS7

Classic Step 7 accepts the textual ANY pointer P#DB202.DBX0.0 BYTE 128 directly. In PCS7 the textual input field on an SFC block is not configurable from the CFC editor; you must interconnect the RECORD input to a DB block whose length matches the I/O width.

  1. Create shared DBs DB202 (inputs) and DB203 (outputs) of length 128 bytes each.
  2. On the SFC14 block instance in CFC, drag the RECORD input pin to the start of DB202. PCS7 auto-generates the ANY pointer from the interconnection target.
  3. On SFC15, interconnect RECORD to DB203. Ensure both DBs are non-optimized (classic) access so byte-level addressing is preserved.
Using optimized (S7-1200/1500-style) access on DB202/DB203 will not work with SFC14/SFC15 in an S7-400 — the RECORD ANY pointer requires absolute byte addressing of the DB.

Slave-Side Configuration — The Real Root Cause

A correct master configuration with zero RET_VAL and a green PROFIBUS LED on both sides will still produce all-zero inputs if the DISOCONT itself is not configured to publish the requested process data. Verify the following on the controller's local HMI or its engineering tool:

  1. Profibus slot enable — the cyclic slot corresponding to the GSD module must be enabled in the controller's communication menu.
  2. Process-data map alignment — the controller must map its internal registers (setpoint, actual flow, totals, status, KME optionals) into the same byte positions the master reads.
  3. Word / byte endianness — Schenck and Siemens both use big-endian word ordering, but some GSD revisions swap the high/low word; verify on the first two words of the input block.
  4. GSD revision match — the controller firmware must be on a build that supports the GSD revision installed in the PCS7 project.
  5. Bus address parity — the address set on the controller front panel must equal the Profibus address assigned in HW Config.

If the controller is left at factory defaults, it may publish only a subset of registers. In that state the slave still completes parameterization and enters data exchange with the master — which is why the master's SFC14 returns zero — but the slave buffer for the configured slot is all zeros. Resolving this requires a Schenck-side configuration upload, not a PLC-side change.

Process Data Map and KME Optionals

The Schenck address list (typically in the integration manual, page 8 and following) defines two distinct process-data areas:

  • Command / output area (master → slave) — setpoint, command bits, recipe select, start/stop, acknowledge.
  • Returning / input area (slave → master) — actual flow, totals, status word, error code, and KME optionals.

The command area is roughly half the size of the returning area. The discrepancy is filled by KME optional process-data extensions (Kommunikations-/Mess-Erweiterungen, depending on controller variant) — additional status, totals, and diagnostic registers that are only populated if the corresponding optional modules are licensed and enabled on the controller.

When sizing the Profibus I/O area, allocate at least the full returning width even if some KME optionals are not licensed. The slave expects the master to reserve the full slot length, and a shorter reservation can cause a configuration-error handshake.

Online Diagnostics Without SFC14 / SFC15

For read-only monitoring during commissioning, the cyclic process image can be observed directly in HW Config online view. Open the slave, right-click the module, and select Monitor/Modify. The values displayed there are read from the slave's cyclic output buffer — identical to what SFC14 would place into the destination DB.

This path is invaluable for separating transport faults (SFC RET_VAL non-zero, red-slash icon) from data-content faults (RET_VAL zero but values are zero or stuck). When HW Config online monitoring shows correct values but the destination DB shows zeros, the SFC call is the problem; when HW Config also shows zeros, the slave is the problem.

For write paths, SFC15 (or its equivalent) is still recommended: the destination DB retains its values across CPU restarts and provides a single source of truth for the cyclic output image. Bypassing SFC15 in favor of direct PIW/PQW writes works for short modules but loses consistency above 4 bytes and is not recommended for the DISOCONT 64-word module.

Commissioning Verification Checklist

  1. HW Config: slave shows no red slash in online view.
  2. HW Config: input/output slots report non-zero values from the slave (if the controller is energized and feeding).
  3. SFC14 RET_VAL = 0 on every call.
  4. SFC15 RET_VAL = 0 on every call.
  5. DB202 bytes mirror the HW Config input view byte-for-byte.
  6. DB203 bytes transferred to slave appear in HW Config output view.
  7. Disconnect the bus terminator on the slave side and confirm the master raises a diagnostic interrupt (sanity check on the cable plant).
  8. Force a value into DB203 and confirm the controller acknowledges the new setpoint on its local HMI.

Troubleshooting Matrix

Symptom First-line check Second-line check Typical root cause
Red slash on slave in HW Config online GSD module size vs. slave firmware DP address parity 32-byte module selected; slave firmware requires 64 bytes or more
SFC14 RET_VAL = 16#8090 LADDR matches HW Config base Module downloaded to AS LADDR is wrong, stale, or based on offline configuration
SFC14 RET_VAL = 16#8091 RECORD length equals module length DB length set to 128 B Destination DB shorter than the cyclic image
SFC14 RET_VAL = 0, DB shows zeros HW Config online monitoring Slave-side process-data enable Slave is publishing an empty buffer; configuration on DISOCONT side incomplete
Inputs change, commands have no effect SFC15 RET_VAL Slave status word reflects new setpoint Output DB not transferred; check SFC15 call frequency and RECORD length
Intermittent SFC14 RET_VAL = 16#80B0 Cable plant, terminators Slave diagnostic buffer EMC, loose connector, or slave entering parameterization
Inputs frozen at last good value Slave watchdog Profibus segment length Slave has dropped out of data exchange but master still uses the cached image

Related Standards and References

Profibus DP slave registration on a DP master follows the same procedure documented for any modular DP device; the TIA Portal manual collection describes the assignment flow in detail and is a useful cross-reference for engineers migrating from Step 7 Classic to TIA Portal: Assigning the DP slave to a DP master (Siemens TIA Portal documentation).

For general DP slave integration procedure on a third-party HMI / panel the Pro-face manual provides an end-device perspective on Profibus DP slave commissioning: Pro-face PROFIBUS DP Slave Driver manual (PDF).

The Profibus product finder lists modular DP slaves from a wide range of manufacturers, useful for confirming device-class compatibility when expanding the segment: Profibus DP slave product finder (Profibus.com).

FAQ

What causes a red slash on a Schenck DISOCONT DP slave in HW Config?

The slave rejected the master's configuration telegram. The most frequent cause with the DISOCONT is selecting a module length smaller than the controller firmware supports; switch from the 32-byte module to the 64-byte, 32-word, or 64-word module until the diagnostic clears. Always confirm the GSD revision matches the controller firmware.

Why does the 64-word DISOCONT module work while the 32-byte module does not?

The 64-word module reserves 128 bytes per direction, matching the full process image including KME optionals. The 32-byte module is too small for the controller's default process-data layout, so the slave remains in Wait Prm and the master flags the connection with a red slash.

Can SFC14 (DPRD_DAT) be omitted when reading DISOCONT process data?

For modules larger than 4 bytes, consistent data transfer via SFC14 is required to avoid torn reads. During commissioning, the HW Config online monitor can read the same values without SFC14, but production code should still use SFC14 / SFC15 to guarantee consistency and to surface RET_VAL errors.

How is the LADDR hex value calculated for SFC14 / SFC15?

LADDR is the base I-address (SFC14) or Q-address (SFC15) of the DP module, as displayed by HW Config online. Convert the decimal value to hex before assigning it to the LADR parameter. For a 64-word module with input base 1720 and output base 656, use LADDR = W#16#6B8 and W#16#0290 respectively.

What is the most common root cause when DISOCONT inputs read zero despite no SFC error?

The slave is in data exchange with the master but is publishing an empty process-data buffer because the controller's local configuration has not been loaded or has been reset to factory defaults. Verify the controller's communication / process-data settings on its local HMI, confirm GSD revision parity, and re-trigger a configuration upload from the controller to its local project.

Back to blog