WIP version with offset RBV (integration from hardware currently

missing)
This commit is contained in:
2025-03-06 09:14:30 +01:00
parent 747d08c52a
commit bb492e678b
8 changed files with 491 additions and 465 deletions

View File

@ -6,7 +6,7 @@ record(longout, "$(INSTR)$(M):ResetError") {
field(PINI, "NO")
}
# Start the movement into the position defined by BeamAngle, LiftOffset and TiltOffset
# Start the movement into the position defined by DetectorTower, LiftOffset and TiltOffset
record(longout, "$(INSTR)$(M):MoveToWorkingPosition") {
field(DTYP, "asynInt32")
field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) MOVE_TO_WORKING_POSITION")
@ -23,112 +23,4 @@ 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")
}
}