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: asyn reading to waveform records
From: "Szalata, Zenon M." <zms@slac.stanford.edu>
To: Mark Rivers <rivers@cars.uchicago.edu>, "'Rod Nussbaumer'" <bomr@triumf.ca>, epics Techtalk <tech-talk@aps.anl.gov>
Date: Thu, 2 Feb 2012 16:47:38 -0800
The TEK scope (TDS 3054C) asynPortDriver IOC is a work in progress, still. It is a fun project and gets put on the shelf in favor of more important projects.  Most of the basic controls are in place and controls and waveforms can be displayed on EDM screen.  The trace data is readout from the scope in 500 byte array binary format.  The trace data are processed in the device driver where the vertical offset and position are folded in and placed in an EPICS waveform record, DTYP=asynFloat32ArrayIn.

I have done some performance measurements.
Maximum rate waveform transfer is a shade over 6/sec when one trace is on.
Max rate with two traces on is about 3.5/sec for both traces or 7 waveforms/sec.
Finally max rate with all four traces on is about 1.8/sec for all four traces.
CPU used by the IOC is 0.3%.  The scope is connected to a private Gigabit subnet shared with a few other devices.  One of these is Prosilica digital camera.  When I start the Prosilica IOC and take images from it at about 20Hz, the waveform rate from the scope is unaffected.  The Prosilica IOC is using about 28% CPU.  I interpret this that my subnet bandwidth is not an issue.  So, it must be that the scope can't handle higher rates than I observe.
Anyway, some day I will have it finished.

Zen

> -----Original Message-----
> From: tech-talk-bounces@aps.anl.gov [mailto:tech-talk-bounces@aps.anl.gov]
> On Behalf Of Mark Rivers
> Sent: Wednesday, February 01, 2012 3:06 PM
> To: 'Rod Nussbaumer'; epics Techtalk
> Subject: RE: asyn reading to waveform records
> 
> I believe that Zen Szalata from SLAC has also recently written Tektronix scope
> support based on asynPortDriver.
> 
> Mark
> 
> 
> -----Original Message-----
> From: tech-talk-bounces@aps.anl.gov [mailto:tech-talk-bounces@aps.anl.gov]
> On Behalf Of Rod Nussbaumer
> Sent: Wednesday, February 01, 2012 1:18 PM
> To: epics Techtalk
> Subject: asyn reading to waveform records
> 
> Hi All.
> 
> As a fallback alternative to my earlier problem reading oscilloscope
> waveforms with StreamDevice (and to potentially reveal something about
> the original problem), I am trying to use asyn to read the waveform into
> a waveform record directly (without the aid of StreamDevice).
> 
> If I use the waveform record with FTVL=UCHAR or FTVL=CHAR, and
> DTYP=asynOctetRead, I am able to acquire the scope binary-formatted data
> into the waveform record, and I seem to be able to get the performance
> that I require. However, this method gives me byte oriented data, and
> the 'scope is sending 16-bit signed data. So, I tried using the
> FTVL=SHORT, or FTVL=USHORT and DTYP set to any of the
> 'asynIntXXArrayWfIn' data types. This results in iocInit reporting :
> 
> > devAsynInt16Array::initCommon, TEST:SCOPE1:CURVE find asynInt16Array
> interface failed
> 
> Some combinations of FTVL & DTYP fail with messages like:
> 
> > devAsynInt8Array::initCommon, TEST:SCOPE1:CURVE field type must be
> SIGNED_TYPE or UNSIGNED_TYPE
> 
> My application dbd file contains:
> 
> >
> device(waveform,INST_IO,asynWfOctetCmdResponse,"asynOctetCmdResponse
> ")
> > device(waveform,INST_IO,asynWfOctetWriteRead,"asynOctetWriteRead")
> > device(waveform,INST_IO,asynWfOctetRead,"asynOctetRead")
> > device(waveform,INST_IO,asynWfOctetWrite,"asynOctetWrite")
> > device(waveform,INST_IO,asynInt8ArrayWfIn,"asynInt8ArrayIn")
> > device(waveform,INST_IO,asynInt8ArrayWfOut,"asynInt8ArrayOut")
> > device(waveform,INST_IO,asynInt16ArrayWfIn,"asynInt16ArrayIn")
> > device(waveform,INST_IO,asynInt16ArrayWfOut,"asynInt16ArrayOut")
> > device(waveform,INST_IO,asynInt32ArrayWfIn,"asynInt32ArrayIn")
> > device(waveform,INST_IO,asynInt32ArrayWfOut,"asynInt32ArrayOut")
> > device(waveform,INST_IO,asynFloat32ArrayWfIn,"asynFloat32ArrayIn")
> > device(waveform,INST_IO,asynFloat32ArrayWfOut,"asynFloat32ArrayOut")
> > device(waveform,INST_IO,asynFloat64ArrayWfIn,"asynFloat64ArrayIn")
> > device(waveform,INST_IO,asynFloat64ArrayWfOut,"asynFloat64ArrayOut")
> 
> 
> As yet another possible fallback, is there a way to coerce the
> byte-oriented data that I acquire to be 16-bit word data, perhaps using
> a subarray record in some obscure way? I probably do need to use a
> subarray record anyway, as there is a 6-byte header on the waveform,
> which I need to drop.
> 
> For the record, this is EPICS 3.14.11 and Asyn R4-13 on x86 Linux.
> 
> Thanks.
> 
> Rod Nussbaumer
> ISAC Controls, TRIUMF
> Vancouver, Canada.
> 
> 



References:
asyn reading to waveform records Rod Nussbaumer
RE: asyn reading to waveform records Mark Rivers

Navigate by Date:
Prev: RE: mcaR7-0 Szalata, Zenon M.
Next: RE: errors in vxWorks-6.9/target/h(eader) files when building base 3.14.12.1 Vesna Samardzic-Boban
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: asyn reading to waveform records Mark Rivers
Next: CARS modbus output record initialization John Dobbins
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 ·