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 |
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
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
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).
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
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 |
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
- 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.
- Bring up the PLC. Connect STEP 7 to the CPU via MPI/PN. Download hardware configuration only — do not download program yet.
- Verify PROFIBUS in TIA Portal → Online → Accessible nodes. Confirm all four VFDs appear with their assigned addresses.
- Set drive PROFIBUS address via p0918 (Siemens) or equivalent parameter, then cycle drive power.
- Configure telegram. Select Standard Telegram 1 in each drive's p0922 (Siemens) or equivalent.
- 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.
- Force NSOLL = 0x1000 (25 %) in the same watch table and confirm NIST_A echoes a value close to 0x1000 when the motor is rotating.
- 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.
- 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).
- 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.
- 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.
- 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.