Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017 
<== Date ==> <== Thread ==>

Subject: RE: state notation code flags
From: "Mark Rivers" <rivers@cars.uchicago.edu>
To: "Patrick Thomas" <thomas_p@ligo-wa.caltech.edu>
Cc: tech-talk@aps.anl.gov
Date: Thu, 1 Oct 2009 17:41:10 -0500
Patrick,

Event flags can be explicitly set, which is typically used to allow
communication between state sets.  Or event flags can be synced to a PV,
and will be set whenever a monitor is received for that PV, as in the
example I sent you.

You can use the efTest() function outside of a when statement, just like
any other function.

Mark


-----Original Message-----
From: Patrick Thomas [mailto:thomas_p@ligo-wa.caltech.edu] 
Sent: Thursday, October 01, 2009 5:20 PM
To: Mark Rivers
Cc: tech-talk@aps.anl.gov
Subject: Re: state notation code flags

Hi Mark,

Are the flags on a monitored variable set whenever the monitored 
variable is used in the code, including a pvPut, pvGet, assignment, 
calculation, or print statement? Is there a way to test if the flag is 
set besides an efTest in a when statement?

Thank you,
Patrick

Mark Rivers wrote:
> Hio Patrick,
>
> Here are some code snippets from one of my SNL programs.  It has a
variable nelements assigned to a PV, and a monitor on that PV.  It has
an event flag, nelementsMon that is synced to nelements.  Whenever
nelements changes the event flag will be set.  In the init state I clear
the event flag, just to be sure it is clear when the SNL code starts
running (after all PVs connect).  I then use efTestAndClear in a when
statement to take actions when that event flag is set, and to clear it.
This works fine for me.
>
> int     nelements;   assign nelements    to "{P}{R}Nelements.VAL";
> monitor nelements;
> evflag nelementsMon;    sync nelements  nelementsMon;
>
>
>     /* Initialize things when first starting */
>     state init {
>         when() {
>             /* Clear all event flags */
> ...
>
>             efClear(nelementsMon);
>         } state monitor_inputs
>     }
>
>
> ...
>
>     state monitor_inputs {
>
> ...
>
>         when(efTestAndClear(nelementsMon) && (nelements>=1)) {
>             /* If nelements changes, then change endPulses to this
value,
>              * since this is what the user normally wants.  endPulses
can be
>              * changed again after changing nelements if this is
desired. */
>             if (moveMode == MOVE_MODE_RELATIVE)
>                 endPulses = nelements;
>             else
>                 endPulses = nelements-1;
>             pvPut(endPulses);
>         } state monitor_inputs
>     }
>
> Mark
>
> ________________________________
>
> From: tech-talk-bounces@aps.anl.gov on behalf of Patrick Thomas
> Sent: Wed 9/30/2009 10:35 PM
> To: tech-talk@aps.anl.gov
> Subject: state notation code flags
>
>
>
> Hi,
>
> I was wondering if there is a way to track at what point in the state
> notation code evflags are getting set and cleared, or if someone could
> clarify under what conditions they get set. I'm having trouble with
them
> getting set somewhere and not being cleared, but I'm not sure where.
>
> Thank you,
> Patrick
>
>
>   



Replies:
Re: state notation code flags Patrick Thomas
Re: state notation code flags Patrick Thomas
References:
state notation code flags Patrick Thomas
RE: state notation code flags Mark Rivers
Re: state notation code flags Patrick Thomas

Navigate by Date:
Prev: Re: state notation code flags Patrick Thomas
Next: propagating value upward at init Emmanuel Mayssat
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017 
Navigate by Thread:
Prev: Re: state notation code flags Patrick Thomas
Next: Re: state notation code flags Patrick Thomas
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017 
ANJ, 31 Jan 2014 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·