Einfaches Verfahren der Achse über die PLC
| |
Dieses Beispiel setzt Simulationsachsen voraus – Verletzungsgefahr bei Verwendung von realen Achsen! Dieses Beispiel erzeugt eine Achsbewegung. Bei der Verwendung von realen Achsen besteht eine Verletzungsgefahr durch Bewegung von Achsen.
|
Voraussetzungen
- Ein TwinCAT-Projekt mit MC-Projekt wurde erstellt,
siehe MC-Projekt erstellen. - Eine Simulationsachse wurde im MC-Projekt angelegt,
siehe Achsobjekt erstellen. - Ein PLC-Projekt wurde im TwinCAT-Projekt angelegt.
PLC Bibliothek einbinden
- 1. Fügen Sie die Tc3_Mc3Ptp-Bibliothek dem PLC-Projekt hinzu. Hierzu im PLC-Projekt einen Rechtsklick auf References > Add library…
- 2. Im Add Library-Dialog die Tc3_Mc3Ptp-Bibliothek auswählen und über OK bestätigen.
- Die Tc3_Mc3Ptp-Bibliothek wurde dem PLC-Projekt hinzugefügt. Funktionsbausteine und Datentypen der Bibliothek können jetzt verwendet werden.
PLC-Programm schreiben
Alle notwendigen Datentypen und Funktionsbausteine für ein einfaches PLC-Motion-Programm mit der MC3 sind in der Bibliothek Tc3_Mc3Ptp enthalten.
AXIS_REF
Je Achse wird eine Instanz vom Datentyp AXIS_REF benötigt, welche die Schnittstelle zwischen PLC und MC3 ist. Sie enthält alle Informationen zur Achse, die den MC-Funktionsbausteinen als Referenz mitgegeben werden.
MC_Power
Über den Funktionsbaustein MC_Power erfolgt die Freigabe der Achse und deren Bewegungsrichtung.
MC_SetOverride
Über den Funktionsbaustein MC_SetOverride kann der Geschwindigkeits-Override der Achse verändert werden. Standardmäßig ist der Faktor 1 (=100 %) hinterlegt, sodass eine Veränderung des Faktors optional ist.
MC_Reset
Mit dem Funktionsbaustein MC_Reset kann ein Fehler an einer Achse zurückgesetzt werden.
MC_MoveRelative
Mit dem Funktionsbaustein MC_MoveRelative kann die Achse um die definierte Distanz verfahren werden.
Einfache Programmierung
- 3. Öffnen Sie im PLC-Projekt unter POUs das MAIN(PRG).
- 4. Fügen Sie folgende Deklarationen ins MAIN(PRG) ein.
PROGRAM MAIN
VAR
axis : AXIS_REF;
power : MC_Power;
setOverride : MC_SetOverride;
moveRelative : MC_MoveRelative;
reset : MC_Reset;
stop : MC_Stop;
enableAxis : BOOL;
enableOverride : BOOL;
executeStop : BOOL;
executeReset : BOOL;
executeMove : BOOL;
velFactor : LREAL := 1; // adapt override factor if necessary(1 corresponds to 100 %)
distance : LREAL := ???; // ToDo: set to a reachable position
velocity : LREAL := ???; // ToDo: set velocity for move
END_VAR- 5. Fügen Sie folgenden Programmcode ins MAIN(PRG) ein.
power(
Axis := axis,
Enable := enableAxis,
EnablePositive := enableAxis,
EnableNegative := enableAxis,
Status => ,
Error => ,
ErrorId => );
setOverride(
Axis := axis,
Enable := enableOverride,
VelocityFactor := velFactor,
Enabled=> ,
Error=> ,
ErrorId=> );
stop(
Axis := axis,
Execute := executeStop, // The command is executed with a positive edge.
Deceleration := , // If the value is <= 0, the deceleration
// parameterized with the last Move command is used.
Jerk := , // If the value is <= 0, the jerk parameterized
// with the last Move command is used.
Done => ,
Busy => ,
Active => ,
CommandAborted => ,
Error => ,
ErrorId => );
reset(
Axis := axis,
Execute := executeReset, // The command is executed with a positive edge.
Done => ,
Busy => ,
Error => ,
ErrorId => );
moveRelative(
Axis := axis,
Execute := executeMove, // The command is executed with a positive edge.
Distance := distance,
Velocity := velocity,
Acceleration := LREAL_CONST.DEFAULT, // If the value is LREAL_CONST.DEFAULT,
// the standard acceleration from the axis configuration is used.
Deceleration := LREAL_CONST.DEFAULT, // If the value is LREAL_CONST.DEFAULT,
// the standard deceleration from the axis configuration is used.
Jerk := LREAL_CONST.DEFAULT, // If the value is LREAL_CONST.DEFAULT,
// the standard jerk from the axis configuration is applied.
BufferMode := Tc3_Mc3Base.EBufferMode.Buffered,
Done => ,
Busy => ,
Active => ,
CommandAborted => ,
Error => ,
ErrorId => );- 6. Passen Sie für den Aufruf vom
moveRelativedie Distanz und die Dynamiken entsprechend Ihrer realen Achse an, sollten Sie keine Simulationsachse verwenden. - 7. Bauen Sie das PLC-Projekt.
- Die Instanz
axisdesAXIS_REFsollte nun unter den PLC-Instanzen im Solution Explorer angezeigt werden. - 8. Verknüpfen Sie die PLC-Instanz des
AXIS_REFmit dem Achsobjekt im MC-Projekt (siehe Achsobjekt verknüpfen). - 9. Aktivieren Sie das TwinCAT-Projekt
. Loggen Sie die PLC ein
und starten Sie diese
. - 10. Prüfen Sie, dass die beim
moveRelativedie vorgegebene Distanz mit den vorgegebenen Dynamiken angefahren werden kann. Passen Sie diese bei Bedarf an. - 11. Wenn Sie sicher sind, dass keine Gefahr durch die beim
moveRelativevorgegebene Bewegung ausgeht, können Sie der Achse die Reglerfreigabe erteilen, indem Sie die VariableenableAxisonline aufTRUEschreiben. - 12. Prüfen Sie, ob die Reglerfreigabe erfolgreich war (
power.Status = TRUE) und beachten Sie die Hinweise zur Betriebsbereitschaft der Achse. Anschließend kann mitexecuteMovedas Bewegungskommando aktiviert werden. - Über
setOverride.Enable := TRUEkann das kontinuierliche Schreiben des Overrides aktiviert werden. ÜbervelFactorwird der Override-Faktor verändert. - Über
stop.Execute = TRUEkann bei Bedarf das Bewegungskommando vorzeitig gestoppt werden. - Im Falle eines Achsfehlers kann dieser über
reset.Execute := TRUEzurückgesetzt werden.
