Editor de restricciones
Sintaxis de expresiones de restricción
La sintaxis de expresiones de restricción es un subconjunto de la sintaxis de LN Herramientas del Sistema. Puede componer expresiones de restricción con las siguientes instrucciones básicas.
Operadores aritméticos:
- * (multiplicación)
- / (división)
- + (suma)
- - (resta)
- \ (resto tras la división)
- & (vectores alfanuméricos vinculantes)
Operadores lógicos:
- o
- y
- no
Operadores relacionales:
- = (igual que)
- > (mayor que)
- >= (mayor o igual que)
- <> (no igual que)
- < (menor que)
- <= (menor o igual que)
Expresiones de dominio
A es {a1,a2,a3-a4,..} significa: (A=a1 o A=a2 o A >= a3 y A <= a4, etc.).
La sintaxis de expresión de ámbito es una anotación abreviada de expresiones lógicas referentes al ámbito de una variable.
Prioridad en las expresiones
Los operadores aritméticos tienen una prioridad mayor que las operaciones relacionales.
Las operaciones relacionales tienen una prioridad mayor que los operadores lógicos.
La secuencia de prioridad para operadores aritméticos: * / \ + -
La secuencia de prioridad para operadores lógicos: no, y, o
Los paréntesis ('()') pueden utilizarse para cambiar la secuencia de prioridad de operadores aritméticos y lógicos.
Ejemplo
3 + 4 * 5 = 23
(3 + 4) * 5 = 35
Expresiones booleanas
Las expresiones booleanas pueden tener el valor verdadero o falso (1 o 0). Esto puede aplicarse en restricciones, especialmente en expresiones condicionales.
Ejemplo
If not e then ' significa:
If e = false then'
o If e = 0 then'
Construcciones If-then-else
En las restricciones se pueden utilizar construcciones if-then-else extensas. La agrupación de sentencias está permitida.
Una construcción if-then-else siempre se cierra con una sentencia endif. La sentencia else no es obligatoria. Las sentencias if, else y endif siempre empiezan en una nueva línea. Las expresiones (condicionales) pueden dividirse en varias líneas. Una restricción de validación se puede definir sin sentencias if-then-else; esta restricción debe comenzar por c:.
Una restricción puede incluir comentarios utilizando el signo |. Durante el proceso de configuración, puede generar mensajes mediante la variable de mensaje (hasta 80 x 25 líneas de texto).
Ejemplo
If expresión 1
then expresión 2
else expresión 3
endif
Variables de restricción
Las variables globales y locales pueden utilizarse en expresiones de restricción. Las variables globales son características de productos y variables de restricción definidas por el usuario declaradas como globales. Las variables definidas previamente por el configurador de productos, como la especificación, la visualización, la longitud, la anchura, etc., son locales. Las variables locales conservan su valor durante todo el proceso de configuración, a menos que se cambien sus valores.
Una variable de restricción puede tener las siguientes declaraciones de tipo:
- cadena (alfanumérica) (por ejemplo: cadena máquina global)
- largo (enteros) (por ejemplo: largo i)
- doble (fracciones) (por ejemplo: doble j)
Las variables de restricción definidas por el usuario siempre deben declararse en la parte superior de la restricción. Todas las variables se inicializan antes de ejecutarse la restricción: las variables alfanuméricas se borran y las variables numéricas adoptan el valor cero. Las variables globales introducción y validando se inicializan con el valor verdadero.
Utilización de variables de restricción
Las características de producto se deben proporcionar con corchetes de apertura y de cierre ([......]) en las expresiones de restricción. Las variables restantes pueden utilizarse directamente en expresiones. Las variables alfanuméricas (matrices de cadenas) pueden indexarse según la notación: (startposition[;longitud]).
Ejemplo
[color] = "rojo"
validando = verdadero
Los valores de las variables pueden ser alfanuméricos o numéricos. Los valores alfanuméricos deben escribirse entre comas ("...."). Los valores numéricos pueden especificarse directamente. La coma decimal es una coma (',').
Ejemplo
máquina(1;2) = "A5"
volumen = 28.673
Las constantes verdadero/falso pueden utilizarse para expresiones booleanas.
Funciones aritméticas
- round(X,Y,Z): produce un valor redondeado de X; Y es el número de decimales y Z es el método de redondeo (0 = a la baja, 1 = normal, 2 = al alza)
- val(A): crea un valor numérico de la cadena A (val("8,7") = 8,7)
- abs(X): calcula el valor absoluto de X (abs(-10,3) = 10,3)
- int(X): crea el valor entero de X (int(11,6) = 11)
- pow(X,Y): eleva X a la potencia de Y (pow(10,2) = 100)
- sqrt(X): crea la raíz cuadrada de X (sqrt(16) = 4)
- min(X,Y): crea el valor más pequeño de X e Y (min(6,10) = 6)
- max(X,Y): crea el valor más grande de X e Y (max(6,10) = 10)
- pi: constante con valor PI (3,1415926...)
Funciones trigonométricas
- sin(X), cos(X), tan(X): produce el seno, el coseno o la tangente de X (radiales)
- asin(X), acos(X), atan(X): produce el arcoseno, el arcocoseno o la arcotangente de X
- hsin(X), hcos(X), htan(X): produce el seno, el coseno o la tangente hiperbólicos de X
Funciones logarítmicas
- exp(X): eleva e a la potencia de X
- log(X): produce un logaritmo natural de X con base e
- log10(X): produce un valor logarítmico de X con base de potencias de 10
Funciones de cadena
- edit(X,Y): da forma al valor numérico X según el formato Y (edit(10,3,"ZZZ9V,99") = "10,30"
- str(X): coloca valor numérico en cadena (str(10,3) = "10,3")
- len(X): produce longitud de cadena X (len("abc") = 3)
- strip(X): borra espacios después del último carácter (strip("A ") "A")
- pos(X,Y): produce posición de cadena Y en cadena X desde la izquierda
- rpos(X,Y): produce posición de cadena Y en cadena X desde la derecha
Funciones de fecha
- fecha(): produce el número de días entre el día 0 y la fecha actual
- date(a,m,d): produce el número de días entre el día 0 y la fecha especificada
Ejemplo
date(1995,06,01) = 728445