Table of Contents
CSS code uses “plug-able” libraries for accessing data.
There are at this time three libraries for accessing live data:
All libraries are fundamentally plug-able as described in the following where utility.pv is used as an example.
The plugin org.csstudio.utility.pv
defines an interface
for accessing live control system data.
The archive engine for example uses that library for subscribing to value updates
from PVs that you want to archive.
The utility.pv plugin does not, however, contain any implementation. Instead,
it defines an Eclipse Extension Point that allows other plugins to provide
pluggable implementations. The plugin org.csstudio.utility.pv.epics
implements live data access based on EPICS Channel Access Version 3.
The plugin org.csstudio.utility.pv.simu
implements simulated
PVs like sim://ramp
.
This way, one can build an archive engine that supports EPICS, or EPICS and simulated PVs,
or only simulated PVs by simply including the desired plugins. There is no need to
change the actual archive engine code at all.
While this modular approach is very flexible, there can be one disadvantage:
The archive engine code for example only depends on org.csstudio.utility.pv
,
the definition of the API for accessing live data. When bundling the archive engine code
into a product, this plugin must be included. The implementing plugins like
org.csstudio.utility.pv.epics
are optional, allowing you to build
an archive engine that does not interface to EPICS but another network protocol
of your choice. If you fail to include any implementing plugins,
the product will built without errors but later issue runtime error messages
No extensions to org.csstudio.utility.pv.pvfactory found
This error means: The org.csstudio.utility.pv
could not locate any
implementation, no “factory” classes for creating actual live data PVs.
You need to include at least one implementing plugin like org.csstudio.utility.pv.epics
or org.csstudio.utility.pv.simu
.