Siemens ripetizione parte programma con IF

Rispondi
Avatar utente
fpolo
Newbie
Newbie
Messaggi: 9
Iscritto il: mercoledì 5 marzo 2008, 13:00
Località: MEZZOLOMBARDO (TN)

Siemens ripetizione parte programma con IF

Messaggio da fpolo » lunedì 6 giugno 2022, 7:24

Buongiorno
vi chiedo aiuto

ho bisogno di ripetere una parte del sottoprogramma etichettata.
Il problema è che finita quella LBL continua ad andare avanti invece di tornare al punto prima della ripetizione.
Per es. blocco N140 se parametro R12=0 ripeti LBL0A ... lui ripete la labl nel blocco N380 ma non si ferma.
la domanda è : con IF come faccio a ripetere tra un etichetta e l'altra visto che N140 IF R12==0 REPEAT LBL0A ENDLABEL non funziona ?

N120 M5
N130 SPOS[1]=R12
N140 IF R12==0 GOTOF LBL0A
N150 IF R12==90 GOTOF LBL90A
N160 IF R12==180 GOTOF LBL180A
N170 IF R12==270 GOTOF LBL270A
N180 G1 Z=-R15-R16-R12
N190 IF R12==0 GOTOF LBL0B
N200 IF R12==90 GOTOF LBL90B
N210 IF R12==180 GOTOF LBL180B
N220 IF R12==270 GOTOF LBL270B
N230 M3
N240 G4 F0.5
N250 G1 Z=IC(R10+R11)F=R17
N260 G4 F0.5
N270 G1 Z=IC(-2) F500
N280 M5
N290 SPOS[1]=R12
N300 IF R12==0 GOTOF LBL0A
N310 IF R12==90 GOTOF LBL90A
N320 IF R12==180 GOTOF LBL180A
N330 IF R12==270 GOTOF LBL270A
N340 G1 Z=+R16+R12
N350 M3
M17


N370 ;-----------------------------------
N380 LBL0A:
N390 G1 X=IC(-R14) F500
N400 ENDLABEL:
N410 LBL90A:
N420 G1 Y=IC(-R14) F500
N430 ENDLABEL:
N440 LBL180A:
N450 G1 X=IC(+R14) F500
N460 ENDLABEL:
N470 LBL270A:
N480 G1 Y=IC(+R14) F500
ENDIF
N490 ENDLABEL:
N500 LBL0B:
N510 G1 X=IC(-R14) F500
N520 ENDLABEL:
N530 LBL90B:
N540 G1 Y=IC(-R14) F500
N550 ENDLABEL:
N560 LBL180B:
N570 G1 X=IC(+R14) F500
N580 ENDLABEL:
N590 LBL270B:
N600 G1 Y=IC(+R14) F500
N610 ENDLABEL:
N620 ;-----------------------------------
N630 M17


grazie
fpolo,
programmatore (siemens-heidenhain-philips-fanuc)

torn24
God
God
Messaggi: 5073
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Siemens ripetizione parte programma con IF

Messaggio da torn24 » lunedì 6 giugno 2022, 7:50

Non sono esperto di siemens ho dato un occhiata al manuale, ha una parametrica molto evoluta, per ripetere abbiamo il while o for.
Comunque se salti a una riga, il programma passa a quell'etichetta e ovviamente continua da li, semplicemente si sposta da un punto a un altro del programma e poi prosegue.

Se vuoi eseguire un unica volta devi prevedere un successivo GOTOB a fine istruzione che magari ti porta all'inizio o alla riga voluta.
Qualcosa del genere.


N120 M5
N130 SPOS[1]=R12
N140 IF R12==0 GOTOF LBL0A
N150 IF R12==90 GOTOF LBL90A
N160 IF R12==180 GOTOF LBL180A
N170 IF R12==270 GOTOF LBL270A
N180 G1 Z=-R15-R16-R12
N190 IF R12==0 GOTOF LBL0B
N200 IF R12==90 GOTOF LBL90B
N210 IF R12==180 GOTOF LBL180B
N220 IF R12==270 GOTOF LBL270B
N230 M3
N240 G4 F0.5
N250 G1 Z=IC(R10+R11)F=R17
N260 G4 F0.5
N270 G1 Z=IC(-2) F500
N280 M5
N290 SPOS[1]=R12
N300 IF R12==0 GOTOF LBL0A
N310 IF R12==90 GOTOF LBL90A
N320 IF R12==180 GOTOF LBL180A
N330 IF R12==270 GOTOF LBL270A
N340 G1 Z=+R16+R12
N350 M3
M17


N370 ;-----------------------------------
N380 LBL0A:
N390 G1 X=IC(-R14) F500
N400 GOTOB N150



Non posso sapere cosa vuoi fare e non conosco bene siemens, ma non so se il programma è pensato bene, come detto per ripetere ci sono i cicli while, for, e normalmente non c'è la necessita di andare su righe di programma come se fossero sottoprogrammi, ma si salta per necessità diverse.
CIAO A TUTTI !

torn24
God
God
Messaggi: 5073
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Siemens ripetizione parte programma con IF

Messaggio da torn24 » lunedì 6 giugno 2022, 9:08

Potresti provare a crearti sottoprogrammi per le righe che ti interessano, ossia sostituire salto a riga a salto a sottoprogramma, il sottoprogramma dopo richiamato ritorna alla riga successiva.

N140 IF R12==0
SUB1 (chiama il sottoprogramma, finito il sottoprogramma, il programma ritorna alla riga successiva N150)
ENDIF
N150 IF R12==90 GOTOF LBL90A




PROC SUB1 ; Subprogram SUB1
G1 X=IC(-R14) F500
M17
CIAO A TUTTI !

Rispondi

Torna a “Siemens”