Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
ESCUELA SUPERIOR DE INGENIEROS
2010
AHMED CHAKKOUR
TUTOR: FERNANDO CASTAÑO
16/09/2010
INTEGRACIÓN DE EQUIPOS DE CONTROL DE UNA CÉLULA FLEXIBL DEDICADA A
FORMACIÓN
2
1. INTRODUCCIÓN: OBJETO DEL PROYECTO _______________________ 4
2. DESCRIPCIÓN DE LAS INSTALACIONES __________________________ 5
2.1 BANDEJAS ____________________________________________________________ 6
2.2 ALMACEN ASRS2 _____________________________________________________ 7
3. DESCRIPCIÓN DEL SISTEMA DE AUTOMATIZACIÓN ______________ 9
3.1 ENTRADAS ___________________________________________________________ 9
3.2 SALIDAS ____________________________________________________________ 10
3.3 AUTOMATA M340 ____________________________________________________ 11
3.4 CONTROLADOR-B (ALMACÉN ASRS2) ________________________________ 12
3.5 SCADA ______________________________________________________________ 13
3.6 OPC: COMUNICACIÓN VÍA OPC ______________________________________ 14
4. INTEGRACION DE LOS EQUIPOES Y RED DE COMUNICACIÓN
ETHERNET ________________________________________________________ 15
5. ESPECIFICACIONES DE FUNCIONAMIENTO _____________________ 16
6. MEMORIA DE PROGRAMACIÓN __________________________________ 18
6.1 CREACIÓN DEL PROYECTO __________________________________________ 18
6.2 COMUNICACIÓN_____________________________________________________ 23
6.3 TAREAS PROGRAMADAS _____________________________________________ 23
6.4 GESTIÓN DE CINTA __________________________________________________ 26
6.5 GESTION DE CRUCE _________________________________________________ 30
6.6 LECTOR DE CÓDIGO DE BARRAS _____________________________________ 31
6.7 VELOCIDAD CINTAS ________________________________________________ 33
6.8 SIMULACIÓN DE MOVIMIENTO DE LAS BANDEJAS ____________________ 36
6.9 POSICIÓN DE LAS BANDEJAS _________________________________________ 42
6.10 MODIFICACIÓN DE LA MATRIZ DE TIEMPOS ________________________ 43
6.11 SIMULACIÓN DE LAS BANDEJAS: VIJEO SCADA ______________________ 44
7. MEMORIA DE PROGRAMACION: CASO PRÁCTICO ________________ 46
7.1 PROCESO ESTRUCTURA Y CODIFICACION ___________________________ 46
7.2 COMUNICACIÓN_____________________________________________________ 47
7.3 ALMACÉN: ESTRUTURA Y CÓDIGO ___________________________________ 48
7.4 AUTÓMATA _________________________________________________________ 58
7.5 PROCESO DE ENTREGA Y RECOGIDA (Tareas “almacenP1”, “almacenP2”) _ 60
7.6 GRAFCET (RUTAS) ___________________________________________________ 64
7.7 MONITORIZACIÓN CON SCADA ______________________________________ 70
3
8. GUÍA DE USO DE LA PRÁCTICA ___________________________________ 71
4
1. INTRODUCCIÓN: OBJETO DEL PROYECTO.
Este proyecto tiene por objeto la realización de una serie de programas de control y
supervisión de una célula de fabricación flexible, ubicada en los laboratorios
del Departamento de Ingeniería de Sistemas y Automática de la Escuela superior de
Ingenieros. El uso al que se destina la instalación es puramente docente, sirviendo de
plataforma de ensayos y programación por parte de alumnado y profesores, sin
embargo, la plataforma está constituida por componentes industriales, tanto en la parte
de accionamientos como en la parte de mandos.
Este proyecto se puede encuadrar dentro de los proyectos de automatización en los que
se parte de una estructura física ya creada, y lo que se pretende es el diseño de
programas que gestionen, de forma conveniente y según los usos, la planta.
La célula, básicamente, está dividida en dos zonas, una es un almacén para bandejas que
pueden portar piezas, y otra un circuito de cintas transportadoras que pueden llevar las
bandejas desde el almacén a distintos puntos de trabajo, el circuito está cerrado de
manera que las piezas tratadas pueden volver al almacén. Figura Nº1
Los objetivos fundamentales que se presentan en este proyecto se pueden desglosar en
los siguientes puntos:
1. Funcionamiento de la célula controlada por el autómata.
2. Funcionamiento de un programa SCADA: se dedica a la supervisión y
monitorización del proceso.
3. Funcionamiento del almacén automatizado, mediante su controlador.
4. Comunicación entre los distintos módulos.
5. INTEGRACION de los tres equipos para que funcionen de forma coordinada.
6. Generación de una aplicación diseñada para la realización de prácticas por parte
de alumnos que no estén familiarizados con los equipos de automatización, pero
estén interesados en desarrollar otros aspectos de control de producción.
7. Generación de una guía de usuario para dichas estas prácticas.
El desarrollo del proyecto se hace en dos partes: la primera de estas se dedica a
gestionar por completo el paso de las bandejas a lo largo de cinco cintas transportadoras
que forman la célula y donde se plasmarían los dos primeros, el cuarto y el quinto
objetivos. Esta parte servirá de plataforma para aplicaciones futuras, entre estas el caso
práctico.
La comunicación entre el SCADA y el autómata se gestiona a través de un servidor, que
desarrolla una arquitectura de comunicaciones abierta y efectiva que se centre en el
acceso a los datos entre los equipos.
La segunda parte trataría de realizar un proceso productivo más real o sea es un caso
práctico de lo realizado. El objetivo es adaptar o/y programar en el autómata unas
rutinas que facilitan la correcta realización de la aplicación que está dirigida a los
alumnos de organización que no están familiarizados con los sistemas de control, pero
interesados en realizar otros aspectos de control de producción.
5
Para esta aplicación, se ha generado un guía de usuario para dicha aplicación, donde se
explicarían todos los pasos y consignas, que se debe realizar antes y durante la
realización de la misma, incluyendo los pasos a seguir en caso de errores, sean estas de
parte del operador (alumnado) o propias del sistema.
Figura 1: Almacén
2. DESCRIPCIÓN DE LAS INSTALACIONES:
Se dedica este apartado a describir de forma detallada los componentes de la instalación
que no forman parte del sistema de control, dejando este último para el siguiente
apartado. Como se mencionó en la introducción, la célula se divide en circuito y
almacén. El circuito en sí lo forman cintas transportadoras que son las responsables del
movimiento de las bandejas por arrastre. Cada una dispone en su parte inferior de un
motor responsable a su vez de su movimiento.
En la figura Nº1 se puede observar que las cintas uno, dos, tres y cuatro forman un
circuito cerrado, lo que permite a las bandejas acceder a cualquier punto del circuito.
La última cinta Nº5 presenta junto con la primera un cruce (bifurcación) tipo T
invertida, y como no tiene ninguna conexión con las otras cintas se le instaló un motor
que realiza el movimiento hacia la izquierda, siendo la única cinta que se mueve en los
dos sentidos.
6
A continuación se detalla el resto de los elementos en puntos separados para mayor
claridad.
2.1 BANDEJAS:
Figura 2: Bandeja
Son unos elementos de transporte de las piezas y arrastradas por el movimiento de las
cintas. Las bandejas disponen de unas plaquitas en sus cuatro laterales de 4 cm
aproximadamente y otras en la base de bandeja justo en los extremos como indica la
figura Nº:2, que son los responsable de activar los sensores de inducción, también
disponen de un surco que permite el paso de la bandeja a través del retenedor. Este
surco termina al final de la bandeja, para dejarla enganchada al retenedor, en caso de
que se quiere retenerla.
Los sensores y los retenedores se detallarán en el apartado dedicado al sistema de
control.
Figura 3: Placas metálicas
CINTA
TRASPORTADORA
Plaquitas
Metálicas
7
2.2 ALMACEN ASRS2:
El almacén está situado fuera del circuito y justo a la izquierda del cruce, de tal manera
que el robot que lleva incorporado pueda alcanzar a la cinta Nº2, permitiendo el
intercambio de piezas entre este y el circuito.
Responsable de proveer el circuito de material y almacenar dicho material cuando
termina su fabricación, el almacén se compone físicamente de cuatro partes: Almacén
propiamente dicho, Robot, Controlador-B y un ordenador personal, las últimas tres
partes se detallarán más tarde, ya que pertenecen a equipos de control.
Almacén: Es el almacén propiamente dicho que dispone de células de almacenamiento,
y cuyo objetivo es almacenar los productos. Como se ve en las figuras Nº4 y Nº5, se
divide en dos partes, donde cada una se conforma de seis filas, y cada fila se compone
de seis células.
Figura 4: Almacén ASRS2
8
Figura 5: Almacén ASRS2
9
3. DESCRIPCIÓN DEL SISTEMA DE AUTOMATIZACIÓN: En esta sección se realiza una descripción del sistema de automatización de la
instalación: equipos (robot, plc, pc, etc.), sensores, actuadores, software, SCADA, etc.
Estas entradas y salidas serán unas señales como su nombre indica de entrada/salida al
autómata que en este caso sería MODICON 340 que se detallará más tarde.
En las entradas estarán el grupo de los sensores de inducción responsables de la
detección de las bandejas, el estado de la válvula general y el grupo de parada y marcha.
Las salidas serán el grupo de las válvulas que actúan sobre los retenedores y elevadores,
el segundo grupo lo agrupan los actuadores de marcha de los motores de las cintas y
finalmente el activador de la válvula general.
Pero para mejor monitorización y simplicidad de la aplicación se incluye una aplicación
en SCADA en este caso sería de Vijeo Citect y un servidor de comunicación OPC que
enlaza el SCADA y el autómata.
En lo sucesivo se detalla cada uno de estos componentes con una visión general de
cada dispositivo. Se empezará por los dispositivos responsables de generar señales de
entradas y los de salidas. Después se pasa a explicar también de forma genérica el PLC
MODICON 340, al servidor OPC, una introducción a SCADA y finalmente la
integración de todos estos equipos.
3.1 ENTRADAS:
El primer grupo de entradas estarían los sensores que son los responsables de generar
señales de entrada al PLC.
En el apartado de bandejas ya se comentó que estas últimas llevaban una plaquitas
metálicas, estas son las responsables de activar los sensores inductivos situados en el
soporte fijo de las cintas. Los sensores inductivos son una clase especial de sensores
que sirven para detectar materiales metálicos ferrosos, contienen un devanado interno
que cuando una corriente circula por el mismo, un campo magnético es generado, y
cuando un metal es acercado a este campo magnético, éste es detectado.
Estos sensores se les representa con la letra S seguida de un numero identificativo y
junto con los actuadores (retenedores y elevadores) gestionan el movimiento de las
bandejas que serán transportadas por las bandejas a lo largo de las cintas.
El sistema automático debe tener una botonera de marcha-parada, no se trata de un
dispositivo físico, solo son señales de otro grupo de entradas del sistema que se deben
programar. En la parte de DESARROLLO DE LA APLICACIÓN se analizará el
cometido de cada una.
Otro grupo de entrada serían en este caso las correspondientes a las salidas del
controlador del almacén, estas entradas y como se verá en el apartado de
10
DESARROLLO DE LA APLICACIÓN, sirven mediante un protocolo de
comunicación en saber en qué estado está el almacén, para que el PLC gestione sus
tareas.
La última entrada se destinará a detectar el estado de la válvula general responsable de
suministrar el aire comprimido, que dispone de un sensor integrado en la misma, y que
manda una señal al PLC.
3.2 SALIDAS:
Contempla tanto los retenedores, elevadores y actuadores de marcha-paro de los
motores de las cintas.
Los retenedores impiden el movimiento libre de las bandejas en el circuito y se precisa
activarlos para tal caso, se les representan con la letra Y seguida de un numero
identificativo. Lo mismo se puede decir de los elevadores en lo referente a su
activación, pero su función es dejar pasar las bandejas de una cinta a otra.
Tanto los retenedores y los elevadores se sirven de una instalación de aire comprimido,
que dispone de una válvula general que tiene como misión la de enlazar la célula y una
línea de suministro de aire comprimido. Cada retenedor y elevador lleva incorporado
una electroválvula que activa o desactiva mecanismos de retención o de elevación
mediante mecanismos mecánicos activados.
Finalmente los actuadores de marcha-paro de los motores representan las últimas salidas
físicas de autómata, que al activarlos (SET) pone en marcha el motor correspondiente y
en consecuencia hace mover una de las cintas.
11
3.3 AUTOMATA M340:
Figura 6: Autómata M340
Para gestionar la célula se dispone del autómata M340, situado en la parte inferior de la
instalación junto al cuadro eléctrico de los dispositivos de la instalación.
Figura 7: Cuadro eléctrico
El autómata logra a partir de unas entradas generar señales de control de los actuadores,
pero antes de entrar en los detalles se describe las propiedades y características del
autómata en cuestión.
Modicon M340: incorpora un puerto USB en todas las CPUs así como dos puertos de
comunicaciones adicionales integradas (se puede elegir entre Ethernet, Modbus o
CANopen).
AUTOMATA
M340
12
En el proyecto se usará el software Unity Pro es una herramienta de software destinada
a programar los autómatas Telemecanique Modicon Premium, Modicon Quantum y
Modicon Atrium.
En la lista siguiente se describen brevemente los bloques de Unity Pro necesarios para
el desarrollo del proyecto.
Lenguajes de programación:
Unity Pro proporciona los lenguajes de programación siguientes para crear el programa
de usuario:
diagrama de bloques de funciones (FBD),
lenguaje de diagrama de contactos (LD),
lista de instrucciones (IL),
texto estructurado (ST) y
control secuencial (SFC).
Todos estos lenguajes de programación pueden utilizarse juntos en el mismo proyecto y
Todos cumplen con la norma IEC 61131-3.
Bibliotecas de bloques:
Los bloques que se incluyen en el envío de amplias bibliotecas de bloques Unity Pro
comprenden desde los bloques para realizar simples operaciones booleanas, pasando por
los bloques para realizar operaciones de cadenas de caracteres y matrices, hasta los
bloques para controlar complejos bucles de control.
Para obtener una vista general más sencilla, los distintos bloques se organizan en
bibliotecas que, a su vez, se descomponen en familias.
Los bloques pueden utilizarse en los lenguajes de programación FBD, LD, IL y ST.
Elementos de un programa:
Se dividen en tareas maestro eventos y subrutinas SR. Las tareas maestro (MAST), se
ejecutan de forma independiente y paralelamente, el PC se encargará de controlar las
prioridades de ejecución.las tareas se adaptan a las diversas necesidades, de forma que
constituyen un potente instrumento para estructurar el proyecto.
3.4 CONTROLADOR-B (Almacén ASRS2):
Como ya se comentó en la anterior sección el almacén se divide en cuatro partes. Se
comentó la parte del almacén. Ahora se explica en general los puntos más importantes
del mismo:
Robot: Esta en medio del armario para facilitarle la cogida de las piezas de los
dos lados. Este robot dispone de una pinza con la cual al abrir y al cerrar se
consigue soltar o coger las piezas.
El sistema de coordenadas que se va a utilizar son las cartesianas (XYZ) con θ
como eje de rotación, en todas las operaciones y programaciones se utilizara este
13
sistema, ya que existen ya programadas algunas rutinas que se sirven de base al
proyecto, la figura Nº4 se refleja el sistema cartesiano adoptado en el almacén.
CONROLADOR B:
Como su propio nombre indica es el dispositivo que se encarga
mediante el programa de control ACL que está alojado en su memoria
EPROM, de controlar el almacén (todos sus dispositivos). Se conectarán
a él aparte del robot, la botonera de enseñanza, un ordenador mediante un
cable RS-232 al puerto consola del controlador, ENTRADAS/SALIDAS
en este caso sería al autómata de la cinta transportadora, también se le
conecta la pinza del robot y el INTERRUPTOR REMOTO DE
EMERGENCIA situado en el frontal del almacén.
Ordenador personal: en él se realizan las tareas y los
programas del proyecto. Mediante el interfaz ATS (ADVENCES
TERMINAL SOFTWARE) es un entorno de interfaz de usuario
para el controlador ACL (permite el acceso al ACL desde un PC)
y viene suministrado en un disquete y se ejecuta como se
mencionó anteriormente en el PC.
Antes de seguir se debe aclarar y profundizar un poco en el ACL. Este lenguaje es un
lenguaje de control avanzado, multitarea, desarrollado por ESHED ROBOTEC (1982)
Ltd.
Como se mencionó antes el ACL está almacenado en memorias EPROM dentro del
Controlador-B y se puede acceder a él con cualquier PC estándar o terminal.
Con este breve resumen sobre la instalación se puede adentrar en el proyecto, pero para
más información se recomienda consultar los siguientes anexos: Almacén ASRS2,
ALmacen_ATS_REFERENCE_GUIDE,Almacen_controlador_B,
Almacen_controlador_B_manual,Almacen_Teach_pendant_control,
Almacen_ACLoff-line_Manualusuario, Almacen_ACL_lenguajedecontrol.
3.5 SCADA:
Otro software en el que se basa el proyecto sería el del Vijeo Scada que proporcionará
información de todos los procesos en la pantalla del ordenador.
Es una aplicación de software especialmente diseñada para funcionar sobre ordenadores
en el control de producción, proporcionando comunicación con los dispositivos de
campo (controladores autónomos) y controlando el proceso de forma automática desde
la pantalla del ordenador. También provee de toda la información que se genera en el
proceso productivo a diversos usuarios, tanto del mismo nivel como de otros usuarios
14
supervisores dentro de la empresa (supervisión, control calidad, control de producción,
almacenamiento de datos, etc.).
Comprende todas aquellas soluciones de aplicación para referirse a la captura de
información de un proceso o planta, no necesariamente industrial, para que, con esta
información, sea posible realizar una serie de análisis o estudios con los que se pueden
obtener valiosos indicadores que permitan una retroalimentación sobre un operador o
sobre el propio proceso, tales como:
Indicadores sin retroalimentación inherente (no afectan al proceso, sólo al
operador):
o Estado actual del proceso. Valores instantáneos;
o Desviación o deriva del proceso. Evolución histórica y acumulada;
Indicadores con retroalimentación inherente (afectan al proceso, después al
operador):
o Generación de alarmas;
o HMI :Human Machine Interface (Interfaces hombre-máquina);
o Toma de decisiones:
Mediante operatoria humana;
Automática (mediante la utilización de sistemas basados en el
conocimiento o sistema experto).
Resumiendo SCADA es un sistema central que monitorea y controla un sitio completo o
una parte de un sitio que interesa controlar (el control puede ser sobre máquinas en
general, depósitos, bombas, etc.)
Por ejemplo un PLC puede controlar el flujo de agua fría a través de un proceso, pero un
sistema SCADA puede permitirle a un operador cambiar el punto de consigna (set
point) de control para el flujo, y permitirá grabar y mostrar cualquier condición de
alarma como la pérdida de un flujo o una alta temperatura. La realimentación del lazo
de control es cerrada a través del PLC; el sistema SCADA monitorea el desempeño
general de dicho lazo.
El sistema SCADA también puede mostrar gráficas con históricos, tablas con alarmas y
eventos, permisos y accesos de los usuarios...
3.6 OPC: COMUNICACIÓN VÍA OPC:
Para la comunicación entre los distintos dispositivos (M340, Ordenador, Scada) se
dispone un servidor OPC.
De modo general el OPC especifica parámetros para la comunicación en tiempo real
entre diferentes aplicaciones y diferentes dispositivos de control de diferentes
proveedores. Se configurará en este proyecto para una comunicación OPC con Vijeo
Citect y con el PLC M340 (Unity), para ello se dispone también del paquete de OFS de
Schneider Electric.
15
4. INTEGRACION DE LOS EQUIPOES Y RED DE
COMUNICACIÓN ETHERNET:
La integración de los mismos (PLC, SCADA, SERVIDOR) o su arquitectura
informática se hacen en tres niveles:
Nivel de campo: información sobre los dispositivos de instrumentación (estado,
constitución, configuración, etc.) encargándose de esta el autómata y el
controlador del almacén.
Nivel de monitorización: datos sobre el proceso productivo adquirido y
procesados por sistemas SCADA.
Nivel de comunicación: entre el autómata y el SCADA se establece un servidor
de comunicaciones abierta y efectiva que se centre en el acceso a los datos, no en
los tipos de datos. Sirviéndose de una red ETHERNET. El cual es un estándar de
redes de área local con acceso al medio por contienda CSMA/CDes Acceso
Múltiple por Detección de Portadora con Detección de Colisiones"), es una
técnica usada en redes Ethernet para mejorar sus prestaciones.
En resumen el esquema siguiente representa la situación de todos los equipos y su red
de comunicación
Figura 8: Comunicación
16
5. ESPECIFICACIONES DE FUNCIONAMIENTO:
El proyecto debe cumplir con las especificaciones y consignas para el
funcionamiento de las instalaciones o por parte del cliente (en este caso sería el
departamento de organización y gestión de Empresas). Estas especificaciones se
deberían plasmar en el proyecto.
De esta manera la primera parte se dedicaría a gestionar por completo el paso de las
bandejas a lo largo del circuito contemplando las esquinas o el paso de una cinta a otra.
Otra de las especificaciones sería simular el paso de las bandejas en todo momento y su
identificación.
La segunda parte trata la fabricación o procesado de dos productos diferentes P1 y P2,
estos dos productos tendrán que pasar por tres máquinas (puestos de trabajo), situados
en el mismo circuito y cada producto tendrá un tiempo de procesado.
En este apartado del proyecto no se adentrará en la naturaleza de los procesos en sí, sino
en el tiempo que va a permanecer la bandeja en cada puesto de trabajo (Puesto1,
Puesto2, Puesto3).
Se define como ruta el circuito que realiza una bandeja, pasando por los tres puestos.
En otras palabras cada ruta se caracteriza por tres tiempos de permanencia en los
puestos programados. Lo cual cada producto (bandeja) sea P1 o P2 tendrá una ruta
predeterminada.
Los productos inicialmente estarán almacenados en el almacén, donde los productos P1
que no hayan sido procesados ocupan las tres filas primeras o sea desde la primera
posición hasta la 18 posición.
De la 19 a 36 las posiciones serán reservadas al producto P1que haya sido procesado o
mejor dicho terminado.
Para el producto P2 se le reserva la parte derecha, donde inicialmente también se
dispone de este producto en las primeras filas, desde la posición 37 a 54, las últimas tres
filas (de la posición 54 a 72) se reservan para almacenar P2 procesado. En definitiva las
tres primeras tanto para el lado de la izquierda como el de la derecha se reservarían para
productos primitivos y las tres últimas para almacenar los productos acabados.
El almacén debe servir los productos P1 y P2, a la cinta cuando la bandeja se coloca a
su altura (posición del sensor S14). Esta bandeja inicia su ciclo a sabiendas que ya tiene
una ruta programada distinta o igual a la antecesora.
Cuando llega a la primera parada (Máquina 1), la bandeja se queda el tiempo
programado para el proceso TR1_i segundos, donde i es la ruta programada para esta
bandeja (producto) y 1 indica la máquina en cuestión.
17
El mismo proceso se repite cuando llega la bandeja a la segunda parada, se para durante
TR2_i segundos, i sigue la misma porque la bandeja tiene que recorrer su circuito
(proceso). Lo mismo ocurre en la tercera parada.
En las siguientes tablas se ilustra un ejemplo numérico de lo que se comentó
anteriormente:
TABLA 4.1
Productos Demandas
P1 15
P2 20
Para el producto P1:
TABLA 4.2
MAQUINAS RUTAS TIEMPOS
MAQUINA1
R1 40
R2 15
R3 0
R4 25
R5 0
MAQUINA2
R1 0
R2 0
R3 0
R4 15
R5 15
MAQUINA3
R1 0
R2 30
R3 60
R4 0
R5 30
Para el producto P2:
TABLA 4.3
MAQUINAS RUTAS TIEMPOS
MAQUINA1
R1 30
R2 0
R3 0
R4 30
R5 0
MAQUINA2
R1 40
R2 40
18
R3 50
R4 0
R5 10
MAQUINA3
R1 0
R2 20
R3 0
R4 50
R5 50
Los productos se suministran de forma secuencial y no se sirve el siguiente hasta
que no se recoja el anterior.
Nota: Como se puede ver en las tablas dentro de una ruta el tiempo de procesado en una
de las maquinas es cero. Eso significa que no es necesario que algunos productos tengan
que pasar a la fuerza por todas las maquinas.
Como se introduce en esta apartado la instalación del almacén se tendría que adaptar la
primera parte a los requisitos de la aplicación y limitaciones de esta incorporación
haciendo uso de la programación en GRAFCET, que presenta ventajas a nivel de
secuenciación de órdenes.
Se debe monitorizar la instalación desde un entorno gráfico que se debe crear antes,
conteniendo botoneras para el paro y la marcha, también contener una recreación
gráfica parecida a la instalación y donde se representa el estado de las cintas, sensores,
actuadores, elevadores y retenedores. Se visualizarán las bandejas y su movimiento a lo
largo de la instalación. Esto es aplicable para las dos partes del proyecto teniendo en
cuenta sus excepciones.
Se debe al final crear un guía de uso para la realización correcta de la aplicación por
parte del alumnado.
6. MEMORIA DE PROGRAMACIÓN:
6.1 CREACIÓN DEL PROYECTO:
El desarrollo de un proyecto en Unity requiere su creación y asociarlo a un autómata.
El procedimiento seguido es abrir en Unity un proyecto nuevo y escoger como indica la
siguiente figura que tipo de autómata. Como la comunicación se realiza a través del
modbus Ethernet, entonces se abre el Unity pro, y se escoge la opción BMX P34 2020:
19
En el explorador de proyectos, para el primer bastidor se configura a módulo BMX
DDI 6402 K que es un módulo binario de 24 VCC conectado a través de dos conectores
de 40 pins. Es un módulo de lógica positiva (o común positivo): los 64 canales de
entrada reciben corriente de los sensores.
Para Las salidas (actuadores) se configura el segundo bastidor a módulo BMX DDO
6402 K es un módulo binario de 24 VCC conectado a través de dos conectores de 40
pins. Es un módulo de lógica positiva (o común negativo): los 64 canales de salida
proporcionan corriente a los preactuadores.
DECLARACIÓN DE VARIABLES:
Se procede en UNITY PRO en variables elementales a definir las variables de entrada
y salida con sus correspondientes direcciones, estas variables no son las únicas se va a
definir. Las primeras variables a definir serán los sensores (entradas) y actuadores
(salidas) que describen a continuación junto a su dirección en M340.
TABLA 6.1
Ant. nombre entrada M340
E0.0 PRESOSTATO P1 I 0 E0.3 ENTRADA DESVÍO 1 sensor S1 I 1
E0.4 PALET EN ELEVADOR
1
sensor S2 I 2
E0.5 SALIDA DESVÍO 1 sensor S3 I 3
E0.6 ENTRADA DESVÍO 2 sensor S4 I 4
E0.7 WIPER DESVÍO 2 sensor S5 I 5
E1.0 ENTRADA DESVÍO 3 sensor S6 I 6
E1.1 PALET EN ELEVADOR
3
sensor S7 I 7
Figura 9: Creación del proyecto en el autómata
20
E1.2 SALIDA DESVIO 3 sensor S8 I 8
E1.3 ENTRADA DESVÍO 4 sensor S9 I 9
E1.4 WIPER DESVIO 4 sensor S10 I 10
E1.5 ENTRADA DESVIO 5 sensor S11 I 11
E1.6 PALET EN ELEVADOR
5
sensor S12 I 12
E1.7 WIPER DESVÍO 5 sensor S13 I 13
E2.0 SALIDA DESVÍO 5 sensor S14 I 14
E2.1 PRESENCIA
ENTRADA ROBOT
sensor S15 I 15
E2.2 PRESENCIA SALIDA
ROBOT
sensor S16 I 16
E2.3 PRESENCIA
ENTRADA ROBOT 2
sensor S17 I 17
E2.4 PRESENCIA SALIDA
ROBOT 2
sensor S18 I 18
E2.5 PRESENCIA
ENTRADA ROBOT 1
sensor S19 I 19
E2.6 PRESENCIA SALIDA
ROBOT 1
sensor S20 I 20
E32.0 MODO BUSQUEDA pulsador I 21
E0.1 MODO AUTOMÁTICO pulsador I 22
E0.2 PARADA pulsador I 23
¿ Seta de emergencia I 24
Aux_ACTIVAR K1 I 25
Aux ACTIVAR K2 I 26
Aux ACTIVAR K3 I 27
Aux ACTIVAR K4 I 28
Aux ACTIVAR K5 I 29
Aux ACTIVAR K5.1 I 30
I 31
Ant. nombre salida M340
A32.5 ACTIVAR K7 VAL. GEN.
Y0
Q 0 A4.5 TOPE ENT. DESVÍO1 válvula Y1 Q1
A4.6 ELEV.DESVÍO 1 válvula Y2 Q 2
A4.7 TOPE ENT. DESVÍO 2 válvula Y3 Q 3
A5.0 ELEV. DESVÍO 2 válvula Y4 Q 4
A5.1 TOPE ENT. DESVÍO 3 válvula Y5 Q 5
A5.2 ELEV. DESVÍO 3 válvula Y6 Q 6
A5.3 TOPE ENT. DESVÍO 4 válvula Y7 Q 7
A5.4 ELEV. DESVÍO 4 válvula Y8 Q 8
A5.5 TOPE ENT. DESVÍO 5 válvula Y9 Q 9
A5.6 ELEV. DESVÍO 5 válvula Y10 Q 10
A5.7 TOPE ROBOT 1 válvula Y11 Q 11
A6.0 TOPE 2 ROBOT 2 válvula Y12 Q 12
A6.1 TOPE CINTA 4 válvula Y13 Q 13
A6.2 TOPE ROBOT 2 válvula Y14 Q 14
Q 15 A32.1 ACTIVAR K1 M1 Q 16
A32.2 ACTIVAR K2 M 2 Q 17
21
A32.3 ACTIVAR K3 M 3 Q 18
A32.4
ACTIVAR K4 M 4 Q 19
A4.2 ACTIVAR K5 M 5 Q 20
A4.3 ACTIVAR K5.1 M 5_1 Q 21
A4.4 MODO BUSQUEDA piloto Q 22
A6.3 PARADA MOTORES piloto Q 23
A4.1 MARCHA
AUTOMÁTICO
piloto Q 24
En la siguiente figura se representarán como se quedarían en UNITY PRO:
Figura 10: Declaración de variables
En los anexos se adjuntarán todas las variables del sistema de las dos partes del
proyecto.
En las siguientes figuras se puede ver que en cada bastidor las diferentes variables que
ya están definidas:
22
Figura 11: Asociación de las variables a los canales de entrada
Figura 12: Asociación de las variables a los canales de salida
23
6.2 COMUNICACIÓN:
Como ya se indicó anteriormente la comunicación que se dispone es Modbus o
Ethernet, se configura una nueva red en el Unity Pro que será la dirección del autómata,
se abre la carpeta de comunicación en EXPLORADOR DE PROYECTOS, se indica la
dirección del IP del autómata y la máscara de subred. En la siguiente figura se visualiza
el resultado.
Figura 13: Configuración de comunicación del autómata
6.3 TAREAS PROGRAMADAS:
Después de definir las variables elementales y sus direcciones y tener configurada la red
de comunicación con el autómata, se procede a realizar las primeras y básicas funciones
de la planta piloto y consiste en poner en marcha las cintas transportadoras y definir los
trayectos efectuados por las bandejas.
Antes de todo se ha procedido en añadir unas variables elementales auxiliares de las ya
definidas, llamándolas virtuales para facilitar la simulación sin necesidad de estar en
comunicación con la instalación.
24
Para las entradas:
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
S16
S15
Virt_S1
Virt_S2
Virt_S3
Virt_S4
Virt_S5
Virt_S7
Virt_S6
Virt_S8
Virt_S9
Virt_S10
Virt_S11
Virt_S12
Virt_S13
Virt_S14
Virt_S15
Virt_S16
S17
S18
S19
P1
S20
Virt_S17
Virt_S18
Virt_S19
Virt_S20
Virt_P1
Modo_busqueda Virt_Modo_busqueda
Modoautomatico Virt_Modoautomatico
parada Virt_parada
25
Para las salidas seria lo contrario nuestras variables virtuales actúan sobre las variables
del autómata:
Las siguientes tareas se realizan en secciones del Mast de la carpeta de tareas del
programa.
Virt_Y2
Virt_Y3
Virt_Y4
Virt_Y5
Y2
Y3
Y4
Y5
Virt_Y1 Y1
Virt_Y9
Virt_Y6
Virt_Y7
Virt_Y8
Y6
Y7
Y8
Y9
Virt_Y13
Virt_Y14
Virt_M1
Virt_M2
Virt_M3
Y13
Y14
M1
M2
M3
Virt_Y10
Virt_Y11
Virt_Y12
Y10
Y11
Y12
Virt_M4
Virt_M5
Virt_M5_1
M4
M5
M5_1
26
Marcha cinta:
Es la primera etapa del programa y se encarga del funcionamiento de todas las cintas
excepto la quinta cinta o la del cruce aparte se activará la válvula general la
responsable de disponer a los actuadores de aire comprimido.
El modo de marcha o modo de búsqueda activan las cintas transportadoras en
cambio la parada los desactiva como a la válvula general la cierra.
Se usará el lenguaje LD por su sencillez para esta tarea en lo siguiente se muestra el
modo de programarlo:
6.4 GESTIÓN DE CINTA:
Dado el carácter repetitivo de la siguiente aplicación se procede a usar dos tipos FB
derivados y se llamarían ESQUINAS1 Y ESQUINAS2.
Virt_Modoautomatico
SVirt_M1
SVirt_M2
SVirt_M3
SVirt_M4
RVirt_M1
RVirt_M2
RVirt_M3
RVirt_M4
SACTIVAVAL
/Virt_parada
Virt_Modo_busqueda
RACTIVAVAL
27
La primera FB gestiona el paso de las bandejas de la cinta 1 a la cinta 2 y de la
tercera cinta con la cuarta.
La segunda FB gestiona el paso de las bandejas de la cinta 2 a la cinta 3 y de la
cuarta cinta con la primera.
Lo primero se definen las variables de cada FB en la siguiente figura se detallan las
definiciones de ESQUINA:
Se definen las variables de entrada y las salidas.
Figura 14: Configuración de FB derivados: ESQUINAS
Como indica la figura en la FB DERIVADA (ESQUINA), se incorpora en lenguaje
LD una rutina que se ejecuta cada vez que se llama a ESQUINA.
En lo siguiente se desarrolla la rutina antes mencionada:
28
Este módulo funciona de la siguiente manera cuando detecta el sensor de entrada la
llegada de una bandeja se activa el retenedor para dejar su paso y cuando el sensor
esquina detecta esa bandeja desactiva el retenedor y activa el elevador permitiéndole el
paso a la siguiente cinta. A llegada de la bandeja al sensor salida se da la orden de
desactivar el elevador llevándolo a la situación inicial.
Se dispone además en caso de que no se cumplan las anteriores operaciones de un
bloque de operaciones que detectan la ausencia de la bandeja en este tramo por su
retirada manual o atascada cerca del cruce al detectar esta anomalía se lanza un mensaje
de error a través de la variable errorpalent.
La diferencia de funcionamiento de algunas esquinas lleva a introducir a otra DFB
ESQUINA2 la cual su sección se programa también en lenguaje LD:
Sensor_ent
Sensor_esquina
Sensor_sal
SRetenedor
SElevador
RRetenedor
RElevador
EN
SSensor_ent
R1Sensor_esquina
ENO
Q1 PASO_ENT
FBI_0
RS
EN
INPASO_ENT
PTtiempoSE_SI
ENO
Q
ET
FBI_1
TON
EN
IN1
IN2thrue
ENO
OUT
.1
AND
error_paletent
29
Como se ve es más simple por disponer de un sensor menos.
Se crea los módulos de función de usuario (DFB) con el fin de facilitar la gestión de la
esquinas en lo referente a la introducción del programa y a la rapidez de la depuración.
El lenguaje de programación utilizado para elaborar este DFB es un lenguaje gráfico
basado en bloques funcionales (FBD).
La siguiente TAREA muestra la utilización de esta FBD:
Nota: El empleo de un bloque de función DFB en una aplicación permite:
- simplificar el diseño y la introducción del programa,
- aumentar la legibilidad del programa,
-facilitar la depuración de aplicación,
- disminuir el volumen de código generado.
Sens_entr
SElevador
RRetenedor
Wiper
/Wiper
SRetenedor
RElevador
ESQUINA1
ESQUINA2
ESQUINA3
ESQUINA4
Sensor_salVirt_S3
Sensor_entVirt_S1
Sensor_esquinaVirt_S2
tiempoSE_SIt#50s
error_paletent Error_equina1
Elevador_1 Virt_Y1
Elevador_2 Virt_Y2
FBI_1
ESQUINAS1
Sensor_salVirt_S8
Sensor_entVirt_S6
Sensor_esquinaVirt_S7
tiempoSE_SIt#50s
error_paletent Error_equina3
Elevador_1 Virt_Y5
Elevador_2 Virt_Y6
FBI_3
ESQUINAS2
Sens_entrVirt_S4
WiperVirt_S5Retenedor Virt_Y3
Elevador Virt_Y4
FBI_16
ESQUINAS23
Sens_entrVirt_S9
WiperVirt_S10Retenedor Virt_Y7
Elevador Virt_Y8
FBI_17
ESQUINAS24
30
6.5 GESTION DE CRUCE:
Es el caso especial del caso anterior, donde se involucra a varios sensores y
actuadores y para mayor comprensión se adjunta en la siguiente figura el cruce:
Figura 15: Cruce
El cruce presenta una serie de condiciones para poder gestionarlo bien, ya que se
tiene que explotar un recurso compartido que es el elevador Y10, entonces se
presentan dos casos:
El primero es la situación normal que la bandeja tiene que seguir por la cinta 1,
en este caso no lo puede hacer si otra bandeja está regresando de la cinta 5 o está
usando el elevador Y10.
La segunda: Se dio una orden para llevar la bandeja por la cinta 5 entonces si
hay otra bandeja justo detrás de esta puede provocar una colisión con el elevador
Y10.
Para resolver el conflicto se puede dar prioridad en el primer caso a la bandeja que
regresa de la cinta 5 esto se expresa en lenguaje LD de la siguiente manera:
La condición del elevador Y10 desactivado no es una condición suficiente ya que si
la bandeja esta en el camino de vuelta de la cinta 5 y Y10 todavía sin activar puede
provocar una situación anormal lo cual para estar al lado de la seguridad se opta por
dar la prioridad a la bandeja cuando empiece su regreso, la condición adicional seria
entonces es virt_M5 desactivada.
El segundo paso es más laborioso pero automático ya que no necesita comprobar el
recurso porque se le da la prioridad. Cuando llega la bandeja al sensor 12 y la orden de
llevar la bandeja a la cinta 5 está dada, se activa Y10 (no debe estar activada) durante
tres segundos, también se tiene que poner en marcha la cinta hacia la derecha
(Virt_M5_1) también se desactiva la orden. Cuando llega la bandeja a la posición del
BANDEJA EN S11 Y EL ELEVADOR NO ESTA
EN USO: SITUACION NORMAL.
SE VUELVE A ACTIVAR Y9.
Virt_S11
SVirt_Y9
/Virt_Y10
/Virt_S11
RVirt_Y9
/VUELTA
31
sensor 19, permanece ahí hasta que el tiempo de elaboración se agota, después se
desactiva la cinta y se vuelve a activar un segundo después, pero esta vez a la izquierda
(Virt_M5), tres segundos después se da la orden al elevador Y10 y cuando abandona la
bandeja la posición del sensor 13 se baja el elevador y paro el motor de la cinta 5.
En el siguiente programa se recoge lo anteriormente explicado en lenguaje LD:
6.6 LECTOR DE CÓDIGO DE BARRAS:
CASO2:ORDEN DE LLEVAR LA BANDEJA A LA
CINTA5.
ORDEN
SVirt_Y10
SVirt_M5_1
SY10ACT
/Virt_Y10
RORDEN
Virt_S12
EN
IN
PTTIMEELEV10
ENO
Q
ET
FBI_10
TON
Y10ACT
RVirt_Y10
RY10ACT
GESTION DE LA BANDEJA EN LA CINTA 5
Virt_M5
permanencia
RVirt_M5_1
SVirt_M5
EN
IN
PTretardo_vuelta
ENO
Q
ET
FBI_13
TON
SVirt_Y10
EN
IN
PTTIMEELaborac
ENO
Q
ET
FBI_14
TON
EN
IN
PTretardo
ENO
Q
ET
FBI_15
TON
SVUELTA
Spermanencia
Rpermanen...
SVirt_Y14
Virt_S19
/Virt_S19
RVirt_Y14
RVirt_Y10
RVirt_M5Virt_Y10 Virt_M5
RVUELTA
/Virt_S13
32
La instalación dispone de un lector de código de barras situado en la esquina2, entre los
sensores S7 y S8, en este caso, sólo se podrá leer el lado de la bandeja, que a medida
que pase por el lector sólo se recoge esta información.
El sistema es muy sencillo las entradas del aparato al autómata serán LECTOR_1 y
LECTOR_2, que como los otros casos se le asignarán unas variables virtuales:
Virt_LECTOR_1 y Virt_LECTOR_2, respectivamente.
La siguiente tabla explica de forma más simple el significado de la activación de estas
señales:
TABLA 6.2:
LECTOR_1 LECTOR_2 COMENTARIOS
0 1 LA BANDEJA ESTA
ORIENTADA EN EL
LADO 1.
1 0 LA BANDEJA ESTA
ORIENTADA EN EL
LADO 2.
0 0 LA BANDEJA ESTA
ORIENTADA EN EL
LADO 3.
1 1 LA BANDEJA ESTA
ORIENTADA EN EL
LADO 4.
El código entonces se basaría en esta tabla, sin olvidar que se tiene que identificar a la
bandeja que pasa en este instante por el escaneo:
(* LECTURA DE CÓDIGO DE BARRA CON ESTO SABREMOS DE QUE LADO
TIENE trabajaremos con la bandeja que abandona el sensor 7 y
se dirige hacia el sensor 8 (el lector está ubicado entre ellos)*)
(* LECTURA DE CÓDIGO DE BARRA PARA EL LADO=1////////////////////////////////*)
IF(Virt_LECTOR_1=0 AND Virt_LECTOR_2=1) THEN
FOR CONT_LADO:= 4 TO 1 BY -1 DO
IF (BANdeja[CONT_LADO][7]>1) THEN
FILA_LADO:=CONT_LADO ;(*se busca la fila de la bandeja del sensor 7 indice *)
END_IF;
END_FOR;
LADO_BAN[FILA_LADO]:=1;
END_IF;
(* LECTURA DE CÓDIGO DE BARRA PARA EL LADO=2////////////////////////////////*)
IF(Virt_LECTOR_1=1 AND Virt_LECTOR_2=0) THEN
33
FOR CONT_LADO:= 4 TO 1 BY -1 DO
IF (BANdeja[CONT_LADO][7]>1) THEN
FILA_LADO:=CONT_LADO ;(*se busca la fila de la bandeja indice *)
END_IF;
END_FOR;
LADO_BAN[FILA_LADO]:=2;
END_IF;
(* LECTURA DE CÓDIGO DE BARRA PARA EL LADO=3////////////////////////////////*)
IF(Virt_LECTOR_1=0 AND Virt_LECTOR_2=0) THEN
FOR CONT_LADO:= 4 TO 1 BY -1 DO
IF (BANdeja[CONT_LADO][7]>1) THEN
FILA_LADO:=CONT_LADO ;(*se busca la fila de la bandeja indice *)
END_IF;
END_FOR;
LADO_BAN[FILA_LADO]:=3;
END_IF;
(* LECTURA DE CÓDIGO DE BARRA PARA EL LADO=4////////////////////////////////*)
IF(Virt_LECTOR_1=1 AND Virt_LECTOR_2=1 AND Virt_LECTOR_3=0 ) THEN
FOR CONT_LADO:= 4 TO 1 BY -1 DO
IF (BANdeja[CONT_LADO][7]>1) THEN
FILA_LADO:=CONT_LADO ;(*se busca la fila de la bandeja indice *)
END_IF;
END_FOR;
LADO_BAN[FILA_LADO]:=4;
END_IF;
*********************fin de la tarea****************************
6.7 VELOCIDAD CINTAS:
En adelante se necesitaría visualizar en el SCADA el movimiento de las bandejas a lo
largo de la planta, y como solo se dispone de información instantánea de la posición de
las bandejas en el paso por los sensores, se debe realizar una simulación de las bandejas.
Para crear dicha simulación se necesita saber la velocidad de cada cinta que es la
acometida de este párrafo.
Para el cálculo de la velocidad se necesitan de dos señales consecutivos de los sensores
de posición, se utilizó un bloque tipo DFB, llamado velocidad_cinta seguido de un
numero identificativo de la cinta. En definitiva serán cinco bloques.
El cálculo de la velocidad de cada cinta se supone una serie de hipótesis o mejor dicho
unas condiciones de obligado cumplimiento:
En la cinta solo circula una bandeja: solo esta bandeja activa los sensores de
todas las cintas.
La bandeja en cuestión tratará de realizar como mínimo dos vueltas a la
planta: una realiza el circuito y la otra para el cruce.
34
La primera condición se puede cumplir, haciendo que la tarea de actualización de
velocidades se realizan de forma manual por el operario en las tareas de chequeo y antes
de lanzar el proyecto.
La segunda desactivar esta tarea después de conseguir que la bandeja recorra al menos
dos vueltas.
Se plasman estas ideas empezando por la declaración de variables DFB, y la rutina que
ejecutará la siguiente tabla muestra esta DBF:
TABLA 6.3:
V.Entrada funcion V.salida funcion
Sensor1 El primer sensor velocidad_cinta Salida de velocidad en
cm/s
Sensor2 El segundo sensor TIME_TRANS1 Tiempo transcurrido en
ms.
longitud Longitud entre los
dos sensores
TIEMPOLIM Tiempo límite
transcurrido entre los
dos sensores
La programación de la rutina de DFB de velocidad se hace en dos secciones la primera
en lenguaje LD llamándola velocidad_cin y se encarga de medir el tiempo transcurrido
entre las activaciones consecutivas de los dos sensores de entrada, la segunda en
lenguaje ST calcula a partir del tiempo transcurrido la velocidad de la cinta donde están
ubicados los sensores de entrada llamando a esta sección velocidad.
velocidad_cin:
35
Velocidad:
IF (SENSOR2=1) THEN
TIMPOREAL := TIME_TO_DINT(IN := TIME_TRANS1);
IF(TIMPOREAL < 40000) THEN
TIMPOREAL := DIV (IN1 := TIMPOREAL,
IN2 := 1000);
velocidad_cinta := DIV (IN1 := LONGITUD,
IN2 := TIMPOREAL);
END_IF;
END_IF;
Cabe aclarar que se ha añadido otra condición para evitar errores de detección de algún
sensor que si el tiempo transcurrido excede en cuatro segundos no se actualiza la
velocidad.
Ahora se puede usar esta DFB en todas las cintas, queda solo seleccionar los sensores
que son los más representativos de cada cinta. El argumento de esta selección se basa en
que a más longitud más precisión, pero se debe tener en cuenta de que se comete unos
errores en el cálculo debido a que los retenedores pueden retrasar la bandeja un poco y
el deslizamiento de esta última podrá tener en algunos tramos. Pero estos errores no van
a cambiar demasiado el resultado final.
El programa quedaría entonces de la siguiente forma:
SENSOR1
SSALIDAhabilitar
SENSOR2
RSALIDA orden_velocidad
EN
INSALIDA
PTTIEMPOLIM
ENO
Q
ET TIME_Transcve
FBI_1
TON
TIME_LIM
TIME_Transcve...
COMPARE
TIME_TRANS1:=TIME_Transcve;
OPERATE
habilitar
36
6.8 SIMULACIÓN DE MOVIMIENTO DE LAS BANDEJAS:
La filosofía de la simulación es visualizar en cada momento las bandejas que circulan
por la PLANTA o mejor dicho actualizar sus posiciones instantáneamente, esto se
puede conseguir definiendo una matriz de tiempos de tal manera que cada fila
representa una bandeja y cada columna un sensor. Este tiempo y con las velocidades ya
calculadas se puede obtener la una aproximación de las posiciones, en otras palabras las
posiciones de cada bandeja se calcularían en todo momento multiplicando el tiempo
transcurrido desde que abandona cada bandeja el último sensor y el instante actual, por
la velocidad de la cinta por la que se mueve cada bandeja.
La simulación de posición agrupa varias tareas y se representará el código en conjunto
con sus excepciones.
Definición de la Matriz de tiempos:
Cada fila de esta matriz representa una bandeja y cada columna representa un sensor, o
sea un elemento de la matriz computa el tiempo transcurrido entre dos sensores
consecutivos de cada bandeja, o para más exactitud que el elemento de la matriz (i,j),
representa el tiempo transcurrido desde que la bandeja (i) abandona el sensor(j).
RELOJ:
Parte importante del proyecto sería el reloj que no es más que una simple función
SAMPLETM, que genera una señal cuando alcanza el TIME_MUEST.
Cinta_M2
Cinta_M5Cinta_M5_1
Cinta_M4
Cinta_M1
Cinta_M3
TIEMPOLIMtimpo_espera
SENSOR2Virt_S1
LONGITUD125
habilitarHABILITAR_V...
SENSOR1Virt_S11velocidad_cinta velocidad_cinta_M1
TIME_TRANS1
FBI_21
VELOCIDAD_CINTA1
TIEMPOLIMtimpo_espera
SENSOR2Virt_S4
LONGITUD138
habilitarHABILITAR_VELOCIDADES
SENSOR1Virt_S3velocidad_cinta velocidad_cinta_M2
TIME_TRANS1
FBI_23
VELOCIDAD_CINTA2
TIEMPOLIMtimpo_espera
SENSOR2Virt_S6
LONGITUD120
habilitarHABILITAR_VEL...
SENSOR1Virt_S15velocidad_cinta velocidad_cinta_M3
TIME_TRANS1
FBI_24
VELOCIDAD_CINTA3
TIEMPOLIMtimpo_espera
SENSOR2Virt_S9
LONGITUD148
habilitarHABILITAR_VELOCIDADES
SENSOR1Virt_S8velocidad_cinta velocidad_cinta_M4
TIME_TRANS1
FBI_25
VELOCIDAD_CINTA4
TIEMPOLIMtimpo_espera
SENSOR2Virt_S19
LONGITUD136
habilitarHABILITAR_VELOC...
SENSOR1CRUCEvelocidad_cinta velocidad_cinta_M5_1
TIME_TRANS1
FBI_136
VELOCIDAD_CINTA5
TIEMPOLIMtimpo_espera
SENSOR2Virt_S12
LONGITUD136
habilitarHABILITAR_VELOCIDADES
SENSOR1Virt_Y14_Nvelocidad_cinta velocidad_cinta_M5
TIME_TRANS1
FBI_137
VELOCIDAD_CINTA6
37
Esta señal se aprovecha al máximo ya que se usa también en otras aplicaciones
posteriores como se verá más adelante.
Se define la matriz en TIPO DE DATOS DERIVADOS, llamándola circuito y en
VARIABLES DERIBADAS, se define una matriz de tipo circuito y se llama
BANDEJA.
Actualización de la matriz:
Cada elemento de la matriz tendrá tres estados, el primer estado tendrá el valor de cero,
el segundo estado seria elemento de valor uno y el tercer estado contendrá el elemento
un valor mayor o igual que dos.
El tratamiento de esta matriz se hace en estas etapas:
Estado BANDEJA[i][j]>2:
Si el elemento es igual o mayor que dos, la bandeja i acaba de abandonar el sensor j y
se dirige al sensor siguiente. Entonces se incrementaría su valor hasta llegar al siguiente
sensor.
El siguiente programa actualiza las bandejas que tengan como mínimo el valor dos, ya
como se verá en adelante que es una condición necesaria para la actualización de la
bandeja. Se está cometiendo un error de dos milisegundos, por la propia definición del
reloj, pero este error es casi inapreciable, teniendo en cuenta que es del orden de 0.1%.
Su programación en lenguaje ST es el siguiente llamado “bandejas_MAT_TIEMPOS”:
TIC := TIME_TO_dINT (IN := TIME_MUEST);
IF(ACTUALIZACION) THEN FOR i:= 1 TO 4 DO
FOR j:= 1 TO 20 DO
IF (BANDEJA[I][J] > 1) THEN
BANDEJA[I][J]:= BANDEJA[I][J]+TIC;
END_IF;
END_FOR;
END_FOR;
END_IF;
Estado BANDEJA[i][j]=0:
La bandeja no existe en este tramo (tramo definido entre i y el sensor siguiente), ni
tampoco situada a la altura de este sensor. Se quedará así hasta que llegue la bandeja a
la posición del sensor.
INTERVALTIME_MUEST
DELSCANS
Q ACTUALIZACION
FBI_138
SAMPLETM1
38
Estado BANDEJA[i][j]=1:
Significa que la bandeja[i], esta justo en la posición del sensor j; esto es que cuando la
bandeja correspondiente activa el sensor j, se modifica la matriz de tiempos
correspondiente a la bandeja en cuestión. Para eso se abordan varios aspectos para
gestionar este paso:
Cuando se activa un sensor j, la bandeja candidata a actualizarse seria la que
lleva más tiempo desde que esta última abandonó el sensor anterior o sea hay
que fijarse en la columna anterior de j.
En el cruce: se necesitará información para saber si la bandeja pasa a la quinta
cinta o seguirá por la primera cinta; esta información es vital para saber cual el
sensor siguiente.
Por las ventajas que ofrece FDB antes mencionadas se opta por usar un bloque BDF, en
este bloque no solo se va a actualizar la matriz de tiempos sino también se actualiza las
posiciones de las bandejas en su paso por los sensores de la planta.
La tabla siguiente representa LAS VARIABLES que emplea GESTION_POSI:
TABLA 6.4:
ENTRADAS USO SALIDAS/ENTRADAS USO PRIVADAS USO
SIG Indica la
enumeración
del sensor
activado
SEN Flanco
de
bajada
del
sensor
Max
SENSOR2 Su uso
reservado al
(Y10)
BAN Matriz
de
tiempos
Bandeja
Inid
K Hace
referencia al
sensor
anterior a
SIG
OCUPA Vector
de
reserva
de filas
CONT
X Primera
coordenada
del sensor
POSIC Posición
del
sensor
ORD Ord se activa
cuando Virt_Y10,
Virt_S12 están
activados
simultáneamente
Y Segunda
coordenada
del sensor
VALOR
SENSOR Sensor
activado
FBI_0: TON
Una observación que merece mencionarse es que las variables definidas de
entrada/salida son variables modificables por el programa, hecho no factible para las de
entrada.
Las secciones (rutinas) de nuestra FBD y su modo de funcionamiento se detallan en los
siguientes puntos:
39
1) Cuando se activa un sensor, se busca en la columna del sensor anterior (en la matriz
de los tiempos):
a) Se para el contador de la bandeja que lleva más tiempo.
b) Se actualiza la posición de la bandeja con la del sensor que previamente activó.
c) Cuando sale del sensor (Flanco de bajada) información recogida en la variable
SEN, se empieza a contar para la misma bandeja pero esta vez en la columna del
último sensor activado.
2) Para el caso del cruce se dispone de una columna extra en la matriz de tiempos.
3) Los otros casos excepcionales se tratarán de forma personalizada sin recurrir a más
secciones.
La segunda sección de GESTION_POSI trata el caso de cruce donde se recurre a
variables auxiliares, para facilitar la tarea de programación.
Su programación en lenguaje ST es la siguiente:
//////////////////////// SECCIÓN BUSCA_MAX/////////////////////////////////////////////
(* SECCIÓN QUE SE ENCARGA DE INCICAR CUAL DE LAS BANDEJAS
ACTIVÓ EL SENSOR *)
IF (SENSOR=1 and SENSOR2=0) THEN MAX:= BAN[1][k]; (*K INDICA EL
SENSOR ANTERIOR*)
inid:=1;
FOR cont:= 4 TO 1 BY -1 DO
IF (BAN[cont][k]> MAX AND OCUPA[CONT]=1) THEN
INID:=CONT;(*se busca la fila de la bandeja indice *)
END_IF;
END_FOR;
(*Aqui se actualizan las posiciones de las bandejas con las de los
sensores*)
if(ban[inid][k]>1) then
ban[inid][k]:=1;(*CUANDO SE ACTIVA UNO DE LOS SENSORES SE TIENE
QUE DETENER LOS RELOJES *)
POSIC[Inid][1]:= X;
POSIC[Inid][2]:= Y;
end_if;
(*LA ULTIMA:EN EL CASO DE QUE LA BANDEJA VIENE DEL ROBOT SE
ACTUALIZA SU POSICIÓN*)
if(sig=12 and BAN[INID][19]>1) THEN
ban[inid][k]:=1;
POSIC[Inid][1]:= X;
POSIC[Inid][2]:= Y;
END_IF;
END_IF;
(*SE DESABILITA EL RELOJ PARA INICIARLO DESPUES DE LA
BANDEJA[CONT] EL INDICE*)
IF(SEN=1 and VALOR=0) THEN SEN:=0; (*LA CONDICION ES QUE CUANDO
DETECTA EL FLANCO DE BAJADA DEL SENSOR 12 NO SE ACTIVA SI Y10
ESTA ACTIVADO *)
40
IF (sig=12)then
if( BAN[INID][11]>0)THEN BAN[INID][11]:=0;
BAN[INID][12]:=2;
Ocupa[INID]:=0;(*la Única condición diferente*)
END_IF;
(* en caso de que la bandeja regresa de cruce*)
FOR cont:= 4 TO 1 BY -1 DO
IF (BAN[cont][19]>0) THEN INID:=CONT;(*se busca la fila de la
bandeja indice *)
END_IF;
END_FOR;
IF(BAN[inid][19]>0)THEN BAN[INID][19]:=0;(*sería la 19*)
ocupa[inid]:=0;
BAN[INID][12]:=2;
END_IF;
ELSif( BAN[INID][K]>0) THEN BAN[INID][K]:=0;
BAN[INID][SIG]:=2;(*SIG: INDICA EL SENSOR QUE ACABA DE
ACTIVARSE*)
end_if;(*delsig=12*)
END_IF;(*del sen*)
(*EL CASO DE LA BANDEJA INDICE SE MUEVE POR EL
CRUCE*/////////////////////////////////////*)
IF(VALOR=1) THEN MAX:= BAN[1][k];(*SE TRATA DE MIRAR LA COLUMNA
ANTERIOR SERIA K=11*)
FOR cont:= 4 TO 1 BY -1 DO
IF (BAN[cont][K]> MAX AND OCUPA[CONT]=1) THEN
INID:=CONT;(*se busca la fila de la bandeja indice *)
END_IF;
END_FOR;
IF(BAN[INID][11]>0) THEN BAN[INID][11]:=0;
BAN[INID][20]:=2;(*empieza el contador de la bandeja[inid][20]*)
(*12 que es la de vuelta*)
END_IF;
END_IF;
(*//////////////////////////////////////////////////////////////////////////////////////////////*)
La segunda rutina como se ha explicado es un caso particular y se programa en lenguaje
de contactos para resaltar el paso de la bandeja a la cinta_5:
41
Con esto está definida totalmente la DFB, lista para usarse en cada sensor.
Todo lo dicho hasta ahora se plasmará en la siguiente figura que representa una de las
DFB:
En los archivos adjuntos estarán todas estas DFB; con sus diferentes entradas y salidas.
El sensor de partida necesitará unas condiciones más para iniciar la aplicación de forma
normal, por eso se escoge sensor 1, se puede escoger cualquiera pero se opta por uno
que no presenta ninguna condición posterior a la aplicación o presenta particularidades
que complica el código.
Su programación es la siguiente tarea con nombre BANDEJA_INICIO:
(*TAREA DE GESTIÓN DE POSICION PARA LAS BANDEJAS A LA ALTURA
DEL SENSOR 1 POR TRATARSE DE UNA EXCEPCIÓN A LA ANTERIOR
TAREA*)
IF (Virt_S1=1) THEN MAX_1:= BANdeja[1][12]; (*K INDICA EL SENSOR
ANTERIOR*)
FOR cont_1:= 4 TO 1 BY -1 DO
SENSOR SENSOR2 ORD
ORD
NVALOR
SENSORVirt_S2_P
K1
POSICPOSICION
SENSOR2
YPOSI_S2yXPOSI_S2x
SIG2
BANbandeja
ocupaOcupada
SENSEN2
ocupa
BAN
SEN
POSIC
FBI_103
GESTION_POSI5
42
IF (BANdeja[cont_1][12]>= MAX_1 AND OCUPADA[CONT_1]=0)
THEN IN1:=CONT_1;(*se busca la fila de la bandeja indice *)
END_IF;
END_FOR;
(*Aqui se actualizan las posiciones de las bandejas con las de los sensores*)
if(ocupada[in1]=0) then
POSICION[IN1][1]:= POSI_S1x;
POSICION[IN1][2]:= POSI_S1y;
BANDEJA[In1][12]:=0;
END_IF;
end_if;
IF(SEN1=1) THEN SEN1:=0;
IF(OCUPADA[IN1]=0) THEN
BANDEJA[IN1][1]:=2;
OCUPADA[IN1]:=1;
END_IF;
END_IF;
6.9 POSICIÓN DE LAS BANDEJAS:
El paso siguiente seria situar la posición de cada bandeja en todo momento, esto ya lo se
puede hacer teniendo en cuenta la matriz que se ha definido, nada más que
multiplicando los elementos de la matriz por las velocidades de la cinta.
Las únicas posiciones que serán exactas serían las de los sensores ya que las bandejas
se actualizan cada vez que pasen por un sensor que tiene definidas sus posiciones de
ante mano.
La programación de esta tarea es la siguiente:
(*PASAR LAS MATICES EN TIEMPOS A VARIABLES DE POSICION *)
IF(ACTUALIZACION) THEN
X1:=POSICION[1][1]+((velocidad_cinta_M1*(bandeja[1][1]+bandeja[1][12]+bandeja[1][11]+bandeja[1
][14]+bandeja[1][10]))-(velocidad_cinta_M3*(bandeja[1][5]+bandeja[1][15]+bandeja[1][6])))/1000;
Yp1:=POSICION[1][2]+((velocidad_cinta_M2*(bandeja[1][2]+bandeja[1][3]+bandeja[1][4]))-
(velocidad_cinta_M4*(bandeja[1][7]+bandeja[1][8]+bandeja[1][18]+bandeja[1][9]))+(velocidad_cinta_
M5_1*BANDEJA[1][20])-(velocidad_cinta_M5*BANDEJA[1][19]))/1000;
X2:=POSICION[2][1]+((velocidad_cinta_M1*(bandeja[2][1]+bandeja[2][12]+bandeja[2][11]+bandeja[2
][14]+bandeja[2][10]))-(velocidad_cinta_M3*(bandeja[2][5]+bandeja[2][15]+bandeja[2][6])))/1000;
Yp2:=POSICION[2][2]+((velocidad_cinta_M2*(bandeja[2][2]+bandeja[2][3]+bandeja[2][4]))-
(velocidad_cinta_M4*(bandeja[2][7]+bandeja[2][8]+bandeja[2][18]+bandeja[2][9]))+(velocidad_cinta_
M5_1*BANDEJA[2][20])-(velocidad_cinta_M5*BANDEJA[2][19]))/1000;
X3:=POSICION[3][1]+((velocidad_cinta_M1*(bandeja[3][1]+bandeja[3][12]+bandeja[3][11]+bandeja[3
][14]+bandeja[3][10]))-(velocidad_cinta_M3*(bandeja[3][5]+bandeja[3][15]+bandeja[3][6])))/1000;
43
Yp3:=POSICION[3][2]+((velocidad_cinta_M2*(bandeja[3][2]+bandeja[3][3]+bandeja[3][4]))-
(velocidad_cinta_M4*(bandeja[3][7]+bandeja[3][8]+bandeja[3][18]+bandeja[3][9]))+(velocidad_cinta_
M5_1*BANDEJA[3][20])-(velocidad_cinta_M5*BANDEJA[3][19]))/1000;
X4:=POSICION[4][1]+((velocidad_cinta_M1*(bandeja[4][1]+bandeja[4][12]+bandeja[4][11]+bandeja[4
][14]+bandeja[4][10]))-(velocidad_cinta_M3*(bandeja[4][5]+bandeja[4][15]+bandeja[4][6])))/1000;
Yp4:=POSICION[4][2]+((velocidad_cinta_M2*(bandeja[4][2]+bandeja[4][3]+bandeja[4][4]))-
(velocidad_cinta_M4*(bandeja[4][7]+bandeja[4][8]+bandeja[4][18]+bandeja[4][9]))+(velocidad_cinta_
M5_1*BANDEJA[4][20])-(velocidad_cinta_M5*BANDEJA[4][19]))/1000;
END_IF;
////////////////////////////////////////FIN DEL PROGRAMA/////////////////////////////////////
6.10 MODIFICACIÓN DE LA MATRIZ DE TIEMPOS:
En caso de que se hace uso del Almacén, se tiene que tener en cuenta predecir la
acumulación o formación de cola a la altura del mismo.
Lo cual no se puede incrementar los tiempos de la bandeja de forma indefinida o por lo
contrario se vería en el Scada en vez de una cola, un bandeja en posición del sensor 14 y
las otras bandejas pasando por encima sin control físico sobre estas.
El siguiente código explica la forma de abordarlo, esto sería una modificación del
programa “bandejas_MAT_TIEMPOS”:
(*MATRIZ DE TIEMPOS CALCULA EL TIEMPO DESDE QUE ABANDONA LA
BANDEJA LOS SENSORES: EPIEZA A CONTAR CUANDO ABANDONA
CUALQUIER SENSOR
Y PARA AL LLEGA AL SIGUIENTE SENSOR
NOTA:LA EXCEPCIÓN SERIA LA FORMACION DE COLA DE BANDEJAS A
LA ALTURA DEL ALMACEN TRATAR LA MATRIZ DE TIEMPOS DE LAS
BANDEJAS EN EL SENSOR10 *)
TIC := TIME_TO_dINT (IN := TIME_MUEST);
IF(ACTUALIZACION) THEN FOR i:= 1 TO 4 DO
FOR j:= 1 TO 20 DO
IF (BANDEJA[I][J] > 1 and J<>10) THEN (*J=10 ES UN PUNTO
ANTERIOR AL DE COMUNICACION DEL ALMACEN*)
BANDEJA[I][J]:= BANDEJA[I][J]+TIC;
END_IF;
IF(J=10) THEN
IF(BANDEJA[I][10]> 1 AND Y_comini1=0) THEN
BANDEJA[I][10]:= BANDEJA[I][10]+TIC;
END_IF;
(*SE SIGUE CALCULANDO EL TIEMPO MIENTRAS
LAS BANDEJAS NO LLEGAN AL PuuNTO DE TOPE*)
IF(BANDEJA[I][10]>1 AND Y_comini1=1 AND
BANDEJA[I][10]< TOPE_10) THEN
BANDEJA[I][10]:= BANDEJA[I][10]+TIC;
44
END_IF;
(* SI SUPERA EL TOPE Y HAY COMUNICACIÓN CON
EL ALMACEN SE DEBE AVERIGUAR CUANTAS BANDEJAS LO HAN HECHO
Y COLOCARLA EN COLA*)
IF(BANDEJA[I][10]>=TOPE_10 and Y_comini1=1) THEN
CONTADOR:=0;
FOR IND:=1 TO 4 DO
IF(BANDEJA[IND][10]>=TOPE_10) THEN
CONTADOR:=CONTADOR+1;
END_IF;
END_FOR;
CASE CONTADOR OF
1:BANDEJA[I][10]:=TOPE_10+2750;(* SI ES LA
PRIMERA Y NO ESTA RETENIDA EN Y14 SE COLOCA PRIMERA*)
2:IF(BANDEJA[I][10]<>TOPE_10+2750)THEN
BANDEJA[I][10]:=TOPE_10+1375;END_IF;(* SI ES SEGUNDA SE COLOCA
COMO SEGUNDA*)
3: IF(BANDEJA[I][10]<>TOPE_10+2750 AND
BANDEJA[I][10]<>TOPE_10+1375) THEN BANDEJA[I][10]:=TOPE_10;END_IF;
(* SI ES TERCERA Y ÚLTIMA SE COLOCA TERCERA*)
END_CASE;
END_IF;
END_IF;(* DE LA CONDICION DE QUE J=10*)
END_FOR;
END_FOR;
END_IF;
///////////////////////////////////////////// FIN //////////////////////////////////////////////////////////////////////////
6.11 SIMILACIÓN DE LAS BANDEJAS: VIJEO SCADA.
Habrá que aplicar unos pasos antes de iniciar la aplicación en Vijeo Citect, se resume
estas etapas en los siguientes puntos:
Analizar y generar todo el proyecto.
Conectar y transferir el proyecto desde Unity.
Desconectar del autómata, esta vez para exportar las variables seleccionadas al
Vijeo Citect: esta exportación se guarda en el archivo “cinta.XVM”. Es
importante que se guarden en formato .XVM.
45
Para configurar el OPC, se usa el programa “OFS configuration Tool”, se creó el
alias “cinta_”, se verifica si la dirección es la adecuada: MBT: 192.168.0.2/U, si
es así se indica en el menú General, en opción: Simulación.
En este proyecto no se va a especificar la forma de creación de genios ni las gráficas del
Scada (Vijeo Citect), ya que viene muy detallado en los manuales de usuario en
archivos adjuntos a este proyecto. Tampoco se explicará la configuración de la
comunicación por el mismo motivo que lo anteriormente explicado.
Entonces se nombran los archivos que se dispone para un correcto funcionamiento de
esta parte del proyecto. Al abrir el Explorador de proyectos de Vijeo Citect, se dispone
de un proyecto llamado CINTA, que debería disponer de los siguientes documentos:
Páginas en Gráficos: CINT2.
Genios en Gráficos: biblioteca_Cint que deberá de contener los siguientes
genios: retenedor, Sensor, elevador y Paro_marcha.
variables locales en Tags: bandeja_y1, bandeja_y2, bandeja_y3, bandeja_y4,
bandeja_x1, bandeja_x2, bandeja_x3, bandeja_x4.
Archivos Cicode: Cicode1.
No se ha mencionado los Tags variables, porque serán el objeto de importación desde el
autómata.
La siguiente gráfica es la CINT2 que es la pantalla que se visualizará al ejecutar Vijeo
Citect:
Figura 15: Página CINT2 en SCADA
46
7. MEMORIA DE PROGRAMACION: CASO PRÁCTICO
En que sigue en el proyecto no es más que una particularidad de lo realizado
anteriormente, y las diferencias radican solo en:
Se usaría solo una bandeja en vez de cuatro.
Se incluiría un elemento nuevo el almacén con la totalidad de sus instalaciones.
Incluir en las cintas puntos de paro, programados para albergar tres máquinas de
herramientas hipotéticas o a instalar en el futuro.
En la siguiente figura se visualiza la disposición de los puestos de trabajo:
Figura 16: Posición de las maquinas
Los puestos Máquina 1, Máquina 2 y Máquina 3, están distribuidas como indica la
figura.
7.1 PROCESO ESTRUCTURA Y CODIFICACION:
El proyecto se descompone de dos partes separadas a nivel físico en planta y almacén
también a nivel de programación, los dos usan programación diferente. Este hecho deja
un poco de libertad para abordar el problema de forma separada, en la memoria también
se va a aprovechar este hecho, explicando la programación de cada uno por separado.
Antes de empezar hay que advertir que esta separación no es total ya que los dos
comparten los mismos recursos (productos P1 y P2), entonces se debe tener en cuenta la
47
comunicación entre ambas partes y pensar en utilizar las salidas y entradas que dispone
el almacén.
7.2 COMUNICACIÓN:
Se puede resumir la comunicación entre autómata y almacén en las dos gráficas
siguientes:
TABLA 7.1:
ENTRADAS IN[1] IN[2] IN[3] IN[4]
Petición del autómata para comunicar 1 0 - 1 0 - 1 0 – 1
Petición de recogida de P1 1 1 0 0
Petición de recogida de P2 1 0 1 0
Orden de almacenar de P1 1 0 0 1
Orden de almacenar de P2 1 0 1 1
Se puede observar que el autómata manda cuatro tipos de órdenes diferentes, excepto la
primera que acompañará a estas, para hacer una petición de comunicación.
Hay que aclarar que esta forma de nombrar las señales de entrada IN[1], IN[2], IN[3] y
IN[4]es la del Controlador-B, en el autómata pasan a ser IN_1, IN_2, IN_ 3 y IN_4
respectivamente ya que en otro caso se interpretarían como un vector y no se puede
definir un vector booleano.
TABLA 7.2:
SALIDAS OUT[5] OUT[6] OUT[7]
Entablada la comunicación 1 0 - 1 0 – 1
La orden se ha ejecutado correctamente 1 1 0
La orden no se ejecutó 1 0 1
La comunicación se suspendió o no existe 0 0 0
En este caso se procura que la primera señal responder a la llamada del autómata para la
comunicación. Esta señal como ocurre en el anterior párrafo acompañará a cualquiera
de las señales restantes.
También para las señales de la salida OUT[5], OUT[6] y OUT[7] se le designa en el
autómata por S_comuni1, S_comuni2 y S_comuni3, respectivamente por el mismo
motivo del caso de las entradas.
7.3 ALMACÉN: ESTRUTURA Y CÓDIGO:
El autómata hace una petición de comunicación según las tablas anteriores, cuando la
bandeja llega a la posición del sensor S_14. Lo cual el Controlador-B debe responder a
esta petición enviando una señal de salida esa señal es de OUT[5]. En el mismo tiempo
48
el autómata debería especificar cuál de los productos se trata y si es para solicitarlo o
almacenarlo.
El programa al que se ejecuta se llama PRINC, este programa recurre a unas
subrutinas que no son más que programas ya hechos. Para más facilidad al lector, se
explica primero el acometido de cada uno por separado:
CAMB: Ejecuta el intercambio de los productos:
- Si la variable ORIG=0, se coge el producto de la cinta y se
almacena en la posición indicada por la variable DEST.
- Sin embargo DEST=0, se coge el producto del almacén de
posición ORIG y se destina a la cinta.
En la siguiente figura se muestra un diagrama de funcionamiento.
No existen más posibilidades.
Como nota las posiciones TRAN1, TRAN2, TRAN3 y TRAN4, son
posiciones de acercamiento a la cinta.
NO
SI
DEST = 0
PRODUCTO EN LA
CINTA
DEST = CTE#0.
PRODUCTO EN EL
ALMACÉN
LLEVAR EL
PRODUCTO AL
ALMACÉN SI HAY
SITO.
LLEVAR EL PRODUCTO
DEL ALMACEN A LA
CINTA.
FIN
¿ORIG=0?
49
Los siguientes programas hacen uso del programa CAMB:
ARECO: Verifica si existe el producto P1 en el almacén, si existe lo
indica con la variable ENCT=1 y actualiza las variables DEST y ORIG
según lo especificado en CAMB.
AALM: Verifica si existe sitio para almacenar el producto P1 en el
almacén, si existe lo indica con la variable ENCT1=1 y actualiza las
variables DEST y ORIG según lo especificado anteriormente.
BRECO: Verifica si existe el producto P2 en el almacén, si existe lo
indica con la variable ENCT=1 y actualiza las variables DEST y ORIG
según lo especificado anteriormente.
BALM: Verifica si existe sitio para el producto P2 en el almacén, si
existe lo indica con la variable ENCT=1 y actualiza las variables DEST
y ORIG según lo especificado anteriormente.
Los códigos de estos programas
PROGRAM CAMB
*********************
SETP TRAN[1]=TRAN1
SETP TRAN[2]=TRAN2
SETP TRAN[3]=TRAN3
SETP TRAN[4]=TRAN4
SET VMAX = 30
SPEED VMAX
SET OUT[4] = 1
FOR J = 1 TO 4
IF ORIG = 0 * Si el orig=0 se coge la pieza de la cinta a la posición que
indica dist#0*
SETP POS_I[J]=TRAN[J] * Se fijará entonces la posiciones de origen(pos_i[j]
de acercamiento de la cinta)*
ELSE
SET AUX1=J * 100
50
SET AUX2=AUX1 + ORIG
SETP POS_I[J]=CIM[AUX2] * Pos_I[]:son las posiciones de acercamiento a la
posicion J
ENDIF
IF DEST = 0 * Si el dest=0 se coge la pieza del almacén de la posición
que indica orig#0*
SETP POS_F[J]=TRAN[J] * Se fijará entonces la posiciones de dest(pos_F[j]
de acercamiento del almacén)*
ELSE
SET AUX1=J * 100
SET AUX2=AUX1 + DEST
SETP POS_F[J]=CIM[AUX2] *En este caso se coge la pieza de la cinta*
ENDIF
ENDFOR
OPEN
FOR J = 4 TO 2
MOVED POS_I[J] *se aproxima a la posición marcada como inicial (ORG)*
ENDFOR
SPEED 10
MOVED POS_I[1] * MOVER el robot a la posición para recoger el producto *
DELAY 100
CLOSE
DELAY 100
SPEED VMAX
FOR J = 1 TO 4
MOVED POS_I[J]
ENDFOR
FOR J = 4 TO 2
51
MOVED POS_F[J]
ENDFOR
SPEED 10
MOVED POS_F[1]
DELAY 100
OPEN
DELAY 100
SPEED VMAX
FOR J = 2 TO 4
MOVED POS_F[J]
ENDFOR
CLOSE
END
*********************RUTINAS*****************************************
PROGRAM ARECO
*********************
PRINTLN "INICIO DE BUSQUEDA DE LA PIEZA A"
FOR J = 1 TO 18
IF MAT[J] = 1
SET ENCT = 1
PRINTLN "PIEZA A ENCONTRADA"
SET MAT[J] = 0
SET DEST = 0
SET ORIG = J
GOTO 7
ELSE
SET ENCT = 0
52
ENDIF
ENDFOR
LABEL 7
END
PROGRAM BRECO
*********************
PRINTLN "ICCIO DE BUSQUEDA DE LA PIEZA B"
FOR J = 37 TO 54
IF MAT[J] = 1
SET ENCT = 1
SET DEST = 0
SET ORIG = J
SET MAT[J] = 0
GOTO 8
ELSE
SET ENCT = 0
ENDIF
ENDFOR
LABEL 8
END
PROGRAM AALM
*********************
FOR J = 19 TO 36
IF MAT[J] = 0
SET PO = 1
SET MAT[J] = 1
53
SET DEST = J
SET ORIG = 0
GOTO 9
ELSE
SET PO = 0
ENDIF
ENDFOR
LABEL 9
END
PROGRAM BALMA
*********************
FOR J = 55 TO 72
IF MAT[J] = 0
SET PO = 1
SET MAT[J] = 1
SET DEST = J
SET ORIG = 0
GOTO 10
ELSE
SET PO = 0
ENDIF
ENDFOR
LABEL 10
END
$chk 13353
(END)
54
El programa principal PRINC, responde al protocolo que ya se había explicado de la
comunicación entre el almacén y el autómata.
El siguiente diagrama de flujo se explica de forma cualitativa el funcionamiento del
programa PRINC.
INICI
O
¿IN[2]=1
?
¿IN[3]=1
?
Almacenar P2
Ejecución BALMA
Recogida de P1
Ejecución
ARECO
Recogida de P2
Ejecución de
BRECO
Almacenar P1
Ejecución
AALMA
FIN
¿IN[4]=1
?
¿IN[4]=1
?
Si
Si
Si
Si
No
No
No
No
55
Su código es el siguiente:
PROGRAM PRINC
*********************
LABEL 6
WAIT IN[1] = 1
SET OUT[5] = 1
IF IN[2] = 1
PRINTLN "ORDEN DE RECOGIDA DEL PRODUCTO P1"
DELAY 100
GOSUB ARECO
IF ENCT = 1
GOSUB CAMB
PRINTLN " PIEZA SERVIDA A"
SET OUT[6] = 1
ELSE
PRINT "PIEZA NO ENCONTRADA"
SET OUT[7] = 1
ENDIF
DELAY 500
SET OUT[5] = 0
SET OUT[6] = 0
SET OUT[7] = 0
56
ENDIF
IF IN[3] = 1
IF IN[4] = 0
PRINT "ORDEN DE RECOGIDA P2"
DELAY 100
GOSUB BRECO
IF ENCT = 1
GOSUB CAMB
PRINTLN "PIEZA P2 SERVIDA"
SET OUT[6] = 1
ELSE
PRINTLN "PIEZA NO ENCONTRADA"
SET OUT[7] = 1
ENDIF
DELAY 500
SET OUT[5] = 0
SET OUT[6] = 0
SET OUT[7] = 0
ENDIF
ENDIF
IF IN[4] = 1
IF IN[3] = 1
PRINTLN "ORDEN DE ALMACENAR P2"
DELAY 100
GOSUB BALMA
IF PO = 1
GOSUB CAMB
57
PRINTLN "PIEZA ALMACENADA P2"
SET OUT[6] = 1
ELSE
PRINT "PIEZA NO ALMACENADA"
SET OUT[7] = 1
ENDIF
DELAY 500
SET OUT[5] = 0
SET OUT[7] = 0
SET OUT[6] = 0
ENDIF
ENDIF
DELAY 500
IF IN[4] = 1
IF IN[3] = 0
PRINTLN "ORDEN DE ALMACENAR P1"
DELAY 100
GOSUB AALM
IF PO = 1
GOSUB CAMB
PRINTLN "PIEZA P1 ALMACENADA"
SET OUT[6] = 1
ELSE
PRINTLN " PIEZA P1 NO ALMACENADA"
SET OUT[7] = 1
ENDIF
DELAY 500
58
SET OUT[5] = 0
SET OUT[6] = 0
SET OUT[7] = 0
ENDIF
ENDIF
DELAY 500
GOTO 6
END
**************FIN código de PRINC**************************************
El programa no podría funcionar con eficacia sin tener previamente definida una matriz
MAT, esta matriz sería la encargada de almacenar el estado del almacén.
Simplemente se representa con MAT[i] a la celda “i” del almacén, si el valor de MAT[i]
es la unidad significa que está ocupada y si es nulo es que esta sin ocupar.
Entonces se dispone de un programa que actualice previamente la matriz MAT, esto es
cuando empieza la práctica o cuando se manipula de forma manual alguna posición
(reponiendo o quitando algún producto dentro del almacén), o también por su
modificación mediante otro programa ajeno al de la práctica.
De todas formas más adelante se dispone de una “GUIA” para manejar la práctica
donde se explicará la manera de proceder y también se incluirá el código de
actualización de MAT.
7.4 AUTÓMATA:
Se ha visto en el apartado anterior detalladamente las funciones del almacén, su
interacción con la cinta, pero se mencionó que la batuta de control se la lleva el
autómata.
Ya es sabido que se ha conservado la estructura general de la primera parte. Este hecho
se refleja en la invariabilidad del funcionamiento de la cinta excepto en algunos puntos
de la misma donde se definen las rutas, localizados en la figura 16, concretamente a la
altura de las tres máquinas.
7.1.1 Tarea Máquina_1_2_3:
Entonces la única parte que se cambia sería la tarea del MAST en secciones
“ACTIVACION_SENSORES”, cambiándola por dos nuevas tareas “Maquina_1_2_3”,
el autómata en este caso no se involucra en las tareas de las tres máquinas, solo en
59
temporizar los tiempos de paro en cada una, así que como ya es sabido estos tiempos de
parada serán los que se definen en las rutas.
Su programación es sencilla, se introduce en cada máquina unos retardos, definidos
para cada máquina y serán TQ1, TQ2, TQ3. La programación de la primera máquina es
la siguiente:
Cuando llega la bandeja a S4, debe permanecer en esta posición hasta que transcurre
TQ1 segundos, después se tiene que verificar que la esquina2 está libre (esta condición
no debe preocupar en realidad ya que solo se va a disponer de solo una bandeja),
desactivando entonces el retenedor y activando el elevador. Volviendo al estado inicial
cuando abandona la bandeja la esquina 2.
En la tarea “Maq_23” no se limita a gestionar las máquinas 2 y 3 sino también en
definir un punto de espera en la posición de entrega del almacén, entonces cuando la
bandeja llega activa el sensor S14, espera cuatro segundos si no hay comunicación con
el almacén ( IN[1] ACTIVADO) abandona esta posición.
En los otros puntos no se modifica nada. Se recrea en lenguaje LD la tarea:
Virt_S4
SVirt_Y3
/Virt_S5
RVirt_Y4
RVirt_Y3
EN
IN
PTTQ1
ENO
Q
ET
FBI_142
TON
Virt_S5
SVirt_Y4
60
7.5 PROCESO DE ENTREGA Y RECOGIDA (Tareas “almacenP1”,
“almacenP2”):
Quizás es el punto más importante y sensible del programa, y consiste en gestionar la
puesta y la recogida de los productos haciendo hincapié sobre qué tipo de producto.
El acometido de esta tarea se puede presentar por puntos:
Aplicación del protocolo de comunicación.
Supervisión de la cantidad de los productos P1, P2.
Saber de ante mano que hacer con el producto (retirar o poner).
MAQUINA 2
MAQUINA 3
ALMACEN: punto de
espera por si hay
comunicación
Virt_S16
RVirt_Y12
Virt_S18
RVirt_Y13
Virt_S11
RVirt_Y11
Virt_S15
SVirt_Y12
EN
IN
PTTQ3
ENO
Q
ET
FBI_141
TON
Virt_S17
SVirt_Y13
EN
IN
PTTQ2
ENO
Q
ET
FBI_140
TON
SVirt_Y11Virt_S14
/IN_1
EN
IN
PTTQ3
ENO
Q
ET
FBI_146
TON
61
La tarea “almacenP1” gestiona el procesado del producto desde su entrega departe del
almacén hasta su almacenamiento. El código es el siguiente:
62
Nota: La secuencia de la tarea programada es recoger el producto de la cinta y luego la
puesta de la siguiente pieza (producto). Excepto al inicio de la aplicación que sería lo
Terminado la puesta del producto se suspende la
conexion. Este proceso se repetira para cualquier
rutina: almacenamiento del producto P1 o P2 .
Si hay comunicación y orden de poner se le ordena al almacen para servir
producto P1. Aquí se comprueba también si hay más productos para servir.
La tarea se encarga de gestionar la puesta y la recogida del almacen.
Despues de servirnos el producto dejamos el
almacén listo para recoger posteriormente el
producto.
Paso1: Ante un flanco de subida del sensor14 intentará comunicar con el
almacen.
Al finalizar la tarea de almacenado del producto se
procede a actualizar la variable x( numero de
producto servido hasta el momento
independientemente de la ruta
En caso de haya comunicación y el orden es de almacenar P1
se lo comunica el autómata al almacen.
Supervisión de la variable x. Si es nula cambio a
otra ruta
Despues de servir el producto
comunicamos al almacén que nos
vuelva a poner el siguiente producto.
P
Virt_S14
S_comuni1
S
IN_1
S
IN_2poner_P1
S_comuni1
S
IN_4
/
poner_P1
R
IN_2
R
IN_1
R
IN_4Virt_S14
R
IN_3
N
Virt_S14
R
poner_P1
X:=X-1;
OPERATE
P
S_comuni3
X=0
COMPARE NULO
X_serv:=X_serv+1;
OPERATE
S_comuni3
S
poner_P1
S_comuni2
/
S_comuni3
/
S_comuni2
Virt_S14
Virt_S14
X<>0
COMPARE
63
contrario. Mediante la activación de la variable poner_P1 se servirá primero la pieza y
nada más.
Se aplicará las mismas consignas del producto P1 al producto P2, aunque con leves
diferencias en algunas variables y protocolo de comunicación:
Orden de recogida del producto 2 :
Se activan IN[3] MANTENIENDO
IN[4]=0
Paso1: ante un flanco de subida del sensor14 y con la orden de recogida se
intentará comunicar con el almacen y hacer la peticion del producto.
entablada la conexion y siendo satisfecha la demanda se suspende la
comunicación de nuevo .
Terminado la puesta del producto se suspende la
conexion. Este proceso se repetira para cualquier
rutina: almacenamiento del producto P1 o P2 .
Despues de servir el producto
comunicamos al almacén que nos
vuelva a poner el siguiente producto.
Paso2: Al realizar la bandeja el proceso vuelve al almacen esta
vez para almacenarla, dando el orden in_4 Y IN[3].
PVirt_S14
S_comuni1
SIN_1
SIN_3poner_P2
S_comuni1
SIN_4
/poner_P2
RIN_2
RIN_1
RIN_4Virt_S14
EN
IN
PTt#1s
ENO
Q
ET
FBI_155
TON
RIN_3
SIN_3
NVirt_S14
RIN_4
Y:=Y-1;
OPERATE
PS_comuni3
Y=0
COMPARE NULO
Y_serv:=Y_serv+1;
OPERATE
Rponer_P2
S_comuni3
Sponer_P2
S_comuni2
/S_comuni3
/S_comuni2
Virt_S14
Virt_S14
Y<>0
COMPARE
64
7.6 GRAFCET (RUTAS):
Objetivos:
El diagrama siguiente del GRAFCET de nombre “RUTAS”, tiene la misión de organizar
el trabajo actualizando las variables entre estas las de tiempos de maquinas, cantidad de
productos, tipos de productos, además de las tareas que se van a usar y las que no
(almacenP1 o almacenP2).
Desarrollo:
Para mejor entendimiento se va a representar por partes el diagrama GRAFCET, este se
conforma de acciones y transiciones.
Las transiciones van a ser variables o sus negadas y en el caso de acciones serán
secciones en su mayoria.
En la figura siguiente, la sección S_1_1 es la sección de inicio; donde se tiene solo una
acción que es la que habilita la tarea “almacenP1” y deshabilita “almacenP2”.
La siguiente transición es true, que es una condición que siempre se cumple. La sección
S_1_2, fija el valor X en el valor de la cantidad de producto P1 que se procesará en la
primera ruta. Este valor si es nulo, cumplirá la condición NULO, luego se debe pasar a
la siguiente etapa por no tener productos P1 que precisan ruta 1. En caso de que X
diferente de cero, franqueará la condición NOTNULO, la sección S_1_15 tiene como
acción RUTA1 que fija para los tiempos de presencia en las máquinas.
La condición NULO se dará cuando la última pieza P1 de la primera ruta queda
almacenada en el almacén, esta condición se aloja en la tarea “almacenP1”.
65
La siguiente figura no es mas que la continuación de lo que se explicó
anteriormente pero esta vez es para las siguientes rutas, la primera sección es para
fijar X a la cantidad de productos P1 para cada ruta.
66
67
Se observa que al final de la quinta ruta hay un salto a la sección S_1_39.
En la siguiente figura
La continuación del programa
68
69
7.7 MONITORIZACIÓN SCADA:
La monotorización del proyecto en SCADA, y sus objetivos se explicarón
anteriormente en la página 13, y uno de sus objetivos comprende todas aquellas
soluciones de aplicación, para referirse a la captura de información de un proceso o
planta. El objetivo entonces sería controlar el proceso desde la pantalla del ordenador.
Para ello se limitará el proyecto en representar, solo aquellas variables necesarias y
fundamentales para comunicar y controlar el proceso.
Abriendo un nuevo proyecto llamado org, se intenta aprovechar al máximo de la gráfica
de la única variable del proyecto. Las gráficas comprenden los siguientes genios:
bandeja, retenedor, elevador y sensor. También comprenden la gráfica CINT2, que
representa toda la instalación. Hay que insistir que los cambios que hay que relizar en lo
referente a las etiquetas variables ya que han cambiado de nombre, por ejemplo la
variable en el vijeo de la primera parte se le ha llamado
CINTA_Virt_Modoautomatico, y en la segunda parte se le ha llamado
orga_Virt_Modoautomatico( son las variables ligadas al botón MARCHA).
Estos cambios alcanzan también al uso de los genios y incluso al editor CICODE, que
como única función seria la de actualización: esta función se guarda también en un
archivo como archivo nuevo. Su código es el siguiente:
FUNCTION Actualizacion()
bandeja_x1= orga_X1 ;
bandeja_y1= orga_Yp1 ;
sum_p1=
orga_X_serv_R1+orga_X_serv_R2+orga_X_serv_R3+orga_X_serv_R4+orga_X_ser
v_R5;
sum_p2=
orga_Y_serv_R1+orga_Y_serv_R2+orga_Y_serv_R3+orga_Y_serv_R4+orga_Y_ser
v_R5;
TOTAL_P= sum_p1+sum_p2;
END
Como se ve en este código y en comparación con el anterior programa, que lleva el
mismo nombre, se ha conformado con una sola bandeja, y que esta variable no cambia
de nombre ya que son etiquetas locales, y no dependen del autómata, lo mismo se hace
con unas nuevas variables sum_p1 y sum_p2, que representan las suma del producto
P1 y P2 terminado repectivamente.
Total_P: Seria la suma de los dos productos terminados.
La figura siguiente muestra la instalación con nuevos elementos, que se analizarán
despues:
70
Figura 16: Maquinas y almacén
Los elementos nuevos que se incorporán a esta parte serían las máquinas: MAQUINA1,
MAQUINA2, MAQUINA3. También se le añade el ALMACEN, para visualizar su
estado cada vez que la bandeja se pone a la altura del sensor 14.
Para visualizar los resultados, se añade también una tabla de productos que han sufrido
el proceso correspondiente a cada ruta y tipo de producto: esto es que cada producto
haya terminado su proceso y siendo almacenado, se procura actualizarlo en la tabla con
su correspondiente tipo y ruta.
Se procurará también de poner la suma de estos productos por separado, y al final su
suma.
El proyecto debe facilitar al usuario la entrada de dos tipos de datos, uno es el de
cantidad de productos (diferenciando el tipo y la ruta que debe realizar), el otro sería el
tiempo que se necesita cada maquina para realizar las tareas respetando cada ruta.
Esta tarea o sea la recogida de estos datos, obligán a realizar otra página gráfica que se
llamará DEMANDAS.
La siguiente figura muestra dos tablas, donde en la primera contendrá el tiempo en
segundos de cada máquina dependiendo de la ruta. Por ejemplo en el primer elemento
de la tabla, tendrá el tiempo de duración del proceso en la MAQUINA1, siendo la ruta
que efectuará la bandeja la RUTA1.
71
Figura 17: Intrudución de los tiempos para cada producto y su correspondiente
ruta
La siguiénte tabla seria la cantidad de producto, que se necesita procesar dependiendo
de la RUTA y producto.
Como se ha podido observar los tiempos necesrios, que se van a necesitar serán 3x5x2(
3 maquinas, 5 rutas y 2 productos), que hacen en total 30 datos temporales, pero se
escogió solo 15 suponiendo que no se tendrá en cuenta los tiempos en relación con los
productos.
Esta suposición no introducirá cambio alguno sobre el objetivo de la práctica, pero
supondrá un ahorro cantidad de variables a definir y aligerar la carga del OPC.
8.GUÍA DE USO DE LA PRÁCTICA:
Para el correcto funcionamiento de cualquier SISTEMA AUTÓMATICO, hay que
seguir algunos pasos previos antes de lanzar los programas en ejecución. Se diferencian
los pasos realizados al ejecutar los programas por vez primera y los realizados de una
práctica a otra.
De modo general si es la primera vez que se va a ejecutar la práctica, se debe seguir los
siguientes pasos:
Se guardan los programas en sus respectivos dispositivos (ADNAN2 en El
PC que comunica con el CONTROLADOR_B, org en el Vijeo Citect,
PRACTICA_ORG_DEF en el PLC).
Se exportan las variables filtradas del proyecto desde el PLC.
Mediante el OFS tools, con el alias orga_ , se indica la ruta de las variables
exportadas y se configura el OPC.
72
Desde el explorador de Citect, se importan las variables antes exportadas,
pero esta vez mediante el OPC.
Se compila el programa, llegados a este punto el programa estará ya listo
para ejecutarse.
Estos pasos no hacen falta hacerlos siempre, solo hace falta realizarlos una vez, y
mientras no se modifican los programas, ni se cambia las aplicaciones en el PLC.
I-Arrancar el robot (CONTROLADOR-B) si está apagado, pulsando el botón de
encendido figura, y desde el equipo, ejecutar el programa ATS (interfaz de
usuario para el controlador ACL).
Figura 18: CONTROLADOR_B
BOTÓN DE
ENCENDIDO
73
Figura 19: Terminal ACL
En el terminal ACL se introduce en la línea de comandos, la siguiente
instrucción @HOMES. Esta instrucción sirve para buscar la posición de
referencia para todos los ejes.
Antes de pasar a la siguiente instrucción, se debe esperar hasta que el robot
termine de inicializar todas las sus variables, con el programa antes mencionado
HOMES.
II-Ejecutar el programa INICI: en la línea de comandos @INICI, aparece en la
pantalla el mensaje siguiente:
Bienvenido al programa para la
inicializacion del almacen.
Se va a inicializar el valor
de las posiciones
del almacen de piezas
en bruto (0=vacio, 1=ocupado)
Introduzca el valor para
el palet 1 :
Entonces se inicializa el vector palet del almacén de forma manual, desde ACL,
escribiendo uno en la componente que representa la celda ocupada, y cero en la
correspondiente a la celda vacía. En definitiva se hace una inspección visual, de
cada celda y se registra esta información en el vector palet.
74
Finalmente se ejecuta el programa PRINC: escribiendo en la línea de comando @
PRINC, esta rutina es la que permite gestionar, los procesos de proveer material al
circuito, y almacenamiento de los mismos una vez procesados.
III- En caso de que no está abierto el programa UnityProXL, se procede a iniciarlo,
y abrir el archivo practica_org_def (ver la figura 20).
Figura 20: UnityProXL.
OJO: Hay que asegurarse de que la opción estándar está activada. En la figura
20 está señalada con círculo rojo, ya en otro caso se estaría trabajando en modo
simulación.
IV-Conectar con el PLC, esto es seleccionando la opción de conectar señalada en la
misma figura con círculo azul.
En el caso de que la modalidad resulta diferente (ver figura 21) se procede a
transferir el archivo actualizado al PLC.
75
Figura 21: Transferencia del proyecto
Hay que confirmar la regeneración del proyecto antes de empezar a transferir.
Nota importante: Se coloca la bandeja entre los sensores S1 y S12 de forma manual. Se
puede realizar esta colocación en cualquiera de los caso mientras sea antes de darle el
botón de marcha.
Falta solo lanzar el SCADA.
V- Al iniciar el explorador de Citect, se abren tres ventanas (Editor de proyectos, org-
explorador de Citect y Editor gráfico). En caso que sea diferente la ventana de org-
explorador de proyectos, se procede en abrirlo desde la Lista de proyectos.
VI-Abrir en el editor gráfico las páginas mostradas en la figura 22, en la pestaña
Página.
2. Transferir
el archivo al
plc
1. Modalidad=diferente
76
FIGURA 22: Abrir páginas CINTmej y DEMANDAS
VII-Se ejecuta el programa en el explorador, en los editores o en las dos páginas del
proyecto. En todos ellos el símbolo de ejecución es el indicado en la figura 22
(señalado con un círculo en color rojo).
Figura 23: Ejección del proyecto en SCADA
77
Rellenar los tiempos para cada máquina, correspondiente a cada ruta en la
página de DEMANDAS. Al terminar de completar los tiempos, indicar en la
misma página las cantidades de cada producto P1 o P2, destinado a cada ruta
(ver figura 24).
Figura 24: Página de demandas
Como se indica la propia página, solo hay que colocarse encima y poner los tiempos en
segundos.
VII-Pasar a la siguiente página”CINTmej”, donde lo único que se pide es pulsar el
botón de marcha en la parte superior derecha.
En esta página, donde se recogen las informaciones de los productos procesados y su
tipo.
78
En caso de error durante el proceso, se pulsa el botón “Reset” para reiniciar la sesión
de la práctica. En este caso todas las variables se ponen a cero.