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: "Dalesio, Leo" <[email protected]>
To: "Andrew C. Starritt" <[email protected]>, "Jovan Loncar" <[email protected]>
Cc: Tech Talk <[email protected]>
Date: Wed, 7 Apr 2010 20:15:45 -0400
Title: RE: create arrays in EDM

How do you decide what belongs to the coherent set?
We are working on building this functionality native into the PVData and PVAccess projects that Marty and Matej have been doing for an extension to what version 3 supports. We are building some tools around this functionality as well. Have you done anything special with plotting this?
We will present this at the upcoming EPICS meeting. If you are there it would be great to hear about your experience with this.
Bob


-----Original Message-----
From: [email protected] on behalf of Andrew C. Starritt
Sent: Wed 4/7/2010 8:06 PM
To: Jovan Loncar
Cc: Tech Talk
Subject: RE: create arrays in EDM

Jovian,

   I wanted to create four 100-tuple array PVs from four sets of 100 scalar PVs (for use with our
100 element detector, the four array PVs to be read by the sscan record), so I wrote a "concat"
record that that marshals a set input PVs into an array PV.

   The inputs can be scalers or array PVs (or even constant scaler values); and a hierarchy of cancat
records can be used to if needs be.

  I can mail a tar ball of the code (includes some ocumentaion) on request.

Regards

Andrew Starritt
Principal Controls Engineer

Australian Synchrotron
800 Blackburn Road, Clayton, Victoria 3168, Australia
Tel: + 61 3 8540 4164    Fax: + 61 3 8540 4200
E-mail: [email protected]<mailto:[email protected]>



From: [email protected] [mailto:[email protected]] On Behalf Of Ned Arnold
Sent: Wednesday, April 07, 2010 12:17 AM
To: Jovan Loncar
Cc: Tech Talk
Subject: Re: create arrays in EDM


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

<br>This message and any attachments may contain proprietary or confidential information. If you are not the intended recipient or you received the message in error, you must not use, copy or distribute the message. Please notify the sender immediately and destroy the original message. Thank you.


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
Re: create arrays in EDM Ned Arnold
RE: create arrays in EDM Andrew C. Starritt

Navigate by Date:
Prev: RE: create arrays in EDM Andrew C. Starritt
Next: RE: cac_select_io Segmentation fault Al Honey
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 Andrew C. Starritt
Next: Re: create arrays in EDM Andrew Johnson
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 ·