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  <20132014  2015  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  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: quadEM R4-0 now available
From: Mark Rivers <[email protected]>
To: "[email protected]" <[email protected]>, "[email protected]" <[email protected]>
Date: Tue, 12 Mar 2013 17:41:19 +0000
Folks,

quadEM R4-0 is now available.  

This is from the release notes:

************************************
Major update of the module. The device-dependent classes (AHxxx, APS_EM) have not changed significantly. However the base quadEM class has been rewritten. In R3-x the quadEM base class worked as follows: 

  - The ai records for the 11 parameters (Current[1-3],Sum[12,34,1234],Diff[12,34], and Position[12,34]) were computed using the asynInt32Average device support. 

  - This meant that there were 11 callbacks each time a new value came from the electrometer, or more than 70,000 callbacks per second under some circumstances. This was a significant CPU load. 

  - This approach produced average values, but it did not produce other useful statistics like the standard deviation, histogram of values, etc. 

  - There was no good way to stream all of the readings to a disk file for an arbitrarily long time. The TimeSeries support was limited to a fixed time length, limited by available memory. 

R4-0 addresses these problems as follows: 
  - The quadEM base class is now derived from the asynNDArray class in areaDetector, rather than directly from asynPortDriver. 

  - The data from the device-dependent drivers are now first placed into a ring buffer whose size is defined in the constructor. 

  - There is a new PV called AveragingTime that determines the time period over which to average the readings. The AveragingTime divided by the SampleTime determines the number of samples to average, NumAverage_RBV. When this number of samples have been accumulated in the ring buffer a separate thread copies them to a set of NDArrays and calls any registered plugins. 

  - There is a separate NDPluginStats plugin loaded for each of the 11 data values. This plugin receives an array of dimensions [NumAverage_RBV]. This plugin computes not only the mean (as in the previous version), but also the standard deviation, histogram of values, etc. 

  - One of the NDArrays contains all of the data values, and has dimensions [11,NumAverage_RBV]. This array can be passed to any of the file writing plugins, which can thus stream all of the data to disk for arbitrarily long time periods. 

  - An NDStdArrays plugin is also loaded. This can be used to pass all of the data [11,NumAverage_RBV] or any of the individual data arrays to any channel access client. 

  - This new approach provides much more information and flexibility. But it also significantly reduces the number of callbacks. For example if the averaging time is 1 second the number of callbacks is reduced from thousands per second to 12 per second, because the data are being passed in arrays. 

  - The computationally intensive work of calculating the statistics is now being done in plugins, so can be done in different threads, each potentially running in a separate core on modern CPUs. 
************************************

The home page is here:
http://cars9.uchicago.edu/software/epics/quadEM.html

The documentation is here:
http://cars9.uchicago.edu/software/epics/quadEMDoc.html

The release notes are here:
http://cars9.uchicago.edu/software/epics/quadEMReleaseNotes.html

Let me know of any problems or suggestions.

Mark




Navigate by Date:
Prev: Re: CSS/RDB Archiver Martin Konrad
Next: Re: mbboDirect record questions Vikram Bhagat
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: CSS/RDB Archiver Martin Konrad
Next: asynInt32 pass 2 value Vikram Bhagat
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 20 Apr 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·