Target Model Identification Form OPC UA

This version of the TMI Form supports the standard OPC UA specification.

Apis Management Studio (AMS) is used when exporting/importing TMI forms. The TMI form itself is an Excel spreadsheet (xlsx), which can be manipulated by humans.

When building models in a TMI form, the recommended workflow is to first build a small part of the model in the model builder in AMS using the OPC UA perspective. This small part should span as much of the model as possible, i.e. contain the types used and one or more paths down to the leafs of the model. When exporting this model to a TMI form, the layout of the TMI will be correct and make a good starting point for manually adding entities to the model. After entities are added/changed in the TMI form, the form can be imported to the UA server to update the semantic model.

Read this page for an overview of the TMI Form, then further documentation can be found here:

To export to TMI form, see Target Model Identification Export.

To import from TMI form, see Target Model Identification Import.

To import in bulk, see Import in Bulk.

TMI form explained

In the following a simple model of a room with a pump is used to explain the workings of the TMI Form. The pump has variables; pressure, rpm.

Exporting the model to a TMI Form will result in an Excel file with a number of sheets. The sheets contains all the information needed to create or update this model. Objects of the same type are defined in the same sheet. There may be several sheets for the same type, depending on the hierarchy of the model.

Objects may have variables (variables of type BaseDataVariableType or descendants) and/or Properties (Attributes, of type PropertyType) associated with them. The variables of the objects have their own sheet with the same name as the associated object sheet, postfixed with '_VT'. The Properties of objects also have their own sheet with the same name as the associated object sheet, postfixed with '_PT'.

The content of the sheets will now be explained:

The Master sheet

The Master sheet contains information about the UA Types of the objects in the model; how types are used in the model hierarchy, and in which sheet to find them.

Column NameExplanation
TypeThe UA type, with namespace index, of the objects in this sheet. The number before the type name is the namespace index. The index is defined in the Namespaces sheet. The hierarchy of the model is suggested by spaces between ':' and the type name. If you enter types manually, you need not add spaces, the spaces are for visualization only.
SheetName of the sheet where the objects are defined. This name must be unique and correspond exactly with the name of the sheet. The name is limited to 29 characters (by Excel). The names are auto generated on export. The prefix of the sheet name reflects the hierarchy of the model ('1-1>' above). In the example above, '1-1>', says that instances in this sheet has parents in sheet 1 (the first 1). The second 1 indicates the instances number (of this type). The sign '>' indicates if the modelling rule is a placeholder (Optional-/MandatoryPlaceholder). If the last sign is '.', it is not a placeholder.
Include in importSetting this false will make the importer ignore instances in this sheet. This can be useful if the model is large and you have made changes to a small part of the model.

The Namespaces sheet

The Namespaces sheet contains the namespaces used in the model. It also contains the namespace index for each namespace. The index is used elsewhere in the TMI as part of the UA types. Namespace indexes may vary from server to server and after restart of servers. This table is used as a map when importing to a server, and it is never necessary to change the index in the file.

Column NameExplanation
NamespaceThe namespace URI.
IndexThe namespace index associated with a namespace. The index may vary between servers and server restarts. Never change the Index in a TMI
EU NamespaceThe namespace URI of engineering units.
IndexThe namespace index associated with a EU namespace. The index may vary between servers and server restarts. Never change the Index in a TMI

The Object sheet

There may be many object sheets, with different names. This example shows the sheet called 1>BaseObjectType from our pump room example. Instances of type BaseObjectType will be in this sheet, as defined in the Master sheet. To add more objects of BaseObjectType, simply add rows in this sheet and type in the data for the objects.

Column NameExplanation
RelativePath

The relative path from the top node (the node that was selected for export). The RelativePath is a series of DisplayNames separated by '/'. See later examples of this.

You may reference instances outside of your model. The RelativePath will then start from the Objects node, Object/SomeOject...

An instance may have multiple parents, in this case, the relative paths are all entered, separated by ';'. In this case The Reference column must also contain all references, separated by ';', in the same order as in RelativePath.

ReferenceThe reference to this instance from its parent. Note that no namespace index is needed, it is assumed that references are not extended and therefore are unique by name.
BrowseNameThe BrowseName of the object.
DisplayNameThe DisplayName of the object. If left blank, the object will not be created unless the ModellingRule is Mandatory.
NodeIdThe NodeId of the object. If left blank, it will be generated on import.
DescriptionThe Description attribute of the object.
ModellingRuleThe ModellingRule of the object. This column is for information only, and will not be set on import. The ModellingRule is defined in the type this object is a part of.

Lets look at another object sheet, 1-1>BaseObjectType:

We see from the RelativePath column that this pump is a child of PumpHouse.

The variable sheet

The variable sheet defines variables for objects in the Object sheet. Each Object sheet has an associated variable sheet. The variable sheet has the same name as the object sheet, postfixed with '_VT'.

All types in this sheet is, or inherits, BaseVariableType. In addition to standard properties (of type PropertyType) of BaseVariableType, properties from the UA DataAccess definition are added in this sheet, for convenience.

The UA DataAccess properties are:

  • InstrumentRange
  • EURange
  • EngineeringUnits
  • Definition
  • ValuePrecision
  • TrueState
  • FalseState

Any properties outside this scope are located in the _PT sheet (PropertyType sheet).

The variable sheet for instances in 1-1>BaseObjectType, is:

Column NameExplanation
RelativePathThe relative path from the top node (the node that was selected for export). The RelativePath is a series of DisplayNames separated by '/'.
Reference

The reference to this instance from its parent. Note that no namespace index is needed, it is assumed that references are not extended and therefore are unique by name.

TypeUA type of this variable. A type that inherits from BaseVariableType.
BrowseName

The BrowseName of the instance.

DisplayName

The DisplayName of the instance. If left blank, the instance will not be created unless the ModellingRule is Mandatory.

NodeIdThe NodeId of the instance. If left blank, it will be generated on import.
Description

The Description attribute of the instance.

ModellingRule

The ModellingRule of the instance.

InitialValueThe initial value of the variable. The value the variable will have after an Apis restart. This can be useful for variables that are not mapped.
DataTypeThe data type of the variable value.
EngineeringUnitsUnit of the variable. See the Unit sheet for all available units.
EngineeringUnitsId

The NodeId of the EngineeringUnits property. If left blank, it will be generated on import.

EURangeNormal operating range for this value.
EURangeId

The NodeId of the EURange property. If left blank, it will be generated on import.

InstrumentRangeThe value range that can be returned by the instrument.

InstrumentRangeId

The NodeId of the InstrumentRange property. If left blank, it will be generated on import.

ValuePrecisionThe maximum precision that the server can maintain for the value.

ValuePrecisionId

The NodeId of the ValuePrecision property. If left blank, it will be generated on import.

DefinitionA vendor-specific, human readable string that specifies how the value is calculated.
DefinitionIdThe NodeId of the Definition property. If left blank, it will be generated on import.
StoreToIMSStore the value to a historian.
StoreToIMSIdThe NodeId of the StoreToIMS property. If left blank, it will be generated on import.
FalseStateString to be associated with this value when it is FALSE
FalseStateIdThe NodeId of the FalseState property. If left blank, it will be generated on import.
TrueStateString to be associated with this value when it is TRUE
TrueStateIdThe NodeId of the TrueState property. If left blank, it will be generated on import.
ExpressionAn expression used to calculate the value
ExternalItem1An external item that the value depends on. There may be more than one ExternalItem. Make a new column for each and name them ExternalItem2 ... ExternalItemN

The Property sheet

The Property sheet defines properties of the UA type PropertyType. Each Instance sheet has an associated Property sheet. The Property sheet has the same name as the object sheet, postfixed with '_PT'. Some properties are, for convenience, in the Object and Variable sheets, the rest of the properties are in this sheet. Properties of objects and properties their variables are listed in this sheet. We can see from RelativePath in the sheet below that the property 'SerialNo' is a property of object 'Pump1'.

Column NameExplanation
RelativePathThe relative path from the top node (the node that was selected for export). The RelativePath is a series of DisplayNames separated by '/'.
ReferenceThe reference to this property from its parent.
PropertyTypeThe UA type of the property.
BrowseNameThe BrowseName of the property.
DisplayNameThe DisplayName of the property. If left blank, the property will not be created unless the ModellingRule is Mandatory.
NodeIdThe NodeId of the property. If left blank, it will be generated on import.
DescriptionThe Description attribute of the property.
ModellingRuleThe ModellingRule of the property.
ValueThe value attribute of the property
DataTypeThe data type of the value

The Unit sheet

The Unit sheet contains all available units on the UA server when the model was exported. Values defined for the EngineeringUnits property are units from this list. In the TMI form, a drop-down that contains all units is available for all EngineeringUnits. You can type only the DisplayName of the unit if you want, the first unit that matches the DisplayName will then be selected (the same DisplayName may appear in several namespaces). The format of the unit code is [eu namespace index]:[displayname][[id]].

Column NameExplanation
DisplayNameThe DisplayName of the unit
DescriptionThe Description of the unit
IdA unique unit id
EU NamespaceThe namespace of the unit
CodeA code used to uniquely define a unit in the spreadsheet