Upload
brooke-holt
View
217
Download
0
Embed Size (px)
Citation preview
History Server & API
Christopher Larrieu
Jefferson Laboratory
Goals
• Simple interface to archived data
• Efficient access to distributed data sources
• Useful data manipulation capabilities
• Portable integration with existing EPICS tools
CADataStore: abstract interface to read CA data from file, db, etc.• archive
– Provides channel listing, creates data range objects
• range– Describes data for one channel on time range
• channel_state– Complete information for one channel associated with
one point in time.
• range_iterator– Access sequential channel states by updating
channel_state
Server Specialization
• Server accesses CA archive via CADataStore object• Different derived classes for different archives
– LANL_DataStore wraps around Kay’s archive API– JLAB_DataStore wraps around JLAB archive API– RDB_DataStore ?– *_DataStore
• Derived classes compiled as shared object code, loaded at run-time.– Narrow interface eases specialization, but captures
essential functionality.
Server Schematic
LANL_DataStore
Channel Archiver API
History ServerHistory
DataClient
Server Components
• Data access plug-in (derived from CADataStore)
• Exported network interface– Archive description (name, acquisition mode,
etc.)– Data manipulation (transform library)– Data production (data stream, iterator)
• Network communication component
Client Components
• Consumer code (e.g. data mining, visualization)
• Library API– Directory Services– Data manipulation (transform library)– Data consumption (stream from server)
• Network communication component
DataStoreDirectory
• Provides hierarchical structure to signal names
• Enumerates registered history servers– Name– Location– Data quality
• Maps signal names to history servers
DataSequence
• Describes a stream of sequenced data• Every element contains
– Indexing attribute (scalar, numeric) (e.g. time)– Primary attribute (e.g. value)– Ancillary attributes (e.g. status, severity, units)– Attribute dependencies (e.g. alarm depends upon value)
• Elements are iterated over via the indexing attribute, and return primary attribute as default value.
DataTransform
• Reads input sequence, generates output sequence.
• Generic transforms operate upon primary attribute.
• Specialized transforms operate on known attributes.
Example 1: Binning Transform
• Parameters: bin width
• Input: (index,value) pairs (e.g. time, value)– All other attributes discarded
• Output: (count, mean, variance, min, max) tuples, indexed by bin number, with mean as primary attribute.
Example 2: Discrete Fourier Transform
• Input (index, value) pairs (e.g. time, value)– All other attributes discarded
• Output (frequency, amplitude) pairs, index by frequency, with amplitude as primary attribute.
Standard Transforms
• Binning• Interpolating• Decimating• DFT, IDFT• Digital Filter• Averaging• Rasterizing• Attribute Mapping• Attribute Filtering
Network Communication
• CORBA– Transparent binary compatibility
– Easy communication between distributed objects
– Integrate with other CORBA-enabled tools
• MICO– open source implementation
– branded CORBA 2.3 compliant by OMG
– Portable: Unix (hp-ux, linux, solaris, aix, etc.), Win32
– C++, Java bindings
Uses in EPICS
• Portable CA Server interface can supply history data to ca clients (e.g. medm) .
• Adaptor library supporting Kay’s API: current applications become network capable.
• New applications: java tools, etc.
Intended Use at JLAB
• StripTool history plug-in
• Replacement for current XARR interface
• Operator / user scripting.
• DARTH (vaporous data-mining tool)