# Database for EPICS PVS for tomography data collection software using the Aerotech
# PSO output from the rotation stage as a detector trigger.
################
# PSO parameters
################
record(mbbi, "$(P)$(R)PSOControllerModel")
{
field(DESC, "Aerotech controller model")
field(ZRVL, "0")
field(ZRST, "Ensemble")
field(ONVL, "1")
field(ONST, "A3200")
field(VAL, "$(PSO_MODEL)")
}
record(ai, "$(P)$(R)PSOStartTaxi")
{
field(DESC, "Start position with taxi")
field(EGU, "degrees")
field(PREC, "5")
}
record(ai, "$(P)$(R)PSOEndTaxi")
{
field(DESC, "End position with taxi")
field(EGU, "degrees")
field(PREC, "5")
}
record(longin, "$(P)$(R)PSOEncoderCountsPerStep")
{
field(DESC, "Encoder counts per projection")
}
record(asyn, "$(P)$(R)PSOCommand")
{
field(PORT, "$(PSO_PORT)")
field(ADDR, "0")
field(OMAX, "256")
field(IMAX, "256")
field(OFMT, "Hybrid")
field(IFMT, "Hybrid")
field(TMOD, "Write/Read")
}
record(stringin, "$(P)$(R)PSOAxisName")
{
field(VAL, "$(PSO_AXIS_NAME)")
}
# This is a signed number, and must be negative if the encoder direction and motor direction
# in the controller are different.
# On the A3200 this value is read from the controller in the constructor,
# and includes the correct sign. This overrides the value in the subsitutions file.
# However, on the Ensemble this value must be provided in the substitutions file
record(ai, "$(P)$(R)PSOCountsPerRotation")
{
field(DESC, "Number of encoder counts per revolution")
field(VAL, "$(PSO_ENC_PER_ROTATION)")
}
record(longin, "$(P)$(R)PSOEncoderInput")
{
field(DESC, "Encoder input")
field(VAL, "$(PSO_ENC_INPUT)")
}
record(ao, "$(P)$(R)PSOPulseWidth")
{
field(DESC, "Output pulse width in microseconds")
field(VAL, "10")
}
# This record is needed on the Ensemble to keep the socket from timing out.
# It is not needed on the A3200, but does not hurt.
# SCAN could be set to Passive on the A3200.
record(asyn, "$(P)$(R)PSOKeepAlive")
{
field(PORT, "$(PSO_PORT)")
field(AOUT, "ROUND(1.1)")
field(SCAN, "10 second")
}
record(bo, "$(P)$(R)ProgramPSO")
{
field(ZNAM, "No")
field(ONAM, "Yes")
}