Provided by: linuxcnc-uspace_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64 bug

NAME

       lincurve - one-dimensional lookup table

SYNOPSIS

       loadrt lincurve [count=N|names=name1[,name2...]] [personality=P,P,...]

DESCRIPTION

       This  component  can  be  used to map any floating-point input to a floating-point output.
       Typical uses would include linearisation of thermocouples, defining PID  gains  that  vary
       with  external  factors  or  to  substitute  for  any mathematical function where absolute
       accuracy is not required.

       The component can be thought of as a 2-dimensional graph of points in (x,y)  space  joined
       by  straight lines. The input value is located on the x axis, followed up until it touches
       the line, and the output of the component is set to the corresponding y-value.

       The (x,y) points are defined by the x-val-NN and y-val-NN parameters which need to be  set
       in the HAL file using "setp" commands.

       The maximum number if (x,y) points supported is 16.

       For  input  values  less  than  the  x-val-00  breakpoint the y-val-00 is returned.  For x
       greater than the largest x-val-NN the yval corresponding to  x-max  is  returned  (ie,  no
       extrapolation is performed.)

       Sample  usage:  loadrt  lincurve  count=3  personality=4,4,4  for a set of three 4-element
       graphs.

FUNCTIONS

       lincurve.N (requires a floating-point thread)

PINS

       lincurve.N.in float in
              The input value

       lincurve.N.out float out
              The output value

       lincurve.N.out-io float io
              The output value, compatible with PID gains

PARAMETERS

       lincurve.N.x-val-MM float rw (MM=00..personality)
              axis breakpoints

       lincurve.N.y-val-MM float rw (MM=00..personality)
              output values to be interpolated

AUTHOR

       Andy Pugh

LICENSE

       GPL