Cancel
Showing results for 
Search instead for 
Did you mean: 

Pick and place robot

Creator
Creator

Hello,

 

For my internship I do a project by the company Droste Bejah. They produce lawnmower pushing bars. They want to automate the productionline by using of a pick and place unit. I thought it would be nice to simulate the pick and place robot, to see what it does, so I've made a simulation in Plant Simulation

 

Now I have a few problems and I hope anyone can help me with it.

 

The pushing bar passes 7 workstations. The pick and place robot have to provide the workstations with

intermediate products. The product must go through all the workstations in the right order. From pletten_2gatenponsen to buffer 5. I have done this with a exit strategy. Each workstations has its own buffer.  The problem is that the robot brings the products to  the buffer, even if the station after the buffer is empty.
 
It would be nice if the robot skips the buffer when the next station is empty and that the robot only use the buffer when this is necessary.
 
My second problem is that the simulation stops at 52 seconds, because the robot want to bring a product to a station, but there is already a product in the station which is processed.
 
To make the problems more clear I've attached the simulation file.
 
I would appreciate it if anyone can help me wiht this problems. I have tried different things but it doesnt help.
 
Many thanks in advance.
 
greetings Remco Welink
4 REPLIES

Re: Pick and place robot

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

you should avoid, that the buffers call the pick and place, when the next station is already occupied. You can do this with a simple exit control, e.g. for buffer3:

 

is
do
	waituntil Afbramen.occupied=false and pickAndplace.occupied=false prio 1;
	@.move;
end;

in buffer 5 the pull control doesnt exists.

 

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Pick and place robot

Creator
Creator

Hello Steffen,

 

Many thanks for your reply. The simulation runs better now. But I still have a few problems.

 

When buffer 3 is full, the simulation stops. This is because the station Afbramen is occupied and the p and p cant bring it to the buffer, because it is full. How can I program the robot in such way that if buffer 3 is full, it takes no parts from the source but only from buffer 3 till buffer 3 is empty?

 

The second problem is that the robot brings the parts to every buffer station, even it is not necessary. How can I tell the robot that it must skip the buffer when the next processing station is empty?

 

I hope you will help me with this problems.

 

Thanks in advance

 

greetings Remco

Re: Pick and place robot

Gears Phenom Gears Phenom
Gears Phenom

Hello.

 

Have managed to come up with a solution to both of your current issues, first of all Buffer3 causing your system to lock up, this can be solved by monitoring the level of the buffer and locking the exit of previous stations to prevent them from passing a part onto the pick and place robot. You then can unlock them at a certian level to make the buffer stay between 2 set values (in my example it will be full and half full) but also when you reset the model you got to also unlock the exits to ensure when you next run it then it will work.

 

Enterance control for Buffer3 to lock previous stations

 

is
do
	if self.~.Capacity = self.~.NumMUParts then
		Pletten_2gatenponsen.ExitLocked := true;
		Buffer.ExitLocked := true;
		Indeuking_midden.ExitLocked := true;
		Buffer1.ExitLocked := true;
		Indeukingbovenaan_gat.ExitLocked := true;
		Buffer2.ExitLocked := true;
		vierkant_ponsgat.ExitLocked := true;
	end;
end;

 

Addidional code for exit control for buffer 3 (is Method in your model) to unlock previous stations

 

	if Buffer3.Capacity / 2 >= Buffer3.ContentsList.YDim then
		Pletten_2gatenponsen.ExitLocked := false;
		Buffer.ExitLocked := false;
		Indeuking_midden.ExitLocked := false;
		Buffer1.ExitLocked := false;
		Indeukingbovenaan_gat.ExitLocked := false;
		Buffer2.ExitLocked := false;
		vierkant_ponsgat.ExitLocked := false;
	end;

 

The reset method (any method called 'reset' will be ran when you press the reset button)

 

is
do
	Pletten_2gatenponsen.ExitLocked := false;
	Buffer.ExitLocked := false;
	Indeuking_midden.ExitLocked := false;
	Buffer1.ExitLocked := false;
	Indeukingbovenaan_gat.ExitLocked := false;
	Buffer2.ExitLocked := false;
	vierkant_ponsgat.ExitLocked := false;
end;

 

This should ensure that when buffer 3 is at 100% then it will lock the previous stations, and then when it loweres down to 50% then it will unlock the previous stations.

 

 

Now as for making the pick and place robot ignore buffers if the work station is empty, the issue for this comes from the exit strategy that you have used, where you told the robot if it comes from this station then take it here, no where dose it check if it can skip the buffer or not.

 

To get around this You need to add in a block of code which will control where the pick and place robot goes to, this code will be put into the target control as this is ran once it has picked up a part, meaning if in the mean time the work station becomes free then it can account for this (in your model this cant happen due to their being 1 robot and no other method for parts to move on).

 

Target control for pick and place robot

is
do
	if ?.empty then
    		return;
	end;

	if @.PreviousLocation = Pletten_2gatenponsen and Indeuking_midden.Empty then
    		?.setDestination(Indeuking_midden);
	elseif @.PreviousLocation = Pletten_2gatenponsen and not Indeuking_midden.Empty then
    		?.setDestination(Buffer);
	elseif @.PreviousLocation = Buffer and Indeuking_midden.Empty then
    		?.setDestination(Indeuking_midden);
	elseif @.PreviousLocation = Indeuking_midden and Indeukingbovenaan_gat.Empty then
    		?.setDestination(Indeukingbovenaan_gat);
	elseif @.PreviousLocation = Indeuking_midden and not Indeukingbovenaan_gat.Empty then
    		?.setDestination(Buffer1);
	elseif @.PreviousLocation = Buffer1 and Indeukingbovenaan_gat.Empty then
    		?.setDestination(Indeukingbovenaan_gat);
	elseif @.PreviousLocation = Indeukingbovenaan_gat and vierkant_ponsgat.Empty then
    		?.setDestination(vierkant_ponsgat);
	elseif @.PreviousLocation = Indeukingbovenaan_gat and not vierkant_ponsgat.Empty then
    		?.setDestination(Buffer2);
	elseif @.PreviousLocation = Buffer2 and vierkant_ponsgat.Empty then
    		?.setDestination(vierkant_ponsgat);
	elseif @.PreviousLocation = vierkant_ponsgat and Afbramen.Empty then
    		?.setDestination(Afbramen);
	elseif @.PreviousLocation = vierkant_ponsgat and not Afbramen.Empty then
    		?.setDestination(Buffer3);
	elseif @.PreviousLocation = Buffer3 and Afbramen.Empty then
    		?.setDestination(Afbramen);
	elseif @.PreviousLocation = Afbramen and Klinken.Empty then
    		?.setDestination(Klinken);
	elseif @.PreviousLocation = Afbramen and not Klinken.Empty then
    		?.setDestination(Buffer4);
	elseif @.PreviousLocation = Buffer4 and Klinken.Empty then
		?.setDestination(Klinken);
	elseif @.PreviousLocation = Klinken then
    		?.setDestination(Buffer5);
	end;
end;

 

This should provide the same logic as before telling the robot where to deliver the part to in what order but also includes checking if the workstation is empty and if it is then it will deliver stright to the workstation instead of the buffer.

 

Hope this is all of some use to you.

 

JamesM.

Re: Pick and place robot

Creator
Creator

Hello James,

 

Many thanks for your answer. I really appreciate it.

 

greetings Remco Welink