Sie sind auf Seite 1von 79

Diseño e implementación de un

sistema de llamada combinada para


una maqueta a escala de tres
ascensores usando dos PLC CJ1M de
OMRON

Proyecto Fin de Grado presentado para optar al Tı́tulo de


Ingeniero en Electrónica Industrial por
Álvaro Lacasa Majo
Bajo la supervisión de:
Dr. Emilio José Sánchez Tapia

San Sebastián - Donostia Diciembre, 2014


II
Resumen

El presente proyecto trata sobre la programación de una maqueta a escala de tres


ascensores existente en la Escuela de Ingenieros de San Sebastián (TECNUN) para la
implementación de una llamada combinada. Dicha maqueta consta de dos PLCs de
forma que un PLC controla dos cabinas y el otro controla a la tercera. Por ello, una parte
importante del presente proyecto ha sido establecer la comunicación entre dichos PLCs.
Dicha comunicación se ha elegido realizando una comparativa entre las tecnologı́as
Ethernet y Ethernet/IP para ver cuál se adapta mejor a este caso. En cuanto a la
programación, los PLCs CJ1M empleados de la marca OMRON están preparados para
utilizar el lenguaje Ladder, pero permite la programación en Texto Estructurado. Con ello
se busca averiguar si es posible una programación optimizada en Texto Estructurado
de las tres cabinas de forma combinada ante llamadas exteriores. Para completar el
sistema, la maniobra se monitoriza mediante un SCADA en el que gráficamente un
operario puede supervisar todo el proceso e interactuar con él.

III
IV 0. Resumen
Índice general

Resumen III

1. Introducción 1

1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2. Estado del arte 5

2.1. Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2. Tipos de actuadores encontrados en los ascensores . . . . . . . . . . . . . . 7

2.2.1. Elevadores de tracción eléctrica . . . . . . . . . . . . . . . . . . . . . 7

2.2.2. Elevadores hidráulicos . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3. Lógica de control de los ascensores . . . . . . . . . . . . . . . . . . . . . . . 10

2.3.1. Algoritmo convencional (Principio de control colectivo) . . . . . . . . 10

2.3.2. Lógica difusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3.3. Redes neuronales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3. Descripción del prototipo 15

3.1. PLC CJ1M (autómatas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2. Otros elementos que componen el prototipo . . . . . . . . . . . . . . . . . . 18

4. Interconexión de PLCs: Ethernet vs Ethernet/IP 23

5. Programación 31

5.1. Arquitectura del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

V
VI ÍNDICE GENERAL

5.2. Módulos del software de los PLCs . . . . . . . . . . . . . . . . . . . . . . . . 36

5.2.1. Posición de la cabina . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.2.2. Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.2.3. Apertura y cierre de puertas . . . . . . . . . . . . . . . . . . . . . . . 40

5.2.4. Respuesta ante llamadas . . . . . . . . . . . . . . . . . . . . . . . . . 42

5.2.5. Lógica empleada en la asignación de las llamadas exteriores a la


cabina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.2.6. Comunicaciones entre los PLCs . . . . . . . . . . . . . . . . . . . . . 46

5.3. Optimización del espacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

6. SCADA 53

7. Testeo y uso de autómata de simulación 59

8. Conclusiones y futuros trabajos 65

8.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

8.2. Futuros trabajos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66


Índice de figuras

1.1. Prototipo empleado en el Laboratorio de Robótica de la Escuela . . . . . . 2

1.2. Estructura que siguen los programas empleados de la marca OMRON . . 4

2.1. Primer ascensor accionado por una máquina. Derby, Inglaterra . . . . . . 5

2.2. Distribución de elevadores en rascacielos . . . . . . . . . . . . . . . . . . . 6

2.3. Esquema de un elevador electromecánico . . . . . . . . . . . . . . . . . . . 8

2.4. Elevador electromecánico sin cuarto de máquinas . . . . . . . . . . . . . . 9

2.5. Esquema de un elevador hidráulico . . . . . . . . . . . . . . . . . . . . . . . 10

2.6. Partes de una célula neuronal . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.7. Neurona artificial inspirada en una biológica . . . . . . . . . . . . . . . . . 13

3.1. Plataforma sobre la que se asienta el ascensor . . . . . . . . . . . . . . . . 15

3.2. Módulo CJ1M-CPU11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3. Rango de salida del módulo Mad42 (valores en hexadecimal) . . . . . . . . 17

3.4. Prototipos de ascensores de 4 plantas . . . . . . . . . . . . . . . . . . . . . . 18

3.5. Funcionamiento de interruptores reed ante un campo magnético . . . . . 20

3.6. Diagrama de las conexiones del prototipo . . . . . . . . . . . . . . . . . . . 21

4.1. Modificación de la dirección IP del PLC . . . . . . . . . . . . . . . . . . . . . 24

4.2. Modificación del nodo ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.3. Montaje de una red Ethernet/IP básica . . . . . . . . . . . . . . . . . . . . . 26

4.4. Red de dos PLCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.5. Funcionamiento de los tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

VII
VIII ÍNDICE DE FIGURAS

4.6. Colocación de las sondas del osciloscopio en los PLCs . . . . . . . . . . . . 28

4.7. Visualización en el osciloscopio de la entrada (señal 1) de un PLC y la


salida (señal 2) del otro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.1. Ciclo scan en un PLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5.2. Idea general de la programación GEMMA . . . . . . . . . . . . . . . . . . . . 33

5.3. Grafcet del modo mantenimiento . . . . . . . . . . . . . . . . . . . . . . . . 35

5.4. Grafcet del modo bomberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.5. Asignación de la posición en función de los sensores activados . . . . . . . 37

5.6. Grafcet que sigue el movimiento del motor . . . . . . . . . . . . . . . . . . . 39

5.7. Valores que toma la variable de la velocidad en la subida . . . . . . . . . . 40

5.8. Grafcet que sigue el movimiento de la puerta de cada cabina . . . . . . . . 41

5.9. Grafcet que da las órdenes al motor en función de los vectores ascensor y
ascensorext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5.10. Posibles posiciones de las cabinas A y B en función de la planta de la


llamada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

5.11. Posibles posiciones de las cabinas A, B y C en función de la planta de la


llamada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

5.12. Comunicación de datos que se modifican en ambos PLCs . . . . . . . . . . 48

5.13. Ejemplo de diferencia de espacio entre Ladder y Texto Estructurado . . . . 49

5.14. Ejemplo de diferencia de espacio entre contadores Ladder y Texto Estruc-


turado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

6.1. SCADA del movimiento de las tres cabinas automáticamente . . . . . . . . 54

6.2. Cabinas B y C en modo mantenimiento . . . . . . . . . . . . . . . . . . . . . 55

6.3. SCADA del estado de las alarmas . . . . . . . . . . . . . . . . . . . . . . . . 56

6.4. SCADA de las variables controlables de la maniobra . . . . . . . . . . . . . 57

6.5. SCADA de los sensores que se encuentran funcionando en ese momento . 57

7.1. Creación de una pantalla de simulación . . . . . . . . . . . . . . . . . . . . 60

7.2. Simulación inicial de sólo dos cabinas . . . . . . . . . . . . . . . . . . . . . 61

7.3. Simulación completa de la maniobra de las tres cabinas . . . . . . . . . . . 62


Índice de tablas

5.1. Organización de las variables del programa . . . . . . . . . . . . . . . . . . 34

5.2. Localización y lenguaje de la posición de las cabinas . . . . . . . . . . . . . 37

5.3. Relaciones entre los posibles valores dados al motor, los voltajes que
producen y las velocidades que generan . . . . . . . . . . . . . . . . . . . . 38

5.4. Localización y lenguaje del control del motor . . . . . . . . . . . . . . . . . . 40

5.5. Localización y lenguaje de la apertura y cierre de las puertas . . . . . . . . 42

5.6. Localización y lenguaje de la lógica empleada para atender las llamadas . 44

5.7. Localización y lenguaje de la posición de las cabinas . . . . . . . . . . . . . 46

5.8. Localización y lenguaje de la programación encargada de la comunicación 48

5.9. Ahorro de pasos eliminando la condición =TRUE . . . . . . . . . . . . . . . 50

5.10. Ahorro de pasos eliminando la condición =FALSE . . . . . . . . . . . . . . . 50

IX
X ÍNDICE DE TABLAS
Capı́tulo 1

Introducción

1.1. Motivación

Desde la revolución industrial, la producción en masa ha ido evolucionando para


ser más competente en precios y cantidad de producción. Fueron apareciendo diferentes
tecnologı́as que permiten automatizar los procesos y ser más eficientes en la producción.
Se buscó un sistema en el que aplicar un automatizado industrial. Buscando por
TECNUN, se llegó hasta el prototipo de un ascensor con dos cabinas controladas por
un autómata programable de la marca OMRON.

En concreto, este tipo de PLC (Programmable Logic Controller) es programado


normalmente mediante lenguaje Ladder que se asemeja a un circuito eléctrico, pero
también es posible emplear Texto Estructurado que se puede equiparar a “C” [1]. A lo
largo del Grado, se le ha dado mucha importancia al lenguaje en “C” y sus derivados,
por lo que Texto Estructurado es un lenguaje en el que el autor se siente más cómodo a
la hora de realizar programaciones complejas.

Se ha querido llevar a la práctica toda la información disponible sobre los diferentes


lenguajes de programación de los PLCs. Se sabe que Ladder es más eficiente que Texto
Estructurado, pero se va a intentar utilizar este segundo para conocer de primera mano
las limitaciones en la programación de estos controladores.

La mejor forma de conseguir tal información es realizando pruebas, y qué mejor


forma de probarlo que realizando la automatización del medio de transporte que
probablemente sea el más utilizado: el ascensor. A lo largo de la memoria se pueden
ver los problemas encontrados y las soluciones propuestas a la hora de desarrollar el
programa de la maniobra de las cabinas. Éste se ha elaborado en su gran mayorı́a en
Texto Estructurado, pero no todo, debido a que estos autómatas sólo permiten el uso de
ciertos recursos únicamente en Ladder.

Con el fin de hacer un estudio más profundo, se utilizó otra maqueta de un


ascensor de una cabina para ası́ establecer una comunicación para la realización de
una maniobra combinada entre las tres cabinas. Entre todas las tecnologı́as existentes
para realizar la conexión entre ambos PLCs, se eligieron Ethernet y Ethernet/IP, de las
que posteriormente se realizó una comparativa con el fin de determinar cuál de ellas

1
2 Chapter 1. Introducción

garantizaba la mejor conexión.

Con objeto de desarrollar un automatizado completo, se llevó a cabo un SCADA


(Supervisory Control And Data Adquisition) a través del cual, un operario puede
supervisar e interactuar con la maniobra que se está ejecutando. De esta forma, se
consiguen maximizar todas las funcionalidades que ofrecen los PLCs de OMRON.

1.2. Objetivos

El objetivo general de este Proyecto es realizar el control de la posición de tres


elevadores mediante el empleo de dos autómatas de OMRON y la supervisión de todo
el proceso mediante un SCADA. Buscando lograr el correcto funcionamiento de los
elevadores en llamada combinada se han empleado los programas: CX-Programmer
(gestor de la programación de los autómatas), CX-Designer (simulador del programa)
y CX-Supervisor (interfaz hombre-máquina). Para ello, se han puesto en práctica los
conocimientos obtenidos sobre la automatización de procesos industriales.

Figura 1.1: Prototipo empleado en el Laboratorio de Robótica de la Escuela

Se han empleado prototipos de tres ascensores ya existentes en la Escuela (Figu-


ra 1.1), alrededor de los cuales se desarrolla todo el proyecto con los siguientes objetivos
particulares:

• Determinar qué tecnologı́a de comunicación se adapta mejor. Dentro de toda la


Section 1.2. Objetivos 3

gama de módulos de comunicación de OMRON (EtherCAT, EtherNet, EtherNet/IP,


CompoNet, DeviceNet, CompoBus/s), se han elegido las tecnologı́as de EtherNet y
EtherNet/IP para realizar la comparativa al ser las tecnologı́as más comúnmente
utilizadas en la Escuela.

• Desarrollar el código de control, buscando la forma más eficiente de programarlo


entre las diferentes opciones que permite CX-Programmer. Las opciones que permite
OMRON en sus autómatas son: Ladder (diagrama de relés), Texto Estructurado (ST)
o por SFC (Secuential Function Chart)

• Crear un simulador, en CX-Designer, para el programa de control mientras se


encuentra en las fases de desarrollo, con el fin de evitar averı́as en el prototipo.

• Añadirle la funcionalidad completa con su correspondiente monitorización, es decir,


realizar el software hombre-máquina (HMI, Human Machine Interface). Realizar
dicho SCADA con el programa CX-Supervisor.

• Testeo: Comprobar que todas las partes funcionan como se habı́a propuesto.

El documento se estructura en varios capı́tulos. En el primer de ellos se puede


encontrar el estado del arte en el que se habla de la evolución de los sistemas de
elevación, ası́ como las diferentes tecnologı́as que se pueden aplicar a la programación
de los ascensores (2). Después se describe el prototipo que se ha empleado para
la realización del proyecto con todas sus caracterı́sticas técnicas (3), continuando
con una comparativa de dos tecnologı́as distintas de comunicación y explicando el
funcionamiento de la seleccionada para la comunicación de los PLCs (4). En los
siguientes capı́tulos se puede encontrar cómo se ha llevado a cabo la creación del sistema
de elevación, separado en función principalmente del programa que se ha empleado para
la realización del mismo. Por ello, todo lo referente a CX-Programmer empleado en la
programación de los PLCs se encuentra en el capı́tulo 5, el SCADA realizado con CX-
Supervisor en el 6 y las pruebas realizadas para comprobar el correcto funcionamiento
antes de verlo funcionar fı́sicamente elaborado en el CX-Designer se ve en el capı́tulo 7.

Para comprender mejor el documento, hay que conocer la estructura (ver Figura 1.2)
en la que se ejecutan los programas empleados a lo largo del proyecto. La programación
de los PLCs se ha llevado a cabo mediante el programa CX-Programmer. Una vez
realizada, se puede optar por transferir el programa a un PLC real o simular el
funcionamiento de un PLC en el ordenador. Cuando se transfiere el programa a un
PLC real, éste comenzará a ejecutarse1 pudiendo monitorizar la maniobra que realiza
desde un programa realizado en CX-Supervisor. En el caso de que se desee comprobar
el funcionamiento del programa sin introducirlo en el PLC real, CX-Programmer arranca
CX-Simulator que crea un PLC virtual donde ejecutar dicho programa. En la simulación
que realiza sólo se ven cambiar los valores de los registros dentro de CX-Programmer, por
lo que para ver la simulación más gráficamente se crea una interfaz gráfica diseñada en
CX-Designer. En esta ventana interactiva se crean los actuadores que compondrán el
PLC real con el fin de poder simular las alteraciones que sufrirı́an en la realidad. CX-
Designer simplemente lee o modifica los valores que tiene el PLC virtual, por lo que para
obtenerlos se conecta al CX-Simulator. En cuanto a la interacción hombre-máquina, se
1
El PLC ha de estar en modo monitorización o en modo run para ejecutarse.
4 Chapter 1. Introducción

emplea el CX-Supervisor para crear el SCADA de la maniobra. Éste puede monitorizar el


PLC real o el PLC virtual. Para esté último, necesita que este el PLC virtual funcionando,
es decir, el CX-Simulator funcionando.

CX-Programmer

CX-Designer CX-Simulator PLC Real

CX-Supervisor

Figura 1.2: Estructura que siguen los programas empleados de la marca OMRON

Para concluir este proyecto, en el último capı́tulo se han descrito las conclusiones
finales del proyecto y los posibles trabajos futuros que se pueden realizar.
Capı́tulo 2

Estado del arte

2.1. Historia

A lo largo de la historia, se han ido construyendo edificaciones cada vez de mayor


altura dificultando, ası́, su acceso. Para poder elevar los materiales, objetos o personas
hasta dichos lugares con la menor energı́a fı́sica posible, el hombre se ha visto en la
necesidad de crear elementos de elevación. Ası́ es como aparecen las primeras formas
de elevación [2]. En el comienzo eran muy rudimentarias, como es el caso de las
palancas, pero posteriormente fueron perfeccionándose surgiendo las grúas elevadoras
propulsadas por personas o por acción del agua. Más adelante, se fue introduciendo
el motor con la invención de la máquina de vapor rotatoria y los motores eléctricos
rotatorios (Figura 2.1). Paralelamente a las mejoras del motor, se inició la teorı́a de la
seguridad del pasajero en los ascensores, siendo Elisha G. Otis el pionero.

Figura 2.1: Primer ascensor accionado por una máquina. Derby, Inglaterra

Actualmente, gran parte de la población vive o trabaja en grandes estructuras

5
6 Chapter 2. Estado del arte

debido en parte al fervor por construir el edificio más alto del mundo, o meramente
por cuestiones de espacio debido al crecimiento de la población. Es en estas grandes
edificaciones donde se pueden encontrar sistemas elevadores muy seguros y con una
gran eficacia a la hora de mover un gran número de personas.

A la hora de implantar un sistema de elevación vertical en un edificio, son varios los


aspectos a tener en cuenta para elegir la combinación que mejor se adapte. Algunos de
los más importantes serı́an: el número de pisos, el número de personas que lo emplearı́a
y el tipo de edificio que sea (oficinas o residencial. . . ). Por ejemplo, si se va a implantar
un sistema de elevación en un bloque residencial de pocas alturas, se colocará una sola
cabina que llegará a todas las plantas y tendrá una lógica de control convencional (2.3.1).
Por el contrario, en un edificio de oficinas con muchas alturas el abanico de posibilidades
en la distribución de los ascensores se amplı́a. A continuación se describen algunas de
ellas.

En el caso de edificios de menos de 50 alturas, se pueden emplear ascensores que


paren en todas las plantas. Al contrario, en edificios de más de 50 alturas, se colocan
varios vestı́bulos en los que hay ascensores que van directos para que se pueda llegar
con más rapidez a la última planta. Como se aprecia en la Figura 2.2, se colocan varios
ascensores a los que se les asigna un rango de alturas diferentes a los que llegar. Por
ejemplo, si una persona desea ir al piso 132, primero tendrá que coger el ascensor que le
lleve directo al segundo vestı́bulo en la planta 100 para allı́ coger otro que le transporte
a la 132.

Figura 2.2: Distribución de elevadores en rascacielos

En este tipo de ascensores se suele encontrar en cada planta un dispositivo que


organiza automáticamente el tráfico de los ascensores. La persona selecciona el piso al
que se quiere dirigir y una pantalla le indica qué ascensor debe coger.
Section 2.2. Tipos de actuadores encontrados en los ascensores 7

Los elevadores Twin (gemelos) son sistemas de elevación en el que trabajan 2


cabinas simultáneamente por el mismo hueco. El principal objetivo de esta idea, que
a primera vista puede parecer una locura, es la de ahorrar espacio eliminando uno de
los huecos. Se pueden encontrar dos casos en el que se aplica esto:

• Individuales: Las dos cabinas circulan por el mismo hueco, una independiente de
la otra, con un sistema de control inteligente que evita las colisiones entre ambas
cabinas consiguiendo rendimientos similares en la mitad de espacio.

• Paralelos: Son dos cabinas acopladas una encima de la otra, por lo que se mueven
al unı́sono, siendo su funcionamiento bastante sencillo: dependiendo de si el
destino final de un usuario es una planta par o impar, se introducirı́a en la cabina
inferior o en la superior. La pequeña desventaja es que si la persona se encuentra
en una planta impar y necesita ir a una par, se ve obligado a subir o bajar un piso
para poder alcanzar su destino.

Ambos casos están pensados para trayectos de más de 50 metros de altura y con
un volumen significativo de gente y viajes entre plantas, como en edificios corporativos.
Por lo general, este tipo de ascensores no se emplean para sustituir 2 huecos en 1, sino
más bien como mı́nimo 4 en 2. Al disponer de varias opciones, se emplea un sistema de
llamada en el que introduces la planta de destino y por medio de una pantalla te indica
en qué ascensor debes montarte.

Dependiendo de la estructura del edificio y del número de pisos, se puede disponer de


diferentes actuadores que permiten el movimiento de la cabina o cabinas por el hueco.

2.2. Tipos de actuadores encontrados en los ascensores

2.2.1. Elevadores de tracción eléctrica

El movimiento de la cabina se genera gracias a un motor eléctrico del que se


transforma su movimiento rotacional en movimiento vertical. Generalmente disponen
de un contrapeso cuyo peso es el mismo que el de la cabina vacı́a para ası́ controlar
mejor el movimiento de ésta. Evita la necesidad de un motor muy potente para poder
subir el ascensor cargado y que el descenso sea más fácil de controlar.

Se utilizan diferentes tipos de motores eléctricos según la necesidad o las normativas


del paı́s donde se instalan. Se pueden encontrar:

• Una velocidad: En muchos paı́ses se ha prohibido su uso en nuevas construc-


ciones debido a su falta de precisión en las paradas ya que la llegada a los pisos
seleccionados se efectúa con demasiada rapidez.

• Dos velocidades: Son motores trifásicos de polos conmutables que proporcionan


a la cabina dos velocidades de movimiento, uno rápido y otro lento. Cuando se
8 Chapter 2. Estado del arte

Figura 2.3: Esquema de un elevador electromecánico

traslada entre plantas se mueve a máxima velocidad con el fin de minimizar el


tiempo de estancia en el ascensor. En cambio, al aproximarse a una planta con
llamada, ralentiza su velocidad para aumentar la precisión de la parada.

• Variación de frecuencia: Mediante un variador de frecuencia se logra cambiar la


velocidad del motor y de esta forma los viajes que se realizan son más confortables.
En la salida y en la llegada a una planta, acelera y decelera respectivamente
haciendo que sea prácticamente imperceptible el movimiento de la cabina logrando
una gran precisión en la parada.

• Generadores: La eficiencia energética está a la orden del dı́a, y esto hace que los
motores, además de subir y bajar la cabina de un modo agradable para el usuario,
ahora también generen energı́a. En este caso, el contrapeso pesa un poco más que
la cabina. Ası́ se consigue que, cuando está la cabina subiendo y vacı́a, genere
electricidad; si se montan uno o dos usuarios el peso es prácticamente el mismo
por lo que el esfuerzo que tiene que realizar el motor es mı́nimo, mientras que
cuando está la cabina llena y descendiendo, vuelve a generar energı́a. Este tipo de
motores están más orientados a bloques de viviendas, pero variando el lastre del
contrapeso puede orientarse para otro tipo de edificios.

A la hora de instalar un ascensor, el edificio en el que se va a colocar ha de tener


un hueco por donde moverse, pero además, debe disponer de un cuarto de máquinas
colocado normalmente en la parte superior del hueco. La maquinaria necesaria para
mover el ascensor (motor y controles) ocupa mucho espacio y pesa mucho por lo que,
Section 2.2. Tipos de actuadores encontrados en los ascensores 9

además, se ha de contemplar la carga que debe soportar la estructura. Esta necesidad


estructural de disponer de un espacio extra es una clara desventaja ya que ese espacio
podrı́a ser utilizado en otros fines o simplemente ser un ahorro en materiales para la
constructora del edificio.

Actualmente existe la posibilidad de instalar un ascensor sin la necesidad de un


cuarto de máquinas gracias a la creación de motores más pequeños y eficientes, y
también, al avance de la tecnologı́a electrónica la cual mejora el control de la cabina
en menor espacio. Este tipo de ascensores son ideales para construcciones antiguas
donde no se dispone de un hueco pensado para alojar un ascensor y mucho menos de
su cuarto de máquinas.

Figura 2.4: Elevador electromecánico sin cuarto de máquinas

2.2.2. Elevadores hidráulicos

El movimiento de la cabina se realiza gracias a un pistón accionado por una bomba


que inyecta aceite a presión por unas válvulas hasta el pistón (ver Figura 2.5). Sólo se
consume energı́a al elevar el ascensor, porque al descender simplemente tiene que abrir
las válvulas controladamente para liberar presión en el pistón. Por lo general, tiene varias
desventajas como es el consumo eléctrico del motor, ya que es cuatro veces mayor que en
los de tracción eléctrica (sección 2.2.1). Pero sólo consumen en la subida y esto hace que,
en conjunto, este consumo eléctrico sea el doble aproximadamente. Otro inconveniente
es que son lentos y no serı́an muy apropiados en edificios con gran número de plantas.
Frente a esto, se encuentra algo realmente positivo y es que son los más seguros. Esto es
debido a que, aunque las válvulas que controlan la entrada y salida del aceite del pistón
se estropeen, tienen un caudal máximo que, si falla, hace que el descenso sea mucho
más lento que si se rompieran los cables en los elevadores con tracción eléctrica.
10 Chapter 2. Estado del arte

Figura 2.5: Esquema de un elevador hidráulico

2.3. Lógica de control de los ascensores

Con la llegada de los primeros ascensores públicos para personas, también llegó el
problema de cómo hacer que vaya a la planta deseada. Para ello, se introdujo el
personaje del ascensorista en quien recaı́a la decisión de hacia dónde era mejor dirigirse
ante múltiples llamadas. Más adelante, se introducen los ascensores con botoneras
automáticas. Todos ellos eran, simplemente, ascensores convencionales dotados de
memoria. De éstos no se tardó en evolucionar a sistemas inteligentes, que realizan la
maniobra lo más eficientemente posible.

A la hora de controlar un único ascensor, la lógica es muy sencilla: el sistema sólo ha


de memorizar todas las llamadas y atenderlas teniendo en cuenta la dirección que lleva
en ese momento el ascensor.

En un edificio en el que se dispone de varios elevadores, la lógica de control comienza


a complicarse. Para intentar dar solución a los diferentes casos, se han elaborado
diversas teorı́as, como por ejemplo las redes neuronales, el principio de control colectivo,
el algoritmo RL (Reinforcement lerning). . .

2.3.1. Algoritmo convencional (Principio de control colectivo)

Es el algoritmo más empleado en sistemas de transporte vertical sencillo como


edificios residenciales de pocas plantas y con poco volumen de viajes. Se basa en el
principio de proximidad, es decir, que ante un conflicto entre dos ascensores por atender
una llamada, va el que se encuentre más próximo [3].

Es muy empleado por la facilidad de implementación, pero tiene el inconveniente


de no ser eficaz. Se podrı́a decir que los ascensores están continuamente luchando
por atender las llamadas, lo que puede provocar que, en horas de mayor afluencia de
personas, las cabinas se aglutinen en una zona del edificio, e induciendo a un largo
Section 2.3. Lógica de control de los ascensores 11

retraso en atender llamadas de aquellos lugares con menos necesidades.

2.3.2. Lógica difusa

La vida es confusa y difusa, es decir, la forma de procesar la información de nuestro


alrededor puede tener diferentes interpretaciones en función de distintos parámetros.
Un ejemplo de ello es que un dı́a caluroso en invierno, no es lo mismo que un dı́a
caluroso en verano [4]. La definición de dı́a caluroso es imprecisa, depende de la época
del año, de la localización en la que nos encontramos y de muchos otros parámetros que
inconscientemente nos hacen decir que un dı́a es caluroso.

Siguiendo este razonamiento en el problema de la lógica de los ascensores, se


encuentran muchos parámetros que deberı́an influir a la hora de asignar las paradas
de los ascensores. Además del parámetro anteriormente mencionado (principio de
proximidad) de la distancia más pequeña a la llamada, hay otros parámetros igualmente
importantes a tener en cuenta como pueden ser:

• tiempo de espera de los pasajeros,

• trayecto de los pasajeros,

• peso que le da a la llamada,

• distancia del viaje,

• consumo de los elevadores,. . .

Para la ejecución de la lógica difusa se requiere definir unas entradas (como las
anteriormente mencionadas), las cuales influirán posteriormente en la toma de decisión.
A estas entradas, y para cada llamada, se asigna una importancia (baja, media o alta)
que aplicando una serie de fórmulas, nos da una salida que representa la prioridad
que tiene un ascensor sobre el resto y pudiendo, de este modo, asignar la llamada al
ascensor con la prioridad más alta.

2.3.3. Redes neuronales

Como otras muchas teorı́as, ésta tiene su origen en la emulación de la naturaleza.


El objetivo es buscar solución a los problemas más complejos, no como una secuencia
de pasos, sino como la evolución de unos sistemas de computación capaces de razonar,
pensar y aprender por sı́ mismos. Esta búsqueda nos lleva inevitablemente al cerebro
de los seres humanos que cumplen con todas las caracterı́sticas mencionadas, e incluso
más. El cerebro es la principal diferencia que poseemos con respecto al resto de seres
vivos y es lo que nos hace ser propiamente personas.

A continuación se explica brevemente el funcionamiento del cerebro de los seres


humanos, centrado en las diferentes partes que influyen en la teorı́a de las redes
neuronales. [5]
12 Chapter 2. Estado del arte

El cerebro está compuesto por un conjunto de células nerviosas que, por sı́ solas,
son inútiles pero en conjunto, al interaccionar unas con otras, son una herramienta
muy potente. Un solo cerebro humano posee más neuronas que todas las estrellas
del universo y es dicha interacción entre todas las células nerviosas, la que nos da la
facultad de pensar, razonar, movernos, tener emociones y todas las caracterı́sticas que
nos hacen ser personas. En cada acción que tiene que procesar no intervienen todas las
células, sino que las diferentes tareas son procesadas por diferentes regiones de toda la
masa neuronal, como por ejemplo andar, hablar, imaginar o la simple tarea de procesar
las imágenes que nos llegan del sentido de la vista.

Figura 2.6: Partes de una célula neuronal

Está claro que hoy en dı́a conseguir simular esta inmensidad de neuronas con su
posterior acción (dar un paso, mover la boca) es prácticamente imposible. Pero siguiendo
con la premisa anterior de las regiones, se podrı́a desarrollar una red neuronal que
realizara una pequeña acción determinada. Por consiguiente, antes de realizar una red
hay que estudiar el proceso más simple que actúa, la neurona. La fisiologı́a de una
neurona individual está compuesta principalmente por 3 partes: dendritas, cuerpo de la
célula y axón. Figura 2.6

• Dendritas: De forma simple, sin meterse en biologı́a, su función principal es la de


transportar la información de una neurona a otra. Gracias a esta membrana se
produce el intercambio de información con su posterior resultado. Hay dendritas a
la entrada (pegados al cuerpo de la célula) y a la salida (en el axón).

• Cuerpo de la célula: Puede tener uno o dos núcleos que se encargan de procesar
la información y dar una respuesta.

• Axón: Se encarga de enviar la respuesta de la célula a todas las neuronas


conectadas a ella. Del cuerpo de la célula sale una ramificación más larga que el
resto, rodeada (en la gran mayorı́a de las neuronas) por una capa aislante llamada
vaina de mielina y terminada por dendritas. La capa aislante está interrumpida en
Section 2.3. Lógica de control de los ascensores 13

varios puntos por los nodos de Ranvier. La respuesta de la neurona viaja por las
vainas que tienen que despolarizarse, por lo que la información va a lo largo de
la fibra de forma discontinua. Las vainas no pueden volver a despolarizarse hasta
pasado 1 milisegundo (retardo sináptico), que es el tiempo que tarda en volver a su
estado de reposo, limitando la frecuencia de transmisión de los impulsos nerviosos
a unos 1000 por segundo.

El proceso quı́mico que se produce en la célula nerviosa se puede asemejar a un


circuito electrónico ya que la información que se transmite son impulsos eléctricos. Al
tratarlo como un organismo computacional, estamos suponiendo que las neuronas son
binarias, es decir, o bien están activadas o bien desactivadas. Por lo tanto, el circuito
eléctrico equivalente serı́a un procesador (cuerpo de la célula) programado para activar
o desactivar una salida (axón) en función de unos parámetros de entrada (dendritas)
proporcionados por otros procesadores (otras neuronas). El esquema de esta neurona
artificial quedarı́a como la de la Figura 2.7.

Salida de otras Cuerpo de la


Sinapsis Axón
neuronas célula

X1 W1

X2 W2 ∑ Y

Xn Wn

Función de Función de
Entradas Pesos Salidas
propagación activación

Figura 2.7: Neurona artificial inspirada en una biológica

Después de todo lo explicado anteriormente, viene a la cabeza una pregunta clave:


¿cómo decide el cuerpo de la célula (el procesador) el estado de la salida? Detrás de
esta pregunta, hay una base muy simple. La neurona clasifica la información que recibe
de las diferentes neuronas a las que está conectada dándoles un peso, una relevancia.
En el peso se encuentra el conocimiento que poseen las redes neuronales artificiales.
Posteriormente, se realiza el sumatorio de todas las entradas multiplicadas por sus
correspondientes pesos. A este proceso se le llama función de propagación y se puede
ver en la Figura 2.7. A continuación pasa a la función de activación, donde se acota el
valor devuelto por el factor de propagación para darle valores entre 0 y 1 a la salida.
Para la explicación, estas salidas se han usado entre 0 y 1, pero normalmente se suelen
acotar entre -1 y 1 por cuestiones matemáticas.

Esta base es seguida por varias teorı́as que tratan las diferentes formas de dar valores
a los pesos, porque no importa lo bien que esté realizada nuestra red neuronal si los
pesos no son los correctos.

La conexión de estas neuronas artificiales simples consigue resolver diversos proble-


mas relacionados, por ejemplo, con el reconocimiento de formas, patrones, predicción,
codificación, optimización o control entre tantas otras aplicaciones. Aplicándolo al caso
14 Chapter 2. Estado del arte

particular de los ascensores, concretamente a la forma más eficiente de mover la cabina


para coger y dejar gente, existen múltiples estudios con resultados muy prometedores.

Sin ir muy lejos, se pueden encontrar estudios sobre el control de la cabina del
ascensor con respecto al modo de distribución. En el programa realizado en uno
de los estudios [6], la red neuronal artificial es capaz de aprender sobre la marcha
realizando modificaciones en los pesos de las entradas de las neuronas. De esta forma
consiguen que el ascensor se adapte a la demanda especı́fica del edificio en el que se
encuentra instalado. En los resultados del estudio se puede ver que inicialmente (cuando
está aprendiendo) su efectividad es menor que usando otros mecanismos diferentes a
las redes neuronales, pero a partir de un número de llamadas realizadas, el ascensor
se vuelve mucho más eficaz. Con ello han demostrado que se acortarı́an los tiempos
de espera gracias a que el programa pronostica su futura posición y llamadas que se
realizarán.
Capı́tulo 3

Descripción del prototipo

Con el fin de reflejar las tareas que realizan los autómatas programados, se han
empleado dos prototipos a escala de laboratorio que reproducen de manera simplificada
el funcionamiento de tres ascensores. Reproducen la instalación real que se colocarı́a
en un edificio de cuatro plantas (Figura 3.1), siendo 0 la planta más baja y 3 la planta
más alta. A partir de ahora, el prototipo compuesto por dos ascensores se va a llamar
ascensorAB (Figura 3.4a) y el prototipo simple que alberga un ascensor, ascensorC
(Figura 3.4b).

Figura 3.1: Plataforma sobre la que se asienta el ascensor

3.1. PLC CJ1M (autómatas)

El control de los ascensores se realiza mediante la programación de 2 PLCs


(Programmable Logic Controller) modulares de la marca OMRON, modelo CJ1M-CPU11-

15
16 Chapter 3. Descripción del prototipo

ETN. Esta controladora puede ser conectada por el puerto Serial o por el puerto Ethernet
a un PC para su posterior introducción del programa (Figura 3.2). En este caso, se utiliza
el puerto Serial para volcar los programas y posteriormente monitorizar el proceso, y
el puerto Ethernet como puente de enlace entre los dos PLCs para el intercambio de
información.

Figura 3.2: Módulo CJ1M-CPU11

Las necesidades de los dos prototipos son diferentes, ya que uno va a tener la mitad
de entradas y salidas que el otro. A pesar de esto, el ascensorAB sólo tiene un módulo
más de entradas que el ascensorC, con lo que todos los módulos que forman los dos
PLCs serı́an:

• CJ1W-ETN21 (ETN21Mode): Se utiliza para poder usar las comunicaciones por


Ethernet. A pesar de estar incluido en el módulo principal, se le trata como
unidad aparte a la hora de programar el autómata. En el capı́tulo 4 se precisa
el funcionamiento de este módulo.

• CJ1W-MAD42 (Analog I/O Unit Input): Es un módulo que dota al PLC de entradas
y salidas analógicas, y se utiliza para controlar los motores. Como dispone de
múltiples modos de operación, hay que activar las que se vayan a utilizar. Si se
quiere controlar la velocidad de la cabina mediante un motor, necesitamos un
voltaje de salida positivo o negativo (puesto que va a subir o a bajar) y nada más,
por lo que sólo se activará la salida analógica dejando el resto de funcionalidades
desactivadas. El rango de valores que se han de cambiar vienen dados por la
Figura 3.3; éstos fluctuarán entre -10 VDC y 10 VDC.

• CJ1W-OC211 (Relay Output Unit): Salidas digitales. En el caso del ascensorC sólo
se utiliza para indicar acciones encendiendo los led que incorpora el módulo. En el
ascensorAB, además de indicar, puede controlar el motor.

• CJ1W-ID211 (DC Input Unit): Entradas digitales. Son entradas que varı́an en
función de los diferentes sensores.
Section 3.1. PLC CJ1M (autómatas) 17

Figura 3.3: Rango de salida del módulo Mad42 (valores en hexadecimal)

• CJ1W-CT021 (High-speed Counter Unit): Es un contador de alta velocidad que


da la posibilidad de añadir un encoder para medir la velocidad. No se ha utilizado
en este caso.

Con el fin de poder interactuar con todos los módulos que se pueden incorporar
al PLC de OMRON y de proporcionar al programador lugares donde trabajar, la CPU
dispone de distintas áreas de registros. A continuación se detallan las empleadas en el
proyecto:

• CIO: Área de intercambio de datos (CIO 0 - CIO 6143), es decir, de comunicación


entre los diferentes módulos y el programa de la CPU. Para que funcionen todas las
partes conectadas del prototipo, se han utilizado:
– AscensorAB:
◦ Entradas digitales: CIO 1 (botones) y CIO 2 (interruptores reed1 ).
◦ Salidas digitales: CIO 0 (sólo empleado para indicar si las puertas están
abiertas y para la posibilidad de usar el control digital de los motores).
◦ Salidas analógicas (Mad42): CIO 2000 (inicialización de las salidas), CIO
2001 (motor B) y CIO 2002 (motor A).
◦ Bus CPU: CIO 1567.14 (bit que indica si hay conexión entre los dos PLCs)
– AscensorC:
◦ Entradas digitales: CIO 0 (botones e interruptores reed).
◦ Salidas digitales: CIO 1 (sólo empleado para indicar si la puerta está abier-
ta).
◦ Salidas analógicas (Mad42): CIO 2000 (inicialización de las salidas) y CIO
2002 (motor C).
◦ Bus CPU: CIO 1567.14 (bit que indica si hay conexión entre los dos PLCs)
• Área de trabajo (WR): Área de variables volátiles del sistema para uso y disfrute
del programador (W0 - W511).
1
Es un sensor que detecta campos magnéticos cercanos. Consta de dos filamentos muy próximos entre
sı́ encerrados en un tubo de vidrio que reaccionan ante la presencia de un campo magnético. Cuando están
los contactos abiertos se cierran, pero si estaban cerrados se abren.
18 Chapter 3. Descripción del prototipo

1.
Mot
or 2.
Fuent
e 3.
PLC 4.
Ri
el
es
1.
Mot
or

PLANTA3 2.
Fuent
e
PLANTA3

4.
Ri
el
3.
PLC
5.
Ampl
ica
dor
es PLANTA2
PLANTA2

9.
I
nter
rupt
or
r
eed
6.
Bot
oner
a
PLANTA1 5.
Ampl
ica
dor
PLANTA1
7.
Cabi
na

9.
I
nter
rupt
or
8.
I
manes 8.
I
manes
r
eed 6.
Pul
sador
es
PLANTA0
PLANTA0

7.
Cabi
na

(a) AscensorAB (b) AscensorC

Figura 3.4: Prototipos de ascensores de 4 plantas

• Área de retención (HR): Área de variables retentivas, que permanecen aún


después de un corte de corriente (H0-H1535).

• Área de memoria de datos (DM): Mantiene el estado ante fallos (D0-D32767). Se


emplea para la configuración de las comunicaciones entre PLCs.

• Área de temporizadores: Lugar donde se almacenan los temporizadores utilizados


(T0-T4095).

3.2. Otros elementos que componen el prototipo

Debido a los recursos empleados en los prototipos, se necesitan varias fuentes de


alimentación. Éstas se describen brevemente a continuación.

• Fuente CPU: Con el fin de alimentar la CPU del autómata (descrito en la sección
3.1), se emplea la fuente de alimentación PA202 de la marca OMRON. Sus
caracterı́sticas técnicas son:

– Entrada: 100-240 VAC, máximo de: 40 A y 120 Hz


– Salida: 5 VDC, 2.8 A

• Fuente de entradas y salidas: Los relés de entrada y salida del PLC funcionan a 24
V. A diferencia de otras fuentes de tensión de OMRON que, aparte de alimentar la
Section 3.2. Otros elementos que componen el prototipo 19

CPU son capaces de alimentar las entradas y salidas, la PA202 no tiene salidas para
tal propósito. Esto induce a la necesidad de emplear otra fuente de alimentación.
En este caso se ha empleado la fuente MDR-20 de la marca Mean Well con las
siguientes caracterı́sticas:

– Entrada: 100-240 VAC, 50-60 Hz


– Salida: 5 VDC, 1 A

• Amplificador para el motor: El módulo de salida MAD32, proporciona una


salida de -10 V a 10 V. Para no dañar este módulo y proporcionar al motor la
potencia requerida en cada ocasión, se añade un amplificador entre ambos. El
amplificador usado es el LSC 4-Q-DC servoamplifier de la marca Maxon Motor
cuyas caracterı́sticas técnicas son:

– Tensión de funcionamiento: 12-30 VDC


– Entrada: -10 V a 10 V
– Salida: máximo de 30 VDC, 2 A

Tiene varias formas de funcionamiento: compensador IxR, regulador del voltaje,


regulador de corriente, control de velocidad con encoder, control de velocidad con
tacómetro DC,. . . También se puede regular el rango del voltaje que entra: de -3.9
V a 3.9 V o de -10 V a 10 V. En este caso, el amplificador trabaja en el modo de
regulador del voltaje y acepta un rango de valores de -10 V a 10 V puesto que es lo
que llega desde el módulo Mad42 del PLC.

Los amplificadores son los encargados de dar potencia a los motores. Éstos son
bidireccionales a los que posteriormente se les transforma su movimiento rotacional en
desplazamiento vertical para las cabinas. En el ascensorAB, se tienen dos motores (uno
para cada cabina) de 24 VDC con una velocidad a máxima potencia de 80 rpm, mientras
que en el ascensorC el motor es también de 24 VDC pero con una velocidad a máxima
potencia de 47 rpm. La diferencia de revoluciones por minuto, hace que la cabina C vaya
más despacio que las cabinas AB. Dado que con estas reproducciones de ascensores
a escala de laboratorio simplemente se quiere probar el correcto funcionamiento de
las llamadas, no se tendrá en cuenta esta pequeña diferencia de velocidades entre las
cabinas.

Siguiendo con la premisa anterior, para simular las llamadas es necesario saber
en qué posición se encuentra la cabina. Al no ser necesaria una cabina completa, se
ha utilizado una caja de plástico unida al motor mediante un cable que permite el
desplazamiento vertical, para ir indicando visualmente la posición en la que se encuentra
la cabina en todo momento.

Visualmente se sabe la posición, pero para lograr que el autómata conozca la


ubicación de la cabina, se han empleado interruptores reed (3.5). Estos interruptores
están colocados por parejas en cada planta de tal modo que cuando están los dos
activados significa que se encuentra en el piso, mientras que si sólo está uno de los
dos, significa que está saliendo de la planta ya sea hacia arriba o hacia abajo. El
funcionamiento de estos interruptores es muy simple: cuando se les acerca un campo
20 Chapter 3. Descripción del prototipo

magnético, se activan (conducen corriente). Esto se debe a que están formados por dos
piezas conductoras muy próximas entre ellas pero que no se tocan hasta que mediante
magnetismo se chocan y conducen. Para provocar este campo magnético, la cabina
tiene colocados dos imanes separados a la misma distancia que los dos interruptores
indicadores de una planta. Por lo tanto, en definitiva se conoce la posición que tiene la
cabina gracias a la activación o desactivación de estos interruptores.

NO SI

Figura 3.5: Funcionamiento de interruptores reed ante un campo magnético

Como el fin de este prototipo es la de atender correctamente las llamadas que se


produzcan, son necesarios unos mandos o botones fı́sicos que simulen las llamadas
que se realizarı́an desde el interior de la cabina y desde el exterior de la misma en cada
planta de un ascensor real.

Con el fin de guiar la cabina a lo largo de su trayecto por su desplazamiento a través


del hueco, se dispone de dos rieles a cada lado de la cabina.

En el ascensor AB también se dispone de un módulo digital con el que controlar el


motor. En función de la salida que active el PLC, el módulo proporciona un voltaje de ±5
VDC o ±10 VDC al motor. En este proyecto, no se ha empleado debido a que restringe
funcionalidad con respecto a la salida analógica proporcionada por el módulo Mad32
descrito anteriormente.
Section 3.2. Otros elementos que componen el prototipo 21

AscensorC AscensorAB
Fuente
MDR-20
Fuente
PA202
Fuente
Serial PA202
CJ1M-CPU11
C Ethernet Amplificador
CJ1M-CPU11 A
Conexión
M Amplificador Ethernet
Mad42 Ethernet M
Amplificador
Mad42
OC211 M
Botones
Módulo
OC211 digital B
Sensores ID211
reed
ID211 Botones
CTO21
ID211 Sensores
Reed
Fuente
MDR-20 CTO21

Figura 3.6: Diagrama de las conexiones del prototipo


22 Chapter 3. Descripción del prototipo
Capı́tulo 4

Interconexión de PLCs: Ethernet vs


Ethernet/IP

Como son dos PLCs que han de conectarse entre sı́, hay que buscar una tecnologı́a
adecuada para realizar la unión de los dos PLC con el fin de que trabajen como si fuera
uno solo. Para ello, los autómatas programables de OMRON admiten diversidad de tipos
de conexiones: EtherCAT, EtherNet, EtherNet/IP, CompoNet, DeviceNet, CompoBus/s.
Dado que las redes más famosas y más usadas hoy en dı́a son Ethernet y Ethernet/IP
(basado en Ethernet), se ha realizado una comparativa entre las dos tecnologı́as con el
fin de determinar cuál se adapta mejor al caso de la comunicación de los dos prototipos
de ascensores.

El nombre Ethernet viene del concepto fı́sico del éter1 (éther) [7] y de red (net). Se
trata de una red LAN correspondiente a la capa fı́sica del modelo OSI cuyo éxito se basa
en su sencillez y la posibilidad de alcanzar una transferencia de datos de 10 Gbit/s.
Fue diseñado por Bob Metcalfe y David Boggs en 1970 con la intención de unir un
ordenador con una impresora. La comunicación debı́a de ser de alta velocidad puesto
que la información a enviar a la impresora era de gran tamaño. Hay que tener en cuenta
que la impresora se asemejaba a las impresoras láser de hoy en dı́a.

Este sistema, ideado en 1970 y mejorado en la actualidad, comparte el mismo


principio. Básicamente consiste en un protocolo de conexión que simula un diálogo entre
dos personas. Cuando se inicia una conversación entre dos individuos, primero va el
saludo con la posterior contestación a éste por parte del otro personaje. A continuación,
el primero que ha empezado la conversación expone el tema que le ha llevado a iniciar
la conversación, al que el personaje que está escuchando responde si ha comprendido
el asunto. Tras ratificar el buen entendimiento de la cuestión tratada, se despiden. Lo
mismo ocurre en la transmisión Ethernet, la cual primero comprueba que no haya otro
dispositivo conectado para establecer la conexión (el saludo inicial). Una vez que el otro
dispositivo le ha dado el visto bueno para que comience el envı́o de datos, comienza a
transferir la información. Cuando el mensaje enviado ha sido correctamente recibido, el
receptor envı́a una confirmación y cierra la conexión.

1
Hipotética sustancia extremadamente ligera que se creı́a que ocupaba todos los espacios vacı́os como
si fuese un fluido y por el que viajaban las ondas electromagnéticas. Gracias al fracaso del experimento de
Michelson y Morley, se asentaron las bases de la teorı́a de la relatividad de Einstein.

23
24 Chapter 4. Interconexión de PLCs: Ethernet vs Ethernet/IP

En este tipo de transmisiones pueden producirse colisiones de datos interfiriendo


en el mensaje final. Por ello, implementaron un protocolo (CSMA/CD) de detección de
colisiones y de acceso al medio. Por un lado, antes de enviar información escucha el
canal y si está libre envı́a los datos, en caso contrario se mantiene a la espera de que se
desocupe. Por otro lado, tiene un sistema que detecta cuando se produce una colisión
esperando un tiempo aleatorio antes de volver a enviar la información.

Para la configuración de la red es muy importante conocer las direcciones IP de los


diferentes dispositivos que se van a conectar. Dichas direcciones han de pertenecer a la
misma red para que se puedan conectar entre sı́. Las pruebas realizadas y la conexión
entre los PLCs de los ascensores se han realizado bajo la misma red: 10.10.10.XX. Al
trabajar bajo la misma subred: 255.255.255.0, cambiando las XX por valores entre 0
y 255 se consigue especificar el dispositivo. Si se desea cambiar la dirección IP de un
PLC, desde CX-Programmer hay que ir a la parte izquierda a tabla de entradas y salidas
y posteriormente a la unidad Ethernet. En la ventana emergente se puede cambiar la
dirección IP del PLC y la máscara de red (ver Figura 4.1).

Figura 4.1: Modificación de la dirección IP del PLC

Cuando se finaliza, hay que transferir los cambios realizados al dispositivo clicando
sobre Transf.(de PC a unidad). Importante que para todos los ajustes que se realicen en
el PLC, este ha de estar en modo programación.

Sólo con definir la IP no es suficiente para establecer la comunicación. Hay que


definir qué nodo empleará la tarjeta de red Ethernet, ya que un mismo PLC puede tener
diferentes módulos de comunicación pero cada uno tiene un número de nodo distinto.
Mediante CX-Integrator se definen los nodos que va a tener el PLC. Se puede acceder a
través de CX-Programmer clicando en Herramientas  Configuración de red. Al iniciar
CX-Integrator, aparece una ventana preguntando por la forma en la que se va a conectar
al PLC. Se elige Serial Port puesto que es mejor realizar ésta configuración desde el
puerto serie. La siguiente ventana es para especificar el tipo de red que vamos a montar
pero para la red Ethernet no interesa por lo que se pulsa en Cancelar. Una vez que no
aparecen más ventanas, hay que ir a Herramientas  Iniciar tabla de rutas donde se
nos abrirá una ventana como la de la Figura 4.2. En la pestaña Vista principal se puede
ver un esquema de cómo están distribuidos los nodos, mientras que en la pestaña Vista
de tabla se pueden modificar. El SIOU es el nombre que le da OMRON a las unidades
25

asignadas a cada módulo2 . Por lo tanto, en SIOU hay que escribir el valor de la unidad
en la que se encuentra la red Ethernet y en red local el número de nodo asignado. Como
se aprecia en la Figura 4.1 y en la 4.2 la unidad asignada para el módulo de Ethernet,
en este caso, es la 1 por lo que en SIOU hay que escribir 1 y establecerle un nodo, que
en este caso se le ha concedido el nodo 2.

Figura 4.2: Modificación del nodo ethernet

Al tratarse de una comunicación entre dos PLCs, se han asignado el mismo nodo
a ambas unidades Ethernet para evitar confusiones. En el capı́tulo 5 se describe con
más detalle el código que hay que implementar en los PLCs para poder realizar la
comunicación mediante Ethernet.

En el caso de la red Ethernet/IP, en el que IP significa Industrial Protocol, también


corresponde a la capa fı́sica del modelo OSI y en lı́neas generales es muy parecido a
Ethernet pero son protocolos incompatibles entre sı́. La principal diferencia que hace
incompatibles a estos protocolos es que Ethernet/IP es un bus de campo con capacidad
de conexión en tiempo real y está pensado para usarse en entornos industriales.
Se puede definir tiempo real como la interacción de un sistema informático con su
entorno fı́sico respondiendo a los estı́mulos del entorno dentro de un plazo de tiempo
determinado.

La conclusión principal tras estos razonamientos es que el módulo Ethernet/IP


realiza las mismas funciones que Ethernet y, además, funciona en tiempo real, lo que
permite una interacción más segura del PLC con el entorno. Pero para el caso que se
está tratando, puede ocurrir que al ser de una simple conexión entre 2 PLC, la red
Ethernet sea suficientemente rápida como para considerarla tiempo real. Esto pasarı́a
por ejemplo con un termómetro que envı́a su temperatura cada medio minuto: puede
considerarse que funciona en tiempo real ya que la temperatura de una habitación no
varı́a muy rápido. De poder considerarse tiempo real, se evitará la necesidad de añadir el
módulo adicional de Ethernet/IP al PLC puesto que Ethernet viene integrado en el CJ1M.
2
La unidad de cada módulo es asignado mediante el disco selector que se encuentra fı́sicamente en cada
módulo.
26 Chapter 4. Interconexión de PLCs: Ethernet vs Ethernet/IP

Para la realización de las pruebas, se emplearon dos PLC existentes en la Escuela que
disponı́an de los módulos Ethernet/IP y de Ethernet (que viene integrado con la CPU).

La configuración básica para una red Ethernet/IP consiste en un switching hub3 que
comunica la unidad Ethernet/IP del PLC al ordenador (Figura 4.3). Gracias al empleo del
switching hub se pueden realizar conexiones virtuales punto a punto, necesarias para la
comunicación en tiempo real. Como en todo intercambio de datos, es necesario conocer
a quién van dirigidos, es decir, que todos los miembros de la red han de tener asignado
una dirección IP estática para poder interactuar correctamente con el medio.

Figura 4.3: Montaje de una red Ethernet/IP básica

Lo primero de todo es asignar a cada PLC de la red una IP estática de la forma


comentada anteriormente. A continuación, hay que configurar la red Ethernet/IP de
los PLCs que se van a conectar, para lo que se ha de emplear el programa Network
Configurator que se encuentra dentro del paquete de CX-One de los programas de
OMRON. Una vez arrancado el Network Configurator, hay que realizar los siguientes
pasos:

• Hay que indicar que se está creando una red Ethernet/IP desde el menú Option 
Select interface  Ethernet I/F.
• Conectarse a dicha red desde Network  Conect y seleccionando la IP del ordenador
desde el que se está realizando la configuración.
• Una vez conectado, se añaden los dispositivos que van a pertenecer a la red
seleccionando su IP (previamente fijada) desde Network  Upload. En la figura 4.4
se ve una red de dos PLCs.
• Clicando dos veces seguidas en uno de los dispositivos que aparecen, se accede al
menú para añadir los tags y tag set (explicados a continuación).

Una vez configurada la red, hay que tener en cuenta que las comunicaciones en
Ethernet/IP son cı́clicas y se realizan mediante tags (tags Data Links) Figura 4.5. Un tag
3
Hub (concentrador): envı́a la información de un PC a todos los PC conectados a la red, puede haber
colisiones. Switch-hub (conmutador): artilugio con la inteligencia suficiente para establecer un puente de
union entre dispositivos, eliminando las colisiones.
27

Figura 4.4: Red de dos PLCs

es una conexión entre una posición de memoria de un nodo remoto con una posición
del nodo local. Los tags se agrupan en tag set. Un tag set crea una única conexión entre
dos nodos Ethernet/IP para el intercambio de información. La comunicación es entre
tag sets, no entre tags.

Los tags se pueden configurar como salida (Target) o como entrada (Originator).
Una entrada sólo puede estar conectada a una salida, mientras que una salida puede
conectar a varias entradas. El Originator es el que realiza la llamada al Target pidiendo
los datos y el Target se limita a dárselos.

Figura 4.5: Funcionamiento de los tags

El resultado obtenido utilizando la tecnologı́a Ethernet/IP es la simultaneidad de


28 Chapter 4. Interconexión de PLCs: Ethernet vs Ethernet/IP

todos los envı́os sin esperar a que se termine el ciclo scan 4 del PLC, una vez especificado
el tiempo de refresco de los datos y por ser una conexión punto a punto. Con lo cual se
podrı́a decir que los puntos están conectados permanentemente.

En el caso de la red Ethernet es un poco diferente, OMRON ofrece Function Blocks4


que permite la comunicación sin necesidad de tener apenas conocimientos sobre ellas.
El principal problema es la configuración a través del programa, ya que se ha de esperar
a que termine el ciclo scan para que la información se transmita y sólo se puede enviar
o recibir un paquete de datos en cada ciclo.

Para comprobar el tiempo que tarda en enviarse la información, se emplearon dos


PLCs del laboratorio y un osciloscopio electrónico. A uno de los PLCs se le introdujo un
programa muy simple en el que la función send enviaba constantemente el estado de
sus entradas digitales a las salidas digitales del otro PLC. Conectando el osciloscopio
como se muestra en la Figura 4.6 y utilizando la función tigger para congelar la imagen
cuando se produzca el cambio, podemos observar el retraso que se produce en el envı́o.
En la Figura 4.7 se muestra uno de los ensayos en el que la señal 1 es la entada al
PLC que envı́a los datos y la señal 2 es la salida del PLC que los recibe. Para cambiar el
valor de la entada se ha empleado un interruptor externo que al activarlo muestra en el
osciloscopio un cambio en el voltaje de 0 a 24 V. En la salida, el cambio que se produce
es de 24 a 0 V, porque cuando no está activada la diferencia de potencial entre la sonda
y la referencia es de 24 V. Monitorizando estos cambios y después de sucesivos ensayos,
se comprobó que se producı́a un retraso en la salida respecto de la entrada de entre 14.5
ms a 18 ms aproximadamente.

Sonda 1 Switching-hub Sonda 2

PLC 1 PLC 2
Ethernet

Ethernet

8K
24 V Entrada Salida
24 V
Digital digital

Figura 4.6: Colocación de las sondas del osciloscopio en los PLCs

Esta medida no es del todo precisa debido al rebote producido por el interruptor, pero
se ha considerado despreciable ya que normalmente es menor que 1 ms y las medidas
que sufrı́an un retraso mayor por este motivo se desechaban. Este rebote se podrı́a
haber solucionado si en vez de enviar el estı́mulo activando la entrada digital del PLC,
se hubiera activado la salida virtualmente (es decir, desde el ordenador) y ésta fuese el
estı́mulo que hiciera cambiar la salida del otro PLC.
4
Se explicará en el capı́tulo 5
29

Como medida válida se coge una media de 15 ms de retraso por ser un valor
razonable, ya que 10 ms se emplean en el ciclo scan y el resto es el tiempo entre que se
produce el cambio en la entrada y el fin del ciclo scan. Es decir, mientras el programa
se encuentra en ejecución, recibe el cambio en la entrada. Esta variación en la entrada
no afecta al programa hasta que no termina el ciclo scan en el que se encuentra (tiempo
variable). Cuando termina el ciclo, vuelve a ejecutarse el programa, pero esta vez con
las variables de entrada actualizadas y, por lo tanto, preparadas para enviar. Pero una
vez más, hasta que no termina el ciclo (tiempo de 10 ms desde que ha empezado el ciclo
hasta que lo termina) no se ejecuta la orden de enviar la información. Posteriormente,
tenemos el tiempo que tarda en enviarse el mensaje y de actualizarse la salida del otro
PLC, pero este último se produce instantáneamente sin esperar al ciclo scan porque la
variable es directamente la salida.

Figura 4.7: Visualización en el osciloscopio de la entrada (señal 1) de un PLC y la salida


(señal 2) del otro

Resumiendo, de los 15 ms medios de retraso 10 ms son debidos al ciclo scan y los 5


ms restantes debidos al momento en el que se activa el interruptor más el tiempo en el
envı́o de la información.

Con todos estos datos sobre la mesa, se decidió que, a pesar de que el retraso fuese
de más de 15 ms, no superarı́a los 25 ms (dos ciclos scan más algo del envı́o), por lo que
para la comunicación entre los 2 prototipos de ascensores se puede considerar que la
comunicación es en tiempo real. Por este motivo y por el expuesto anteriormente (no es
necesario añadir más componentes a los prototipos) se empleó el protocolo Ethernet.

Puesto que simplemente son dos los ascensores que hay que conectar, la conexión se
ha realizado directamente utilizando un cable de Ethernet con un crossover (cruce) que
une las salidas de uno con las entradas del otro para evitar el empleo de un switch.
30 Chapter 4. Interconexión de PLCs: Ethernet vs Ethernet/IP
Capı́tulo 5

Programación

Antes de comenzar la programación, hay que conocer la función a la que se van a


dedicar los ascensores, ya que es distinta la función que desempeñarı́an, por ejemplo,
en un bloque de oficinas que en uno residencial. Para el caso de los prototipos, se
ha supuesto que los ascensores se encuentran en un bloque residencial, es decir,
las personas que se encuentran en el exterior de la cabina y llaman al ascensor se
considerará que desean bajar, exceptuando en la planta baja que se imaginará que
pretenden subir.

Una vez definido el modo de funcionamiento, y antes de explicar el código empleado,


hay que conocer un dato importante del modo en el que se ejecuta el programa en
los autómatas de OMRON; se trata del ciclo scan comentado anteriormente. Como su
nombre indica, es una secuencia de comandos que se ejecuta cı́clicamente y en un
tiempo determinado. Como se puede ver en la Figura 5.1, los pasos que ejecuta el ciclo
scan son los siguientes:

1. Inicialización inicial: sólo se ejecuta una vez al inicio en el arranque del PLC.

2. Supervisión del proceso: revisa el hardware y las áreas de memoria.

3. Ejecución del programa secuencialmente.

4. Tiempo de ciclo del programa: tiempo máximo que tiene el programa para
ejecutarse.

5. Refresco de las entradas y salidas digitales del PLC según el programa.

6. Servicio puertos periféricos.

7. Refresco de las entradas y salidas analógicas.

8. Servicio unidad de comunicaciones.

El ciclo scan como máximo es de 10 ms, siendo el tiempo de ejecución de todos los
pasos constante menos el del programa del usuario (paso 4 Figura 5.1). Esto influye en
el programa que ha de tener un principio y un fin, de forma que pueda pasar al paso
siguiente. Por lo tanto, se corre un gran riesgo al programar bucles, puesto que si no

31
32 Chapter 5. Programación

1 2 3 4 5 6 7 8 2 3 4

Tiempo ciclo de programa

Tiempo ciclo de programa


Servicio puerto periféricos
Supervisión del proceso

Supervisión del proceso


Ejecución del programa

Ejecución del programa


Servicio unidad de
comunicación
Analógico I/O
Inicialización

Refresco I/O
t
0
Ciclo scan

Figura 5.1: Ciclo scan en un PLC

termina antes del tiempo estipulado, el autómata se parará indicando un error en el


que se ha excedido el tiempo de ejecución. También cabe mencionar que el programa se
ejecuta de forma secuencial, por lo que hay que tener en consideración qué partes del
código van antes y cuáles al final.

En la programación de los PLCs de OMRON, se ha empleado CX-Programmer presente


en el paquete de programas de CX-One. Éste, permite la programación de los PLCs en
tres lenguajes:

• Ladder (diagrama de relés): programación parecida a una instalación eléctrica,


puesto que se creó pensando en los electricistas. Simulando una circuito eléctrico,
tiene contactos que afectan a relés de salida. También se pueden encontrar
contadores, temporizadores y otras instrucciones que ayudan al programador en
su tarea.

• Texto Estructurado (ST): lenguaje con grandes similitudes a “C”. Tipo de lenguaje
que se acerca más al tipo empleado por los programadores de hoy en dı́a.

• SFC (Secuential Function Chart): programación mediante la creación de Grafcet,


la cual es muy visual pero poco eficiente a la hora de compilar.

Otra de las caracterı́sticas de la programación con CX-Programmer son los llamados


bloques de funciones (FB). Son trozos de programa (en Ladder o Texto Estructurado) a
los que se les puede llamar desde cualquier parte del programa principal pudiendo tener
variables entrantes y salientes de dichas funciones. Especialmente interesante cuando
se desea emplear el mismo código en diferentes partes del programa, produciendo salidas
diferentes en función de las entradas.

Para la programación de los ascensores se ha usado Ladder y Texto Estructurado,


descartando SFC por su mala optimización a la hora de compilar. Aunque ocupe menos,
Section 5.1. Arquitectura del software 33

Texto Estructurado no es tan eficiente como Ladder a la hora de traducir el código a


lenguaje de máquina. A pesar de que para programaciones de estos PLCs es mejor el
empleo de este último, se ha intentado utilizar al máximo Texto Estructurado por su
semejanza al lenguaje de “C”porque permite al autor realizar una programación más
sencilla de programas muy complejos .

En la próxima sección, se pasa a explicar todo el procedimiento empleado en la


programación de los PLCs, ası́ como las funciones que desempeñan.

5.1. Arquitectura del software

La visión general del programa realizado se puede ver gracias al modelo GEMMA de
funcionamiento de las cabinas mostrado en la Figura 5.2. En él se ven los diferentes
modos de funcionamiento de los ascensores ası́ como las paradas que se pueden
producir y su posterior actuación. También se incluyen las alarmas debidas a un mal
funcionamiento, pero éstas son comprobadas desde el ordenador que monitoriza la
maniobra para no emplear la memoria de los PLCs, que es escasa.

Procedimiento de parada Proceso de funcionamiento


Inicialización
variables arranque

Corrección error Preparación:


Ir a la planta 0

Reinicio variables

Modo Automático
Parada emergencia

Cambio entre modos

Modo Bomberos Modo Manual


Error en funcionamiento

Proceso en defecto

Figura 5.2: Idea general de la programación GEMMA

Para realizar esta maniobra, las variables empleadas en la programación se han


ordenado de una forma precisa con el fin de facilitar las cosas si se quieren modificar o
añadir más. Concretamente, se han organizado en los registros de las variables volátiles
(W) y retentivas (H) como se indica en la tabla 5.1. También se les ha añadido la letra
en mayúscula referente a la cabina en la que se emplea para que el código sea más
fácilmente interpretado y programado. Para llevar un registro más visual y simple, se ha
realizado un fichero en Excel donde se clasifican las diferentes variables por: nombre,
tipo, registro, descripción de su función. Además de las variables del programa, también
34 Chapter 5. Programación

están las variables empleadas en los sensores y actuadores.

Grupo de variables Registro Tipo


Recepción datos en C H000 - H019
Envı́o de datos en C H020 - H029

Cabina A W100 - W199


W100 - W119 Booleanos
W120 - W169 Enteros
W170 - W199 Vectores

Cabina B W200 - W299


W200 - W219 Booleanos
W220 - W269 Enteros
W270 - W299 Vectores

Cabina C W300 - W399


W300 - W319 Booleanos
W320 - W369 Enteros
W370 - W399 Vectores

Variables generales W400 - W499


W400 - W419 Booleanos
W420 - W469 Enteros
W470 - W499 Vectores

Tabla 5.1: Organización de las variables del programa

A pesar de que no todas las variables se emplean en cada ascensor, han sido incluidas
en los 2 PLCs aunque no se utilicen para evitar posibles errores de variables duplicadas,
puesto que es muy sencillo cambiar las variables en Excel y copiarlas en CX-Programmer.

Las variables de enviar y recibir datos se encuentran en el área retentiva (H) puesto
que las variables de activación de los distintos modos y de la parada de emergencia
se encuentran en el saco de variables a enviar desde el ascensorC. Es interesante que
se guarde el valor de estas variables aún después de una perdida de corriente, para
mejorar la interacción con el usuario. Teniendo en cuenta que el resto de variables que
se envı́an y reciben no importa si son retentivas o no y que (como se ha explicado en el
capı́tulo 4) es mejor enviar y recibir un conjunto de datos, se han introducido todas en
el área retentiva.

Mediante la activación y desactivación de ciertas variables, se puede cambiar la


actividad que realiza cada uno de los ascensores. Cada cabina se rige por 3 diferentes
modos de funcionamiento:

• Modo automático: Programación dividida en bloques que realizan toda la ma-


niobra de forma autónoma y que son iguales para el caso de las tres cabinas a
excepción de lo siguiente: en función del modo en que se encuentren los otros
ascensores y de si hay conexión entre los 2 PLCs, trabajan de forma diferente
Section 5.1. Arquitectura del software 35

con respecto a la lógica empleada para atender las llamadas realizadas desde el
exterior del ascensor. Para el caso del ascensorAB, si no hay conexión con el otro
PLC y sólo una de las cabinas se encuentra en modo automático, la cabina en
dicho modo actúa de forma individual; en cambio, si están los dos en automático
su funcionamiento es de forma combinada. De la misma forma, cuando hay
conexión entre ambos PLCs, pueden funcionar combinadamente tres o dos cabinas
o individualmente teniendo en cuenta en qué modo se encuentran.

• Modo mantenimiento: Pensada, como bien su nombre indica, para el mante-


nimiento del ascensor pudiendo un operario mover la cabina por el hueco del
ascensor sin necesidad de ir de planta en planta como exige el modo automático,
su funcionamiento se puede ver en la Figura 5.3. El desplazamiento vertical se
realiza mediante la botonera interior de la cabina de la cual se quiere realizar el
movimiento, empleando el botón de la planta 0 para bajar a máxima velocidad
(motor a -10 V), el de la planta 1 para bajar despacio (motor a -5 V), el de la
planta 2 para subir despacio (motor a 5 V) y el de la planta 3 para subir a máxima
velocidad. Para facilitar al operario las labores de mantenimiento en el hueco del
ascensor, puede abrir o cerrar las puertas con los botones disponibles en el interior
de la cabina (estos botones no se encuentran fı́sicamente en los prototipos, pero
sı́ en la pantalla de monitorización de todo el proceso explicado en capı́tulo 6).
Para entrar en este modo, se puede realizar desde la pantalla de monitorización, o
mediante un atajo en el teclado de la cabina, concretamente pulsando los botones
de las plantas 0 y 3 a la vez.

Ningún botón
Quieto presionado

Botón 3 Botón 2 Botón 1 Botón 0

Sube 10 V Sube 5 V Baja -5 V Baja -10 V

Figura 5.3: Grafcet del modo mantenimiento

• Modo bomberos: Diseñado para actuar cuando se produce un incendio en el


edificio. Con la intención de que ninguna persona pueda bajar en éstos evitando
ası́ accidentes innecesarios, en cuanto se activa este modo, la cabina baja hasta
la planta 0 y abre las puertas para que nadie se quede encerrado dentro (ver
Figura 5.4). No importa el modo en el que se encontrara anteriormente, este modo
tiene prioridad sobre todos los demás exceptuando la parada de emergencia. El
36 Chapter 5. Programación

acceso a este modo sólo se puede realizar mediante la pantalla de monitorización


(comentado en el capı́tulo 6).

Quieto Bajar Abrir puertas


Posición ≠ Posición =
Planta 0 Planta 0

Figura 5.4: Grafcet del modo bomberos

• Parada de emergencia: Detiene cualquier acción que estuviera realizando la cabina


y restablece todas las variables del sistema para que arranque después como si
fuese la primera vez. Para tal propósito, se tiene una seta de emergencia que activa
la parada y un botón que reinicia el proceso (actuadores sólo disponibles en la
pantalla de monitorización del sistema).

Con el fin de facilitar la posterior búsqueda de posibles errores y programar de forma


ordenada, se ha dividido el programa en módulos conectados entre sı́. Los diferentes
bloques empleados para lograr el funcionamiento de los ascensores se describen a
continuación.

5.2. Módulos del software de los PLCs

5.2.1. Posición de la cabina

Se conoce la posición de los ascensores gracias a la pareja de sensores colocados en


cada planta. Con el fin de que el programa conozca dicha posición incluso cuando se
encuentra entre sensores, se tiene una variable llamada posicionA (variando entre A, B
y C para asignarla a las diferentes cabinas). Dicha variable cambia como se muestra en
la Figura 5.5

Aplicando este sistema, se puede obtener información muy útil para las posteriores
partes del programa. Ası́ pues, se puede conocer el número de valores que va a tomar
la variable posición en función del número de plantas que tenga el edificio puesto que
sigue la expresión (no pisos ∗ 3) − 2. De este modo, los prototipos son de 4 plantas por lo
que el número de valores que tomará la variable posición son 10 que van de 0 a 9. De
esta forma, dividiendo el valor de la posición entre 3, obtenemos la planta en la que se
encuentra. Al ser la posición un valor entero, al dividirlo entre 3 nos da un valor entero
en el que se desprecian los decimales. El problema de funcionar ası́ es, por ejemplo,
cuando se acerca a la planta 1: el valor de la posición es 2 (como se puede ver en la
Figura 5.5) que al dividirlo entre 3 nos da 0, 666; si se desprecian los decimales nos da
Section 5.2. Módulos del software de los PLCs 37

9
H3
Planta 3
L3
8

7
H2
Planta 2 6
L2
5

4
H1
Planta 1 3
L1
2

1
H0
Planta 0
L0
0

Figura 5.5: Asignación de la posición en función de los sensores activados

0 cuando en realidad está acercándose a la planta 1. Para arreglar este error y que en
cuanto se detecte uno de los sensores de la planta, se sepa que está llegando a la planta
en cuestión, hay que restar 1 al valor de la posición (posicion + 1)/3. Esta corrección se
realiza en la monitorización del proceso para poder mostrar por la pantalla, la planta en
la que se encuentra la cabina incluso en las posiciones próximas.

Cabe destacar que el prototipo no tiene sensores de fin de carrera, por lo que, para
las posiciones 0 y 9 de la Figura 5.5 no se emplean los dos sensores de la planta como
en la plantas intermedias, sino el de abajo y el de arriba respectivamente de cada planta.
Con esto se consigue que a pesar de que la posición fı́sica de los sensores en el prototipo
no sea exacta, las cabinas no van a bajar ni subir más de estas posiciones evitando
futuros problemas.

Localización Lenguaje
AscensorC Tarea Start en la sección PosicionAscensor Ladder
AscensorAB Bloque de función llamada PosicionAscensor Texto Estructurado
Llamado desde: Tarea Start sección Posicion Ladder
Tarea Start sección Posicion Ladder

Tabla 5.2: Localización y lenguaje de la posición de las cabinas

Como se ve en la Tabla 5.2, en el ascensorAB se ha introducido el código en un bloque


de función porque es una parte del código que se repite en las dos cabinas. También hay
que remarcar que uno está en Ladder mientras que el otro en Texto Estructurado. Esto
38 Chapter 5. Programación

se debe a que se necesitó liberar espacio en el ascensorC y se empleó este método que
se ha detallado en la sección 5.3.

Para que la posición cambie, la cabina ha de moverse por el hueco del ascensor. Este
movimiento se realiza gracias al motor situado en la parte más alta cuyo movimiento
viene regido por el siguiente bloque.

5.2.2. Motor

Se parte del programa que se encarga de dar las órdenes necesarias al motor para
que realice el movimiento. Como se ha explicado en el capı́tulo 3 la velocidad del motor
se modifica a través del módulo Mad42 variando el voltaje que recibe el motor de -10 V
a +10 V. Para ello hay que dar valores a la salida CIO 2002 (para el caso de la cabina A y
C) y a la CIO 2001 (para la cabina B) siguiendo la gráfica 3.3. Algunos valores extraı́dos
de la gráfica son los siguientes:

Valor Voltaje salida Dirección Velocidad


2000 10 V  máxima
1000 5V ↑ mı́nima
64536 -5 V ↓ mı́nima
63536 -10 V  máxima

Tabla 5.3: Relaciones entre los posibles valores dados al motor, los voltajes que producen
y las velocidades que generan

El valor que va recibiendo en cada situación la variable de la velocidad está gober-


nada por otra variable llamada direccion motor, que puede tomar los valores −1, 0 y 1
produciendo lo que se traduce en bajada, paro y subida respectivamente. Para explicar
la forma de actuar, que se puede ver en la Figura 5.6, se supondrá que el motor se
encuentra en reposo, es decir que la dirección del motor es 0 y la velocidad de salida es
0 y que se le va a dar la orden de subir (−1) y posteriormente la de parar (de nuevo 0).
Estando el motor en reposo, llega la orden de subir por lo que la variable de la velocidad
cambia de 0 a 1000 (la velocidad mı́nima es de 5 V, porque para tensiones menores el
motor no se mueve) y cada vez que recibe un pulso va aumentando su valor de 10 en 10
hasta un máximo de 2000, consiguiendo que la velocidad vaya aumentando linealmente
con el tiempo.

Es posible cambiar el lapso de tiempo en el que se envı́an los pulsos influyendo de


esta forma en la velocidad de aceleración y desaceleración de la cabina. Para ello, se
dispone de una variable llamada aceleracion en la que se puede introducir un valor
entre 2 y 100 que indica el número de ciclos que tienen que pasar entre cada envı́o de
pulsos. De este modo, como la diferencia entre la mı́nima y la máxima velocidad que
alcanza la variable del motor es de 1000 unidades que van aumentando de 10 en 10
(aumenta 100 veces), con la variable aceleración y sabiendo que un ciclo son 10 ms, se
puede conocer el tiempo que tarda en acelerar la cabina mediante la ecuación 5.1. Por
consiguiente, como el mı́nimo valor que puede tomar la aceleración es de 2, el mı́nimo
tiempo que puede tardar el motor en pasar gradualmente de 5 V a 10 V serı́a de 2000
ms. Como se aprecia en el anterior ejemplo, coinciden los segundos que tarda en acelerar
Section 5.2. Módulos del software de los PLCs 39

Llegada a
una planta
Quieto

Dirección Dirección
motor = 1 motor = -1

Acelera hacia Acelera hacia


arriba abajo
Máxima velocidad

Sube Baja

Dirección_motor = 0

Desacelera Desacelera
hacia arriba hacia abajo
Mínima velocidad

Minima Minima
velocidad velocidad
subiendo bajando

Figura 5.6: Grafcet que sigue el movimiento del motor

con la variable aceleración, por lo que se puede afirmar que la variable aceleración es el
número de segundos que tarda el motor en pasar de mı́nima a máxima velocidad y todo
ello dentro del rango de 2 a 100 segundos.

T iempo en acelerar = 100 · aceleracion · 10ms (5.1)

Prosiguiendo con la acción de subir que estaba realizando la cabina, cuando se


acerca a la planta de destino recibe la orden de detenerse (direccion motor = 0) desde
otra parte del código, explicado más adelante (ver 5.2.4). A pesar de la orden, la cabina
no se para instantáneamente, sino que frena de forma gradual hasta alcanzar los 5 V
(velocidad = 1000) llega a una planta y se detiene. Esta desaceleración está regida por la
misma variable que la aceleración, por lo que la pendiente será la misma pero de signo
opuesto.

Al modificar la velocidad de la cabina se consigue que, cuando se encuentra viajando


de una planta a otra, vaya a la máxima velocidad posible (10 V), pero que conforme se
acerca a la planta vaya a la velocidad mı́nima para que la posterior parada en la planta
sea lo más exacta posible. Puesto que estos cambios bruscos en la velocidad de la cabina
harı́an el viaje muy molesto, se ha implementado dicha aceleración y desaceleración
de la cabina pudiendo cambiar su pendiente con el fin de que se pueda adaptar a
diferentes motores y situaciones. De todos modos, hay que tener cuidado con la variable
aceleración, puesto que si se le da un valor muy alto, aparte de que tardarı́a mucho en
40 Chapter 5. Programación

comenzar a subir a máxima velocidad, no le darı́a tiempo a desacelerar por completo


lo que provocarı́a una frenada muy brusca haciendo el viaje más incómodo y la parada
menos exacta.

Aceleración Desaceleración
10 V
Voltaje salida

5V

0V
Salida del piso Uno de los Llegada al
sensores del piso piso de
de destino activo destino

Figura 5.7: Valores que toma la variable de la velocidad en la subida

Hay que destacar que mientras se encuentra realizando la maniobra de subida o de


bajada, tiene un mecanismo de seguridad para que, aunque cambie la orden de subir a
bajar o al revés sin haberse detenido antes la cabina, no cambie su dirección. También,
igual que en la parte de la posición, en el ascensorAB se utiliza dentro de un bloque de
funciones porque es empleado por las dos cabinas.

Localización Lenguaje
AscensorC Tarea GeneralAscensorC en la sección Motor Texto Estructurado
AscensorAB Bloque de función llamada motor Texto Estructurado
Llamado desde: Tarea AutomaticoA sección1 Ladder
Tarea AutomaticoB sección1 Ladder

Tabla 5.4: Localización y lenguaje del control del motor

5.2.3. Apertura y cierre de puertas

Todos los ascensores de hoy en dı́a, por seguridad para el usuario que se monta en la
cabina, tienen implementado un mecanismo que abre y cierra unas puertas correderas.
Se ha querido implementar este dispositivo en los prototipos, pero ante la falta de
puertas a controlar fı́sicamente, se ha visto en la necesidad de simular la existencia
de estas compuertas. Fı́sicamente sólo se puede apreciar un led del PLC (uno por cada
cabina) que se enciende cuando se supone que la puerta deberı́a estar abierta, pero en
el capı́tulo 6 se verá que se puede apreciar el movimiento en la pantalla del ordenador.

Como se muestra en la Figura 5.8, este algoritmo funciona en los tres modos e incluso
cuando está en parada de emergencia de formas distintas descritas a continuación:

• Cuando se activa la parada de emergencia, si estaba la puerta cerrada se mantiene


Section 5.2. Módulos del software de los PLCs 41

Puerta Puerta
Abrir puerta Cerrar puerta
cerrada Puerta abierta Espera 10 seg
Orden abrir
completamente o
puerta
abierta Botón cerrar

Quieto

Botón cerrar

Abrir puerta Abrir puerta Cerrar puerta Abrir puerta Cerrar puerta

Figura 5.8: Grafcet que sigue el movimiento de la puerta de cada cabina

igual, pero si se encontraba un poco abierta se termina de abrir y se mantiene


abierta. Se ha realizado ası́ pensando en que si estaba un poco abierta se supone
que la cabina estarı́a en una planta y de esta forma pueden salir los pasajeros,
pero si estaba cerrada lo más probable es que estuviera entre plantas y tendrı́an
que esperar a que llegaran los bomberos para sacarlos.

• En el modo bomberos, abre las puertas cuando se le ha dado la orden de abrir


que es cuando la cabina se encuentra en la planta baja, permitiendo de esta forma
dejar salir a los pasajeros.

• En el modo de mantenimiento, para que el técnico pueda revisar con facilidad el


hueco del ascensor y de esta forma poder realizar reparaciones, puede, mediante
los botones de abrir y cerrar del interior de la cabina (que en este caso sólo se
pueden manejar desde el SCADA), abrir o cerrar la puerta sin necesidad de que
ésta llegue al final del recorrido. Obviamente si llega al final del recorrido, aunque
el técnico continúe pulsando cualquiera de los botones no se desplazará más la
puerta.

• Mientras se encuentra en el modo automático, su funcionamiento es igual a


cualquier otro ascensor. Comenzando con la puerta cerrada (si estaba abierta, no
hay más que pulsar cualquier botón para cerrarla), la acción se inicia cuando recibe
el comando de abrir las puertas del algoritmo que da las órdenes en función de
las llamadas que se realicen al ascensor. Al recibir la orden, la variable cnt vel
comienza a incrementar su valor de 2 en 2 en cada ciclo de scan que pasa, hasta
un máximo marcado por la variable vel puertas que ha tenido que ser previamente
asignado. Cuando la puerta se encuentra completamente abierta, espera un tiempo
también fijado con anterioridad en la variable tiempo puertas. Durante este periodo
de espera, se puede proceder a cerrar la puerta antes de que termine la demora
pulsando el botón de cerrar del interior de la cabina. Una vez terminado el tiempo
o pulsado el botón de cerrar, las puertas comienzan a cerrarse, es decir, la variable
cnt vel comienza a disminuir su valor pero en este caso de 1 en 1. Si en mitad de
42 Chapter 5. Programación

este proceso se pulsa el botón de abrir, se detiene y las puertas comienzan a abrirse.
Cuando ha terminado el proceso, si el ascensor se encuentra en una planta y se
pulsa desde dentro de la cabina el botón de abrir, la puerta comenzará de nuevo el
proceso descrito con anterioridad.
Hay que remarcar que el tiempo que tarda en abrirse o cerrarse la puerta y el
tiempo que se mantiene abierta, son tiempos que pueden ser modificados durante
la maniobra, pero que siempre han de tener un valor entre 2 y 10000 para el correcto
funcionamiento. Estas dos variables fijan el número de ciclos que pasan. De este
modo, si se quiere que tarde un segundo en esperar a cerrar las puertas, en la
acción de cerrar las puertas habrá que precisar un valor de 100 a ambas variables.
Hay que tener también en consideración que la apertura se realiza a doble velocidad
que el cierre, por lo que si tarda 1 segundo en cerrarse, tardará 0,5 segundos en
abrirse.

Localización Lenguaje
AscensorC Tarea GeneralAscensorC en la sección Texto Estructurado
AperturaPuertas
AscensorAB Bloque de función llamada Texto Estructurado
AperturaPuertas
Llamado desde: Tarea Start sección Apertura puertas Ladder
Tarea Start sección Apertura puertas Ladder

Tabla 5.5: Localización y lenguaje de la apertura y cierre de las puertas

5.2.4. Respuesta ante llamadas

Antes de comenzar con toda la lógica que hay detrás del movimiento de la cabina,
hay que conocer algunos datos: las órdenes de hacia dónde tiene que ir la cabina se
guardan en un vector de cuatro posiciones llamado ascensor junto con la letra de
la cabina que esté moviendo. En este vector, la posición 0 corresponde a la planta
0 y ası́ sucesivamente hasta 3, siendo cada uno de estas posiciones un boleano que
cambia de 0 a 1 cuando tiene que ir a ese piso. Además, las botoneras internas influyen
directamente sobre este vector, mientras que las botoneras exteriores han de enviar
la orden a la cabina adecuada (se ve en el apartado 5.2.5) empleando para ello otro
vector igual al anterior llamado ascensorAext (variando la A por B y C para las otras dos
cabinas).

Se ha creado un algoritmo (llamado lógica motor) que se encarga de interpretar los


destinos a los que tiene que ir, es decir, analizar los vectores ascensor y ascensorext
anteriormente comentados y envı́a la orden al algoritmo del motor indicándole la
dirección a seguir (mediante la variable direccion motor). Las órdenes que envı́a según
las llamadas realizadas desde la botonera interior son las de ir a los pisos indicados
e ir parándose en todas las plantas con llamadas respetando la dirección que lleva la
cabina. Por ejemplo, si el ascensor se encuentra en la planta 1 y se recibe la orden
desde la botonera interior de subir a la planta 2, el algoritmo envı́a la orden de subir
y cuando se encuentra próximo a la planta 2 envı́a la orden de parar. No es necesario
Section 5.2. Módulos del software de los PLCs 43

enviar ninguna orden más al motor cuando ha llegado a la planta, puesto que de eso se
encarga el algoritmo del motor; pero sı́ que es necesario enviar la orden de abrir la puerta
al algoritmo de apertura de puertas explicado en 5.2.3. Este movimiento descrito es muy
simple, pero si hay varias órdenes desde la cabina, el algoritmo de lógica motor atiende
a todas ellas teniendo en cuenta la dirección en la que se movı́a. Por ejemplo, volviendo
a la situación de que la cabina se encuentra en reposo en la planta 1, se realizan varias
llamadas. Primero se llama desde la planta 2 y cuando se está moviendo la cabina, se
realiza la llamada desde la planta 0 y después desde la 3. El movimiento que realizará el
ascensor es el de subir desde la planta 1 al nivel 2, abrir la puerta, esperar a que se
cierre la puerta y como estaba subiendo, termina de subir al piso 3 aunque se haya
llamado antes a la planta 0. Una vez atendida la llamada de la altura 3, al no haber más
llamadas superiores (en el caso de que hubiese más plantas), bajarı́a a la planta 0. Si
mientras está bajando al nivel 0, se produce otra llamada que esté en un piso inferior
a la posición en la que se encuentra la cabina en ese momento, ésta se detendrá en
esos pisos antes de llegar a la planta baja, siempre respetando la dirección en la que se
mueve.

Quieto
Dirección=0

Subir Bajar
Abrir puerta
Dirección=1 Dirección=-1

Frenar Frenar
Dirección=0 Dirección=0

Abrir puerta Abrir puerta

Más pisos por arriba No más pisos por arriba No más pisos por abajo Más pisos por abajo

Figura 5.9: Grafcet que da las órdenes al motor en función de los vectores ascensor y
ascensorext

En el caso de que las llamadas sean recibidas desde el exterior de la cabina, las
órdenes que envı́a el algoritmo son un poco diferentes a las de las llamadas internas.
Esto se debe a que como se ha supuesto que este prototipo irı́a en un bloque residencial,
se considera que cuando un usuario llama a la cabina desde el exterior, por lo general
éste desea bajar a la planta baja. Tomando el ejemplo anterior, la cabina comenzará a
subir a la planta 2 pero no se detendrá ahı́ sino que subirá hasta el nivel 3 para recoger
44 Chapter 5. Programación

al usuario que desea bajar y posteriormente bajará al piso 2. De este modo, siempre
que se monte una persona en la cabina desde una planta que no sea la 0, ésta se
encontrará bajando. En la Figura 5.9 se pueden ver estas dos formas de actuación del
algoritmo de lógica motor.

En los dos casos, ya sea atendiendo a llamadas interiores o a las exteriores, la cabina
permanecerá parada mientras la puerta se encuentre abierta. Al mismo tiempo que se
envı́a la acción de abrir las puertas, ser restablece la posición de los vectores que indican
hacia dónde ha de ir la cabina (ascensor y ascensorext). De esta manera, si se produce
una llamada desde la misma planta en la que se encuentra el ascensor con la puerta
abierta, se realizará la misma acción que si se pulsara el botón para abrir la puerta. Si
se encontrase la puerta cerrada y se llamase a la cabina desde la misma planta en la
que se localiza, la cabina no se moverá y la puerta se abrirá.

Localización Lenguaje
AscensorC Tarea GeneralAscensorC en la sección ControlMotor Texto Estructurado
AscensorAB Bloque de función llamada ControlMotor Texto Estructurado
Llamado desde: Tarea AutomaticoA sección1 Ladder
Tarea AutomaticoB sección1 Ladder

Tabla 5.6: Localización y lenguaje de la lógica empleada para atender las llamadas

5.2.5. Lógica empleada en la asignación de las llamadas exteriores a la


cabina

Al contrario de las llamadas realizadas desde el interior de la cabina que son


directamente asignadas a los vectores para su posterior interpretación en el algoritmo de
la lógica del motor (explicado en la sección anterior), para las llamadas que se realizan
desde los botones exteriores a la cabina, hay que asignar la cabina que va a realizar dicha
orden. El algoritmo lógica externa es el encargado de realizar esta labor de asignación.
En su programación se tuvo en cuenta el principio de control colectivo (visto en el
apartado 2.3.1), es decir, que la llamada será atendida por el ascensor que se encuentre
más cerca en ese momento. Al funcionar el PLC del ascensorC como maestro y el otro
como esclavo cuando están conectados, sus programas son diferentes:

• El algoritmo de la lógica externa del ascensorAB sólo funciona cuando no están


conectados los dos PLCs, haciendo que funcionen las dos cabinas como si no
existieran más. Para ello, se tiene en cuenta el estado en el que se encuentran
las cabinas y la distancia desde la posición de cada cabina hasta la planta de
la llamada. En primer lugar se evalúa el estado dando prioridad a la cabina que
se encuentra en reposo. Si no hay ninguna cabina en reposo, se calculan todos
los casos mostrados en la Figura 5.10, que son todas las posiciones posibles que
pueden tener las cabinas respecto a la llamada. Una vez determinado el caso en el
que se encuentran las cabinas, se calcula cuál de ellas tiene la mı́nima distancia
para asignarle la llamada, teniendo en cuenta que tiene prioridad la cabina A sobre
la B en caso de que las distancias sean iguales.
Section 5.2. Módulos del software de los PLCs 45

La comprobación de la situación en que está es muy importante porque, por


ejemplo, en el primer caso de la Figura 5.10 en que la llamada se encuentra por
debajo de las dos cabinas: si las dos se encuentran bajando se le asigna la llamada
a la que se encuentre más cerca. Pero por el contrario, si se encuentran las dos
cabinas subiendo, la llamada no es asignada a ninguna de las cabinas hasta que
una de ellas no cambie su estado a reposo o bajando.

A B A B
Piso llamada
B A A B

Figura 5.10: Posibles posiciones de las cabinas A y B en función de la planta de la


llamada

• En el ascensorC, el algoritmo de control de la lógica externa actúa de forma


continua, pero la asignación de las llamadas se realiza de manera diferente en
función de si están conectados o no los PLCs. Cuando no hay conexión entre los
ascensores funciona igual que la botonera interna, es decir, pasan directamente
las llamadas externas al ascensorC puesto que sólo se encuentra él funcionando.
En cambio, cuando están todos conectados, el algoritmo procede igual que el del
ascensorAB (cuando no tiene conexión) pero en vez de tener dos cabinas a las que
asignar las llamadas, se tienen tres. El número de casos a tener en cuenta aumenta
al doble, de 4 a 8 (como se ve en la Figura 5.11), dando como resultado que el
código ocupa más del doble. Al ser el espacio disponible para la programación de los
PLCs fijo, no se ha podido incluir el algoritmo completo del ascensorC, dejando una
parte en la tarea LogicaExternaPorIncluir que no tiene asignación para que no sea
transferido al PLC. La parte excluida del programa es la referente a la asignación
de una llamada a una cabina cuando se encuentran las tres en funcionamiento,
que simplemente espera a que una de las tres cabinas se encuentre libre para
designarle la llamada. Sólo dicha parte ocupa el 40 % del espacio disponible en
el PLC. En este caso, en que son tres ascensores en funcionamiento para cuatro
plantas, apenas se nota la ausencia de dicha parte del código.

A B C A B A A C C B C B
Piso
llamada
C B C B A B A A C A B C

Figura 5.11: Posibles posiciones de las cabinas A, B y C en función de la planta de la


llamada

En los dos algoritmos de la lógica externa, se han empleado pequeñas partes de


código que asignan la orden a la cabina cuya distancia sea la mı́nima respecto a la
46 Chapter 5. Programación

planta de la llamada. Estos trozos de código actúan cuando se activa su variable en


función del caso que se necesite (ya sea calcular la mı́nima distancia entre la cabina A
y B o entre la B y C) y desactivándose inmediatamente después de haberse ejecutado.
También, se ha implementado un mecanismo para excluir las cabinas que se encuentren
en modo mantenimiento de la lógica externa, para no perder ninguna llamada externa
mientras se realizan labores de mantenimiento en una de ellas. Para llevarlo a cabo, se
cambia el estado de la cabina cuando se encuentra en mantenimiento a −4 (puede ser
cualquier valor menos −1, 0 y 1) consiguiendo que no sepa identificar el estado en el
que se encuentra la cabina. Este mecanismo no se ha incluido para el caso del modo
bomberos puesto que al activarse cambian todas las cabinas y no individualmente como
sucede en el modo mantenimiento.

Para lograr el correcto funcionamiento de toda la programación empleada en los


ascensores, los valores iniciales de las variables juegan un papel muy importante, por lo
que son aplicados en el primer ciclo scan. Un ejemplo de ello es la posición de las cabinas
que pueden haber sido movidas manualmente mientras el PLC estaba desactivado, por
lo que el valor inicial de las cabinas es −4, un valor imposible de alcanzar, para indicar
que no se conoce el valor de la posición. Estos valores iniciales se vuelven a aplicar
para casi todas la variables cuando se cambia entre modos o se produce una parada
de emergencia. Uno de los casos en que no se aplica es para la variable posición,
consiguiendo con ello que el PLC sepa en todo momento en qué posición se encuentra la
cabina y por consiguiente, lo conozca el operario que supervisa el proceso.

Localización Lenguaje
AscensorC Tarea Start en la sección Comunicaciones Ladder

Tabla 5.7: Localización y lenguaje de la posición de las cabinas

5.2.6. Comunicaciones entre los PLCs

En el capı́tulo 4 se han comentado las caracterı́sticas de la red Ethernet, pero no el


código realizado para llevar acabo esta tarea. Debido a las limitaciones de la capacidad
de la memoria que tienen los PLCs (que se describirán más adelante), se decidió que
el ascensorC serı́a el PLC maestro y el ascensorAB el esclavo. Esto influye a la hora de
asignar las variables que se van a enviar y recibir desde el ascensorC a través de las
funciones send y recv. Como éstas sólo envı́an un grupo de variables consecutivas, se
realizaron dos grupos de variables de 20 palabras (16 bits cada palabra). Las variables
que se reciben en el ascensorC del ascensorAB son del registro H0 al H19 y las que se
envı́an al ascensorAB del H20 al H39. Se han asignado al área retentiva porque entre
todas las variables se incluyen algunas como la parada de emergencia, ya que se desea
mantener el valor después de algún fallo. Como lo que se pretende es sólo emplear una
instrucción de envı́o y de recepción de datos, todas las demás variables se convirtieron
en retentivas (el resto de variables no importa que sean retentivas o no).

Ya sabemos qué áreas de memoria se quiere enviar y recibir, por lo que sólo queda
configurar las funciones send y recv. Para ello, siguiendo los pasos del manual de
OMRON, hay que especificar en unos registros consecutivos cualquiera (elegidos para
esto los registros de D0 a D4) los siguientes datos:
Section 5.2. Módulos del software de los PLCs 47

• Longitud del mensaje a transmitir: 20 palabras como bien se ha comentado antes.

• Red de destino: en este caso está configurada como la 2 (explicado en el capı́tulo 4).

• Dirección del nodo de destino dentro de la red Ethernet, que en este caso es 2
(explicado en el capı́tulo 4).

• Se le exige una respuesta de envı́o o recepción bien realizados.

• El puerto lógico usado en la transmisión se establece en el puerto 4 (hay que elegir


uno de los puertos comprendidos entre 0 y 7).

• No se van a realizar reintentos de reenviar los datos ante un fallo en la comuni-


cación porque al ser una comunicación tan simple la probabilidad de producirse
colisiones es prácticamente nula.

• El tiempo de supervisión de la respuesta es el mı́nimo posible, es decir, 0,1 s.

Una vez establecida la conexión y visto su correcto funcionamiento, se comenzó con


la programación de los ascensores. Para que no coincidiera el envı́o con la recepción de
datos en un mismo ciclo de scan, se utilizó la variable interna de los PLCs de OMRON
(un pulso de reloj de 0,02 s) encargada de activar y desactivar el envı́o y la recepción.
De este modo, cada 0,04 segundos se habı́a conseguido enviar y recibir correctamente
la información. Al refrescarse tan rápido, se podrı́a decir que las variables enviadas al
ascensorAB son una copia del ascensorC y al revés cuando se reciben. Esto quiere decir
que las variables enviadas al ascensorAB sólo pueden ser modificadas por el ascensorC,
lo que produjo un fallo. El problema apareció cuando se quiso emplear una misma
variable en ambos PLCs, la cual debı́a activarse en el ascensorC y cuando cumpliera
su función en el ascensorAB, desactivarse. En teorı́a, simplemente hay que crear 2
variables: una en el grupo de enviar y otra en el grupo de recibir. El ascensorC enviarı́a la
orden de activación, el ascensorAB transmitirı́a la que está activada hasta que termina
la acción que desactiva y al detectar el ascensorC el paso de 1 a 0, desactivarı́a la orden.
Lo que ocurrı́a era que cuando el ascensorAB terminaba la orden que el ascensorC le
habı́a encomendado y coincidı́a con que el ascensorC se encontraba enviando datos, la
orden se volvı́a a repetir, por lo que por ejemplo se abrı́an varias veces las puertas del
ascensor.

El problema se solucionó haciendo que la orden del ascensorC sólo se envı́e durante
un periodo corto de tiempo (concretamente 1 segundo después de generarse la orden),
reseteándose pasado ese tiempo. Ası́ el ascensorC envı́a la orden al ascensorAB, éste la
recoge y actúa sobre la variable que posteriormente recibe el ascensorC para avisar que
ha terminado la orden (Figura 5.12).

La programación del envı́o y recepción de los datos realizado en Ladder, sólo se


encuentra en el PLC del ascensorC como se detalla en la tabla 5.8 para que no se
produzcan fallos en el envı́o de los datos.

En definitiva, con la programación realizada, finalmente el tiempo de envı́o y


recepción de datos se alarga aún más de lo estipulado después de los ensayos realizados
(tarda un mı́nimo de 0,04 segundos en enviar y recibir toda la información). A pesar
de todo, al finalizar el proyecto y realizar las pertinentes pruebas de comprobación, se
48 Chapter 5. Programación

1 2
ascensorC ascensorAB ascensorC ascensorAB

0 0 0 0
Generación orden en
Orden: 1 Generación de la orden
ascensorAB
0 0 1 1

3 4 5
ascensorC ascensorAB ascensorC ascensorAB ascensorC ascensorAB

1 1 1 1 0 0

Orden enviada y recibida Después de 1 segundo Orden realizada

1 1 0 0 0 0

Figura 5.12: Comunicación de datos que se modifican en ambos PLCs

Localización Lenguaje
AscensorC Tarea Start en la sección Comunicaciones Ladder

Tabla 5.8: Localización y lenguaje de la programación encargada de la comunicación

puede seguir afirmando que la transmisión que se realiza entre los 2 PLCs es en tiempo
real.

En cuanto a los problemas en la dimensión del código y las diferentes formas de


optimizarlo, se pasan a describir en la siguiente sección.

5.3. Optimización del espacio

La capacidad de almacenar el programa en los PLCs se mide en pasos. Éstos son


muy importantes ya que es necesario conocer el número de pasos que el PLC necesita
para ejecutar una instrucción. Por ejemplo, para mover datos de una variable a otra
(o darle un valor a una variable) se emplea la instrucción MOV que necesita 3 pasos
para ser ejecutada; las condiciones (AND, OR, >= ,. . . ) emplean 4 pasos. . . El número
máximo de pasos que admiten estos PLCs es de 6144 pasos cada uno. Teniendo en
cuenta que cuando se carga un programa vacı́o sin nada de código comienza con 618
pasos ocupados, quedan un total de 5526 pasos para uso del programador. Se ha visto
que el total de pasos que se pueden emplear no es muy grande, por lo que se han tenido
que estudiar posibles soluciones para la optimización del código programado para sacar
el máximo partido a los PLCs.

Lo primero que se advirtió es que las variables ya tienen su espacio asignado desde el
inicio, por lo tanto, no emplean pasos a la hora de crear variables. Esto se ha explicado
Section 5.3. Optimización del espacio 49

en el Capı́tulo 3. Concretamente, se dispone de 511 registros en el área volátil W con


16 bits cada registro y 1535 en el área retentiva H con 16 bits por registro. Esto quiere
decir que el número de variables que se pueden emplear no es un impedimento y hay
que programar haciendo que las variables tengan mucho peso.

entrada1 entrada2 salida


2 IF entrada1 AND NOT(entrada2) THEN
1 salida:=TRUE;
ELSE
salida:=FALSE;
3 Salida:=entrada1 AND NOT(entrada2); END_IF;

Figura 5.13: Ejemplo de diferencia de espacio entre Ladder y Texto Estructurado

Para realizar la misma acción, en lenguaje Ladder es más optimizado ya que se acerca
más al lenguaje máquina. El ejemplo más sencillo en el que se puede ver este hecho es
el de dos contactos en Ladder que activan una salida (Figura 5.13 1 ). Estos comandos
ocupan un total de 3 pasos para realizar la simple acción de activar y desactivar una
salida en función de las dos entradas. Realizando lo mismo en Texto Estructurado,
la forma habitual de programar esta misma acción para un programador es como se
muestra en la Figura 5.13 2 . Aplicando esta forma de escritura del código, se emplean
36 pasos, pero si se tiene en cuenta que no se está programando en “C”, se puede escribir
lo mismo en un lenguaje más cercano al de máquina resultando lo que se puede ver en
la Figura 5.13 3 en el que se emplean 18 pasos de extensión. Por lo tanto, es mejor
programar en Ladder y en el caso de que se desee usar Texto Estructurado, hay que
tener en mente que se está programando un PLC para escribir el código de la forma más
eficiente.

Otro caso es el de los contadores y timers: en Ladder existe una función interna
que activa unos contadores internos evitando el empleo de muchos pasos, pero en Texto
Estructurado no se pueden emplear para esta versión de los PLCs (sólo se puede emplear
en los PLCs CJ2M). La diferencia de pasos es considerable, ya que en Ladder se emplean
4 pasos mientras que en Texto Estructurado se utilizan 43 pasos para la misma acción
como se muestra en la imagen 5.14 (uno cuenta ascendente y el otro descendente).

T0000
TIM cnt:=cnt+1;
0000
IF cnt=1000 THEN
cnt:=0;
#100 END_IF;

Figura 5.14: Ejemplo de diferencia de espacio entre contadores Ladder y Texto Estruc-
turado

Esto lleva a la conclusión de que es mejor emplear los timer y contadores en Ladder,
50 Chapter 5. Programación

pero no en todos los casos, puesto que se puede querer conocer el valor que tiene en todo
momento el timer o el contador para emplearlo en otra parte del programa. En el caso
de Texto Estructurado el contador se realizarı́a como el de la Figura 5.14 y los valores
que va tomando cnt se puede emplear en otro lado del programa. En cambio en Ladder,
a pesar de tener una función interna que realiza la misma acción, sólo se puede conocer
cuándo termina de contar. Como consecuencia, si se desea conocer el valor del contador
o del temporizador programandolo en Ladder habrı́a que realizar un algoritmo parecido
al de Texto Estructurado, es decir, sin usar las funciones internas del PLC.

Como bien se acaba de demostrar, al hacer el código en Ladder se emplean menos


pasos, pero como se desea emplear al máximo el Texto Estructurado por la facilidad de
comprensión que da a las personas acostumbradas a la programación, se han tenido
que buscar diferentes técnicas para optimizar el código.

Cuando se emplean las condiciones IF para ver si una variable boleana está activada
o desactivada, no hay que emplear la condición de igualdad. Esto quiere decir, que si
queremos arrancar una parte del código cuando una variable boleana se active, no hay
que escribir la parte =TRUE porque al realizar la comparación emplea 4 pasos extra que
no tendrı́a por qué realizarlos. A la derecha de 5.9 se ve la forma más eficiente de escribir
lo mismo.

IF condición=TRUE THEN IF condición THEN


... ...
END IF; END IF;

Tabla 5.9: Ahorro de pasos eliminando la condición =TRUE

Si por el contrario se quiere realizar cuando la variable no esté activada, en vez de


igualar la expresión a =FALSE, se sustituye por un NOT.

IF condición=FALSE THEN IF NOT(condición) THEN


... ...
END IF; END IF;

Tabla 5.10: Ahorro de pasos eliminando la condición =FALSE

Conforme se iba escribiendo el código, se vio que habı́a muchas partes que o bien se
repetı́an o bien se empleaba el mismo código para diferentes variables. En función de los
requerimientos se han usado unos u otros:

• Al operar uno de los PLCs en dos cabinas al mismo tiempo, hay muchas partes
del código que se repiten pero con diferentes variables en función de la cabina que
se esté manejando. Para este caso es interesante usar la opción que ofrece CX-
Programmer de los bloques de funciones. En ellos se introduce, ya sea en Texto
Estructurado o en Ladder, el algoritmo encargado del movimiento del motor por
ejemplo, y se indican unas entradas y salidas. Posteriormente, hay que darles los
valores correspondientes a las distintas cabinas para que funcionen en cada caso
por separado. El problema es que hay que llamar a la función, para darle estos
valores, y sólo se puede realizar desde Ladder. Se podrı́a decir que de este modo
Section 5.3. Optimización del espacio 51

se restringe su uso, pero no es del todo cierto, porque desde Ladder le indicas las
entradas y salidas que ha de tener dicha función con variables globales que más
adelante pueden ser usadas en Texto Estructurado.
Como en todo, hay que tener cuidado de cómo se usa. Un ejemplo serı́a la cantidad
de variables que se ponen de entrada y salida de la función, puesto que cuantas
más sean, más pasos emplearán llegando a no ser eficaz su uso. Otro motivo
para tener cuidado es que es eficaz cuando se usa varias veces, es decir, si se
han programado diferentes bloques de funciones en el ascensorAB, lo lógico es
emplear lo mismo en el ascensorC puesto que su funcionamiento es muy similar,
pero habrı́a que sacar el código de los bloques de funciones porque se estarı́an
derrochando pasos.

• En algunos casos, cierta parte del código se repite aleatoriamente por el programa,
pero no necesita variables de entrada y de salida para funcionar correctamente.
Para estos casos se ha empleado un sistema de llamada basado en la activación de
una variable cada vez que se necesite ejecutar esa parte del código, desactivándose
una vez se termina de ejecutar. Este método es muy empleado en la lógica de las
llamadas exteriores 5.2.5, pero también dentro del bloque de función de control del
motor.
En cuanto a estas llamadas a trozos de programa, se puede pensar que también
se puede hacer con las subrutinas o interrupciones. Pero en ambos casos, sólo se
pueden emplear en Ladder limitando de este modo su empleo. Éstas funcionarı́an
como si se copiara el código de la subrutina en la posición que se ha llamado
siguiendo el orden secuencial. Estas subrutinas o interrupciones pueden ser
llamadas desde varios sitios del código.

Siguiendo con la búsqueda para utilizar los mı́nimos pasos posibles, el CX-
Programmer ofrece el empleo de diferentes tareas que pueden ser activadas o desactiva-
das con el fin de que ciertas partes del código funcionen cuando se den las condiciones
necesarias. También se puede emplear para separar el código en partes y que quede más
ordenado, pero es una práctica no muy acertada. Esto se debe a que cada vez que se
añade una tarea en Ladder, ésta ocupa 41 pasos y en el caso del Texto Estructurado,
ocupa 37 pasos. Por lo que, a pesar de que quede todo más bonito en diferentes tareas,
principalmente en el caso del ascensorC, es más interesante incluir todo el código en
una única tarea en el que se incluyan todos los bloques de funciones y todo el código
empleado para conseguir el movimiento. En la realidad no es ası́, porque parte del
código se ha realizado en Texto Estructurado, pero otra parte está en Ladder para liberar
espacio. Por ejemplo, en el caso de cambiar entre modos de funcionamiento (explicado
en 5.1) que primero se realizó en Texto Estructurado pero posteriormente se pasó a
Ladder para conseguir más espacio.

A pesar de todos estos intentos de conseguir más espacio, finalmente no se


consiguió incluir todo el código necesario para el perfecto funcionamiento de las tres
cabinas. No se ha podido incluir una parte de la lógica empleada en la llamadas externas
del ascensorC, que actúa como PLC maestro, encargada de asignar la llamada a una
de las tres cabinas cuando se encuentran las tres funcionando. Para situar mejor el
problema en cuestión, el código necesario en las cabinas A y B para la lógica externa
52 Chapter 5. Programación

cuando funcionan separadas de la C, emplea 1137 pasos, mientras que esta misma
parte del código en el PLC del ascensor C que se encarga de las tres cabinas, utiliza
3928 pasos. De estos 3928 pasos, 2500 son de la parte en el que se encuentran las tres
cabinas funcionando. Quitando esta parte y realizando todos las optimizaciones que
fueron posibles, se llegó a obtener un espacio de 1996 pasos, por lo que faltarı́an 504
pasos para poder incluir todo el código completo, cosa que no se consiguió.

A partir del programa incluido en ambos PLCs y descrito anteriormente, se consigue


el funcionamiento de las 3 cabinas que puede ser monitorizado mediante la conexión
del ascensorC al ordenador por el puerto serie. Para ello se ha empleado el programa
CX-Supervisor como se pasa a describir en el apartado siguiente.
Capı́tulo 6

SCADA

El proceso de supervisión y control del movimiento de los ascensores se realiza


mediante el SCADA (Supervisory Control And Data Adquisition) elaborado en el
programa CX-Supervisor. El software es ejecutado en un ordenador conectado a los PLCs
mediante el puerto serie, como se ve en la imagen 3.6. Se podrı́an haber realizado todas
las conexiones por Ethernet, pero para ello habrı́a sido necesario un switch que dirigiera
el tráfico. Como no es ası́, todas las variables que se quieren monitorizar del ascensorAB,
son transferidas al PLC del ascensorC puesto que es el que se conecta posteriormente al
ordenador.

En la interfaz gráfica desarrollada, mientras los ascensores se encuentran en modo


automático, se puede ver el movimiento vertical de las cabinas a través de su respectivo
hueco. Este movimiento no se ve igual de fluido que en la realidad, ya que depende de
la activación de los sensores hall que indican la posición en la que se encuentra. Es por
ello que el movimiento de las cabinas en el SCADA va con un poco de retraso, lo que
hace aparentar un error al abrirse las puertas de las cabinas cuando llegan a una planta
con llamada. Esto se debe a que el movimiento de la cabina no comienza hasta que no
se detecta un cambio en los sensores, por lo que al llegar a una planta comienza a abrir
la puerta a la vez que realiza la última transición hasta el piso.

Como se ha comentado en el capı́tulo anterior, el movimiento que realizan las puertas


de las cabinas es virtual, es decir, el prototipo no tiene puertas fı́sicas que mover por
lo que se ha simulado su apertura y cierre. En el SCADA se interpreta la variable de la
velocidad de apertura y cierre de las puertas para reproducir el desplazamiento de éstas.
Al ser dicha variable modificable, el estado en el que se encuentra la puerta se calcula
dividiendo la velocidad de la puerta actual entre la variable modificable.

En el caso del modo automático, las puertas se abren cuando se pulsa el botón de
apertura de puertas o cuando una cabina llega a un piso con llamada. Las llamadas a los
ascensores se pueden realizar mediante las botoneras disponibles en la interfaz gráfica.
Para las llamadas desde el interior de la cabina se emplean los interruptores colocados
a la izquierda del esbozo de los ascensores, mientras que para las llamadas realizadas
desde el exterior de las cabinas (en las plantas) se encuentran entre los huecos de los
ascensores. Se pueden emplear indistintamente las botoneras entre los ascensores A y
B o entre B y C. La asignación de las llamadas a las diferentes plantas y a las distintas
cabinas se revela mediante la iluminación en verde de la casilla correspondiente (como

53
54 Chapter 6. SCADA

Figura 6.1: SCADA del movimiento de las tres cabinas automáticamente

se puede apreciar en la Figura 6.1).

Cuando se quieren realizar tareas de mantenimiento en alguno de los ascensores, hay


que activar el modo mantenimiento. Pulsando el botón mantenimiento en la parte supe-
rior izquierda de la pantalla, se entra en un menú donde se puede activar o desactivar el
modo mantenimiento de cada ascensor. Al activarse el modo mantenimiento, los botones
interiores cambian su actividad para que el operario pueda moverse verticalmente por
el hueco del ascensor sin necesidad de ir de planta en planta. Es por ello que, para
evitar confusiones al trabajador, las botoneras interiores de la cabina desaparecen y
aparecen en la ventana emergente otros botones indicando las velocidades con las que
se moverá la cabina al ser pulsados. En la ventana principal aparece un botón cuya
función es la de avisar que una cabina se encuentra en modo mantenimiento y poder
desactivarlo sin necesidad de entrar en la ventana de mantenimiento.

Si se produce un incendio en el edificio, por motivos de seguridad los vecinos no


deben emplear el ascensor. En el caso de querer activar el modo bomberos, no hay más
que pulsar el botón bomberos y las tres cabinas comenzarán su descenso a la planta
baja, abriendo las puertas al llegar a ella. Cuando se sale del modo de bomberos, como
medida de seguridad se activa la seta de emergencia para poder recolocarlos en caso de
que sea necesario antes de volver al modo automático.

El prototipo del laboratorio no dispone del mecanismo fı́sico necesario para realizar
una parada de emergencia, por lo que se ha implementado en el SCADA. Éste se
encuentra en la parte superior derecha y está compuesto por una seta de emergencia
55

Figura 6.2: Cabinas B y C en modo mantenimiento

que se queda bloqueada al pulsarla, siendo necesaria una segunda pulsación para
desbloquearla. A su izquierda se encuentra el botón de reset, que elimina la emergencia
y reinicia el proceso. Una luz debajo del botón de reset indica en todo momento el estado
de la emergencia (activada o desactivada). La seta de emergencia se pulsa al producirse
un mal funcionamiento de los ascensores por lo que, cuando se quita la emergencia,
se cambian los modos de los ascensores a mantenimiento. Esto se hace para poder
posicionar las cabinas correctamente antes de volver al modo automático.

Es importante (pero no imprescindible) que se esté monitorizando el proceso


continuamente para que la maniobra funcione de forma segura. Esto se debe a que
en el SCADA se detectan los funcionamientos incorrectos de las cabinas durante su
funcionamiento en el modo automático. Concretamente, se comprueba que la cabina no
se encuentre desplazándose con las puertas abiertas y que la velocidad máxima con la
que se mueven las cabinas no supere cierto valor de seguridad.

Al producirse una de estas llamadas se abre una ventana emergente indicando la


incidencia ocurrida detallando la hora y el dı́a. Pinchando sobre el botón alarmas se
accede a otra ventana emergente desde la que se puede ver en todo momento el estado
de las alarmas, pudiendo desactivarlas si se considera que ya no deberı́a estar activada.

Puede aparecer otra posible alarma cuando las variables controlables se encuentran
fuera del rango permitido. Son tres las variables que se pueden modificar y se
encuentran en otra ventana emergente que se abre a través del botón variables. Sus
valores pueden ser cambiados o bien pinchando sobre el valor e introduciendo el valor
56 Chapter 6. SCADA

Figura 6.3: SCADA del estado de las alarmas

deseado o bien empleando los botones de más y menos situados a su derecha que
aumenta o disminuye en una unidad su valor.

En el caso de las alarmas debidas al movimiento de la cabina con la puerta abierta,


se activa automáticamente la seta de emergencia. Para el resto de alarmas no sucede
esto, debido a que no se han considerado tan peligrosas.

Una última ventana emergente que se puede abrir es la de los sensores. En ella se
pueden visualizar todos los sensores magnéticos, los botones de las cabinas activados
y los valores que va tomando la velocidad de la cabina con su respectivo valor en
voltaje resultante. Esta ventana es totalmente visual con el fin de obtener la máxima
información del proceso que se está llevando a cabo.
57

Figura 6.4: SCADA de las variables controlables de la maniobra

Figura 6.5: SCADA de los sensores que se encuentran funcionando en ese momento
58 Chapter 6. SCADA
Capı́tulo 7

Testeo y uso de autómata de


simulación

Antes de emplear el prototipo para ver el funcionamiento final de los ascensores,


se empleó CX-Designer para comprobar que se habı́a realizado bien la maniobra, en
concreto, verificar que estaba bien el código de los PLCs antes de introducirlo para que
no estropeara los prototipos. También sirve para comprobar que el SCADA funciona
correctamente con los PLCs.

CX-Programmer también puede realizar una simulación del programa, pero lo que
muestra es cómo van cambiando los valores de los registros. Se ha empleado CX-
Designer que permite ver y modificar estos valores pero de forma gráfica, es decir,
permite crear botones, luces, indicadores numéricos, gráficas,. . . que acercan más a lo
que ocurrirı́a en la realidad.

CX-Designer emplea la simulación arrancada desde CX-Programmer para recoger


los datos. Pero realmente, CX-Programmer simplemente es un editor de programa que
emplea CX-Simulator para simular lo programado. Por lo tanto, CX-Designer no funciona
si no está activo CX-Simulator y éste a su vez no funciona si no está el programa abierto
en CX-Programmer.

CX-Designer, que se encuentra dentro del paquete de CX-One, es un programa muy


intuitivo para la creación de simulaciones. En la parte central hay un panel en el que
hay que seleccionar el tipo de actuador que se quiere añadir, ya sea un botón, un led,
una gráfica, solo texto, visualización de un valor,. . . Por ejemplo si se quiere crear un
pulsador que modifica el registro CIO 1.02 hay que: seleccionar el primer botón del
panel central, dibujar el botón en el lugar deseado y por último especificar el registro
que va a modificar. Para asignarle un registro, se puede realizar rápidamente desde la
barra superior (como se muestra en la Figura 7.1), pulsando dos veces seguidas sobre el
pulsador o haciendo clic derecho sobre el pulsador. Por defecto aparece que el registro es
el SERIALA:00000.00. SERIALA: es un comando interno del CX-Designer por lo que no
hay que modificarlo, por lo que sólo se cambiará la parte a continuación de los puntos,
es decir, para el registro CIO 1.02 quedarı́a SERIALA:00001.02. En el caso de querer
añadir otro tipo de área, como la retentiva (H) simplemente hay que añadir la letra del
área en cuestión como se harı́a en CX-Programmer.

59
60 Chapter 7. Testeo y uso de autómata de simulación

Arranque de la
simulación Aceso rápido
al registro

Selección del tipo Doble clic para


de actuador: botón, entrar en sus
led, gráficas,... propiedades

Figura 7.1: Creación de una pantalla de simulación

No sólo se puede modificar el registro que emplea el botón, sino que también se
puede cambiar el color, el nombre y muchos otros aspectos haciendo clic derecho sobre
el elemento en cuestión y entrando en propiedades.

Una vez incluidos todos los elementos que compondrán la simulación con sus
respectivos registros, se procede a iniciar la simulación pulsando el botón mostrado
en la Figura 7.1 o yendo a Herramientas  Prueba. Aparecerá un cuadro de diálogo
en el que hay que especificar a qué dispositivo se va a vincular. En este caso, como se
quiere simular el programa realizado en CX-Programmer, hay que seleccionar la opción
conectar a CX-Simulator. De esta forma se crea un PLC virtual en el que probar el código
y a la vez poder visualizar los cambios que se producen, pudiendo interactuar con las
variables implicadas. Hay que destacar, que no permitirá la ejecución de la simulación
si no se encuentra el CX-Programmer abierto con el programa a testear.

Volviendo al caso de los ascensores, la simulación creada fue modificándose


atendiendo a los requisitos que se necesitaban en cada caso. En gran medida fue
provocado por la forma de programar el código realizando bloques en función de la tarea
que desempeñan. La programación se inició con el movimiento del motor que, como se ha
explicado en el apartado 5.2.2, da valores al motor en función de la dirección solicitada
y de la posición de la cabina. En la Figura 7.2 se ven cuatro botones debajo de la A y
de la B: al pulsarlos cambia el valor de la dirección para que vaya hacia arriba, hacia
abajo, se pare o no tenga valor. Como es una simulación, la activación y desactivación
de los sensores magnéticos debe hacerse de forma manual. Los botones de los sensores
se colocaron indicando con una H (High) si es el sensor de arriba o con una L (Low) el de
abajo de la planta. Con el fin de saber la velocidad que va adquiriendo la cabina durante
el movimiento, se dispone de un recuadro numérico que va adquiriendo los valores que
se le darı́an al motor en cada caso.

Cuando se terminó el análisis del motor, se fueron añadiendo los demás elementos
implicados en el movimiento. La base del funcionamiento de dos cabinas es igual al de
61

Figura 7.2: Simulación inicial de sólo dos cabinas

tres con la diferencia de que son más condiciones las que tiene que cumplir la lógica ante
llamadas realizadas en el exterior. Primero se realizó la programación de las cabinas A y
B y más adelante se añadió la cabina C como se ve en la Figura 7.3. La simulación final
realizada, aportaba muchos datos acerca de dónde estaban los errores de programación.
Por ejemplo, se ve a qué ascensor ha enviado la orden de llamada exterior iluminándose
las luces situadas a la derecha de los pulsadores de la cabina en cuestión. Las luces de
la izquierda se iluminan cuando se produce una llamada desde el interior de las mismas.

Hay que destacar la presencia de dos botoneras para las llamadas exteriores. Esto es
debido a que sólo se puede simular uno de los programas de los PLCs a la vez, siendo
los registros de las llamadas exteriores de los dos PLCs diferentes. Además, sólo se ven
si se han dirigido bien las llamadas exteriores teniendo que simular que las cabinas
A y B se encuentran moviéndose cambiando su estado. Para cambiar el estado de las
cabinas vale con presionar las flechas de subida o de bajada situadas encima de las
puertas. Asimismo, hay que recalcar el botón de conexión que simula la existencia de
comunicación entre ambos PLCs puesto que funciona de forma diferente el programa
con o sin ella.

Hay varias razones por la que se han añadido las tres cabinas en una misma pantalla
a pesar de que no se pueda ejecutar la simulación de las tres cabinas a la vez. Una de
las razones se acaba de comentar y es la de ver la asignación de las llamadas exteriores
cuando se encuentran los tres ascensores conectados. La otra es comodidad, puesto que
una vez que se simula uno de los programas y se quiere simular el otro a continuación,
no hay más que detener la simulación en CX-Programmer y activar la otra.

Gracias a CX-Designer, se pudieron comprobar diferentes casos para confirmar el


62 Chapter 7. Testeo y uso de autómata de simulación

Figura 7.3: Simulación completa de la maniobra de las tres cabinas

correcto funcionamiento del programa según lo esperado:

• Se comprobó que siempre que se activaba el modo automático, la primera acción


que realizaba era la de ir a la planta baja. Para efectuar dicha comprobación se fue
cambiando entre todos los estados posibles observando la actuación de la cabina
cuando se volvı́a al estado automático. Con esta prueba, también se revisa que
las variables cuyos valores han de ser modificados entre los modos, se cambien
correctamente.

• Se demostró el orden en el que se atienden las llamadas teniendo en cuenta la


diferencia entre las interiores y exteriores:

– Las llamadas interiores tiene que atenderse respetando el estado de la cabina,


es decir, si se encuentra subiendo, primero tiene que terminar de atender las
llamadas superiores a su posición antes de ocuparse las que se encuentran
por debajo.
– Para las llamadas exteriores su funcionamiento es igual a las interiores cuando
la cabina está bajando. Pero en el momento en que tiene que atender varias
llamadas superiores a su posición, ha de ocuparse en primer lugar de la
llamada más alta.
– También se verificó que, mientras se encuentra la cabina subiendo, atiende
correctamente las llamadas interiores y exteriores, es decir, que atiende todas
las llamadas interiores que se encuentra en su ascenso, pero que sólo atiende
la llamada exterior más alta. En el caso de que coincida una llamada interior
y una exterior habiendo una llamada exterior más alta, la cabina ha de
63

pararse en dicha planta eliminado ambas llamadas y posteriormente atender


la llamada superior. Se realizó el funcionamiento de este modo debido a que la
cabina está obligada a pararse en dicha planta y puede ser que los usuarios
decidan montarse en la cabina a pesar de que vaya a ascender.

• Se confirmó que la cabina no comenzaba la parada antes de tiempo, es decir,


una cabina que se encuentre saliendo de una planta y en ese preciso instante
se realiza una llamada a dicha planta, primero debe atender la llamada superior y
luego volver a la planta. Este test se realizó porque el programa podı́a considerar
que se está acercando a la planta, ya que sólo uno de los sensores de la planta
está accionado y activarı́a la parada. La consecuencia serı́a que la cabina se
desplazarı́a a la mı́nima velocidad hasta la siguiente planta con llamada.

• Se probaron todos los casos supuestos en la Figura 5.11 en los que se tienen
que asignar correctamente las llamadas exteriores. Para ello, se colocaron en la
simulación las cabinas en las posiciones indicadas y se observó que las llamadas
eran enviadas a la cabina correcta teniendo en cuenta el orden de prioridad de los
ascensores, siendo A el primero, B el segundo y C el último.
Al no poder simular los dos programas simultáneamente, hubo que ir especificando
la posición y el estado de las cabinas para comprobar su funcionamiento combina-
do.

Cabe destacar que se enseñó la simulación a otras personas permitiéndoles interac-


tuar con ella para constatar que se habı́an contemplado todos los escenarios posibles.
64 Chapter 7. Testeo y uso de autómata de simulación
Capı́tulo 8

Conclusiones y futuros trabajos

8.1. Conclusiones

A lo largo de esta memoria se han explicado los tres programas (CX-Programmer,


CX-Supervisor y CX-Designer) empleados en la creación del programa de control de los
prototipos de 3 ascensores, ası́ como una comparativa entre dos posibles tecnologı́as de
comunicación entre PLCs y la razón por la que se ha optado por Ethernet.

A pesar de que es mejor la tecnologı́a Ethernet/IP, se ha comprobado que para el caso


de la maniobra de las tres cabinas es posible el empleo de la comunicación vı́a Ethernet,
pudiendo considerarla como una conexión en tiempo real entre ambos PLCs. Es por ello
que tras las pruebas realizadas con las dos tecnologı́as, se ha empleado la que es más
económica puesto que ya se encuentra integrado en el módulo CJ1M.

Como para la programación de los PLCs se supuso que los ascensores se encuentran
en un bloque residencial, se considera que todo usuario que desea emplear los
ascensores desea bajar, exceptuando los de la planta baja que desean subir. La gran
mayorı́a del lenguaje empleado en la programación es Texto Estructurado, el cual es muy
similar a “C”, organizado en bloques que separan las diferentes tareas que desempeñan
para que la localización de posibles errores sea más rápida. Se dispone de comentarios
a lo largo del código como ayuda a la comprensión de lo programado. En todo momento
se realizó el programa de tal forma que fuese muy sencillo añadir o eliminar plantas al
sistema.

Uno de los aspectos más importantes de la programación en Texto Estructurado es


que hay que comprender bien su funcionamiento y la memoria que ocupa el empleo
de las diferentes instrucciones para la realización de un código optimizado. A pesar de
todos los métodos empleados para la optimización del código, no se ha podido incluir
toda la programación que se deseaba añadir. La parte excluida, aunque importante, no
es indispensable para el correcto funcionamiento de las cabinas. Debido al problema
de espacio al emplear el Texto Estructurado, se puede concluir que en estos PLCs de
OMRON el código más optimizado se realiza en Ladder.

En cuanto a la monitorización del sistema realizado en CX-Supervisor, se ha


demostrado que se puede realizar una interfaz gráfica de fácil uso para el operario que

65
66 Chapter 8. Conclusiones y futuros trabajos

tenga que supervisar la maniobra.

En las fases iniciales de la programación de los autómatas, es necesaria una


comprobación previa antes de ejecutar el programa en un PLC real. Es por ello que
se ha probado CX-Designer estableciendolo como sistema valido para la simulación de
los PLCs de OMRON.

El sistema completo ha sido testado y validado con ensayos realizados en el prototipo


del laboratorio de la Escuela de Ingenieros de San Sebastián (TECNUN). Al finalizar
las verificaciones oportunas, se puede afirmar que el prototipo de los tres ascensores
funciona correctamente de manera combinada entre las tres cabinas.

8.2. Futuros trabajos

Al prototipo de elevación programado se le ha realizado lo indispensable para lograr


el desplazamiento vertical de cualquier posible usuario que se introdujera en el mismo.
También se le han agregado algunos extras con el fin de realizar un movimiento
agradable al usuario y que sea eficiente en su funcionamiento. A pesar de ello, es posible
añadir más funcionalidades para mejorarlos.

La principal labor que habrı́a que realizar antes de implementar más funcionalidades
en el código es la de continuar la búsqueda de mecanismos para optimizar al máximo
el código realizado en Texto Estructurado. Aunque se han confeccionado diferentes
métodos para realizar una programación en la que se emplee el mı́nimo espacio posible,
sigue siendo un problema la extensión que ocupa el programa puesto que es un lı́mite
que no se puede rebasar y se encuentra actualmente al lı́mite.

Con nuevos mecanismos y con los ya mencionados en esta memoria, hay que
revisar exhaustivamente el código programado. Esto se debe a que cuando se empezó a
programar no se tenı́a en cuenta la capacidad que puede soportar el autómata, por
lo tanto, a pesar de haber repasado completamente el código, muy probablemente se
puedan realizar mejoras. La más importante de todas es la ya comentada en la memoria
(concretamente en la sección 5.3) sobre pensar que se está programando un PLC, no un
programa de ordenador. Por tanto instrucciones como se ven en la Figura 5.13 2 están
más optimizadas si se escriben como en 3 .

Una posible forma de aumentar el espacio es cambiar la forma en la que se asignan


las llamadas exteriores, por ejemplo, haciendo que para dicha asignación no influya el
estado de la cabina, sino sólo la distancia mı́nima a dicha llamada. Puede darse el caso
de que se encuentren los tres ascensores en la planta baja y que sea sólo uno de los
ascensores el que atienda todas las llamadas, provocando que la espera del usuario a
la cabina se alargue. Entonces se le añadirı́a la variable carga de trabajo. En ella se
almacenarı́a la cantidad de acciones que debe realizar una cabina, dando la orden a la
cabina que menor carga de trabajo tenga y menor sea su distancia.

Siguiendo con la comodidad del usuario que va a emplear la cabina, serı́a interesante
aplicar una operación en la que, pasado un tiempo de inactividad de las cabinas, se
coloquen en posiciones donde es más probable que se solicite su llamada. Por ejemplo,
Section 8.2. Futuros trabajos 67

que se colocasen dos de ellas en la planta baja y la tercera en un piso intermedio. Como
este prototipo es de cuatro plantas, que se colocase en la última planta. Otra opción
serı́a que se fuesen moviendo las cabinas para intentar que siempre haya un ascensor
en la planta baja y otro en la planta intermedia (en este caso la última) para mejorar aún
más los tiempos de espera.

El teclado sólo se emplea para las llamadas y como atajo para cambiar entre el modo
mantenimiento y el automático, por lo que otra funcionalidad que podrı́a añadirse serı́a
la posibilidad de más atajos de teclado. Los atajos del teclado, aparte de conmutar entre
los diferentes modos de funcionamiento, podrı́an obligar a la cabina a ir directamente a
un determinado piso ignorando el resto de llamadas. Para ceñirnos más a lo que ocurre
en la realidad, habrı́a que pulsar los botones de cerrar las puertas y el piso de destino y
deberı́a funcionar inclusive en el modo bomberos.

En cuanto a los mecanismos de seguridad implementados en el ascensor, son


diversos los que se pueden aplicar. Se destacan algunos a continuación:

• Colocación de un encoder en el motor con el fin de conocer la velocidad y la


dirección exacta que está tomando la cabina en todo momento. De esta forma se
podrı́a limitar la velocidad de las cabinas.

• Finales de carrera por debajo de la planta baja y por encima de la última planta,
para restringir un mal funcionamiento de las cabinas y evitar daños estructurales.

• Sistema de detección de sobrecarga en la cabina.

• Baterı́as de emergencia, para que el ascensor pueda terminar el movimiento que


estaba realizando cuando se queda sin corriente y ası́ evitar que quede alguien
atrapado.

• Sensores de temperatura para detectar si se recalienta el motor o si se ha producido


un incendio.

El prototipo fı́sico es mejorable creando una cabina que disponga de una puerta
corredera. A dicha cabina se le puede añadir un detector de infrarrojos en la puerta para
impedir que se cierre ésta cuando haya un objeto o persona pasando en ese momento.
También se podrı́a crear un sistema de iluminación interior en la cabina que sólo se
encienda cuando se abra la puerta o haya pasajeros a bordo.

Serı́a de gran utilidad la implementación de un sistema de adquisición de todos los


cambios que se van produciendo en el sistema para la posterior búsqueda de las posibles
causas de fallos o para la recopilación de las posiciones que toma la cabina para su
posterior estudio. A partir de él, se puede modificar la prioridad de acceso de una cabina
a una planta utilizando las estadı́sticas de los lugares más frecuentes. La recopilación
de los datos se puede realizar desde el SCADA realizado en CX-Supervisor, sin necesidad
de emplear sistemas adicionales.

Para finalizar, el cambio más importante que se puede realizar es el de cambiar


el concepto de cómo se asignan las llamadas exteriores a las diferentes cabinas, es
decir, cambiar el algoritmo convencional empleado por el de la lógica difusa o las redes
68 Chapter 8. Conclusiones y futuros trabajos

neuronales explicados en el capı́tulo 2. Esto implicarı́a obligatoriamente el cambio de


controlador de la maniobra o el empleo de los PLCs de OMRON para el control de la
cabina más un sistema externo con más memoria y capacidad de procesamiento donde
implementar la asignación de las llamadas exteriores. Esta reestructuración se deberı́a a
la complejidad de todo el sistema y a la necesidad de mucha memoria y mucha capacidad
de procesamiento.

Con todos estos datos, serı́a necesario hacer un estudio rápido para saber si
compensa realmente invertir más horas de trabajo en la optimización del código para
conseguir implementarlo completamente o probar a utilizar otro PLC en el que la
capacidad de almacenamiento del programa no sea un impedimento. Llegado a este
punto, el empleo de otro PLC es la solución definitiva, ya que se puede optimizar el
programa ya realizado y además permitirı́a la adición de mejoras en la maniobra como
añadir más mecanismos de seguridad.
Bibliografı́a

[1] PLCopen. http://http://www.plcopen.org//.

[2] The Elevator Museum. http://www.theelevatormuseum.org/.

[3] Andrew G Crites, Robert H / Barto. Elevator group control using multiple
reinforcement learning agents. Machine Learning, 33(2-3):235–262, 1998.

[4] Rosso Mateus A. E. / Soriano J. J. Sistema de control inteligiente para un grupo de


elevadores. Ciencia e Ingenierı́a Neogranadina,, 2008.

[5] David M. Freeman, James A. / Skapura. Redes neuronales: Algoritmos, aplicaciones


y técnicas de programación. 1993.

[6] Erdem Imrak C. / Özkirim M. Determination of the next stopping floor in elevator
traffic control by means of neural networks. Journal of electrical & electronics
engineerig - Istambul university, 2006.

[7] Keith W. Ross James F. Kurose. Redes de computadoras. Un enfoque descendente.


Quinta edition, 2010.

[8] E.G. / Mejı́a Becerril F. / Moreno Alarcón H. E. Garrido Macı́as. Sistema de control
de posición de un motor a pasos, aplicado a un elevador utilizando redes neuronales
artificiales. PhD thesis, Instituto politécnico nacional.

69

Das könnte Ihnen auch gefallen