Hello techtalkers
I am trying to control a motor that drives a slow tuner based on phase and/or amplitude error signals. It’s still just in testing but the basic control
works. However, The motor seems to attempt to move on every iteration of the epid loop, even if the magnitude of the epid.OVAL field is less than the epid.ODEL field. Do I understand the intention of the ODEL field correctly? I’d rather not have the motor
try to move on every loop iteration. The relevant records are below:
record(calc, "$(res):$(ta):tuning_error") {
field(DESC, "Overall tuning error")
field(INPA, "$(res):$(ta):phase_error")
field(INPB, "$(res):$(ta):ampl_error")
field(CALC, "B-3*A")
}
record(epid, "$(res):$(ta):tuner:control_pid") {
field(DESC, "PID loop to control tuner postion")
field(INP, "$(res):$(ta):tuning_error CPP")
field(SCAN, ".1 second")
field(SMSL, "supervisory")
field(VAL, "0")
field(OUTL, "$(res):$(ta):tuner:motor.RLV PP")
field(FBON, "1")
field(MDT, "5")
field(KP, "-0.12")
field(KI, "0")
field(KD, "0")
field(EGU, "mm")
field(ODEL, "0.04")
field(DRVL, "-1")
field(DRVH, "1")
field(DISV, "0")
field(SDIS, "$(res):$(ta):tuner:mode CPP")
}
Thanks in advance
Peter
Dr Peter Linardakis
Accelerator Research & Development Engineer
Nuclear Physics | Research School of Physics and Engineering
Australian National University
e: [email protected]
p: +61 2 6125 2862
w:
http://physics.anu.edu.au/nuclear/