Simotion D435-2 Motion Sync: Resolving DIV Fault & Pitch Control

David Krause13 min read
Motion ControlSiemensTroubleshooting
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

1. Problem Scope and System Overview

The SIMOTION D435-2 PN/DP controller is a compact motion controller in the SIMOTION D family that combines PLC, motion, and technology functionality on a single hardware platform. It is commonly deployed on packaging, converting, and winding machinery where coordinated multi-axis synchronization is required. On hose-wrapping machines, the controller must keep a rotary head, a linear traverse axis, and a spool rotary axis phase-locked so the wrapping pitch (mm of tape advance per head revolution) stays constant regardless of speed changes.

The reference application described in field service reports uses three axes under one D435-2:

Axis Role Motor Revolutions Load Revolutions / Movement Mechanical Ratio
Head_Rotary Master (gear source) 106 56 56/106 ≈ 0.5283
CAT_Linear Slave (gear follower) 1 24.17 mm 24.17 mm/rev
Spool_Rotary Winder 1 1 1:1

A second, frequently paired requirement is closed-loop tension control on a winder/unwinder stand driven by a SINAMICS G120 with CU250S Control Unit, using a dancer position sensor as the feedback element. Both the gear cascade and the tension loop rely on consistent, real-time data from PROFINET IO with isochronous mode enabled.

2. Architecture and Topology Constraints

The D435-2 PN/DP supports PROFINET IO with IRT (isochronous real-time) and a configurable send clock. Each axis that participates in the gear must be placed in the same synchronization domain so the controller can issue synchronous setpoints every cycle. Devices that remain in "unsynchronized" state (for example, switches or IO stations that are not IRT-capable) will degrade the domain to RT or non-isochronous RT and will desynchronize the gear when the load fluctuates.

For correct tape-pitch and dancer behavior, observe the following:

  • Place the SINAMICS G120, all drives supplying the three axes, and any isochronous IO in one sync domain with one shared send clock (commonly 1 ms or 2 ms).
  • Enable isochronous mode on each drive telegram (for example, telegram 105 for SINAMICS with SiC plus encoder) and assign the same Ti/To values across the domain.
  • Verify topology in HW Config / TIA Portal so that the controller is the sync master and the drives are sync slaves.

Reference: Configure sync domains and send clock - SIMOTION Scout TIA.

If any drive in the domain is left in non-isochronous RT, the synchronization role of the slaves will be reported as "unsynchronized" and the gear will jitter, the tape pitch will drift, and the dancer loop will oscillate. Re-check the role display in the diagnostic buffer of each device before debugging the application code.

3. Tape-Pitch Synchronization on the Hose Wrapper

The tape pitch P (mm of CAT_Linear advance per head revolution) is governed by the gear ratio between Head_Rotary and CAT_Linear. Given the load-side data:

  • Head_Rotary: 56 load rev per 106 motor rev
  • CAT_Linear: 24.17 mm per motor rev

The required slave gear ratio referenced to the master load axis is:

G_slave = P / 24.17

For example, to wrap at P = 8 mm pitch, set G_slave = 8 / 24.17 ≈ 0.3310. For P = 12 mm pitch, G_slave ≈ 0.4965. The configuration must compensate the master gear, so the effective ratio entered in the SIMOTION axis configuration is:

G_eff = G_slave × (106 / 56) = P × 106 / (24.17 × 56) ≈ P × 0.07827

Target Pitch P (mm) G_slave (load rev basis) G_eff (motor rev basis, 106/56 head gearbox)
6 0.2483 0.4696
8 0.3310 0.6261
10 0.4138 0.7827
12 0.4965 0.9392
15 0.6206 1.1740

Implementation in SIMOTION

  1. Configure Head_Rotary as a positioning axis with modulo handling for continuous rotation.
  2. Configure CAT_Linear as a synchronous axis (synchronous operation / "synchronization" in the axis technology) and assign Head_Rotary as the master.
  3. Enter G_eff from the table above (or compute it from the recipe) in the synchronous operation parameters.
  4. Set the synchronization mode to "synchronize with position offset" if a phase relationship between wrap start and tape lay-down is required.
  5. Set ramp and smoothing filters so that quick speed changes do not produce pitch excursions: typical smoothing time constant 20-50 ms for light hose, 50-100 ms for heavy mandrel.

4. Winder and Unwinder Control with SINAMICS G120 and Dancer Feedback

The G120 with CU250S Control Unit supports closed-loop speed and torque control, plus basic positioner and basic closed-loop control of web tension when fed with a dancer signal. In the SIMOTION environment, the standard approach is to:

  1. Read the dancer position sensor (typically 0-10 V or 4-20 mA) into a SIMOTION analog input or via PROFINET.
  2. Scale the raw input to a percent-of-setpoint value using a user-defined scaling FB (see Section 5).
  3. Compute a torque or speed additive (P/I on the dancer error) and write it as a supplementary setpoint to the G120 via telegram 105 or 106.
  4. Use SIMOTION's "DancerPositionController" type behavior by implementing it as a technology object referenced through a user FB; SIMOTION does not provide a generic DancerPositionSensor FB in the standard command library - the function is built as a custom block in MCC, LAD/FBD, or ST.
SINAMICS G120 firmware V4.7 SP3 or later (CU250S-2 PN) is required for isochronous operation with PROFINET IRT. Earlier versions (V4.5 and V4.6) do not reliably hold the sync role under load disturbances and will cause the winder to oscillate. Confirm the firmware on the Parameter pane or via the web server before commissioning the dancer loop.

Recommended closed-loop structure

  • Inner loop: speed or torque controller in the G120 (factory default DO or DV mode).
  • Outer loop: dancer PID in SIMOTION. Typical Kp = 0.5-2.0 % speed per % dancer error, Tn = 1-5 s, Tv = 0 s for hydraulic-free winders.
  • Output limits: clamp the additive setpoint to ±10 % of the line speed setpoint to avoid snap tension events on dancer excursion.

5. Analog Scaling and Unscaling Functions in SIMOTION

SIMOTION's command library does not provide a single drop-in "Scale / Unscale" block identical to the STEP 7 FC105/FC106. Instead, scaling is implemented in the programming language being used:

Language Recommended Block / Construct Notes
LAD / FBD CALCULATE box or NORM_X / SCALE_X Use CALCULATE for clarity; NORM_X + SCALE_X emulate FC105/FC106 closely.
MCC Command library: "Calculate" command Inline expression: y = (x - in_lo) * (out_hi - out_lo) / (in_hi - in_lo) + out_lo
ST (Structured Text) Inline arithmetic in assignment Most efficient and re-usable; wrap as a function block if used in multiple places.

ST example: linear scaling of a 0-10 V analog input (raw 0-27648) to engineering units 0-500

FUNCTION_BLOCK fbScale
VAR_INPUT
  i_raw : INT;       // 0..27648 from SIMOTION AI
END_VAR
VAR_OUTPUT
  q_eu  : REAL;      // 0.0..500.0 engineering units
END_VAR
VAR
  r_in_lo : REAL := 0.0;
  r_in_hi : REAL := 27648.0;
  r_out_lo : REAL := 0.0;
  r_out_hi : REAL := 500.0;
END_VAR

q_eu := (INT_TO_REAL(i_raw) - r_in_lo) * (r_out_hi - r_out_lo) / (r_in_hi - r_in_lo) + r_out_lo;

ST example: inverse (unscale) - engineering units to raw 0-27648

i_raw := REAL_TO_INT( (q_eu - r_out_lo) * (r_in_hi - r_in_lo) / (r_out_hi - r_out_lo) + r_in_lo );

For bipolar inputs (-10 V to +10 V, raw -27648..+27648) the same formula applies; just set r_in_lo = -27648.0 and r_out_lo to the negative engineering minimum.

6. DIV Fault: Controller Stays in STOP, Will Not Go to RUN

Problem details

Symptom reported: a LAD logic containing DIV: 1.0 / Tag1 = Tag2 compiles and downloads successfully, but the SIMOTION D435-2 does not switch to RUN. The operator interface shows the controller in STOP or in startup hold, and the diagnostic buffer records a runtime error referencing the MCC/LAD task in which the DIV is located.

Root cause

The DIV operator on REAL or LREAL data in SIMOTION (and in the underlying SIMOTION Kernel) raises a floating-point exception when the divisor is 0.0. The exception halts execution of the MotionTask / BackgroundTask in which the DIV lives; the task is then placed in the TECH_FAULT or TASK_HALT state. Because the run-level check requires all assigned tasks to be "OK" and the background task is the one that owns the DIV, the operating system blocks the mode transition to RUN.

The classic trigger is an uninitialized REAL tag: the default initial value of a REAL tag in SIMOTION is 0.0. If the program is downloaded but never cycles through the path that writes Tag1, the first execution of the DIV sees 0.0 and the kernel faults.

Solution

  1. Initialize the divisor to a safe non-zero value before the DIV executes. For a load-setpoint, a typical safe initial value is 1.0 or the process minimum.
  2. Guard the DIV with a compare block. In LAD/FBD insert a CMP <> 0 or CMP > 0 against Tag1 and only energize the DIV when the guard is true; otherwise hold Tag2 at the last good value or a known default.
  3. In MCC, wrap the DIV inside a "WaitCondition" with a precondition on Tag1, or use a structured "IF <condition> THEN" branch.
  4. Recompile, download the project to the D435-2, and perform a STOP-RUN transition from the diagnostic panel of SIMOTION Scout / TIA Portal.

LAD / FBD guard pattern

--[ Tag1 <> 0.0 ]--[ DIV 1.0 / Tag1 = Tag2 ]--
                  |
                  +--[ MOVE 0.0 => Tag2 ]--( negated branch )

Alternatively, a SEL block selects between the division result and the safe default:

Tag2_safe := SEL( G := (Tag1 <> 0.0), IN0 := 0.0, IN1 := (1.0 / Tag1) );

7. Interpreting the Diagnostic Buffer

If the controller still will not transition to RUN after applying the guard, retrieve the detailed message with SIMOTION Scout or TIA Portal:

  1. Connect to the target D435-2 over PROFINET or Ethernet.
  2. Open "Target system -> Diagnosis -> Diagnostic buffer".
  3. Look for entries of class "TECH_FAULT", "TASK_HALT", "IO_FAULT", or "FPU_EXCEPTION".
  4. Note the timestamp, the affected task (BackgroundTask, IPO_TASK, IPO2_TASK, Servo_fast), and the fault code. The task name identifies whether the issue is in the application (background) or in the servo / IPO cycle.
  5. Open "Motion system -> Axis diagnostics" to confirm that no axis is in a faulted state that would prevent RUN mode.

Reference: Restore factory settings - SIMOTION Scout TIA.

8. Factory Reset of the D435-2

Use a factory reset only when the project on the controller is corrupt, the device will not enter RUN, and a clean reload from SIMOTION Scout / TIA Portal is required.

  1. Power off the SIMOTION D435-2.
  2. Set the mode selector switch on the front of the D435-2 to position 3 (factory reset).
  3. Power on the device. The LED state progresses through the reset sequence.
  4. Wait until the device is reachable over its service interface (default IP, see the device label).
  5. In SIMOTION Scout / TIA Portal, perform "Target system -> Delete user data on target" or assign the device to a clean project.
  6. Return the mode selector to position 0 (RUN) for normal operation.
A factory reset erases the user program, retain variables, and the IP configuration. Document the IP, device name, and PROFINET device name BEFORE resetting, and back up the project to the engineering station.

9. Commissioning Sequence for the Hose Wrapping Machine

  1. Verify the PROFINET sync domain. Each G120 must show the role "Sync Slave" with the D435-2 as "Sync Master". The send clock should be uniform (1 ms typical for 3 axes).
  2. Run the SINAMICS basic commissioning (DO, motor identification, encoder calibration) on each drive before activating the SIMOTION axes.
  3. In SIMOTION Scout, configure Head_Rotary first and verify a constant velocity without the slaves engaged.
  4. Engage CAT_Linear as a slave of Head_Rotary and measure the resulting pitch with a caliper or a tachometer-plus-mark technique. Adjust G_eff if the measured pitch deviates from the recipe.
  5. Commission the G120 winder/unwinder in open-loop speed first, then close the dancer loop with Kp = 0 and Tn = infinite, then add proportional gain and finally integral action.
  6. Run a continuous ramp test (0.1 × v_max to 1.0 × v_max) and confirm that the pitch error stays within ±2 % and the dancer excursion stays within ±5 % of setpoint.

10. Verification Matrix

Check Expected Result Tool / Location
Controller mode after download RUN (green) SIMOTION Scout / TIA Portal online diagnostics
Sync role of each G120 Sync Slave, no alarms PROFINET diagnostics / device faceplate
Diagnostic buffer after first RUN No TECH_FAULT / FPU_EXCEPTION entries Target system -> Diagnostic buffer
Tape pitch at 50 % v_max Within ±2 % of recipe P Caliper measurement on 10 wraps
Tape pitch at 100 % v_max Within ±2 % of recipe P Same as above
Dancer excursion under ramp ±5 % of nominal dancer position Trend in Scout / WinCC
Winder current ripple Less than 10 % of average torque Starter / Starter commissioning trace

11. Field-Proven Pitfalls

  • Uninitialized REAL tags. Default initial value is 0.0; a DIV downstream of an uninitialized divisor will fault. Initialize the divisor explicitly, or guard with a compare block.
  • Non-isochronous PROFINET devices in the same sync domain. A non-IRT switch in the line can downgrade the domain and silently desynchronize the gear.
  • G120 firmware mismatch. Mix of V4.5 / V4.6 / V4.7 on a multi-drive line produces inconsistent behavior; align all drives to the same firmware version (V4.7 SP3 or later for CU250S-2 PN IRT).
  • Wrong DPV1 slot assignment for the encoder. On CU250S, the encoder must occupy a separate slot from the drive telegram; otherwise the controller reads a static zero and the gear runs open-loop.
  • Modulo range on the master axis. For continuous rotation, set the modulo range equal to the integer number of motor revolutions per load revolution (106) so the master value does not wrap mid-cycle.

12. Parameter Quick Reference

Parameter Where Set Typical Value
Send clock (PROFINET) HW Config / TIA Portal -> Sync domain 1.0 ms
Ti / To on each drive Drive properties Match send clock
Effective gear G_eff (Head -> CAT_Linear) SIMOTION synchronous operation P × 0.07827 (per recipe)
Dancer Kp User FB 0.5-2.0 % / %
Dancer Tn User FB 1-5 s
Additive setpoint clamp User FB ±10 % of line speed
Analog input range SIMOTION AI configuration ±10 V (27648 counts)
Safe initial divisor Variable initialization in program 1.0 (or process minimum)

Why does my SIMOTION D435-2 refuse to go to RUN after download, with a DIV instruction in the program?

The most common cause is a divide-by-zero on a REAL or LREAL DIV. The default initial value of an uninitialized REAL tag is 0.0; when the DIV executes before the divisor is written, the kernel raises an FPU exception and halts the task, which blocks the RUN transition. Initialize the divisor to a safe non-zero value, or guard the DIV with a compare block that prevents the division when the divisor is zero.

How is tape pitch calculated for a hose wrapping machine with SIMOTION D435-2?

Pitch P (mm per head revolution) is the product of the slave axis movement per motor revolution (24.17 mm on CAT_Linear) and the effective gear G_eff. The effective gear accounts for the head gearbox ratio (106 motor rev per 56 load rev) and is G_eff = P × 106 / (24.17 × 56) ≈ P × 0.07827. Enter this value in the SIMOTION synchronous operation parameters of the CAT_Linear axis with Head_Rotary as master.

How do I scale a 0-10 V analog input to engineering units in SIMOTION?

Use the formula y = (x - in_lo) × (out_hi - out_lo) / (in_hi - in_lo) + out_lo. For a 0-27648 raw input scaled to 0-500 EU, q_eu = (INT_TO_REAL(i_raw) - 0) × (500 - 0) / (27648 - 0) + 0. Wrap the formula in a function block, or use the NORM_X and SCALE_X instructions from the command library.

Why does the dancer-controlled winder oscillate even with low Kp?

Check the PROFINET sync domain first. If the G120 supplying the winder is not in the same sync domain as the D435-2, the dancer control loop sees jittery setpoints and will oscillate no matter how low the Kp. Confirm that the G120 shows the role "Sync Slave" with a uniform send clock across all drives in the domain, and that the G120 firmware is V4.7 SP3 or later for isochronous IRT operation.

How do I perform a factory reset on a SIMOTION D435-2?

Power off the D435-2, set the mode selector switch on the front panel to position 3, then power on the device. Wait for the device to reach the service state, then connect from SIMOTION Scout / TIA Portal and use "Target system -> Delete user data on target" or assign a clean project. Return the mode selector to position 0 for normal RUN operation. Document the IP, device name, and project backup before resetting.

Back to blog