130 likes | 276 Vues
MASAR (Machine Snapshot, Archiving, and Retrieval) is an advanced tool integrated within EPICS (Experimental Physics and Industrial Control System) designed to facilitate the management of accelerator control systems. It allows users to take snapshots of machine states at specific time points—storing critical data such as values, timestamps, connection statuses, alarm statuses, and alarm severities. With features like automatic save and restore, data archiving at predefined intervals, and user-friendly interfaces built on Python and PyQt, MASAR enhances experimental workflow and data management for researchers at the Brookhaven National Laboratory.
E N D
MASAR Server & Application Guobao Shen Photon Sciences Department Brookhaven National Laboratory Collaboration Working Group Oct 02, 2013
What’s MASAR? • MASAR • Machine Snapshot, Archiving, and Retrieve • An EPICS tool for experimental control system • Machine • A facility controlled by EPICS, accelerator for example • Snapshot • Data at specific time point • Value, time stamp, connection status, alarm status, alarm severity • Similar tools, but different purpose • IOC automatic save & restore • IOC bumpless rebooting • Channel Archiving • Archive pre-defined configuration periodically • All data saved time serially
MASAR Architecture Scripting CSS/BOY Others (Matlab) Scripting PyQt High Level Scripting API Finished Low Level Python Client Library pvAccess/channelRPC Client (C++) pvAccess Client API Library (Java) pvAccess Planning pvAccess/channelRPC Service Engine DSL-PY Module Gather/C++ PYMASAR (SQLite) Channel Access IOC IOC IOC User Apps Developing
MASAR Service • An EPICS V4 service • V4 C++ modules • pvData beta2 • pvAccess beta2 • pvIOC beta2 • normativeTypes • Communication mechanism • channelRPC
V3 Type Support • Support all scalar and waveform PV types • float, double, string, and enum • Could be a mix of any of the types
MASAR Functions • Functions supported by service • Data Structure used by request structure NTNameValue string[] names string[] values string function xxxxxx // function name as above
MASAR Data Structure structure timeStamp long secondsPastEpoch 0 int nanoSeconds 0 int userTag 0 structure alarm int severity 0 int status 0 string message string[] label [...] // value field in label field string pv name [] string value [] double value [] long value [] int dbr_type [] bool isConnected [] long secondsPastEpoch [] int nanoSeconds [] string alarmSeverity [] string alarmStatus [] bool is_array [] structure array_value [structure[]] • NTTable • Scalar value • Need NTVariantArray
MASAR Client • Python library • 7 APIs • API naming convention • Retrieve/Save: RDB oriented • Get/Put: PV oriented
MASAR UI • PyQt4 based graphic user interface • On top of Python client library • Browse configuration • Browse event • Take snapshot • Retrieve data • Compare data • Restore machine • Export data to external file
MASAR UI • Multiple comparison • Support up to 9 data sets
MASAR UI • Data plotting
MASAR CSS Integration • pvAccess plug-in in CSS • Map NT type into V Type/pvManager • Basic type • Name/value • Table • NT type Java support • Widget development • Reuse existing widget • Table, … • Table manipulation • Join, comparison • Plotting • Columns in single table • Columns in multiple tables • URI pva://pva…
System Wide Application • Interactive with other services • Channel finder • Get PV list to create a new configuration • Olog • Create a new entry automatically whenever needed • Lattice/Model • Get a machine live lattice • Calculate beam parameters of live lattice • Save model results • Need MUNICONV service support • Engineering unit (Ampere) Model unit (K value) • Assemble into CSS • Each item is or will be a CSS application • Need to assemble them together