A collection of practical tips and lessons learned for welding with Fairino robots (FR10, FR16, FR20), gathered from multiple active integrators in the Fairino community. Covers MIG welding, welding machine integration, speed tuning, and the biggest pitfalls.

Speed settings: LIN vs ARC are independent

Speeds for LIN (linear movement) and ARC (arc/weave movement) are completely independent settings. This confuses many newcomers:

  • You can set LIN at 6mm/s for approach moves and ARC at 10mm/s for the actual weld
  • The physical TCP speed during ARC is slower than during LIN at the same mm/s setting — the weaving motion adds path length that the controller accounts for differently
  • For small-diameter semicircular welds: you may need speed under 5mm/s for ARC movements. Community reports that welds at different diameters (100mm vs 250mm) complete in the same time, causing poor bead quality on smaller diameters. This appears to be a trajectory constraint in the controller.

Smooth motion for welding

By default, the robot pauses briefly at each waypoint between motion commands. For welding, this creates defects in the bead. Solutions:

  • Enable Acceleration Smoothing Mode in the motion settings
  • Use TrajectoryLA function for continuous paths instead of individual MoveL commands
  • Focus on location instead of pose in your motion parameters when precision orientation isn't critical
  • Tune feed-forward parameters to prevent overshooting in the position controller

TCP calibration for welding torches

Welding torches don't have a sharp tip, making standard multi-point TCP calibration inaccurate. Recommended method:

  1. Use a wire stick-out as the reference point (extend welding wire to a consistent length)
  2. Touch the wire tip to a fixed reference point from multiple orientations
  3. This gives much better TCP accuracy than trying to estimate the nozzle center

⚠️ CRITICAL: TCP recalibration destroys all programs

This is the single biggest pitfall that has cost integrators weeks of work:

  • After TCP recalibration, ALL existing program points become invalid
  • One integrator lost 1500 welding points after recalibrating TCP without understanding this consequence
  • The points data is stored relative to the TCP — when TCP changes, all points shift

Mitigation (v3.9.3+):

  • WorkPieceTrsfr(x) command can transfer points after a workpiece change
  • For TCP changes: there is currently no clean transfer function — points may need to be re-taught
  • Python-based workaround: use GetRobotTeachingPoint() + GetForwardKin() to recalculate points mathematically (but SetPointToDatabase doesn't always work reliably)

Best practice: Save a backup before any TCP recalibration. Consider using a tool offset approach instead of full recalibration when the torch is replaced with an identical one.

Welding machine integration

MachineStatus
Fronius TPS 400i✅ Well-tested. Digital I/O or fieldbus. SynchroPulse parameters need tuning for start/stop crater filling.
Megmeet Ehave2⚠️ May give "500, protocol not loaded" error. Requires custom LUA protocol via Modbus TCP or digital I/O. CAN bus/DeviceNet not natively supported.
GeneralMost welders work via digital I/O (start/stop, wire feed, gas). More advanced integration requires Modbus or fieldbus.

Force sensor + welding handle conflict

The Force Sensor and Welding Handle cannot be used simultaneously in default configuration. If you need both (e.g. for force-controlled welding or seam finding), configure via the "Combination Device" menu in WebApp settings.

Welding cell design tips

  • Mounting: Use 12mm thick steel plates for the robot base and trolley. Rigidity is critical — vibrations during acceleration affect weld quality.
  • Overhead/inverted mounting: Possible but requires proper workpiece coordinate setup (see the Wall-Mount Coordinates thread). Be cautious of C-frame constructions — they can cause vibrations. Four-post gantry designs are more stable.
  • External positioner: Can be controlled via Modbus as external axes. See Extended Axis Configuration.

Starting from middle of program

Resuming a welding program from a specific line (not from the beginning) is only available for welding-type programs in the built-in WebApp interface. For general programs, this feature doesn't exist. Workarounds:

  • Implement breakpoint resume in your LUA code (save current step to file, reload on restart)
  • Delete previous lines and save as a new program (ugly but works)