• No se han encontrado resultados

Introducción a la programación

N/A
N/A
Protected

Academic year: 2021

Share "Introducción a la programación"

Copied!
9
0
0

Texto completo

(1)

Introducción a la programación

1 Objetivo

El objetivo fundamental de esta práctica es describir las características y funcionamiento de los sistemas que forman el puesto de trabajo, así como plantear una primera introducción a la programación de PLCs y al empleo de interfaces de programación, simulación y comunicación. Para ello se empleará el autómata de la serie 5 de Siemens.

2 Elementos del puesto de trabajo

A destacar los siguientes elementos: 1) Panel de neumática:

• Regulador de presión de entrada. • Válvula de paso.

• Distribuidor de 6 tomas.

• Cilindros de doble efecto con sensores de final de tramo de inducción y de palanca.

• Válvulas biestables y monoestables. • Fuente de alimentación de 24 V. • Módulo de relés.

(2)

2) PLC Simatic S5-95U de Siemens

3) PC para desarrollo de aplicaciones para el autómata, comunicándose con éste mediante un puerto RS232. También es posible la simulación del mismo.

4) Puesto de Relés que permite el control de la maqueta neumática mediante lógica cableada. Dicho puesto consta de dos pulsadores y un interruptor.

Durante la primera parte de la práctica el profesor realizará una explicación detallada de las particularidades más relevantes.

3 Entorno de programación

Las tareas de simulación y desarrollo para el S5 se van a realizar en una aplicación no profesional que corre en entorno Windows denominada S5Win, versión 2.11.

Haciendo un doble-click sobre el archivo ejecutable newS5win.exe aparece la pantalla principal del entorno, que se muestra en la figura1.

Figura 1

La herramienta permite interactuar plenamente con el autómata. Entre sus posibilidades destacan:

Edición de programas en lista de instrucciones AWL (ensamblador), diagramas de contactos (KOP), orientado a especialistas en electricidad, o diagramas de funciones de bloques (FUP) orientado a electrónicos.

(3)

Mantenimiento del código. Se recomienda al alumno el uso abundante de comentarios en líneas, segmentos y bloques del mismo.

Depuración de errores: Es posible realizar el seguimiento segmento a segmento del código, poner puntos de ruptura, forzar variables etc.

Simulación del autómata: Es posible simular todos los recursos del autómata (HW, estado de la memoria, valores de entradas y salidas, marcas, contadores y temporizadores etc.). Será indispensable el empleo exhaustivo de esta funcionalidad, junto con la herramienta de depuración, lo que permitirá obtener una idea muy clara del funcionamiento del autómata. El aspecto del simulador puede verse en la figura 2.

Interacción con el PLC: Es posible también la recepción de salidas y el envío de valores a las entradas del autómata.

Figura 2

4 Introducción a la programación del autómata

La programación de cualquier autómata está sujeta siempre a un conjunto de normas que el alumno deberá emplear en todas las entregas que se realicen a lo largo del curso.

4.1 Bloques de código BLOQUES DE ORGANIZACIÓN

Los bloques de operación son siempre ejecutados por el sistema operativo que gobierna el autómata. En cualquier autómata, existe un bloque denominado ‘principal’ cuya ejecución es cíclica. Esto quiere decir que al terminar la última instrucción de dicho bloque comienza un nuevo ciclo de ejecución previa lectura de las entradas en ese instante y actualización de la imagen de las salidas. El nombre del bloque principal puede cambiar según la familia y modelo de autómata pero habitualmente recibe el nombre de bloque OB1 (las siglas OB hacen referencia a ‘Organization Block’). En el entorno a disposición del alumno, la definición de bloques se realiza a través del menú

Editar->Crear módulo y se rellena en la casilla correspondiente el nombre del módulo que se desea crear. Es importante recordar que el bloque OB1 debe existir siempre. Desde dicho bloque se pueden realizar llamadas a su vez a otros bloques.

(4)

Otro bloque fundamental en cualquier programa es el bloque de arranque que, a diferencia del bloque principal, se ejecuta una sola vez al pasar de STOP a RUN pudiendo ejecutarse en situaciones especiales como, por ejemplo, el rearme tras la detención del autómata debido a una situación de emergencia (dependiendo del modelo). En dicho bloque se colocan las instrucciones de inicialización de las variables a emplear en el resto del programa: típicamente se ponen a cero las variables de estado excepto la correspondiente al estado inicial así como las variables imagen de entradas y salidas. En el caso de la familia Siemens S5 dicho bloque es el OB21.

Dependiendo del autómata concreto pueden existir un gran número de bloques de operación adicionales que tienen comportamientos prefijados por el sistema operativo. Por ejemplo, en el S5, el bloque OB3 es el que contiene el programa controlado por el evento alarma, el OB13 es el módulo para programas controlados por tiempo y gestión de alarmas de la periferia integrada, y el módulo OB22 es el empleado por el autómata para el rearme en caliente (corte y recuperación del suministro eléctrico del autómata permaneciendo en modo RUN, sin haber pasado por STOP). No confundir esta situación con el evento ‘Complete restarr’ asociado al paso de STOP a RUN (se ejecuta el bloque OB21).

OTROS BLOQUES

Existen, además de los bloques de operación un conjunto de bloques adicionales predefinidos que facilitan la depuración y mantenimiento del código, así como añaden legibilidad y estructuración al programa de control. La mayoría de los bloques pueden depurarse por separado durante la fase de simulación y también es posible hacer un seguimiento por bloques en tiempo real durante la ejecución del programa en el autómata. Al igual que los bloques de operación, los nombres de estos bloques adicionales varían entre familias y modelos de autómatas. En el caso de la familia S5 cabe destacar los siguientes tipos de bloques:

• Bloques de programa (PB0…PB255): Permiten desdoblar el programa de usuario y estructurarlo normalmente según aspectos funcionales o tecnológicos. • Bloques funcionales (FB0…FB255): Son módulos de programa especiales. Aquí

se introducen las partes de programa que aparecen con frecuencia o poseen gran complejidad y que necesitan un bloque de datos asociado. Poseen un juego de instrucciones ampliado.

• Bloques de datos (DB2…DB255): En ellos se almacenan datos para la ejecución del programa, como valores reales, textos, etc. de forma que el peso no tenga que recaer exclusivamente en el bloque OB21. Además y dependiendo del modelo de autómata pueden asociarse con bloques funcionales FB para arrancar valores exclusivos de dichos bloques.

A lo largo de la asignatura se exigirá que el alumno realice un código estructurado y será obligatorio el uso los diferentes tipos de bloques en lugar de un código monolítico no estructurado en el bloque principal.

4.2 Lenguajes de programación

Los entornos de programación de autómatas profesionales son cada vez más versátiles, en consonancia con la versatilidad de los nuevos modelos que van saliendo al mercado. Hoy en día se pueden programar los autómatas de gama alta de Siemens con lenguajes gráficos sofisticados (incluso escritura directa de Grafcets) y hasta lenguajes muy próximos a los tradicionales de alto nivel como C. Sin embargo, para

(5)

toda la familia de autómatas SIMATIC S5 se emplea el lenguaje STEP 5 donde se enumeran a continuación 3 de las 4 posibles representaciones:

Lista de instrucciones (AWL): el lenguaje ensamblador subyacente a todos los demás.

Esquema de funciones (FUP): un lenguaje gráfico de símbolos lógicos orientado al personal electrónico no experto en programación.

Esquema de contactos (KOP): un lenguaje gráfico similar a los diagramas de ‘escalera’ orientado al personal de la rama eléctrica no experto en programación. En todo momento el editor permite alternar entre las tres representaciones siempre que sea posible mediante la opción Representación en el menú de edición de cualquier bloque. A lo largo del curso y, especialmente para la familia de autómatas más moderna S7, se exigirá un conocimiento profundo del lenguaje ensamblador así como un manejo razonable del lenguaje gráfico KOP.

4.3 Tipos de variables

Existen un conjunto de variables predefinidas en la memoria RAM de cualquier autómata. Adicionalmente y, dependiendo del modelo, también es posible definir variables y tipos de variable de usuario. Entre las variables predefinidas más importantes en cualquier autómata destacan:

Entradas: variables imagen de los eventos que proporcionan la información acerca del estado del mundo al controlar en cada instante (i.e E 32.1). Se corresponden con los módulos de entradas digitales que tenga el autómata.

Salidas: variables imagen de las señales que actúan sobre el sistema a controlar (i.e. A 32.1). Se corresponden con los módulos de salidas digitales que tenga el autómata.

Marcas de memoria: variables de propósito general que típicamente memorizan el estado o parte del estado de control (i.e. M 127.0). Pueden ser de dos tipos:

o Volátiles o no remanentes: Pierden su valor cuando se corta el suministro de corriente del autómata o con el paso de STOP a RUN. Suelen corresponder a índices altos.

o No volátiles o remanentes: Permanece su valor aún cuando se apague el autómata (siempre que la batería esté colocada). Al restablecerse el suministro en caliente (rearme en caliente) el autómata continua la ejecución empleando los valores de los elementos no volátiles justo antes del corte de corrietne. En los autómatas S5, dado que tienen un juego de instrucciones relativamente reducido comparado con gamas más altas, se suele emplear una marca no volátil para arrancar el sistema en el bloque

OB21.

Temporizadores: Bloques de medida de tiempo (i.e. T1) • Contadores: Bloques de conteo (i.e. Z1).

Nota: En cualquier lenguaje de programación las variables se invocan directamente con el nombre.

4.4 Tablas de Símbolos

Los símbolos son un recurso fundamental en la programación del autómata que sirven para la mayor legibilidad del código y su posterior depuración y mantenimiento.

(6)

En el entorno de programación S5Win, la forma de acceder al listado de de símbolos definido para el programa actual es mediante los menús Ventana->Tabla de Símbolos.

Si estando activa la ventana de símbolos se pulsa con el ratón la opción Completar la columna de la izquierda contiene todas las variables empleadas en el código (i.e. A32.0) mientras que la columna de la derecha contiene el símbolo asociado (o está vacía si no ha sido definido). Editando la segunda columna se puede definir símbolos para todas las variables predefinidas.

4.5 Depuración

Durante la ejecución simulada del programa una vez terminado es posible conocer el estado de todas las variables en cada momento. Además, las dos representaciones gráficas (KOP y FUP) permiten visualizar gráficamente cada segmento de código mediante una línea roja que se detiene si el contacto está o no cerrado en ese momento (ver figura 3).

Figura 3

Para ello es necesario que estando el programa en ejecución en modo simulación (Opción RUN activada), se pulse la opción Ventana->Status módulo y se elija el módulo a depurar en la casilla correspondiente. Es imprescindible que el programa esté funcionando en simulación de forma adecuada antes de cargarlo en el autómata.

4.6 Normas generales para la escritura de bloques

Una instrucción tipo en AWL tiene 4 partes: una etiqueta (opcional), un nemónico de instrucción, el operando al que afecta dicho nemónico y, opcionalmente, un comentario. En el caso de STEP 5, el separador entre el comentario y la parte de instrucción interpretable es el ‘;’ y todo lo que haya después no se interpreta. En

(7)

incluir un carácter separador (barra espaciadora o tabulador) al introducir cada elemento de la instrucción (excepto para el ‘;’). Valga como ejemplo la siguiente instrucción completa:

_001: U E1.0 ; Comentario

Cualquier entorno de programación contiene muchas facilidades para la introducción de comentarios en el código. En S5Win, además del ya mencionado comentario de línea es posible colocar comentarios por segmentos y por bloques.

SEGMENTOS

Es importante destacar la importancia de emplear los segmentos facilitados por el editor durante la escritura del programa. No tiene sentido ninguno escribir un código de bloque monosegmento para después segmentarlo usando las facilidades que ofrece el editor de texto. En S5Win, el comando para añadir un segmento en la ventana de edición de bloque es la tecla F2. Los segmentos pueden recorrerse en ambos sentidos mediante las teclas F7 y F8 respectivamente. Al editar un nuevo segmento aparece siempre un ‘;’ en la primera línea y es ahí donde debe colocarse el comentario de segmento.

Ejercicio práctico I

A modo de ejemplo, al comienzo de la práctica se recomienda la creación de un programa muy sencillo mediante los siguientes pasos:

A) Arranque el PC y abra el entorno de programación S5Win

B) Elija Editar->Crear móludo e introduzca OB1 en la casilla modulo

C) En la primera línea escriba como comentario de bloque “Bloque principal” después del ‘;’

D) Grabe el proyecto: Modulo->Guardar y elija el nombre del fichero. Diga NO a la opción de guardar en el autómata. Observará que aparece la siguiente pantalla:

(8)

E) Edite el módulo OB1 recién creado haciendo doble-click e introduzca el código siguiente:

F) Guarde el programa (Archivo->Guardar) y compruebe que se ha grabado satisfactoriamente.

G) Añada un símbolo como nombre de la salida A32.0. Para ello seleccione

Ventana->Tabla de Simbolos y dentro del menú principal de esta ventana seleccione

Tabla de Símbolos->Completar. Cambie después el nombre A 32.0 en la columna de la

derecha por el símbolo que quiera (por ejemplo “Salida”) y guarde la tabla. Comprobará que ahora el editor del bloque OB1 muestra el nuevo nombre en lugar de A32.0, siempre que esté activado la representación simbólica (Menú Ver->Representación->Operando simbólico).

H) Mediante simulación compruebe el funcionamiento del programa. Para ello abra el menú Ventana->Software Simulación y visualice la entrada y salida empleadas en el código. Posteriormente pulse Run y compruebe que la salida se activa tras la activación de la entrada, tal y como aparece en la figura.

Figura 5

Para depurar el bloque OB1 abra ahora el menú Ventana->Status módulo y elija el módulo OB1. Compruebe el valor de las variables y la información gráfica al cambiar de sistema de representación mediante las teclas Ctrl+F7, Ctrl+F8 y Ctrl+F9 al modificar el valor de la entrada E 32.0 en la ventana del simulador.

I) Transfiera el programa al autómata. Para ello siga los siguientes pasos: • Encienda el autómata (interruptor a ON)

U E32.0 = A 32.0 BE

(9)

• Con el editor de módulo OB1 y la ventana de simulación cerrada elija la opción

Editar->Transferir (o Ctrl+F5). Conteste afirmativamente en las ventanas que aparezcan en pantalla.

J) Una vez transferido el programa a memoria ejecute el programa colocando el interruptor en posición de Run (aparecerá una luz verde para indicar que está en ejecución). Compruebe que tras la activación del pulsador E 32.0 se activa la luz de la salida A 32.0 en el modulo correspondiente.

Ejercicio Práctico II

Este segundo ejercicio es el que deberá ser realizado obligatoriamente por el alumno para superar esta práctica. Consiste en el modelado y la implementación del control de la maqueta neumática para conseguir un ciclo de expansión y compresión de los cilindros de doble efecto, empleando las electroválvulas de 2 vías y 5 posiciones previstas para ello en la propia maqueta.

Dicho ciclo se compone de la siguiente secuencia de trabajo en cuatro etapas: expansión del cilindro 1, expansión del 2, compresión del cilindro 1 y compresión del cilindro 2. Un pulsador PON controlará el arranque del sistema a través de la entrada E 32.0.

Para ello hay que realizar los siguientes pasos:

1) Modelado GRAFCET del automatismo (niveles 1 y 2).

2) Implementación del programa de control del autómata utilizando el editor

S5Win. El código debe estructurarse en dos bloques: el bloque principal OB1 y un bloque de programación PB1. El primero tendrá los segmentos relacionados con la activación de etapas (parte secuencial del automatismo) y el segundo tendrá la lógica de las electroválvulas (parte combinacional del automatismo). 3) Terminada la implementación se procederá a la simulación en el PC y a la

depuración de errores.

4) Carga en el PLC y montaje en la maqueta neumática.

Al término de la misma se avisará al profesor para mostrar el automatismo funcionando correctamente sobre la maqueta neumática.

La versión definitiva del código junto con el Grafcet de nivel 2 se entregará al comienzo de la siguiente práctica.

Nota importante: No se aceptará como válido ningún código que no presente los dos módulos OB1 y PB1, que no tenga tabla de símbolos o que no tenga la documentación y comentarios adecuados.

Referencias

Documento similar