Reference
CLPM Terminology
The following terms are frequently used in control loop performance monitoring (CLPM).
Term | Description |
---|---|
CLPM | Control Loop Performance Monitoring |
PV (Process Variable) | This is the measured process variable, reflecting the actual state of the process that is being controlled. |
SP (Setpoint) | This is the desired value (target value) to which the PV is controlled. |
Error | This is the difference between the PV and SP. It is calculated as Error = PV-SP. Note that this is not an absolute value. |
Controller | The subsystem containing the control algorithm that manipulates the MV to control the PV to the SP. |
MV (Manipulated Variable) | The variable manipulated (adjusted) by the controller to control the PV to the SP. |
DV (Disturbance Variable) | A measured disturbance variable that can be used by the controller to compensate for the impact of the disturbance on the PV. |
P (Proportional Value) | Normally the Proportional Gain value of the PID controller. |
I (Integral Value) | Normally the Integral Gain value of the PID controller. |
D (Derivative Value) | Normally the Derivative Gain value of the PID controller. |
F (Filter Value) | Normally the Filter Time Constant value of the PID controller. |
Final Control Element (FCE)/ Actuator | The device that is physically affected by a change in the MV so as to have an impact on the process. |
Control Loop Asset Definition
The Control Loop Asset Definition specifies all the necessary attributes of a control loop asset. The various sections of the definition are detailed here. This is the definition to be used for the JSON asset ingestion file(s).
Define the Control Loop Asset
To define the control loop asset, perform the following steps:
- Define the asset classification.
- Create asset instances.
- Follow the instructions in the APM Asset documentation for creating asset instances.
- Set up tag classifications for outputs.
- Associate inputs and outputs for control loop assets.
Define the Asset Classification
Define the asset classification for the control loop asset.
Asset Classification: Reserved Attributes
The attributes in the following table are inherited as standard asset classification required attributes. No action is required on your part to modify them.
Property/Attribute | Data Type |
---|---|
Family Type | String |
Equipment Type | String |
Make | String |
Model | String |
Series | String |
Serial Number | String |
Maintenance Criticality Risk Score | Integer |
Fault Mode | String |
Asset Classification: Custom Attributes
The attributes in the table that follows are custom asset classification attributes specifically for control loop assets. You need to specify values for them.
Property/Attribute | Data Type | Range | Property Required? | Notes |
---|---|---|---|---|
Name | String | N/A | Required | Required as an analytic input in order to be able to log the loop name with any individual logging entries. |
Description | String | N/A | Optional | |
Loop Priority | Enumeration | Enumeration (High, Medium, Low) | Required | Used for filtering during visualization. |
Type | String | N/A | Required. Must be set to PID Control Loop | |
Lower SP Offset | Numeric | >0 | Required | Used to calculate the lower SP threshold. |
Upper SP Offset | Numeric | >0 | Required | Used to calculate the upper SP threshold. |
Set Up Tag Classifications for Outputs
Define each analytic output using the Control Loop KPI tag classification described in the table that follows.
Tag Classification
Required Property / Attribute | Data Type |
---|---|
Source Unit of Measure | String |
Data Type | String |
Category | String |
Maximum Operating Value | Double |
Minimum Operating Value | Double |
Highest Threshold Value | Double |
Lowest Threshold Value | Double |
Resolution | String |
Sensor Health Index Low Threshold | Double |
Sensor Health Index High Threshold | Double |
Sensor Health Index Flat Line Number | Integer |
Sensor Health Index Flat Line Epsilon | Double |
Bad Observation Persistent / Penalty Window | Integer |
False Alarm Probability | Double |
Missed Alarm Probability | Double |
Sample Failure Magnitudes Mean | Integer |
Sample Failure Magnitudes Variance | Integer |
Null Hypothesis Variance | Double |
NaN Test Weight | Double |
Outlier Test Weight | Double |
Flat Test Weight | Double |
Associate Analytic Inputs for Control Loop Assets
Specify analytic inputs by mapping timeseries tags onto asset instances defined by the control loop asset classification.
Each analytic input is uniquely identified by the Tag Alias
, and the data type must match the corresponding type specified in the table that follows.
However, no specific tag classification is required for analytic inputs. You may use whatever tag classification you want to use.
Maximum Operating Value
and Minimum Operating Value
tag attributes for the PV are significant because they are used for data clipping.Tag Alias | Tag Description | Tag Attributes (Required) | Tag Value Ranges | User Input Required? | Required? | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
UOM | Data Type | Category | Maximum Operating Value | Minimum Operating Value | Highest Threshold Value | Lowest Threshold Value | |||||
Setpoint | The setpoint for the process variable (PV) represents the desired value for PV. | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | Any | No | Yes |
PV | Process variable | Specifies the appropriate unit of measure. | Numeric | Any |
Used as a custom attribute to specify the upper limit of the PV tag. This is the upper Engineering (clipping) limit for PV. Data outside of this limit is not used for calculations. |
Used as a custom attribute to specify the lower limit of the PV tag. This is the lower Engineering (clipping) limit for PV. Data outside of this limit is not used for calculations. | Any | Any | Any | No | Yes |
MV | The controller output or "Manipulated Variable" | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | Percentage [0%-100%] | No | Yes |
P | Proportional value | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | >0 | Optional | No |
I | Integral value | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | >0 | Optional | No |
D | Derivative value | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | >0 | Optional | No |
F | Filter value | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | >0 | Optional | No |
Control Mode | Control Mode | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any |
Enumeration (Auto, Manual, Cascade, Shutdown) | No | Yes |
Associate Analytic Outputs for Control Loop Assets
Specify analytic outputs by mapping timeseries tags onto asset instances defined by the control loop asset definition.
Analytic Outputs
Each output is identified with theControl Loop KPI
tag classification.- The Tag Source ID must be of the form
<AssetID>.<Output Tag Name>
for all analytic outputs. - The
<AssetID>
in the table that follows refers to the ID of the asset to which the tag belongs. - For example, observe that the Tag Association in the Example Loop Asset for
Percentage Controller Output
, for theLoop1
asset with IDLoop1
, the Tag Source ID must beLoop1.Percentage Controller Output
. - When manually creating the tags on the asset, this property is referred to as the
Source ID
. - When constructing
Asset Ingestion files
, this property is referenced using theID
in the tags section.
- Control Type
- MV
- PV
- SP
Otherwise, it is bad.
Output Tag Name | Tag Description | Tag Attributes (Required) | Tag Value Ranges | Quality | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
UOM | Data Type | Category | Maximum Operating Value | Minimum Operating Value | Highest Threshold Value | Lowest Threshold Value | Tag Source ID | ||||
Percentage Controller Output | The average MV value (expressed as a %). | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Controller Output | Percentage [0%-100%] | Master Quality |
Percentage Not Utilized | Percentage Not Utilized | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Not Utilized | Percentage [0%-100%] | Master Quality |
Percentage MV Saturation | Percentage MV Saturation | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage MV Saturation | Percentage [0%-100%] | Master Quality |
Overall Performance | Overall Performance | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.Overall Performance | Percentage [0%-100%] | Master Quality |
Movement Index | Gives the sum of all changes of the MV, divided by 100 | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.Movement Index | Master Quality | |
Control Amplitude | Calculates the sum of all MV rate of change values divided by the total number of samples | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.Control Amplitude | Master Quality | |
Reversal Count | The number of times MV changes direction | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.Reversal Count | MV Quality | |
Reversal Amplitude | Percentage Reversal Amplitude | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Reversal Amplitude | Percentage [0%-100%] | Master Quality |
Integrated Sum | Integrated Sum | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.Integrated Sum | Master Quality | |
PV Error Average | PV Error Average | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.PV Error Average | Master Quality | |
PV Error Absolute Average | PV Error Absolute Average | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.PV Error Absolute Average | Master Quality | |
PV Error Standard Deviation | PV Error Standard Deviation | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.PV Error Standard Deviation | Master Quality | |
PV Variance | PV Variance | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.PV Variance | Master Quality | |
PV Variability | PV Variability | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.PV Variability | Master Quality | |
Percentage Good Quality | Percentage Good Quality | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Good Quality | Percentage [0%-100%] | Master Quality |
Total PIDF Changes | Total PIDF Changes | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.Total PIDF Changes | >=0 | Worst Quality of P, I, D, F |
Percentage Manual | Percentage Manual | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Manual | Percentage [0%-100%] | Master Quality |
Percentage Manual LL Exceeded | Percentage Manual LL Exceeded | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Manual LL Exceeded | Percentage [0%-100%] | Master Quality |
Percentage Manual UL Exceeded | Percentage Manual UL Exceeded | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Manual UL Exceeded | Percentage [0%-100%] | Master Quality |
Percentage Auto | Percentage Auto | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Auto | Percentage [0%-100%] | Master Quality |
Percentage Auto LL Exceeded | Percentage Auto LL Exceeded | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Auto LL Exceeded | Percentage [0%-100%] | Master Quality |
Percentage Auto UL Exceeded | Percentage Auto UL Exceeded | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Auto UL Exceeded | Percentage [0%-100%] | Master Quality |
Percentage Cascade | Percentage Cascade | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Cascade | Percentage [0%-100%] | Master Quality |
Percentage Cascade LL Exceeded | Percentage Cascade LL Exceeded | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Cascade LL Exceeded | Percentage [0%-100%] | Master Quality |
Percentage Cascade UL Exceeded | Percentage Cascade UL Exceeded | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | AssetID>.Percentage Cascade UL Exceeded | Percentage [0%-100%] | Master Quality |
Percentage Shutdown | Percentage Shutdown | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Shutdown | Percentage [0%-100%] | Master Quality |
Percentage Shutdown LL Exceeded | Percentage Shutdown LL Exceeded | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Shutdown LL Exceeded | Percentage [0%-100%] | Master Quality |
Percentage Shutdown UL Exceeded | Percentage Shutdown UL Exceeded | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Shutdown UL Exceeded | Percentage [0%-100%] | Master Quality |
Percentage Control On | Percentage Control On | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Control On | Percentage [0%-100%] | Master Quality |
Statistics Period | The time period in seconds over which the KPIs have been calculated. | Specifies the appropriate unit of measure. | Numeric | Any | Any | 0 | Any | 0 | <AssetID>.Statistics Period | >=0 | None |
Percentage Limits Exceeded | Percentage Limits Exceeded | Specifies the appropriate unit of measure. | Numeric | Any | 100 | 0 | 100 | 0 | <AssetID>.Percentage Limits Exceeded | Percentage [0%-100%] | Master Quality |
PV Error | PV Error | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.PV Error | Master Quality | |
Lower SP Threshold | Lower SP Threshold | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.Lower SP Threshold | Setpoint Quality | |
Upper SP Threshold | Upper SP Threshold | Specifies the appropriate unit of measure. | Numeric | Any | Any | Any | Any | Any | <AssetID>.Upper SP Threshold | Setpoint Quality | |
MV Oscillation Count | MV Oscillation Count | Specifies the appropriate unit of measure. | Numeric | Any | Any | 0 | Any | 0 | <AssetID>.MV Oscillation Count |
Example Loop Asset for APM Asset Ingestion
The following sample JSON gives an example of the definition of a control loop asset for ingestion into APM.
The sample JSON below is split up into asset classification, asset instances, tag classifications, and tag associations.
This example produces two loops (Loop1 and Loop2).
Asset Classification
{
"classifications": [
{
"id": "CLPM-Enterprise",
"name": "Control Loop Enterprise Classification",
"description": "",
"ccomClass": "ENTERPRISE_TYPE",
"parent": null
},
{
"id": "CLPM-Site",
"name": "Control Loop Site Classification",
"description": "",
"ccomClass": "SITE_TYPE",
"parent": null
},
{
"id": "CLPM-Segment",
"name": "Control Loop Segment Classification",
"description": "",
"ccomClass": "SEGMENT_TYPE",
"parent": null
},
{
"id": "ControlLoop",
"name": "Control Loop",
"description": "",
"ccomClass": "ASSET_TYPE",
"parent": null,
"properties": [
{
"id": "Name",
"value": [],
"type": "String"
},
{
"id": "Description",
"value": [],
"type": "String"
},
{
"id": "Loop Priority",
"value": [
"Medium"
],
"type": "String"
},
{
"id": "Type",
"value": [],
"type": "String"
},
{
"id": "Lower SP Offset",
"value": [
],
"type": "Double"
},
{
"id": "Upper SP Offset",
"value": [
],
"type": "Double"
}
]
}
]
}
Instances
{
"instances": [
{
"id": "SavoryFoodsInc",
"name": "Savory Foods Inc",
"description": "This is a digital manufacturing enterprise",
"classification": "CLPM-Enterprise",
"ccomClass": "ENTERPRISE"
},
{
"id": "CapeTownSouthAfricaFactory",
"name": "Cape Town, South Africa Factory",
"description": "This is the Cape Town, South African factory",
"properties": [
{
"id": "Address",
"value": [
"Cape Town"
],
"type": "string"
}
],
"classification": "CLPM-Site",
"ccomClass": "SITE"
},
{
"id": "TortillaPlant",
"name": "Tortilla Plant",
"description": "This is the tortilla plant",
"properties": [
{
"id": "PlantNumber",
"value": [
"TortillaPlant001"
],
"type": "string"
}
],
"classification": "CLPM-Segment",
"ccomClass": "SEGMENT"
},
{
"id": "Loop1",
"name": "Loop1",
"description": "The tortilla fryer",
"properties": [
{
"id": "Lower SP Offset",
"value": [
20
],
"type": "Double"
},
{
"id": "Upper SP Offset",
"value": [
120
],
"type": "Double"
}
],
"classification": "ControlLoop",
"ccomClass": "ASSET"
},
{
"id": "Loop2",
"name": "Loop2",
"description": "The tortilla fryer",
"properties": [
{
"id": "alias",
"value": [
"Fryer"
],
"type": "string"
},
{
"id": "Lower SP Offset",
"value": [
30
],
"type": "Double"
},
{
"id": "Upper SP Offset",
"value": [
150
],
"type": "Double"
}
],
"classification": "ControlLoop",
"ccomClass": "ASSET"
}
],
"connections": [
{
"from": {
"id": "CapeTownSouthAfricaFactory",
"ccomClass": "SITE"
},
"to": [
{
"type": "parent",
"id": "SavoryFoodsInc",
"ccomClass": "ENTERPRISE"
}
]
},
{
"from": {
"id": "TortillaPlant",
"ccomClass": "SEGMENT"
},
"to": [
{
"type": "parent",
"id": "CapeTownSouthAfricaFactory",
"ccomClass": "SITE"
}
]
},
{
"from": {
"id": "Loop1",
"ccomClass": "ASSET"
},
"to": [
{
"type": "parent",
"id": "TortillaPlant",
"ccomClass": "SEGMENT"
}
]
},
{
"from": {
"id": "Loop2",
"ccomClass": "ASSET"
},
"to": [
{
"type": "parent",
"id": "TortillaPlant",
"ccomClass": "SEGMENT"
}
]
}
]
}
Tag Classifications
{
"tagClassifications": [
{
"id": "ControlLoopKPI",
"name": "Control Loop KPI",
"description": "",
"unitGroup": "",
"reservedProperties": {
"uom": "",
"dataType": "Double",
"category": ""
}
},
{
"id": "AnalyticInputs",
"name": "AnalyticInputs",
"description": "Tag Classification for analytic input tags",
"unitGroup": ""
}
]
}
Tag Associations
{
"tagAssociations": [
{
"monitoredEntity": {
"id": "Loop1",
"ccomClass": "ASSET"
},
"tags": [
{
"name": "Control Mode",
"id": "Loop1.ControlMode",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"timeseriesLink": "Loop1.ControlMode",
"dataType": "String"
},
"aliases": [
"Control Mode"
]
},
{
"name": "D",
"id": "Loop1.D",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"D"
]
},
{
"name": "F",
"id": "Loop1.F",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"F"
]
},
{
"name": "I",
"id": "Loop1.I",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"I"
]
},
{
"name": "MV",
"id": "Loop1.CV",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"MV"
],
"properties": [
{
"id": "Maximum Operating Value",
"value": [
120
],
"type": "Double"
},
{
"id": "Minimum Operating Value",
"value": [
0
],
"type": "Double"
}
]
},
{
"name": "P",
"id": "Loop1.P",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"P"
]
},
{
"name": "PV",
"id": "Loop1.PV",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"PV"
],
"properties": [
{
"id": "Maximum Operating Value",
"value": [
120
],
"type": "Double"
},
{
"id": "Minimum Operating Value",
"value": [
0
],
"type": "Double"
}
]
},
{
"name": "Setpoint",
"id": "Loop1.Setpoint",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"Setpoint"
]
},
{
"name": "Control Amplitude",
"id": "Loop1.Control Amplitude",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Integrated Sum",
"id": "Loop1.Integrated Sum",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Lower SP Threshold",
"id": "Loop1.Lower SP Threshold",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Movement Index",
"id": "Loop1.Movement Index",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "MV Oscillation Count",
"id": "Loop1.MV Oscillation Count",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"minOperatingValue": 0,
"lowestThresholdValue": 0
}
},
{
"name": "Overall Performance",
"id": "Loop1.Overall Performance",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Percentage Auto LL Exceeded",
"id": "Loop1.Percentage Auto LL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Auto UL Exceeded",
"id": "Loop1.Percentage Auto UL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Auto",
"id": "Loop1.Percentage Auto",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Cascade LL Exceeded",
"id": "Loop1.Percentage Cascade LL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Cascade UL Exceeded",
"id": "Loop1.Percentage Cascade UL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Cascade",
"id": "Loop1.Percentage Cascade",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Controller Output",
"id": "Loop1.Percentage Controller Output",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Control On",
"id": "Loop1.Percentage Control On",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Good Quality",
"id": "Loop1.Percentage Good Quality",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Limits Exceeded",
"id": "Loop1.Percentage Limits Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Manual LL Exceeded",
"id": "Loop1.Percentage Manual LL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Manual UL Exceeded",
"id": "Loop1.Percentage Manual UL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Manual",
"id": "Loop1.Percentage Manual",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage MV Saturation",
"id": "Loop1.Percentage MV Saturation",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Not Utilized",
"id": "Loop1.Percentage Not Utilized",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Shutdown LL Exceeded",
"id": "Loop1.Percentage Shutdown LL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Shutdown UL Exceeded",
"id": "Loop1.Percentage Shutdown UL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Shutdown",
"id": "Loop1.Percentage Shutdown",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "PV Error Absolute Average",
"id": "Loop1.PV Error Absolute Average",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "PV Error Average",
"id": "Loop1.PV Error Average",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "PV Error Standard Deviation",
"id": "Loop1.PV Error Standard Deviation",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "PV Error",
"id": "Loop1.PV Error",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "PV Variability",
"id": "Loop1.PV Variability",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "PV Variance",
"id": "Loop1.PV Variance",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Reversal Amplitude",
"id": "Loop1.Reversal Amplitude",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Reversal Count",
"id": "Loop1.Reversal Count",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"minOperatingValue": 0,
"lowestThresholdValue": 0
}
},
{
"name": "Total PIDF Changes",
"id": "Loop1.Total PIDF Changes",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Upper SP Threshold",
"id": "Loop1.Upper SP Threshold",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Statistics Period",
"id": "Loop1.Statistics Period",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
}
]
},
{
"monitoredEntity": {
"id": "Loop2",
"ccomClass": "ASSET"
},
"tags": [
{
"name": "Lower PV Limit",
"id": "Loop2.LowerPVLimit",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"Lower PV Limit"
]
},
{
"name": "Upper PV Limit",
"id": "Loop2.UpperPVLimit",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"Upper PV Limit"
]
},
{
"name": "Setpoint",
"id": "Loop2.Setpoint",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"Setpoint"
]
},
{
"name": "PV",
"id": "Loop2.PV",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"PV"
],
"properties": [
{
"id": "Maximum Operating Value",
"value": [
120
],
"type": "Double"
},
{
"id": "Minimum Operating Value",
"value": [
0
],
"type": "Double"
}
]
},
{
"name": "MV",
"id": "Loop2.MV",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"MV"
],
"properties": [
{
"id": "Maximum Operating Value",
"value": [
100
],
"type": "Double"
},
{
"id": "Minimum Operating Value",
"value": [
0
],
"type": "Double"
}
]
},
{
"name": "P",
"id": "Loop2.P",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"P"
]
},
{
"name": "I",
"id": "Loop2.I",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"I"
]
},
{
"name": "D",
"id": "Loop2.D",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"D"
]
},
{
"name": "F",
"id": "Loop2.F",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "Double"
},
"aliases": [
"F"
]
},
{
"name": "Control Mode",
"id": "Loop2.ControlMode",
"classification": "AnalyticInputs",
"unit": "",
"reservedProperties": {
"dataType": "String"
},
"aliases": [
"Control Mode"
]
},
{
"name": "Total PIDF Changes",
"id": "Loop2.Total PIDF Changes",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Percentage Manual",
"id": "Loop2.Percentage Manual",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Manual LL Exceeded",
"id": "Loop2.Percentage Manual LL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Manual UL Exceeded",
"id": "Loop2.Percentage Manual UL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Auto",
"id": "Loop2.Percentage Auto",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Auto LL Exceeded",
"id": "Loop2.PercentageAuto LL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Auto UL Exceeded",
"id": "Loop2.Percentage Auto UL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Cascade",
"id": "Loop2.Percentage Cascade",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Cascade LL Exceeded",
"id": "Loop2.Percentage Cascade LL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Cascade UL Exceeded",
"id": "Loop2.Percentage Cascade UL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Shutdown",
"id": "Loop2.Percentage Shutdown",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Shutdown LL Exceeded",
"id": "Loop2.Percentage Shutdown LL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Shutdown UL Exceeded",
"id": "Loop2.Percentage Shutdown UL Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Control On",
"id": "Loop2.Percentage Control On",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Controller Output",
"id": "Loop2.Percentage Controller Output",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Good Quality",
"id": "Loop2.Percentage Good Quality",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage Not Utilized",
"id": "Loop2.Percentage Not Utilized",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Percentage MV Saturation",
"id": "Loop2.Percentage MV Saturation",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Overall Performance",
"id": "Loop2.Overall Performance",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Movement Index",
"id": "Loop2.Movement Index",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Control Amplitude",
"id": "Loop2.Control Amplitude",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Reversal Count",
"id": "Loop2.Reversal Count",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"minOperatingValue": 0,
"lowestThresholdValue": 0
}
},
{
"name": "Reversal Amplitude",
"id": "Loop2.Reversal Amplitude",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "Integrated Sum",
"id": "Loop2.Integrated Sum",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "PV Error Average",
"id": "Loop2.PV Error Average",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "PV Error Absolute Average",
"id": "Loop2.PV Error Absolute Average",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "PV Error Standard Deviation",
"id": "Loop2.PV Error Standard Deviation",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "PV Variance",
"id": "Loop2.PV Variance",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "PV Variability",
"id": "Loop2.PV Variability",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Percentage Limits Exceeded",
"id": "Loop2.Percentage Limits Exceeded",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"maxOperatingValue": 100,
"minOperatingValue": 0,
"highestThresholdValue": 100,
"lowestThresholdValue": 0
}
},
{
"name": "PV Error",
"id": "Loop2.PV Error",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Lower SP Threshold",
"id": "Loop2.Lower SP Threshold",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "Upper SP Threshold",
"id": "Loop2.Upper SP Threshold",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
},
{
"name": "MV Oscillation Count",
"id": "Loop2.MV Oscillation Count",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double",
"minOperatingValue": 0,
"lowestThresholdValue": 0
}
},
{
"name": "Statistics Period",
"id": "Loop2.Statistics Period",
"classification": "ControlLoopKPI",
"unit": "",
"reservedProperties": {
"dataType": "Double"
}
}
]
}
]
}
KPI Reference for CLPM
This reference details all the KPIs calculated over the data window.
These KPIs are produced by deployed CLPM analytics and are associated with assets in Predix TimeSeries.
The KPIs are also used to produce the tables and charts on the Loop Dashboard and Fleet Dashboard, which help you monitor and diagnose loop performance.
The KPIs are categorized in the tables that follow as:
Aggregate KPIs
These aggregate KPIs are calculated over the data window.
KPI | Description | Formula | Interpretation | Source KPI Analytic |
---|---|---|---|---|
Control Amplitude |
The Control Amplitude gives the sum of all changes of the MV, divided by the number of samples. Only data of good quality is considered for the calculation of this value. Bad quality data is ignored. |
Control Amplitude = SUM(|MV_ROC|) / Number of Samples where:
| The closer this KPI is to zero the better. An amplitude close to zero indicates that the manipulated variable does not need to be greatly adjusted in order to control the PV to the SP. If this KPI is large, it indicates a large adjustment to the MV. One of the following is likely the cause of this:
| OPM-CLPM-Performance_Ext |
Integrated Sum | This gives the sum of the absolute values of all PV Error (PV - SP) samples within the data window that are of good quality. | Integrated Sum = SUM(|PV-SP|) for samples of good quality in window | This KPI gives an indication of the total size of the absolute PV Error over the whole reporting period. The closer this KPI is to zero the better. It is not normalized, so it cannot be directly compared across different loops, but is best analyzed over time for the same loop to see how well a specific loop is controlling over time. | OPM-CLPM-Performance_Ext |
Movement Index | The Movement Index gives the sum of all changes of the MV, divided by 100. Only data of good quality is considered for the calculation of this value. Bad quality data is ignored. | Movement Index = SUM(|MV_ROC|) / 100 where:
| The closer this KPI is to zero the better. An index close to zero indicates that the manipulated variable does not need to be adjusted a lot in order to control the PV to the SP. If this KPI is large, it indicates a lot of adjustment to the MV. One of the following is likely the cause of this:
| OPM-CLPM-Performance_Ext |
MV Oscillation Count | This calculates the number of times that the MV oscillates (changes direction twice) over the reporting period. | Reversal Count = Reversal Count / 2 = COUNT(MV direction change) / 2 | The closer this KPI is to zero the better. A large value for this KPI indicates that MV changes tend to overshoot the mark and require MV changes in the opposite direction to compensate. | OPM-CLPM-Performance_Ext |
Overall Performance | This indicates the overall performance of the loop by combining the (equally weighted) Percentage Manual, Percentage MV Saturation, and Percentage Limits Exceeded KPIs into a single percentage value. | OverallPerformance = Percentage Manual / 3 + Percentage MV Saturation / 3 + Percentage Limits Exceeded / 3 where Percentage Manual, Percentage MV Saturation, and Percentage Limits Exceeded are KPIs described elsewhere in this table. | This gives a broad picture of the performance of the system. This should be low. If this KPI is large, one of the following is likely the cause of this:
Examine the individual KPIs that comprise this KPI for a more precise indicator of what is contributing to the behavior of the system. | OPM-CLPM-Performance |
Percentage Auto | This indicates the percentage of the samples of good quality within the data window for which the control mode used was Auto. | % Auto = Number of samples WHERE (Auto control mode AND samples of good quality)/ Number of samples of good quality | For Auto control mode, a controller within a control system implements automated changes to a variable when a sensor measures the process operating outside the defined process limits. The output is calculated by the controller using the error signal, which is the difference between the set point and the process variable. Ideally, the control loop would always be in either Auto or Cascade mode, implying that the loop is switched ON to actively, automatically, and continuously control the PV to SP. | OPM-CLPM-Performance |
Percentage Auto LL Exceeded | This indicates the percentage of the samples of good quality within the data window for which the control mode was set to Auto and the PV was below the Lower SP Offset.. | % Auto LL Exceeded = Number of samples WHERE (Auto control mode AND PV < Lower SP Offset AND samples of good quality) / Number of samples of good quality | If PV violates the lower control limits while the loop is in Auto mode, it means one of the following:
| OPM-CLPM-Performance |
Percentage Auto UL Exceeded | This indicates the percentage of the samples of good quality within the data window for which the control mode was set to Auto and the PV was above the Upper SP Offset. | % Auto UL Exceeded = Number of samples WHERE (Auto control mode AND PV > Upper SP Offset AND samples of good quality) / Number of samples of good quality | If PV violates the upper control limits while the loop is in Auto mode, it means one of the following:
| OPM-CLPM-Performance |
Percentage Cascade | This indicates the percentage of the samples of good quality within the data window for which the control mode used was Cascade. | % Cascade = Number of samples WHERE (Cascade control mode AND samples of good quality)/ Number of samples of good quality |
In Cascade control mode the loop output/MV is not directly driving an actuator, but rather it is linked to or setting or calculating the SP for another controller loop. For example, a flow control loop is trying to control the flow, measured by a flow meter, to a desired SP by changing a valve position. The flow control loop calculates a desired valve position, which in turn becomes the requested position SP for a valve positioning control loop that changes a pressure to move the valve to a desired position. The two loops are linked together in cascade. The flow control loop depends on the valve positioning control loop to do its job; if the latter does not work well, the former will also not work well. | OPM-CLPM-Performance |
Percentage Cascade LL Exceeded | This indicates the percentage of the samples of good quality within the data window for which the control mode was set to Cascade and the PV was below the Lower SP Offset. | % Cascade LL Exceeded = Number of samples WHERE (Cascade control mode AND PV < Lower SP Offset AND samples of good quality) / Number of samples of good quality | If PV violates the lower control limits while the loop is in Cascade mode, it means one of the following:
| OPM-CLPM-Performance |
Percentage Cascade UL Exceeded | This indicates the percentage of the samples of good quality within the data window for which the control mode was set to Cascade and the PV was above the Upper SP Offset. | % Auto UL Exceeded = Number of samples WHERE (Auto control mode AND PV > Upper SP Offset AND samples of good quality) / Number of samples of good quality | If PV violates the upper control limits while the loop is in Cascade mode, it means one of the following:
| OPM-CLPM-Performance |
Percentage Control On | This indicates the percentage of the samples of good quality within the data window for which the control mode is enabled. | % Control On = Number of samples WHERE ((Auto or Cascade control mode) AND samples of good quality)/ Number of samples of good quality | This KPI corresponds to either Auto or Cascade control modes. The control loops are meant to be actively, automatically, continuously controlling. | OPM-CLPM-Performance |
Percentage Controller Output | This indicates the average MV value (expressed as a %) for data within the data window that is of good quality. | Percentage Controller Output = SUM(MV for samples of good quality in window) / Number of samples of good quality | The MV Average should be around 50% most of the time. If the MV is permanently stuck at a minimum of 0%, or a maximum of 100%, it shows that the MV cannot control the PV to the SP. One of the following is likely the cause of this:
For example, if the valve/pump acting as the FCE is too small, the MV Average will be closer to 80/90%. Conversely, if the valve/pump is too big, then the MV Average will be closer to 10/20% most of time. | OPM-CLPM-Performance |
Percentage Good Quality | This indicates the percentage of data within the data window that is of good quality. | % Good Quality = Number of samples of good quality / Number of samples | This KPI gives you an idea of how trustworthy the data within the data window is. The higher the percentage good quality, the more trustworthy the data is. Other KPIs should be understood with this measure in mind, bearing in mind that control loop KPI calculations exclude bad quality data samples. | OPM-CLPM-Performance |
Percentage Limits Exceeded | This indicates the total percentage of time that the system is in Auto, Cascade, or Manual modes where the upper or lower limits for those modes have been exceeded. | PercentageLimitsExceeded = (Total number of samples WHERE upper or lower limits exceeded in Auto, Cascade, or Manual modes / Total duration in Auto, Cascade, or Manual modes) * 100 | This gives a broad picture of the performance of the system. This should be low. If this KPI is large, then the upper or lower control limits are being exceeded more than is healthy. Examine the individual KPIs for each mode indicating that limits have been exceeded for a more precise indicator of what is contributing to the behavior of the system. | OPM-CLPM-Performance |
Percentage Manual |
This indicates the percentage of the samples of good quality within the data window for which the control mode used was Manual. | % Manual = Number of samples WHERE(Manual control mode AND samples of good quality) / Number of samples of good quality | A loop is typically set to Manual control mode if the Operator wants the ability to manually set MV values. For example, the plant may be in abnormal operating conditions, but not completely shutdown. For Manual control mode, the MV is set manually by the operator to make control changes. When a measured variable operates out of the limits, an operator personally implements a control change to restore the system to within operating limits. Ideally, the control loop should be in Manual mode as little as possible. | OPM-CLPM-Performance |
Percentage Manual LL Exceeded | This indicates the percentage of the samples of good quality within the data window for which the control mode was set to Manual and the PV was below the Lower SP Offset. | % Manual LL Exceeded = Number of samples WHERE (Manual control mode AND PV < Lower SP Offset AND samples of good quality) / Number of samples of good quality | If the PV violates the lower control limits while the loop is in Manual mode, this is undesirable and it means that the operator is not successfully controlling the loop to remain within acceptable control limits. In such a case, the loop should rather be set to Auto control mode so it can be automatically controlled to remain within acceptable control limits around a chosen SP. If the loop is working correctly, Auto control will generally be better than Manual control, unless the loop has tuning, design, or equipment problems. | OPM-CLPM-Performance |
Percentage Manual UL Exceeded | This indicates the percentage of the samples of good quality within the data window for which the control mode was set to Manual and the PV was above the Upper SP Offset. | % Manual UL Exceeded = Number of samples WHERE (Manual control mode AND PV > Upper SP Offset AND samples of good quality) / Number of samples of good quality | If the PV violates the upper control limits while the loop is in Manual mode, this is undesirable and it means that the operator is not successfully controlling the loop to remain within acceptable control limits. In such a case, the loop should rather be set to Auto control mode so it can be automatically controlled to remain within acceptable control limits around a chosen SP. If the loop is working correctly, Auto control will generally be better than Manual control, unless the loop has tuning, design, or equipment problems. | OPM-CLPM-Performance |
Percentage MV Saturation | This indicates the percentage of samples of good quality where the MV is saturated. The MV is considered saturated when it is at 0% or at 100%. | Percentage MV Saturation = (Number of samples of good quality WHERE (MV is 0% or 100%) / Number of samples of good quality) * 100 | This gives an indication of how much MV is at one extreme or the other. This should be low. If this KPI is large, one of the following is likely the cause of this:
| OPM-CLPM-Performance |
Percentage Not Utilized | This indicates the percentage of samples of good quality where the loop is not being utilized. The loop is considered not utilized when the MV is at 0% or at 100% (saturated), or when the control mode is Manual. | Percentage Not Utilized = (Number of samples of good quality WHERE (MV is 0% or MV is 100% or control mode is Manual) / Number of samples of good quality) * 100 | This gives an indication of how much MV is not being used effectively. This should be low. If this KPI is large, one of the following is likely the cause of this:
| OPM-CLPM-Performance |
Percentage Shutdown | This indicates the percentage of the samples of good quality within the data window for which the control mode used was Shutdown. | % Shutdown = Number of samples WHERE (Shutdown control mode AND samples of good quality)/ Number of samples of good quality |
In Shutdown control mode, the loop is switched off because the plant is in an abnormal operating mode. For example, the plant may be shut down for maintenance. Shutdown mode means that the loop is off, and the plant is off or not in a condition to be automatically controlled. The CLPM solution excludes all data from loop KPI calculations during this time. During CLPM deployment, an analytic is created that decides based on operational rules, when each control loop should be considered in Shutdown mode. | OPM-CLPM-Performance |
Percentage Shutdown LL Exceeded | This indicates the percentage of the samples of good quality within the data window for which the control mode was set to Shutdown and the PV was below the Lower SP Offset. | % Shutdown LL Exceeded = Number of samples WHERE (Shutdown control mode AND PV < Lower SP Offset AND samples of good quality) / Number of samples of good quality | It is OK if a loop violates limits during Shutdown mode, since the loop is off and not meant to be controlling, and data is not used in KPI calculations. | OPM-CLPM-Performance |
Percentage Shutdown UL Exceeded | This indicates the percentage of the samples of good quality within the data window for which the control mode was set to Shutdown and the PV was above the Upper SP Offset. | % Shutdown UL Exceeded = Number of samples WHERE (Shutdown control mode AND PV > Upper SP Offset AND samples of good quality) / Number of samples of good quality | It is OK if a loop violates limits during Shutdown mode, since the loop is off and not meant to be controlling, and data is not used in KPI calculations. | OPM-CLPM-Performance |
PV Error Absolute Average | This gives the average of the absolute values of all PV Error (PV - SP) samples within the data window that are of good quality. | PV Error Absolute Average = SUM(|PV Error Samples of good quality in window|) / Number of PV Error samples of good quality | The closer this KPI is to zero the better. An absolute average of zero indicates that the loop is controlling exactly on the SP. The KPI gives an indication of how far away the PV is on average from the SP over the reporting period. | OPM-CLPM-Performance_Ext |
PV Error Average | This gives the average of all PV Error (PV - SP) samples within the data window that are of good quality. | PV Error Average = SUM (PV Error Samples of good quality in window) / Number of PV Error samples of good quality | The closer this KPI is to zero the better. An average of zero indicates that the loop is on average controlling centered around the SP. | OPM-CLPM-Performance_Ext |
PV Error Standard Deviation | This gives the standard deviation of all PV Error (PV - SP) samples of good quality. | PV Error Standard Deviation = SQUARE ROOT (SUM(PV Error - PV Error Average) ^2 for each PV Error sample of good quality) / Number of PV Error samples of good quality) | This KPI gives an indication of the amount of variation in PV Error sample values of good quality over the reporting period. | OPM-CLPM-Performance_Ext |
PV Variability | This gives a ratio which is a measure of the standard deviation relative to the PV sample average, for PV samples of good quality within the reporting period. | PV Variability = (PV Standard Deviation * 200) / |PV Average| | This KPI gives an indication of how spread out or closely clustered the PV data samples are, expressed as a percentage. It is a measure of relative PV variability. This is also sometimes referred to as the coefficient of variation. | OPM-CLPM-Performance_Ext |
PV Variance | This gives the variance of all PV samples of good quality over the reporting period. | PV Variance = SUM((PV Sample - PV Average) ^2 for each PV sample of good quality) / Number of PV samples of good quality | This KPI gives an indication of the amount of variation in PV sample values of good quality over the reporting period. | OPM-CLPM-Performance_Ext |
Reversal Amplitude | This calculates the sum of all the changes in the MV relative to the number of times the MV changes direction. Only data of good quality is considered for the calculation of this value. Bad quality data is ignored. | Reversal Amplitude = SUM(|MV_ROC|) / Reversal Count = SUM(|MV_ROC|) / COUNT(MV direction change) | The closer this KPI is to zero the better. A low value likely means that the system is responsive and smaller changes are made to keep the system on track. A large reversal amplitude likely indicates that the system is unresponsive and hence requires larger changes in the MV to keep it on track. | OPM-CLPM-Performance_Ext |
Reversal Count | This calculates the number of times that the MV changes direction over the reporting period. | Reversal Count = COUNT(MV direction change) | The closer this KPI is to zero the better. A large value for this KPI indicates that MV changes tend to overshoot the mark and require MV changes in the opposite direction to compensate. | OPM-CLPM-Performance_Ext |
Statistics Period | This is the time period in seconds over which the KPIs have been calculated. | Statistics Period = End time - Start time, expressed in seconds | The time period in seconds over which the KPIs have been calculated. | OPM-CLPM-Performance_Ext |
Total PIDF Changes | This indicates the total number of times that one of the P, I, D, or F (Proportional, Integral, Derivative, or Filter) values has changed inside the window of data. | Total PIDF Changes = COUNT (All samples where P, I, D, or F values have changed) | Different settings will change this KPI and can explain sudden changes in control loop performance. For example, there may have been some change in the loop tuning settings and that has affected loop performance. | OPM-CLPM-Config_Change |
Non-Aggregate KPIs
These non-aggregate KPIs are given for the data window.
KPI | Description | Formula | Interpretation | Source KPI Analytic |
---|---|---|---|---|
Lower SP Threshold | This returns a dataset that is the set of all differences between the SP and the Lower SP Offset for each point in the data window where that difference has changed from the previous difference. The quality of each datapoint in the dataset is the quality of the SP at that point in time. This is used to produce a step graph indicating changes in the Lower SP Threshold. | For each sample in window, add a datapoint, IFF it differs from the previous datapoint: SP-LowerSPOffset where quality is WORST(SP,LowerSPOffset). | This returns a dataset that is the set of all differences between the SP and the Lower SP Offset for each point in the data window where that difference has changed from the previous difference. This represents the acceptable lower control limit within which the PV should be controlled. | OPM-CLPM-PV_Statistics |
PV Error | This returns a dataset that is the set of all differences between the PV and SP for each point in the data window. The quality of each datapoint in the dataset is the worst quality of the PV and SP at that point in time. This is used to produce the error histogram. | For each sample in window, add a datapoint: PV-SP, where quality is WORST(PV,SP). | This returns a dataset that is the set of all differences between the PV and SP for each point in the data window. Ideally, the PV Error should be zero. A large positive or negative PV Error means that the control loop is not controlling the PV to the SP effectively. | OPM-CLPM-PV_Statistics |
Upper SP Threshold | This returns a dataset that is the set of all sums of the SP and the Upper SP Offset for each point in the data window where that sum has changed from the previous sum. The quality of each datapoint in the dataset is the quality of the SP at that point in time. This is used to produce a step graph indicating changes in the Upper SP Threshold. | For each sample in window, add a datapoint, IFF it differs from the previous datapoint: SP+UpperSPOffset where quality is WORST(SP,UpperSPOffset). | This returns a dataset that is the set of all sums of the SP and the Upper SP Offset for each point in the data window where that difference has changed from the previous difference. This represents the acceptable upper control limit within which the PV should be controlled. | OPM-CLPM-PV_Statistics |