Bewegungsparameter dynamisch ändern [TwinCat3;Beckhoff]

CallHeTempi

Level-2
Beiträge
48
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine Beckhoff-Steuerung, welche eine Linearachse von links nach rechts fahren lässt. Dieses Programm gab es schon, ich arbeite nur damit. Im Grunde geht es darum, das ich die Bewegungsparameter so anpassen möchte, dass die Achse bspw. 2x mit 10m/s fährt, dann 2x mit 2m/s usw.

Dazu war meine Idee ich könnte die Bewegugsparameter-Variablen "rAcceleration" & "rDeceleration" nach jedem Durchlauf anpassen, sodass die Achse im nächsten mit einer anderen Geschwindigkeit fährt.

In den GVL´s gibt des den Parametersatz "BewegungsparameterPTP1", welcher die Parameter für die Geschwindigkeit, Beschleunigung, Entschleunigung etc. hat.
Screenshot (55).png

Diesen Bewegungsparameter, kann ich nur bearbeiten, wenn ich in die SPS eingeloggt bin. Ich hab schon versucht im SPS-Programm etwas anzuwenden wie:
"GVL_Achse.BewegungsparameterPTP1.rAcceleration := 13000;" die Variable "rAcceleration" findet er jedoch nicht weshalb ich glaube, das diese erst beim Start des SPS-Programms initialisiert werden.

Dann habe ich die Stelle herausgefunden, wo dieser "BewegungsparameterPTP1" Baustein mmn. initialisiert wird und bin hierauf gestoßen:

Screenshot (56).png

Mein nächster Versuch im SPS-Programm sah dann so aus:

Screenshot (53).png

Das funktionierte dann auf den Ersten Blick auch, hier wurden mir dann sogar die gewünschten Variablen vorgeschlagen, jedoch bekam ich dann als ich die Konfiguration in die SPS laden wollte den Fehler "Type name 'ST_Dynamiken' not expected in this place".

Jetzt habe ich keine weitere konstruktive Idee, wie ich mit diesem Problem umgehen könnte. Ich hoffe ihr könnt mir weiterhelfen.

LG
 
Du warst schon dicht dran.
In deinem ersten Screenshot siehst du, dass der GVL_Achse.BewegungsparameterPTP1 ein Array [0..1] vom Typ ST_Dynamiken ist.
Du müsstest jetzt also einen Schreibzugriff auf entweder das nullte oder erste Element dieses Arrays machen, um die Werte abzuändern, nämlich so:
"GVL_Achse.BewegungsparameterPTP1[0].rAcceleration := 13000;"

Das sollte dann funktionieren.

Auf "ST_Dynamiken" selbst kannst du natürlich nicht schreibend zugreifen, weil das keine Variable ist, sondern eine Typdefinition.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kapiere gerade nicht so ganz wo Dein Problem liegt. Beim Aufruf des Fahrbefehls können ja auch Parameter zur Dynamik, sprich Acceleration, Deceleration usw. angegeben werden. Bei jedem Start oder auch extra, vor dem Start musst Du doch nur die passenden Parameter des Befehls entsprechend Deinen Anforderungen ändern.
Nachtrag: Im Gegensatz zum mir hat @koderko begriffen, wo Dein Problem wohl liegt, mein Kommentar hat sich damit erledigt.
 
Zuletzt bearbeitet:
Du warst schon dicht dran.
In deinem ersten Screenshot siehst du, dass der GVL_Achse.BewegungsparameterPTP1 ein Array [0..1] vom Typ ST_Dynamiken ist.
Du müsstest jetzt also einen Schreibzugriff auf entweder das nullte oder erste Element dieses Arrays machen, um die Werte abzuändern, nämlich so:
"GVL_Achse.BewegungsparameterPTP1[0].rAcceleration := 13000;"

Das sollte dann funktionieren.

Auf "ST_Dynamiken" selbst kannst du natürlich nicht schreibend zugreifen, weil das keine Variable ist, sondern eine Typdefinition.
Ach Mensch..haha. Danke dir! Die Konfig konnte ich so jedenfalls schonmal laden. Ich probiere das gleich auch mal in Aktion aus!
 
Zurück
Oben