Computers">
Nothing Special   »   [go: up one dir, main page]

Solucion para Generar Informes de Alarmas Activas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Tech Support

TN110WAS

Solución para generar informes de alarmas activas support@wonderware.es


Septiembre de 2011
Revision 1

Descripción General
En este documento se propone una solución para poder realizar informes de las alarmas activas de aplicaciones basadas en
System Platform.
La solución consiste en trabajar con la BBDD de las alarmas históricas y en función del estado de algunos campos
determinar que alarmas están activas en ese instante. En este documento se suministran 2 querys distintas: La primera
funciona tanto para base de datos de alarmas del tipo Detailed como Consolidated mientras que la segunda query sólo
funciona para BBDD del tipo Consolidated aunque es una query mucho más sencilla.
Las pruebas han sido realizadas en el siguiente entorno:
 Wonderware Application Server 3.1 SP3 patch01
 Wonderware InTouch 10.1 SP3 patch01
 SQL Server 2008 SP1

Para que esta solución funcione se debe tener el AlarmDBLogger en ejecución.

EN FUNCIÓN DEL TAMAÑO DE LA BBDD DE ALARMAS Y DE LA CANTIDAD DE ALARMAS GENERADAS LA EJECUCIÓN DE LA QUERY PUEDE
TARDAR MUCHO TIEMPO EN EJECUTARSE, POR LO QUE QUEDA BAJO RESPONSABILIDAD DEL USUARIO LOS POSIBLES PROBLEMAS DE
RENDIMIENTO QUE PUEDA SUFRIR EL SISTEMA DURANTE LA EJECUCIÓN DE LAS MISMAS.

Solución 1: Query para alarmas activas para BBDD Detailed y Consolidated


La siguiente query devuelve las alarmas activas de la galaxia independientemente de si la BBDD de alarmas es de tipo
Detailed o Consolidated.
La información que devuelve la consulta es:
 Tagname: Alarma generada.
 EventStamp: Momento en el que se generó la alarma.
 AlarmState: Estado de la alarma.
 TiempoActivo: El tiempo que lleva activa la alarma.

DECLARE @Tagname VARCHAR (256)


DECLARE @EventStamp DATETIME
DECLARE @AlarmState VARCHAR(32)
DECLARE @TiempoActivo VARCHAR(150)
DECLARE @tblResults TABLE (TagName NVARCHAR(132), EventStamp datetime, AlarmState NVARCHAR(9), TiempoActivo
NVARCHAR(50))
DECLARE @CurrentDatetime DATETIME

Wonderware Spain Página 1 de 3


www.wonderware.es
set @CurrentDatetime = DATEADD ( hour , -24 , getdate() ) -- Ultimas 24 horas

Declare TagCursor Cursor for


select distinct(tagname) from v_AlarmHistory
WHERE (alarmstate = 'UNACK_ALM' OR alarmstate = 'ACK_ALM')
AND eventstamp > @CurrentDatetime

OPEN TagCursor
Fetch Next From TagCursor Into @Tagname

While @@Fetch_Status <>-1


BEGIN
select top 1 @AlarmState=alarmstate, @EventStamp=eventstamp
from v_AlarmHistory
WHERE tagname = @Tagname
AND eventstamp > @CurrentDatetime
order by eventstamp Desc

set @TiempoActivo = CONVERT(CHAR(8),DATEADD(SECOND,DATEDIFF ( SECOND , @EventStamp ,


getdate()),'20000101'),108);

IF (@alarmstate = 'UNACK_ALM' OR @alarmstate = 'ACK_ALM')


BEGIN
INSERT INTO @tblResults
VALUES (@Tagname, @EventSTamp, @AlarmState, @TiempoActivo)
END

Fetch Next From TagCursor Into @Tagname

END

SELECT * FROM @tblResults

CLOSE TagCursor
DEALLOCATE TagCursor

Para facilitar el uso de esta query se recomienda utilizarla a través de un procedimiento almacenado (stored procedure) de
MSSQL.

Solución 2: Query para alarmas activas para BBDD Consolidated


La siguiente query devuelve las alarmas activas de la galaxia pero a diferencia de la solución anterior sólo funciona con
BBDD de alarmas tipo Consolidated.
La información que se devuelve en la consulta es:
 Tagname: Alarma generada.
 Priority: Prioridad de la alarma.
 TiempoActivo: El tiempo que lleva activa la alarma.
 FechaOrigen: Momento en el que se generó la alarma.

Wonderware Spain Página 2 de 3


www.wonderware.es
SELECT
TagName,
Priority,
CONVERT(CHAR(8),DATEADD(SECOND,DATEDIFF ( SECOND , DATEADD(mi, 120, AlarmTime) , getdate()),'20000101'),108) AS
TiempoActivo,
CONVERT(CHAR(50), DATEADD(mi, 120, AlarmTime),113) AS FechaOrigen
FROM (SELECT tagname,groupname,max(alarmid) as alarmid FROM alarmmaster GROUP BY tagname,groupname) As a,
alarmconsolidated AS b
WHERE a.alarmid = b.alarmid
AND AlarmTime > DATEADD ( hour , -24 , getdate() ) -- Ultimas 24 horas
AND b.returntime = '9999-12-12 23:59:59.997'
ORDER BY AlarmTime Desc

Información adicional
Nota Importante: Esta Nota Técnica se entrega “as is”, es decir, como complemento a la documentación del producto, pero
no incluido dentro del ámbito del Soporte Técnico. Por tanto, cualquier mal funcionamiento derivado del contenido de esta
nota técnica no es responsabilidad de Wonderware Spain.

Nota Técnica elaborada por Rubén Rueda

Wonderware Spain Página 3 de 3


www.wonderware.es

También podría gustarte