150 lines
3.6 KiB
Plaintext
150 lines
3.6 KiB
Plaintext
# Motor Template for TOPAS API
|
|
|
|
# Communications for motor specific functions..
|
|
# i.e. read / set position
|
|
|
|
#Typical curl commands
|
|
#curl -X PUT http://129.129.243.70:8004/16448/v0/PublicAPI/Motors/TargetPosition?id=1 -H "Content-Type: application/json" -d "9796"
|
|
#need some macros:-
|
|
|
|
#$(TOP_DEV) =16448
|
|
#$(HOST) =129.129.243.70:8004
|
|
#$(TOPAS) =Device to talk to from startup script
|
|
|
|
#$(MOT) =Motor number after the id= [1..N]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
###########################################
|
|
# Counter
|
|
###########################################
|
|
|
|
|
|
record(calcout, "$(SYSTEM):MOT$(MOT)_LIVE_READ"){ #Trigger a live reading
|
|
field(DESC, "Read live data")
|
|
field(INPA, "$(SYSTEM):LIVE_CNTR CP")
|
|
field(INPB, "$(MOT)")
|
|
field(CALC, "A=B?1:0")
|
|
field(OOPT, "When Non-zero")
|
|
field(OUT, "$(SYSTEM):MOT$(MOT)_GET_POS_CAL.PROC PP")
|
|
}
|
|
|
|
|
|
|
|
|
|
#Ttile and Unit - read once at beginning or if triggered
|
|
|
|
record(ai, "$(SYSTEM):MOT$(MOT)_TRIG_SEQ"){
|
|
field(DESC, "trigger init seq")
|
|
field(INP, "$(SYSTEM):TRIG_SEQ CP")
|
|
field(FLNK, "$(SYSTEM):MOT$(MOT)_INIT_SEQ")
|
|
}
|
|
|
|
record(seq, "$(SYSTEM):MOT$(MOT)_INIT_SEQ"){
|
|
field(DESC, "Startup sequence")
|
|
field(SCAN, "Passive")
|
|
field(SELM, "All")
|
|
field(PINI, "YES")
|
|
|
|
field(DLY1, "$(MOT)")
|
|
field(DO1, "1")
|
|
field(LNK1, "$(SYSTEM):MOT$(MOT)_TITLE.PROC")
|
|
}
|
|
|
|
record(stringin, "$(SYSTEM):MOT$(MOT)_TITLE"){
|
|
field(DESC, "Read motor n pos")
|
|
field(DTYP, "stream")
|
|
field(INP, "@topas_api MotorTitleUnit($(SYSTEM),$(HOST),$(TOP_DEV),$(MOT)) $(TOPAS)")
|
|
# File Unit
|
|
}
|
|
|
|
record(stringin, "$(SYSTEM):MOT$(MOT)_UNIT"){ #currently not working as there are 2 UnitNames in response
|
|
field(DESC, "hold motor unit")
|
|
}
|
|
|
|
|
|
# -------- Positions
|
|
|
|
record(ao, "$(SYSTEM):MOT$(MOT)_GET_POS_CAL"){
|
|
field(DESC, "Read motor n pos")
|
|
field(DTYP, "stream")
|
|
field(EGU, "Units")
|
|
field(PREC, "3")
|
|
field(OUT, "@topas_api ActualPosUnits($(SYSTEM),$(HOST),$(TOP_DEV),$(MOT)) $(TOPAS)")
|
|
field(FLNK, "$(SYSTEM):MOT$(MOT)_GET_POS")
|
|
}
|
|
|
|
record(ao, "$(SYSTEM):MOT$(MOT)_GET_POS"){
|
|
field(DESC, "Read motor n pos")
|
|
field(DTYP, "stream")
|
|
field(EGU, "steps")
|
|
field(PREC, "0")
|
|
field(OUT, "@topas_api ActualPos($(SYSTEM),$(HOST),$(TOP_DEV),$(MOT)) $(TOPAS)")
|
|
}
|
|
|
|
record(ao, "$(SYSTEM):MOT$(MOT)_SET_ABS_STEPS"){
|
|
field(DESC, "Set absolute pos")
|
|
field(DTYP, "stream")
|
|
field(EGU, "units")
|
|
field(PREC, "0")
|
|
field(OUT, "@topas_api SetAbsSteps($(SYSTEM),$(HOST),$(TOP_DEV),$(MOT)) $(TOPAS)")
|
|
field(FLNK, "$(SYSTEM):MOT$(MOT)_GET_POS_CAL")
|
|
}
|
|
|
|
record(ao, "$(SYSTEM):MOT$(MOT)_SET_REL_STEPS"){
|
|
field(DESC, "set relative pos")
|
|
field(DTYP, "stream")
|
|
field(EGU, "units")
|
|
field(PREC, "0")
|
|
field(OUT, "@topas_api SetRelSteps($(SYSTEM),$(HOST),$(TOP_DEV),$(MOT)) $(TOPAS)")
|
|
field(FLNK, "$(SYSTEM):MOT$(MOT)_GET_POS_CAL")
|
|
}
|
|
|
|
|
|
|
|
#- Tweaking
|
|
|
|
record(ao, "$(SYSTEM):MOT$(MOT)_TW_VAL"){
|
|
field(DESC, "tweak value (steps)")
|
|
field(EGU, "steps")
|
|
field(VAL, "1")
|
|
}
|
|
|
|
record(calcout, "$(SYSTEM):MOT$(MOT)_TWL"){ #Tweak left
|
|
field(DESC, "tweak left (lower)")
|
|
field(INPA, "$(SYSTEM):MOT$(MOT)_TW_VAL")
|
|
field(CALC, "-A")
|
|
field(OUT, "$(SYSTEM):MOT$(MOT)_SET_REL_STEPS PP")
|
|
}
|
|
|
|
record(calcout, "$(SYSTEM):MOT$(MOT)_TWR"){ #Tweak right
|
|
field(DESC, "tweak right (raise)")
|
|
field(INPA, "$(SYSTEM):MOT$(MOT)_TW_VAL")
|
|
field(CALC, "A")
|
|
field(OUT, "$(SYSTEM):MOT$(MOT)_SET_REL_STEPS PP")
|
|
}
|
|
|
|
|
|
|
|
#- Home
|
|
|
|
record(ao, "$(SYSTEM):MOT$(MOT)_HOME"){
|
|
field(DESC, "stop motor")
|
|
field(DTYP, "stream")
|
|
field(OUT, "@topas_api HomeMotor($(SYSTEM),$(HOST),$(TOP_DEV),$(MOT)) $(TOPAS)")
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|