Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ Historian

Example: evaluating response time for alarms

  • Last UpdatedMar 19, 2025
  • 2 minute read

This query reports when an alarm is raised, acknowledged, and cleared. The report lists both times and duration.

DECLARE @StartTime datetime2

DECLARE @EndTime datetime2

DECLARE @TagName nvarchar(100)

SET @EndTime = getutcdate()

SET @StartTime = dateadd(n,-5000,@EndTime)

DECLARE @AlarmState TABLE

(

EventTime datetime2 NOT NULL,

Alarm_ID uniqueidentifier NOT NULL,

TypeID int,

Duration int,

Alarm_State nvarchar(10),

AckedBy nvarchar(50),

AckedFromNode nvarchar(50),

primary key clustered (EventTime, Alarm_ID, TypeID)

)

INSERT @AlarmState

SELECT EventTime, Alarm_ID,

TypeID=CASE Type WHEN 'Alarm.Clear' then 1 WHEN 'Alarm.Acknowledged' then 2 END,

Duration=CASE Type WHEN 'Alarm.Clear' then Alarm_DurationMs WHEN 'Alarm.Acknowledged' then Alarm_UnAckDurationMs END,

Alarm_State, User_Account, User_NodeName

FROM Events

WHERE EventTime > @StartTime AND EventTime < @EndTime

AND Type IN ('Alarm.Clear','Alarm.Acknowledged')

--======================--

SELECT

e.EventTime as AlarmTime,

e.Source_ProcessVariable as TagName,

e.Alarm_Type as Type,

e.ValueString as Value,

e.Alarm_LimitString as Limit,

e.Priority,

e.Source_Area as Area,

CASE

WHEN a.EventTime IS NULL and c.EventTime IS NOT NULL then c.Alarm_State

WHEN a.EventTime IS NOT NULL and c.EventTime IS NULL then a.Alarm_State

WHEN a.EventTime > c.EventTime then a.Alarm_State

WHEN a.EventTime < c.EventTime then c.Alarm_State

ELSE e.Alarm_State END as AlarmState,

c.EventTime as ClearTime,

a.EventTime as AcknowledgeTime,

c.Duration/1000.0 as SecsInAlarm,

a.Duration/1000.0 as SecsUnAck,

e.Source_Object as Object,

e.Source_HierarchicalArea as HierarchicalArea,

a.AckedFromNode,

a.AckedBy

FROM Events e

LEFT OUTER JOIN @AlarmState c

ON c.Alarm_ID=e.Alarm_ID

AND c.TypeID=1

LEFT OUTER JOIN @AlarmState a

ON a.Alarm_ID=e.Alarm_ID

AND a.TypeID=2

WHERE e.EventTimeUtc BETWEEN @StartTime AND @EndTime

AND e.Type='Alarm.Set'

ORDER BY AlarmTime ASC

The results look like this:

TitleResults for “How to create a CRG?”Also Available in