Hallo zusammen, ich habe folgendes Problem:
Ich habe eine externe Linearachse (E1) an einem Roboter, welche je nach Werkstück eine unterschiedlich lange und unterschiedlich schnelle Hubbewegung durch einen Zylinder macht.
Es handelt sich um eine Maschine, die einen Zylinder von innen Lackiert. Um alle Prozesstoleranzen (Lackstärke) einhalten zu könnenm muss der Vorschub bei der Abwärtsbewegung ein wenig beschleunigt (z. B. 0,023 %/mm) und bei der Aufwärtsbewegung eben wieder verlangsamt werden. Die Bewegung muss sehr linear beschleunigt und abgebremst werden - es darf also kein merklicher Treppeneffekt entstehen.
Die Variablen "iE1_Vorschub_Soll (z.B. 55%), IE1_Start (z.B. 100mm), iE1_Ende (z.B. 200mm)" kommen von einer externen Steuerung
Eine berechnung müsste folgendermaßen so aussehen: $VEL_EXTAX[1]=iE1_Vorschub_Soll+((AXIS_ACT-iE1_Start)*0,023) und kontinuierlich während der Bewegung berechnet werden - ist das möglich?
Hier nun mein Originalprogramm für die abwärtsbewegung (E1 soll also beschleunigt werden):
DEF sprueher_ende()
;==========Externe Achsen initialisieren
$ACC_EXTAX[1]=100
$OV_ASYNC=100
SWITCH $count_i[1]
CASE 0
$VEL_EXTAX[1]=100
DEFAULT
$VEL_EXTAX[1]=iE1_Vorschub_Soll
ENDSWITCH
;==========Sprüher in Endposition fahren
BRENNER.E1=iE1_Ende
ASYPTP SPRUEHER
WHILE $ASYNC_STATE == #BUSY
ENDWHILE
END
vielen Dank im Voraus für eure Vorschläge