Está en la página 1de 29

Tema 2: Programacin de PLCs

1. STEP 7 2. PROGRAMACIN BSICA AWL 3. PROGRAMACIN ESTRUCTURADA Introduccin Bloques de organizacin (OB) Funciones (FC) Bloques de Funcin (FB) Boques de datos (DB)

PLCs
Curso 2009/10
Pgina 1

Introduccin
Facilita modularidad del programa, y clarifica su organizacin y anlisis Permite generar funciones reutilizables y no repetir cdigo Simplifica el test y la puesta en servicio FC Sistema operativo OB1 FB FC FB

SFC

SFB

Otros Curso 2009/10

OBs

PLCs
Pgina 2

Introduccin
OB 1 FB1 Motor 1 FB2 Vlvulas FB10 Controlador . . . FC 5 Valor lmite DB 2
Decl. in in out out stat temp Nombre Marcha Paro Motor_on Velocidad Veloc_ant Calc_1 Tipo BOOL BOOL BOOL INT INT INT

Modularizacin de tareas: Las tareas parciales se solucionan con sus propios mdulos La asignacin de parmetros flexibiliza la programacin Ejemplo: Ciclo de taladro con profundidad asignable por parmetro Reutilizacin de los Mdulos: Los Mdulos pueden llamarse tantas veces como se necesite Restricciones: no se tiene acceso a direcciones globales

SFC Copia

OB 1 . .
CALL FB1, DB2 Marcha :=E 0.0 Paro :=E 0.1 Motor_on :=A12.0 Velocidad :=AW14

FB 1
Direc. 0.0 0.1 2.0 4.0 6.0 0.0 . . . U UN = .

. .

#Marcha #Paro #Motor_on

PLCs
Curso 2009/10
Pgina 3

Introduccin
Tipo de Mdulo
Mduo de Organizacin (OB) Mdulo de Funcin (FB) Funcin (FC) Bloque de Datos (DB) Mdulos de Funcin del Sistema (SFB) Funcin del Sistema (SFC) Bloques de Datos del Sistema (SDB)

Propiedades
- interfase para el usuario - prioridades graduadas (0 a 27) - informacin de inicio especfica en la pila de datos locales - parametrizable (los parmetros pueden asignarse en una llamada) - con (rellamada) memoria (variables estticas) - parametrizable (los parmetros deben asignarse en la llamada) - bsicamente sin memoria (slo variables temporales) - almacenamiento estructurado de datos locales (DB de instancia) - almacenamiento estructurado de datos globales (vlido en todo el programa) - FB (con memoria) guardado en el sistema operativo de la CPU y llamable por el usuario - funcin (con memoria) guardada en el sistema operativo de la CPU y llamable por el usuario - bloque de datos para datos de configuracin y parmetros

PLCs
Curso 2009/10
Pgina 4

Introduccin
Variables/Datos Globales (vlidos en todo el programa) Variables/Datos Locales (slo vlidos en un bloque) Variables temporales PAE / PAA E/A M/T/Z reas de DB se borran despus de la ejecucin del bloque asociado almacenamiento temporal en la L stack Varibales estticas se mantienen incluso despus de que sea ejecutado el bloque almacenamiento permanente en DBs.

utilizables en OBs / FCs / FBs solo se pueden usar en FBs

absoluto Acceso

simblico

PLCs
Curso 2009/10
Pgina 5

Introduccin
Parmetros de Entrada (IN) solo en FBs, FCs, SFBs y SFCs Con ayuda de los parmetros de entrada se pueden asignar datos necesarios para el procesamiento del bloque. Parmetros de Salida (OUT) solo en FBs, FCs, SFBs y SFCs En los parmetros de salida, los resultados del procesamiento del bloque son depositados aqu. Parmetros de Entrada/Salida (IN_OUT) solo en FBs, FCs, SFBs y SFCs En los parmetros de Entrada/Salida, los contenidos de estos parmetros y el resultado del procesamiento del bloque depositado en ellos mismos. Datos Estticos (STAT) slo en FBs y SFBs Los datos estticos son los datos locales a un bloque de funcin, 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 estticos 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.

PLCs
Curso 2009/10
Pgina 6

Introduccin
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 ... .. Tipo BOOL BOOL INT BOOL INT BOOL ... ... Valor inicial FALSE TRUE 0 FALSE 0 FALSE ... ... ...

Los parmetros son canales para transferir informacin: Parmetros de Entrada (In): Parmetros de Salida (Out): Parmetros E/S (In/Out): Los parmetros de un mdulo: Estn en la seccin de cdigo como variables "locales" Pueden tener cualquier tipo de dato

EN Parmetros de entrada Parmetros In/Out

"Motor"
Marcha Paro Velocidad EMER_OFF

ENO Parm. de Salida

Motor_on Consigna

PLCs
Curso 2009/10
Pgina 7

Bloques de organizacin
Son los encargados de poner programa de usuario a disposicin de la CPU, es decir, nuestro programa debe estar incluido en un OB para poder ser ejecutado por el Autmata Los OBs son llamados cclicamente por el sistema operativo. Nunca por otro mdulo lgico . Un OB puede ser interrumpido por otro OB de mayor prioridad. Estn jerarquizados en prioridades y se dividen en dos tipos:
Dedicados a tareas peridicas: OB1: Programa principal (mnima prioridad) OB10: Interrupcin horaria OB35: Interrupcin cclica, etc. Dedicados a tratamiento de errores: OB40: Error hardware OB121 y 122: Error sncrono, etc. PLCs
Curso 2009/10
Pgina 8

Bloques de organizacin
Arranque OB 100 OB 101 OB 102 Ejecucin Cclica del Programa OB 1 Ejecucin Peridica De un programa OB 10...17
(Alarmas horarias)

Ejecucin del programa Sujeta a eventos OB 20...23 OB 40...47 OB 80...87

(Alarmas de retardo)

(Errores Asncronos)

OB 30...38

OB 121, 122

(Alarmas Cclicas)

(Alarmas de Proceso)

(Errores Sncronos)

OBs de Alarma

Error OBs
Pgina 9

PLCs
Curso 2009/10

Bloques de organizacin
Ej. OB82 (Prio.26) = Manejo de Error. Ejecutado en el caso de rotura de un hilo en la entrada analgica PEW 352

Ej. OB20 (Prio.3) = Alarma de retardo. La ejecucin comienza 3.25s despus de la deteccin de un objeto.

El OB1 Se ejecuta contnuamente .....

Ej. OB10 (Prio.2) = Alarma Horaria. Ejecutada una vez Por minuto desde las 9:30

...... 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 Cclico Alarma Horaria Alarma de retardo Alarma Cclica Alarma de proceso Manejo de Error Prioridad 1 2 3 12 16 26 / 28
Pgina 10

PLCs
Curso 2009/10

Bloques de organizacin: OB de Arranque


Rearranque Completo automatico S7-300 / 400 S7-300 manual S7-400 STOP->RUN + CRST

Alimentacin STOP->RUN

Borrado de la imagen de proceso, M, T, Z no remanentes Ejecucin del OB 100 Habilitacin de Salidas

C I C L O

Lectura de la PAE Ejecucin del OB1 Escritura de la PAA

PLCs
Curso 2009/10
Pgina 11

Funciones
Las Funciones son mdulos de cdigo que se ejecutan al ser llamadas desde otro mdulo. Cuando se la llama, la funcin acta como una subrutina del programa. Cuando termina de ejecutar su cdigo, el control se devuelve al mdulo y al segmento desde el cual fue llamada.
Programa Principal

OB1

Mdulo Subrutina

FC

Ejecucin del programa

Instruccin que llama a otro mdulo

Ejecucin del Programa

fin de bloque

Las Funciones son bloques lgicos sin memoria


Las variables temporales de las FCs se memorizan en la tabla de datos locales

PLCs
Curso 2009/10
Pgina 12

Funciones
Mdulos parametrizables: tantos parmetros de entrada, salida, y entrada/salida como se necesiten. sin memoria, p.e. slo variables temporales sin acceso a variables globales y direcciones absolutas con los mismos parmetros de entrada devuelven el mismo resultado Amplan el juego de instrucciones del procesador

Function FC10 Ejecucin del programa CALL FC 10


On_1 := On_2 := Off := E 0.1 E 0.2 A8.0 ... U U = ... #On_1 #On_2 #Off in in out ... On_1 On_2 Off BOOL BOOL BOOL

PLCs
Curso 2009/10
Pgina 13

Funciones: sin parmetros


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 parmetros): UC llamada incondicional Ej.: UC FC12 CC llamada condicionada a RLO=1 Ej.: U E125.0 CC FC1 El fin de una funcin se realiza con la instruccin
BEA (incondicional) o BEB (condicional a RLO=0) PLCs
Curso 2009/10
Pgina 14

Funciones: con parmetros


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 parmetros) Al darles contenido (introducir cdigo) se debe rellenar tambin su Tabla de Declaracin, donde se incluyen los parmetros formales de la funcin (con los que se disea la funcin) declarados como IN, OUT o IN/OUT. Los parmetros actuales sern los que se transfieran desde el bloque actual a la funcin, siendo estos valores asignados a los parmetros formales de la FC para que trabaje con ellos El fin de una funcin con parmetros se realizar igualmente con instrucciones BEA y BEB
PLCs
Curso 2009/10
Pgina 15

Funciones: con parmetros


Ejemplos:
Llamada a una funcin sin parmetros:

CALL FC 12
Llamada a una funcin con parmetros:

CALL FC 25
Velocidad := MW10 Inicio := E124.0 Alarma := A125.0 Parmetros formales: Velocidad, Inicio y Alarma Parmetros actuales: MW10, E124.0 y A125.0 Dentro de FC 25 (en su Tabla de Declaracin) se habrn definido las caractersticas de Velocidad, Inicio y Alarma CALL llama a un bloque lgico independientemente del RLO

PLCs
Curso 2009/10
Pgina 16

Funciones
Instruccin CALL El tiempo de procesamiento para CALL depende del nmero y la posicin de memoria de los parmetros actuales La instruccin CALL asegura que los parmetros de mdulo son provistos correctamente con datos actuales Ejemplo: CALL FC10 On_1 := E 0.1 On_2 := E 0.2 Off := A 8.0 Instruccin de llamada UC y CC Llamada a mdulo independiente del RLO (UC) o dependiente del RLO (CC) Ejemplos: UC FC20 CC FC20 Slo se pueden usar cuando la FC no tiene parmetros PLCs
Curso 2009/10
Pgina 17

Bloques de funcin
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 Copia la parte de variables internas de la funcin. declaracin local del FB Esto no era posible en FCs Llamada a un mdulo con los parmetros actuales Ejemplo: Call FB1,DB10 PLCs
Curso 2009/10
Pgina 18

FB1

rea de Declaracin Local Seccin de cdigo del mdulo llamado usando los valores del rea de memoria local.

Bloques de funcin
Mdulos parametrizables: tantos parmetros de entrada, salida y entrada/salida como se necesiten con memoria, es decir, con variables estticas (tambin puede haber temporales) Llamada con rea de datos propia (instancia) Aplicacin: Funciones de temporizacin y contadores Unidades de control de procesos con estados internos calderas motores, vlvulas, etc.
Curso 2009/10
Motor

DB 16
0.0 0.1 2.0 4.0 Marcha Paro Motor_on Velocidad BOOL BOOL BOOL INT BOOL BOOL BOOL INT

FB 5

CALL FB5, DB16 Marcha :=E 0.0 Paro :=E 0.1 Motor_on :=A8.0 Velocidad :=AW12

in Marcha in Paro out Motor_on out Velocidad stat ... Temp...

... U UN = ...

#Marcha #Paro #Motor_on

Es necesario

PLCs
Pgina 19

Bloques de funcin
Tipos de variables aadidos (no en FCs):
STAT: esttico; conserva el valor de la variable de un ciclo para el siguiente, ya que almacena su valor en el mdulo de datos DB asociado a la funcin.

Llamada a mdulo de funcin: CALL FB1, DB3

CALL FBnx, DBny

Desde el administrador SIMATIC se habrn creado (dentro del Proyecto y en la carpeta Bloques) FB 1 y DB 3:
Primero se crea FB1: tabla de declaracin de variables, cdigo de funcin, etc. Despus se crea DB3 (asociado a FB1) y toma la tabla de declaracin de FB1 Asignacin del valor actual al parmetro/variable formal:
desde el DB3: Ver > datos > valor actual Desde el OB100: Load + Transfer

PLCs
Curso 2009/10
Pgina 20

Bloques de funcin
Mediante la llamada con varias instancias de un FB se pueden controlar varios equipos con el mismo FB

PLCs
Curso 2009/10
Pgina 21

Bloques de datos
Zonas de memoria para almacenamiento de datos organizados del programa No pierden la informacin cuando el programa los ha acabado de utilizar Existen DBs de dos tipos:
Globales: disponibles para cualquier mdulo lgico del programa. De instancia: asignado a un mdulo de funcin, por lo que slo es accesible por ste.

PLCs
Curso 2009/10
Pgina 22

Bloques de datos globales


Son remanentes: no pierden la informacin aunque se corte la alimentacin (en coherencia con el programa cargado en la CPU) Tras la creacin 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: Acceso:

AUF L U T U

DB8 DB8 DB8.DBX3.0 DB7.DBW3 DB6.DBD4

lleva implcito AUF DB8 lleva implcito AUF DB7 lleva implcito AUF DB6

Los DB permiten la asignacin de simblicos. PLCs


Curso 2009/10
Pgina 23

Bloques de datos globales


DB 99 "Valores"
Dir. Nombre 0.0 1.0 2.0 Estado Estados Numero Tipo BOOL BYTE INT AUF L DB 99 DBB 1
o

Acceso Tradicional
AUF U "Valores" DBX 0.0 U

Acceso Total absoluto


o

simblico
o

DB99.DBX0.0

Valores".Estado

DB99.DBB1

Valores".Estados

4.0 Peso[1]

REAL
AUF L "Valores" o DBW 2 L DB99.DBW2
o

L Valores".Numero

8.0 Peso[2]

REAL

AUF L

DB 99 DBD 8

DB99.DBD4

L "Valores".Peso[1]

PLCs
Curso 2009/10
Pgina 24

Bloques de datos globales

Abrir mdulo de datos AUF DB 19

Carga y transferencia en mdulos de datos L DBB 1 L DBW 2 L5 T DBW 4 L 'A' L DBB28 ==I U DBX 3.1 Cargar el byte de datos 1. Cargar la palabra de datos 2 (byte 2/3). Cargar el nmero 5. Transferir a la palabra 4. Cargar el carcter ASCII A. Cargar el byte de datos 28. Comparar. Consultar el bit 1 del byte 3.

L DB19.DBW4 Cargar la palabra de datos 4 del DB19 (incluye AUF DB 19).

PLCs
Curso 2009/10
Pgina 25

Bloques de datos de instancia


Asociado a un bloque de funcin 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 funcin FB ya existente. Aparecen en la tabla de variables los parmetros correspondientes al FB asociado automticamente. Pueden asociarse varios DBs a un nico FB.
CALL FB22,DB201

CALL

FB22,DB202

CALL

FB22,DB203
Pgina 26

PLCs
Curso 2009/10

Resumen

FC
Lenguaje

FB
Con parmetros sin param., sin DB inst. Con param., con DB inst.

Sin parmetros

AWL

CALL FC1 UC FC1 CC FC1 FC1 ( CALL )

CALL FC2 Par1: ... Par2: ... Par3: ...

UC FB1 CC FB1

CALL FB2, DB3 Par1: ... Par2: ... Par3: ...

DB3 FC2 FB1


ENO EN ENO EN Par1 Par3 Par2 Par3

KOP

FC1
EN ENO

FB2
ENO

EN Par1 Par2

DB3 FC2
EN Par1 Par2 ENO ENO Par3

PLCs

FB1
EN EN

FB2
Par1 Par2

Par3
Pgina 27

Curso 2009/10

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), azcar (A124.3) y un motor que realiza la mezcla (A124.4). La produccin empezar con un flanco de subida de la seal 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 Magdalenas 3 Sobaos Donuts 1 2 Leche 2 2 1 Levadura 3 3 2 Azcar 2 1 1 T mezcla 4 3 2

La entrada E124.5 permite elegir si los productos y el proceso de mezcla se realizan simultneamente (si E124.2=0) o de manera secuencial (si E124.2=1) PLCs
Curso 2009/10
Pgina 28

EJERCICIO (Entregable 7)

Resuelva el ejercicio utilizando: Funciones con parmetros. Bloques de funcin con DBs de instancia. Evite, en la medida de lo posible, el uso de saltos.

PLCs
Curso 2009/10
Pgina 29