g+
g+ Communities
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  <20122013  2014  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014 
<== Date ==> <== Thread ==>

Subject: Re: asynPortDriver
From: Andrew Johnson <anj@aps.anl.gov>
To: tech-talk@aps.anl.gov
Date: Tue, 24 Jul 2012 17:20:44 -0500
Hi Zenon,

A couple of comments...

On 2012-07-24 Szalata, Zenon M. wrote:
> 
> My diagnostic mechanism consists of two sets of EPICS records.
> The data are passed from the device driver as an array of 17 integers.  The
>  first is a gate counter, which is incremented just before it is put in the
>  array.  This counter is followed by 16 ADC values.  The array is received
>  in a waveform record.  The waveform record triggers processing of an aSub
>  record and a chain of sub array records where the ADC values are extracted
>  and put into ai records. The aSub record compares the value of the gate
>  counter with the value of gate counter from a previous event.  If this
>  value is not greater by 1 than the previous value, it prints a message,
>  which shows this and previous values.

If you are looking for high performance a chain of sub-array records is not 
going to be terribly efficient.  Much better would be to use the aSub itself 
to split up your array into 16 individual output fields VALx and point the 
OUTx links to the individual ai records.

> Here is a typical output:
> 
> asubMiss: Something wrong: n=53385,lastn=53383
> asubMiss: Something wrong: n=53385,lastn=53385
> subASMissing: got a missing ++++++++++++++++
> a=53385.000,b=0.000,c=4294967295.000,d=1.000,e=53383.000,f=1.000,g=1.000
> k=2.000,l=1.000,val=2.000
> subASMissing: trigger number this=53385.0, prev=53385.0
> 
> The first two messages come from the aSub record, the next three come from
>  the sub record. I am not sure how to interpret the presence of the second
>  of the two messages from the aSub record and the third from the sub
>  record.  It looks as if the waveform record processed twice when the
>  problem occurred.

Actually I would read the first asubMiss as somehow having its input array 
overwritten while it was still processing for n=53384, then immediately 
getting retriggered for the actual n=53385.

How is your waveform record connected to the aSub record, i.e. what causes the 
aSub to process after the waveform record processes?

- Andrew
-- 
Never interrupt your enemy when he is making a mistake.
-- Napoleon Bonaparte

Replies:
RE: asynPortDriver Szalata, Zenon M.
References:
asynPortDriver Szalata, Zenon M.
RE: asynPortDriver Mark Rivers
RE: asynPortDriver Szalata, Zenon M.

Navigate by Date:
Prev: RE: asynPortDriver Szalata, Zenon M.
Next: RE: asynPortDriver Szalata, Zenon M.
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014 
Navigate by Thread:
Prev: RE: asynPortDriver Szalata, Zenon M.
Next: RE: asynPortDriver Szalata, Zenon M.
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICSv4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·