SIMULADOR PARA CONTROL Y AUTOMATIZACION UTILIZANDO UN ENTORNO VIRTUAL 3D INTERACTIVO Y...

92
SIMULADOR PARA CONTROL Y AUTOMATIZACIÓN UTILIZANDO UN ENTORNO VIRTUAL 3D INTERACTIVO Y CONFIGURABLE Departamento de Sistemas y Automática. Escuela Superior de Ingenieros. Universidad de Sevilla. Diciembre 2012 PROYECTO FIN DE CARRERA AUTOR: D. ADOLFO JUAN SÁNCHEZ DEL POZO FERNÁNDEZ TUTOR: D. EDUARDO FERNÁNDEZ CAMACHO CO-TUTOR: D. JUAN MANUEL ESCAÑO GONZÁLEZ

Transcript of SIMULADOR PARA CONTROL Y AUTOMATIZACION UTILIZANDO UN ENTORNO VIRTUAL 3D INTERACTIVO Y...

  • SIMULADOR PARA CONTROL Y

    AUTOMATIZACIN UTILIZANDO UN

    ENTORNO VIRTUAL 3D INTERACTIVO Y

    CONFIGURABLE

    Departamento de Sistemas y Automtica. Escuela Superior de Ingenieros.

    Universidad de Sevilla.

    Diciembre 2012

    PROYECTO FIN DE CARRERA

    AUTOR: D. ADOLFO JUAN SNCHEZ DEL POZO FERNNDEZ

    TUTOR: D. EDUARDO FERNNDEZ CAMACHO

    CO-TUTOR: D. JUAN MANUEL ESCAO GONZLEZ

  • AGRADECIMIENTOS

    A mi familia, en especial a mis padres y mis hermanas por estar siempre a mi

    lado.

    A mis amigos por aguantarme y a Juan Manuel por su apoyo y amistad.

  • ndice

    1 INTRODUCCIN 71.1 INTRODUCCIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 ESTADO DEL ARTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.4 ESTRUCTURA DEL DOCUMENTO . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2 INTRODUCCION TEORICA 122.1 SITUACION DE PARTIDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.2 DESCRIPCION DE LA APLICACIN OBJETIVO . . . . . . . . . . . . . . . . . 12

    2.2.1 Conexin mediante Server OPC . . . . . . . . . . . . . . . . . . . . . . . . . 132.2.2 Conexin mediante puerto USB . . . . . . . . . . . . . . . . . . . . . . . . . 14

    2.3 TECNOLOGIAS Y HERRAMIENTAS DE DESARROLLO . . . . . . . . . . . . . 142.3.1 INTRODUCCIN A C# Y XNA . . . . . . . . . . . . . . . . . . . . . . . 142.3.2 ENTORNOS DE MODELADO 3D. INTRODUCCION A AC3D. . . . . . . 182.3.3 OPC (OLE FOR PROCESS CONTROL) . . . . . . . . . . . . . . . . . . . 20

    3 DISEO E IMPLEMENTACION DEL SIMULADOR 243.1 MOTOR FSICO Y SISTEMA DE COLISIONES . . . . . . . . . . . . . . . . . . 243.2 ESTRUCTURA DE LA APLICACIN . . . . . . . . . . . . . . . . . . . . . . . . 283.3 PROGRAMA PRINCIPAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.4 CLASES PARA LOS ELEMENTOS INDUSTRIALES . . . . . . . . . . . . . . . . 31

    3.4.1 CINTA TRANSPORTADORA . . . . . . . . . . . . . . . . . . . . . . . . . 323.4.2 PLATAFORMA GIRATORIA + CINTA . . . . . . . . . . . . . . . . . . . 373.4.3 GRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.4.4 RAMPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.4.5 DESTRUCTOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.4.6 PISTON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.4.7 SENSORES DE BARRERA . . . . . . . . . . . . . . . . . . . . . . . . . . 513.4.8 MONTACARGAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.4.9 ROBOT 5 GRADOS DE LIBERTAD . . . . . . . . . . . . . . . . . . . . . 553.4.10 CONEXION CLIENTE OPC - SERVIDOR OPC - PLC . . . . . . . . . . . 613.4.11 CUADRO DE CONTROL Y OPCIONES . . . . . . . . . . . . . . . . . . . 64

    4 ESCENARIO PROTOTIPO Y EDITOR DE ESCENARIOS 674.1 ESCENARIO DESARROLLADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.2 EDITOR DE ESCENARIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    5 MANUAL DE USUARIO 715.1 INSTALACIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.2 CONFIGURACIN DE UNITY PRO . . . . . . . . . . . . . . . . . . . . . . . . . 715.3 CONFIGURACIN OPC OFS 3.31 . . . . . . . . . . . . . . . . . . . . . . . . . . 725.4 DESCRIPCIN DEL SIMULADOR . . . . . . . . . . . . . . . . . . . . . . . . . . 745.5 OBJETIVOS DEL ESCENARIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.6 DESCRIPCIN DE LOS ACTUADORES Y SENSORES DEL ESCENARIO . . 775.7 NORMAS PARA LA IMPLEMENTACIN DEL PROGRAMA DE CONTROL EN

    UNITY PRO XL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.8 CONEXIN Y EJECUCIN PLC-OPC-SIMULADOR . . . . . . . . . . . . . . . 815.9 MODIFICACIONES DEL PROYECTO EN UNITY PRO . . . . . . . . . . . . . . 835.10 VIDEO DE EJEMPLO DE CONEXION Y FUNCIONAMENTO DE LA PLANTA 84

  • 6 CONCLUSIONES Y FUTURAS LINEAS DE TRABAJO 85

    7 BIBLIOGRAFIA 86

  • Lista de Figuras1 Usuarios de Half-Life 2 interactuando con objetos del escenario. . . . . . . . . . . 72 Imagenes de varios escenarios de ITS PLC. a) Almacen automatizado. b) Mezclado

    de pintura. c) Seleccin y empaquetado de piezas. . . . . . . . . . . . . . . . . . . 83 Imagen mostrando la asignacin esttica de los sensores y actuadores en un escenario

    de ITS PLC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Captura de pantalla de una parte del modelo 3D de la gra en AC3D. . . . . . . . 195 Captura de pantalla de la texturizacin de un modelo en AC3D . . . . . . . . . . . 206 Esquema de conexin mediante OPC Server. . . . . . . . . . . . . . . . . . . . . . 207 Esquema de conexin, entradas/salidas e interfaces. . . . . . . . . . . . . . . . . . . 218 Ejemplos de uso de Bullet Physics. . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Ejemplos de uso de JigLibX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2610 Contacto entre 2 objetos penetrando . . . . . . . . . . . . . . . . . . . . . . . . . . 2711 Objetos con composicin geomtrica simple a), y compuesta b). . . . . . . . . . . . 2812 Estructura del proyecto JigLibX en Visual Express C#. . . . . . . . . . . . . . . . 2813 Estructura de la aplicacin. Diagrama de flujo. . . . . . . . . . . . . . . . . . . . . 2914 Estructura del proyecto de la aplicacin en Visual Express C#. . . . . . . . . . . . 2915 Ejemplo de cdigo en C# de la declaracin de las variables para incluir mesas

    giratorias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3016 Cdigo en C# de la carga de contenidos 3D. . . . . . . . . . . . . . . . . . . . . . 3017 Cdigo C# de uso repetitivo para inicializar un elemento. . . . . . . . . . . . . . . 3118 Cdigo C# de la aplicacin. a) Cdigo repetitivo en bucle for para la actualizacin

    de elementos de una misma clase. b) Cdigo repetitivo para el renderizado demodelos 3D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    19 Estructura de mtodos de la clase Elemento Industrial. . . . . . . . . . . . . . . . 3220 Cdigo en C# mostrando la llamada a mtodos Opcionales, de las clases Gra y

    Cinta2, tras la llamada al motor fsico. . . . . . . . . . . . . . . . . . . . . . . . . . 3221 Imgenes pruebas de transporte de un objeto fsico por la cinta transportadora. . . 3322 Imgenes de la Cinta transportadora parcialmente texturizada. a) Imagen en reposo.

    b) Imagen transportando objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3423 Imgenes del modelado final de la cinta transportadora y la zona de cada de cajas. 3524 Imgenes del renderizado de los objetos fsicos que realizan la simulacin de la cinta

    transportadora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3625 Cdigo en C# que describe el movimiento de la cinta giratoria mediante las variables

    de velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3826 Imgenes del renderizado de los modelos fsicos y 3D de la plataforma giratoria. . . 3927 Cdigo en C# que calcula la posicion y ngulos de los modelos 3D de los rodillos

    en funcin de la velocidad lineal del objeto fsico. . . . . . . . . . . . . . . . . . . . 3928 Cdigo en C# del mtodo Update2 de la plataforma giratoria que se ejecutar

    tras el paso por el motor fsico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4029 Imagen del modelo completo de la gra del proyecto, garra abierta y bajada. . . . 4030 Imagen del modelo completo de la gra del proyecto, garra abierta y subida. . . . . 4131 Imagen del modelo fsico que simular el funcionamiento de la gra. . . . . . . . . 4132 Imagen del modelo fsico que simular el funcionamiento de la gra. . . . . . . . . 4233 Imagen de la gra sosteniendo una caja. . . . . . . . . . . . . . . . . . . . . . . . . 4234 Imagen de la gra soltndo una caja en movimiento. . . . . . . . . . . . . . . . . . 4335 Cdigo C# que se encarga del funcionamiento de la garra mediante deteccin de

    colisiones aadidas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4436 Imgenes de los modelos a) 3D , b) fsico de la rampa. . . . . . . . . . . . . . . . . 4537 Cdigo en C# de la declaracin e inicializacin de un elemento Rampa. . . . . . . 4638 Imgenes del renderizado 3D de un Destructor. . . . . . . . . . . . . . . . . . . . . 4639 Imgenes del renderizado del modelo fsico de un Destructor. . . . . . . . . . . . . 47

  • 40 Cdigo en C# para chequear las colisiones del objeto fsico del Destructor con otrosobjetos del escenario y eliminarlos encaso positivo. . . . . . . . . . . . . . . . . . . 47

    42 Cdigo en C# donde se declaran las variables de objetos fsicos. . . . . . . . . . . . 4841 Imgenes del Pistn. a) Modelo 3D pistn recogido b) Modelo 3D pistn extendido. 4943 Cdigo en C# para la simulacin del movimiento del pistn. . . . . . . . . . . . . 5044 Imagen del pistn doble en resposo sobre la cinta transportadora. . . . . . . . . . . 5045 Imagen del pistn doble empujando una caja. . . . . . . . . . . . . . . . . . . . . . 5146 Imagen del Sensor de barrera. Modelo 3D del Sensor con rayo. . . . . . . . . . . . 5147 Imgenes del Sensor de barrera. a) Contacto lmite entre objeto y sensor activandose.

    b) Objeto cercano sin colisionar con el sensor de barrera. . . . . . . . . . . . . . . . 5248 Cdigo C# que muestra como se detecta la colisin con el segmento y la

    comprobacin de IDs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5249 Imagen del modelado 3D del montacargas detenido. . . . . . . . . . . . . . . . . . 5350 Imagen del modelado 3D del montacargas subiendo un objeto. . . . . . . . . . . . . 5451 Imagen de la estructura fsica que conforma el montacargas. . . . . . . . . . . . . . 5452 Cdigo en C# del mtodo Update de la gra donde se controla el movimiento de

    las distintas partes y se reajustan al comienzo del mismo. . . . . . . . . . . . . . . 5554 Imgenes de los modelos fsicos del brazo de 5 grados. 4 elementos ms la garra. . 5653 Imgenes del brazo en 3 posiciones diferentes. . . . . . . . . . . . . . . . . . . . . 5755 Cdigo en C# de los objetos fsicos y otras variables del brazo. . . . . . . . . . . . 5856 Cdigo en C# de la inicializacin y adicin al motor fsico de los objetos. . . . . . 5957 Cdigo en C# del control de la primera seccin del brazo. La seccin 0 es la base. 5958 Cdigo en C# del control de la segunda seccin del brazo. . . . . . . . . . . . . . . 6059 Cdigo en C# del control de la tercera seccin del brazo. . . . . . . . . . . . . . . 6060 Cdigo en C# del control de la garra seccin del brazo. . . . . . . . . . . . . . . . 6161 Captura de pantalla del formulario de conexin Cliente - Servidor OPC. . . . . . . 6262 Cdigo del mtodo para la lectura de actuadores del servidor. . . . . . . . . . . . . 6363 Cdigo del mtodo de escritura de sensores no prioritarios en el servidor OPC. . . 6365 Cdigo de la declaracin de variables que contendrn las imgenes para los elementos

    del cuadro de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6464 Imgenes del cuadro de actuadores de la aplicacin. a) Cuadro de actuadores, b)

    Cuadro de sensores y c) Cuadro de conexin OPC. . . . . . . . . . . . . . . . . . . 6566 Cdigo para posicionar los elementos en el mismo lugar sin importar el tamao de

    la ventana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6667 Cdigo para la deteccin de pulsado de botones en la aplicacin. En este caso se

    comprueban los 15 primeros actuadores. . . . . . . . . . . . . . . . . . . . . . . . . 6668 Captura de la planta de clasificado de cajas. Vista superior. . . . . . . . . . . . . . 6769 Captura de la planta de clasificado de cajas. . . . . . . . . . . . . . . . . . . . . . . 6870 Captura de la planta de clasificado de cajas. . . . . . . . . . . . . . . . . . . . . . . 6871 Captura de la planta de clasificado de cajas. . . . . . . . . . . . . . . . . . . . . . . 6972 Capturas de pantalla del Editor de Escenarios. . . . . . . . . . . . . . . . . . . . . 7073 Captura de pantalla creacin de un dispositivo en OFS . . . . . . . . . . . . . . . . 7274 Captura de pantalla creacin de un dispositivo en OFS . . . . . . . . . . . . . . . . 7375 Captura de pantalla parmetros de un dispositivo en OFS . . . . . . . . . . . . . . 7376 Escenario del Simulador. Pestaa Actuadores y cuadro de control. . . . . . . . . . 7477 Rampa de salida para las cajas grandes (DANGER escrito en laterales) . . . . . . 7578 Rampa de salida para las cajas pequeas . . . . . . . . . . . . . . . . . . . . . . . . 7679 Posiciones y sensores de la gra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7880 Sensores de la Plataforma giratoria. . . . . . . . . . . . . . . . . . . . . . . . . . . 7881 Sensores de barrera prioritario llegada y clasificacin de cajas. . . . . . . . . . . . . 8082 Sensores de barrera para el envo de cajas a sus respectivas salidas. . . . . . . . . . 8083 a) Imagen de la pestaa de conexin OPC, b) Imagen de los formularios de conexin. 82

  • 1 INTRODUCCIN

    1 INTRODUCCIN

    1.1 INTRODUCCIN

    El uso de simuladores facilita en gran medida el trabajo de los especialistas. Su uso produceresultados que permiten prevenir errores en los sistemas reales. Mediante el uso de un simuladorpara entornos industriales se reducira el tiempo de programacin y depuracin de las mismas. Perose puede ir ms all de estos conceptos si se habla en materias de educacin y prcticas mediante eldesarrollo de una plataforma de simulacin de maquinaria industrial, mediante realidad virtual en3D, para la realizacin de prcticas de programacin de PLCs (Programable Logic Controllers).

    Ao tras ao, la industria de los videojuegos nos sorprende con sus lanzamientos. A medidaque pasan los aos, los videojuegos mejoran en calidad grfica, jugabilidad, interactividad con elusuario etc. El volumen de ventas de videojuegos crece con los aos y esto repercute directamenteen el propio desarrollo de posteriores lanzamientos.

    Actualmente existen diferentes tipos de videojuegos como los RTS (Real Time Strategy), FPS(First Person Shooter), RPG (Role Playing Game) etc. Pero si bien todos los tipos de juegosgeneran importantes ingresos anualmente, 631M en Espaa en 2010 obtenida de [6], para esteproyecto interesan especialmente los FPS. stos son juegos en primera persona en los cuales elusuario se introduce en la piel del personaje en un mundo virtual con ciertos objetivos. El primerFPS apareci en el ao 1973 de la mano de Steve Colley bajo el nombre Maze Wars. A medidaque pasaron los aos, los FPS mejoraron en varios aspectos y aunque el primero de ellos fue lacalidad grfica, en la actualidad no es el nico en desarrollo y mejora. Actualmente los aspectosms valorados son la conectividad, interactividad con el entorno y la calidad del sistema fsico delvideojuego.

    En los videojuegos actuales los usuarios interactuan con los objetos de su entorno; puedencogerlos, tirarlos y empujarlos para sus propios propositos. Un ejemplo de esto se da en Half-Life2, la secuela de Half-Life, lanzado al mercado en 2004 y que permite una gran interaccin con elentorno, ver Figura 1. Llegados a este punto, surge la cuestin: si a los videojuegos se les incluyeun sistema fsico muy realista para hacerlos ms atractivos, por qu no hacer lo mismo con lossimuladores industriales y disearlos en 3D? Una simulacin de entornos industriales realista conlos objetos del propio sistema sera til para la programacin y prevencin de fallos que pudieranocurrir debido a los mismos objetos. Adems, implcitamente, se hace ms atractiva visualmente.

    Figura 1: Usuarios de Half-Life 2 interactuando con objetos del escenario.

    Simulador para control y automatizacin. 7 de 86

  • 1 INTRODUCCIN

    a)

    b) c)

    Figura 2: Imagenes de varios escenarios de ITS PLC. a) Almacen automatizado. b) Mezclado depintura. c) Seleccin y empaquetado de piezas.

    1.2 ESTADO DEL ARTE

    Existen actualmente propuestas comerciales que, en un entorno interactivo en 3D, incluyen unsistema fsico realista, como es el caso de ITS PLC de Realgames (www.realgames.pt). Laconectividad de este simulador se realiza mediante una tarjeta de entradas y salidas y conexinmediante USB con el PC, lo que lo hace flexible a la hora de usar el controlador industrial.

    ste software dispone de 5 escenarios. Algunas imgenes se muestran en la figura 2. stospretenden simular plantas industriales sencillas de procesado de distinto tipo. Pone a disposicindel usuario un total de 10 sensores y 8 actuadores para realizar la programacin de la planta.Aunque los actuadores y sensores estn preasignados a los diferentes elementos de la planta y nose pueden modificar, ver figura 3.

    Proporciona un cuadro de mandos para que el usuario pueda detener, pausar, resetear y cambiarde manual a automtico la ejecucin de la planta.

    Por ltimo, se dispone de una seccin de fallos. Se puede decidir si un actuador o un sensortiene un fallo, simulando de esta forma que los dispositivos de la planta se pueden estropear.

    Sin embargo, est formado por un nmero determinado de plantas industriales preprogramadas.Otra limitacin es el nmero de actuadores y sensores disponibles y su asignacin rgida a loselementos de los escenarios.

    Simulador para control y automatizacin. 8 de 86

  • 1 INTRODUCCIN

    Figura 3: Imagen mostrando la asignacin esttica de los sensores y actuadores en un escenario deITS PLC.

    Aunque la aplicacin es muy realista respecto a la fsica de los objetos y la seccin de creacinde fallos en los dipositivos de los escenarios, se limita a:

    Funcionamiento normal.

    Fallo. El dispositivo deja de funcionar completamente.

    Aunque se ha encontrado otra aplicacin parecida no se va a comentar, por ser ITS PLC la mscompleta y con mejor calidad observada, adems de haberse utilizado por el autor del documentoen el laboratorio.

    1.3 OBJETIVOS

    En este documento se presenta el desarrollo de una plataforma 3D que permitir la simulacin deentornos industriales.

    La decisin de realizar esta plataforma como Proyecto Final de Carrera viene tras habercomprobado las carencias de las aplicaciones existentes en el mbito de la educacin en control yautomatizacin. Es decir, el objetivo de este proyecto es el de obtener una aplicacin que incluyatodas posibilidades que se creen necesarias para que la experimentacin en laboratorio con PLCsy su programacin sea ms completa.

    Simulador para control y automatizacin. 9 de 86

  • 1 INTRODUCCIN

    A diferencia de otros, el software desarrollado es Open Source (Cdigo Libre), pues se harealizado utilizando aplicaciones de libre distribucin y de cdigo libre. Incluyendo la parte deprogramacin de la aplicacin, este proyecto tambin incluye una parte de integracin de otroselementos necesarios para llevar a cabo su desarrollo. Adems gozar de todas las carencias quepuedan tener otras aplicaciones de pago como ITS PLC.

    Las caractersticas principales y requisito esencial de la aplicacin que se ha desarrollado son:

    Escalabilidad.

    Programabilidad.

    Configurabilidad.

    Conectividad.

    La plataforma en cuestin estar formada por dos aplicaciones principales:

    1. Simulador Principal.El simulador es la aplicacin bsica y la primera en desarrollarse. Ser un simulador en 3De incluir un sistema fsico.

    2. Editor de escenarios.Esta aplicacin, aunque secundaria, es la clave para que la plataforma goce de una granescalabilidad a nivel de usuario. Con esta herramiento un usuario podr disear un simuladormediante el uso de los elementos industriales disponibles. Ofrecer al usuario la posibilidadde escoger de entre un listado de elementos, posicionarlos, orientarlos, aadir sensores etc.Bsicamente ser un constructor de mundos ms comunmente llamado, en terminologaanglosajona de videojuegos, WorldBuilder.

    Posteriormente al diseo del escenario se generar un archivo que podr utilizar en elsimulador.

    El simulador obtenido deber ser capaz de conectarse con un PLC o bien con un simulador dePLC. Para esto se han barajado diferentes opciones:

    La primera sera realizar una conexin fsica con un PLC comercial mediante los puertosUSB o Serie RS232C adaptando las seales mediante una tarjeta de adquisicin de datos.

    La segunda opcin para la conexin sera utilizar un OPC Server (Ole Process Control)como plataforma intermedia para el paso de datos entre PLC - Simulador. Parece ser unabuena opcin ya que es una solucin abierta y flexible al clsico problema de los driverspropietarios, con la ventaja aadida que la mayora de los grandes fabricantes incluyen OPCen sus productos.

    Algunos fabricantes de PLCs suministran una aplicacin que simula el comportamiento delPLC [9] y al ejecutarse constituye un proceso independiente que utiliza los drivers propios paracomunicar con el entorno de programacin. Esto permite contar con la ventaja de no necesitarseun PLC comercial para realizar la programacin del simulador. Con todo esto un usuario seracapaz de disear, programar, compilar, ejecutar y comprobar los errores de una planta industrial,sin necesidad de acceso a la maquinaria real. Los aspectos ms importantes para la realizacin deeste software, que sern tratados en los siguientes apartados, son el sistema fsico, el sistema decolisiones y el desarrollo de maquinaria industrial.

    Simulador para control y automatizacin. 10 de 86

  • 1 INTRODUCCIN

    Aunque los objetivos principales se han descrito, queda un ltimo objetivo que se va a comenzaren este proyecto pero que no se va a desarrollar por completo por el tiempo que ello conllevara.ste ltimo objetivo se desarrollar en la seccin 6 Futuras Lneas de Trabajo. Se inciar latarea de modificar la solucin para que la plataforma pueda ser ampliada y mejorada por personasajenas al proyecto de forma remota.

    1.4 ESTRUCTURA DEL DOCUMENTO

    El documento est dividido en varias secciones que se pueden dividir en tres partes fundamentales:

    1. Una parte de introduccin terica.Donde se describirn aspectos tericos generales necesarios para un buen entendimiento delresto del documento.

    2. Una parte de diseo de la plataforma.En esta parte es donde se desarrollar como se ha realizado la aplicacin entrandodirectamente en las partes ms relevantes del cdigo de programacin utilizado.

    3. Manual de Usuario.Se detallar todo lo necesario para la instalacin y puesta en marcha del software para uncorrecto funcionamiento de la aplicacin.

    Simulador para control y automatizacin. 11 de 86

  • 2 INTRODUCCION TEORICA

    2 INTRODUCCION TEORICA

    2.1 SITUACION DE PARTIDA

    Como se ha comentado anteriormente, este proyecto se comenz desde la iniciativa propia y la visinde un software con unas posibilidades que no se encuentra en la actualidad de forma comercial.Debido a esto la situacin de partida ha sido prcticamente desde cero. Se saba lo que se querade la aplicacin pero no muy bien como realizarla.

    Inicialmente, como en todo proyecto, se buscaron las posibilidades para poder disear yprogramar la plataforma 3D. Se indag en el mundo de los videojuegos, pues el autor ya conocealgunos juegos que incluyen algunos constructores muy utilizados por los usuarios, como es elcaso de Garrys MoD. De esta forma se iban recogiendo diferentes posibilidades de lenguajesde programacin para el desarrollo de la aplicacin en cuestin. Tambin se investig un poco elcontenido 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 grfica de ITS PLC. stoaceler el trabajo de busqueda pues ya no se buscaba a ciegas sino algo ms concreto.

    Aunque al principio se pens que el desarrollo de la aplicacin llevara mucho tiempo, una vezse decidieron tanto el lenguaje de programacin como la base para el desarrollo de objetos en 3D, elavance de la aplicacin fue bastante rpido. Aproximadamente la situacin de partida se desarrolltemporalmente como sigue:

    1 mes para la busqueda y aprendizaje del lenguaje de programacin y la base de desarrolloen 3D.

    1 mes para comenzar a tener los primeros resultados viables en cuanto a elementosindustriales.

    A partir del comienzo del tercer mes todo fue fluido y se desarrollaron sin demasiados problemasotros elementos industriales que se detallarn ms adelante.

    Aproximadamente al comienzo del quinto mes ya se dispona de un escenario funcional queinclua cintas transportadoras, gra, plataformas para trasladar objetos, sensores de barrera,pistones, rampas de carga y un modelado bsico en 3D texturizado parcialmente.

    El quinto ms y el sexto se dedicaron a optimizar la programacin de los elementos desarrolladosy dotarlos de una esttica 3D ms realista, as como el planteamiento y la creacin de nuevoselementos y resolucin de errores observados durante los tests de pruebas del prototipo.

    2.2 DESCRIPCION DE LA APLICACIN OBJETIVO

    Antes de empezar a programar la aplicacin, hay que pensar cuidadosamente como va a ser. Hayque razonar como de lejos se prentede llegar con esta plataforma y ver como sera la plataformasi ya estuviera realizada. sto conlleva un problema. Es posible que se exija demasiado y no sepueda llevar a cabo. Aunque dadas las caractersticas de los lenguajes de programacin orientadosa objetos, se concluy que la mejor opcin de conseguir el software deseado era de la forma quese ha planteado. Decidir el alcance que va a tener la aplicacin es fundamental pues a la hora derealizar la programacin del mismo se tendrn en cuenta las caractersticas, y el cdigo se ajustara las funciones que tenga que realizar. De otra forma se tendra que ir modificando toda la solucin.No obstante, las caractersticas que se comentarn son las bsicas que debe tener la plataforma

    Simulador para control y automatizacin. 12 de 86

  • 2 INTRODUCCION TEORICA

    en conjunto, siendo necesario a medida que avance la programacin modificar o aadir parte delcdigo ya existente para optimizar e incluir nuevas funcionalidades.

    Siguiendo este planteamiento se comienza determinando que debe ofrecer la aplicacin alusuario. Debe poder ser escalable. La aplicacin no puede quedarse estancada en un nmerodeterminado de escenarios de simulacin como ocurre en ITS PLC. Y el usuario debera ser capazde poder crear escenarios propios y ajustados a sus necesidades.

    No solo debe ser escalable sino que tambin debe ser configurable. A la hora de incluir undispositivo, como por ejemplo una cinta transportadora, el usuario debera ser capaz de configurarsu comportamiento. Las cintas no son todas iguales, ni en forma, tamao o dinmica. Aqu entraen juego el trmino configuracin. El usuario podr incluir la funcin de transferencia que modelala dinmica de la cinta transportadora. En este caso podra ser la funcin de transferencia de losmotores que mueven la cinta. De esta forma con un nico dispositivo programado en la aplicacin elusuario tiene posibilidades de adaptar su comportamiento y con ello obtener dispositivos diferentes.

    Una opcin muy interesante es la de incluir programacin en el simulador. Esta programacinest referida a elementos o dispositivos que se utilicen a nivel industrial y necesiten de unaprogramacin separada de la del PLC, como puede ser un brazo robtico para la selecin depiezas, soldaduras, ensamblajes etc. Poniendo como ejemplo el SCORBOT, y usndolo como basepara un posible dispositivo del simulador, se incluir en el simulador la herramienta necesariapara realizar la programacin de las acciones que deba hacer el brazo ante las seales de entradaprocedentes del PLC. La programacin se realizar con un pequeo conjunto de las instruccionesdel lenguaje ACL.

    Dado que se est hablando de disear una plataforma para el entrenamiento con PLCs es muyimportante pensar en como se va a hacer la conexin con el PLC. Aqu se tienen varias posibilidadesde las cuales solo una de ellas es la que se realizar en este proyecto.

    2.2.1 Conexin mediante Server OPC

    Con un servidor OPC (Ole Proccess Control), se puede establecer una conexin entre un PLC realy un PC que contenga el simulador y un cliente OPC. El servidor OPC ser el intermediario parael intercambio de datos entre ambos equipos. Para la conexin de los equipos solo hara falta unared ethernet pues actualmente los PLCs disponen de puerto ethernet as como los PCs.

    Esta sera una conexin fsica posible. Pero si se hace uso de un servidor OPC, tambin se puedehacer una conexin no fsica entre los equipos. Se puede conseguir si se utilizan simuladores de PLC.Algunas compaas como Schneider Electric incluyen en el software de sus PLCs herramientas desimulacin de PLCs. En pocas palabras, se puede tener en un mismo PC las tres aplicaciones paraestablecer una conexin local interna y poder realizar la simulacin y el control sin la necesidad deusar un PLC real.

    El hecho de no necesitar un PLC real implica un ahorro importante pues son dispositivos caros.Otro aspecto importante son las averas. Con esta forma de conexin el riesgo de avera debidoa un mal uso por parte del usuario es inexistente. Otra ventaja aadida de no usar PLCs, es elnmero de puestos de trabajo que se pueden utilizar. Ahora solo son necesarios PCs, pudiendoseampliar a un costo menor el nmero de estaciones disponibles para el alumnado. El nico requisitode los PCs, que se comentar ms adelante, es que dispongan de una buena tarjeta grfica.

    Simulador para control y automatizacin. 13 de 86

  • 2 INTRODUCCION TEORICA

    2.2.2 Conexin mediante puerto USB

    A parte de poder establecer comunicacin tanto por red como de forma local entre el PLC y elsimulador, tambin es conveniente tener la posibilidad de realizar una comunicacin fsica directa.

    Una de las opciones es hacerla por USB, mediante el uso de una tarjeta de adquisicin de datos.

    2.3 TECNOLOGIAS Y HERRAMIENTAS DE DESARROLLO

    En ste apartado se describirn las herramientas que se han utilizado para desarrollar la aplicacin.Entre otros, se detallan el lenguaje de programacin, las libreras 3D y otros programas utilizadospara llevar a cabo este proyecto.

    2.3.1 INTRODUCCIN A C# Y XNA

    Debido a que este proyecto es el desarrollo de una aplicacin escoger un lenguaje de programacinadecuado es fundamental. Aunque en principio se podra utilizar cualquier lenguaje orientadoa objetos actual tales como JAVA, C++, C# o Lua, ste ltimo muy utilizado en el desarrollode videojuegos, se opt por indagar cul de ellos sera un lenguaje ptimo para el desarrollo delsimulador dado que se comenzaba este proyecto desde cero.

    Inicialmente y dado que no se saba programar en JAVA, se descart inicialmente dejndolocomo ltima opcin. Sin embargo una opcin viable de lenguaje a utilizar es Lua. Lua es unlenguaje de extensin, suficientemente compacto para usarse en diferentes plataformas. En Lua lasvariables no tienen tipo, slo los datos y pueden ser lgicos, enteros, nmeros de coma flotante ocadenas. Estructuras de datos como vectores, conjuntos, tablas hash, listas y registros pueden serrepresentadas utilizando la nica estructura de datos de Lua: la tabla. La semntica de Lua puedeser 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 loanterior, es posible utilizar Lua en programacin orientada a objetos.

    Los programas en Lua no son interpretados directamente, sino compilados a cdigo bytecode,que es ejecutado en la mquina virtual de Lua. El proceso de compilacin es normalmentetransparente al usuario y se realiza en tiempo de ejecucin, pero puede hacerse con anticipacinpara aumentar el rendimiento y reducir el uso de la memoria al prescindir del compilador. Tambines posible la compilacin en tiempo de ejecucin utilizando LuaJIT.

    Debido a que Lua compilado es pequeo, veloz y tiene una licencia permisiva ha ganadoseguidores 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 Garrys Mod.

    Mod para Half-Life 2 llamado Fortress Forever.

    Simulador para control y automatizacin. 14 de 86

  • 2 INTRODUCCION TEORICA

    Tras conocer un poco sobre Lua, pas a ser la primera de las opciones en cuanto a lenguajede programacin. No obstante se continu la busqueda viendo lo que ofreca C#. C# si es,a diferencia de Lua, un lenguaje orientado a objetos. Finalmente la opcin de usar Lua comolenguaje se desech, no porque no ofreciera las caractersticas necesarias, sino por la renderizacinen 3D. Paralelamente a la busqueda del lenguaje de programacin tambin se realiz la busquedade libreras que permitieran programar el renderizado en 3D para el simulador. Se encontr unframework desarrollado por Microsoft para el desarrollo de juegos independientes para la consolade videojuegos XBox. Con este framework los programadores independientes podan desarrollarvideojuegos y colgarlos gratuitamente o de pago en la comunidad de jugadores online. Esteframework es XNA y permite el renderizado en 3D incluyendo una buena documentacin. Dadoque el disponer de una buena documentacin es importante y tras observar algunos de los resultadosque obtenian los programadores utilizando XNA, se decidi que sera la librera para realizar laprogramacin 3D del simulador. Debido a que est implementada utilizando C# y que tanto XNAcomo C# gozaban de las caractersticas necesarias para la implementacin del simulador en 3Ddeseado, se escogio el do C# - XNA para el desarrollo de este proyecto.

    1. Lenguaje orientado a objetos C# (C sharp)

    C# es un lenguaje de programacin orientado a objetos desarrollado y estandarizado porMicrosoft como parte de su plataforma .NET, que despus fue aprobado como un estndar porla ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de programacindiseados para la infraestructura de lenguaje comn.

    Su sintaxis bsica 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 notacin musical, donde # (sostenido, en inglssharp) indica que la nota (C es la nota do en ingls) es un semitono ms alta, sugiriendo queC# es superior a C/C++. Adems, el signo # se compone de cuatro signos + pegados.

    Aunque C# forma parte de la plataforma .NET, sta es una API, mientras que C# esun lenguaje de programacin independiente diseado para generar programas sobre dichaplataforma. 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 caractersticas de C# son:

    Todo mtodo debe ser parte de una clase, no existen mtodos globales (funciones). Por defecto, los parmetros 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) yque se pasa por valor al mtodo la referencia , pero el espacio reservado para la lista escomn, por lo que si elimina un elemento lo hace tambin de la original)

    El modificador ref fuerza a pasar los parmetros por referencia en vez de pasarlos porvalor y obliga a inicializar la variable antes de pasar el parmetro.

    El modificador out es similar al modificador ref, con la diferencia de que no se obliga ainicializar la variable antes de pasar el parmetro.

    Cuando ref y out modifican un parmetro de referencia, la propia referencia se pasa porreferencia.

    Simulador para control y automatizacin. 15 de 86

  • 2 INTRODUCCION TEORICA

    El modificador params sirve para definir un nmero variable de argumentos los cualesse implementan como una matriz.

    Un mtodo debe tener como mximo un nico parmetro params y ste debe ser elltimo.

    Un mtodo puede devolver cualquier tipo de dato, incluyendo tipos de clase. Ya que en C# las matrices se implementan como objetos, un mtodo tambin puede

    devolver una matriz (algo que se diferencia de C++ en que las matrices no son vlidascomo tipos de valores devueltos).

    C# implementa sobrecarga de mtodos, dos o ms mtodos pueden tener el mismonombre siempre y cuando se diferencien por sus parmetros.

    El mtodoMain es un mtodo especial al cual se refiere el punto de partida del programa.

    El estndar ECMA-334 lista las siguientes metas en el diseo para C#:

    C# es un lenguaje de programacin orientado a objetos simple, moderno y de propsitogeneral.

    Inclusin de principios de ingeniera de software tales como revisin estricta de los tiposde datos, revisin de lmites de vectores, deteccin de intentos de usar variables noinicializadas, y recoleccin de basura automtica.

    Capacidad para desarrollar componentes de software que se puedan usar en ambientesdistribuidos.

    Portabilidad del cdigo fuente. Fcil migracin del programador al nuevo lenguaje, especialmente para programadores

    familiarizados con C, C++ y Java. Soporte para internacionalizacin. Adecuacin para escribir aplicaciones de cualquier tamao: desde las ms grandes y

    sofisticadas como sistemas operativos hasta las ms pequeas funciones. Aplicaciones econmicas en cuanto a memoria y procesado.

    2. Microsoft XNA

    Microsoft XNA es un conjunto de herramientas con un entorno de ejecucin administradoproporcionado por Microsoft que facilita el desarrollo de juegos de ordenador y de gestin.Intento para liberar a los desarrolladores de juegos de la creacin de "cdigo repetitivo " ytraer diferentes aspectos de la produccin de juego en conjunto a un nico sistema. XNA esuna herramienta que se anunci el 24 de marzo de 2004, en la Game Developers Conference enSan Jos, California. La primera comunidad Technology Preview de XNA Build fue lanzadael 14 de marzo de 2006. XNA Game Studio 2.0 fue lanzado en diciembre de 2007, seguidode XNA Game Studio 3.0 en 30 de octubre de 2008.

    XNA actualmente abarca secciones de Microsoft Game Development Sections, incluyendo elestndar Kit de desarrollo de Xbox y XNA Game Studio.

    XNA Framework se basa en la implementacin nativa de .NET Compact Framework 2.0 parael desarrollo de la Xbox 360 y .NET Framework 2.0 en Windows.

    Simulador para control y automatizacin. 16 de 86

  • 2 INTRODUCCION TEORICA

    Incluye un amplio conjunto de bibliotecas de clases, especficas para el desarrollo de juegos,para promover la reutilizacin de cdigo mximo a travs de plataformas de destino. El marcose ejecuta en una versin de Common Language Runtime que se ha optimizado para que losjuegos de azar proporcionar un entorno de ejecucin administrado. El tiempo de ejecucinest disponible para Windows XP, Windows Vista y Xbox 360. Dado que XNA Games estnprogramados para el tiempo de ejecucin, que se ejecuten en cualquier plataforma que admiteel XNA Framework con mnima o ninguna modificacin. Juegos que se ejecutan en el marcotcnicamente pueden escribirse en cualquier lenguaje compatible con .NET, pero oficialmentese admiten slo C# y XNA Game Studio Express IDE y todas las versiones de Visual Studio2005.

    El XNA Framework por lo tanto encapsulado bajo nivel tecnolgicos detalles relacionadosen un juego de codificacin, asegurndose que el propio marco se encarga de la diferenciaentre plataformas cuando los juegos son portados desde una plataforma compatible a otralo que permite que los desarrolladores de juegos para concentrarse ms en el contenido y laexperiencia de juego. XNA Framework se integra con una serie de herramientas, tales comola plataforma mltiple audio creacin herramienta (XACT), para ayudar en la creacin decontenido. XNA Framework proporciona apoyo para la creacin de juego 2D y 3D y permiteel uso de los controladores de Xbox 360 y vibraciones. Slo los juegos de marco XNAactualmente destinadas a la plataforma Xbox se pueden ser distribuidos a los miembros deClub de la Microsoft XNA Creator que lleva un $ 99/ao suscripcin. Desktop applicationspueden 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 Studio2.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 Liveen Windows y Xbox 360 y mejor dispositivo manipulacin.

    XNA Game Studio 3.0 (para Visual Studio 2008 o para free Visual C# 2008 ExpressEdition).

    Permite la produccin de juegos de la plataforma de Zune y agrega soporte de lacomunidad de Xbox Live. Una versin beta del conjunto de herramientas de se lanz enseptiembre de 2008. La versin final fue lanzada el 30 de octubre de 2008. XNA GameStudio 3.0 ahora es compatible con C# 3.0, LINQ y la mayora de las versiones de VisualStudio 2008. Tambin hay varias caractersticas nuevas de ms de XNA Game Studio3.0, tales como un modo de prueba se agrega a XNA Game Studio 3.0 que permitir a loscreadores agregar fcilmente la funcin de prueba necesario para sus juegos, funcionesde varios jugadores XBOX LIVE como en el juego invita, crear juegos de plataformasque 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 reproduccin de vdeo, una API revisada de audio,

    Simulador para control y automatizacin. 17 de 86

  • 2 INTRODUCCION TEORICA

    sistema de parte de Xbox Live y soporte para juegos utilizar la Xbox 360 Avatars.Esta versin del software est disponible para su descarga como parte del programa deDreamSpark 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 desarrollarjuegos y aplicaciones para el Windows Phone 7 aparte de tener un mercado en lnea,en donde los desarrolladores suben sus aplicaciones y los usarios del telfono inteligentepueden comprar o probar las aplicaciones, como se ha visto en el Xbox 360. Cabedestacar la adicion de Mxico para el mercado y que este estar disponible para uso en30 pases.

    2.3.2 ENTORNOS DE MODELADO 3D. INTRODUCCION A AC3D.

    En este momento del proyecto se tienen los elementos principales para poder programar el simuladory realizar el renderizado 3D de los objetos mediante C# y XNA. No obstante, es necesario disearlos objetos 3D antes de poder renderizarlos por pantalla. Para poder hacer sto se necesita unsoftware de diseo 3D.

    Entre los ms utilizados estn:

    3ds Max Studio.Autodesk 3ds Max (anteriormente 3D Studio Max) es un programa de creacin de grficosy animacin 3D desarrollado por Autodesk, en concreto la divisin Autodesk Media &Entertainment (anteriormente Discreet). Creado inicialmente por el Grupo Yost paraAutodesk, 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 animacin 3Dms utilizado, especialmente para la creacin de video juegos, anuncios de televisin, enarquitectura o en pelculas.

    Blender 3D.Blender es un programa informtico multiplataforma, dedicado especialmente al modelado,animacin y creacin de grficos tridimensionales.El programa fue inicialmente distribuido de forma gratuita pero sin el cdigo fuente, conun 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 grfica de usuario muy peculiar , que es criticada como poco intuitiva,pues no se basa en el sistema clsico de ventanas; pero tiene a su vez ventajas importantessobre stas, como la configuracin personalizada de la distribucin de los mens y vistas decmara.

    Tanto 3ds Max, como Blender son programas excesivamente complejos y requieren de numerosashoras de estudio para el diseo de modelos 3D. Por lo que se buscaron otras opciones para realizarlos modelos 3D que se incluirn en el simulador.

    Simulador para control y automatizacin. 18 de 86

  • 2 INTRODUCCION TEORICA

    Tras buscar otros programas que permitieran el modelado 3D se encontr uno que incluamuchas de las opciones de 3ds Max y Blender, con una interfaz grfica muy parecida, pero con unasimplicidad de implementacin de modelos mediante mens intuitivos que hacen de este softwareuna herramienta fcil de utilizar. Este software es AC3D.

    En la figura 4 se muestra una captura de pantalla del software con uno de los modelos que seha incluido en el simulador 3D desarrollado en este proyecto.

    Figura 4: Captura de pantalla de una parte del modelo 3D de la gra en AC3D.

    Todos los modelos que se han desarrollado estn formados por objetos cbicos, cilndricos yesfricos. De esta forma el diseo de un elemento nuevo en 3D en el AC3D se llevar a cabo deforma rpida y sencilla. El programa dispone de funciones bsicas booleanas para aplicar entre 2objetos 3D como:

    Unin

    Interseccin

    Substraccin

    Cortar y Eliminar

    La adicin de texturas se hace de forma muy simple. Simplemente se agrega al objeto la texturadestino en un formato de dibujo, png, jpeg etc, y se asignarn las diferentes texturas a las diferentessuperficies segn el objeto. A los modelos desarrollados se les aplicar una optimizacin de vrticesy superficies para no sobrecargar los modelos y que la renderizacin sea ptima.

    Simulador para control y automatizacin. 19 de 86

  • 2 INTRODUCCION TEORICA

    Figura 5: Captura de pantalla de la texturizacin de un modelo en AC3D

    2.3.3 OPC (OLE FOR PROCESS CONTROL)

    Anteriormente se han comentado las posibilidades de conexin entre PLC y simulador 3D. Eneste proyecto se ha realizado el diseo para una conexin directa entre un simulador de PLC y elsimulador 3D. La conexin directa se refiere a una conexin interna en el mismo ordenador dondese ejecutarn todas las aplicaciones, con lo que se realizan conexiones locales. Todo se ejecuta enel mismo PC, lo que permitir que un usuario pueda llevarse el trabajo a casa. De esta formano ser necesario el uso de un PLC real para poder llevar a cabo la programacin del autmatay la programacin de la planta simulada. Para realizar la conexin entre el simulador de PLC yel simulador 3D mediante conexin directa se ha optado por la utilizacin de un servidor OPC.Se ha escodigo un servidor OPC por ser un estandar de comunicaciones en el campo del controly supervisin de procesos industriales. De sta forma la conexin establecida tendra un sistemaintermedio que ser el servidor OPC que se encargar del intercambio de datos entre simulador dePLC y simulador 3D.

    Figura 6: Esquema de conexin mediante OPC Server.

    OPC est basado en tecnologa Microsoft, que ofrece un interfaz comn para comunicacin quepermite que componentes software individuales interaccionen y compartan datos. La comunicacinOPC se realiza a travs de una arquitectura Cliente-servidor. El servidor OPC es la fuente dedatos (como un dispositivo hardware a nivel de planta) y cualquier aplicacin basada en OPC

    Simulador para control y automatizacin. 20 de 86

  • 2 INTRODUCCION TEORICA

    puede acceder a dicho servidor para leer/escribir cualquier variable que ofrezca el servidor. Es unasolucin abierta y flexible al clsico problema de los drivers propietarios. Prcticamente todos losmayores fabricantes de sistemas de control, instrumentacin y de procesos han incluido OPC ensus productos.

    El propsito principal del estndar OPC es proporcionar a las aplicaciones una forma comnde acceder a los datos de cualquier fuente, como un dispositivo o una base de datos. Gracias a estaforma comn de acceso a datos que proporciona OPC los fabricantes de hardware slo tienen quehacer un conjunto de componentes de programa para que los clientes los utilicen en sus aplicacionesy los fabricantes de software no tienen que adaptar los drivers ante cambios de hardware.

    OPC est diseado principalmente para acceder a datos de un servidor en red. Distintasaplicaciones podrn coger datos de aparatos fsicos y llevarlo a SCADA o DCS, o de un servidorSCADA o DCS a una aplicacin.

    Figura 7: Esquema de conexin, entradas/salidas e interfaces.

    Una aplicacin cliente OPC, puede conectarse, por medio de una red, a varios servidores OPCproporcionados por uno o ms fabricantes. De esta forma no existe restriccin por cuanto a tenerun Software Cliente para un Software Servidor, lo que es un problema de interoperabilidad quehoy en da se aprecia con sistemas del tipo propietario. Sistemas de control supervisorio como loson SCADA o DCS pueden comunicarse con un Servidor OPC y proveer a este, informacin delos dispositivos de campo asociados. De esta forma, aplicaciones cliente OPC de otros fabricantestendrn acceso a estos datos por medio del servidor.

    Tipos de servidores OPC:

    1. Servidor de Acceso a Datos OPCA un alto nivel, est compuesto por los objetos:

    Servidor: Mantiene la informacin sobre s mismo, y unifica los Datos dentro de unGrupo.

    Grupo: Dota de un mecanismo que contiene en forma lgica los temes. Se clasifican enpblico o local.

    tem: Es un valor, una condicin y permanece o vara en el tiempo. Es una direccinespecfica de los datos y no la fuente de datos.

    2. Servidor de Alarmas, Condiciones y Eventos OPCProvee de Interfaces, donde Clientes OPC son notificados de Sucesos. Estos mecanismos sedefinen como:

    Simulador para control y automatizacin. 21 de 86

  • 2 INTRODUCCION TEORICA

    Alarma: Condicin anormal de un sistema, por lo que es un caso especial de esta. Condicin: 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 Histricos OPC (OPC HDA)Provee de una interfaz Cliente OPC de Acceso a Datos Histricos, que facilita el uso deaplicaciones de acceso a datos. Caractersticas: Arquitectura de comunicacin abierta yeficaz, concentrada en el acceso a datos y no en los tipos de datos. Propsito: Permite queaplicaciones (MS Office, Objetos WWW) accedan a datos de un dispositivo o un banco dedatos In process. Facilita el desarrollo de aplicaciones sin sacrificar la funcionalidad de laInterfaz Cliente.

    4. Intercambio de Datos OPC (OPC DX)Define un conjunto de interfaces que permiten el intercambio de datos, as como lacomunicacin "server to server" entre dispositivos y controladores conectados a Ethernet,que utilizan distintos protocolos. OPC-DX permite a los servidores OPC-DA intercambiardirectamente datos sin la exigencia de un cliente OPC intermedio. La mejor manera depensar en un servidor OPC-DX es como un servidor OPC-DA que se puede configurar paraintercambiar datos con otros servidores OPC-DA. Como es el caso de otros servidores OPC,el cliente an se utiliza para configurar, controlar y vigilar este intercambio de datos.

    5. Acceso de Datos XML (OPC XML DA)Se est convirtiendo en el mtodo estndar para el intercambio de datos entre las aplicacionesde empresa y son cada vez ms un proceso de control de entornos. OPC XML-DA sali a la luzen 2003 tras varios aos 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 escritasen Java, Perl, Python, y otros idiomas que soporta SOAP. SOAP y XML Web Services utilizaProtocolo de transferencia de hipertexto (HTTP) y los mecanismos de transporte y, adems,proporciona una plataforma neutral ms adecuado para el trfico con base en Internet,en comparacin con tecnologas como DCOM. Sin embargo, debido a las limitaciones derendimiento posible, OPC XML-DA es poco probable que se utilice para aplicaciones entiempo real, a pesar de que normalmente se usa de puente entre la empresa y la red decontrol.

    6. Arquitectura Unificada OPC (OPC UA)Refleja el objetivo de Microsoft de retirar DCOM en favor de .NET y arquitecturas orientadasa 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 dedos transportes: SOAP / HTTP (S) y un mensaje binario codificado en la parte superiorde TCP. Es prematuro evaluar la seguridad de OPC UA en relacin con DCOM, ya que laAPI OPC UA de seguridad an est en desarrollo. Sin embargo, dado que ahora existe unamayor conciencia en la OPC Foundation, proveedores OPC, y Microsoft para la necesidadde seguridad, hay poca duda de que .NET proporcionar una base ms segura que COM/ DCOM. Tambin hacen mucho ms sencillo el desarrollo de clientes y servidores OPC enplataformas que no sean de Microsoft.

    7. SeguridadExisten tres niveles de seguridad OPC:

    Seguridad Invlida: Libre acceso entre Cliente/Servidor.

    Simulador para control y automatizacin. 22 de 86

  • 2 INTRODUCCION TEORICA

    Seguridad DCOM: Clientes seleccionados tienen acceso limitado a servidores OPC. Nohay un control total sobre sistemas operativos como Linux, Unix.

    Seguridad OPC: El Servidor OPC sirve como un regulador de control de acceso afabricantes de sistemas operativos como Linux y Unix sobre objetos especficos de accesorestringido que son expuestos por el Servidor OPC.

    Simulador para control y automatizacin. 23 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    3 DISEO E IMPLEMENTACION DEL SIMULADOR

    3.1 MOTOR FSICO Y SISTEMA DE COLISIONES

    La simulacin de la fsica se hace indispensable para visualizacin de un entorno donde existenobjetos que se mueven e interaccionan con otros. La simulacin de la fsica es una disciplina muyamplia, este trabajo se centra principalmente en la fsica de objetos rgidos. Debido a que setrabajar en un entorno en 3D se tendrn vectores con tres componentes que permitirn manejarlo ms bsico de la fsica para objetos rgidos tales como posiciones, aceleraciones, fuerzas, etc.En (1) se muestran vectores de posicin y velocidad. Los motores fsicos parten de las leyes demovimiento de Newton, que describen el comportamiento de una masa puntual. La primera leyde Newton expresa que un objeto con velocidad uniforme, sobre el cual no existen fuerzas, nocambiar su velocidad. Aunque en el mundo real siempre existe algn tipo de fuerza que sufrenlos objetos en movimiento, como la producida por rozamiento. La segunda ley de Newton es laque relaciona la fuerza con aceleracin.

    p =

    pxpypz

    v = vxvyvz

    (1)F = ma = mp (2)

    p = 1mF (3)

    En el motor fsico se obtendr la aceleracin de un objeto a partir de la fuerza que se le estaplicando (3). Mediante integracin se podr conocer la velocidad y la aceleracin. Los objetos,por tanto, poseern las cuatro caractersticas bsicas que son velocidad, aceleracin, fuerza y masa.Adems de las leyes de Newton, se debe simular la interaccin de objetos y fuerzas. Por ejemplo,la fuerza de la gravedad estar presente en cualquier entorno de simulacin. Normalmente, sesimular la fuerza de gravedad de la tierra, por lo que se aplicar (5). Donde se aproximar laconstante g con un valor de 9,8ms2 ,10,0

    ms2 , para realizar clculos rpidos [7].

    F = Gm1m2r2

    (4)

    F = mg (5)

    La aceleracin de la gravedad que se aplicar a los objetos ser por tanto, un vector.

    g =

    0g0

    F = FxFyFz

    (6)Los objetos podrn estar tanto en reposo como en movimiento. En movimiento cualquier objeto

    sufre rozamiento. La fuerza de rozamiento viene dada por la ecuacin (7), donde Fr es la fuerzade rozamiento, N la normal y el coeficiente de rozamiento. Aunque se deben tener en cuenta losdos tipos de coeficientes de rozamiento, el esttico y el dinmico s y k. Estos coeficientes soncaractersticos para cada par de materiales que se encuentran en conctacto y dependen de otrosfactores como la temperatura. Una opcin sera usar valores aproximados para ciertos materiales,como los extrados de [7] que se muestran en la tabla 1.

    Fr = N (7)

    Simulador para control y automatizacin. 24 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Material 1 Material 2 s kSteel Steel 0.74 0.57

    Aluminium Steel 0.61 0.47Copper Steel 0.53 0.36Rubber Concrete 1 0.8Wood Wood 0.25-0.5 0.2Glass Glass 0.94 0.4

    Waxed wood Wet snow 0.14 0.1Waxed wood Dry snow - 0.04

    Metal Metal 0.15 0.06Ice Ice 0.1 0.03

    Teflon Teflon 0.04 0.04Synovial Jointsin Humans

    - 0.01 0.003

    Table 1: Valores aproximados de los coeficientes de rozamiento dinmico k y esttico s. Paresde materiales en contacto.

    Otro aspecto importante a tener en cuenta para la simulacin de objetos rgidos ser el momentode inercia de un objeto de masa uniforme, el cual viene dado por (8). Para la simulacin se haruso de los tensores de inercia de un slido rgidoIxx, Iyy e Izz y los productos de inercia Ixy, Ixz eIzy.

    I =V

    r2dV (8)

    Para procesar todas las fuerzas que estn actuando sobre un mismo objeto en el simulador seutilizar el principio de Dlambert. Este principio implica que si, en un sistema de partculas,se tiene un objeto sobre el cual actan una serie de fuerzas, se puede obtener una nica fuerza apartir del conjunto de fuerzas [4]. Se har la suma vectorial de fuerzas a las que est sometidoun objeto para obtener una nica fuerza total, ver (9). Otras caractersticas como el centro demasas, orientacin (ngulos de Euler), momentos de inercia y de fuerza o par debern aplicarsepara conseguir realismo en la simulacin.

    F =i

    Fi (9)

    Para el desarrollo de la aplicacin se ha utilizado un motor fsico de propsito general. Sebuscaba un motor que fuera gratuito y de cdigo libre que adems incluyera las caractersticasms bsicas de la fsica que se han comentado para poder realizar la simulacin de objetos rgidos.De esta forma no habra problema en aadir nuevas propiedades fsicas en futuras mejoras de laaplicacin.

    Motores fsicos que cumplen con estas condiciones son:

    JigLibX

    Jitter

    Bullet Physics

    Simulador para control y automatizacin. 25 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figure 8: Ejemplos de uso de Bullet Physics.

    Figure 9: Ejemplos de uso de JigLibX.

    Dado que los motores encontrados tenan las caractersticas necesarias y todos eran muysimilares como para hacer una eleccin y dado que no se dispona de tiempo para realizar unexamen exhaustivo del cdigo para hacer la eleccin del idneo se escogo JigLibx tras ver algunasde las simulaciones realizadas con el mismo.

    Como muchas otras libreras en C#, JigLibx es una librera portada a C# desde C++, JigLib.Aunque el objetivo principal de JigLibX Beta es conesguir que la librera se ms .NET. Comoest completamente escrita en C# es particularmente ajustable a su uso con XNA. El motor fsicoposee un sistema de colisiones, fsica de objetos rgidos y es gratuito y de cdigo abierto. Por loque se integrar bien en la aplicacin de la que es objeto este proyecto.

    El sistema de colisiones que implementa JigLibX est basado en profundidad de penetracin.El sistema de colisines es la parte del simulador encargada de detectar si se ha producido unacolisin entre objetos, cmo ha sido y qu consecuencias conlleva. En base al trabajo del sistemade colisiones se podrn realizar las tareas de aplicacin de ecuaciones fsicas a los objetos.

    La colisin entre objetos ocurre cuando existe un contacto entre stos. Dado que se tiene unsistema de simulacin en 3D y por tanto objetos modelados en base a polgonos, se debe hacerdistincin entre colisiones punto-punto, arista-arista, arista-cara, cara-cara. Uno de los problemasal desarrollar el sistema de colisiones es el tiempo de ejecucin. En la vida real dos objetos chocan,

    Simulador para control y automatizacin. 26 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    pero en una simulacin de ordenador debido a que el tiempo es tratado de forma discreta, lo queocurrir es que penetrarn el uno en el otro, ver figura 10. Esto se resolvera separando los objetosen direcciones opuestas a las que tenan inicialmente hasta que dejen de tocarse.

    Figura 10: Contacto entre 2 objetos penetrando

    Uno de los mtodos ms utilizados se denomina penalty-based method, donde usa laprofundidad de penetracin definida como la distancia de traslacin mnima requerida para separardos objetos en interseccin [2]. En este mtodo se permite la interpenetracin entre objetos y pararealizar la separacin se opta por aplicar fuerzas proporcionales a la cantidad de penetracin. Alresolver la colisin se tendrn en cuenta todas las magnitudes de los objetos involucrados, velocidadlineal, angular, fuerzas etc. Al producirse en una colisin entre dos objetos debe cumplirse elprincipio de conservacin en el momento del choque y que viene expresado por (10). Dos objetos avelocidades de choque va y vb , con masas ma y mb, tras el choque adquirirn una nueva velocidaden otras direcciones y sentidos. La conservacin ocurrir en el momento justo del choque, tras elcual el movimiento de los objetos deber responder al resto de fuerzas externas como la fuerza derozamiento.

    mava +mbvb = mava +mbvb (10)

    El sistema de colisiones deber comprobar si existen colisiones entre cada par de objetos delsimulador. Comprobar una colisin supone conocer la geometra de cada objeto y obtener todoslos puntos de colisin existentes entre dos objetos. Si existen muchos objetos, esta comprobacinpuede consumir demasiado tiempo de procesado y ralentizar la simulacin. Una solucin a esteproblema es utilizar dos tipos de detectores de colisiones. El primero de ellos hara una localizacinde los objetos con posibilidad de contacto sin entrar en detalles. El segundo recibira la lista deobjetos y realizara un chequeo ms exacto hallando las colisiones y la informacin necesaria paraque sean tratadas por el motor fsico. De las posibles colisiones tambin se eliminaran aquellascolisiones que se producen entre un par de objetos que no poseen velocidad alguna y se encuentranen reposo. Es decir, slo se tendrn en cuentan las posibles colisiones entre objetos reposo-activoy activo-activo [5].

    En general se debe introducir en el sistema un conjunto bsico de figuras geomtricas ya quelos cuerpo fsicos tendrn una forma que ser una figura geomtrica o en casos ms complejos unacombinacin. En la figura 11 se pueden observar ambos casos. Entre las formas bsicas destacanel cubo, cilindro y esfera. Con estas tres se podra modelar cualquier objeto de forma aproximada.

    Simulador para control y automatizacin. 27 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    a) b)

    Figura 11: Objetos con composicin geomtrica simple a), y compuesta b).

    Como se ha comentado anteriormente, se usarn modelos de objetos rgidos, es decir, nodeformables. El uso de este tipo de objetos, no realistas, presenta algunas desventajas. En primerlugar en la simulacin de un choque entre dos objetos nuncan se dar una amortiguacin pordeformacin. An as la elasticidad se puede incluir en el modelo mediante un coeficiente juntocon los coeficientes de rozamiento, como se ha comentado anteriormente. En segundo lugar el usode modelos mecnicos basados en objetos rgidos provoca que las velocidades sean discontinuas[8]. El uso de este modelo ms simple est justificado ya que un modelo ms completo conconsideraciones de elasticidad del material consumira demasiado tiempo de procesador y daralugar a una renderizacin ralentizada y, por tanto, una simulacin inapropiada.

    El proyecto JigLibX en Visual Express C# est formado por los siguientes elementos:

    Figura 12: Estructura del proyecto JigLibX en Visual Express C#.

    3.2 ESTRUCTURA DE LA APLICACIN

    Como muchas aplicaciones, se basa en un bucle infinito que el usuario deber poder ser capaz dedetener en cualquier momento. Al tratarse de una aplicacin con renderizado en 3D se deberactualizar el dibujado en pantalla en cada paso de ejecucin. Los modelos 3D son parte delcontenido de la aplicacin. Para ahorrar carga de trabajo, todos los modelos que sern necesarios

    Simulador para control y automatizacin. 28 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    para la ejecucin se cargarn al comienzo del programa. La estructura del programa est divididaen varios mtodos, de los cuales algunos se ejecutarn una nica vez, y otros en cada paso deejecucin. La estructura es como sigue:

    Figura 13: Estructura de la aplicacin. Diagrama de flujo.

    Figura 14: Estructura del proyecto de la aplicacin en Visual Express C#.

    Simulador para control y automatizacin. 29 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    3.3 PROGRAMA PRINCIPAL

    El programa principal es la clase Simulador.cs, donde se encuentra la estructura principal delprograma comentada en el apartado anterior. Al empezar el proyecto se pretenda que fuerasencillo aadir nuevos elementos a medida que se fuesen desarrollando ahora o en un futuro. Quesea sencillo no implica que no haya que introducir cdigo nuevo. No obstante la forma de introducirel nuevo cdigo es sistemtico de la forma que se ha desarrollado el programa principal.

    Figura 15: Ejemplo de cdigo en C# de la declaracin de las variables para incluir mesas giratorias.

    Al comienzo de la clase Simulador.cs se declaran todas las variables que se van a necesitar,as como las propias clases de elementos industriales que existen. En la figura 15 se muestra unaporcin de cdigo donde se observan las variables necesarias para introducir 5 cintas giratoriasen el simulador.

    Figura 16: Cdigo en C# de la carga de contenidos 3D.

    Posteriormente, en el mtodo LoadContent, se cargan todos los modelos 3D que dicha clase vaa necesitar, ver figura 16. En el mtodo Initialize se inicializarn los parmetros necesarios bsicosy son los siguientes, ver figura 17:

    Posicin del elemento

    N de actuadores en el cuadro de actuadores

    N de sensores en el cuadro de sensores

    Una vez que se tiene todo sto, ya se puede empezar la ejecucin de los mtodos Update yDraw. En el mtodo Update, se llamar mediante un bucle for al mtodo Update de cada una delas Cintas transportadoras que existan en el escenario. De la misma manera, en el mtodo Drawse llamar al mtodo Draw de cada una de las cintas mediante un bucle for. De esta forma si sepretende aadir una nueva cinta, solo hay que aumentar el valor num_Cintas2, y copiar/pegarla porcin de cdigo de otra cinta cambiando sus parmetros de posicin. Al aumentar el valornum_Cintas2 ya se est incluyendo en los bucles for de los mtodos Update y Draw la nuevacinta transportadora, luego el mecanismo de introduccin de elementos es relativamente sencillo,ver figura 18.

    Simulador para control y automatizacin. 30 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figura 17: Cdigo C# de uso repetitivo para inicializar un elemento.

    a)

    b)

    Figure 18: Cdigo C# de la aplicacin. a) Cdigo repetitivo en bucle for para la actualizacinde elementos de una misma clase. b) Cdigo repetitivo para el renderizado de modelos 3D.

    3.4 CLASES PARA LOS ELEMENTOS INDUSTRIALES

    En este apartado se va a describir como se han desarrollado los elementos industriales para la plantapiloto en pruebas del simulador 3D. Cada una de ellas se encapsula en una clase con unos mtodosobligatorios y otros opcionales como se ha descrito anteriormente. sto har que el desarrollo denuevos elementos y su adicin al programa principal sea ms rpido, sencillo y seguro ante fallosde compilacin y ejecucin.

    Cuando se habla de mtodos opcionales, se est haciendo referencia a un mtodo extra que esnecesario ejecutar una vez que el motor fsico ha realizado su pasada, cosa que ocurre al final delmtodo Update del programa principal en Simulador.cs. Este mtodo extra puede ser necesariopara truncar o mejorar el rendimiento del motor fsico. Debido a que vamos a simular elementosmecnicos basados en objetos diferentes que interacturan entre s pero que no estn gobernadospor ninguna mcanica entre ellos ms que la fsica clsica, la reorientacin, ajuste de velocidadesy/o deteccin extra de colisiones pueden llegar a ser necesarios tras el paso de los objetos por elmotor fsico. As pues se deja esta opcin en caso de ser necesitada, y se ejecutara siempre al finaldel mtodo Update de la clase Simulador.cs, despus de la llamada al motor fsico, ver figura 20.

    La estructura de una clase ser en general como se muestra en la siguiente figura:

    Simulador para control y automatizacin. 31 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figura 19: Estructura de mtodos de la clase Elemento Industrial.

    Figura 20: Cdigo en C# mostrando la llamada a mtodos Opcionales, de las clases Gra yCinta2, tras la llamada al motor fsico.

    3.4.1 CINTA TRANSPORTADORA

    La cinta transportadora es el primer dispositivo industrial que se desarroll y por lo tanto esel que ms modificaciones ha sufrido. Debido a que fue el primer dispositivo, partes del cdigode otros elementos estn basados en ellas. Cuando se obtuvo una versin funcional de la cintatransportadora se pas a disear nuevos dispositivos. No obstante a medida que se programabannuevos elementos se encontraban formas de optimizar tanto el cdigo como el renderizado 3Dde las distintas partes que componen un dispositivo. Por lo cual se volva siempre a la cintatransportadora para mejorarla tanto grfica como computacionalmente.

    Simulador para control y automatizacin. 32 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Una vez que se haba estudiado el motor fsico y su comportamiento ya era posible comenzarcon el desarrollo de un dispositivo industrial muy comn en las plantas industriales, la cintatransportadora. Aunque las cintas trasnportadoras las hay de muchos tipos y tamaos, la que seha diseado es una cinta lineal rectilnea.

    Dado que el motor fsico integrado en la solucin trabaja con cuerpos rgidos, la mejor opcinpara disear los dispositivos es basarlo en las figuras geomtricas ms bsicas, cubo, esfera ycilindro. En base a estas tres figuras se desarrolla todo el modelo, tanto fsico como 3D.

    Al comenzar a disear un dispositivo es importante reducirlo a su ms bsico funcionamientopara que la implementacin sea lo ms sencilla y rpida posible. Es por eso que se ha tomadola cinta transportadora como algo que mueve objetos de un punto a otro. En este punto noimporta que exista un motor que proporciona la fuerza necesaria para que unos engranajes hagangirar unos rodillos que a su vez muevan una cinta, generalmente de materal plastico o metlico,muevan los objetos que estn sobre ellos. ste es el punto clave para la programacin de lacinta. Un material que mueve objetos que estn sobre l. Es por eso que en una primera versinde la cinta en pruebas se tomarn objetos cbicos que descansaban sobre una superficie fija yesttica. A estos objetos cbicos, uno junto a otro, se les dotaba de una velocidad lineal quese actualizaba en cada paso. Estos objetos son dinmicos, es decir, incluidos en el motor fsicoy sobre los cuales actuan fuerzas y velocidades pero que tambin producen fuerzas sobre otrosobjetos. No obstante en cada paso de ejecucin se eliminaba la posibilidad de fuerzas ejercidassobre ellos por otras causas para que el funcionamiento fuera correcto, pues aunque es cierto quelos objetos que transportarn ejercern fuerzas sobre ellos y por lo tanto un desgaste natural yotras perturbaciones o errores de maquinaria, sto se puede hacer de forma ajena al motor fsicosin necesidad de incluirlo. Lo importante es obtener un comportamiento lgico y realista de loque sera un objeto siendo transportado por la cinta. En la figura 21 se pueden ver capturas delprimer prototipo de cinta que se est comentando. En esta primera versin se observa un modelomuy tosco, sin texturizar ni optimizar pero que cumpla su objetivo. Mover un objeto cbico deun punto a otro.

    Figure 21: Imgenes pruebas de transporte de un objeto fsico por la cinta transportadora.

    Una vez que se comprob que el sistema ideado y programado funcionaba, se procedi a incluirlos objetos fsicos cbicos necesarios para tener una cinta transportadora completa. La dinmicade la cinta es lineal. Una vez activada va de 0 a 0.5m/s de forma lineal. Todava no se han incluidolas opciones de funciones de transferencia personalizadas pues ser en el editor de plantas donde seconfigurarn estas opciones. En la figura 22 se puede observar el primer prototipo, parcialmentetexturizado, del primer prototipo de cinta transportadora. Aunque sigue siendo algo tosco, ya sehan incluido los elementos que conforman la cinta, las placas de la cinta, los engranajes que mueven

    Simulador para control y automatizacin. 33 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    las placas y los soportes. Esta cinta est formada por aproximadamente unos 50 obejtos cbicosfsicos sobre un soporte rgido y esttico que basicamente forman la cinta transportadora.

    a)

    b)

    Figure 22: Imgenes de la Cinta transportadora parcialmente texturizada. a) Imagen en reposo.b) Imagen transportando objetos.

    El modelo final tras varias modificaciones se muestra en la figura 23. Aunque la versin anterior,que estaba formada por 50 objetos cbicos que se encargaban de mover los objetos encima deun punto a otro, funcionaba correctamente, el consumo computacional y grfico era algo elevadoincluso estando parcialmente texturizado. Se fueron reduciendo el nmero de objetos que formabanla cinta y aumentando su tamao para seguir cubriendo toda la longitud de la cinta. Tambin seeliminaron objetos 3D que realmente eran innecesarios para mejorar el rendimiento grfico, llegandoa una solucin ms optimizada que la versin anterior y con un funcionamiento prcticamenteidntico.

    En la figura 23 se puede observar como se ha mejorado el apartado grfico incluyendo algunoselementos decorativos como el cuadro elctrico. Como se ha comentado anteriormentee, la cintaconstar de 2 modelos, el fsico y el 3D. El modelo fsico de la cinta se muestra en la figura 24,mostrado mediante figuras geomtricas constituidas por segmentos.

    Simulador para control y automatizacin. 34 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    a)

    b)

    Figure 23: Imgenes del modelado final de la cinta transportadora y la zona de cada de cajas.

    Simulador para control y automatizacin. 35 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    a)

    b)

    Figure 24: Imgenes del renderizado de los objetos fsicos que realizan la simulacin de la cintatransportadora.

    Simulador para control y automatizacin. 36 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Obviando el modelo 3D pues no tiene efecto fsico en la simulacin, se va a explicar como se haprogramado el funcionamiento de la cinta. El modelo fsico completo de la cinta est compuestopor los siguientes bloques, mostrados en la figura 24:

    1 bloque cbico esttico

    1 bloque cbico dinmico

    2 bloques cbicos estticos laterales

    El funcionamiento es el siguiente:

    1. Al activarse el actuador correspondiente (ON, variable bool a true), se le aplicarmovimiento lineal al bloque dinmico. El bloque dinmico descansa sobre el bloque esttico.

    2. Al aplicar movimiento, este bloque, que descansa sobre el esttico, se deslizar aunque sufrirrozamiento debido a que est actuando la fuerza de la gravedad sobre l, por lo que en cadapaso de ejecucin habr que corregir la velocidad para compensar este rozamiento no deseado.El movimiento se aplicar directamente sobre las variables de velocidad del objeto, dentrode la clase, forzando a su movimiento.

    3. El objeto dinmico se mover una distancia determinada. Al recorrer esta distancia, el objetovolver a su posicion inicial, mediante un forzado de la variable de posicin pero manteniendola misma velocidad.

    4. Esto provocar que el efecto sea el de una cinta. El objeto mover cualquier otro objeto quetenga en su superficie una determinada distancia, volver a la posicin inicial, pero si eseobjeto sigue sobre su superficie, aunque en otra zona distinta ahora, seguir desplazandoloigual.

    5. El movimiento que se aplica es de dinmica lineal. Partiendo de 0 m/s y llegando a 0.3m/s.Una velocidad que se ha visto razonable para el escenario que se ha dispuesto y que sepresentar en un apartado posterior de este proyecto.

    3.4.2 PLATAFORMA GIRATORIA + CINTA

    La plataforma giratoria o TurnTable, tiene una implementacin muy parecida a la Cintatransportadora. Est basada 2 nicos objetos fsicos que se muestran en la figura 25. El objetorectangular es esttico y soporta al objeto dinmico que ser el que simule realmente la mesagiratoria. Este objeto deber ser capaz de moverse de 0 a 90, y linealmente en los dos sentidospara darle a la mesa mayor funcionalidad.

    La clase detectar si se ha pulsado el actuador correspondiente y pondr en marcha la funcincorrespondiente. Sea cual sea la funcin escogida, el procedimiento es el mismo. Al objeto dinmicose le asignar una velocidad, en x, z o en ambos en caso de movimiento circular, mediante lasvariables que tendr en cuenta el motor fsico para hacer la simulacin de colisiones y aplicar lasecuaciones fsicas:

    Simulador para control y automatizacin. 37 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figura 25: Cdigo en C# que describe el movimiento de la cinta giratoria mediante las variablesde velocidad.

    El movimiento lineal, aparte de lo ya comentado, sigue la misma rutina que en el caso de lacinta transportadora. Avanzar una pequea cantida de espacio y se reposicionar el objeto cuandoalcance ese espacio en su posicin original sin cambiar el vector de velocidad para no alterar lafsica del sistema, pues para nosotros es como si no hubiera ocurrido nada.

    Simulador para control y automatizacin. 38 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figure 26: Imgenes del renderizado de los modelos fsicos y 3D de la plataforma giratoria.

    El modelo en 3D debe seguir fielmente a la simulacin fsica interna. Lo que nos lleva a quelos rodillos del modelo en 3D que se observa en la Figura 26, debern actualizar su posicin enel espacio y ngulo dependiendo de la velocidad angular y lineal del objeto dinmico para lo cualhabr que hacer equivalencias de velocidades angulares con lineales, ver Figura 27.

    Figura 27: Cdigo en C# que calcula la posicion y ngulos de los modelos 3D de los rodillos enfuncin de la velocidad lineal del objeto fsico.

    En las lneas de cdigo presentadas en la Figura 28, se muestra un claro ejemplo delreposicionamiento y reorientacin del elemento dinmico para evitar errores en la simulacin de lamesa. sto es debido a que en realidad el objeto dinmico no est unido a ningn otro elementocomo lo estaran las partes que componen a un elemento as en la realidad por ejemplo mediante

    Simulador para control y automatizacin. 39 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    engranajes. Es en realidad un objeto libre que se est controlando para que simule ciertas acciones.Cuando, por ejemplo, tiene una caja que est transportando, sta est ejercienzo fuerzas sobrela mesa, lineal/angular, e inevitablemente el motor fsico lo tendr en cuenta y se producirnmovimientos no deseados en los ejes x, z. Estos errores deben ser corregidos al comienzo delmtodo Update. Existe la posibilidad de realizar esto ltimo mediante el mtodo opcional del quese coment que se dispona, siendo necesario su uso en este caso.

    Figura 28: Cdigo en C# del mtodo Update2 de la plataforma giratoria que se ejecutar trasel paso por el motor fsico.

    3.4.3 GRA

    El caso de la gra es ms complejo que los anteriores. El modelo completo en 3D puede verse enlas figuras 29 y 30. En este caso el modelo de la gra tiene varias partes implicadas.

    Figure 29: Imagen del modelo completo de la gra del proyecto, garra abierta y bajada.

    Simulador para control y automatizacin. 40 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figure 30: Imagen del modelo completo de la gra del proyecto, garra abierta y subida.

    La primera parte implicada es la estructura principal, los soportes sobre los que descansa lagra y por los cuales se mueve, formada por varios cuerpos fsicos estticos. La estructura principalnunca se mover, ser esttica durante toda la simulacin, no adquirir velocidad, aceleracin ofuerza alguna, ver figuras 31 y 32.

    Figure 31: Imagen del modelo fsico que simular el funcionamiento de la gra.

    Simulador para control y automatizacin. 41 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figure 32: Imagen del modelo fsico que simular el funcionamiento de la gra.

    En segundo lugar est el brazo de la gra, formado por dos cuerpos fsicos, en principioinamovibles pero que cambiarn al imprimirle movimiento. Estos dos cuerpos forman un nicoobjeto en el simulador. Se puede mover linealmente en dos sentidos y subir/bajar. El brazo debepoder interactuar con el resto de objetos del simulador sin que stos tengan efectos sobre su posiciny velocidad pero si al contrario. Para ello se dota al brazo de una masa elevada, de esta forma siun objeto choca con el brazo no repercutir en su estado. El ltimo de los elementos es la garraque est formada por dos cuerpos cbicos que sern los encargados de interactuar con los objetos,ver figuras 33 y 34.

    Figure 33: Imagen de la gra sosteniendo una caja.

    Simulador para control y automatizacin. 42 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figure 34: Imagen de la gra soltndo una caja en movimiento.

    Para realizar la simulacin de la sujecin de un objeto se ha optado por usar choque conjunto.Si una de las dos partes de la garra colisiona con un objeto, el sistema fsico se encarga delmovimiento necesario entre garra y objeto. En el momento en que exista una colisin en ambaspartes de la garra, se comprueba que el objeto definitivamente se encuentra en una posicin en laque es posible sujetarlo fsicamente. Si ste es el caso, se procede a declarar al objeto inamovibley a la gra se le da la orden de aplicar al objeto sus mismas velocidades en cualquier direccin.Las lneas de cdigo que gobiernan la garra se presentan en la figura 35. De sta forma el objetoseguir a la gra en el recorrido que haga sin moverse de su posicin relativa a la gra. Una vezque se envi la orden de abrir la garra, la gra devolver el estado inicial al objeto, quedando asnuevamente expuesto a cualquier tipo de fuerza externa.

    Para la deteccin de colisin se utiliza un mtodo extra de colisiones entre objetos. Como losnicos objetos dinmicos libres que actualmente existen en el simulador son cajas, lo que se hacees un barrido por cada una de las cajas. Se comprueban las IDs de colisin y si existe unacolisin de los modelos fsicos o BoundingBox de la caja con los objetos que forman la garra.Si se detecta una colisin se procede al movimiento de la caja para alinearla con la garra segnel avance de la garra tal y como sucedera en la realidad. En el momento de la colisin doble, sila orientacin de la caja es cercana a la orientacin de la garra, el objeto se podr agarrar. Enotro caso, supongamos que la caja estuviera a 45, las garras al cerrarse expulsarn el objeto porrozamiento.

    Simulador para control y automatizacin. 43 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figura 35: Cdigo C# que se encarga del funcionamiento de la garra mediante deteccin decolisiones aadidas.

    3.4.4 RAMPA

    Las rampas no son ms que objetos fsicos estticos que servirn para guiar las cajas hacia lassalidas, en este caso los destructores, que seran paso a otras zonas de la planta. Estn formadaspor varios objetos y poseen unos coeficientes de rozamiento adecuados para simular una superficiemetlica pulida que permitir a las cajas deslizarse facilmente por su superficie. En la figura 36 sepresenta el modelo en 3D y el modelo fsico. Las rampas no disponen de actuadores, ni sensores.No tienen control alguno y estn completamente gobernadas por el motor fsico. En la figura 37 sepuede ver lo ms relevante de la clase Rampa.cs. Se observa que tan solo es una declaracin deobjetos y su posicionamiento en el escenario mediante las variables correspondientes a cada cuerpoo Body.

    Simulador para control y automatizacin. 44 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    a)

    b)

    Figure 36: Imgenes de los modelos a) 3D , b) fsico de la rampa.

    Simulador para control y automatizacin. 45 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figura 37: Cdigo en C# de la declaracin e inicializacin de un elemento Rampa.

    3.4.5 DESTRUCTOR

    Dado que para el escenario prototipo se han utilizado cajas de madera, es necesario crear unelemento que sea capaz de destruirlas. Es decir, si una caja ya no es necesaria en el escenario, sique ser necesario liberar o destruir dicha caja para liberar recursos de la ejecucin. En las figuras38 y 39 se pueden observar tanto el modelo 3D como el modelo fsico que detecta las colisionesmediante su BoundingBox.

    Figure 38: Imgenes del renderizado 3D de un Destructor.

    Simulador para control y automatizacin. 46 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    Figure 39: Imgenes del renderizado del modelo fsico de un Destructor.

    El cdigo del destructor es muy simple y solo se basa en unas IDs que contienen las cajas.Un objeto cbico fsico simple se encargar de comprobar si se ha producido alguna colisin con elmismo. En ese caso se comprobar la ID del objeto en colisin y se liberarn los recursos de dichoobjeto. El cdigo que gobierna las colisiones es similar al caso de la garra en la gra y se muestraen la figura 40.

    Figura 40: Cdigo en C# para chequear las colisiones del objeto fsico del Destructor con otrosobjetos del escenario y eliminarlos encaso positivo.

    3.4.6 PISTON

    Se ha desarrollado una simulacin de un pistn neumtico. Dado que el prototipo de escenarioen mente, al ir desarrollandose el proyecto, era una planta clasificadora de cajas, se pens que

    Simulador para control y automatizacin. 47 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    sera conveniente desarrollar un elemento de empuje. El modelado definitivo en 3D se muestra enimagenes en la figura 41.

    La estructura programada es simple. Varios objetos fsicos estticos y un nico bloquedinmico/esttico. Cuando se dice dinmico/esttico es debido a que el bloque no es realmentedinmico, sino esttico pero al moverse se comporta como dinmico cuando se ejecuta el sistema decolisiones. El pistn permanecer completamente esttico pues sino caera por fuerza de gravedad.En la figura 42 se muestra una porcin de cdigo con la definicin de los objetos que componen elpistn.

    Figura 42: Cdigo en C# donde se declaran las variables de objetos fsicos.

    Cuando los actuadores que gobiernan la activacin del pistn son pulsados, ver figura 43,se modifica la posicin del elemento dinmico/esttico que se encuentra en el tope del pistnmediante las variable correspondiente. Tras la actualizacin de posiciones del elemento, se hacepasar por el motor fsico y sistema de colisiones. El truco que se ha utilizado para que se comportedinmicamente siendo esttico y que no se caiga el objeto fsico cbico por gravedad tiene que vercon el propio sistema de colisiones.

    En el apartado 3.1 se explic que el sistema de colisiones se basaba en profundidad depenetracin y un movimiento proporcional a la penetracin. El objeto es esttico, luego en realidadno importa que se le apliquen velocidades, aceleraciones y/o fuerzas, pues el motor fsico lo detectacomo esttico y no aplicar fuerzas, velocidades ni aceleraciones sobre l. La velocidad que se leaplica al objeto se hace mediante desplazamiento de su posicin.

    Si se quiere una velocidad de 0.2m/s se hacen los calculos necesarios segn el tiempo de paso deejecucin y se calcula aproximadamente la cantidad de espacio que debe recorrer en cada uno delos pasos. Es decir que entre un paso y otro se fuerza la posicin del objeto. Si existe otro objetodinmico, como una caja, cercano al pistn y se fuerza la posicin del pistn , ste penetrar enla caja. Esta situacin ser detectada por el sistema de colisiones que se encargar de hacer losmovimientos correspondientes al objeto dinmico, en este caso la caja. De esta forma se consigueel comportamiento deseado.

    Simulador para control y automatizacin. 48 de 86

  • 3 DISEO E IMPLEMENTACION DEL SIMULADOR

    a)

    b)

    Figure 41: Imgenes del Pistn. a) Modelo 3D pistn recogido b) Modelo 3D pistn extendido.

    Simulador para control y automatizacin. 49 de 86

  • 3 DIS