Skip to main content

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 in L!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

Tabella 54. Operatori infissi

Carattere

Tipo

argomenti

Precedenza

MOD

LREAL

LREAL, LREAL

14

*

LREAL

LREAL,LREAL

13

/

LREAL

LREAL, LREAL

13

+

LREAL

LREAL, LREAL

12

-

LREAL

LREAL, LREAL

12

=

BOOL

BOOL, BOOL

10

=

BOOL

LREAL, LREAL

10

=

BOOL

STRING, STRING

10

<>

BOOL

BOOL, BOOL

10

<>

BOOL

LREAL, LREAL

10

<>

BOOL

STRING, STRING

10

>

BOOL

LREAL, LREAL

10

<

BOOL

LREAL, LREAL

10

>=

BOOL

LREAL, LREAL

10

<=

BOOL

LREAL, LREAL

10

AND

BOOL

BOOL, BOOL

6

XOR

BOOL

BOOL, BOOL

5

OR

BOOL

BOOL, BOOL

4



Tabella 55. Funzioni

Carattere

Tipo

argomenti

-

LREAL

LREAL

ABS

LREAL

LREAL

MAX

LREAL

LREAL, LREAL

MIN

LREAL

LREAL, LREAL

NOT

BOOL

BOOL

TRUE

BOOL

FALSE

BOOL

SIN

LREAL

LREAL

COS

LREAL

LREAL

TAN

LREAL

LREAL

ASIN

LREAL

LREAL

ACOS

LREAL

LREAL

ATAN

LREAL

LREAL

EXP

LREAL

LREAL

LN

LREAL

LREAL

SQRT

LREAL

LREAL

EXPT

LREAL

LREAL, LREAL

FLOOR

LREAL

LREAL

CEIL

LREAL

LREAL

PI

LREAL

LEN

LREAL

STRING

CONCAT

STRING

STRING, STRING



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.