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 (
xenL!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
Personaje | Escribe | Argumentos | Precedencia |
|---|---|---|---|
|
|
| 14 |
|
|
| 13 |
|
|
| 13 |
|
|
| 12 |
|
|
| 12 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 6 |
|
|
| 5 |
|
|
| 4 |
Personaje | Escribe | Argumentos |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
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.