Professional Documents
Culture Documents
PROGRAMACIÓN S-7
Programación S7 2
CONSTANTES / FORMATO
Número Tamaño Formato Rango Ejemplo
(bits)
12 16 ±2 15 L 12
100000 32 L# ± 231 L L#10000
0,0053 32 [±1.17⋅10−38, ±3.4⋅10+38] L 5.3E-3
AF 8 B#16#
28 L B#16#AF
Binario 16 2# L 2#0010101…
216
Binario 32 2# L 2#100101000101…
232
5m3seg 16 S5T# 9990 seg. L S5T# 5M3S
= Booleano Asignación
NOT RLO
CLR RLO
SET RLO
E1.0 A1.0
E1.0 A1.0
Expresión NEG A1.0 = Expresión ⋅ ( E1.0 ↓)
Mflanco
A1.0
M10.0 A1.0 = Expresión
Expresión # NOT
M 10.0 = Expresión
Bloque conector
Programación S7 6
EJEMPLO
U E1.0 U E1.0
CONTACTOS (KOP) FP M100.0 FP M100.0
= M100.6 = M100.6
E1.0 M100.0 E1.3 A1.6 U M100.6 U E1.1
U E1.3 FN M100.1
P
O( = M100.7
E1.1 M100.1 E1.2 U E1.1
N FN M100.1 U M100.6
= M100.7 U E1.3
U M100.7 O
UN E1.2 U M100.7
) UN E1.2
= A1.6 = A1.6
Programación S7 7
PALABRA DE ESTADO
RB A1 A0 OV OS OR STA RLO /ER
BIE RB=1
OS OS=1
OV OV=1
Programación S7 9
L 5
0 0 0 0 0 0 1 0 0
L 0 0 0 0 0 0 0 1 0 0
/I 0 1 1 1 1 0 1 0 0
U UO 0 1 1 1 1 0 1 1 1
= A1.0 0 1 1 1 1 0 1 1 0
Programación S7 10
MB 0 1 1 1 1 1 1 1 1
MW 0
MB 1 0 0 0 0 0 0 0 0
MD 0
MW 1
MB 2 1 1 1 1 1 1 1 1
MD 1
MB 3 0 0 0 0 0 0 0 0
MB 4
L DW#16#FF00FF00
T MD 0
Programación S7 11
• Otras
Operaciones de Desplazamiento y Rotación
Operaciones de conversión
Operaciones de redondeo etc.
Programación S7 12
CARGA Y TRANSFERENCIA
OPERADORES
• OPERADOR CARGA: L
• OPERADOR TRANSFERENCIA: T
L EW10
EW10
ACU1 ACU2
MW10
T MW10
32 bits
No modifica
ACU1
Programación S7 13
OPERACIONES ARITMÉTICAS
DOS OPERANDOS IMPLÍCITOS
A1, A0
OPERACIONES ARITMÉTICAS
REGLAS GENERALES BITS DE ESTADO A1 y A0
RELACIÓN CON 0
VALOR ACU1 EN
• A1=0 Y A0=0 : ACU1 == 0
• A1=1 Y A0=0 sin overflow : ACU1 > 0
• A1=0 Y A0= 1 sin overflow : ACU1 <0
OVERFLOW
• A0=1 Y OV=1 : Minorado el valor mínimo
• A1=1 Y A0=1: División por cero,…
Programación S7 15
EJEMPLOS
OPERACIONES ARITMÉTICAS
SUMA CTE ENTERA (ACU1) MULTIPLICACIÓN 16 bits
L 5
L 1000
ACU1=21, ACU2=5
L 8 ACU1=100000 A1=1,
L 100
A1=1, A0=0 A0=0, OV=1, OS=1
+13
*I
SUMA 16 bits
MULTIPLICACIÓN 16 bits
L -8
ACU1=-2 L 1000
L 6 ACU1=100000
A1=0, A0=1 L 100
+I A1=1, A0=0, OV=1, OS=1
*I
L 200
ACU1=1000
L 5
DIVISIÓN 16 bits A1=1, A0=0, OV=0, OS=1
*I
L 2
ACU1=0x20000
L 6
A1=1, A0=0
/I
Programación S7 16
OPERACIONES ARITMÉTICAS
UN OPERANDO IMPLÍCITO
L 9.0E10
SQR
UN OV
OPERACIONES DE COMPARACIÓN
A1 A0
EJEMPLOS
OPERACIONES COMPARACIÓN
L 5
Bits A1 y A0 de la palabra de ACU1=8, ACU2=5
L 8
estado A1=0, A0=1, RLO=0
>=I
ACU2 ACU1
L 5
ACU1=8, ACU2=5
L 8
A1=0, A0=1, RLO=1
A1 A0 <=I
Los valores de A1 y A0 no
dependen de la operación de
comparación en concreto, L 9.7E+6
sino del tamaño relativo ACU1=2, ACU2=9.7E+6
L 2
del valor del ACU2 y del <I
A1=1, A0=0, OV=0, OS=0
ACU1 entre sí.
Programación S7 19
EJEMPLOS (II)
OPERACIONES COMPARACIÓN
L 5 L 5
L 8
L 8 A1.0 = 1 A1.1 = 1
<I U >=0
(5<8) (A1=0,A0=0)
= A 1.0 = A 1.1
L EW0
L EW2
<I
A1.0 = 1 si EW0 < EW2 (con signo)
= A 1.0
A1.1 = 1 si EW0 == EW2
U ==0
= A1.1
Programación S7 20
EJEMPLOS (III)
OB1 OB1
L MW10
SIN ARGUMENTOS EXPLÍCITOS L MW12
UW
T MW14
Programación S7 23
OPERADORES
SLW SRW SLD SRD
RLD RRD
NEGI NEGD (sin arg.)
0.7 0.0
Obtener la palabra con un
solo bit a 1 en la posición 1 1 1 1 0 0 0 0
del primer bit a 1 de una OB1
palabra cualquiera
L W#16#F0F0
SLW 3
1 0 0 0 0 0 0 0
Programación S7 24
CONVERSIÓN DE TIPOS
UN OPERANDO IMPLÍCITO
L 9
T MW10
L MW10
BTI ITD DTB BTD DTR ITD ITD
T MD 20
DTR
T MD 30
RND RND+ RND- TRUNC SQRT
T MD40
TRUNC
T MW 50
Programación S7 25
EJEMPLOS-ESCALABILIDAD
1-DETECCIÓN SIMULTÁNEA DE FLANCOS
0 1 30 31
P0 ↑ P1 ↑ P30 ↑ P31 ↑
3-ARRANQUE EN FRIO
Programación S7 26
EJEMPLOS-ESCALABILIDAD
1-FLANCO DE 32 VARIABLES
L MD 100 L MD 100
L ED 10 L ED 10
XOD XOD
L ED 10 L MD 100
UD UD
T MD 10 T MD 10
L ED 10 L ED 10
Memoria
T MD 100 T MD 100
Programación S7 27
EJEMPLOS-ESCALABILIDAD
T MD 1
MD 1 R E0
NOAC: NOP 0
DIVERGENCIA ‘AND’
MD 1 Transición a E33
L MD 1
L DW#16#FFFFFFFF
1 2 31 32 ==D
SPBN NOAC
U S1
= E33
S1
L DW#16#0
Activación
33 T MD1
NOAC: NOP 0
S2
34 //Retención
U E33
EMPLEAR ECUACIÓN DE RETENCIÓN UN E34
EN LA CODIFICACIÓN = E33
Retención
//…
Programación S7 29
EJEMPLOS-ESCALABILIDAD
3-ARRANQUE / REARME
EN FRIO EN CALIENTE
M 0.0
0 OB100 OB100 OB102 OB102
UN M1.0 SET L MD 1 L MD 1
S M0.0 L DW#16#0 L DW#16#0
UN M1.1
1 R Act.1 ==D ==D
UN M1.2 R Act.2 S M0.0 SPBN _001
//… R Act.1
//…
R Act.N R Act.2 S M0.0
S M0.0 //… L DW#16#0
R Act.N L AD1
R Act.1
R Act.2 _001:NOP 0
OB100
//…
//…
SET
32 R Act.N S M0.0
L DW#16#0
T MD1
0
MD1
Programación S7 30
INSTRUCCIONES DE CONTROL
INDICE
• CONTROL DE BLOQUES
CALL, UC, CC, BEA, BEB
• INCONDICIONAL
SPA : Salto incondicional (absoluto)
LOOP : Bucle FOR
SPL : Switch-case
• CONDICIONAL
Operaciones lógicas / comparación (RLO)
Operaciones aritméticas (A1, A0)
Errores (OV / OS / A1=1y A0=1)
Programación S7 33
ACU1 y salta a T MW 20
L MW 10
la meta NEXT,
LOOP NEXT
si el ACU1-L >0
MW
MW 20
20 == ?120
Programación S7 34
FIN: CLR
Programación S7 35
SALTO CONDICIONAL
EJEMPLOS
SPB: Switch-Case IMPLEMENTACION-AWL
Divergencia Divergencia
OR OR
0 Pesar
L EW10 L EW10
L 30 L 30
P>=30Kg P<30Kg >=I >=I
= Maux SPB _MAY
1 2
//Act Etapa1 //Act. Etapa2
S M1.1 S M1.2
R M1.0 R M1.0
//Act Etapa2 SPA CONT
U M1.0 //Act. Etapa1
EW10 Peso (Kg)
UN Maux _MAY: S M1.1
M1.0 Etapa 0
S M1.2 R M1.0
M1.1 Etapa 1 R M1.0 _CONT: NOP 0
M1.2 Etapa 2 //...
Programación S7 37
EJEMPLO (II)
SPB: Switch-Case BLOQUE
COMPARADOR
L EW 0 M1.0
EW 0 EW 0 = EW 2
L EW 2
EW 0 > EW 2 M1.1
==I EW 2
EW 0 < EW 2 M1.2
SPB _IGU
U >0
SPB _MAY
U <0
SPB _MEN
EJERCICIO
_IGU: = M1.0
U E1.0
SPA FIN EW0 = EW2
U(
_MAY: = M1.1 L 10
SPA FIN EW0 > EW2 L 12
SALTO CONDICIONAL
DEPENDENCIA BITS: A1,A0 (Op. Aritméticas / Comparación)
EJEMPLO (III)
SPB: Switch-Case
BLOQUE
L EW 0 COMPARADOR
L EW 2 M1.0
EW 0 EW 0 = EW 2
==I
EW 0 > EW 2 M1.1
SPB _IGU EW 2
EW 0 < EW 2 M1.2
SPP _MAY
SPM _MEN
_IGU: = M1.0
EW0 = EW2
SPA FIN
_MAY: = M1.1
EW0 > EW2
SPA FIN
_MEN: = M1.2 EW0 < EW2
FIN: NOP 0
Programación S7 40
SALTO CONDICIONAL
GESTIÓN ERRORES
EJEMPLOS
GESTIÓN DE ERRORES
FC-1
SPS SGTE //Borra bit OS inicio bloque
SGTE: L MW 12
L MW 14
*I
L MW 16
/I
SPS OVER //Overflow (Borra Bit OS)
SPP _>0 //Resultado >0
SPA _COM
OVER: NOP 0
... //Tratamiento Overflow
SPA _COM
_>0: NOP 0
... //Código relativo (>0)
_COM: NOP 0
... //Programa común
Programación S7 42
SPO x SPU x
SPS OS=0
Programación S7 43
FCX FBX
FBX
DBX FCX
Accesible por
cualquier bloque
OB_X
DBY
(global)
Programación S7 44
E EO
(500 * 600)
Implementación Uso de
caja bit de
error RB
OB1 FC1
Programación S7 46
EJEMPLO
GESTIÓN DE ERROR MEDIANTE EL BIT RB
Bloque invocante
U M100.0
SPBNB _001
CALL FC1 FC1
_001: U BIE L EW 0
= M100.1
L EW 2
*I
SPO _ERR
BLOQUE T MW 1
BEA
MULTIPLICADOR
_ERR: CLR
M 100.0 M 100.1 SAVE
E EO
EW 0
EW 0 * EW 2 MW 1
EW 2
Programación S7 47
EJEMPLO (II)
GESTIÓN DE ERROR MEDANTE EL BIT RB
U M100.0
SPBNB _001
¿ERROR?
CALL FC1
_001: U BIE
M100.0=1 y M100.1=0
SPBNB _002
CALL FC2
_002: U BIE
= M100.1
EW 0 * EW 2 MW 1 EW 4 * EW 6 MW 3
EW 2 EW 6
Programación S7 48
TEMPORIZADORES
BLOQUES KOP TX (0-XXX)
<TIPO>
Habilitación
FR
Señal de disparo Binario natural
S DU
[S5T#] DE BCD
Habilitación (FR) TW
En consecuencia redispara
el temporizador si se Comparación de
encuentra la señal de tiempos intermedios
disparo activada por
nivel.
TEMPORIZADORES (II) U E0
U FlancoSE1
IMPLEMENTACIÓN AWL T1 S E1
R E0
E 2.0 <SI>
FR
0 U E1
E 2.1 L S5T#50s
S DUAL MW10
SE1 ↑ SE T1
DEZ MW12
S5T#10s
TW U SE1
1 MOTOR 1 FR T1
SE1 ↑
E 2.2
R Q A 4.0
U E1
(T1 / X 1 / 50 s ) ⋅ SE1 ↑ U T1
S E2
2
U E 2.0 R E1
FR T1 //Habilitar T1
SE1 ↑ U E 2.1 //…
L S5T#10s // ACU1_L = 10 segundos
1
SI T1
U E 2.2
R T1 //Pone T1 a 0
U T1 //Consulta el estado T1.
¿PRIORIDAD T1 o = A 4.0
Flanco de SE1? L T1 //ACU1_L= valor de T1 (binario)
T MW10
LC T1 // ACU1_L= valor de T1 (BCD)
= MW12
Programación S7 50
SOLUCION
0 Ecuación
OPCIÓN
OPCIÓN A
Activación Etapa 2 OPCIÓNBC
P1 CORRECTO?
CORRECTO?
U E1 U E1
SPBN _002 UU EE
12
1 SPBN _002
L S5T#10s SPBN
SPBN _002
_003
L S5T#10s
L S5T#10s
SE T1 SECLR
T1
T1/E1/10s SE
SET1T1
U E1 U U
E1P2
2 US E1
U T1 U T1E1
U T1
S E2 S R
E2E2
P2 R E1 S E2
R E1
_003: RRNOPE1
T1 0
_002: NOP 0 _002: NOP 0
//... FR T1
_002: NOP 0
El temporizador T1 no funciona a
partir de la segunda activación de la
etapa 1. Hay que ‘mostrarle el cero’
Programación S7 51
CONTADORES
BLOQUES KOP
ZX (0-XXX) U Habilitación
FR Z1 //Habilitar Z1
<Tipo> U Carga
L C#3 // Carga Z1 con 3 unidades
Suma S Z1
ZV U Reset
Salida Binario R Z1 //Poner Z1 a 0
Resta natural U Z1
ZR DU = A 4.0 //A4.0=Q
U Suma
DE ZV Z1 //Incrementa en una unidad
Señal de carga Salida BCD U Resta
ZR Z1 //Decrementa en una unidad
S L Z1 //ACU1_L= DU
T MW10
[C#] Q LC Z1 //ACU1_L= DE
ZW Salida lógica T MW12
( ==0 falso )
Habilitación
FR
Reset
R
No aparece en
KOP de Siemens
PASO DE PARÁMETROS
BLOQUE SUMADOR: FUNCIÓN
Se usa # para
indicar parámetro
Programación S7 53
PASO DE PARÁMETROS
BLOQUE OPERACION NUMÉRICA: [(A+B)/C]-D
FC1
A IN
B TEMP
(A+B/C)-D OUT
RES
C
D FC1
L #A
L #B
+I
L #C
/I //División entera
T #Div
L #Div
L #D
-I
T #RES
Programación S7 54
PASO DE PARÁMETROS
IMPLEMENTACIÓN AWL
2
Etapa0
SE1 ↑ Etapa1
1
Etapa2
Programación S7 55
PASO DE PARÁMETROS
BLOQUE SUMADOR: BLOQUE INVOCANTE
Completar la gestión
del Enable Out