Process modelling double gripper

Hi all, has anyone used a double head robot gripper to both pick and place with process modelling?
I can get it to work with the different heads for pick and place separately but not pick/place together


Hi Stevesmith,

I think you could solve this by using the Record and Execute routine options for the process modeling robot transport controller. This way you can first record the initial robot actions, modify those to use the double gripper as you need, and then execute that routine in process modeling.

You can check out the robot transport controller tutorial for more information on this. The relevant part starts around page 17.



This kind of dual gripper is commonly used in machine tending and this is too complex to accomplish with current features in PM. I think that Record and Execute -trick won’t even help here. The problem in the dual gripper case is that there are two transport tasks active at the same time for the robot. So robot should pick up finished part before placing the new part on the machine and between these two events there are two transport tasks active.

Current Robot Transport Controller cannot handle two parallel tasks and also the machine Process program should be modified. Now the machine Process transports finished part out before it starts transporting in a new part so robot won’t be triggered to pick a new part until old one has been transported out. In other words machine needs a new part only after it has been emptied and before this need happens transport task isn’t triggered.

The way I would solve this problem would be to introduce a product flow without transport links and make the conveyors and robot do the transports in the “old way”. That is to use containers and manual robot programs to do the transport tasks and this way you have better control of the logic. Check out the attached model where I tested this idea. Model requires 4.2.2 app version as I use some new process statements in the machine.

MT_DualGripper_PM.vcmx (2.9 MB)


Hi Este,

I have tried this but the product does not transport in when I run the unload/load routine.
What I am trying to do is…
1 Load component to process1(first time only)
2 machine movement (I will add this later when I put a machine on 10s delay at the moment)
3 Unload/Load process1
4 unload to sink
5 repeat 2-4 until simulation reset


Thanks for your help

GRIPPER_mk3.vcmx (456.2 KB)

Hi Keke,

Thank you, this is the motion I am after.
In the attached layout I have tried to simplify this by using the new “run robot routine” as a machine process (please forgive robot motion ;-)).
I can get the motion correct but the transfer of components does not seem to work?
Is it possible for this to run in this way?
I’m afraid I have very little knowledge so could be doing many things wrong!

Thank you for your help
DOUBLE.vcmx (1.1 MB)

Hi Stevesmith,

There are some issues in your example and some of them at least can be fixed. When doing transports in conventional methods instead of using PM there are few things that you need to pay attention to. First of all you should program robot’s part release carefully so that part is released to a proper node and a container. In this case the target node is the process component and the container is the component container within process component. To understand how you can control the release node and container you should check this tutorial video about grasp and release actions and gravity direction:

Another thing that you need to pay attention is the process and its TransportIn/Out statements. By default Transport statements are using Previous/Next process as the Source/Destination. But now you should change those to From/To Container instead. Container option basically means that transport is done the old way with containers instead of using PM transport controller to determine the flow and realize the transport task.

For example in your case Sink process isn’t working because it is expecting a product from previous process. So you should change TransportIn Source to From Container and then adjust the robot’s program so that on release action product is released on the sink component. Then you can get the sink process to work.

I understand that all this is can be confusing and requires some experience with VC. So the example I gave should only be used as a work around to overcome the fact that PM features don’t support the double gripper use case at the moment. But hopefully the PM features improve in the future to make this easier.