1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 <2015> 2016 2017 2018 2019 2020 2021 2022 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 <2015> 2016 2017 2018 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: Misunderstanding of epid record ODEL field? |
From: | "Mooney, Tim M." <[email protected]> |
To: | Peter Linardakis <[email protected]>, "[email protected]" <[email protected]> |
Date: | Wed, 22 Apr 2015 14:37:25 +0000 |
Hi Peter,
In the meantime, you could drive the motor through a calcout record, like this:
epid writes to suppress.A record(calcout, "suppress") { field(INPC, "epid.ODEL") field(CALC, abs(a-b)>c") field(OOPT, "When Non-zero") field(DOPT, "Use OCAL") field(OCAL, "b:=a;b") field(OUT, "motor PP") } Tim Mooney ([email protected]) (630)252-5417
Software Services Group (www.aps.anl.gov) Advanced Photon Source, Argonne National Lab From: [email protected] [[email protected]] on behalf of Peter Linardakis [[email protected]]
Sent: Wednesday, April 22, 2015 1:08 AM To: [email protected] Subject: Misunderstanding of epid record ODEL field? 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 p: +61 2 6125 2862 w: http://physics.anu.edu.au/nuclear/
|