Alternate between pick-and-place robots

Hi all,

I have modelled a simplified system consisting of a feeder which feeds products onto a conveyor.
Further downstream the products should be picked from the conveyor and placed into a sink.

The throughput is thus high that I would like to have two robots alternate between picking-and-placing the products from its respective station to its respective sink:

To accomplish this I wrote a script for the first station using a counter:
The counter is initially 0 such that Station 1 passes the transport out onto the conveyor, moving the first product to Station 2.
When the second product arrives at Station 1, the counter is 1 and the transport out is set to ‘next process’ (and the counter is reset to 0)

For testing purposes I connected the respective stations and sinks by interpolating transport:

The problem however is, that only one of the flow links works (note the error on the station 2):

To rule out causes, when I remove the flow link of station 1 the transportation of station 2 starts working:

Does anyone know how I could fix this, or model this in another way such that it does work?

Also a question in general; can two robots alternate between the same task? (lets say I model 1 station and 2 sinks)

So you want every other product to pass by the Station1 and go to the Station2 instead?

You can do it by deciding which station the product needs to go already before it reaches either station, in the feeder process.

This can be implemented in a variety of ways.

  • Assigning a product property and then using approriate product filter in the TransportIn statements of those stations.
  • Assign the next process for the product using the Set next process statement before it is transported out.
  • Send products to specific transport node using that option in TransportOut statement.

Station 1

  1. TransportIn from conveyor
  2. TransportOut to conveyor (Pass first workpiece)
  3. TransportIn from conveyor
  4. TransportOut to next process (Send to next process)

Station 2

  1. TransportIn from conveyor
  2. TransportOut to next process (Send to next process)

This should work, however, I create a simple layout to test, the result is a little bit strange.
Station 1, same variable for 2 workpiece, both stations would be blocked.

Station 1, different variables for 2 workpiece, station 2 would be blocked.

Not sure where the missing setting is.
Take turn.vcmx (293.3 KB)

This approach can also work, but in general it would be better that a product does not enter a process it doesn’t actually belong to, and PM does provide the capability to pass through transport nodes without entering any associated process.

Thank you for your response!

I have modelled the feeder by means of distributions, and indeed I want every other product to pass to station 2, so I can’t fix it with product properties.

I can’t find a set next process statement, and for your final solution; when I try to use the transportout statement to send it to the sink I unfortunately run into other problems.

Thanks for responding! Your solution is less cumbersome then the counter, but it seems like you are running into the exact same issue as I have :confused:

Cool, it’s working with set next step as @TSy suggestion.

Take turn_set next step.vcmx (295.5 KB)


Here is example of my solution using a Product property and product filter.
The flow sequence and both processes are very simple. The products’ history for flow sequence evaluation and statistics also remains clean using this approach.

Take turns using Product property.vcmx (328.9 KB)


Thank you for the help! @chungmin @TSy

1 Like