Automatización
Industrial
2º G. Ing. Electrónica, Robótica y Mecatrónica
Tema 6. Modularización en la
programación de autómatas
Miguel Ángel Ridao Carlini
miguelridao@[Link]
Modularización de programas
◼ OBJETIVO: Realizar módulos que automaticen partes
diferenciadas del sistema, de modo que puedan ser
reutilizados.
◼ Cada bloque controla una parte del sistema, y debe incluir:
⧫ Lista de entradas
⧫ Lista de salidas
⧫ Comportamiento (evolución del estado)
◼ Los módulos se comunican a través de sus entradas y sus
salidas (o bien mediante variables globales, que no es
recomendable)
◼ Cada módulo se modelará mediante un automatismo
independiente
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 2
Modularización de programas
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 3
Modularización de programas
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 4
Modularización de programas
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 5
Modularización de programas
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 6
Modularización de programas
P1
V1
LTH1
MD1
FCD1
FINAL1
VUELVE
VV1
LTL1
MI1
INTERACCION ENTRE BLOQUES: VUELVE:=FINAL1 AND FINAL2
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 7
Modularización de programas
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 8
Bloques funcionales
◼ Elemento fundamental para la modularización
◼ Un bloque funcional es un POU que puede devolver uno o más valores
◼ Para utilizarlos es necesario crear “copias” del bloque funcional
denominadas instancias.
⧫ Si definimos un bloque funcional denominado MiBlqFun, puedo definir instancias
de ese tipo
Mi_instancia: MiBlqFun;
⧫ Las instancias se declaran en la zona de declaración de variables. Puedo crear
tantas instancias como quiera
◼ Los valores de las variables internas y de salida se mantienen de una
ejecución de la instancia a la siguiente, por lo que una llamada a una
misma instancia de BF con los mismos parámetros de entrada, puede
devolver valores de salida distintos.
Recuerde que los programas se ejecutan de forma cíclica, por lo que
normalmente una llamada a una instancia que aparezca en un programa
normalmente se va a ejecutar en cada ciclo.
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 9
Bloques funcionales
◼ Bloques funcionales estándar
⧫ Detectores de Flancos
• R_TRIG: Detector de flancos de subida
• F_TRIG: detector de flancos de bajada
⧫ Temporizadores:
• TON: Temporizador de conexión
• TP: Temporizador de tiempo fijo
• TOF: Temporizador de desconexión
⧫ Contadores:
• CTU: Contador de incremento
• CTD: contador de decremento
• CTUD: Contador de incremento y decremento
⧫ Biestables:
• SR: Biestable con set dominante
• RS: Biestable con rerset dominante
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 10
POU: Bloques funcionales
◼ Los bloques funcionales ya se han ido utilizando en la asignatura:
Contadores, Temporizadores, Trigers,…
VAR
Contador:CTU;
END_VAR
◼ Pero podemos crear nuevos bloques funcionales y guardarlos en la librería
para reutilizarlos.
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 11
Creación y uso de Bloques funcionales
◼ Ejemplo: Biestable S-R
⧫ Definir un biestable S-R con prioridad al Set (escrito en lenguaje ST)
FUNCTION_BLOCK Biestable
VAR_INPUT Set
EntS : BOOL;
EntR: BOOL;
END_VAR
Reset Luz
VAR_OUTPUT
Estado : BOOL :=TRUE;
END_VAR
--------------
IF (EntS=TRUE ) THEN PROGRAM PLC_PRC
Estado:=TRUE; VAR
ELSE Mibiestable: Biestable;
IF (EntR=TRUE) THEN END_VAR
Estado:=FALSE;
END_IF ---------
END_IF
Mibiestable(EntS:=Set,EntR:=Reset,
Estado=>Luz);
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 12
Bloques funcionales
◼ Cuando se crea un bloque funcional, automáticamente es creada una
estructura de datos que incluye los datos de entrada y salida.
FUNCTION_BLOCK Biestable
VAR_INPUT
EntS : BOOL; VAR
EntR: BOOL;
Mibiestable: Biestable;
END_VAR
VAR_OUTPUT
Estado : BOOL :=TRUE; ---------
END_VAR
Se crea automáticamente [Link]:=…
TYPE Biestable
STRUCT
……
(* Entradas *)
EntS : BOOL; Var:=[Link]
EntR : BOOL;
(* Salidas *)
Estado :BOOL;
END_STRUCT
END_TYPE
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 13
Llamada a bloques funcionales en ST
Llamada desde otro programa VAR
Primer Método MiBiestable : Biestable;
END_VAR
-----------
MiBiestable( EntS:=BotonS,
EntR:=BotonR,
Definición de la función Estado=>Luz);
(solo la declaración)
FUNCTION_BLOCK Biestable
VAR_INPUT
EntS : BOOL; BotonS
EntR: BOOL;
END_VAR
VAR_OUTPUT
Estado : BOOL :=TRUE; Luz
Luz
END_VAR BotonS
BotonR
BotonR
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 14
Llamada a bloques funcionales en ST
VAR
Llamada desde otro programa MiBiestable : Biestable;
Segundo Método END_VAR
-----------
[Link]:=BotonS;
[Link]:=BotonR
Definición de la función MiBiestable();
MiEstado:=[Link]
(solo la declaración)
FUNCTION_BLOCK Biestable
VAR_INPUT
EntS : BOOL; BotonS
EntR: BOOL;
END_VAR
VAR_OUTPUT
Estado : BOOL :=TRUE; Luz
Luz
END_VAR BotonS
BotonR
BotonR
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 15
Llamada a bloques funcionales en ST
Llamada desde otro programa
Método Mixto VAR
MiBiestable : Biestable;
END_VAR
-----------
[Link]:=BotonR;
Definición de la función
MiBiestable(EntS:=BotonS);
(solo la declaración) MiEstado:=[Link];
FUNCTION_BLOCK Biestable
VAR_INPUT
EntS : BOOL; BotonS
EntR: BOOL;
END_VAR
VAR_OUTPUT
Estado : BOOL :=TRUE; Luz
Luz
END_VAR BotonS
BotonR
BotonR
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 16
Ejemplo
Entradas
P1 – Pulsador
A1 – Fin de carrera
B1 - Fin de carrera
P2 - Pulsador
A2 - Fin de carrera
B2 – Fin de carrera
Salidas
MOTOR_DE1
MOTOR_IZ1
Carga1
Descarga1
MOTOR_DE2
MOTOR_IZ2
Carga2
Descarga2
Depto. Ing. Sistemas y Automática. Automatización Industrial. 2º GIERM 17