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: motor record: soft motor & DMOV |
From: | Ron Sluiter <[email protected]> |
To: | "Konrad, Martin" <[email protected]> |
Cc: | "[email protected]" <[email protected]> |
Date: | Wed, 28 Aug 2013 14:24:27 -0500 |
Hello Konrad,
You should turn on the motor record's Soft Channel diagnostics messages so we can determine if your soft motors are detecting a "HARDMOVE". To turn on motor record Soft Channel diagnostics messages;
when the soft motor gets stuck (presumably) in the "Moving" state."soft_dinp_func(): HARDMOVE set for %s.\n" In addition, you may want to do a camonitor on the soft motors MIP field. Send us the results. Ron On 8/28/2013 1:12 PM, Konrad, Martin wrote: Hi Kevin,When a soft motor is commanded to move, it is the motor record that initially set the DMOV to zero; the value of DINP PV is ignored at this point. The first time the DINP PV is used is the first status update after the move is initiated. If the moving-poll rate of the real motors is high,60 Hz in my casethere can be a very narrow window during which the DINP calc must be done.Sorry, I don't get it, yet. Can you please describe a bit more detailed how it is supposed to behave and in contrast to that what you think happens if it fails?In "soft motor record.db" the DINP field is set to "$(PREFIX):doneMoving_". How is $(PREFIX):doneMoving_ calculated?record(calc, "$(PREFIX):doneMoving_") { field(CALC, "A && B") field(INPA, "$(PREFIX):motorRadPiston.DMOV CP MS") field(INPB, "$(PREFIX):doneMovingGate_ NPP MS") } record(bo, "$(PREFIX):doneMovingGate_") { field(FLNK, "$(PREFIX):doneMoving_") } record(calcout, "$(PREFIX):doneMovingCloseGate_") { field(CALC, "A") field(INPA, "$(PREFIX):motorAngPiston.DMOV CP MS") field(OUT, "$(PREFIX):doneMovingGate_ PP MS") field(OOPT, "Transition To Non-zero") field(DOPT, "Use OCAL") field(OCAL, "1") } This is inspired by a mail by Tim (http://www.aps.anl.gov/epics/tech-talk/2008/msg00127.php). I hope I implemented it the right way... Thanks, Martin |