operaciones de bloques de bits pablo san segundo c-206 [email protected]
TRANSCRIPT
Índice Arquitectura de programación
Palabra de estado (State Register) Acumuladores Arquitectura de bloques (AWL)
Operadores de más de un bit Carga y Transferencia Operaciones de comparación (>, <, <>, >=,…) Operaciones aritméticas (+, -, *, /, SQR, SQRT) Máscaras (Y, OR, XOR) Otras
Palabra de estado (SR)RB A1 A0 OV OS OR STA RLO /ER
BIT Nombre Significado
0 /ER Primera consulta a nivel bajo
1 RLO Resultado lógico
2 STA Valor del bit direccionado
3 OR Combinación Y = 1
4 OS Overflow memorizado (stored)
5 OV Overflow última operación
6 A0 Res. Comparación / Artimética / Op. lógicas / Op. Shift+Rot / Errores
7 A1 Res. Comparación / Artimética / Op. lógicas / Op. Shift+Rot / Errores
8 RB Resultado Binario
9-15 x Sin uso
Consulta de biestables de la palabra de estado
Consulta Devuelve TRUE si se cumple
==0 A1=0 AND A0=0
<>0 A1 distinto de A0
>0 A1=1 AND A0=0
<0 A1=0 AND A0=1
>=0 ==0 OR >0
<=0 ==0 OR <0
UO A1=1 AND A0=1 (Error en tiempo de ejecución: p.ej. división por cero)
BIE RB=1
OS OS=1
OV OV=1
U ==0S M 1.0
U BIES M1.1
OB1
Acumuladores Registros de la ALU de 32 bits Número variable:
Típicamente 2 en gamas medias. En gamas altas (p. ej. S7-400) puede haber hasta 4
Encargados de realizar las operaciones de mas de 1 bit
Arquitectura de bloques
Sis
tem
a O
pera
tivo
OB
1: C
iclo
prin
cipa
l
OBX
FCX
CALL<FCX>
CC
UC CALL<FBX, DBX>
FCX
DBX
FBX
Bloque de datos de instancia
A todos los bloques
DBX
Bloque de datos global
DBX
FBX
Bloque de datos de instancia
Índice Arquitectura de programación
Palabra de estado (State Register) Acumuladores Arquitectura de bloques (AWL)
Operadores de más de un bit Carga y Transferencia Operaciones de comparación (>, <, <>, >=,…) Operaciones aritméticas (+, -, *, /, SQR, SQRT) Máscaras (Y, OR, XOR) Otras
Operadores Carga (L) y Transferencia (T)
EW10
MW10
ACU1 ACU2
Acumuladores (32 bits)
L EW10
1) ACU2=ACU1
2) ACU1=EW10
T MW10: EW10 = ACU1
ACU2 = ACU1ACU1 = EW10
EW10 = ACU1
Operaciones de comparación
ACU2 ACU1<OPERADOR> RLO
A1 A0
Operador Tamaño(bits) Comentario
(==,<>,>,<,>=,<=) I 16
ACU-1 y ACU-2 no
varían
(==,<>,>,<,>=,<=) D
32
(==,<>,>,<,>=,<=) R
32
Importante: En el caso de operaciones de comparación, los bits de la palabra de estado A1 y A0 se actualizan de acuerdo con el tamaño relativo de los argumentos y no dependen del resultado lógico de la comparación.
Ejemplos (1/2)
L 5
L 8
>=I
ACU1=8, ACU2=5
A1=0, A0=1, RLO=0
L 5
L 8
<=I
L 9.7E+6
L 2
<I
ACU1=2, ACU2=9.7E+6
A1=1, A0=0, OV=0, OS=0
ACU1=8, ACU2=5
A1=0, A0=1, RLO=1
L 5
L 8
<I
= M 1.0
L EW0
L EW2
<I
= A 1.0
U ==0
= A1.1
A1.0 = 1 si EW0 < EW2 (con signo)
A1.1 = 1 si EW0 == EW2
M1.0=1
Control de flujo: SPA, SPB y SPBN SPA <ETIQUETA>
Salto incondicional a la instrucción con ETIQUETA Equivale a goto ETIQUETA
SPB <ETIQUETA> Salto a la instrucción con ETIQUETA
si el RLO = 1 Equivale a if (RLO==1) then goto ETIQUETA
SPBN <ETIQUETA> Salto a la instrucción con ETIQUETA
si el RLO =0 Equivale a if (RLO == 0) then goto ETIQUETA
¿RLO=0?yes
no
ETIQUETA
¿RLO=1?yes
no
ETIQUETA
Ejemplos (2/2)
1
2 C=C+1
C>=3
C<3
15
S1
S0
//…
U X2
ZV Z1
// Ec. activación
L Z1
L 3
>=I
U X2
SPB _MA
U X2
S X1
R X2
SPA FIN
_MA: NOP 0
U X2
S X15
R X2
FIN: NOP 0
OB1-A
//…
U X2
ZV Z1
// Ec. activación
L Z1
L 3
>=I
U X2
S X15
R X2
U <0
U X2
S X1
R X2
//…
OB1-B
Primera consulta (/ER=0)
Salto condicionado a que RLO = 1
Salto incondicional
Operaciones aritméticas (1/3) Dos operandos implícitos en acumuladores
ACU2 ACU1<OPERADOR> ACU1
A1, A0, OV, OS
Operador Tamaño(bits) Comentario
(+,-,/,*) I 16 /I: Cociente ACU1-L, Resto ACU1-H
(+,-,/,*) D 32 /D: Cociente ACU1
(+,-,/,*) R 32
A1: “resultado mayor que cero”A0: “resultado menor que cero”OV: “desbordamiento” (A1 y A0 complementan el tipo)OS: “desbordamiento memorizado” (al menos un desbordamiento)
Reglas generales para biestables A0 y A1
Operaciones aritméticas (2/3)
OV
ER
FL
OW
VA
LO
R A
CU
1 E
N
RE
LA
CIÓ
N C
ON
0
A1=0 y A0=0 : ACU1 = 0A1=1 y A0=0 sin desbordamiento: ACU1 > 0A1=0 y A0=1 sin desbordamiento : ACU1 <0
A1=1 y OV=1 : desbordamiento por arriba de ACU1 A0=1 y OV=1 : desbordamiento por debajo de ACU1A1=1 y A1=1 : excepción división por cero, tipado incorrecto etc.
Ejemplos
L -8L 6+I //ACU1-L=-2, A1=0, A0=1 (sin desbordamiento)
L 2L 6/I //ACU1-L=0, ACU1-H=2, A1=1, A0=0 (sin desbordamiento)
L 1000L 100*I //ACU1=100000, OV=1, OS=1, A1=1, A0=0
L 1000L 100*I //OS=1, OV=1L 200L 5*I //ACU1=1000, OV=0, OS=1, A1=1, A0=0
Operaciones aritméticas (3/3) Un único operando implícito en ACU1
ACU1 <OPERADOR> ACU1
ABS SQR SQRT EXP LN SIN COS TAN ASIN ACOS ATAN…
REAL
L 9.0E10
SQR
UN OV
SPB OK
SPA FIN
OK: T MD10
FIN: NOP 0
EJERCICIO: Interprete cada instrucción del código siguiente
REAL
Recapitulación: biestables A1 y A0Consulta TRUE
(RLO = 1)Tras Op. Aritmética Tras Op.
Comparación
==0 A1=0 AND A0=0 ACU1=0 ACU2 == ACU1
<>0 A1 distinto de A0 ACU1<>0 ACU2 <> ACU1
>0 A1=1 AND A0=0 ACU1>0 ACU2 > ACU1
<0 A1=0 AND A0=1 ACU1<0 ACU2 < ACU1
>=0 ==0 OR >0 ACU1>=0 ACU2 >= ACU1
<=0 ==0 OR <0 ACU1<=0 ACU2 <= ACU1
UO A1=1 AND A0=1 (p. ej. División por cero)
BIE RB=1
OS OS=1
OV OV=1
A1, A0ACU1 A0ACU1, A1ACU2
Operaciones con conjuntos de var. lógicas
Operador Tamaño(bits) Comentario
UW 16 Y lógica entre acumuladores (L)
OW 16 O lógica entre acumuladores (L)
XOW 16 XOR lógica entre acumuladores (L)
UD 32 Y lógica entre acumuladores
OD 32 O lógica entre acumuladores
XOD 32 XOR lógica entre acumuladores
ACU2 ACU1OPERADOR ACU1
L MW10L MW12UWT MW14
OB1
DOS ARGUMENOS IMPLÍCITOS: ACU1 y ACU2
Ejemplo: flanco simultáneo de 32 variables
ED10 Entradas
MD100 Marcas de flanco
MD10 Marcas de pulsoFlanco
positivo
L MD 100
L ED 10
XOD
L MD 100
UD
T MD 10
L ED 10
T MD 100
¿Flanco negativo?
L MD 100
L ED 10
XOD
L ED 10
UD
T MD 10
L ED 10
T MD 100Memoria
ACU1: valores distintos entre marcas de flanco y entradas
ACU1: entradas con valor lógico 1 distintas de marcas de flanco
Aplicación al grafcet (1/2)
0
1 2 31 32
U “X0”
U “S1”
L DW#16#FFFFFFFF
T MD 1
R “X0”
S1
¿Ecuación de activación?
MD 1
U “X0”
U “S1”
SPBN NOAC
//Activación
L DW#16#FFFFFFFF
T MD 1
R “X0”
NOAC: NOP 0
Activación simultánea de etapas
//Desactivación simultánea de 32 etapas
L DW#16#0
T ETAPAS_CODIFICADAS_EN BITS_CONSECUTIVOS
Desactivación simultánea de etapas
Aplicación al grafcet (2/2)
OB100
SETS M0.0R Act.1R Act.2//…R Act.N
0
1
32
0
MD1
M 0.0
UN M1.0
UN M1.1
UN M1.2
//…
S M0.0
R Act.1
R Act.2
//…
R Act.N
OB100
ARRANQUES (DESDE CARCASA)
OB100
SETS M0.0L DW#16#0T MD1
OB102
L MD 1L DW#16#0==DS M0.0R Act.1R Act.2//…R Act.N
ARRANQUES(TRAS DESCONEXIÓN)
OB102
L MD 1L DW#16#0==DSPBN _001
S M0.0L DW#16#0T MD1
_001:NOP 0//…
Arranque / Rearme