Está en la página 1de 3

STEP7: ACUMULADORES EN AWL

Acumuladores en AWL
Los acumuladores son registros auxiliares en la CPU que se utilizan para el intercambio de datos entre zonas
de memoria (marcas, zonas de DB, entradas, salidas…), operaciones de comparación y operaciones
aritméticas. El S7-300 tiene dos acumuladores de 32 bits (ACU1 y ACU2) y el S7-400 tiene cuatro (hasta el
ACU4) Son áreas de memoria de 4 bytes (doble palabra) cada uno.
Carga y transferencia
La forma básica de trabajar con ellos son la carga y la
transferencia
- Carga (L): Se lee un valor (palabra, palabra
doble, variable o constante) y se copia en el ACU 1
- Transferencia (T): Se lee el valor actual del ACU
1 y se copia en un área de memoria (Marcas, DB,
salidas…)
Como ejemplo:
L 10 // Copiamos el valor del ACU1 a
la marca MW200
T MW 200//Transfiere el valor del
ACU1 a la marca MW200
El ACU1 tiene una longitud de 4 bytes, por lo que las
operaciones de carga y transferencia pueden involucrar
bytes, palabras o palabras dobles. En el esquema se
puede ver lo que ocurre en cada caso.
En general, lo que se cargue en el ACU1 va siempre a la
parte baja, poniéndose el resto de los bytes a cero. Del
mismo modo, sólo se transfiere la parte del ACU1 del
tamaño de la variable que se escriba.
Función del ACU2
Los dos acumuladores sirven, entre otras cosas, para realizar operaciones matemáticas o de comparación.
Funcionan en forma de pila: cuando leemos algo y se lo transferimos al ACU1, previamente el PLC ha
realizado la operación de transferir el ACU1 al ACU2.
Vamos a examinar cómo funcionan en las operaciones matemáticas con una sencilla suma de dos valores
enteros:
L 10// Cargamos el ACU1 en el ACU2 y cargamos el 8 en el ACU1
L 15 //Copiamos el ACU1 al ACU2 (el 8) y cargamos el 7 en el ACU1.
+I // Hace la suma entre el ACU1 y el ACU2 y carga el resultado al ACU 1
T MW 200//Transfiere el valor del ACU1 a la marca MW200
En la tabla siguiente, tomada de la observación del anterior código, se ve la evolución de los acumuladores
con cada operación (ESTÁNDAR == ACU1).
STEP7: ACUMULADORES EN AWL

Hay dos puntos extra que debemos notar:


1.- La operación matemática pone a cero el ACU2
2.- La transferencia (T) no modifica el estado de los acumuladores.
En las operaciones de comparación el contenido de los dos acumuladores no se modifica, pero sí el del
RLO, que se pone a uno cuando la condición es verdadera:

Operaciones avanzadas con los acumuladores


Las tres siguientes operaciones permiten manipular el contenido de los acumuladores sin realizar carga y
transferencia, comparaciones u operaciones matemáticas:
TAK: Intercambia el contenido del ACCU1 con el del ACCU2.
PUSH: Desplaza el contenido del ACCU1 al ACCU2.
POP: Desplaza el contenido del ACCU2 al ACCU1.
En el siguiente segmento vemos el efecto de estos comandos en los acumuladores:

Ventajas y precauciones en el uso de las operaciones con acumuladores en AWL


En FUP o KOP, el editor del PLC no deja comparar variables que no sean enteros, dobles enteros o reales,
pe.ro sí en AWL
Por ejemplo, en los dos siguientes segmentos en KOP se llama a un temporizador IEC a la conexión (TON,
SFB4) y posteriormente se intenta realizar una comparación del tiempo transcurrido desde la activación del
temporizador (la variable ‘ET’) El comparador no admite variables de tipo TIME (tiempo IEC), aunque sea
equivalente a un entero doble que almacena el tiempo en milisegundos; concretamente, en el segundo
segmento no nos deja meter la variable ‘DB5.ET’
STEP7: ACUMULADORES EN AWL

El problema se soluciona realizando la comparación en AWL (segmento 7) Vemos cómo podemos comparar
la variable del DB de instancia con una constante de tipo TIME en la captura de la figura siguiente, realizada
a los 2.75 segundos del arranque del temporizador.

Por otro lado, la flexibilidad del lenguaje también nos da la oportunidad de realizar ‘ideas felices’ como la del
siguiente ejemplo, en el que el PLC no daría error al ejecutar la siguiente operación:
L L#50000 //Constante de entero doble
L 50000.0 //Número real
+I
T MW 10

En la anterior operación hay dos errores: estamos sumando enteros con reales, que tienen diferente formato,
y además realizamos la operación con números enteros, aunque ninguno de los dos acumuladores contenga
un número entero. Por supuesto, el resultado final no tendría ningún sentido.
¿Cuántas operaciones con los acumuladores hay?
Además de las comparaciones y las operaciones matemáticas hay otras funciones que utilizan los
acumuladores, como la rotación y desplazamiento de bits o las operaciones lógicas con palabras. En el blog
‘Programación Siemens’ tienes un listado con todas las operaciones que se pueden realizar en AWL.
BIBLIOGRAFÍA:
https://programacionsiemens.com/como-usar-los-acumuladores-en-awl/
Hans Berger: “Automating with STEP 7 in STL and SCL”
Manuales de EDCAI

También podría gustarte