23. Juli 2019, 09:58:22
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

 Triggern oder Interrupt ????


normal_post Autor Thema:  Triggern oder Interrupt ????  (Gelesen 3322 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

26. Januar 2006, 09:29:58
Gelesen 3322 mal

mischwarz

Gast
moin moin,
ich muss mit einem IRB4400_45 (IRC5) von Punkt A nach Punkt B,um ein Werkstück in eine Wendestation abzulegen.Dabei habe ich schon zwei Drehzylinder zerschossen.Wird allmählich teuer.
Die Routine sieht im Moment so aus:

MoveJ pA,vMax,....
MoveLpB,vMax...
Wendestatzion\Zu;
Greifer\Auf;
MoveL pWartePos....
! ab hier erfolgt die Drehung und das erneute Greifen
.
.
Das Problem ist,dass die Wendestation zufährt,bevor der Robi Punkt Berreicht.
Ich muss zugeben,dass ich pB mit einer Zone z0 ,allerdings steht in Wendestation\Zu zuerst ein WaitTime 0.2;programmiert habe.
Was meint die Fachwelt dazu?
Triggern mit TriggIO oder TriggEquip oder gar TrigInt??
  • gefällt mir    Danke

Heute um 09:58:22
Antwort #1

Werbung

Gast

26. Januar 2006, 09:35:54
Antwort #1

Borg

Gast
Zuerst würde ich pb mit zone fine anfahren.
Funktioniert es dann immer noch nicht, solltest du in Erwägung ziehen den Status der Wendestation mit einem Endschalter abzufragen. Den Roboter fährst du dann erst weiter wenn der Eingang zur Freigabe da ist.
  • gefällt mir    Danke

26. Januar 2006, 09:50:55
Antwort #2

mischwarz

Gast
Hi,
Bevor ich nach pA fahre wird der Zylinder in die Ausgangsstellung gebracht und diZylinderAuf abgefragt.Das ist OK und funktioniert.
Erst wenn er von pA nach pB fährt und kurz bevor er pB erreicht beginnt der Zylinder zuzufahren.
Was ich brauche ist etwas Bombensicheres,egal ob ich mit v10 oder vMax in die Station einfahre.
Ich denke mit TriggEquip und einer Zeitforgabe im Minusbereich (z.B.-0.2) sollte es funktionieren.Eventuell sollte ich noch eine vorposition anfahren,z.B. MoveL Offs(pB,0,0,2),v200,... und diese Position in einem Interrupt,wo ich diZylinderAuf beobacht.
  • gefällt mir    Danke

26. Januar 2006, 11:10:03
Antwort #3

Borg

Gast
Das mit der Zwischenposition ist keine schlechte Idee. Dahinter fügst du einfach eine Warteposition ein bis DiZylinderAuf da ist (WAITDI). Und erst dann fährst du auf pb weiter.
  • gefällt mir    Danke

26. Januar 2006, 12:38:42
Antwort #4

mischwarz

Gast
Ich werde es heute Nachmittag ausprobieren.
Wenn ich ein Zufriedenstellendes Ergebnis habe,stelle ich es vor.
  • gefällt mir    Danke

Heute um 09:58:22
Antwort #5

Werbung

Gast

27. Januar 2006, 06:39:17
Antwort #5

mischwarz

Gast
Ich habe mein kleines Problem wie folgt geloest:



   !------------------------------------------------------------
    !Procedur     : wende1
    !Beschreibung : Ablaufroutine zum Wenden eines Werkstückes
    !             :
    !             :
    !Parameter    : keine 
    !------------------------------------------------------------
    PROC wende1()
        ! Homeposition Wendestation
      mv_HomeWende;
      VelSet 75, 2000;
        ! Wendestation zurueckfahren
      rWende\Rueck,0;
        ! Wendestation auseinanderfahren
      rWende\Auf,0.5;
        ! In Vorposition zum Ablegen fahren
      MoveJ pW1Abl,v5000,z5,tGreifer\Wobj:=wUmGr;
        ! In Naeherrungsposition zum Ablegen fahren
      MoveL pW2Abl,v500,z5,tGreifer\Wobj:=wUmGr;
        ! In Ablegeposition fahren und Werkstueck spannen
       mv_LoesePos -0.2, v100;
         ! Greifer oeffnen
      rGreifer\Auf, 0.5;
        ! In Warteposition fahren und Wendestation vorfahren
      MoveL pWarteWende,v500,fine,tGreifer\Wobj:=wUmGr;
        ! Wendestation vordrehen
      rWende\Vor, 0.5;
        ! In Vorposition zum Greifen fahren
      MoveL pW2Auf,v500,z5,tGreifer\Wobj:=wUmGr;
        ! In Greifposition fahren
      MoveL pW3Auf,v500,fine,tGreifer\Wobj:=wUmGr;
      rGreifer\Zu,0.5;
        ! Wendestation auseinanderfahren
      rWende\Auf, 0.5;
        ! Aus Wendestation ausfahren
      MoveL pW2Auf,v5000,z5,tGreifer\Wobj:=wUmGr;
        ! In Vorposition fahren
      VelSet 100,5000;
      MoveJ pW1Auf,v5000,z5,tGreifer\Wobj:=wUmGr;
        ! In Homeposition der Wendestation fahren
      mv_HomeWende;
        ! Wendestation zurueckdrehen
      rWende\Rueck,0;
    ENDPROC

  PROC mv_LoesePos(
    num Zeit,
    speeddata Speed)

    CONST string stFm:=" Fehler beim Zylinder; zufahren";
    VAR bool bERROR;

    Reset doWendeAusf;
      ! Vorposition anfahren und Zylinder beobachten
    CONNECT irWende_1 WITH T_Wende;
    ISignalDI diWendeUntenEin,0,irWende_1;
    MoveL Offs(pW3Abl,0,10,10), v500, z0, tGreifer\WObj:=wUmGr;
    IDelete irWende_1;
      ! Loeseposition anfahren
    TriggEquip trWende_2,0,Zeit\DOp:=doWendeAusf,1;
    TriggL pW3Abl,Speed,trWende_2,fine,tGreifer\WObj:=wUmGr;
      ! Warten bis Zylinder ausgefahren ist
    WaitUntil diWendeObenAus=1 AND diWendeUntenAus=1\MaxTime:=2\TimeFlag:=bERROR;
      ! Fehlerbehandlung
    IF bERROR THEN
      Set doSimStoer;
      Reset doWendeAusf;
      PulseDO\PLength:=0.2, doWendeEinf;
      rGreifer\Auf,0;
      mv_Reset 0, 0, 200;
      TPErase;
      TPWrite " Fehler Wendestation ";
      TPWrite stFm ;
      TPReadFK nFK,"Abbruch","Abbruch",stEmpty,stEmpty,stEmpty,stEmpty;
      prog_exit;
    ENDIF
    Reset doWendeAusf;
   ENDPROC

  • gefällt mir    Danke

09. Februar 2006, 19:11:56
Antwort #6

mod-poser

Gast
Hallo,
bei Dir fehlt nur das optionale Argument /InPos für das Waittime.

grüße
msc
  • gefällt mir    Danke

10. Februar 2006, 13:09:47
Antwort #7

mischwarz

Gast
In der Tat,

Danke mod-poser. :merci:
  • gefällt mir    Danke


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH