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  <20242025  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  <20242025 
<== Date ==> <== Thread ==>

Subject: Re: Aerotech Automation1 motor questions
From: "Peterson, Kevin M. via Tech-talk" <tech-talk at aps.anl.gov>
To: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, John Dobbins <john.dobbins at cornell.edu>
Cc: "Eric J. Edwards" <ericjedwards at cornell.edu>
Date: Mon, 9 Dec 2024 22:08:26 +0000
John,

Yes, you should be able to send the "DriveBrakeOff(1)" as a string to the ExecuteCommand waveform record.  It might also be possible to configure the controller to autmoatically disengage the brake before moving and reapply the brake after moving.

Enabling/Disabling the motor is done using the motor record's CNEN field, which is labeled "Torque" on the motorx_all screen.

Homing is done using the HOMF/HOMR fields of the motor record, which are also on the motorx_all screen.  The Automation1 driver ignores the "forwards" argument, so both HOMF and HOMR behave the same.

Redefining the current controller position is done by putting the motor record in set mode writing a "1" the SET field, writing the desired position to the motor record's DVAL field, then returning the motor record to "Use" mode by writing "0" to the SET field.

The Automation1 example IOC uses MRES values of 3e-7, but PREC values of 3, making it look like MRES and ERES are zero:

https://urldefense.us/v3/__https://github.com/epics-motor/motorAutomation1/blob/ccc00c4bead628fc0439c4e70d57e7b6d94d7ea6/iocs/automation1IOC/iocBoot/iocAutomation1/motor.substitutions.automation1*L6-L9__;Iw!!G_uCfscf7eWS!ebDgmhyAdsloiuDsIElYhS-Di9vAXGd_3Ae9j5wz0O6SSs1wQ6hqH3ukYtIwz6-5TmPs_A654Ag77QbESsh9FQA$ 

Increasing the PREC to 7 and reloading the motor screen should show non-zero MRES and ERES values.

I usually set both the MRES and ERES to the inverse of the CountsPerUnit parameter for axes with single encoders:

https://urldefense.us/v3/__https://help.aerotech.com/automation1/Content/Parameters/CountsPerUnit.htm__;!!G_uCfscf7eWS!ebDgmhyAdsloiuDsIElYhS-Di9vAXGd_3Ae9j5wz0O6SSs1wQ6hqH3ukYtIwz6-5TmPs_A654Ag77QbEWBUFgG0$ 

I don't know if that strategy works for dual-encoder axes.

Kevin

________________________________________
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of John Dobbins via Tech-talk <tech-talk at aps.anl.gov>
Sent: Thursday, December 5, 2024 2:53 PM
To: tech-talk at aps.anl.gov
Cc: Eric J. Edwards
Subject: Aerotech Automation1 motor questions

All,

We have a new device which includes a single axis Aerotech Automation1 motor.

I have downloaded and built

https://urldefense.us/v3/__https://github.com/epics-motor/motorAutomation1__;!!G_uCfscf7eWS!ebDgmhyAdsloiuDsIElYhS-Di9vAXGd_3Ae9j5wz0O6SSs1wQ6hqH3ukYtIwz6-5TmPs_A654Ag77QbEVrl0NqQ$ <https://urldefense.us/v3/__https://github.com/epics-motor/motorAutomation1__;!!G_uCfscf7eWS!cdttgJOviIitNkwi96xADsWtnQJvj-FMihXOIzIx4m5KEvbfwJT6_H6oLl-QKp1AZ7TPS44Sp33ch0CdDGoGTd-LkUXOZ_k$>

(Alma 9,  base-7.0.6, motor - current master, Automation1 - master from October )

The IOC starts up but as there is little documentation I don't know what to expect.

Ultimately, we will be controlling this motor from SPEC (from Certified Scientific Software).  We will need to

Enable/Disable Motor
Brake On/Off
Home
Put new positions

When the IOC starts up I find it reports a position. I can command a move.   Zero position seems to agree with the Automation1 software reported zero position but when I command a move the change in raw isn't what I expect.  I should mention - I am told this set-up combines two encodes to achieve higher resolution. I need to find out more about this.

Note in the motor record:  MRES and ERES both = 0.   Changing them seemed to have no effect.

RMP always equals REP and change reasonable except for the scale factor.

I see that there exists the record:

record(waveform, "$(P)ExecuteCommand")
{
    field(DESC, "Execute an AeroScript command")
    field(DTYP, "asynOctetWrite")
    field(FTVL, "CHAR")
    field(NELM, "256")
    field(INP,  "@asyn($(PORT),0,$(TIMEOUT=4))AUTOMATION1_C_EXECUTE_COMMAND")
}

Can I, for example  send the Aeroscript command "DriveBrakeOff(1)"  as a string to that record?

Any help appreciated.

Thanks,



References:
Aerotech Automation1 motor questions John Dobbins via Tech-talk

Navigate by Date:
Prev: Re: medm edit mode SIGSEGV core dump Ubuntu 24.04. Soliday, Robert T. via Tech-talk
Next: IOC for Tektronix DAQ6510? Jeffrey Gamsby 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  <20242025 
Navigate by Thread:
Prev: Aerotech Automation1 motor questions John Dobbins via Tech-talk
Next: StreamDevice waveform record reports CALC error John Dobbins 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  <20242025 
ANJ, 09 Dec 2024 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions ·
· Download · Search · IRMIS · Talk · Documents · Links · Licensing ·