Siemens
Digital Industries, Motion Control, Machine Tool Systems
8832
Follower:innen840D Programmfehler, Unterprogramm läuft nicht ab
21.04.2021, 14:35 Uhr
Hallo. Habe folgendes HauptProgramm:
MOMENT.SPF:
wenn ich es im Hauptprogramm ablaufen lassen möchte kommt der Fehler
KANAL1 BA FREIGABE ZURÜCKGESETZT URSACHE1 (Reglerfreigabe fehlt)
bei N80 von MOMENT.SPF
Wenn ich aber das Programm MOMENT.SPF direkt anwähle und starte dann läuft es sauber ab. (fahren gegen Festanschlag)
wo kann ich den Fehler im Hauptprogramm haben
CODE
N10 G0G60G90 BA=0
N20 G4F1
N30 G91 BA=29
N40 G4F1
N45 R10=0
N50 M11
N60 G4F0.6
N70 M10
N80 R10=1+R10
N90 IF R10 == 10 GOTOF N110
N100 IF R10 < 10 GOTOB N50
N110 MOMENT
N120 R20=1+R20
N130 IF R20 == 10000000 GOTOF N200
N140 IF R20 < 10000000 GOTOB N30
N200 M2
N20 G4F1
N30 G91 BA=29
N40 G4F1
N45 R10=0
N50 M11
N60 G4F0.6
N70 M10
N80 R10=1+R10
N90 IF R10 == 10 GOTOF N110
N100 IF R10 < 10 GOTOB N50
N110 MOMENT
N120 R20=1+R20
N130 IF R20 == 10000000 GOTOF N200
N140 IF R20 < 10000000 GOTOB N30
N200 M2
MOMENT.SPF:
CODE
N10 DEF REAL StartPos ; Variablendefinition
N20 DEF REAL StoppPos ; Variablendefinition
N30 DEF REAL Diff ; Variablendefinition
N40 DEF INT ERROR ; Variablendefinition
M10
N50 R1=20 ; Antriebsmoment bei Fahrenauf Festanschlag in % vom maximalen Antriebsmoment
N60 $P_UIFR[98,AX1,TR]=0 ; einstellbaren Anwender-Frame aktivieren
N70 StartPos=$AA_IM[BA] ; Startposition 1 auslesen
N75 M15; KLEMMUNG SCHLIESSEN ERZWINGEN
N80 G0 FXS[BA]=1 BA=StartPos+10 FXST[BA]=R1 FXSW[BA]=200 ; Fahren auf Festanschlag im Eilgang, max. 1 Grad
N90 G4 F0.5 ; Wartezeit 0,5 Sekunden
N100 STOPRE ; Vorlaufstopp
N110 StoppPos=$AA_IM[BA] ; Stoppposition 1 auslesen
N120 STOPRE ; Vorlaufstopp
N130 Diff=StoppPos-StartPos ; Differenz 1 berechnen
N140 IF (ABS(Diff))>0.2 GOTOF ErrorDiff; Springe auf Fehler wenn Differenz außerhalb Toleranz
N150 FXS[BA]=0 ; Fahren auf Festanschlag ausschalten
N155 M16; KLEMMUNG SCHLIESSEN ERZWINGEN AUFHEBEN
N160 M10 ; Klemmung einschalten
N180 STOPRE
N190 M30 ; Unterprogrammende
N200 ErrorDiff: ; Sprungmarke fuer Fehler
N210 SETAL(66505) ; Toleranzwert überschritten und Fehler setzen
N220 M00
N230 GOTOB ErrorDiff ; Loop forever
; -------------------------------------------------------------------------------
; ERKLAERUNG ZU FAHREN AUF FESTANSCHLAG:
; FXS[BA]=0 ==> Fahren auf Festanschlag aus
; FXS[BA]=1 ==> Fahren auf Festanschlag ein
; FXST[BA]=3 ==> Antriebsmoment beim Fahren auf Festanschlag in % vom maximalen Antriebsmoment
; FXSW[BA]=2 ==> Überwachungsfenster in Grad
; -------------------------------------------------------------------------------
N20 DEF REAL StoppPos ; Variablendefinition
N30 DEF REAL Diff ; Variablendefinition
N40 DEF INT ERROR ; Variablendefinition
M10
N50 R1=20 ; Antriebsmoment bei Fahrenauf Festanschlag in % vom maximalen Antriebsmoment
N60 $P_UIFR[98,AX1,TR]=0 ; einstellbaren Anwender-Frame aktivieren
N70 StartPos=$AA_IM[BA] ; Startposition 1 auslesen
N75 M15; KLEMMUNG SCHLIESSEN ERZWINGEN
N80 G0 FXS[BA]=1 BA=StartPos+10 FXST[BA]=R1 FXSW[BA]=200 ; Fahren auf Festanschlag im Eilgang, max. 1 Grad
N90 G4 F0.5 ; Wartezeit 0,5 Sekunden
N100 STOPRE ; Vorlaufstopp
N110 StoppPos=$AA_IM[BA] ; Stoppposition 1 auslesen
N120 STOPRE ; Vorlaufstopp
N130 Diff=StoppPos-StartPos ; Differenz 1 berechnen
N140 IF (ABS(Diff))>0.2 GOTOF ErrorDiff; Springe auf Fehler wenn Differenz außerhalb Toleranz
N150 FXS[BA]=0 ; Fahren auf Festanschlag ausschalten
N155 M16; KLEMMUNG SCHLIESSEN ERZWINGEN AUFHEBEN
N160 M10 ; Klemmung einschalten
N180 STOPRE
N190 M30 ; Unterprogrammende
N200 ErrorDiff: ; Sprungmarke fuer Fehler
N210 SETAL(66505) ; Toleranzwert überschritten und Fehler setzen
N220 M00
N230 GOTOB ErrorDiff ; Loop forever
; -------------------------------------------------------------------------------
; ERKLAERUNG ZU FAHREN AUF FESTANSCHLAG:
; FXS[BA]=0 ==> Fahren auf Festanschlag aus
; FXS[BA]=1 ==> Fahren auf Festanschlag ein
; FXST[BA]=3 ==> Antriebsmoment beim Fahren auf Festanschlag in % vom maximalen Antriebsmoment
; FXSW[BA]=2 ==> Überwachungsfenster in Grad
; -------------------------------------------------------------------------------
wenn ich es im Hauptprogramm ablaufen lassen möchte kommt der Fehler
KANAL1 BA FREIGABE ZURÜCKGESETZT URSACHE1 (Reglerfreigabe fehlt)
bei N80 von MOMENT.SPF
Wenn ich aber das Programm MOMENT.SPF direkt anwähle und starte dann läuft es sauber ab. (fahren gegen Festanschlag)
wo kann ich den Fehler im Hauptprogramm haben
21.04.2021, 15:07 Uhr
Hallo,
hab nur kurz drauf geschaut. Aber ein M30 im Unterprogramm beendet sämtliche Programme.
Versuch das doch mal schnell mit M17
hab nur kurz drauf geschaut. Aber ein M30 im Unterprogramm beendet sämtliche Programme.
Versuch das doch mal schnell mit M17
--------------------
~Sokke
21.04.2021, 16:14 Uhr
Die Schleife deines Hauptprogramms ist ja anscheinend eine Art Endlosschleife, denn wenn das eigentliche Programm auch nur drei Sekunden läuft, ist die Gesamtlaufzeit des Programms etwa 1 Jahr.
Statt der undurchsichtigen Sprünge würde ich das Programm deshalb eher folgendermaßen schreiben:
Statt der undurchsichtigen Sprünge würde ich das Programm deshalb eher folgendermaßen schreiben:
CODE
N10 G0G60G90 BA=0
N20 G4F1
N30 LOOP
N40 G91 BA=29
N50 G4F1
N60 FOR R10 = 0 TO 9
N70 M11
N80 G4F0.6
N90 M10
N100 ENDFOR
N110 MOMENT
N120 ENDLOOP
N130 M2
N20 G4F1
N30 LOOP
N40 G91 BA=29
N50 G4F1
N60 FOR R10 = 0 TO 9
N70 M11
N80 G4F0.6
N90 M10
N100 ENDFOR
N110 MOMENT
N120 ENDLOOP
N130 M2
21.04.2021, 17:13 Uhr
21.04.2021, 17:15 Uhr
Die Schleife deines Hauptprogramms ist ja anscheinend eine Art Endlosschleife, denn wenn das eigentliche Programm auch nur drei Sekunden läuft, ist die Gesamtlaufzeit des Programms etwa 1 Jahr.
Statt der undurchsichtigen Sprünge würde ich das Programm deshalb eher folgendermaßen schreiben:
Statt der undurchsichtigen Sprünge würde ich das Programm deshalb eher folgendermaßen schreiben:
CODE
N10 G0G60G90 BA=0
N20 G4F1
N30 LOOP
N40 G91 BA=29
N50 G4F1
N60 FOR R10 = 0 TO 9
N70 M11
N80 G4F0.6
N90 M10
N100 ENDFOR
N110 MOMENT
N120 ENDLOOP
N130 M2
N20 G4F1
N30 LOOP
N40 G91 BA=29
N50 G4F1
N60 FOR R10 = 0 TO 9
N70 M11
N80 G4F0.6
N90 M10
N100 ENDFOR
N110 MOMENT
N120 ENDLOOP
N130 M2
ok mit dem FOR 0 To 9 arbeite ich mal, aber durch die Abfrage mit R20 sollen auch 10Mio Zyklen laufen.
21.04.2021, 17:16 Uhr
CODE
N75 M15; KLEMMUNG SCHLIESSEN ERZWINGEN
N80 G0 FXS[BA]=1 BA=StartPos+10 FXST[BA]=R1 FXSW[BA]=200 ; Fahren auf Festanschlag im Eilgang, max. 1 Grad
N80 G0 FXS[BA]=1 BA=StartPos+10 FXST[BA]=R1 FXSW[BA]=200 ; Fahren auf Festanschlag im Eilgang, max. 1 Grad
Bei N80 bricht es mir im Hauptprogramm nach dem Unterprogrammaufruf ab .
MOMENT anwählen und ablaufen lassen funktioniert aber einzeln
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: