Skip to content

07_01_ControlSystemStudio

César García edited this page Jun 19, 2020 · 5 revisions

Control System Studio

DataBrowser

XML-RPC Service

This document is mostly an extract from [1][2], so we recommend reviewing the document.

Method Description
archiver.info description
archiver.archives description
archiver.names Description
archiver.values description

archiver.info

A the fields

Field (node) Description
ver Version number. The first released software uses ’1’.
desc Cute description that one can print
how Array of strings with a description of the request methods supported for ’how’ in the archiver.values() call.
stat Array of strings with a description of the “status” part of the values returned by the archiver.values() call
sevr Array of structures with a description of the “severity” part of the values returned by the archiver.values() call

The XML-RPC archiver.info request

<?xml version="1.0"?>
  <methodCall>
  <methodName>archiver.info</methodName>
  <params></params>
  </methodCall>

The XML-RPC archiver.info response

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
 <methodName>archiver.info</methodName>
 <params>
  <param><value><struct>
  <member>
   <name>ver</name>
   <value><i4>1</i4></value>
  </member>
  <member>
   <name>desc</name>
   <value><string>Merlot IoTDB Connector</string></value>
  </member>
  <member>
   <name>how</name>
   <value><array><data>
        <value><string>raw</string></value>
        <value><string>spreadsheet</string></value>
        <value><string>averaged</string></value>
        <value><string>plot binning</string></value>
        <value><string>linear</string></value>
   </data></array></value>
  </member>
  <member>
   <name>stat</name>
   <value><array><data>
        <value><string>NO ALARM</string></value>
        <value><string>READ ALARM</string></value>
        <value><string>WRITE ALARM</string></value>
        <value><string>HIHI ALARM</string></value>
        <value><string>LOLO ALARM</string></value>
        <value><string>LOW ALARM</string></value>
        <value><string>STATE ALARM</string></value>
        <value><string>UDF ALARM</string></value>
   </data></array></value>
  </member>
  <member>
   <name>sevr</name>
   <value><array><data>
    <value><struct>
     <member><name>num</name><value><i4>0</i4></value></member>
     <member><name>sevr</name><value><string>NO ALARM</string></value></member>
     <member><name>has_value</name><value><boolean>1</boolean></value></member>
     <member><name>txt_stat</name><value><boolean>1</boolean></value></member>
    </struct></value>
    <value><struct>
     <member><name>num</name><value><i4>1</i4></value></member>
     <member><name>sevr</name><value><string>MINOR</string></value></member>
     <member><name>has_value</name><value><boolean>1</boolean></value></member>
     <member><name>txt_stat</name><value><boolean>1</boolean></value></member>
    </struct></value>
    <value><struct>
     <member><name>num</name><value><i4>2</i4></value></member>
     <member><name>sevr</name><value><string>MAJOR</string></value></member>
     <member><name>has_value</name><value><boolean>1</boolean></value></member>
     <member><name>txt_stat</name><value><boolean>1</boolean></value></member>
    </struct></value>
    <value><struct>
     <member><name>num</name><value><i4>3</i4></value></member>
     <member><name>sevr</name><value><string>INVALID</string></value></member>
     <member><name>has_value</name><value><boolean>1</boolean></value></member>
     <member><name>txt_stat</name><value><boolean>1</boolean></value></member>
    </struct></value>
    <value><struct>
     <member><name>num</name><value><i4>3968</i4></value></member>
     <member><name>sevr</name><value><string>EST_REPEAT</string></value></member>
     <member><name>has_value</name><value><boolean>1</boolean></value></member>
     <member><name>txt_stat</name><value><boolean>0</boolean></value></member>
    </struct></value>
    <value><struct>
     <member><name>num</name><value><i4>3856</i4></value></member>
     <member><name>sevr</name><value><string>REPEAT</string></value></member>
     <member><name>has_value</name><value><boolean>1</boolean></value></member>
     <member><name>txt_stat</name><value><boolean>0</boolean></value></member>
    </struct></value>
    <value><struct>
     <member><name>num</name><value><i4>3904</i4></value></member>
     <member><name>sevr</name><value><string>DISCONNECT</string></value></member>
     <member><name>has_value</name><value><boolean>0</boolean></value></member>
     <member><name>txt_stat</name><value><boolean>1</boolean></value></member>
    </struct></value>
    <value><struct>
     <member><name>num</name><value><i4>3872</i4></value></member>
     <member><name>sevr</name><value><string>ARCHIVE_OFF</string></value></member>
     <member><name>has_value</name><value><boolean>0</boolean></value></member>
     <member><name>txt_stat</name><value><boolean>1</boolean></value></member>
    </struct></value>
    <value><struct>
     <member><name>num</name><value><i4>3848</i4></value></member>
     <member><name>sevr</name><value><string>ARCHIVE_DISABLE</string></value></member>
     <member><name>has_value</name><value><boolean>0</boolean></value></member>
     <member><name>txt_stat</name><value><boolean>1</boolean></value></member>
    </struct></value>
   </data></array></value>
  </member>
  </struct></value></param>
 </params>
</methodResponse>

archiver.archives

Field (node) Description
key A numeric key that is used by the following routines to select the archive
name A description of the archive that one could e.g. use in a drop-down selector in a GUI application for allowing the user to select an archive.
path The path to the index file, valid on the file system where the data server runs. It might be meaningful to a few users who want to know exactly where the data resides, but it is seldom essential for XML-RPC clients to look at this

The XML-RPC archiver.archives request

 <?xml version="1.0"?>
 <methodCall>
   <methodName>archiver.archives</methodName>
   <params></params>
 </methodCall>

The XML-RPC archiver.archives reponse

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
 <methodName>archiver.info</methodName>
 <params>
  <param><value><array><data>
    <value><struct>
     <member><name>key</name><value><i4>1</i4></value></member>
     <member><name>name</name><value><string>grupo 1</string></value></member>
     <member><name>path</name><value><string>root.site</string></value></member>
    </struct></value>
    <value><struct>
     <member><name>key</name><value><i4>2</i4></value></member>
     <member><name>name</name><value><string>grupo 2</string></value></member>
     <member><name>path</name><value><string>root.ln</string></value></member>
    </struct></value>
    <value><struct>
     <member><name>key</name><value><i4>3</i4></value></member>
     <member><name>name</name><value><string>grupo 3</string></value></member>
     <member><name>path</name><value><string>root.sgcc</string></value></member>
    </struct></value>
  </data></array></value></param>
 </params>
</methodResponse>

archiver.names

Request

Field (node) Description
key
pattern
Field (node) Description
name
start_sec
start_nano
end_sec
end_nano

The XML-RPC archiver.names request

 <?xml version="1.0"?>
 <methodCall>
  <methodName>archiver.names</methodName>
  <params>
   <param>
    <value><int>3</int></value>
   </param>
   <param>
    <value>.*3.*</value>
   </param>
  </params>
 </methodCall>

archiver.values

Field (node) Type Description
key int32 A numeric key that is used by the following routines to select the archive
how int32 The parameter ”how” determines how the raw values of the various channels get arranged to meet the requested time range and count
name string The channel name. Result[i].name should match name[i] of the request, so this is a waste of electrons, but it’s sure convenient to have the name in the result, and we’re talking XML-RPC, so forget about the electrons.
meta structure The meta information for the channel.
type int32 Describes the data type of this channel’s value
count int32 Describes the array size of this channel’s values, using 1 for scalar values. Note that even scalar values are returned as an array with one element!
values structure This is an array where each entry is a structure

Meta information

Field (node) Type Description
type int32
states string[]
disp_high double
disp_low double
alarm_high double
alarm_low double
warn_high double
warn_low double
prec int
units string

Values structure

Field (node) Type Description
stat int32
sevr int32
secs int32
nano int 32
value type

The type info

Name Value Description
string 0
enum 1
int 2
double 3
Name Value Description
raw 0 Get raw data from timeseries, starting w/ ’start’, up to either ’end’ time or max. ’count’ samples
spreadsheet 1 Get data that is filled or staircase-interpolated, starting w/ ’start’, up to either ’end’ time or max. ’count’ samples (see 2.7.3). For each channel, the same number of values is returned. The time stamps of the samples match accross channels, so that one can print the samples for each channel as columns in a spreadsheet. If a spreadsheet cell is empty because the channel does not have any useful value for that point in time, a status/severity of UDF/INVALID is returned (Tables 5.2 and 5.1).
averaged 2 Get averaged data from the archive, starting w/ ’start’, up to either ’end’ time or max. ’count’ samples (see 2.7.4). The data is averaged within bins whose size is determined by of (end-start)/count, so you should expect to get close to ’count’ values which cover ’start’ to ’end’. Again refer to section 2.7
plot binning 3 Uses the plot-binning method based on ’count’ bins.
linear 4 Get linearly interpolated data from the archive, starting w/ ’start’, up to either ’end’ time or max. ’count’ samples (see 2.7.4). The data is interpolated onto time slots which are multiples of (end-start)/count, so you should expect to get close to ’count’ values which cover ’start’ to ’end’. Again refer to section 2.7.

Links

  1. Channel Archiver Manual. https://www.slac.stanford.edu/grp/cd/soft/epics/extensions/ChannelArchiver/
  2. EPICS Channel Archiver Manual. https://www.slac.stanford.edu/grp/cd/soft/epics/extensions/ChannelArchiver/manual.pdf

Sidebar

Clone this wiki locally