Modeling a Buffer/Feeder process

Hello guys,
I’m new here, looked for a similar topic but couldn’t find an exact match for my problem. so if my question seems absurd, I’m sorry.

I’m trying to create a buffer/feeder process, there are 2 shelves (each shelf has 2 slotted trays. ) which can move along an axis. Each tray can hold one product type. Shelves have two positions, Operator side and the Robot Side.

What I expect, step by step:

  • Products (up to 2 types) are loaded onto upper shelf (preferably left tray first, in a pattern)
  • Upper shelf moves to Robot side. ( Robot can start working now. see below.)
  • Products (up to 2 types) are loaded onto lower shelf (preferably left tray first, in a pattern)
  • Lower shelf moves to Robot side.
    - Below 2 lines repeat until the upper shelf is completely done.
    • Robot picks up 2 products from upper shelf to load onto the machine
    • Robot Picks up those processed products from the machine, loads them to previous positions on the upper shelf.
  • Upper shelf moves back to operator side
    - Same Process for the lower shelf.


  1. I can’t “pass” or “break” Buffer statement in process executor, it is always active. any workarounds?
  2. Is it possible for TransportPatternIn to bring in more than one product at a time?
  3. How many process executors do i need?
  4. Is there a way to attach products to joints in process executor?
  5. Do i need to get my hands on the python scripting for this?

Here are some images:

Hey guys,
I have managed to fill the trays, and move them to robot side.
Now, the remaining problem is to pick up the parts with a robot.
To load the shelves, I used transport pattern in statements.

  • How can i pick up the parts on trays/shelves, and load them into a lathe machine in a certain order?
  • Do i have to temporarily create an assembly?
  • After the lathe process is done, how can i put the part back to its original place on the tray in each cycle?

Hi @Zero,
I think in your case creating an Assembly would be easier.
You should check the “Assembly - Pallet Recycling” layout in the eCat, under Layout templates. In it the products are placed on the pallet at the same place after the process.

In the Assembly Editor you can define the order in which the parts are picked with the OrderIndex

1 Like

Thanks for the reply @Tilma !
I will try that and keep this post updated.

I have modified my layout similar to Assembly - Pallet Recycling, I defined the order-index in the assembly editor. I gave analogous variable names to the statements, etc…
However I’m somehow stuck at StartTransportOut statement.
No error message shows up.
Robot does not pick up Unprocessed parts.
Currently I am only trying to make it work for one tray (top left shelf).
Here is a screenshot :

Here are the variables generated:

Interesting things to note:
If i select the destination as the transport node of the parametric 5-axis lathe,

  • Robot picks a part and places in the machine until the shelf gets empty. (It keeps loading the parts even when the chuck is already full. Robot does not empty the machine.)
  • Also no machining process is being done. machine doors are kept open.

Hey guys,
I created a simplified version of the layout.
With_human_layout.vcmx (595.7 KB)

  • If i select “Tray” and “Unprocessed” steps of the assembly during create statement, and disable the human, robot picks up parts and puts them to their indexed places correctly (dissassembles and assembles correctly).
  • If i only select “Tray” step, and try to fill it with an operator, It throws “Process Node::TransportNode error: Transport solution does not have a next link from this transport node” error
  • Also, human loads another Unprocessed part into one of the slots even though the assembly is already completed. This happens just before terminal outputs the error message.

It seems like I am unable to fill the slots of the assembly, and it creates another assembly instance.
What am i missing?

Here are some screenshots:

Simplified Layout executor variables