Equipment models in ISA-95

Equipment models in ISA-95

Equipment is an object that has a defined role in the production process. Equipment can have properties, which define some temporary or permanent value, and can belong to classes, which provide templates to define and categorize related objects.

A packaging class, instance and sub units

All the equipment entities are connected through relationships. This page describes what these relationships are and when to use them.

Abstract diagram of equipment entity-relationships
classDiagram
equipment --> `equipment class` : defined by
`equipment class` o--> `equipment class` :made up of
`equipment class` --> `equipment class` :includes properties of
equipment *--> `equipment property` :has values of
`equipment class` *--> `equipment class property` :has properties of
`equipment class property` <.. `equipment property` :maps to 
equipment o--> equipment : made up of
`equipment property` o--> `equipment property` : contains
`equipment class property` o--> `equipment class property` : contains

The role-based hierarchy

The word role is key to understanding the ISA-95 equipment models. All equipment has a particular function in the wider operation. The scope of a role varies widely, from the execution of an enterprise-level schedule to the production of a single unit of material.

Equipment with broader scopes occupy higher levels, and they may be composed of lower-level equipment objects that perform more specialized roles. This composition of equipment is called the role-based equipment hierarchy.

Role-based equipment hierarchy

Your model can be explicit about the equipment’s position in the hierarchy through the equipmentLevel attribute.

classDiagram
class equipment {
+ id = "JF.SF.PA.PackL4.Capper"
+ description: "Capper line 4"
+ equipmentLevel = "workUnit"
}

Note that the lowest two levels distinguish equipment that has a storage role from equipment that has a production role.

When equipment has a production role, that role typically is scoped to the execution of an order or collection of orders. For example, in our fictional juice factory, equipment roles include:

  • The Springfield plant. A site-level equipment that organizes the production of all brands of juice.
  • The sugar storage zone. Where the Springfield site stores raw sugar in silos.
  • The mixing unit. a work unit that receives raw coloring, flavoring, and sugar as input and produces a bulk volume of Cosmic Blue juice material as output.

The role of work units, equipment on the lowest level, is typically to execute one order at a time. For that reason, PLCs and other controls-level equipment is typically below the scope of the ISA-95 equipment model —though the model may provide an interface for PLC to level-3 interaction.

Equipment is made up of equipment

Equipment is made up of other equipment. High-level equipment items are composed of equipment items with more granular functions. For example, the juice factory has a work center, packaging line 1, that is composed of 4 lower level units that perform specific packaging functions.

classDiagram
   equipment o--> equipment : made up of

Reasons to use isMadeOf

The isMadeOf relationship provides a way to organize equipment in its hierarchical structure. This structure often mimics the spatial hierarchy of the plant or the social hierarchy of the organization.

Besides this, the isMadeOf relationship provides a way to do the following:

  • Set required assemblies for sub items. For example, a process specifies a Sweeteners storage center it also logically specifies the equipment that that storage center contains (e.g. silos)
  • Query and compare work by zone of interest. For example, you could compare performance across all packing lines by querying the parent center.
  • Provide a view of the manufacturing operation that is intelligible from the business perspective. The equipment model focuses on the production of new material, not individual controls.

Query example: full composition of The Juice Factory

In the RhizeDB, the equipment isMadeUpOf relationship can be queried as follows. This response shows the entire equipment hierarchy for The Juice Factory enterprise.

Query and response
query enterprise{   
  enterprise: getEquipment(id:"JF.SF") {
    ...active
     isMadeUpOf {
      ...active    
      isMadeUpOf {
        ...active
        isMadeUpOf {
          ...active
          isMadeUpOf {
            ...active
            isMadeUpOf {
              ...active
            }
          }
        } 
      }
    }    
  }
}

fragment active on Equipment{
   activeVersion {
      id
      description
      equipmentLevel
   }
}
{
  "data": {
    "getEquipment": {
      "activeVersion": {
        "description": "Springfield",
        "equipmentLevel": "Site"
      },
      "isMadeUpOf": [
        {
          "activeVersion": {
            "description": "Loading Docks",
            "equipmentLevel": "Area"
          },
          "isMadeUpOf": [
            {
              "activeVersion": {
                "description": "Material Receiving",
                "equipmentLevel": "WorkCenter"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Loading Dock 1",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Loading Dock 2",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Loading Dock",
                    "equipmentLevel": "WorkUnit"
                  }
                }
              ]
            }
          ]
        },
        {
          "activeVersion": {
            "description": "Raw Materials",
            "equipmentLevel": "Area"
          },
          "isMadeUpOf": [
            {
              "activeVersion": {
                "description": "Sweetners",
                "equipmentLevel": "StorageZone"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Sugar Silo",
                    "equipmentLevel": "StorageUnit"
                  }
                }
              ]
            },
            {
              "activeVersion": {
                "description": "Colors",
                "equipmentLevel": "StorageZone"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Color Silo 1",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Silo 2",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Silo 3",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Silo 4",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Silo 5",
                    "equipmentLevel": "StorageUnit"
                  }
                }
              ]
            },
            {
              "activeVersion": {
                "description": "Flavors",
                "equipmentLevel": "StorageZone"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Flavor Silo 1",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Silo 2",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Silo 3",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Silo 4",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Silo 5",
                    "equipmentLevel": "StorageUnit"
                  }
                }
              ]
            },
            {
              "activeVersion": {
                "description": "Material Preparation",
                "equipmentLevel": "WorkCenter"
              },
              "isMadeUpOf": []
            },
            {
              "activeVersion": {
                "description": "Product totes",
                "equipmentLevel": "StorageZone"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Color Tote 1",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Tote 2",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Tote 3",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Tote 4",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Tote 5",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Tote 6",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Tote 7",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Tote 8",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Tote 9",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Color Tote 10",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 1",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 2",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 3",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 4",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 5",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 6",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 7",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 8",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 9",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Flavor Tote 10",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 1",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 2",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 3",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 4",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 5",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 6",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 7",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 8",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 9",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Sweetener Tote 10",
                    "equipmentLevel": "StorageUnit"
                  }
                }
              ]
            }
          ]
        },
        {
          "activeVersion": {
            "description": "Production",
            "equipmentLevel": "Area"
          },
          "isMadeUpOf": [
            {
              "activeVersion": {
                "description": "Mixing",
                "equipmentLevel": "WorkCenter"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Mixing Tank 1",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Mixing Tank 2",
                    "equipmentLevel": "WorkUnit"
                  }
                }
              ]
            }
          ]
        },
        {
          "activeVersion": {
            "description": "Bulk Juice",
            "equipmentLevel": "Area"
          },
          "isMadeUpOf": [
            {
              "activeVersion": {
                "description": "Juice Silos",
                "equipmentLevel": "StorageZone"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Juice Silo 1",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Juice Silo 2",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Juice Silo 3",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Juice Silo 4",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Juice Silo 5",
                    "equipmentLevel": "StorageUnit"
                  }
                }
              ]
            }
          ]
        },
        {
          "activeVersion": {
            "description": "Packaging",
            "equipmentLevel": "Area"
          },
          "isMadeUpOf": [
            {
              "activeVersion": {
                "description": "Packaging line 1",
                "equipmentLevel": "WorkCenter"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Filler Line 1",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Capper Line 1",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Case Packer Line 1",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Palletizer Line 1",
                    "equipmentLevel": "WorkUnit"
                  }
                }
              ]
            },
            {
              "activeVersion": {
                "description": "Packaging line 2",
                "equipmentLevel": "WorkCenter"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Filler Line 2",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Capper Line 2",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Case Packer Line 2",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Palletizer Line 2",
                    "equipmentLevel": "WorkUnit"
                  }
                }
              ]
            },
            {
              "activeVersion": {
                "description": "Packaging line 3",
                "equipmentLevel": "WorkCenter"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Filler Line 3",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Capper Line 3",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Case Packer Line 3",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Palletizer Line 3",
                    "equipmentLevel": "WorkUnit"
                  }
                }
              ]
            },
            {
              "activeVersion": {
                "description": "Packaging line 4",
                "equipmentLevel": "WorkCenter"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Filler Line 4",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Capper Line 4",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Case Packer Line 4",
                    "equipmentLevel": "WorkUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Palletizer Line 4",
                    "equipmentLevel": "WorkUnit"
                  }
                }
              ]
            }
          ]
        },
        {
          "activeVersion": {
            "description": "Packed Juice",
            "equipmentLevel": "Area"
          },
          "isMadeUpOf": [
            {
              "activeVersion": {
                "description": "Packed Juice",
                "equipmentLevel": "StorageZone"
              },
              "isMadeUpOf": [
                {
                  "activeVersion": {
                    "description": "Juice Rack 1",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Juice Rack 2",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Juice Rack 3",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Juice Rack 4",
                    "equipmentLevel": "StorageUnit"
                  }
                },
                {
                  "activeVersion": {
                    "description": "Juice Rack 5",
                    "equipmentLevel": "StorageUnit"
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Equipment can have properties

Properties are key value pairs that report some permanent or temporary condition of an object. Equipment can have 0 or many properties.

classDiagram
equipment *--> `equipment property` :has values of

For example, the Packaging line work center has properties for State, which reports whether the center is active or not. The work units that store raw material all have allowedMaterialClass property, which specifies what material can be stored.

Equipment properties can contain properties

A property itself can have a composition of properties. For example, a unit might have the dimension property that contains subproperties of width and height.

classDiagram
rectangularThing *--> `dimension (property)`  : "has values of"
`dimension (property)` *-->  length : "contains"
`dimension (property)` *-->  width : "contains"

`dimension (property)` *-->  height : "contains"

This contains relationship creates a container to group granular properties by some commonality. It also saves configuration time, since any equipment that has the parent property can logically have its child properties as well.

Equipment classes define equipment

Similar equipment might be defined by its equipment class. Classes minimize repetitive modelling of equal equipment and properties.

classDiagram
equipment --> `equipment class` : defined by

For example, the packing line work center always has a filler work unit as part of its composition. So, when there are 4 packing lines, there logically must be 4 fillers. To avoid individually tracking each filler and its configuration, you can create a fillers class that defines each member.

classDiagram
namespace Fillers {
  class `filler line 1`
  class `filler line 2`
  class `filler line 3`
  class `filler line 4`
}

Query example: all members of Packaging class

This example queries the Rhize DB for all members of the Packaging equipment class.

Example: query class for members
query equipmentClass{
  getEquipmentClass(id:"Packaging") {
    id
    equipmentVersions {
      id
      description
    }
  }
}
{
  "data": {
    "getEquipmentClass": {
      "id": "Packaging",
      "equipmentVersions": [
        {
          "id": "JF.SF.PA.PackL1",
          "description": "Packaging line 1"
        },
        {
          "id": "JF.SF.PA.PackL2",
          "description": "Packaging line 2"
        },
        {
          "id": "JF.SF.PA.PackL3",
          "description": "Packaging line 3"
        },
        {
          "id": "JF.SF.PA.PackL4",
          "description": "Packaging line 4"
        }
      ]
    }
  }
}

Equipment properties map to class properties

As equipment can have equipment properties, an equipment class can have equipment class properties. However, an equipment class property is only a key, not a value. When an equipment belongs to an equipment class, that equipment receives its properties. So, equipment properties map to the class properties.

classDiagram

equipment *--> `equipment \n property` :has values of
equipment *--> `equipment \n class` :defined by
`equipment \n class` *--> `equipment \n class \n property` :has properties of
`equipment \n class \n property` <.. `equipment \n property` :maps to 

Classes are abstract, and so class properties are abstract keys. An Equipment is tangible, and thus has a property key and an actual value.

Equipment classes can be made of other classes

As equipment can be made of equipment, so equipment classes can be made of equipment classes.

classDiagram
`packaging (class)` *-- fillers
`packaging (class)` *-- cappers
`packaging (class)` *-- packers
`packaging (class)` *-- palletizers

`packaging line 1` *-- filler 1
`packaging line 1` *-- capper 1
`packaging line 1` *-- packer 1
`packaging line 1` *-- palletizer 1