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

Subject: Re: create arrays in EDM
From: Ned Arnold <[email protected]>
To: Jovan Loncar <[email protected]>
Cc: Tech Talk <[email protected]>
Date: Tue, 6 Apr 2010 09:16:31 -0500

I suggest you write a sequence program (SNL) that connects to all the 200 numbers and create waveforms for X and Y axis.  You can assign elements within an array to different <scalar> PVs:

assign  xValues[0]  to "L0:P2:BPM.XPOS";
assign  yValues[0]  to "L0:P2:BPM.YPOS";
assign  iValues[0]  to "L0:P2:BPM.VAL";
assign  beamDetect[0]  to "L0:P2:BPM.NBFG";

assign  xValues[1] to "L1:P0:BPM.XPOS";
assign  yValues[1] to "L1:P0:BPM.YPOS";
assign  iValues[1] to "L1:P0:BPM.VAL";
assign  beamDetect[1] to "L1:P0:BPM.NBFG";

You can also implement any additional processing that might be required (invalid data, etc).

I would show you a nice beam trajectory where the BPMs reside on different IOCs ... but the machine isn't running at them moment.  :( 

   Ned




On Apr 6, 2010, at 9:04 AM, Jovan Loncar wrote:

On 04/03/2010 02:10 PM, Dalesio, Leo wrote:

It is not totally clear what the goal is......

For collecting scalars into arrays - the Compress record already does this. Bad name, I know, but it also compresses waveform records. So if the input is an array, it does successive averages or filters high,low,average. If the input is a scalar, it is a circular buffer. If all you want to do is take a scalar, and create a histogram, there is a histogram record.

The subroutine record - as Stephanie points out - also gives you a way to take one or several arrays, and manipulate them to create a result (or several results)

If you are trying to marshal many scalars into an array, then there are more questions before answers. Do you need location? Status for each channel? Time stamp or time difference from some reference? Does one channel become the reference? We are working on this type of support to create a suite of tools right now at NSLS. Hopefully, we have some progress to report at the May meeting in Aix.


Firstly i would like to thank you all for the responses.

I re-read my first email and i forgot to mention that the scalars i am trying to put into an array are
not located on the same machine.

For an example:
there are 200 computers (machines) each running their own EPICS server connected
in the same network. I am able to read the temperatures of each through an EPICS PV (fo example using caget).
Now, on another computer (in the same network) in the administration room i would like to monitor all these
temperatures using EDM (or if it is not possible with EDM some other visualization tool).
But the usual way of displaying this, a box changing colors (red, yellow, green) is not
enough and also displaying 200 numbers is not user-friendly for the administrator.
What i would like to achieve is to get all these temperatures and collect them into
an array and display them onto a X-Y Graph. This way the administrator would be able to see
what is the temperature and also how much it is drifting from desired/average/reference. The x-axis are the machines depending on
their own index number, which is fixed. So Machine001 would always be the first in the array (to display), which means
that the location is very important.

Time stamp and time differences are not crucial, they could be a nice feature but not important at the moment.
Since all the readings should be independent the timestamp is not important.
 
One option for the reference could be the average from all, but this one would be selectable.
The administrator would choose which is the desired temperature of the specific machine depending
on the position of the machine, the usage of the cooling system etc.


If you only need a plug in EDM, look at the CALC example. If has channel access on one side and creates a result on the other side.

Bob


I will take a look if CALC can collect different scalars and create an array.
As i understood the CALC is limited with the number of variables it can process.

Also if i understand Stephanie correctly one variant would be to have a softIOC running on the
administrators computer which would collect all the scalars and create the waveform record.
The EDM would display the updated waveform record. This sounds as a very good solution
to the problem.

The suggestion made by Matt Newville to use of EpicsCA module in python is also a very good alternative.
It will definitely be useful for some other work too. Thanks for pointing this one out for me.

I hope the above description gives a general idea what i want to do. Maybe i have mislead some of you
when i mentioned histograms, but that was one of the associations that popped in my mind.


Regards,
Jovan


Replies:
RE: create arrays in EDM Andrew C. Starritt
References:
create arrays in EDM Jovan Loncar
RE: create arrays in EDM Allison, Stephanie
RE: create arrays in EDM Dalesio, Leo
Re: create arrays in EDM Jovan Loncar

Navigate by Date:
Prev: Re: create arrays in EDM Jovan Loncar
Next: RE: Help Request: Setting up NIXI-1042/NI-MXI-4/DXP-XMAP withdxpStandalone_2-10 David Ehle
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: create arrays in EDM Jovan Loncar
Next: RE: create arrays in EDM Andrew C. Starritt
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Sep 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·