Argonne National Laboratory

Experimental Physics and
Industrial Control System

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

Subject: RE: snc/seq enhancements ... local-variable access
From: "Laznovsky, Michael" <lazmo@slac.stanford.edu>
To: "Tim Mooney" <mooney@aps.anl.gov>
Cc: <tech-talk@aps.anl.gov>
Date: Thu, 6 Apr 2006 11:09:21 -0700
Hi- while this might be fairly easy to do given the way seq does its 
internal bookkeeping, seems to me it would muck up the relatively clean 
DFA state-machine model we have now.  I've handled cases like you describe 
(e.g. an "ABORT" button that allows interrupting a long series of states) 
by adding extra intermediate states, as in:

	state A
	{
		entry {
			flag = OK;
		}
		when (<event>) {
			if (trouble) flag = BUBU;
		} state A_check
	}

	state A_check
	{
		when (flag == BUBU) {		/* uh oh! */
		} state A_abort
	
		when () {
		} state B				/* next state */
	}

The "out-of-order" transitions I mentioned referred to a future debugging 
environment, where it might be useful to interactively force a transition 
to an arbitrary state.

Mike


-----Original Message-----
From: Tim Mooney [mailto:mooney@aps.anl.gov] 
Sent: Tuesday, April 04, 2006 5:30 AM
To: Laznovsky, Michael
Cc: tech-talk@aps.anl.gov
Subject: Re: snc/seq enhancements ... local-variable access

Single stepping would be very cool.  I'm not sure what you mean by "forced
out-of-order transitions", but it sounds promising.

The improvement I've heard people wish for most is syntax that would allow
them to change the next state from within a when clause.  Is this what you
mean, or is this anywhere on the list of planned improvements?

To be clear, I'm thinking it would be nice to be able to write something
like this:

     when (<event>) {
         if (trouble) nextState = B /* go there after when clause is done */
     } state A                      /* default if 'nextState' is not set */

I've looked at the code to see if this is even a possibility, and aside from
one thing, it does seem achievable.  The one thing is that the sequencer sets
up event flags for the next state before it even starts executing a when clause.
I don't know if this is really necessary, though.

-- 
Tim Mooney (mooney@aps.anl.gov) (630)252-5417
Beamline Controls & Data Acquisition Group
Advanced Photon Source, Argonne National Lab.


Replies:
Re: snc/seq enhancements ... local-variable access Eric Norum

Navigate by Date:
Prev: Re: Ethernet/IP Device Support and CompactLogix Kay-Uwe Kasemir
Next: pvPut() in entry()? Laznovsky, Michael
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017 
Navigate by Thread:
Prev: RE: snc/seq enhancements ... local-variable access Chestnut, Ronald P.
Next: Re: snc/seq enhancements ... local-variable access Eric Norum
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017 
ANJ, 02 Sep 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·