RobotStudio Uygulamaları -2- Parça Kaynak Uygulaması

Bu uygulamada 2 robot ile konveyörden gelen parçayı önce masa üzerine istenilen şekilde dizip daha sonra diğer robot ile kaynağını yaptırdım. Kaynağı yapılan parça ise başka bir bölümde masa üzerine dizildi. Uygulamanın çalışma şekli alttaki gibidir.

Bu uygulamada konveyör ve kaynak için 2 farklı smartcomponent kullandım.

Daha sonra 2 robotu birbiri ile haberleştirmek ve smartcomponentler ile bağlantı kurabilmek için 2 robotun da “controller”ına gerekli sinyalleri ekledim.

Daha sonra 2 robot için farklı 2 RAPID kodu yazdım. İlk robot dizme işi yaptığı için for döngüsü kullandım. 3 adımda gerçekleştiği için ve her adımda farklı noktalara gitmesi gerektiği için de IF şartları belirledim. Diğer robot da sürekli olarak diğer robotu bekleyeceği ve sırası geldiğinde çalışacağı için WHILE ile sürekli döngü içinde kalmasını sağladım.

1.Robot için RAPID kodu:

                WaitDI BASLA,1;
		Reset kaynak_yap;
		Reset Gripper;
        FOR z FROM 0 to 2 DO
            FOR y FROM 0 to 1 DO    
                FOR x FROM 0 to 1 DO        
                    FOR i FROM 0 TO 2 DO
                                               
                                MoveL home,v1000,fine,Servo\WObj:=wobj0;
                	        MoveL parca_alma_yaklasim,v1000,fine,Servo\WObj:=wobj0;
                                WaitDI Parca_sensor,1;
                	        MoveL parca_alma,v100,fine,Servo\WObj:=wobj0;
                    		WaitTime 0.5;
                    		SetDO Gripper,1;
                                MoveL parca_alma_yaklasim,v100,fine,Servo\WObj:=wobj0;
                    		MoveL home,v1000,fine,Servo\WObj:=wobj0;
                    		MoveL masa_ust,v1000,fine,Servo\WObj:=Workobject_3;
                        IF i=0 THEN                            		
                    		MoveL parca_birakma1_yaklasim,v1000,fine,Servo\WObj:=Workobject_3;
                    		MoveL parca_birakma1,v100,fine,Servo\WObj:=Workobject_3;
                    		Reset Gripper;
                    		MoveL parca_birakma1_yaklasim,v100,fine,Servo\WObj:=Workobject_3;
                                MoveL masa_ust,v1000,fine,Servo\WObj:=Workobject_3;
                        ELSEIF i=1 THEN                
                    		MoveL parca_birakma2_yaklasim,v1000,fine,Servo\WObj:=Workobject_3;
                    		MoveL parca_birakma2,v100,fine,Servo\WObj:=Workobject_3;
                    		Reset Gripper;
                    		MoveL parca_birakma2_yaklasim,v100,fine,Servo\WObj:=Workobject_3;
                    		MoveL masa_ust,v1000,fine,Servo\WObj:=Workobject_3;                
                        ELSEIF i=2 THEN            
                    		MoveL parca_birakma3_yaklasim,v1000,fine,Servo\WObj:=Workobject_3;
                    		MoveL parca_birakma3,v100,fine,Servo\WObj:=Workobject_3;
                    		Reset Gripper;
                                 MoveL parca_birakma3_yaklasim,v100,fine,Servo\WObj:=Workobject_3;
                    		MoveL masa_ust,v1000,fine,Servo\WObj:=Workobject_3;
                    		Set kaynak_yap;
                                WaitTime 0.5;
                                Reset kaynak_yap;
                                WaitDI Kaynak_devam,1;
                                WaitTime 0.5;
                                MoveL parca_birakma3_yaklasim,v1000,fine,Servo\WObj:=Workobject_3;
                    		MoveL parca_birakma3,v100,fine,Servo\WObj:=Workobject_3;
                                SetDO Gripper,1;
                                MoveL parca_birakma3_yaklasim,v1000,fine,Servo\WObj:=Workobject_3;
                                MoveL dizme_ust,v1000,fine,Servo\WObj:=wobj0;
                                dizme_yaklasim_offs := Offs(dizme_yaklasim,x*300,y*300,z*42);
                                dizme_offs := Offs(dizme,x*300,y*300,z*40);
                                MoveL dizme_yaklasim_offs,v1000,fine,Servo\WObj:=wobj0;                            
                                MoveL dizme_offs,v100,fine,Servo\WObj:=wobj0;
                                Reset Gripper;
                                MoveL dizme_yaklasim_offs,v1000,fine,Servo\WObj:=wobj0;
                                MoveL dizme_ust,v1000,fine,Servo\WObj:=wobj0;
                                MoveL home,v1000,fine,Servo\WObj:=wobj0;
                            
                            
                                                      
                        ENDIF    
                    ENDFOR
                ENDFOR
            ENDFOR
        ENDFOR

2.Robot için RAPID kodu:

        WHILE TRUE DO
                WaitDI kaynak_basla,1;
    		MoveL home,v1000,fine,Weldgun\WObj:=wobj0;
    		MoveL masa_ust_kaynak,v1000,fine,Weldgun\WObj:=wobj0;		
    		kaynak_1;
    		MoveL masa_ust_kaynak,v1000,fine,Weldgun\WObj:=wobj0;
    		kaynak_2;
    		MoveL masa_ust_kaynak,v1000,fine,Weldgun\WObj:=wobj0;
    		MoveL home,v1000,fine,Weldgun\WObj:=wobj0;
                Set kaynak_bitti;
                WaitTime 1;
                Reset kaynak_bitti;
        ENDWHILE

Leave a comment

Design a site like this with WordPress.com
Get started