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: fanout is not working |
From: | "Tran, Phi Dung via Tech-talk" <tech-talk at aps.anl.gov> |
To: | "Pearson, Matthew" <pearsonmr at ornl.gov>, "Goetze, Kurt A." <goetze at anl.gov> |
Cc: | Tech-talk <tech-talk at aps.anl.gov> |
Date: | Wed, 1 Nov 2023 18:49:15 +0000 |
Hi Matt,
After implementing the changes you suggested and it is still not working. I received the following message in EPICS: "CA client library is unable to contact CA repeater after 50 tries." I believe this issue is the root of my problem, as I am attempting
to create a different virtual IOC to control motors located in another existing IOC. Should I just add your suggestions into the existing ioc so it does not need to search globally for the motor PV.
Please advice
Phi
From: Pearson, Matthew <pearsonmr at ornl.gov>
Sent: Wednesday, November 1, 2023 10:40 AM To: Tran, Phi Dung <ptran1 at bnl.gov>; Goetze, Kurt A. <goetze at anl.gov> Cc: Tech-talk <tech-talk at aps.anl.gov> Subject: RE: fanout is not working Hi Phi,
I changed TWV to REL and used caput to test each motor separately since I want to make relative motions.
I’m not sure I understand that. TWV is a number (the relative distance to move).
I just added DOL into my fanout field but it did not work either.
Using the DOL field also requires setting the OMSL to “closed_loop”.
If you want to move all 3 motors the same relative distance, the way I’d do this is something like:
record(ao, “relative_dist”) { field(OUT, “relative_dist_fanout PP”) }
record(dfanout, “relative_dist_fanout) { field(OUTA, “motor1.TWV”) field(OUTB, “motor2.TWV”) field(OUTC, “motor3.TWV”) field(FLNK, “relative_dist_go”) }
record(dfanout, “relative_dist_go”) { field(VAL, “1”) field(OUTA, “motor1.TWF PP”) field(OUTB, “motor2.TWF PP”) field(OUTC, “motor3.TWF PP”) }
Cheers, Matt
From: Pearson, Matthew <pearsonmr at ornl.gov>
Hi,
Are you sure writing the position to $(M).TWF actually works with caput? Normally TWF (and TWR) just accept a ‘1’ to initiate a relative move specified by the distance in TWV. If the 3 motors are moving, they may just be moving a TWV relative distance.
What you may want is this instead?
record(dfanout, "$(P)-F") { field(DESC, "move ib,ob,ds MTR") field(OUTA, "$(OUTBOARDMTR) PP MS") field(OUTB, "$(INBOARDMTR) PP MS") field(OUTC, "$(DOWNSTREAMMTR) PP MS")
Cheers, Matt
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Goetze, Kurt via Tech-talk
Hi Phi,
You’re close, but I don’t think you can poke the motor record’s value into the dfanout that way.
One way you could do it is by processing the motor record, FLNK the motor record to the dfanout, and have the dfanout’s .DOL field set to the motor record’s .VAL field (NPP). That may not be the exact solution but that’s the direction I would head.
Kurt
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Tran, Phi Dung via Tech-talk
Hi,
I have created a virtual motor and can successfully use the `caput` and `caget` commands to set and read its value, respectively. However, my `dfanout` record is not moving the motors with relative motions as expected. I have confirmed that the motors respond correctly when I use `caput` to directly interact with the fields in `dfanout`.
record(motor, "$(P)"){ field(DTYP, "Soft Channel") field(DESC, "Move Y,ib,ob,ds mtrs")
# Where to write the setpoint to # Output to upstream, inboard and outboard motors field(OUT, "$(P)-F PP MS") field(PREC,"7") ....}
#Move Y motors ib,ob,ds in same direction record(dfanout, "$(P)-F") { field(DESC, "move ib,ob,ds MTR") field(OUTA, "$(OUTBOARDMTR).TWF PP MS") field(OUTB, "$(INBOARDMTR).TWF PP MS") field(OUTC, "$(DOWNSTREAMMTR).TWF PP MS") field(PREC, "7")
Please advice. Thank you, Phi |