Está en la página 1de 29

Tema 2: Programación de PLCs

1.  STEP 7

2.  PROGRAMACIÓN BÁSICA AWL

3.  PROGRAMACIÓN ESTRUCTURADA


•  Introducción
•  Bloques de organización (OB)
•  Funciones (FC)
•  Bloques de Función (FB)
•  Boques de datos (DB)

PLC’s
Página 1
Curso 2009/10
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

FC FB
OB1
Sistema
operativo
FB FC

SFC

SFB

Otros
PLC’s
Curso 2009/10 OBs Página 2
Introducción
OB 1 FB1 FB10

Motor 1 Controlador
Modularización de tareas:
. . .
–  Las tareas parciales se solucionan
con sus propios módulos FB2 FC 5 SFC
–  La asignación de parámetros Valor Copia
Válvulas límite
flexibiliza la programación
•  Ejemplo: Ciclo de taladro con
DB 2
profundidad asignable por OB 1 FB 1
parámetro Direc. Decl. Nombre Tipo
0.0 in Marcha BOOL
. 0.1 in Paro BOOL
Reutilización de los Módulos: .
2.0
4.0
out
out
Motor_on
Velocidad
BOOL
INT
–  Los Módulos pueden llamarse CALL FB1, DB2
6.0
0.0
stat
temp
Veloc_ant
Calc_1
INT
INT
tantas veces como se necesite Marcha :=E 0.0
.
Paro :=E 0.1
–  Restricciones: Motor_on :=A12.0
.
.
Velocidad :=AW14 U #Marcha
•  no se tiene acceso a UN #Paro
.
direcciones globales .
=
.
#Motor_on

PLC’s
Página 3
Curso 2009/10
Introducción

Tipo de Módulo Propiedades


- interfase para el usuario
Móduo de
- prioridades graduadas (0 a 27)
Organización (OB)
- información de inicio específica en la pila de datos locales
- parametrizable (los parámetros pueden asignarse en una llamada)
Módulo de Función (FB)
- con (rellamada) memoria (variables estáticas)

- parametrizable (los parámetros deben asignarse en la llamada)


Función (FC)
- básicamente sin memoria (sólo variables temporales)

- almacenamiento estructurado de datos locales (DB de instancia)


Bloque de Datos (DB)
- almacenamiento estructurado de datos globales (válido en todo el programa)
Módulos de Función - FB (con memoria) guardado en el sistema operativo de la CPU y
del Sistema (SFB) llamable por el usuario
Función del - función (con memoria) guardada en el sistema operativo de la CPU
Sistema (SFC) y llamable por el usuario
Bloques de Datos
- bloque de datos para datos de configuración y parámetros
del Sistema (SDB)

PLC’s
Página 4
Curso 2009/10
Introducción

Variables/Datos Globales Variables/Datos Locales


(válidos en todo el programa) (sólo válidos en un bloque)

Variables temporales Varibales estáticas


• PAE / PAA • se borran después de la • se mantienen incluso después
•E/A ejecución del bloque asociado de que sea ejecutado el bloque
•M/T/Z • almacenamiento temporal • almacenamiento permanente
• Áreas de DB en la L stack en DBs.
• utilizables en OBs / FCs / FBs • solo se pueden usar en FBs

absoluto simbólico

Acceso

PLC’s
Página 5
Curso 2009/10
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
Página 6
Curso 2009/10
Introducción
Dir. Decl. Nombre Tipo Valor inicial ...
0.0 in Marcha BOOL FALSE
0.1 in Paro BOOL TRUE
Los parámetros son canales para 2.0 in Velocidad INT 0
transferir información: 2.0 out Motor_on BOOL FALSE
–  Parámetros de Entrada (In): 8.0 out Consigna INT 0
–  Parámetros de Salida (Out): 10.0 inout EMER_OFF BOOL FALSE
... stat ... ... ...
–  Parámetros E/S (In/Out):
... temp .. ... ...

Los parámetros de un módulo:


–  Están en la sección de código
como variables "locales" "Motor"
EN ENO
–  Pueden tener cualquier tipo de
dato Marcha Motor_on Parám.
Parámetros Consigna de Salida
de entrada Paro
Velocidad
Parámetros
EMER_OFF
In/Out

PLC’s
Página 7
Curso 2009/10
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
Página 8
Curso 2009/10
Bloques de organización

Arranque

OB 100

OB 101
OB 102

Ejecución Ejecución Ejecución del


Cíclica del Periódica programa
Programa De un programa Sujeta a eventos

OB 1 OB 10...17 OB 20...23 OB 80...87


(Alarmas (Alarmas de retardo) (Errores Asíncronos)
horarias)

OB 30...38 OB 40...47 OB 121, 122


(Alarmas Cíclicas) (Alarmas de Proceso) (Errores Síncronos)

OBs de Alarma Error OBs

PLC’s
Página 9
Curso 2009/10
Bloques de organización

Ej. OB82 (Prio.26) =


Manejo de Error. Ej. OB10 (Prio.2) =
Ejecutado en el caso de Alarma
rotura de un hilo en la Horaria.
entrada analógica PEW 352 Ejecutada una vez
Por minuto desde
El
las 9:30
OB1
Se
ejecuta
contínua- ...... Hasta que es interrumpido
Ej. OB20 (Prio.3) = por otro OB
mente .....
Alarma de retardo.
La ejecución comienza
3.25s después de la Nº OB Tipo de OB Prioridad
detección de un objeto. OB 1 Programa Cíclico 1
OB 10 Alarma Horaria 2
OB 20 Alarma de retardo 3
OB 35 Alarma Cíclica 12
OB 40 Alarma de proceso 16
OB 82 Manejo de Error 26 / 28
PLC’s
Página 10
Curso 2009/10
Bloques de organización: OB de Arranque

Rearranque Completo
automatico manual

S7-300 / 400 S7-300 S7-400


STOP->RUN
Alimentación STOP->RUN
+ CRST

Borrado de la imagen de proceso,


M, T, Z no remanentes

Ejecución del OB 100

Habilitación de Salidas

C Lectura de la PAE
I
C Ejecución del OB1
L
O
Escritura de la PAA

PLC’s
Página 11
Curso 2009/10
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.
Programa Principal OB1 Módulo Subrutina FC
Ejecución
del programa
Ejecución del
Instrucción que llama Programa
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
Página 12
Curso 2009/10
Funciones

Módulos parametrizables:
–  tantos parámetros de entrada,
salida, y entrada/salida como se Function FC10
necesiten. in On_1 BOOL
Ejecución in On_2 BOOL
–  sin memoria, p.e. sólo variables del programa out Off BOOL
...
temporales
CALL FC 10
–  sin acceso a variables globales y On_1 := E 0.1 ...
direcciones absolutas On_2 :=
Off :=
E 0.2
A8.0
U
U
#On_1
#On_2
= #Off
–  con los mismos parámetros de ...
entrada devuelven el mismo
resultado
–  Amplían el juego de
instrucciones del procesador

PLC’s
Página 13
Curso 2009/10
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
Página 14
Curso 2009/10
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
Página 15
Curso 2009/10
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
Página 16
Curso 2009/10
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
Página 17
Curso 2009/10
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. Copia la parte de
Esto no era posible en FCs declaración local del FB
FB1
Área de
Llamada a un Declaración Local
módulo con los
parámetros
Sección de código
actuales
del módulo llamado
Ejemplo:
usando los valores
del área de
Call FB1,DB10 memoria local.

PLC’s
Página 18
Curso 2009/10
Bloques de función

•  Módulos parametrizables: Motor


–  tantos parámetros de entrada, DB 16
salida y entrada/salida como se 0.0 Marcha BOOL
0.1 Paro BOOL
necesiten 2.0 Motor_on BOOL
FB 5
4.0 Velocidad INT
–  con memoria, es decir, con
in Marcha BOOL
variables estáticas (también puede in Paro BOOL
haber temporales) out Motor_on BOOL
out Velocidad INT
–  Llamada con área de datos propia stat ...
CALL FB5, DB16 Temp...
(instancia) Marcha :=E 0.0
•  Aplicación: Paro :=E 0.1
Motor_on :=A8.0 ...
–  Funciones de temporización y Velocidad :=AW12 U #Marcha
UN #Paro
contadores = #Motor_on
...
–  Unidades de control de procesos
con estados internos
•  calderas
•  motores, válvulas, etc. Es necesario
PLC’s
Página 19
Curso 2009/10
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
Página 20
Curso 2009/10
Bloques de función

•  Mediante la llamada con varias instancias de un FB se pueden controlar


varios equipos con el mismo FB

PLC’s
Página 21
Curso 2009/10
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
Página 22
Curso 2009/10
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
Página 23
Curso 2009/10
Bloques de datos globales
DB 99 "Valores" Acceso Acceso Total
Tradicional
Dir. Nombre Tipo absoluto simbólico
0.0 Estado BOOL AUF "Valores"
o U DB99.DBX0.0 o U “Valores".Estado
U DBX 0.0
1.0 Estados BYTE

2.0 Numero INT


AUF DB 99
o L DB99.DBB1 o L “Valores".Estados
L DBB 1
4.0 Peso[1] REAL
AUF "Valores"
o L DB99.DBW2 o L “Valores".Numero
L DBW 2

AUF DB 99
8.0 Peso[2] REAL o L DB99.DBD4 o L "Valores".Peso[1]
L DBD 8

PLC’s
Página 24
Curso 2009/10
Bloques de datos globales

Abrir módulo de datos Carga y transferencia en módulos de datos

AUF DB 19 L DBB 1 Cargar el byte de datos 1.


L DBW 2 Cargar la palabra de datos 2 (byte 2/3).
L5 Cargar el número 5.
T DBW 4 Transferir a la palabra 4.
L 'A' Cargar el carácter ASCII A.
L DBB28 Cargar el byte de datos 28.
==I 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
Página 25
Curso 2009/10
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
Página 26
Curso 2009/10
Resumen

FC FB
Len-
guaje Sin parámetros Con parámetros sin param., sin DB inst. Con param., con DB inst.

• CALL FC1 • CALL FC2 • CALL FB2, DB3


AWL • UC FC1 Par1: ... • UC FB1 Par1: ...
Par2: ... Par2: ...
• CC FC1 Par3: ... • CC FB1 Par3: ...

FC1
( CALL ) DB3
FC2 FB1 FB2
FC1 EN ENO
KOP EN ENO EN ENO
EN ENO
Par1 Par1
Par3 Par2 Par3
Par2

DB3
FC2 FB1 FB2
EN Par3
PLC’s EN EN Par3
Página 27
Curso 2009/10 Par1 Par1
ENO
Par2 ENO Par2
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
Página 28
Curso 2009/10
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
Página 29
Curso 2009/10

También podría gustarte