# The fields "RBV" of the "seleneOffsetAxis" motor record are relative positions # (see README.md). THis PV provides in addition the "raw" encoder value read # directly from the motor controller. Due to the way the motor record and asyn # motor code is architectured, this PV is also provided for the virtual # "seleneLiftAxis" and "seleneAngleAxis". However, it has no meaning for these # two axes, hence the record value is undefined. record(ai, "$(INSTR)$(M):AbsolutePositionRBV") { field(DTYP, "asynFloat64") field(INP, "@asyn($(CONTROLLER),$(AXIS)) MOTOR_ABSOLUTE_POSITION_RBV") field(SCAN, "I/O Intr") } # Setting this PV to "1" causes a "normalization" of the virtual and offset axes: # Lift and angle are recalculated based on the position of the central offset # axes 3 and 4 (whose value is then correspondingly set to 0) and the other offset # axes positions are recalculated accordingly. The normalization can be triggered # from any of the offset or the lift or the angle axis. record(longout, "$(INSTR)$(M):Normalize") { field(DTYP, "asynInt32") field(OUT, "@asyn($(CONTROLLER),$(AXIS),1) NORMALIZE") field(VAL, "1") field(PINI, "NO") }