25. Mai 2019, 03:03:02
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

 Genauigkeit TRIGGER WHEN PATH


normal_post Autor Thema:  Genauigkeit TRIGGER WHEN PATH  (Gelesen 360 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

24. April 2019, 16:24:12
Gelesen 360 mal
Offline

Baumfaust


Hallo,

ich habe ein Problem mit der Genauigkeit des Triggerbefehls in Verbindung mit RSI. Der Roboter führt eine Sonde und fährt damit einen rechteckige Ebene von ca. 200 x 300 mm Zeile für Zeile ab mit einem Zeilenvorschub von 0.5 mm.
Nun soll "während der Fahrt" ein Signal über RSI sowie über die IO Ebene per Feldbus gesetzt werden.

Das Problem ist allerdings, dass der Schaltvorgang in jeder Zeile zu einem anderen Zeitpunkt kommt, die Abweichung sind nicht groß, aber doch problematisch. Geteached werden für den ganzen Prozess 5 Punkte, nämlich Start, TriggerOn, TriggerOff, End für eine Zeile und dann noch der Endpunkt für die letzte Zeile. Der Vorschub wird dann mittels Toolkorrektur realisiert.
Die Ein und Ausschaltpunkte werden benötigt um den Roboter beschleunigen und abbremsen zu lassen, da zwischen TriggerOn und TriggerOff eine konstante Geschwindigkeit benötigt wird.

Habt ihr eine Idee wie man das ganze genauer hinbekommen könnte?
Anstatt das Tool zu korrigieren hab ich überlegt auch mit überschleifen zu arbeiten, aber dabei kann man wohl keine IOs schalten.

Schaubild

Start........................TriggerOn................TriggerOff...................End
.
.
.
.
.
.
EndZeile



Hier der Code dazu
iDistStart =-VLenEe6pos( EXBOREREF_TRIG_ON,  EXBOREREF_END )
iDistEnd   =-VLenEe6pos( EXBOREREF_TRIG_OFF, EXBOREREF_END )
LOOP
 CONTINUE
 IF (((TOOL_CORR.Z-rStep)>-rHoehe) AND PC_RDY AND TSK_ACK ) THEN
  EEMove( EXBOREREF_START, #ELIN)
  TRIGGER WHEN PATH=iDistStart DELAY=0 do StartAll() PRIO=1
  TRIGGER WHEN PATH=iDistEnd   DELAY=0 do StopAll()  PRIO=1
  EEMove( EXBOREREF_END, #ELIN)
  TOOL_CORR.Z = TOOL_CORR.Z - rStep
 ELSE
  goto ende
 ENDIF
ENDLOOP
ende:
TOOL_CORR_ON = FALSE;
TOOL_CORR = $NULLFRAME
EEMove( EXBOREREF_START, #ELIN)
RETURN PC_RDY
ENDFCT

DEF StartAll()
  $SEN_PINT[1] = $SEN_PINT[1]+1
  F_RB_BP_ON=FALSE

END

DEF StopAll()

  F_RB_BP_ON=TRUE
END

« Letzte Änderung: 24. April 2019, 16:26:33 von Baumfaust »
  • gefällt mir    Danke

Heute um 03:03:02
Antwort #1

Werbung

Gast


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