Implementing S7-300 Master-Slave VFD Speed Control via PROFIdrive

David Krause16 min read
S7-300SiemensTutorial / How-to
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

Coordinated multi-drive systems — such as a four-motor conveyor feeding a compactor — require a central "master" reference that caps or scales the speed of every Variable Frequency Drive (VFD) simultaneously, while each individual drive still accepts its own ratio setpoint. On a Siemens SIMATIC S7-300 controller communicating to PROFIdrive-compliant drives over PROFIBUS DP, the cleanest implementation places the master/individual scaling math in the PLC, sends the resulting normalized setpoint in a Standard Telegram 1 PZD frame, and lets the drive perform its own ramp acceleration and deceleration per its parameter set.

This reference documents the architecture, the PROFIdrive PZD structure, the TIA Portal hardware configuration, the LAD and SCL code for the master multiplier, drive-side parameter assignments, HMI integration, and the commissioning procedure required to bring the system online and validate it.

Architecture and Operating Principle

The application has four VFDs feeding material to a compactor. Each VFD has its own HMI-entered setpoint expressed as a percentage of rated speed (0–100 %), which is mapped by the drive to 0–60 Hz internally. A master percentage (also 0–100 %) limits the entire feeding system. The final per-drive frequency reference is:

Drive_Setpoint_Hz = (Master_% ÷ 100) × (Drive_Individual_% ÷ 100) × Max_Hz

For example, with master = 50 %, drive 1 individual = 80 %, and a 60 Hz base, drive 1 runs at 24 Hz. Drive ramping (accel/decel ramps) is handled inside the drive; the PLC only changes the target reference and the drive's internal ramp generator produces a controlled transition.

Why Centralize the Math in the PLC

Three reasons favor calculating the final reference in the PLC rather than cascading analog signals between drives:

  • Determinism: PROFIBUS DP cycles every few milliseconds with a fixed update rate per slave; analog cascade bandwidth depends on the slowest drive and wiring.
  • Diagnostics: Each drive returns ZSW1 and NIST_A so the HMI can show the actual master-scaled speed per drive and raise alarms if a drive is not tracking.
  • Engineering flexibility: The master/individual formula can be modified, inverted, or replaced with a ramped profile without rewiring.

Prerequisites

Item Requirement Notes
Controller SIMATIC S7-300 with DP master port (CPU 315-2 DP / CPU 317-2 DP / CPU 319-3 PN/DP) DP master interface required; PN-only CPUs need CM 1243-1 equivalent or external DP/PN coupler
Engineering STEP 7 V18 (TIA Portal) or STEP 7 V5.6 with optional HSP TIA Portal recommended for modern projects
VFDs Four PROFIdrive-compliant drives with PROFIBUS option Common makes: Siemens SINAMICS V90/G120, ABB ACS580 with FPBA-01, Danfoss FC 302 with MCA 101
GSD files Latest GSD/GSDML from each drive vendor Import via TIA Portal → Options → Manage device description files (GSD)
PROFIBUS cable PROFIBUS DP cable, purple, terminated at both ends (220 Ω on each terminator) Maximum segment length depends on baud rate (1.5 Mbit/s = 200 m)
HMI SIMATIC Comfort Panel or WinCC Runtime Tags mapped to PLC DBs
Note: Drives from different vendors can coexist on the same PROFIBUS segment only if their GSD files do not collide on PROFIBUS address assignments and if all conform to the PROFIdrive profile (PNO order no. 3.172). Verify profile version in each drive's manual before commissioning.

PROFIdrive Profile and PZD Telegram Structure

The PROFIdrive profile defines the cyclic I/O between the PROFIBUS master and the drive. The drive's GSD exposes standard telegrams the master selects.

Standard Telegram 1 PZD Layout

PZD Word Direction Mnemonic Meaning
PZDW1 (output) PLC → Drive STW1 Control Word 1
PZDW2 (output) PLC → Drive NSOLL_A Speed setpoint, 16-bit normalized (4000h = 100 %)
PZDW1 (input) Drive → PLC ZSW1 Status Word 1
PZDW2 (input) Drive → PLC NIST_A Actual speed value, 16-bit normalized

Refer to the PROFIdrive Profile Drive Technology (PNO) specification for the complete bit-level definition.

Control Word 1 (STW1) Key Bits

Bit Function Value
0 ON / OFF1 0 = ramp stop (OFF1), 1 = run
1 OFF2 (coast) 0 = coast to stop, 1 = OFF2 inactive
2 OFF3 (quick stop) 0 = quick stop, 1 = OFF3 inactive
3 Enable operation / Inhibit 0 = inhibit, 1 = enable
4 Ramp-function generator enable 0 = freeze RFG, 1 = RFG enable
5 Ramp-function generator freeze 0 = RFG unfrozen, 1 = RFG frozen
6 Setpoint enable 0 = inhibit setpoint, 1 = enable
7 Fault acknowledge 0 → 1 edge resets faults
10 Control by PLC 1 = PLC controls the drive (required for PROFIdrive)

Speed Setpoint / Actual Value Normalization

NSOLL_A and NIST_A are 16-bit signed values normalized as:

Normalized_Value = (Percent_of_Rated_Speed) × 163.84

Because 100 % = 4000h = 16384 decimal, 50 % maps to 2000h = 8192 decimal. The valid range is C000h to 4000h (representing −200 % to +200 % of rated speed); values outside are clipped by the drive.

TIA Portal Hardware Configuration

  1. Add the S7-300 CPU with a DP master interface in the project view. Place the rack in slot 1 and the CPU in slot 2.
  2. Configure the DP master port: right-click the DP interface → Properties → PROFIBUS settings. Set the master address (default 2), baud rate (1.5 Mbit/s recommended for ≤ 200 m cable runs).
  3. Install the GSD for each VFD: Options → Manage device description files (GSD). Select the .gsd or .gsdml file shipped with the drive. Restart TIA Portal if prompted.
  4. Add drives to the DP master system: drag the VFD from the hardware catalog onto the DP master system. Assign PROFIBUS addresses 3, 4, 5, 6 (one per drive). Match these with the drive's hardware DIP switches.
  5. Select the telegram: in the device view of each drive, slot 0 typically shows the telegram selection. For Standard Telegram 1, the slot configuration becomes 2 PZD words in / 2 PZD words out.
  6. Note the I/O addresses the wizard assigns (e.g., Drive 1 = IW 256 / QW 256; Drive 2 = IW 258 / QW 258). Record these for the program.
Tip: The PROFIBUS address of a drive is set by DIP switches or via its parameter p918. If using parameter p918, ensure the drive is fully de-energized or in commissioning state when changing it, and run a power cycle after.

PLC Program Structure

Recommended structure for a four-drive master-slave system:

Block Type Purpose
DB 100 Global DB Master reference, per-drive individual setpoints, per-drive actual values, status word mirror
FC 10 FC Calculate combined setpoint for one drive (call 4× in OB 1)
FC 11 FC Pack control word, dispatch setpoint to each drive's QW
FC 12 FC Unpack actual speed and status from each drive's IW
OB 1 OB Main cyclic call of FC 10, FC 11, FC 12
OB 82 OB Diagnostic interrupt handling (PROFIBUS slave diagnostics)
OB 86 OB Rack/DP slave failure

Data Block Layout (DB 100)

DATA_BLOCK "DB_VFD_Coord"
TITLE = VFD Coordination Data
VERSION : 0.1
  STRUCT
    MasterPct : REAL;        // 0.0 - 100.0, from HMI
    Drive1_IndividualPct : REAL;  // 0.0 - 100.0, from HMI
    Drive2_IndividualPct : REAL;
    Drive3_IndividualPct : REAL;
    Drive4_IndividualPct : REAL;
    Drive1_CombinedPct : REAL;    // computed
    Drive2_CombinedPct : REAL;
    Drive3_CombinedPct : REAL;
    Drive4_CombinedPct : REAL;
    Drive1_NSOLL : INT;       // normalized 0 - 16384 (0x0000 - 0x4000)
    Drive2_NSOLL : INT;
    Drive3_NSOLL : INT;
    Drive4_NSOLL : INT;
    Drive1_STW : WORD;        // control word to drive 1
    Drive2_STW : WORD;
    Drive3_STW : WORD;
    Drive4_STW : WORD;
    Drive1_ZSW : WORD;        // status word from drive 1
    Drive2_ZSW : WORD;
    Drive3_ZSW : WORD;
    Drive4_ZSW : WORD;
    Drive1_NIST : INT;        // actual speed normalized
    Drive2_NIST : INT;
    Drive3_NIST : INT;
    Drive4_NIST : INT;
  END_STRUCT;
END_DATA_BLOCK

Master-Slave Setpoint Calculation Logic

The PLC multiplies the master percentage by the per-drive individual percentage, producing a combined setpoint. This is then normalized to the PROFIdrive range and written to the NSOLL_A word.

SCL Implementation (FC 10)

FUNCTION "FC_CalcCombinedSetpoint" : VOID
TITLE = Calculate combined setpoint for one drive
VAR_INPUT
    iMasterPct        : REAL;   // 0.0 - 100.0
    iIndividualPct    : REAL;   // 0.0 - 100.0
END_VAR
VAR_OUTPUT
    oCombinedPct      : REAL;   // 0.0 - 100.0
    oNSOLL_Normalized : INT;    // 0 - 16384 (0x4000h = 100 %)
END_VAR
BEGIN
    // Clamp inputs
    IF iMasterPct < 0.0   THEN iMasterPct := 0.0;   END_IF;
    IF iMasterPct > 100.0 THEN iMasterPct := 100.0; END_IF;
    IF iIndividualPct < 0.0   THEN iIndividualPct := 0.0;   END_IF;
    IF iIndividualPct > 100.0 THEN iIndividualPct := 100.0; END_IF;

    // Combined percentage = master × individual / 100
    oCombinedPct := (iMasterPct * iIndividualPct) / 100.0;

    // Convert to PROFIdrive normalized: 100 % = 16384
    oNSOLL_Normalized := REAL_TO_INT(oCombinedPct * 163.84);

    // Clamp to valid range
    IF oNSOLL_Normalized < 0      THEN oNSOLL_Normalized := 0;      END_IF;
    IF oNSOLL_Normalized > 16384  THEN oNSOLL_Normalized := 16384;  END_IF;
END_FUNCTION

LAD Equivalent (One Drive)

For engineers who prefer ladder, the equivalent ladder diagram is shown below as an inline styled SVG. Inputs are DB100.DBX0.0 (Master INT), DB100.DBW2 (Drive1 individual INT). Output is DB100.DBW20 (Drive1 NSOLL INT).

Master % MUL_R DIV_R 100.0 MUL 163.84 ROUND NSOLL Combined % = Master × Individual ÷ 100 Ladder rung 2: Clamp combined to 0 - 100 (LIMIT box, omitted for brevity) Ladder rung 3: Convert REAL → INT (ROUND), clamp to 0 - 16384 Ladder rung 4: Write INT to DB100.DBW20 (Drive 1 NSOLL)

Drive Control Word Packing and Dispatch (FC 11)

Each drive requires its STW1 to be written to QW 256, QW 258, QW 260, QW 262 respectively. A typical STW1 word for "Drive running, controlled by PLC, ramp enabled, setpoint enabled" is:

STW1 = 0x047F = 0000 0100 0111 1111b

Bit # 10 9 8 7 6 5 4 3 2 1 0
Value 1 0 0 0 1 0 0 1 1 1 1

(Bit 10 = control by PLC, bit 6 = setpoint enable, bit 3 = enable operation, bit 2 = OFF3 inactive, bit 1 = OFF2 inactive, bit 0 = ON.)

LAD Example: Write Control Word and Setpoint to One Drive

NETWORK 1  // Drive 1 STW
      A   "Start_Cmd"          // global run command
      =   L 0.0
      AN  "Fault_Active"
      =   L 0.1
      O   "Fault_Ack_PB"
      =   L 0.2

      SET
      =   L 0.3

      // Pack STW1 = 0x047F when running, 0x047E when stopped
      L   W#16#047F
      T   "DB_VFD_Coord".Drive1_STW

NETWORK 2  // Drive 1 NSOLL dispatch
      L   "DB_VFD_Coord".Drive1_NSOLL
      T   PQW 256
Important: When the drive is OFF (STW1 bit 0 = 0), NSOLL must still be written to maintain the PROFIBUS handshake; otherwise many drives will fault with F08501 (PROFIBUS watchdog) after the configured monitoring time. Either keep NSOLL updated or set STW1.0 = 0 to disable but keep the PZD valid.

Reading Back Status and Actual Speed (FC 12)

NETWORK 1  // Drive 1 ZSW read
      L   PIW 256        // status word from drive 1
      T   "DB_VFD_Coord".Drive1_ZSW

NETWORK 2  // Drive 1 NIST actual speed
      L   PIW 258
      T   "DB_VFD_Coord".Drive1_NIST

NETWORK 3  // Convert NIST to percent
      L   "DB_VFD_Coord".Drive1_NIST
      ITD
      DTR
      L   1.6384e+04
      /R
      T   "DB_VFD_Coord".Drive1_ActualPct

Drive-Side Parameter Configuration

Each drive must be told to expect PROFIdrive telegrams. The exact parameter depends on the drive vendor:

Manufacturer PROFIBUS Telegram Select Source of Control Source of Setpoint Reference Frequency
Siemens SINAMICS G120 (CU240E-2 DP) p922 = 1 p085 = 1 (PROFIdrive) p1070 = 2050[1] (NSOLL_A) p2000 = 50 Hz (or 60)
ABB ACS580 + FPBA-01 51.05 = PROFIdrive, 51.02 = Standard Telegram 1 10.01 = EXT1 (fieldbus) 22.11 (Speed ref 1) = FB ref 1 19.01 = 50 Hz
Danfoss FC 302 + MCA 101 8.10 = PROFIdrive profile 8.01 = [3] FC port 3.10 = 0 (PROFIdrive NSOLL) 1.25 = Motor nominal speed
Yaskawa A1000 SI-P3 b1-01 = 3 (PROFIdrive) b1-02 = 3 (Opt) ol-03 = NSOLL E1-04 = 60 Hz
Verify against the official parameter manual for each drive; the table above is illustrative only. Reference Siemens SINAMICS G120 Operating Instructions, ABB ACS580 Firmware Manual, and similar vendor documentation.

HMI Integration

Tags to Expose

HMI Tag PLC Address Display Range
Master_Setpoint DB100.DBD0 (REAL) Slider 0–100 % 0.0 – 100.0
Drive1_Setpoint DB100.DBD8 (REAL) Slider 0–100 % 0.0 – 100.0
Drive1_Combined DB100.DBD24 (REAL) Read-only numeric 0.0 – 100.0
Drive1_ActualHz DB100.DBD40 (REAL, scaled from NIST) Read-only numeric 0.00 – 60.00
Drive1_Status DB100.DBW44 (WORD) Bit indicators —
System_Start M0.0 Pushbutton 0 / 1
System_Stop M0.1 Pushbutton 0 / 1
Fault_Ack M0.2 Pushbutton Edge 0→1

Use WinCC Comfort or WinCC Professional with standard Siemens HMI Operating Manual conventions. Map REAL tags to a slider with limit value 100.0 and a process value limit indicator; tag scaling is direct.

Commissioning Procedure

  1. Hardware pre-check. With power OFF, measure PROFIBUS terminator resistance across the cable end pins: should read 220 Ω at each end with no device connected in the middle.
  2. Bring up the PLC. Connect STEP 7 to the CPU via MPI/PN. Download hardware configuration only — do not download program yet.
  3. Verify PROFIBUS in TIA Portal → Online → Accessible nodes. Confirm all four VFDs appear with their assigned addresses.
  4. Set drive PROFIBUS address via p0918 (Siemens) or equivalent parameter, then cycle drive power.
  5. Configure telegram. Select Standard Telegram 1 in each drive's p0922 (Siemens) or equivalent.
  6. Force an STW1 of 0x047E (OFF1 true, no run) from a watch table and verify the drive echoes ZSW1 with bit 0 = "ready to switch on" and bit 1 = "ready" set.
  7. Force NSOLL = 0x1000 (25 %) in the same watch table and confirm NIST_A echoes a value close to 0x1000 when the motor is rotating.
  8. Disable drive enable (STW1 bit 3 = 0), download the full PLC program, then go online and toggle bit 3 — motor should run only when STW1.3 = 1.
  9. Test the master multiplier: set master = 25 %, drive 1 individual = 50 %. Verify drive 1 frequency = 7.5 Hz on a clamp meter or in the drive's monitoring parameter (e.g., r0021 on SINAMICS).
  10. Test ramp behavior: change master from 0 % to 100 % in steps. Confirm drive internal ramp time (p1120 on Siemens) governs the transition, not the PLC cycle.
  11. Test fault propagation: force a fault on drive 3 via a drive-side test command. Verify ZSW1 bit 3 sets in DB100 and OB 86 / OB 82 report the diagnostic event in the PLC diagnostic buffer.
  12. Validate HMI: confirm all sliders move the corresponding DB values and the read-back frequencies match clamp-meter readings within ±2 %.

Verification and Diagnostics

Online Watch Tables

Create two watch tables in TIA Portal:

  • VT_Setpoints: Monitor DB100.DBD0 (Master), DB100.DBD8 (Drive1 ind), DB100.DBD24 (Drive1 combined), DB100.DBW20 (Drive1 NSOLL hex). Expected: NSOLL ≈ combined × 163.84.
  • VT_DriveStatus: Monitor PIW 256/258/260/262 (ZSW1) and PIW 258/260/262/264 (NIST_A). Expected: ZSW1 bit 0 = 1 when running; NIST_A ≈ NSOLL when at setpoint.

Diagnostic Buffer

The PLC diagnostic buffer (STEP 7 → Online → Diagnostics → Diagnostic Buffer) will log PROFIBUS slave diagnostics as OB 82 events and rack failures as OB 86. The drive's fault code (e.g., F07900, F08501) is typically surfaced through the drive's parameter r0947 and can be read by adding parameter access via PROFIBUS DPV0 acyclic calls or via PROFIdrive parameter channel (PKE/IND/PWE in Telegram 4 or 7).

Troubleshooting Matrix

Symptom Likely Root Cause Action
Drive does not respond to STW1 Source of control not set to PROFIdrive Verify p085 = 1 (Siemens) or equivalent; cycle drive power
NIST_A echoes back as 0 NSOLL never written or scaled incorrectly Check NSOLL writes; verify hex value via watch table
Motor reaches wrong frequency Reference frequency (p2000) mismatch Set p2000 to base motor frequency (e.g., 50 or 60 Hz)
Drive faults F08501 PROFIBUS watchdog timeout — NSOLL/STW stopped being written Keep NSOLL and STW updated every cycle; or disable watchdog with p2040 = 0
Drive ramps too fast or slow Ramp time (p1120/p1121) not tuned Adjust drive ramp parameters, not the PLC scan
Combined setpoint always 0 Master or individual percentage uninitialized Initialize DB100 real fields with 0.0; ensure HMI writes succeed
Master change does not propagate to drives HMI tag not linked to DB100.DBD0 Re-link HMI tag; force write from watch table to confirm
One drive lags the others PROFIBUS address conflict or poor termination Re-check addresses; measure terminator resistance
Master percentage capped incorrectly Integer truncation when scaling to NSOLL Use REAL math (SCL MUL_R / DIV_R) instead of integer
ZSW1 bit 3 (Fault) latches Fault not acknowledged Pulse STW1 bit 7 with a 0→1 edge after fault clears

Edge Cases and Field Tips

Master reduced below individual setpoint: If the master falls below 50 % while a drive's individual setpoint is 80 %, the combined reference becomes 40 %. Because the drive's internal ramp generator follows the new reference, the frequency transitions smoothly. No special PLC logic is required.

Reverse direction: If reverse is required, drive direction is encoded as the sign of NSOLL_A (negative values). Extend the calculation:

NSOLL_signed := CombinedPct × Direction (-1 or +1) × 163.84

The direction signal comes from a separate bit in STW1 (bit 11 in some implementations) or from a separate output word. Verify with the drive's PROFIdrive mapping.

Different base frequencies per drive: If drives 3 and 4 are 50 Hz while drives 1 and 2 are 60 Hz, replace the single combined percentage with a per-drive scaled REAL using the drive's base:

Drive1_Hz := CombinedPct × 60 / 100

Normalize to NSOLL using each drive's own p2000 / base frequency. This keeps the math in the PLC consistent while letting the drive apply its own ramp and limits.

Fault handling across the group: Tie STW1 bit 0 (ON/OFF1) for all four drives to a single system-start bit in the PLC. Drive-specific faults can be read from ZSW1 bit 3; on detection, clear STW1.0 for that drive alone while letting the others run, or stop the entire system depending on process requirements.

PROFIBUS cycle time vs. PLC scan time: PROFIBUS DP cycles are configured per slave (typically 2–4 ms). The PLC OB 1 cycle must be faster than the PROFIBUS cycle, or output PZDs may be overwritten by stale values. Confirm OB 1 priority and cycle in TIA Portal diagnostics.

Replacing the S7-300 with S7-1500: The same PROFIdrive logic applies; the S7-1500 can use the same Telegram 1 PZD structure. The block library changes (DB/FB) but the control word and setpoint normalization remain identical. Consult the S7-1500 Motion Control Function Manual for migration.

Frequently Asked Questions

What PROFIdrive telegram should I select for a simple speed-controlled VFD on S7-300?

Use Standard Telegram 1, which is 2 PZD in / 2 PZD out: STW1 + NSOLL_A → drive, ZSW1 + NIST_A → PLC. This is the minimum required for speed control and is supported by virtually every PROFIdrive-compliant drive.

How do I scale the master percentage (0–100 %) to the PROFIdrive NSOLL_A word?

Multiply the combined percentage by 163.84 and round to INT. For example, 50 % → 8192 decimal = 0x2000. Valid range is 0xC000 to 0x4000; clamp outside this window before writing.

Why does the drive fault with F08501 shortly after I stop writing NSOLL?

F08501 is the PROFIBUS watchdog timeout. The drive expects the PLC to refresh NSOLL_A and STW1 within the configured monitoring time (default typically 100 ms). Keep the PZD write every PROFIBUS cycle, or set p2040 = 0 to disable the watchdog.

Should I use analog cascade (PLC AO → Drive1 AI → Drive2 AI) instead of PROFIBUS?

For four coordinated drives, PROFIBUS is preferred: it gives discrete diagnostics, deterministic timing, and lets the HMI read back actual speed. Analog cascade is acceptable when no PLC programming is available and fewer drives are involved, but it sacrifices per-drive feedback and precision.

How does the drive ramp when the master setpoint changes if the PLC only changes NSOLL?

The drive's internal ramp-function generator handles the transition. Tune p1120 (ramp-up time) and p1121 (ramp-down time) on the drive to match the mechanical system. The PLC sends the new target; the drive smoothly moves to it. Do not attempt to ramp inside the PLC unless the drive's ramp is unsuitable.

Can I read the drive's fault number (e.g., F07900) over PROFIBUS?

Yes, via the PROFIdrive parameter channel in Telegram 4 or 7 (PKE/IND/PWE words). In TIA Portal, use the SFB/SFB52 "RDREC" or "WRREC" or use the standard PROFIdrive function blocks for parameter access. The fault code is in parameter r0947 (Siemens); map equivalent parameters for other vendors.

Back to blog