

Proyecto Redes Industriales
MR2019.2 Ma-Vi 17:30-19:00

Programación AWL (Lista de instrucciones)
Resumen
En la práctica se realizará la misma secuencia y se utilizara el mismo método de conexión entre PC-PLC que en la práctica 1.
En lugar de utilizar el lenguaje KOP (Escalera) se utilizara el AWL (Lista de instrucciones) y de igual manera se implementará el temporizador, el contador y el comparador.
Objetivos
-
Aprender a programar en lenguaje AWL.
-
Implementar contadores, temporizadores, comparadores y uso de marcas en AWL.
-
Confirmar nuestro conocimiento adquirido en la práctica 1.
-
Adquirir más conocimiento y práctica utilizando el software.
Material
-
PLC S7-300.
-
12 Pares de cable banana-banana.
-
2 Sensores de final de carrera.
-
2 Sensores inductivos.
-
6 Mangueras.
-
2 Electroválvulas 5/2.
-
2 Pistones de doble efecto.
-
Botonera.
Actividad Previa
Carga y Transferencia
Las operaciones de carga (L) y transferencia (T) permiten programar un intercambio de información entre módulos de E/S y áreas de memoria, o entre áreas de memoria.
La CPU ejecuta estas operaciones en cada ciclo como operaciones incondicionales.
Se dispone de las operaciones de carga y transferencia siguientes:
-
L: Cargar.
-
L STW: Cargar palabra de estado en ACU 1.
-
LAR1: Cargar registro de direcciones 1 con contenido del ACU 1.
-
LAR1 <D>: Cargar registro de direcciones 1 con puntero (formato de 32 bits).
-
LAR1 AR2: Cargar registro de direcciones 1 con contenido del registro de direcciones 2.
-
LAR2: Cargar registro de direcciones 2 con contenido del ACU 1.
-
LAR2 <D>: Cargar registro de direcciones 2 con puntero (formato de 32 bits).
-
T: Transferir.
-
T STW: Transferir ACU 1 a la palabra de estado.
-
TAR: Intercambiar registro de direcciones 1 y registro de direcciones 2.
-
TAR1: Transferir registro de direcciones 1 a ACU 1.
-
TAR1 AR2: Transferir registro de direcciones 1 a registro de direcciones 2.
-
TAR1 <D>: Transferir registro de direcciones 1 a dirección de destino (puntero de 32 bits).
-
TAR2: Transferir registro de direcciones 2 a ACU 1.
-
TAR2 <D>: Transferir registro de direcciones 2 a dirección de destino (puntero de 32 bits).
Operaciones Binarias
Las operaciones lógicas con bits operan con dos dígitos, 1 y 0. Estos dos dígitos constituyen la base de un sistema numérico denominado sistema binario. Los dos dígitos 1 y 0 se denominan dígitos binarios o bits. En el ámbito de los contactos y bobinas, un 1 significa activado (”conductor”) y un 0 significa desactivado (”no conductor”). Las operaciones lógicas con bits interpretan los estados de señal 1 y 0, y los combinan de acuerdo con la lógica de Boole. Estas combinaciones producen un 1 ó un 0 como resultado y se denominan ”resultado lógico” (RLO). Las operaciones lógicas con bits permiten ejecutar las más diversas funciones.
Las operaciones básicas para las operaciones lógicas con bits son:
-
U Y
-
UN Y-No
-
O O
-
ON O-No
-
X O-exclusiva
-
XN O-exclusiva-No Ejemplo funciones booleanas.
Temporizadores
Bajo Área de memoria y componentes de un temporizador encontrará información sobre cómo ajustar y seleccionar los temporizadores.
Se dispone de las operaciones de temporización siguientes:
-
FR: Habilitar temporizador.
-
L: Cargar valor actual del temporizador en ACU 1 como entero.
-
LC: Cargar el valor actual de temporización en ACU 1 como número BCD.
-
R: Desactivar temporizador.
-
SI: Temporizador como impulso. Ejemplo temporizador.
-
SV: Temporizador como impulso prolongado.
-
SE: Temporizador como retardo a la conexión.
-
SS: Temporizador como retardo a la conexión con memoria.
-
SA: Temporizador como retardo a la desconexión.
Contadores
Un contador es un elemento funcional de STEP 7. Los contadores tienen reservada un área de memoria propia en la CPU. Dicha área de memoria reserva una palabra de 16 bits para cada contador. La programación con AWL asiste un máximo de 256 contadores. En los datos técnicos de la CPU encontrará la cantidad de contadores de que puede disponer. Las operaciones de contaje son las únicas funciones que tienen acceso al área de memoria reservada para contadores.
Se dispone de las operaciones de contaje siguientes:
-
FR: Habilitar contador.
-
L: Cargar valor actual del contador en ACU 1 en forma de entero.
-
LC: Cargar valor actual del contador en ACU 1 como número BCD. Ejemplo contador.
-
R: Desactivar contador.
-
S: Poner contador al valor inicial.
-
ZV: Incrementar contador.
-
ZR: Decrementar contador.
Comparación
Las operaciones Comparar enteros (de 16 bits) comparan el contenido del ACU2-L con el contenido del ACU1-L según los tipos de comparación siguientes:
-
== ACU 2 es igual al ACU 1
-
<> ACU 2 es diferente al ACU 1
-
> ACU 2 es mayor que ACU 1
-
< ACU 2 es menor que ACU 1
-
>= ACU 2 es mayor que o igual al ACU 1
-
<= ACU 2 es menor que o igual al ACU 1
Se dispone de las operaciones de comparación siguientes: Ejemplo comparador.
-
? I Comparar enteros ==, <>, >, <, >=, <=
-
? D Comparar enteros dobles ==, <>, >, <, >=, <=
-
? R Comparar números en coma flotante (32 bits) ==, <>, >, <, >=, <=
El S7-315 tiene dos acumuladores de 32 bits.
-
Bit 0 – /FC- Almacena si la siguiente instrucción de una combinación booleana va a ser la primera o no.
-
Bit 1 – RLO. Estado lógico de las instrucciones que se están corriendo.
-
Bit 2 -STA - Estado de la dirección booleana de la memoria.
-
Bit 3-OR-Sirve para conocer el valor de la combinatoria de un AND antes de hacer un OR
-
Bit 4 y 5 -OS y OV - OS almacena un overflow.
-
Bit 6 y 7 – CCO y CC1 Operaciones de comparación matemáticas.
-
Bit 8 – BR- Es el resultado de las operaciones binarias.
Programa en AWL (A+B+B-A-).
Programa solo de la secuencia básica
OB
Los Bloques de Organizacion son constituyen la interfase entre el sistema operativo de la CPU y el programa de usuario. Con la ayuda de los OBs es posible seleccionar la ejecución de partes de programas:
-
Al arrancar la CPU.
-
En ejecución cíclica o también intermitente temporal.
-
A determinadas horas o en determinados días.
-
Después de transcurrir un tiempo preestablecido.
-
Al producirse errores • al dispararse alarmas de proceso.
FB
Un FB es un bloque de Funcion donde puedo crear una subrutina que me servira para utilizarla varias veces con diferentes datos (Parametros actuales).
OB
Los OBs definen la estructura del programa de usuario
¿Qué es la función CALL y cómo se usa?
Con la instrucción de llamada CALL, siempre se llama de forma absoluta a los FBs, FCs, SFBs y SFCs, es decir, el módulo indicado siempre se llama y ejecuta independientemente de la condición. Después de la operación CALL, sigue la lista de los parámetros del módulo (parámetros IN, OUT, INOUT). Cuando se utiliza CALL para llamar a un FB o a un SFB hay que asignar un bloque de datos de instancia al FB/SFB.





Marco Teórico
Lenguaje de programación AWL (lista de instrucciones) es un programa orientado a la máquina. Las diversas instrucciones equivalen a los pasos de trabajo con los que la CPU ejecuta el programa y estas se pueden reunir en segmentos.
De forma análoga a lo que ocurre en lenguaje KOP también se puede dividir el programa en segmentos, aunque no es necesario.
Set y Reset en AWL
-
Puesta a 1. Si el RLO es '1', pone el operando al que se aplica a '1'. Si el RLO es '0' no produce ningún efecto y mantiene el operando en su valor anterior, ya sea '1' o '0'.
-
Puesta a 0. Si el RLO es '1', pone el operando al que se aplica a '0'. Si el RLO es '0' no produce ningún efecto y mantiene el operando en su valor anterior, ya sea '1' o '0'.
Después de una operación Set o Reset en AWL, la siguiente instrucción A, O o X será simplemente una consulta al estado del operando de la instrucción.
Como ejemplo tenemos un semáforo con las tres luces verde, ámbar y rojo. Disponemos también de dos pulsadores de mando: un pulsador de marcha y un pulsador de paro. El ciclo comienza tras pulsar el pulsador de marcha, siguiendo la siguiente secuencia indicada. El ciclo es repetitivo hasta que se pulse el pulsador de paro. En ese momento se apaga todo. Siempre que le se le dé al pulsador de marcha comienza por el verde.
Solución al semaforo.
Es un lenguaje que emplea menos instrucción de programación por lo que permite optimizar la cantidad de memoria disponible en el PLC.
Lo que distingue principalmente a este tipo de código son las tres características siguientes:
Es un lenguaje estructurado, donde es posible la programación por bloques con definición de variables locales o globales.
Incluye estructuras de cálculo repetitivo y condicional tales como:
-
FOR...TO
-
REPEAT...UNTIL X
-
WHILE X…
-
IF… THEN… ELSE
Dispone de instrucciones de manipulación de cadenas de caracteres, muy útil en aplicaciones de gestión, estadística, etc.

Desarrollo
Al igual que en la práctica 1 se hizo la configuración correspondiente de la comunicación PC-PLC
En esta práctica se programó en lista de instrucciones o AWL la secuencia de la práctica #1 (A+B+B-A-). Al igual que en la práctica anterior, tenemos como tabla de símbolos:
Tabla de símbolos
En la práctica programamos en lenguaje AWL el cual utiliza puertas lógicas, AND, OR, NAND, = , en lugar de contactos abiertos, normalmente cerrados o bobinas como en el caso de la práctica anterior.
Este lenguaje de programación no tiene ayudas visuales, es únicamente como su nombre lo dice, una “lista de instrucciones”.
Teniendo así un AND (A) como un contacto abierto, NAND (AN) como contacto normalmente cerrado, OR (O) como un contacto en paralelo e “=” como una bobina.

Resultados
El objetivo de esta práctica es realizar la misma secuencia de la práctica anterior, sólo que programando en lenguaje de escalera (AWL), para así poder ver la diferencia en la programación, que a pesar de ser la misma secuencia, mismos pistones, en si, mismo material de trabajo, la programación no es igual.
Los diferentes tipos de lenguajes están pensados para facilitar la programación ante diferentes problemas a solucionar.
El software con el que contamos “Step 7” cuenta con diferentes funciones, una de ellas es que se al estar programando en un lenguaje, una vez que ya se haya terminado, pasar de ese lenguaje de programación a otro lenguaje, por ejemplo, de estar programando en KOP convertir el código a AWL. En el caso de nuestra práctica no era hacer eso, si no que desde un principio, crear un nuevo proyecto, un nuevo bloque pero con el lenguaje de programación como AWL para así aprender y poder notar las diferencias de programar en los diferentes lenguajes de programación, poder saber cual es más eficiente, más rápido y más que nada, saber qué lenguaje se facilita más.
El programa final fue el siguiente:
(A+B+B-A-).
Programa completo.
En el video se puede ver que se inicia con el botón de marcha, inmediatamente sale el pistón 1, al extenderse completamente el pistón 2 avanza, en este punto se espera 3 segundos y regresa el pistón 2, cuando el pistón 2 se encuentra contraído se dará la señal para que el piston 1 vuelva a su posición inicial. En este punto se cumple un ciclo y gracias al contador y comparador se detendrá completamente una vez terminados 3 ciclos.
Video del funcionamiento.

Conclusiones
Alejandro Islas. La práctica se realizó con éxito y se cumplio con los objetivos establecidos, ya que aprendimos cuál es el orden y la lógica del lenguaje AWL, así como el uso de temporizadores, contadores y comparadores en este mismo lenguaje.
Reafirmamos nuestro conocimiento adquirido en la actividad anterior y adquirimos más práctica con el PLC S7-300.
Daniel Vega. El objetivo de esta práctica se cumplio debio a que logramos aprender a programar en modo de lista de instrucciones llamado AWL, la desventaja de este código de programación es que es muy largo y como ventaja se puede decir que los comparadores, contadores y temporizadores son más rápido de establecerlos.
Eduardo Chagoyan. Esta práctica se realizó de manera muy rápida, debido a que era la misma secuencia que la práctica pasada, sin embargo, este lenguaje de programación fue para mi un poco más complicado, debido a que todo es en lista. Aunque si se practica, es una manera más rápida de programar. En general, la práctica se realizó de manera correcta, se tuvo un poco de problema con las últimas líneas de código debido a que eran nuevas, por lo que se debe de practicar más este lenguaje de programación.
Bibliografía
Programar con STEP 7. (2006, Marzo 1). Extraído Agosto 29, 2015, de https://cache.industry.siemens.com/dl/files/056/18652056/att_70833/v1/S7prv54_s.pdf.
Introducción y ejercicios prácticos. (2010, Mayo 1). Extraído Agosto 29, 2015, de https://cache.industry.siemens.com/dl/files/551/45531551/att_56646/v1/S7gs___d.pdf.
SIMATIC S7-300. (2003). Extraído Agosto 29, 2015, de http://upcommons.upc.edu/bitstream/handle/2099.1/4298/Simatic_S7_300_PLC.pdf?sequence=12&isAllowed=y.
Dorantes, D., Manzano, M., Sandoval , G., & Vásquez, V. (2008). Automatización y control. México: Mcgraw-hill.
Software de sistema para S7-300 y S7-400 - Funciones estándar y funciones de sistema Tomo 1/2. (2006). Extraído Agosto 27, 2015, de https://cache.industry.siemens.com/dl/files/574/1214574/att_44507/v1/SFC_s.pdf.
Lista de instrucciones (AWL) para S7-300 y S7-400. (2010). Extraído Agosto 27, 2015, de https://cache.industry.siemens.com/dl/files/446/45523446/att_79276/v1/s7awl__d.pdf.