the configuration is currently running with a softIOC in /caltech/target/SoftIOC/ on fb2, the database is PSL.db.
Will move that on the VME crate when we reboot the crate the next time.
Currently two channels are defined: C3:PSL-ACAV_VCOMON_CAL and C3:PSL-ACAV_VCOFREQ
C3:PSL-ACAV_VCOMON_CAL contains the polynomial fit for the VCO monitor voltage, which is good for -4.3V to 5.0V in tuning voltage.
To extend the range down to -5V i've used a second calc function named C3:PSL-ACAV_VCOFREQ.
The frequency value where the polynomial function crosses the measured function of the VCO tuning is about 71.6MHz.
As the tuning range ends here the change in frequency for even smaller tuning voltages is almost zero.
So the second function simply checks if the frequency is greater. If so, the output is the polynom. If smaller the value is fixed to 71.6MHz.
Both channels are written to the frames from now on.
PSL.db:
record(calc,"C3:PSL-ACAV_VCOMON_CAL")
{
field(SCAN,".1 second")
field(DESC,"VCO frequency")
field(EGU,"MHz")
field(PREC,"4")
field(HOPR,"90")
field(LOPR,"70")
field(INPA,"C3:PSL-ACAV_VCOMON.VAL")
field(INPF,"0.0005513")
field(INPG,"-0.003731")
field(INPH,"-0.005932")
field(INPI,"-0.02587")
field(INPJ,"1.406")
field(INPK,"79.99")
field(CALC,"F*A^5+G*A^4+H*A^3+I*A^2+J*A+K")
}
record(calc,"C3:PSL-ACAV_VCOFREQ")
{
field(SCAN,".1 second")
field(DESC,"VCO frequency")
field(EGU,"MHz")
field(PREC,"4")
field(HOPR,"90")
field(LOPR,"70")
field(INPA,"C3:PSL-ACAV_VCOMON_CAL.VAL")
field(INPB,"71.6")
field(CALC," A>B?A:B")
} |