Vous êtes sur la page 1sur 82

TUTORIAL DE PROGRAMACIN

SIMATIC S7 300 (NIVEL I)

Pgina:
1/82


Contenido
1. OBJETIVOS ..................................................................................................................................... 4
2. INTRODUCCIN ............................................................................................................................ 4
2.1. PLCs .......................................................................................................................... 4
2.2. Autmatas Siemens ..................................................................................................... 4
2.3. Lenguajes de programacin ........................................................................................ 5
2.4. Concepto de instruccin .............................................................................................. 7
2.5. Organizacin de programas......................................................................................... 8
3. MDULOS Y DATOS..................................................................................................................... 8
3.1. Tipos de mdulos ........................................................................................................ 8
3.2. Tipos de datos ............................................................................................................. 9
3.3. Entradas y salidas ........................................................................................................ 9
3.4. Marcas de memoria ................................................................................................... 10
3.5. Registros ................................................................................................................... 10
4. SISTEMAS DE NUMERACIN ................................................................................................... 11
4.1. Sistema Decimal ....................................................................................................... 12
4.2. Sistema Binario ......................................................................................................... 12
4.3. Hexadecimal ............................................................................................................. 12
4.4. BCD .......................................................................................................................... 12
4.5. Conversiones ............................................................................................................. 12
4.6. Ejercicios de aplicacin ............................................................................................ 13
5. INTRODUCCIN A LA PROGRAMACIN EN STEP 7 ........................................................... 13
5.1. Introduccin al autmata S7-300 .............................................................................. 14
5.2. Crear un proyecto en STEP 7 .................................................................................... 14
5.3. Ejercicio de aplicacin .............................................................................................. 21
5.4. Introduccin al PLCSim............................................................................................ 22
6. PROGRAMACIN BSICA ........................................................................................................ 28
6.1. Primera consulta........................................................................................................ 28
6.2. Consulta de entradas. Contactos na. y nc. ................................................................. 28
6.3. Asignacin ................................................................................................................ 29
6.4. Funcin AND (Y) ..................................................................................................... 30
6.5. Funcin OR (O) ........................................................................................................ 31
6.6. Y antes de O .............................................................................................................. 31
6.7. Funcin XOR (O exclusiva)...................................................................................... 32
6.8. Expresiones entre parntesis ..................................................................................... 32
6.9. Ejercicios propuestos: ............................................................................................... 33
6.10. Set y Reset................................................................................................................ 34
6.11. Ejercicios propuestos ................................................................................................ 36
6.12. Operaciones de flancos ............................................................................................. 37
6.13. Marcas Remanentes .................................................................................................. 38
6.14. Marca de ciclo ........................................................................................................... 39
6.15. Negar, activar, desactivar y salvar el RLO................................................................ 40
7. OPERACIONES DE CARGA Y TRANSFERENCIA .................................................................. 41
7.1. Operacin de carga.................................................................................................... 41
7.2. Operacin de transferencia........................................................................................ 42
8. OPERACIONES DE CONTAJE .................................................................................................... 43
8.1. Operaciones con contadores...................................................................................... 43
8.2. Ejercicios propuestos ................................................................................................ 46

Pgina:
2/82

9. OPERACIONES DE TEMPORIZACIN ..................................................................................... 47


9.1. Operaciones con temporizadores .............................................................................. 47
9.2. Temporizador como impulso (SI) ............................................................................. 50
9.3. Temporizador como impulso prolongado (SV)......................................................... 51
9.4. Temporizador como retardo a la conexin (SE) ....................................................... 52
9.5. Temporizador como retardo a la conexin con memoria (SS) .................................. 53
9.6. Temporizador como retardo a la desconexin (SA) .................................................. 54
9.7. Elegir el temporizador adecuado ............................................................................... 55
9.8. Preseleccin variable y visualizacin del valor de temporizacin ............................ 56
9.9. Ejercicios propuestos ................................................................................................ 57
10. FORMATOS DE REPRESENTACIN DE NMEROS .............................................................. 59
10.1. Nmeros enteros (I) .................................................................................................. 59
10.2. Nmeros dobles enteros (D)...................................................................................... 60
10.3. Nmeros reales (R) ................................................................................................... 60
11. OPERACIONES DE COMPARACIN ........................................................................................ 61
11.1. Realizacin de comparaciones .................................................................................. 61
11.2. Comparar dos nmeros enteros y dobles enteros ...................................................... 61
Comparacin efectuada ....................................................................................................... 61
11.3. Comparar dos nmeros reales ................................................................................... 63
11.4. Ejercicios propuestos ................................................................................................ 64
12. OPERACIONES DE CONVERSIN ............................................................................................ 65
13. OPERACIONES ARITMTICAS ................................................................................................. 67
13.1. Operaciones aritmticas con enteros ......................................................................... 67
13.2. Operaciones aritmticas con nmeros reales............................................................. 68
13.3. Ejercicios propuestos ................................................................................................ 70
14. OPERACIONES LGICAS ........................................................................................................... 71
14.1. Operacin lgica AND.............................................................................................. 71
14.2. Operacin lgica O. .................................................................................................. 71
14.3. Operaciones lgicas XOR. ........................................................................................ 72
15. OPERACIONES DE DESPLAZAMIENTO .................................................................................. 73
15.1. Desplazar palabras .................................................................................................... 73
15.2. Desplazar doble palabras .......................................................................................... 73
15.3. Desplazar enteros ...................................................................................................... 73
15.4. Desplazar dobles enteros ........................................................................................... 74
15.5. Ejercicio propuesto .................................................................................................. 74
16. OPERACIONES DE ROTACIN ................................................................................................. 74
16.1. Rotar palabras dobles ................................................................................................ 74
17. OPERACIONES DE SALTO ......................................................................................................... 76
17.1. Operaciones de salto incondicional ........................................................................... 76
17.2. Operaciones de salto condicional, en funcin del RLO ............................................ 78
17.3. Operaciones de salto condicional, en funcin de RB u OV/OS ................................ 80
17.4. Operaciones de salto condicional, en funcin de A1 y A0........................................ 80
17.5. Finalizar mdulos...................................................................................................... 82

Pgina:
3/82

1.

OBJETIVOS

Con este tutorial se pretende ensear los conocimientos necesarios para programar los autmatas de la serie Simatic S7300 con el software de programacin Step7.
No se va a mostrar la utilizacin del programa Step7, ya que este programa es comercial e incluye los manuales
necesarios para su empleo.
Todo lo aqu expuesto ha sido obtenido de los manuales del autmata, pero se ha estructurado de distinta forma,
tratando que la persona que lo utilice no se pierda en ningn momento y que acceda de forma rpida a lo que busca.
Por supuesto, este tutorial no es una alternativa al manual que incorpora el autmata, se debe tomar como una gua
complementaria. El manual proporciona ms ejemplos y mayor detalle que el expuesto aqu.
Es necesario que el lector est familiarizado con el lgebra de Boole, y si se est familiarizado con algn otro lenguaje
de ser mucho ms sencillo y rpido.

2.
2.1.

INTRODUCCIN
PLCs

Los Controladores Lgicos Programables (PLCs), tambin llamados autmatas programables, forman parte de la
familia de los ordenadores. Se usan en aplicaciones comerciales e industriales. Un autmata monitoriza las entradas,
toma decisiones basadas en su programa, y controla las salidas para automatizar un proceso o mquina. Este curso trata
de suministrar la informacin bsica sobre las funciones y las configuraciones de los autmatas programables.

2.2. Autmatas Siemens


Siemens fabrica varias lneas de autmatas de la familia SIMATIC S7. Son: S7-200, S7-300 y S7-400. Actualmente ha
sacado al mercado S7-1200 y S7-1500
S7-200
Al S7-200 es un autmata de gama media, a causa de su pequeo tamao. El S7-200 tiene un diseo compacto que
significa que la fuente de alimentacin y las Entradas/Salidas las lleva incorporadas. El S7-200 puede usarse en
pequeas y medianas aplicaciones independientes. Este autmata ser descatalogado a corto plazo.
S7-300 y S7-400
Estos autmatas se usan en aplicaciones ms complejas que necesitan de un mayor nmero de Entradas/Salidas. Ambos
son modulares y ampliables. La fuente de alimentacin y las Entradas/Salidas consisten en mdulos independientes
conectados a la CPU. La eleccin entre el S7-300 y el S7-400 depende de la complejidad de la tarea y de una posible
ampliacin futura.

Pgina:
4/82

Tabla comparativa de las CPUs de un S7-300

2.3. Lenguajes de programacin


Hasta el momento se ha descrito al PLC como una mquina formada por elementos de
comunicarse fsicamente con el proceso para:

hardware capaces de

9 Recoger el conjunto de variables (digitales y/o analgicas) que definen el estado del mismo (seales de
entrada),
9 Enviar otro conjunto de variables que modifiquen dicho estado en un sentido predeterminado (seales de
salida).
Pero para esto, el PLC necesita para su completa adaptacin al proceso de un operador humano que defina como se
quiere la evolucin del mismo.
Este operador intercambia entonces informacin con el hardware del PLC para:
9 Fijar, mediante una secuencia de rdenes, la ley general de mando, de la que se obtienen las variables de salida
o de control,
9 Intervenir, continuamente o no, sobre el proceso para modificar la evolucin o, simplemente, para leer su
estado.
El primero de los puntos, establecimiento de la secuencia de rdenes, se denomina programacin de PLC, y la
secuencia establecida, programa de aplicacin.
Al segundo punto, intervencin del operador sobre el proceso, se le conoce comnmente como explotacin de la
aplicacin, y durante ella se permiten modificar algunos parmetros (tiempo, consignas, mdulos de cuenta, etc.), pero
no modificar el programa.
Se ha descrito pues, a la programacin como la codificacin al lenguaje del PLC del conjunto de rdenes que forman la
ley de mando o control deseada. Codificar, a su vez, significa transformar una informacin en otra equivalente de
distinto formato. Por lo que un programa es una sucesin o lista en un determinado orden de distintas rdenes de
trabajo tambin llamadas instrucciones y capaz de hacer ejecutar al autmata la secuencia de trabajo pretendida.

Pgina:
5/82

Por lo tanto, se define, de esta manera, al lenguaje de programacin como un conjunto de smbolos y textos inteligibles
por la unidad de programacin que le sirven al usuario para codificar sobre un cierto Autmata las leyes de control
deseadas, mientras que lenguaje de explotacin ser el conjunto de rdenes y comandos que el usuario puede enviar,
desde la misma unidad o desde un terminal adecuado, para recoger estados o modificar variables de proceso.
La programacin del PLC pasa, pues, por los siguientes pasos:
1. Determinar qu debe hacer el sistema de control y en qu orden (por ejemplo, mediante un diagrama de flujo, una
descripcin literal, etc.).
2. Identificar los componentes (seales) de entrada y salida al PLC.
3. Representar mediante un modelo el sistema de control, indicando todas las funciones que intervienen, las
relaciones entre ellas, y la secuencia que deben de seguir. Esta representacin puede ser:
9 Algebraica: Instrucciones literales.
9 Grfica: Smbolos grficos.
4. Asignar direcciones de entrada/salida o internas a cada uno de los componentes que aparecen en el modelo.
5. Codificar la representacin anterior en instrucciones o smbolos inteligibles por la unidad de programacin. Esto,
dado que, el cdigo de salida a obtener son los cdigos binarios que entiende la CPU; El cdigo de entrada no es
ms que el control que se quiere implementar, representado en alguna forma.
6. Transferir las instrucciones obtenidas a la memoria del Autmata desde la unidad de programacin.
7. Depurar el programa y obtener una copia de seguridad.
En pocas palabras, al conjunto total de instrucciones, rdenes y smbolos que estn disponibles para escribir un
programa se le denomina lenguaje de programacin.
Para toda la familia de autmatas Simatic S7 se emplean los siguientes lenguajes de programacin:
VENTAJAS DEL AWL:
9 Es el lenguaje que necesita menos instrucciones de programacin de todos. Esto
permite optimizar la cantidad de memoria disponible en el PLC, pero sobre todo el
tiempo de ciclo es menor, por lo que se pueden utilizar CPUs lentas para
procesos relativamente rpidos, an con programas considerables.
9 Es el ms indicado para operaciones de saltos condicionales en funcin de
valores analgicos. Cualquier tratamiento analgico que sobrepase la simple
comparacin es el terreno del AWL.
9 Permite introducir una gran cantidad de sentencias en la misma pantalla, con lo
cual los test status no requieren de desplazamientos en la misma.
INCONVENIENTES DEL AWL:
9 La programacin de secuencias de pasos en procesos (set y reset de etapas)
carece de sentido en este lenguaje, ya que no se gana memoria y el programa se
convierte en ininteligible hasta para el propio programador.
9 El programar una lnea debajo de otra lleva a los programadores a implementar
LINEAS Y LINEAS DE CODIGO SIN SER DIVIDIDAS EN SEGMENTOS Y
SIN COMENTAR. Programas ininteligibles.
VENTAJAS DEL KOP:
9 Es muy sencillo seguir las condiciones del proceso.
9 Totalmente indicado para programadores ms cercanos al mundo elctrico
INCONVENIENTES EN KOP:
9 Las series y paralelos requieren tanto espacio en pantalla que enseguida se nos
salen de la misma, por lo que en status nos debemos de desplazar a menudo.
9 El realizar comparaciones de salto analgicas es misin imposible, a poco que se
compliquen.
9 Y el principal problema: las cajas de KOP necesitan una sistemtica de proceso
por parte del Step 7 que hace que no se optimice el cdigo de las mismas, por lo que
el programa haciendo lo mismo va ms lento.

Pgina:
6/82

VENTAJAS DEL FUP:


9 Permite realizar gran cantidad de series y paralelos en la misma pantalla,
con lo cual se acerca a la ventaja del AWL, pero con mayor claridad en el
diagnstico.
9 Es el indicado para los programadores electrnicos.
INCONVENIENTES FUP:
9 No es til, al igual que le pasaba al KOP, para tratar valores analgicos ni
condiciones de salto.
9 Sufre el mismo problema de optimizacin de cdigo en el tratamiento que
realiza del mismo el Step 7.

Internamente el autmata solo trabaja con lista de instrucciones, KOP y FUP son traducidos a AWL por Step7. En este
tutorial veremos la programacin en lista de instrucciones y esquema de contactos.
En qu lenguaje debo programar?
La respuesta es evidente, cada vez uno. Para las tareas que no sean setear, resetear o activar bits, el AWL es sin dudas el
lenguaje a utilizar. Las ventajas del mismo sobrepasan ampliamente los inconvenientes.
Sin embargo para todas las activaciones (series y contactos que van a parar a bobinas, ya sean enclavadas o no) la
decisin debe de ser KOP o FUP, dependiendo del gusto del programador.
Si el programador tiene la misma destreza con KOP que con FUP. Decantarse por FUP tiene ms ventajas.

2.4. Concepto de instruccin

Una instruccin puede no contener operando (ej. NOT).


El operando puede ser sustituido por un nombre simblico (ej. MOTOR_ON), el cual debe ser especificado al comienzo
del programa para indicar a que entrada o salida equivale.

Pgina:
7/82

2.5. Organizacin de programas


Antes de disear un programa es necesario entender los diferentes modos en que se puede estructurar, distinguir los
distintos tipos de mdulo utilizables as como la forma de trabajo del PLC.
La mayora de los PLC permiten disear el programa de forma lineal o estructurada.

Programacin Lineal : Todo el programa est contenido en un nico mdulo. Normalmente, este mdulo es el OB1
(mdulo de elaboracin cclica). Las instrucciones se van ejecutando secuencialmente una detrs de otra. Este sistema
de programacin slo est recomendado en proyectos pequeos.
Programacin estructurada: La programacin estructurada implica la divisin del programa en diversos bloques.
Cada uno de estos bloques constituye al mismo tiempo un subprograma. Por lo tanto, se recomienda utilizar este tipo de
programacin.

3.

MDULOS Y DATOS

3.1. Tipos de mdulos


Simatic S7 dispone de una serie de mdulos que dividen la memoria de programa y la de datos en secciones,
permitiendo una programacin estructurada y un acceso ordenado a los datos. El nmero de mdulos va a depender del
tipo de CPU empleada, disponiendo en general de los siguientes:

Pgina:
8/82

Mdulos de organizacin (OB)


Constituyen la forma de comunicacin entre el sistema operativo de la CPU y el programa de usuario. Existen varios
tipos de OB, los cuales estn accesibles o no segn el tipo de CPU:
OB 1 (ciclo libre): es el mdulo principal, el que se ejecuta cclicamente y del que parten todos los saltos a
otros mdulos.
OB de interrupciones horarias y de error: son los que contienen la secuencia de acciones a realizar en caso de
que se produzca una alarma o error programado.
OB de arranque: en este mdulo podemos introducir valores por defecto que permiten el arranque definido a la
instalacin, bien en un arranque inicial o tras un fallo en la alimentacin.
Funciones (FC)
Son mdulos en los que podemos incluir parte del programa de usuario con lo que obtenemos un programa mucho ms
estructurado. A estos mdulos se pueden acceder desde otro mdulo FC o desde un mdulo OB.
Mdulos de funciones (FB)
Son mdulos de programa especiales. Aqu se introducen las partes de programa que aparecen con frecuencia o poseen
gran complejidad. Posee una zona de memoria asignada para guardar variables (mdulo de datos de instancia). Lo que
se hace es enviar parmetros al FB y guardar algunos de los datos locales en el mdulo de datos de instancia.
Mdulos de datos (DB)
Son reas de memoria destinadas a contener datos del programa de usuario. Existen mdulos de datos globales y de
instancia. A los datos contenidos en un mdulo de datos es posible acceder de forma absoluta o simblica. Los datos
complejos o compuestos pueden depositarse en forma de estructura. Los mdulos de datos pueden ser de dos tipos:
Mdulos de datos globales: se pueden utilizar por cualquier mdulo del programa.
Mdulos de datos de instancia: se asignan a un determinado modulo de funcin y solo pueden manejarse desde
dicho mdulo. Pueden asignarse varios mdulos de datos de instancia a un mdulo de funcin.
Mdulos de funciones especiales (SFB)
Se tratan de mdulos ya programados, los cuales estn preparados para realizar acciones complejas como regulacin
PID (lazo cerrado), medida de frecuencia, etc...
Funciones del sistema (SFC)
Son funciones integradas en el sistema operativo de la CPU y que se pueden llamar en caso de necesidad desde el
programa de usuario.

3.2. Tipos de datos


Los operandos se componen de un dato que puede ser de distintos tipos. Los tipos de datos posibles son:
E
A
M
P
L
T
Z
DB

entrada
salida
marca
periferia (acceso directo)
datos locales
temporizador
contador
mdulo de datos

Cada uno de estos tipos se puede direccionar en 4 posibles modos (salvo T y Z):
Por defecto (X para DB): Bit. Un bit es la unidad para dgitos binarios o caracteres binarios. Es la unidad ms
pequea de informacin. Permite dos estados: "0" "1". Los bits pueden agruparse para formar unidades
mayores.
B: byte (8 bits).
W: palabra (16 bits).
D: palabra doble (32 bits).

Pgina:
9/82

3.3. Entradas y salidas


Tal y como comentamos anteriormente, manejaremos una imagen de las entradas y las salidas. El nmero de e/s
disponibles depender del tipo de CPU que empleemos, adems de los mdulos externos que tengamos conectados. La
CPU 314 IFM puede manejar como mximo hasta 256 bytes para cada tipo de e/s. En este caso se podra direccionar
como:
IMAGEN DEL PROCESO DE LAS ENTRADAS (PAE):
Entrada
Byte de entrada
Palabra de entrada
Palabra doble de entrada

E 0.0 a E 255.7
EB 0 a EB255
EW 0 a EW254
ED 0 a ED252

IMAGEN DEL PROCESO DE LAS SALIDAS (PAA):


Salida
Byte de salida
Palabra de salida
Palabra doble de salida

A 0.0 a A255.7
AB 0 a AB255
AW 0 a AW254
AD 0 a AD252

Todas estas entradas y salidas pueden ser de tres tipos:


E/S digitales: son las e/s ms frecuentes y que en mayor cantidad vamos a tener.
E/S digitales de alarma/error: no son e/s adicionales, se configuran dentro de Step7 y ocupan una de las e/s
digitales normales.
E/S analgicas: estas si son e/s adicionales, pero no obstante hay que configurarlas tambin desde Step7 para
especificar el rango de direcciones que van a ocupar. Ocupan 2 bytes de memoria.

3.4. Marcas de memoria


Cuando realicemos nuestro programa y operemos a nivel de bit en operaciones lgicas (and, or, etc.) puede que nos
aparezca la necesidad de almacenar el resultado lgico que tengamos en un determinado momento. Para ello
disponemos de 256 marcas de memoria de 1 byte, es decir un total de 2048 marcas de 1 bit, que podemos direccionar
como:
Marcas
M 0.0 a M255.7
Byte de marcas
MB 0 a MB255
Palabra de marcas
MW 0 a MW254
Palabra doble de marcas
MD 0 a MD252

3.5. Registros
Todas las CPU Simatic S7 disponen de una serie de registros que se emplean durante la ejecucin del programa de
usuario. No vamos a comentar todos ellos, slo los que realmente empleemos en la programacin:

Acumuladores (ACU1 y ACU2)


El acumulador 1 (ACU 1) y el acumulador 2 (ACU 2) son dos registros universales de 32 bits que se emplean para
procesar bytes, palabras y palabras dobles. En estos acumuladores se pueden cargar constantes o valores depositados en
la memoria como operandos y ejecutar operaciones lgicas con ellos. Tambin es posible transferir el resultado en ACU
1 a una direccin (un mdulo de datos, una salida, etc.). Cada acumulador puede descomponerse en dos palabras de 16
bits (palabra baja y alta). La palabra baja contiene los bits de menor peso y la alta los de mayor peso lgico.

Pgina:
10/82

Todas las posibles operaciones que pueden realizarse son:


Cargar: que siempre acta sobre ACU 1 y guarda el antiguo contenido en ACU 2 (perdindose el valor antiguo
de ACU 2). La carga de una palabra acta sobre la palabra baja del ACU 1.
Transferir: copia el contenido de ACU 1 en una direccin de memoria, sin perder el valor de los acumuladores.
Intercambiar el contenido de los acumuladores.
Comparacin, conversin y operaciones aritmticas.

Palabra de estado
Es un registro de 16 bits que contiene algunos bits a los que puede accederse en el operando de operaciones lgicas de
bits y de palabras. Solo nos sern de utilidad los 9 primeros bits, estando reservados el uso de los 7 ltimos. A
continuacin pasaremos a describir cada bit:
BIT 0 (ER): 0 indica que la siguiente lnea se ejecuta como nueva consulta (inhibida). En este estado la consulta se
almacena directamente en RLO (ver 4.1).
BIT 1 (RLO): resultado lgico. Aqu se realizan las operaciones a nivel de bit (como AND, OR, etc.).
BIT 2 (STA): bit de estado. Solo sirve en el test de programa.
BIT 3 (OR): se requiere para el proceso Y delante de O. Este bit indica que una operacin Y ha dado valor 1, en las
restantes operaciones es 0.
BIT 4 (OV): bit de desbordamiento. Se activa (1) por una operacin aritmtica o de comparacin de coma flotante
tras producirse un error (desbordamiento, operacin no admisible, o relacin incorrecta).
BIT 5 (OS): bit de desbordamiento memorizado. Se activa junto con OV e indica que previamente se ha producido
un error. Solo puede cambiar a cero con la instruccin SPS, una operacin de llamada a mdulo, o porque se ha
alcanzado el fin del mdulo.
BITS 6 (A0) y 7 (A1): cdigos de condicin. Dan informacin sobre los resultados o bits siguientes:
- resultado de una operacin aritmtica.
- resultado de una comparacin.
- resultado de una operacin digital.
- bits desplazados por una instruccin de desplazamiento o rotacin.
BIT 8 (RB): resultado binario. Permite interpretar el resultado de una operacin de palabras como resultado binario
e integrarlo en la cadena de combinaciones lgicas binarias.

Pgina:
11/82

4.

SISTEMAS DE NUMERACIN

El autmata almacena informacin en forma de condiciones On y Off (1 0), refirindose a dgitos binarios (bits). A
veces los dgitos binarios se usan individualmente y otras son utilizados para representar valores numricos.
En los autmatas se usan varios sistemas numricos. Todos los sistemas de nmeros tienen las mismas caractersticas:
dgitos, base, potencia

4.1. Sistema Decimal


El sistema decimal, que es de utilizacin comn en la vida diaria, tiene las caractersticas siguientes:
Dgitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Base: 10
Potencias: 1, 10, 100, 1000, ...

4.2. Sistema Binario


El sistema binario se usa en los controladores programables. Tiene las siguientes caractersticas:
Dgitos: 0, 1
Base: 2
Potencias de base 2: 1, 2, 4, 8, 16, ...)

4.3. Hexadecimal
El hexadecimal es otro sistema usado en los autmatas programables. El sistema hexadecimal tiene las caractersticas
siguientes:
Dgitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Base: 16
Potencias de base 16 : 1, 16, 256, 4096 ...
Se utilizan los diez dgitos del sistema decimal para los primeros diez dgitos del sistema hexadecimal. Se usan las
primeras seis letras del alfabeto para los seis dgitos restantes.
A = 10
B = 11
C = 12

D = 13
E = 14
F = 15

El sistema hexadecimal se utiliza en los autmatas programables porque permite representar el estado de un gran
nmero de bits binarios en un pequeo espacio como es la pantalla de un ordenador o un visualizador de programacin.
Cada dgito hexadecimal representa el estado exacto de 4 bits binarios.

4.4. BCD
El cdigo BCD (Binary-Coded Decimal) son nmeros decimales en los que
cada dgito est representado por un nmero binario de 4 bits. Un contador
de vueltas es un ejemplo de un dispositivo de entrada de 4 bits. El BCD se
usa comnmente con dispositivos de entrada y salida. Los nmeros binarios
se rompen en grupos de 4 bits, cada grupo representa un decimal
equivalente. Un contador de vueltas de 4 dgitos, como el que se muestra
abajo, podra controlar 16 (4 x 4) entradas al autmata.

Pgina:
12/82

4.5. Conversiones

4.6. Ejercicios de aplicacin


1. Convierte los siguientes
nmeros decimales al sistema
hexadecimal y sistema binario:
a) 33
b) 342
c) 4321

2. Convierte los siguientes


nmeros binarios al sistema
decimal y sistema
hexadecimal:
a) 110110
b) 11110
c) 1011001

3. Convierte los siguientes


nmeros hexadecimales al
sistema decimal y sistema
binario:
a) 12BE
b) AAA
c) 3A6B

Pgina:
13/82

5.

INTRODUCCIN A LA PROGRAMACIN EN STEP 7

El objetivo es familiarizar al alumno con los autmatas programables de la serie S7- 300 de Siemens, as como con su
entorno de programacin STEP 7:
Identificar y conocer el funcionamiento bsico de un PLC: ciclo de scan, concepto de entradas y salidas, copia en
memoria, etc.
Programacin bsica del autmata a travs de la herramienta STEP7: programacin en listas de instrucciones, en
diagramas de contactos y en funciones.
Depurar errores de comunicacin con el autmata.

5.1.

Introduccin al autmata S7-300

En el aula se va a utilizar el autmata de la familia S7-300 de la firma Siemens.

El autmata base consta de CPU y entradas/salidas digitales/analgicas integradas en el propio autmata. Cada equipo
que existe en el aula tiene una configuracin distinta y un direccionamiento de entradas y salidas. El alumno deber
identificar los elementos que integran su equipo.

5.2.

Crear un proyecto en STEP 7

Para programar el PLC, ste debe estar conectado a uno de los puertos serie del ordenador. En general, se debe conectar
al puerto 1 (COM1/2 o USB). Los pasos a seguir para programar el autmata en el STEP 7 son los siguientes:
1. Arrancar el programa STEP7 y crear un proyecto.
2. Editar el programa.
3. Comprobar la comunicacin con el PLC.
4. Cargar y ejecutar el programa en el PLC.
5. Depurar el programa

Pgina:
14/82

1. Arrancar el programa STEP7 y crear un proyecto nuevo


Arranque el programa pinchando en el icono Administrador Simatic del escritorio de windows o bien a travs del
men de inicio mediante la secuencia Inicio->Programas- >Simatic->STEP7 >Administrador SIMATIC (el camino
puede variar consulte a su profesor).
Se pueden seguir las instrucciones del Asistente de STEP 7 para crear nuevos proyectos. Si se utiliza el asistente hay
que tener en cuenta que el proyecto se guarda por defecto en la carpeta S7proj.
En el caso de no usar el asistente, los pasos a seguir son los siguientes:
1. Archivo->nuevo

Nombre del proyecto que se va a generar

Ruta de la carpeta donde se quiere guardar el


proyecto. En clase cada alumno guardar los
proyectos en su carpeta.

2. Insertar equipo

Pgina:
15/82

3. Configurar hardware del equipo insertado:


Entrar en Hardware.
Simatic 300-> Bastidor-> Perfil Soporte

Insertar los elementos que integran el equipo.

El Slot 3 se debe dejar libre

Direccin MPI. Por defecto el software asigna la direccin MPI=2 pero es conveniente asegurarse cul es la direccin
del equipo con el que se va a conectar (Comprobar comunicacin con el PLC).
Una vez se han editado todos los elementos que integran el equipo se debe Guardar, compilar y cerrar configuracin.
2. Editar el programa.

Pgina:
16/82

Abrir programa:

Doble click en el bloque principal. Si no apareciese OB1 navegue por la ventana de proyecto mediante el ratn hasta
visualizarlo. La secuencia a seguir es Equipo SIMATIC 300->CPU314- >Programas S7->Bloques.

Elegir el lenguaje de programacin


que se va a utilizar.

Pgina:
17/82

3. Comprobar la comunicacin con el PLC.


Encienda el autmata. Para ello hay 2 interruptores: uno en la fuente de alimentacin del autmata y otro en la trasera
del bastidor. Espere a que se enciendan los leds de estado de la CPU del autmata

Compruebe la conexin con el autmata. Para comprobar que el autmata est correctamente conectado al ordenador
pulse el botn de comunicaciones. Se debe respetar la direccin MPI que tenga cada CPU del aula.

Pgina:
18/82

Ir a configuracin de Hardware y cambiar la direccin MPI de la CPU del proyecto:

En caso de no aparecer ningn autmata en la ventana o de aparecer una ventana de error de comunicaciones
compruebe que el autmata est encendido y que el cable serie est conectado al puerto COM1.
Configurar del puerto de comunicacin
Para configurar la comunicacin lo haremos desde el Administrador siguiendo los pasos: Herramientas Ajustar
interface PG/PC

Pgina:
19/82

Si sale uno de los puertos COM marcado con un asterisco significa que este puerto est ocupado, en este caso
tendremos que seleccionar otro puerto para conectar el PLC.

Seleccionamos el puerto en el que


se ha conectado el adaptador

4. Cargar y ejecutar el programa en el PLC.


Pinche en el icono Cargar de la barra de herramientas (smbolo de PLC - flecha hacia abajo) para cargar el programa
en el PLC. Tambin se puede utilizar Sistema de destino->Cargar.
5. Depurar el programa en diagrama de contactos
Una vez cargado el programa se puede depurar en la propia ventana de programacin.
Para ello seleccione Test->Observar. Sobre la ventana de programacin se indica el estado de las entradas, el resultado
de las ecuaciones lgicas parciales y el resultado de la salida.

Pgina:
20/82

Cambio de la ruta donde guardar los proyectos


Si queremos guardar nuestros proyectos en un lugar diferente, desde el Administrador seguiremos los pasos siguientes:
Herramientas
Preferencias
Examinar y seleccionaremos la ruta que queramos, pero eligiendo la misma ruta
para: Ruta de proyectos y Ruta de libreras.

5.3.

Ejercicio de aplicacin

1. Crea 3 proyectos y cierra el Administrador SIMATIC cada vez. Selecciona las CPUs y asigna los nombres a los 3
proyectos segn la tabla siguiente:
CPU

Nombre

313C

ejer1a

314

ejer1b

314C-2DP

ejer1c

2. Abre los 3 proyectos creados sin crear de nuevo.


3. Cierra el Administrador SIMATIC y desde Mi PC mira como se guardan los proyectos; qu carpetas y archivos se
generan. Prueba de arrancar el Administrador SIMATIC desde algn archivo de la carpeta. Anota el nombre con la
ruta completa del proyecto ejer1a.
4. Desde el Administrador abre el proyecto ejer1a y mediante la opcin Guardar como cmbiale el nombre por ejer1d.
Anota el nombre con la ruta completa del proyecto guardado como ejer1d.
5. Mira desde Mi PC y desde el Administrador, las carpetas y archivos de los proyectos creados y anota las diferencias
que observes en la cantidad de carpetas y archivos.
6. Desde Mi PC renombra la carpeta del proyecto ejer1b por ejer1e. Desde el Administrador abre el proyecto
renombrado y anota la ruta completa del proyecto.

Pgina:
21/82

5.4.

Introduccin al PLCSim

Activacin del simulador


A continuacin procedemos a abrir el simulador del S7. Con l podremos probar el circuito de la misma forma que si el
autmata estuviera conectado al ordenador

Opciones bsicas del simulador PLCSIM

Con la casilla RUN activada, no se puede transferir el programa ni forzar elementos. Con la casilla RUN-P activada, si
se puede transferir el programa y forzar elementos.
Para poder probar los circuitos que programamos en el S7, insertaremos una tarjeta de entradas.
Las tarjetas de salidas las pondremos si queremos visualizar en el simulador su funcionamiento.
Normalmente seleccionaremos ciclo continuo. El ciclo nico, solo lo seleccionaremos para analizar cmo evoluciona
en cada ciclo de scan el funcionamiento de algn ejercicio concreto.

Pgina:
22/82

Ejemplo
Nombre del proyecto: ejer2
Tipo de CPU: 314C-2DP
La salida A124.0 ha de funcionar cuando estn accionadas al mismo tiempo las entradas E124.0, E124.1 y E124.2.
La salida A124.1 ha de funcionar cuando estn accionadas una cualquiera de las entradas E124.0, E124.1 y E124.2.

1. Configuracin simulador PLCSIM


Desde el Administrador SIMATIC, creamos el proyecto ejer1 y abrimos el simulador.
Como tenemos que trabajar con las entradas E124.0, E124.1 y E124.2 insertamos un mdulo de entradas que por
defecto ser el EB0 y que vamos a renombrar como EB124
Como tenemos que trabajar con las salidas A124.0 y A124.1 insertamos un mdulo de salidas que por defecto ser el
AB0 y que vamos a renombrar como AB124

Pgina:
23/82

2. Edicin del programa. Desde el Administrador clicamos dos veces sobre OB1 y procedemos a editarlo

3. Transferencia de los mdulos al autmata o al simulador (el PLC no puede estar en RUN)
Se puede hacer de dos maneras:

Directamente desde el administrador. Es imprescindible que antes se hayan guardado los mdulos en el editor
AWL/KOP/FUP.

Pgina:
24/82

Desde el editor AWL/KOP/FUP. Enviar lo que haya en el editor, est guardado o no.

RECUERDA CARGAR A LA CPU TODOS


LOS
BLOQUES Y FUNCIONES QUE
HAYAS CREADO!!!!!!

4. Visualizacin del programa en online (el PLC debe estar en RUN)


Desde el Editor AWL/KOP/FUP
Posibles anomalas:
Si el programa que hay en el autmata es diferente
al que hay en el editor, las gafas aparecern
desactivadas.
Si las gafas se activan pero no se ve el estado del
circuito, clicaremos con el botn izquierdo del ratn
encima del nombre del segmento que queremos
visualizar o encima del segmento 1 si es que
queremos visualizar todo el programa, ya que solo se
visualiza el circuito a partir del segmento marcado.
Si todava no se visualiza el estado del programa,
comprobar si en la parte inferior izquierda sale el
mensaje Las instrucciones no se ejecutan. Si es
as, quiere decir que el mdulo no se ha llamado
desde el OB1.

Pgina:
25/82

Resolucin de problemas

Visualizar los smbolos en el PLCSim


Para visualizar los smbolos en el simulador es necesario insertar bit vertical.

Pgina:
26/82

Una vez que se han insertado todas las variables ir a Herramientas-> Opciones -> Asignar smbolos

Abrir la tabla de smbolos del proyecto que se quiera simular

Gestionar ficheros del simulador


Para guardar una simulacin hay que guardar dos ficheros:
Guardar plc: *.plc
Guardar organizacin:*.lay

Cuando se quiera abrir la simulacin es necesario abrir los dos ficheros.

Pgina:
27/82

6.

PROGRAMACIN BSICA

Dependiendo del tipo de operando que empleemos, se har uso de uno o varios de los siguientes registros:

Bit de resultado lgico (RLO): aqu se almacena el resultado de operaciones lgicas a nivel de bit y primera
consulta.
Acumuladores (ACU 1 y ACU 2): aqu se almacenan los operandos y resultados de operaciones lgicas a nivel
de byte, palabra, y doble palabra.

6.1. Primera consulta


Cuando efectuamos una asignacin, o se comienza un nuevo ciclo de programa, se est en estado de primera consulta.
Es decir, la primera instruccin lgica que se efecte servir para situar su operando en el RLO.
Las operaciones S y R tambin producen que el bit de primera consulta se ponga a 0.
Da igual si se trata de una operacin AND, OR, o XOR, en los tres casos se introduce el operando en el RLO de forma
directa. Si tratamos con instrucciones NAND, NOR, o XOR se introducir el operando de forma negada (si es un 0 el
bit RLO ser 1).

6.2. Consulta de entradas. Contactos na. y nc.


Elctricamente:

Contacto normalmente abierto

Contacto normalmente cerrado

El autmata consulta el valor de sus entradas, es decir, si existe tensin (1) o no existe tensin (0). Sin tener en
cuenta si el contacto asociado a la entrada es cerrado o abierto...

Pgina:
28/82

Para la elaboracin del programa s que debemos conocer las funciones tcnicas del contacto:
Si en una entrada hay conectado un contacto abierto, se aplicar el estado de seal 1 en la entrada cuando se
accione el contacto.
Si a la entrada nos encontramos con un contacto cerrado, se aplicar el estado de seal 0 en la entrada cuando se
accione el contacto.
El autmata no tiene posibilidad de determinar si en una entrada hay conectado un contacto cerrado o abierto. Solo
puede consultar o reconocer los estados de seal 1 0. Nos es indiferente si un estado se ha alcanzado a travs de
un contacto abierto o cerrado. Lo nico importante es la eleccin del tipo de contactos, sobre todo teniendo en cuenta
las normativas de seguridad...
Cuando efectuamos una asignacin, o se comienza un nuevo ciclo de programa, se est en estado de primera consulta.
Es decir, la primera instruccin lgica que se efecte servir para situar su operando en el RLO.
IMPORTANTE: Un contacto negado, NO significa contacto cerrado, sino LO CONTRARIO DE (0 lgico).
El elemento de referencia de una entrada, es la entrada fsica.

6.3. Asignacin
Instruccin =

---( ) Bobina de rel, salida

Se copia el contenido del RLO al operando especificado, sin perder el contenido del RLO.

AWL

Pgina:
29/82

6.4. Funcin AND (Y)


Elctricamente la salida de la funcin AND slo adopta el estado 1 si todas las entradas tienen el estado 1, es decir, si
estn cerradas.

En programacin, la salida de la funcin AND slo adopta el estado 1 si todas las condiciones son verdaderas, es decir,
si el RLO est a 1.

KOP

AWL: Instruccin "U" UN


AWL

Si la entrada E124.0 =1 y la entrada E124.1=1 y la E124.2 = 1,


la salida A124.0 se activar.

Si la entrada E124.0 est a 0 y la entrada E124.2 est a 1,


la salida A124.0 se activar.

Realiza la funcin lgica AND entre el RLO y el operando especificado, almacenando el resultado en RLO (se pierde el
valor anterior). Se puede operar con el negado del operando si se adjunta "N" (UN).
ej. U E 0.0
ej. UN A 1.2

//realiza un AND entre el RLO y la entrada E 0.0


//realiza un AND entre el RLO y la salida A 1.2 negada

Pgina:
30/82

6.5. Funcin OR (O)


Elctricamente, la salida de la funcin OR adopta el estado 1 si por lo menos una entrada tiene el estado 1.

En programacin, la salida de la funcin OR adopta el estado 1 si al menos una de las condiciones es verdadera, es
decir, si el RLO est a 1.
KOP:

AWL: Instruccin O/ON


AWL

Si la entrada E124.0 =1 la entrada


E124.1=1 la salida A124.1 se activar.

Si la entrada E124.0 =1 la entrada


E124.1=0 la salida A124.1 se activar.

6.6. Y antes de O
Instruccin "O" sin operando
Si introducimos una instruccin "O" sin operando seguida de una o varias instrucciones AND se evala en primer lugar
las instrucciones AND y el resultado se combina con el RLO segn un OR.
Esta operacin equivale a emplear "O(" con instrucciones del tipo AND dentro del parntesis.
Ejemplo:
U E 0.0
//se introduce en el RLO el valor de la entrada 0.0 (primera c.)
O
//comenzamos una operacin Y antes de O
U E 0.1
//introducimos el valor de la entrada 0.1 en el RLO (primera c.)
U M 0.3
//efectuamos un AND entre el RLO y la marca 0.3
= A 4.0
//se finaliza Y antes de O. Se efecta un OR entre el primer RLO del RLO resultado de
las operaciones AND. Luego se copia el contenido del RLO en la salida 4.0

Pgina:
31/82

6.7. Funcin XOR (O exclusiva)


Elctricamente, la salida de la funcin XOR (O-exclusiva) adopta el estado 1 si las entradas tienen diferentes estados.

En programacin, la salida de la funcin XOR adopta el estado 1 si las condiciones son distintas, es decir, si el RLO es
distinto a 1.
KOP:

AWL: Instruccin X / XN
E124.0

E124.1

E124.1

E124.0

A124.1

AWL

La salida A124.1 se activar si una de las entradas


est a 1 pero, exclusivamente, una de ellas.
Realiza la funcin lgica XOR entre el RLO y el operando especificado, almacenando el resultado en RLO (se pierde el
valor anterior). Se puede operar con el negado del operando si se adjunta "N" (XN).

6.8. Expresiones entre parntesis


Instrucciones "U (", "UN(", "O(", "ON(", "X(", "XN(", ")" sin operandos. (SLO AWL).
Las operaciones U, O, X, y sus negaciones UN, ON, y XN permiten ejecutar operaciones lgicas con fracciones de una
cadena lgica encerradas entre parntesis (expresiones entre parntesis).
Los parntesis que encierran una fraccin de una cadena lgica indican que el programa va a ejecutar las operaciones
entre parntesis antes de ejecutar la operacin lgica que precede a la expresin entre parntesis.
La operacin que abre una expresin entre parntesis almacena el RLO de la operacin precedente en la pila de
parntesis. A continuacin, el programa combina el RLO almacenado con el resultado de las combinaciones lgicas
ejecutadas dentro del parntesis (siendo la primera operacin dentro de los parntesis de primera consulta).
El nmero mximo de parntesis anidados que se permiten es 8.
Tabla de verdad
Ejemplo:
Un programa equivalente sera (en este caso):
U(
O E 0.0
U E 0.1
)
= A 2.0

O E 0.0
U E 0.1
= A 2.0

//copiamos la E 0.0 en el RLO (primera c.)


//efectuamos un AND entre el RLO y la E 0.1
//copiamos el resultado a la salida 2.0

Pgina:
32/82

6.9. Ejercicios propuestos:


Ejercicio 1
CONVIERTE A AWL:
E124.0

A124.0

E124.1

A124.1

A124.0

A124.1

A124.3

A124.0

A124.4

A124.1

A124.0

A124.1

A124.5

A124.0

A124.1

A124.6

A124.0

A124.1

A124.7

Indica el valor de las salidas A124.3 a la A124.7 segn sea el valor de A124.0 y A124.1
A124.0
0
1
0
1

A124.1
0
0
1
1

A124.3

A124.4

A124.5

A124.6

A124.7

Ejercicio 2
Programar el encendido y apagado de una bombilla controlado por 3 interruptores. La bombilla se enciende cuando al
menos 2 de los 3 interruptores estn pulsados.
a) Definir entradas y salidas
b) Crear un proyecto nuevo con el Step7
c) Realizar el programa de usuario
d) Probar en la instalacin montada en el aula.

Pgina:
33/82

Ejercicio 3
Programar el encendido y apagado de una bombilla desde dos interruptores diferentes (accin conmutada)

a) Definir entradas y salidas


b) Crear un proyecto nuevo con el Step7
c) Realizar el programa de usuario
d) Probar en la instalacin montada en el aula.
Ejercicio 4
La marcha-parada de una cinta transportadora se comanda mediante dos cajas de botoneras, una local y otra remota
(Cada botonera tiene un pulsador de marcha NA y un pulsador de parada NC). La cinta tambin puede detenerse
por la accin de un fin de carrera de seguridad.

6.10. Set y Reset


Elctricamente, la funcin Set-Reset equivale a una funcin marcha-paro:

Instrucciones "S" y "R"

---( S ) Activar salida


---( R ) Desactivar salida

La operacin set (S) fuerza a uno el operando especificado si el RLO es 1.


La operacin reset (R) fuerza a cero el operando especificado si el RLO es 1.
En ambos casos el bit de primera consulta se hace 0.

Pgina:
34/82

Ejemplo:
U E 1.0
S A 4.0
U E 1.1
R A 4.0

//copiamos al RLO el valor de la entrada 1.0 (primera c.)


//si RLO=1 se fuerza la salida 4.0 a 1
//copiamos al RLO el valor de la entrada 1.1 (primera c.)
//si RLO=1 se fuerza la salida 4.0 a

En este ejemplo tiene preferencia el reset sobre el set, ya que esta ltima instruccin se ejecuta al despus, es decir si
E1.0 y E1.1 fuesen 1 la salida A4.0 sera 0.
KOP
SR
S

Parmetro Tipo de datos rea de memoria


Descripcin
S
BOOL
E, A, M, L, D Activacin habilitada
R
BOOL
E, A, M, L, D Desactivacin habilitada
Q
BOOL
E, A, M, L,D
Estado de seal operando

RS
R

Parmetro Tipo de datos rea de memoria


Descripcin
S
BOOL
E, A, M, L, D Activacin habilitada
R
BOOL
E, A, M, L, D Desactivacin habilitada
Q
BOOL
E, A, M, L, D Estado de seal operando

Ejemplo:
Si el estado en la entrada E 0.0 es "1" y en la entrada E 0.1 es el estado
es "0", se activa la marca M 0.0, y la salida A 4.0 es "1". De no ser as,
cuando el estado de seal en la entrada E 0.0 es 0 y en E 0.1 es 1, se
desactiva la marca M 0.0 y la salida A 4.0 es "0". Si ambos estados de
seal son "0", no cambia nada. Si ambos estados de seal son "1",
domina la operacin Desactivar debido al orden en que estn dispuestas
las operaciones. M 0.0 se desactiva y la salida A 4.0 es "0".
En este ejemplo tiene preferencia el reset sobre el set, ya que esta ltima instruccin se ejecuta al despus, es decir si
E1.0 y E1.1 fuesen 1 la salida A4.0 sera 0.

Pgina:
35/82

6.11. Ejercicios propuestos


1. Control de un taladro vertical

2. Control de una bomba de agua


Disponemos de un depsito de agua. Para manejarlo tenemos un selector de mando con el cual seleccionaremos el
modo de funcionamiento de la bomba de agua seleccionar modo manual o modo automtico.
En modo manual, lo que queremos es que mientras est conectada, la bomba est funcionando, y cuando
desconectemos que se pare la bomba. No queremos que se haga caso a los detectores de nivel.
En modo automtico queremos que el nivel se mantenga entre las dos boyas. Cuando el agua llegue al nivel de abajo
queremos que se ponga en marcha la bomba, y cuando el agua llegue al nivel de arriba queremos que se pare la bomba.
Adems se tiene un rel trmico que acta tanto en funcionamiento manual como en automtico. Cuando salta el rel,
queremos que se pare la bomba y que nos avise con un indicador luminoso en el cuadro de mando.

Pgina:
36/82

6.12. Operaciones de flancos


Instrucciones "FP" y "FN"

Las operaciones de flanco positivo (FP) y flanco negativo (FN) pueden utilizarse para detectar cambios de flanco en el
RLO. El cambio de 0 a 1 se denomina flanco positivo, mientras que el cambio de 1 a 0 se denomina flanco negativo.
Cada instruccin FP o FN emplea un operando para poder comparar el RLO actual con el que haba en el ciclo anterior,
se recomienda emplear marcas de memoria. Si se realiza un cambio de flanco en el sentido de la instruccin empleada,
sta produce un impulso positivo (1) en el RLO durante el ciclo actual.
Ejemplo:
U E 124.0
FP M 0.0
= A 124.0

//empleamos la entrada 124.0 para detectar un cambio de flanco


//empleamos la marca 0.0 para detectar el cambio de flanco
//asignamos el resultado de la operacin FP a la salida 1244.0

ATENCION:
Es obligatorio no emplear los operandos ocupados por FP y FN (marcas de memoria) para otros fines, ya que entonces se
falsifica el RLO almacenado en ellos y por lo tanto se produce un funcionamiento incorrecto del programa.
Ejemplo:

Pgina:
37/82

6.13. Marcas Remanentes


Las salidas son elementos sin memoria, que trabajan a nivel interno y adems dan una seal al exterior.
Las marcas solamente trabajan a nivel interno. Las hay remanentes y no remanentes.
Que una marca sea remanente, es decir que tenga memoria, significa que despus de un corte de tensin, esta marca
recuerda el estado que tena antes del corte y lo mantendr.
Marcas remanentes (con memoria) por defecto: MB0 MB15
Marcas NO remanentes (sin memoria) por defecto: MB16 MB255
Para modificar el margen de las marcas establecido por defecto se han de seguir los siguientes pasos en Step7:
Administrador Equipo Simatic 300 doble clic en Hardware.

En la ventana HW Config, clicar dos veces sobre la CPU Seleccionar la pestaa Remanencia Colocar el nmero
de Bytes de marcas que queremos que tengan memoria a partir del MB0 Guardar y compilar y Cargar al autmata.

Pgina:
38/82

6.14. Marca de ciclo


Una marca de ciclo es una marca que cambia peridicamente de valor binario.
MB.b

Se define en las propiedades de la CPU: HW Config


Ciclo/Marca de ciclo

CPU

Pestaa

Para crear una marca de ciclo:


1.

Introducir la direccin del byte de marcas.

2.

Activar la casilla de verificacin

3.

Guardar y compilar y Cargar en mdulo

Cada bit del byte de marca de ciclo lleva asignada una duracin de periodo / frecuencia en seg:

Ejemplo:
U M100.3
= A4.0

//Si defino la marca 100 como marca de ciclo


//el led parpadear con una frecuencia de 0,5 seg.

Ejercicio: Marca de ciclo


Mediante interruptores realizar:

Pgina:
39/82

6.15. Negar, activar, desactivar y salvar el RLO


Instrucciones "NOT", "SET", "CLR" y "SAVE" sin operando
NOT
Niega (invierte) el RLO actual al no haberse activado el bit OR.
Registros afectados: RLO se invierte, STA=1
SET
Fuerza el RLO de forma incondicional a 1.
Registros afectados: RLO=1, STA=1, ER=0, OR=0
CLR
Fuerza el RLO de forma incondicional a 0.
Registros afectados: RLO=0, STA=0, ER=0, OR=0
SAVE
Almacena el RLO en el registro de estado (en el bit RB). El RLO almacenado puede ser consultado de nuevo con la
instruccin "U BR".
Registros afectados: RB almacena el valor de RLO.

Pgina:
40/82

7.

OPERACIONES DE CARGA Y TRANSFERENCIA

ACU1 y ACU2 son dos registros de 32 bits para el procesamiento de bytes, palabras y doble palabras. Permiten
programar un intercambio de informacin entre mdulos de E/S y reas de memoria.

Imagen de proceso de entradas y salidas


Marcas
Temporizadores y contadores
reas de datos

Las instrucciones de carga y transferencia transfieren datos a desde el ACU1. Son operaciones incondicionales, o sea,
independientes del RLO
Ejemplo:
U E1.0
L 2 //Carga el nmero 2 en ACU1 independientemente del estado de E1.0

7.1.

Operacin de carga

Instruccin "L"
Carga en ACU1 constantes y valores de los operadores.
Ejemplo:
L3
//Carga el nmero entero 3 (16 bits) en el ACU1
L EB0 //Carga el byte de entradas 0 en ACU1
L MB20 //Carga el byte de marcas 20 en ACU1

Los bytes no aprovechados se ponen a cero.


La informacin que hubiese en ACU1 se desplaza a ACU2. Y lo que hubiese en ACU2 se pierde.
Ejemplo:
L3
L2
L5

//ACU1=3
//ACU1=2; ACU2=3
//ACU1=5; ACU2=2 se pierde

Pgina:
41/82

7.2. Operacin de transferencia


Instruccin "T"
Transfiere el contenido de ACU1 a una direccin de operando. La transferencia no cambia el contenido de los
acumuladores. Transferimos nicamente desde ACU1.
Ejemplo:
T AB10
T MW4

//Transfiere el byte ms bajo del ACU1 al byte de salida 0.


//Transfiero el contenido de la palabra baja de ACU1 a la palabra de marcas MW14

Los acumuladores sirven para ejecutar operaciones lgicas entre ACU1 y ACU2 (comparacin, aritmticas, AND,
OR...). El resultado siempre se almacena en ACU1, sobrescribiendo lo que hubiese en ACU1 pero el contenido de
ACU2 permanece intacto.
Ejemplo:
L8
//ACU1=8
L2
//ACU1=2; ACU2=8
-I
//ACU2-ACU1 ACU1=6; ACU2=8
T MW10 //Transfiero el resultado de la resta a MW10
En cada ciclo de programa ACU1 y ACU2 se ponen a cero.

KOP:
MOVE
EN

ENO

IN

OUT

Parmetro Tipo de datos


EN
BOOL
ENO
BOOL
IN
Todos los tipos de
OUT
datos con una longitud
de 8, 16 o 32 bits

rea de memoria
Descripcin
E, A, M, L, D
Entrada de habilitacin
E, A, M, L, D
Salida de habilitacin
E, A, M, L, D
Valor de fuente
E, A, M, L, D
Direccin de destino

Descripcin de la operacin
MOVE (Asignar un valor) es activada por la entrada de habilitacin EN. El valor indicado por la entrada IN se copia en
la direccin que la salida OUT. La salida de habilitacin ENO tiene el mismo estado de seal que la entrada de
habilitacin EN.

Pgina:
42/82

8.

OPERACIONES DE CONTAJE

8.1.

Operaciones con contadores

Los contadores permiten distintas operaciones, que debemos emplear en su manejo:

Cargar un valor de contaje (preseleccin).


Borrar el contaje.
Contar hacia adelante y hacia atrs.
Consultar su estado como un operando ms en operaciones lgicas de bit.
Consultar su valor en ACU 1.

Todas estas operaciones sern explicadas con profundidad en los siguientes puntos.

Cargar un valor de contaje


Instrucciones: "L C#" y "S Z"
Un contador se pone a un determinado valor cargando dicho valor en la palabra baja del ACU 1, mediante una
operacin de carga, y luego en el contador, mediante una instruccin Set.
"L C#" introduce un valor de contaje en la palabra baja del ACU 1. El valor de contaje puede ser un valor comprendido
entre 0 y 999.
"S Z" introduce el valor de contaje en ACU 1 en el contador si RLO vale 1.
Ejemplo:
L C#3
U E 1.0
SZ1

//introduce el valor de contaje 3 en el ACU 1


//carga en el RLO el valor de la entrada 1.0
//introduce el valor 3 (dentro de ACU 1) en el contador 1 si la entrada E1.0 es 1

Borrar un contador
Instruccin: "R Z"
Borra el contador especificado (puesta a cero) si el RLO vale 1.
Ejemplo:
U E 1.0 //carga en el RLO el valor de la entrada 1.0
RZ1
//borra el contador 1 (a cero) si la entrada 1.0 es 1 (RLO=1)

Contaje hacia adelante y hacia atrs


Instrucciones: "ZV" y "ZR"
"ZV" incrementa el contador especificado si hay un cambio de flanco ascendente (0 a 1) en el RLO. El incremento se
produce en una unidad. Cuando el contador alcanza el lmite superior de 999, se detiene y no sigue incrementando.
"ZR" decrementa el contador especificado si hay un cambio de flanco ascendente (0 a 1) en el RLO. El decremento se
produce en una unidad. Cuando el contador alcanza el lmite inferior de 0, se detiene y no sigue decrementando.

Pgina:
43/82

Ejemplos:
U E 0.0
//carga en el RLO el valor de la entrada 0.0
ZV Z 1 //incrementa el contador 1 si la entrada 0.0 presenta un cambio de flanco
ascendente
U E 1.0
//carga en el RLO el valor de la entrada 1.0
ZR Z 1 //decrementa el contador 1 si la entrada 1.0 presenta un cambio de flanco ascendente

Consulta del estado de contadores


El programa puede consultar el estado de un contador de la misma manera que consulta el estado de seal de una
entrada o salida, pudiendo combinar el resultado de la consulta.
Cuando se consulta el estado del contador con las operaciones U, O, o X el resultado es 1 si el valor de contaje es mayor
que 0.
Ejemplo:
L C#5
U E 2.0
SZ1
U E 1.0
ZR Z 1
UZ1
= A 0.0

//introduce el valor de contaje 5 en el ACU 1


//carga en el RLO el valor de la entrada 2.0
//introduce el valor 5 (dentro de ACU 1) en el contador 1 si la entrada 2.0 es 1
//carga en el RLO el valor de la entrada 1.0
//decrementa el contador 1 si la entrada 1.0 presenta un cambio de flanco ascendente
//introduce en el RLO el estado del contador 1
//introduce el estado del contador 1 en la salida 0.0

Lectura de un valor de contaje


Instrucciones: "L Z" y "LC Z"
Con la instruccin "L Z" introducimos en el ACU 1 (parte baja) el valor del contador especificado en binario. El valor
en ACU 1 puede ser introducido en otro contador.
Con la instruccin "LC Z" introducimos en el ACU 1 (parte baja) el valor del contador especificado en BCD. En esta
codificacin no es posible pasar el valor de ACU 1 a otro contador.
Ejemplos:
LZ1
LC Z 2

//introduce el valor del contador 1 en el ACU 1


//introduce el valor del contador 2 en el ACU 1 en BCD

Pgina:
44/82

KOP:
Z N
ZAEHLER
ZV

ZR
S
ZW

DUAL
DEZ

R
Los elementos con los cuales se puede trabajar con un contador son los siguientes:

ZV
Incrementar. Contaje hacia arriba
ZR
Decrementar. Contaje hacia abajo
SZ
Carga del valor de preseleccin
ZW Valor de preseleccin, el valor mximo 999 y en formato BCD
R
Puesta a cero del valor del contador
Q
Conexin de la salida
DUAL Carga el valor del contador en binario
DEZ Carga el valor del contador en BCD

IMPORTANTE: En la salida Q tendremos un 1 siempre que el valor del contador sea superior a 0.
Ejercicio: Copia este ejemplo y analzalo.
CONVIERTE A AWL:
Z0
ZAEHLER

E124.0
ZV

A124.0
Q

E124.1
ZR
E124.2
S

C#10

ZW

DUAL

E124.3
R

DEZ

Pgina:
45/82

8.2.

Ejercicios propuestos

Cinta transportadora
Se pretende controlar una cinta transportadora sobre la cual el trabajador ir colocando cajas. Se parte de un estado
inicial en el que el contador de cajas se encuentra a 0.
En el instante en el que se detecte que el nmero de cajas que han pasado por el detector DL alcanza el valor de 15, se
encender la luz de LMITE al mismo tiempo que parar la cinta transportadora. Para reiniciar el proceso, el
trabajador deber inicializar el contador. Para que la cinta pueda entrar en funcionamiento, deber estar el sistema
disponible. La no disponibilidad del sistema no implica el reseteo del contador.

Sistema
disponible

Sistema
no disponible

Pulsador Rearme
Luz Lmite
Luz Defecto Trmico

Pgina:
46/82

9.

OPERACIONES DE TEMPORIZACIN

9.1. Operaciones con temporizadores


Los temporizadores permiten distintas operaciones, que debemos emplear en su manejo:
Funcionamiento en un modo determinado.
Borrar la temporizacin.
Re-arrancar un temporizador (FR).
Consultar su estado como un operando ms en operaciones lgicas de bit.
Consultar su valor en ACU 1.
Cargar un valor de temporizacin
El valor de temporizacin se debe cargar en la parte baja del ACU 1, para desde all transferirlo al temporizador
mediante el set que determine el modo de temporizacin adecuado.
El tiempo va decrementando hasta ser igual a 0. El valor de temporizacin puede cargarse en la palabra baja del ACU 1
en formato binario, hexadecimal o BCD. Para ello debemos elegir una base de tiempos y un valor dentro de dicha base,
con lo que podemos realizar temporizaciones desde 0 a 9990 segundos (0H_00M_00S_00MS a 2H_46M_30S_00MS).
La carga de un valor de temporizacin se puede hacer con dos sintaxis distintas (BCD o S5Time):

L W#16#abcd
Configuracin binaria en la palabra de temporizacin:
a = base de tiempos
bcd = valor de temporizacin en formato BCD
Base de tiempos y cdigo respectivo:
10 ms
100 ms
1s
10 s

0
1
2
3

Ejemplo:
L W #16 # 2010

//esto introduce un valor de 10 segundos en ACU 1


(2 base de 1s, 10 los segundos que deseamos)

L S5T#aH_bbM_ccS_ddMS
a = horas, bb= minutos, cc = segundos, dd = milisegundos
En este caso la base de tiempos se selecciona de forma automtica, tomndose la de valor ms bajo posible. Debido a
esto los valores de resolucin demasiado alta se redondean por defecto, alcanzando el rango pero no la resolucin
deseada.
El formato general para el tipo de datos S5TIME tiene los siguientes valores lmite para el margen y la resolucin:

Pgina:
47/82

Ejemplo:
L S5T#00H02M23S00MS//esto introduce un valor de temporizacin de 2 minutos y 23 segundos en el ACU 1

Borrar una temporizacin

Instruccin: "R T"

Esta instruccin borra (resetea) el temporizador indicado. El temporizador vuelve al estado de reposo, es decir parado y
con la salida igual a 0.
Ejemplo:
U E 0.0
L S5T#2s
SS T 2
U E 0.1
RT2
UT2
= A 3.1

//Empleamos la entrada 0.0 como entrada del temporizador


//Introducimos un valor de temporizacin de 2 segundos
//Empleamos el temporizador 2 como retardo a la c. con memoria
//Empleamos la entrada 0.1 como entrada de borrado
//Si la entrada 0.1 cambia de 0 a 1 el temporizador 2 se borra
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 3.1

Re-arranque de un temporizador

Instruccin: "FR T" (slo AWL)

Cuando el RLO cambia de 0 a 1 (flanco de subida) delante de una operacin FR se habilita el temporizador. Este
cambio del estado de seal siempre es necesario para habilitar un temporizador.
Para arrancar un temporizador y ejecutar una operacin normal de temporizador no hace falta habilitarlo. Esta funcin
se emplea nicamente para redisparar un temporizador que est en marcha, es decir, para rearrancarlo. Este rearranque
slo puede efectuarse cuando la operacin de arranque contina procesndose con un RLO de 1.
Ejemplo:
U E 2.0
FR T 1
U E 2.1
L S5T#5s
SI T 1
UT1
= A 4.0

//Empleamos la entrada 2.0 como re-arranque


//Re-arrancamos el temporizador 1 si la E 2.0 pasa a 1
//Empleamos la entrada 2.1 como entrada del temporizador
//Introducimos un valor de temporizacin de 5 segundos
//Empleamos el temporizador 1 como impulso
//Leemos la salida del temporizador
//Copiamos la salida del temporizador a la salida 4.0

Si el RLO cambia de 0 a 1 en la entrada de re-arranque mientras est en marcha el temporizador, el temporizador vuelve
a arrancar. El tiempo programado se emplea como tiempo actual para el re-arranque. Un cambio del RLO de 1 a 0 en la
entrada de re-arranque no produce ningn efecto.
Un cambio del RLO de 0 a 1 en la entrada de habilitacin no afecta al temporizador si todavahay un RLO 0 en la
entrada del temporizador.

Pgina:
48/82

Lectura de un valor de temporizacin

Instrucciones: "L T" y "LC T"

Con la instruccin "L T" introducimos en el ACU 1 (parte baja) el valor del temporizador especificado en binario. El
valor en ACU 1 puede ser introducido en otro temporizador.
Con la instruccin "LC T" introducimos en el ACU 1 (parte baja) el valor del temporizador especificado en BCD. En
esta codificacin no es posible pasar el valor de ACU 1 a otro temporizador.
Ejemplos:
LT1
LC T 2

//introduce el valor del temporizador 1 en el ACU 1


//introduce el valor del temporizador 2 en el ACU 1 en BCD

Pgina:
49/82

9.2. Temporizador como impulso (SI)


Instruccin: "SI"
Si el RLO (al ejecutar esta instruccin) cambia de 0 a 1, el temporizador arranca. El temporizador marcha con el valor
de tiempo indicado en ACU1. Si el RLO cambia de 1 a 0 antes de terminar el tiempo, el temporizador se detiene. La
salida del temporizador entrega 1 mientras el temporizador corre.
Ejemplo:
U E 0.0
L S5T#45s
SI T 2
UT2
= A 0.1

//Empleamos la entrada 0.0 como entrada del temporizador


//Introducimos un valor de temporizacin de 45 segundos
//Empleamos el temporizador 2 como impulso
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 0.1

KOP:

S
TW
R
DUAL
DEZ
Q

BOOL
S5TIME
BOOL
DUAL
WORD
BOOL

Entrada de arranque
Valor de temporizacin predeterminado
Entrada de desactivacin
Valor de temporizacin actual, codificado en binario
Tiempo restante, formato BCD
Estado del temporizador

Diagrama de temporizacin:

Ejemplo

Si el estado de seal de la entrada E 0.0 cambia de "0" a "1" (flanco


creciente en el RLO), se activa el temporizador T5. El temporizador
contina en marcha con el valor de temporizacin indicado de
2 segundos (2 s) mientras la entrada E 0.0 sea 1. Si el estado de seal
de la entrada E 0.0 cambia de "1" a "0" antes de transcurrir el
tiempo, el temporizador se para.
La salida A 4.0 es "1" mientras est en marcha el temporizador, y
"0" si el tiempo ha transcurrido o si el temporizador fue puesto a 0.

Pgina:
50/82

9.3. Temporizador como impulso prolongado (SV)


Instruccin: "SV"
Si el RLO (al ejecutar esta instruccin) cambia de 0 a 1, el temporizador arranca y continua en marcha incluso si el
RLO cambia a 0 antes de que el temporizador termine. Mientras el tiempo est corriendo, la salida vale 1.
Ejemplo:
U E 0.2
L S5T#85s
SV T 9
UT9
= A 9.1

//Empleamos la entrada 0.2 como entrada del temporizador


//Introducimos un valor de temporizacin de 85 segundos
//Empleamos el temporizador 9 como impulso prolongado
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 9.1

KOP:

S
TW
R
DUAL
DEZ
Q

BOOL
S5TIME
BOOL
DUAL
WORD
BOOL

Entrada de arranque
Valor de temporizacin predeterminado
Entrada de desactivacin
Valor de temporizacin actual, codificado en binario
Tiempo restante, formato BCD
Estado del temporizador

Diagrama de temporizacin:

Ejemplo:

Si el estado de seal de la entrada E 0.0 cambia de "0" a "1"


(flanco creciente en el RLO), se activa el temporizador T5. El
temporizador contina en marcha con el valor de temporizacin
indicado de dos segundos sin ser afectado por un flanco
decreciente en la entrada S. Si el estado de seal de la entrada
E 0.0 cambia de "0" a "1" antes de transcurrir el tiempo, el
temporizador vuelve a arrancar. Si el estado de seal de la
entrada E 0.1 cambia de "0" a "1" mientras el temporizador est
en marcha, ste se pone a 0. La salida A 4.0 es "1" mientras est
en marcha el temporizador.

Pgina:
51/82

9.4. Temporizador como retardo a la conexin (SE)


Instruccin: "SE"
El temporizador arranca cuando hay un flanco creciente en el RLO (al ejecutar esta instruccin). El temporizador
contina en marcha con el valor de temporizacin indicado en el ACU 1 mientras sea positivo el estado de seal en la
entrada (el RLO). El estado de la salida es 1 si el tiempo ha transcurrido sin errores y si el estado de la entrada (RLO) es
1. Si la entrada cambia de 1 a 0 mientras est en marcha el temporizador, ste cambia el estado de la salida a 0.
Ejemplo:
U E 0.7
L S5T#65s
SE T 4
UT4
= A 8.1

//Empleamos la entrada 0.7 como entrada del temporizador


//Introducimos un valor de temporizacin de 65 segundos
//Empleamos el temporizador 4 como retardo a la conexin
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 8.1

KOP:

S
TW
R
DUAL
DEZ
Q

BOOL
S5TIME
BOOL
DUAL
WORD
BOOL

Entrada de arranque
Valor de temporizacin predeterminado
Entrada de desactivacin
Valor de temporizacin actual, codificado en binario
Tiempo restante, formato BCD
Estado del temporizador

Diagrama de temporizacin:

Ejemplo:

Si el estado de seal de la entrada E 0.0 cambia de "0" a "1"


(flanco creciente en el RLO), se activa el temporizador T5. Si
transcurre el tiempo de dos segundos y el estado de seal en la
entrada E 0.0 sigue siendo "1", la salida A 4.0 ser "1". Si el
estado de seal de la entrada E 0.0 cambia de "1" a "0", el
temporizador se para y la salida A 4.0 ser "0". (Si el estado de
seal de la entrada E 0.1 cambia de "0" a "1", el temporizador
se pone a 0, tanto si estaba funcionando como si no).

Pgina:
52/82

9.5. Temporizador como retardo a la conexin con memoria (SS)


Instruccin: "SS"
Si la entrada (RLO en la ejecucin de la instruccin) cambia de 0 a 1, el temporizador arranca y continua corriendo
incluso si la entrada (RLO) cambia a 0, antes que el temporizador termine de contar. Si el tiempo ha concluido la salida
continua a 1 independientemente del estado de la entrada (RLO). Solo se puede poner a 0 la salida mediante un Reset.
El temporizador vuelve a arrancar con el valor de temporizacin indicado en el ACU 1 si el estado de la seal en la
entrada (RLO) cambia de 0 a 1 mientras el temporizador est en marcha.
Ejemplo:
U E 1.2
L S5T#32s
SS T 2
UT2
= A 3.1

//Empleamos la entrada 1.2 como entrada del temporizador


//Introducimos un valor de temporizacin de 32 segundos
//Empleamos el temporizador 2 como retardo a la c. con memoria
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 3.1

KOP:

S
TW
R
DUAL
DEZ
Q

BOOL
S5TIME
BOOL
DUAL
WORD
BOOL

Entrada de arranque
Valor de temporizacin predeterminado
Entrada de desactivacin
Valor de temporizacin actual, codificado en binario
Tiempo restante, formato BCD
Estado del temporizador

Diagrama de temporizacin:

Ejemplo:

Si el estado de seal de la entrada E 0.0 cambia de "0" a "1"


(flanco creciente en el RLO), se activa el temporizador T5. El
temporizador contina en marcha sin que un cambio de seal de
"1" a "0" en la entrada E 0.0 repercuta en l. Si el estado de seal
de la entrada E 0.0 cambia de "1" a "0" antes de que haya
transcurrido el tiempo, el temporizador vuelve a arrancar. La
salida A 4.0 ser "1" si ha transcurrido el tiempo (Si el estado de
seal de la entrada E 0.1 cambia de "0" a "1", el temporizador se
pone a "0", independientemente de cul sea el RLO en S).

Pgina:
53/82

9.6. Temporizador como retardo a la desconexin (SA)


Instruccin: "SA"
Si la entrada (RLO en la ejecucin de la instruccin) cambia de 1 a 0, el temporizador arranca y contina corriendo. Si
la entrada (RLO) cambia a 1 antes que el temporizador termine de contar, se resetea el temporizador. Mientras el tiempo
est corriendo, la salida vale 1.
Ejemplo:
U E 4.2
L S5T#32s
SA T 7
UT7
= A 1.1

//Empleamos la entrada 4.2 como entrada del temporizador


//Introducimos un valor de temporizacin de 32 segundos
//Empleamos el temporizador 7 como retardo a la desconexin
//Leemos la salida del temporizador
//Asignamos la salida del temporizador a la salida 1.1

KOP:

S
TW
R
DUAL
DEZ
Q

BOOL
S5TIME
BOOL
DUAL
WORD
BOOL

Entrada de arranque
Valor de temporizacin predeterminado
Entrada de desactivacin
Valor de temporizacin actual, codificado en binario
Tiempo restante, formato BCD
Estado del temporizador

Diagrama de temporizacin:

Ejemplo:
El temporizador arranca si el estado de seal en la
entrada E 0.0 cambia de "1" a "0".
A 4.0 es "1" si E 0.0 es "1" o el temporizador est en
marcha (Si el estado de seal en E 0.1 cambia de "0" a
"1", mientras est en marcha el temporizador, ste se
pone a 0).

Pgina:
54/82

9.7. Elegir el temporizador adecuado

Pgina:
55/82

9.8. Preseleccin variable y visualizacin del valor de temporizacin


Realizaremos la preseleccin de un temporizador con un valor variable. Cada vez que accionemos el E124.0, el
temporizador coger como preseleccin el valor que tenga en ese momento el MW0. El valor de MW0, debe estar en
BCD o en tiempo Simatic, en caso contrario el temporizador no lo entender y el PLC en caso de no estar programado
el OB121, se ir a STOP.

Una vez se haya activado el temporizador, aunque cambie el valor de MW0, el temporizador seguir trabajando con el
valor que tenia al ponerse en marcha.
Para cargar el valor del temporizador, lo podremos ver en BCD (MW4) o en Binario (MW2).
El valor cargado en BCD, contiene el valor y la base de tiempos. No obstante el MW4 lo podemos visualizar en BCD
(formato hexadecimal) o en tiempo Simatic.

Forzar valores en el MW0 (Hexadecimal) con


diferentes bases de tiempos y comprobar qu
tiempo Simatic coge.

Pgina:
56/82

9.9.

Ejercicios propuestos

Ejercicio 1: Diagrama de tiempos


Se dispone de un pulsador de activacin E0.0. Se desea automatiza un sistema que debe cumplir el diagrama de
tiempos definido en la imagen adjunta. Disear el programa, teniendo en cuenta que durante el ciclo se debe evitar
cualquier rearme de tiempos

1. Disea el programa con SI


2. Disea el programa con SV
3. Disea el programa con SE
4. Disea el programa con SS
5. Disea el programa con SA

Ejercicio2: Control de un semforo

Semforo coches

Verde

mbar
fijo

Rojo

Semforo peatones

Rojo

Rojo

Verde

mbar
intermitente
Verde
intermitente
3

Se dispone de un semforo, el cual en condiciones normales se encuentra del modo siguiente: Verde vehculos, Rojo
peatones
El ciclo se inicia en el momento que un peatn accione sobre el pulsador situado en el semforo. Durante el ciclo se
evitar cualquier rearme hasta 2 minutos despus de la finalizacin del ciclo.
Finalizado el proceso, el semforo regresar al estado normal.

Pgina:
57/82

Ejercicio 3: Generador de pulsos


Realizar un tren de pulsos de 1 ciclo de scan con un periodo de 1 seg.

Ejercicio 4: Generador de onda cuadrada


Realizar una onda cuadrada peridica de 1 seg.

Ejercicio 5: MAQUINA DISPENSADORA DE BEBIDA


Determinada cadena de comida rpida requiere de un sistema de llenado de vasos de bebida automatizado. El proceso
de llenado comienza cuando se acciona el pulsador de llenado correspondiente al tamao de bebida, siempre que un
sensor dispuesto a tal efecto detecte la presencia de un vaso.
El flujo de lquido lo controla un servo-vlvula que permanecer abierto un tiempo determinado dependiendo del
tamao de bebida que se quiera dispensar:
Bebida grande: 10s
Bebida mediana: 7s
Bebida pequea: 4,5 s
Adems el sistema dispone de 2 indicadores de estado:
LLENADO, se enciende mientras el dispensador est proporcionando bebida.
LLENO, se enciende al terminar el llenado mientras no se retire el vaso del dispensador.
Realiza el programa lgico utilizando un slo temporizador.

Pgina:
58/82

10.

FORMATOS DE REPRESENTACIN DE NMEROS

Tenemos 3 formatos de nmeros: Entero, doble entero y real.

10.1. Nmeros enteros (I)


Los nmeros enteros se denominan como I (de Integer).
Un nmero entero es un nmero binario de 16 bits que tiene como signo el bit ms significativo.
Lmite:

N positivos: 215-1 = 32767 (El 0 se considera positivo)


N negativos: 215= -32768

Ejemplo:
L 1 //Carga el nmero entero 1 en ACU1

N negativo: Se hace el complemento a 2, cambiando ceros por unos y sumando 1.


Ejemplo:
L -3

//Carga el nmero entero 3 en ACU1

3 = 0000 0000 0011


C1= 1111 1111 1100
+1 = 1111 1111 1101
El nmero 3 por tanto sera:

Pgina:
59/82

10.2. Nmeros dobles enteros (D)


Los nmeros dobles enteros se denominan como D.
Son nmeros binarios de 32 bits.

Lmite:
N positivos: 231-1 = 2147483647 (El 0 se considera positivo)
N negativos: 231 = -21474863648
Ejemplo:
L L#-1

//Carga el nmero doble entero -1 en ACU1

10.3. Nmeros reales (R)


Los nmeros reales se denominan como R. Son nmeros binarios de 32 bits que constan de 2 partes:
Mantisa: los 3 bytes ms altos
Exponente: el byte ms alto

Se puede expresar de forma exponencial o como quebrados.


Ejemplo:
L 4.83 //Carga el nmero real 4,83 en ACU1
El editor Step-7 lo pasa automticamente a la forma exponencial:
L 4.830000e+000
Se redondea con exactitud hasta el 6 dgito

Pgina:
60/82

11.

OPERACIONES DE COMPARACIN

11.1. Realizacin de comparaciones


Las operaciones de comparacin sirven para comparar los siguientes pares de valores numricos:
Dos enteros (16 bits)
Dos enteros dobles (32 bits)
Dos nmeros reales (de coma flotante, 32 bits, IEEE-FP)
Los valores numricos se cargan en los ACU's 1 y 2. Las operaciones de comparacin comparan l valor del ACU2 con
el valor depositado en el ACU1.
El resultado de la comparacin es un dgito binario. Un 1 significa que el resultado de la comparacin es verdadero,
mientras que un 0 significa que el resultado de la comparacin es aso. Este resultado se encuentra almacenado en el bit
de resultado lgico (RLO). Este resultado puede emplearse para su posterior procesamiento.
Cuando se ejecuta una comparacin tambin se activan los bits de estado A1 y A0.

11.2. Comparar dos nmeros enteros y dobles enteros


Instrucciones y descripcin:

Operacin
==I
==D
<>I
<>D
>I

Comparacin efectuada
El entero (16 bits) de la palabra baja del ACU2 es igual al entero (16 bits) de la palabra baja del
ACU 1
El entero doble (32 bits) del ACU2 es igual al entero doble (32 bits) del ACU1.
El entero (16 bits) de la palabra baja del ACU2 no es igual al entero (16 bits) de la palabra bajan
del ACU 1.
El entero doble (32 bits) del ACU2 no es igual al entero doble (32 bits) del ACU1.
El entero (16 bits) de la palabra baja del ACU2 es mayor que el entero (16 bits) de la palabra baja
del ACU 1.
El entero doble (32 bits) del ACU2 es mayor que el entero doble (32 bits) del ACU1.

>D
<I

El entero (16 bits) de la palabra baja del ACU2 es menor que el entero (16 bits) de la palabra baja
del ACU 1.
El entero doble (32 bits) del ACU2 es menor que el entero doble (32 bits) del ACU1.

<D
>=D

El entero (16 bits) de la palabra baja del ACU2 es mayor o igual al entero (16 bits) de la palabra
baja del ACU 1.

>=D

El entero doble (32 bits) del ACU2 es mayor o igual al entero doble (32 bits) del ACU1.

<=I

El entero (16 bits) de la palabra baja del ACU2 es menor o igual al entero (16 bits) de la palabra
baja del ACU 1.
El entero doble (32 bits) del ACU2 es menor o igual al entero doble (32 bits) del ACU1.

<=D
Estas operaciones afectan al estado de los bits A1 y A0, en funcin de la condicin que se haya cumplido, tal y como se
muestra en la tabla siguiente:

Pgina:
61/82

Registros afectados: RLO, A1, A0


Ejemplo:
L MW10
L EW0
==I
= A 1.0
>I
= A 2.0

//introducimos en el ACU1 la palabra de marcas MW10


//introducimos en el ACU1 la palabra de entradas EW0
//comparamos la igualdad de la palabra baja del ACU1 y ACU2
//la salida 1.0 se excitar si MW10 y EW0 son iguales
//comparamos el valor de la palabra baja del ACU2 para ver si es mayor que ACU1
//la salida 2.0 se excitar si MW10 es mayor que EW0

KOP:

Pgina:
62/82

Descripcin de la operacin
CMP? y (Comparar enteros) puede utilizarse como un contacto normal. El cuadro puede colocarse en las mismas
posiciones que puede tomar un contacto normal. Las entradas IN1 y IN2 son comparadas atendiendo al criterio de
comparacin que se haya seleccionado.
Si la comparacin es verdadera, el RLO de la operacin es "1". El RLO se combina mediante una Y lgica con el RLO
del circuito completo siempre que el elemento de comparacin est conectado en serie, y mediante una O lgica si el
cuadro est conectado en paralelo.

AWL

Ejemplo:
E 0.0

E 0.1

CMP
>=I

MW0

IN1

MW2

IN2

A 4.0

(S)

La salida A4.0 se activa si E 0.0 Y E 0.1 son 1 Y si MW0>=MW2

11.3. Comparar dos nmeros reales


Instrucciones y descripcin:
Operacin

Comparacin efectuada

==R

El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es igual al nmero de coma flotante de
32 bits IEEE-FP del ACU 1
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 no es igual al nmero de coma flotante
de 32 bits IEEE-FP del ACU 1
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es mayor que el nmero de coma
flotante de 32 bits IEEE-FP del ACU 1
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es menor que el nmero de coma
flotante de 32 bits IEEE-FP del ACU 1
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es mayor o igual que el nmero de
coma flotante de 32 bits IEEE-FP del ACU 1
El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es menor o igual que el nmero de
coma flotante de 32 bits IEEE-FP del ACU 1

<>R
>R
<R
>=R
<=R

Pgina:
63/82

11.4. Ejercicios propuestos


Ejercicio 1: rea de almacenamiento
La figura muestra un sistema de dos cintas transportadoras con un rea de almacenamiento temporal entre ellas. La cinta
1 lleva paquetes al rea de almacenamiento. Una barrera fotoelctrica situada al final de la cinta 1, junto al rea de
almacenamiento, se encarga de determinar cuntos paquetes se han suministrado al rea de almacenamiento. La cinta 2
transporta paquetes desde el rea de almacenamiento temporal a un cargador donde llegan camiones para recoger los
paquetes y suministrarlos a los clientes. Una barrera fotoelctrica al final de la cinta transportadora 2, junto al rea de
almacenamiento, determina cuntos paquetes salen del rea hacia el cargador.
Un panel de cinco lmparas indica el nivel de llenado del rea de almacenamiento temporal.

Ejercicio 2: ACCESO A UN CENTRO COMERCIAL


Se desea controlar el acceso, de manera automtica, a una sala comercial con capacidad de 100 plazas de asiento.
Admitiendo 10 personas ms de las autorizadas, que tendran que permanecer de pie.
Disponemos de dos barreras luminosas a la entrada de la sala, A y B, situadas de tal forma que al entrar una
persona en la sala, interrumpa primero la barrera A y luego la B. La distancia fsica entre ellas es la mnima, de
manera que siempre se interrumpirn tambin simultneamente durante la entrada. De forma semejante sucede cuando
una persona sale de la sala. Primero interrumpir la barrera B y despus la A.
Cuando en la sala tenemos menos de 100 personas lo indicaremos activando la luz verde situada en la entrada. Si se
diera el caso de que en un momento determinado hubiera ms de 100 personas y menos de 110, deber activarse la luz
azul situada en la entrada. En el momento que entrara la persona 110 ser la luz roja la que activaramos.

Pgina:
64/82

12.

OPERACIONES DE CONVERSIN

Instrucciones: "BTD", "BTI", "DTB", "DTR","DTR","ITB","ITD","RND","RND+","RND-" y "TRUNC"


Son operaciones incondicionales, no dependen ni afectan el RLO.
Se efectan sobre el ACU1, donde tambin se almacena el resultado.
Instruccin BTD : Convierte el nmero BCD de 7 dgitos en doble entero.
Valores admisibles: -9999999 9999999
BCD_DI
EN

ENO

IN

OUT

Instruccin BTI : Convierte el nmero BCD de 3 dgitos de la palabra baja de ACU1 en un entero (16 bits) que se
guarda en la palabra baja de ACU1.
Valores admisibles: -999 999
BCD_I
EN

ENO

IN

OUT

Instruccin DTB : Convierte un entero doble (32 bits) de ACU1 en un BCD de 7 dgitos.

DI_BCD
EN

ENO

IN

OUT

Instruccin DTR : Convierte un entero doble (32 bits) de ACU1 en real (32 bits). Si es necesario se redondea el
resultado. Un entero de 32 bits es ms exacto que un real.
DI_R
EN

ENO

IN

OUT

Pgina:
65/82

Instruccin ITB : Convierte un entero (16 bits) de ACU1 en BCD de 3 dgitos. El resultado lo guarda en la palabra
baja del ACU1.
I_BCD
EN

ENO

IN

OUT

Instruccin ITD : Convierte un entero (16 bits) de la palabra baja de ACU1 en doble entero (32 bits).
I_DI
EN

ENO

IN

OUT

Observacin: No hay una instruccin que convierta de entero a real. Hay que hacer dos conversiones consecutivas: ITD
y DTR.
Instruccin RND: Redondea un nmero real (32 bits) a entero (32 bits). Primero lo convierte y luego lo redondea al
entero ms prximo. Si el primer decimal despus de la coma es de 0 a 4, redondea a la baja; si el decimal es de 5 a 9,
redondea al alza.
RONUD
Ejemplos:

148.7
148.4

RND = 149
RND = 148

EN

ENO

IN

OUT

Instruccin RND+ y RND: RND+ redondea el resultado al nmero entero mayor o igual que el real convertido.
RND- redondea el resultado al nmero entero menor o igual que el real convertido.
Ejemplos:

148.7
148.4
5.7

RND+ = 149
RND = 148
RND+ = 149
RND = 148
RND+ = 5
RND = 6

CEIL

FLOOR

EN

ENO

EN

ENO

IN

OUT

IN

OUT

Instruccin TRUNC : Convierte un real (32 bits) a doble entero (32 bits) y lo redondea al entero de menor valor
absoluto.
Ejemplos:

8.34
8.7
8.7

RND = 8
TRUNC = 8
RND = 9
TRUNC = 8
RND = 9
TRUNC = 8

TRUNC
EN

ENO

IN

OUT

Pgina:
66/82

13.

OPERACIONES ARITMTICAS

13.1.

Operaciones aritmticas con enteros

Para enteros instrucciones: "+I", "I", "*I", "/I"


Para dobles enteros instrucciones: "+D", "D", "*D", "/D"
Combinan el contenido de ACU1 y ACU2.
El resultado se deposita en ACU1 y el ACU2 permanece inalterado.
En el S7-400 despus de la operacin existe 4 acumuladores
Son operaciones incondicionales del RLO y no lo afectan.
La instruccin de suma +I, +D
ADD_DI

ADD_I
EN

EN

ENO

IN1

IN1
IN2

ENO

IN2

OUT

OUT

Suma el contenido de ACU2 con ACU1 y el resultado lo almacena en ACU1.


En el caso de sumar dos enteros esta operacin acta sobre las palabras bajas de los acumuladores y el resultado lo
almacena en la palabra baja del ACU1.

Ejemplo:
L8
L9
+I

//ACU2+ ACU1

ACU1=17; ACU2=8

La instruccin de resta I, D
SUB_I
EN

ENO

IN1
IN2

SUB_DI
EN

ENO

IN1
OUT

IN2

OUT

Resta el contenido de ACU2 con ACU1 y el resultado lo almacena en ACU1 ( IN1 - IN2 = OUT ).

Ejemplo:
L 10
L3
I

//ACU2-ACU1

ACU1=7; ACU2=10

Pgina:
67/82

La instruccin de multiplicacin *I, *D


MUL_DI

MUL_I
EN

ENO

ENO

IN1

IN1
IN2

EN

OUT

IN2

OUT

Multiplica el contenido de ACU2 por ACU1 y el resultado lo almacena en ACU1.


Si se multiplican dos enteros el resultado se almacena como doble entero en ACU1.
Ejemplo:
L L#2
L L#100
*D
//ACU2* ACU1

ACU1=200; ACU2=2

La instruccin de divisin /I, /D divide el contenido de ACU2 entre ACU1 y el resultado se almacena de dos
formas distintas segn se multipliquen enteros y dobles enteros:
En caso de divisin de enteros el resultado se almacena en ACU1 en forma de dos enteros de 16 bits:
DIV_I
EN

ENO

IN1
IN2

OUT

En caso de dividir dos enteros dobles el cociente se almacena en ACU1 y el resto de la divisin se obtiene realizando la
operacin MOD.
Ejemplo:
MOD
L ED10
L MD14
EN
ENO
/D
T MD20
//Almaceno el cociente
IN1
MOD
T MD24
//Almaceno el resto
IN2
OUT

13.2. Operaciones aritmticas con nmeros reales


Instrucciones: "+R", "R", "*R", "/R"
La instruccin de suma +R, suma el contenido de ACU2 (32bits) con ACU1 (32bits) y el resultado lo almacena en
ACU1 (32 bits).
ADD_R

Ejemplo:
L 1.0
L 2.4
+R

EN
//ACU2+ ACU1

ACU1=3.4; ACU2=1.0

ENO

IN1
IN2

OUT

Pgina:
68/82

La instruccin de resta R resta el contenido de ACU2 (32bits) con ACU1 (32bits) y el resultado lo almacena en
ACU1 (32 bits).
SUB_R
Ejemplo:
EN
ENO
L 25.0
IN1
L 13.4
R
//ACU2-ACU1
ACU1=11.6; ACU2=25.0
IN2
OUT
La instruccin de multiplicacin *R multiplica el contenido de ACU2 (32bits) por ACU1 (32bits) y el resultado lo
almacena en ACU1 (32 bits).
MUL_R

Ejemplo:

EN
L 10.0
L 2.0
*R
//ACU2* ACU1

ENO

IN1
ACU1=20.0; ACU2=10.0

IN2

OUT

La instruccin de divisin /R divide el contenido de ACU2 (32bits) entre ACU1 (32bits) y el resultado lo almacena
en ACU1 (32 bits).
DIV_R
Ejemplo:
EN
ENO
IN1
L 10.0
L 2.0
/R

IN2
//ACU2* ACU1

OUT

ACU1=5.0; ACU2=10.0

Instruccin ABS: Valor absoluto de ACU1, y el resultado se deposita en ACU1.


Instruccin SQRT: Raz cuadrada de ACU1 (debe ser 0), y el resultado se deposita enACU1.
Instruccin SQR: Cuadrado de ACU1, y el resultado se deposita en ACU1.
Instruccin LN: Logaritmo natural de ACU1 (logaritmo con base e), y el resultado se deposita en ACU1.
Instruccin EXP: Calcula el exponente (valor exponencial con base e) de ACU1, y el resultado se deposita en
ACU1.
Instrucciones SIN, COS y TAN: Calculan el seno, coseno o tangente de un ngulo indicado en radianes, y el
resultado se deposita en ACU1.
Instruccin ASIN: Calcula el arcoseno de ACU1 (entre 1 y 1). El resultado es un ngulo indicado en radianes: -/2
arcoseno(ACU1) /2
Instruccin ACOS: Calcula el arcocoseno de ACU1 (entre 1 y 1). El resultado es un ngulo indicado en radianes: 0
arcocoseno(ACU1)
Instruccin ATAN: Calcula el arcotangente de ACU1. El resultado es un ngulo indicado en radianes: /2
arcotangente(ACU1) /2

Pgina:
69/82

13.3. Ejercicios propuestos


Ejercicio 1: Multiplicacin y divisin
Con la entrada E0.5 cargo un valor inicial en AB0.
A cada pulso de la entrada E0.0 ir multiplicando ese valor de AB0 por 2 hasta un mximo de 255. Adems, a cada
pulso de la entrada E0.1 podr ir dividiendo ese valor entre 2 hasta un mnimo de 1.
Ejercicio 2: GASOLINERA
Simularemos el funcionamiento de un surtidor de gasolina.
Introduciremos la cantidad de dinero y seleccionaremos el tipo de gasolina que queramos cuyo precio por litro es el
siguiente:
Tipo de gasolina
Sin plomo
Sper

Precio/litro
1 euro
1,2 euros

Gasoil

0,88 euros

Cuando usemos la manguera, que simularemos como pulsador, nos saldrn X litros de gasolina a razn de 1 litro por
segundo (la salida de gasolina la simulamos temporizando una salida del autmata).
ENTRADAS
Botn 6 euros
Botn 3 euros
Anular
Pulsador sin plomo
Pulsador sper
Pulsador gasoil
Pulsador manguera

E0.0
E0.1
E0.2
E0.3
E0.4
E0.5
E0.6

SALIDAS
Luz funciona
Luz sin plomo
Luz sper
Luz gasoil
Salida gasolina

A0.0
A0.1
A0.2
A0.3
A0.4

Pgina:
70/82

14.

OPERACIONES LGICAS

Las operaciones lgicas son instrucciones muy tiles a la hora de tratar estados de la instalacin. A menudo su
desconocimiento obliga al programador a realizar complicadas secuencias de bits, cuando se hubiera podido tratar todos
los datos agrupados en una doble palabra, y resolver la tarea en pocas lneas de cdigo.

14.1.

Operacin lgica AND

La AND lgica en Step 7 puede realizarse en dos formatos distintos:


Palabra UW: realiza una AND entre los dos acumuladores a nivel de palabra (utilizando los 16 primeros bits).
Doble Palabra UD: realiza una AND entre los dos acumuladores a nivel de doble palabra (utilizando los 32
bits).
Esta operacin se suele utilizar para quitar bits (o aplicar una mscara a una variable) con pocas instrucciones.
Supongamos que deseamos resetear una serie de alarmas de una palabra determinada (MW10), eliminando los
indicados en una mscara de alarmas no tiles (MW20). Las alarmas que queden (MW24) son para nosotros las vlidas.

14.2. Operacin lgica O.


La O lgica en Step 7 puede realizarse en dos formatos distintos:
Palabra OW: realiza una O lgica entre los dos acumuladores a nivel de palabra (utilizando los 16 primeros
bits).
Doble Palabra OD: realiza una O lgica entre los dos acumuladores a nivel de doble palabra (utilizando los 32
bits).
Esta operacin se suele utilizar para poner bits a 1 (o aplicar una mscara a una variable) con pocas instrucciones.
Supongamos que tenemos que activar un motor en una palabra de estado de motores.
Las instrucciones correspondientes seran:

Pgina:
71/82

14.3. Operaciones lgicas XOR.


La XOR lgica en Step 7 puede realizarse en dos formatos distintos:
Palabra XOW: realiza una XOR lgica entre los dos acumuladores a nivel de palabra (utilizando los 16
primeros bits).
Doble Palabra XOD: realiza una XOR lgica entre los dos acumuladores a nivel de doble palabra (utilizando
los 32 bits).
Las operaciones XOR se utilizan para detectar cambios de estado en bits de variables con pocas instrucciones.
Supongamos que deseamos conocer la activacin de alguna alarma de las 32 que componen una doble palabra de
marcas (MD0). Cuando se produzca una transicin positiva de alguno de sus bits deseamos setear una salida, que est
cableada a una sirena que hace sonar la alarma en la instalacin. Con la siguiente subrutina, utilizando la XOD,
podremos realizar esta accin, muy til en todas las instalaciones.

El nico punto que puede no ser obvio es la parte en la que se realiza la Y lgica con el valor del ACU. Despus de
realizar la XOD, necesitamos conocer si el cambio en algn bit de la palabra se debe a que aparece la alarma o a que
desaparece. Es por esto por lo que se requiere realizar esta operacin, ya que en caso contrario la sirena sonara cuando
aparece la alarma y cuando desaparece.
La funcin XOR es la gran desconocida por parte de los programadores para detectar qu est cambiando en su proceso.

Pgina:
72/82

15.

OPERACIONES DE DESPLAZAMIENTO

Instrucciones: "SRW", "SLW", "SRD", "SLD", "SSI", "SSD"


Desplazan el contenido de ACU1 bit a bit. Son incondicionales, no dependen del RLO.
Podemos desplazar, tanto a la derecha como a la izquierda, palabras, doble palabras, enteros y dobles enteros.

15.1. Desplazar palabras


A la derecha:
SRW <n de bits> Desplaza la palabra baja (bits 0
al 15) de ACU1 n bits (0-15) a la derecha.

A la izquierda:
SLW <n de bits> Desplaza la palabra baja (bits 0
al 15) de ACU1 n bits (0-15) a la izquierda. Los bits
vacos se rellenan con cero.

15.2. Desplazar doble palabras


A la derecha:
SRD <n de bits> Desplaza el contenido de
ACU1 n bits (0-32) a la derecha. Los bits vacos se
rellenan con cero.

A la izquierda:
SLD <n de bits> Desplaza el contenido de
ACU1 n bits (0-32) a la izquierda. Los bits vacos
se rellenan con cero.

15.3. Desplazar enteros


A la derecha:
SSI <n de bits> Desplaza la palabra baja (bits 0
al 15) de ACU1 n bits (0-15) a la derecha.

Pgina:
73/82

15.4. Desplazar dobles enteros


A la derecha:
SSD <n de bits> Desplaza el contenido de ACU1 n
bits (0-31) a la derecha. Los bits vacos se rellenan con el
bit de signo (el bit 32)

15.5. Ejercicio propuesto


Haremos que los leds de la palabra de salida se iluminen consecutivamente durante 0,5 seg desde arriba hacia abajo y
viceversa

16.

OPERACIONES DE ROTACIN

Instrucciones: "RRD", "RLD"


Rotan el contenido de ACU1 equis posiciones de bit.

16.1. Rotar palabras dobles


A la derecha:
RRD <n de bits> Rota el ACU1 n bits (0-32) a la
derecha. Los bits que van quedando vacos se llenan
con los que salen del ACU1.

A la izquierda:
RLD <n de bits> Rota el ACU1 n bits (0-32) a la
izquierda. Los bits que van quedando vacos se llenan
con los que salen del ACU1.

Pgina:
74/82

Ejemplo:

Ejemplo de aplicacin
El desplazamiento y la rotacin son las operaciones necesarias para poder realizar un control secuencial (por pasos) de
un programa
La utilidad de estas instrucciones va a ser, por ejemplo, la activacin de una serie de motores o etapas de programa de
una manera secuencial.
Vamos a suponer que queremos activar una serie de 10 bombas, conectadas a las marcas M1.0 hasta la M0.1. Con un
bit, que se va a desplazar en este rango, indicaremos que bomba debe de arrancar cada vez.

Es importante tener cuidado con dos cosas en estas acciones:


9 No activar bits de esta palabra por otras partes del programa.
9 Entrar a esta subrutina exclusivamente cuando se deba realizar el cambio de bomba (normalmente es cada cierto
tiempo).

Pgina:
75/82

17.

OPERACIONES DE SALTO

La instruccin Salto es una instruccin de control de programa que significa ir a etiqueta.


La instruccin de Salto identifica el punto donde se interrumpe el programa y la etiqueta indica el punto donde el
programa contina. Una etiqueta est formada por un mximo de cuatro caracteres; el primer carcter debe ser una letra,
los restantes pueden ser letras o nmeros. La etiqueta debe estar en el mismo mdulo de programa que la instruccin de
salto.
Fundamentalmente, debemos distinguir dos categoras de Salto:

Salto Incondicional : El Salto Incondicional se ejecuta ignorando cualquier condicin.


Este tipo de salto no se ve afectado por los bits de la palabra de estado.
Salto Condicional : El Salto Condicional se ejecuta solamente si se cumple una condicin previa.
Esta condicin puede referirse a cualquiera de los bits de la palabra de estado: RLO, RB, OV, OS, CC1 y
CC2, etc.

(Vase pgina 9)

17.1. Operaciones de salto incondicional

Pgina:
76/82

AWL: "SPA" y "SPL"


Las operaciones de salto incondicional (SPA) interrumpen el desarrollo normal del programa, haciendo que el mismo
salte a una meta determinada (operando de la operacin SPA). La meta define el punto en que deber continuar el
programa. El salto se efecta independientemente de condiciones.
Ejemplo de salto SPA:
U E 1.0
SPA AQU
AQUI: U E 2.0
= A 3.0

//cargamos en el RLO el valor de la entrada 1.0


//saltamos de forma incondicional a la lnea con meta "AQUI"
//aqu continua la ejecucin del programa
/ /introducimos el resultado en la salida 3.0

La operacin Salto a meta (SPL) es un distribuidor de saltos seguido de una serie de saltos incondicionales a metas
determinadas (lista de saltos). El salto de la lista se escoge segn el valor contenido en el ACU1, es decir si el acu1 vale
0 se escoger el primer salto incondicional (SPA), si vale 1 se saltar al segundo salto... Si el valor se encuentra fuera de
la lista se salta a la meta especificada en SPL.
Una meta se compone de 4 caracteres como mximo. El primer carcter debe ser siempre una letra, no importando si el
resto son nmeros o letras. La meta se especifica normalmente en el operando de la instruccin de salto, y seguida de
dos puntos frente a la lnea que posee la meta (ver ejemplos).
Ejemplo de salto SPL:
L MB100
SPL NORM
SPA UNO
SPA CONT
SPA DOS

//cargamos en el ACU1 un valor de un mdulo de datos


//se salta a NORM si el valor de ACU1 no est en lista
//se salta a UNO si ACU1 vale 0
//se salta a CONT si ACU1 vale 1
//se salta a DOS si ACU1 vale 2

NORM: SPA CONT


UNO: U E 0.0
SPA CONT
DOS:
U E 1.0
SPA CONT
CONT: = A 2.0
KOP: ---(JMP)---

//se salta a CONT de forma incondicional


//instruccin meta del salto UNO
//se salta a CONT de forma incondicional
//instruccin meta del salto DOS
//se salta a CONT de forma incondicional
//aqu saltamos finalmente, continuando el programa

Salto absoluto

Funciona como un salto absoluto cuando no hay otro elemento KOP entre el conductor izquierdo y la operacin (v.
ejemplo).
Cada salto ---( JMP ) tiene que tener una meta (LABEL).
No se ejecutarn las operaciones que se encuentren entre la operacin de salto y la meta!
Ejemplo:
Segmento 1
CAS1

( JMP )
...
...

...
...

Pgina:
77/82

Segmento x
CAS1
E 0.4

A 4.1

( R)
El salto se ejecuta en todos los casos, omitindose (pasando por alto) las operaciones que se encuentren entre la
operacin de salto y la meta.

17.2. Operaciones de salto condicional, en funcin del RLO

Instrucciones: "SPB", "SPBN", "SPBB", "SPBNB"


Estas instrucciones efectan un salto en el programa hacia una meta determinada, para el caso de cumplir la condicin
que necesitan:
SPB: salto si RLO=1
SPBN: salto si RLO=0
SPBB: salto si RLO=1 y RB=1
SPBNB: salto si RLO=0 y RB=1
Ejemplo de salto SPB:
U E 2.0
//cargamos en el RLO el valor de la entrada 2.0
SPB AQUI
//saltamos a la lnea con meta "AQUI" si el RLO=1
U E 1.0
//esta lnea no se ejecuta si se salta
AQUI: U E 3.0
//aqu continua la ejecucin del programa
= A 0.0
//introducimos el resultado en la salida 0.0
Como podemos observar en el ejemplo, el resultado de la salida 0.0 depende primeramente del valor de la entrada 2.0,
ya que ella decide si se tiene en cuenta tambin la entrada 1.0 en el resultado final.

Pgina:
78/82

Funciona como un salto condicional cuando el RLO de la combinacin lgica anterior es "1". Cada salto ---( JMP )
tiene que tener una meta (LABEL).
No se ejecutarn las operaciones que se encuentren entre la operacin de salto y la meta! Si un salto condicional no se
ejecuta, el RLO cambia a "1" despus de la operacin de salto.
Ejemplo:
Segmento 1
E 0.0

CAS1

( JMP )
Segmento 2
E 0.3

A 4.0

( R)
Segmento x
CAS1
E 0.4

A 4.1

( R)
Si la entrada E 0.0 es 0 se ejecuta el salto a la meta CAS1. Al llevarse a cabo el salto, en la salida A 4.0 no se ejecuta la
operacin Poner salida a 0, aunque E 0.3 sea 1.

Pgina:
79/82

17.3. Operaciones de salto condicional, en funcin de RB u OV/OS

Instrucciones: "SPBI", "SPBIN", "SPO", "SPS"


Estas instrucciones efectan un salto en el programa hacia una meta determinada, para el caso de cumplir la condicin
que necesitan:
SPBI: salto si RB=1
SPBIN: salto si RB=0
SPO: salto si OV=1
SPS: salto si OS=1
Ejemplo de salto SPS:
SPS AQUI
//saltamos a la lnea con meta "AQUI" si OV=1
SPA SEGU
//esta lnea no se ejecuta si OV=1
AQUI: SET
//forzamos el RLO a 1
= A 1.0 //con la salida 1.0 indicamos si hubo un error previo en la anterior ejecucin del programa
SEGU: U E 3.0
//aqu continua la ejecucin del programa normalmente
= A 0.0
//introducimos el resultado en la salida 0.0

17.4. Operaciones de salto condicional, en funcin de A1 y A0

Instrucciones: "SPZ", "SPN", "SPP", "SPM", "SPMZ", "SPPZ", "SPU"

Pgina:
80/82

Estas instrucciones efectan un salto en el programa hacia una meta determinada, para el caso de cumplir la condicin
que necesitan:
A continuacin se muestra el estado de A1 y A0 tras una operacin con los acumuladores:

Pgina:
81/82

17.5. Finalizar mdulos


Instrucciones: "BEA" y "BEB"
Durante el ciclo del autmata programable, el sistema operativo ejecuta un programa estructurado mdulo a mdulo. La
operacin fin de mdulo es la que finaliza el mdulo en ejecucin.
BEA finaliza la ejecucin del mdulo actual y devuelve el control al mdulo que llam al mdulo finalizado. Esta
instruccin se ejecuta sin depender del RLO ni de cualquier otra condicin.
Ejemplo:
U E 1.0
//introducimos en el RLO el valor de la entrada 1.0
SPB NEXT
//si la entrada 1.0 salta a meta NEXT
L EW 4
T EW 10
U E 6.0
U E 6.1
S M 12.0
BEA
//aqu finaliza el mdulo de forma incondicional
NEXT: NOP 0
Ejemplo:
U E 1.0
//introducimos en el RLO el valor de la entrada 1.0
SPB NEXT
//si la entrada 1.0 salta a meta NEXT
L EW 4
T EW 10
U E 6.0
U E 6.1
S M 12.0
BEA
//aqu finaliza el mdulo de forma incondicional
NEXT: NOP 0
BEA
//fin de mdulo
U E 1.1
//estas instrucciones nunca se ejecutaran
S A 4.0
BEB finaliza la ejecucin del mdulo actual y devuelve el control al mdulo que llam al mdulo finalizado. Esta
accin se realiza si el RLO es 1. Si no es as se contina la ejecucin del actual mdulo, pero con el RLO a 1.
Ejemplo:
U E 1.0
BEB
U E 2.0
= A 3.0
BEA

//introducimos en el RLO el valor de la entrada 1.0


//si la entrada 1.0 vale 1 el mdulo acaba aqu

//aqu finaliza el mdulo de forma incondicional

Si el mdulo que finaliza es el OB1 se finaliza el ciclo de ejecucin del programa, volviendo a comenzar uno nuevo.
---( RET )
RET (Retorno) sirve para salir de los bloques condicionalmente. Para emplear esta salida se necesita una combinacin
lgica previa.

Pgina:
82/82