programación estructurada. plantillas pablo san segundo c-206 [email protected]
TRANSCRIPT
Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP El problema de “mostrar el cero”
Consideraciones generales Existen un buen número de situaciones de
control que se repiten en las diferentes tecnologías
Para facilitar su programación en un PLC se proponen un conjunto de plantillas
Existe cierta similitud entre el concepto de plantilla y el de patrón en POO
Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP
Plantilla de “cajas” para el grafcet
1
2
U “X0”U “S1”S “X1”R “X0”
U “X1”U “S2”S “X2”R “X1”
U “X2”U “S3”S “X3”R “X2”
//...
Implementación típica
U “X0”SPBN _001U “S1”S “X1”R “X0”
_001: U “X1”
SPBN _002U
“S2”S
“X2”R
“X1”
_002: U “X2”
SPBN _003U
“S3”S
“X3”R
“X2”
_003: NOP 0
//...
Implementacióncon “cajas”
S2
0
S1
S3
3
VENTAJAS
A) EficienciaB) ClaridadC) Modela prioridad
Buena numeración. En la caja se activa la etapa 001
Cuestión¿INCONVENIENTES?
Ejemplo repaso: Macroetapa en grafcet
M1
f
k
E1
10
11
S1
g
h
i
j
(5)
(6)
4
OB1: BLOQUE INVOCANTE
FC1
FC1
U “X3”U “f”S “M1”R “X3”
U “M1”SPBN _M1 CALL FC1
U “S1” U “k” S “X4” R “M1” R M100.0
_M1: NOP 0
3
SETFP M100.0S “X1”R “X10”R “X11”R S1
U “X1”U “g”S “X10”R “X1”
//…
Salida de la Macroetapa
Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP
Plantilla Enable(EN)-Enable Out(ENO) Gestión de errores en bloques mediante el
biestable RB de la palabra de estado
Implementación caja
U E1.0SPBNB _001
CALL FC1
_001: U BIE= M 1.0
L 500L 600*I
UN OVSAVE
Tarea Objetivo
RBRLO
Uso de bit de error
RB
FC1
ENO
M 1.0E 1.0
EN
(500 * 600)
EVENTO ERROR: EN=TRUE y ENO=FALSE
Consulta el estado del bit RB
CuestiónModifique el código para que RB sólo se modifique con el evento error
Ejemplo para un bloque
BLOQUE MULTIPLICADOR (FC1)
EW 0
EW 2MW 1
EN ENOM 100.0 M 100.1
U M100.0
SPBNB _001
CALL FC1
_001: U BIE
= M100.1
OB1: Bloque invocante
EW 0 * EW 2
L EW 0
L EW 2
*I
SPO _ERR
T MW 1
BEA
_ERR: CLR
SAVE
FC1: Bloque llamado
Evento error aislado.Buen estilo
Ejemplo de concatenamiento de bloques
CADENA DE BLOQUES MULTIPLICADORES
EW 0
EW 2MW 1
EN ENOM 100.0
U M100.0
SPBNB _001
CALL FC1
U BIE
SPBNB _001
CALL FC2
_001: U BIE
= M100.1
EW 0 * EW 2
EW 4
EW 6MW 3
EN ENOM 100.1
EW 4 * EW 6
FC1 FC2
Cuestión¿Caracterización del error?
ERROR: M100.0=1 y M100.1=0
EjercicioPrograme la concatenación de bloques que aparece abajo
Cuestión¿Es necesario usar SPBNB en la segunda llamada o bastaría con usar SPBN?
Ejercicio
Implemente un bloque función que trate una señal analógica de temperatura transducida (PEW752) con
rangos 10ºC (0V) - 70ºC (10V)
La función debe llamar al bloque de librería SCALE (FC 105), devolver TRUE si la temperatura se
encuentra en [25ºC-40ºC] y gestionar un posible error por desbordamiento mediante el bit RB
SoluciónVAR_INPUT raw : INT; high_lim : REAL; //70ºC low_lim : REAL ; high_range : REAL //40ºC low_range : REAL ;END_VARVAR_OUTPUT temperature : REAL ; in_range : BOOL ; //[25-40]ºCEND_VARVAR_TEMP retSCALE : WORD ; //8 overflow ge_low_range : BOOL //>25ºCEND_VAR
CALL “SCALE” IN:=#raw HI_LIM:=#high_lim LO_LIM:=#low_lim BIPOLAR:=FALSE RET_VAL:=#retSCALE OUT:=#temperature
L #temperatureL #low_range>=R = #ge_low_range
L #temperatureL #high_range<=R U #ge_low_range= #in_range
L 8L #retSCALE
==ISPBN NERR CLRSAVE
NERR: NOP 0
Llamada a periferia Rango inferior Rango superior Gestión error (RB)
FC1: “sensor temp”
Aplicación de plantilla EN-ENO al grafcet
U “X1”SPBNB _002CALL FC1
U BIESPBN _ERRU T2
S “X2”R “X1”R “Salida”SPA _002
_ERR: S “Emergencia”
R “X1”R “Salida”
_002: NOP 0//…
OB1: Invocante
U “X1”= “Salida”
//…
U “Error”SPBN _ERRCLRSAVE
_ERR: NOP 0
FC1
Salida / Maniobra (A1.0)con gestión de error
Error
1
2
T1
T3
3
Emergencia
2T Error
FC1
Cuestión¿Tiene “Error” prioridad?
Gestión de errores locales a una etapa mediante bit RB EN es la etapa (implementación con cajas), ENO representa el evento error
EjercicioImplemente un error por sobrepasamiento de tiempo para la maniobra, mediante bit RB
FC1
ENO
ErrorX1
EN
Solución parcial
VAR_INPUT tempor : TIMER ; tout : S5TIME ;END_VARVAR_OUTPUT actuador : BOOL ; END_VARVAR_IN_OUT bit_de_trabajo : BOOL ; END_VAR
SETFP #bit_de_trabajoS #actuador L #tout SS #tempor
U, #tempor BEB
CLR //sets RB bitSAVE R #actuador R #bit_de_trabajo FR #tempor R #tempor
Arranque Gestión del error (RB)
FC1: “sensor temp”
Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP
Plantilla de maniobra Se asume una maniobra simple tal que el
evento de finalización es conocido (p.ej. sensor de fin de carrera= 1)
Se consideran los siguientes biestables Bit de trabajo: Vale ‘1’ durante la ejecución de la
maniobra y ‘0’ en caso contrario. El bit de trabajo a ‘0’ sirve como condición de arranque si el bloque de maniobra es invocado
Bit de fin : Vale ‘1’ cuando se detecta la condición de finalización de la maniobra. ‘0’ en caso contrario.
Bit de error : Vale ‘1’ si se detecta un defecto durante la ejecución de la maniobra. ‘0’ en caso contrario.
Aplicación al grafcet
1
2
sini
maniobra (A124.0)con gestión de error
X_ERR
10s/X1(10 / 1) sfins X
FC1 OB1: BLOQUE INVOCANTE FC1
U “X0”U “sini”S “X1”R “X0”
U “X1”SPBN _002 CALL FC1
U “bitDeError” S “X_ERR” R “X1”
UN “bitDeError” U “bitDeFin” S “X2” R “X1”
_002: NOP 0
SETFP “bitDeTrabajo”R “bitDeError”R “bitDeFin”L S5T#10sSS T1S A124.0
//defectoU T1S “bitDeError”R T1FR T1R “bitDeTrabajo”R A 124.0
//salida normalU “sfin”UN T1S “bitDeFin”R “bitTrabajo”R T1FR T1R A 124.0
0
Cuestion I¿Se puede usar un temporizador SE?
3
Ejercicio IDiseñe un interfaz apropiado para conseguir que la función maniobra FC1 sea una función de librería
Ejercicio IIModifique el interfaz anterior considerando la gestión de defecto mediante bit RB
Soluciones
VAR_INPUT tempor : TIMER ; tout : S5TIME ; sfin: BOOL;END_VARVAR_OUTPUT actuador : BOOL ; bitDeError: BOOL: bitDeFin: BOOL;END_VARVAR_IN_OUT bit_de_trabajo : BOOL ; END_VAR
VAR_INPUT tempor : TIMER ; tout : S5TIME ; sfin: BOOL;END_VARVAR_OUTPUT actuador : BOOL ; bitDeFin: BOOL;END_VARVAR_IN_OUT bit_de_trabajo : BOOL ; END_VAR
Ejercicio I. Gestión de error con biestable del área de marcas
Ejercicio II.Gestión de error mediante biestable RB de la palabra de estado
Cuestion I¿Se puede usar un temporizador SE?
NO, se necesita un temporizador con memoria
Índice Consideraciones generales Plantilla de cajas Plantilla EN-ENO Plantilla de maniobra Plantilla START-STOP
Plantilla Start-Stop Se aplica para maniobras complejas, en las que su
terminación depende de un evento asíncrono a su evolución Ejemplo: el control de cada tramo de la escalera
mecánica Consiste en dividir el control en un grafcet maestro
con estados de parada y marcha y el grafcet de producción de la maniobra a controlar
La entrada al bloque es un único parámetro start de tipo BOOL con la semántica habitual: start = TRUE Estado de Marcha start = FALSE Estado de Parada
Las salidas del bloque serán: Actuadores de la maniobra Aquellos eventos internos que afecten a la finalización
Plantilla Start-Stop
start Start =1 à XM=1Start =0 à XP=1
GMM + GPActuador
Evento 1 que condiciona la terminación de GP
Evento 2 que condiciona la terminación de GP
Segmento de arranque
U XMFP BitDeTrabajoS X0R X1R X2//...
PLANTILLA (INTERFAZ)//…
VAR_STATIC XM: BOOL XP: BOOL BitDeTrabajo: BOOL x0: BOOL x1: BOOL x2: BOOL //… resto de estadosEND_VAR
start actuador
GP
0
1
2
Actuador
M
P
“marcha”
“paro” Bit de trabajo GP=0
GP{*}
GMM
M
start
start
GP{INIT}P
Caso de uso
X3start
SFC1
X2
FB1
Actuador
2
3
X2·ev_asin“ev_asin:
asíncrono con SFC1”
SFC1
G.Principal
SFC10
1
2
Actuador
“Etapa de espera y condición
necesaria para terminación”
*
FB1
Aplicación al motor de la escalera mecánica
1SE 1
2
1
MOTOR 1
1SE
1SE
0
1(50 / ) 1s X SE
FB “control del motor”(GMM+GP)
UN “start”S “XP”R “XM”R “bitDeTrabajo”//…forzado GP a congelación
U “start”S “XM”R “XP”//… forzado de GP a reposo
FB1 / GMM
GMM
GMM
startX2
FB1
Actuador
standby
U “XM”FP “bitDeTrabajo”S “X0”R “X1”R “X2”//…
FB1 / GPCuestión¿Son estrictamente necesarias las etapa XM y XP?
El problema de “mostrar el cero” (repaso) Ha aparecido a lo largo del curso. Se presenta en diversas formas:
Una señal de mando por flanco no activa una acción (p.ej. no se activa un temporizador)
Se necesita hacer que un nivel en la señal de mando sea percibido como un flanco
“Mostar un cero” consiste en poner a nivel bajo el biestable responsable de la detección del flanco en la señal de mando del componente SW Señales de disparo en temporizadores Señales de contaje en contadores
Aplicación para temporizadores (step 7) Operador FR (no aparece en KOP, solo en AWL)
FR T1 (muestra el cero al temporizador, habilita la señal de disparo) FR Z1 (muestra el cero al contador; habilita las señales de suma y
resta)
FIN