Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EW0 IN1
EW2 IN2
T4
E0.7 S_ODT A8.5
S Q
S5T#35s TV BI MW0
E0.5
R BCD AW12
Contenido Página
Signo (+) 2 9 6
BCD W#16#296
0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0
Números
Positivos 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0
ENTERO
+296 28 25 23
= = =
256 + 32 + 8 = 296
Signo (-) 4 1 3
BCD W#16#F413
1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1
Números
Negativos 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1
ENTERO
-413 28 27 24 23 22
= = = = =
256+ 128 + 16+8+ 4 = 412
- (412 + 1) = - 413
Código BCD Cada dígito de un número decimal es codificado con 4 posicines de bit. Se usan 4
bits porque el dígito más alto en esta representación, 9, necesita 4 bits para ser
codificado en binario (1001).
Los dígitos decimales del 0 al 9 se representan en código BCD de igual forma que
los números binarios del 0 al 9.
DW#16#296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DINT
+296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0
28 25 23
= = =
Entero (32 Bit) = 256 + 32 + 8 = 296
0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
27 26 25 24 23 22 21 20 2-1 2-2 2-3 2-4 ..... 2-23
DINT Los enteros de 32 bits con signo son denominados también ”doble enteros”
(double integers) o ”enteros largos” (long integers).
Cubren el rango desde L# -2147483648 a L#+2147483647.
MOVE MOVE
L +5
EN ENO EN OUT MB5
T MB5
MOVE (LAD/FBD) Si la entrada EN está activa, el valor en la entrada “IN” se copia a la dirección de
salida “OUT”.
“ENO” tiene el mismo estado de señal “EN”.
Contenido de Contenido de
ACU1 ACU2
Programa
X X X X X X X X Y Y Y Y Y Y Y Y
:
:
L W#16#CAFE 0 0 0 0 C
0 A
0 F
0 E
0 X X X X X X X X
L W#16#AFFE 0 0 0 0 A
0 F
0 F
0 E
0 0 0 0 0 C A F E
:
:
:
ACU2 Cuando se ejecuta una instrucción de Carga, el contenido anterior del ACU 1 es
desplazado al ACU 2 y ACU 1 se vacía (reset a “0”) antes de escribir el nuevo
valor en el ACU 1.
L MB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MB0
31 23 15 7 0
Carga
L MW 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MB0 MB1
31 23 15 7 0
T AD 4
AD 4
Transfer. T AW 4
AW 4
T AB 4
AB 4
General Los acumuladores son memorias auxiliares de la CPU para el intercambio de datos
entre varias direcciones y para operaciones matemáticas y de comparación.
El S7-300 tiene dos acumuladores de 32 bits cada uno y el S7-400 tiene 4
acumuladors de 32 bits cada uno.
Carga La instrucción de carga, carga el contenido del byte, palabra o doble palabra
especificado en el ACU 1.
RLO En LAD y FBD se puede usar la entrada Enable (EN) de la caja MOVE para
efectuar operaciones Carga y Transferencia dependientes del RLO.
En STL las instrucciones Carga y Transferencia se ejecutan siempre,
independientemente del RLO, pero es posible implementar cargas y transferencias
dependientes del RLO haciendo uso de saltos condicionales para saltar las
instrucciones Carga / Transferencia.
U E0.4
C5 Z5
ZV Z5
S_CUD ZAEHLER
I0.4 Q 8.3 U E0.5
CU Q
Q E0.4 ZV ZR Z5
U E0.3
I0.5
L C#20
CD E0.5 ZR
S Z5
I0.3 U E0.7
S E0.3 S DUAL MW 4 R Z5
L Z5
C#20 PV CV MW 4 C#20 ZW DEZ AW 12 T MW4
A 8.3 LC Z5
I0.7
R CV_B QW 12 E0.7 R Q
Q = T AW12
U Z5
= A8.3
Valor de Cuenta Se reserva una palabra de 16 bits para cada contador en la memoria de datos del
sistema. Éstas se usan para almacenar el valor de cuenta del contador (0...999)
en binario.
Cuenta Ascendente Cuando el RLO en la entrada ”ZV" cambia de "0" a "1" el valor de cuenta actual
del contador se incrementa en una unidad (límite superior = 999).
Count Descendente Cuando el RLO en la entrada ”ZR" cambia de "0" a "1" el valor de cuenta actual
del contador se decrementa en una unidad (límite inferior = 0).
Set del Contador Cuando el RLO en la entrada "S" cambia de "0" a "1" el contador es inicializado
con el valor de la entrada ”ZW".
Reset del Contador Cuando el RLO = 1 el contador es puesto a cero. Si la condición de Reset se
mantiene, el contador no puede ser inicializado y la cuenta no es posible.
DUAL / DEZ El valor de cuenta puede cargarse en el acumulador como número binario o como
BCD y ser transferido desde allí a otras direcciones.
CU(ZV)
CD(ZR)
5
4
3
Cuenta
2
1
0
Notas Si el contador alcanza el valor “999“ durante la cuenta ascendente, o el valor “0“
durante la cuenta descendente, la cuenta permanece en esos valores incluso en
el caso de recibirse pulsos de cuenta adicionales.
Segm. 1: Z5
E0.0 SZ
I0.0 C5
U E0.0
SC L C#20
C#20 CV
C#20 S Z5
Segm. 2:
Z5
I 0.1 C5
E0.1 ZV U E0.1
CU
ZV Z5
Segm. 3:
I0.2 C5 Z5
U E0.2
CD E0.2 ZR ZR Z5
Segm. 4:
C5 Q 4.0 A 4.0
U Z5
Z5 = = A 4.0
Instrucciones de Bit Todas las instrucciones de contaje pueden operar con instrucciones simples de
bit. Las similitudes y diferencias entre este método y las funciones de contaje
vistas hasta ahora son las siguientes:
• Similitudes:
- Condiciones de Set en la entrada "SZ”.
- Especificación del valor de cuenta.
- Cambio del RLO en la entrada ”ZV"
- Cambio del RLO en la entrada ”ZR"
• Diferencias:
- No es posible comprobar el valor de cuenta actual.
(no existen salidas DUAL y DEZ).
- No hay salida binaria Q en la representación gráfica.
Nota También se pueden implementar contadores que cumplan la norma IEC en STEP
7.
El uso de los bloques de función de sistema para la implementación de
contadores IEC se trata en el curso de programación avanzada.
DI DO A 8....
A 4....
E0.0 Sistema_ON .0 Nº de objetos ACTUAL
E0.1 Sistema_OFF Sistema .1
E0.2 Motor_DCHA MANUAL .2
E0.3 Motor_IZDA AUTO .3 V
AI1 AI2
V
Tarea • Los objetos transportados en modo AUTO deberán ser contados tan pronto
como hayan atravesado la barrera óptica.
• El número de objetos transportados (número de objetos REAL) se deberá
visualizar en el display digital BCD.
• El contador se debe resetear cuando el contador esté desconectado (A 8.1 /
4.1 = ´0).
T4 T4
E0.7 S_EVERZ Q8.5 S_EVERZ U E0.7
S Q E0.7 S DUAL MW0 L S5T#35s
S5T#35s TW DUAL MW0 S5T#35s AW12
SE T4
TW DEZ
E0.5 A8.5 U E0.5
R DEZ AW12 E0.5 R Q = R T4
L T4
T MW0
RLO en S
LC T4
RLO en R T AW12
U T4
Fto. del = A8.5
Temporizador
Ejemplo
Arranque El temporizador arranca cuando el RLO en la entrada "S" pasa de “0” a “1”. El
temporizador corre empezando con el valor de tiempo especificado en la entrada
TW mientras la entrada ‘S’ tenga el estado de señal ‘1’.
Reset Cuando el RLO en la entrada de Reset "R" es "1", el valor de tiempo actual y la
base de tiempos se borran y la salida Q se pone a ‘0’.
Salidas Digitales El valor de tiempo actual se puede leer como un número binario por la salida
DUAL y como un número BCD por la salida DEZ.
El valor de tiempo actual es el valor inicial de TW menos el valor del tiempo
transcurrido desde que se arrancó el temporizador.
Salida Binaria La señal en la salida "Q" cambia a "1" cuando el temporizador ha finalizado la
temporización sin error y la entrada "S" tiene el estado de señal "1".
Si el estado de señal en la entrada "S" cambia de "1" a "0" antes de que el
temporizador haya finalizado, el temporizador deja de contar. En este caso, la
salida “Q” tiene el estado de señal "0".
Célula En la CPU se reserva un área de memoria especial para los temporizadores. Este
del Temporizador área contiene una palabra de 16 bits para cada dirección de temporizador.
Los bits del 0 al 9 de la palabra del temporizador contienen el valor de tiempo en
código binario.
Cuando el temporizador se actualiza, el valor de tiempo se decrementa en una unidad
en el intervalo definido por la base de tiempos.
Base de Tiempos Los bits 12 y 13 de la palabra del temporizador contienen la base de tiempos en
código binario:
0 = 10 ms
1 = 100 ms
2 = 1s
3 = 10 s.
La base de tiempos define el intervalo en el que el valor de tiempo va a ser
decrementado una unidad.
Cuando el tiempo se especifica como una constante (S5T#...), la base de tiempos es
asignada automáticamente por el sistema. Si el tiempo va a ser especificado usando
potenciómetros o a través de una interfase de datos, el usuario debe especificar
además la base de tiempos.
LC / DEZ La dirección en la salida “BCD” contiene el valor de tiempo como un número BCD de
3 dígitos (12 bits) y el formato de tiempo (bits 12 y 13).
Nota Los temporizadores según la norma IEC también pueden implementarse en STEP7.
El uso de bloques de función del sistema para implementar temporizadores IEC se
SITRAIN Formación en tratará en un curso de programación avanzada. S7 NIVEL 1
Automatización y Accionamientos Página 9-12 Operaciones Digitales
Temporizadores: Retardo a la Conexión Memorizado (SS)
LAD FBD STL
T4 T4 U E0.7
E0.7 S_SEVERZ Q8.5 S_SEVERZ L S5T#35s
S Q E0.7 S DUAL MW0 SS T4
S5T#35s DUAL MW0 U E0.5
TW S5T#35s TW DEZ AW12
E0.5 A8.5 R T4
R DEZ QW12 E0.5 R Q = L T4
T MW0
LC T4
T AW12
U T4
= A8.5
RLO en S
RLO en R
Fto. del
Temporizador
Ejemplo
Arranque El temporizador arranca cuando el RLO en la entrada "S" cambia de "0" a "1". El
temporizador corre arrancando con el valor de tiempo especificado en la entrada
TW y continúa corriendo incluso si la señal a la entrada "S" cambia a "0" durante
ese tiempo.
Si la señal en la entrada de Arranque cambia de “0” a “1” de nuevo cuando el
temporizador está aún corriendo, el temporizador arranca de nuevo desde el
principio.
Reset Cuando el RLO en la entrada de Reset "R" es "1", el valor de tiempo actual y la
base de tiempos se borran y la salida Q se resetea.
T4 T4 U E0.7
E0.7 S_IMPULS A8.5 S_IMPULS L S5T#35s
S Q E0.7 S DUAL MW0 SI T4
S5T#35s DUAL MW0 A E0.5
TV MW0 S5T#35s TW DEZ AW12
E0.5 A8.5 R T4
R DEZ AW12 E0.5 R = L T4
Q
T MW0
LC T4
T AW12
U T4
= A8.5
RLO en S
RLO en R
Fto. del
Temporizador
Ejemplo
Arranque El temporizador arranca cuando el RLO en la entrada “S” cambia de “0” a “1”. La
salida “Q” también se pone a “1”.
T4 T4 U E0.7
E0.7 S_VIMP A8.5 S_VIMP L S5T#35s
S Q MW0 SV T4
E0.7 S DUAL
S5T#35s TW DUAL MW0 U E0.5
S5T#35s TW DEZ AW12
E0.5 A8.5 R T4
R DEZ AW12 E0.5 R = L T4
Q
T MW0
LC T4
T AW12
U T4
= A8.5
RLO en S
RLO en R
Fto. del
Temporizador
Ejemplo
Arranque El temporizador arranca cuando el RLO en la entrada "S" cambia de “0” a “1”. La
salida "Q" también se pone a “1”.
El estado de señal en la salida “Q” permanece a “1” incluso si la señal en la
entrada "S" cambia a “0”.
Si la señal en la entrada de Arranque pasa de “0” a “1” de nuevo, mientras el
temporizador está corriendo, éste rearranca.
T4 T4 U E0.7
E0.7 S_AVERZ A8.5 S_AVERZ L S5T#35s
S Q E0.7 S DUAL MW0 SA T4
S5T#35s DUAL MW0 U E0.5
TW S5T#35s TW DEZ AW12
E0.5 A8.5 R T4
R DEZ AW12 E0.5 R Q = L T4
T MW0
LC T4
T AW12
U T4
= A8.5
RLO en S
RLO en R
Fto. del
Temporizador
Ejemplo
Arranque El temporizador arranca cuando el RLO en la entrada "S" cambia de “1” a “0”.
Cuando el temporizador haya finalizado, el estado de señal en la salida Q cambia
a "0".
Si el estado de señal en la entrada "S" cambia de “0” a “1” mientras el
temporizador está corriendo, el temporizador para y la siguiente vez que cambia
el estado de señal de "1" a "0" arranca de nuevo desde el principio.
Reset Cuando el RLO en la entrada de Reset "R" es "1", el valor de tiempo actual y la
base de tiempos se borran y la salida Q se resetea.
Si ambas entradas (S y R) tienen el estado de señal “1”, la salida“Q” no se pone a
“1” hasta que el Reset dominante se desactive.
Salida Binaria La salida "Q" se activa cuando el RLO en la entrada "S" cambia de “0” a “1”. Si la
entrada “S” se desactiva, la salida “Q” continúa teniendo el estado de señal “1”
hasta que pase el tiempo programado.
Segm. 1:
T4
E0.0 T4 E0.0 & SE U E0.0
SE L S5T#5s
S5T#5s TW SE T4
S5T#5s
Segm. 2:
T4 A 8.0 A 8.0
U T4
T4 & =
= A 8.0
Segm. 3:
T4
E0.1 T4 U E0.1
R E0.1 & R R T4
Instrucciones de Bit Todas las funciones de temporización pueden arrancarse también con
instrucciones de bit simples. Las similitudes y diferencias entre este método y las
funciones de temporización vistas hasta ahora son las siguientes:
• Similitudes:
- Condiciones de arranque en la entrada "S"
- Especificación del valor de tiempo
- Condiciones de reset en la entrada “R”
- Respuesta de señal en la salida “Q”
• Diferencias (para LAD y FBD):
- no es posible comprobar el valor de tiempo actual (no existen las salidas
DUAL y DEZ).
DI DO Q 8....
Q 4....
E0.0 Sistema_ON Perturbación .0 Nº de objetos ACTUAL
E0.1 Sistema_OFF Sistema .1
E0.2 Motor_DCHA MANUAL .2
E0.3 Motor_IZDA AUTO .3 V
E1.0 Acuse_Pert
AI1 AI2
Peso V
Función hasta ahora En modo AUTO, los objetos se transportan desde la Posición 1 hasta la
en el FC 16: Posición Control Final. La función de transporte arranca tan pronto como se sitúa
un objeto en la Posición 1 (se presiona el pulsador asociado), y finaliza
cuando el objeto atraviese la barrera óptica.
Número Conversión
introducido en 0 81 5 BCD->Entero Programa de
BCD usuario con
Tarea operaciones
matemáticas de
Número Conversión enteros
representado 0 2 4 8 BCD<-Entero
en BCD
BCD_E / BTI (Convertir BCD a entero) lee el contenido del parámetro IN como un número BCD
de 3 dígitos (+/- 999) y lo convierte a un valor entero (16 bits).
I_BCD / ITB (Convertir entero a BCD) lee el contenido del parámetro IN como un valor entero
(16 bits) y convierte este valor a un número BCD de 3 dígitos (+/- 999). Si se
produce desbordamiento, ENO = 0.
BCD_DE / BTD Convierte un número BCD (+/- 9999999) a un doble entero (32 bits).
DI_BCD / DTB Convierte un doble entero en un número BCD de 7 dígitos (+/- 9999999). Si se
produce desbordamiento, ENO = 0.
CMP Podemos usar diversas funciones de comparación para comparar los siguientes
pares de valores numéricos:
I Compara enteros (en base de 16 bits en coma fija)
D Compara enteros (en base de 32 bit en coma fija)
R Compara números en coma flotante (en base de número real de 32 bit =
números IEEE en coma flotante).
Si el resultado de la comparación es “Verdadero", el RLO de la operación es "1",
en caso contrario es "0".
Los valores en las entradas IN1 e IN2 se comparan en base a la condición
especificada:
== IN1es igual a IN2
<> IN1 no es igual a IN2
> IN1 es mayor que IN2
< IN1 es menor que IN2
>= IN1 es mayor o igual que IN2
<= IN1 es menor o igual que IN2.
IN1,IN2 El valor en IN1 se lee como el primer operando y el valor en IN2 como el
segundo.
Nota Las funciones matemáticas avanzadas (ABS, SQR, SQRT, LN, EXP, SUN, COS,
TAN, ASUN, ACOS, ATAN) se verán en un curso de programación avanzada.
SITRAIN Formación en S7 NIVEL 1
Automatización y Accionamientos Página 9-21 Operaciones Digitales
Ejercicio: Cuenta de los Objetos Transportados (FC 18)
DI DO A 8....
A 4....
E0.0 Sistema_ON .0 Nº de objetos ACTUAL
Perturbación
E0.1 Sistema_OFF Sistema .1
E0.2 Motor_DCHA MANUAL .2
E0.3 Motor_IZDA AUTO .3 V
E1.0 Acuse_Pert
AI1 AI2
Peso V
Nº de objetos CONSIGNA
EW 4 / EW 2
Fución hasta ahora • Los objetos transportados en modo AUTO se cuentan (con el contador de
en el FC 18 S5 C 18), tan pronto como alcanzan la posición Control Final o hayan
atravesado la barrera óptica.
• El número de objetos transportados (número de objetos ACTUAL) se
visualiza en el display digital BCD).
• El contador se resetea cuando el sistema está desconectado (A 8.1 / 4.1=´0)
F STL
I_DI
U MD14
EN OUT
P DI_R
ENO EN OUT MD26
MW12 IN L MW12
LAD ENO ITD
MD14 IN
DTR
T MD26
I_DI DI_R
EN ENO EN ENO
Ejemplo Un programa de usuario que trabaje con enteros necesita también efectuar
divisiones, lo que es probable que dé resultados menores que 1. Como estos
valores solo pueden ser representados como números reales, necesitamos
realizar una conversión a números reales. Para hacerlo, en primer lugar debe
convertirse el entero a doble entero.
• INV_E / INVI
• NEG_E / NEGI
• TRUNCAR / TRUNC
• REDONDEO / RND
• EXCESO / RND+
• DEFECTO / RND-
• INV_DE / INVD
• NEG_DE / NEGD
• NEG_R / NEGR
• CAW, CAD
WXOR_W L EW 0
WOR_W
L W#16#5F2A
WAND_W
UW / OW / XOW
EN ENO
T MW10
IW0 IN1
OUT MW10 15 0
W#16#5F2A IN2
EW0 = 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0
W#16#5F2A = 0 1 0 1 1 1 1 1 0 0 1 0 1 0 1 0
AND OR XOR
WAND_W La operación "AND Word" opera los dos valores digitales en las entradas IN1 e
IN2 bit a bit de acuerdo con la tabla de verdad AND. El resultado de la operación
AND se almacena en la dirección que se ponga en la salida OUT.
La instrucción se ejecuta cuando EN = 1.
Ejemplo: Poner a 0 la 4ª década de los potenciómetros:
EW4= = 0100 0100 1100 0100
W#16#0FFF = 0000 1111 1111 1111
MW30 = 0000 0100 1100 0100
WOR_W La operación "OR Word" opera los dos valores digitales en las entradas IN1e IN2
bit a bit de acuerdo con la tabla de verdad OR. El resultado de la operación OR se
almacena en la dirección que se ponga en la salida OUT.
La instrucción se ejecuta cuando EN = 1.
Ejempolo: Setear el bit 0 en MW32 :
MW32 = 0100 0010 0110 1010
W#16#0001 = 0000 0000 0000 0001
MW32 = 0100 0010 0110 1011
WXOR_W La operación "OR Exclusiva Word" opera los valores digitales en las entradas IN1
e IN2 bit a bit de acuerdo con la tabla de verdad XOR. El resultado de la
operación OR se almacena en la dirección que se ponga en la salida OUT. La
instrucción se ejecuta cuando EN=1.
Ejemplo: detección de cambios de la señal en EW0 :
EW0 = 0100 0100 1100 1010
MW28 = 0110 0010 1011 1001
MW24 = 0010 0110 0111 0011