sddsfeedforward performs feedforward on process variables.
Feedforward essentially means that one or more process variables are
set according to a predetermined function of other process variables.
In sddsfeedforward, the user supplies a series of tables that
are used to interpolate values of a single actuator as a function of a
single readback. Any number of tables may be given, so that any
number of actuators may be driven by any number of readbacks. Each
actuator is, however, driven by only one readback. One readback may
drive any number of readbacks.
sddsfeedforward ID1GapCompensation.sdds -interval=10,swhere the file ID1GapCompensation.sdds contains the following data:
ReadbackName = ID1:Gap ActuatorName = S1B:H1:CurrentAO
ReadbackValue ActuatorValue
------------------------------
150.000 0.000
100.000 0.000
50.000 1.000
40.000 10.000
30.000 20.000
20.000 35.000
15.000 74.000
11.000 99.000
At each iteration step, ID1:Gap is read and sddsfeedforward intepolates a new value for
S1B:H1:CurrentAO based on this table, which it writes to the PV.
sddsfeedforward <inputfile>
[-interval=<real-value>] [-steps=<integer=value>]
[-verbose] [-dryRun]
[-averageOf=<number>[,interval=<seconds>]]
[-testValues=<SDDSfile>]
[-ezcaTiming=<timeout>,<retries>]
[-runControlPV=<string>] [-runControlDescription=<string>]
[-CASecurityTest]
The input file is an SDDS file with the following elements:
To make sddsfeedforward more robust, one can implement tests on any process variable,
not necessarily those involved in the feedforward itself. If any of the tests fail, then the
feedforward is suspended until the test suceeds. The test consist of checking whether a process
variable is within a specified range or not. The testValues file has three required columns and
one optional one: