Documentos de Académico
Documentos de Profesional
Documentos de Cultura
6.arquitectura de Bloques
6.arquitectura de Bloques
Bloques
Pablo San Segundo C-206
pablo.sansegundo@upm.es
Bloques de programacin
Funciones FC<ID>
Arquitectura de bloques
CALL<FCX>
CC
CALL<FBX, DBX>
Sistema Operativo
UC
FBX
FCX
DBX
Bloque de datos de
instancia
FBX
FCX
DBX
Bloque de datos de instancia
A todos los bloques
OBX
DBX
Bloque de datos global
BLOQUES
DE ORGANIZACIN
(OB)
Arranque
desde
pestaa en
carcasa o
desde PC
(e.g. bus
MPI)
Programa de
usuario
OB1
OB10-17
OB20-23
Ciclo scan
Alarmas horarias
Alarmas de retardo (requieren
SFC 32)
OB30-38
Alarmas cclicas
OB40-47
Alarmas de proceso
Otras Alarmas/Errores
OB80-87
(watchdog, ejecucin,
bastidor, etc.)
OB100Arranque/Rearme
(i.e.
tras
102
desconexin)
OB121
Error de programacin
OB122
Error de acceso a la periferia
BLOQUES
DE
DATOS
(DB)
X, B, W, D
DB<N>
Offset empezando
por el bit 0.0
<IDENTIFICADOR_DE_BLOQUE>.DB<TAMAO><DIRECCION>
EJEMPLOS DE USO
L
T
DB1.DBW0
MW10
//operando genrico
L
T
temperatura.horno
MW10
//operando simblico
AUF DB1
L
DBW0
T
MW10
Acceso a
bit
U E 124
.0
S DB1.D
BX0.0
BLOQUES
DE TIPO FUNCIN
(FC y FB)
CC <ID_FUNCION>
SR
/ER=0
/ER=0
Descripcin
LLamada incondicional a
un bloque
Llamada incondicional a
un bloque
BE
Observaciones
Fin incondicional de
bloque (usuario)
BEA
/ER=0
BEB
RLO=1, /
Fin de bloque si RLO=1
ER=0
No permite paso de
parmetros ni
llamadas a bloques
FB
No permite paso de
parmetros ni
llamadas a bloques
FB
FC1
U X3
Uf
S M1
R X3
U M1
SPBN _001
CALL FC1
U S1
cajaU k
S Etapa_sig
R M1
R M100.0
FC1
_001:
NOP 0
U M1
FP M100.0
S E1
R X10
R X11
R S1
SET
FP M100.0
S E1
R X10
R X11
R S1
U E1
Ug
S X10
R E1
U E1
Ug
S X10
R E1
//
//
CU E S
T
Venta ION
ja
entre s/Desvent
ajas
AyB
UN SMANDO
L
S5T#5s
SE T1
U T1
= SMANDO
Segmento 1 (FC1)
UN SMANDO
BEB
//fin de bloque
UN SPEDIDA
//cambio de estado
= SPEDIDA
Segmento 2 (FC1)
PASO DE
PARMETROS
Nociones generales
OUT
FC1: Matemtica
A
RES
B
C
(A*B)/C
Tipos de parmetros
FC1: Suma
A+B
RES
FC1: Suma
MW10
MW12
Parmetros
(IN, IN-OUT, OUT)
A+B
MW14
FB1: Motor
OUT
SE1
S5T#50s
motor_ON
T1
Bloque de
datos de
instancia
ESTADO
Parmetros
(IN, IN-OUT, OUT)
variables reales
(a rellenar)
Salida
Sum2
GENERAR FUENTES
CTRL+T desde la ventana
de edicin del bloque
COMPILAR FUENTES
CTRL+B desde la ventana
de edicin de fuentes
BIE
A
1.0
FC 106
VALOR de tipo
INT
OB1
U E 100.0
SPBNB _001
CALL "UNSCALE"
IN :=MD50
HI_LIM :=1.000000e+002
LO_LIM :=0.000000e+000
BIPOLAR:=E100.1
RET_VAL:=MW10
OUT :=MW108
_001: U
=
BIE
A
1.0
EJEMPLOS
INTRODUCCIN AL
DISEO DE BLOQUES AWL
FB1
IN
OUT
tiempo
Luz mbar
temporizador
k parpadeos
del mismo
tiempo a nivel
alto y bajo
bit de fin
EJERCICIO
Implemente Control
AMBAR en AWL
contador
STATIC
No aparecen en el
interfaz de llamada
VAR_INPUT
tiempo : S5TIME := S5T#2s //t. intermitencia
tempor : TIMER ;
nrep : INT := 3;
//num. repeticiones
contador : COUNTER
END_VAR
VAR_OUTPUT
bit_de_fin : BOOL ;
//final de
intermitencia
actuador : BOOL ;
//actuador luz
mbar
END_VAR
VAR_STATIC
internal_signal : BOOL ; //generador luz mbar
bit_de_trabajo : BOOL ;
SET
FP #bit_trab
S #int_sig
R #com_sig
R #bit_fin
R #contador
R #actuador
UN #com_sig
L
#tiempo
SE #tempor
U
=
UN #int_sig
ZV #contador
#tempor
#com_sig
Arranque
Seal de mando
Valor contador
UN #int_sig
= #actuador
UN #com_sig
BEB
UN #int_sig
= #int_sig
Valor actuador
L
L
== I
S
R
R
R
FR
#nrep
#contador
#bit_fin
#actuador
#bit_trab
#tempor
#tempor
Evaluacin Fin
FC3
FC2
FC1
FB1
FC2
SET
FP M100.0
S X0
R X1
R X2
0
SE1
SE1
FC1: Motor
MOTOR 1
(50 s / X 1 ) SE1
2
SE1
No configurable
NO se puede invocar una para cada
motor, an cuando no sea necesario
controlar los motores simultneamente
U X0
U SE1F
S X1
R X0
U X1
U T1
UN SE1F
S X2
R X1
U X2
U SE1F
S X1
R X2
U X1
L S5T#50s
SE T1
U SE1F
FR T1
U X1
= MOTOR_1
Bit de trabajo
Prioridad
Bloque FC parametrizado
IN
0
SE1
SE1
SE1
OUT
FC1: Motor
Motor1
S5T#50s
MOTOR 1
T1
Etapa0
(50 s / X 1 ) SE1
CUESTIN
Tipo de
parmetros?
2
SE1
Etapa1
Etapa2
Bit de trabajo
(arranque)
EJE
R
Prog CICIO
ram
aci
n AW
MOTOR 1
SE1
(50 s / X 1 ) SE1
2
SE1
SET
FP #bdt_trm
S #X0
R #X1
R #X2
R #actuador
U
U
S
R
Seg 1
U #sensor
FR #tempor
Seg 5
#X0
#sensor
#X1
#X0
U #X1
L #tiempo
SE #tempor
Seg 2
U
U
S
R
#X2
#sensor
#X1
#X2
Seg 3
U
=
Seg 6
#X1
#actuador
Seg 7
FC1
U
U
UN
S
R
#X1
#tempor
#sensor
#X2
#X1
Seg 4
FUNCTION motor
VAR_INPUT
sensor : BOOL ;
tiempo : S5TIME ;
tempor : TIMER ;
END_VAR
VAR_OUTPUT
actuador : BOOL;
END_VAR
VAR_IN_OUT
X0 : BOOL ;
X1 : BOOL
X2 : BOOL ;
bdt_trm : BOOL ;
END_VAR
0
SE1
SE1
MOTOR 1
(50s / X 1 ) SE1
2
SE1
SE 2
SE 2
MOTOR 2
(50s / X 1 ) SE 2
2
SE 2
Bloque FB parametrizado
IN
0
Motor1
SE1
SE1
SE1
OUT
FB1: Motor
S5T#50s
MOTOR 1
T1
VAR_STATIC
Etapa0
Etapa1
Etapa2
(50 s / X 1 ) SE1
IN-OUT
arranque
Bit de trabajo
END_VAR
SE1
EJE
R
Prog CICIO
ram
aci
n AW
CUESTI
ON
Podra
se
Y m_pu r m_flanco de tip
o TEMP
lso?
U #se1
FP #m_flanco
= #m_pulso
SE1
SE1
MOTOR 1
(50s / X 1 ) SE1
2
SE1
Flanco sensor
(FB1)
SET
FP #arranque_0
S #X0
R #X1
R #X2
R #motor_ON
Arranque (FB1)
Seg. 1 (OB1)
Seg. 2 (OB1)
EJERCICIO
Implemente el control de la figura a partir
de la funcin FB1 autocontenida del
apartado anterior y de los segmentos de
invocacin desde OB1 de dicha funcin
que aparecen a la izquierda
Nota: Utilice una etapa con semntica
control de motores activado
Solucin parcial
Seg. 1 (OB1)
Seg. 2 (OB1)
U
U
UN
UN
R
R
S
R
X0
PON
SE1
SE2
M2.0
//arr-m1
M2.1
//arr-m2
X_marcha
X0
X0X1, X2(OB1)
U X_marcha
U POFF
UN A 124.0
//motor1 parado
UN A 124.1
//motor2 parado
S X0
R X_marcha
Seg. Parada(OB1)
U X1
SPBN _001:
CALL motor, DB1
se1:= E 124.0
tiempo:=
tempor:= T1
motor_ON:= A 124.0
arranque_0:= M 2.0
//
U X2
SPBN _002:
CALL motor, DB2
se1:= E 124.1
tiempo:=
tempor:= T2
motor_ON:= A 124.1
arranque_0:= M 2.1
//
_001: NOP 0
_002: NOP 0
EJERCICIO
Modifique la implementacin del ejercicio
anterior considerando la invocacin por
cajas que aparece a la izquierda
Solucin parcial
U
U
UN
UN
S
S
R
R
R
X0
PON
SE1
SE2
X1
X2
M2.0
M2.1
X0
//arr-m1
//arr-m2
U X1
SPBN _001:
CALL motor, DB1
se1:= E 124.0
tiempo:=
tempor:= T1
motor_ON:= A 124.0
arranque_0:= M 2.0
//salida
U POFF
UN A 124.0
UN A 124.1
S X0
R X1
U X1
SPBN _001:
CALL motor, DB1
se1:= E 124.0
tiempo:=
tempor:= T1
motor_ON:= A 124.0
arranque_0:= M 2.0
//
U X2
SPBN _002:
CALL motor, DB2
se1:= E 124.1
tiempo:=
tempor:= T2
motor_ON:= A 124.1
arranque_0:= M 2.1
//
_001: NOP 0
_002: NOP 0
_001: NOP 0
X0X1, X2(OB1)
CUESTIN
Cmo se podra mejorar el diseo del interfaz de
FB1 (control de motores) para que no se tenga
que emplear los actuadores A 124.0 y A 124.1
para razonar en la ecuacin de paso al reposo?
FIN