Files
motorBase/motorApp/Db/profileMoveAxis.template
T

105 lines
3.0 KiB
Plaintext

# Database for profile moves with asynMotor
# This is the database for the each axis, profileMoveController is the file
# for the controller.
#
# Mark Rivers
# April 3, 2011
#
#
# Macro paramters:
# $(P) - PV name prefix
# $(R) - PV base record name
# $(NPOINTS) - Maximum profile points
# $(NREADBACK) - Maximum number of readback positions
# $(PORT) - asyn port for this controller
# $(AXIS) - asyn addr for this axis
# $(TIMEOUT) - asyn timeout for this axis
# $(PREC) - Precision for this axis
#
# Is this axis involved in the profile move?
#
record(bo,"$(P)$(R)$(AXIS)Use axis") {
field(DESC, "Use axis $(AXIS)?")
field(PINI, "YES")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(AXIS),$(TIMEOUT))PROFILE_USE_AXIS")
field(VAL, "0")
field(ZNAM, "No")
field(ONAM, "Yes")
}
#
# Target position array for this axis
#
record(waveform,"$(P)$(R)$(AXIS)Positions") {
field(DESC, "Axis $(AXIS) positions")
field(DTYP, "asynFloat64ArrayOut")
field(INP, "@asyn($(PORT),$(AXIS),$(TIMEOUT))PROFILE_POSITIONS")
field(NELM, "$(NPOINTS)")
field(FTVL, "DOUBLE")
field(PREC, "$(PREC)")
}
#
# Readback position array for this axis
#
record(waveform,"$(P)$(R)$(AXIS)Readbacks") {
field(DESC, "Axis $(AXIS) readbacks")
field(DTYP, "asynFloat64ArrayIn")
field(INP, "@asyn($(PORT),$(AXIS),$(TIMEOUT))PROFILE_READBACKS")
field(NELM, "$(NREADBACK)")
field(FTVL, "DOUBLE")
field(PREC, "$(PREC)")
field(SCAN, "I/O Intr")
}
#
# Following error array for this axis
#
record(waveform,"$(P)$(R)$(AXIS)FollowingErrors") {
field(DESC, "Axis $(AXIS) following errors")
field(DTYP, "asynFloat64ArrayIn")
field(INP, "@asyn($(PORT),$(AXIS),$(TIMEOUT))PROFILE_FOLLOWING_ERRORS")
field(NELM, "$(NREADBACK)")
field(FTVL, "DOUBLE")
field(PREC, "$(PREC)")
field(SCAN, "I/O Intr")
}
# These records make the motor resolution, offset and direction available to the driver
# which is needed for profile moves
# Motor direction for this axis
record(longout,"$(P)$(R)$(AXIS)Direction") {
field(DESC, "$(AXIS) direction")
field(PINI, "YES")
field(DOL, "$(DIR_LINK) CP MS")
field(OMSL, "closed_loop")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(AXIS),$(TIMEOUT))PROFILE_MOTOR_DIRECTION")
}
# Motor offset for this axis
record(ao,"$(P)$(R)$(AXIS)Offset") {
field(DESC, "$(AXIS) offset")
field(PINI, "YES")
field(DOL, "$(OFF_LINK) CP MS")
field(OMSL, "closed_loop")
field(DTYP, "asynFloat64")
field(OUT, "@asyn($(PORT),$(AXIS),$(TIMEOUT))PROFILE_MOTOR_OFFSET")
field(PREC, "$(PREC)")
}
# Motor resolution for this axis
record(ao,"$(P)$(R)$(AXIS)Resolution") {
field(DESC, "$(AXIS) resolution")
field(PINI, "YES")
field(DOL, "$(RES_LINK) CP MS")
field(OMSL, "closed_loop")
field(DTYP, "asynFloat64")
field(OUT, "@asyn($(PORT),$(AXIS),$(TIMEOUT))PROFILE_MOTOR_RESOLUTION")
field(PREC, "$(PREC)")
}