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
dansL!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
Personnage | Taper | Arguments | Priorité |
---|---|---|---|
|
|
| 14 |
|
|
| 13 |
|
|
| 13 |
|
|
| 12 |
|
|
| 12 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 6 |
|
|
| 5 |
|
|
| 4 |
Personnage | Taper | Arguments |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
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
.