Archive for the ‘ Divagaciones varias ’ Category

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

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

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

SG2

A raíz de un comentario de Mariano Coch, os pongo un apunte sobre una herramienta muy interesante que funciona con Vijeo Citect y con Unity y que puede ahorrar muuuuchas horas de trabajo…

Desde hace unos tres años, Schneider Electric tiene una herramienta de integración entre Vijeo Citect y Unity, que permite automatizar grandes secciones de programa (de hecho, solo nos queda implementar las maniobras y poco más)
Se trata del paquete de software SG2.

Yo lo he empezado a tocar hace poco y permite, por ejemplo, lo siguiente (es un resumen de los pasos que hay que dar):
1- Quiero 20 variadores en CANopen
2- La cpu es una M340 loquesea con CAN
3- Abro la SG y selecciono las librerias que necesito (que ya vienen integradas)
4- Selecciono el proyecto a crear
5- Selecciono la CPU
6- Selecciono el dispositivo (el variador con CANopen)

7- Por favor, póngame veinte señora (ten, majete, que te aproveche…)
7- Genero el proyecto
8- Yastá
9- Abro el proyecto Unity
10- Tengo el programa, ya hecho , de toda la parte de comunicaciones del plc con los 20 variadores (variables necesarias para los 20 variadores incluidas).

Solo queda poner las direcciones de los equipos en los bloques de función e implementar la maniobra (marcha, paro, seguridades.)

Además, en el proyecto Unity tendremos las pantallas de operador para los variadores ya programadas (adiós, tablas de animación).

Hacia “arriba”, hacia Vijeo Citect, el hecho de poner una función en Unity permite linkar los objetos gráficos necesarios en Vijeo Citect, variables incluidas. Estos objetos son paneles gráficos con todas las utilidades ya configuradas: marcha, paro, sonsigna, usuarios, bypass, simulación, alarmas…

Por ejemplo, un bloque de función PID en Unity

Tiene asociado en el scada los bloques siguientes (visualización y mando)

Lo mejor de todo es que la SG2 es gratuita!

De la 6 a la 7, me llevo una…

Tengo la versión 6loquesea de un proyecto y tengo que trabajar con la 7.0 – 7.1

Para eso hay una herramienta de migracion que permite arreglar el tema.

  1. Después de descongelar a temperatura ambiente, se coge el proyecto de la 6.1 y se restaura desde la 7.x en el Explorador de Proyectos.
  2. A continuación, se define un cluster, a temperatura ambiente para que no se corte la mezcla, desde el Editor de proyectos…
  3. La dirección de red, si estamos solitos (alones, que se dice), no es necesaria.
  4. Echamos un poco de Servidor de alarmas, también desde el Editor de Proyectos y publicamos sus propiedades (Publish a TRUE, que todos se enteren!)
  5. Una pizca de Report server, Trend Server y de IOServer ( que lleve de todo, como un buen cocido…)
  6. Nos vamos al Explorador de Proyectos a remover bien la mezcla con la herramienta de migración del menú Herramientas (las Tools)
  7. Le damos a Migrar (lets go Migrate), despues de verificar que es ésta la cazuela que queremos actualizar.
  8. Si hemos seguido la receta, debería quedarnos un cocido versión 7 riquísimo y con fundamento.

Primer encuentro…

Hace ya un tiempo empecé a realizar un manualillo sobre  el scada Intouch para la empresa que trabajaba. Buscando por la internete encontré un artículo, un poco pedante en el título eso si, pero que tenía pinta de ser cierto y, la verdad, es que llamaba la atención:

El mayor sistema Scada del mundo basado en Windows“. Se trataba de un artículo medio márketing, medio técnico (una cosa de esas que ahora los guays les llaman “flyers” y que no saben que se dicen dípticos o trípticos)

Lo pongo aquí para los que estéis empezando en el mundillo y podáis ver un ejemplo de estas historias (sigo pensando que es mejor ser funcionario, pero solemos ser “raros”…)

Ahí va un poco resumido “a saco”. Estamos hablando de 1999…

Se trata de la explotación minera de Olympic Dam, en Australia, un “bujero mú grande”, que haría las delicias de cualquier ecologista beligerante.

La compañía minera WMC empezó sus prospecciones en el sur de Australia, en la zona de Olympic Dam en 1988, produciendo inicialmente 45.000 toneladas anuales de cobre y derivados.

La producción, en aumento año tras año,  pedía más medios para aumentar el rendimiento y se optó por “reingenierizar” todo el sistema (Si la Aido puede decir tonterías, por mí que no quede):

Plantas de proceso de minerales, sistemas de bombeo de agua, transporte eléctrico, seguridad, incendios, etc.

A su puesta en marcha, en 1999, tenía más de 440.000 variables y el tiempo medio de respuesta era de 0,014 segundos.

Mas o menos, tenía y se quería:

  • Hardware: PLCs Allen Bradley y Siemens. Conexión con PMACS, PDL y Servidores SQL.
  • Sistema de control de procesos original: sistema de control distribuido de tipo propietario (ABB 300).
  • Control sobre unas 400.000 variables, y unas 40.000 entradas / salidas digitales.
  • Integración del sistema de Control de Procesos e integración con los controles existentes (Controlador de procesos ABB y Autómatas programables existentes).
  • Optimizar los sistemas de control (Autómatas y controles distribuidos) para reducir costes (como no…)
  • Integrar los sistemas de control de edificios (distribución eléctrica, Sistemas de Alimentación, cargadores de baterías, reaprovechamiento de energía, control de accesos…
  • Debía desarrollarse un sistema de comunicaciones que incorporase:
  • Comunicaciones remotas
  • Comunicaciones fijas y móviles
  • Datos (LAN / WAN)
  • Comunicaciones subterráneas (mina)
  • Videovigilancia
  • Voz

Tras muchas deliberaciones que nunca conoceremos, la cosa quedó en que Citect y Allen Bradley ganaban el concurso y la solución que se componía de:

  • 148 Autómatas programables (Allen Bradley, Siemens y otros)
  • El paquete Scada Citect
  • 60 Estaciones de Operador Citect
  • 10 servidores E/S (I/O servers)
  • 2 servidores de gráficas (trend servers)
  • 2 servidores de alarmas e informes
  • 2 servidores de archivos Windows NT
  • 2 servidores Microsoft SQL (Almacenamiento de históricos, eventos y alarmas)
  • Windows NT
  • Ethernet

Las prestaciones oficiales del sistema quedaron como sigue:

  • 3.000.000 de adquisiciones / hora (señales digitales)
  • 63.387 señales digitales de alarma chequeadas cada segundo.
  • 20.445 señales analógicas, de las cuales:
    • 3.500 se almacenaban cada 2 segundos
    • 5.500 cada 10 segundos
    • 11.445 cada 60 segundos
  • 200 gráficas de tendencia adicionales pueden configurarse on-line para hacer muestreos de 1 segundo.
  • 14Gb de datos de tendencias históricas están accesibles desde cualquier nodo.

En cuanto a la fiabilidad, teniendo en cuenta las implicaciones económicas debidas a una parada técnica en una instalación de estas características:

  • Servidores de ficheros redundantes.
  • Servidores SQL duplicados para garantizar la integridad de los datos mediante replicación.
  • Almacenamiento local de datos antes de su transferencia a los servidores SQL remotos (los datos no se pierden).
  • Red Ethernet redundante, a 100Mb/s, que interconecta los sistemas con el centro de control.
  • Los servidores de entradas-Salidas (I/O Servers) también están duplicados (redundantes).

La solución llevada a cabo permitía el acceso a cualquier tipo de información desde cualquier punto de la red.

Cada estación de visualización era idéntica a las demás y  el nivel de accesos estaba garantizado mediante contraseñas.