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 (
xinL!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.