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
enL!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
.