ITESM Campus Monterrey Depto. de Ing. Eléctrica Laboratorio de Teleingeniería Práctica 5: Programación Estructurada Objetivo: Conocer los diferentes tipos de ejecución de un programa, así como su utilidad. Implementar el concepto de programación estructurada con ayuda de las funciones de Step 7. Introducción: En Step 7, la ejecución del programa se lleva a cabo en bloques. Hasta ahora, se ha utilizado el bloque de organización 1 (OB1) para realizar el proceso deseado. La ejecución del programa relaciona el proceso programado con el sistema de operación del CPU, y se llama automáticamente desde este bloque y se ejecuta de manera cíclica. Al utilizar tareas extensas, se secciona el programa en bloques de función cuyo tamaño sea manejable, y cuya estructura sea ordenada. Estos bloques son llamados por el bloque de organización (OB) por medio de las instrucciones de llamado (CALL). Si la función se ejecuta hasta la última línea, Step 7 ejecutará el código del bloque que fue llamado previamente. La estructura de un programa se observa a continuación: Figura 1. Ejemplo de un programa estructurado Para la programación estructurada, STEP 7 ofrece las siguientes opciones: Práctica 5: Programación Estructurada 1 / 7
DB (Bloques de datos): Pueden utilizarse para guardar datos en el CPU. Existen dos tipos de DBs: Globales, en donde todos los OBs, FBs y FCs leen todos los datos guardados, o pueden incluso escribir en el DB. Por otro lado, se encuentran los DBs locales, en donde los datos se asignan a un FB en particular. FB (Bloque de función): EL FB tiene área de almacenamiento asignada. Si se llama a un FB, se le asigna un bloque de datos (DB). En este tipo de bloque, se puede tener acceso a la información del DB por medio de un llamado al FB. Es decir, las direcciones procesadas en el FB (entradas, salidas, memorias, etc.) pueden utilizarse en el programa principal (OB) o cualquier otro bloque, siempre y cuando se realice un llamado al DB correspondiente. Se pueden asignar diferentes DBs a un FB. Dentro de un FB, se puede realizar un llamado a otros FBs u otros FCs. FC (Función): Un FC no tiene área de almacenamiento asignada. Los datos locales de la función se pierden al finalizar la función. Dentro de un FC, se puede realizar un llamado a otros FBs u otros FCs. Bloques del sistema (SFB y SFC): Tienen la misma estructura de los FBs y los FCs, con la diferencia que estos bloques ya vienen cargados en el CPU, y tienen una función en específico. Estos bloques han sido creados por Siemens, así es que cuentan con protección. Es decir, son funciones que se pueden utilizar, pero no se tiene acceso al código del bloque. Para visualizar estos bloques, es necesario entrar al modo en línea (online) de los bloques del PLC. Para que el usuario pueda utilizar estas funciones, se utilizan la instrucción CALL. Figura 2. Visualización de los bloques cargados al PLC Práctica 5: Programación Estructurada 2 / 7
Los diferentes tipos de bloques cuentan con variables internas. Las variables deben definirse y especificarse en la tabla de declaración de variables, la cual se despliega en la parte superior de la ventana del bloque (ya sea OB, FB o FC). Los tipos de variables son: in, out, in_out, stat y temp. Sin embargo, estas variables no aparecen en todos los bloques. A continuación se describe brevemente cada tipo de variable, así como los bloques en donde se pueden encontrar. Parámetros de entrada (IN): Sólo en FBs, FCs, SFBs y SFCs. Con ayuda de estos parámetros de entrada, los datos son asignados para el procesamiento del bloque. Parámetros de salida (OUT): Sólo en FBs, FCs, SFBs y SFCs. Con ayuda de estos parámetros de salida, los resultados se asignan al bloque llamado. Parámetros de entrada/salida (IN_OUT): Sólo en FBs, FCs, SFBs y SFCs. Con este tipo de parámetros, los datos son asignados al bloque llamado, son procesados y se archivan los resultados al bloque llamado dentro de las mismas variables. Datos estadísticos (STAT): Sólo en FBs y SFBs Datos estadísticos son los datos locales de un bloque de funciones que están guardados en un bloque de datos de instancia, y se preservan hasta el próximo procesamiento del bloque de función. Datos temporales (TEMP): En todos los bloques incluyendo OB s. Los datos temporales son datos locales que el bloque archiva durante el procesamiento de un bloque. Estos datos se archivan en el stack local (L-Stack) y no están disponibles una vez que termina el procesamiento del bloque. Figura 3. Declaración de variables dentro de un FB Práctica 5: Programación Estructurada 3 / 7
Ejemplo: Creación de un bloque de función. Se creará un programa sencillo, en donde se incluyen las siguientes variables de un proceso: Entradas: Botón de encendido: I 1.6 Botón de apagado: I 1.7 Salidas: Motor de la banda: Q 1.1 Bits de memoria: Contador de ciclo: MD20 Datos temporales: Contador temporal Para agregar un nuevo bloque de funciones, se selecciona del menú emergente (click derecho) las opciones Insert New Object y Function Block. En cuanto al lenguaje de programación, el alumno utilizará el de su preferencia (STL, LAD, o FBD). Figura 4. Creación de un bloque de función Práctica 5: Programación Estructurada 4 / 7
Generando un Bloque de función con declaración de variables Cuando se generan los bloques en STEP 7, las funciones deben ser programadas por medio de asignación de variables. Entonces, en estos bloques no se permite el uso de direcciones absolutas: Entradas/salidas, bits de memoria, timers, counters, etc. Se asignan sólo variables y constantes. Una vez abierta le ventana de programación, se declararán las variables a utilizar. La figura 3 sirve de referencia para declarar las variables: primero, se selecciona el tipo de variable a utilizar (entrada, salida, entrada/salida, etc). Una vez seleccionada, se asigna un nombre a la variable, así como el tipo de dato y el valor inicial. El campo de la dirección se asigna automáticamente (si las direcciones no se visualizan como en la siguiente tabla, de todas formas se puede trabajar correctamente). Entonces, la tabla de variables se podría visualizar de la siguiente manera: Tabla 1. Declaración de variables en el FB Parámetro Nombre Tipo de dato Dirección Valor inicial Comentario Entrada On Bool 0.0 FALSE Encendido del motor Entrada Off Bool 0.1 FALSE Apagado del motor Salida Motor Bool 2.0 FALSE Motor Entrada/Salida Cycle DInt 4.0 L#0 Contador de ciclo Estadístico (STAT) Mb1 Bool 8.0 FALSE Contador temporal Al haber declarado las variables, se procede a la creación del programa. Se puede observar que el programa utiliza las variables declaradas como parámetros de entrada y salida. Estas variables son reconocidas sólo si se han declarado previamente, y para utilizarlas deben tener el signo # antes del nombre de la variable (ejemplo: #On). Al terminar con la programación de este bloque, se guardan los cambios y se descarga en el PLC. Ahora se procede a llamar este FB desde el OB1. Al abrir la ventana del programa en el OB, en la parte izquierda se podrá encontrar el apartado FB blocks (En el caso de STL, se utiliza la instrucción CALL FB1, DB ). Al agregarlo al espacio de trabajo, se despliegan las variables asignadas en la función (en este caso: On, Off, Motor, etc). En cada uno de los campos, el programador debe asignar los parámetros correspondientes (por ejemplo: I 0.0, Q 1.0, etc.) según la función. Es importante recalcar, que si se manda llamar un FB, también se tendrá que llamar a un DB, pues este último es la referencia del FB. La figura 6 muestra el FB1 creado anteriormente. Al especificar el DB1 como el bloque de datos de instancia, el programa advierte que no existe ese bloque. Step 7 tiene como opción crear automáticamente el bloque de datos. Se selecciona la opción Yes, y con esto se tendrá la función lista para ser llamada desde el OB1. Práctica 5: Programación Estructurada 5 / 7
Figura 5. Creación de un FB Figura 6. Creación de un DB de instancia Práctica 5: Programación Estructurada 6 / 7
Descripción del ejercicio.- Creación de funciones. Con ayuda de los FBs, DBs y/o FCs, se crearán las funciones necesarias para seccionar el funcionamiento de la línea de transporte que se han programado con anterioridad. Es decir, el funcionamiento de la línea de transporte operará de la misma manera que se menciona en la practica 4. La diferencia radicará en reducir las líneas de código generadas en el programa del usuario. El alumno debe realizar: Una función que controle el registro. Una función que controle la banda. Una función que controle un pistón. Se deberá de de repetir el llamado de la función del pistón las veces que sean necesarias. El proceso de automatización deberá de ejecutarse cualquier cantidad de ocasiones. Deberá de probar el correcto funcionamiento del ejercicio en el simulador del modelo. Solo lo podrá cargar al PLC real cuando el Instructor lo permita, en caso contrario se penalizara la práctica con 20 puntos. Práctica 5: Programación Estructurada 7 / 7