forked from epics_driver_modules/motorBase
106 lines
3.0 KiB
Plaintext
106 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
|
|
# $(M) - PV motor name
|
|
# $(NPOINTS) - Maximum profile points
|
|
# $(NREADBACK) - Maximum number of readback positions
|
|
# $(PORT) - asyn port for this controller
|
|
# $(ADDR) - 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)M$(M)UseAxis") {
|
|
field(DESC, "Use axis $(ADDR)?")
|
|
field(PINI, "YES")
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))PROFILE_USE_AXIS")
|
|
field(VAL, "0")
|
|
field(ZNAM, "No")
|
|
field(ONAM, "Yes")
|
|
}
|
|
#
|
|
# Target position array for this axis
|
|
#
|
|
record(waveform,"$(P)$(R)M$(M)Positions") {
|
|
field(DESC, "Axis $(ADDR) positions")
|
|
field(DTYP, "asynFloat64ArrayOut")
|
|
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))PROFILE_POSITIONS")
|
|
field(NELM, "$(NPOINTS)")
|
|
field(FTVL, "DOUBLE")
|
|
field(PREC, "$(PREC)")
|
|
}
|
|
|
|
#
|
|
# Readback position array for this axis
|
|
#
|
|
record(waveform,"$(P)$(R)M$(M)Readbacks") {
|
|
field(DESC, "Axis $(ADDR) readbacks")
|
|
field(DTYP, "asynFloat64ArrayIn")
|
|
field(INP, "@asyn($(PORT),$(ADDR),$(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)M$(M)FollowingErrors") {
|
|
field(DESC, "Axis $(ADDR) following errors")
|
|
field(DTYP, "asynFloat64ArrayIn")
|
|
field(INP, "@asyn($(PORT),$(ADDR),$(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)M$(M)Direction") {
|
|
field(DESC, "$(ADDR) direction")
|
|
field(PINI, "YES")
|
|
field(DOL, "$MOTOR).DIR CP MS")
|
|
field(OMSL, "closed_loop")
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))PROFILE_MOTOR_DIRECTION")
|
|
}
|
|
|
|
|
|
# Motor offset for this axis
|
|
record(ao,"$(P)$(R)M$(M)Offset") {
|
|
field(DESC, "$(ADDR) offset")
|
|
field(PINI, "YES")
|
|
field(DOL, "$(MOTOR).OFF CP MS")
|
|
field(OMSL, "closed_loop")
|
|
field(DTYP, "asynFloat64")
|
|
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))PROFILE_MOTOR_OFFSET")
|
|
field(PREC, "$(PREC)")
|
|
}
|
|
|
|
|
|
# Motor resolution for this axis
|
|
record(ao,"$(P)$(R)M$(M)Resolution") {
|
|
field(DESC, "$(ADDR) resolution")
|
|
field(PINI, "YES")
|
|
field(DOL, "$(MOTOR).MRES CP MS")
|
|
field(OMSL, "closed_loop")
|
|
field(DTYP, "asynFloat64")
|
|
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))PROFILE_MOTOR_RESOLUTION")
|
|
field(PREC, "$(PREC)")
|
|
}
|