Beruflich Dokumente
Kultur Dokumente
III
IV 0. Resumen
Índice general
Resumen III
1. Introducción 1
1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1. Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5. Programación 31
V
VI ÍNDICE GENERAL
5.2.2. Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6. SCADA 53
8.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
VII
VIII ÍNDICE DE FIGURAS
5.9. Grafcet que da las órdenes al motor en función de los vectores ascensor y
ascensorext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3. Relaciones entre los posibles valores dados al motor, los voltajes que
producen y las velocidades que generan . . . . . . . . . . . . . . . . . . . . 38
IX
X ÍNDICE DE TABLAS
Capı́tulo 1
Introducción
1.1. Motivación
1
2 Chapter 1. Introducción
1.2. Objetivos
• Testeo: Comprobar que todas las partes funcionan como se habı́a propuesto.
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
CX-Programmer
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
2.1. Historia
Figura 2.1: Primer ascensor accionado por una máquina. Derby, Inglaterra
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.
• 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.
• 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.
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.
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.
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.
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
• Cuerpo de la célula: Puede tener uno o dos núcleos que se encargan de procesar
la información y dar una respuesta.
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.
X1 W1
X2 W2 ∑ Y
Xn Wn
Función de Función de
Entradas Pesos Salidas
propagación activación
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.
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
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).
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.
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-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
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:
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
• 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:
• 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:
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.
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
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
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.
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
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.
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.
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.
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.
• 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
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.
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.
PLC 1 PLC 2
Ethernet
Ethernet
8K
24 V Entrada Salida
24 V
Digital digital
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.
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
1. Inicialización inicial: sólo se ejecuta una vez al inicio en el arranque del PLC.
4. Tiempo de ciclo del programa: tiempo máximo que tiene el programa para
ejecutarse.
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
Refresco I/O
t
0
Ciclo scan
• 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.
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.
Reinicio variables
Modo Automático
Parada emergencia
Proceso en defecto
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.
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.
Ningún botón
Quieto presionado
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
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
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:
Tabla 5.3: Relaciones entre los posibles valores dados al motor, los voltajes que producen
y las velocidades que generan
Llegada a
una planta
Quieto
Dirección Dirección
motor = 1 motor = -1
Sube Baja
Dirección_motor = 0
Desacelera Desacelera
hacia arriba hacia abajo
Mínima velocidad
Minima Minima
velocidad velocidad
subiendo bajando
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.
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
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
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:
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
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
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).
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
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
A B A B
Piso llamada
B A A B
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
Localización Lenguaje
AscensorC Tarea Start en la sección Comunicaciones Ladder
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
• 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).
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).
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
1 1 0 0 0 0
Localización Lenguaje
AscensorC Tarea Start en la sección Comunicaciones Ladder
puede seguir afirmando que la transmisión que se realiza entre los 2 PLCs es en tiempo
real.
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
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.
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.
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.
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ó.
SCADA
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
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
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.
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
deseado o bien empleando los botones de más y menos situados a su derecha que
aumenta o disminuye en una unidad su valor.
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.5: SCADA de los sensores que se encuentran funcionando en ese momento
58 Chapter 6. SCADA
Capı́tulo 7
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.
59
60 Chapter 7. Testeo y uso de autómata de simulación
Arranque de la
simulación Aceso rápido
al registro
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.
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
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.
• 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.
8.1. Conclusiones
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.
65
66 Chapter 8. Conclusiones y futuros trabajos
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 .
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.
• 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.
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.
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
[3] Andrew G Crites, Robert H / Barto. Elevator group control using multiple
reinforcement learning agents. Machine Learning, 33(2-3):235–262, 1998.
[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.
[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