NIP Roll Rewinder Tension Control: Dancer PID Loop Design

David Krause20 min read
PID ControlSiemensTechnical 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

NIP Roll Rewinder Tension Control: Dancer PID Loop Design

Slitting, extrusion, paper, foil, and wire drawing lines depend on a NIP roll driven by a DC drive to maintain constant web tension as the rewind diameter grows, surface speed drifts, or supply tension changes. The classical and field-proven approach is a dancer-closed loop in which the controller reads a 0–10 V speed reference from an upstream tachogenerator, adds a small ±3 % to ±10 % trim derived from a dancer position sensor, and commands the NIP roll drive. This reference documents the signal chain, scaling math, PID tuning, and implementation on a Siemens SIMATIC S7-1200 (TIA Portal) and an AutomationDirect DL06 (DirectSOFT) so the design can be lifted directly into a retrofit on a legacy DC drive such as the Parker/Eurotherm SSD590+ or an ABB DCS800.

1. Application Overview

A NIP roll rewinder is a slip-driven take-up roll that pulls film, foil, paper, or wire from a preceding process (extruder die, pay-off, or upstream winder) and feeds the rewind station. The NIP roll is typically the lowest-inertia element in the line and is therefore the natural place to absorb disturbances and hold tension.

Two control philosophies dominate:

  • Speed reference trim with dancer feedback. The NIP roll drive receives a master speed reference (typically 0–10 V from a tachogenerator geared to the upstream roll) and superimposes a small correction proportional to dancer position. The correction is a PID output in the order of 3 % to 10 % of full scale. This is the topology in the original application question.
  • Torque (current) reference with dancer feedback. The rewind motor is commanded in current/torque mode from the dancer signal directly, while a master drive elsewhere sets the line speed. The winder simply "pulls hard enough" to maintain the dancer. Typical pulling force is 5 % to 15 % of motor rated current.

For retrofit work on a DC drive that has only a 0–10 V speed reference input, the speed-trim approach is the lowest-effort path. The torque approach is preferred on new installations where the drive natively supports torque-mode (ABB DCS800 with the Winder Application Module, Siemens SIMATIC Winder and Tension Control LConSMC, or Rockwell Automation Center-Driven Winder sample code).

2. Mechanical and Electrical Topology

Note: The figure assumes a two-stand rewind in which the upstream roll acts as the master and the NIP roll acts as the follower. A single-stand rewind where the NIP roll is also the rewind core drive uses the same signal chain; the second drive is simply the rewind itself.

Upstream Roll(Master) NIP RollDC Drive M1 Dancer(Pot / Load Cell) Rewind Core(M2 Follower) Tach Tach 50 V / 1000 RPM 0–10 V position PLC — S7-1215C or DL06 AI0: Master Tach 0–10 V AI1: Dancer 0–10 V AQ0: Speed Ref 0–10 V DOut: Drive Enable DC Drive DCS800 / SSD590+ 0–10 V Speed Ref

The PLC receives two analog inputs and produces one analog output. A digital output enables the drive. No encoder is required on the NIP roll because the loop is closed on dancer position, not on roll speed.

3. Hardware Selection

Function Component Catalog / Part Notes
Master PLC (preferred) Siemens SIMATIC S7-1215C DC/DC/DC 6ES7215-1AG40-0XB0 2 AI in, 2 AQ onboard; expand with SM 1234 if 4 AI required
Analog I/O expansion Siemens SM 1234 AI/AQ 6ES7234-4HE32-0XB0 4 AI / 2 AQ, ±10 V, 12-bit + sign, 0.3 % accuracy
Alternative PLC AutomationDirect DL06 D0-06DD2 or D0-06DR 4 AI (0–10 V) on D0-06AD; 2 AO via D0-06DA
DC drive (modern) ABB DCS800-S02 DCS800-S02-0040-04 Supports analog speed ref and torque ref modes
DC drive (legacy retrofit) Parker/Eurotherm SSD590+ 590+ 4Q 30 A 0–10 V at terminal A1; +10 V ref at terminal A2
Master tachogenerator 50 V / 1000 RPM DC tach Any 50 V/1000 unit sized to max line RPM Output 0–50 VDC; scaled to 0–10 V with precision divider
Dancer sensor Linear potentiometer or load cell 0–10 V output, mid-position = 5 V Linear pot with dual ±15 V supply typical
Tach signal conditioner Voltage divider / isolator Phoenix Contact MINI MCR-2-UI-UI Provides isolation and 0–10 V output from 0–50 V tach
Note: For new builds, ABB's DCS800 Winder Application Module (WAM) and Siemens' SIMATIC Winder and Tension Control (LConSMC) provide ready-made tension blocks that handle diameter build-up, taper tension, and inertia compensation. See ABB DCS800 Winder Application — Indirect Torque Control, Part 1 and Siemens SIMATIC Winder and Tension Control (LConSMC) for vendor-implemented solutions.

4. Analog Signal Scaling

All three analog channels in this architecture share the same 0–10 V (or 4–20 mA) convention. The PLC must convert each raw count into engineering units before PID math and back into output counts for the drive.

4.1 Master tach scaling

A 50 V / 1000 RPM tachogenerator with a 5:1 voltage divider produces 0–10 V at 0–1000 RPM. The divider resistor pair must be precision 0.1 % or better to keep the master reference stable; 10 kΩ / 40 kΩ is a common choice. The PLC scales input counts to RPM:

RPM = (RawCounts / 27648) × 1000

Where 27648 is the S7-1200 default full-scale count for a unipolar 0–10 V input on an SM 1234. For an AutomationDirect DL06 with a 0–4095 count range, the equivalent scaling is:

RPM = (RawCounts / 4095) × 1000

4.2 Dancer scaling

The dancer is positioned so that the mid-point of travel corresponds to 5 V. The PLC normalizes the dancer to ±100 % of span:

DancerPct = ((Volts - 5.0) / 5.0) × 100

A reading of 2.5 V (dancer near floor) returns −60 %; a reading of 7.5 V (dancer near ceiling) returns +60 %.

4.3 Drive output scaling

The PLC output is the speed reference for the DC drive. The reference is the sum of the master speed command and the PID correction:

OutVolts = MasterVolts × (MasterGain) + PID_Output

Where MasterGain is typically 1.0 for a 1:1 follower and the PID_Output is clamped to ±10 % of full scale (1 V peak) to keep the trim from racing the drive during a fault.

5. Dancer Control Theory

A dancer is a free, spring- or counter-weight-loaded roller whose vertical position reflects the integral of web tension over time. If the NIP roll pulls more web than the upstream roll supplies, the dancer rises (less tension); if it pulls less, the dancer falls (more tension). The dancer therefore acts as an integrating sensor of tension, which makes it the most stable feedback variable in a web line: it cannot drift with roll diameter or absolute line speed.

The transfer function from a small change in NIP roll surface speed to a change in dancer position is approximately first-order with a time constant equal to the time it takes web to traverse the span between the NIP roll and the dancer roller, plus the dancer's own inertia:

τ_span = L / v

Where L is the span in meters and v is web speed in m/s. For L = 1 m and v = 5 m/s, τ_span = 0.2 s. The dancer's mechanical time constant adds another 0.2–0.5 s depending on roller mass and spring stiffness. The closed-loop crossover should be at least 3× slower than the slowest open-loop pole to avoid oscillation, which is why dancer loops in production are typically tuned with a derivative action time of 1–3 s and an integral action time of 0.5–2 s, not the sub-second response some integrators instinctively configure.

Field note: At higher line speeds (above 1000 ft/min, ≈ 5 m/s), an over-damped loop is a far smaller problem than an under-damped one. A PID integral time of approximately 2 s with derivative time of 0.5 s has proven stable across wire-drawing and film-rewind applications spanning 100 to 3000 ft/min. Resist the temptation to lower the integral time below 0.5 s on a NIP roll only; the roll has low inertia and the loop will oscillate audibly in the dancer.

6. PID Loop Configuration

Use the standard ISA parallel form. The PLC's PID block outputs a percentage of the output span, which is then added to the master speed reference and re-scaled to volts.

Parameter Symbol Initial Value (Film Rewind) Initial Value (Wire Draw) Range
Setpoint (dancer mid-position) SP 5.0 V (0 %) 5.0 V (0 %) 0–10 V
Proportional gain Kp 1.5 0.8 0.1–10.0
Integral action time Ti 2.0 s 2.0 s 0.5–30 s
Derivative action time Td 0.0 s 0.5 s 0.0–5.0 s
Output upper limit LMN_HLM +10 % +10 % 0–100 %
Output lower limit LMN_LLM −10 % −10 % −100–0 %
Sample time (cycle) CYCLE 100 ms 100 ms 10–500 ms

The error sign convention must be correct. With a dancer that rises on loss of tension and falls on excess tension, the loop sign depends on which way you wire the NIP roll drive:

  • If the drive increases surface speed with a more positive voltage command, then a high dancer (low tension) requires a higher trim → error = SP − PV → positive correction raises drive output. Sign: direct.
  • If the drive was wired in reverse (uncommon in DC analog inputs, but check during commissioning), the sign must be reversed.

7. Speed Reference Math

The final voltage command to the drive in volts is:

V_cmd = (V_master × 1.0) + (PID_out × 0.10)

The 0.10 multiplier scales the PID output (which is in percent of output span) into ±10 % of full drive reference, i.e. ±1 V. The 1.0 multiplier on the master is a one-to-one follower; some lines use 0.95–1.05 to bias the line slightly faster or slower than the upstream roll when the dancer is at mid-position.

For a rewind whose diameter grows from 200 mm to 800 mm, the surface speed of the rewind is held constant by reducing its RPM. The NIP roll does not have this issue: it has a fixed diameter and its RPM command in volts maps linearly to surface speed. The controller does not need diameter math for the NIP roll itself, only for the rewind core if it is in a torque loop.

8. S7-1200 Implementation in TIA Portal

Use the PID_Compact instruction from the S7-1200 instruction set. Wire the inputs as follows in the data block:

// Data block "Tension_DB" for NIP roll rewind tension loop
DATA_BLOCK "Tension_DB"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
NON_RETAIN
   STRUCT
      // Process values (engineering units)
      MasterRPM       : REAL;   // RPM from master tach
      MasterVolts     : REAL;   // 0..10 V scaled
      DancerVolts     : REAL;   // 0..10 V from dancer pot
      DancerPct       : REAL;   // -100..+100 % of span
      SetpointVolts   : REAL := 5.0;   // mid position
      PID_OutputPct   : REAL;   // -10..+10 % trim
      DriveCommandV   : REAL;   // 0..10 V final
      // PID configuration
      Gain            : REAL := 1.5;
      TI              : REAL := 2.0;   // integral action time (s)
      TD              : REAL := 0.0;   // derivative action time (s)
      Cycle           : REAL := 0.1;   // sample time (s)
      LMN_HLM         : REAL := 10.0;  // upper output limit %
      LMN_LLM         : REAL := -10.0; // lower output limit %
   END_STRUCT;
END_DATA_BLOCK

FB in cyclic OB1:

// OB1 - Main cyclic
// Scale AI0 (IW64) from 0..27648 counts to 0..10 V
Tension_DB.MasterVolts := INT_TO_REAL(IW64) / 2764.8;
Tension_DB.MasterRPM  := Tension_DB.MasterVolts * 100.0;

// Scale AI1 (IW66) from 0..27648 counts to 0..10 V
Tension_DB.DancerVolts := INT_TO_REAL(IW66) / 2764.8;

// Normalize dancer to +/-100 %
Tension_DB.DancerPct := ((Tension_DB.DancerVolts - 5.0) / 5.0) * 100.0;

// PID_Compact instance "PID_Dancer"
PID_Dancer(
    Setpoint        := Tension_DB.SetpointVolts,
    Input           := Tension_DB.DancerVolts,
    Input_PER       := IW66,
    ManualEnable    := FALSE,
    ManualValue     := 0.0,
    // Limits set inside PID_Compact configuration
    Output          => Tension_DB.PID_OutputPct,
    OutputPER       => QW64
);

// Combine master + trim, clamp to 0..10 V
Tension_DB.DriveCommandV := Tension_DB.MasterVolts
                          + (Tension_DB.PID_OutputPct * 0.10);
IF Tension_DB.DriveCommandV > 10.0 THEN
    Tension_DB.DriveCommandV := 10.0;
END_IF;
IF Tension_DB.DriveCommandV < 0.0 THEN
    Tension_DB.DriveCommandV := 0.0;
END_IF;

// Output 0..10 V on AQ0 (QW64) - already driven by PID_OutputPER above;
// for combined reference, scale to 0..27648 and write QW64 explicitly
QW64 := REAL_TO_INT(Tension_DB.DriveCommandV * 2764.8);

Configuration inside PID_Compact (TIA Portal V15+):

  1. Set Input scaling: 0–10 V corresponds to 0.0–10.0 (engineering units of volts).
  2. Set Output scaling: OutputPER scaled to 0.0–10.0 with OutputPER limits of 0 V / 10 V (use OutputPER for the trim only; the combined reference is written by OB1).
  3. Set Basic settings: Gain = 1.5, TI = 2.0 s, TD = 0 s (start with no derivative for film).
  4. Set Output limits: LMN_HLM = 10.0, LMN_LLM = −10.0.
  5. Set Process value limits: PV_FAC = 1.0, PV_OFF = 0.0.
  6. Configure the cycle time to 100 ms via the cyclic interrupt OB (OB30 to OB38).
Note: The S7-1200 PID_Compact block computes its own output in percent. The example above uses OutputPER (the analog output) for the trim channel and adds it to the master in OB1. If you need the combined reference on a single AQ, write QW64 from OB1 as shown. Reference the S7-1200 System Manual, Chapter on PID Control, for the exact configuration dialog and CPU firmware version compatibility (CPU firmware V4.0 or higher is required for PID_Compact).

9. AutomationDirect DL06 Implementation in DirectSOFT

The DL06 supports PID through the PD instruction. The structure differs from the S7-1200 but the math is identical.

// Rung 1: Scale V40400-40401 (master tach 0-10 V, 0-4095 counts) to 0-100 %
SP0  V4000         // master % = (counts/4095)*100

// Rung 2: Scale V40410-40411 (dancer 0-10 V) and convert to +/-100 %
SP1  V4010         // dancer % span = (counts/4095)*100

// Rung 3: Compute dancer deviation from setpoint 50 %
LD   V4010
SUB  K50
STO  V4020         // V4020 = -100..+100 error

// Rung 4: PD instruction - dancer loop
PD   K1500         // gain Kp=1.5
     V4020         // error input
     K2000         // integral time Ti=2.0 s (in 0.01 s units = 200)
     K0            // derivative time Td=0
     K10           // LMN_HLM = +10 %
     K-10          // LMN_LLM = -10 %
     V4030         // PID output %

// Rung 5: Combine master and trim, scale to 0-4095 counts on V40420-40421
LD   V4000         // master %
ADD  V4030         // trim %
MUL  K4095
DIV  K100
STO  V40420

DirectSOFT 6's PD instruction accepts gain in 0.01 units (K1500 = 1.50) and integral time in 0.01 s units (K2000 = 2.00 s). Output limits are in percent. The combined reference is written to V40420/V40421 which the D0-06DA module scales to 0–10 V at the analog output.

10. Commissioning Procedure

  1. Verify wiring. With drive disabled, measure the tach input at the PLC AI terminal. At 0 RPM the input should be 0 V ±0.05 V; at 1000 RPM it should be 10.00 V ±0.05 V. Measure the dancer input at 0 %, 50 %, and 100 % of travel. The PLC should read 0 V, 5 V, and 10 V respectively.
  2. Check signal polarity. With the drive disabled, slowly increase the master reference from 0 to 2 V by hand or by HMI. Verify the NIP roll turns the correct direction (pulling web, not pushing).
  3. Open-loop ramp test. With PID disabled (output forced to 0 %), ramp master to 30 %, 50 %, 70 %, and 100 % in 5 % steps. The dancer should drift according to supply and demand imbalance. Record the sign of the drift: dancer rising means NIP is pulling too fast; dancer falling means NIP is pulling too slow.
  4. Enable PID with conservative gains. Set Kp = 0.5, Ti = 5.0 s, Td = 0. Load values only after a successful open-loop test.
  5. Tune Kp up. Increase Kp in 0.2 steps. The dancer should respond faster to a disturbance (a hand-pull on the web) without overshoot. Stop increasing Kp when the response begins to oscillate.
  6. Tune Ti down. Decrease Ti in 0.5 s steps. The dancer should return to mid-position faster after a disturbance. Stop decreasing when the response oscillates or the drive current chatters audibly.
  7. Add Td if needed. Derivative time of 0.2 to 0.5 s damps high-frequency chatter from the drive. Use only on stiff lines (wire drawing, foil) — never on soft films.
  8. Run a 30-minute steady-state test. Log the dancer voltage, drive command voltage, and DC link current. The dancer should stay within ±2 % of setpoint. If it drifts, the loop is leaking (often an air bubble in a pneumatic dancer or a sticky pot).
  9. Run a step-load test. Manually pull or release the web for 1 second. The dancer should recover to setpoint within 3 s with no more than two overshoots.

11. Tuning Best Practices

Field-proven rules from production lines running SSD590+, DCS800, and similar DC drives on film, foil, paper, and wire:

  • Never vary the master's speed from the dancer loop. The master is a flow source; the dancer compensates between the master and the rewind. Touching the master through the dancer loop couples the disturbance into both ends of the line and the loop becomes unstable.
  • Use a slow integral time. A dancer loop's job is to remove steady-state error, not to chase transients. Ti = 2.0 s is a good starting point for most film and wire lines. Sub-second Ti on a NIP roll is almost always a sign of over-tuning.
  • Filter the dancer input. Apply a 100–500 ms first-order lag on the raw dancer voltage before it enters the PID block. Potentiometer wipers bounce on web splices; the filter is mandatory on a production line.
  • Clamp the trim. The trim output should never exceed ±10 % of full scale. A dancer runaway that produces 100 % trim will command the drive to maximum speed in a fraction of a second; clamping to ±10 % gives the operator time to react.
  • Add a deadband on the dancer error. Errors smaller than 1 % of span can be ignored. This prevents continuous small adjustments that wear the drive and waste energy. Set the deadband to 0.5 % to 1 % of full span.
  • Use torque mode for high-inertia rewinds. On a rewind core whose inertia grows with the square of the diameter, a torque-mode drive commanded from the dancer will be self-regulating: the dancer falls, the drive pulls harder, the dancer rises. The same feedback with a speed reference requires a diameter calculation that is error-prone. Reference the ABB DCS800 Winder Application Module documentation for indirect torque mode setup.
  • Watch for dancer resonance. The dancer roller has a mechanical resonance with the spring/pneumatic cylinder in the 1–3 Hz band. If the closed-loop response peaks in that band, the loop will excite the resonance. Place the loop crossover at 0.2 Hz or lower for pneumatic dancers.
  • Plan for web break. When the web breaks, the dancer will go hard against one limit and the PID will command the drive to its clamped extreme. Add a current-limit trip on the DC drive set to 110 % of running current; the drive will fault and stop on web break rather than spinning the NIP roll to destruction.

12. Verification and Acceptance Tests

Test Procedure Pass Criterion Instrument
Steady-state at 30 % line speed Run 10 minutes, log dancer V Dancer within ±0.2 V of setpoint PLC HMI trend
Steady-state at 100 % line speed Run 10 minutes, log dancer V Dancer within ±0.2 V of setpoint PLC HMI trend
Step load: 1 s hand pull Apply and release 5 kg load Dancer recovers within 3 s, ≤ 2 overshoots PLC HMI trend + stopwatch
Acceleration ramp: 0 → 100 % in 5 s Command ramp from HMI Dancer peak deviation < 1.0 V PLC HMI trend
Deceleration ramp: 100 → 0 % in 5 s Command ramp from HMI Dancer peak deviation < 1.0 V PLC HMI trend
Reel changeover: empty core → full reel Continuous run through one full rewind No dancer alarm, no drive fault Operator log
Web break simulation Stop upstream feed with line running Drive faults on overcurrent within 2 s Stopwatch + drive fault log
Power-loss ride-through Cut line power, restore after 1 s Line restarts cleanly, no false tension Operator log

13. Cross-Vendor and Modern Alternatives

The trim-PID-on-NIP-roll architecture works on any modern PLC. Cross-vendor alternatives worth evaluating for new builds:

  • Siemens SIMATIC Winder and Tension Control (LConSMC). Pre-engineered function blocks for S7-1500/S7-1200 that include diameter calculation, taper tension, inertia compensation, and torque ramp-up on start. See Siemens support entry 58565043.
  • ABB DCS800 Winder Application Module. Built into the DCS800 firmware; supports direct torque, indirect torque, and speed-control winder modes. See ABB DCS800 Winder Application — Indirect Torque Control, Part 1.
  • Rockwell Automation Center-Driven Winder sample code. Studio 5000 application code for CompactLogix/ControlLogix with variable-diameter tension control. See Rockwell Innovation Center sample code.
  • SEW-Eurodrive Winder Application Module. For MOVIMOT, MOVI-A, or MOVIFIT drives, the Winder application module is a firmware option that adds tension control directly to the drive, offloading the PLC. See the SEW-Eurodrive Winder Application Module manual.

For a single-NIP-roll retrofit with a legacy DC drive and a generic PLC, the trim-PID approach described in this reference is the most economical path and has been proven in production environments from 100 ft/min to 3000 ft/min.

14. Frequently Asked Questions

What PID integral time should I start with on a NIP roll dancer loop?

Start with Ti = 2.0 seconds. Dancer loops on NIP rolls are slow by design; the dancer integrates web tension and the loop should be slower than the mechanical time constant of the dancer itself. Sub-second integral times (Ti < 0.5 s) on a NIP roll almost always produce oscillation.

Should I use a speed reference trim or a torque reference for the rewind drive?

Use a speed reference trim when the drive only accepts a 0–10 V speed input and you have a low-inertia NIP roll. Use a torque reference on a high-inertia rewind core where the diameter grows significantly during the cycle. The torque approach is self-regulating and avoids the diameter math; see the ABB DCS800 Winder Application Module manual for implementation details.

How do I scale a 50 V / 1000 RPM tachogenerator to 0–10 V for the PLC?

Use a precision 5:1 voltage divider (e.g., 10 kΩ in series with 40 kΩ to common, 0.1 % tolerance or better). A signal conditioner such as the Phoenix Contact MINI MCR-2-UI-UI provides isolation and a 0–10 V output in a single DIN-rail device.

Why is the dancer hunting even with conservative PID values?

Three common causes: (1) a noisy dancer potentiometer — add a 100–500 ms first-order input filter; (2) closed-loop crossover is too fast and is exciting the dancer's mechanical resonance in the 1–3 Hz band — lower the loop gain or add a low-pass filter at 0.5 Hz; (3) the loop sign is wrong and the controller is fighting the disturbance rather than correcting it — verify the sign with a step disturbance and reverse the controller sign if needed.

Can I add a taper tension profile as the rewind diameter grows?

Yes, but taper tension requires a torque reference, not a speed reference. The PLC multiplies the dancer-derived torque command by a taper factor (typically 0.7 to 1.0) that decreases as the rewind diameter grows. To do this on a speed reference drive, you would have to compute diameter and convert torque to a speed change, which is not stable across the full speed range. A DCS800 or equivalent drive with a winder application module is the right hardware for taper tension.

What happens to the loop on a web break?

The dancer will go hard against one limit, the PID will command the clamped maximum trim, and the drive will accelerate to clamp speed. Configure the DC drive with a current-limit trip at 110 % of running current; the drive will fault and stop within 1–2 seconds, protecting the NIP roll from an over-speed condition. Always test the web-break response before putting a new winder into production.

Do I need an encoder on the NIP roll?

No. The dancer is the feedback variable; the loop is closed on dancer position, not on NIP roll speed. The NIP roll has a fixed diameter so its voltage-to-speed relationship is constant and does not need a tachometer. An encoder on the NIP roll would be redundant and would introduce a second, faster feedback path that would fight the dancer loop.

Back to blog