Skip to main content

Expressions

Fonction:

Dans la version 4.4.0.0 et supérieure, il est possible d'utiliser des expressions mathématiques, booléennes et de chaîne. Les SMC_ReadNCFile2 et SMC_NCInterpreter des blocs fonctions doivent être utilisés pour cela (au lieu de SMC_ReadNCFile et SMC_NCDecoder).

Astuce

Les expressions fonctionnent uniquement dans le décodeur en ligne (pas dans l'éditeur CNC).

En principe, les expressions peuvent être utilisées en code G dans deux positions :

  • Comme valeurs de mots G (un mot G est constitué d'une adresse et d'une valeur, par exemple "G1")

  • En tant que paramètres de transfert pour les appels de sous-programme

Syntaxe – Général

Une expression peut être constituée des éléments suivants :

  • Littéraux numériques et de chaîne

  • Variables globales et locales

  • Opérateurs et fonctions infixes

  • Virgules et crochets

De la même manière, les parenthèses (si elles ne sont pas utilisées pour identifier les commentaires) et les accolades peuvent être utilisées pour la structuration des expressions. Cela signifie que l'expression (1 + 2} * 3 est autorisé.

Astuce

Le bloc fonction SMC_ReadNCFile2 a un nouveau mode (bParenthesesAsComments input) où les parenthèses ne sont pas des commentaires. Au lieu de cela, les commentaires multilignes sont ouverts et fermés avec "(*" et "*)", respectivement. Dans ce nouveau mode, les accolades et les parenthèses peuvent être utilisées pour les expressions.

Un espace après l'adresse G n'est requis que si SMC_ReadNCFile2 ne le reconnaîtrait pas comme un jeton indépendant (exemple : X abs{-2} à la place de Xabs{-2}.).

Contrairement à ST, les fonctions à position unique ne doivent pas nécessairement être appelées avec des parenthèses (exemple : sin 3).

Lors de l'analyse, chaque expression partielle se voit attribuer l'un des trois types : BOOL, LREAL ou STRING. En conséquence, chaque opérateur Infix et chaque fonction attend une séquence spécifique de types d'arguments pour lesquels la non-conformité (type incorrect, trop peu ou trop d'arguments) renvoie une erreur.

Restrictions :

  • Les numéros de bloc doivent être des littéraux numériques.

  • Pour des raisons strictement techniques, les balises de saut (x dans L!x) ne doit contenir aucune variable locale.

Pour plus d'informations, voir : Saut, Utilisation de variables

Exemples

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}}

Opérateurs et fonctions pris en charge

Tableau 54. Opérateurs infixes

Personnage

Taper

Arguments

Priorité

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



Tableau 55. Les fonctions

Personnage

Taper

Arguments

-

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



Définir vos propres fonctions

Il est possible d'ajouter vos propres fonctions ou d'écraser une implémentation existante. (Lors de l'analyse du code G, les fonctions sont recherchées en premier dans les fonctions utilisateur.)

L'interface SMC_NC_IFunction doit être implémentée et une instance globale du POU correspondant doit être transférée vers SMC_ReadNCFile2 ou SMC_ReadNCFromStream via la structure SMC_NC_GFunctionTable.

Le dénombrement SMC_GVar_Type est utilisé pour le type de retour et les types d'argument. L'entrée qu'il contient T_OTHER peut être utilisé comme espace réservé pour un type. Lors de l'analyse, le système vérifie que tous les arguments qui correspondent à un T_OTHER dans la signature ont le même type. Le genre n'a pas d'importance.

Pour plus d'informations, voir : Fonctions G-Code spécifiques à l'utilisateur

La gestion des erreurs

Lorsque cela est possible, la position exacte du jeton défectueux et sa longueur sont émises dans des erreurs de syntaxe. La position d'erreur est répertoriée dans SMC_ReadNCFile2.errorPos.