WDR_WinderControl (FB)
FUNCTION_BLOCK WDR_WinderControl
Description : This function block coordinates all related function blocks required for operating various web winding modes. It manages supporting modules such as Feedback Converter, Diameter Calculation, and Mechanical Compensation. The block supports both winding, rewinding amd line feeder operations across multiple control modes.
Key Features:
WinderMode and WinderControlMode :
Below are listed supported mode of combinations for WinderMode and WinderControlMode
REWINDER/UNWINDER MODES (Variable Diameter):
THREADING_CONTROL - Manual speed control mode for material threading.
LINE_SPEED_CONTROL - Line speed control.
TENSION_SPEED_TRIM - Line speed control + Tension speed trim
TORQUE_SPEED_TRIM - Line speed control + Torque speed trim
OPEN_LOOP_TORQUE - Internal PID using set tension vs motor torque feedback, output is speed reference.
TENSION_TORQUE_TRIM - Line speed control + Tension torque offset
DANCER_SPEED_TRIM - Line speed control + Dancer speed trim
LINE FEEDER MODES (Fixed Diameter):
THREADING_CONTROL - Manual speed control mode for material threading.
LINE_SPEED_CONTROL - Speed control
TENSION_SPEED_TRIM - Line speed control + Tension speed trim
TORQUE_SPEED_TRIM - Line speed control + Torque speed trim
OPEN_LOOP_TORQUE - Torque PID using motor torque feedback, output is speed reference.
Note : In all above mode drive operating mode is speed control.
WinderDirection
Clockwise - Motor rotates in positive direction
Counter clockwise - Motor rotates in negative direction
WinderStopParameter
Stop by diameter - Winder stops automatically when ActRollDiameter reaches set diameter value
Stop by material length - Winder stops automatically when accumulated material length reaches set value
Stop by time - Winder stops automatically after elapsed time reaches set duration
Continuous - TRUE, Then winder process will continue till manual WinderStop triggered. This configuration can be used with line feeder roller control mode.
Immediate stop - Winder stops immediately when WinderStop command is TRUE
Continuous - Winder process will continue till manual WinderStop triggered.
SpeedRefParameter
Configures acceleration and deceleration ramp times for line speed reference.
Separate ramp times for threading mode and winding mode.
LineStopRampTime provides emergency stop ramp override.
MaxLineSpeed limits maximum web speed for safety.
Matching parameters enable speed trim when dancer/tension control active.
WebTensionRefPara
Configures web tension reference and taper profile for winding.
MaxWebTension sets upper limit for tension setpoint.
TaperMode selects taper calculation method (linear, exponential, etc.).
TaperRange defines tension reduction percentage from start to end.
TaperStartPoint/EndPoint define diameter range where tapering occurs.
WebTensionRefPara
Configures acceleration and deceleration ramp times for dancer position reference.
TrimPIDParameter
Configures PID controller parameters for trim PID control loops.
Supports fixed or adaptive PID tuning based on roll diameter.
AdaptationEnable: TRUE = PID adapts between Set1 (empty roll) and Set2 (full roll).
AdaptationEnable: FALSE = Uses only Set1 parameters (fixed PID).
Set1 parameters: PGainSet1, ITimeSet1, DTimeSet1 (empty roll or fixed mode).
Set2 parameters: PGainSet2, ITimeSet2, DTimeSet2 (full roll, only when adaptive).
Response rates allow asymmetric gain for positive/negative errors.
Series PID control mode: PIDOut = P + I + D Term.
TrimParameter
Configures output trim factors to compensate for diameter changes.
Automatic Trim Modeselects trim mode based on active winder control mode.
Modes 01-07 provide manual trim selection (User, diameter, Line speed and Roller speed based ratios).
Trim factors multiply together when multiple modes enabled.
SpeedTrimMin sets minimum trim value, MaxTrim/MinTrim set output limits.
Speed correction term used to be given in % from motor speed limit.
Trim ratio of diameter and speed ratio are not active for line feeder (Fixed diameter).
Automatic Trim Mode Selection Logic:
TENSION_SPEED_TRIM_CONTROL, DANCER_SPEED_TRIM_CONTROL, TORQUE_SPEED_TRIM_CONTROL:
Line Feeder → Mode 01 (User Trim)
Rewinder / Unwinder → Mode 03 (Diameter Ratio Fade)
TENSION_TORQUE_TRIM_CONTROL:
Line Feeder → Mode 01 (User Trim)
Rewinder / Unwinder → Mode 02 (Diameter Ratio Boost)
Not applicable for: THREADING_CONTROL, LINE_SPEED_CONTROL, OPEN_LOOP_TORQUE_CONTROL
SafetyMonitoringParameter
Monitors critical control parameters to prevent winder damage and ensure safe operation.
Detects web loss condition for immediate stop trigger. Using external sensor.
Initial settling threshold prevents false alarms during startup transients.
PID error monitoring triggers stop if control error exceeds threshold for specified delay.
Torque monitoring triggers stop if roller torque exceeds maximum or falls below minimum threshold.
All threshold monitors include configurable delay to prevent nuisance trips.
Safety interlocks: If ANY monitor is active and triggered, winder stop is initiated.
Operation sequence
Step 1: When Trim PID enabled
Winder control Mode is set to TENSION_SPEED_TRIM_CONTROL, TORQUE_SPEED_TRIM_CONTROL,
DANCER_SPEED_TRIM_CONTROL, or CLOSED_LOOP_TORQUE_CONTROL then monitoring will be active.
Step 2: Monitor Settling Phase
Set ControlSettledThreshold (e.g., 50%)
PID Monitoring remains FALSE while |(Setpoint - Actual)| > Threshold
System waits for control to stabilize before enabling safety monitoring
Step 3: Automatic Activation
When error drops below ControlSettledThreshold PID Monitoring = TRUE (one-time latch)
Safety monitoring now active
Step 4: Latch Behavior
Once activated, PID Monitoring stays ON permanently
Even if error increases again, monitoring remains active
Only resets after power cycle
Step 5: Safety Trigger Condition
If ANY safety monitoring is active and threshold exceeded then Winder stop triggered
Multiple monitors can be active simultaneously
Reset this condition if Winder Start change status from TRUE to FALSE.
Example Test Case - PID Error Monitoring
- Input Conditions:
PIDErrMonitorEnable = TRUE
PIDErrMonitorThreshold = 30.0%
TrimPID.ErrorCurrentPerc = 45.0%
PIDErMonitorDelay = 5.0 sec
- Expected Behavior:
Error (45.0%) > Threshold (30.0%) -> Start delay timer
After 5 seconds -> Winder stop triggered.
MotorControlParameter
Defines motor ratings: NominalMotorSpeed, NominalMotorTorque, GearRatioEfficiency, TorqueScalingFactor.
TorqueScalingFactor converts drive units. Example PLCopen standard (Default CiA402: 10.0).
Configures motor acceleration and deceleration for threading and winding modes.
Quick stop deceleration provides emergency braking capability.
Signal filtering removes noise from motor speed and torque feedback.
Low-pass filters reduce measurement noise for responsive feedback control.
Hardware limit switches monitor safe operation boundaries (PositiveLimit, NegativeLimit).
Speed and torque limits gain to boost the limits.
Min roller speed and torque considered. Min torque value used in torque limit of open loop troque control.
Stall function applies feedforward torque for smooth startup acceleration.
Note
Motion Wizard Configuraion
The axis control type should be CSV (Cyclic Synchronous Velocity) mode.
The axis type is finite(rotary).
The axis unit is revolution.
Gear ratio
For OPEN_LOOP_TORQUE_CONTROL and TENSION_TORQUE_TRIM_CONTROL : Set Delay time velocity check := 0 and Position lag supervision := Off
Note
Winder Control Sequence Overview
Startup Sequence:
Configure winder mode (REWINDER/UNWINDER/LINE_FEEDER) and control mode
Set line speed (m/min) and tension setpoint (N) if applicable
Enable DiameterCalculation FB (mandatory)
Enable FeedbackConverter and MechanicalCompensation FBs if instantiated
Verify drive ready with no errors → Winder ready
Set WindingStart := TRUE (rising edge) to begin operation
Stop Conditions:
Automatic: Target diameter/length/time reached or Core/Full roll diameter reached
Manual: WinderStop := TRUE
Restart Sequence:
If error: Reset and re-enable affected FBs
If controlled stop: Reset WinderStop := FALSE (if used)
Reset WindingStart := FALSE, then set TRUE to resume
Note
Winder Speed and Torque Configuration
1. Gear Ratio Configuration
Gear ratio is configured from motion wizard axis scaling parameters
GearRatio = Motor rotations / Load rotations
Example: Motor turns 5 times for 1 roller rotation → GearRatio = 5.0
2. Nominal Roller Speed Calculation
Formula: NominalRollerSpeed = NominalMotorSpeed / GearRatio
Motor runs faster than roller, speed is divided by gear ratio
Example: Motor 3000 RPM / GearRatio 20 = 150 RPM roller speed
3. Nominal Roller Torque Calculation
Formula: NominalRollerTorque = NominalMotorTorque × GearRatio × GearEfficiency
Roller has more torque than motor, torque is multiplied by gear ratio
Example: Motor 12 Nm × GearRatio 20 × Efficiency 0.95 = 228 Nm roller torque
4. Maximum Systme Web Tension Calculation
Formula: MaxSystemWebTensionCapacity = NominalRollerTorque / FullRollRadius
Use full roll diameter (maximum diameter) for calculation
FullRollRadius = FullRollDiameter / 2
Example:
Motor Nominal Torque: 12 Nm
Gear Ratio: 20:1
Gear Efficiency: 95%
Full Roll Diameter: 600 mm (0.6 m)
Step 1: NominalRollerTorque = 12 × 20 × 0.95 = 228 Nm
Step 2: FullRollRadius = 0.6 / 2 = 0.3 m
Step 3: MaxWebTension = 228 / 0.3 = 760 N
User will set MaxWebTension and this value should be less than MaxSystemWebTensionCapacity.
5. Winding Torque Limit Calculation*
User set MotorControlParameter.RollerMaxTorqueLimit value should be less than equal to WinderLink.References.RollerMaxTorqueLimit
WinderLink.References.RollerMaxTorqueLimit derived from TensionRefParameter.MaxWebTension and Actual Diameter.
For Speed control mode (Threading, Line Speed Control, Tensio/Dancer/Torque Speed Trim) -> Final Torque Limit := MIN (MotorControlParameter.RollerMaxTorqueLimit, WinderLink.References.RollerMaxTorqueLimit)
For Torque control mode (Open Loop Torque Control, Tension Torque Trim) -> Final Torque Limit := LIMIT(MotorControlParameter.RollerMinTorqueLimit, CalculateTorqueLimit , MIN (MotorControlParameter.RollerMaxTorqueLimit, WinderLink.References.RollerMaxTorqueLimit)).
Note
Acceleration/ Deceleration Time Scaling
Principle: + Acceleration/deceleration times are configured for maximum reference value and automatically scale proportionally + This maintains constant linear acceleration/deceleration regardless of setpoint changes + Formula: ActualRampTime = ConfiguredRampTime × (SetValue / MaxValue)
Examples:
Line Speed Reference: + Ex: MaxLineSpeed = 100 m/min, SetpointRampUpTime = 10 sec → Acceleration = 10 m/min/s + SetLineSpeed = 50 m/min → Actual time = 5 sec → Acceleration = 10 m/min/s
Web Tension Reference: + Ex: MaxWebTension = 1000 N, SetpointRampUpTime = 10 sec → Acceleration = 100 N/s + SetWebTension = 500 N → Actual time = 5 sec → Acceleration = 100 N/s
Dancer Postion Reference: + Ex: DancerHighTensionPosition = 100 mm, SetpointRampUpTime = 10 sec → Acceleration = 10 mm/s + DancerSetpoint = 60 mm → Actual time = 6 sec → Acceleration = 10 mm/s
Note
Web Length Diameter Mode + Speed Source Requirement
Configuration:
When WDR_DIAMETER_SOURCE.CALC_METHOD_WEB_LENGTH is active:
Diameter is calculated from external line speed (ActLineSpeedFromEnc)
SetLineSpeed must also read from ActLineSpeedFromEnc
Why?
Using the same line speed source for both diameter calculation and speed setpoint ensures accurate diameter tracking and prevents speed/diameter mismatch errors.
Note
Line feeder mode
When Winder Mode is configured as LINE_FEEDER, the roller’s function depends on its position in the material handling system:
1. Infeeder Configuration:
Position: Before the rewinder.
Function: Feeds material to the rewinder roll.
Example: Entry roller, traction roller feeding material to rewinder.
Configuration : Winder Mode : LINE_FEEDER , Winder Control Mode : TENSION_SPEED_TRIM_CONTROL / OPEN_LOOP_TORQUE_CONTROL /LINE_SPEED_CONTROL
2. Outfeeder Configuration:
Position: After the unwinder
Function: Feeds material out of the unwinderroll.
Example : Exit roller, traction roller receiving material from unwinder.
Configuration : Winder Mode : LINE_FEEDER , Winder Control Mode : TENSION_SPEED_TRIM_CONTROL / OPEN_LOOP_TORQUE_CONTROL /LINE_SPEED_CONTROL
3. Line Speed Master Configuration:
Position: Master control roller
Function: Regulates the overall line speed for the entire system
Controls: Winding speed, process speed, material flow rate
Example : Main drive roller that sets speed reference for all other rollers
Configuration : Winder Mode : LINE_FEEDER , Winder Control Mode : LINE_SPEED_CONTROL
Note
Torque Offset - EtherCAT Configuration
PDO Mapping Required: + Manually add object 0x60B2 (Torque Offset) to servo drive PDO mapping + Configure as TxPDO input (PLC → Drive)
Servo Drive Configuration: + Servo parameter torque feed forward option should be enabled. + Example : In EC530 Drive , Select P05.12 TorqueFeedFotwardSourceSelection parameter option 3. Use 0x60B2h.
Calculated Value: + TorqueOffset = Winding torque trim + Friction compensation + Inertia compensation
Note
Diameter hold conditions: Diameter calculation is suspended under the following conditions.
Winder not enabled
Drive not active
Winder stopped (stop condition met)
Web loss detected
Invalid parameters
Function block errors
Mode incompatibility (calculation vs control)
Threading without unhold
Invalid threading state
Threading limit reached
- InOut:
Scope
Name
Type
Initial
Comment
Input
EnableBOOL[TRUE] Enable the winder function block and enables the servo drive power stage.
TensionBuildBOOL[R_TRIG} Initiate winding tension intial build on rising edge (FALSE→TRUE).
WindingStartBOOL[R_TRIG] Initiate winding start on rising edge (FALSE→TRUE). Does not require maintaining TRUE; pulse only.
WindingStopBOOL[R_TRIG] Execute immediate winding stop on rising edge (FALSE→TRUE). Does not require maintaining TRUE; pulse only.
WindingHoldBOOL[R_TRIG] Hold winding process on rising edge (FALSE→TRUE). Set WindingStart or TensionBuild to R_TRIG to resume.
ThreadingForwardBOOL[TRUE] Enable web threading in forward direction. Rolling direction from unwinder to rewinder. Note : Threading in WDR_WINDER_MODE.LINE_FEEDER ignore the diameter forward limits.
ThreadingReverseBOOL[TRUE] Enable web threading in reverse direction. Rolling direction from rewinder to unwinder. Note : Threading in WDR_WINDER_MODE.LINE_FEEDER ignore the diameter reverse limits.
SetLineSpeedREAL[MPM] Line speed setpoint used during threading/winding/unwinding/line feeder. Applicable for all WinderControlMode. Range: Must be > 0 and ≤ SpeedRefParameter.MaxLineSpeed. Values exceeding the MaxLineSpeed will be capped at that limit.
SetWebTensionREAL[N] Web tension setpoint used during winding/unwinding/line feeder. Applicable WinderControlMode 3 = TENSION_SPEED_TRIM_CONTROL, 5 = TORQUE_SPEED_TRIM_CONTROL, 6 = OPEN_LOOP_TORQUE_CONTROL and 7 = TENSION_TORQUE_TRIM_CONTROL. Range: Must be > 0 and ≤ TensionRefParameter.MaxWebTension. Values exceeding the MaxWebTension will be capped at that limit.
SetDancerPositionREALDancer position setpoint used during winding/unwinding. Unit is decided by feedback control engineering scaling Example: [mm] for linear or [deg] for rotary encoder. Applicable for WinderControlMode 4 = DANCER_SPEED_TRIM_CONTROL. Range: Must be > 0 and ≤ Dancer maximum positive position. Values exceeding the Dancer maximum positive position will be capped at that limit.
WinderModeSelects the mode: 0 = REWINDER, 1 = UNWINDER and 2 = LINE_FEEDER
WinderControlModeSelects the control mode: 0 = NONE, 1 = THREADING_CONTROL, 2 = LINE_SPEED_CONTROL, 3 = TENSION_SPEED_TRIM_CONTROL, 4 = DANCER_SPEED_TRIM_CONTROL, 5 = TORQUE_SPEED_TRIM_CONTROL, 6 = OPEN_LOOP_TORQUE_CONTROL and 7 = TENSION_TORQUE_TRIM_CONTROL.
WinderDirectionSets the motor rotation direction for OVER-WINDING and UNDER-WINDING that is 0 = CLOCKWISE, 1 = COUNTER_CLOCKWISE.
WinderStopParameterWinder stop conditions are defined by : Material Length, Diameter, and Elapsed Time. Minimum one of these parameters can be active at any given time.
SpeedRefParameterLine speed reference parameters.
TensionRefParameterWeb tension reference parameters.
TrimPIDParameterTrim PID parameters for active winder control mode.
TrimParameterSpeed and tension trimming methods.
SafetyWinder safety parameters.
MotorControlParameterMotor control parameter for winder.
ErrorResetBOOL[R_TRIG] Rising edge triggers error acknowledgment , Prerequisite is underlying error cause must be corrected.
Output
BusyBOOL[TRUE] Indicates the function block is currently running.
ErrorBOOL[TRUE] Indicates an error occurred in the function block. The error flag resets after the error condition is resolved and when the Enable input transitions from TRUE to FALSE.
ErrorIDAC500_MotionControl.ERROR_IDMotion-specific error code.
AppErrorIDApplication-specific error code.
DriveActiveBOOL[TRUE] Indicates drive is active.
MandatoryFBReadyBOOLCheck if all required function blocks are ready. DiameterCalculation must be enabled, FeedbackConverter and MechanicalCompensation (if instantiated, must be enabled).
TensionReachedBOOL[TRUE] When TensionBuild := TRUE and Set Tension/Dancer position reached for initial tension build process.
WindingStartedBOOL[TRUE] Winding process is active. When Enable, Mandatory FB Ready, DriveActive and WindingStart (rising edge).
WindingStoppedBOOL[TRUE] Winding process is stopped. WinderStopped will be FALSE when (NOT WindingStart AND NOT WindingStop AND NOT TensionBuild NOT WindingHold) OR NOT Enable.
WindingHeldBOOL[TRUE] Winding process is held. WindingHeld will be FALSE when Rising Edge of (WindingStart OR WindingStop OR TensionBuild OR Threading FWD?REV if threading mode active) OR NOT Enable.
ThreadingForwLimitBOOL[TRUE] When blocking forward threading.
ThreadingReveLimitBOOL[TRUE] When blocking reverse threading.
WindingSetVelocityLREAL[RPM] Set roller motor speed.
TorqueOffsetINT[%] Total torque offset (winding torque trim + stall torque +friction + inertia compensation). Example ABB E530 : Mapped to drive PDO 0x60B2. Note: Value are scaled to MotorControlParameter.TorqueScalingFactor
PositiveTorqueLimitUINT[%] Positive torque limit. Example ABB E530 : Map to drive PDO 0x60E0. Note: Value are scaled to MotorControlParameter.TorqueScalingFactor.
NegativeTorqueLimitUINT[%] Negative torque limit. Example ABB E530 : Map to drive PDO 0x60E1. Note: Value are scaled to MotorControlParameter.TorqueScalingFactor.
ActRollerSpeedLREAL[RPM] Actual roller motor speed.
ActRollerTorqueLREAL[%] Actual roller motor torque.
StatusMessageWSTRING“None”
Indicates winder active status message.
Inout
WinderLinkStructured data to share common variables between mandatory function blocks.
AxisAxis_RefAxis reference for motion control block.