Hi Andrew,
You are absolutely right that aSub record is the way to go. The reason for the way I have it is somewhat historic.
The aSub record is processed by a FLNK in the waveform record. In fact, since this now became a test IOC, I will simplify it further to eliminate the sub array records.
Thank you,
Zen
> -----Original Message-----
> From: Andrew Johnson [mailto:[email protected]]
> Sent: Tuesday, July 24, 2012 3:21 PM
> To: [email protected]
> Cc: Szalata, Zenon M.; Mark Rivers
> Subject: Re: asynPortDriver
>
> 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.
> 0
> > 00
> > 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
- References:
- asynPortDriver Szalata, Zenon M.
- RE: asynPortDriver Mark Rivers
- RE: asynPortDriver Szalata, Zenon M.
- Re: asynPortDriver Andrew Johnson
- Navigate by Date:
- Prev:
Re: asynPortDriver Andrew Johnson
- Next:
RE: asynPortDriver Mark Rivers
- 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
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: asynPortDriver Andrew Johnson
- Next:
RE: asynPortDriver Mark Rivers
- 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
2018
2019
2020
2021
2022
2023
2024
|