Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Funciones / Bloques de Funciones
FC FB DB Contenidos Página Introducción… Variables Temporales Pila de Datos Locales LStack Ocupación Parcial Lstack………………………………… Ocupación Total Lstack………………………… Ejercicio: Variables Temporales…………. ………… Ejercicio : Señalización de Anomalías…………………………………… Parametrización de Bloques… Declaración de Parámetros Formales… Edición de Parámetros de Bloque………… Llamada a Bloque Parametrizado……… Habilitaciones de Bloque: EN/ENO………………….. ……… Ejercicio: Creación de FC Parametrizado……………… Ejercicio: Llamada a FC Parametrizado……………… Function Blocks (FBs) - Bloques de Función Ejercicio: Visualización de un Mensaje con FB Instance Data Blocks - DBs de Instancia… Modelo Multi-Instancia………… Modificación de Parámetros……………………….…………… Llamadas a Bloques Modificados………………….… Ejercicio: Edición de un FB………… Ejercicio: Llamada a un FB...…………… Conversión FC->FB : Programa Fuente (1)……………… …... 24 Conversión FC->FB : Programa Fuente (2)………………… Ejercicio: Reconocimiento de Variables……… Cuadro Resumen: Llamadas de Bloques… … 27
2
Introducción Variables Locales / Datos (Validez en un Bloque)
Variables Globales / Datos (Validez en todo el Programa) • PAE / PAA • E / A • M / T / Z • DBs Variables Temporales • Se eliminan tras la ejecución del bloque asociado. • Almacenamiento Temporal en L stack. • Utilizables en OBs / FCs / FBs Variables Estáticas • Se retienen después de ejecutar el bloque. • Almacenamiento Permanente en DBs. • Sólo utilizables en FBs Absoluto Acceso Simbólico General Hasta ahora, las entradas y salidas de la planta embotelladora eran direcciones con parámetros actuales. No se podía asignar parámetros a los bloques. Se escogería este procedimiento para crear un programa que sólo se aplica a una máquina. Pero frecuentemente se recurren a funciones de grandes sistemas, creadas universalmente y con posibilidad de asignación de parámetros de bloques. Esta entrada y salida formal de parámetros se asigna y actualiza en cada llamada a un FC o FB. Uno de los aspectos cruciales es el ajuste de la funcionalidad del bloque al Hardware, es decir la coordinación entre programa y tarea física. Pues bien, el acoplamiento entre ambos conceptos tiene lugar con la asignación de parámetros en la llamada de bloque, ya que “la vida interior“ del mismo no cambia. Variables Locales Hasta ahora se han manejado variables globales (marcas y areas de DBs). A lo largo del presente capítulo entran en juego las conocidas como locales: Temporales. Sólo guardan valor durante ejecución de bloque OB, FC y FB. Estáticas. Retienen su valor aunque termine el bloque. Sólo válidas en FCs.
3
Variables Temporales General Las variables temporales se pueden emplear en todas las llamadas a bloques, ya sean bloques de organización, funciones o bloques de funciones. Se utilizan para almacenar información de manera temporal y mientras el bloque se ejecuta. Así, los datos se pierden cuando se sale del mismo. El “almacén“ de estos datos se denomina Pila L o Lstack y representa un area independiente de memoria de CPU. Declaración Las variables se definen en una tabla dentro del bloque y dentro de esa tabla en las lineas generadas con el tipo de declaración “temp“. La columna Valor Inicial no se puede asignar para estas variables. Después de haber guardado el bloque, la localización de memoria en la Pila L se visualiza en la columna Dirección. Acceso En el primer segmento de la diapositiva, se muestra un ejemplo de acceso simbólico a una variable temporal. El resultado de la operación se almacena dentro de la variable “Resultado“ También se puede direccionar de manera absoluta, p.e T LW0. De cualquier forma, siempre es aconsejable facilitar la lectura de programa. Nota Los nombres de las variables comienzan con #. Este carácter especial es editado automáticamente por programa, pero tanto él como el direccionamiento de la variable sólo tienen sentido cuando se haya de- clarado ésta en la correspondiente tabla de declaración de variables del bloque.
4
Pila de Datos Locales LSTACK
Capacidad Total: 1.5 Kbyte (CPU ) Ejecución For S7-300: Prioridad 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 Horaria Interrupción de Retardo Interrupción Cíclica Lstack La pila de datos locales es un area de memoria que contiene las variables temporales de los bloques. Tamaño Cuando el sistema llama a un OB, se abre un area LStack de 256 bytes mientras que el bloque abierto y los que éste llame se estén ejecutando. A cada clase de prioridad se le asigna 256 bytes. La Pila L de las CPUs tiene un total de 1536 bytes (1.5kByte). Prioridades Existen un total de 8 clases de prioridad para S Pero en ningún caso pueden activarse a la vez más de 6. Si por ejemplo se activa el OB100 con prioridad 27, entonces el OB1 de prioridad 1 nunca puede activarse. Más aún, si una determinada falta ocurriera en el arranque de programa los OBs de error 80 a 87 para errores asíncronos sólo podrían tener prioridad 28. Esto es debido a que sólo con mayor número de prioridad se puede interrumpir el arranque. Esta temática se tratará en profundidad a lo largo del capítulo de OBs. S7-400 La gama alta de S7 permite decidir que tamaño de la pila de datos locales se destina a clases de prioridad individual (Herramienta de Configuración HW). Ásí, resulta posible no asignar memoria a clases de prioridad no necesarias y ampliar otras que si lo sean. Error en Ciclo 256 bytes 16 28 26 Ejecución Controlada por Eventos Interrupción Hardware Error en Arranque
5
Ocupación Parcial LSTACK
Requerimientos Observese el número exacto de bytes que un bloque requiere en LStack (Ver diapositiva en parte gráfica). Dicha información se encuentra en Propiedades de Bloque. Activación 1. En Administrador SIMATIC, seleccionar el bloque y con el botón derecho de ratón ir a Propiedades del Objeto. 2. También desde el Adm. SIMATIC a través del menú Edición -> Propiedades. Notas El total de datos locales para un nivel de ejecución (OB) es como máximo de 256 bytes para S7-300. Cada OB toma siempre por si mismo hasta 20 ó 22 bytes. Lo que significa que se emplean en cada FC o FB 234 bytes como máximo. Si se definen bloques con una ocupación superior a 256 bytes de datos locales, los bloques no pueden transferirse a la CPU. La transmisión se interrumpe presentando un mensaje de error respecto a la imposibilidad de cargar bloque. La información del mensaje se amplia presionando el botón “Detalles“. Se aconseja ver los detalles porque se explica que se ha definido una longitud de datos locales incorrecta.
6
Ocupación Total LSTACK
256 Bytes Evento Ocupación en L stack 1 OB1 OB 1 Sistema Operativo FC 1 Con Variables Temporales 2 OB1 FC1 FC 2 Con Variables Temporales OB1 FC2 FC1 3 OB1 FC1 4 FC 3 Con Variables Temporales OB1 FC3 FC1 5 7 OB1 OB1 FC1 6 Ocupación LStack Visualizar el número de bytes que requiere la pila de datos locales para un programa completo, es tan sencillo como acceder a Referencias Cruzadas. Seleccionar así el menú Herramientas -> Datos de Referencia -> Mostrar. Observarse pues la ocupación total de la pila de datos locales y el número de bytes necesitado por cada camino. Nota Si el número máximo de datos locales es superado durante la ejecución de programa, la CPU cambiará a STOP su modo de servicio. Analizar entonces la causa de la parada interna en buffer de diagnóstico.
7
Ejercicio: Variables Temporales
Enunciado Sustituir las marcas empleadas en el ejemplo, utilizando variables temporales para registrar idénticos valores del bloque FC19 en el programa de la imagen. Si se escribe el programa en lenguaje de contactos o de bloques lógicos, los registros se necesitan para conectar las salidas de operación con la entrada del conversor de código. Aunque se edite el programa en lista de instrucciones, insertar la variable temporal propuesta como registro de resultado intermedio. El objetivo es practicar el manejo de las citadas variables. Pasos • Abrir bloque FC19 (programa y proyecto ya existentes). • Definir una variable temporal de nombre “Paquetes“ y tipo “Entero“. • Guardar en la variable el número de paquetes. • Transferir el programa y activar funciones de test para su monitorización. Sustituir por Variable Temporal
8
Ejercicio: Señalización de Anomalías
Tarea Distorsión Acuse Memoria LED Solución Memoria RS Flanco Positivo Acuse R Entrada de Distorsión P & Descripción Se pretende visualizar cierto problema perturbador. Para ello se utilizan diodos luminosos sobre una consola de operador. Cuando aparezca el problema (E 1.3), el LED A 8.3 ó A 4.3 parpadeará intermitentemente a la frecuencia de 2 Hz. Los problemas son detectados mediante acuse de la entrada E 1.2. Si se resuelve el problema, la indicación se apagará. Si la perturbación no cediera, el LED conmutaría a estado de iluminación permanente hasta la corrección del problema. Programa Por tanto, aunque los problemas solo existan durante un corto espacio de tiempo si éstos no desaparecen se detectan realizando un buen programa cuyo principal elemento es la Báscula Flip-Flop tipo Set. También se detectan flancos de la señal desde que se borra la memoria por acuse de problema (M 40.0). Si la memoria se activa y el aviso todavía no ha sido acusado, la puerta AND superior genera la intermitencia del diodo siempre que sea positiva la combinación con la otra entrada M10.3 definida como señal de reloj en asignación de parámetros de CPU. La puerta AND inferior se emplea para generar iluminación fija por un problema acusado pero todavía existente. S Q >=1 Intermitencia & Memoria Salida Entrada de Distorsión =
9
Parametrización de Bloques
U #Acuse R #Memoria U #Distorsión FP #Flanco S #Memoria U #Memoria U #Intermitencia O UN #Memoria = #Salida Bloque con asignación de Parámetros Programa Bloque No Parametrizado Distorsión Memoria Acuse Flanco Salida Intermitencia 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 Parametros Actuales Parametros Formales Introducción La asignación de parámetros de bloque se repite frecuentemente en distintas secciones del programa. Estas son sus principales ventajas: • El programa solamente tiene que crearse una vez. • El bloque se puede programar con parámetros formales y solamente se dan las direcciones “reales“( parámetros actuales ) cuando se realiza la llamada. • El bloque sólo se almacena en memoria de usuario una vez. Ejemplo Cuando se ejecuta el bloque, se consulta la “Entrada de Distorsión“ para ver qué parámetro actual, de igual nombre al entrecomillado, se asigna al formal. Si al llamar al bloque, E 1.4 es el parámetro actual, entonces la linea de consulta U “E 1.4“ se cumple. FC / FB La asignación de parámetros de bloque resulta posible tanto en FCs como FBs. Ejemplo-FC20 Se requiere visualizar en sistema 10 veces un aviso. Se crea para ello un bloque parametrizado FC20 y luego se le llama las 10 veces requeridas con diferentes parámetros actuales.
10
Declaración de Parámetros Formales
Tipo de parámetro Declaración Uso Representación Gráfica De entrada in Sólo Lectura A la izquierda del bloque De salida out Sólo Escritura A la derecha del bloque De entrada / salida In_out Lectura y Escritura A la izquierda del bloque Direcciones Formales Antes de crear el programa y asignar parámetros se tiene que declarar la tabla. Tipos En la diapositiva se observan tres posibles tipos de parámetros y sus utilidades. Hay que declarar sin errores el tipo de acceso: lectura-escritura. Ejemplo-FC20 (Continuación de página anterior) Desde la señal de memoria se realiza un acceso de lectura (set/reset) y a la vez queda abierta la posibilidad de escritura (por ser tipo in-out). Nota Solamente existe una fila de declaración por cada tipo de parámetro. Por tanto si se necesitan varios parámetros de un mismo tipo, hay que insertar y situar las correspondientes lineas de declaración. Acudir al Menú INSERTAR->LINEA DE DECLARACION->Delante/Detrás. Un buen recurso, alternativo, sencillo y simultanéo a la declaración de linea consiste en teclear ENTER cuando se termina dicha linea y se desea que la siguiente sea del mismo tipo. ¡¡Atención!! Si se quieren insertar o eliminar lineas de declaración después de llamar al bloque, se deben actualizar todas las llamadas para modificar óptima y completamente la parametrización a lo largo de todo el programa editado.
11
Edición de Parámetros de Bloque
FC sin parametrizar : • Con direccionamiento absoluto : E 1.3 • Con direccionamiento simbólico : “End_left" Nota No importa qué nombres se asignan a los parámetros formales. Da igual con mayúsculas o minúsculas. Lo único a tener en cuenta es que para identificar variables locales, delante del nombre de variable el sistema de programación edita el carácter "#“. Es posible que cuando se programa en lenguaje distinto a Lista de Instrucciones no se pueda mostrar el nombre completo en una fila. Depende de las opciones de usuario que se ajusten en el Editor de Programa: Herramientas -> Preferencias -> KOP/FUP, LAD/FBD -> Campo del Operando. Símbolos 1. Si se utiliza un nombre simbólico cuando se edita un bloque, el Editor busca en la tabla de declaración. Si está allí, se antepone al símbolo el carácter "#“ como ya se ha explicado en el anterior apartado de esta misma hoja. 2. Si no encuentra el nombre escrito como variable local, el Editor busca en la tabla de símbolos globales. Si está allí, se sitúa entre comillas y se acepta. 3. Si se especifica el nombre simbólico como global y como local, el Editor siempre inserta la variable local. Pero si se desease trabajar con el simbólico global sólo habría que entrecomillar el nombre.
12
Llamada a Bloque Parametrizado
Segmento 3: Primera Llamada FC 20 .... EN Absoluta Dirección Simbólica “End left" Distorsión Flanco M 40.1 “Botón de Acuse" Acuse “Posición Erronea" Salida M 10.3 Intermitencia M 40.0 Memoria ENO Segmento 4: Segunda Llamada FC 20 A 8.1 EN Símbolos Símbolo Local --> Parámetro Formal “End right" Distorsión Flanco M 40.3 Tabla de Símbolos Símbolo Global “Botón de Acuse" Acuse Salida A 9.4 M 10.3 Intermitencia Llamada En lenguajes distintos a Lista de Instrucciones (es decir Esquema de Contactos o Bloques Lógicos), se puede seleccionar la llamada desde Catálogo. Cuando se haya escogido el bloque, la entrada de parámetros se realizará sobre los signos de interrogación dispuestos al efecto. Nota Cuando se llama a bloques FCs parametrizados, se debe asignar parámetros al bloque completo. Sólo se permite no asignar las entradas/salidas de habilitación EN/ENO. ENO M 40.2 Memoria
13
Habilitaciones de Bloque: EN/ENO
KOP/FUP AWL FC 1 Llamada Incondicional ?? . ? EN ENO CALL FC NOP 0 A 9.0 FC 1 U E SPB _ CALL FC _001: U BR = A 9.0 Llamada Condicional E 0.1 EN ENO = FCs Estándar Se cumplen las siguientes reglas: • Si EN=0, el bloque no se ejecuta y ENO=0. • Si EN=1, el bloque se ejecuta y si lo hace sin errores ENO=1. Si ocurriera un error mientras se ejecuta el bloque ENO=0. FCs Usuario Da igual el lenguaje de programación empleado para programar el bloque. Lo importante es como se haga la llamada: en cualquiera de los lenguajes esquema (KOP/FUP o LAD/FBD) los parámetros EN y ENO son añadidos a la estructura sin alterar el conjunto. Así resulta posible transmitir el RLO. EN/ENO no existen de manera natural en lenguaje Lista de Instrucciones. En cualquier caso, y como en otros muchos, es fácil emular sus funciones. Se debe programar, independientemente del lenguaje, sin errores. Interconexión En los lenguajes esquema, se pueden agrupar varias cajas una dentro de otra, unidas por las funciones lógicas EN / ENO. Ejemplo ?? . ? FC 1 EN ENO FC 2 FC 3 =
14
Ejercicio: Creación de FC Parametrizado
1. Tabla de Declaración de FC 20 Bloque sin Parametrizar FC 20 con Parámetros 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 (A5.3) U #Acuse R #Memoria U #Distorsión : 2. Enunciado Escribir el programa de visualización de aviso como bloque parametrizado. Observar la tabla de declaración prevista antes del programa. Pasos • Insertar bloque FC20. • Escribir programa en FC 20. • Salvar bloque FC 20.
15
Ejercicio: Llamada a FC Parametrizado
Distorsión M 40.1 Flanco E 1.2 Acuse Salida A 9.3 (A 5.3) Asignación de Parámetros (1) M 10.3 Intermitencia M 40.0 Memoria Distorsión Memoria Acuse Flanco Salida Intermitencia M 40.2 M 40.3 E 1.4 E 1.2 A 9.4 (A 5.4) M 10.3 FC 20 Asignación de Parámetros (2) Ejemplo Llamar dos veces a FC20 desde OB1 y con distintas direcciones absolutas. Comprobar funcionalidad de programa mediante herramientas online. Pasos • Insertar dos segmentos en OB1. • Crear las dos llamadas a FC 20 según se aprecia en diapositiva. • Transferir FC20 y OB 1. • Activar funciones Test. Nota: Durante la configuración HW , se debe reseñar MB10 como byte de frecuencias de ciclo (reloj). Si se ha efectuado un borrado de memoria, es necesario cargar dicha configuración de nuevo. Recordar misión de M10.3.
16
Function Blocks (FBs) - Bloques de Función
OB 1 DB 2 FB 2 EN Distorsión Acuse Salida Intermitencia ENO Tabla de Declaración de FB Características Especiales FBs A diferencia de las Funciones (FCs), los Bloques de Función (FBs) tienen memoria (prácticamente se trata de una doble llamada). La llamada a FBs implica una asignación de Bloque de Datos. Este DB se crea y abre con la llamada del FB correspondiente, es decir, a instancia del FB. La principal utilidad de un DB de instancia se basa en el almacenamiento de variables estáticas. Dichas variables estáticas sólo pueden generarse en FBs. Parámetros Cuando se llama a un FB, los valores de parámetros actuales se almacenan en el DB de instancia ( también conocido por sus iniciales como DI ). Si en una llamada a FB los parámetros actuales no se asignan a parámetros formales, para la ejecución de programa se cargará como parámetro el último valor almacenado en DI. Lógicamente, se pueden definir distintos parámetros en cada llamada del FB. Cuando se abandona el FB, los datos se guardan en el respectivo DI. Ventajas FBs • Al programar un FC, hay que buscar direcciones de memoria de datos no ocupadas. Y además las areas libres encontradas deben mantenerse asociadas a la función (FC). Mientras, en un FB, sus variables estáticas son conservadas por STEP 7. • Cuando se utilizan variables estáticas se evita el riesgo de asignar dos veces la misma dirección de memoria de datos. Nota En vez de parametrizar el bloque ejemplo FC20 mediante Función, se propone resolver el ejercicio con el empleo de un Bloque de Función FB. La parametrización y llamada con FB resultará más sencilla
17
Ejercicio: Visualización de un Mensaje con FB
Tabla de Declaración de FB DB de Instancia Propuesta Para indicar un problema y visualizar un aviso al respecto, se parametrizaba la Función FC20. Como soporte de memoria se usaban marcas. Ahora, se propone sustituir dichas marcas por variables estáticas de un FB. También contemplar el almacenamiento de referencia en DI ( DB de Instancia ). Cuando se genere el DI, STEP 7 creará la estructura de datos del DB a imagen de la Tabla de Declaración de Variables del FB.
18
Instance Data Blocks - DBs de Instancia
1. Generación de DI al llamar a FB 2. Asociación de DI a FB en la creación Generar un DI Existen dos formas de crear un DB de Instancia: • Al llamar al FB. Se debe especificar un DI libre. • Al crear un DB nuevo. Se selecciona la opción que asocie éste a un FB. Importante Un DI sólo puede referenciarse a un FB. Pero a un FB se le puede asociar en cada llamada un DI distinto. Si se modifica la Tabla de Declaración de Variables de un FB, se debe generar el DI de instancia otra vez. Es decir, hay que actualizarlo.
19
Modelo Multi-Instancia
Modelo Multi-Instancia ( Varios DIs) Modelo Simplificado OB 1 DB10 FB 100 DB100 Call FB100, DB100 OB 1 stat Dist_1 FB20 Dist_2 Call FB20, DB10 Distorsión:= Acuse:= Intermitencia:= Salida:= FB20 DB11 FB20 Call FB20, DB11 Distorsión:= Acuse:= Intermitencia:= Salida:= Call Dist_1 Distorsión:= Acuse:= Intermitencia:= Salida:= Parámetros y Variables Estáticas de 1°llamada a FB20 Multi-Instancia Hasta ahora, se tenía que usar un DI distinto para cada llamada de FB. El número de DIs es limitado, y por eso conviene conocer un método que permite la utlización de un DI común para varias llamadas de FB. El modelo Multi-Instancia se habilita igualmente que el modelo unitario, pero además se debe definir un FB director de las multiples instancias. DB12 FB20 Call FB20, DB12 Distorsión:= Acuse:= Intermitencia:= Salida:= Call Dist_2 Distorsión:= Acuse:= Intermitencia:= Salida:= Parámetros y Variables Estáticas de 2°llamada a FB20
20
Modificación de Parámetros
Salvar Importante Cuando se añaden parámetros de bloque con posterioridad a la definición previa, hay que actualizar la llamada. De otra manera, la CPU podría pasar a STOP o el FB podría conservar la parametrización antigua en la llamada. Observar mensaje de aviso al salvar bloque modificado en TABLA.
21
Llamadas a Bloques Modificados
Al abrir el Bloque: Actualización Cuando se llama a un bloque abierto, emerge un mensaje respecto al conflicto existente con la llamada de al menos un bloque. Pulsar el botón derecho del ratón sobre la opción de actualización de llamada. Entonces la llamada se vuelve a mostrar conteniendo los parámetros adicionales para su asignación. En caso de ser FBs, los DIs son regenerados.
22
Ejercicio: Edición de un FB
1. Tabla de Declaración de FB 20 Sección de Código FB 20 U #Acuse R #Memoria U #Distorsión … : 2. Enunciado El programa de indicación de problema se ha de implementar en un FB. Para ahorrar marcas, areas de memoria anteriormente utilizadas, se usan ahora variables estáticas que se almacenan en DB de Instancia del FB. En la diapositiva se observa la declaración de parámetros. Pasos • Insertar FB 20. • Programar. • Guardar.
23
Ejercicio: Llamada a un FB
Pasos • Borrar los segmentos de llamada a FC20. • Según la diapositiva, escribir un programa para las llamadas a FB20. • Transferir FB20, DB20, DB21 y OB1. • Comprobar la funcionalidad del programa. FC -> FB En el ejemplo, el Bloque FB20 se reedita a pesar de existir la Función FC20 con los mismos contenidos. No resulta demasiado trabajoso. Si se desea convertir una Función FC ya programada en un Bloque FB nuevo, hay dos posibles soluciones: Primera. • Insertar un nuevo FB. • Copiar y ajustar la tabla de declaración del FC en el FB. • Copiar los segmentos de FC en FB. • Guardar FB. Segunda. • Generar un fichero fuente de FC. • Realizar ajustes necesarios en fichero fuente. • Generar un nuevo FB desde el fichero fuente (Ver página siguiente).
24
Conversión FC->FB : Programa Fuente (1)
Introducción Sólo como lenguaje de programación de alto nivel, se justifica la creación de bloques a través de programas fuente (ficheros de texto). Cuando se compila este programa fuente, los bloques son generados. También es posible generar ficheros fuente a partir de bloques existentes. Para practicar, transformar, con el mínimo trabajo de edición posible, el bloque FC20 en un coherente FB20. Pasos 1. Abrir el bloque. 2. Activar en Editor la visualización de símbolos en programa. 3. También en Editor, seleccionar el menú Archivo -> Generar Fuente. 4. En la nueva ventana, introducir un nombre para el fichero fuente. 5. En la ventana “ Generar Fuente a “ que aparece posteriormente, seleccionar los bloques de programa que tengan que compilarse. 6. Confirmar con “OK“ para dar inicio a la compilación de bloques en codigo fuente. La compilación de bloques se encontrará después en el fichero fuente nombrado en paso 4. A su vez, el fichero fuente se ubica dentro de la carpeta Fuentes, y ésta en la de Programas.
25
Conversión FC->FB : Programa Fuente (2)
Utilidades • Para recableado automático usando símbolos. • Para asignación de atributos de bloque, por ejemplo, protección. • Como protección de datos de programa. • Mayor libertad en edición y proceso de bloques: - Modificando tipo de bloque. - Insertando / Eliminando segmentos de separación. - Uniendo elementos de programa en nuevos bloques. - Creando fuentes de programa en otros editores de texto (p.e Word) sin tener que instalar STEP 7 en PC. - Programación simbólica sin comprobación de sintaxis, etc. Programa Fuente En la parte izquierda de la diapositiva se observa el programa fuente para FC. Y a la derecha el fichero fuente para el programa del bloque FB respectivo. Aquí, en la parte de bloque de función, es donde se asocian las “claves“. También se definen las variables estáticas necesarias. Después de ejecutar una compilación, existe más de un bloque FB ejecutable. Nota Si no se conocen las “claves“ se puede insertar una plantilla de bloque a través del menú Insertar - > Plantilla de Bloque - > FB. : : : :
26
Ejercicio: Reconocimiento de Variables
L #Número_1 T #Valor_Max T MW 40 Instrucciones L #Número_2 L #Resultado_ Medio L “Número_1" T #Número_2 TIPO DE VARIABLE Global Local Absoluta Simbólica Temporal Estática Parámetro Se pide ... Reconocer las diferencias existentes entre los distintos tipos de variables. Apartados Marcar con una “X“ en la tabla los tipos de variables encontrados. 2.- ¿Qué incorrección se aprecia en la linea T#Number_2 ?
27
Cuadro Resumen: Llamadas de Bloques
FC FB Lenguaje Sin Parámetros Con Parámetros Sin Parámetros ni DI Con Parámetros y DI • CALL FC1 • UC FC1 • CC FC1 • CALL FC2 Par1: Par2: ... Par3: ... • UC FB1 • CC FB1 • CALL FB2, DB3 Par1: Par2: ... Par3: ... AWL FC1 ( CALL ) DB3 FC2 FB1 FB2 FC1 KOP EN ENO EN ENO EN ENO EN ENO Par1 Par2 Par1 Par3 Par2 Par3 FC1 CALL La instrucción “CALL“ llama a bloques FCs, FBs, SFCs y SFBs. No depende en absoluto de RLO alguno o cualquier otra condición. Siempre que se pase por ella y se lea, se ejecuta. Si se llama a un FB o SFB, se debe también especificar el DB de Instancia. Para la llamada de bloque se puede utilizar programación absoluta o simbólica. Por ejemplo: "CALL FB2, DB2" o "CALL Válvula, Nivel". La operación de llamada guarda la dirección de retorno, puede desactivar MCR y crea un area de datos locales para el bloque llamado. UC Llamada incondicional de bloque FC o FB sin parámetros. Por lo demás "UC“ es igual que "CALL". CC La instrucción "CC" llama a un bloque tipo FC o FB sin parámetros si RLO=1. En el resto de aspectos "CC“ es igual que "CALL". Parámetros “Parámetros Formales“ : parámetros declarados en tabla. “Parámetros Actuales“ : referencias de direcciones o valores especificados en la llamada. Las variables estáticas o temporales no se especifican en la llamada. CALL DB3 FC2 FB1 FB2 FC1 EN Par3 EN EN Par3 FUP EN Par1 Par1 ENO Par2 ENO ENO Par2 ENO
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.