Display Builder

The Display Builder is an operator interface panel builder for CS-Studio. Driven by changes in computer graphics technology and trends, EPICS operator interface tools tend to undergo fundamental transformations every 10 years, recently accelerating.

The Display Builder aims to minimize these transitions. It is in large parts backwards compatible with the original CS-Studio BOY tool. There are translation tools from EDM and MEDM.

Key features include:

  • Heavy use of threading. Display files are loaded in background threads, related displays are loaded in parallel, plot images are prepared in separate threads, scripts are executed off the user interface thread.
  • Large number of single-purpose widgets. For example, an Ellipsefor static graphics, an LED that changes between on/off states based on a PV, and a Multi State LED that changes between more than two PV states. Widgets with specific purpose are more obvious not only to the end user but also to tools which translate between display file formats.
  • The PV layer supports EPICS Channel Access, PV Access, local PVs, simulated PVs, but also other protocols like MQTT. The data flow is controlled using the Reactive Extensions for Java.
  • Model, Representation, Runtime and Editor are strictly separate modules, allowing each to evolve separately.
  • The Representation is based on JavaFX, the most modern Java GUI library, but as mentioned the representation is fundamentally separate from the model and runtime. In principle, we could replace the graphics library, and a proof-of-concept had indeed been implemented based on SWT.

The Display Builder file format is "compact XML" similar to this:

<widget type="label">

Such an XML format can be read and written by many tools, simplifying the programmatic generation of displays. The minimal nature without any direct references to the display builder will simplify future moves to the next greatest EPICS display tool.

The Display Builder is available for both the original Eclipse-based CS-Studio and the current Phoebus-based development. In addition, a purely web based runtime is available for remotely viewing displays.


The Data Browser is a CSS tool for displaying live as well as ArchiveSupport historic LiveDataSupport control system data in a Strip-Chart type plot.

The current plot can be emailed or sent to a log book or as email.

Logbook Support

The Data Browser, Display Builder, and other tools can be integrated with the logbook clients to make rich log entries. Each application can configure the data that is automatically included in the log entry.

The are pluggable framework for CS-Studio and Phoebus allows applications to create log entires to different implementations of logbook services. Currently, the is support for Olog, Olog-ES, ELOG, and SNS operations logbook.

BEAST - The Best Ever Alarm System Toolkit

This is the distributed alarm system developed at the SNS, consisting of

  • Alarm Server that uses channel access to monitor alarm triggers in the control system
  • CSS user interface for viewing current alarms as a table or hierarchical tree
  • Relational Database for configuration and logging
  • Web reports to analyze the number and frequency of alarms, search the alarm configuration etc.

The user interface allows operators to

  • Access guidance on how to handle a specific alarm
  • Invoke links to related operator interfaces or other CSS tools for the alarm trigger PVs
  • Acknowledge alarms Edit the configuration

See also: ICALEPCS 2009 presentation http://icalepcs2009.spring8.or.jp/abstract/pdf/TUA001_TALK.PDF

Read more

BOY - Best OPI, Yet

CSS BOY is an Operator Interface (OPI) development and runtime environment. An OPI is a general GUI but with extra facilities to connect to your live data directly.

CSS BOY allows building your GUI with drag and drop and connecting to your data instantly. It also allows using JavaScript or Jython to manipulate the GUI in a very similar way as using JavaScript in HTML.

In BOY, the OPI Editor is a WYSIWYG (What You See Is What You Get) editor which allows you to create your GUI in a similar way of creating PPT. The OPI Runtime works in a similar way as modern web browsers. One can display the OPIs either in tabs, windows or views and navigate OPIs forward or backward. An OPI is a regular XML file that can be edited in OPI editor or text editor and run in OPI Runtime. No compilation is needed.

The data communication layer is a separate layer which allows BOY connecting to various data sources seamlessly. Users can provide their own data source by extending an Eclipse extension point. Currently, it supports EPICS, local, simulated and system data sources. Potentially, it could support OPC, DDS, Tango or your own data source.

BOY is a set of Eclipse plugins written in Java, which means it can be integrated in any Eclipse RCP application. It has been tested that BOY runs well on Windows, Unix and X OS platforms.

Read more

Scan Client

The scan system can automate experiments. For example, it can move a motor from some start position to an end position in certain steps, waiting at each step until experiment data has been taken. A scan can consist of several nested loops. For example, at each step of moving the "horizontal" position of a sample, an inner loop can vary the "vertical" position of the sample to perform a 2-dimensional scan of the sample surface. As another example, an outer loop may vary the sample temperature while inner loops vary the sample position.

Read more