Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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