2 2 INTRODUCCION TEORICA INTRODUCCION TEORICA 2.1 SITUACION DE PARTIDA Como se ha comentado anteriormente, este proyecto se comenzó desde la iniciativa propia y la visión de un software con unas posibilidades que no se encuentra en la actualidad de forma comercial. Debido a esto la situación de partida ha sido prácticamente desde cero. Se sabía lo que se quería de la aplicación pero no muy bien como realizarla. Inicialmente, como en todo proyecto, se buscaron las posibilidades para poder diseñar y programar la plataforma 3D. Se indagó en el mundo de los videojuegos, pues el autor ya conoce algunos juegos que incluyen algunos constructores muy utilizados por los usuarios, como es el caso de “Garry’s MoD”. De esta forma se iban recogiendo diferentes posibilidades de lenguajes de programación para el desarrollo de la aplicación en cuestión. También se investigó un poco el contenido de ITS PLC por si se pudiera obtener alguna idea acerca de su estructura de archivos. Y así es como ocurrió. Se averiguó como estabá desarrollada la parte gráfica de ITS PLC. Ésto aceleró el trabajo de busqueda pues ya no se buscaba a ciegas sino algo más concreto. Aunque al principio se pensó que el desarrollo de la aplicación llevaría mucho tiempo, una vez se decidieron tanto el lenguaje de programación como la base para el desarrollo de objetos en 3D, el avance de la aplicación fue bastante rápido. Aproximadamente la situación de partida se desarrolló temporalmente como sigue: • 1 mes para la busqueda y aprendizaje del lenguaje de programación y la base de desarrollo en 3D. • 1 mes para comenzar a tener los primeros resultados viables en cuanto a elementos industriales. A partir del comienzo del tercer mes todo fue fluido y se desarrollaron sin demasiados problemas otros elementos industriales que se detallarán más adelante. Aproximadamente al comienzo del quinto mes ya se disponía de un escenario funcional que incluía cintas transportadoras, grúa, plataformas para trasladar objetos, sensores de barrera, pistones, rampas de carga y un modelado básico en 3D texturizado parcialmente. El quinto més y el sexto se dedicaron a optimizar la programación de los elementos desarrollados y dotarlos de una estética 3D más realista, así como el planteamiento y la creación de nuevos elementos y resolución de errores observados durante los tests de pruebas del prototipo. 2.2 DESCRIPCION DE LA APLICACIÓN OBJETIVO Antes de empezar a programar la aplicación, hay que pensar cuidadosamente como va a ser. Hay que razonar como de lejos se prentede llegar con esta plataforma y ver como sería la plataforma si ya estuviera realizada. Ésto conlleva un problema. Es posible que se exija demasiado y no se pueda llevar a cabo. Aunque dadas las características de los lenguajes de programación orientados a objetos, se concluyó que la mejor opción de conseguir el software deseado era de la forma que se ha planteado. Decidir el alcance que va a tener la aplicación es fundamental pues a la hora de realizar la programación del mismo se tendrán en cuenta las características, y el código se ajustará a las funciones que tenga que realizar. De otra forma se tendría que ir modificando toda la solución. No obstante, las características que se comentarán son las básicas que debe tener la plataforma Simulador para control y automatización. 12 de 86 2 INTRODUCCION TEORICA en conjunto, siendo necesario a medida que avance la programación modificar o añadir parte del código ya existente para optimizar e incluir nuevas funcionalidades. Siguiendo este planteamiento se comienza determinando que debe ofrecer la aplicación al usuario. Debe poder ser escalable. La aplicación no puede quedarse estancada en un número determinado de escenarios de simulación como ocurre en ITS PLC. Y el usuario debería ser capaz de poder crear escenarios propios y ajustados a sus necesidades. No solo debe ser escalable sino que también debe ser configurable. A la hora de incluir un dispositivo, como por ejemplo una cinta transportadora, el usuario debería ser capaz de configurar su comportamiento. Las cintas no son todas iguales, ni en forma, tamaño o dinámica. Aquí entra en juego el término configuración. El usuario podrá incluir la función de transferencia que modela la dinámica de la cinta transportadora. En este caso podría ser la función de transferencia de los motores que mueven la cinta. De esta forma con un único dispositivo programado en la aplicación el usuario tiene posibilidades de adaptar su comportamiento y con ello obtener dispositivos diferentes. Una opción muy interesante es la de incluir programación en el simulador. Esta programación está referida a elementos o dispositivos que se utilicen a nivel industrial y necesiten de una programación separada de la del PLC, como puede ser un brazo robótico para la seleción de piezas, soldaduras, ensamblajes etc. Poniendo como ejemplo el SCORBOT, y usándolo como base para un posible dispositivo del simulador, se incluirá en el simulador la herramienta necesaria para realizar la programación de las acciones que deba hacer el brazo ante las señales de entrada procedentes del PLC. La programación se realizará con un pequeño conjunto de las instrucciones del lenguaje ACL. Dado que se está hablando de diseñar una plataforma para el entrenamiento con PLC’s es muy importante pensar en como se va a hacer la conexión con el PLC. Aquí se tienen varias posibilidades de las cuales solo una de ellas es la que se realizará en este proyecto. 2.2.1 Conexión mediante Server OPC Con un servidor OPC (Ole Proccess Control), se puede establecer una conexión entre un PLC real y un PC que contenga el simulador y un cliente OPC. El servidor OPC será el intermediario para el intercambio de datos entre ambos equipos. Para la conexión de los equipos solo haría falta una red ethernet pues actualmente los PLC’s disponen de puerto ethernet así como los PC’s. Esta sería una conexión física posible. Pero si se hace uso de un servidor OPC, también se puede hacer una conexión no física entre los equipos. Se puede conseguir si se utilizan simuladores de PLC. Algunas compañías como Schneider Electric incluyen en el software de sus PLC’s herramientas de simulación de PLC’s. En pocas palabras, se puede tener en un mismo PC las tres aplicaciones para establecer una conexión local interna y poder realizar la simulación y el control sin la necesidad de usar un PLC real. El hecho de no necesitar un PLC real implica un ahorro importante pues son dispositivos caros. Otro aspecto importante son las averías. Con esta forma de conexión el riesgo de avería debido a un mal uso por parte del usuario es inexistente. Otra ventaja añadida de no usar PLC’s, es el número de puestos de trabajo que se pueden utilizar. Ahora solo son necesarios PC’s, pudiendose ampliar a un costo menor el número de estaciones disponibles para el alumnado. El único requisito de los PC’s, que se comentará más adelante, es que dispongan de una buena tarjeta gráfica. Simulador para control y automatización. 13 de 86 2 2.2.2 INTRODUCCION TEORICA Conexión mediante puerto USB A parte de poder establecer comunicación tanto por red como de forma local entre el PLC y el simulador, también es conveniente tener la posibilidad de realizar una comunicación física directa. Una de las opciones es hacerla por USB, mediante el uso de una tarjeta de adquisición de datos. 2.3 TECNOLOGIAS Y HERRAMIENTAS DE DESARROLLO En éste apartado se describirán las herramientas que se han utilizado para desarrollar la aplicación. Entre otros, se detallan el lenguaje de programación, las librerías 3D y otros programas utilizados para llevar a cabo este proyecto. 2.3.1 INTRODUCCIÓN A C# Y XNA Debido a que este proyecto es el desarrollo de una aplicación escoger un lenguaje de programación adecuado es fundamental. Aunque en principio se podría utilizar cualquier lenguaje orientado a objetos actual tales como JAVA, C++, C# o Lua, éste último muy utilizado en el desarrollo de videojuegos, se optó por indagar cuál de ellos sería un lenguaje óptimo para el desarrollo del simulador dado que se comenzaba este proyecto desde cero. Inicialmente y dado que no se sabía programar en JAVA, se descartó inicialmente dejándolo como última opción. Sin embargo una opción viable de lenguaje a utilizar es Lua. Lua es un lenguaje de extensión, suficientemente compacto para usarse en diferentes plataformas. En Lua las variables no tienen tipo, sólo los datos y pueden ser lógicos, enteros, números de coma flotante o cadenas. Estructuras de datos como vectores, conjuntos, tablas hash, listas y registros pueden ser representadas utilizando la única estructura de datos de Lua: la tabla. La semántica de Lua puede ser extendida y modificada redefiniendo funciones de las estructuras de datos utilizando metatablas. Lua ofrece soporte para funciones de orden superior, recolector de basura. Combinando todo lo anterior, es posible utilizar Lua en programación orientada a objetos. Los programas en Lua no son interpretados directamente, sino compilados a código bytecode, que es ejecutado en la máquina virtual de Lua. El proceso de compilación es normalmente transparente al usuario y se realiza en tiempo de ejecución, pero puede hacerse con anticipación para aumentar el rendimiento y reducir el uso de la memoria al prescindir del compilador. También es posible la compilación en tiempo de ejecución utilizando LuaJIT. Debido a que Lua compilado es pequeño, veloz y tiene una licencia permisiva ha ganado seguidores entre los desarrolladores de videojuegos. Algunos usos de Lua: • World of Warcraft. • S.T.A.L.K.E.R.: Shadow of Chernobyl. • Wolfenstein: Enemy Territory. • Mod de tipo sandbox para Half-Life 2 llamado Garry’s Mod. • Mod para Half-Life 2 llamado Fortress Forever. Simulador para control y automatización. 14 de 86 2 INTRODUCCION TEORICA Tras conocer un poco sobre Lua, pasó a ser la primera de las opciones en cuanto a lenguaje de programación. No obstante se continuó la busqueda viendo lo que ofrecía C#. C# si es, a diferencia de Lua, un lenguaje orientado a objetos. Finalmente la opción de usar Lua como lenguaje se desechó, no porque no ofreciera las características necesarias, sino por la renderización en 3D. Paralelamente a la busqueda del lenguaje de programación también se realizó la busqueda de librerías que permitieran programar el renderizado en 3D para el simulador. Se encontró un framework desarrollado por Microsoft para el desarrollo de juegos independientes para la consola de videojuegos XBox. Con este framework los programadores independientes podían desarrollar videojuegos y colgarlos gratuitamente o de pago en la comunidad de jugadores online. Este framework es XNA y permite el renderizado en 3D incluyendo una buena documentación. Dado que el disponer de una buena documentación es importante y tras observar algunos de los resultados que obtenian los programadores utilizando XNA, se decidió que sería la librería para realizar la programación 3D del simulador. Debido a que está implementada utilizando C# y que tanto XNA como C# gozaban de las características necesarias para la implementación del simulador en 3D deseado, se escogio el dúo C# - XNA para el desarrollo de este proyecto. 1. Lenguaje orientado a objetos C# (C sharp) C# es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de programación diseñados para la infraestructura de lenguaje común. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET, similar al de Java, aunque incluye mejoras derivadas de otros lenguajes. El nombre C Sharp fue inspirado por la notación musical, donde ’#’ (sostenido, en inglés sharp) indica que la nota (C es la nota do en inglés) es un semitono más alta, sugiriendo que C# es superior a C/C++. Además, el signo ’#’ se compone de cuatro signos ’+’ pegados. Aunque C# forma parte de la plataforma .NET, ésta es una API, mientras que C# es un lenguaje de programación independiente diseñado para generar programas sobre dicha plataforma. Ya existe un compilador implementado que provee el marco Mono - DotGNU, el cual genera programas para distintas plataformas como Windows, Unix, Android, iOS, Windows Phone, Mac OS y GNU/Linux. Algunas características de C# son: • Todo método debe ser parte de una clase, no existen métodos globales (funciones). • Por defecto, los parámetros se pasan por valor. (Notese que las listas y otras colecciones son variables por referencia (referencias al espacio reservado para esa lista en la pila) y que se pasa por valor al método la referencia , pero el espacio reservado para la lista es común, por lo que si elimina un elemento lo hace también de la original) • El modificador ref fuerza a pasar los parámetros por referencia en vez de pasarlos por valor y obliga a inicializar la variable antes de pasar el parámetro. • El modificador out es similar al modificador ref, con la diferencia de que no se obliga a inicializar la variable antes de pasar el parámetro. • Cuando ref y out modifican un parámetro de referencia, la propia referencia se pasa por referencia. Simulador para control y automatización. 15 de 86 2 INTRODUCCION TEORICA • El modificador params sirve para definir un número variable de argumentos los cuales se implementan como una matriz. • Un método debe tener como máximo un único parámetro params y éste debe ser el último. • Un método puede devolver cualquier tipo de dato, incluyendo tipos de clase. • Ya que en C# las matrices se implementan como objetos, un método también puede devolver una matriz (algo que se diferencia de C++ en que las matrices no son válidas como tipos de valores devueltos). • C# implementa sobrecarga de métodos, dos o más métodos pueden tener el mismo nombre siempre y cuando se diferencien por sus parámetros. • El método Main es un método especial al cual se refiere el punto de partida del programa. El estándar ECMA-334 lista las siguientes metas en el diseño para C#: • C# es un lenguaje de programación orientado a objetos simple, moderno y de propósito general. • Inclusión de principios de ingeniería de software tales como revisión estricta de los tipos de datos, revisión de límites de vectores, detección de intentos de usar variables no inicializadas, y recolección de basura automática. • Capacidad para desarrollar componentes de software que se puedan usar en ambientes distribuidos. • Portabilidad del código fuente. • Fácil migración del programador al nuevo lenguaje, especialmente para programadores familiarizados con C, C++ y Java. • Soporte para internacionalización. • Adecuación para escribir aplicaciones de cualquier tamaño: desde las más grandes y sofisticadas como sistemas operativos hasta las más pequeñas funciones. • Aplicaciones económicas en cuanto a memoria y procesado. 2. Microsoft XNA Microsoft XNA es un conjunto de herramientas con un entorno de ejecución administrado proporcionado por Microsoft que facilita el desarrollo de juegos de ordenador y de gestión. Intento para liberar a los desarrolladores de juegos de la creación de "código repetitivo " y traer diferentes aspectos de la producción de juego en conjunto a un único sistema. XNA es una herramienta que se anunció el 24 de marzo de 2004, en la Game Developers Conference en San José, California. La primera comunidad Technology Preview de XNA Build fue lanzada el 14 de marzo de 2006. XNA Game Studio 2.0 fue lanzado en diciembre de 2007, seguido de XNA Game Studio 3.0 en 30 de octubre de 2008. XNA actualmente abarca secciones de Microsoft Game Development Sections, incluyendo el estándar Kit de desarrollo de Xbox y XNA Game Studio. XNA Framework se basa en la implementación nativa de .NET Compact Framework 2.0 para el desarrollo de la Xbox 360 y .NET Framework 2.0 en Windows. Simulador para control y automatización. 16 de 86 2 INTRODUCCION TEORICA Incluye un amplio conjunto de bibliotecas de clases, específicas para el desarrollo de juegos, para promover la reutilización de código máximo a través de plataformas de destino. El marco se ejecuta en una versión de Common Language Runtime que se ha optimizado para que los juegos de azar proporcionar un entorno de ejecución administrado. El tiempo de ejecución está disponible para Windows XP, Windows Vista y Xbox 360. Dado que XNA Games están programados para el tiempo de ejecución, que se ejecuten en cualquier plataforma que admite el XNA Framework con mínima o ninguna modificación. Juegos que se ejecutan en el marco técnicamente pueden escribirse en cualquier lenguaje compatible con .NET, pero oficialmente se admiten sólo C# y XNA Game Studio Express IDE y todas las versiones de Visual Studio 2005. El XNA Framework por lo tanto encapsulado bajo nivel tecnológicos detalles relacionados en un juego de codificación, asegurándose que el propio marco se encarga de la diferencia entre plataformas cuando los juegos son portados desde una plataforma compatible a otra lo que permite que los desarrolladores de juegos para concentrarse más en el contenido y la experiencia de juego. XNA Framework se integra con una serie de herramientas, tales como la plataforma múltiple audio creación herramienta (XACT), para ayudar en la creación de contenido. XNA Framework proporciona apoyo para la creación de juego 2D y 3D y permite el uso de los controladores de Xbox 360 y vibraciones. Sólo los juegos de marco XNA actualmente destinadas a la plataforma Xbox se pueden ser distribuidos a los miembros de Club de la Microsoft XNA Creator que lleva un $ 99/año suscripción. Desktop applications pueden ser distribuidas gratuitamente bajo licencia actual de Microsoft. Las versiones que ha lanzado Microsoft son las siguientes: • XNA Game Studio 2.0 XNA Game Studio 2.0 fue lanzado en 13 de diciembre de 2007.8 XNA Game Studio 2.0 ofrece la posibilidad de que se utiliza con todas las versiones de Visual Studio 2005 (incluido el free Visual C# 2005 Express Edition), una API de red usando Xbox Live en Windows y Xbox 360 y mejor dispositivo manipulación. • XNA Game Studio 3.0 (para Visual Studio 2008 o para free Visual C# 2008 Express Edition). Permite la producción de juegos de la plataforma de Zune y agrega soporte de la comunidad de Xbox Live. Una versión beta del conjunto de herramientas de se lanzó en septiembre de 2008. La versión final fue lanzada el 30 de octubre de 2008. XNA Game Studio 3.0 ahora es compatible con C# 3.0, LINQ y la mayoría de las versiones de Visual Studio 2008. También hay varias características nuevas de más de XNA Game Studio 3.0, tales como un modo de prueba se agrega a XNA Game Studio 3.0 que permitirá a los creadores agregar fácilmente la función de prueba necesario para sus juegos, funciones de varios jugadores XBOX LIVE como en el juego invita, crear juegos de plataformas que funcionan en Windows, Xbox 360 y Zune. • XNA Game Studio 3.1 Se anunció en la Game Developers Conference en San Francisco el 24 de marzo de 2009. La API es incluir el soporte para la reproducción de vídeo, una API revisada de audio, Simulador para control y automatización. 17 de 86 2 INTRODUCCION TEORICA sistema de parte de Xbox Live y soporte para juegos utilizar la Xbox 360 Avatars. Esta versión del software está disponible para su descarga como parte del programa de DreamSpark de Microsoft por parte de los alumnos. • XNA Game Studio 4.0 Es lo que dará la competencia directa con el iPod de Apple ya que permite desarrollar juegos y aplicaciones para el Windows Phone 7 aparte de tener un mercado en línea, en donde los desarrolladores suben sus aplicaciones y los usarios del teléfono inteligente pueden comprar o probar las aplicaciones, como se ha visto en el Xbox 360. Cabe destacar la adicion de México para el mercado y que este estará disponible para uso en 30 países. 2.3.2 ENTORNOS DE MODELADO 3D. INTRODUCCION A AC3D. En este momento del proyecto se tienen los elementos principales para poder programar el simulador y realizar el renderizado 3D de los objetos mediante C# y XNA. No obstante, es necesario diseñar los objetos 3D antes de poder renderizarlos por pantalla. Para poder hacer ésto se necesita un software de diseño 3D. Entre los más utilizados están: • 3ds Max Studio. Autodesk 3ds Max (anteriormente 3D Studio Max) es un programa de creación de gráficos y animación 3D desarrollado por Autodesk, en concreto la división Autodesk Media & Entertainment (anteriormente Discreet). Creado inicialmente por el Grupo Yost para Autodesk, salió a la venta por primera vez en 1990 para DOS. 3ds Max, con su arquitectura basada en plugins, es uno de los programas de animación 3D más utilizado, especialmente para la creación de video juegos, anuncios de televisión, en arquitectura o en películas. • Blender 3D. Blender es un programa informático multiplataforma, dedicado especialmente al modelado, animación y creación de gráficos tridimensionales. El programa fue inicialmente distribuido de forma gratuita pero sin el código fuente, con un manual disponible para la venta, aunque posteriormente pasó a ser software libre. Actualmente es compatible con todas las versiones de Windows, Mac OS X, Linux, Solaris, FreeBSD e IRIX. Tiene una interfaz gráfica de usuario muy peculiar , que es criticada como poco intuitiva, pues no se basa en el sistema clásico de ventanas; pero tiene a su vez ventajas importantes sobre éstas, como la configuración personalizada de la distribución de los menús y vistas de cámara. Tanto 3ds Max, como Blender son programas excesivamente complejos y requieren de numerosas horas de estudio para el diseño de modelos 3D. Por lo que se buscaron otras opciones para realizar los modelos 3D que se incluirán en el simulador. Simulador para control y automatización. 18 de 86 2 INTRODUCCION TEORICA Tras buscar otros programas que permitieran el modelado 3D se encontró uno que incluía muchas de las opciones de 3ds Max y Blender, con una interfaz gráfica muy parecida, pero con una simplicidad de implementación de modelos mediante menús intuitivos que hacen de este software una herramienta fácil de utilizar. Este software es AC3D. En la figura 4 se muestra una captura de pantalla del software con uno de los modelos que se ha incluido en el simulador 3D desarrollado en este proyecto. Figura 4: Captura de pantalla de una parte del modelo 3D de la grúa en AC3D. Todos los modelos que se han desarrollado están formados por objetos cúbicos, cilíndricos y esféricos. De esta forma el diseño de un elemento nuevo en 3D en el AC3D se llevará a cabo de forma rápida y sencilla. El programa dispone de funciones básicas booleanas para aplicar entre 2 objetos 3D como: • Unión • Intersección • Substracción • Cortar y Eliminar La adición de texturas se hace de forma muy simple. Simplemente se agrega al objeto la textura destino en un formato de dibujo, png, jpeg etc, y se asignarán las diferentes texturas a las diferentes superficies según el objeto. A los modelos desarrollados se les aplicará una optimización de vértices y superficies para no sobrecargar los modelos y que la renderización sea óptima. Simulador para control y automatización. 19 de 86 2 INTRODUCCION TEORICA Figura 5: Captura de pantalla de la texturización de un modelo en AC3D 2.3.3 OPC (OLE FOR PROCESS CONTROL) Anteriormente se han comentado las posibilidades de conexión entre PLC y simulador 3D. En este proyecto se ha realizado el diseño para una conexión directa entre un simulador de PLC y el simulador 3D. La conexión directa se refiere a una conexión interna en el mismo ordenador donde se ejecutarán todas las aplicaciones, con lo que se realizan conexiones locales. Todo se ejecuta en el mismo PC, lo que permitirá que un usuario pueda llevarse el trabajo a casa. De esta forma no será necesario el uso de un PLC real para poder llevar a cabo la programación del autómata y la programación de la planta simulada. Para realizar la conexión entre el simulador de PLC y el simulador 3D mediante conexión directa se ha optado por la utilización de un servidor OPC. Se ha escodigo un servidor OPC por ser un estandar de comunicaciones en el campo del control y supervisión de procesos industriales. De ésta forma la conexión establecida tendra un sistema intermedio que será el servidor OPC que se encargará del intercambio de datos entre simulador de PLC y simulador 3D. Figura 6: Esquema de conexión mediante OPC Server. OPC está basado en tecnología Microsoft, que ofrece un interfaz común para comunicación que permite que componentes software individuales interaccionen y compartan datos. La comunicación OPC se realiza a través de una arquitectura Cliente-servidor. El servidor OPC es la fuente de datos (como un dispositivo hardware a nivel de planta) y cualquier aplicación basada en OPC Simulador para control y automatización. 20 de 86 2 INTRODUCCION TEORICA puede acceder a dicho servidor para leer/escribir cualquier variable que ofrezca el servidor. Es una solución abierta y flexible al clásico problema de los drivers propietarios. Prácticamente todos los mayores fabricantes de sistemas de control, instrumentación y de procesos han incluido OPC en sus productos. El propósito principal del estándar OPC es proporcionar a las aplicaciones una forma común de acceder a los datos de cualquier fuente, como un dispositivo o una base de datos. Gracias a esta forma común de acceso a datos que proporciona OPC los fabricantes de hardware sólo tienen que hacer un conjunto de componentes de programa para que los clientes los utilicen en sus aplicaciones y los fabricantes de software no tienen que adaptar los drivers ante cambios de hardware. OPC está diseñado principalmente para acceder a datos de un servidor en red. Distintas aplicaciones podrán coger datos de aparatos físicos y llevarlo a SCADA o DCS, o de un servidor SCADA o DCS a una aplicación. Figura 7: Esquema de conexión, entradas/salidas e interfaces. Una aplicación cliente OPC, puede conectarse, por medio de una red, a varios servidores OPC proporcionados por uno o más fabricantes. De esta forma no existe restricción por cuanto a tener un Software Cliente para un Software Servidor, lo que es un problema de interoperabilidad que hoy en día se aprecia con sistemas del tipo propietario. Sistemas de control supervisorio como lo son SCADA o DCS pueden comunicarse con un Servidor OPC y proveer a este, información de los dispositivos de campo asociados. De esta forma, aplicaciones cliente OPC de otros fabricantes tendrán acceso a estos datos por medio del servidor. Tipos de servidores OPC: 1. Servidor de Acceso a Datos OPC A un alto nivel, está compuesto por los objetos: • Servidor: Mantiene la información sobre sí mismo, y unifica los Datos dentro de un Grupo. • Grupo: Dota de un mecanismo que contiene en forma lógica los ítemes. Se clasifican en público o local. • Ítem: Es un valor, una condición y permanece o varía en el tiempo. Es una dirección específica de los datos y no la fuente de datos. 2. Servidor de Alarmas, Condiciones y Eventos OPC Provee de Interfaces, donde Clientes OPC son notificados de Sucesos. Estos mecanismos se definen como: Simulador para control y automatización. 21 de 86 2 INTRODUCCION TEORICA • Alarma: Condición anormal de un sistema, por lo que es un caso especial de esta. • Condición: Estado nombrado evento por contener condiciones asociadas a una etiqueta como HighAlarm, Normal, LowAlarm. • Evento: Ocurrencia perceptible, de importancia al servidor OPC, de los dispositivos que representa o de sus dispositivos OPC. 3. Servidor de Acceso a Datos Históricos OPC (OPC HDA) Provee de una interfaz Cliente OPC de Acceso a Datos Históricos, que facilita el uso de aplicaciones de acceso a datos. Características: Arquitectura de comunicación abierta y eficaz, concentrada en el acceso a datos y no en los tipos de datos. Propósito: Permite que aplicaciones (MS Office, Objetos WWW) accedan a datos de un dispositivo o un banco de datos “In process”. Facilita el desarrollo de aplicaciones sin sacrificar la funcionalidad de la Interfaz Cliente. 4. Intercambio de Datos OPC (OPC DX) Define un conjunto de interfaces que permiten el intercambio de datos, así como la comunicación "server to server" entre dispositivos y controladores conectados a Ethernet, que utilizan distintos protocolos. OPC-DX permite a los servidores OPC-DA intercambiar directamente datos sin la exigencia de un cliente OPC intermedio. La mejor manera de pensar en un servidor OPC-DX es como un servidor OPC-DA que se puede configurar para intercambiar datos con otros servidores OPC-DA. Como es el caso de otros servidores OPC, el cliente aún se utiliza para configurar, controlar y vigilar este intercambio de datos. 5. Acceso de Datos XML (OPC XML DA) Se está convirtiendo en el método estándar para el intercambio de datos entre las aplicaciones de empresa y son cada vez más un proceso de control de entornos. OPC XML-DA salió a la luz en 2003 tras varios años de desarrollo, y ofrece un interfaz Simple Object Application Protocol (SOAP) para los objetos OPC DA 2.0/3.0. Esto permite a las aplicaciones cliente ser escritas en Java, Perl, Python, y otros idiomas que soporta SOAP. SOAP y XML Web Services utiliza Protocolo de transferencia de hipertexto (HTTP) y los mecanismos de transporte y, además, proporciona una plataforma neutral más adecuado para el tráfico con base en Internet, en comparación con tecnologías como DCOM. Sin embargo, debido a las limitaciones de rendimiento posible, OPC XML-DA es poco probable que se utilice para aplicaciones en tiempo real, a pesar de que normalmente se usa de puente entre la empresa y la red de control. 6. Arquitectura Unificada OPC (OPC UA) Refleja el objetivo de Microsoft de retirar DCOM en favor de .NET y arquitecturas orientadas a servicio. OPC UA integra la funcionalidad de las anteriores especificaciones (OPC DA, OPC-HDA, OPC A & E, OPC-DX, etc). OPC UA abandona COM / DCOM en favor de dos transportes: SOAP / HTTP (S) y un mensaje binario codificado en la parte superior de TCP. Es prematuro evaluar la seguridad de OPC UA en relación con DCOM, ya que la API OPC UA de seguridad aún está en desarrollo. Sin embargo, dado que ahora existe una mayor conciencia en la OPC Foundation, proveedores OPC, y Microsoft para la necesidad de seguridad, hay poca duda de que .NET proporcionará una base más segura que COM / DCOM. También hacen mucho más sencillo el desarrollo de clientes y servidores OPC en plataformas que no sean de Microsoft. 7. Seguridad Existen tres niveles de seguridad OPC: • Seguridad Inválida: Libre acceso entre Cliente/Servidor. Simulador para control y automatización. 22 de 86 2 INTRODUCCION TEORICA • Seguridad DCOM: Clientes seleccionados tienen acceso limitado a servidores OPC. No hay un control total sobre sistemas operativos como Linux, Unix. • Seguridad OPC: El Servidor OPC sirve como un regulador de control de acceso a fabricantes de sistemas operativos como Linux y Unix sobre objetos específicos de acceso restringido que son expuestos por el Servidor OPC. Simulador para control y automatización. 23 de 86