Setting up conveyor tracking on Fairino robots using an encoder. This has been tested on objects ranging from 2.4m to 9m in length on continuous conveyors. Here's what you need to know.
Hardware setup
- Connect an encoder with differential outputs to the encoder ports on the control box
- Use a digital input (e.g. DI4) as the trigger signal — this tells the robot to start tracking when a part arrives
- The trigger can come from a proximity sensor, photoelectric sensor, or any other part-detection device
Tracking vs Tracking Motion — the key difference
| Tracking | Tracking Motion |
| Robot follows the encoder position only | Robot follows encoder AND makes additional movements on other axes |
| Moves along with the object | Can pick/place while tracking |
| Good for: spraying, gluing, inspection | Good for: pick & place on moving conveyor |
| Simpler to configure | More complex, but more capable |
Configuration steps
- Go to WebApp → Settings → Tracking Configuration
- Set encoder parameters: resolution (pulses per unit distance), direction of travel
- Define the tracking axis — usually the base X coordinate for a linear conveyor
- Run the setup wizard — it will ask you to teach start and end positions while the conveyor is at a known encoder position
- Configure the trigger input (which DI signal starts/stops tracking)
Important technical notes
- Old vs new firmware behavior: Older firmware versions track based on base X coordinate. Newer versions use TCP X coordinate. This can cause unexpected behavior when upgrading firmware on an existing tracking setup.
- Work object coordinates define the direction of movement, not start/end positions — those are defined by the teaching points stored during the wizard setup.
- Debugging: Use
RegisterVar()to monitor encoder values in real-time through the WebApp. Also useful:GetWObjOffset(1)to read the current work object offset.
Known limitations
- The robot may pause between tracking moves — this is a known limitation that affects continuous tracking operations. The pause occurs between individual motion commands (MoveL, MoveJ).
- For very long objects (>2m), make sure your tracking window is large enough and the encoder resolution provides sufficient accuracy over the full length.
- If simulating without a real conveyor: you can use a switch on DI and manually rotate the encoder for testing, but the behavior differs from continuous conveyor motion.
Reference
manual.fairino.support — Extended Axis / Tracking Configuration