Main Page | Features | Central Services | csv-Files | Types | Transfer | Access | API-C | API-VB/ActiveX | API-Java | Examples | Downloads
TINE Naming Conventions

Name Resolution

A TINE link endpoint is given unambiguously by its full device name and the requested property. The device name is a hierarchical combination of the Device Context, the Device Server or Group, and the targetted Device Name. The Device Property is the targetted action or characteristic of the device.

As of TINE Release 4.0 these names have the following length restrictions, which we show below for completeness:

Visible names:

Hidden names:

The Device Context and Device Group/Server part of the data access will be resolved by the equipment name server (ENS). The client process will then cache the results of the name resolution for future calls. Essentially, the Device Context and Device Group/Server will get resolved to a specific instance of an equipment module on a specific FEC (including Network address and port). The ENS in general knows nothing about the Device Names and Device properties found on a device server. The execption is the Group Equipment Name Server (GENS) which does maintain a device list of the members of a group.

What is the difference between a Device Group and a Device Server? A Device Server is a physical process managing a collection of devices on a Front End Controller (FEC).

A Device Group can be thought of as a logical (or virtual) Device Server in that is appears in API calls and browsing tools as though it were a standard device server. In reality, a Device Group might point to a number of different Device Servers depending on the device requested.

A Device Server called "BLM1" will offer properties for a set of devices it controls.

A Device Group called "Blms" might consist of the group member device servers "BLM1", "BLM2", and "BLM3" where are different physical device server and could be residing on different host machines. Device Group "Blms" is managed by the GENS and might appear to have a large number of devices.

eg_genscall.jpg

The devices themselves are managed by Choosing a particular device on Device Group "Blms". The GENS will redirect the call to the appropriate physical device server when the call is made. The redirection information is of coursed cached at the client.

eg_gens.jpg

TINE Data Acquisition APIs

There are several possible APIs which access TINE endpoints. Basically one is either acquiring or sending data synchronously via an execute() method or asynchrnously via an attach() method, whereby the remote data is 'attached' to the data sets referenced in the API call.

When TINE endpoints are access via 'classical ACOP', the standard API treats all four parameters noted above independently. That is, there are independent

fields for Device COntext, Device Group, Device Name, and Device Property.

acopdevapi.jpg
pbpm.DeviceContext = "HERA"
pbpm.DeviceGroup = "BPM"
pbpm.DeviceName = "WL197 MX"
pbpm.DeviceProperty = "ORBIT.X"
pbpm.AccessMode = "POLL"
pbpm.AccessRate = 1000
pbpm.AccessProtocol = "TINE"

The standared C and Java TINE APIs offer execute() and attach() methods (or ExecLink() and AttachLink() functions) which take two independent character strings providing the full device name and the device property.

#include "tine.h"
...

float orbitx[141];
DTYPE dout, din;

...

dout.dFormat = CF_FLOAT;
dout.dArrayLength = 131;
dout.dTag[0] = 0;
dout.data.fptr = orbitx;

din.dFormat = CF_NULL;
din.dArrayLenth = 0;
din.dTag[0] = 0;
din.data.vptr = NULL;

// simple synchronous link:
cc = ExecLink(“/HERA/BPM/WL167”, ”ORBIT.X", &dout, &din, CA_READ);

...
// simple asynchronous link with callback:
idOrbitX = AttachLink("/HERA/BPM/WL167", "ORBIT.X", &dout, &din, CA_READ, 1000, cbOrbit, CM_POLL);

...
 

  float[] orbitx = new float[141];

  TLink orblnk = new TLink("/HERA/BPM/WL167","ORBIT.X",new TDataType(orbitx),null,TAccess.CA_READ);

  // synchronous link with timeout of 100 msecs, retry the link on error
  orblnk.execute(100,true); 
 
  ...

  // asynchronous link with polling interval of 250 msecs, fire callback cbOrbit on data receipt or link error
  orblnk.attach(TMode.CM_POLL,cbOrbit,250); 

In these cases, the full device name is parsed according to the convention:

/<device context>/<device group>/<device name>

and the device property is provided as an independent parameter. In principle, both the Device Context and the Device Name are optional! If the device context is omitted, then the address resolution in force will simply look for any match of the device group/device server provided. [Release 4.0] If the result is ambiguous (because the server name shows up in more than one context) then an error code of 'ambiguous' will be returned to the caller.

If the device name is omitted, then an empty device name is passed to the targetted device server and property. In this case it is up to the device server to service the request or not.

It is STRONGLY advised to always use the device context and device name in all data access!

Some APIs use a single string argument to specify the TINE endpoint, for example LabView.

lvSimpleGet.jpg

Here the single string argument is parsed as

/<device context>/<device group>/<device name>[<device property>]

where the "[" and "]" clearly delineate the device property.

When TINE endpoints are accessed via DOOCS APIs or the connection parameters of the java ACOP beans, the sting is parsed as

/<device context>/<device group>/<device name>/<device property>

That is, no brackets delineating the device property.

Finally, Command line APIs typically have separate arguments for the full device name and the device property.

eg_tget.jpg

Naming Style Guide

As noted above it is strongly advised to give every aspect of a TINE endpoint a name! This means supplying a context and device name in all cases.

In addition, the subsystem to which the device server belongs should also be supplied. This is not part of the name space but is often used as a filtering criterion when browsing the control system or otherwise offering a range of possible choices in an application. When a subsystem is not provided, a device server is assigned the subsystem "TEST" by the equipment name server.

In assigning names, note that the following conventions are commonly in play:

In most cases it is usually clear as to "what is a device" and "what is a property". A device name, as noted above, generally describes "where it is" or "what it's called", whereas a property describes "what it is" or "what it does". For instance "Voltage" or "Initialize" are properties. "Cavity", "Bunch1", "WL167" are devices.


Generated for TINE API by  doxygen 1.5.8