Tema 2: Programación de PLCs 1. STEP 7 2. PROGRAMACIÓN BÁSICA AWL 3. PROG PROGRAM RAMACI ACIÓN ÓN ES ESTR TRUCT UCTURA URADA DA • Introducción • Bloques de organización (OB) • Funciones (FC) • Bloques de Función (FB) • Boques de datos (DB)
PLC’s Curso 2009/10
Página 1
Introducción
Facilita modularidad del programa, y clarifica su organización y análisis
Permite generar funciones reutilizables y no repetir código
Simplifica el test y la puesta en servicio
Sistema operativo
OB1
FC
FB
FB
FC
SFC
SFB
OtrosPLC’s Curso 2009/10
OBs
Página 2
Introducción OB 1
Motor 1
Modularización de tareas:
– Las tareas parciales se solucionan con sus propios módulos
Reutilización de los Módulos:
– Los Módulos pueden llamarse tantas veces como se necesite – Restricciones: • no se tiene acceso a direcciones globales
Controlador . . .
Válvulas
OB 1
FB 1 . .
CALL FB1, DB2 Marcha :=E 0.0 Paro :=E 0.1 Motor_on :=A12.0 Velocidad :=AW14
. .
SFC
FC 5 Valor límite
FB2
– La asignación de parámetros flexibiliza la programación • Ejemplo: Ciclo de taladro con profundidad asignable por parámetro
FB10
FB1
DB 2
Direc. Decl. 0.0 in 0.1 in 2.0 out 4.0 out 6.0 stat 0.0 temp . . . U UN = .
Copia
Nombre Marcha Paro Motor_on Velocidad Veloc_ant Calc_1
Tipo BOOL BOOL BOOL INT INT INT
#Marcha #Paro #Motor_on
PLC’s Curso 2009/10
Página 3
Introducción Tipo de Módulo
Propiedades
Móduo de Organización (OB)
- interfase para el usuario - prioridades graduadas (0 a 27) - información de inicio específica en la pila de datos locales
Módulo de Función (FB)
- parametrizable (los parámetros pueden asignarse en una llamada) - con (rellamada) memoria (variables estáticas)
Función (FC)
- parametrizable (los parámetros deben asignarse en la llamada) - básicamente sin memoria (sólo variables temporales)
Bloque de Datos (DB)
- almacenamiento estructurado de datos locales (DB de instancia) - almacenamiento estructurado de datos globales (válido en todo el programa)
Módulos de Función del Sistema (SFB)
- FB (con memoria) guardado en el sistema operativo de l a CPU y llamable por el usuario
Función del Sistema (SFC)
- función (con memoria) guardada en el sistema operativo de la CPU y llamable por el usuario
Bloques de Datos del Sistema (SDB)
- bloque de datos para datos de configuración y parámetros
PLC’s Curso 2009/10
Página 4
Introducción Variables/Datos Globales (válidos en todo el programa) • PAE / PAA •E/A •M/T/Z • Áreas de DB
Variables/Datos Locales (sólo válidos en un bloque) Variables temporales
Varibales estáticas
• se borran después de la ejecución del bloque asociado
• se mantienen incluso después de que sea ejecutado el bloque
• almacenamiento temporal en la L stack
• almacenamiento permanente en DBs.
• utilizables en OBs / FCs / FBs • solo se pueden usar en FBs
absoluto
simbólico
Acceso
PLC’s Curso 2009/10
Página 5
Introducción •Parámetros de Entrada (IN) solo en FBs, FCs, SFBs y SFCs Con ayuda de los parámetros de entrada se pueden asignar datos necesarios para el procesamiento del bloque. •Parámetros de Salida (OUT) solo en FBs, FCs, SFBs y SFCs En los parámetros de salida, los resultados del procesamiento del bloque son depositados aquí. •Parámetros de Entrada/Salida (IN_OUT) solo en FBs, FCs, SFBs y SFCs En los parámetros de Entrada/Salida, los contenidos de estos parámetros y el resultado del procesamiento del bloque depositado en ellos mismos. •Datos Estáticos (STAT) sólo en FBs y SFBs Los datos estáticos son los datos locales a un bloque de función, los cuales son almacenados en un bloque de datos de instancia y por tanto preservados hasta el siguiente procesamiento del bloque. •Datos Temporales (TEMP) en todos los bloques Los datos estáticos son los datos locales a un bloque que almacenan valores durante el proceso de dicho bloque en una pila de datos locales (L-Stack) y, una vez ha terminado de procesarse el bloque, el contenido de estas variables se pierde.
PLC’s Curso 2009/10
Página 6
Introducción
Los parámetros son canales para transferir información: – Parámetros de Entrada (In): – Parámetros de Salida (Out): – Parámetros E/S (In/Out): Los parámetros de un módulo: – Están en la sección de código como variables "locales" – Pueden tener cualquier tipo de dato
Dir. 0.0 0.1 2.0 2.0 8.0 10.0 ... ...
Decl. in in in out out inout stat temp
Nombre Marcha Paro Velocidad Motor_on Consigna EMER_OFF ... ..
EN
Tipo BOOL BOOL INT BOOL INT BOOL ... ...
"Motor" Marcha
Parámetros de entrada Parámetros In/Out
Paro Velocidad
Valor inicial FALSE TRUE 0 FALSE 0 FALSE ... ...
...
ENO
Motor_on Consigna
Parám. de Salida
EMER_OFF
PLC’s Curso 2009/10
Página 7
Bloques de organización •
Son los encargados de poner programa de usuario a disposición de la CPU, es decir, nuestro programa debe estar incluido en un OB para poder ser ejecutado por el Autómata
•
Los OBs son llamados cíclicamente por el sistema operativo. Nunca por otro módulo lógico . Un OB puede ser interrumpido por otro OB de mayor prioridad.
•
Están jerarquizados en prioridades y se dividen en dos tipos: – Dedicados a tareas periódicas: OB1: Programa principal (mínima prioridad) OB10: Interrupción horaria OB35: Interrupción cíclica, etc. – Dedicados a tratamiento de errores: OB40: Error hardware OB121 y 122: Error síncrono, etc. PLC’s Curso 2009/10
Página 8
Bloques de organización Arranque OB 100 OB 101 OB 102
Ejecución Cíclica del Programa OB 1
Ejecución Periódica De un programa OB 10...17 (Alarmas horarias)
OB 30...38
( Alarmas Cíclicas)
Ejecución del programa Sujeta a eventos OB 20...23
OB 80...87
OB 40...47
OB 121, 122
OBs de Alarma
Error OBs
(Alarmas de retardo)
(Alarmas de Proceso)
(Errores Asíncronos)
(Errores Síncronos)
PLC’s Curso 2009/10
Página 9
Bloques de organización Ej. OB82 (Prio.26) = Manejo de Error. Ejecutado en el caso de rotura de un hilo en la entrada analógica PEW 352
Ej. OB20 (Prio.3) = Alarma de retardo. La ejecución comienza 3.25s después de la detección de un objeto.
Ej. OB10 (Prio.2) = Alarma Horaria. Ejecutada una vez Por minuto desde las 9:30
El OB1 Se ejecuta contínuamente .....
...... Hasta que es interrumpido por otro OB Nº OB OB 1 OB 10 OB 20 OB 35 OB 40 OB 82
Tipo de OB Programa Cíclico Alarma Horaria Alarma de retardo Alarma Cíclica Alarma de proceso Manejo de Error
Prioridad 1 2 3 12 16 26 / 28
PLC’s Curso 2009/10
Página 10
Bloques de organización: OB de Arranque Rearranque Completo automatico S7-300 / 400
manual S7-300
S7-400
Alimentación STOP->RUN STOP->RUN + CRST Borrado de la imagen de proceso, M, T, Z no remanentes Ejecución del OB 100 Habilitación de Salidas
C I C L O
Lectura de la PAE Ejecución del OB1 Escritura de la PAA
PLC’s Curso 2009/10
Página 11
Funciones •
Las Funciones son módulos de código que se ejecutan al ser llamadas desde otro módulo.
•
Cuando se la llama, la función actúa como una subrutina del programa. Cuando termina de ejecutar su código, el control se devuelve al módulo y al segmento desde el cual fue llamada. FC Programa Principal OB1 Módulo Subrutina Ejecución del programa
Ejecución del Programa
Instrucción que llama a otro módulo
fin de bloque
Las Funciones son bloques lógicos
sin memoria
Las variables temporales de las FCs se memorizan en la tabla de datos locales
PLC’s Curso 2009/10
Página 12
Funciones Módulos parametrizables:
– tantos parámetros de entrada, salida, y entrada/salida como se necesiten. – sin memoria, p.e. sólo variables temporales – sin acceso a variables globales y direcciones absolutas
Function FC10 Ejecución del programa
in in out ...
On_1 On_2 Off
BOOL BOOL BOOL
CALL FC 10 On_1 := On_2 := Off :=
– con los mismos parámetros de entrada devuelven el mismo resultado
E 0.1 E 0.2 A8.0
... U U = ...
#On_1 #On_2 #Off
– Amplían el juego de instrucciones del procesador PLC’s Curso 2009/10
Página 13
Funciones: sin parámetros •
Contienen instrucciones a modo de subrutinas
•
Se insertan como nuevo bloque desde el administrador SIMATIC (del mismo modo que se insertan VATs)
•
Llamada (equivalen a CALL pero no es posible transferir parámetros): UC
llamada incondicional Ej.: UC FC12
CC
llamada condicionada a RLO=1 Ej.:
•
U
E125.0
CC
FC1
El fin de una función se realiza con la instrucción – BEA (incondicional) o – BEB (condicional a RLO=0) PLC’s Curso 2009/10
Página 14
Funciones: con parámetros •
Contienen instrucciones a modo de subrutinas
•
Se insertan como nuevo bloque desde el administrador SIMATIC (del mismo modo que se insertan DBs o FCs sin parámetros)
•
Al darles contenido (introducir código) se debe rellenar también su Tabla de Declaración, donde se incluyen los parámetros formales de la función (con los que se diseña la función) declarados como IN, OUT o IN/OUT.
•
Los parámetros actuales serán los que se transfieran desde el bloque actual a la función, siendo estos valores asignados a los parámetros formales de la FC para que trabaje con ellos
•
El fin de una función con parámetros se realizará igualmente con instrucciones BEA y BEB PLC’s Curso 2009/10
Página 15
Funciones: con parámetros •
Ejemplos: – Llamada a una función sin parámetros:
CALL FC 12 – Llamada a una función con parámetros:
CALL FC 25 Velocidad := MW10 Inicio :=
E124.0
Alarma := A125.0 Parámetros formales: Velocidad, Inicio y Alarma Parámetros actuales: MW10, E124.0 y A125.0
– Dentro de FC 25 (en su Tabla de Declaración) se habrán definido las características de Velocidad, Inicio y Alarma – CALL llama a un bloque lógico independientemente del RLO
PLC’s Curso 2009/10
Página 16
Funciones Instrucción CALL
– El tiempo de procesamiento para CALL depende del número y la posición de memoria de los parámetros actuales – La instrucción CALL asegura que los parámetros de módulo son provistos correctamente con datos actuales – Ejemplo: • CALL FC10 On_1 := E 0.1 On_2 := E 0.2 Off := A 8.0
Instrucción de llamada UC y CC
– Llamada a módulo independiente del RLO (UC) o dependiente del RLO (CC) • Ejemplos: UC FC20 ó CC FC20 – Sólo se pueden usar cuando la FC no tiene parámetros PLC’s Curso 2009/10
Página 17
Bloques de función •
Es un bloque con memoria. Tiene asociado un bloque de datos DB de instancia, de tal forma que en cada nueva llamada
DB10
se puede conservar el valor de las variables internas de la función. Esto no era posible en FCs
Copia la parte de declaración local del FB
FB1
Área de Declaración Local
Llamada a un módulo con los parámetros actuales Ejemplo:
Sección de código del módulo llamado usando los valores del área de memoria local.
Call FB1,DB10 PLC’s Curso 2009/10
Página 18
Bloques de función •
Módulos parametrizables:
Motor
– tantos parámetros de entrada, salida y entrada/salida como se necesiten
DB 16
– con memoria, es decir, con variables estáticas (también puede haber temporales) – Llamada con área de datos propia (instancia) •
Aplicación:
– Funciones de temporización y contadores
CALL FB5, DB16 Marcha :=E 0.0 Paro :=E 0.1 Motor_on :=A8.0 Velocidad :=AW12
0.0 Marcha BOOL 0.1 Paro BOOL 2.0 Motor_on BOOL FB 5 4.0 Velocidad INT in Marcha BOOL in Paro BOOL out Motor_on BOOL out Velocidad INT stat ... Temp...
– Unidades de control de procesos con estados internos
... U UN = ...
#Marcha #Paro #Motor_on
• calderas
Es necesario
• motores, válvulas, etc. PLC’s Curso 2009/10
Página 19
Bloques de función •
Tipos de variables añadidos (no en FCs): STAT: estático; conserva el valor de la variable de un ciclo para el siguiente, ya que almacena su valor en el módulo de datos DB asociado a la función.
•
Llamada a módulo de función:
CALL FBnx, DBny
CALL FB1, DB3 •
Desde el administrador SIMATIC se habrán creado (dentro del Proyecto y en la carpeta Bloques) FB 1 y DB 3: – Primero se crea FB1: tabla de declaración de variables, código de función, etc. – Después se crea DB3 (asociado a FB1) y toma la tabla de declaración de FB1 – Asignación del valor actual al parámetro/variable formal: • desde el DB3: Ver > datos > valor actual • Desde el OB100: Load + Transfer
PLC’s Curso 2009/10
Página 20
Bloques de función •
Mediante la llamada con varias instancias de un FB se pueden controlar varios equipos con el mismo FB
PLC’s Curso 2009/10
Página 21
Bloques de datos •
Zonas de memoria para almacenamiento de datos organizados del programa
• No pierden la información cuando el programa los ha acabado de utilizar •
Existen DB´s de dos tipos: – Globales: disponibles para cualquier módulo lógico del programa. – De instancia: asignado a un módulo de función, por lo que sólo es accesible por éste.
PLC’s Curso 2009/10
Página 22
Bloques de datos globales •
Son remanentes: no pierden la información aunque se corte la alimentación (en coherencia con el programa cargado en la CPU)
•
Tras la creación de un DB, éste debe ser definido (rellenado) con las variables que se desee. – Tipo de variables: • Simple (bool, byte, entero, palabra, doble palabra). • Compuesto (STRING, DATE_AND_TIME, ARRAY). • Estructuras.
•
Apertura:
AUF
DB8
•
Acceso:
L
DB8
U
DB8.DBX3.0
lleva implícito AUF DB8
T
DB7.DBW3
lleva implícito AUF DB7
U
DB6.DBD4
lleva implícito AUF DB6
•
Los DB permiten la asignación de simbólicos. PLC’s Curso 2009/10
Página 23
Bloques de datos globales DB 99 "Valores" Dir. Nombre
Tipo
0.0 Estado
BOOL
1.0 Estados
BYTE
2.0 Numero
INT
4.0 Peso[1]
8.0 Peso[2]
Acceso Tradicional
Acceso Total absoluto
simbólico
AUF U
"Valores" o DBX 0.0
U DB99.DBX0.0
o
U
“Valores".Estado
AUF L
DB 99 DBB 1
L
DB99.DBB1
o
L
“Valores".Estados
AUF L
"Valores" o DBW 2
L
DB99.DBW2
o
L “Valores".Numero
AUF L
DB 99 DBD 8
L
DB99.DBD4
o
L "Valores".Peso[1]
o
REAL
REAL
o
PLC’s Curso 2009/10
Página 24
Bloques de datos globales
Abrir módulo de datos AUF DB 19
Carga y transferencia en módulos de datos L DBB 1 L DBW 2 L5 T DBW 4 L 'A' L DBB28 ==I
Cargar el byte de datos 1. Cargar la palabra de datos 2 (byte 2/3). Cargar el número 5. Transferir a la palabra 4. Cargar el carácter ASCII A. Cargar el byte de datos 28. Comparar.
U DBX 3.1
Consultar el bit 1 del byte 3.
L DB19.DBW4 Cargar la palabra de datos 4 del DB19 (incluye AUF DB 19).
PLC’s Curso 2009/10
Página 25
Bloques de datos de instancia •
Asociado a un bloque de función FB. Antes de crear un DB instancia debe existir el FB
•
Cuando se inserta en el proyecto desde el Administrador SIMATIC, se debe asociar a un bloque de función FB ya existente.
•
Aparecen en la tabla de variables los parámetros correspondientes al FB asociado automáticamente.
•
Pueden asociarse varios DBs a un único FB.
• CALL
FB22,DB201
CALL
FB22,DB202
CALL
FB22,DB203
PLC’s Curso 2009/10
Página 26
Resumen
FC Lenguaje
AWL
FB
Sin parámetros
Con parámetros
• CALL FC1 • UC FC1 • CC FC1
• CALL FC2 Par1: ... Par2: ... Par3: ...
sin param., sin DB inst.
Con param., con DB inst.
• CALL FB2, DB3 Par1: ... Par2: ... Par3: ...
• UC FB1 • CC FB1
FC1
( CALL ) KOP
FC2
FC1 EN
ENO
EN
FB1 ENO
ENO
Par3
FC2 EN
Curso 2009/10
EN
Par1 Par2
DB3 FB2
Par3
PLC’s
EN
ENO
Par1 Par2
Par3
DB3 FB2
FB1 EN
EN
Par1
Par1
Par2
Par2
Par3 Página 27
ENO
EJERCICIO (Entregable 7) •
• • •
Tenemos una mezcladora que produce 3 tipos de productos, magdalenas, sobaos y donuts, para lo cual controla la receta modificando las proporciones de harina (A124.0), leche (A124.1), levadura (A124.2), azúcar (A124.3) y un motor que realiza la mezcla (A124.4). La producción empezará con un flanco de subida de la señal E124.0. El byte EB125 controla el producto a fabricar: magdalenas si es 0, sobaos si vale 1 y donuts en caso de que almacene 2. En cualquier otro caso la mezcladora se mantendrá parada. La tabla de tiempos para cada producto es la siguiente: Harina
•
Leche
Levadura
Azúcar
T mezcla
Magdalenas 3
2
3
2
4
Sobaos
1
2
3
1
3
Donuts
2
1
2
1
2
La entrada E124.5 permite elegir si los productos y el proceso de mezcla se realizan simultáneamente (si E124.2=0) o de manera secuencial (si E124.2=1) PLC’s Curso 2009/10
Página 28
EJERCICIO (Entregable 7) •
Resuelva el ejercicio utilizando: • Funciones con parámetros. • Bloques de función con DB’s de instancia.
•
Evite, en la medida de lo posible, el uso de saltos.
PLC’s Curso 2009/10
Página 29