543.877 aktive Mitglieder*
2.454 Besucher online*
Kostenfrei registrieren
Anmelden Registrieren
Siemens Forum

Digital Industries, Motion Control, Machine Tool Systems

Vorschubstopp bei Drehzahl-OVR 840D sl

Beitrag 22.04.2021, 11:17 Uhr
SvenjaR
SvenjaR
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.06.2020
Beiträge: 5

Hallo zusammen,

ich habe ein Programm geschrieben, durch das der Drehzahl-OVR bei bestimmten Prozesssituationen automatisch über den Profibus in einer Synchronaktion angepasst. Leider wird bei der Drehzahl-Anpassung der Vorschub kurz gestoppt, was sich als Marke auf der Werkstückoberfläche bemerkbar macht.
Habt ihr Ideen, woher das kommt? Bzw. ob man die Drehzahlanpassung auch ohne Vorschub-OVR machen kann?

Vielen Dank schon mal für eure Rückmeldungen.
TOP    
Beitrag 22.04.2021, 13:38 Uhr
CaptainFu
CaptainFu
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 09.09.2019
Beiträge: 30

ZITAT(SvenjaR @ 22.04.2021, 13:17 Uhr) *
Hallo zusammen,

ich habe ein Programm geschrieben, durch das der Drehzahl-OVR bei bestimmten Prozesssituationen automatisch über den Profibus in einer Synchronaktion angepasst. Leider wird bei der Drehzahl-Anpassung der Vorschub kurz gestoppt, was sich als Marke auf der Werkstückoberfläche bemerkbar macht.
Habt ihr Ideen, woher das kommt? Bzw. ob man die Drehzahlanpassung auch ohne Vorschub-OVR machen kann?

Vielen Dank schon mal für eure Rückmeldungen.



Wenn sich die Drehrichtung nicht ändern soll und die Spindel keine Folgeachse einer Kopplung ist, kann man über eine Synchronaktionen auch direkt die Drehzahl beeinflussen (siehe Testprog). Sehen wird man das natürlich auch, da die Spindelbeschleunigung ja nicht schlagartig erfolgt, der Vorschub sollte dabei allerdings nicht stoppen. Womit jetzt die Drehzaländerung getriggert wird, Profibus, schneller Eingang, Messeingang usw. sollte dabei egal sein.

G0 G90 G64
X=500

S1=500 M4
Waits(1)

Msg("Spindelistdrehzahl "<<$Aa_S[1])

Id=1 Every($AA_IM[X]<400)Do S1=1000
Id=2 Every($AA_IM[X]>=400)Do S1=500

;Spindel beschleunigt sobald die X Achse < 400
G1 X=200 F500
Msg("Spindelistdrehzahl "<<$Aa_S[1])

;Spindel bremmst sobald X Achse wieder >=400
G1 X=450
Msg("Spindelistdrehzahl "<<$Aa_S[1])

Cancel(1,2)

G4 F10
M30






TOP    
Beitrag 22.04.2021, 17:35 Uhr
SvenjaR
SvenjaR
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.06.2020
Beiträge: 5

Hallo CaptainFu,

vielen Dank für die Antwort. In meinem Programm schreibe ich mit einem externen PC Werte auf den Profi-Bus für den Drehzahl-OVR:
ID=1 DO $AA_OVR[S1]=$A_DPSW_IN[0,1]

Mit dem ADAS-Zyklus von Siemens zeichnen wir nebenher die Steuerungsdaten (Drehzahl, Achsvorschübe, Antriebsströme etc.) im IPO-Takt (4 ms) mit. Jedes mal bei einer Drehzahländerung geht der Vorschub laut den Daten auf Null. Bei genauem Hinsehen erkennt man das auch im Prozess coangry.gif

Wenn wir die Drehzahl in einer Schleife ändern gibt es auch jedes mal diesen Vorschubstopp... Da dacht ich bisher, dass es an der Interpolation liegt; aber das sollte beim OVR ja kein Problem sein?

WHILE $AA_IM[X] < 400
S = var_S
G91 X10
var_S = var_S + 10
ENDWHILE

Kann das irgendwie an der PLC-Programmierung liegen?
TOP    
Beitrag 22.04.2021, 18:39 Uhr
CNCFr
CNCFr
Level 7 = IndustryArena-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.610

ZITAT(SvenjaR @ 22.04.2021, 18:35 Uhr) *
WHILE $AA_IM[X] < 400
S = var_S
G91 X10
var_S = var_S + 10
ENDWHILE

Für das Problem beim Vorschuboverride mittels Synchronaktionen habe ich auch keine Erklärung.
Bei deinem Programm mit der WHILE-Schleife sieht das allerdings anders aus:
Die Systemvariable $AA_IM[...] ist, wie man schon aus dem Namen (Beginn mit $AA_) erkennt, eine sog. Hauplaufvariable, die - wie es auch dokumentiert ist - einen Vorlaufstop auslöst. Der Vorlaufstop wiederum ist die Ursache für den Vorschubstop.
Vorlaufstop beutet, dass die Satzvorbereitung solange angehalten wird, bis der Satz mit dem Lesebefehl in der Interpolationsebene (im Hauptlauf) angekommen ist, denn erst zu dem Zeitpunkt ist ja bekannt, welchen Wert die Variable liefert. Erst danach kann die Interpretation des NC-Programms wieder fortgesetzt werden, denn in deinem Beispiel hängt ja vom gelesenen Wert ab, mit welchem Satz es im Programm weiter geht. Das führt zwangsläufig zu einem Stillstand bei den normalen Bahnbewegungen.
Mit dem PLC hat das nichts zu tun.
TOP    
Beitrag 23.04.2021, 09:04 Uhr
CaptainFu
CaptainFu
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 09.09.2019
Beiträge: 30

Wie sieht den das Programm oder der Programmteil genau aus an dem das Problem auftritt? Vielleicht lässt sich dann mehr dazu sagen.
TOP    
Beitrag 25.04.2021, 21:49 Uhr
SvenjaR
SvenjaR
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.06.2020
Beiträge: 5

Anbei das Programm (etwas gekürzt) bei dem der Vorschubstopp auftritt. Zum Testen ist es erstmal ein ganz einfacher Planfräsprozess. Ob es evtl. an der Programmierung mit konstantem Zahnvorschub liegt? coangry.gif

---
DEF REAL var_ap = 1
DEF REAL var_ae = 0.1

S = 20000 M3;
G95 F = 0.04

; Vorschub
ID = 243 DO $AA_OVR[S1] = $A_DPSW_IN[0,0];

G90 Z = 20
G90 X=-20 Y=-4;

WHILE($AA_IM[Y] < 280)
G95 F=0.04;
G91 Y = 2;
G90 Z = -4;
G90 X = 0;
G90 X = 175;
G90 Z = 50
G94 F=5000
G90 X = -20;
ENDWHILE
M30;

Der Beitrag wurde von SvenjaR bearbeitet: 25.04.2021, 21:50 Uhr
TOP    
Beitrag 26.04.2021, 10:39 Uhr
CaptainFu
CaptainFu
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 09.09.2019
Beiträge: 30

ZITAT(SvenjaR @ 25.04.2021, 23:49 Uhr) *
Anbei das Programm (etwas gekürzt) bei dem der Vorschubstopp auftritt. Zum Testen ist es erstmal ein ganz einfacher Planfräsprozess. Ob es evtl. an der Programmierung mit konstantem Zahnvorschub liegt? coangry.gif

---
DEF REAL var_ap = 1
DEF REAL var_ae = 0.1

S = 20000 M3;
G95 F = 0.04

; Vorschub
ID = 243 DO $AA_OVR[S1] = $A_DPSW_IN[0,0];

G90 Z = 20
G90 X=-20 Y=-4;

WHILE($AA_IM[Y] < 280)
G95 F=0.04;
G91 Y = 2;
G90 Z = -4;
G90 X = 0;
G90 X = 175;
G90 Z = 50
G94 F=5000
G90 X = -20;
ENDWHILE
M30;


Also mal ins Blaue hinein würde ich sagen es kommt durch die Synchronaktion. Kannst Du sicherstellen das in dem Doppelwort nie eine "0" bzw. ein recht kleiner Wert steht? Die Grenzen für $Aa_Ovr liegen zwischen 0 u. 200%? Das ließe sich mit einer zweiten Synchronaktion, nur für den Test, ganz gut prüfen, z.B. in dem man einen R-Parameter hochzählt wenn ein bestimmter Wert unterschritten wird. Je nach Ergebnis ist man dann schon etwas schlauer.

;Zähler reset
Cancel(243,244)
R1=0
; Vorschub
ID = 243 DO $AA_OVR[S1] = $A_DPSW_IN[0,0]
;Doppelwort prüfen, immer wenn der Wert unter 10 fällt, was in Deinem Fall ja einen Ovr <10 % bedeuten würde, den Parameter hochzählen
ID = 244 Every ($A_Dpsw_In[0,0] < 10) Do $R1=$R1+1




TOP    
Beitrag 14.06.2021, 17:25 Uhr
SvenjaR
SvenjaR
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.06.2020
Beiträge: 5

So ist schon ein bisschen her.... Leider ist das Problem immer noch nicht gelöst. Wir haben heute das Beispiel mit dem Timer aus dem folgenden Beitrag mit unserer Frässpindel ausgetestet:
Drehzahl Pendeln

Das mit der Sinus-Schwingung hat super funktioniert und es gab auch keinen Vorschubstopp. Anstatt der kontinuierlichen Veränderung wollen wir die Drehzahl allerdings stufenweise verändern.
Mit den folgenden zwei Beispielen hatten wir allerdings wieder einen ruckartigen Vorschubstopp bei der Drehzahländerung (diesmal mit Hartcodierten OVR-Werten, um Fehler im Profi-Bus zu vermeiden):
1)
QUELLTEXT
G64
STARTFIFO; Nur zur Sicherheit ...
S = 5000;
G01 X = 50;
G01 X = 100 S = 6000;


2)
QUELLTEXT
ID=230 WHENEVER $AA_IW[X] > 50 DO $AA_OVR[S1] = 50


Habt ihr noch eine Idee, woran das liegen kann bzw. ob so eine stufenweise Änderung der Drehzahl überhaupt ohne Vorschubstopp möglich ist?

Vielen Dank schon mal für eure Hilfe.

TOP    
Beitrag 14.06.2021, 19:26 Uhr
CNCFr
CNCFr
Level 7 = IndustryArena-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.610

Vielleicht hat es ein Problem, das man mit den MDs 35150 und / oder 35500 erschlagen kann.
Damit kann eingestellt werden, dass die Interpolation angehalten wird, bis die Spindel ihre Solldrehzahl erreicht hat. Das würde zu deinem Fehlerbild passen.
TOP    



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