[Immagine logo società]

La scelta giusta

Home
Su

SOTTOPROGRAMMI PERMANENTI


G27P.... Nel capitolo precedente abbiamo visto come lo Z32 permetta l'esecuzione di cicli fissi con un salto automatico al ciclo fisso attivo dopo ogni posizionamento in G0.

In modo molto simile è possibile generare un salto automatico a un sottoprogramma (che chiameremo permanente) attivo senza necessità di eseguire posizionamenti in G0.

L'attivazione del sottoprogramma permanente (vedere anche capitolo “Funzioni preparatorie G”) si ha programmando: G27P... dove la lettera P è seguita dal numero identificativo del sottoprogramma attivato. La P dietro G27 non è un parametro, ossia l'eventuale parametro P...

KG
esegue
spgr.

programmato in precedenza non viene modificato e il numero di sottoprogramma permanente attivo non può essere letto nel parametro P.

G27P0

disattiva i sottoprogrammi permanenti. All'accensione e dopo il reset è attivo G27P0.

Per il ciclo fisso il salto effettivo si otteneva, dopo l'attivazione, con la programmazione di un movimento in G0: per il sottoprogramma permanente il salto si ottiene programmando (con sottoprogramma attivato) il parametro KG in riga ISO. Per esempio:

...

N10 G27P50

N11 1X0 non esegue il sottoprogramma

N12 KG1 esegue

N13 X10 non esegue

N14 !KG=1! non esegue

N15 KG0 X50 esegue

...

Contrariamente a quanto accade per i cicli fissi (per i quali il salto al sottoprogramma avviene DOPO l'esecuzione del posizionamento in rapido programmato) nel caso di sottoprogrammi permanenti la riga ISO che contiene il KG che genera il salto è eseguita, ma prima dei moti assi si ha il salto al sottoprogramma. Gli eventuali assi programmati sono passati al sottoprogramma come parametri: l'eventuale movimento deve essere comandato nel sottoprogramma chiamato.

Ciò perché i sottoprogrammi permanenti, come si vedrà nelle applicazioni, sono dedicati proprio alla gestione speciale dei movimenti assi, che possono essere manipolati all'interno del sottoprogramma.

Il valore del parametro KG che genera il salto può essere qualsiasi. Il valore viene passato al sottoprogramma così come programmato: KG può essere controllato all'interno del sottoprogramma ed usato per eseguire varianti di esecuzione.

Il sottoprogramma permanente può essere inserito in qualsiasi file, inclusi i files protetti (oltre il 128). Anche i sottoprogrammi cicli fissi possono essere richiamati come sottoprogrammi permanenti: in questo caso i cicli fissi utente sono chiamati con lo stesso numero (oltre 30), mentre i cicli fissi di sistema sono chiamati col numero del sottoprogramma (da 170 a 199) anziché col numero di ciclo fisso (da 1 a 30).

Durante l'esecuzione di un sottoprogramma permanente: - non sono visualizzate le righe del sottoprogramma ma resta visualizzata la riga del programma origine - il numero progressivo è regolarmente incrementato (salvo al solito G36H) e quindi è possibile ricercare un blocco all'interno del sottoprogramma permanente

Il salto a un sottoprogramma permanente consuma un livello di salto con ritorno.
- esecuzione di tratti di profilo ripetitivi
- manipolazioni di moti assi
- geometria piana specializzata
- lavorazioni nello spazio e a 4 o 5 assi
- macchina a elettroerosione a filo a 5 assi

Nei paragrafi seguenti si danno due esempi di uso dei sottoprogrammi permanenti. Si noti come la stessa lavorazione poteva essere eseguita anche in altro modo (per esempio con !GOP...! o con salto a serie di righe): l'uso dei sottoprogrammi permanenti rende il programma più semplice e leggibile.

Esempio 1 - Riga dentata con due tipi di denti
Si deve eseguire un profilo dentato in XY. Ci sono due tipi di denti (uno a fondo piano e uno a fondo triangolare). Il passo dei denti non è costante.

PROGRAMMA PRINCIPALE %

N0 X0 Y0 Z0 OX1 OY1 OZ1

N1 T10 M6 (FRESA RAGGIO 5)

N2 F500 S2000 M3

N3 G41 X20 Y0 QF0

N4 G1 G27P20 KG1 X50 (DENTE TIPO 1)

N5 X85 Y5 (QUI NON ESEGUE DENTE PERCHÈ NON C'È KG)

N6 KG2 X100 Y0 (DENTE TIPO 2)

N7 KG1 X130 (DENTE TIPO 1)

N8 KG2 X170 (DENTE TIPO 2)

N9 X200

N10 G40

N11 G27P0 M2



SOTTOPROGRAMMA 20

%

N1 G1 X<X> Y<Y>

N2 Y<Y-30>

N3 !IFKG=2;GON7!

N4 !IFKG<>1 ; ERRORE KG PRG. 20

N5 X<X+20> (ESEGUE FONDO PIANO)

N6 !GON9!

N7 X<X+10> Y<Y-5> (ESEGUE FONDO INCLINATO)

N8 X<X+10> Y<Y+5>

N9 Y<Y+30> (RISALE ALLA QUOTA INIZIALE)

N10 G26

Si noti come non sarebbe stato possibile l'uso di un ciclo fisso per la presenza della correzione raggio (non possono esserci tratti in G0).

Esempio 2 - Programma in XY per macchina a coordinate polari
Si ha una macchina con due assi X (lineare in mm.) e B (rotativo in gradi). Si vuole programmare il profilo da eseguire programmando i movimenti in X Y in mm., come per una macchina a coordinate rettangolari.

Si noti che il programma qui riportato vuole essere solo una dimostrazione di COME può essere usato il KG, NON una soluzione completa al problema esposto. In particolare nel caso dell'esempio si dovrebbe anche:

- collaudare il programma su una macchina reale
- gestire anche tratti circolari o meglio una geometria più completa (per esempio
usando KG=1 per segmenti, KG=2 per cerchio orario, KG=3 per cerchio antiorario ecc.)
- controllare l'effetto sulla macchina del passaggio di B da -180 a +180 gradi, ed eventualmente evitare questo passaggio
- gestire la correzione raggio

PROGRAMMA PEZZO
% OX1OB1 F200
N1 G0X50B0 G27P90

attiva le origini, si sposta in rapido al punto di partenza del profilo e attiva il sottoprogramma permanente

N2 G98

inizio interpolazione speciale a tratti rettilinei

N3 KG1 HA50 HB0 X100 Y50

con HA e HB si informa il sottoprogramma sulla posizione precedente degli assi X e Y

N4 KG1 X150 Y0

tratti lineari programmati in XY

...

N20 KG1 X30 Y10

N21 G99 X<X>

fine interpolazione speciale a tratti rettilinei

N22 G27P0 G0 X200 B0

N23 M2

fine sottoprogr. permanente e rapido fino al punto finale
SOTTOPROGRAMMA 90%
genera una sequenza di movimenti lineari nel piano XB risultanti in archi di spirale nel piano

XY lunghi 0.5 mm

!IFKG=1;GON10!

qui possono essere gestiti altri KG

....

ERRORE KG1 SU PROGR.90

N10 HC<X-HA> HD<Y-HB>

HE<RQ(HC*HC+HD*HD)>

distanze da percorrere e lunghezza tratto lineare

HG0 HF<0.5/HE>

HG varierà da 0 a 1 per percorrere il tratto lineare

N20!HG=HG+HF!

programmato, HF è il suo incremento per dividere

!IFHG>1;HG=1!

il segmento in tratti di lunghezza costante di 0.5 mm

!HX=HA+HC*HG;HY=HB+HD*HG;CP!
X<HR> B<HT>

raggiunge il punto XY incrementato di 0.5 mm convertito in coordinate polari

!IFHG<1;GON20!

ripete fino a fine segmento

G26

FORMULE PERMANENTI

Caratteristica dello Z32 è di poter programmare parametri e quote assi tramite formule matematiche, per esempio:

X<HA+Y*0,01>

che significa: assegna al parametro 'X' e alla quota programmata sull'asse X il valore risultante dal calcolo contenuto nella parentesi acuta (valore del parametro HA più un centesimo del valore del parametro Y). I valori dei parametri interessati alla formula sono quelli istantanei al momento in cui il CN analizza la riga.

È possibile imporre allo Z32, per i soli assi continui, di ricalcolare una formula in modo permanente, ossia in tempo reale, durante l'esecuzione dei movimenti programmati, assumendo come valore dei parametri assi il punto istantaneo interpolato, riferito alla origine attiva.

Questa funzione è ottenuta, all'interno di una riga ISO, programmando, sull'asse continuo desiderato, la formula tra doppia parentesi acuta.

Per esempio:

X<<X+0,1*Y>>

Dopo la formula si possono programmare profili, movimenti in rapido ecc. in modo assolutamente normale. I movimenti reali degli assi saranno però variati, al momento della loro esecuzione, secondo la formula introdotta. Nel caso dell'esempio (per terna G25XYZ) si avrà una INCLINAZIONE del 10% a destra di tutta la figura.

Possono essere programmate formule permanenti su tutti gli assi continui e vivi, anche sugli assi non direttamente interessati al movimento. Ciò significa che, se per esempio una macchina ha gli assi X, Y, Z e B, e tutti gli assi sono vivi (vedere funzione G28), programmando sull'asse B una formula che ne lega il movimento agli altri assi, si può avere il moto contemporaneo di quattro assi continui.

Le formule permanenti sono attive sia sui movimenti in lavoro sia sui movimenti in rapido.

L'introduzione di una formula permanente richiede al programmatore alcune precauzioni, che saranno spiegate poi in dettaglio, che derivano dal modo col quale le formule sono inserite nel sistema operativo Z32.

In assenza di formule permanenti, lo Z32 muove gli assi dopo aver compiuto una serie di elaborazioni che sono:
1) analisi dei punti programmati ed eventuale loro ricalcolo con rototraslazione, specularità, fattore di scala
2) determinazione delle traiettorie geometriche ed eventuale ricalcolo con correzione raggio

3) controllo che le traiettorie calcolate siano entro i fine corsa della macchina

4) determinazione delle velocità di esecuzione e degli eventuali rallentamenti in funzione delle velocità programmate, delle curvature e degli spigoli delle traiettorie calcolate

5) interpolazione delle traiettorie in tempo reale (ossia con calcolo dei punti successivi al ritmo di circa 125 volte al secondo)

6) controllo degli errori fisici di inseguimento (sempre 125 volte al secondo) ed invio dei comandi di moto a tutti gli assi vivi, per mantenere la macchina in traiettoria col minimo errore.

A titolo di esempio, si riportano qui di seguito le figure ottenute con alcune formule semplici realizzando un part-program riferito alla figura normale (cerchio con scritta Z32) e introducendo poi le formule riportate in figura.


NORMALE X<<X*0.6>> Y<<Y+0.03*X*X>>


Y<<Y*0.6>> X<<X+0.3*Y>> Y<<Y*0.6>>

L'introduzione di una formula permanente richiede, tra i punti 5 e 6, un ulteriore passo, che deve essere eseguito 125 volte al secondo:

5a) applicazione delle formule permanenti su tutti gli assi vivi interessati, e calcolo del punto, sulla traiettoria deformata, corrispondente al punto già calcolato sulla traiettoria originaria

Inconvenienti Gli inconvenienti che possono derivare dall'introduzione di una formula permanente sono in pratica:

Velocità - la velocità di esecuzione della traiettoria è costante e corrispondente alla velocità programmata sulla traiettoria originaria. Le accelerazioni sono calcolate per la traiettoria originaria. Sulla traiettoria deformata velocità e accelerazione sono anch'esse deformate e quindi possono risultare sia inferiori che superiori. Ciò impone un controllo ulteriore che la velocità non superi quella di rapido e può portare a errori di inseguimento nel caso che la velocità aumenti troppo in punti critici del profilo

Fine corsa - i fine corsa non devono essere controllati sulla traiettoria originaria ma sulla traiettoria deformata: ciò praticamente significa che i fine corsa devono essere controllati in tempo reale insieme al punto 5a)

- al momento della introduzione della formula permanente ci può essere una differenza anche rilevante tra il punto originario e il punto deformato: per ogni asse su cui è introdotta la formula lo Z32 genera automaticamente un tratto di raccordo iniziale.

Analoga operazione deve essere eseguita al momento della disattivazione delle formule permanenti
Limitazioni di - tutte le formule permanenti devono essere ricalcolate 125 volte al secondo: ciò pone tempo limitazioni abbastanza stringenti alla complessità delle formule introdotte.

Contenuto delle formule permanenti
Una formula permanente è costituita da una espressione matematica, racchiusa tra doppie parentesi acute, contenente: - i quattro operatori matematici fondamentali:

+ addizione
-sottrazione
* moltiplicazione
/ divisione
- fino a 10 livelli di parentesi
- costanti numeriche (segno, 5 interi, 3 decimali)
- costante 'PI' (PI greco = 3,141592...)
- parametri individuati dal loro indirizzo (es. R, HA ecc.)
- nomi assi individuati dal loro indirizzo (es. X, Y ecc.)

La sintassi di una formula permanente è sostanzialmente la stessa di una formula normale, salvo la esclusione (per ragioni di tempo di esecuzione) delle operazioni matematiche complesse (radice quadrata RQ, seno SN, coseno CS, arcotangente AT).

Esempi di formule formalmente corrette:
X<<X*0,9>> introduce un fattore di scala del 90% sull'asse X
X<<0>> serve a poco: tiene fermo a zero l'asse X
X<<X+1>> sposta di +1mm l'origine X : appesantisce inutilmente il lavoro del calcolatore. Sarebbe meglio spostare l'origine oppure introdurre una traslazione (DA)
X<<X+0,001*Y*Y>> introduce una deformazione parabolica sull'asse X

Sintassi della riga ISO con formule permanenti
Le formule permanenti devono essere inserite in una riga ISO.
In una riga ISO possono essere introdotte più formule permanenti (relative ad assi diversi).
Esempio:

N100 X<<X*0,95>> Y<<Y*0,965>> Z<<0,126/1000*X>>

Se in una riga ISO vengono definite (per errore!) più formule permanenti su uno stesso asse lo Z32 non dà allarme: resta attiva l'ultima formula permanente programmata.

Nella riga ISO che contiene le formule permanenti possono essere inserite altre istruzioni, che vengono eseguite normalmente: se però sono inseriti moti assi questi non sono eseguiti se compaiono prima della formula, mentre sono eseguiti se compaiono dopo (vedere anche prossimo paragrafo sui raccordi iniziali e finali).

Possono essere aggiunte formule in riga ISO successiva (carattere '!' iniziale, vedere paragrafo seguente).

Attivazione disattivazione variazione di formule permanenti
Si ha una attivazione di formule permanenti quando si passa da una situazione di moti assi normali a una situazione di formule attive. La disattivazione si ha quando si passa da una situazione di formule attive a una situazione normale. La variazione si ha quando si passa direttamente da un insieme di formule permanenti a un altro, senza passaggio attraverso la situazione normale.

Abbiamo visto che si possono attivare più formule permanenti, una su ciascun asse continuo della macchina: con formule attive esiste nella memoria del CN un 'insieme' di formule, associate a ciascun asse della macchina. Con formule non attive l'insieme è nullo.

L'insieme delle formule permanenti è un blocco indivisibile, cioè non è possibile variare una sola delle formule (ossia la formula relativa ad un solo asse): una riga ISO che contenga anche una sola formula permanente provoca l'annullamento dell'intero insieme di formule e la sua ricompilazione dall'inizio.

X<<!...>> Se però la formula contiene un '!' iniziale essa viene aggiunta alle formule precedenti.

L'attivazione delle formule permanenti si ottiene con una riga ISO che contenga anche una sola formula permanente. La disattivazione si ottiene programmando tutte formule nulle, la variazione programmando semplicemente le formule.

Per le ragioni che saranno esposte meglio nel paragrafo che segue, al momento della eventuale disattivazione o variazione di formule, tutte le formule permanenti da annullare devono essere programmate.

Esempio:

N1 X<<X*0,96>> B<<B*RX/100>> attivazione: da ora in poi sono attive le formule sugli assi X e B

N50 X<<X*0,9>> Y<<Y*0.8>> B<<>> variazione sull'asse X, disattivazione su B e attivazione su Y

N100 X<<>> Y<<>> disattivazione su tutti gli assi che hanno formule attive, ossia X e Y

Se il programmatore ha necessità di aggiungere formule permanenti a formule già attive, può programmare una nuova formula col carattere '!' iniziale.

Per esempio:

N10 X<<X*.97>>

...

N12 Y<<!Y*.8>>

Se si programma una nuova formula su un asse che ha già una formula permanente, la vecchia formula viene disattivata ma non cancellata dalla memoria: da un punto di vista lunghezza perciò (e dell'allarme CN 3814 FORMULA LUNGA) la nuova formula si aggiunge alla precedente.

Raccordi iniziali e finali
Abbiamo visto che l'attivazione di una formula permanente comporta una variazione del punto macchina (ossia il punto in cui lo Z32 porta e trattiene gli assi della macchina) dal vecchio punto al nuovo calcolato con l'applicazione della formula. Per esempio:

...

N1 X0 Y100 Z0

N2 X<<X*0,9>> Y<<Y*0,8>>

...

Prima dell'istruzione N2 i punti macchina sono 0 per l'asse X e +100 per l'asse Y, dopo l'attivazione delle formule i nuovi punti sono 0 per X e +90 per Y: si ha cioè una discontinuità sulla Y di 10 mm. Per recuperare senza allarmi le discontinuità eventualmente introdotte dalle formule permanenti, lo Z32 introduce un segmento rettilineo di raccordo, parallelo all'asse programmato, per ciascuna formula permanente introdotta.

Il punto di partenza del movimento di raccordo è la quota dell'asse prima dell'attivazione della formula, e il punto di arrivo la nuova quota calcolata con la formula attivata.

Il raccordo viene eseguito come tratto rettilineo in lavoro alla velocità F attiva al momento.

Se sono introdotte più formule relative ad assi diversi, per ognuna delle formule introdotte è inserito un raccordo.

La programmazione di una formula permanente costituisce una ECCEZIONE nel comportamento dello Z32, che esegue il raccordo relativo IMMEDIATAMENTE durante la fase di analisi, e non attende la successiva fase di esecuzione (vedere capitolo "Sequenza di esecuzione di una riga ISO”). I moti dello stesso asse programmati nella stessa riga, ma prima della formula, non sono eseguiti ma sono conglobati nel raccordo.

Questa caratteristica permette, come si vedrà più avanti, di evitare il raccordo associato a una formula permanente.

La situazione è assolutamente analoga nel caso di disattivazione o variazione della formula permanente: anche in questo caso il punto macchina può subire uno spostamento dovuto alla formula e quindi è necessaria l'introduzione del raccordo.

Si noti che la presenza anche di una sola formula permanente in una riga ISO comporta l'annullamento di tutte le formule: poiché il raccordo è calcolato solo per le formule effettivamente programmate, se non vengono 'richiuse' tutte le formule in precedenza attivate, si possono avere allarmi CN 0113 o 0013 dovuti alla discontinuità di movimento risultante.

Negli esempi che seguono, anche con situazioni estreme probabilmente mai utili in pratica, è illustrato il comportamento dello Z32 per quanto riguarda i raccordi.

Esempio 1

...

N10 OX1 OY1 OZ1 X0Y0Z0 F1000 attivazione dell'origine 1 e spostamento degli assi nell'origine

N20 X<<X*0.9>> attivazione della formula permanente: il raccordo iniziale è nullo perché il vecchio punto (X = 0)
coincide col nuovo punto (X = 0*0.9 = 0).

N30 X100 spostamento a X90 a causa della formula

N40 X<<>> disattivazione formula e raccordo finale da vecchio punto calcolato con la formula (X = 90) al nuovo punto (X = 100)

....

Esempio 2

...

N10 X100Y100Z0 OX1OY1OZ1 F1000

N20 X<<X*O.9>> Y<<Y*0.8>> si ha prima uno spostamento parallelo dell'asse X da 100 a 90 (velocità F1000) e poi uno spostamento parallelo dell'asse Y da 100 a 80

N30 X200 spostamento dell'asse X da 80 a 160

N40 X<<>> disattivazione della formula X e raccordo finale da X160 a X200. È un errore non avere disattivato anche la formula Y: le conseguenze si vedono la prima volta che viene programmato l'asse Y

N50 X100 l'asse X si sposta correttamente da 200 a 100)

N60Y100 si ha un allarme CN 0013 dovuto alla mancata disattivazione della formula Y

...

Esempio 3

...

N10 X100Y100Z0 OX1OY1OZ1 F1000

N20 Y<<Y*0.8>> X<<X*0.9>> la sequenza dei raccordi è diversa dall'esempio 2 perché diverso è l'ordine di programmazione: prima viene fatto il raccordo Y da 100 a 80 e poi il raccordo X da 100 a 90

...

Esempio 4

...

N10 X100Y100Z0 OX1OY1OZ1 F1000

N20 !X=50! non si ha movimento dell'asse, ma solo un aggiornamento del parametro X al valore 50

N30 X<<X*0.8>> si ha un raccordo in X da 100 fino al risultato della formula (X=X*0.8) applicata al valore programmato (50), ossia a 40

...

Esempio 5
...

N10 X100Y100Z0 OX1OY1OZ1 F1000

N20 X50 X<<X*0.8>> il risultato è identico all'esempio precedente, ossia il raccordo iniziale va da X100 a X40

...

Esempio 6

...

N10 X100Y100Z0 OX1OY1OZ1 F1000

N20 X<<X*0.8>> X50 si ha un raccordo iniziale da X100 a X80, e successivamente il movimento programmato a X40 (pari a 50*0.8), fatto con formula attiva)

...

Esempio 7

...

N10 X100Y100Z0 OX1OY1OZ1 F1000

N20 X50 X<<X*0.8>> X100 si ha un raccordo iniziale a X40 e, successivamente il movimento programmato a X80 (pari a 100*0.8)

...

Esempio 8

...

N10 X100 Y100 Z0 OX1 OY1 OZ1 F1000

N20 X50 Y40 X<<X*0.7>> Y<<Y*0.6>> X30 Y60

... si ha prima il raccordo in X da 100 a 35, poi il raccordo in Y da 100 a 24, poi un movimento inclinato in XY con formule attive fino al punto finale risultante X21 Y36

Il programmatore consideri gli esempi 6, 7 e 8 solo come mezzi per meglio comprendere il comportamento dello Z32: non sono esempi da seguire, in quanto complicano inutilmente una riga già complessa che contiene l'attivazione di formule permanenti. I movimenti programmati dopo le formule permanenti possono essere più realisticamente programmati in una riga SUCCESSIVA!

Compilazione delle formule permanenti
Abbiamo visto che le formule permanenti devono essere eseguite 125 volte al secondo. Per ridurre al massimo l'impegno del microprocessore le formule stesse sono esaminate, ridotte ai minimi termini e tradotte in linguaggio di macchina in fase di analisi della riga che le contiene. Si ha cioè una 'compilazione' delle formule che permette la più veloce esecuzione. In fase di compilazione, oltre agli operatori matematici, si possono incontrare i seguenti tipi di operandi:

- costanti e parametri

- nomi assi (incognite)

I parametri sono considerati a tutti gli effetti come costanti, e sono introdotti nella formula compilata col valore che hanno al momento della compilazione della formula.

I nomi assi invece devono essere considerati incognite in quanto variano da istante a istante durante il movimento. La funzione del compilatore è quella di ottimizzare la formula eseguendo una volta sola, in fase di compilazione, tutti i calcoli possibili e lasciando (per essere eseguiti 125 volte al secondo) i soli calcoli che coinvolgono le incognite (nomi assi).

Per esempio le formule:

X<<X*0,9>> -X<<3*X*0,3>>

sono eseguite (a livello delle 125 volte al secondo) nello stesso identico tempo: la seconda

formula richiede solo un piccolo impegno supplementare (trascurabile perché eseguito una volta

sola in fase di compilazione) per calcolare il fattore moltiplicativo della incognita X.

In fase di compilazione lo Z32 controlla la lunghezza della formula compilata e il tempo che

richiederà la sua esecuzione: se l'una o l'altro superano il massimo ammesso lo Z32 dà messaggio

ed errore:

<<FORMULA LUNGA>> CN 3814

Tempi di esecuzione
Abbiamo visto che le formule permanenti sono eseguite dallo Z32 per 125 volte al secondo: è perciò necessario uno stretto controllo da parte dello Z32 delle formule programmate, per evitare il sovraccarico del microprocessore.

Il massimo di tempo che il microprocessore può dedicare alla esecuzione delle formule permanenti è stato stabilito in 8000 cicli macchina. Ciò corrisponde a circa il 12% del tempo CPU disponibile in totale. Il costruttore della macchina utensile può, se la complessità della macchina e quindi della logica programmabile che la gestisce lo richiede, ridurre questo tempo a un minimo più basso: il programmatore si informi presso il costruttore se è stata operata questa riduzione.

Il calcolo preventivo dei tempi di esecuzione di una formula permanente non è facile: bisogna infatti tenere conto delle semplificazioni e dei precalcoli che lo Z32 opera in fase di compilazione. Per chi voglia avere una idea dei tempi di esecuzione, qui di seguito diamo i tempi approssimativi delle operazioni fondamentali. I tempi sono espressi in cicli macchina: il totale dei tempi di tutte le formule introdotte non deve superare 8000 (o il limite più basso imposto dal costruttore).

Somma 270
Sottrazione 270
Moltiplicazione 620
Divisione 920
Programmazione di incognita170
Tempo fisso per ogni formula 160

Alcune regole di compilazione:
1) più costanti moltiplicate tra loro sono ridotte ad unica costante moltiplicativa ) i parametri e PI sono da considerare costanti in fase di compilazione
3) se all'interno di una parentesi sono contenute solo costanti tutta la parentesi è da

considerare una costante.

Esempi:

X<<HA>> 1 formula = 160

X<<X*0.957>> 1 formula, 1 asse, moltiplicazione=160+170+620=950

X<<X>> 1 formula,1 asse=160+170=330

X<<X*0.9+0.1>> 1 form,1 asse,1 molt,1
som=160+170+620+270=1220

X<<X*0.9>Y<Y*0.8>> 2 form,2 assi,2 molt=320+340+1240=1900

X<<X*(HA+0.1*(HB+0.5))*0.05>> 1 form,1 asse,1 molt= 160+170+620 =950

X<<X-0.1*X>> 1 form,2 assi,1 molt,1 sott=160+340+620+270=1390

X<<X*0.9+Y*(HA+HB+0.1)/3>> 1 for,2 assi,2 molt,1 som=160+340+1240+270=2010

8.1.7 Controllo dei fine corsa
Quando sono attive le formule permanenti, i fine corsa normali dello Z32 (che consistono nel controllo preventivo che i movimenti programmati non oltrepassino i limiti) non sono efficienti.

Con formule permanenti attive (quando le formule permanenti sono non attive i fine corsa restano quelli normali) il controllo dei fine corsa è fatto in tempo reale, ossia deve effettivamente prodursi un movimento perché il fine corsa possa intervenire.

I fine corsa con formule attive non funzionano in ricerca blocco (ossia il programma può 'girare’ in ricerca blocco e poi dare errore fine corsa durante l'esecuzione).

Il calcolo dei fine corsa con formule attive tiene conto della velocità di avvicinamento al fine corsa, della distanza dal fine corsa e delle accelerazioni di taratura su ogni asse: l'allarme è dato se la velocità di avvicinamento supera quella che permette la frenatura entro il fine corsa.

L'allarme di fine corsa con formule attive è un allarme di tipo:

CNE.13

dove al posto del punto viene inserito il numero logico dell'asse sul quale il fine corsa è stato rivelato. Per esempio CN E113 significa errore fine corsa con formule attive sull'asse con numero logico 1 (normalmente asse Y).

Controllo delle velocità massime
Con formule attive, la velocità di esecuzione dei movimenti può essere diversa (in più o in meno) rispetto alla velocità programmata. Per esempio, se si attiva la formula X<X*2>, i movimenti sull'asse X hanno velocità (e accelerazione!) doppia rispetto alla velocità programmata.

A protezione della macchina, in presenza di formule attive, lo Z32 va in allarme se la velocità su uno qualsiasi degli assi supera del 2% il rapido. L'allarme relativo è:

CNF.13

dove al solito al posto del punto viene inserito il numero logico dell'asse su cui si è rilevata la sovravelocità. Per esempio, CN F213 significa allarme di sovravelocità con formule attive sull'asse con numero logico 2 (normalmente l'asse Z).

Con la G108 (vedere capitolo “Funzioni preparatorie G”) si può porre un limite alla velocità massima di interpolazione (la G108 agisce prima delle formule permanenti) e quindi evitare di superare le velocità massime tollerate dalla macchina utensile.

x<<*>> Un modo più efficace per gestire le velocità e le accelerazioni è quello di programmare la formula <<*>> che moltiplica le quote dell'asse per la costante contenuta nel parametro HX.

Per esempio:

HX2 X<<*>>

moltiplica le quote dell'asse X per il fattore 2. La stessa prestazione si può ottenere con la formula:

X<<X*2>>

Si ha però una sostanziale differenza nella gestione della velocità e delle accelerazioni.

Il movimento programmato viene interpolato dal CN sulla traiettoria originale e poi amplificato in funzione del fattore moltiplicativo imposto.

Le limitazioni di velocità e accelerazioni per non superare il rapido e la massima accelerazione di taratura della macchina sono operate sulla traiettoria originale.

La moltiplicazione per due delle quote ottenute con la formula permanente moltiplica anche velocità e accelerazioni: si devono adottare precauzioni per evitare errori di inseguimento eccessivi (per esempio prova pezzo per evitare il rapido).

Nel caso che il fattore moltiplicativo sia minore di 1, si ha l'opposto, ossia le prestazioni dinamiche della macchina non sono più sfruttate appieno.

Nel caso della formula con * le tarature di macchina relative all'asse interessato sono modificate automaticamente(in pratica Rapido e accelerazione massima dell'asse sono divisi per il fattore moltiplicativo) in modo da riportarle a quelle reali di macchina sulla traiettoria reale.

La formula <<*>> è di particolare utilità se usata nel caso di programmazione di profili cilindrici ottenuti con un asse rotante e uno lineare.

Formule attive e G53
Non è ammessa la programmazione di G53 o G54 con formule permanenti attive. Se ciò viene fatto, il CN dà messaggio e allarme:

<<FORMULA + G53/54>> CN 3914

Tenere conto che spesso il cambio utensile (M6) e altre M speciali richiedono movimenti macchina riferiti all'origine base e che quindi comportano la esecuzione di G53 o G54 nel sottoprogramma automaticamente richiamato. In questi casi le formule permanenti dovranno essere DISATTIVATE PRIMA della programmazione della M.

Applicazioni
Le formule permanenti, pur con le obbiettive difficoltà e le limitazioni sopra esposte, possono essere utili per eseguire lavori altrimenti difficili se non impossibili.

Probabilmente la limitazione più sensibile delle formule permanenti è quella della velocità degli assi, che diventa diversa dalla velocità programmata. Come consiglio generale, si faccia in modo per quanto possibile che le formule RIDUCANO PIUTTOSTO CHE INGRANDIRE: per esempio, se si vuole ottenere un movimento ellittico del centro fresa, si moltiplichi l'asse più corto per un numero inferiore a 1, piuttosto che l'asse più lungo per un numero superiore ad 1.

Nel caso di formule che ingrandiscono, usare la G108 per riportare accelerazione e velocità entro limiti tollerabili.

Ellissi

Come mostrato negli esempi all'inizio del capitolo, un cerchio con assi a fattore di scala diverso diventa una ellisse.

ATTENZIONE:

La traiettoria del centro fresa nel caso della contornatura di una ellisse NON è una ellisse. Se si applica un diverso fattore di scala sui due assi e poi si attiva la correzione raggio, non si ottiene una vera ellisse. L'errore di forma è tanto più grande quanto più il raggio dell'utensile si avvicina ai raggi di curvatura del profilo.

Incisioni su un piano inclinato

Si devono fare incisioni su un piano inclinato. Si ammette che il piano di lavoro non sia orizzontale e che l'asse verticale sia lo Z (X e Y gli orizzontali).

L'equazione generica di un piano è:

Z = C1 + C2 * X + C3 * Y

Se si introduce la formula permanente:

Z<<Z+HA*X+HB*Y>>

si lega il movimento verticale dell'asse Z alla posizione orizzontale degli assi X e Y.

Variando opportunamente i coefficienti HA e HB l'utensile si muove esattamente sul piano inclinato.

Incisioni su un cilindro (assi ortogonali)

Si ha una macchina disposta come in figura e si devono eseguire incisioni sul fondo del semicilindro di raggio RB disposto orizzontalmente con asse parallelo alla Y. Le origini sono poste al centro del cilindro.

L'equazione esatta dei movimenti in Z è:

Z= RB*( 1 - (X/RB) - 1)
Mancando la radice quadrata, questa equazione può essere approssimata con una serie:
Z= RB*[0.5*(X/RB)2+1/8*(X/RB)4+1/16*(X/RB) 6+....]
In prima approssimazione, la formula da programmare può contenere il solo primo termine,

ossia:

Z<<Z+X*X/2/RB>>

In questo caso l'errore è circa: = RB/8*(X/RB) 4

ossia se RA=50, per X=10 l'errore è circa 0.01 mm, per X=20 l'errore è circa 0.16 mm.

 

Questo sito rispetta la Privacy

Per qualsiasi domanda o commento su questo sito Web inviare un messaggio di posta elettronica a DP Soft S.r.l..

Copyright ©  DP Soft S.r.l.

Ultimo aggiornamento: 18-03-11