Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Funciones y Bloques de Función
FC FB DB Contents Page Introducción Variables Temporales Tamaño de la Pila de Datos Locales Bytes Requeridos en un bloque de la Pila de Datos Locales Ocupación Total en la Pila de Datos Locales Ejercicio: Uso de las Variables Temporales Ejemplo de Visualización de un Mensaje, Indicando un Problema Módulos Parametrizables Declaración de Parámetros Formales Editando un Módulo Parametrizable Saltando a un módulo Paramerizado Uso del Parámetro EN/ENO en un Salto a Módulo …… Ejercicio: Crear un Módulo Parametrizable Ejercicio: Saltando a un Módulo FC Parametrizable Bloques de Función (FBs) Bloque de Función: Visualizar Mensajes ... …… Generando un DB de Instancia … Modelo con Múltiples DBs de Instancia Insertar/Borrar Parámetros de un Módulo a Posteriori Correcciones al Llamar a un Módulo Modificado ...… Ejercicio: Editar un Módulo de Función Correcciones al Llamar a un Módulo Modificado Conversión de un FC en un FB utilizando un Programa Fuente (1) Conversión de un FC en un FB utilizando un Programa Fuente (1) Ejercicio: Reconociendo Tipos de Variables Resumen: Saltos a Módulo …………
2
Introducción Variables Locales (válidas sólo en un bloque)
Variables Globales (válidas en todo el programa) • PAE / PAA • I/ O • M / T / C • Areas de DB Variables Temporales • son borradas una vez que se ha ejecutado el bloque • almacenam. temp. en L stack • se usan en OBs / FCs / FBs Variables Estáticas • permanecen una vez tras la ejecución del bloque • almac. permanente en DBs • se usa solo en FBs absoluto Acceso simbólico General Hasta ahora, las entradas y salidas en la Planta de Embotellado, eran direccionadas a través de sus parámetros actuales. No se asignaban parámetros a los módulos. Este tipo de procedimiento de progrmación se utilizaría en caso de que el programa corriera en una sóla máquina Para poder utilizar un mismo programa en diferentes máquinas, o con diferentes entradas y salidas, el programa debe parametrizarse y convertirse en algo universal. Cuando sea llamado, se tendrá que rellenar los diferentes parámetros con las entradas y salidas que se quieran utilizar. El ajuste del funcionamiento del hardware se realiza a través de la asignación de parámetros al llamar al módulo; la “vida interna“ del módulo no cambia en nada. Variables Locales Hasta ahora, se han utilizado variables globales (marcas y DBs) para almacenar los datos de producción, por ejemplo. En este capítulo se conocerá como almacenar los datos en variables locales. Variables Temporales Las Variables Temporales son variables que se almacenan mientras se está ejecutando un módulo. Se utilizan en todos los módulos (OB, FC, FB). Variables Estáticas Si los datos deben permanecer al finalizar la ejecución de un módulo, deben almacenarse en variables estáticas. Las variables estáticas solo pueden utilizarse en FBs.
3
Variables Temporales General Las variables temporales pueden utilizarse en todos los módulos (OB, FC, FB). Se utilizan para almacenar temporalmente información mientras el módulo está siendo ejecutado Los datos se pierden al finalizar la ejecución del módulo. Los datos se almacenan en la L stack (Pila de Datos Locales). Es un área separada en la CPU. Declaración Las variables se definen en la tabla de declaraciones del módulo. En la línea "temp“, se introduce el nombre de la variable y el tipo de datos asociado. Aquí no se permite inicializar la variable con un valor. Tras guardar el módulo, la ocupación en la memoria de la L stack se visualiza en la columna “Dirección". Acceso En el Segmento 1 de la figura de arriba, se puede ver un ejemplo de acceso simbólico a una variable temporal. El resultado de la resta se almacena en la variable temporal “result". También se puede utilizar el acceso absoluto (T LW0). No obstante, este tipo de acceso se evitará en la medida de lo posible, para que el programa sea más fácil de seguir. Nota Los nombres de variables que comienzan con el carácter #, son variables locales que son sólo válidas dentro del módulo y, por tanto, declaradas en la tabla de declaraciones. El Editor de Programas introduce este carácter automáticamente.
4
Tamaño de la Pila de Datos Locales
Tamaño Total: 1.5 Kbytes (CPU ) Ejecución En el S7-300: Prioridad Tam. L stack Arranque (ejecución única) 27 256 bytes Ejecución Cíclica 1 256 bytes 12 3 2 Ejecución Controlada por Tiempo Interrupción Time-of-Day Interrupción Time-Delay Interrupción Cíclica Pila de Datos Locales La Pila de Datos Locales (L stack) es un área de memoria que contiene las variables temporales (sustituye a la memoria temporal de SIMATIC S5) de los módulos. Tamaño de la L Stack Cuando el Sistema Operativo ejecuta un OB, se genera una L stack de 256 bytes, mientras que dicho OB y todos los módulos a los que se salte se estén ejecutando. A cada Clase dePrioridad se le asignan 256 bytes. La L stack, en las CPUs , tiene un total de 1536 bytes (1.5kBytes). Clase de Prioridad Existen un total de ocho clases de prioridad diferentes en el S No obstante, no pueden haber más de 6 clases de prioridad activas al mismo tiempo. Si, por ejemplo, el OB 100 está activo (con clase de prioridad 27), el OB1 (clase de prioridad 1) no podrá estar activo nunca. Es más, los OBs de error síncrono que van del 80 al 87, sólo pueden tener la clase de prioridad 28, si el error ocurre durante el arranque del programa. En otras palabras, cuando interrumpen al OB100. Se puede encontrar más información en el capítulo “Bloques de Organización". S7-400 Con CPUs del S7-400, se puede determinar el tamaño de la pila de datos locales, así como las clases de prioridad (Herramienta: Configuración HW). Se pueden deseleccionar las clases de prioridad que no se necesiten. De esta forma, se obtiene mayor espacio para almacenar datos locales. Error durante un Ciclo 256 bytes 16 28 26 Ejecución Controlada por un Evento Interrupción Hardware Error en Arranque
5
Bytes Requeridos en un bloque de la Pila de Datos Locales
derecho Visualizando los Se puede visualizar el número exacto de bytes requeridos por un módulo en la Bytes Requeridos pila de datos locales, a través de las propiedades del módulo. Activar 1. En el Administrador SIMATIC, seleccionar el módulo con el botón derecho del ratón y elegir: -> Propiedades del Objeto o 2. En el Administrador SIMATIC, seleccionar el módulo con el botón izquierdo del ratón y seleccionar la opción de menú Editar -> Propiedades del Objeto. Notas La suma de los datos locales para un nivel de ejecución (OB) es de 256 bytes como máximo en el S Cada OB ocupa de 20 a 22 bytes. Esto significa que se puede utilizar, como máximo, hasta 234 bytes en un FC o FB. Si se definen más de 256 bytes de datos locales, el bloque no puede cargarse en la CPU. La transmisión se interrumpe con el mensaje de error “El módulo no pudo ser copiado". En este mensaje de error hay un botón de "Detalles". Haciendo Click en este botón, aparecerá otro mensaje: “Longitud de datos locales incorrecto".
6
Ocupación Total en la Pila de Datos Locales
256 Bytes Evento Ocupación en la L stack 1 OB1 OB 1 Sistema Operativo FC 1 con var. temporales 2 OB1 FC1 FC 2 con var. temporales OB1 FC2 FC1 3 OB1 FC1 4 FC 3 con var. temporales OB1 FC3 FC1 5 7 OB1 OB1 FC1 6 Ocupación Total en Se puede visualizar el número de bytes requerido por un programa en la pila la Pila de Datos de datos locales con la herramienta “Datos de Referencia". Esta herramienta Locales se tratará con detalle en el capítulo “Diagnosis de Errores". La ocupación total de la pila de datos locales y el número de bytes requeridos en un path de llamada se muestra en pantalla Activar Datos de En el Administrador SIMATIC hay que seleccionar el módulo deseado y Referencia elegir la opción de menú Herramientas -> Datos de Referencia -> Mostrar. Nota Si se excede el máximo número de datos locales durante la ejecución del programa en la CPU, la CPU pasa a modo STOP. En el Buffer de Diagnóstico aparece el siguiente mensaje de error: “STOP producido al asignar memoria a los datos locales“.
7
Ejercicio: Uso de las Variables Temporales
Reemplazadas por los “Paquetes“ de variables temporales Objetivo Se tienen que sustituir las marcas de memoria por variables temporales llamadas “Paquetes“en el módulo FC 19 del programa “LLENADO". Si se escribe el programa en KOP o FUP, las marcas de memoria deben conectarse las salidas del divisor con las entradas del conversor de código. Incluso codificando en AWL (donde no se necesitan marcas de memoria) deben introducirse variables temporales llamadas “Paquetes" para el almacenamiento de datos. Cómo hacerlo • Abrir el módulo FC 19 en el programa de "LLENADO" . • Definir una variable temporal con el nombre de “Paquetes" y con el tipo de datos "Integer“ en la tabla de declaraciones. • Almacenar el número de paquetes de variables temporales. • Cargar el programa modificado en el PLC y probarlo. Resultado Ahora conoce la utilidad de las variables temporales.
8
Ejemplo de Visualización de un Mensaje, Indicando un Problema
Tarea Perturbación Detección Marca Inform. LED Flanco detectado Entrada de Perturbación Detecc. Freq. De Parpadeo LED RS & = >=1 Q S R P Marca Informativa Marca Informativa Solution Propuesta Descripción Los problemas (perturbaciones) que se produzcan, deben mostrarse en un LED de salida del entrenador. Cuando se produzca el problema (E1.3) , el LED (A8.3 o A4.3) parpadea con una frecuencia de 2Hz. El problema es detectado a través de la entrada de “Detección“ E 1.2. Si se corrige el problema, el LED deja de parpadear. Si continua el problema, el LED permanece iluminado hasta que se solucione. Programa Para que se puedan detectar incluso aquellos problemas con una duración muy corta, se utiliza un flip flop (M40.0). Se utiliza un detector de flanco de RLO para resetear la marca de memoria en caso de que un problema haya sido detectado. Si la marca informativa (el problema no ha sido detectado todavía) es puesta a “1“, la operación AND de arriba hace que parpadee el LED de salida. La marca M10.3, la cual fue definida como marca ciclo en la asignación de parámetros en la CPU, es utilizada. La operación lógica AND de abajo se utiliza para que el LED de salida permanezca iluminado de manera permanente cuando el problema sea detectado, pero todavía exista.
9
Módulos Parametrizables
U #Detectado R #Marca Inform. U #Entrada Pert. FP #Flanco Detect. S #Marca Inform. U #Marca Inform. U #Freq. Parpadeo O UN #Marca Inform. = #Salida Módulo Parametrizado Programa Módulo no Parametrizado Entrada Pert. Marca Inform. Detectado Flanco Detect. Salida Freq. Parpadeo FC 20 Llamada U E 1.2 R M 40.0 U E 1.3 FP M 40.1 S M 40.0 U M 40.0 U M 10.3 O UN M 40.0 = A 8.3 M 40.0 M 40.1 E 1.3 E 1.2 A 8.3 M 10.3 Parámetros Actuales Parámetros Formales Introducción Los módulos parametrizables son utilizados en caso de secciones de programa que vayan a utilizarse con frecuencia. Esto presenta las siguientes ventajas: • el programa se crea una sola vez • el módulo es alamacenado una sola vez en memoria, pudiendo ser ejecutado tantas veces como se desee • el módulo puede programarse con parámetros formales (parámetros de entrada, salida, entrada/salida) y sólo se les puede asignar una dirección “real“ cuando son llamados (de ahí que se les llame parámetros actuales). Ejemplo Cuando se ejecuta el módulo, se comprueba la secuencia “U ‘Entrada Pert.‘“ para ver que parámetro actualse asigna a “Entrada Pert.". Si se introduce la entrada E1.4 como parámetro actual al realizar la llamada al módulo, es como si se ejecutara la secuencia “U E 1.4". FC / FB Los módulos parametrizables pueden ser FCs o FBs. Módulo En el ejemplo de arriba, se muestran los nombres de los parámetros. Parametrizado FC20 Se crea un FC20 parametrizado y se ejecuta 10 veces, asignando diferentes valores actuales a los parámetros del módulo en cada llamada.
10
Declaración de Parámetros Formales
Tipo de parámetro Declaración Uso Muestra en Pantalla Parámetro de Entrada in Sólo Lectura A la izquierda del módulo Parámetro de Salida out Sólo Escritura A la derecha del módulo Parámetro de Ent/Sal. In_out Lectura / Escritura A la izquierda del módulo Tabla de Declaración del Módulo FC 20 Direcciones Formales Antes de crear el programa para un módulo parametrizable, de deben definir los parámetros formales en la tabla de declaraciones. Tipo de Parámetro En la tabla de la figura, se pueden observar tres posibilidades de tipos de parámetros y su utilización. Asegurese de tener acceso le lectura/escritura al utilizar un parámetro in/out. Ejemplo del FC20 En la sección inferior de la figura, puede verse la tabla de declaraciones para mostrar mensajes (ver página anterior). Dado que la marca informativa debe tener acceso de lectura (set/reset) como de escritura (query), tiene que definirse como parámetro tipo in/out. Notas Sólo existe una fila para la declaración de cada parámetro en la tabla de declaraciones. Si se necesita introducir varios parámetros de entrada, utilizar la tecla de "Return" al finalizar la definición del primer parámetro. Tras seleccionar la fila de declaraciones, se puede utilizar la opción de menú: Insertar -> Línea de Declaración -> Delante / Detrás , para insertar una línea adicional. Atención! Si se quiere introducir una línea de declaración más tarde (después de haber codificado llamadas al módulo desde otros módulos), se tiene que actualizar todas las llamadas codificadas.
11
Editando un Módulo Parametrizable
Aquí se puede visualizar la dirección de dos formas: • con direccionamiento absoluto: E1.3 • con direccionamiento simbólico: “End_left" Notas El nombre de los parámetros formales pueden introducirse tanto en mayúsculas como en minúsculas, serán tratados de la misma forma. El carácter "#" es insertado automáticamente por la PG delante del nombre del parámetro. Esto se hace para recordar al programador que se ha definido como variable localen el módulo. En KOP/FUP, puede darse el caso de que no aparezca todo el nombre del parámetro en la pantalla. Esto depende de cómo se haya establecido la opción de personalización en el Editor de Programas (Herramientas -> Preferencias -> solapa “KOP/FUP" -> Campo del Operando (ancho)). Símbolos 1. Si se utiliza un nombre simbólico en la edición de un módulo, el Editor lo busca en la tabla de declaración de variables. Si lo encuentra, le asigna el carácter “#“ delante del nombre y lo toma como una variable local en el programa. 2. Si no lo encuentra, el Editor lo busca el la tabla de símbolos para ver si se trata de una variable global. Si lo encuentra, pone el nombre del parámetro entre comilla simple. 3. Si el símbolo se encuentra en la tabla de declaración de variables locales y en la tabla de símbolos a la vez, el Editor lo tomará siempre como variable local por defecto. No obstante, si se quiere que el símbolo sea tratado como variable global, se borrará el carácter “#“ y se pondrá el nombre del parámetro formal entre comilla simple.
12
Saltando a un módulo Paramerizado
Segmento 3: Primera llamada FC20 .... EN absoluto Direccionamiento simbólico “Fin Izquierda" Entrada Pert. Flanco Detección M40.1 “Botón Detección" Detección “Position error" Salida M10.3 Freq. Parpadeo M40.0 Marca Inform. ENO Segmento 4: Segunda llamada FC20 A8.1 EN Símbolos Símbolos Locales --> Param. Formales “Fin Derecha" Entrada Pert. Flanco Detección M40.3 Tabla de Símbolos Símbolos Globales “Botón Detección" Detección Salida A 9.4 M10.3 Freq. Parpadeo Call En KOP/FUP, se selecciona la instrucción de salto “Call“ desde el catálogo de "Elementos de Programa". Se muestran interrogantes (??.?) en los lugares donde encuentran los parámetros de entrada, salida y entrada/salida del módulo. Aquí es donde se introducen los parámetros actuales que se deseen utilizar. Nota Cuando se llama a un módulo FC parametrizado, se deben asignar todos los parámetros del módulo (se pueden omitir los parámetros EN y ENO). ENO M40.2 Marca Inform.
13
Uso del Parámetro EN/ENO en un Salto a Módulo
KOP/FUP AWL FC 1 Salto Incondicional ?? . ? EN ENO CALL FC NOP 0 U E SPB _ CALL FC _001: U BR = A 9.0 FC 1 EN ENO E 0.1 = A 9.0 Salto Condicional FCs Estándar Las siguientes normas se dan en la ejecución de FCs estándar: • Si EN=0, el módulo no se ejecuta y la salida ENO=0. • Si EN=1, el módulo se ejecuta y, en caso de ejecutarse sin errores, ENO=1. Si ocurre algún error en la ejecución ENO=0. FCs de Usuario No importa si el módulo ha sido codificado en KOP o FUP, cuando es llamado, los parámetros EN y ENO son añadidos. Por tanto es posible pasar del RLO. EN/ENO no existen en AWL. No obstante, pueden ser emulados. Esto se hace programando un error de evaluación. Interconexión En KOP/FUP, se pueden juntar varios bloques uno tras otro conectados entre si con la entrada lógica EN / ENO. Ejemplo ?? . ? FC 1 EN ENO FC 2 FC 3 =
14
Ejercicio: Crear un Módulo Parametrizable
1. Tabla de Declaración del Módulo FC 20 Módulo No Parametrizable Módulo FC 20 U E 1.2 R M 40.0 U E 1.3 FP M 40.1 S M 40.0 U M 40.0 U M 10.3 O UN M 40.0 = A 9.3(A 5.3) U #Reconocimiento R #Marca_Infor... U #Perturbaci. ... : 2. Tarea Escribir el programa en un módulo parametrizable. En la imagen de arriba, se puede ver la tabla de declaración, con los parámetros de entrada y de salida, así como el comienzo del programa. Cómo hacerlo • Insertar un módulo FC 20 en el programa "Mi Programa" . • Escribir el programa en el FC 20. • Guardar el FC 20.
15
Ejercicio: Saltando a un Módulo FC Parametrizable
Entrada Pert. M 40.1 Flanco Detec. E1.2 Detección Salida A 9.3 (A 5.3) Asignar Parámetros al FC20 en la 1ª. llamada M 10.3 Freq. Parpadeo M 40.0 Marca Inform. Entrada Pert. Marca Inform. Acknowledge Flanco Detec. Salida Freq. Parpadeo M 40.2 M 40.3 E 1.4 E 1.2 A 9.4 (A 5.4) M 10.3 FC 20 Asignar Parámetros al FC20 en la 2ª. llamada Tarea Llamar al FC 20 desde el OB 1 dos veces (con direcciones absolutas diferentes). Probar el funcionamiento del programa. Cómo hacerlo • Insertar dos segmentos en el OB 1 del programa "Mi Programa". • Crear dos llamadas al FC 20, como las de la figura, • Cargar los bloques FC 20 y el OB 1 en el PLC, • Probar el programa. Nota: Durante la Configuración HW, se utilizó el byte de marcas MB10 como marca ciclo. Si se ha realizado un reseteo de memoria en algún momento en el PLC, debe volver a cargarse la configuración HW en el PLC otra vez (el bit de marcas M10.3 parpadeará).
16
Bloques de Función (FBs)
OB 1 DB 2 FB 2 EN Entrada Pert. Detección Salida Freq. Parpadeo ENO Tabla de Declaración del módulo de función Características A diferencia de las Funciones (FCs), los Bloques de Función (FBs) tienen Especiales de memoria remanente. Esto significa que se ha asignado un bloque de datos los FBs locales al bloque de función (es el denominado DB de Instancia). Cuando se ejecuta una instrucción de salto a un FB, también hay que especificar su DB de Instancia asociado. Un DB de Instancia se utiliza para guardar las variables estáticas. Estas variables son locales al FB y han de ser declaradas en su tabla de declaraciones. Cuando se finaliza la ejecución del módulo, los datos permanecen guardados. Parámetros Cuando se llama a un Bloque de Función, los valores de los parámetros actuales son almacenados en el DB de Instancia. Si no se asignan parámetros actuales a los parámetros formales del FB, se utiliza como parámetro actual el que se asignó en la última ejecución del FB (se encuentra almacenado en el DB de Instancia). Se pueden especificar diferentes parámetros actuales en cada llamada al FB. Cuando finaliza la ejecución del FB, los datos permanecen almacenados en el DB de Instancia. Ventajas de los FBs • Cuando se codifica un FC, el programador se tiene que preocupar de aquellas zonas de memoria que se quieren mantener una vez finalizada la ejecución delFC. En un FB, por otro lado, esto no hace falta, dado que los datos de la última ejecución quedan almacenados en el DB de Instancia. • Al asignar variables estáticas, se evita el riesgo de asignar dos veces la misma dirección de memoria. • En vez de los parámetros formales “Marca Informativa" y “Flanco de Memoria" del FC20, se pueden sustituir por las variables estáticas “Marca Informativa" y “Flanco de Memoria" en el FB. Esto facilita la llamada al módulo ya que nos ahorramos el tener que introducir dos parámetros más.
17
Bloque de Función: Visualizar Mensajes
Tabla de Declaración del módulo función DB de Instancia Visualizar Mensaje En un ejercicio anterior, se creó un FC 20 parametrizado para visualizar un mensaje (indicaba un problema). En vez de utilizar marcas de memoria, las cuales se utilizaban en el propio FC 20 para detectar los flancos en el RLO, se utilizarán las variables estáticas de un FB. Estas variables se almacenarán en el DB de Instancia del FB. Estructura del DB Cuando se generan el DB y las referencias de un FB, STEP7 crea la estructura de Instancia del DB utilizando la estructura especificada en la tabla de declaraciones local al módulo de función. Tras guardar el DB, el módulo de datos es creado y se puede utilizar como DB de Instancia.
18
Generando un DB de Instancia
1. Generar DB de Instance llamando al FB 2. Crear un DB de Instancia Generando un DB Existen dos formas de generar un nuevo DB de Instancia: de Instancia • Cuando se llama a un FB parametrizado con una instrucción “Call“ especificando su DB de Instancia (todavía no creado), se muestra el siguiente mensaje por pantalla: “DB de Instancia DB x no existe. ¿ Desea crearlo?". • Al crear un nuevo DB, seleccionando la opción "DB asociado a un FB". Notas Un DB de Instancia sólo puede estar asociado a un FB. No obstante, un mismo FB puede tener más de un DB de Instancia asociado. Si se modifica el FB (añadiendo parámetros o variables estáticas), deben de volver a generarse el Db de Instancia de nuevo.
19
Modelo con Múltiples DBs de Instancia
Un solo DB de Instancia OB 1 DB10 FB 100 DB100 Call FB100, DB100 OB 1 stat Dist_1 FB20 Dist_2 Call FB20, DB10 Entrada_Per:= Deteccion:= Freq_Parp:= Salida:= FB20 DB11 FB20 Call FB20, DB11 Entrada_Per:= Deteccion:= Freq_Parp:= Salida:= Call Dist_1 Entrada_Per:= Deteccion:= Freq_Parp:= Salida:= Parámetros y variables estáticas de la primera llamada al FB20 Modelo Múltiple Hasta ahora, se había utilizado un DB de Instancia diferente en cada llamada a Instancia un mismo FB. El número de DBs se encuentra limitado, por lo que se va a mencionar un método que permitirá utilizar un mismo DB de Instancia para llamar a varios FBs. El Modelo Múltiple Instancia permite utilizar un mismo DB para llamar a diferentes FBs. Para hacerlo, se necesita un FB adicional que lleve a cabo esas instancias. Para cada llamada a un FB determinado (p.e. FB 20), se define una variable estática en el un FB de mayor número (p.e. FB 100).Con la secuencia Call Dist_1, no hace falta tener que especificar un DB de Instancia. El FB de mayor número (FB 100) es llamado, por ejemplo, en el OB 1, y el DB de instancia común (DB 100) solo es generado una vez. Nota Las instancias múltiples se exponen con más detalle en un curso de mayor nivel. DB12 FB20 Call FB20, DB12 Entrada_Per:= Deteccion:= Freq_Parp:= Salida:= Call Dist_2 Entrada_Per:= Deteccion:= Freq_Parp:= Salida:= Parámetros y variables estáticas de la segunda llamada al FB20
20
Insertar/Borrar Parámetros de un Módulo a Posteriori
Guardar El Problema Cuando se añaden, a posteriori, nuevos parámetros a un módulo que ya ha sido llamado en alguna parte del programa, debe de actualizarse esta llamada. En caso contrario, la CPU pasaría a STOP o bien el funcionamiento del módulo modificado no garantizaría un funcionamiento correcto que satisfaga las nuevas modificaciones. En el ejemplo, se añade un parámetro de entrada (“Check_lights“). Actualizando Cuando se guarda el módulo en el que se ha modificado la tabla de la Llamada declaraciones, aparece un mensaje en pantalla avisando de las posibles consecuencias.
21
Correcciones al Llamar a un Módulo Modificado
Cuando el módulo llamado es abierto: Una vez con el Derecho Actualizando Cuando se abre el módulo llamante, aparece en pantalla el siguientes mensaje: “Conflicto de tiempo en al menos una llamada a módulo“, y aparece la secuencia de llamada en rojo. Hacer Click con el botón derecho del ratón en la llamada al bloque y seleccionar la opción de menú “Actualizar Llamada". La llamada al bloque se refrescará en pantalla conteniendo, en nuestro ejemplo, el parámetro adicional de entrada “Check_light“. Este parámetro podrá ser ahora asignado. En caso de los bloques de función, el DB de Instancia es regenerado.
22
Ejercicio: Editar un Módulo de Función
1. Tabla de Declaración del Módulo FB 20 Sección del FB 20 U #Reconocimien... R #Marca_Inform... U #Perturbacion_... : 2. Tarea El programa que mostraba el mensaje indicando un problema es ahora implementado con un bloque de función. Para guardar la marca de detección de flanco y la marca informativa, se utilizarán ahora variables estáticas, las cuales se almacenarán en el DB de Instancia del FB. De esta forma, no harán falta marcas de memoria para almacenar datos. En la figura de arriba, se puede ver la tabla de declaración con los parámetros de entrada, salida y el comienzo del programa. Cómo hacerlo • Insertar el FB 20 en el programa "Mi Programa". • Escribir el programa en el FB 20. • Guardar el FB 20.
23
Ejercicio: Llamar a un FB y Probarlo
Como hacerlo En el programa "Mi Programa": • borrar los dos segmentos de llamada al FC20. • escribir un programa que contemple las dos llamadas al FB 20, como en el ejemplo de la figura de arriba. • cargar el FB20, DB20, DB21 y OB 1 en el PLC. • probar la funcionalidad del programa. FC -> FB En nuestro ejemplo, el FB20 se vuelve a codificarwas , incluso habiendo ya un FC20 con el mismo contenido ya existente Si un FC con un amplio programa se convierte en un FB, se accederá a él de manera diferente: 1ª. Solución posible: • insertar un nuevo FB • copiar la tabla de declaraciones del FC en el FB y ajustarla. • copiar los segmentos del FC al FB • guardar el FB. 2ª. Solución posible: • generar un fichero fuente a partir del módulo FC • hacer los ajustes necesarios en el fichero fuente para convertir el FC en FB • generar un nuevo FB a partir del fichero fuente modificado (ver página siguiente).
24
Conversión de un FC en un FB utilizando un Programa Fuente (1)
Introducción Al igual que en los lenguajes de alto nivel, se pueden generar módulos a partir de la compilación de ficheros fuente (ficheros de texto). La compilación implica que se genera un módulo ejecutable, pero el fichero fuente no desaparece en ningún momento, pudiendo modificarse de nuevo si fuera necesario. De la misma forma, se puede generar un fichero fuente a partir de un módulo ejecutable. El ejercicio consiste en crear un FB20 a partir de un FC20 ya creado anteriormente, pero a partir de la modificación de un fichero fuente (esto se verá que es muy útil a la hora de ahorrarse el tener que volver a teclear todo el programa del FC20 en un FB20). Cómo hacerlo 1. Abrir un módulo. 2. En el Editor KOP/AWL/FUP, seleccionar la opción de menú Herramientas -> Preferencias -> Solapa "Editor“ . Seleccionar la opción “Simbólico“ en la ventana de “Ver". 3. En el Editor KOP/AWL/FUP, seleccionar la opción de menú Archivo -> Genera Fuente... 4. En la ventana "Nuevo", se puede introducir el nombre que se le quiera asignar al fichero fuente en la casilla “Nombre del Objecto". 5. En la ventana “Generar Fuente“ aparecen, en la ventana de “Bloques no Seleccionados“, los bloques que se deseen que se genere su fuente en el fichero de fuentes. 6. Hacer Click en "OK" para comenzar la decompilación de los bloques en el programa fuente. Los bloques decompiladosse encuentran guardados en el fichero fuente elegido en la carpeta “Fuentes“ del programa.
25
Conversión de un FC en un FB utilizando un Programa Fuente (2)
Fuentes, ¿Para • para recablear automáticamente, utilizando símbolos automatic rewiring qué sirven? • para asignar propiedades a un bloque, por ejemplo, protección • como protección de los datos de un programa • más libertad al editar t procesar módulos: - modificando el tipo de módulo - insertar / borrar segmentos intermedios - incluyendo elementos de programa y comentarios en nuevos bloques - creando ficheros fuente en otros editores de texto (WORD, WordPad), sin necesidad de tener instalado STEP7 en el PC/PG - complementar la programación simbólica sin esperar a la comprobación de la sintaxis, etc. Programa Fuente En la parte izquierda de la imagen de arriba, se puede ver el programa fuente del FC 20. A mano derecha, el programa fuente es mostrado en pantalla como FB 20. Aquí se han introducido palabras relacionadas con un bloque de función. Además de esto, se definen variables estáticas para almacenar la información de la marca informativa y de la marca de detección de flanco. Tras ejecutar la compilación, se genera un nuevo FB 20. Nota Si no se conocen las instrucciones de salto a módulo, se puede insertar el módulo llamado con la opción de menú Insertar -> Elementos del Programa -> FB. El tema de “Ficheros Fuente" se expone con más detalle en un curso de mayor nivel. : : : :
26
Ejercicio: Reconociendo Tipos de Variables
L #Number_1 T #Max_value T MW 40 Statement L #Number_2 L #Intermediate_result L “Number_1" T #Number_2 TIPO DE VARIABLE Global Local Absolute Symbolic Temporary Static Parameter Objetivo Conocer las diferencias entre los diferentes tipos de variables. Cómo hacerlo Marcar en la tabla con una X el tipo de datos asociado. Responda a la siguiente pregunta: ¿Dónde se encuentra el error en la secuenciaT#Number_2 ? Result Ahora reconoce los diferentes tipos de variables y su utilización.
27
Resumen: Saltos a Módulo
FC FB Con/Sin para., c/s DB inst • UC FB1 • CC FB1 FB1 EN ENO Len- guaje Con parámetros • CALL FC2 Par1: Par2: ... Par3: ... FC2 EN ENO Par3 Par1 Par2 Con param., con DB inst. • CALL FB2, DB3 Par1: Par2: ... Par3: ... FB2 EN ENO Par3 Par1 Par2 DB3 Sin parámetros • CALL FC1 • UC FC1 • CC FC1 AWL FC1 ( CALL ) FC1 EN ENO KOP FC1 CALL La instrucción "CALL" se utiliza para llamar a un bloque lógico (FC, FB, SFC, SFB), independientemente del estado que tenga el RLO. Si se llama a un FB o a un SFB con "CALL“, se debe especificar, además, el DB de Instancia. Se puede utilizar tanto el nombre simbólico del módulo, como el absoluto. Por ejemplo: "CALL FB2, DB2" o "CALL válvula, nivel". La instrucción "CALL" guarda la dirección de retorno, desactiva la dependencia en el MCR y crea un área de datos locales para que pueda llamarse al bloque. UC La instrucción "UC" es un salto a módulo incondicional utilizado en módulos FC or FB, pero sin parámetros. CC La instrucción "UC" es un salto a módulo condicionado al resultado del RLO (salta si el RLO=1) utilizado en módulos FC or FB, pero sin parámetros. Parámetros Los parámetros creados en la tabla de declaración se denominan “parámetros formales“. Las direcciones o valores especificados en la instrucción de llamada, para cada parámetro formal se denomina “parámetro actual“. Las variables estáticas y temporales no se utilizan en una instrucción de salto a módulo. CALL FC1 EN ENO FUP
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.