Vous êtes sur la page 1sur 92

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 7
1.1 INTRODUCCIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 ESTADO DEL ARTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 ESTRUCTURA DEL DOCUMENTO . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 INTRODUCCION TEORICA 12
2.1 SITUACION DE PARTIDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 DESCRIPCION DE LA APLICACIN OBJETIVO . . . . . . . . . . . . . . . . . 12
2.2.1 Conexin mediante Server OPC . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.2 Conexin mediante puerto USB . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 TECNOLOGIAS Y HERRAMIENTAS DE DESARROLLO . . . . . . . . . . . . . 14
2.3.1 INTRODUCCIN A C# Y XNA . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.2 ENTORNOS DE MODELADO 3D. INTRODUCCION A AC3D. . . . . . . 18
2.3.3 OPC (OLE FOR PROCESS CONTROL) . . . . . . . . . . . . . . . . . . . 20

3 DISEO E IMPLEMENTACION DEL SIMULADOR 24


3.1 MOTOR FSICO Y SISTEMA DE COLISIONES . . . . . . . . . . . . . . . . . . 24
3.2 ESTRUCTURA DE LA APLICACIN . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 PROGRAMA PRINCIPAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4 CLASES PARA LOS ELEMENTOS INDUSTRIALES . . . . . . . . . . . . . . . . 31
3.4.1 CINTA TRANSPORTADORA . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4.2 PLATAFORMA GIRATORIA + CINTA . . . . . . . . . . . . . . . . . . . 37
3.4.3 GRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.4 RAMPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4.5 DESTRUCTOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.6 PISTON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.4.7 SENSORES DE BARRERA . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4.8 MONTACARGAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.4.9 ROBOT 5 GRADOS DE LIBERTAD . . . . . . . . . . . . . . . . . . . . . 55
3.4.10 CONEXION CLIENTE OPC - SERVIDOR OPC - PLC . . . . . . . . . . . 61
3.4.11 CUADRO DE CONTROL Y OPCIONES . . . . . . . . . . . . . . . . . . . 64

4 ESCENARIO PROTOTIPO Y EDITOR DE ESCENARIOS 67


4.1 ESCENARIO DESARROLLADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2 EDITOR DE ESCENARIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5 MANUAL DE USUARIO 71
5.1 INSTALACIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2 CONFIGURACIN DE UNITY PRO . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3 CONFIGURACIN OPC OFS 3.31 . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.4 DESCRIPCIN DEL SIMULADOR . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.5 OBJETIVOS DEL ESCENARIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.6 DESCRIPCIN DE LOS ACTUADORES Y SENSORES DEL ESCENARIO . . 77
5.7 NORMAS PARA LA IMPLEMENTACIN DEL PROGRAMA DE CONTROL EN
UNITY PRO XL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.8 CONEXIN Y EJECUCIN PLC-OPC-SIMULADOR . . . . . . . . . . . . . . . 81
5.9 MODIFICACIONES DEL PROYECTO EN UNITY PRO . . . . . . . . . . . . . . 83
5.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 Figuras
1 Usuarios de Half-Life 2 interactuando con objetos del escenario. . . . . . . . . . . 7
2 Imagenes de varios escenarios de ITS PLC. a) Almacen automatizado. b) Mezclado
de pintura. c) Seleccin y empaquetado de piezas. . . . . . . . . . . . . . . . . . . 8
3 Imagen mostrando la asignacin esttica de los sensores y actuadores en un escenario
de ITS PLC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Captura de pantalla de una parte del modelo 3D de la gra en AC3D. . . . . . . . 19
5 Captura de pantalla de la texturizacin de un modelo en AC3D . . . . . . . . . . . 20
6 Esquema de conexin mediante OPC Server. . . . . . . . . . . . . . . . . . . . . . 20
7 Esquema de conexin, entradas/salidas e interfaces. . . . . . . . . . . . . . . . . . . 21
8 Ejemplos de uso de Bullet Physics. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9 Ejemplos de uso de JigLibX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
10 Contacto entre 2 objetos penetrando . . . . . . . . . . . . . . . . . . . . . . . . . . 27
11 Objetos con composicin geomtrica simple a), y compuesta b). . . . . . . . . . . . 28
12 Estructura del proyecto JigLibX en Visual Express C#. . . . . . . . . . . . . . . . 28
13 Estructura de la aplicacin. Diagrama de flujo. . . . . . . . . . . . . . . . . . . . . 29
14 Estructura del proyecto de la aplicacin en Visual Express C#. . . . . . . . . . . . 29
15 Ejemplo de cdigo en C# de la declaracin de las variables para incluir mesas
giratorias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
16 Cdigo en C# de la carga de contenidos 3D. . . . . . . . . . . . . . . . . . . . . . 30
17 Cdigo C# de uso repetitivo para inicializar un elemento. . . . . . . . . . . . . . . 31
18 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 de
modelos 3D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
19 Estructura de mtodos de la clase Elemento Industrial. . . . . . . . . . . . . . . . 32
20 Cdigo en C# mostrando la llamada a mtodos Opcionales, de las clases Gra y
Cinta2, tras la llamada al motor fsico. . . . . . . . . . . . . . . . . . . . . . . . . . 32
21 Imgenes pruebas de transporte de un objeto fsico por la cinta transportadora. . . 33
22 Imgenes de la Cinta transportadora parcialmente texturizada. a) Imagen en reposo.
b) Imagen transportando objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
23 Imgenes del modelado final de la cinta transportadora y la zona de cada de cajas. 35
24 Imgenes del renderizado de los objetos fsicos que realizan la simulacin de la cinta
transportadora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
25 Cdigo en C# que describe el movimiento de la cinta giratoria mediante las variables
de velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
26 Imgenes del renderizado de los modelos fsicos y 3D de la plataforma giratoria. . . 39
27 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. . . . . . . . . . . . . . . . . . . . 39
28 Cdigo en C# del mtodo Update2 de la plataforma giratoria que se ejecutar
tras el paso por el motor fsico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
29 Imagen del modelo completo de la gra del proyecto, garra abierta y bajada. . . . 40
30 Imagen del modelo completo de la gra del proyecto, garra abierta y subida. . . . . 41
31 Imagen del modelo fsico que simular el funcionamiento de la gra. . . . . . . . . 41
32 Imagen del modelo fsico que simular el funcionamiento de la gra. . . . . . . . . 42
33 Imagen de la gra sosteniendo una caja. . . . . . . . . . . . . . . . . . . . . . . . . 42
34 Imagen de la gra soltndo una caja en movimiento. . . . . . . . . . . . . . . . . . 43
35 Cdigo C# que se encarga del funcionamiento de la garra mediante deteccin de
colisiones aadidas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
36 Imgenes de los modelos a) 3D , b) fsico de la rampa. . . . . . . . . . . . . . . . . 45
37 Cdigo en C# de la declaracin e inicializacin de un elemento Rampa. . . . . . . 46
38 Imgenes del renderizado 3D de un Destructor. . . . . . . . . . . . . . . . . . . . . 46
39 Imgenes del renderizado del modelo fsico de un Destructor. . . . . . . . . . . . . 47
40 Cdigo en C# para chequear las colisiones del objeto fsico del Destructor con otros
objetos del escenario y eliminarlos encaso positivo. . . . . . . . . . . . . . . . . . . 47
42 Cdigo en C# donde se declaran las variables de objetos fsicos. . . . . . . . . . . . 48
41 Imgenes del Pistn. a) Modelo 3D pistn recogido b) Modelo 3D pistn extendido. 49
43 Cdigo en C# para la simulacin del movimiento del pistn. . . . . . . . . . . . . 50
44 Imagen del pistn doble en resposo sobre la cinta transportadora. . . . . . . . . . . 50
45 Imagen del pistn doble empujando una caja. . . . . . . . . . . . . . . . . . . . . . 51
46 Imagen del Sensor de barrera. Modelo 3D del Sensor con rayo. . . . . . . . . . . . 51
47 Imgenes del Sensor de barrera. a) Contacto lmite entre objeto y sensor activandose.
b) Objeto cercano sin colisionar con el sensor de barrera. . . . . . . . . . . . . . . . 52
48 Cdigo C# que muestra como se detecta la colisin con el segmento y la
comprobacin de IDs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
49 Imagen del modelado 3D del montacargas detenido. . . . . . . . . . . . . . . . . . 53
50 Imagen del modelado 3D del montacargas subiendo un objeto. . . . . . . . . . . . . 54
51 Imagen de la estructura fsica que conforma el montacargas. . . . . . . . . . . . . . 54
52 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. . . . . . . . . . . . . . . 55
54 Imgenes de los modelos fsicos del brazo de 5 grados. 4 elementos ms la garra. . 56
53 Imgenes del brazo en 3 posiciones diferentes. . . . . . . . . . . . . . . . . . . . . 57
55 Cdigo en C# de los objetos fsicos y otras variables del brazo. . . . . . . . . . . . 58
56 Cdigo en C# de la inicializacin y adicin al motor fsico de los objetos. . . . . . 59
57 Cdigo en C# del control de la primera seccin del brazo. La seccin 0 es la base. 59
58 Cdigo en C# del control de la segunda seccin del brazo. . . . . . . . . . . . . . . 60
59 Cdigo en C# del control de la tercera seccin del brazo. . . . . . . . . . . . . . . 60
60 Cdigo en C# del control de la garra seccin del brazo. . . . . . . . . . . . . . . . 61
61 Captura de pantalla del formulario de conexin Cliente - Servidor OPC. . . . . . . 62
62 Cdigo del mtodo para la lectura de actuadores del servidor. . . . . . . . . . . . . 63
63 Cdigo del mtodo de escritura de sensores no prioritarios en el servidor OPC. . . 63
65 Cdigo de la declaracin de variables que contendrn las imgenes para los elementos
del cuadro de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
64 Imgenes del cuadro de actuadores de la aplicacin. a) Cuadro de actuadores, b)
Cuadro de sensores y c) Cuadro de conexin OPC. . . . . . . . . . . . . . . . . . . 65
66 Cdigo para posicionar los elementos en el mismo lugar sin importar el tamao de
la ventana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
67 Cdigo para la deteccin de pulsado de botones en la aplicacin. En este caso se
comprueban los 15 primeros actuadores. . . . . . . . . . . . . . . . . . . . . . . . . 66
68 Captura de la planta de clasificado de cajas. Vista superior. . . . . . . . . . . . . . 67
69 Captura de la planta de clasificado de cajas. . . . . . . . . . . . . . . . . . . . . . . 68
70 Captura de la planta de clasificado de cajas. . . . . . . . . . . . . . . . . . . . . . . 68
71 Captura de la planta de clasificado de cajas. . . . . . . . . . . . . . . . . . . . . . . 69
72 Capturas de pantalla del Editor de Escenarios. . . . . . . . . . . . . . . . . . . . . 70
73 Captura de pantalla creacin de un dispositivo en OFS . . . . . . . . . . . . . . . . 72
74 Captura de pantalla creacin de un dispositivo en OFS . . . . . . . . . . . . . . . . 73
75 Captura de pantalla parmetros de un dispositivo en OFS . . . . . . . . . . . . . . 73
76 Escenario del Simulador. Pestaa Actuadores y cuadro de control. . . . . . . . . . 74
77 Rampa de salida para las cajas grandes (DANGER escrito en laterales) . . . . . . 75
78 Rampa de salida para las cajas pequeas . . . . . . . . . . . . . . . . . . . . . . . . 76
79 Posiciones y sensores de la gra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
80 Sensores de la Plataforma giratoria. . . . . . . . . . . . . . . . . . . . . . . . . . . 78
81 Sensores de barrera prioritario llegada y clasificacin de cajas. . . . . . . . . . . . . 80
82 Sensores de barrera para el envo de cajas a sus respectivas salidas. . . . . . . . . . 80
83 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 produce
resultados que permiten prevenir errores en los sistemas reales. Mediante el uso de un simulador
para entornos industriales se reducira el tiempo de programacin y depuracin de las mismas. Pero
se puede ir ms all de estos conceptos si se habla en materias de educacin y prcticas mediante el
desarrollo de una plataforma de simulacin de maquinaria industrial, mediante realidad virtual en
3D, 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 medida
que pasan los aos, los videojuegos mejoran en calidad grfica, jugabilidad, interactividad con el
usuario etc. El volumen de ventas de videojuegos crece con los aos y esto repercute directamente
en 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 juegos
generan importantes ingresos anualmente, 631M en Espaa en 2010 obtenida de [6], para este
proyecto interesan especialmente los FPS. stos son juegos en primera persona en los cuales el
usuario se introduce en la piel del personaje en un mundo virtual con ciertos objetivos. El primer
FPS apareci en el ao 1973 de la mano de Steve Colley bajo el nombre Maze Wars. A medida
que pasaron los aos, los FPS mejoraron en varios aspectos y aunque el primero de ellos fue la
calidad grfica, en la actualidad no es el nico en desarrollo y mejora. Actualmente los aspectos
ms valorados son la conectividad, interactividad con el entorno y la calidad del sistema fsico del
videojuego.

En los videojuegos actuales los usuarios interactuan con los objetos de su entorno; pueden
cogerlos, tirarlos y empujarlos para sus propios propositos. Un ejemplo de esto se da en Half-Life
2, la secuela de Half-Life, lanzado al mercado en 2004 y que permite una gran interaccin con el
entorno, ver Figura 1. Llegados a este punto, surge la cuestin: si a los videojuegos se les incluye
un sistema fsico muy realista para hacerlos ms atractivos, por qu no hacer lo mismo con los
simuladores industriales y disearlos en 3D? Una simulacin de entornos industriales realista con
los objetos del propio sistema sera til para la programacin y prevencin de fallos que pudieran
ocurrir 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 de


pintura. c) Seleccin y empaquetado de piezas.

1.2 ESTADO DEL ARTE

Existen actualmente propuestas comerciales que, en un entorno interactivo en 3D, incluyen un


sistema fsico realista, como es el caso de ITS PLC de Realgames (www.realgames.pt). La
conectividad de este simulador se realiza mediante una tarjeta de entradas y salidas y conexin
mediante 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. stos


pretenden simular plantas industriales sencillas de procesado de distinto tipo. Pone a disposicin
del 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 no
se pueden modificar, ver figura 3.

Proporciona un cuadro de mandos para que el usuario pueda detener, pausar, resetear y cambiar
de 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 sensor
tiene 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 los
elementos 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 de


ITS PLC.

Aunque la aplicacin es muy realista respecto a la fsica de los objetos y la seccin de creacin
de 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 ms
completa y con mejor calidad observada, adems de haberse utilizado por el autor del documento
en el laboratorio.

1.3 OBJETIVOS

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


entornos industriales.

La decisin de realizar esta plataforma como Proyecto Final de Carrera viene tras haber
comprobado las carencias de las aplicaciones existentes en el mbito de la educacin en control y
automatizacin. Es decir, el objetivo de este proyecto es el de obtener una aplicacin que incluya
todas posibilidades que se creen necesarias para que la experimentacin en laboratorio con PLCs
y 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 ha


realizado utilizando aplicaciones de libre distribucin y de cdigo libre. Incluyendo la parte de
programacin de la aplicacin, este proyecto tambin incluye una parte de integracin de otros
elementos necesarios para llevar a cabo su desarrollo. Adems gozar de todas las carencias que
puedan 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 3D
e incluir un sistema fsico.
2. Editor de escenarios.
Esta aplicacin, aunque secundaria, es la clave para que la plataforma goce de una gran
escalabilidad a nivel de usuario. Con esta herramiento un usuario podr disear un simulador
mediante el uso de los elementos industriales disponibles. Ofrecer al usuario la posibilidad
de escoger de entre un listado de elementos, posicionarlos, orientarlos, aadir sensores etc.
Bsicamente ser un constructor de mundos ms comunmente llamado, en terminologa
anglosajona 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 de
PLC. Para esto se han barajado diferentes opciones:

La primera sera realizar una conexin fsica con un PLC comercial mediante los puertos
USB 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 una
buena opcin ya que es una solucin abierta y flexible al clsico problema de los drivers
propietarios, con la ventaja aadida que la mayora de los grandes fabricantes incluyen OPC
en sus productos.

Algunos fabricantes de PLCs suministran una aplicacin que simula el comportamiento del
PLC [9] y al ejecutarse constituye un proceso independiente que utiliza los drivers propios para
comunicar con el entorno de programacin. Esto permite contar con la ventaja de no necesitarse
un PLC comercial para realizar la programacin del simulador. Con todo esto un usuario sera
capaz 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 de
este software, que sern tratados en los siguientes apartados, son el sistema fsico, el sistema de
colisiones 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 comenzar
en 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 la
tarea de modificar la solucin para que la plataforma pueda ser ampliada y mejorada por personas
ajenas 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 del
resto del documento.

2. Una parte de diseo de la plataforma.


En esta parte es donde se desarrollar como se ha realizado la aplicacin entrando
directamente 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 un
correcto 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 visin
de 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 quera
de la aplicacin pero no muy bien como realizarla.

Inicialmente, como en todo proyecto, se buscaron las posibilidades para poder disear 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 Garrys MoD. De esta forma se iban recogiendo diferentes posibilidades de lenguajes
de programacin para el desarrollo de la aplicacin en cuestin. Tambin 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 grfica de ITS PLC. sto
aceler 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 vez
se decidieron tanto el lenguaje de programacin como la base para el desarrollo de objetos en 3D, el
avance de la aplicacin fue bastante rpido. Aproximadamente la situacin de partida se desarroll
temporalmente como sigue:
1 mes para la busqueda y aprendizaje del lenguaje de programacin 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 detallarn ms adelante.

Aproximadamente al comienzo del quinto mes ya se dispona de un escenario funcional que


inclua 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 desarrollados


y dotarlos de una esttica 3D ms realista, as como el planteamiento y la creacin de nuevos
elementos 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. Hay
que razonar como de lejos se prentede llegar con esta plataforma y ver como sera 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 caractersticas de los lenguajes de programacin orientados
a objetos, se concluy que la mejor opcin de conseguir el software deseado era de la forma que
se ha planteado. Decidir el alcance que va a tener la aplicacin es fundamental pues a la hora de
realizar la programacin del mismo se tendrn en cuenta las caractersticas, y el cdigo se ajustar
a 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 del
cdigo ya existente para optimizar e incluir nuevas funcionalidades.

Siguiendo este planteamiento se comienza determinando que debe ofrecer la aplicacin al


usuario. Debe poder ser escalable. La aplicacin no puede quedarse estancada en un nmero
determinado de escenarios de simulacin como ocurre en ITS PLC. Y el usuario debera ser capaz
de 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 un
dispositivo, como por ejemplo una cinta transportadora, el usuario debera ser capaz de configurar
su comportamiento. Las cintas no son todas iguales, ni en forma, tamao o dinmica. Aqu entra
en juego el trmino configuracin. El usuario podr incluir la funcin de transferencia que modela
la dinmica de la cinta transportadora. En este caso podra ser la funcin de transferencia de los
motores que mueven la cinta. De esta forma con un nico dispositivo programado en la aplicacin el
usuario 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 programacin


est referida a elementos o dispositivos que se utilicen a nivel industrial y necesiten de una
programacin separada de la del PLC, como puede ser un brazo robtico para la selecin de
piezas, soldaduras, ensamblajes etc. Poniendo como ejemplo el SCORBOT, y usndolo como base
para un posible dispositivo del simulador, se incluir en el simulador la herramienta necesaria
para realizar la programacin de las acciones que deba hacer el brazo ante las seales de entrada
procedentes del PLC. La programacin se realizar con un pequeo conjunto de las instrucciones
del lenguaje ACL.

Dado que se est hablando de disear una plataforma para el entrenamiento con PLCs es muy
importante pensar en como se va a hacer la conexin 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 Conexin mediante Server OPC

Con un servidor OPC (Ole Proccess Control), se puede establecer una conexin 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 conexin de los equipos solo hara falta una
red 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 puede
hacer 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 de
simulacin de PLCs. En pocas palabras, se puede tener en un mismo PC las tres aplicaciones para
establecer una conexin local interna y poder realizar la simulacin 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 averas. Con esta forma de conexin el riesgo de avera debido
a un mal uso por parte del usuario es inexistente. Otra ventaja aadida de no usar PLCs, es el
nmero de puestos de trabajo que se pueden utilizar. Ahora solo son necesarios PCs, pudiendose
ampliar a un costo menor el nmero de estaciones disponibles para el alumnado. El nico requisito
de 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 el
simulador, 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 utilizados
para 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 programacin
adecuado es fundamental. Aunque en principio se podra 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 cul de ellos sera un lenguaje ptimo para el desarrollo del
simulador dado que se comenzaba este proyecto desde cero.

Inicialmente y dado que no se saba programar en JAVA, se descart inicialmente dejndolo


como ltima opcin. Sin embargo una opcin viable de lenguaje a utilizar es Lua. Lua es un
lenguaje de extensin, suficientemente compacto para usarse en diferentes plataformas. En Lua las
variables no tienen tipo, slo los datos y pueden ser lgicos, enteros, nmeros 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 semntica 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 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 normalmente
transparente al usuario y se realiza en tiempo de ejecucin, pero puede hacerse con anticipacin
para aumentar el rendimiento y reducir el uso de la memoria al prescindir del compilador. Tambin
es posible la compilacin en tiempo de ejecucin utilizando LuaJIT.

Debido a que Lua compilado es pequeo, 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 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 lenguaje
de 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 como
lenguaje se desech, no porque no ofreciera las caractersticas necesarias, sino por la renderizacin
en 3D. Paralelamente a la busqueda del lenguaje de programacin tambin se realiz la busqueda
de libreras 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 podan 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 documentacin. Dado
que el disponer de una buena documentacin es importante y tras observar algunos de los resultados
que obtenian los programadores utilizando XNA, se decidi que sera la librera para realizar la
programacin 3D del simulador. Debido a que est implementada utilizando C# y que tanto XNA
como C# gozaban de las caractersticas necesarias para la implementacin del simulador en 3D
deseado, 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 por


Microsoft como parte de su plataforma .NET, que despus fue aprobado como un estndar por
la ECMA (ECMA-334) e ISO (ISO/IEC 23270). C# es uno de los lenguajes de programacin
diseados 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 ingls
sharp) indica que la nota (C es la nota do en ingls) es un semitono ms alta, sugiriendo que
C# 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# es
un lenguaje de programacin independiente diseado 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 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) y
que se pasa por valor al mtodo la referencia , pero el espacio reservado para la lista es
comn, 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 por
valor 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 a
inicializar la variable antes de pasar el parmetro.
Cuando ref y out modifican un parmetro de referencia, la propia referencia se pasa por
referencia.

Simulador para control y automatizacin. 15 de 86


2 INTRODUCCION TEORICA

El modificador params sirve para definir un nmero variable de argumentos los cuales
se implementan como una matriz.
Un mtodo debe tener como mximo un nico parmetro params y ste debe ser el
ltimo.
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 vlidas
como tipos de valores devueltos).
C# implementa sobrecarga de mtodos, dos o ms mtodos pueden tener el mismo
nombre siempre y cuando se diferencien por sus parmetros.
El mtodo Main 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 propsito


general.
Inclusin de principios de ingeniera de software tales como revisin estricta de los tipos
de datos, revisin de lmites de vectores, deteccin de intentos de usar variables no
inicializadas, y recoleccin de basura automtica.
Capacidad para desarrollar componentes de software que se puedan usar en ambientes
distribuidos.
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 administrado


proporcionado 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 " y
traer diferentes aspectos de la produccin 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


estndar Kit de desarrollo de Xbox y XNA Game Studio.

XNA Framework se basa en la implementacin 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 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 marco
se ejecuta en una versin de Common Language Runtime que se ha optimizado para que los
juegos de azar proporcionar un entorno de ejecucin administrado. El tiempo de ejecucin
est disponible para Windows XP, Windows Vista y Xbox 360. Dado que XNA Games estn
programados para el tiempo de ejecucin, que se ejecuten en cualquier plataforma que admite
el XNA Framework con mnima o ninguna modificacin. Juegos que se ejecutan en el marco
tcnicamente pueden escribirse en cualquier lenguaje compatible con .NET, pero oficialmente
se admiten slo C# y XNA Game Studio Express IDE y todas las versiones de Visual Studio
2005.

El XNA Framework por lo tanto encapsulado bajo nivel tecnolgicos detalles relacionados
en un juego de codificacin, asegurndose 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 ms en el contenido y la
experiencia de juego. XNA Framework se integra con una serie de herramientas, tales como
la plataforma mltiple audio creacin herramienta (XACT), para ayudar en la creacin de
contenido. XNA Framework proporciona apoyo para la creacin de juego 2D y 3D y permite
el uso de los controladores de Xbox 360 y vibraciones. Slo 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/ao suscripcin. 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 manipulacin.

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

Permite la produccin de juegos de la plataforma de Zune y agrega soporte de la


comunidad de Xbox Live. Una versin beta del conjunto de herramientas de se lanz en
septiembre de 2008. La versin final fue lanzada el 30 de octubre de 2008. XNA Game
Studio 3.0 ahora es compatible con C# 3.0, LINQ y la mayora de las versiones de Visual
Studio 2008. Tambin hay varias caractersticas nuevas de ms 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 fcilmente la funcin 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 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 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 lnea,
en donde los desarrolladores suben sus aplicaciones y los usarios del telfono inteligente
pueden comprar o probar las aplicaciones, como se ha visto en el Xbox 360. Cabe
destacar la adicion de Mxico para el mercado y que este estar disponible para uso en
30 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 simulador
y realizar el renderizado 3D de los objetos mediante C# y XNA. No obstante, es necesario disear
los objetos 3D antes de poder renderizarlos por pantalla. Para poder hacer sto se necesita un
software de diseo 3D.

Entre los ms utilizados estn:


3ds Max Studio.
Autodesk 3ds Max (anteriormente 3D Studio Max) es un programa de creacin de grficos
y animacin 3D desarrollado por Autodesk, en concreto la divisin 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 animacin 3D
ms utilizado, especialmente para la creacin de video juegos, anuncios de televisin, en
arquitectura 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, 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 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 importantes
sobre stas, como la configuracin personalizada de la distribucin de los mens y vistas de
cmara.

Tanto 3ds Max, como Blender son programas excesivamente complejos y requieren de numerosas
horas de estudio para el diseo de modelos 3D. Por lo que se buscaron otras opciones para realizar
los 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 inclua
muchas de las opciones de 3ds Max y Blender, con una interfaz grfica muy parecida, pero con una
simplicidad de implementacin de modelos mediante mens intuitivos que hacen de este software
una 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 se
ha 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 y
esfricos. De esta forma el diseo de un elemento nuevo en 3D en el AC3D se llevar a cabo de
forma rpida y sencilla. El programa dispone de funciones bsicas booleanas para aplicar entre 2
objetos 3D como:
Unin

Interseccin
Substraccin
Cortar y Eliminar

La adicin 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 asignarn las diferentes texturas a las diferentes
superficies segn el objeto. A los modelos desarrollados se les aplicar una optimizacin de vrtices
y 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. En
este proyecto se ha realizado el diseo para una conexin directa entre un simulador de PLC y el
simulador 3D. La conexin directa se refiere a una conexin interna en el mismo ordenador donde
se ejecutarn 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 programacin del autmata
y la programacin de la planta simulada. Para realizar la conexin entre el simulador de PLC y
el 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 control
y supervisin de procesos industriales. De sta forma la conexin 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 conexin mediante OPC Server.

OPC est basado en tecnologa Microsoft, que ofrece un interfaz comn para comunicacin que
permite que componentes software individuales interaccionen y compartan datos. La comunicacin
OPC se realiza a travs de una arquitectura Cliente-servidor. El servidor OPC es la fuente de
datos (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 una
solucin abierta y flexible al clsico problema de los drivers propietarios. Prcticamente todos los
mayores fabricantes de sistemas de control, instrumentacin y de procesos han incluido OPC en
sus productos.

El propsito principal del estndar OPC es proporcionar a las aplicaciones una forma comn
de acceder a los datos de cualquier fuente, como un dispositivo o una base de datos. Gracias a esta
forma comn de acceso a datos que proporciona OPC los fabricantes de hardware slo 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 diseado principalmente para acceder a datos de un servidor en red. Distintas
aplicaciones podrn coger datos de aparatos fsicos y llevarlo a SCADA o DCS, o de un servidor
SCADA 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 OPC
proporcionados por uno o ms fabricantes. De esta forma no existe restriccin por cuanto a tener
un Software Cliente para un Software Servidor, lo que es un problema de interoperabilidad que
hoy en da 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, informacin de
los dispositivos de campo asociados. De esta forma, aplicaciones cliente OPC de otros fabricantes
tendrn 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 informacin sobre s mismo, y unifica los Datos dentro de un
Grupo.
Grupo: Dota de un mecanismo que contiene en forma lgica los temes. Se clasifican en
pblico o local.
tem: Es un valor, una condicin y permanece o vara en el tiempo. Es una direccin
especfica 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 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 de
aplicaciones de acceso a datos. Caractersticas: Arquitectura de comunicacin abierta y
eficaz, concentrada en el acceso a datos y no en los tipos de datos. Propsito: 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
comunicacin "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 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 aplicaciones
de empresa y son cada vez ms un proceso de control de entornos. OPC XML-DA sali a la luz
en 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 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, 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 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 relacin con DCOM, ya que la
API OPC UA de seguridad an 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 ms segura que COM
/ DCOM. Tambin hacen mucho ms sencillo el desarrollo de clientes y servidores OPC en
plataformas que no sean de Microsoft.
7. Seguridad
Existen 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. 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 especficos de acceso
restringido 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 existen


objetos que se mueven e interaccionan con otros. La simulacin de la fsica es una disciplina muy
amplia, este trabajo se centra principalmente en la fsica de objetos rgidos. Debido a que se
trabajar en un entorno en 3D se tendrn vectores con tres componentes que permitirn manejar
lo 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 de
movimiento de Newton, que describen el comportamiento de una masa puntual. La primera ley
de Newton expresa que un objeto con velocidad uniforme, sobre el cual no existen fuerzas, no
cambiar su velocidad. Aunque en el mundo real siempre existe algn tipo de fuerza que sufren
los objetos en movimiento, como la producida por rozamiento. La segunda ley de Newton es la
que relaciona la fuerza con aceleracin.

px vx
p = py v = vy (1)
pz vz

F = ma = m
p (2)

1
p = F (3)
m

En el motor fsico se obtendr la aceleracin de un objeto a partir de la fuerza que se le est


aplicando (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, se
simular la fuerza de gravedad de la tierra, por lo que se aplicar (5). Donde se aproximar la
constante g con un valor de 9,8 sm2 ,10,0 sm2 , para realizar clculos rpidos [7].
m1 m2
F =G (4)
r2

F = mg (5)
La aceleracin de la gravedad que se aplicar a los objetos ser por tanto, un vector.

0 Fx
g = g F = Fy (6)
0 Fz
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 fuerza
de rozamiento, N la normal y el coeficiente de rozamiento. Aunque se deben tener en cuenta los
dos tipos de coeficientes de rozamiento, el esttico y el dinmico s y k . Estos coeficientes son
caractersticos para cada par de materiales que se encuentran en conctacto y dependen de otros
factores 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 k
Steel Steel 0.74 0.57
Aluminium Steel 0.61 0.47
Copper Steel 0.53 0.36
Rubber Concrete 1 0.8
Wood Wood 0.25-0.5 0.2
Glass Glass 0.94 0.4
Waxed wood Wet snow 0.14 0.1
Waxed wood Dry snow - 0.04
Metal Metal 0.15 0.06
Ice Ice 0.1 0.03
Teflon Teflon 0.04 0.04
Synovial Joints
- 0.01 0.003
in Humans

Table 1: Valores aproximados de los coeficientes de rozamiento dinmico k y esttico s . Pares


de materiales en contacto.

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

I= r2 dV (8)
V

Para procesar todas las fuerzas que estn actuando sobre un mismo objeto en el simulador se
utilizar 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 a
partir del conjunto de fuerzas [4]. Se har la suma vectorial de fuerzas a las que est sometido
un objeto para obtener una nica fuerza total, ver (9). Otras caractersticas como el centro de
masas, orientacin (ngulos de Euler), momentos de inercia y de fuerza o par debern aplicarse
para conseguir realismo en la simulacin.
X
F = Fi (9)
i

Para el desarrollo de la aplicacin se ha utilizado un motor fsico de propsito general. Se


buscaba un motor que fuera gratuito y de cdigo libre que adems incluyera las caractersticas
ms 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 la
aplicacin.

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 muy
similares como para hacer una eleccin y dado que no se dispona de tiempo para realizar un
examen exhaustivo del cdigo para hacer la eleccin del idneo se escogo JigLibx tras ver algunas
de 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. Como
est completamente escrita en C# es particularmente ajustable a su uso con XNA. El motor fsico
posee un sistema de colisiones, fsica de objetos rgidos y es gratuito y de cdigo abierto. Por lo
que 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 una
colisin entre objetos, cmo ha sido y qu consecuencias conlleva. En base al trabajo del sistema
de 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 un
sistema de simulacin en 3D y por tanto objetos modelados en base a polgonos, se debe hacer
distincin entre colisiones punto-punto, arista-arista, arista-cara, cara-cara. Uno de los problemas
al 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 que
ocurrir es que penetrarn el uno en el otro, ver figura 10. Esto se resolvera separando los objetos
en 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 la


profundidad de penetracin definida como la distancia de traslacin mnima requerida para separar
dos objetos en interseccin [2]. En este mtodo se permite la interpenetracin entre objetos y para
realizar la separacin se opta por aplicar fuerzas proporcionales a la cantidad de penetracin. Al
resolver la colisin se tendrn en cuenta todas las magnitudes de los objetos involucrados, velocidad
lineal, angular, fuerzas etc. Al producirse en una colisin entre dos objetos debe cumplirse el
principio de conservacin en el momento del choque y que viene expresado por (10). Dos objetos a
velocidades de choque va y vb , con masas ma y mb , tras el choque adquirirn una nueva velocidad
en otras direcciones y sentidos. La conservacin ocurrir en el momento justo del choque, tras el
cual el movimiento de los objetos deber responder al resto de fuerzas externas como la fuerza de
rozamiento.

ma va + mb vb = ma va0 + mb vb0 (10)

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

En general se debe introducir en el sistema un conjunto bsico de figuras geomtricas ya que


los cuerpo fsicos tendrn una forma que ser una figura geomtrica o en casos ms complejos una
combinacin. En la figura 11 se pueden observar ambos casos. Entre las formas bsicas destacan
el 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, no


deformables. El uso de este tipo de objetos, no realistas, presenta algunas desventajas. En primer
lugar en la simulacin de un choque entre dos objetos nuncan se dar una amortiguacin por
deformacin. An as la elasticidad se puede incluir en el modelo mediante un coeficiente junto
con los coeficientes de rozamiento, como se ha comentado anteriormente. En segundo lugar el uso
de 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 con
consideraciones de elasticidad del material consumira demasiado tiempo de procesador y dara
lugar 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 de
detener en cualquier momento. Al tratarse de una aplicacin con renderizado en 3D se deber
actualizar el dibujado en pantalla en cada paso de ejecucin. Los modelos 3D son parte del
contenido 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 dividida
en varios mtodos, de los cuales algunos se ejecutarn una nica vez, y otros en cada paso de
ejecucin. 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 del


programa comentada en el apartado anterior. Al empezar el proyecto se pretenda que fuera
sencillo aadir nuevos elementos a medida que se fuesen desarrollando ahora o en un futuro. Que
sea sencillo no implica que no haya que introducir cdigo nuevo. No obstante la forma de introducir
el 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 una
porcin de cdigo donde se observan las variables necesarias para introducir 5 cintas giratorias
en 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 va
a necesitar, ver figura 16. En el mtodo Initialize se inicializarn los parmetros necesarios bsicos
y 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 y
Draw. En el mtodo Update, se llamar mediante un bucle for al mtodo Update de cada una de
las Cintas transportadoras que existan en el escenario. De la misma manera, en el mtodo Draw
se llamar al mtodo Draw de cada una de las cintas mediante un bucle for. De esta forma si se
pretende aadir una nueva cinta, solo hay que aumentar el valor num_Cintas2 , y copiar/pegar
la porcin de cdigo de otra cinta cambiando sus parmetros de posicin. Al aumentar el valor
num_Cintas2 ya se est incluyendo en los bucles for de los mtodos Update y Draw la nueva
cinta 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 actualizacin
de 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 planta
piloto en pruebas del simulador 3D. Cada una de ellas se encapsula en una clase con unos mtodos
obligatorios y otros opcionales como se ha descrito anteriormente. sto har que el desarrollo de
nuevos elementos y su adicin al programa principal sea ms rpido, sencillo y seguro ante fallos
de compilacin y ejecucin.

Cuando se habla de mtodos opcionales, se est haciendo referencia a un mtodo extra que es
necesario ejecutar una vez que el motor fsico ha realizado su pasada, cosa que ocurre al final del
mtodo Update del programa principal en Simulador.cs. Este mtodo extra puede ser necesario
para truncar o mejorar el rendimiento del motor fsico. Debido a que vamos a simular elementos
mecnicos basados en objetos diferentes que interacturan entre s pero que no estn gobernados
por ninguna mcanica entre ellos ms que la fsica clsica, la reorientacin, ajuste de velocidades
y/o deteccin extra de colisiones pueden llegar a ser necesarios tras el paso de los objetos por el
motor fsico. As pues se deja esta opcin en caso de ser necesitada, y se ejecutara siempre al final
del 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 y
Cinta2, 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 es


el que ms modificaciones ha sufrido. Debido a que fue el primer dispositivo, partes del cdigo
de otros elementos estn basados en ellas. Cuando se obtuvo una versin funcional de la cinta
transportadora se pas a disear nuevos dispositivos. No obstante a medida que se programaban
nuevos elementos se encontraban formas de optimizar tanto el cdigo como el renderizado 3D
de las distintas partes que componen un dispositivo. Por lo cual se volva siempre a la cinta
transportadora 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 comenzar
con el desarrollo de un dispositivo industrial muy comn en las plantas industriales, la cinta
transportadora. Aunque las cintas trasnportadoras las hay de muchos tipos y tamaos, la que se
ha diseado es una cinta lineal rectilnea.

Dado que el motor fsico integrado en la solucin trabaja con cuerpos rgidos, la mejor opcin
para disear los dispositivos es basarlo en las figuras geomtricas ms bsicas, cubo, esfera y
cilindro. 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 funcionamiento


para que la implementacin sea lo ms sencilla y rpida posible. Es por eso que se ha tomado
la cinta transportadora como algo que mueve objetos de un punto a otro. En este punto no
importa que exista un motor que proporciona la fuerza necesaria para que unos engranajes hagan
girar 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 la
cinta. Un material que mueve objetos que estn sobre l. Es por eso que en una primera versin
de la cinta en pruebas se tomarn objetos cbicos que descansaban sobre una superficie fija y
esttica. A estos objetos cbicos, uno junto a otro, se les dotaba de una velocidad lineal que
se actualizaba en cada paso. Estos objetos son dinmicos, es decir, incluidos en el motor fsico
y sobre los cuales actuan fuerzas y velocidades pero que tambin producen fuerzas sobre otros
objetos. No obstante en cada paso de ejecucin se eliminaba la posibilidad de fuerzas ejercidas
sobre ellos por otras causas para que el funcionamiento fuera correcto, pues aunque es cierto que
los objetos que transportarn ejercern fuerzas sobre ellos y por lo tanto un desgaste natural y
otras perturbaciones o errores de maquinaria, sto se puede hacer de forma ajena al motor fsico
sin necesidad de incluirlo. Lo importante es obtener un comportamiento lgico y realista de lo
que sera un objeto siendo transportado por la cinta. En la figura 21 se pueden ver capturas del
primer prototipo de cinta que se est comentando. En esta primera versin se observa un modelo
muy tosco, sin texturizar ni optimizar pero que cumpla su objetivo. Mover un objeto cbico de
un 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 incluir
los objetos fsicos cbicos necesarios para tener una cinta transportadora completa. La dinmica
de la cinta es lineal. Una vez activada va de 0 a 0.5m/s de forma lineal. Todava no se han incluido
las opciones de funciones de transferencia personalizadas pues ser en el editor de plantas donde se
configurarn estas opciones. En la figura 22 se puede observar el primer prototipo, parcialmente
texturizado, del primer prototipo de cinta transportadora. Aunque sigue siendo algo tosco, ya se
han 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 cbicos
fsicos 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 de
un punto a otro, funcionaba correctamente, el consumo computacional y grfico era algo elevado
incluso estando parcialmente texturizado. Se fueron reduciendo el nmero de objetos que formaban
la cinta y aumentando su tamao para seguir cubriendo toda la longitud de la cinta. Tambin se
eliminaron objetos 3D que realmente eran innecesarios para mejorar el rendimiento grfico, llegando
a una solucin ms optimizada que la versin anterior y con un funcionamiento prcticamente
idntico.

En la figura 23 se puede observar como se ha mejorado el apartado grfico incluyendo algunos


elementos decorativos como el cuadro elctrico. Como se ha comentado anteriormentee, la cinta
constar 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 cinta
transportadora.

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 ha


programado el funcionamiento de la cinta. El modelo fsico completo de la cinta est compuesto
por 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 aplicar
movimiento 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 sufrir
rozamiento debido a que est actuando la fuerza de la gravedad sobre l, por lo que en cada
paso 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, dentro
de la clase, forzando a su movimiento.
3. El objeto dinmico se mover una distancia determinada. Al recorrer esta distancia, el objeto
volver a su posicion inicial, mediante un forzado de la variable de posicin pero manteniendo
la misma velocidad.

4. Esto provocar que el efecto sea el de una cinta. El objeto mover cualquier otro objeto que
tenga en su superficie una determinada distancia, volver a la posicin inicial, pero si ese
objeto sigue sobre su superficie, aunque en otra zona distinta ahora, seguir desplazandolo
igual.
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 se
presentar 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 Cinta


transportadora. Est basada 2 nicos objetos fsicos que se muestran en la figura 25. El objeto
rectangular es esttico y soporta al objeto dinmico que ser el que simule realmente la mesa
giratoria. Este objeto deber ser capaz de moverse de 0 a 90, y linealmente en los dos sentidos
para darle a la mesa mayor funcionalidad.

La clase detectar si se ha pulsado el actuador correspondiente y pondr en marcha la funcin


correspondiente. Sea cual sea la funcin escogida, el procedimiento es el mismo. Al objeto dinmico
se le asignar una velocidad, en x, z o en ambos en caso de movimiento circular, mediante las
variables que tendr en cuenta el motor fsico para hacer la simulacin de colisiones y aplicar las
ecuaciones 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 variables
de velocidad.

El movimiento lineal, aparte de lo ya comentado, sigue la misma rutina que en el caso de la


cinta transportadora. Avanzar una pequea cantida de espacio y se reposicionar el objeto cuando
alcance ese espacio en su posicin original sin cambiar el vector de velocidad para no alterar la
fsica 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 que
los rodillos del modelo en 3D que se observa en la Figura 26, debern actualizar su posicin en
el espacio y ngulo dependiendo de la velocidad angular y lineal del objeto dinmico para lo cual
habr 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 en
funcin de la velocidad lineal del objeto fsico.

En las lneas de cdigo presentadas en la Figura 28, se muestra un claro ejemplo del
reposicionamiento y reorientacin del elemento dinmico para evitar errores en la simulacin de la
mesa. sto es debido a que en realidad el objeto dinmico no est unido a ningn otro elemento
como 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 sobre
la mesa, lineal/angular, e inevitablemente el motor fsico lo tendr en cuenta y se producirn
movimientos no deseados en los ejes x, z. Estos errores deben ser corregidos al comienzo del
mtodo Update. Existe la posibilidad de realizar esto ltimo mediante el mtodo opcional del que
se 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 tras
el 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 en
las 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 la
gra y por los cuales se mueve, formada por varios cuerpos fsicos estticos. La estructura principal
nunca se mover, ser esttica durante toda la simulacin, no adquirir velocidad, aceleracin o
fuerza 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 principio
inamovibles pero que cambiarn al imprimirle movimiento. Estos dos cuerpos forman un nico
objeto en el simulador. Se puede mover linealmente en dos sentidos y subir/bajar. El brazo debe
poder interactuar con el resto de objetos del simulador sin que stos tengan efectos sobre su posicin
y velocidad pero si al contrario. Para ello se dota al brazo de una masa elevada, de esta forma si
un objeto choca con el brazo no repercutir en su estado. El ltimo de los elementos es la garra
que 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 del
movimiento necesario entre garra y objeto. En el momento en que exista una colisin en ambas
partes de la garra, se comprueba que el objeto definitivamente se encuentra en una posicin en la
que es posible sujetarlo fsicamente. Si ste es el caso, se procede a declarar al objeto inamovible
y 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 objeto
seguir a la gra en el recorrido que haga sin moverse de su posicin relativa a la gra. Una vez
que se envi la orden de abrir la garra, la gra devolver el estado inicial al objeto, quedando as
nuevamente expuesto a cualquier tipo de fuerza externa.

Para la deteccin de colisin se utiliza un mtodo extra de colisiones entre objetos. Como los
nicos objetos dinmicos libres que actualmente existen en el simulador son cajas, lo que se hace
es un barrido por cada una de las cajas. Se comprueban las IDs de colisin y si existe una
colisin 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 segn
el avance de la garra tal y como sucedera en la realidad. En el momento de la colisin doble, si
la orientacin de la caja es cercana a la orientacin de la garra, el objeto se podr agarrar. En
otro caso, supongamos que la caja estuviera a 45, las garras al cerrarse expulsarn el objeto por
rozamiento.

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 de
colisiones aadidas.

3.4.4 RAMPA

Las rampas no son ms que objetos fsicos estticos que servirn para guiar las cajas hacia las
salidas, en este caso los destructores, que seran paso a otras zonas de la planta. Estn formadas
por varios objetos y poseen unos coeficientes de rozamiento adecuados para simular una superficie
metlica pulida que permitir a las cajas deslizarse facilmente por su superficie. En la figura 36 se
presenta 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 se
puede ver lo ms relevante de la clase Rampa.cs. Se observa que tan solo es una declaracin de
objetos y su posicionamiento en el escenario mediante las variables correspondientes a cada cuerpo
o 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 un
elemento que sea capaz de destruirlas. Es decir, si una caja ya no es necesaria en el escenario, si
que ser necesario liberar o destruir dicha caja para liberar recursos de la ejecucin. En las figuras
38 y 39 se pueden observar tanto el modelo 3D como el modelo fsico que detecta las colisiones
mediante 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 el
mismo. En ese caso se comprobar la ID del objeto en colisin y se liberarn los recursos de dicho
objeto. El cdigo que gobierna las colisiones es similar al caso de la garra en la gra y se muestra
en la figura 40.

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

3.4.6 PISTON

Se ha desarrollado una simulacin de un pistn neumtico. Dado que el prototipo de escenario


en 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 en


imagenes en la figura 41.

La estructura programada es simple. Varios objetos fsicos estticos y un nico bloque


dinmico/esttico. Cuando se dice dinmico/esttico es debido a que el bloque no es realmente
dinmico, sino esttico pero al moverse se comporta como dinmico cuando se ejecuta el sistema de
colisiones. 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 el
pistn.

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 pistn
mediante las variable correspondiente. Tras la actualizacin de posiciones del elemento, se hace
pasar por el motor fsico y sistema de colisiones. El truco que se ha utilizado para que se comporte
dinmicamente siendo esttico y que no se caiga el objeto fsico cbico por gravedad tiene que ver
con el propio sistema de colisiones.

En el apartado 3.1 se explic que el sistema de colisiones se basaba en profundidad de


penetracin y un movimiento proporcional a la penetracin. El objeto es esttico, luego en realidad
no importa que se le apliquen velocidades, aceleraciones y/o fuerzas, pues el motor fsico lo detecta
como esttico y no aplicar fuerzas, velocidades ni aceleraciones sobre l. La velocidad que se le
aplica 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 de
ejecucin y se calcula aproximadamente la cantidad de espacio que debe recorrer en cada uno de
los pasos. Es decir que entre un paso y otro se fuerza la posicin del objeto. Si existe otro objeto
dinmico, como una caja, cercano al pistn y se fuerza la posicin del pistn , ste penetrar en
la caja. Esta situacin ser detectada por el sistema de colisiones que se encargar de hacer los
movimientos correspondientes al objeto dinmico, en este caso la caja. De esta forma se consigue
el 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 DISEO E IMPLEMENTACION DEL SIMULADOR

Figura 43: Cdigo en C# para la simulacin del movimiento del pistn.

Basandose en el pistn se ha desarrollado tambin un pistn con dos pistones incorporados


reutilizando el cdigo del pistn. En las figuras 44 y 45 se muestran los modelos del piston de
doble actuacin.

Figure 44: Imagen del pistn doble en resposo sobre la cinta transportadora.

Simulador para control y automatizacin. 50 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

Figure 45: Imagen del pistn doble empujando una caja.

3.4.7 SENSORES DE BARRERA

Dado que se est hablando de simular una planta industrial, un elemento bsico que no debe faltar
es el sensor de barrera. Aunque son sensores muy simples, son muy utilizados y darn mucho juego
en el simulador para practicar con PLCs.

La implementacin final del sensor de barrera con la que se obtuvieron los mejores resultados
fue mediante el uso de un segmento de colisin. Este segmento, de longitud igual a la separacin
entre los elementos que forman el sensor ser el implicado en la deteccin de los objetos. En cada
iteracin de la aplicacin se comprueba si este segmento ha intersectado con alguno de los objetos
fsicos del escenario. En el caso de obtener una interseccin, el sensor se activa cambiando a true
el valor de una variable booleana que se utilizar para otros propsitos en el escenario.

Figure 46: Imagen del Sensor de barrera. Modelo 3D del Sensor con rayo.

Simulador para control y automatizacin. 51 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

a) b)

Figure 47: Imgenes del Sensor de barrera. a) Contacto lmite entre objeto y sensor activandose.
b) Objeto cercano sin colisionar con el sensor de barrera.

Figura 48: Cdigo C# que muestra como se detecta la colisin con el segmento y la comprobacin
de IDs.

En la figuras 46 y 47 se muestran capturas de pantalla del modelado 3D y funcionamiento del


sensor para objetos con diferentes posiciones. La porcin de cdigo relacionada con la deteccin
se muestra en la figura 48.

Dado que en el simulador desarrollado en este proyecto los nicos objetos dinmicos que existen
son las cajas, al detectarse una colisin se comprobar a que caja corresponde la ID del objeto
que ha colisionado con el segmento. En las colisiones se modifican los valores de los colores del

Simulador para control y automatizacin. 52 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

rayo y las luces de control para una mejor visualizacin por parte del usuario como se muestra en
la figura 48.

3.4.8 MONTACARGAS

Este elemento no se ha terminado de desarrollar completamente, aunque est practicamente


finalizado. Se ha programado con un objeto fsico cbico que ser el responsable de la subida
y bajada de elementos. El modelado 3D y fsico se muestran en las figuras 49, 50 y 51. Recordando
que no existen uniones mecnicas que mantengan los elementos unidos unos a otros, hay que tener
en cuenta que el objeto que debe subir y bajar carga estar inevitablemente bajo la fuerza de la
gravedad del motor fsico. Si se intentase hacer la simulacin mediante la adicin de velocidad,
aceleracin o fuerza en el eje vertical del objeto para que fuera capaz de subir y bajar un elemento,
nos encontraramos con situaciones no deseadas. El elemento encima de la plataforma no tiene
porque estar necesariamente en el centro, luego nuestro objeto, que no es ms que la plataforma,
se inclinara hacia los lados. No es un mtodo que proporcione buenos resultados.

Figure 49: Imagen del modelado 3D del montacargas detenido.

Simulador para control y automatizacin. 53 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

Figure 50: Imagen del modelado 3D del montacargas subiendo un objeto.

Figura 51: Imagen de la estructura fsica que conforma el montacargas.

Simulador para control y automatizacin. 54 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

Tras varias pruebas se utiliz la velocidad lineal en el eje vertical para realizar la simulacin.
La clave para evitar inclinaciones y efectos parsitos en la carga fue resetear el elemento movil en
cada una de las iteraciones. Al ejecutarse el mtodo Update del montacargas, se anulan las posibles
fuerzas, aceleraciones y velocidades, que se han grabado en sus variables internas, productos del
paso por el motor fsico y sistema de colisiones. Asimismo se reorienta el elemento y se le vuelve
a asignar la velocidad que debera tener. De esta manera se mantiene el realismo de la accin de
subida y bajada de la carga. En la figura 52 se muestra la parte del cdigo relacionada con la
activacin del actuador correspondiente y la actualizacin de la posicin de la plataforma.

Figura 52: 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.

3.4.9 ROBOT 5 GRADOS DE LIBERTAD

Al igual que en el caso del montacargas este elemento no se ha terminado de desarrollar


completamente, aunque est practicamente finalizado. Lo nico que falta por terminar de
programar es el mecanismo de agarre, aunque ya se ha planteado usar el mismo mtodo que
en el caso de la gra, al fin y al cabo en este caso la garra no deja de ser una pinza al igual que
en la gra. En la figura 53 se muestran capturas del brazo en 3D en diferentes posturas, y en la
figura 54 se puede observar el modelado fsico que se implementa en el motor para las colisiones.

El brazo se ha diseado siguiendo la estructura de una brazo real. Consta de un bloque cbico
fsico por cada una de las partes que lo componen, 4 ms la garra. El brazo se podra haber

Simulador para control y automatizacin. 55 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

programado utilizando las matrices de traslacin y la de rotacin, al igual que se hace de forma
terica, donde los ejes estn en las articulaciones, en los extremos de los elementos. El problema es
que en el motor fsico, los ejes de los elementos estn en el centro por lo que habra que trasladar
este punto hacia los extremos. En vez de realizar la conversin se decide programar la posicin de
cada una de las partes respecto de la anterior y partiendo desde cero.

Figure 54: Imgenes de los modelos fsicos del brazo de 5 grados. 4 elementos ms la garra.

En las figuras 55 y 56, se muestra el cdigo de la declaracin e inclusin en el motor fsico de


cada una de los bloques fsicos que componen el brazo. El brazo tendr una mobilidad de 180

Simulador para control y automatizacin. 56 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

a)

b) c)

Figure 53: Imgenes del brazo en 3 posiciones diferentes.

Simulador para control y automatizacin. 57 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

en cada una de las articulaciones. El modelado est basado en el Scorbot. El objetivo de aplicar
una masa elevada a cada una de las partes del brazo es porque se va a utilizar el mismo mtodo
que en el caso del pistn. Debido a que los movimientos de cada una de las partes tendrn varias
componentes, se hace dificil el control de la posicin sin que ocurran efectos parsitos debido a
la falta de unin mecnica fija, a la fuerza de la gravedad y resto de elementos del escenario. El
movimiento del brazo est totalmente basado en movimiento articular. Mediante cambios en las
variables articulares se aplicar la nueva posicin de cada una de las partes.

Figura 55: Cdigo en C# de los objetos fsicos y otras variables del brazo.

Se parte siempre de la base y se va subiendo, modificando las variables articulares y


consecuentemente su parte correspondiente, hasta llegar a la garra. Se realizan los clculos, segn
el valor de la variable de la articulacin, cual ser la nueva posicin del elemento en cuestin.
El punto que se est calculando es el punto central de la parte del brazo para despus poder
posicionarla en ese punto. En las figuras 57, 58, 59 y 60 se muestra el cdigo de los clculos que
se realizan para cada elemento. Si el actuador de la articulacin correspondiente est activado,
la velocidad de movimiento ser uniforme y siempre la misma. No se ha implementado ninguna
dinmica por el momento, al igual que con el resto de elementos. En cada iteracin la cantidad
de movimiento en la variable articular es constante. Como se conoce el aumento de cantidad,
se puede conocer facilmente mediante relaciones trigonomtricas cual ser la nueva posicin del
bloque fsico.

Una vez calculada la posicin, simplemente se sita el elemento en dicha posicin y se recalculan
las posiciones de los elementos superiores en funcin de la variable inferior. En caso de estar
activado algn otro actuador superior se realizara la misma operacin, pero eliminando los clculos
inferiores.

Lo que falta por programar en el brazo es el mecanismo de sujecin de la garra.

Simulador para control y automatizacin. 58 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

Figura 56: Cdigo en C# de la inicializacin y adicin al motor fsico de los objetos.

Figura 57: Cdigo en C# del control de la primera seccin del brazo. La seccin 0 es la base.

Simulador para control y automatizacin. 59 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

Figura 58: Cdigo en C# del control de la segunda seccin del brazo.

Figura 59: Cdigo en C# del control de la tercera seccin del brazo.

Simulador para control y automatizacin. 60 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

Figura 60: Cdigo en C# del control de la garra seccin del brazo.

3.4.10 CONEXION CLIENTE OPC - SERVIDOR OPC - PLC

Para esta aplicacin en pruebas, y como se ha comentado anteriormente, se ha optado por una
conexin no fsica. Es decir, para realizar la simulacin de la planta 3D con un programa escrito
para el PLC, no ser necesario el uso de un PLC real. Se utilizar el simulador de PLC que incluye
el software Unity Pro XL de Schneider Electric. Este simulador se conectar de forma local en
el mismo PC con el servidor de OPC de Schneider OFS. La conexin con el OFS se realizar a
travs del men de pestaas que incluye el simulador 3D. El cliente OPC que se ha integrado en la
solucin, est escrito en C#. Para ahorrar tiempo en el desarrollo de la aplicacin se ha utilizado
un cliente OPC libre de licencias en C#.

Aunque existen diversos clientes OPC escritos en este lenguaje, se descartaron por no
proporcionar el cdigo fuente o ser de pagos y no es el objetivo de este proyecto. En un futuro
se podra utilizar el conjunto de libreras de la OPC Foundation para el desarrollo de clientes
OPC optimizados para el simulador 3D. Durante la conexin del cliente con el servidor OPC, se
muestran el listado de variables que estn incluidas en los archivos de la programacin realizada
para el PLC con Unity Pro. Actualmente todas las variables que se permiten en el simulador 3D
son boolenas, true/false o 0/1 segn se prefiera. Lo comentado no implica que el OFS no admita
variables analgicas. Para ste escenario no se han implementado aunque si se implementarn en
futuras modificaciones de la aplicacin.

Para la conexin con el servidor OPC de Schneider, OFS (OPC Factory Server), se utilizar un
cliente OPC escrito en C# que se ha integrado en la solucin. El cliente esta basado DA o Direct
Access y se utiliza de forma directa en el mismo PC donde se encuentra tanto el servidor OPC

Simulador para control y automatizacin. 61 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

como el programa del PLC Unity Pro. Se disponen de dos botones en el cuadro de control para la
conexin y desconexin con el OPC.

Figura 61: Captura de pantalla del formulario de conexin Cliente - Servidor OPC.

El cliente OPC inicialmente se manejaba desde un formulario para la escritura y lectura de


variables. Se ha tenido que modificar parte del cdigo para que la escritura/lectura se realice
desde mtodos internos que sern llamados utilizando hilos pseudoparalelos desde el programa
principal. En Unity Pro las variables se envian al servidor OPC con la descripcin de item
Nombre_Proyecto!Nombre_variable. Sabiendo sto se puede localizar desde el cliente una
variable en concreto dentro del servidor OPC, para la escritura o lectura de una variable. En
este proyecto los actuadores se llamaran Axx y los sensores Sxx y Pxx. El significado y numeracin
de stos aparecen en el manual de usuario.

Existirn hilos de escritura y lectura, as como hilos prioritarios y secundarios, ver figuras 62
y 63. La creacin de hilos diferentes se basa en que variables se estn leyendo o escribiendo. Se
comprob tras varias pruebas que la lectura/escritura individual de actuadores y sensores en el
servidor OPC era lenta, en especial en el caso de la escritura en el OPC. La solucin escogida
que mejor resultado ofreci fue la lectura en bloque y la escritura individual. La lectura de todo
un conjunto de 20 actuadores lleva un tiempo aproximado de 30-40ms. Mientras que la escritura
individual de 1 nico sensor en el OPC puede llevar unos 15ms. El OPC utilizado parece ser
bastante lento en escritura y lectura. Por ello se necesitan hilos.

Simulador para control y automatizacin. 62 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

Figura 62: Cdigo del mtodo para la lectura de actuadores del servidor.

Figura 63: Cdigo del mtodo de escritura de sensores no prioritarios en el servidor OPC.

Simulador para control y automatizacin. 63 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

El hilo de lectura estar continuamente en ejecucin. Este hilo se detiene cuando existe algun
cambio en algn sensor. Entonces se toman todos los sensores que han cambiado de estado y se
escriben uno a uno.

En el simulador existen sensores prioritarios que corresponden a los sensores de barrera. Dado
que estos sensores son crticos pues dependen del paso de objetos dinmicos que cambian de
posicin, se debern escribir inmediatamente en el OPC para que el PLC reciba los datos y actue
la programacin de la planta en el PLC en consecuencia. En este caso la escritura del resto de
sensores se detendr para proceder a escribir los prioritarios, tras lo cual se volver a escribir por
donde se dejaron los sensores no prioritarios Sxx.

3.4.11 CUADRO DE CONTROL Y OPCIONES

Para el control de la aplicacin, tanto en modo manual como automtico, se ha diseado una
interfaz amigable formada por un cuadro de control dividida en pestaas. En cada una de las
pestaas se encuentran diferentes controles, actuadores, sensores y conexin de OPC, ver figura
64. En el cuadro de operacin a la derecha se encuentran los controles de activacin de modo
manual/automtico y otros que se pueden utilizar junto con variables que se declaren en el PLC.

La programacin es sencilla. Todo el cuadro est basado en texturas 2D que se renderizarn en


cada paso de ejecucin. Las texturas corresponden al cuadro en s y a los botones. Cada uno de
los botones se posiciona en base a los ejes que forman el formulario general donde est embebido el
simulador. En funcin de las caractersticas de ancho/alto de la ventana de la aplicacin la situacin
de los botones se mantiene siempre en el mismo sitio, es decir, no importa que se aumente el tamao
de la ventana, el cuadro permanecer con el mismo tamao y en la misma posicin, ver figura 66.

Para la deteccin de pulsado de botones se detecta la posicin en la ventana donde se ha


realizado el click de ratn. Cotejando la posicin del click con las posiciones de los botones se
detectar una coincidencia o no, y si es as se cambiar el estado del botn y su imagen. Con
respecto a los sensores solo hay que detectar de forma interna cambios en las variables booleanas
de los sensores. El cdigo para una parte de los actuadores se presenta en la figura 67.

Figura 65: Cdigo de la declaracin de variables que contendrn las imgenes para los elementos
del cuadro de control.

Simulador para control y automatizacin. 64 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

a)

b) c)

Figure 64: Imgenes del cuadro de actuadores de la aplicacin. a) Cuadro de actuadores, b) Cuadro
de sensores y c) Cuadro de conexin OPC.

Simulador para control y automatizacin. 65 de 86


3 DISEO E IMPLEMENTACION DEL SIMULADOR

Figura 66: Cdigo para posicionar los elementos en el mismo lugar sin importar el tamao de la
ventana.

Figura 67: Cdigo para la deteccin de pulsado de botones en la aplicacin. En este caso se
comprueban los 15 primeros actuadores.

Simulador para control y automatizacin. 66 de 86


4 ESCENARIO PROTOTIPO Y EDITOR DE ESCENARIOS

4 ESCENARIO PROTOTIPO Y EDITOR DE ESCENARIOS

4.1 ESCENARIO DESARROLLADO

La planta prototipo que se ha desarrollado para las primeras pruebas incluye algunos de los
dispositivos ms utilizados en la industria como pueden ser cintas transportadoras, gra y pistones.
En la Figuras 68, 69, 70 y 71 se muestran capturas del escenario.

El objetivo de la planta es la clasificacin y transporte de 3 tipos diferentes de cajas. La


clasificacin se realiza por tamao y para ello se har uso de un conjunto de sensores de barrera a
diferentes alturas para su clasificado. El objetivo de la Gra es tomar las cajas medianas y pasarlas
de una cinta transportadora a otra, mientas que las cajas grandes y pequeas pasarn por la cinta
giratoria que las enviar a sus correspondientes rampas de destino.

El escenario es conceptualmente simple, pero en el que se puede realizar una programacin


del PLC suficientemente compleja por los alumnos como para obtener un rendimiento ptimo del
funcionamiento de la planta. En este rendimiento se puede considerar, por ejemplo, nmero de
cajas procesadas por hora, nmero de cajas procesadas correctamente, errores producidos, tiempos
de funcionamiento de los dispositivos para calcular consumos, etc.

Figure 68: Captura de la planta de clasificado de cajas. Vista superior.

Simulador para control y automatizacin. 67 de 86


4 ESCENARIO PROTOTIPO Y EDITOR DE ESCENARIOS

Figure 69: Captura de la planta de clasificado de cajas.

Figure 70: Captura de la planta de clasificado de cajas.

Simulador para control y automatizacin. 68 de 86


4 ESCENARIO PROTOTIPO Y EDITOR DE ESCENARIOS

Figure 71: Captura de la planta de clasificado de cajas.

4.2 EDITOR DE ESCENARIOS

A lo largo del proyecto se ha hablado de las partes de la aplicacin, los elementos desarrollados y
las tcnicas utilizadas. Pero la parte ms interesante se ha mencionado al comienzo del proyecto,
cuando se coment el Worldbuilder. Se pretende que la aplicacin sea tan escalable y configurable
como sea posible. El desarrollo de todo el proyecto ha sido programado teniendo en cuenta que el
objetivo final es obtener un editor de escenarios.

El propsito del editor es que el usuario pueda disear diferentes plantas industriales segn
sea necesario. Por lo tanto, el software desarrollado proporcionara una caracterstica muy
interesante de escalabilidad. El editor tambin incluir todos los parmetros y opciones que son
interesantes cuando se realiza la simulacin de elementos industriales, tales como el tiempo de uso
de dispositivos, el error, la probabilidad de fallo, el tiempo medio entre reparaciones, etc. Todos
estos parmetros sern configurables por el usuario y permitir un uso ms eficiente y alargar la
vida del software.

El editor est en desarrollo, aunque que ya se ha obtenido los primeros resultados. La figura
72 muestra capturas de pantalla del editor. La programacin del editor es relativamente simple ya
que se se basa enteramente en el simulador desarrollado. Con esta otra aplicacin el usuario ser
capaz de seleccionar la posicin y ajustar los parmetros deseados de los elementos de la planta.
Esto proporcionar al usuario un entorno de programacin basado en formularios de edicin de
Windows con una ventana principal donde se puede ver el resultado de lo que se est diseando.

Simulador para control y automatizacin. 69 de 86


4 ESCENARIO PROTOTIPO Y EDITOR DE ESCENARIOS

El concepto de editor de escenarios no es realmente nuevo. Se ha utilizado durante muchos


aos en el mundo de los videojuegos para extender su vida y mantener a los jugadores activos.
Pero creemos que es un concepto interesante en el desarrollo tanto de los simuladores educativos
como para el desarrollo comercial de aplicaciones para el control, la automatizacin y procesos de
optimizacin.

Figure 72: Capturas de pantalla del Editor de Escenarios.

Simulador para control y automatizacin. 70 de 86


5 MANUAL DE USUARIO

5 MANUAL DE USUARIO
5.1 INSTALACIN

Para la instalacin de la aplicacin se seguirn los siguientes pasos.


1. Instalar XNAredist.msi.
2. Instalador OFS v3.31 en modo DEMO. Para ello solo hay que escribir DEMO en el apartado
Part Number cuando el programa de instalacin lo requiera. Si no se tuviera instalado
.NetFramwork 1.1, el instalador del OFS le pedir que lo instale. Aunque el paquete viene
incluido en el OFS v3.31, tambin se puede hacer desde windowsupdate.
3. Copiar la carpeta Sim3DAC. La ubicacin de esta carpeta es indiferente.

4. Instalacin de Unity Pro XL. Rellenar los campos necesarios, nombre etc. Cuando el
programa solicite el nmero de referencia y serie, se escoger de entre las posibilidades,
la ltima de todas referente a updateUnity. No es necesario instalar los drivers de
comunicaciones de Unity Pro pues son para conexines fsicas.

Sistemas Operativos:
1. Win XP, Win Vista. (32bits)
No se han encontrado incidencias en la ejecucin de los programas mencionados.
2. Win 7 (32bits)
Los siguientes archivos deben ejecutarse en modo Compatibilidad con Windows XP SP2.
OFS Factory Server.
OFS Configuration Tool.
Unity Pro.

3. Win 7 (64bits)
Se han visto errores en alguna distribucin de Windows 7 64bits. Aunque en otras como
Windows 7 Home Premium se ha realizado una instalacin correcta de los programas
comentados anteriormente. Es posible que no se pueda instalar el paquete .NetFramework
1.1 desde el instalador de OFS. En este caso se podra instalar via WindowsUpdate.

El modo de compatibilidad para los programas ser el mismo que en el caso de Windows
7(32bits).
5.2 CONFIGURACIN DE UNITY PRO
Antes de proceder a la configuracn del servidor OPC, se va a crear el proyecto en UNITY PRO,
donde realizaremos la programacin.

Al crear un nuevo proyecto, se seleccionar el dispositivo MODICON M340(BMX P34 2020


CPU 340-20 Modbus Ethernet) que se muestra en la figura 1.

Simulador para control y automatizacin. 71 de 86


5 MANUAL DE USUARIO

Figure 73: Captura de pantalla creacin de un dispositivo en OFS

Ahora se puede guardar el proyecto con el nombre que se desee, y pasar a la siguiente etapa de
la gua. La gua de programacin en UNITY PRO XL es otro documento aparte.

5.3 CONFIGURACIN OPC OFS 3.31

1. Ejecutar OFS Configuration TOOLS en la carpeta Schneider Electric\OFS\


2. Crear un nuevo dispositivo como se indica en la figura 2.

3. Una vez creado y nombrado el dispositivo se debern aplicar las propiedades que se muestran
en la imagen de la figura 3.
4. En el apartado Symbol Table File se debe indicar el fichero del programa *.STU que se ha
creado en Unity PRO XL para realizar la automatizacin de la planta. El archivo *.STU se
crea desde UNITY PRO, ser el archivo donde realizaremos la programacin, GRAFCET,
LD, etc de la planta. Este archivo debe estar creado previamente, aunque est vacio, para
incluirlo en las opciones de Symbol Table File.
5. Una vez se han terminado los pasos 1, 2 y 3, solo nos queda guardar la configuracin con
Save Configuration en la pestaa File.

Simulador para control y automatizacin. 72 de 86


5 MANUAL DE USUARIO

Figure 74: Captura de pantalla creacin de un dispositivo en OFS

Figure 75: Captura de pantalla parmetros de un dispositivo en OFS

Simulador para control y automatizacin. 73 de 86


5 MANUAL DE USUARIO

Figure 76: Escenario del Simulador. Pestaa Actuadores y cuadro de control.

5.4 DESCRIPCIN DEL SIMULADOR

Para lanzar el Simulador 3D, ejecutar el archivo Simulador.exe dentro de la carpeta Sim3DAC.

El simulador como se ve en la figura 4 contiene un cuadro de control con varias pestaas de


las cuales actualmente solo se utilizaran 3, Actuadores, Sensores y OPC. En la pestaa OPC
encontramos 2 botones, para la conexin y desconexin del servidor OPC.

Junto al cuadro principal se encuentra un segundo cuadro donde se pueden observar varios
controles, como Play, Stop, Pause, Reboot, Emergency y el activador de Automatico/Manual. En
esta versin en pruebas estn disponibles los botones Play, Stop y el activador Automatico/Manual.
Si el activador Automatico/Manual esta en posicin OFF, el simulador se encuentra en modo
Manual y se pueden utilizar los actuadores para activar los dispositivos del escenario. En caso
contrario, se encuentra en modo ON, y ser cuando est conectado al servidor OPC, y por tanto
no se permite un actuacin directa sobre la planta mientras la est controlando el PLC.

La navegacin por el simulador se realiza utilizando las teclas W,S,A,D (Delante, atras,
izquierda y derecha) y con el boton derecho del raton pulsado y moviendo el raton se puede hacer
girar la camara a voluntad del usuario. Tambin se dispone de una serie de vistas predefinidas a
las que se puede acceder con los botones flecha de la esquina superior derecha del simulador.

El escenario es un clasificador de cajas por tamaos. Esta compuesto por los siguientes
elementos:

Simulador para control y automatizacin. 74 de 86


5 MANUAL DE USUARIO

1. 2 Cintas transportadoras de 1 sentido


2. 1 Plataforma giratoria con giro de 90 grados y movimiento de rodillos en ambos sentidos.
3. Grua con 3 posiciones horizontales, 2 verticales, y garra.

4. 3 Pistones para posicionar las cajas pertinenetes en el punto de extraccin de la grua.


5. Rampas de salida y Zonas de envio.
6. Sensores de barrera para la deteccin y clasificacin de cajas.

5.5 OBJETIVOS DEL ESCENARIO

Exiten 3 tipos de cajas. Grande, mediana y pequea. El objetivo del escenario es enviar las cajas
grandes por la rampa que se indica en la figura 5, las cajas pequeas por la rampa que se indica en
la figura 6, y las medianas deben ser recogidas por la grua y soltadas en la segunda cinta. Haciendo
uso de los sensores dispuestos para la clasificacin deber programarse una serie de actuaciones
sobre los elementos de la tabla teniendo en cuenta los retrasos debido a la comunicacin, la cual
es complemtamente local en el PC.

Figure 77: Rampa de salida para las cajas grandes (DANGER escrito en laterales)

Simulador para control y automatizacin. 75 de 86


5 MANUAL DE USUARIO

Figure 78: Rampa de salida para las cajas pequeas

Simulador para control y automatizacin. 76 de 86


5 MANUAL DE USUARIO

5.6 DESCRIPCIN DE LOS ACTUADORES Y SENSORES DEL ESCENARIO

Los actuadores disponibles para este escenario son los siguientes:

Actuador Descripcin Funcionamiento


A00 Activador Cinta Tranpostadora 1 ON/OFF
A01 Activador Cinta Tranpostadora 2 ON/OFF
A02 Activador Angular Plataforma Giratoria ON/OFF
A03 Activador Lineal 1 Plataforma Giratoria ON/OFF
A04 Activador Lineal 2 Plataforma Giratoria ON/OFF

A05 A06 Ir a posicin


OFF OFF 1
OFF ON 2
A05, A06 Activadores Gra Horizontal
ON ON 3
ON OFF -
Ver Imagen 8

A07 Activador Subir Gra ON/OFF


A08 Activador Bajar Gra ON/OFF
A09 Activador Cerrar Garra Gra ON/OFF
A10 Activador Abrir Garra Gra ON/OFF
A11 Activador Piston Simple 1 ON/OFF
A12 Activador Piston Simple 2 ON/OFF
A13 Activador Piston Doble Empujar ON/OFF
A14 Activador Piston Doble Subir/Bajar ON/OFF

ON/OFF
(Para soltar ms
A15 Activador Aadir Caja al Escenario de una caja hay
que pasar antes
por OFF, ciclo
completo)

Table 2: Listado de Actuadores y descripcin.

Simulador para control y automatizacin. 77 de 86


5 MANUAL DE USUARIO

Figure 79: Posiciones y sensores de la gra.

Figure 80: Sensores de la Plataforma giratoria.

Simulador para control y automatizacin. 78 de 86


5 MANUAL DE USUARIO

Los sensores disponibles para este escenario son los siguientes:

Actuador Descripcin Funcionamiento


S00 Plataforma Giratoria en posicin 1 ON/OFF
S01 Plataforma Giratoria en posicin 2 ON/OFF
S02 Gra en posicin 3 ON/OFF
S03 Gra en posicin 1 ON/OFF
S04 Gra en posicin 2 ON/OFF
S05 Grua en posicin Arriba/Abajo ON/OFF
S06 Garra Cerrada/Abierta ON/OFF
S07 Pistn 1 Extendido ON/OFF
S08 Pistn 1 Recogido ON/OFF
S09 Pistn 2 Extendido ON/OFF
S10 Pistn 2 Recogido ON/OFF
S11 Pistn Doble Extendido ON/OFF
S12 Pistn Doble Recogido ON/OFF
S13 Pistn Doble Extendido (Abajo) ON/OFF
S14 Pistn Doble Recogido (Arriba) ON/OFF

Table 3: Listado de Sensores Normales y descripcin.

Los sensores que llamaremos prioritario disponibles para este escenario son los siguientes,
(ver las figuras 9, 10):

Actuador Descripcin Funcionamiento


P00 Sensor de Barrera 1 ON/OFF
P01 Sensor de Barrera 2 ON/OFF
P02 Sensor de Barrera 3 ON/OFF
P03 Sensor de Barrera 4 ON/OFF
P04 Sensor de Barrera 5 ON/OFF
P05 Sensor de Barrera 6 ON/OFF
P06 Sensor de Barrera 7 ON/OFF

Table 4: Listado de Sensores Prioritarios y descripcin.

Simulador para control y automatizacin. 79 de 86


5 MANUAL DE USUARIO

Figure 81: Sensores de barrera prioritario llegada y clasificacin de cajas.

Figure 82: Sensores de barrera para el envo de cajas a sus respectivas salidas.

Simulador para control y automatizacin. 80 de 86


5 MANUAL DE USUARIO

5.7 NORMAS PARA LA IMPLEMENTACIN DEL PROGRAMA DE


CONTROL EN UNITY PRO XL

Se recomienda que antes de empezar a programar en Unity Pro, se familiarice con el simulador
3D mediante el uso de los actuadores, para tener en cuenta que pasa por ejemplo al pulsar 2
actuadores que tengan relacin directa, como es el caso de Abrir y Cerrar Gra. Una vez se vean
las caractersticas de los actuadores y los sensores, cuando se activan y cuando se desactivan, ser
el momento para comenzar a programar el autmata.

Por la naturaleza de la versin de pruebas, as como de la programacin y la comunicacin,


existen retrasos en la escritura y lectura de las variables en el servidor OPC.

En la programacin del PLC en UNITY PRO XL, las variables se llamarn como en el simulador
AXX, SXX y PXX . Las variables para usar los botones STOP y PLAY, se llamarn STP
y RUN . Todas las variables sern de la clase BOOL. Estas son las variables con las que se
comunicarn el PLC y el Simulador. No obstante se pueden utilizar todas las variables auxiliares
que se requieran para obtener un buen rendimiento en el funcionamiento de la planta.

Antes se ha hablado de sensores prioritarios. Se llaman as pues al ser sensores de activacin por
paso de elementos, es crucial obtener su estado. Aunque de sto no se tiene que preocupar el usuario.
Solo se preocupar de su activacin o desactivacin, pero realizando los cambios pertinentes en
otras variables o estados del PLC inmediatamente.

Los sensores con nomenclatura SXX , permanecen siempre en un estado a lo largo del tiempo
hasta que se activan/desactivan y cambien de estado. No son crticos, como el caso de los
prioritarios. El actuador Automatico/Manual no se programa en el PLC, pues es exclusivo del
simulador.

El simulador est en fase de pruebas. Pueden encontrarse algunos errores con los modelos.
Se ha detectado un fallo de desconexin del simulador con el servidor OPC, al pulsar el botn
correspondiente, cuando se ha estado simulando junto con el servidor y el PLC un periodo de
tiempo largo. En caso de ocurrir, basta con cerrar la aplicacin y el Servidor OPC, y volver a
simular.

5.8 CONEXIN Y EJECUCIN PLC-OPC-SIMULADOR


Una vez se tiene un programa para el control de la planta, se realizarn los siguientes pasos:
1. Unity Pro debe estar ejecutandose antes que el servidor OFS.
2. Arrancar el simulador del PLC, generar/compilar el proyecto de Unity Pro y cargarlo en el
PLC. Mantener el PLC en STOP, que no empiece la ejecucin del programa cargado.
3. Ejecutar el servidor OPC OFS en modo prueba.
4. Ejecutar el simulador 3D.
5. Realizar la conexin del simulador con el OPC. Para realizar la conexin OPC solo pulsar
sobre el boton que se indica en la imagen a) de la figura 4 y aparecer un formulario como
se observa en la imagen b). Se escoger el servidor que se ha instalado Schneider-Aut OPC
Factory Server, y posteriormente, el dispositivo que se haya creado con el OFS Configuration
Tool.

Simulador para control y automatizacin. 81 de 86


5 MANUAL DE USUARIO

a)

b)

Figure 83: a) Imagen de la pestaa de conexin OPC, b) Imagen de los formularios de conexin.

Una vez que se ha selecionado el dispositivo, creado en el OFS Configuration Tool, y hayan
aparecido a la derecha las variables que se han creado en el proyecto *.STU en Unity Pro,
como se muestra en la figura 5, se eliminar el formulario pulsando la tecla Q, esto es
obligatorio para no tener ese formulario a la vista.

Simulador para control y automatizacin. 82 de 86


5 MANUAL DE USUARIO

Este paso puede tardar un poco segn el PC, y el nmero de variables totales que se hayan
necesitado. Es posible que parezca que se ha quedado colgado el OFS. Aunque no se ha
llegado a observar este comportamiento, si tras un par de minutos siguen sin aparecer las
variables, entonces si se dar por hecho que se ha quedado colgado.

Figure 84: Imagen de una conexin establecida entre OPC y Simulador.

6. Tras establecer la conexin entre el Simulador y el OPC Server, solo resta ejecutar el programa
cargado en el simulador de PLC de Unity Pro.
7. Para que el simulador 3D empiece a recibir datos, se debe pasar de manual a automatico
mediante el boton indicado en la figura 12. Se recomienda, a la hora de implementar el
programa en el PLC, utilizar las variables RUN y STP como entradas en el PLC, para
recibir en el PLC las ordenes de los botones PLAY y STOP del simulador.

5.9 MODIFICACIONES DEL PROYECTO EN UNITY PRO

En caso de hacerse una prueba de un programa realizado en Unity Pro con el simulador, se
prodecer como se ha comentado en el apartado anterior. Ser necesario realizar pruebas para
comprobar si la solucin es correcta. En caso de hacerse una prueba y no obtener el resultado
deseado, la solucin deber ser modificada. Para ello habr que desconectar primero el simulador
del Servidor OPC mediante el botn adecuado. Se comprueba que en el Servidor OPC el nmero de
clientes conectados es cero. Tras desconectar simulador 3D y Servidor OPC, pararemos la ejecucin
del simulador mediante el boton Stop que ofrece Unity Pro en la barra de herramientas. Tras

Simulador para control y automatizacin. 83 de 86


5 MANUAL DE USUARIO

esto, se realiza la desconexin de Unity Pro con el simulador de PLC. A partir de aqu se podr
modificar la solucin y volver a empezar con las pruebas. Siempre debe guardarse el proyecto
*.STU antes de realizar la prueba para que el servidor OPC disponga de las nuevas variables que
se hayan creado.
5.10 VIDEO DE EJEMPLO DE CONEXION Y FUNCIONAMENTO DE LA
PLANTA
Aunque nunca existe una nica forma de programar una planta, en el video Demo Planta que
se adjunta, se muestra como debera ser aproximadamente el funcionamiento de la planta. En el
video demostrativo tambin se incluye la conexin al servidor y la puesta en marcha
del programa en el PLC.

Simulador para control y automatizacin. 84 de 86


6 CONCLUSIONES Y FUTURAS LINEAS DE TRABAJO

6 CONCLUSIONES Y FUTURAS LINEAS DE TRABAJO

Se ha mostrado el desarrollo de un software flexible y escalable para realizar simulaciones de


maquinaria industrial en 3D, integrando en el mismo un sistema fsico para poder observar el
resultado de la simulacin sobre los objetos con los que interaccionarn los elementos industriales.
La simulacin se realiza sobre objetos rgidos modelados mediante polgonos, donde un modelo de
dinmica de colisiones es el responsable de simular la interaccin entre los diferentes objetos de
un escenario. Se han elaborado los elementos fundamentales para el desarrollo de una plataforma
didctica interactiva, sobre software libre. Actualmente solo se dispone de los elementos descritos
en este proyecto y de una planta simulada. Es por lo que se plantea la posible continuacin de
este trabajo para desarrollar nuevos elementos y terminar los dos dispositivos que se encuentran
inacabados, as como finalizar el editor de escenarios. De esta forma la aplicacin crecer
pudiendose utilizar para crear nuevos escenarios por parte de los alumnos y un mejor aprendizaje
de las tcnicas y mdulos de la programacin de PLCs.

Como comentario adicional, este proyecto se ha utilizado para la presentacin de dos artculos.
El primer artculo se presentar en las XXXII Jornadas de Automtica de la CEA celebradas en
Sevilla los das 7, 8 y 9 Septiembre de 2011. El segndo artculo fue aceptado y presentado en el
SICE 2012 Annual Conference celebrado los das 21, 22 y 23 de Agosto de 2012 en Akita, Japn.
Adems se realiz una presentacin del mismo en la sede de D+TEC, Asociacin de profesionales
de la tecnologa, el da 16 de Diciembre de 2012. (www.dmastec.org)

Adolfo J. Snchez del Pozo, Juan Manuel Escao Gonzlez, Luis Fernando Castao Castao:
Realidad Virtual en 3D para Automatizacin y Control. Actas de las XXXII Jornadas de
Automtica (Ja 2011). XXXII Jornadas de Automtica (Ja 2011). Sevilla. Universidad de
Sevilla. 2011.
del Pozo, A.S.; Escano, J.M.; Bordons, C. Simulator for control and automation using
an interactive and configurable 3D virtual environment. Proceedings of SICE Annual
Conference 2012 (ISBN: 978-4-907764-40-1, IEEE Catalog Number: CFP12765-DVD),
(2012/8/23, Akita, Japan), Page(s): 2268 - 2273.

Simulador para control y automatizacin. 85 de 86


7 BIBLIOGRAFIA

7 BIBLIOGRAFIA

[1] Crowe, C. T., Elger, D. F., Williams, B. C., Roberson, J. A.(2009): Engineering Fluid
Mechanics, 9th Edition. John Wiley & Sons, Inc. Chapter 11. Sections 11.2, 11.3.
[2] Kim, Y. J., Otaduy, M. A., Lin, M. C., Manocha, D. (2002): Fast Penetration Depth
Computation for Physically-based Animation. Symposium on Computer Animation - SCA , 2002.
[3] McCormick, B. W. (1979): Aerodynamics, Aeronautics, and Flight Mechanics. John Wiley
& Sons, Inc., New York. pp. 168-178.
[4] Millington, I. (2007): Game Physics engine development. Morgan Kaufmann Publishers.
Elsevier Inc. pp.69-71, 111-119.
[5] Mirtich, B. (2000): Timewarp rigid body simulation. In Proc. SIGGRAPH 2000, 193200.
[6] Nota de prensa. aDeSe. Balance econmico de la industria del videojuego 2010. Gabinete
de prensa de aDeSe: Marta Frau / Juan Gabriel Corral.
[7] Serway, R. A. , Jewett, J. W. (2004): Physics for Scientists and Engineers, 6th Edition, pp.
131-133.
[8] Stewart, D. E. (2000): Rigid-body dynamics with friction and impact. SIAM Review Vol.
42, No. 1, 339.
[9] Schneider Electric. Unity Pro. Program Languages and Structure. Reference Manual. April
2009

Simulador para control y automatizacin. 86 de 86