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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: Simulated limit switches on motorSim motor |
From: | "Pearson, Matthew via Tech-talk" <tech-talk at aps.anl.gov> |
To: | "Nariyoshi, Pedro" <nariyosh at frib.msu.edu>, Mark Rivers <rivers at cars.uchicago.edu>, Torsten Bögershausen <Torsten.Bogershausen at ess.eu>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Fri, 1 Dec 2023 22:59:26 +0000 |
Hi Pedro, looks quite interesting. I am still trying to decode the entire template, but I didn't see any type of protection to avoid the slit arms from overlapping? I imagine I could
probably implement it in the CLC_ expressions. We currently have two approaches: - use a calc to set up a mask and then use this mask to trigger the move commands in a particular order: used mostly in asymmetrical devices with different arms for each direction - use calcs to limit the gap/center motion, but it was quite annoying to have the set points update when an arm reaches a limit switch (that was before I had learned about the transform
record) If you have a soft motor record for the gap and center then using the soft limits in those records can provide a way to prevent a gap or center set point outside a range. Once the slits are calibrated, so that 0 gap is with the slits just touching, you can
set the gap DLLM to something like 0.01 mm (or however close you want). In some cases, if you have small gap sizes, you also need your first option in order to prevent collisions at the beginning of the move if the motors start moving at slightly different times. Also, I assume the limit switch indicators don't really work on the virtual motors, correct?
Correct. The motor record already contains so many fields, but I wonder if it would be helpful to have an INLINK to set these limits (whether the RHLS/RLLS or LLS/HLS, I am not sure). That’s something I’ve wanted to do in the past as well. For example, if we have a PLC controlled motor, it would typically be integrated using separate records for the setpoint, readback, low limit switch, high limit switch, etc. And it would be nice to
just layer a soft motor record on top and have the limit switch indicators work. The way around this is to develop a Asyn motor driver that can talk to the PLC directly (like any other motor controller driver). But having both options available would be nice.
I don’t think there’s a technical reason why we couldn’t implement this, it’s just an edge case that no one has gotten round to yet.
An alternative approach (which I’ve implement widely at our site) is to have a separate motor ‘status’ record and display it on the user level screen next to the high level gap/center motors. That could combine the various status fields from the soft motors
and the underlying real motors. Cheers, Matt From: Mark Rivers <rivers at cars.uchicago.edu>
[EXTERNAL] This email originated from outside of FRIB
We heavily use Tim’s other 2-slit database at our beamlines:
optics/opticsApp/Db/2slit.db
at master · epics-modules/optics (github.com)
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Torsten Bögershausen via Tech-talk
Hej Pedro,
If you are working with a slit, it may be useful to look at a slit system
developed by Tim Mooney:
<https://github.com/epics-modules/optics/blob/master/opticsApp/Db/2slit_soft.vdb>
I had stolen that once, redone stuff and tested.
But I don’t know, what the actual status is,
at the end, we decided to do the slit code inside the motion controller.
To be honest, we are not there fully yet, handling all the corner cases.
Which controller do you use ?
And not using the sim-motor.
I any way, it seems as if everybody (“tm”) uses 4 motors :
2 physical motors (the blades, or arms)
Of course, for a typical slit system you need to duplicate the setup:
Hope that things work out, please let us know, how it goes
😉
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of "Nariyoshi, Pedro via Tech-talk" <tech-talk at aps.anl.gov>
Hi, I am working on creating virtual motors to control some slits. One problem I have is that I couldn't find a way to set the HLS/LLS/RHLS/RLLS fields. Is there a way to control these (whether
having an input link to these values or a writing them directly with a calcout or bo record)? Thank you very much
|