Skip to content
mihai-stfc edited this page Sep 21, 2020 · 111 revisions

Helium Level Monitoring Database

  1. Introduction
  2. Overview of the database
  3. Functions
  4. Object classes
  5. Object types
  6. Objects
  7. Measurements
  8. Display formats
  9. Object relationships
  10. Networks
  11. Images
  12. Coordinates
  13. Display groups
  14. List of devices grouped by function

Introduction

The Helium Management (HM) project is concerned with developing software and hardware for the management of helium for research facilities. The project was started by the Helmholtz-Zentrum Berlin (HZB) and is now a collaboration of the HZB, the Institut Laue Langevin (ILL), the ISIS Neutron and Muon Source and the European Spallation Source (ESS) under the umbrella of the International Society for Sample Environment (ISSE).

Helium is becoming increasingly rare and expensive. Therefore, smart management is needed in order to minimise losses, track expenses, and localise and fix leaks.

The HM software and hardware developed at the HZB allow for the tracking of all inputs and outputs of the helium supply system, helium usage at individual experiments, helium levels in all types of vessels or cryostats, and the flow of helium gas in recovery lines. Moreover, it allows for detecting overpressure in vessels and detecting warm/forgotten vessels.

The data is collected by various independent measurement devices and programs and fed into the Gas Management database (GAM database). For a complete HM system the following parts are needed:

  • The GAM database is the backbone of the HM. The database stores the information to all of the measurements taken from devices, as well as information about every device, their model, type and display properties. It was developed by the HZB and currently runs on Oracle and MySQL.
  • A balance is needed to book-in the helium vessels when they arrive to the facility (normally full) and to book-out the vessels when they leave the facility. The events of booking -in and -out have to be written to the GAM database for example by a software directly controlling the balance.
  • A book-in/out software is also needed to monitor the gas inputs to the system (gas cylinders/bundles) and in most cases to monitor the the bundles for compressed (warm) helium sent to the liquefaction plant.
  • All wireless devices such as level meters and gas counter monitors are connected to the network of base stations (coordinator network) based on XBee modules (IEEE 802.15.4 protocol). As the wireless level meters are mobile, the coordinator network is used to locate them in the facility.
  • All data traffic in the coordinator network is organized and collected by the Helium Management Program (HMP) developed by HZB. In addition, the HMP offers a set of tools for interacting with the GAM database such as creating objects or object types (see below), changing parameters or creating or ending object relations (see below).
  • The data of the fixed installation which is individual to a facility, such as the contamination of the helium gas, filling levels of helium bladders, the pressures in the helium gas storage tanks or the respective temperatures, has to be collected by software individual to each facility and then written to the GAM database.

The following document gives a complete introduction to the GAM database, its structure and functionality.

Overview of the database

The latest version of the database is written in MySQL and runs under MySQL version 8.0.19 .

The main table in the database is the GAM_OBJECT table. This table represents an object, which is an individual piece of equipment used for helium management: an individual level meter, an individual cryostat, and so on.

Objects are classified into object types, which are themselves classified into object classes, which are classified into functions. There are many attributes in the GAM_OBJECT table, and many have their exact meaning determined by the class the object belongs to.

For each object, the database can store measurements whose meaning is again defined by the object class. Each object can have its own display format, which specifies the levels at which alarms are activated for the values in the measurements.

In addition, the database stores relationships between individual devices, which are used for the graphical representation of the network on the web client.

Finally, the database has the GAM_COORDINATE, GAM_DISPLAYGROUP, GAM_IMAGE and GAM_NETWORK tables, which provide information used for the graphical UI representation of the helium management system.

Below you can see the Entity Relationship Diagram of the database:

ERD

Functions

The GAM_FUNCTION table represents the highest classification of objects, and it is based on the overall function or purpose that they fulfil.

As an example, storage represents a function, and all dewars, cryostats, gas bladders and so on belong to this category, as they all fulfil the same general purpose.

Functions are further divided into classes, so between the GAM_FUNCTION and GAM_OBJECTCLASS tables there is a one to many relationship with total participation, each function has one or more classes.

Attribute name Attribute meaning Data type Mandatory Notes
OF_ID ID of function 24-bit Integer Yes It is the primary key. It is automatically incremented, no need to set it manually.
OF_NAME Name of the function String, up to 50 bytes in size No
OF_COMMENT Comments related to this function String, up to 1000 bytes in size No

Object classes

While functions represent the overall purpose a device fulfils, the class represents general type of the device, irrespective of the manufacturer of said device.

Thus, for the storage function, it has the classes: dewar, cryostat, gas bladder, compressed gas storage and gas bundle. For the indicator function, the classes are: pressure sensor, thermometer and contamination sensor. Functions describe the overall purpose of the device, while the class groups all devices of the same type, regardless of the specific model and manufacturer.

Between the GAM_OBJECTCLASS and GAM_FUNCTION tables there is a many to one relationship with total participation, each function has one or more classes and each class must belong to a function.

Between the GAM_OBJECTCLASS and GAM_DISPLAYFORMAT tables there are 5 optional many-to-one relationships. A display format can be applied to multiple classes, and each can have up to 5 display formats.

Classes are further divided into object types, and therefore between the GAM_OBJECTCLASS and GAM_OBJECTTYPE there is a one to many relationship with total participation, each class has one or more object types.

Measurements and classes

The class of an object is important as it defines the meanings of the measurements taken for that device. A measurement can contain up to 5 values, and the meanings of those five values are defined by five attributes in the class table. These attributes describe what the numbers in the measurement mean. Devices belonging to a certain object class may have no measurements, or may need less than 5 values for a measurement. Therefore, the OC_MEASURETYPEx attributes are optional.

Icon attributes

The OC_ICONX attributes, where X is 0, 20, 40, 60 or 80, represent icons that are meant to be used for displaying object of this class depending on their current fill level. The current level of the object would be approximated to 0, 20, 40, 60 or 80 per cent, and the corresponding icon would be used. These attributes are not actually used by the web client made by HZB, but have been left it as an option if other facilities want to use it. These icons are meant to be used for object classes that hold Helium, or for gas counters.

Display Priority

The web client made at the HZB displays floor plans of a facility, with various fixed positions in it. Multiple objects can be located in the same position, and the fixed position itself is also an object. Therefore, the OC_DISPLAYPRIORITY attribute is used to prioritise objects of a certain class so that they are more likely to be displayed on the floor plan. The lower the value of OC_DISPLAYPRIORITY, the higher the display priority, thus the object with the lowest value will be displayed. Positions themselves never overlay anything.

Attribute name Attribute meaning Data type Mandatory Notes
OC_ID ID of class 24-bit Integer Yes It is the primary key.
OC_FUNCTION_ID ID of the function of this class 24-bit Integer Yes It is a foreign key to the primary key of the GAM_FUNCTION table.
OC_NAME Name of this class String, up to 50 bytes in size Yes
OC_POSITIONTYPE Defines how objects are displayed on floor plans Integer, with 2 digits at most Yes Says if if they are mobile or not, if they can dragged and dropped, and so on. More information to come later.
OC_COMMENT Comments related to this class String, up to 1000 bytes in size No
OC_MEASURETYPE1 What the first value of a measurement represents, and its units of measurement String, up to 100 bytes in size No
OC_MEASURETYPE2 What the second value of a measurement represents, and its units of measurement String, up to 100 bytes in size No
OC_MEASURETYPE3 What the third value of a measurement represents, and its units of measurement String, up to 100 bytes in size No
OC_MEASURETYPE4 What the fourth value of a measurement represents, and its units of measurement String, up to 100 bytes in size No
OC_MEASURETYPE5 What the fifth value of a measurement represents, and its units of measurement String, up to 100 bytes in size No
OC_ICON0 File path to the icon for representing the device when it is at 0% capacity. String, up to 500 bytes in size No
OC_ICON20 File path to the icon for representing the device when it is at 20% capacity. String, up to 500 bytes in size No
OC_ICON40 File path to the icon for representing the device when it is at 40% capacity. String, up to 500 bytes in size No
OC_ICON60 File path to the icon for representing the device when it is at 60% capacity. String, up to 500 bytes in size No
OC_ICON80 File path to the icon for representing the device when it is at 80% capacity. String, up to 500 bytes in size No
OC_ICON_ALARM File path to the icon for representing the device in an alarm state String, up to 500 bytes in size No
OC_DISPLAYPRIORITY Determines if objects of this class are prioritised when multiple objects are in the same position on a floor plan in the web client Integer from 0 to 9 No Value is 1 for high priority, 2 for medium priority, 3 for low priority, and 0 for when the object is not prioritised.
OC_DF_ID_1 ID of the first display format of this class. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.
OC_DF_ID_2 ID of the second display format of this class. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.
OC_DF_ID_3 ID of the third display format of this class. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.
OC_DF_ID_4 ID of the fourth display format of this class. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.
OC_DF_ID_5 ID of the fifth display format of this class. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.

Object types

As mentioned above, the GAM_OBJECTTYPE table represents the specific model of an object from a specific manufacturer. Therefore, an object that is a Helios 100A dewar is of object type Helios 100A, of object class dewar, of function storage.

There is a many to one relationship with total participation between the GAM_OBJECTTYPE and GAM_OBJECTCLASS, each class has one or more types, and each type must belong to a class.

Between the GAM_OBJECTTYPE and GAM_OBJECT tables there is a one to many relationship with total participation, each object type has one or more objects.

Between the GAM_OBJECTTYPE and GAM_DISPLAYFORMAT tables there are 5 optional many-to-one relationships. A display format can be applied to multiple types, and each can have up to 5 display formats.

Calibrations

A calibration refers to a translation between a measured value and the actual value, defined using a function. This function is captured in the table with the OT_CALIB_X, OT_CALIB_Y and OT_CALIB_NPOINTS attributes.

The optional OT_CALIB_X and OT_CALIB_Y attributes represent arrays of x and y coordinates, respectively. Each pair of values at the same index represent a break-point on the graph of the piecewise linear function between the level and the volume. The OT_CALIB_NPOINTS attribute defines how many elements are in each array.

The x axis of the function represents the measured value, and the y axis represents the actual values. These are generic and can be anything depending on the situation.

One such situations is for objects that store liquids, where we want to measure their level. But these objects are not always perfect cylinders, and as a result the function from the level to the current volume of liquid is not a linear one. For example, if a vessel is more narrow in its middle portion, a 1 cm increase in the level will result in a smaller increase in liquid volume compared to if the 1 cm increase occurred in the wider base of the object.

Another reason you want to have a calibration for helium vessels is that they do not only store liquid Helium, they also store some gas Helium because due to evaporation. Depending on what you want to measure, you need to take this into account.

Attribute name Attribute meaning Data type Mandatory Notes
OT_ID ID of type 24-bit Integer Yes It is the primary key.
OT_OBJECTCLASS_ID ID of the class of this type 24-bit Integer Yes It is a foreign key to the GAM_OBJECTCLASS table.
OT_NAME Name of this type String, up to 50 bytes in size Yes
OT_OUTOFOPERATION For things you will not use, you can not delete things from the database? 0 or 1, o for not out of operation, 1 for out of operation, should not tolerate null No
OT_VOLUME Volume of objects of this type Number with a precision of 10 digits, and a scale of 4 No
OT_SUBSTANCE Substance stored or used by objects of this type String, up to 20 bytes in size No
OT_COMMENT Comment regarding this object type String, up to 1000 bytes in size No
OT_PRODUCER The manufacturer of this type of device String, up to 200 bytes in size No
OT_MODEL The model of this type of device String, up to 200 bytes in size No
OT_INTERNAL_TCOMP For gas counters, which have internal temperature compensation Integer from 0 to 9 No For GasCounter
OT_TEMP_NORM Temp normal, know which temp this is compensating, for gas counters Number with a precision of 10 digits, and a scale of 4 No GasCounter
OT_INTERNAL_PCOMP For gas counters, which have internal pressure compensation Integer from 0 to 9 No For GasCounter
OT_PRESS_NORM Pressure normal, know which pressure this is compensating, for gas counters Number with a precision of 10 digits, and a scale of 4 No For GasCounter
OT_STEP Incremental step meant for gas counters, gas counters operate in steps Number with a precision of 6 digits, and a scale of 4 No For GasCounter
OT_CALIB_NPOINTS The number of calibration points on the defining the calibration function 24-bit Integer No
OT_CALIB_X A string representing the array of coordinates on the x axis of each calibration point String, up to 1000 bytes in size No
OT_CALIB_Y A string representing the array of coordinates on the y axis of each calibration point String, up to 1000 bytes in size No
OT_CALIB_NAME Name you give to your calibration String, up to 200 bytes in size No
OT_DF_ID_1 ID of the first display format of this type. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.
OT_DF_ID_2 ID of the second display format of this type. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.
OT_DF_ID_3 ID of the third display format of this type. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.
OT_DF_ID_4 ID of the fourth display format of this type. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.
OT_DF_ID_5 ID of the fifth display format of this type. 24-bit Integer No It is a foreign key to the GAM_DISPLAYFORMAT table.

Objects

An object represents the individual instance of a type of device. For example, a row in the GAM_OBJECT table represents one Helios 100A dewar.

There are a lot of attributes in the GAM_OBJECT table storing data pertaining to each individual device, and many of these attributes are not used for all types of devices, and some attributes have different meanings based on the type of device. The meaning and use of the optional attributes in the object table is determined by the class of the object.

Relationships

There is a many to one relationship between the GAM_OBJECT and GAM_OBJECTTYPE tables, with total participation on the GAM_OBJECT side. Each object needs to belong to a type, and there can multiple objects of the same type.

There are two one to many relationships between the GAM_OBJECT and GAM_OBJECTRELATION tables. Each object can participate in multiple relationships, or none. The GAM_OBJECTRELATION table represents a relationship between two objects.

There is a one to many relationship between the GAM_OBJECT and GAM_MEASUREMENT tables, each object can have multiple measurements, or none at all. Each measurement must belong to an object.

There is a many to one relationship between the GAM_OBJECT and GAM_NETWORK tables. Each network has multiple objects, and an object can belong to one and only one network, but does not have to.

There is a one to many relationship between the GAM_OBJECT and the GAM_COORDINATE tables. An object can have multiple coordinates, or none at all. Each coordinate must belong to one object.

There is a many to one relationship between the GAM_OBJECT and GAM_DISPLAYGROUP tables. Each display group must have one or more objects, and an object may or may not belong to a display group.

Between the GAM_OBJECT and GAM_DISPLAYFORMAT tables there are 5 optional many-to-one relationships. A display format can be applied to multiple objects, and each object can have up to 5 display formats.

Attribute name Attribute meaning Data type Mandatory Notes
OB_ID ID of object 24-bit Integer Yes It is the primary key. It is automatically incremented, no need to set it manually.
OB_OBJECTTYPE_ID ID of the type of this object 24-bit Integer Yes It is a foreign key to the GAM_OBJECTTYPE table
OB_NAME Name of object String, up to 50 bytes in size Yes
OB_ADDRESS The XBee Address (or IP for LAN Gascount. Mod.) String, up to 20 bytes in size No
OB_COMMENT Comments regarding this object String, up to 1000 bytes in size No
OB_POSINFORMATION Physical position of the device String, up to 1000 bytes in size No e.g. "Cryogenic Lab Upstairs"
OB_STATUS ? Integer from 0 to 255 No Is this related to what measurements it sent to the base stations?
OB_LASTTIMEACTIVE Last time this device was active String showing date in YYYY-MM-DD hh:mm:ss format No Active = sent a measurement?
OB_ACTIVE Whether the device is active Integer from 0 to 9 No Vessel: is on campus/booked-in
OB_IP The IP address of the device String, up to 20 bytes in size No
OB_VOLUME Vessel Type litre volume Decimal number, with a precision of 10 and a scale of 4 No
OB_VALUE ? Decimal number, with a precision of 10 and a scale of 4 No
OB_MINVALUE Device type-specific minimum value Decimal number, with a precision of 10 and a scale of 4 No Vessel resistance (ohm), Level Meter battery voltage (volt)
OB_MAXVALUE Device type-specific maximum value Decimal number, with a precision of 10 and a scale of 4 No Vessel resistance (ohm), Level Meter battery voltage (volt)
OB_CRITVALUE Device Critical value Decimal number, with a precision of 10 and a scale of 4 No Vessel AutoFill Min. Level %, Level Meter Critical Battery Capacity %
OB_COMPORT Device COM Port String, up to 10 bytes in size No For Coordinator
OB_TARE Tare/unladen weight of the vessel in kg Decimal number, with a precision of 7 and a scale of 3 No
OB_ENABLED1 Object class-specific setting #1 (see notes) Integer, from 0 to 9 No ILM Module, Software Level Device: Channel 1 on/off,
Position: "Display on floorplan for drag&drop"
OB_SUBSTANCE1 Object substance #1 (see notes) String, up to 20 bytes in size No ILM Module, Software Level Device: Channel 1 Gas
OB_SPAN1 Object class-specific span #1 (see notes) Decimal number, with a precision of 10 and a scale of 4 No ILM Module: Channel 1 Span
OB_ZERO1 Object class-specific zero #1 (see notes) Decimal number, with a precision of 10 and a scale of 4 No ILM Module: Channel 1 Zero
OB_ENABLED2 Object class-specific setting #2 (see notes) Integer, from 0 to 9 No ILM Module, Software Level Device: Channel 2 on/off,
Vessel: "Level Meter Properties are valid",
Position: "Include in levelmeter position list"
OB_SUBSTANCE2 Object substance #2 (see notes) String, up to 20 bytes in size No ILM Module, Software Level Device: Channel 2 Gas
OB_SPAN2 Object class-specific span #2 (see notes) Decimal number, with a precision of 10 and a scale of 4 No ILM Module: Channel 2 Span
OB_ZERO2 Object class-specific zero #2 (see notes) Decimal number, with a precision of 10 and a scale of 4 No ILM Module: Channel 2 Zero
OB_ENABLED3 Object class-specific setting #3 (see notes) Integer, from 0 to 9 No ILM Module, Software Level Device: Channel 3 on/off,
Vessel: "Display reversed"
OB_SUBSTANCE3 Object substance #3 (see notes) String, up to 20 bytes in size No ILM Module, Software Level Device: Channel 3 Gas
OB_SPAN3 Object class-specific span #3 (see notes) Decimal number, with a precision of 10 and a scale of 4 No ILM Module: Channel 3 Span
OB_ZERO3 Object class-specific zero #3 (see notes) Decimal number, with a precision of 10 and a scale of 4 No ILM Module: Channel 3 Zero
OB_SHORTINTERVAL Vessel short interval in seconds 32-bit Integer No Vessel: Minimum 30 seconds, Maximum 10 minutes
OB_LONGINTERVAL Vessel long interval in minutes 32-bit Integer No Vessel: Minimum 10 minutes, Maximum 24 hours
OB_QUENCHTIME Vessel quench time in milliseconds 32-bit Integer No For Vessel
OB_QUENCHCURRENT Vessel quench current in milliamperes (mA) 32-bit Integer No For Vessel
OB_WAITTIME Vessel wait time in milliseconds 32-bit Integer No For Vessel
OB_MEASCURRENT Vessel measurement current in milliamperes (mA) 32-bit Integer No For Vessel
OB_ADCLOOP Vessel number of cycles (ADC loop) 32-bit Integer No For Vessel
OB_FILLTIMEOUT Vessel fill timeout in minutes 32-bit Integer No For Vessel
OB_CELLCOUNT ? Integer from 0 to 9 No
OB_INSTALLED Date this device was created String showing date in YYYY-MM-DD hh:mm:ss format No
OB_SERNO Serial number of this device String, up to 50 bytes in size No
OB_OFFSET_VALUE The offset value for measurements Decimal number, with a precision of 10 and a scale of 3 No It is used for gas counter modules, so that when a new gas counter module connects to its gas counter, it takes into account the amount of gas measured before the gas counter was installed.
OB_OFFSET_VOLUME The offset volume for when a gas counter is replaced Decimal number, with a precision of 10 and a scale of 3 No It is only used for a gas counter module when its gas counter is replaced by a newer one. The offset makes sure that the measurement continues on from the last value of the old gas counter.
OB_OFFSET_CORRVOLUME The offset corrected volume for when a gas counter is replaced Decimal number, with a precision of 10 and a scale of 3 No It is only used for positions where a gas counter is replaced. The offset is similar to OB_OFFSET_VOLUME, but is instead for volume corrected to take into account pressure and temperature.
OB_SEND_DELTA_V ? Decimal number, with a precision of 10 and a scale of 3 No
OB_SEND_DELTA_P ? Integer with up to 4 digits No
OB_DISPLAYGROUP_ID ID of the display group this object belongs to 24-bit Integer No It is a foreign key to the primary key of the GAM_DISPLAYGROUP table
OB_NW_ID ID of the network this object is on 24-bit Integer No It is a foreign key to the primary key of the GAM_NETWORK table
OB_ALIASNAME Object alias name String, up to 10 bytes in size No For GasCounter, Position, ...?
OB_DF_ID_1 ID of the first display format of this object. 24-bit Integer No It is a foreign key to the primary key of the GAM_DISPLAYFORMAT table.
OB_DF_ID_2 ID of the second display format of this object. 24-bit Integer No It is a foreign key to the primary key of the GAM_DISPLAYFORMAT table.
OB_DF_ID_3 ID of the third display format of this object. 24-bit Integer No It is a foreign key to the primary key of the GAM_DISPLAYFORMAT table.
OB_DF_ID_4 ID of the fourth display format of this object. 24-bit Integer No It is a foreign key to the primary key of the GAM_DISPLAYFORMAT table.
OB_DF_ID_5 ID of the fifth display format of this object. 24-bit Integer No It is a foreign key to the primary key of the GAM_DISPLAYFORMAT table.
OB_ENDOFOPERATION Date when this object is no longer being used String showing date in YYYY-MM-DD hh:mm:ss format No

Measurements

The GAM_MEASUREMENT table stores information received through the base stations from the various devices. Each row in this table represents a measurement taken at a certain point in time from a certain device. The data can come from the scales that communicate with the dewar balance program, the level meters, cryostats and gas counters communicating with the Wireless Network program and also from the gas storage devices that communicate with the Gas Storage program.

There is a many to one relationship between the GAM_MEASUREMENT and the GAM_OBJECT table. Each measurement must belong to one device, but devices do not need to have measurements.

Measurement values

A measurement can store up to 5 different values, in the MEA_VALUEx attribute, where x is between 1 and 5. The meaning of each of the 5 numbers in a measurement is not stored in this table, it is defined by the object class of the object type of the object to which the measurement belongs. The OC_MEASURETYPEx fields in the GAM_OBJECTCLASS table should store the names and units of the parameter being measured in the MEA_VALUEx attributes. Measurements do not have to make use of all 5 values and can store only one value.

Booking code

One of the possible sources of measurements is Balance program. This is the server software that handles the book-in and book-out of vessels or dewars and the management of vessels and their types and properties.

When dewars are brought to the facility, they are weighed and the scale sends the measurement to the server. This process is the book-in and is done so that you know how much liquid Helium enters your system. When the dewars have been used and are sent back to be filled with Helium, they are weighed again. This is called a book-out and is done to know how Helium leaves the system with the dewar. These processes are the only ways Helium enters or leaves the system, except leaks.

Since the weight sent by the scale represents a measurement, we need to know which of these measurements were taken for a book-in and which were taken for a book-out. This is what the MEA_BOOKINGCODE attribute is for. It has a value of 1 is the measurement is for a book-in, a value of 2 if a measurement is for a book-out, and 0 or NULL if this measurement is not for a vessel's balance and thus has needs no booking code. This attribute is not used for measurements that do not come from the balance program. The MEA_BOOKINGCODE attribute is also used for the the book-in/book-out process for gas bundles.

Attribute name Attribute meaning Data type Mandatory Notes
MEA_ID ID of measurement 32-bit Integer Yes It is the primary key. It is automatically incremented, no need to set it manually.
MEA_OBJECT_ID ID of the object from which this measurement comes from 24-bit Integer Yes It is a foreign key to the primary key of the GAM_OBJECT table.
MEA_DATE Date when the measurement was taken String showing date in YYYY-MM-DD hh:mm:ss format Yes
MEA_DATE2 ? String showing date in YYYY-MM-DD hh:mm:ss format No
MEA_STATUS ? Integer with up to 3 digits No
MEA_COMMENT Comments regarding this measurement String, with up to 1000 bytes in size No
MEA_VALUE1 First value of this measurement Decimal number, with a precision of 12 and a scale of 3 No
MEA_VALUE2 Second value of this measurement Decimal number, with a precision of 12 and a scale of 3 No
MEA_VALUE3 Third value of this measurement Decimal number, with a precision of 12 and a scale of 3 No
MEA_VALUE4 Fourth value of this measurement Decimal number, with a precision of 12 and a scale of 3 No
MEA_VALUE5 Fifth value of this measurement Decimal number, with a precision of 12 and a scale of 3 No
MEA_VALID ? Integer, from 0 to 9 No
MEA_BOOKINGCODE Code that specifies if the measurements is taken when a dewar enters the system, or leaves it. Integer, can be 0, 1 or 2. No Value is 1 for book-in, 2 for book-out and 0 for measurements not from the balance program.

Display Formats

The GAM_DISPLAYFORMAT table is used to define the alarm levels for the measured parameters of an object.

We would like to know when the values stored in the GAM_MEASUREMENT table are too low or too high. This is what the alarms are for, an indication for a state of a parameter that they have an undesired value.

This table stores an alarm display format independent of the object, its type or class. For example, different cryostats can have different alarm display formats.

The table has an attribute called DF_ALARMLOW and an attribute called DF_ALARMHIGH. They represent the low and high thresholds for the corresponding parameter specified in the OC_MEASURETYPEx attributes of the GAM_OBJECTCLASS table, where x is a number from 1 to 5 that corresponds to one of 5 display format foreign keys in either the GAM_OBJECT, GAM_OBJECTTYPE or GAM_OBJECTCLASS tables. A display format is defined for one of the five possible measurements devices can have.

When the value of a parameter is measured and it is lower than DF_ALARMLOW, an alarm will be displayed. When the value is measured and it is higher than DF_ALARMHIGH, an alarm will be displayed. The alarms are specified in percentages. In the display format table, lower and upper limits for the possible values of a measurement are defined in DF_UPPERLIMIT and DF_LOWERLIMIT. Based on these limits, the alarm percentage is specified, which corresponds to a measurement value between the lower and upper limtis.

Between the GAM_DISPLAYFORMAT and GAM_OBJECTCLASS tables there are 5 optional one-to-many relationships. A display format can be applied to multiple objects classes, and each class can have up to 5 display formats.

Between the GAM_DISPLAYFORMAT and GAM_OBJECTTYPE tables there are 5 optional one-to-many relationships. A display format can be applied to multiple objects types, and each type can have up to 5 display formats.

Between the GAM_DISPLAYFORMAT and GAM_OBJECT tables there are 5 optional one-to-many relationships. A display format can be applied to multiple objects, and each object can have up to 5 display formats.

Attribute name Attribute meaning Data type Mandatory Notes
DF_ID ID of display format Number ? Yes It is the primary key.
DF_UPPERLIMIT The maximum possible value of the measurement Decimal number, with a precision of 10 and a scale of 4 No
DF_LOWERLIMIT The minimum possible value of the measurement Decimal number, with a precision of 10 and a scale of 4 No
DF_ALARMHIGH The percentage corresponding to a value that, if the measurement is greater, means an alarm will be triggered Decimal number, with a precision of 10 and a scale of 4 No
DF_ALARMLOW The percentage corresponding to a value that, if the measurement is smaller, means an alarm will be triggered Decimal number, with a precision of 10 and a scale of 4 No
DF_RATETYPE The type of rate used for calculating flow rate Integer from 0 to 9 ? No Rate type can be per second, per hour, etc. It is only used for gas counters. The value is 0 for no rate, 1 for per second, 2 for per minute, 3 for per hour, 4 for per day, 5 for per month (30.5 days) and 6 for per year.
DF_DECIMALPLACES How many decimal places are displayed for the corresponding measurement Integer from 0 to 9 ? No

Object Relationships

The GAM_OBJECTRELATION table is meant to represent the relationship between objects. Here, a relationship between two objects usually refers to objects are connected by the flow of Helium through the system. When Helium moves from one object to another, there is a relationship between the two. The information stored by this table is used for the representation of the system in the web client used at HZB.

Some examples of relationships and the devices connected by them are:

  • Vessels are assigned to level meters through relationships
  • Level meters are assigned to positions through relationships
  • Level meters are assigned to base stations through relationships
  • Base stations are assigned to positions through relationships
  • Vessels are assigned to balance devices using relationships

Some objects such as positions or base stations are most of the time static, while others such as level meters and vessels are not. This reflects on the status of relationships, which can be permanent or temporary. When a vessel moves around, a relationship between the level meter and a coordinator is ended and a new relationship is made with the coordinator that is now the closest.

In order for a balance measurement to be made and thus for a vessels to be checked in or out, a relationships needs to be created between the vessel and the balance device. This relationship is only active while the vessel is being weighed, and as a result it ends in only a couple of seconds.

The OR_OUTFLOW attribute is used for relationships between a position and any another object except coordinators. It is used to specify if the object drains or feeds the system with Helium when connected to a position. The value of it is 0 for feeding the system, and 1 for draining the system. This attribute can also impact how the object connected to the position is displayed. For relationships between coordinators and positions, this attribute will always be NULL.

Booking Request

The booking request attribute is used to coordinate various programs that make up the Helium Management Program.

When you book in a gas bottle, the measurement program needs to tell the bottle program it is booked in. The relationship in this case is between the bottle and the position.

This attribute is usually only used for relationships between bottles and positions, but could be used for relationships between vessels and balance devices.

Primary relationships

Primary relationships are relationships between coordinators and positions whose position is the default position of the coordinate to be given to a vessel. There is at most one primary relationship for each coordinator. A relationship is primary if it is specified in the OR_PRIMARY attribute. This attribute is only used for relationships between coordinators and positions.

Relationships

There are two many to one relationships between this table and the GAM_OBJECT table, each relationship must be between two object, but objects do not have to participate in a relationship. These two relationships are represented by two foreign keys.

Attribute name Attribute meaning Data type Mandatory Notes
OR_ID ID of relationship 32-bit Integer Yes It is the primary key. It is automatically incremented, no need to set it manually.
OR_PRIMARY Says whether the relationship is a primary relationship. Integer from 0 to 9 No Only used for relationships between coordinators and positions. It is 1 for a primary relationship, and NULL otherwise.
OR_OBJECT_ID ID of one of the objects in the relationship 24-bit integer Yes It is a foreign key to the primary key of the GAM_OBJECT table.
OR_OBJECT_ID_ASSIGNED ID of the other objects in the relationship 24-bit integer Yes It is a foreign key to the primary key of the GAM_OBJECT table.
OR_DATE_ASSIGNMENT Date this relationship was created String showing date in YYYY-MM-DD hh:mm:ss format Yes
OR_DATE_REMOVAl Date this relationship was ended String showing date in YYYY-MM-DD hh:mm:ss format No
OR_OUTFLOW Code that specifies if the object in a relationship with a position feeds or drains the system Integer can be 1 or 2 No It is 0 for an object that feeds the system, 1 for an object that drains the system
OR_BOOKINGREQUEST Code that specifies the status of the booking request Integer from 0 to 9 No It is 0 for NULL, 1 for asking to be booked in, 2 for booked in, 3 asking to booked out, 4 for booked out

Networks

The GAM_NETWORK table stores information about the individual Helium network of a facility.

Here, network refers to an individual physical circuit where liquid and gas Helium circulates and is used. There is usually one network for each location of a facility. For example, at HZB there is one network for the site in Wannsee and there is a separate network for the site in Adlershof.

There is a one to many relationship between the GAM_NETWORK and GAM_OBJECT tables. A network has multiple objects in it, or none at all. An object can be in one network, but does not have to; an object can not be in multiple networks. Usually only positions, gas counters, balance devices and coordinators. Positions, balance devices and base stations must always belong to a network. Vessels do not usually have a network foreign key, but you find out their network by looking at their level meter, then at the meter's position, then at the position's network.

There is a one to many relationship between the GAM_NETWORK and GAM_IMAGE tables. A network is associated with multiple images or floor plans, and cannot have 0 images. Each image must belong to one network.

Attribute name Attribute meaning Data type Mandatory Notes
NW_ID ID of network 24-bit Integer Yes It is the primary key. It is automatically incremented, no need to set it manually.
NW_NAME Name of network String, up to 50 bytes in size Yes
NW_COMMENT Comments regarding this network String, up to 1000 bytes in size No
NW_OUTOFOPERATION ? Integer from 0 to 9 Yes It is 0 by default

Images

The GAM_IMAGE table stores information about images that represent the floor plans in a facility. A network can extend to multiple stories of a building or to multiple buildings, and therefore a network has multiple floor plans so that users of the software can visualise their devices according to their physical location. The physical location of an object can change, vessels can be moved around for example.

Although images usually display the physical locations of objects, they can also display objects for functional purposes.

Objects are represented on images or floor plans through coordinates, as objects can be present on multiple floor plans. That can happen for vessels that are booked in but it is not known where these vessels will be, so they are displayed on multiple images.

There is a many to one relationship between the GAM_IMAGE and GAM_NETWORK tables, each network is made up of multiple floor plans. Each image must belong to a network.

There is a one to many relationship between the GAM_IMAGE and GAM_COORDINATE tables, as each image/floor plan can have multiple coordinates. Each coordinate must belong to one image.

Attribute name Attribute meaning Data type Mandatory Notes
IMG_ID ID of image 24-bit Integer Yes It is the primary key. It is automatically incremented, no need to set it manually.
IMG_BLOB I assume this is the image for the network ? Byte string up to 65,638 bytes in size No Represents the actual image file of the floor plan
IMG_NAME Name of this floor plan String, up to 50 bytes in size Yes
IMG_COMMENT Comments regarding this floor plan String, up to 1000 bytes in size Yes
IMG_DIAMETER ? 32-bit Integer No
IMG_OUTOFOPERATION ? Integer from 0 to 9 Yes It is 0 by default
IMG_NW_ID ID of the network the floor plan belongs to 24-bit Integer Yes It is a foreign key to the primary key of the GAM_NETWORK table.

Coordinates

The GAM_COORDINATE table stores information about how objects are displayed on floor plans. It represents the physical coordinates of an object on a floor plan.

The reason there is a separate table for this information is that one object can appear on multiple floor plans. Therefore, this table represents the many-to-many relationship between images/floor plans and objects. There is one coordinate for each object for each image, so one object can only appear once on an image.

There is a many-to-one relationship between the GAM_COORDINATE and GAM_IMAGE tables, each images has multiple coordinates. Each coordinate must belong to an image.

There is a many-to-one relationship between the GAM_COORDINATE and GAM_OBJECT tables, an object can appear on multiple images and thus have multiple coordinates. An object does not need to have any coordinates, but each coordinate must be associated to an object.

Attribute name Attribute meaning Data type Mandatory Notes
COO_ID ID of coordinate 24-bit Integer Yes It is the primary key. It is automatically incremented, no need to set it manually.
COO_X Coordinate on the x axis of the object on the floor plan Integer with up to 5 digits No
COO_Y Coordinate on the y axis of the object on the floor plan Integer with up to 5 digits No
COO_OB_ID ID of the object of this coordinate 24-bit Integer Yes It is a foreign key to the primary key of the GAM_OBJECT table.
COO_IMG_ID ID of the image of this coordinate 24-bit Integer Yes It is a foreign key to the primary key of the GAM_IMAGE table.

Display groups

The GAM_DISPLAYGROUP table displays information about groups of objects that should be displayed together. A display group is just a grouping of objects that users would like to see in the same place.

There is one to many relationship between the GAM_DISPLAYGROUP and GAM_OBJECT tables. One display group can have multiple objects, but objects do not need to be in any display group. An object can only be in one display group.

Attribute name Attribute meaning Data type Mandatory Notes
DG_ID ID of display group 24-bit Integer Yes It is the primary key. It is automatically incremented, no need to set it manually.
DG_NAME Name of display group String, up to 50 bytes in size No
DG_OUTOFOPERATION ? Integer from 0 to 9 No

List of devices grouped by function

Coordinators

Balance devices

Storage devices

Gas flow meters

Positions

Measurement devices

Indicators

Valves

Clone this wiki locally