espressioni
Funzione:
Nella versione 4.4.0.0 e successive, è possibile utilizzare espressioni matematiche, booleane e stringa. Il SMC_ReadNCFile2
e SMC_NCInterpreter
blocchi funzione devono essere usati per questo (invece di SMC_ReadNCFile
e SMC_NCDecoder
).
Suggerimento
Le espressioni funzionano solo nel decoder online (non nell'editor CNC).
In linea di principio, le espressioni possono essere utilizzate nel codice G in due posizioni:
Come valori di parole G (una parola G è composta da un indirizzo e un valore, ad esempio "G1")
Come parametri di trasferimento per chiamate di sottoprogrammi
Sintassi – Generale
Un'espressione può essere costituita dai seguenti elementi:
Letterali numerici e stringa
Variabili globali e locali
Operatori e funzioni infissi
Virgole e parentesi
Allo stesso modo, le parentesi (se non utilizzate per identificare i commenti) e le parentesi graffe possono essere utilizzate per la strutturazione delle espressioni. Ciò significa che l'espressione (1 + 2} * 3
è permesso.
Suggerimento
Il blocco funzione SMC_ReadNCFile2
ha una nuova modalità (bParenthesesAsComments
input) dove le parentesi non sono commenti. Invece, i commenti su più righe vengono aperti e chiusi rispettivamente con "(*" e "*)". In questa nuova modalità, è possibile utilizzare sia le parentesi graffe che le parentesi per le espressioni.
Uno spazio dopo l'indirizzo G è richiesto solo se SMC_ReadNCFile2
non lo riconoscerebbe come token indipendente (esempio: X abs{-2}
invece di Xabs{-2}.
).
A differenza di ST, le funzioni a posizione singola non devono necessariamente essere chiamate tra parentesi (esempio: sin 3
).
Durante l'analisi, a ciascuna espressione parziale viene assegnato uno dei tre tipi: BOOL, LREAL o STRING. Di conseguenza, ogni operatore Infix e ogni funzione si aspettano una sequenza specifica di tipi di argomenti per i quali la non conformità (tipo errato, troppi pochi o troppi argomenti) restituisce un errore.
Restrizioni:
I numeri di blocco devono essere letterali numerici.
Per motivi strettamente tecnici, i marcatori di salto (
x
inL!x
) non deve contenere variabili locali.
Per ulteriori informazioni, vedere: Salto, Utilizzo delle variabili
Esempi
N01 G36 O$var$ D concat{'prefix_', concat{$var$, '_suffix'}} N02 G1 X$var$ + sin{pi + 3 * #locvar} N03 G20 L0 K NOT {myfun{$var$, expt{2, #locvar}} XOR myfun{0, 0}}
Operatori e funzioni supportati
Carattere | Tipo | argomenti | Precedenza |
---|---|---|---|
|
|
| 14 |
|
|
| 13 |
|
|
| 13 |
|
|
| 12 |
|
|
| 12 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 6 |
|
|
| 5 |
|
|
| 4 |
Carattere | Tipo | argomenti |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
Definire le proprie funzioni
È possibile aggiungere le proprie funzioni o sovrascrivere un'implementazione esistente. (Quando si analizza il codice G, le funzioni vengono cercate prima nelle funzioni utente.)
L'interfaccia SMC_NC_IFunction deve essere implementata e un'istanza globale della POU corrispondente deve essere trasferita a SMC_ReadNCFile2
o SMC_ReadNCFromStream
tramite la struttura SMC_NC_GFunctionTable
.
L'enumerazione SMC_GVar_Type
viene utilizzato per il tipo restituito e i tipi di argomento. La voce ivi contenuta T_OTHER
può essere utilizzato come segnaposto per un tipo. Durante l'analisi, il sistema verifica che tutti gli argomenti che corrispondono a a T_OTHER
nella firma hanno lo stesso tipo. Il tipo non importa.
Per ulteriori informazioni, vedere: Funzioni G-Code specifiche per l'utente
Gestione degli errori
Quando possibile, la posizione esatta del token difettoso e la sua lunghezza vengono emesse negli errori di sintassi. La posizione dell'errore è elencata in SMC_ReadNCFile2.errorPos
.