P8901 Scomposizione numero intero con massimo 6 cifre
Questo sottoprogramma scompone un numero intero di massimo 6 cifre in numeri singoli e li scrive in variabili.
Verifica necessaria prima dell’uso: nel codice O8901 le cifre vengono scritte nelle variabili #506–#511, mentre l’esempio del programma principale richiama #537–#542. La corrispondenza deve essere controllata sulla versione reale presente in macchina prima di eseguire il programma.
Sottoprogramma O8901
O8901; (Numero sottoprogramma)
#503=#3; (Scrive nella #500 il numero di cifre di cui è composto il numero)
#505=#504; (Copia il numero di cifre da scomporre)
IF [[#505EQ#0]OR[#505EQ0]] THEN#3000=1 (COMPILA LA #504); (Verifica se la #505 è vuota)
IF [#503LT1] THEN #3000=2 (NUMERO CIFRE TROPPO BASSO); (Verifica il limite delle cifre)
IF [#503GT6] THEN #3000=3 (NUMERO CIFRE TROPPO ALTO); (Verifica il limite delle cifre)
IF [#503GE6] THEN #506=FIX[#505/100000]; (Scompone le centinaia di migliaia)
IF [#503GE5] THEN #507=FIX[[#505MOD100000]/10000]; (Scompone le decine di migliaia)
IF [#503GE4] THEN #508=FIX[[#505MOD10000]/1000]; (Scompone le migliaia)
IF [#503GE3] THEN #509=FIX[[#505MOD1000]/100]; (Scompone le centinaia)
IF [#503GE2] THEN #510=FIX[[#505MOD100]/10]; (Scompone le decine)
IF [#503GE1] THEN #511=#505MOD10; (Scompone le unità)
IF [#503GE6] THEN #506=#506+10000; (Aggiunge diecimila per il sottoprogramma di incisione)
IF [#503GE6] THEN #507=#507+10000; (Aggiunge diecimila per il sottoprogramma di incisione)
IF [#503GE6] THEN #508=#508+10000; (Aggiunge diecimila per il sottoprogramma di incisione)
IF [#503GE6] THEN #509=#509+10000; (Aggiunge diecimila per il sottoprogramma di incisione)
IF [#503GE6] THEN #510=#510+10000; (Aggiunge diecimila per il sottoprogramma di incisione)
IF [#503GE6] THEN #511=#511+10000; (Aggiunge diecimila per il sottoprogramma di incisione)
#504=#504+1; (Aggiunge +1 al serial number)
M99; (Ritorna al programma principale)
Programma principale di richiamo
T1M6; (Richiamo utensile)
G0G90G54S7000M3; (Richiamo origine + rotazione mandrino in senso orario)
G0X_Y_C_F_; (posizionamento della macchina in X, Y, e C. Avanzamento di lavoro)
G43H3D3Z30M8; (Posizionamento in Z e accensione acqua)
G65P8901C_; (Richiamo sottoprogramma)
G52X0Y0Z0; (Imposta sistema di coordinate di lavoro)
G52X-17.5Y0Z0; (Imposta sistema di coordinate di lavoro)
M98Q#537; (Richiamo sottoprogramma della cifra)
G52X0Y0Z0; (Imposta sistema di coordinate di lavoro)
G52X-18.5Y0Z0; (Imposta sistema di coordinate di lavoro)
M98Q#538; (Richiamo sottoprogramma della cifra)
G52X0Y0Z0; (Imposta sistema di coordinate di lavoro)
G52X-19.5Y0Z0; (Imposta sistema di coordinate di lavoro)
M98Q#539; (Richiamo sottoprogramma della cifra)
G52X0Y0Z0; (Imposta sistema di coordinate di lavoro)
G52X-20.5Y0Z0; (Imposta sistema di coordinate di lavoro)
M98Q#540; (Richiamo sottoprogramma della cifra)
G52X0Y0Z0; (Imposta sistema di coordinate di lavoro)
G52X-21.5Y0Z0; (Imposta sistema di coordinate di lavoro)
M98Q#541; (Richiamo sottoprogramma della cifra)
G52X0Y0Z0; (Imposta sistema di coordinate di lavoro)
G52X-22.5Y0Z0; (Imposta sistema di coordinate di lavoro)
M98Q#542; (Richiamo sottoprogramma della cifra)
G52X0Y0Z0; (Imposta sistema di coordinate di lavoro)
G53Z0; (Svincolo)
Dati da verificare prima del richiamo
- C_ nel richiamo G65 P8901: numero di cifre previsto dalla macro.
- #504: seriale/numero da scomporre, che la macro copia in #505.
- #506–#511: variabili di uscita effettivamente scritte dal codice mostrato.
- #537–#542: variabili lette dall’esempio principale; verificare se devono essere allineate alle uscite della macro.
- M98 Q...: verificare la sintassi specifica usata dalla macchina per il richiamo delle cifre incise.
Note operative
- Questo esempio è pensato come base semplice e leggibile.
- Prima dell’uso reale verifica sempre compatibilità con il tuo controllo numerico.
- Controlla utensile, quota Z, origine pezzo e piano di sicurezza.
- Puoi duplicare questa pagina per creare altri sottoprogrammi dedicati, ad esempio smusso, maschiatura o fresatura tasca.