Files
LNO-EPICS-IOCS/TOPAS/IOC/TOPAS_API_MOTOR.template
2025-12-11 16:19:19 +01:00

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