[Solution] ABB missing conveyor tracking

On the ABB Flexpicker, conveyor tracking is missing, so you will have to make it yourself.

Here is how to do that:

You will need to place an encoder on the conveyer. Because the ABB doesn’t have fast counters you need to connect it to a PLC, Raspberry pi or Arduino.

On this system you calculate the speed in mm/s this can be done by the following formula:

#Repeat every seccond:

Speed = ([Pulses] / [Pulses per rotation]) * ([Distance encoder to conveyor belt] * 2 * π);
Pulses = 0;

The speed needs to be send to the ABB bot, there are multiple ways to do it. We did this by our already existing TCP channel.

On the ABB:

You will to need to make a separate task to calculate the current location of the object. You can do this as followd:

  • Click on the controller tab

  • Sellect the satation on the left

  • Open the map configuration

  • Click on controller

  • Click on Task

  • Right click and select new task

  • Warm restart station

Make a new program

In this program you need to do the following:

  • Start a timer
  • Get the speed of the conveyor from the comunication task
  • Get the time and cordinates of when the item was detected
  • Calculate the current position

Example program:

RECORD item
    Num time;
    Num X_position;
    BOOL detected;
    BOOL inrange;
ENDRECORD

PERS item item1;
PERS conveyorSpeed;
PERS clock timer;


PROC main()
    CLKReset timer;
    CLKStart timer;

    WHILE TRUE DO
        IF item1.detected DO
            Item1.X_position := item1.X_position – conveyorSpeed * (CLKRead(timer) – item1.time);
            Item1.time := CLKRead(timer);

            IF item1.X_position < 200 DO
                Item1.inrange := TRUE;
            ENDIF
        ENDIF

        WAITTIME 0.001;    !needed against overheating of the proccesor
    ENDWHILE
ENDPROC
1 Like