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
<2010>
2011
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
<2010>
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|