Current draft for the detector axis tower driver
This commit is contained in:
@ -1,70 +0,0 @@
|
||||
# Reset any errors of the virtual axis.
|
||||
# This record is coupled to the parameter library via reset_ -> RESET.
|
||||
record(longout, "$(INSTR)$(M):Reset") {
|
||||
field(DTYP, "asynInt32")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) RESET")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Read the position state of the axis:
|
||||
# 0 = not ready
|
||||
# 1 = ready (in working position)
|
||||
# 2 = ready (in changer position)
|
||||
record(longout, "$(INSTR)$(M):PositionState")
|
||||
{
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(CONTROLLER),$(AXIS)) POSITION_STATE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Set the target position for the offset of the lift (motor COZ)
|
||||
# This record is coupled to the parameter library via liftOffset_ -> LIFT_OFFSET.
|
||||
record(ao, "$(INSTR)$(M):LiftOffset") {
|
||||
field(DTYP, "asynFloat64")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) LIFT_OFFSET")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Set the target position for the offset of the lift (motor COZ)
|
||||
# This record is coupled to the parameter library via liftOffset_ -> LIFT_OFFSET.
|
||||
record(ao, "$(INSTR)$(M):LiftOffset") {
|
||||
field(DTYP, "asynFloat64")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) LIFT_OFFSET")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Read the lower and upper limits for the lift offset
|
||||
record(ai, "$(INSTR)$(M):LiftOffsetLowLimitRBV")
|
||||
{
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(CONTROLLER),$(AXIS)) LIFT_OFFSET_LOW_LIMIT")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
record(ai, "$(INSTR)$(M):LiftOffsetHighLimitRBV")
|
||||
{
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(CONTROLLER),$(AXIS)) LIFT_OFFSET_HIGH_LIMIT")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Set the target position for the offset of the detector tilt (motor COX)
|
||||
# This record is coupled to the parameter library via tiltOffset_ -> TILT_OFFSET.
|
||||
record(ao, "$(INSTR)$(M):TiltOffset") {
|
||||
field(DTYP, "asynFloat64")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) TILT_OFFSET")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Read the lower and upper limits for the detector tilt offset
|
||||
record(ai, "$(INSTR)$(M):TiltOffsetLowLimitRBV")
|
||||
{
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(CONTROLLER),$(AXIS)) TILT_OFFSET_LOW_LIMIT")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
record(ai, "$(INSTR)$(M):TiltOffsetHighLimitRBV")
|
||||
{
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(CONTROLLER),$(AXIS)) TILT_OFFSET_HIGH_LIMIT")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
134
db/detectorTower.db
Normal file
134
db/detectorTower.db
Normal file
@ -0,0 +1,134 @@
|
||||
# Reset any errors of the virtual axis.
|
||||
# This record is coupled to the parameter library via resetError_ -> RESET_ERROR.
|
||||
record(longout, "$(INSTR)$(M):ResetError") {
|
||||
field(DTYP, "asynInt32")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) RESET_ERROR")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Start the movement into the position defined by BeamAngle, LiftOffset and TiltOffset
|
||||
record(longout, "$(INSTR)$(M):MoveToWorkingPosition") {
|
||||
field(DTYP, "asynInt32")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) MOVE_TO_WORKING_POSITION")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Read the position state of the axis:
|
||||
# 0 = not ready
|
||||
# 1 = ready (in working position)
|
||||
# 2 = Moving from working to changer position or in changer position
|
||||
# 2 = Moving from changer to working position
|
||||
record(longout, "$(INSTR)$(M):PositionState")
|
||||
{
|
||||
field(DTYP, "asynInt32")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS)) POSITION_STATE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Start the movement into the position defined by BeamAngle, LiftOffset and TiltOffset
|
||||
record(longout, "$(INSTR)$(M):Start") {
|
||||
field(DTYP, "asynInt32")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) START")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Set the target angle for the beam
|
||||
record(ao, "$(INSTR)$(M):BeamAngle") {
|
||||
field(DTYP, "asynFloat64")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) BEAM_ANGLE")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Copy the high and low limits from the motor record
|
||||
record(ao, "$(INSTR)$(M):DHLM2BeamAngle_RBV") {
|
||||
field(DOL, "$(INSTR)$(M).DHLM CP")
|
||||
field(OUT, "$(INSTR)$(M):BeamAngle.DRVH")
|
||||
field(OMSL, "closed_loop")
|
||||
}
|
||||
record(ao, "$(INSTR)$(M):DLLM2BeamAngle_RBV") {
|
||||
field(DOL, "$(INSTR)$(M).DLLM CP")
|
||||
field(OUT, "$(INSTR)$(M):BeamAngle.DRVL")
|
||||
field(OMSL, "closed_loop")
|
||||
}
|
||||
|
||||
# Set the target position for the offset of the lift (motor COZ)
|
||||
# This record is coupled to the parameter library via liftOffset_ -> LIFT_OFFSET.
|
||||
record(ao, "$(INSTR)$(M):LiftOffset") {
|
||||
field(DTYP, "asynFloat64")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) LIFT_OFFSET")
|
||||
field(PINI, "NO")
|
||||
field(FLNK, "$(INSTR)$(M):LiftOffsetFwd")
|
||||
}
|
||||
|
||||
# Like $(INSTR)$(M):LiftOffset, but starts a movement immediately, if able
|
||||
record(ao, "$(INSTR)$(M):LiftOffsetMove") {
|
||||
field(DTYP, "asynFloat64")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) LIFT_OFFSET_MOVE")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Read the lower and upper limits for the lift offset
|
||||
record(ai, "$(INSTR)$(M):LiftOffsetLowLimitRBV")
|
||||
{
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(CONTROLLER),$(AXIS)) LIFT_OFFSET_LOW_LIMIT")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
record(ao, "$(INSTR)$(M):LiftOffsetLowLimit2Field") {
|
||||
field(DOL, "$(INSTR)$(M):LiftOffsetLowLimitRBV CP")
|
||||
field(OUT, "$(INSTR)$(M):LiftOffset.DRVL")
|
||||
field(OMSL, "closed_loop")
|
||||
}
|
||||
|
||||
record(ai, "$(INSTR)$(M):LiftOffsetHighLimitRBV")
|
||||
{
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(CONTROLLER),$(AXIS)) LIFT_OFFSET_HIGH_LIMIT")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
record(ao, "$(INSTR)$(M):LiftOffsetHighLimit2Field") {
|
||||
field(DOL, "$(INSTR)$(M):LiftOffsetHighLimitRBV CP")
|
||||
field(OUT, "$(INSTR)$(M):LiftOffset.DRVH")
|
||||
field(OMSL, "closed_loop")
|
||||
}
|
||||
|
||||
# Set the target position for the offset of the detector tilt (motor COX)
|
||||
# This record is coupled to the parameter library via tiltOffset_ -> TILT_OFFSET.
|
||||
record(ao, "$(INSTR)$(M):TiltOffset") {
|
||||
field(DTYP, "asynFloat64")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) TILT_OFFSET")
|
||||
field(PINI, "NO")
|
||||
}
|
||||
|
||||
# Like $(INSTR)$(M):TiltOffset, but starts a movement immediately, if able
|
||||
record(ao, "$(INSTR)$(M):TiltOffsetMove") {
|
||||
field(DTYP, "asynFloat64")
|
||||
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) TILT_OFFSET")
|
||||
field(PINI, "NO")
|
||||
field(FLNK, "$(INSTR)$(M):Start")
|
||||
}
|
||||
|
||||
# Read the lower and upper limits for the detector tilt offset
|
||||
record(ai, "$(INSTR)$(M):TiltOffsetLowLimitRBV")
|
||||
{
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(CONTROLLER),$(AXIS)) TILT_OFFSET_LOW_LIMIT")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
record(ao, "$(INSTR)$(M):TiltOffsetLowLimit2Field") {
|
||||
field(DOL, "$(INSTR)$(M):TiltOffsetLowLimitRBV CP")
|
||||
field(OUT, "$(INSTR)$(M):TiltOffset.DRVL")
|
||||
field(OMSL, "closed_loop")
|
||||
}
|
||||
|
||||
record(ai, "$(INSTR)$(M):TiltOffsetHighLimitRBV")
|
||||
{
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(CONTROLLER),$(AXIS)) TILT_OFFSET_HIGH_LIMIT")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
record(ao, "$(INSTR)$(M):TiltOffsetHighLimit2Field") {
|
||||
field(DOL, "$(INSTR)$(M):TiltOffsetHighLimitRBV CP")
|
||||
field(OUT, "$(INSTR)$(M):TiltOffset.DRVH")
|
||||
field(OMSL, "closed_loop")
|
||||
}
|
Reference in New Issue
Block a user