33
ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA ANEXO I - CONFIGURACIÓN Y PROGRAMACIÓN DEL API a) Instalación, cableado y configuración Los autómatas de la serie S7 -300 se instalan sobre carriles especiales suministrados por SIEMENS, normalmente dentro de armarios eléctricos ya que el grado de protección es IP20 (protección contra cuerpos sólidos de diámetro mayor a 12mm y sin protección frente a entrada de agua). La disposición más habitual incluye de izquierda a derecha y de arriba abajo: las protecciones, la fuente de alimentación, la CPU, los módulos en uno o varios bastidores y los actuadores (contactores, relés, variadores de frecuencia, etc.). La fuente de alimentación transforma y rectifica el voltaje de red a 24 VDC, con los cuales se alimenta la CPU del autómata y sus módulos. Como puede verse en la Figura A.1, el cableado es simple, conectando la fase L1 (230 VAC ó 127 VAC seleccionables) y el neutro N, así como la toma de tierra. También dispone de un interruptor de encendido/apagado. Figura A.1 – Esquema de conexionado de la fuente de alimentación y CPU La CPU se alimenta a través de alguna de las salidas <L+, M> de que dispone la fuente de alimentación, bien a través de un adaptador como el de la imagen anterior o bien a través de un par de conductores aislados de cobre de, al menos, 1mm 2 de sección. La CPU 315-2DP tiene un puerto de comunicaciones MPI para programación y otro puerto, PROFIBUS DP, el cual permite una mayor velocidad de transferencia. Asimismo, dispone de una ranura para introducir una tarjeta de memoria en la cual se almacena el programa del usuario cuando la memoria de la CPU es insuficiente y un selector de puesta en marcha con tres posiciones: RUN (arranque), STOP (paro) y MRES (borrado de la memoria).

ANEXO I - CONFIGURACIÓN Y PROGRAMACIÓN …bibing.us.es/proyectos/abreproy/20231/fichero/ANEXOS%2FI... · - STEP 7 es el entorno de programación de SIEMENS para los autómatas de

Embed Size (px)

Citation preview

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

ANEXO I - CONFIGURACIÓN Y PROGRAMACIÓN DEL API

a) Instalación, cableado y configuración

Los autómatas de la serie S7 -300 se instalan sobre carriles especiales suministrados por SIEMENS, normalmente dentro de armarios eléctricos ya que el grado de protección es IP20 (protección contra cuerpos sólidos de diámetro mayor a 12mm y sin protección frente a entrada de agua). La disposición más habitual incluye de izquierda a derecha y de arriba abajo: las protecciones, la fuente de alimentación, la CPU, los módulos en uno o varios bastidores y los actuadores (contactores, relés, variadores de frecuencia, etc.).

La fuente de alimentación transforma y rectifica el voltaje de red a 24 VDC, con los cuales se alimenta la CPU del autómata y sus módulos. Como puede verse en la Figura A.1, el cableado es simple, conectando la fase L1 (230 VAC ó 127 VAC seleccionables) y el neutro N, así como la toma de tierra. También dispone de un interruptor de encendido/apagado.

Figura A.1 – Esquema de conexionado de la fuente de alimentación y CPU

La CPU se alimenta a través de alguna de las salidas <L+, M> de que dispone la fuente de alimentación, bien a través de un adaptador como el de la imagen anterior o bien a través de un par de conductores aislados de cobre de, al menos, 1mm2 de sección. La CPU 315-2DP tiene un puerto de comunicaciones MPI para programación y otro puerto, PROFIBUS DP, el cual permite una mayor velocidad de transferencia. Asimismo, dispone de una ranura para introducir una tarjeta de memoria en la cual se almacena el programa del usuario cuando la memoria de la CPU es insuficiente y un selector de puesta en marcha con tres posiciones: RUN (arranque), STOP (paro) y MRES (borrado de la memoria).

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

Los módulos se disponen a continuación de la CPU, conectándose a la misma a través de un bus en la parte trasera. Dicho bus va conectando cada módulo con el siguiente dentro de un mismo bastidor y a su vez a la CPU.

Figura A.2 – Cableado de termopares en módulo SM331

En la Figura A.2 se puede observar en detalle el cableado de termopares en un módulo de entradas analógicas SM331. El cable rojo conectado en el borne 1 es la alimentación a 24 VDC, indicado como L+, la cual proviene de la fuente de alimentación. Los cuatro pares de cables siguientes se corresponden cada uno con los cables de compensación de los termopares. Se instalan por pares de canales, es decir, hay cuatro canales utilizados y dos pares, el 0-1 y el 2-3. Si el número de termopares fuese impar habría que puentear el otro canal para que no produjera un error de diagnóstico por rotura de hilo. El resto de canales está conectado a la masa M de la fuente de alimentación como puede verse en la imagen. Cuando se utiliza compensación interna de la unión fría, es necesario puentear los bornes 10 y 11 desinados como COMP y Mana.

Las entradas y salidas digitales se cablean de modo similar atendiendo a los esquemas eléctricos de cada módulo, como ya se vio en el Capítulo 4.

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

Para programar el autómata se requiere un dispositivo externo en el que se pueda ejecutar un entorno de programación. Puede tratarse de un ordenador personal, de una pantalla táctil, de programadores portátiles, etc. En este proyecto se ha utilizado un ordenador personal, con sistema operativo Windows XP y el software de programación Siemens Simatic STEP 7 v5.4, dado que el autómata es del mismo fabricante y cada uno de ellos tiene su propio software para programar sus productos.

Al tratarse de un software propietario es necesario adquirir el programa y las licencias de uso del mismo por separado, las cuales se introducen mediante el programa Automation License Manager incluido en la distribución.

A continuación, se explican los pasos a seguir para instalar correctamente el software. Los requisitos necesarios son los siguientes:

- Ordenador con Microsoft Windows XP

- Siemens Simatic STEP 7 (v5.4 o posterior)

- Claves de licencia para STEP 7 (disquete amarillo u opciones similares).

Para poder comunicarse con el autómata se requieren además los dispositivos de comunicación que se describen en el apartado Configuración del hardware.

I. Instalación del software SIMATIC STEP 7

1) Insertar el CD o el DVD con el programa de instalación. Si no aparece directamente, ir a Mi PC y hacer doble clic en la unidad en la que se haya insertado. Seleccionar el idioma y hacer clic en Siguiente. Aparecerá la pantalla de la Figura A.3.

Figura A.3 – Instalación de STEP 7

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

En dicha pantalla, se seleccionan los programas STEP 7, S7-PLCSIM y Automation License Manager.

- STEP 7 es el entorno de programación de SIEMENS para los autómatas de la serie Simatic S7-300 y S7-400.

- S7-PLCSIM es un simulador de autómatas en el que se puede configurar un autómata virtual con todas sus entradas, salidas y variables internas de forma que se puede probar el funcionamiento y la configuración de los proyectos y programas antes de cargarlos en el autómata real.

- Automation License Manager es un programa que se encarga de gestionar las claves de licencia para todos los productos SIEMENS instalados en el equipo.

2) Durante la instalación se pedirán las claves de licencia, pero se eligirá la opción de añadirlas más adelante. Una vez instalado el software, hay que reiniciar el ordenador. Se crearán dos iconos en el escritorio, uno para el Automation License Manager y otro para el Administrador Simatic. Haciendo doble clic en el primero aparecerá la ventana de la Figura A.4.

Figura A.4 – Instalación de licencias para STEP 7

A través de ella se pueden buscar las claves de licencia necesarias, bien en el disco duro del ordenador o bien en medios extraíbles o disquetes. Para saber qué productos necesitan clave, hay que seleccionar de la lista desplegable la opción Software instalado, con lo que aparecerá la ventana de la Figura A.5.

Como se podrá comprobar, han sido instalados varios programas adicionales, los cuales se encargan principalmente de las comunicaciones de red, la configuración del hardware del autómata y el almacenamiento e intercambio de datos con el equipo. Para transferir las claves se hace clic en el icono Vista buscar (los pequeños

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

prismáticos) y se selecciona la ruta en la que se encuentran las claves. Tras esto se puede cerrar el programa.

Figura A.5 – Lista de programas que necesitan licencia en STEP 7

3) Para iniciar un nuevo proyecto, se hace doble clic sobre Administrador Simatic y se abrirá la ventana del programa junto con el asistente para nuevos proyectos de la Figura A.6.

Figura A.6 – Administrador SIMATIC con el Asistente para nuevos proyectos

Cuando se cuenta con algo más de experiencia, se puede cancelar este asistente y crear un nuevo proyecto desde cero, especificando con más exactitud la configuración del autómata. Haciendo clic en Siguiente se procede a seleccionar el modelo de autómata sobre el que se quiere trabajar, asignarle un nombre y una dirección MPI (por defecto la 2 aunque la numeración sigue hasta un máximo de 32 estaciones

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

conectadas en el mismo bus MPI de 0 a 31). Esto no es un paso imprescindible ya que es posible crear un programa genérico y definir posteriormente el hardware y su configuración.

Figura A.7 – Selección de CPU a utilizar en el nuevo proyecto

Para este ejemplo, se selecciona la CPU315-2DP sin tener en cuenta la referencia exacta del equipo, que se modificará más adelante y se hace clic en Siguiente.

4) En la nueva ventana aparecen los bloques de organización que se van a utilizar, cuyo significado se explicó en el Capítulo 4.

Figura A.8 – Selección de bloques de organización que se desean usar

El lenguaje de programación para los bloques puede ser de tres tipos: AWL, KOP y FUP. Se seleccionará el lenguaje AWL para este proyecto y se hace clic en Siguiente.

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

5) En el último paso, se asigna un nombre al proyecto y se pulsa en Finalizar, con lo que aparece la pantalla de la Figura A.9.

Figura A.9 – Ventana principal del Administrador SIMATIC

Cada una de las partes de esta pantalla se explica más adelante. De momento, basta saber que haciendo doble clic sobre OB1 aparecerá una nueva ventana en la que directamente podemos empezar a programar.

II. Configuración del hardware

Una vez creado el proyecto en el Administrador SIMATIC hay que configurar el autómata. La configuración del hardware del autómata se realiza a través HW Config. El objetivo es crear una representación del cableado físico del autómata y la disposición de los módulos en el cuadro eléctrico para que, al programar, las variables que se usen se correspondan adecuadamente con las entradas y salidas reales.

Tanto para una instalación sencilla como para una muy compleja, hay que definir el modelo exacto del autómata, la disposición de los módulos, la configuración interna y las conexiones de red. Se puede acceder a la configuración de hardware directamente desde el Administrador Simatic, seleccionando el equipo y haciendo doble clic sobre el icono Hardware, como se ve en la Figura A.10.

Se pueden añadir varios equipos a un mismo proyecto, incluyendo equipos PC, pantallas táctiles, servidores e incluso conexiones virtuales a proyectos de WinCC que estén relacionados con el proyecto de STEP 7.

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

Figura A.10 – Selección de la configuración de hardware del equipo

Al abrir el programa HW Config, aparece un espacio de trabajo dividido en tres partes. En el centro se encuentra el bastidor virtual en el que está colocado el autómata (por defecto el bastidor cero), indicando la numeración de los “slots” o módulos que ocupa. A la derecha se tiene una lista desplegable con todos los dispositivos que se pueden añadir. En la parte de abajo se halla la lista de dispositivos conectados a un bastidor en concreto, la referencia exacta, la versión del sistema operativo, su dirección MPI y las direcciones de entrada y salida.

Figura A.11 – Ventana de trabajo de HW Config

A partir de la lista de dispositivos del apartado Cuadro eléctrico y autómata, se rellena el bastidor seleccionando los dispositivos en la lista desplegable y arrastrándolos hasta su posición en el bastidor, en el mismo orden en el que estén dispuestos en la realidad. Al acabar quedará una configuración similar a la Figura A.12.

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

Figura A.12 – HW Config con la disposición de módulos ya configurada

Dentro de cada uno de los módulos se pueden configurar diversos parámetros como la dirección de entrada o salida, el envío de señales de diagnóstico y alarma, o la configuración de los módulos analógicos para las entradas de termopar (Figura A.13).

Figura A.13 – Parametrización de un módulo de entradas analógicas para termopares tipo K

Cada uno de los módulos tiene su propio manual en el que se explican todos y cada uno de los parámetros y configuraciones necesarias en cada caso. Para guardar la configuración se hace clic en el icono “Guardar y compilar”, ya que de esa forma se creará la configuración que habrá que cargar posteriormente en el autómata.

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

El siguiente paso es configurar la estructura de red que vamos a utilizar. La CPU 315-2DP dispone de dos puertos de comunicaciones: el puerto MPI y el puerto PROFIBUS DP.

El MPI se utiliza para conexiones a equipos cercanos y para conexión a través del adaptador adecuado a un ordenador personal próximo, pero la velocidad de transferencia está muy limitada. Ambos utilizan el estándar RS485 (a diferencia del RS232 que utilizan los puertos de comunicaciones de los ordenadores personales, puertos COM), con algunas limitaciones en MPI. El protocolo PROFIBUS DP permite la transmisión de datos entre estaciones a distancias de hasta 1500 metros y con una velocidad de hasta 12Mbit/s sin necesidad de repetidor mediante un cable de par trenzado de dos hilos, aumentando además el número máximo de estaciones en un solo cable de 32 a 128. Esto significa que es posible una comunicación entre equipos separados por grandes distancias a un coste muy bajo y con una buena calidad de señal. Se suele utilizar cable apantallado para disminuir aún más los efectos de las interferencias. La opción superior en cuanto a velocidad de transferencia, número de estaciones y bajo ruido es la fibra óptica, con el inconveniente del elevado coste en comparación. Esto suele llevar a sistemas mixtos en grandes instalaciones. Como alternativa más reciente, se empieza a implantar el uso de sistemas inalámbricos sobre redes TCP/IP usando tecnología WiFi.

En este proyecto, se utiliza la conexión PROFIBUS DP entre el autómata y un ordenador personal que incluye una tarjeta de red MPI/PROFIBUS, en el cual está instalado STEP 7. Para configurar dicha conexión es necesario que tanto el ordenador como el autómata estén correctamente conectados y que la velocidad de transferencia sea la misma para ambos. Esto se configura en el botón INICIO -> SIMATIC -> STEP 7 -> Ajustar interfaz PG-PC. Si se desea configurar el autómata habrá que averiguar la velocidad de transferencia del mismo en dicho programa, establecer la conexión a esa velocidad con el autómata (normalmente a través de MPI), cargar los parámetros de la nueva configuración de red, cambiar la velocidad de la interfaz PG-PC y probar que la conexión funciona a la nueva velocidad. Dependiendo de la tarjeta de comunicaciones, esto puede realizarse automáticamente.

Figura A.14 – Configuración de las comunicaciones en NetPro

La configuración de red se realiza mediante el programa NetPro (Figura A.14) que puede ejecutarse directamente desde HW Config haciendo clic en el icono Configurar red.

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

Como se puede observar, aparece la CPU con los dos puertos disponibles, el MPI en rojo y el PROFIBUS DP en violeta, las direcciones del autómata en cada uno de ellos y la red MPI a la que no está conectado aún. Si se hace doble clic sobre el cuadro violeta aparece la Figura A.15.

Figura A.15 – Propiedades del puerto PROFIBUS DP

Se añade una nueva red haciendo clic en Nueva… y seleccionando DP a una velocidad de 12Mbit/s. A continuación, se pulsa Aceptar y de la lista desplegable de la derecha se añade un equipo PG/PC. Haciendo doble clic sobre él se abre una ventana similar. Haciendo clic en Interfaces se añade una nueva que será PROFIBUS. Para ello, se selecciona de la lista la red creada con anterioridad PROFIBUS (1) y se acepta. Al igual que antes, se hace clic en “Guardar y compilar”. Ahora ya se pueden cerrar NetPro y HW Config y volver al Administrador Simatic.

Esta configuración que se ha creado aún no está cargada en el autómata. Para cargarla es necesario, como se ha explicado antes, que se establezca una comunicación inicial con el mismo, bien mediante PROFIBUS o bien mediante MPI, ajustando correctamente la velocidad de transferencia. Una vez que se haya establecido, sólo hay que hacer clic en el icono Cargar en módulo, dentro de HW Config y elegir el autómata en el que se quiere cargar dicha configuración. Para ello, el autómata debe estar en posición STOP, mediante el selector del autómata o bien pasando al estado operativo de STOP la CPU en Sistema de destino -> Diagnóstico/Preferencias -> Estado operativo. Una vez cargada es conveniente ponerlo en posición RUN y comprobar que no aparece ninguna luz roja en los módulos (salvo quizás en el IM 360 si no está conectado al IM361). Para comprobar que la configuración es correcta, se visualizarán los mensajes del sistema de diagnóstico desde el Administrador Simatic, haciendo clic derecho sobre el autómata, Sistema de destino -> Diagnosticar hardware. Allí se ven los mensajes de error de los módulos y todo tipo de información sobre el funcionamiento del autómata.

Con esto termina la configuración del hardware. Los parámetros de esta configuración que se necesitan para programar son principalmente las direcciones de entrada y salida de los módulos, ya que a ellas se hace referencia directa en el código. Pueden

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

obtenerse y modificarse directamente en el programa HW Config y asignarles nombres simbólicos que ayuden a identificarlas.

III. Funcionamiento y programación básica del API

La interfaz gráfica de STEP 7 es bastante similar a la de muchos otros programas basados en ventanas, como puede verse en la Figura A.16. El escritorio de trabajo se divide en dos zonas que son el árbol del proyecto (a la izquierda) y el contenido de cada sección de dicho árbol en el área de trabajo (a la derecha). Como elementos comunes, cuenta con una barra de menús y una barra de iconos en la parte superior y una barra de estado en la parte inferior.

Figura A.16 – Vista de un proyecto en el Administrador SIMATIC

Dentro del proyecto se tiene una lista de los equipos que se utilizan y el contenido del programa de cada uno de ellos, así como su configuración Hardware. En la carpeta Programa S7 se encuentran dos subcarpetas y la tabla de símbolos que se puede rellenar para trabajar con programación simbólica (en lugar de E 1.0 se puede definir un símbolo que sea “Pulsador_Marcha” para resulte más intuitiva la programación).

El programa propiamente dicho se escribe dentro de la carpeta Bloques, comenzando por el OB1 sin más que hacer doble clic sobre él. En dicha carpeta es donde se trabaja principalmente, añadiendo bloques como los que se describirán a continuación. En la carpeta Fuentes podemos encontrar archivos de texto plano (TXT) que sirven para añadir o intercambiar estructuras de programa sin necesidad de utilizar el proyecto al completo.

Antes de comenzar a programar, es conveniente familiarizarse con el funcionamiento interno del autómata y la forma de ejecución del código, así como algunos parámetros específicos y los tipos de funciones que se utilizan.

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

En primer lugar, hay que saber que el funcionamiento está basado en ciclos. En la Tabla A.1 se explica el orden de ejecución de las operaciones del autómata:

Paso Secuencia en las CPUs hasta 10/1998 Secuencia en las CPUs a partir de 10/1998 1 El sistema operativo inicia el tiempo de vigilancia

del ciclo El sistema operativo inicia el tiempo de vigilancia del ciclo

2 La CPU lee el estado de las entradas en los módulos de entradas y actualiza la imagen de proceso de las entradas

La CPU escribe los valores de la imagen de proceso de las salidas en los módulos de salida

3 La CPU ejecuta el programa de usuario y las operaciones indicadas en dicho programa

La CPU lee el estado de las entradas en los módulos de entradas y actualiza la imagen del proceso de las entradas

4 La CPU escribe los valores de la imagen de proceso de las salidas en los módulos de salida

La CPU ejecuta el programa de usuario y las operaciones indicadas en dicho programa

5 Al final del ciclo, el sistema operativo realiza las tareas pendientes como cargar y borrar bloques, enviar y recibir datos globales…

Al final del ciclo, el sistema operativo realiza las tareas pendientes como cargar y borrar bloques, enviar y recibir datos globales…

6 Finalmente, la CPU regresa al pricnipio del ciclo y arranca de nuevo el tiempo de vigilancia del ciclo

Finalmente, la CPU regresa al pricnipio del ciclo y arranca de nuevo el tiempo de vigilancia del ciclo

Tabla A.1 – Pasos que rigen el funcionamiento de las CPUs de SIEMENS

La modificación efectuada en 1998 se debe a que debido al intercambio de datos hay un cierto retardo entre la escritura de las salidas y la lectura de las entradas. Si se intercambia una gran cantidad de datos el tiempo de muestreo no se corresponde con el tiempo real del ciclo sino que incluye una pausa que es función de la cantidad de datos intercambiados. El tiempo de ciclo depende por tanto de la carga del ciclo y puede ser supervisado a través de lo que se denomina “watchdog” o tiempo de vigilancia de ciclo. Si el tiempo del ciclo es superior se dispara una alarma de aviso y se reinicia el ciclo.

En segundo lugar, hay que tener siempre presente que el modo de funcionamiento del autómata, al estar basado en ciclos, conlleva que el estado de las variables al finalizar el ciclo anterior afectará al ciclo actual. Un ejemplo práctico en lógica descriptiva sería:

“Si el interruptor se pulsa, enciende el motor”

Esto quiere decir que partiendo de que el motor esté parado y el interruptor abierto, el motor seguiría parado hasta que se pulsara el interruptor. Al pulsarlo arrancaría pero no se pararía al soltarlo ya que aunque dejáramos de pulsar el interruptor no hay ninguna orden que diga “Si el interruptor no está pulsado, para el motor”. Al comenzar el ciclo siguiente el programa comprueba si el interruptor está pulsado. Si no lo está no hace nada y si lo está arranca el motor, pero al estar en marcha no produce ningún cambio. La instrucción en lenguaje AWL sería:

U E 1.0 //Si está activada la entrada 1.0

S A 4.0 //Activa la salida 4.0

Otro parámetro interesante es el resultado lógico RLO. Este es el resultado de una operación lógica y puede tener valor 1 ó 0 (verdadero o falso). Utilizándolo podemos modificar el ejemplo anterior de la siguiente forma:

“El motor estará igual que el interruptor”

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

Realizamos una comprobación del estado del interruptor y lo asignamos al estado del motor. “¿Está pulsado el interruptor?” Si lo está el RLO será 1 y asignamos su valor al motor, con lo cual el motor arrancará. Si el interruptor está abierto el RLO será 0 y al asignarlo al estado del motor, se apagará.

La instrucción en lenguaje AWL es tan simple como:

U E 1.0 //Si está activada la entrada 1.0 el RLO

//es 1, si no es 0

= A 4.0 //Asigna el RLO a la salida 4.0

Esto mismo puede conseguirse modificando el primer ejemplo de la siguiente forma:

U E 1.0 //Si está activada la entrada 1.0

S A 4.0 //Activa la salida 4.0

UN E 1.0 //Si está desactivada la entrada 1.0

R A 4.0 //Desactiva la salida 4.0

Hay que prestar siempre atención al RLO ya que se arrastra de una operación a la siguiente, pudiendo resultar en comportamientos no deseados del programa. Es por ello que se suelen utilizar comparaciones repetitivas o comprobaciones del estado de variables que acabamos de modificar para asegurar que el RLO se corresponde a la operación actual y no a la anterior.

Además del RLO, el autómata incluye dos acumuladores para realizar operaciones aritméticas y lógicas con distintos tipos de formatos, no sólo binarios. Estos acumuladores se designan por ACU1 y ACU2. Se utilizan directamente al cargar un valor y se desplazan uno al otro. Al cargar el primer valor este se almacena en ACU1. Si se carga un segundo valor, éste se almacena en ACU1 y el valor que estaba en ACU1 se desplaza a ACU2. Si ahora se carga un tercer valor, éste se almacena en ACU1, el valor que estaba en ACU1 se desplaza a ACU2, el que estaba en ACU2 se elimina, y así sucesivamente.

Puede encontrarse un manual sobre el lenguaje AWL en el documento “Lista de instrucciones (AWL) para S7-300 y S7-400” con referencia 6ES7810-4CA08-8DW1, incluido en la documentación de STEP 7.

En lo referente a la programación del autómata, hay varios tipos de contenido que podemos añadir. Todos ellos pueden ser añadidos haciendo clic derecho en el área de trabajo dentro de Programas. Cada uno de ellos se define como bloque y el programa STEP 7 cuenta con los que se describen en la Tabla A.2.

Bloque Descripción breve de la función Bloques de organización (OB) Los OBs definen la estructura del programa de usuario Bloques de función del sistema (SFB) y funciones de sistema (SFC)

Los SFBs y SFCs están integrados en la CPU S7, permitiéndole acceder a importantes funciones del sistema

Bloques de función (FB) Los FBs son bloques con “memoria” que puede programar el mismo usuario

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

Funciones (FC) Las FCs contienen rutinas de programa para funciones frecuentes

Bloques de datos de instancia (DB de instancia) Al llamar a un FB/SFB, los DBs de instancia se asocian al bloque. Los DBs de instancia se generan automáticamente al efectuarse la compilación

Bloques de datos (DB) Los DBs son áreas de datos para almacenar los datos de usuario. Adicionalmente a los datos asociados a un determinado bloque de función, se pueden definir también datos globales a los que pueden acceder todos los bloques

Tabla A.2 – Bloques funcionales de las CPUs de SIEMENS

Además de los bloques anteriores, otro elemento que resulta útil es la “Tabla de Variables”. En ellas podemos añadir variables que utilicemos dentro de nuestro programa, así como entradas y salidas de módulos. Cuando el autómata está funcionando podemos ver el estado de las mismas y forzar sus valores para comprobar el funcionamiento.

Hay una gran variedad de tipos de variables en STEP 7: valores binarios, decimales, hexadecimales, enteros de 16 ó 32 bits, números reales, tiempo… Es recomendable conocerlos todos y saber cómo elegir el adecuado en cada momento, ya que la memoria de la que disponen estos autómatas es bastante limitada en comparación a un ordenador personal y cuanto más optimizado esté el código, mejor funcionará el autómata.

Para empezar a programar es aconsejable leer la documentación que se incluye con el propio programa, comenzando por la guía rápida “S7-300 Getting Started Básico”, continuar con “STEP 7 Introducción y ejercicios prácticos” y “Programar con STEP 7”. A partir de ahí sólo será necesario recurrir al manual de referencia para el lenguaje que utilicemos (AWL, KOP o FUP) y a la documentación para funciones específicas como controladores PID o configuración de módulos.

b) Señales de entrada y salida

Conexión Dirección Entrada Dirección Salida Slot 4 – X2 - 4.0 Slot 4 – X3 - 4.1 Slot 5 – X2 0.0 - Slot 5 – X3 0.1 -

Slot 6 – CH0 288 - Slot 6 – CH1 290 - Slot 6 – CH2 292 - Slot 6 – CH3 294 - Slot 6 – CH4 296 - Slot 6 – CH5 298 - Slot 6 – CH6 300 - Slot 6 – CH7 302 - Slot 7 – CH0 304 -

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

c) Bloques usados y estructura del programa

Figura A.17 – Bloques utilizados en la programación del API

De los bloques anteriores, los siguientes se ejecutan fuera del ciclo del programa principal OB1:

- OB35: Se ejecuta cíclicamente con una frecuencia determinada en HWConfig para dicho bloque. Por defecto es 200ms. Dentro se ejecuta FC3.

- OB40: Se ejecuta cuando se produce una alarma de proceso en los módulos analógicos.

- OB82: Se ejecuta al producirse una alarma de diagnóstico en los módulos analógicos.

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

Figura A.18 – Diagrama de flujo del programa principal

d) Código fuente

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

DATA_BLOCK DB 41 TITLE = Datos del controlador PID integrado en STEP 7 AUTHOR : SIMATIC FAMILY : ICONT VERSION : 0.1 FB 41 BEGIN COM_RST := FALSE; MAN_ON := FALSE; PVPER_ON := TRUE; P_SEL := TRUE; I_SEL := TRUE; INT_HOLD := FALSE; I_ITL_ON := TRUE; D_SEL := TRUE; CYCLE := T#1S; SP_INT := 8.000000e+001; PV_IN := 8.100000e+001; PV_PER := W#16#0; MAN := 1.001002e-002; GAIN := -1.000000e+000; TI := T#20S; TD := T#10S; TM_LAG := T#2S; DEADB_W := 0.000000e+000; LMN_HLM := 4.998910e+001; LMN_LLM := -4.998910e+001; PV_FAC := 1.000000e+000; PV_OFF := 0.000000e+000; LMN_FAC := 1.000000e+000; LMN_OFF := 5.000000e+001; I_ITLVAL := 0.000000e+000; DISV := 0.000000e+000; LMN := 5.090000e+001; LMN_PER := W#16#36F9; QLMN_HLM := FALSE; QLMN_LLM := FALSE; LMN_P := 9.000000e-001; LMN_I := 0.000000e+000; LMN_D := 0.000000e+000; PV := 8.100000e+001; ER := -9.000000e-001; sInvAlt := 9.000000e-001; sIanteilAlt := 0.000000e+000; sRestInt := 0.000000e+000; sRestDif := -1.860587e-008; sRueck := 9.000000e-001; sLmn := 9.000000e-001; sbArwHLmOn := FALSE; sbArwLLmOn := FALSE; sbILimOn := TRUE; END_DATA_BLOCK DATA_BLOCK DB 1 TITLE = Datos de reflujo VERSION : 0.1 STRUCT Marcha_Reflujo : BOOL ; Parada_Reflujo : BOOL ; Electroiman_ON : BOOL ;

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

Electroiman_OFF : BOOL ; Reflujo_ON : BOOL ; END_STRUCT ; BEGIN Marcha_Reflujo := FALSE; Parada_Reflujo := FALSE; Electroiman_ON := FALSE; Electroiman_OFF := FALSE; Reflujo_ON := FALSE; END_DATA_BLOCK DATA_BLOCK DB 2 TITLE = Entradas desde los termopares VERSION : 0.1 STRUCT CH_0 : INT ; //Channel 1.0 CH_1 : INT ; //Channel 1.1 CH_2 : INT ; //Channel 1.2 CH_3 : INT ; //Channel 1.3 CH_4 : INT ; //Channel 1.4 CH_5 : INT ; //Channel 1.5 CH_6 : INT ; //Channel 1.6 CH_7 : INT ; //Channel 1.7 CH_8 : INT ; //Channel 2.0 END_STRUCT ; BEGIN CH_0 := 0; CH_1 := 0; CH_2 := 0; CH_3 := 0; CH_4 := 0; CH_5 := 0; CH_6 := 0; CH_7 := 0; CH_8 := 0; END_DATA_BLOCK DATA_BLOCK DB 3 TITLE = Temperaturas VERSION : 0.1 STRUCT SE_1 : REAL ; // Temperatura 1 - Cabeza SE_2 : REAL ; // Temperatura 2 - Plato 4 SE_3 : REAL ; // Temperatura 3 - Plato 6 SE_4 : REAL ; // Temperatura 4 - Plato 8 SE_5 : REAL ; // Temperatura 5 - Plato 10 SE_6 : REAL ; // Temperatura 6 - Plato 12 SE_7 : REAL ; // Temperatura 7 - Plato 14 SE_8 : REAL ; // Temperatura 8 - Fondos SE_9 : REAL ; // Temperatura TPR - Precalentador de la alimentación END_STRUCT ; BEGIN SE_1 := 0.000000e+000; SE_2 := 0.000000e+000; SE_3 := 0.000000e+000; SE_4 := 0.000000e+000; SE_5 := 0.000000e+000; SE_6 := 0.000000e+000; SE_7 := 0.000000e+000;

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

SE_8 := 0.000000e+000; SE_9 := 0.000000e+000; END_DATA_BLOCK DATA_BLOCK DB 4 TITLE = Estado de los termopares VERSION : 0.1 STRUCT CH_0 : WORD ; //Estado del termopar CH_1 : WORD ; //Estado del termopar CH_2 : WORD ; //Estado del termopar CH_3 : WORD ; //Estado del termopar CH_4 : WORD ; //Estado del termopar CH_5 : WORD ; //Estado del termopar CH_6 : WORD ; //Estado del termopar CH_7 : WORD ; //Estado del termopar CH_8 : WORD ; //Estado del termopar END_STRUCT ; BEGIN CH_0 := W#16#0; CH_1 := W#16#0; CH_2 := W#16#0; CH_3 := W#16#0; CH_4 := W#16#0; CH_5 := W#16#0; CH_6 := W#16#0; CH_7 := W#16#0; CH_8 := W#16#0; END_DATA_BLOCK DATA_BLOCK DB 10 TITLE = Datos globales VERSION : 0.1 STRUCT REFLUJO : REAL ; //Relación de reflujo T_ON : S5TIME ; //Tiempo encendido T_OFF : S5TIME ; //Tiempo apagado PID_ON : BOOL ; //PID encendido PID_MAN_ON : BOOL ; //PID en modo manual Motor_ON : BOOL ; //Estado del motor T_Referencia : REAL := 8.000000e+001; //Set point para el PID Temp_PID : WORD ; //Termopar para el lazo de reflujo END_STRUCT ; BEGIN REFLUJO := 0.000000e+000; T_ON := S5T#0MS; T_OFF := S5T#0MS; PID_ON := FALSE; PID_MAN_ON := FALSE; Motor_ON := FALSE; T_Referencia := 8.000000e+001; Temp_PID := W#16#0; END_DATA_BLOCK DATA_BLOCK DB 1000 TITLE = Alarmas de temperatura y diagnóstico de módulos analógicos VERSION : 0.1

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

STRUCT RESET_PROC : BOOL ; //Marca de reset de la alarma de proceso MARCA_PROC : BYTE ; //Marca de activación de alarma ORIGEN_PROC : BYTE ; //16#54 Módulo de entrada / 16#55 Módulo de salida DIRECCION_PROC : WORD ; //Dirección inicial del módulo causante MOTIVO_PROC : DWORD ; //LB8 Rebase límite superior / LB9 Rebase límite inferior RESET_DIAG : BOOL ; //Reset de alarma de diagnóstico MARCA_DIAG : BYTE ; //Marca de activacion de alarma DIRECCION_DIAG : WORD ; //Dirección inicial del módulo causante END_STRUCT ; BEGIN RESET_PROC := FALSE; MARCA_PROC := B#16#0; ORIGEN_PROC := B#16#0; DIRECCION_PROC := W#16#0; MOTIVO_PROC := DW#16#0; RESET_DIAG := FALSE; MARCA_DIAG := B#16#0; DIRECCION_DIAG := W#16#0; END_DATA_BLOCK FUNCTION FC 2 : VOID TITLE =Lectura de termopares VERSION : 0.1 VAR_INPUT RawValue : INT ; Factor : REAL ; Offset : REAL ; OverFlow : INT ; OverRange : INT ; UnderRange : INT ; UnderFlow : INT ; END_VAR VAR_OUTPUT MeasuredValue : REAL ; Status : WORD ; END_VAR VAR_TEMP TInt : INT ; TDoubleInt : DINT ; TFactor : REAL ; TOffset : REAL ; TFactor1 : DINT ; TFactor2 : REAL ; END_VAR BEGIN NETWORK TITLE =Conversión de termopares a temperatura L #RawValue; ITD ; DTR ; L #Factor; *R ; L #Offset; +R ; T #MeasuredValue; NETWORK TITLE =Representación de valores analógicos, vigilancia L W#16#0;

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

T #Status; L #RawValue; L #OverFlow; >=I ; SPB m_of; L #RawValue; L #OverRange; >=I ; SPB m_or; L #RawValue; L #UnderFlow; <=I ; SPB m_uf; L #RawValue; L #UnderRange; <=I ; SPB m_ur; SPA end; m_of: L W#16#800; //Valor por encima de la zona lineal T #Status; SPA end; m_or: L W#16#400; //Valor por encima del rango de medida T #Status; SPA end; m_uf: L W#16#200; //Valor por debajo de la zona lineal T #Status; SPA end; m_ur: L W#16#100; //Valor por debajo del rango de medida T #Status; SPA end; end: NOP 0; END_FUNCTION FUNCTION FC 1 : VOID TITLE = Transferencia de valores de termopares al bloque de datos VERSION : 0.1 VAR_TEMP OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY : BYTE ; //Priority of OB Execution OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1) OB1_RESERVED_1 : BYTE ; //Reserved for system OB1_RESERVED_2 : BYTE ; //Reserved for system OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds) OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started END_VAR BEGIN NETWORK

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

TITLE =Transferencia de valores de temperatura al bloque de datos DB 2 // Canal 1.0 -> Bloque de datos L PEW 288; T DB2.DBW 0; // Canal 1.1 -> Bloque de datos L PEW 290; T DB2.DBW 2; // Canal 1.2 -> Bloque de datos L PEW 292; T DB2.DBW 4; // Canal 1.3 -> Bloque de datos L PEW 294; T DB2.DBW 6; // Canal 1.4 -> Bloque de datos L PEW 296; T DB2.DBW 8; // Canal 1.5 -> Bloque de datos L PEW 298; T DB2.DBW 10; // Canal 1.6 -> Bloque de datos L PEW 300; T DB2.DBW 12; // Canal 1.7 -> Bloque de datos L PEW 302; T DB2.DBW 14; // Canal 2.0 -> Bloque de datos L PEW 304; T DB2.DBW 16; NETWORK TITLE =Conversión representación valores analógicos -> Valor medido // Canal 1.0: Termopar tipo K CALL FC 2 ( RawValue := DB2.DBW 0, Factor := 1.000000e-001, Offset := 0.000000e+000, OverFlow := 16221, OverRange := 13730, UnderRange := -2701, UnderFlow := -2701, MeasuredValue := DB3.DBD 0, Status := DB4.DBW 0); // Canal 1.1: Termopar tipo K CALL FC 2 ( RawValue := DB2.DBW 2, Factor := 1.000000e-001, Offset := 0.000000e+000, OverFlow := 16221, OverRange := 13730, UnderRange := -2701, UnderFlow := -2701, MeasuredValue := DB3.DBD 4, Status := DB4.DBW 2);

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

// Canal 1.2: Termopar tipo K CALL FC 2 ( RawValue := DB2.DBW 4, Factor := 1.000000e-001, Offset := 0.000000e+000, OverFlow := 16221, OverRange := 13730, UnderRange := -2701, UnderFlow := -2701, MeasuredValue := DB3.DBD 8, Status := DB4.DBW 4); // Canal 1.3: Termopar tipo K CALL FC 2 ( RawValue := DB2.DBW 6, Factor := 1.000000e-001, Offset := 0.000000e+000, OverFlow := 16221, OverRange := 13730, UnderRange := -2701, UnderFlow := -2701, MeasuredValue := DB3.DBD 12, Status := DB4.DBW 6); // Canal 1.4: Termopar tipo K CALL FC 2 ( RawValue := DB2.DBW 8, Factor := 1.000000e-001, Offset := 0.000000e+000, OverFlow := 16221, OverRange := 13730, UnderRange := -2701, UnderFlow := -2701, MeasuredValue := DB3.DBD 16, Status := DB4.DBW 8); // Canal 1.5: Termopar tipo K CALL FC 2 ( RawValue := DB2.DBW 10, Factor := 1.000000e-001, Offset := 0.000000e+000, OverFlow := 16221, OverRange := 13730, UnderRange := -2701, UnderFlow := -2701, MeasuredValue := DB3.DBD 20, Status := DB4.DBW 10); // Canal 1.6: Termopar tipo K CALL FC 2 ( RawValue := DB2.DBW 12, Factor := 1.000000e-001, Offset := 0.000000e+000, OverFlow := 16221, OverRange := 13730, UnderRange := -2701, UnderFlow := -2701,

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

MeasuredValue := DB3.DBD 24, Status := DB4.DBW 12); // Canal 1.7: Termopar tipo K CALL FC 2 ( RawValue := DB2.DBW 14, Factor := 1.000000e-001, Offset := 0.000000e+000, OverFlow := 16221, OverRange := 13730, UnderRange := -2701, UnderFlow := -2701, MeasuredValue := DB3.DBD 28, Status := DB4.DBW 14); // Canal 2.0: Termopar tipo K CALL FC 2 ( RawValue := DB2.DBW 16, Factor := 1.000000e-001, Offset := 0.000000e+000, OverFlow := 16221, OverRange := 13730, UnderRange := -2701, UnderFlow := -2701, MeasuredValue := DB3.DBD 32, Status := DB4.DBW 16); NETWORK TITLE =Acusar la alarma de proceso //Si se activa la señal de reset se borran los datos de la alarma de proceso U DB1000.DBX 0.0; SPBN m001; L 0; T DB1000.DBB 1; T DB1000.DBB 2; T DB1000.DBW 4; T DB1000.DBD 6; R DB1000.DBX 0.0; m001: NOP 0; NETWORK TITLE =Acuse de alarma de diagnóstico //Si se activa la señal de reset se borran los datos de la alarma de diagnóstico U DB1000.DBX 10.0; SPBN m002; L 0; T DB1000.DBB 11; T DB1000.DBW 12; R DB1000.DBX 10.0; m002: NOP 0; END_FUNCTION FUNCTION FC 3 : VOID TITLE = Llamada al control PID //Esta función se ejecuta en el OB35 con un ciclo determinado en HWConfig //y dentro de ella se selecciona la temperatura del PID y se ejecuta el mismo. VERSION : 0.1 VAR_TEMP

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

TEMPERATURA : REAL ; REFERENCIA : REAL ; SALIDA : REAL ; MAN_on : BOOL ; END_VAR BEGIN NETWORK TITLE = //Antes de ejecutar el PID se selecciona la temperatura que va a tomarse como //señal para el lazo. L DB10.DBW 14; L 2#1; ==I ; SPB TE1; L DB10.DBW 14; L 2#10; ==I ; SPB TE2; L DB10.DBW 14; L 2#100; ==I ; SPB TE3; L DB10.DBW 14; L 2#1000; ==I ; SPB TE4; L DB10.DBW 14; L 2#10000; ==I ; SPB TE5; L DB10.DBW 14; L 2#100000; ==I ; SPB TE6; L DB10.DBW 14; L 2#1000000; ==I ; SPB TE7; L DB10.DBW 14; L 2#10000000; ==I ; SPB TE8; SPA INIC; TE1: L DB3.DBD 0; T #TEMPERATURA; SPA FINT; TE2: L DB3.DBD 4; T #TEMPERATURA; SPA FINT; TE3: L DB3.DBD 8; T #TEMPERATURA; SPA FINT; TE4: L DB3.DBD 12; T #TEMPERATURA; SPA FINT; TE5: L DB3.DBD 16; T #TEMPERATURA; SPA FINT;

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

TE6: L DB3.DBD 20; T #TEMPERATURA; SPA FINT; TE7: L DB3.DBD 24; T #TEMPERATURA; SPA FINT; TE8: L DB3.DBD 28; T #TEMPERATURA; SPA FINT; INIC: L PEW 288; T #TEMPERATURA; L 2#1; T DB10.DBW 14; FINT: NOP 0; NETWORK TITLE = Adimensionalización de la temperatura (-270,+1372) Celsius a (0,100) % L #TEMPERATURA; L 2.7e+002; +R; L 1.6420e+001; /R; T #TEMPERATURA; L DB10.DBD 10 L 2.7e+002; +R; L 1.6420e+001; /R; T #REFERENCIA; NETWORK TITLE = Controlador PID incluido en STEP 7 FB41 CALL FB 41 , DB 41 ( MAN_ON := DB10.DBX 8.1, SP_INT := #REFERENCIA, PV_IN := #TEMPERATURA, LMN := #SALIDA); NETWORK TITLE =complete restart //Reinicia el integrador al conectar/desconectar el PID y ajusta la salida hacia //la Relación de Reflujo U DB41.DBX 0.0; R DB41.DBX 0.0; L #SALIDA; L 5.000000e+001; -R ; L 2.500000e+001; /R ; CALL FC 124 ; T #SALIDA; UN DB10.DBX 8.0; SPB FIN; L #SALIDA; T DB10.DBD 0; FIN: BE ; END_FUNCTION FUNCTION FC 4 : VOID

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

TITLE =Temporización del reflujo //A través de esta función se calculan los tiempos de encendido y apagado del //electroimán de reflujo a partir de la relación de reflujo. El tiempo mínimo en //cada posición es de 1 segundo. El rango de la relación de reflujo va de 0.01 a //99.9. VERSION : 0.1 BEGIN NETWORK TITLE = //Calcula a partir de la relación de reflujo los tiempos de encendido y apagado y //asigna los //límites en el caso de que la relación de reflujo no esté comprendida entre //ellos. L DB10.DBD 0; L 0.000000e+000; ==R ; //Si es 0.00 inicializarla a 1. SPB INIC; L DB10.DBD 0; L 9.990000e+000; >R ; //Si es mayor que 9.99 ir a MAX SPB MAX; L DB10.DBD 0; L 1.001002e-001; <R ; //Si es menor que 0.1 ir a MIN SPB MIN; L DB10.DBD 0; L 1.000000e+000; >=R ; //Si es mayor o igual a 1 ir a MAYO SPB MAYO; //Si es menor continúa (0.1001002 - 0.9999999) L 100; //Carga 100 en ACU-1 ITB ; //Lo convierte a BCD L W#16#0; //Carga la base de tiempo en 10ms en ACU-2 OW ; //Concatena los acumuladores en ACU-1 T DB10.DBW 6; //Almacena 1 seg en tiempo de apagado L 1.000000e+002; L DB10.DBD 0; /R ; //Calcula el tiempo de encendido base 10ms RND ; //Redondear a entero ITB ; //Lo convierte a BCD L W#16#0; //Carga la base de tiempo en 10ms en ACU-2 OW ; //Concatena los acumuladores en ACU-1 T DB10.DBW 4; //Almacena en tiempo de encendido SPA FIN; //Termina la función INIC: L 1.000000e+000; //Inicializa la relación de reflujo a 1 T DB10.DBD 0; SPA FIN; MAYO: L 100; //Mismo procedimiento cambiando los tiempos ITB ; // mínimos a la otra posición (1.00 - 9.99) L W#16#0; OW ; T DB10.DBW 4; L DB10.DBD 0; L 1.000000e+002; *R ; RND ; ITB ; L W#16#0; OW ; T DB10.DBW 6; SPA FIN;

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

MAX: L DB10.DBD 0; //Comprueba que esté en el rango L 9.990000e+001; >R ; SPB LMAX; //Si se pasa ajustar al rango L 100; //Mismo procedimiento cambiando los tiempos ITB ; // mínimos a la otra posición (9.990001-99.9) L W#16#0; OW ; T DB10.DBW 4; L DB10.DBD 0; L 1.000000e+001; *R ; RND ; ITB ; L W#16#1000; OW ; T DB10.DBW 6; SPA FIN; LMAX: L 9.990000e+001; //Ajusta al límite máximo T DB10.DBD 0; SPA FIN; MIN: L DB10.DBD 0; //Comprueba que esté en el rango L 1.001002e-002; <R ; SPB LMIN; //Si se pasa ajustar al rango L 100; //Mismo procedimiento cambiando los tiempos ITB ; // mínimos a la otra posición (0.01001002-0.1001002) L W#16#0; OW ; T DB10.DBW 6; L 1.000000e+001; L DB10.DBD 0; /R ; RND ; ITB ; L W#16#1000; OW ; T DB10.DBW 4; SPA FIN; LMIN: L 1.001002e-002; //Ajusta al límite mínimo T DB10.DBD 0; SPA FIN; FIN: BE ; END_FUNCTION FUNCTION FC 5 : VOID TITLE = Control del reflujo VERSION : 0.1 BEGIN NETWORK TITLE =Marcha del reflujo U DB1.DBX 0.0; //Si se pone en marcha UN DB1.DBX 0.4; //y no está encendido FR T 1; //Reinicia los temporizadores FR T 2; S DB1.DBX 0.4; //Activa la señal de encendido

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

S DB1.DBX 0.2; //Activa la marca de electroimán encendido S A 4.0; //Activa el electroimán U A 4.0; //Si está activo L DB10.DBW 4; //Carga el tiempo de encendido SE T 1; //Arranca el temporizador de encendido U T 1; //Cuando finalice el mismo R A 4.0; //Desactiva el electroimán R DB1.DBX 0.2; S DB1.DBX 0.3; //Activa la marca de electroimán apagado U DB1.DBX 0.3; L DB10.DBW 6; //Carga el tiempo de apagado SE T 2; //Arranca el temporizador de apagado U T 2; //Cuando finalice el mismo R DB1.DBX 0.3; //Desactiva la señal de electroimán apagado S A 4.0; //Activa el electroimán S DB1.DBX 0.2; NETWORK TITLE =Parada del reflujo U DB1.DBX 0.1; //Si se pulsa la parada R A 4.0; //Desactiva el electroimán R DB1.DBX 0.2; //Desactiva la marca de electroimán encendido R DB1.DBX 0.3; //Desactiva la señal de electroimán apagado R DB1.DBX 0.4; //Desactiva la señal de encendido FR T 1; //Reinicia los temporizadores FR T 2; NETWORK TITLE =Flanco negativo a los mandos de marcha y paro U DB1.DBX 0.0; R DB1.DBX 0.0; U DB1.DBX 0.1; R DB1.DBX 0.1; END_FUNCTION FUNCTION FC 6 : VOID TITLE = Control de la bomba de destilación VERSION : 0.1 BEGIN NETWORK TITLE =Salida al contactor de la bomba de destilación U DB10.DBX 8.2; UN E 0.0; = A 4.1; U E 0.0; R DB10.DBX 8.2; END_FUNCTION ORGANIZATION_BLOCK OB 1 TITLE = Programa principal VERSION : 0.1 VAR_TEMP OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY : BYTE ; //Priority of OB Execution OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1) OB1_RESERVED_1 : BYTE ; //Reserved for system OB1_RESERVED_2 : BYTE ; //Reserved for system OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started END_VAR BEGIN NETWORK TITLE =Transferencia de valores de temperatura al bloque de datos DB 2 CALL FC 1 ; NETWORK TITLE =Temporización de la actuación del electroimán CALL FC 4 ; NETWORK TITLE =Control del arranque y parada del electroimán CALL FC 5 ; NETWORK TITLE =Control del arranque y parada de la bomba CALL FC 6 ; END_ORGANIZATION_BLOCK ORGANIZATION_BLOCK OB 35 TITLE = Bloque de ejecución cíclica VERSION : 0.1 VAR_TEMP OB35_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB35_STRT_INF : BYTE ; //16#36 (OB 35 has started) OB35_PRIORITY : BYTE ; //Priority of OB Execution OB35_OB_NUMBR : BYTE ; //35 (Organization block 35, OB35) OB35_RESERVED_1 : BYTE ; //Reserved for system OB35_RESERVED_2 : BYTE ; //Reserved for system OB35_PHASE_OFFSET : WORD ;//Phase offset (msec) OB35_RESERVED_3 : INT ; //Reserved for system OB35_EXC_FREQ : INT ; //Frequency of execution (msec) OB35_DATE_TIME : DATE_AND_TIME ; //Date and time OB35 started END_VAR BEGIN NETWORK TITLE = Llamada a la función FC 3 que incluye el PID CALL FC 3 ; END_ORGANIZATION_BLOCK ORGANIZATION_BLOCK OB 40 TITLE = "Hardware Interrupt" Alarmas del proceso VERSION : 0.1 VAR_TEMP OB40_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB40_STRT_INF : BYTE ; //16#41 (OB 40 has started) OB40_PRIORITY : BYTE ; //Priority of OB Execution OB40_OB_NUMBR : BYTE ; //40 (Organization block 40, OB40)

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

OB40_RESERVED_1 : BYTE ; //Reserved for system OB40_IO_FLAG : BYTE ; //16#54 (input module), 16#55 (output module) OB40_MDL_ADDR : WORD ; //Base address of module initiating interrupt OB40_POINT_ADDR : DWORD ; //Interrupt status of the module OB40_DATE_TIME : DATE_AND_TIME ; //Date and time OB40 started END_VAR BEGIN NETWORK TITLE =Marca de alarma de proceso L #OB40_EV_CLASS; // OB40_EV_CLASS : 16#54 = Módulo de entrada T DB1000.DBB 1; // : 16#55 = Módulo de salida L #OB40_IO_FLAG; // OB40_IO_FLAG : 16#54 = Módulo de entrada T DB1000.DBB 2; // : 16#55 = Módulo de salida L #OB40_MDL_ADDR; // OB40_MDL_ADDR : Dirección inicial del T DB1000.DBW 4; // módulo causante L #OB40_POINT_ADDR; // OB40_POINT_ADDR : LB8 = Rebase del T DB1000.DBD 6; // límite superior NOP 0; // OB40_POINT_ADDR : LB9 = Rebase por defecto del NOP 0; // límite inferior END_ORGANIZATION_BLOCK ORGANIZATION_BLOCK OB 82 TITLE = "I/O Point Fault" Diagnóstico de los módulos analógicos //En las variables temporales de este bloque se almacenan los datos de //diagnóstico //en caso de fallos.En este caso se utiliza el OB82 sólo para que la CPU no pase //a //STOP y para señalizar. VERSION : 0.1 VAR_TEMP OB82_EV_CLASS : BYTE ; //16#39, Event class 3, Entering event state, Internal fault event OB82_FLT_ID : BYTE ; //16#XX, Fault identifcation code OB82_PRIORITY : BYTE ; //Priority of OB Execution OB82_OB_NUMBR : BYTE ; //82 (Organization block 82, OB82) OB82_RESERVED_1 : BYTE ; //Reserved for system OB82_IO_FLAG : BYTE ; //Input (01010100), Output (01010101) OB82_MDL_ADDR : WORD ; //Base address of module with fault OB82_MDL_DEFECT : BOOL ; //Module defective OB82_INT_FAULT : BOOL ; //Internal fault OB82_EXT_FAULT : BOOL ; //External fault OB82_PNT_INFO : BOOL ; //Point information OB82_EXT_VOLTAGE : BOOL ; //External voltage low OB82_FLD_CONNCTR : BOOL ; //Field wiring connector missing OB82_NO_CONFIG : BOOL ; //Module has no configuration data OB82_CONFIG_ERR : BOOL ; //Module has configuration error OB82_MDL_TYPE : BYTE ; //Type of module OB82_SUB_MDL_ERR : BOOL ; //Sub-Module is missing or has error OB82_COMM_FAULT : BOOL ; //Communication fault OB82_MDL_STOP : BOOL ; //Module is stopped OB82_WTCH_DOG_FLT : BOOL ; //Watch dog timer stopped module OB82_INT_PS_FLT : BOOL ; //Internal power supply fault OB82_PRIM_BATT_FLT : BOOL ; //Primary battery is in fault OB82_BCKUP_BATT_FLT : BOOL ; //Backup battery is in fault OB82_RESERVED_2 : BOOL ; //Reserved for system OB82_RACK_FLT : BOOL ; //Rack fault, only for bus interface module OB82_PROC_FLT : BOOL ; //Processor fault

ANEXO I CONTROL REMOTO SUPERVISOR DE UNA COLUMNA DE PLATOS PARA DESTILACIÓN BINARIA

OB82_EPROM_FLT : BOOL ; //EPROM fault OB82_RAM_FLT : BOOL ; //RAM fault OB82_ADU_FLT : BOOL ; //ADU fault OB82_FUSE_FLT : BOOL ; //Fuse fault OB82_HW_INTR_FLT : BOOL ; //Hardware interupt input in fault OB82_RESERVED_3 : BOOL ; //Reserved for system OB82_DATE_TIME : DATE_AND_TIME ; //Date and time OB82 started END_VAR BEGIN NETWORK TITLE = L #OB82_EV_CLASS; T DB1000.DBB 11; L #OB82_MDL_ADDR; T DB1000.DBW 12; END_ORGANIZATION_BLOCK