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  2009  2010  2011  2012  2013  <20142015  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  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Incorrect Timestamp in aSubRecord
From: Mark Rivers <[email protected]>
To: "'Bruce Hill'" <[email protected]>, "[email protected]" <[email protected]>
Date: Fri, 21 Nov 2014 01:48:58 +0000
Hi Bruce,

I just looked at the code in the aoRecord.c and calcoutRecord.c for example.  They also call recGblGetTimeStamp() after calling writeValue and execOutput respectively, i.e. after any writing to the output link.  This is the way all EPICS records are written, i.e. the following sequence:

writeOutputs()
recGblGetTimeStamp();
checkAlarms();
monitor();
recGblFwdLink();

I don't think the behavior you are seeing is unique to the aSubRecord, it is the way all records that write to outputs work.  Have you tried the same thing with a calcOut record?

Mark


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Bruce Hill
Sent: Thursday, November 20, 2014 5:47 PM
To: [email protected]
Subject: Incorrect Timestamp in aSubRecord

I recently traced a timestamp issue on an older ioc using genSub
to when genSubRecord.c calls recGblGetTimeStamp(), and I think
the same problem exists in aSubRecord.c in 3.14.12.

In our environment, epics timestamps from our EVR's have an embedded
pulseId in the nsec field, which we use to identify which beam pulse
values are derived from.     When we use a genSub or aSub record to
do computations related to a beam pulse, that record will either get
it's timestamp via TSE -2 in the records process function or via a TSEL
link to a waveform timestamped w/ the currect pulse ID.

I found that it worked correctly for TSE -2, as the user process function
sets the timestamp.   However, when using TSEL to get the genSub or aSub
timestamp, I'd get stale timestamps on any output links which used
a TSEL back to the genSub or aSub record.

The reason this happens is that recGblGetTimeStamp() is getting called
after the output links are processed, and the TSEL based output records
thus grab the aSub timestamp before recGblGetTimeStamp is called.

Has anyone else seen this problem, or know of some reason why we
shouldn't be calling recGblGetTimeStamp before processing the output records?

Thanks!
- Bruce

P.S.  Here's my patch for this:
--- src/rec/aSubRecord.c        (revision 19727)
+++ src/rec/aSubRecord.c        (revision 19728)
@@ -266,6 +266,7 @@
          return 0;

      prec->pact = TRUE;
+    recGblGetTimeStamp(prec);

      /* Push the output link values */
      if (!status) {
@@ -276,7 +277,6 @@
                  (&prec->neva)[i]);
      }

-    recGblGetTimeStamp(prec);
      monitor(prec);
      recGblFwdLink(prec);
      prec->pact = FALSE;



Replies:
Re: Incorrect Timestamp in aSubRecord Bruce Hill
References:
Incorrect Timestamp in aSubRecord Bruce Hill

Navigate by Date:
Prev: RE: Beckhoff EtherCAT Motion Control [SEC=UNCLASSIFIED] LYNCH, Damien
Next: Re: Incorrect Timestamp in aSubRecord Hovanes Egiyan
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Incorrect Timestamp in aSubRecord Bruce Hill
Next: Re: Incorrect Timestamp in aSubRecord Bruce Hill
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 17 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·