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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Multiple sequencer instances undesirably sharing information |
From: | "Marco A. Barra Montevechi Filho via Tech-talk" <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Cc: | SWC <swc at lnls.br> |
Date: | Wed, 8 Feb 2023 21:35:45 +0000 |
Hello all. We created a sequencer state machine with EPICS_BASE 7.0.7, synApps6.2, Sequencer2-2-9.
The state machine controls a set of motors with the STOP, SPMG, VAL and RBV fields based on signals from a set of limit switches (not ideal to be done with IOC but it is what it is). i instantiate it 9 times in my st.cmd file after iocInit: seq SwitchesStates,"user=marco, BL=SOL:, HUTCH=S:, M=UltSoft:, N=1, BL2=SOL:, Setm=m1" seq SwitchesStates,"user=marco, BL=SOL:, HUTCH=S:, M=UltSoft:, N=2, BL2=SOL:, Setm=m2"
(...)
seq SwitchesStates,"user=marco, BL=SOL:, HUTCH=S:, M=UltSoft:, N=9, BL2=SOL:, Setm=m9"Every PV used in the .stt code has {N} or {Setm} in its name, so i can guarantee that i dont have multiple instances of state machine looking at the same PV. I have 9 simulated motors: SOL:S:m1, SOL:S:m2, ..., SOL:S:m9. Whenever i start my state machines, all motors go to the position that the last motor is in. For example, if i instantiate only the first 4 state machines and comment the last 5, then SOL:S:m1, SOL:S:m2, SOL:S:m3 will all go to SOL:S:m4.RBV. The state machine is indeed programmed to send the motor to its own RBV with: float m; assign m to "{BL}{HUTCH}{M}Cmdm{N}"; //PV that has <MOTOR>.VAL in its OUT
monitor m;float m_rbv; assign m_rbv to "{BL}{HUTCH}{M}m{N}_RBV"; //Pv that has <MOTOR>.RBV in its INP
monitor m_rbv;(...) m = m_rbv; pvPut(m); (...) but its supposed to be invisible between instances. Why is the last instance commanding everyone to follow it? I tried adding <app_name>_SNCFLAGS += +r in the Makefile, but to no avail. Thanks in advance for any hints Aviso Legal: Esta mensagem e seus anexos podem conter informações confidenciais e/ou de uso restrito. Observe atentamente seu conteúdo e considere eventual consulta ao remetente antes de copiá-la, divulgá-la ou distribuí-la. Se você recebeu esta mensagem por engano, por favor avise o remetente e apague-a imediatamente. Disclaimer: This email and its attachments may contain confidential and/or privileged information. Observe its content carefully and consider possible querying to the sender before copying, disclosing or distributing it. If you have received this email by mistake, please notify the sender and delete it immediately. |