Le righe ISO sono le sole che possano contenere istruzioni operative, ossia che possono provocare azioni FISICHE sulla macchina utensile.
Le righe ISO sono costituite da un numero di riga (non necessario) e da una serie di istruzioni elementari.
1.3.1 Concatenamento di righe Se in una riga devono stare più caratteri di quanto contenibili in una sola riga, si può spezzare una riga in più parti, che però restano funzionalmente un solo blocco di istruzioni. Ciò si ottiene mettendo il carattere '$' prima della fine della riga: la riga successiva viene concatenata alla riga che contiene il '$', gli eventuali caratteri tra '$' e fine riga sono ignorati.
Si possono concatenare più righe, con un massimo di 240 caratteri contenuti.
Nota sulla concatenazione di righe di part-program col carattere "$"
Si precisa che la concatenazione di più righe di part-program col carattere "$" è possibile solo in programmi eseguiti da memoria interna CMOS, e che invece non è possibile in programmi eseguiti in DNC.
Numero di riga N99999.9999 Se c'è, il numero di riga deve essere a inizio riga.
N99999,9999 Il numero di riga è costituito dal carattere N seguito da un numero con fino a 9 cifre significative, prima o dopo la virgola o punto decimale: le specifiche sono le stesse dei valori numerici (vedi paragrafo successivo), ma 'N' NON è un parametro (ossia non può essere usato per espressioni ecc.).
I numeri di riga possono essere in qualsiasi ordine (si consiglia un ordine CRESCENTE!) e possono essere ripetuti più di una volta nello stesso programma: nel caso di ricerca blocco o di salto (GO N...) la riga trovata è sempre la prima a partire da inizio programma: una eventuale seconda riga con lo stesso numero non viene mai trovata.
Il numero di riga, oltre a dare un ordine e a rendere meglio comprensibile il programma, è utilizzato anche come indirizzo di destinazione di salto.
Per essere utilizzabile dal CN come indirizzo di salto, il numero di riga deve essere esattamente a inizio riga, senza spazi né caratteri intermedi. In alcuni casi la riga può essere cercata includendo i caratteri precedenti (% oppure /).La sequenza di caratteri da scrivere dopo "GO" deve essere identica alla sequenza di caratteri iniziale della riga da ricercare. Il punto decimale è considerato carattere diverso dalla virgola.
Esempi: N12 G41... è trovato con !GON12! %N1G41... è trovato con !GO%N1! /N12G41... è trovato con !GO/N12! N132,5HA... è trovato con !GON132,5! non con !GON132.5! N132.5M3... è trovato con !GON132.5! non con !GON132,5!
Alcune funzioni (per esempio la G110 per costruzione di macro di svuotatura) generano automaticamente il numero di riga a partire dal valore di un parametro. In questi casi, per essere trovato:
- N deve essere a inizio riga senza spazi o caratteri aggiuntivi (%, /, //) - gli eventuali decimali devono essere separati col punto e non con la virgola
Il numero di riga 'N...' può essere omesso: in questo caso la riga non può costituire punto di arrivo di salto.
Istruzioni elementari, indirizzi, valori numerici
Una riga ISO è formata, dopo il numero di riga 'N...', da una sequenza di ISTRUZIONI ELEMENTARI, ognuna delle quali ordina la esecuzione di una particolare operazione. Una istruzione elementare è formata da due parti successive: - l'INDIRIZZO - il VALORE NUMERICO da assegnare all'indirizzo Tra indirizzo e valore numerico ci possono essere un numero indefinito di spazi. Tra due istruzioni elementari ci possono essere un numero indefinito di spazi.
Alcune istruzioni elementari, dopo l'indirizzo, possono avere, al posto del valore numerico, una combinazione di caratteri (vedere p. es. origini), oppure possono avere, dopo il valore numerico, una 'coda’ descrittiva (vedere p.e. G25, G27, G28, G29).
INDIRIZZI Gli indirizzi sono costituiti, secondo le norme ISO, da una singola lettera dell'alfabeto: poiché questa è una limitazione troppo gravosa, lo Z32 ammette, come si vedrà meglio al capitolo dedicato ai parametri, indirizzi di uno o due caratteri e due vettori PAR[ ] e PAL[ ] con l'indice.
Per esempio: X normalmente assegnato all'asse X M funzione ausiliaria MA funzione ausiliaria F feed PAR[ ] parametro con indice Gli indirizzi determinano il tipo particolare di operazione che il CN deve eseguire: alcuni indirizzi sono definiti dal costruttore della macchina utensile (per esempio i nomi assi), altri possono essere definiti dall'utente finale (parametri utente), mentre altri hanno funzioni già prefissate (parametri di sistema ecc.). In particolare sono già fissati:
G funzioni preparatorie M, MA, MB, MC funzioni ausiliarie F feed S Speed O origini supplementari T, TA, TB utensile programmato, attuale, futuro PAL [ ] parametro con indice per comunicazioni con logica programmabile
VALORI Numerosi altri indirizzi hanno un significato specifico (ved. capitolo dedicato parametri). NUMERICI Gli indirizzi sono seguiti, per completare l'istruzione elementare, da un valore numerico. I valori numerici possono essere introdotti direttamente oppure, come si vedrà meglio al paragrafo relativo, come risultato di una ESPRESSIONE matematica. Quando i valori numerici sono introdotti direttamente essi sono programmati come numeri con virgola decimale, con le seguenti regole: - deve essere sempre programmato almeno un valore (lo zero si programma con una o più cifre ‘0’) - per l’input numerico vengono accettati numeri che abbiano un massimo di 9 cifre significative, prima o dopo la virgola o punto decimale (per l'esattezza il massimo numero significativo accettato è 1.000.000.009). Oltre viene errore programma CN1D14. - gli zeri iniziali della parte intera possono essere omessi, anche se la parte intera è zero e c'è una parte frazionaria - la separazione tra la parte intera e la parte decimale è segnalata dalla virgola ',' o indifferentemente dal punto '.' - non devono esserci caratteri né spazi all'interno del numero Per es., per programmare 0,1 all'indirizzo X si può programmare indifferentemente:
X.1 X .1 X,1 X0,1 X 0.1 X .100 X00000,1000 Altri esempi di programmazione corretta:
Esempi di programmazione errata: X000012345,67800000 errore più di 9 cifre significative
X0 ,1 uno spazio all'interno del numero X1,00000999999999 errore più di 9 cifre significative
Righe di commento In un part-program possono essere inserite delle righe di commento.I commenti devono essere racchiusi tra parentesi tonde. All'interno delle righe di commento è vietato l'uso del carattere $.
SEQUENZA DI ESECUZIONE DI UNA RIGA ISO
Una riga di programmazione ISO può contenere molte operazioni elementari diverse.
Le varie operazioni elementari vengono eseguite in una sequenza ben definita, che dipende: - dal tipo delle operazioni programmate - dall'ordine in cui sono state programmate
Durante l'esecuzione di un programma, e per ogni riga ISO da eseguire, lo Z32 compie tre passaggi successivi, che sono: - lettura della riga - analisi della riga - esecuzione della riga
In fase di lettura la riga è letta e presentata sul video, senza altre elaborazioni.
Durante l'analisi delle entità programmate, vengono assegnati ai parametri i valori programmati, vengono predisposte le 'G' e decodificate e memorizzate le 'M'.
Queste operazioni sono eseguite nella sequenza in cui sono incontrate: in caso di programmazione di due entità contrastanti (per esempio G0 G1) rimane attiva l'ultima programmata.
In questa fase non vengono impartiti alla macchina ordini esecutivi, ma vengono predisposte tutte le condizioni per farlo.
Riesame delle entità e delle funzioni programmate nella riga, e invio alla macchina degli ordini esecutivi delle stesse.
La sequenza di esecuzione non dipende più dall'ordine di programmazione, ma dalla natura delle operazioni programmate.
L'ordine di esecuzione delle operazioni programmate è: - esecuzione G36, G80, G84, G100, G101 - visualizzazione della feed (F) - messa sotto controllo degli assi (G28) - visualizzazione ed aggiornamento della speed (S) - moto mandrino (M3M4) - salto a sottoprogramma M speciale - (non esegue eventuali altre operazioni programmate nella riga: il programma riprende dal l'inizio della riga successiva) - funzioni T, altre M, MA, MB, MC - aggiornamento delle origini, delle compensazioni lunghezze e delle quote visualizzate - moti assi (inclusi moti G61 e G62) - sosta programmata (G4) - abbandono di assi (G29) - posizionamento mandrino (M19) - stop mandrino (M5) - cambio utensile (M6 se M6 è speciale non esegue eventuali altre operazioni programmate nella riga: il programma riprende dall'inizio della riga successiva) - M finali (M0, M1, M2) - salto a sottoprogramma KG - ritorno da sottoprogramma (G26) .