---
title: "Alarm Pipeline — Groups, Areas, and Items"
tags: [alarm, alarms, alert, notification, group, area, limit, digital, pipeline, monitoring]
description: "Configure a complete alarm system: groups for severity, areas for organization, items for individual tag monitoring with limit and digital alarm types"
version: "1.0"
author: "Tatsoft"
---


Set up a complete alarm system from scratch: Groups for severity classification, Areas for plant organization, and Items for individual tag monitoring with limit-based and digital alarm types.



What This Skill Does

Set up a complete alarm system from scratch. Alarms watch tag values and trigger notifications when conditions are met. The pipeline is: Groups (severity/behavior) → Areas (organization) → Items (individual monitors).

AlarmsGroups (severity, colors, sounds)
    ??? AlarmsAreas (plant hierarchy — optional)
         ??? AlarmsItems (one per tag condition)
              ??? Watches UnsTags values at runtime




When to Use This Skill

Use this skill when:

Do NOT use this skill when:

Prerequisites

MCP Tools and Tables Involved

Category

Items

Tools

get_table_schema, write_objects, get_objects

Tables

AlarmsGroups, AlarmsAreas, AlarmsItems

Implementation Steps

Step 1: Create Alarm Groups

Groups define severity levels and shared behavior. Create at least Critical, Warning, and Info.

get_table_schema('AlarmsGroups')


{
  "table_type": "AlarmsGroups",
  "data": [
    {
      "Name": "Critical",
      "Description": "Immediate action required — safety or equipment risk"
    },
    {
      "Name": "Warning",
      "Description": "Attention needed — process approaching limits"
    },
    {
      "Name": "Info",
      "Description": "Informational — logged but no immediate action"
    }
  ]
}

Key decisions:

Step 2: Create Alarm Areas (Optional)

Areas organize alarms by plant location or process unit. They can be nested. Skip this step for simple solutions.

get_table_schema('AlarmsAreas')


{
  "table_type": "AlarmsAreas",
  "data": [
    {
      "Name": "Plant",
      "Description": "Entire plant"
    },
    {
      "Name": "Plant/Reactor1",
      "Description": "Reactor 1 process area"
    },
    {
      "Name": "Plant/Utilities",
      "Description": "Utility systems"
    }
  ]
}

Key decision: Area paths mirror the tag folder structure for consistency. Plant/Reactor1 area contains alarms for Plant/Reactor1/* tags.

Step 3: Create Alarm Items

Each item monitors one tag for one condition. The two main types are Limit (analog thresholds) and Digital (boolean state).

get_table_schema('AlarmsItems')

Limit alarms — trigger when a value exceeds a threshold:

{
  "table_type": "AlarmsItems",
  "data": [
    {
      "Name": "Reactor1_TempHigh",
      "Group": "Critical",
      "TagName": "Plant/Reactor1/Temperature",
      "Type": "HighLimit",
      "Limit": 90.0,
      "Description": "Reactor 1 temperature exceeded 90°C"
    },
    {
      "Name": "Reactor1_TempWarn",
      "Group": "Warning",
      "TagName": "Plant/Reactor1/Temperature",
      "Type": "HighLimit",
      "Limit": 75.0,
      "Description": "Reactor 1 temperature approaching limit (75°C)"
    },
    {
      "Name": "Reactor1_PressureHigh",
      "Group": "Critical",
      "TagName": "Plant/Reactor1/Pressure",
      "Type": "HighLimit",
      "Limit": 4.5,
      "Description": "Reactor 1 pressure exceeded 4.5 bar"
    },
    {
      "Name": "Reactor1_LevelLow",
      "Group": "Warning",
      "TagName": "Plant/Reactor1/Level",
      "Type": "LowLimit",
      "Limit": 10.0,
      "Description": "Reactor 1 level below 10%"
    }
  ]
}

Digital alarms — trigger on a boolean tag:

{
  "table_type": "AlarmsItems",
  "data": [
    {
      "Name": "Reactor1_AnomalyDetected",
      "Group": "Warning",
      "TagName": "Plant/Reactor1/ML/IsAnomaly",
      "Type": "Digital",
      "Description": "ML model detected anomaly on Reactor 1"
    }
  ]
}

Key decisions:

Step 4: Verify Configuration

get_objects('AlarmsGroups')
get_objects('AlarmsItems')

Then start or hot-reload runtime:

designer_action('hot_reload')

Verification

  1. get_objects('AlarmsGroups') — confirm groups exist (Critical, Warning, Info)
  2. get_objects('AlarmsItems') — confirm all alarm items are configured
  3. get_designer_state() — no errors
  4. Start runtime → navigate to AlarmsMonitor → verify alarms trigger when thresholds are crossed
  5. browse_namespace('Alarm.Group.Critical') — check alarm counts at runtime

Common Pitfalls

Mistake

Why It Happens

How to Avoid

Wrong Type string

Guessing enum values instead of checking schema

Always use exact values from get_table_schema('AlarmsItems')

Missing TagName

Referencing a tag that doesn't exist yet

Create the tag first in UnsTags before creating the alarm

Limit on Digital alarm

Setting Limit on a Digital type

Digital alarms ignore Limit — they trigger when boolean tag becomes true

Duplicate alarm names

Alarm names must be globally unique

Names are unique across the entire solution, not just within a group

Missing Area assignment

Alarms created without area linkage

Check schema for the exact property name to assign an area

Related Skills


In this section...