General

Recursos

Gestionando los valores

Introducción

Una vez tenemos nuestro modelo de datos creado, nuestro objetivo es explotar los datos que somos capaces de obtener desde nuestra infraestructura.

Toda la definición del modelo ha estado pensada para que finalmente los puntos vayan recibiendo los valores al ritmo exacto que nosotros hayamos diseñado.

Lectura de valores

Existen distintas formas de visualizar los valores que tienen los puntos según el criterio de clasificación de los mismos.

La forma mas simple de ver el valor de todos los puntos es la siguiente:
admin> scada point list

Id     Alarm Point path                      Qlt  P.Type  Antiquity  Value
------ ----- ------------------------------- ---- ------- ---------- --------------------
     1 false /POINT-01-RO                    GOOD INT          36334                    0
     2 false /POINT-02-RO                    GOOD BOOLEAN      36334                false
     3 false /POINT-03-RW                    GOOD BOOLEAN      36334                false
     4 false /GROUP-A/POINT-04-RO            GOOD INT          36334                 4109
     5 false /GROUP-A/POINT-05-RO            GOOD INT          36334                 8218
     6 false /GROUP-A/POINT-06-RO            GOOD INT          36334                12327
     7 false /GROUP-A/POINT-07-RO            GOOD INT          36334                16436
    10 false /GROUP-A/POINT-10-RO            GOOD INT          36334                24654
     8 false /GROUP-A/SUB/POINT-08-RO        GOOD INT          36334                20545
     9 false /GROUP-A/SUB/POINT-09-RW        GOOD INT          36335                    0
    11 false /GROUP-B/POINT-11-RO            GOOD INT          36335                28763
    12 false /GROUP-B/POINT-12-RO            GOOD INT          36335                32872
    13 false /GROUP-B/POINT-13-RO            GOOD INT          36335                36981
    14 false /GROUP-B/POINT-14-RO            GOOD INT          36335                41090
    15 false /GROUP-B/POINT-15-RW            GOOD INT          36335                    0
    16 false /GROUP-B/POINT-16-RO            GOOD INT          36335                45199
    17 false /GROUP-C/POINT-17-RO            GOOD INT          36335                49308
    18 false /GROUP-C/POINT-18-RO            GOOD INT          36335                53417
    19 false /GROUP-C/POINT-19-RO            GOOD INT          36335                57526
    20 false /GROUP-C/POINT-20-RO            GOOD INT          36336                  208
    21 false /GROUP-D/POINT-21-RO            GOOD INT          36336                 4301
    22 false /GROUP-D/POINT-22-RO            GOOD INT          36336                 8424
    23 false /GROUP-D/POINT-23-RO            GOOD INT          36336                12521
    24 false /GROUP-E/POINT-24-RO            GOOD INT          36336                16640
    25 false /GROUP-E/POINT-25-RO            GOOD INT          36336                20748

admin>

Podemos obtener también el valor concreto de un punto.
admin> scada point get point=/GROUP-D/POINT-21-RO

Time Stamp.......: 2011-04-19T18:13:00.063+0200
Quality..........: GOOD
Point type.......: INT
Value............: 9401

admin>

También podemos obtener todos los detalles de un punto
admin> scada point show point=/GROUP-D/POINT-21-RO

Point path.....: /GROUP-D/POINT-21-RO
Node...........: simu-sample
Point ID.......: 21
PLC type.......: TWO_BYTE_INT_UNSIGNED
Point type.....: INT
Scale..........: 1.0
Initial value..: 0.0
Bit number.....: 0
Loggin mode....: DO_NOT_LOG
Writable.......: false
Address........: 17
Bank...........: INPUT_REGISTER
Enabled........: true

Time Stamp.....: 2011-04-19T18:15:00.070+0200
Quality........: GOOD
PointType......: INT
Value..........: 11951

Escritura de valores

Si un punto está declarado para acceder a un banco de memoria que es de escritura, podremos escribir un valor en él. En nuestro modelo de pruebas hemos declarado tres puntos mediante los cuales podemos escribir nuestros valores.

Veamos un ejemplo.
admin> scada point get point=/GROUP-A/SUB/POINT-09-RW

Time Stamp.......: 2011-04-19T18:30:00.022+0200
Quality..........: GOOD
Point type.......: INT
Value............: 0

admin> help scada point set

SCADA POINT SET POINT=pointName .....

Asigna un nuevo valor a un punto.

Los parametros para este comando son:

[Req] [Parametro]    [Tipo]     [Description]
  *   POINT          String     Nombre del punto.
      BOOLEANVALUE   Boolean    Valor boolean.
      BYTEVALUE      Byte       Valor byte.
      SHORTVALUE     Short      Valor short.
      INTVALUE       Int        Valor Int.
      LONGVALUE      Long       Valor Long.
      FLOATVALUE     Float      Valor float.
      DOUBLEVALUE    Double     Valor double.

admin> scada point set point=/POINT-03-RW booleanvalue=true
admin> scada point set point=/GROUP-A/SUB/POINT-09-RW intvalue=12345
admin>
admin> scada point get point=/GROUP-A/SUB/POINT-09-RW

Time Stamp.......: 2011-04-19T18:32:00.029+0200
Quality..........: GOOD
Point type.......: INT
Value............: 12345

admin>
En este ejemplo los valores son escritos sobre una pasarela de simulación que solo los mantendrá mientras la pasarela esté en ejecución. Por ese motivo si desinstalamos la pasarela o detenemos el servidor estos valores se perderán.

Almacenamiento de valores

El servidor utiliza una base de datos para gestionar el modelo de adquisición y también para almacenar los valores de los puntos de los cuales nos interese mantener un historial.

En el modelo de ejemplo que hemos cargado no hemos activado esta funcionalidad para ningún punto así que vamos a ver como se activa.
admin> scada point update currentpoint=/GROUP-B/POINT-14-RO loggingmode=ALL_DATA READSYNC=DO_SYNC PERIODUNIT=SECONDS READPERIOD=10 LOGATPERIOD=3

Con esta configuración el punto leerá un valor desde la pasarela cada 10 segundos y cada 30 segundos (cada 3 lecturas) almacenará un valor en la base de datos.

Además las lecturas desde la pasarela se realizarán empezando en el segundo 0 de cada día y por tanto de cada hora también, lo cual producirá que los valores que se escribirán en la base de datos lo harán a las 0:00:00, 0:00:30, 0:01:00, 0:01:30, 0:02:00 y así siempre en el segundo 0 y 30 de cada minuto (puede existir un retraso de milisegundos aunque no es acumulativo).

No habrá ninguna restricción respecto a los valores y siempre se almacenarán con independencia de que el valor sea el mismo que la última vez.

Aunque los datos se almacenan en la base de datos, el servidor no proporciona de momento ningún comando para ver estos datos y deberán ser explotados por aplicaciones externas.