Brief Introduction to the HV Code

Documentation of the ONCS HV Software

Author:
C.Witzig, BNL
Design Considerations:
The following guidelines have been followed in the design of the ONCS HV software:
  • Which classes do exist?
    Currently there are C++ classes for the HVgroup, HVmodule, the HVchannel and subclasses that allow to control the EPICS HV software in real time as well and subclasses that make a connection to the database (Objectivity/DB).
  • HV module vs HV channel:
    In real life the HV module has not much meaning beyond being a piece of hardware that happens to be installed in a mainframe and has several controllable HV channels.
    Therefore the decision was made to add control features only to the HVchannel and HVgroup object, but not the module object. However the HVchannel object is instantiated by the HVmodule object (obviously you must have a HV module in order to have a HV channel).
  • HVgroup :
    HVchannels and HVmodules can be added/removed to groups which allows to control them in a common way.
  • What does the user see?
    The design decision was made to hide all the details of EPICS and the database from the user. Thus the classes that the normal user sees are only HVgroup, HVmodule and HVchannel (unless the wants eg to control directly the database using the classes dbHVxxx - see below).
    This means that the classes HVgroup, HVmodule and HVchannel to not support any directly EPICS/DB access, but inherit it from the classes genOncsEpicsDevice and dbHVinterface.
    In addition to the objects that correspond to the hardware there are two classes HVsetpoint (the setpoints of a channel) and HVreadback (the readback), which can also be stored in the database.
    In particular it was attempted to separate the EPICS connectivity from the Objectivity that one can be used without the other (after proper modifications of the inheritance tree and Makefile as well as recompilation).
  • Connection to EPICS :
    Only the class HVchannel has a connection to EPICS which is done using the EPICS extension "ezca" (easy channel access). If speed becomes an issue, this could be replaced with a more sophisticated mechanism.
    Currently all the LeCroy parameters of a module can be manipulated, but not read/writeable EPICS parameters (such as alarm limits).
  • Connection to the database (Objectivity/DB) :
    The persistent classes are dbHVmainframe, dbHVmodule, dbHVchannel, dbHVsetpoint (a setpoint in the past) and dbHVreadback (the stored readback value of a channel).
    The classes HVmodule and HVchannel inherit from the class dbHVinterface the capability to interface to Objectivity using the class dbHV, which opens/closes the database. Class dbHV thus encapsulates all the Objectivity details.
    In addition HVmodule and HVchannel have a private datamember which is the reference to their persistent counterpart in the database (class dbHVmodule/dbHVchannel).
    Of course a user can also directly access the database using the classes dbHVxxx, but in that case there is no connectivity to EPICS.
  • Why aren't the persistent classes not documented?
    This is a problem of doc++ that does not fully understand the ddl files. Sorry about that. Look for the .ddl and .cc for details.
  • How are the LeCroy 1469 classes supported?
    The 1469 HV module has 3 bulk supplies each of which control 8 HV channels. They are supported through inheritance. See section below.
Version:
1.0

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de