Está en la página 1de 66

Automatismos eléctricos

OB1

Programación
FB
estructurada

DB

MSc. Jorge Duque


FC

© Universidad Tecnológica de Bolívar


Schutzvermerk / Copyright-Vermerk
Facultad de Ingeniería – Cartagena de Indias, 20200 © J. Duque - UTB 2020
Programación estructurada

1. Programación estructurada OB FB FC
″Motor″

FB
2. Bloques de organización OB ″Motor″
FC

3. Bloques de función FC DB
instancia única
FB ″Motor_2″
DB Modbus
4. Bloques de función FB multi-instancia COMM
″Motor_1″

5. Bloques de datos

6. Ejemplos

Slide 2 © J. Duque - UTB 2020


Programación estructurada

Un programa creado con FBs, muestra una mejor calidad de


diseño y requiere menos tiempo de desarrollo.

Código de programa Re-utilizable:


 Programar sólo una vez una función/proceso que se repite:
 Re-utilizar el FB una y otra vez

Mejor vista/presentación del programa del PLC


 El programa es más fácil de leer
 Se reduce el código de programa

 Se reducen posibles errores de código

Slide 3 © J. Duque - UTB 2020


Programación estructurada

OB1
Bloque de
Organización

FB
Bloquede
Al crear el programa de usuario para las Función

tareas de automatización, las instrucciones


del programa se insertan en bloques lógicos: Bloque de
DB
datos

FC Función

Slide 4 © J. Duque - UTB 2020


Programación estructurada

OB (bloques de organización)
Concepto de
bloques FC (función)
No tiene bloque de datos de instancia

Concepto de
bloques FB (bloque de función) tiene un bloque de
datos de instancia para almacenamiento
temporal

DB (bloque de datos) para acceso global


y almacenamiento permanente

Slide 5 © J. Duque - UTB 2020


Programación estructurada

1. Programación estructurada

2. Bloques de organización OB OB

3. Bloques de función FC

4. Bloques de función FB

5. Bloques de datos

6. Ejemplos

Slide 6 © J. Duque - UTB 2020


Bloques de organización (OB)

 Los bloques de organización (OB) constituyen la interfaz entre el


OB
sistema operativo del controlador (CPU) y el programa de usuario.

 Estos bloques son llamados por el sistema operativo y controlan los


procesos siguientes:
o Ejecución cíclica (p. ej., OB1)
o Comportamiento en arranque del controlador
o Ejecución del programa controlada por alarmas
o Tratamiento de errores

 En un proyecto debe existir por lo menos un bloque de organización


para la ejecución cíclica del programa.

 Para llamar un OB se necesita un evento de arranque

Slide 7 © J. Duque - UTB 2020


Bloques de organización (OB)

OB1: Bloque de organización, su filosofía no es la


programación directa, sino la organización de los todos los
llamados a otros bloque de programa.

OB100: Primer Bloque de ejecutarse una vez el PLC es


encendido o arrancado.

OB35: Se ejecuta con la frecuencia configurada, usado


para PID o contadores de tiempo.

Slide 8 © J. Duque - UTB 2020


Programación estructurada

1. Programación estructurada

2. Bloques de organización OB
FC

3. Bloques de función FC

4. Bloques de función FB

5. Bloques de datos

6. Ejemplos

Slide 9 © J. Duque - UTB 2020


Bloques de Función FC

 Las funciones (FC) son bloques lógicos sin memoria. No poseen una
memoria de datos que permita almacenar valores de parámetros de bloque. Bloque deFunción

 Al llamar una función deben conectarse todos los parámetros de interfaz.


Para guardar datos de forma permanente, deben crearse previamente
FC
bloques de datos globales.

 Una función contiene un programa que se ejecuta cada vez que la función
es llamada por otro bloque lógico. Las funciones se pueden utilizar, p. ej.,
para los siguientes fines:
o Funciones matemáticas, que devuelven un resultado en función
de los valores de entrada.
o Funciones tecnológicas, como controles individuales con
operaciones lógicas binarias.

 Una función también se puede llamar varias veces desde un programa


Slide 10 © J. Duque - UTB 2020
Bloque de funciones SFC

 SFC : Funciones propias de fabricante e incorporadas en el PLC, para


uso por el programador en el caso de requerirla.

DB

Slide 11 © J. Duque - UTB 2020


Programación estructurada

1. Programación estructurada

2. Bloques de organización OB

FB
3. Bloques de función FC

4. Bloques de función FB

5. Bloques de datos

6. Ejemplos

Slide 12 © J. Duque - UTB 2020


Bloques de Función FB

 Un bloque de función (FB) es un bloque lógico de programa con el


cual se quiere hacer una sectorización del proceso que puede ser FB
llamada varias veces en el programa de ser necesario.

 La llamada de un bloque de función se denomina instancia. A cada


instancia de un bloque de función se le asigna un área de memoria
que contiene los datos que utiliza el bloque de función.

 Esta memoria es proporcionada por bloques de datos que son


creados automáticamente por el software.

Slide 13 © J. Duque - UTB 2020


Bloques de Función FB

 El FB posee memoria y guarda información de los estados en un bloque de


datos llamado “Bloque de datos de instancia”, en el cual reposan los FB
datos de un llamado de esta función en especial.

 Pueden haber muchos DBs para un solo FB. (“Bloque de datos multi-
instancia”, )

 Los bloques de función se ejecutan cada vez que es llamado por otro bloque
lógico. Un bloque de función también se puede llamar varias veces en
diferentes puntos de un programa. Esto facilita la programación de funciones
complejas que se repiten con frecuencia.

Slide 14 © J. Duque - UTB 2020


Programación estructurada

1. Programación estructurada

2. Bloques de organización OB

3. Bloques de función FC

4. Bloques de función FB

5. Bloques de datos

6. Ejemplos

Slide 15 © J. Duque - UTB 2020


Bloque de datos DB

 Los bloques de datos (DB) se crean en el programa de usuario para


almacenar los datos de los bloques lógicos.

 Un DB puede ser de uso general en el programa ( DB global) o de DB


“instancia” al ser llamado únicamente por un FB.

 En ellos puede reposar la información de recetas del proceso o


configuración del mismo sistema.

 Un DB se puede definir de manera que sea de sólo lectura.

Slide 16 © J. Duque - UTB 2020


Bloque de datos globales DB

 Al contrario que los bloques lógicos, los bloques de datos no


contienen instrucciones, sino que sirven para almacenar datos de
usuario.
DB

 Así, los bloques de datos contienen datos variables con los que
trabaja el programa de usuario.

 La estructura de bloques de datos globales puede definirse a


discreción.

 Los bloques de datos globales almacenan datos que pueden ser


utilizados por los demás bloques.

 Solo debe acceder a los bloques de datos de instancia el


correspondiente bloque de función.

Slide 17 © J. Duque - UTB 2020


Ejemplos Programación estructurada

1. Ejemplo de uso de FC: Prensa

2. Ejemplo de uso de FB: Banda transportadora

3. Ejemplo de uso de datso multiinstancia: Banda

Slide 18 © J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

CONTROL DE UNA PRENSA NEUMÁTICA

Se desea activar una prensa con guarda de protección mediante el


pulsador S3 START sólo si la pantalla protectora está cerrada. El estado
de dicha pantalla será monitoreado con un sensor de Pantalla de
Protección Cerrada B1. Una válvula de dos vías 5/2 M0 accionará el
cilindro de la prensa para maquinar una forma plástica.

La prensa se retrae nuevamente cuando el botón EMERGENCY OFF


(contacto de ruptura) se activa, o cuando el sensor de l Pantalla de
Protección no responde o el final de carrera del Cilindro se activa

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

CONTROL DE UNA PRENSA NEUMÁTICA

Asignación de variables:

Address Symbol Comment

%I 0.1 EMERGENCY OFF EMERGENCY OFF button


%I 0.3 S3 Start button S3 (make contact)
%I 0.4 B1 Sensor protective screen closed
%I 0.5 B2 Sensor Cylinder extended
%Q 0.0 M0 Extend Cylinder A

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

La estructura de un programa puede parecerse a lo siguiente:

OB 1 FB 1 DB 10
Call FB1, DB10 DB de Instancia  Para poder utilizar los bloques,
Datos locales
sólo al FB1 primero deberán ser generados.
Existe la posibilidad de generar esos
FCs y FBs en forma de bloques
estándar bajo el uso de variables
BE internas.
OB = Bloque de Organización
FB = Bloque de Función  Cualquier FC puede llamarse tantas
FC 2 FC = Función
DB = Bloque de Datos veces como se quiera, mientras que
UC FC2
cada llamada a un FB exige de un
DB de instancia diferente.
BE

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

ESTRUCTURA DEL PROGRAMA

La secuencia de programa está escrita en bloques. Como


parte de la norma, El bloque de organización OB1 ya existe.

Representa la interfaz al sistema operativo de la CPU, es


llamado automáticamente y procesado cíclicamente.

De este bloque de organización, bloques adicionales pueden


ser llamados a su vez para la programación estructurada,
tales como la función FC1.

El propósito es fraccionar una tarea global en tareas


parciales. Se pueden resolver más fácilmente y probados en
su funcionalidad.
© J. Duque - UTB 2020
Ejemplo de uso de Bloques de función FC

 Asignar variables globales:

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

 Seleccione "Function (Función) (FC)" e indique el


nombre "Program press (Programa prensa)".
 Como lenguaje de programación se especifica el
diagrama de funciones "FUP".

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

 Para poder escribir el programa, debe declararse la interfaz del bloque.


 Al declarar la interfaz, se determinan las variables locales, conocidas solo en este bloque.
 Las variables se dividen en dos grupos:

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

 El segundo grupo son los datos locales:

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

Declaración de las variables locales:


Input:
• emergency_off : parada de emergencia
• Start: arranque
• B_screen: pantalla protectora cerrada
• B_cylinder:cilindro se ha extendido
Output:
• M_press : salida del cilindro de la prensa
Temp:
• HM01: guarda el valor del FF SR

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

Programar la función FC1: Program_press en diagrama de funciones (FUP):

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

• Llamada desde el OB1 a la función FC1: Program press

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

Iniciar el simulador PLCSIM, crear nuevo proyecto y agregar las variables a simular:

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

 Observar el programa

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

© J. Duque - UTB 2020


Ejemplos Programación estructurada

1. Ejemplo de uso de FC: Prensa

2. Ejemplo de uso de FB: Banda transportadora

3. Ejemplo de uso de datos multiinstancia: Banda

Slide 33 © J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

CONTROL DE UNA BANDA TRANSPORTADORA


 Se desea activar una banda transportadora en dos modos de operación:
Con el pulsador S1 en modo Manual y con el pulsador S2 en modo Automático
 Cuando opera en modo Manual, el motor opera mientras se tenga pulsado el pulsador S3 ( S4 no debe activarse)
 En modo automático, el motor arranca cuando se pulsa S3 y se para cuando se pulsa S4

Asignación de variables:

Address Symbol Comment

%I 0.0 S1 Button operating mode Manual S1 (make contact)


%I 0.1 S2 Button operating mode Automatic S2 (make contact)
%I 0.2 S3 On button S3 (make contact)
%I 0.3 S4 Off button S4 (break contact)
%Q 0.2 M01 belt motor M01

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FC

ESTRUCTURA DEL PROGRAMA


• Cuando se generan bloques y si van a funcionar en cualquier programa como
un "Black Box", tienen ser programado usando variables.
• En este caso, se aplica la siguiente regla: en los bloques FB, no se deben Bloque de

Bloque de Bloque de función: datos de


usar marcas y entradas o salidas con direcciones absolutas. instancia:
organización: BELT [FB1]
• Dentro del bloque, solo se utilizan variables y constantes. Main [OB1] Llamada Contiene, un programa BELT_DB1

de un bloque de para el control de una [DB1]


• En el ejemplo a continuación, se generará un bloque de funciones con una función: cinta en modo como memoria
para la
declaración de variable que contiene el control de banda (Belt) que depende BELT [FB1] junto manual/automático.
con su bloque de En esta llamada, el llamada del
del modo de operación: datos de instancia: bloque de función bloque de

BELT_DB1 [DB1] utiliza como memoria función


• Con el botón 'S1', el modo de operación es 'Manual' y con el botón 'S2' el
el bloque de datos de
modo de operación es "Automático". instancia:
BELT_DB1 [DB1]
• En el modo de funcionamiento "Manual", el motor está encendido siempre
que el botón 'S3' esté activado,
• En el modo de funcionamiento 'Automático', el motor de la banda se enciende
con el botón 'S3' y se apaga con el botón 'S4' (contacto de ruptura).
© J. Duque - UTB 2020
Ejemplo de uso de Bloques de función FB

Asignar variables globales:

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

Insertar nuevo bloque: Function Block FB1 con el nombre «Belt»

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

 Llamada desde el OB1 al FB1: Belt

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

 Variables:

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

 En este ejemplo, es importante tener


en cuenta que el estado de las dos
variables 'automan' y 'motorauto' debe
almacenarse durante un período de
tiempo más largo.

 Por esa razón, se tiene que utilizar el


tipo de variable Estática.

Input: Manual, Auto, Start y Stop


 Este tipo de variable a su vez solo Output: Motor
existe en un bloque de funciones FB. Static:
automan (modo de seleccion preseleccionado manual=0, auto=1)
Motorauto (se almacena cuando está en automático)
© J. Duque - UTB 2020
Ejemplo de uso de Bloques de función FB

• FB1: Belt

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

 Cambiar propiedades en el MAIN: Tipo de lenguaje KOP

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

• Llamada desde el OB1 al FB1: Belt

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

 Compilar:

 Cargar:

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

 Observar el programa

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

 Observar modo manual

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de función FB

 Observar modo automático

© J. Duque - UTB 2020


Ejemplos Programación estructurada

1. Ejemplo de uso de FC: Prensa

2. Ejemplo de uso de FB: Banda transportadora

3. Ejemplo de uso de datos multi-instancia:


Banda transportadora y contador

Slide 48 © J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB de instancia

 Si los bloques de función secundarios o -timers/counters- se llaman


desde un bloque que puede ser utilizado varias veces, no se les debe
asignar su propio bloque de datos.

 La memoria requerida, es provista como multi-instancia en el DB de


instancia que se asigna al bloque de función que está haciendo el llamado.

 En el ejemplo siguiente, se añade un contador de botellas al bloque de


función que ya contiene el control de la cinta dependiente del modo de
operación.

 Con este banda, 20 botellas se van a transportar a una caja. Cuando la


caja está llena, la cinta se detiene y la caja se debe cambiar.

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB

Ejemplo de bloques de datos de Instancia


 El esquema muestra la estructura del programa para controlar dos motores con la función FB10 y dos diferentes bloques
de datos:

 Los datos diferentes para cada motor, por ejemplo: velocidad, tiempo de arranque, tiempo de operación, son almacenados
en los diferentes bloques de instancia DB10 y DB11

 Nota: Algunas instrucciones tales como timers y counters se comportan como bloques de función. Si son
llamados, ellos también representan instancias y necesitan asignación de memoria; en forma de bloque de datos de
instancia
© J. Duque - UTB 2020
Ejemplo de uso de Bloques de datos DB multi-instancia

BANDA TRANSPORTADORA CON CONTADOR Y DB MULTI-INSTANCIA

 En este ejemplo, se añade un contador de botellas al bloque de función que ya contiene el control de la cinta dependiente del modo de
operación.

 Con este banda, 6 botellas se van a transportar a una caja. Cuando la caja está llena, la cinta se detiene y la caja se debe cambiar.

 Con el pulsador S1 se activa el modo Manual y con el pulsador S2 el modo Automático. Cuando opera en modo Manual, el motor
opera mientras se tenga pulsado el pulsador S3 ( S4 no debe activarse). En modo automático, el motor arranca cuando se pulsa S3 y
se para cuando se pulsa S4

Asignación de variables:

Address Symbol Comment

%I 0.0 S1 Button operating mode Manual


%I 0.1 S2 Button operating mode Automatic
%I 0.2 S3 On button (make contact)
%I 0.3 S4 Off button (break contact)
%I 0.6 S5 Reset counter/new case
%I 0.7 B0 Sensor B0 bottle counter
%Q 0.2 M01 belt motor M01

© J. Duque - UTB 2020


 Reutilizar el proyecto: Proyecto_FB y guardarlo como Proyecto_FB_counter

© J. Duque - UTB 2020


 Para configurar nuevas variables
globales, abra con un doble clic en
'Variables PLC (7)’ en ‘PLC_Belt’
en ‘variables del PLC’

 Lo siguiente es configurar las


dos variables globales: 'B0' y 'S5'
B0: % I0.7 (sensor)
S5: % I0.6 ( Reset contador )

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Para realizar los cambios, abra ‘Belt [FB1] "el bloque con un doble click (* Belt[FB1])

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 En primer lugar, añadir dos líneas en la interfaz de las variables de entrada (* Interfaz * Entrada de línea * Añadir fila)
 Input:
sensor_bottle Sensor bottle counter
reset_counter Reset counter/new case

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Ahora podemos empezar a cambiar el programa. Se necesita un contador regresivo 'CCD'. Se encuentra en
'Instrucciones' en 'Contadores' .

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Ahora, inserte primero una AND entre OR y la asignación, a continuación, arrastre la barra 'CCD' para el segundo
contacto de la función AND (* & * CTD)

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Necesitamos la memoria para la función de contador. Aquí, el bloque de función pone a disposición en el bloque de datos
de instancia como "Multi-Instancia, sin generar una nueva instancia del bloque de datos (* Multi-Instancia * OK)

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Conecte la salida del contador a la entrada de la AND

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Ahora, conecte el contador descendente 'CTD' con el valor especificado 6 para las 6 botellas y conectar la entrada
de 'CD‘ a '# sensor_bottle', y la entrada de 'carga' a '# reset_counter’. A continuación, negar el segundo
contacto de la función AND.

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Ahora, se abre el bloque de 'Main [OB1] "para actualizar la llamada de 'Belt [FB1]’ en
el bloque (* Main [OB1])

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 A continuación, seleccione la opción ‘Nueva interfaz’ y confirme con ‘aceptar’

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Salve el proyecto

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Simule el modo manual: la salida Q0.0 se activa sólo mientras se pulsa S3_start, al soltar se apaga

© J. Duque - UTB 2020


Ejemplo de uso de Bloques de datos DB multi-instancia

 Simule el modo automático: la salida Q0.0 queda retenida al pulsar S3_start y se apaga al pulsar stop

© J. Duque - UTB 2020


Building Information Modeling (BIM)

Building Information Modeling (BIM) es la gestión digital de los procesos de información


para el diseño, construcción y gestión de proyectos de construcción. ... Esto significa que el
modelo BIM garantiza el uso de información consistente y, en consecuencia, conduce a
menos desperdicio al reducir la ocurrencia de errores.

Slide 66 © J. Duque - UTB 2020

También podría gustarte