PI System Learning
ModulesAsset Framework Deep-Dive
🏗️
Module 10Advanced

Asset Framework Deep-Dive

Comprehensive coverage of all AF functions: hierarchy design, templates, attributes, analyses, event frames, and notifications. Includes optimization techniques and hands-on scenarios.

90 min8 topics2 code examples

AF Hierarchy Design

A well-designed AF hierarchy is the foundation of effective PI System deployment. The standard hierarchy follows industrial ISA-95 levels:

Enterprise
└── Site (Plant / Facility)
    └── Area (Production Area / Department)
        └── Unit (Process Unit / Line)
            └── Equipment (Asset)
                └── Component (Sub-asset)

Design Principles

  • Reflect physical reality: Mirror your plant layout for intuitive navigation
  • Normalize depth: Aim for 4-6 levels; deeper hierarchies slow queries
  • Use templates: Never create elements without a template
  • Separate concerns: Keep process hierarchy separate from maintenance hierarchy

Element Templates and Inheritance

Base Equipment Template
├── Name (String)
├── Location (String)
├── InstallDate (DateTime)
└── Status (String)

Pump Template (inherits Base Equipment)
├── [inherited attributes]
├── FlowRate (PI Point reference)
├── Pressure_In (PI Point reference)
├── Pressure_Out (PI Point reference)
├── MotorCurrent (PI Point reference)
└── VibrationLevel (PI Point reference)

Configuring a PI Point Data Reference

Attribute: FlowRate
Data Reference: PI Point
Configuration:
  Server: PISERVER01
  Tag Name: %Element%.FLOW_001
  (uses element name substitution for reuse across instances)

PI Analysis Service

Expression Analysis

// Calculate differential pressure
Attribute: DifferentialPressure
Expression: 'Pressure_In' - 'Pressure_Out'
Trigger: On Change
Output: Write to PI tag DP_001

Rollup Analysis

// Sum flow across all pumps in an area
Rollup: TotalAreaFlow
Function: Sum
Source: All child elements with FlowRate attribute
Output: AREA_TOTAL_FLOW
Trigger: Periodic (every 1 minute)

Event Frames

Event TypeTriggerCaptured Data
DowntimeEquipment stoppedDuration, reason code, operator
BatchProduction runProduct, quantity, quality
AlarmThreshold exceededMax value, duration, response
MaintenanceWork order createdTechnician, work type, duration

Performance Optimization

Scalability Guidelines

Deployment SizeElementsAnalysesRecommended Config
Small< 10,000< 1,000Single AF Server
Medium10K-100K1K-10KAF Server + Analysis Server
Large> 100K> 10KAF Collective (HA)

Hands-on Scenario: Condition-Based Monitoring

Step 1: Create Hierarchy

PumpStation_001
├── Pump_A (Centrifugal Pump Template)
│   ├── FlowRate → PUMP_A_FLOW
│   ├── Pressure_In → PUMP_A_PIN
│   ├── Pressure_Out → PUMP_A_POUT
│   ├── MotorCurrent → PUMP_A_AMPS
│   └── VibrationLevel → PUMP_A_VIB
└── Pump_B (same structure)

Step 2: Create Analyses

Analysis 1: DifferentialPressure
  Expression: 'Pressure_Out' - 'Pressure_In'
  Output: PUMP_A_DP

Analysis 2: EfficiencyIndex
  Expression: ('FlowRate' * 'DifferentialPressure') / ('MotorCurrent' * 0.746)
  Output: PUMP_A_EFF

Analysis 3: VibrationAlert (Event Frame)
  Start: 'VibrationLevel' > 8.5
  End: 'VibrationLevel' < 7.0

Ready to test your knowledge?

Take the quiz for this module to earn completion credit and unlock achievements.