EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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: Problems setting motor position on Galil controller
From: Mark Rivers via Tech-talk <tech-talk at aps.anl.gov>
To: Mark Rivers <rivers at cars.uchicago.edu>, "Pearson, Matthew" <pearsonmr at ornl.gov>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Fri, 19 Jan 2024 23:30:50 +0000

That should say:

                I fixed the problem by defining ERES in my motor template file.

 

 

From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Mark Rivers via Tech-talk
Sent: Friday, January 19, 2024 5:29 PM
To: Pearson, Matthew <pearsonmr at ornl.gov>; tech-talk at aps.anl.gov
Subject: RE: Problems setting motor position on Galil controller

 

Folks,

 

I figured out the problem.  The issue was that the Galil driver uses the EncoderRatio that is sent to it by devMotorAsyn.c during iocInit.  The encoder ratio is calculated as EncoderRatio=MRES/ERES, i.e. the motor resolution divided by the encoder resolution.  My issue was that the encoder resolution was not yet defined at iocInit, because it was not defined in a database or autosave file.  It was thus 0, and the encoder ratio was infinite.  That problem is invisible to the user, because later ERES is computed by the motor record, and so it appears OK in OPI screens.  I fixed the problem by defining MRES in my motor template file.

 

devMotorAsyn should be fixed so that if ERES=0 it sets EncoderRatio to 1, not to infinite.  That is the normal case, and would have avoided this issue.

 

Thanks,

Mark

 

 

From: Pearson, Matthew <pearsonmr at ornl.gov>
Sent: Friday, January 19, 2024 11:32 AM
To: Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov
Subject: RE: Problems setting motor position on Galil controller

 

Hi Mark,

 

I’ve not seen this before, and we do that all the time (but only ever with stepper motors).

 

You could try setting the Galil commands manually via Galil GDK/Tools, to figure out if it’s an issue with the driver or the Galil firmware. You could also check the Galil DMC log file (if you have that configured in the IOC) to see exactly the commands being sent to the controller. It should be DP and DE to set the positions, but the order of those two commands is inverted for servo type motors and I’m not sure why.

 

Cheers,

Matt

 

From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Mark Rivers via Tech-talk
Sent: Thursday, January 18, 2024 7:28 PM
To: tech-talk at aps.anl.gov
Subject: [EXTERNAL] Problems setting motor position on Galil controller

 

Folks,

 

I am having 2 serious issues with using “set” mode in the motor record to set the current motor position on a Galil controller.

 

-          It works fine to set the position when the motor is not using an encoder and when not at a hard limit.  Setting the position sets both the drive values (VAL, DVAL, RVAL) and the readback values (RBV, DRBV, RRBV).

-          When setting the position of a motor with an encoder the VAL, DVAL, and RVAL are set correctly.  However, the readbacks are not set.  This means that subsequent moves are not correct, because they act as if the motor is currently at the readback position, and move by the wrong amount.  I have attached a screenshot (Set_to_0_at_1.png) showing a motor that had been at DVAL=1, and then I set it to DVAL=0.  Note that the readbacks are still for DVAL=1.

-          If the motor has an encoder and is at a hard limit when I set the position then the result is that RVAL gets set to -2^31.  The system is totally unusable, because it now thinks the motor is outside the soft limits.  This is shown in screen shot Set_to_0_at_-10_on_limit.jpg.  The motor was on a limit with a DVAL of about -10.7.  I set the position to 0, and now the DVAL is -107374. 

 

Note that driving to a limit and then setting the position is a common operation, because we know what the absolute position of the limit switch is.  But this does not work at all with the Galil.

 

Have others seen these problems?  Am I doing something wrong?

 

Thanks,

Mark

 


References:
Problems setting motor position on Galil controller Mark Rivers via Tech-talk
RE: Problems setting motor position on Galil controller Pearson, Matthew via Tech-talk
RE: Problems setting motor position on Galil controller Mark Rivers via Tech-talk

Navigate by Date:
Prev: RE: Problems setting motor position on Galil controller Mark Rivers via Tech-talk
Next: Re: Danfysik system 8000 and 9100 power supplies Donny Domagoj Cosic via Tech-talk
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
Navigate by Thread:
Prev: RE: Problems setting motor position on Galil controller Mark Rivers via Tech-talk
Next: Re: Problems setting motor position on Galil controller Kevin Peterson via Tech-talk
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
ANJ, 22 Jan 2024 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·