543.709 aktive Mitglieder*
2.626 Besucher online*
Kostenfrei registrieren
Anmelden Registrieren
Siemens Forum

Digital Industries, Motion Control, Machine Tool Systems

840D Programmfehler, Unterprogramm läuft nicht ab

Beitrag 21.04.2021, 14:35 Uhr
tonkelz
tonkelz
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.09.2014
Beiträge: 25

Hallo. Habe folgendes HauptProgramm:
QUELLTEXT
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


MOMENT.SPF:
QUELLTEXT
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
; -------------------------------------------------------------------------------


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
TOP    
Beitrag 21.04.2021, 15:07 Uhr
Sokke_CAM
Sokke_CAM
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 28.10.2020
Beiträge: 33

Hallo,

hab nur kurz drauf geschaut. Aber ein M30 im Unterprogramm beendet sämtliche Programme.

Versuch das doch mal schnell mit M17 smile.gif


--------------------
~Sokke
TOP    
Beitrag 21.04.2021, 16:14 Uhr
CNCFr
CNCFr
Level 7 = IndustryArena-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.607

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:
QUELLTEXT
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
TOP    
Beitrag 21.04.2021, 17:13 Uhr
tonkelz
tonkelz
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.09.2014
Beiträge: 25

ZITAT(Sokke_CAM @ 21.04.2021, 14:07 Uhr) *
Hallo,

hab nur kurz drauf geschaut. Aber ein M30 im Unterprogramm beendet sämtliche Programme.

Versuch das doch mal schnell mit M17 smile.gif


ok
TOP    
Beitrag 21.04.2021, 17:15 Uhr
tonkelz
tonkelz
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.09.2014
Beiträge: 25

ZITAT(CNCFr @ 21.04.2021, 15: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:
QUELLTEXT
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


ok mit dem FOR 0 To 9 arbeite ich mal, aber durch die Abfrage mit R20 sollen auch 10Mio Zyklen laufen.
TOP    
Beitrag 21.04.2021, 17:16 Uhr
tonkelz
tonkelz
Level 1 = IndustryArena-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 25.09.2014
Beiträge: 25

QUELLTEXT
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


Bei N80 bricht es mir im Hauptprogramm nach dem Unterprogrammaufruf ab .
MOMENT anwählen und ablaufen lassen funktioniert aber einzeln
TOP    



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