Libro Sistemas Scada

En este enlace os pongo el acceso a la Web de Marcombo, que acaban de publicar la tercera edición del libro Sistemas Scada.

A parte de la revisión de rigor, hay cosas nuevas, como una introducción a la Regulación Federal  CFR FDA 21 – Parte 11, relacionada con la seguridad en los sistemas de control, o un capítulo dedicado a dar los primeros pasos con el Scada Vijeo Citect, así como las instrucciones para descargar una versión demo con la cual poder trabajar.

portadaSe agradecerán observaciones, críticas (espero que constructivas) y sugerencias.

Descarga del Scada Vijeo Citect

En esta dirección tengo un apunte de cómo descargar Vijeo Citect de forma gratuita:

http://aquiro.weebly.com/vcit—varios.html

Para los del iPhone

Tengo un documento colgado en este enlace que indica cómo conectar Vijeo Citect con iPhone.
www.aquiro.weebly.com

Logout automático con salto a una página

A veces puede interesar activar un logout automático (que después de un tiempo de inactividad se desconecte el usuario activo) y nos mande a una pantalla determinada, por ejemplo la pantalla de inicio de nuestra aplicación.

Es fácil de realizar en dos pasos:

  1. Configurar la función de logout (Logoutidle) cuando arranca Vijeo Citect.
  2. Definir un evento que vigile si hay usuario activo.

He puesto un ejemplo en este enlace: http://aquiro.weebly.com

Cómo escribir un bit en una palabra?

Para alterar el bit de una palabra, dependerá del estado actual del bit que se quiera cambiar:

Si está a “1″ y lo queremos poner a “0″, se multiplica la posición de bit por 0 (AND)

Si está a “0″ y lo queremos poner a “1″, se suma 1 a la posición de bit (OR)

La función quedaría:

INT FUNCTION EscribeBit(INT Valor, INT NumBit, INT EstadoBit)
IF EstadoBit = FALSE THEN  RETURN Valor BITAND (4294967295 BITXOR Pow(2, NumBit));
ELSE   RETURN Valor BITOR Pow(2, Numbit);
END
END

Índices perdidos…OID!!!!

Alguna vez, sobre todo cuando trasteamos con tablas de forma alegre, o cuando hacemos que Vijeo Citect compile nuestros inventos, puede aparecer un mensaje con un texto donde aparece: xxxxx OID xxxxxxxx

A partir de aquí, ya no se puede compilar nada.

OID, o Object Index, indica un problema en los índices de alguna tabla de Vijeo y éstos necesitan ser recompilados.

La solución es muy sencilla:

Nos vamos al Explorador de Proyectos, y en el menú: Herramientas – Editor de configuración del ordenador, abriremos el asistente de edición del archivo Citect.ini.

Este archivo es el que determina el comportamiento de Vijeo Citect. A la izquierda, en árbol, aparecen las opciones configuradas y, a la derecha, un asistente de los parámetros de configuración.

Si no sabemos cómo manejar el tema, es bastante sencillo:

1 – GUARDAR UNA COPIA DEL ARCHIVO Citect.ini !!!! ( por ejemplo citect.bak)
2 – En la celda inferior derecha, insertar el texto misterioso: OID, y pulsar el botón Go. Aparecerán las coincidencias en la ventana de arriba.

3 – En OID Parameters, aparecen los parámetros relacionados con OID: [OID]Reset.

4 – Pulsando con el ratón sobre el parámetro, se inserta en la celda de la ventana inferior izquierda.

5 – Ponemos Value = 1 y piulsamos Add. El nuevio campo se insertará en el archivo citect.ini.

6 – Guardamos el archivo.

Ya está, la próxima vez que arranque el compilador de Vijeo Citect, el parámetro Reset=1 indicará que los índices se deben rehacer de nuevo y el error ya no debería aparecer más.

Más cosas en: www.aquiro.weebly.com

Trabajar con etiquetas

Mediante el uso de etiquetas es posible asociar nombres fáciles de recordar a valores o expresiones en Vijeo Citect. Por ejemplo, para definir áreas visibles para un usuario, la configuración “clasica” seria:

Si se asocia un elemento al área 10, solamente este usuario podrá ver en pantalla dicho elemento.

Otra manera más sencilla podría ser definir una etiqueta que identifique un área en concreto. Por ejemplo: HIDRAULICA

En el Editor de Proyectos, mediante la opción de menú: SystemLabels, se asigna el valor 22 a esa etiqueta.

La etiqueta HIDRAULICA equivale ahora al valor 22. Un objeto con la seguridad de área fijada en el 22, solo será visible al usuario con este privilegio.

Se define el número de área de un objeto gráfico (un cilindro neumático, por ejemplo):

El cuadro de usuarios queda ahora un poco más claro si lo ponemos de esta manera:

A efectos: HIDRAULICA=22

De la misma manera que HIDRAULICA=22, podríamos hacer servir también una etiqueta para definir una expresión, por ejemplo:

Etiqueta: SUMAR10(X)

Expresión de la etiqueta: X=X+10

En un pulsador, si se inserta esta etiqueta, sustituyendo la X por una variable, cada vez que se pulse, se incrementará la variable en 10.

Como leer un bit en una palabra?

Vijeo Citect no desglosa directamente una palabra en bits, necesita una ayuda. Para ello hay una función que permite saber el estado de un bit determinado en una palabra.

Como parámetros de la función hay que entrar el valor entero del cual queremos extraer un bit (iValue) e indicamos el bit que queremos visualizar (iBitNo).

En la figura se ha colocado una variable de la cual se extrae su valor binario.

Más cosas sobre Vijeo Citect

Estoy chapuzando una página donde pongo mis cosillas. Estoy poniendo “en limpio” cosas de Vijeo Citect y como algunas no pasan por el blog, os pongo el enlace para ver si os encontrais con alguna cosilla interesante.

El enlace es este: www.aquiro.weebly.com

Refresco de variables

Nota nueva referida a una pregunta de un compañero en relación con el tiempo de refresco de las variables en Vijeo Citect. He ordenado un poco los comentarios e indagado algo acerca del tema.

La cuestión era cómo cambiar el tiempo de refresco de las variables.

Por defecto, las variables de la tabla VARIABLE.DBF, no comunican. La comunicación dependerá del lugar donde se halle la llamada a esta variable.

Alarmas

En el caso de las alarmas, el tiempo de refresco del sistema de alarmas afectará a la CPU. Debe ajustarse a las necesidades del proceso para no perder alarmas y no sobrecargar la CPU innecesariamente.

Páginas

Dentro de una página, dependiendo del tiempo de refresco de ésta. Se puede definir un tiempo general para todas las páginas en la última ventana del Asistente de configuración del Computador.

Por defecto se refresca cada 250 milisegundos y afecta a todas las páginas. Se trata del parámetro: Tiempo de búsqueda de página (traducido: ciclo de scan de la página)

Es posible configurar tiempos de refresco diferentes para cada página. Con el botón derecho del ratón en una página, se abren sus propiedades. El parámetro: Tiempo de búsqueda permitirá cambiar el tiempo de refresco de esa página en particular.

Tendencias

Dependerá del tiempo de muestreo definido para la variable de tendencia.

En la figura aparece una gráfica con una señal muestreada cada 0.2s y una visualización directa en página cada 3s. El valor de la variable se actualizará en la página cada 3s, pero su valor real será el de la tendencia (ésta “irá por delante”)

Controlador

Se pueden tocar más cosas para el tema de refresco, como el controlador. En este caso la pregunta iba con MODNET (Modbus sobre Ethernet) y se refería a cambiar el tiempo de polling al dispositivo. Se puede hacer peeeeeeeero…..

MODNET.Delay es un parámetro que aplica un tiempo de espera entre la contestación del dispositivo y la siguiente petición que se le envía al mismo. Todos los dispositivos que utilicen este controlador tendrán el mismo retardo.

Esto quiere decir que si estamos trasteando con históricos, nos podemos encontrar con algo como lo siguiente (Retardo de 5s):

Y a lo mejor no interesa…