Skip to main content

Expresiones

Función:

En la versión 4.4.0.0 y posteriores, es posible utilizar expresiones matemáticas, booleanas y de cadena. los SMC_ReadNCFile2 y SMC_NCInterpreter Los bloques de funciones deben usarse para esto (en lugar de SMC_ReadNCFile y SMC_NCDecoder).

Sugerencia

Las expresiones funcionan solo en el decodificador en línea (no en el editor CNC).

En principio, las expresiones se pueden utilizar en código G en dos posiciones:

  • Como valores de palabras G (una palabra G consta de una dirección y un valor, por ejemplo, "G1")

  • Como parámetros de transferencia para llamadas a subprogramas

Sintaxis: general

Una expresión puede constar de los siguientes elementos:

  • Literales numéricos y de cadena

  • Variables globales y locales

  • Operadores y funciones de infijo

  • Comas y corchetes

De la misma manera, los paréntesis (si no se usan para identificar comentarios) y las llaves se pueden usar para estructurar expresiones. Esto significa que la expresión (1 + 2} * 3 esta permitido.

Sugerencia

El bloque de funciones SMC_ReadNCFile2 tiene un nuevo modobParenthesesAsComments input) donde los paréntesis no son comentarios. En su lugar, los comentarios de varias líneas se abren y cierran con "(*" y "*)", respectivamente. En este nuevo modo, se pueden usar llaves y paréntesis para las expresiones.

Se requiere un espacio después de la dirección G solo si SMC_ReadNCFile2 no lo reconocería como un token independiente (ejemplo: X abs{-2} en lugar de Xabs{-2}.).

A diferencia de ST, las funciones de una sola posición no tienen que llamarse necesariamente entre paréntesis (ejemplo: sin 3).

Al analizar, a cada expresión parcial se le asigna uno de los tres tipos: BOOL, LREAL o STRING. En consecuencia, cada operador Infix y cada función espera una secuencia específica de tipos de argumentos para los cuales el incumplimiento (tipo incorrecto, muy pocos o demasiados argumentos) devuelve un error.

Restricciones:

  • Los números de bloque deben ser literales numéricos.

  • Por razones estrictamente técnicas, los marcadores de salto (x en L!x) no debe contener ninguna variable local.

Para obtener más información, consulte: Salto, Usando Variables

Ejemplos de

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

Operadores y funciones compatibles

tabla 54. Operadores de infijo

Personaje

Escribe

Argumentos

Precedencia

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



tabla 55. Funciones

Personaje

Escribe

Argumentos

-

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



Definiendo sus propias funciones

Es posible agregar sus propias funciones o sobrescribir una implementación existente. (Al analizar el código G, las funciones se buscan primero en las funciones del usuario).

Se debe implementar la interfaz SMC_NC_iFunction y se debe transferir una instancia global de la POU correspondiente a SMC_ReadNCFile2 o SMC_ReadNCFromStream a través de la estructura SMC_NC_GFunctionTable.

La enumeración SMC_GVar_Type se utiliza para el tipo de retorno y los tipos de argumento. La entrada contenida allí T_OTHER se puede utilizar como marcador de posición para un tipo. Al analizar, el sistema comprueba que todos los argumentos que corresponden a un T_OTHER en la firma tienen el mismo tipo. No importa el tipo.

Para obtener más información, consulte: Funciones de código G específicas del usuario

Manejo de errores

Cuando es posible, la posición exacta del token defectuoso y su longitud se emiten en errores de sintaxis. La posición del error se enumera en SMC_ReadNCFile2.errorPos.