Seite 1 von 1

lineare Bewegung automatisch laufen lassen (mit Codesys)

Verfasst: 13 Dez 2023, 20:38
von vtreg
hallo,

durch zwei Elemente "Lineare Bewegung" simuliere ich Roboterarm-Bewegung in einer Ebene (XY, von oben gesehen). Dafür habe ich die Möglichkeit durch Eigenschaft "Positionierung" zum ersten Halt in XY-Koordinaten zu Steuern verwendet. Im ersten Schritt funktioniert das auch, wenn zur ersten Position gesteuert werden muss. Dann ändere ich "Positionsvorgabe" und schalte wieder "Positionierung aktivieren" und "Positionsdaten übernehmen" auf TRUE. Die neue Position wird übernommen, aber das Objekt bewegt sich nicht, wenn schon auch die Variablen mit PLC-Lab synchronisiert wurden. Woran könnte das liegen?

---> hier wird zweite Position eingestellt, wenn die erste erreicht wurde:

IF GVL.ST1_RB_PositionReachedX AND GVL.ST1_RB_PositionReachedY THEN
GVL.ST1_RB_xAutomaticMove := FALSE;
GVL.ST1_RB_StartMove := FALSE;

GVL.ST1_RB_iMagnet:=1;

GVL.ST1_RB_iGoToX := 132; // Koordinaten vom 2. Punkt
GVL.ST1_RB_iGoToY := 220;

Robot_Schritt :=2;
END_IF

GVL.ST1_RB_StartMove := TRUE;
GVL.ST1_RB_xAutomaticMove := TRUE;

Re: lineare Bewegung automatisch laufen lassen (mit Codesys)

Verfasst: 14 Dez 2023, 07:42
von Weiss_MHJ
Hallo,

der Antrieb in PLC-Lab benötigt eine pos. Flanke an der Eigenschaft "Positionierdaten übernehmen". Dies ist wahrscheinlich die Ursache, weshalb die zweite Position nicht angefahren wird.
Sie stellen in Ihrer If-Entscheidung fest, dass die Position erreicht ist und setzen StartMove auf false. Gleich darunter setzen Sie StartMove auf true.
Wie soll da der Antrieb in PLC-Lab eine pos. Flanke spüren, wenn der false-Zustand nicht mindestens ein SPS-Zyklus ansteht?

Sie sollten programmtechnisch gewährleisten, dass nach dem Erreichen der Position z.B. 200ms vergehen, bis erneut der Start zum Anfahren der neuen Position erfolgt. Damit der Antrieb die pos. Flanke auch wirklich "spürt".

Re: lineare Bewegung automatisch laufen lassen (mit Codesys)

Verfasst: 16 Dez 2023, 17:52
von vtreg
danke! das war genau das Problem mit dem Flanke. Jetzt läuft das. Ich habe aber ein anderes kleines Problem. Man kann bei "Sensor Positionierung abgeschlossen" beobachten, wann Position erreicht wurde, also aktuelle Position mit Positionsvorgabe übereinstimmt und das dauert manchmal sehr lange, bis "TRUE" gemeldet wird, obwohl beide Positionen (ich habe beide als INT deklariert) schon längst erreicht sind. Woran könnte das liegen und wie könnte das Problem beheben?

Re: lineare Bewegung automatisch laufen lassen (mit Codesys)

Verfasst: 18 Dez 2023, 08:06
von Weiss_MHJ
Hallo,

Sie können die maximale Geschwindigkeit mit welcher der Antrieb seine Position anfährt erhöhen. Dazu stellen Sie in der Eigenschaft "Geschwindigkeit in m/s" der Linearbewegung einen höheren Wert ein.