Skip to content

ISA-95 Decoder#

The ISA-95 Decoder task resolves the ISA-95 equipment hierarchy of a MES entity. Given an Enterprise, Site, Facility, Area, or Resource, it emits the name of each ISA-95 level that can be derived from that entity, along with the complete resolution as a single object.

ISA-95 Decoder Task box on Data Flow

Use it together with the Entity Instance task to enrich equipment data with its plant location, for example before posting a measurement to Data Platform.

Details#

Fields Details
Scope Connect IoT
Data Platform
Enterprise Integration
Factory Automation
Workflow Data flow
Control flow
IsProtocol flag

Inputs#

Name Data Type Description
entity EntityType The MES entity whose ISA-95 hierarchy is resolved. It must be an Enterprise, Site, Facility, Area, or Resource
timeToLive Integer Overrides the Time To Live setting for this activation, in milliseconds
Activate any Triggers task execution

Outputs#

Name Data Type Description
raw Object The complete resolution, with one property per ISA-95 level
enterprise String The name of the Enterprise
site String The name of the Site
facility String The name of the Facility
area String The name of the Area
productionLine String The name of the Production Line Area or of the Line Resource
storageArea String The name of the Area, when it is a Storage Area
storageUnit String The name of the Resource, when its processing type is Storage
workCell String The name of the Resource, when its processing type is Process, or of its closest Process parent Resource
Success Boolean Returns true if the task completes successfully
Error Error Contains information about any error that occurs

Table: ISA-95 Decoder outputs

Settings#

The General tab includes standard task settings and the following parameters:

ISA-95 Decoder Task Settings

Name Data Type Default Value Description
Reload in every change Boolean false When enabled, the hierarchy is resolved from the system on every activation, ignoring the cache
Time To Live Integer 60000 Amount of time, in milliseconds, that a resolved hierarchy is kept in the cache. Set it to 0 to disable caching

Table: ISA-95 Decoder general settings

And the following retries settings:

Setting Data Type Default Description
Number of Retries integer 30 The maximum number of attempts the IoT process (client) makes to call the MES backend. Only the transient failures listed in Retry Mechanism are retried; any other failure is reported without a further attempt.
Sleep Time between retries (ms) integer 1000 Number of milliseconds to wait after each attempt that ends in a transient failure, including the last attempt, before the task reports the error.
Number of System Retries integer 10 The maximum number of attempts the MES backend makes to call the target service if the execution fails.

Multiplicative Retry Effect

Retry limits are cumulative. In the event of a persistent target service failure, the total number of requests generated will be the product of the Client Retries (N) and the Backend Retries (M). For example, if both are set to 10, a single IoT request could result in up to 100 total attempts (N x M), which may lead to system congestion or high latency.

Behavior#

Resolution#

The task resolves the hierarchy upwards from the entity it receives, so the outputs it can fill depend on the entity type:

Entity Resolved levels
Enterprise Enterprise
Site Enterprise, Site
Facility Enterprise, Site, Facility
Area Enterprise, Site, Facility, and the Area itself
Resource Enterprise, Site, Facility, its Area, the Resource itself, and its parent Resources

Table: ISA-95 levels resolved per entity type

Enterprise, Site, and Facility are read from the Facility of the entity's Area. Because a Site and its Enterprise are optional in the plant model, the enterprise and site outputs can have no value even when the facility output has one.

An Area is mapped according to its area type:

  • A plain Area fills the area output with its own name, even when it is nested under another Area.
  • A Production Line Area fills the productionLine output, and a Storage Area fills the storageArea output. In both cases, the area output holds the name of the top-most Area above it.

A Resource is then mapped according to its processing type and its parent Resources. The Resource mapping is applied after the Area mapping, so a Line Resource replaces the Production Line Area in the productionLine output.

Processing type Mapping
Storage Fills the storageUnit output. Parent Resources are ignored, so workCell has no value
Line Fills the productionLine output
Process Fills the workCell output. If its top-most parent Resource is a Line, that Line fills the productionLine output
Any other The closest parent Resource with the Process processing type, if any, fills the workCell output

Table: Resource mapping per processing type

A Line parent is only used for a Process Resource. Any other Resource under a Line, such as a Load Port, gets the productionLine output from its Area, which is the Production Line Area if there is one.

Examples#

The examples below use the following plant model. Each Resource belongs to the nearest Area above it.

flowchart TD
    enterprise[Enterprise1] --> site[Site1] --> facility[Facility1] --> area1[Area1<br/>Area]
    area1 --> plArea1[PLArea1<br/>Production Line Area]
    area1 --> sArea1[SArea1<br/>Storage Area]
    plArea1 --> line1[Line1<br/>Line] --> process1[Process1<br/>Process] --> loadPort2[LoadPort2<br/>Load Port]
    plArea1 --> process0[Process0<br/>Process] --> process2[Process2<br/>Process]
    sArea1 --> storage1[Storage1<br/>Storage]
    area1 --> line2[Line2<br/>Line] --> process3[Process3<br/>Process] --> process4[Process4<br/>Process]
    area1 --> process5[Process5<br/>Process]
    process5 --> loadPort1[LoadPort1<br/>Load Port]
    process5 --> storage2[Storage2<br/>Storage]

The following table shows the outputs when each of these Resources is the input entity. All of them also fill enterprise (Enterprise1), site (Site1), and facility (Facility1). Empty cells have no value.

Input Resource area productionLine storageArea storageUnit workCell
Process1 Area1 Line1 Process1
Line1 Area1 Line1
LoadPort2 Area1 PLArea1 Process1
Process0 Area1 PLArea1 Process0
Process2 Area1 PLArea1 Process2
Storage1 Area1 SArea1 Storage1
Process4 Area1 Line2 Process4
LoadPort1 Area1 Process5
Storage2 Area1 Storage2

Table: Resolution examples

When the input entity is above the Area level, only the levels down to that entity are filled. For example, Site1 as the input entity fills enterprise and site, and every other output has no value.

The raw output holds all levels in one object. Levels with no value are undefined, so they are left out when the object is serialized. For Process1, raw is:

{
    "enterprise": "Enterprise1",
    "site": "Site1",
    "facility": "Facility1",
    "area": "Area1",
    "productionLine": "Line1",
    "workCell": "Process1"
}

Typical Uses#

  • Add the plant location to equipment data before posting it to Data Platform with the Post Telemetry or Post Measurement task.
  • Build a hierarchical name, such as a topic or a tag path, from the enterprise, site, area, productionLine, and workCell outputs, skipping the levels that have no value.
  • Resolve the location of a Resource other than the one the controller is connected to, by passing that Resource from the Entity Instance task.

Caching#

Resolutions are cached per entity, using the entity type and identifier as the key. While a cached entry is valid, the task reuses it instead of calling the system, which keeps repeated activations for the same equipment inexpensive.

  • The cache entry is valid for the number of milliseconds set in Time To Live. Set it to 0 to resolve the hierarchy on every activation.
  • Enable Reload in every change to bypass the cache without disabling it, so an entry is refreshed instead of reused.
  • Only successful resolutions are cached. A failed call is retried on the next activation.
  • Concurrent activations for the same entity share one system call.

The cache is kept per Automation Controller and is not shared between controllers.

Note

A hierarchy that changes in the MES is only reflected after the cached entry expires. Lower Time To Live if your plant model changes often, at the cost of additional system calls.

Errors#

The task emits the Error output when:

  • The entity has no identifier or no type.
  • The entity type is not one of Enterprise, Site, Facility, Area, or Resource.
  • The entity has no ISA-95 hierarchy in the system.