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  <20222023  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  <20222023  2024 
<== Date ==> <== Thread ==>

Subject: Re: asynMotorController weird behavior when using any read/write interface mask
From: Abdalla Ahmad via Tech-talk <tech-talk at aps.anl.gov>
To: Mark Rivers <rivers at cars.uchicago.edu>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Thu, 6 Oct 2022 18:48:51 +0000
Hello Mark

I forked the original motorMicos code on GitHub here https://github.com/AbdallaDalleh/motorMicos , please look at the SMCTaurus controller and axis classes.

Thanks.
Abdalla.

From: Mark Rivers <rivers at cars.uchicago.edu>
Sent: Thursday, October 6, 2022 4:31:32 PM
To: Abdalla Ahmad <Abdalla.Ahmad at sesame.org.jo>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: RE: asynMotorController weird behavior when using any read/write interface mask
 

Hi Abdalla,

 

Ø  In this case do I need to call the controller or axis classes callbacks?

 

I’m not sure what you are asking.  Do you mean in the writeInt32 and readInt32 methods?  At the end of writeInt32() you should call pAxis->callParamCallbacks() as is done for the Newport XPS controller here:

https://github.com/epics-motor/motorNewport/blob/9ef83c1c19fab255fe26a770ce978338620ee288/newportApp/src/XPSController.cpp#L297

 

Ø  For the SPMG field, when going from Go to Move the GUI gives me “Controller Error” and the RBV field does not update until it reaches its destination, this is very similar to the original behavior. This also happened when I reverted my updates for read/write Int32 interfaces.

 

I just tested two motor drivers that inherit from asynMotorController, the Newport XPS and the Galil.  They do not show this behavior: there is no controller error when changing from Go to Move, and the RBV updates fine while a motion is in progress in Move mode.  What do you mean by “this is very similar to the original behavior”?  Do you mean before you added the code to call the base class writeInt32()?   It seems like your driver may have another issue.

 

Is your code on Github or elsewhere that I can look at it?

 

Mark

 

 

From: Abdalla Ahmad <Abdalla.Ahmad at sesame.org.jo>
Sent: Thursday, October 6, 2022 5:08 AM
To: tech-talk at aps.anl.gov; Mark Rivers <rivers at cars.uchicago.edu>
Subject: RE: asynMotorController weird behavior when using any read/write interface mask

 

Hello Mark

 

I called the base class functions and it worked. I have two questions:

1.       In this case do I need to call the controller or axis classes callbacks?

2.       For the SPMG field, when going from Go to Move the GUI gives me “Controller Error” and the RBV field does not update until it reaches its destination, this is very similar to the original behavior. This also happened when I reverted my updates for read/write Int32 interfaces.

Thanks!

Abdalla.

 

From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Abdalla Ahmad via Tech-talk
Sent: Thursday, September 29, 2022 4:04 PM
To: Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov
Subject: RE: asynMotorController weird behavior when using any read/write interface mask

 

Thanks Mark. I will test it and get back to you. Out of curiosity why did this happen? why do I have to call the base class functions?

 

Best Regards

Abdalla.

 

From: Mark Rivers <rivers at cars.uchicago.edu>
Sent: Thursday, September 29, 2022 3:52 PM
To: tech-talk at aps.anl.gov; Abdalla Ahmad <Abdalla.Ahmad at sesame.org.jo>
Subject: Re: asynMotorController weird behavior when using any read/write interface mask

 

Hi Abdalla,

 

I suspect the problem is that in your writeInt32 and readInt32 methods you have forgotten that you must call the base class method (asynMotorController::writeInt32 or readInt32) for any parameters that are not specific to your derived class.  That would cause SPMG and STOP not to work.

 

Here is an example of how to do it:

 

Mark

 


From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Abdalla Ahmad via Tech-talk <tech-talk at aps.anl.gov>
Sent: Thursday, September 29, 2022 1:51 AM
To:
tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: asynMotorController weird behavior when using any read/write interface mask

 

Hi

 

Recently we got the chance to control the SMC Taurus rotary stage using the motorMicos motor record module. One of my updates was to read and write limit switches status. The command’s argument is an integer value (0-2), I implemented readIn32 and writeInt32 interfaces as usual. When moving the motor, after a while the RBV field does not update, STOP and SPMG fields do not work (The motor doesn’t stop), and it the GUI gives me “Controller Error”. When the motor reaches its destination, the controller error clears and the RBV field is updated accordingly. I tried empty readInt32 and writeInt32 functions with only “return asynSuccess” and the behavior is still there. When I removed those interfaces, the controller works fine. To make those commands work I moved the writeReadController and writeController functions to the poll thread and the motor works fine, motor stops at command and the RBV field is updated. Any clue on what I have missed?

 

Thanks!

Abdalla.

 


Replies:
RE: asynMotorController weird behavior when using any read/write interface mask Mark Rivers via Tech-talk
References:
asynMotorController weird behavior when using any read/write interface mask Abdalla Ahmad via Tech-talk
Re: asynMotorController weird behavior when using any read/write interface mask Mark Rivers via Tech-talk
RE: asynMotorController weird behavior when using any read/write interface mask Abdalla Ahmad via Tech-talk
RE: asynMotorController weird behavior when using any read/write interface mask Abdalla Ahmad via Tech-talk
RE: asynMotorController weird behavior when using any read/write interface mask Mark Rivers via Tech-talk

Navigate by Date:
Prev: Re: Exploring EPICS performance/processing limits Marco A. Barra Montevechi Filho via Tech-talk
Next: RE: asynMotorController weird behavior when using any read/write interface mask Mark Rivers 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  <20222023  2024 
Navigate by Thread:
Prev: RE: asynMotorController weird behavior when using any read/write interface mask Mark Rivers via Tech-talk
Next: RE: asynMotorController weird behavior when using any read/write interface mask Mark Rivers 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  <20222023  2024 
ANJ, 06 Oct 2022 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·