States in the System

At any given time, objects in AspenTech Inmation OT DataFabric exist in a state that is dependent on its situation regarding connectivity and functionality. The state of an object changes when it is enabled/disabled, connected/disconnected or some other action happens.

Object states are visible in the WebStudio System Config App (through the Object Lens Header) and read-accessible through Lua Script. The first element of the User State describes the communication state of the object, the second element describes the actual state of the object (good, warning or error: indicated in WebStudio by green, yellow and red lights by the object in the Model Panel.

States are generally managed by the system; for details see the System-managed States below. The only way for users to directly affect the state of an object, is by enabling/disabling it or setting it to online or offline state as addressed in the following section.

User-controlled Object States

Right-clicking an Object in the Model Tree of the System Config App opens the context menu for basic administrative tasks regarding the object. Besides creating a new object and removing or renaming an existing object, there are four options that affect the functionality state of an object.

Enabled & Disabled

The enabled & disabled states control whether an object and all its descendant objects execute their functionality or not. Changing this state for a higher level object affects the state of all its descendant objects in the same manner. That means, if a higher level object is disabled and immediately re-enabled, all its descendant objects are set to enabled state, no matter if a descendant object was already in disabled state before higher level object was disabled. The original state of lower level objects is lost when the state of higher level objects is changed.

Also see the WebStudio documentation on Enabled and Disabled Objects.

Online & Offline

The online & offline states are similar to the enabled & disabled states, in such a way that if an object is set to offline, neither its own functionality nor that of its descendant objects is executed. It differs in that regard, that objects in offline state are not affected by state changes made on any of its ancestor objects. If an object is in offline state, its own functionality and that of its descendant objects is not executed until this object is explicitly set back to the online state.

Also see the WebStudio documentation on Online and Offline Objects.

System-managed States

The object state bitmask can be populated by the following state flags:

Table 1. Object State Flags - Object State Bitmask
State Flag State Type Description

COMM_EMPTY

Communication

This flag is present for objects that don’t have direct communication capability. This is the case for most objects except for the Node and DataSource objects.

COMM_NEUTRAL

Communication

Communication state is neutral. For example, when a child Node or Datasource object is disabled.

COMM_GOOD

Communication

Communication state is good. For example, when the child Node is enabled and communicating with the parent Node.

COMM_WARNING

Communication

Communication state is Warning. There is partial communication however the protocol is incomplete. For example, security credentials for part of the protocol.

COMM_ERROR

Communication

Communication State Bad. For example, when a child Node is unable to connect to the parent Node.

STATE_NEUTRAL

Actual State

Object State is neutral, for example when an item is disabled.

STATE_GOOD

Actual State

Object State is good, for example when an I/O item is subscribed and producing real-time updates.

STATE_WARNING

Actual State

Object State is Warning. For example, when an object is not properly configured.

STATE_ERROR

Actual State

Object State is Error. For example, when a dynamic I/O item is not updating.

OBJ_ENABLED

Additional

Object is enabled.

OBJ_DYNAMIC

Additional

Object is dynamic, for example an I/O that produces real-time values.

OBJ_SECURITY_REF

Additional

Object has a security reference.

OBJ_OBJECT_REF

Additional

Object has a reference to another object.

OBJ_EXPLORING

Additional

Object is exploring, for example when a Datasource is being browsed.

OBJ_REGISTERING

Additional

Object is Registering. For example, when an OPC Datasource registers in the system.

OBJ_CLASS_MISMATCH

Additional

Object has mismatched class versions between components. This could be the case for an object below a Node that has a different version than the parent.

Internally, the current state of an object in the system is stored in a bitmask containing flags from the User State flag group, that is made up of different elements corresponding to different aspects of the state of the object.

The state bitmask for an object will always contain one communication state flag and one actual object state flag. The additional flags in the bitmask are populated depending on the object.

Examples

  • Correctly configured Node and DataSource objects that are connected and stable will usually have the following state bitmask:

    COMM_GOOD | STATE_GOOD | OBJ_ENABLED
  • An I/O item, Event Stream or GenItem object receiving dynamic updating values will in normal circumstances have this bitmask:

    COMM_EMPTY | STATE_GOOD | OBJ_ENABLED | OBJ_DYNAMIC
  • A newly created DataHolder item to which no value has yet been written will have the following bitmask:

    COMM_EMPTY | STATE_ERROR | OBJ_ENABLED | OBJ_DYNAMIC

    The object error state will change to “Good” when a value is written to the object.

  • An object that is below a Node with a different class version to the Top-Level Node. This is often the case when Nodes have Component Version Policy Property set to Manual Permissive.

    COMM_EMPTY | STATE_GOOD | OBJ_ENABLED | OBJ_CLASS_MISMATCH | OBJ_DYNAMIC