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  <20092010  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  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: state notation code flags
From: Patrick Thomas <[email protected]>
To: Mark Rivers <[email protected]>
Cc: [email protected]
Date: Thu, 01 Oct 2009 15:20:04 -0700
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: [email protected] on behalf of Patrick Thomas
Sent: Wed 9/30/2009 10:35 PM
To: [email protected]
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 Mark Rivers
References:
state notation code flags Patrick Thomas
RE: state notation code flags Mark Rivers

Navigate by Date:
Prev: FW: EPICS Python client application survey michael.abbott
Next: RE: state notation code flags Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: state notation code flags Mark Rivers
Next: RE: state notation code flags Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 31 Jan 2014 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·