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: Attocube AMC100
From: "Perez Juarez, Emilio \(DLSLtd, RAL, LSCI\) via Tech-talk" <tech-talk at aps.anl.gov>
To: "Cyl, David C." <davecyl at anl.gov>, "Peterson, Kevin M." <kmpeters at anl.gov>, "Lang, Keenan C." <klang at anl.gov>, Tech-talk <tech-talk at aps.anl.gov>, "Ivashkevych, Oksana" <oksana at bnl.gov>
Date: Fri, 28 Oct 2022 10:54:29 +0000
Hi all,

In case it's useful, I'd like to point to the relevant support module we are using at DLS, it's in https://github.com/dls-controls/amc100

Kind Regards,
Emilio

From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Ivashkevych, Oksana via Tech-talk <tech-talk at aps.anl.gov>
Sent: 20 October 2022 22:46
To: Cyl, David C. <davecyl at anl.gov>; Peterson, Kevin M. <kmpeters at anl.gov>; Lang, Keenan C. <klang at anl.gov>; Tech-talk <tech-talk at aps.anl.gov>
Subject: RE: Attocube AMC100
 

Hi Dave,

Thank you and APS team for sharing your code and findings.

 

The changes you suggested in the Stop() function work much better!!

Before the motor actually stopped, after ~30 seconds.  One needed to be patient and not panic. I made this discovery accidently.

 

I have done ~ 50 tests. When one makes a long move and presses stop, it does stop after a few (up to 10 sec ) delay. In most cases the target position is updated to the current position and the motor stays at rest. In a few cases, however,  the target position is not updated, and the motor moves again after checking on other motors, ( a while). It seems after the second stop it is updated.

 

Also, I added a the stop command after limits detection in the poll().  And this actually works quite well. The motor power output stops almost immediately after reporting a limit,  and when the targeted position is not updated, and the move command comes again, it gets updated the second time.

 

This code also address the situation when motor is on the pos limit for example and  is commanded to go positive. It did output power before, now it doesn't

 

Poll()

………………………..

if (status == "backward limit reached") then

                low_lim = 1

                local request = {

                        jsonrpc = "2.0",

                        method = "com.attocube.amc.control.setControlMove",

                        params = { AXIS, false},

                        id = AXIS,

                        api = 2 }

                send(request)

        end

        if (status == "forward limit reached") then

                high_lim = 1

 

                local request = {

                        jsonrpc = "2.0",

                        method = "com.attocube.amc.control.setControlMove",

                        params = { AXIS, false},

                        id = AXIS,

                        api = 2 }

                send(request)

        end

 

It would be nice to push all these updates to the github.

 

 

For the enabling output, I enabled the motors via vendor app, and yes, it gets disabled after the power cycle.

 

 

With best regards,

Oksana

 

 

-----Original Message-----

From: Cyl, David C. <davecyl at anl.gov>

Sent: Wednesday, October 19, 2022 4:28 PM

To: Peterson, Kevin M. <kmpeters at anl.gov>; Ivashkevych, Oksana <oksana at bnl.gov>; Lang, Keenan C. <klang at anl.gov>; Tech-talk <tech-talk at aps.anl.gov>

Subject: Re: Attocube AMC100

 

Another issue I ran into was with the stage enable, on the web view you can enable or disable a stage. I tried to do this via the setControlOutput command using the torque enable/disable button  and it did toggle the enable state but when I then read back this state via the getControlOutput it was flipping from true/false and I still have no idea why. I did open a case with attocube and if I get an answer I will post here.

 

Here is a snippet of the code that gets executed upon a closedLoop state change.

 

        if(closedLoop) then

                local request = {

                        jsonrpc = "2.0",

                        method =

"com.attocube.amc.control.setControlOutput",

                        params = { AXIS, 1 },

                        id = AXIS,

                        api = 2 }

                send(request)

        else

                local request = {

                        jsonrpc = "2.0",

                        method =

"com.attocube.amc.control.setControlOutput",

                        params = { AXIS, 0 },

                        id = AXIS,

                        api = 2 }

                send(request)

 

 

 

-- 

This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail.
Any opinions expressed within this e-mail are those of the individual and not necessarily of Diamond Light Source Ltd.
Diamond Light Source Ltd. cannot guarantee that this e-mail or any attachments are free from viruses and we cannot accept liability for any damage which you may sustain as a result of software viruses which may be transmitted in or with the message.
Diamond Light Source Limited (company no. 4375679). Registered in England and Wales with its registered office at Diamond House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom
 


References:
Attocube AMC100 Ivashkevych, Oksana via Tech-talk
Re: Attocube AMC100 Lang, Keenan C. via Tech-talk
RE: Attocube AMC100 Ivashkevych, Oksana via Tech-talk
Re: Attocube AMC100 Lang, Keenan C. via Tech-talk
RE: Attocube AMC100 Ivashkevych, Oksana via Tech-talk
Re: Attocube AMC100 Kevin Peterson via Tech-talk
Re: Attocube AMC100 Cyl, David C. via Tech-talk
RE: Attocube AMC100 Ivashkevych, Oksana via Tech-talk

Navigate by Date:
Prev: Missing DLL entry points in PV utils on windows-x64-mingw? Eloise de Castelnau via Tech-talk
Next: Grabbing data from REST API Sean Leavey 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: Attocube AMC100 Ivashkevych, Oksana via Tech-talk
Next: Segmentation fault when using asyn Octect writeRead Abdalla Ahmad 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, 28 Oct 2022 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·