Syncronaktionen

Hallo zusammen,
ich bin auf das Thema Syncronaktionen gestoßen, habe ich bisher noch nicht mit gearbeitet.
Ich würde gern, während der Vorschub Bewegung alle 2sek. eine Vorschubunterbrechung erzeugen.
Ist das möglich?
Wenn es möglich ist wie programmierer man das.
Folgenden Ablauf stell ich mir vor.
1. Timer starten und Vorschub starten.
2. Erreicht der Timer 2sek. Vorschub auf 0 setzen
3. 0,5sek. Pause sprung zurück zur 1.
Und das so lang bis die Vorschubbewegung beendet ist.
Mit freundlichen Grüße
ich bin auf das Thema Syncronaktionen gestoßen, habe ich bisher noch nicht mit gearbeitet.
Ich würde gern, während der Vorschub Bewegung alle 2sek. eine Vorschubunterbrechung erzeugen.
Ist das möglich?
Wenn es möglich ist wie programmierer man das.
Folgenden Ablauf stell ich mir vor.
1. Timer starten und Vorschub starten.
2. Erreicht der Timer 2sek. Vorschub auf 0 setzen
3. 0,5sek. Pause sprung zurück zur 1.
Und das so lang bis die Vorschubbewegung beendet ist.
Mit freundlichen Grüße



Level 1 = Community-Lehrling

Gruppe: Mitglied
Mitglied seit: 10.07.2024
Beiträge: 8
Mitglied seit: 10.07.2024
Beiträge: 8
Hallo malte93,
wie programmierst du die Vorschubbewegung? G-Code oder Zyklus?
Welchen Softwarestand hat die Maschine?
Gruß
Harald
wie programmierst du die Vorschubbewegung? G-Code oder Zyklus?
Welchen Softwarestand hat die Maschine?
Gruß
Harald
--------------------

Hallo Harald,
Ich programmier im G-Code.
Softwarestand kann ich dir grade nicht nennen, die Maschine ist aber nur ca. 2 Jahre alt.
Gruß
Ich programmier im G-Code.
Softwarestand kann ich dir grade nicht nennen, die Maschine ist aber nur ca. 2 Jahre alt.
Gruß

Moin.
$AA_OVR[Z] ich habe hier mal die Z-Achse angenommen du kannst natürlich auch eine andere nutzen.
ID=90 und 91 sind auch nur als Beispiel.
$AC_TIMER[1]=0
ID=90 Whenever $AC_TIMER[1]>2 DO $AA_OVR[Z]=0
ID=91 Whenever $AC_TIMER[1]>2.5 DO $AA_OVR[Z]=100 $AC_TIMER[1]=0
G1....
Cancel(90,91)
Gruß
Tobi
$AA_OVR[Z] ich habe hier mal die Z-Achse angenommen du kannst natürlich auch eine andere nutzen.
ID=90 und 91 sind auch nur als Beispiel.
$AC_TIMER[1]=0
ID=90 Whenever $AC_TIMER[1]>2 DO $AA_OVR[Z]=0
ID=91 Whenever $AC_TIMER[1]>2.5 DO $AA_OVR[Z]=100 $AC_TIMER[1]=0
G1....
Cancel(90,91)
Gruß
Tobi

Hallo Tobi,
Danke für die Antwort ich glaube das löst mein Problem.
Hätte dazu aber noch zwei Fragen.
Kann ich den vorschub auch generell stoppen unabhängig von der Achse, also mit $AC_OVR?
Kann ich mehrere g1, g2, g3 bis zum cancel schreiben?
Und kann ich das immer wieder über ID=90 und ID=91 aufrufen oder muss es immer komplett neu programmiert werden?
Danke schonmal
Gruß Malte
Der Beitrag wurde von malte93 bearbeitet: 04.02.2025, 10:37 Uhr
Danke für die Antwort ich glaube das löst mein Problem.
Hätte dazu aber noch zwei Fragen.
Kann ich den vorschub auch generell stoppen unabhängig von der Achse, also mit $AC_OVR?
Kann ich mehrere g1, g2, g3 bis zum cancel schreiben?
Und kann ich das immer wieder über ID=90 und ID=91 aufrufen oder muss es immer komplett neu programmiert werden?
Danke schonmal
Gruß Malte
Der Beitrag wurde von malte93 bearbeitet: 04.02.2025, 10:37 Uhr

Natürlich kannst du das auch über den $AC_OVR machen.
Du kannst so viele Sätze da zwischen machen wie du möchtest. Die Syncronaktionen bleiben so lange aktiv bis zum Cancel oder Reset.
Nachträglich wieder aufrufen kannst du die so nicht.
Entweder du deklarierst sie immer neu bevor du sie brauchst oder du deklarierst sie am Anfang vom Programm evtl. auch als Zyklus und gibst bei der Bedingung noch etwas mit ein.
Dann sind sie über die ganze Programmlaufzeit vorhanden und du schaltest sie ein und aus. Z.B. über eine R-Variable.
$AC_TIMER[1]=0
ID=90 Whenever ($AC_TIMER[1]>2)AND($R[1]==1) DO $AA_OVR[Z]=0
ID=91 Whenever ($AC_TIMER[1]>2.5)AND($R[1]==1) DO $AA_OVR[Z]=100 $AC_TIMER[1]=0
G1....
Cancel(90,91)
Gruß
Du kannst so viele Sätze da zwischen machen wie du möchtest. Die Syncronaktionen bleiben so lange aktiv bis zum Cancel oder Reset.
Nachträglich wieder aufrufen kannst du die so nicht.
Entweder du deklarierst sie immer neu bevor du sie brauchst oder du deklarierst sie am Anfang vom Programm evtl. auch als Zyklus und gibst bei der Bedingung noch etwas mit ein.
Dann sind sie über die ganze Programmlaufzeit vorhanden und du schaltest sie ein und aus. Z.B. über eine R-Variable.
$AC_TIMER[1]=0
ID=90 Whenever ($AC_TIMER[1]>2)AND($R[1]==1) DO $AA_OVR[Z]=0
ID=91 Whenever ($AC_TIMER[1]>2.5)AND($R[1]==1) DO $AA_OVR[Z]=100 $AC_TIMER[1]=0
G1....
Cancel(90,91)
Gruß

Besten Dank Tobi
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: