operaciones de bloques de bits pablo san segundo c-206 [email protected]
TRANSCRIPT
![Page 2: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/2.jpg)
Í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
![Page 3: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/3.jpg)
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
![Page 4: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/4.jpg)
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
![Page 5: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/5.jpg)
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
![Page 6: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/6.jpg)
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
![Page 7: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/7.jpg)
Í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
![Page 8: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/8.jpg)
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
![Page 9: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/9.jpg)
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.
![Page 10: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/10.jpg)
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
![Page 11: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/11.jpg)
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
![Page 12: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/12.jpg)
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
![Page 13: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/13.jpg)
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)
![Page 14: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/14.jpg)
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.
![Page 15: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/15.jpg)
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
![Page 16: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/16.jpg)
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
![Page 17: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/17.jpg)
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
![Page 18: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/18.jpg)
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
![Page 19: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/19.jpg)
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
![Page 20: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/20.jpg)
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
![Page 21: Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es](https://reader035.vdocuments.co/reader035/viewer/2022062519/5665b4241a28abb57c8f7828/html5/thumbnails/21.jpg)
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