Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017 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
<== Date ==> <== Thread ==>

Subject: Sequencer remote pvPut CA delay (specified behavior?)
From: Tobin Weber <webert2@washington.edu>
To: <tech-talk@aps.anl.gov>
Date: Mon, 13 Feb 2017 13:53:56 -0800
Hello EPICS Developers,

First off all, I'm an EPICS novice, so my apologies if this question is
silly. I recently implemented a sequencer on a small machine here at the
University of Washington. I noticed some behavior that I'm having
trouble understanding. I have a work around, but I just want to make
sure this is intended behavior. If it isn't, and I've got something
screwed up, I'll just keep trouble shooting and try to figure what I'm
doing wrong. Basically, when the sequencer does a "pvPut" to a PV that
is located in an IOC that is not local to the machine, the write doesn't
appear to happen until after a subsequent "pvPut" is performed on a
local PV.

For example, running the template in,
epics/template/makeBaseApp/top/example

and modifying the snsExample.stt file to read: 

user@pc:~/example$ more exampleApp/src/sncExample.stt 
program sncExample

int local_pv;
int remote_pv;

assign local_pv to "Local:PV";
assign remote_pv to "Remote:PV";

monitor local_pv;
monitor remote_pv;

ss ss1 {
    state init {
        when (delay(5)) {
            printf("sncExample: Startup delay over\n");
        } state low
    }

    state low {
    
        when (delay(5)) {

            // Setting a remote PV to 1
            remote_pv=1;
            pvPut(remote_pv);

            // Waiting for 5 seconds
            epicsThreadSleep(5.0);

            // Setting a local PV to 1
            local_pv=1;
            pvPut(local_pv);
                        
        } state high
    }
    state high {
        when (0) {
        } state low
    }
}

with a "bo" record "Local:PV" running in local database, and a "bo"
record, "Remote:PV" on a different PC, here is what I observed with
camonitor when I ran the sequencer:

user@pc:~/EPICS_Apps/example/exampleApp/src$ camonitor Remote:PV
Local:PV
Local:PV  2017-02-08 13:58:41.904252 0  
Remote:PV 2017-02-08 13:58:31.645527 0  
Local:PV  2017-02-08 13:58:56.939562 1  
Remote:PV 2017-02-08 13:58:56.940262 1

It seems like the PV located on a different machine, "Remote:PV", does
not get written until after "Local:PV" is written. It should be 5
seconds before. The behavior is the same if states are changed in
between PV puts.

Is that standard behavior?

Thanks everyone,

Toby



Replies:
Re: Sequencer remote pvPut CA delay (specified behavior?) Andrew Johnson

Navigate by Date:
Prev: Re: VAL field in Motor record Default unit Joey Thai
Next: Re: Sequencer remote pvPut CA delay (specified behavior?) Andrew Johnson
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
Navigate by Thread:
Prev: RE: Basler HD Camera device support tom.cobb
Next: Re: Sequencer remote pvPut CA delay (specified behavior?) Andrew Johnson
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
ANJ, 14 Feb 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·