# 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)") }