LIN

Top 


LIN ini, fin  o  LIN ini, cnt

    Hace una linealización mediante una interpolación de una tabla de segmentos. De esta forma se puede hacer un escalado no lineal o leer el valor de un punto en una curva.

    La tabla consta de valores X, Y que definen los segmentos. El final de un segmento es el inicio del siguiente. El orden es siempre alternando X e Y:

 
X0, Y0; X1, Y1; X2, Y2; X3, Y3, etc.

    La forma de escribir es:

 
LIN X0, X3        ;Punto inicial (X0,Y0) y punto final (X3,Y3)
o
 
LIN X0, 3         ;Punto inicial (X0,Y0) y cantidad de puntos


    Las variables X0 a Y3 son solo un ejemplo, pero pueden usarse todas las que entren hasta llenar la memoria (ese es el límite). Preferiblemente deben ser variables con retención. Cada una de estas es de 16bit signado (-32768 a 32767).

    El dato a linealizar debe estar en el acumulador al momento de ejecutar la instrucción. Una vez ejecutada el resultado está en el acumulador. Lo que hace es dar un valor Y para un valor X de entrada:

 
LD valor
LIN X0, X1
ST linealizado

    Si el valor a linealizar es menor que X0 el resultado será Y0. Si el valor a linealizar es mayor que el último X el resultado será el último Y. Para el caso del ejemplo el mínimo y máximo estarán en Y0 e Y3 respectivamente.




    En el ejemplo en Ladder se ve que se lee el valor v_no_lin (v_no_lin -> Acc). Este es llevado, mediante el acumulador (Acc) a la linealización. Esta consta de dos segmentos definidos por tres vértices a partir de la variable crv. El resultado es llevado por el acumulador y depositado en la variable v_lin.



  SCALE
  ADD
  MUL
  DIV

  Lista de instrucciones
  Índice