Está en la página 1de 92

2015

PLC Siemens S7-300 con


Step7
Programacin bsica
Fundamentos de programacin bsica de Simatic S7-300 con Step 7

Roberto lvarez Sindn


IES Antonio Jos Cavanilles. Alicante
Curso: 2015/2016
Contenido
01. Autmata S7-300 compacto ............................................................................................................ 1
02. Elementos de trabajo....................................................................................................................... 2
03. Ciclo de trabajo (SCAN) .................................................................................................................... 3
04. Lenguajes de programacin............................................................................................................. 5
05. Software de programacin .............................................................................................................. 6
06. Estructura de la memoria del s7-300............................................................................................. 16
07. Tipos de datos y visualizacin ........................................................................................................ 17
07.1 Marcas de memoria............................................................................................................. 17
07.2 Entradas y salidas ................................................................................................................ 17
07.3 Declaracin de smbolos...................................................................................................... 18
07.4 Declaracin de variables...................................................................................................... 19
08. Creacin de funciones (FC) o plantillas.......................................................................................... 21
09. Operaciones con bits. Registro de estado ..................................................................................... 22
10. SET y RESET .................................................................................................................................... 23
11. Flancos ascendente (P) y descendente (N) .................................................................................... 27
12. Operaciones de temporizacin ...................................................................................................... 28
13. Byte de marcas. Generador de pulsos: .......................................................................................... 32
14. Remanencia en el Step7. ............................................................................................................... 36
15. Plantillas que contienen temporizadores ...................................................................................... 37
16. Modulo de organizacin OB100 (Modulo de Arranque) ............................................................... 39
17. Contadores .................................................................................................................................... 42
18. Temporizadores y contadores IEC ................................................................................................. 44
19. Operaciones de salto ..................................................................................................................... 48
20. Movimiento y transferencia de datos ........................................................................................... 52
21. Comparaciones .............................................................................................................................. 58
22. Operaciones lgicas entre palabras o dobles palabras. ................................................................ 61
23. Operaciones aritmticas con nmeros enteros ............................................................................ 62
24. Operaciones aritmticas con nmeros reales en coma flotante................................................... 64
25. Operaciones de desplazamiento y rotacin .................................................................................. 65
26. Operaciones de control de programa............................................................................................ 68
27. Bloques de datos (DB). .................................................................................................................. 70
28. Bloques de organizacin (OB). ....................................................................................................... 75
29. Fecha y hora en Step7. Uso del OB10 ............................................................................................ 82

Documentacin de referencia:
Grupo trabajo EDCAI http://www.iespalauausit.com/edcai/html/indexcast.htm
Blog de igo Gtiez: http://programacionsiemens.com/
Web Siemens: http://siemens.es/sce

Este trabajo se distribuye bajo licencia Creative Commons BY-NC-SA


http://creativecommons.org/licenses/by-nc-sa/4.0/
01. Autmata S7-300 compacto

1. Ranura de Micro Memory Card con expulsor

Estas CPUs no traen memorias integradas, es imprescindible el uso de la Memory Card.

2. Indicadores de estado y de error.

SF (rojo) Indicador de error de Hardware, fallo del firmware del equipo, instruccin de programa
incorrecta, asignacin de parmetros de sistema errneos, errores aritmticos internos, errores
de tiempo, Flash-Eprom externa errnea, fallo de la batera, fallo de acceso a la periferia (no para
la periferia integrada en la CPU).
BF (rojo) Error de bus
DC5V (verde) Alimentacin de 5 Voltios para CPU y para el bus S7-300, correcta.
FRCE(amarillo) Peticin de forzado permanente activo.
RUN (verde) CPU en estado Run .
STOP (amarillo) CPU en estado Stop.

3. Selector de modo de operacin.

RUN El autmata ejecuta el programa.


STOP El autmata NO ejecuta el programa.
MRES Borrado total del programa. Requiere una secuencia especial de operacin

4. Interface Multipunto MPI

La interface MPI es el enlace entre la CPU y el ordenador (187 kb) o para comunicar una red MPI.
La velocidad de transmisin es de 1875 Kb,

5. Interface para Profibus DP

Mediante este conector se puede conectar el autmata a una red profibus, ya sea como master o
como esclavo. En caso de no disponer de este conector, habr que utilizar una tarjeta de
comunicaciones CP 342-5 acoplada a la CPU.
IES Cavanilles. Alicante Pgina 1
6. Conexin Alimentacin

En estos bornes se realiza la alimentacin de la CPU a 24 V DC que le ser proporcionada por una
fuente de alimentacin normalmente enganchada al rack.

7. Entradas y Salidas integradas.

Este autmata lleva integrado:

5 Entradas analgicas y 2 salidas analgicas. (configurables en tensin o intensidad).

24 E/D Entradas digitales, 8 en cada grupo (por defecto EB124, EB125 y EB126)

16 S/D Salidas digitales, 8 en cada grupo (por defecto AB124 y AB125).

Las entradas de digitales pueden configurarse como entradas de interrupcin. Si se configuran


como entradas de alarma, no se utilizarn como a entradas normales.

2, 3 o 4 Contadores de alta velocidad (segn el tipo de CPU)

1 Canal para posicionamiento (segn el tipo de CPU).

La numeracin de las entradas y de las salidas es configurable. Se puede cambiar su numeracin.

02. Elementos de trabajo


Los elementos de trabajo de estas CPUs son los siguientes:

1. Marcas:

MB0 a MB255 (2048 Marcas) por defecto las primeras 128 son remanentes (del MB0 al MB15),
configurable en la CPU del PLC.

2. Contadores:

Tiene 256 Contadores, del Z 0 al Z 255. Del Z 0 al Z 7 por defecto son con memoria. Su margen de
contaje es de 0 a 999 s

3. Temporizadores:

Tiene 256 Temporizadores, del T0 al T255. Por defecto no hay ninguno con memoria. Su margen
de tiempo es de 10 ms. a 9990 segundos.

Nota: La remanencia de Marcas, Temporizadores y Contadores, se puede configurar.

4. Generadores de impulsos:

Tiene un total de ocho generadores de impulsos. Se tienen que configurar en el rea de Marcas y
puede ser el byte de marcas que nosotros queramos. Normalmente configuraremos el ltimo, el
byte MB255.

5. Bloques OB:

Son bloques de organizacin. Cada OB tiene una funcin determinada. El OB1 es el nico bloque de ejecucin
cclica. Es el que ejecuta la CPU sin que nadie le llame. Los dems OBs tienen una funcin determinada. Se
IES Cavanilles. Alicante Pgina 2
ejecutan cuando les corresponda sin que nadie les llame desde ningn sitio del programa. Tenemos OBs
asociados a diferentes errores de la CPU, a alarmas, etc. Los principales disponibles:

OB1 Se ejecuta en cada lectura de programa ( Scan)


OB10 Realiza una interrupcin horaria.
OB20 Realiza una interrupcin de retardo.
OB35 Se ejecuta cada 100 ms.
OB40 Realiza una interrupcin de proceso. (Entradas de alarmas, contaje)
OB82 Se ejecuta cuando hay un error en Profibus o mdulos con diagnstico
OB100 Se ejecuta cada vez que pasa el autmata de Stop a Run
OB121 Se ejecuta cuando al ejecutar-se el programa se encuentra algn error.

6. Bloques FC:

Son Funciones. Son trozos de programa que crea el usuario. Realizan una funcin determinada dentro del
proyecto. Se ejecutan cuando se las llama desde algn punto de mi programa. Pueden ser parametrizables o
no. Adems de las FCs creadas por el usuario, existen bibliotecas con funciones predefinidas SFCs. Se utilizan
exactamente igual, aunque no podemos entrar en ellas para ver la programacin.

Hay un total de 128, del FC0 al FC127

7. Bloques FB:

Son Bloques de funcin. En principio funcionan igual que las FC. La diferencia est en que las FB se guardan la
tabla de parmetros en un mdulo de datos DB. Esto tiene dos ventajas. Una es que podemos acceder a los
parmetros desde cualquier punto del programa. Otra es que cada vez que llamemos a la FB no es necesario
que le demos todos los parmetros. Los parmetros que no rellenemos, se tomarn por defecto los ltimos
que hayamos utilizado.

Hay un total de 128, del FB0 al FB127

8. Bloques de datos DB:

Son Mdulos de datos. En estos bloques no realizamos programa. Son reas de memoria organizadas en tablas
en las que guardamos datos. Luego podremos leerlos y escribir sobre ellos.

Hay un total de 127, del DB1 al DB127 (el DB0 es de sistema y se reserva para l).

03. Ciclo de trabajo (SCAN)


El programa principal ser el OB1.

Dentro del OB1 se llamaran a otras funciones, bloques de


funciones, etc. Esto es el anidamiento.

IES Cavanilles. Alicante Pgina 3


El tiempo total del SCAN, depende de otros factores:

Por lo que Tz1 no es igual a Tz2.

Para controlar el error producido por esta diferencia, aparece el Tiempo de Vigilancia.

Observe el Tiempo de RESERVA, para asegurar el correcto funcionamiento.

IES Cavanilles. Alicante Pgina 4


04. Lenguajes de programacin
Por defecto en esta gama estn disponibles 3 lenguajes de programacin:

Adicionalmente se pueden instalar complementos que permiten adems la programacin en:

SCL

Lenguaje de programacin en texto estructurado, de acuerdo con la norma IEC.

S7 Graph

Programacin secuencial grfica.

IES Cavanilles. Alicante Pgina 5


05. Software de programacin

A los diferentes programas y entornos de programacin de los PLC de la serie S7 300 se accede desde
el Administrador Simatic. Los PLC posteriores al ao 2007 se pueden programar mediante el nuevo
paquete de programacin TIA Portal.

En este apartado nos referiremos exclusivamente a la programacin con Step 7.

Para crear un proyecto, se puede hacer de dos formas:

Siguiendo las instrucciones del asistente, haciendo la configuracin del hardware de


forma automtica.
Realizando de forma manual la configuracin del hardware.

IES Cavanilles. Alicante Pgina 6


IES Cavanilles. Alicante Pgina 7
Veamos cmo podemos crear un proyecto de forma manual.

IES Cavanilles. Alicante Pgina 8


IES Cavanilles. Alicante Pgina 9
IES Cavanilles. Alicante Pgina 10
Tras la creacin del programa pasamos a crear los Bloques de Organizacin y las Funciones

IES Cavanilles. Alicante Pgina 11


IES Cavanilles. Alicante Pgina 12
Una vez realizado el programa lo cargamos en el autmata.

IES Cavanilles. Alicante Pgina 13


A continuacin pasamos a ver cmo funciona el Simulador.

IES Cavanilles. Alicante Pgina 14


ejer1:

Realizar el siguiente programa en lenguaje KOP. La CPU utilizada es 313C. Simular el programa. El nombre del
proyecto ser: Ejercicio1a

ejer2:

Realizar el programa anterior pero cambiando los bits de entrada y salida, de tal forma que sean bits
consecutivos a los anteriores. El nombre del proyecto ser: Ejercicio1b. Simular el programa.

Abrir los dos proyectos a la vez. Copiar el FC1 del Ejercicio1b al Ejercicio1a. Realiza los cambios necesarios para
que el OB1 del Ejercico1a tenga dos FC, y que al simular obtengamos el resultado de ambos ejercicios.

IES Cavanilles. Alicante Pgina 15


06. Estructura de la memoria del s7-300

La memoria del autmata est estructurada en las siguientes zonas:

La memoria de carga: permite almacenar el programa de usuario sin asignacin simblica de operandos
o comentarios (stos se almacenan en el disco duro del ordenador). La memoria de carga puede ser
RAM o Flash-EPROM. En la memoria de carga se almacena no solo el programa sino tambin los datos
del sistema.

La memoria de trabajo (RAM integrada): contiene las partes del programa S7 relevantes para la
ejecucin del programa. La ejecucin del programa tiene lugar exclusivamente en el rea
correspondiente a las memorias de trabajo y del sistema.

La memoria del sistema (RAM): contiene los elementos de memoria que cada CPU pone a disposicin
del programa de usuario, tales como: la imagen de proceso de las entradas y salidas, marcas,
temporizadores y contadores. Contiene adems las pilas de bloques y de interrupcin. La memoria del
sistema de la CPU ofrece adems una memoria temporal (pila de datos locales) asignada al programa
para los datos locales del bloque llamado. Estos datos slo tienen vigencia mientras est activo el
bloque correspondiente (la zona de la tabla de declaracin de una OB, o una FC).

Por lo tanto, nuestro programa tendr un consumo de memoria de carga y otro de memoria de trabajo. En
ninguno deberemos de superar la memoria de trabajo, ya que no es posible su ampliacin, por lo que nos
veremos obligados a cambiar de CPU. La memoria de carga s que puede ser ampliada mediante Flash o RAM
externas.

El tamao de la memoria de los diferentes autmatas que componen la serie S7 es el siguiente:

Para conocer la memoria que ocupa un programa, en el administrador de Step 7 seleccionamos un bloque de
S7, y presionando el botn derecho accedemos a sus propiedades, que nos indicarn tanto el tamao de la
memoria de carga requerida por el mismo, como el de la memoria de trabajo.

Para conocer cunto nos ocupa todo el programa, incluyendo los datos de sistema, deberemos de seleccionar
el subdirectorio bloques, y visualizar sus propiedades. Los datos de sistema, la carpeta SDB de nuestro
proyecto, contienen la configuracin Hardware del equipo, que hemos proyectado en Hardware de S7.

IES Cavanilles. Alicante Pgina 16


07. Tipos de datos y visualizacin
Los operandos de las instrucciones se componen de un dato que puede ser de distintos tipos. Los tipos de
datos estndar son:

E entrada
A salida
M marca
P periferia (acceso directo)
L datos locales
T temporizador
Z contador
DB mdulo de datos

Cada uno de estos tipos se puede direccionar en 4 posibles modos (salvo T y Z):

Por defecto: Bit.


B: byte (8 bits).
W: palabra (16 bits).
D: palabra doble (32 bits).

07.1 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 255.7


Byte de marcas MB 0 a 255
Palabra de marcas MW 0 a 254
Palabra doble de marcas MD 0 a 252

07.2 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. Como mximo el autmata puede manejar hasta 65536 bytes para cada tipo de e/s. En cada caso
podemos direccionar como:

IMAGEN DEL PROCESO DE LAS ENTRADAS (PAE):

Entrada E 0.0 a 65535.7


Byte de entrada EB 0 a 65535
Palabra de entrada EW 0 a 65534
Palabra doble de entrada ED 0 a 65532

IMAGEN DEL PROCESO DE LAS SALIDAS (PAA):

Salida A 0.0 A 65535.7


Byte de salida AB 0 a 65535
Palabra de salida AW 0 a 65534
Palabra doble de salida AD 0 a 65532
IES Cavanilles. Alicante Pgina 17
ENTRADAS EXTERNAS:

Byte de entrada de la periferia PEB 0 a 65535


Palabra de entrada de la periferia PEW 0 a 65534
Palabra doble de entrada de la periferia PED 0 a 65532

SALIDAS EXTERNAS:

Byte de salida de la periferia PAB 0 a 65535


Palabra de salida de la periferia PAW 0 a 65534
Palabra doble de salida de la periferia PAD 0 a 65532

07.3 Declaracin de smbolos


Desde el administrador de SIMATIC seleccionar el programa, apareciendo la tabla de los smbolos.

Abrimos la tabla de smbolos y rellenamos los campos de:

Smbolo: nombre con el cual queremos identificar el elemento.


Direccin: la direccin del elemento que vamos a identificar.

Desde el editor podremos visualizar la representacin simblica o no.

IES Cavanilles. Alicante Pgina 18


07.4 Declaracin de variables

IES Cavanilles. Alicante Pgina 19


ejer3:

Realizar el siguiente fragmento de programa, sustituyendo los grupos de contactos (OR, AND) por marcas.
Utilizar la tabla de smbolos y asignar los bits de entrada y salida como inx o outx, siendo x el bit. Dar de
alta las marcas en la tabla de variables y visualizar el estado de estas.

IES Cavanilles. Alicante Pgina 20


08. Creacin de funciones (FC) o plantillas

Cuando un proceso se repite o simplemente es una forma habitual que tenemos para resolver un
problema, podemos utilizar las FC.

En primer lugar creamos una FC, como en los casos anteriores, pero ahora hay que aadir en el
Interface de la funcin, unas etiquetas.

En el siguiente ejemplo utilizamos tres etiquetas, dos en el apartado de IN: paro y marcha. Y la
otra en OUT: motor. Y a continuacin escribiremos el fragmento de programa, utilizando dichas
etiquetas.

El signo # lo pone el editor de forma automtica.

El siguiente paso ser insertar nuestra funcin (FC3), en el OB1.

Tendremos que asignar los bits de entrada y el de salida.

IES Cavanilles. Alicante Pgina 21


Utilizar el simulador o el PLC para comprobar el funcionamiento.

ejer4:

Crear una funcin (FC1) en la que se realice el siguiente programa:

El sentido del pasillo es el marcado por la flecha. Cuando la fotoclula A detecta una presencia, enciende la
lmpara 1 y el ventilador. Cuando la fotoclula B detecte presencia. Apagar la lmpara 1 y encender la
lmpara 2. Finalmente la fotoclula C apagar todo el sistema. Crear la plantilla FC2, en la que est el pulsador
de marcha y el de paro de todo el sistema. Utilizar una marca como salida de la plantilla FC2, para controlar el
sistema.

09. Operaciones con bits. Registro de estado


Las operaciones lgicas con bits interpretan los estados de seal 1 y 0, y los combinan de acuerdo con la lgica
de Boole. Estas combinaciones producen un 1 un 0 como resultado y se denominan resultado lgico (RLO).
El valor del RLO se puede leer en el Registro de Estado, que est en la memoria de la CPU. En el Registro de
Estado hay mas bits que pueden ser direccionados en el operando de las operaciones lgicas con bits y con
palabras.

La estructura del Registro de Estado:

15 8 7 6 5 4 3 2 1 0
RB A1 A0 OV OS OR STA RLO /ER

Inversor---|NOT|--- (invertir resultado lgico) invierte el bit RLO.

La salida A125.0 es "0" si: El estado en la entrada E 125.0 es "1" O el estado en E125.1 Y E125.2 es "1".

Conector ---( # )--- es un elemento intercalado que cumple una funcin de asignacin; el conector almacena el
RLO actual (el estado de seal del flujo de corriente) en el <operando> que se haya especificado.

Si se conecta en serie con otros elementos, la operacin ---( # )--- se inserta igual que un contacto.

IES Cavanilles. Alicante Pgina 22


El conector nunca debe conectarse a una barra de alimentacin, ni colocarse directamente detrs de una rama,
y tampoco debe emplearse como final de una rama.

Se puede crear la negacin del conector anteponindole el elemento ---|NOT|--- (invertir el resultado lgico).

Guardar ---(SAVE) (Cargar resultado lgico (RLO) en registro RB) almacena el RLO en el bit del resultado binario
(RB) de la palabra de estado.

La operacin SAVE resulta especialmente til antes de salir de un bloque, permite aadir un tratamiento de
error a continuacin del bloque.

10. SET y RESET


Las instrucciones SET y RESET son instrucciones de memoria.

Si programamos un SET de una salida o de una marca con unas condiciones, se activar cuando se cumplan
dichas condiciones. Aunque las condiciones dejen de cumplirse, no se desactivar hasta que se haga un RESET
de la salida o marca.

IES Cavanilles. Alicante Pgina 23


Estas instrucciones tienen prioridad. Dependen del orden en que las programemos. Siempre tendr la prioridad
ms alta la ltima que programemos.

Explicacin: Existen dos registros internos que se llaman PAE (imagen de proceso de entradas) y PAA (imagen
de proceso de salidas). Antes de ejecutarse el OB1, se hace una copia de las entradas reales en la PAE. Durante
la ejecucin del OB1, el PLC no accede a la periferia real para hacer sus consultas, lo que hace en realidad es
acceder a este registro interno. Este registro se refresca cada vez que comienza un nuevo ciclo de scan. Segn
se van ejecutando las instrucciones, el PLC no accede a las salidas reales para activarlas o desactivarlas. Accede
al registro interno PAA y pone 0 o 1. Slo cuando termina cada ciclo de scan accede realmente a las salidas.
Entonces lo que hace es copiar lo que hay en la PAA en las salidas reales. En nuestro caso, si hacemos un SET y
un RESET dentro del mismo ciclo de scan, al final de cada ciclo har efecto lo ltimo que hayamos programado.

En el siguiente ejemplo nunca se producir el SET de la marca M0.0

Utilizacin de los Flip-flop: RS o SR:

El funcionamiento bsico es el mismo para las dos: Teniendo el valor de 1 en la entrada de Set y 0 en la
entrada de Reset, el operando de la bascula toma el valor de 1. Pero si tiene el valor de 0 en la entrada de
Set y 1 en la entrada de Reset, el operando de la bascula toma el valor de 0.

En el caso de que tanto la entrada de Set y Reset, sean de 0, el valor del operando no varia.

La diferencia est en el caso de que ambas entradas tengan el valor de 1, en tal caso el operando tendr el
valor de 1 en la R-S y de 0 en la S-R.

IES Cavanilles. Alicante Pgina 24


Utilizacin de FC de la librera:

En el Step7 hay una serie de libreras (funciones encapsuladas o plantillas) con las que podemos optimizar el
cdigo de nuestros programas. En concreto existen la FC82 y FC83. Funcionamiento:

Funcin 83 (Set): Al poner un 1 en EN, se ponen a Set a N elementos a partir de S_BIT (En este caso se activaran
las salidas A124.0, A124.1, A124.2 y A124.3. Cuando pongamos un 1 en EN, si la funcin se ejecuta
correctamente, tendremos un 1 en ENO.

Funcin 82 (Reset): Al poner un 1 en EN, se ponen a Reset a N elementos a partir de S_BIT (En este caso se
desactivaran las salidas A124.0, A124.1, A124.2 y A124.3. Cuando pongamos un 1 en EN, si la funcin se ejecuta
correctamente, tendremos un 1 en ENO.

Utilizando el simulador o el PLC para comprobar las dos funciones

Ejer5: GRA PUENTE (ojo utilizar plantillas, marcas y smbolos)

El ejercicio consiste en realizar el programa control de una gra puente mediante un autmata. La gra puente
est instalada en una planta de manipulacin de bloques de mrmol. Mediante unos carriles instalados en el
techo, la gra puente puede desplazar los bloques de mrmol en las cuatro direcciones: Norte, Sur, Este y Oeste.
Tambin se puede controlar la altura del gancho desde donde se enganchan los bloques de mrmol.

Apartado A:

Desde un mando controlaremos los movimientos de la gra puente. Los pulsadores del mando estn
conectados a las siguientes entradas del autmata:

1) Entrada PUL_N, la gra puente se desplazara hacia el norte.


2) Entrada PUL_S, la gra puente se desplazara hacia el sur.
3) Entrada PUL_E, la gra puente se desplazara hacia el este.
4) Entrada PUL_O, la gra puente se desplazara hacia el oeste.
IES Cavanilles. Alicante Pgina 25
Cuando el operario de la gra puente deje de pulsar, la gra puente se detiene.

Nunca se podr desplazar la gra puente en dos direcciones a la vez.

Para controlar el motor (M1) que produce el desplazamiento de norte-sur y el motor (M2) que produce
el desplazamiento de este-oeste. Se utilizan las siguientes salidas del autmata:

1) Salida M1_N, accionara el contactor que produce un sentido de giro en el motor M1, que realiza el
desplazamiento de la gra puente en la direccin norte.
2) Salida M1_S, accionara el contactor que produce un sentido de giro en el motor M1, que realiza el
desplazamiento de la gra puente en la direccin sur.
3) Salida M2_E, accionara el contactor que produce un sentido de giro en el motor M2, que realiza el
desplazamiento de la gra puente en la direccin este.
4) Salida M2_O, accionara el contactor que produce un sentido de giro en el motor M2, que realiza el
desplazamiento de la gra puente en la direccin oeste.

Para asegurar que la gra puente no sobrepasa los limites del rea de trabajo (se puede variar) se han
instalado unos finales de carrera que detectaran que la gra puente ha llegado al limite. Se conectaran
a las siguientes entradas del autmata:

1) Entrada FC_N, detecta la llegada al lmite en la direccin norte.


2) Entrada FC_S, detecta la llegada al lmite en la direccin sur.
3) Entrada FC_E, detecta la llegada al lmite en la direccin este.
4) Entrada FC_O, detecta la llegada al lmite en la direccin oeste.

En el momento que el final de carrera detecte que la gra puente ha llegado al limite del rea de
trabajo, la gra puente se detiene. No pudiendo desplazarse en esa direccin aunque el operario
accione el correspondiente pulsador

Apartado B:

En el mando de la gra puente hay dos pulsadores que controlan la subida o bajada del gancho. Si el
operario deja de pulsar, el gancho no se detendr. Con el accionamiento de otro pulsador se detiene el
gancho sea cual sea su movimiento. Los pulsadores del mando estn conectados a las siguientes
entradas del autmata:

1) Entrada PUL_A, el gancho se desplazara hacia arriba.


2) Entrada PUL_B, el gancho se desplazara hacia abajo.
3) Entrada PUL_P, el gancho se para.

Para controlar el motor (M3) que produce el desplazamiento de subir-bajar. Se utilizan las siguientes
salidas del autmata:

1) Salida M3_A, accionara el contactor que produce un sentido de giro en el motor M3, que realiza el
desplazamiento del gancho hacia arriba.
2) Salida M3_B, accionara el contactor que produce un sentido de giro en el motor M3, que realiza el
desplazamiento del gancho hacia abajo.

Para asegurar que el gancho no sobrepasa los lmites del carrete, se han instalado unos finales de
carrera que detectaran los extremos del carrete. Se conectaran a las siguientes entradas del autmata:

1) Entrada FC_A, detecta la llegada al lmite de subida.


2) Entrada FC_B, detecta la llegada al lmite de bajada.

IES Cavanilles. Alicante Pgina 26


11. Flancos ascendente (P) y descendente (N)
Un flanco de un elemento, convierte una seal continua en un pulso de 1 Scan de duracin (1 lectura de
programa)

Flanco positivo (ascendente, manda el pulso cuando la seal pasa de 0 a 1):

Cuando activo de forma constante la E124.0, hacemos que la salida A124.0 funcione durante 1 Scan cuando la
entrada E124.0 pasa de 0 a 1 (sube).

Flanco negativo (descendente, manda el pulso cuando la seal pasa de 1 a 0):

Cuando desactivamos la E124.0, hacemos que la salida A124.1 funcione durante 1 Scan cuando la entrada
E124.0 pasa de 1 a 0 (baja).

Nota: Tanto el flanco positivo, como el negativo, deben de ir acompaados de una marca que no se puede
repetir.

Ejemplos de aplicaciones:

A. En el primer y segundo segmento, hemos creado un telerruptor. Cada vez que accionemos el E124.0
provocaremos que la salida A124.0 cambie de estado. Razonar el circuito.
B. En el tercer y cuarto segmento, condicionamos el funcionamiento de la salida A124.2 a seguir un orden
de conexin de entradas concreto. Primero debemos accionar la E124.3 y a continuacin la E124.2. En
caso de hacerlo al revs, la salida no funcionara. Razonar el circuito.

IES Cavanilles. Alicante Pgina 27


12. Operaciones de temporizacin
Los temporizadores tienen un rea reservada en la memoria de la CPU. Esta rea de memoria reserva una
palabra de 16 bits para cada operando de temporizador. La programacin con KOP asiste 256 temporizadores.

El temporizador se activa por la entrada S, decrementando el valor de temporizacin en una unidad y en el


intervalo indicado por la base de tiempo hasta alcanzar el valor 0. El valor de temporizacin se puede cargar en
los formatos binario, hexadecimal o decimal codificado en binario (BCD).

Para cargar un valor de temporizacin redefinido, se observarn las siguientes reglas sintcticas.

El valor de temporizacin se puede cargar en cualquiera de los siguientes formatos:

W#16#wxyz

siendo: w= la base de tiempo (es decir, intervalo de tiempo o resolucin).


xyz = el valor de temporizacin en formato BCD.
Base de tiempos y cdigo respectivo: 10 ms 0
100 ms 1
1s 2
10 s 3
Ejemplo: L W#16#210 Esto introduce un valor de 10 y lo multiplica por 1 segundos, luego tendremos 10
segundos de temporizacin.

S5T#aH_bM_cS_dMS

siendo: H (horas), M (minutos), S (segundos), MS (milisegundos); a, b, c, d los define el usuario


La base de tiempo se selecciona automticamente y el valor de temporizacin se redondea al prximo
nmero inferior con esa base de tiempo. Ejemplos:
S5TIME#4S 4 segundos
S5t#2h_15m 2 horas y 15 minutos
S5T#1H_12M_18S 1 hora 12 minutos y 18 segundos

Por cada temporizador se reserva una palabra (16 bits). El valor de tiempo puede estar en un rango de 10 ms a
9.990s (2 horas, 46 minutos y 30 segundos). Los valores no deben exceder 2H_46M_30S. Los valores con un
margen o una resolucin demasiado grandes (p. ej. 2H_10MS) se redondean de tal forma que correspondan a
la tabla para el margen y la resolucin.

El S7-300 ofrece tres opciones para el retardo de tiempo:

S_EVERZ (SE) Temporizador de retardo a la


conexin. La seal de salida es 1 solamente si ha
finalizado el tiempo programado y la seal de
entrada sigue siendo 1.

IES Cavanilles. Alicante Pgina 28


S_SEVERZ (SS) Temporizador de retardo a la conexin
memorizado. La seal de salida cambia de 0 a 1
solamente si ha finalizado el tiempo programado,
independientemente del tiempo en que la seal de
entrada est a 1.

S_AVERZ (SA) Temporizador de retardo a la


desconexin. La seal de salida es 1 cuando la seal de
entrada es 1 o cuando el temporizador est en marcha.
El temporizador arranca cuando la seal de entrada
cambia de 1 a 0.

As como dos opciones de temporizacin por impulso:

S_IMPULS (SI) Temporizador de impulso. El tiempo


mximo que la seal de salida permanece a 1
corresponde al valor de temporizacin t programado.
La seal de salida permanece a 1 durante un tiempo
inferior si la seal de entrada cambia a 0.

IES Cavanilles. Alicante Pgina 29


S_VIMP (SV) Temporizador de impulso prolongado.
La seal de salida permanece a 1 durante el tiempo
programado, independientemente del tiempo en
que la seal de entrada est a 1.

Los organigramas para facilitar la eleccin de un temporizador:

Veamos cada una de ellos:

S_IMPULS (SI). Arranca el temporizador indicado cuando hay un flanco creciente en la entrada de arranque S.
El temporizador funciona mientras el estado de seal en la entrada S sea "1", pero como mximo durante el
tiempo indicado por el valor de temporizacin en la entrada TW.

El estado de seal en la salida Q es "1" mientras que funcione el temporizador. Si el estado de seal en la
entrada S cambia de "1" a "0" antes de transcurrir el intervalo de tiempo, el temporizador se para. En este caso
el estado de seal en la salida Q es "0". El temporizador se pone a 0 si la entrada de desactivacin R del
temporizador se pone a "1" mientras funciona el temporizador. El valor de temporizacin actual y la base de

IES Cavanilles. Alicante Pgina 30


tiempo tambin se ponen a 0. Un "1" en la entrada R del temporizador no tiene efecto alguno si el
temporizador no est en marcha.

S_VIMP (SV). Arranca el temporizador indicado cuando hay un flanco creciente en la entrada de arranque S. El
temporizador contina en marcha durante el tiempo predeterminado, indicado en la entrada TW, aunque el
estado de seal en la entrada S se ponga a "0" antes de haber transcurrido el intervalo de tiempo. El estado de
seal en la salida Q es "1" mientras el temporizador est en marcha. El temporizador vuelve a arrancar con el
valor de temporizacin predeterminado si el estado de seal en la entrada S cambia de "0" a "1" mientras est
en marcha el temporizador. El temporizador se pone a 0 si la entrada de desactivacin R del temporizador se
pone a "1" mientras el temporizador est funcionando. El valor de temporizacin actual y la base de tiempo se
ponen a 0.

El valor de temporizacin actual queda depositado en las salidas DUAL y DEZ. El valor de temporizacin en la
salida DUAL est en cdigo binario, el valor en la salida DEZ est en formato decimal codificado en binario. El
valor de temporizacin actual equivale al valor inicial de TW menos el valor de temporizacin que ha
transcurrido desde el arranque del temporizador.

S_EVERZ (SE). Arranca el temporizador indicado cuando hay un flanco creciente en la entrada de arranque S. El
temporizador contina en marcha con el valor de temporizacin indicado en la entrada TW mientras el estado
de seal en la entrada S sea positivo. El estado de seal en la salida Q ser "1" si el tiempo ha transcurrido sin
que se produjeran errores y si el estado de seal en la entrada S es "1". Si el estado de seal en la entrada S
cambia de "1" a "0" mientras est en marcha el temporizador, ste se para. En este caso, el estado de seal en
la salida Q ser "0".

El temporizador se pone a 0 si la entrada de desactivacin R del temporizador se pone a "1" mientras funciona
el temporizador. El valor de temporizacin y la base de tiempo se ponen a 0. Entonces el estado de seal en la
salida Q es "0". El temporizador tambin se pone a 0 si en la entrada de desactivacin R el valor es "1",
mientras el temporizador no est en marcha y el RLO en la entrada S es "1".

El valor de temporizacin actual queda depositado en las salidas DUAL y DEZ. El valor de temporizacin en la
salida DUAL est en cdigo binario, el valor en la salida DEZ est en formato decimal codificado en binario. El
valor de temporizacin actual equivale al valor inicial de TW menos el valor de temporizacin que ha
transcurrido desde el arranque del temporizador.

S_SEVERZ (SS). Arranca el temporizador indicado cuando hay un flanco creciente en la entrada de arranque S.
Para arrancar un temporizador tiene que producirse necesariamente un cambio de seal. El temporizador
contina en marcha con el valor de temporizacin indicado en la entrada TW aunque el estado de seal en la
entrada S se ponga a "0" antes de que haya transcurrido el tiempo. El estado de seal en la salida Q ser "1" si
ha transcurrido el tiempo, independientemente del estado de seal que tenga la entrada S. El temporizador
vuelve a arrancar con el valor de temporizacin indicado si el estado de seal en la entrada S cambia de "0" a
"1" mientras el temporizador est en marcha. El temporizador se pone a 0 si la entrada de desactivacin R del
temporizador se pone a "1", independientemente del RLO en la entrada S. Entonces el estado de seal en la
salida Q es "0".

El valor de temporizacin actual queda depositado en las salidas DUAL y DEZ. El valor de temporizacin en la
salida DUAL est en cdigo binario, el valor en la salida DEZ est en formato decimal codificado en binario. El
valor de temporizacin actual equivale al valor inicial de TW menos el valor de temporizacin que ha
transcurrido desde el arranque del temporizador.

S_AVERZ (SA). Arranca el temporizador indicado cuando hay un flanco decreciente en la entrada de arranque
S. Para arrancar un temporizador tiene que producirse necesariamente un cambio de seal. El estado de seal
en la salida Q ser "1" si el estado de seal en la entrada S es "1", y tambin mientras el temporizador est en
marcha. El temporizador se para si el estado de seal en la entrada S cambia de "0" a "1" mientras el

IES Cavanilles. Alicante Pgina 31


temporizador est en marcha. El temporizador slo vuelve a arrancar si el estado de seal en la entrada S
vuelve a cambiar de "1" a "0".

El temporizador se pone a 0 si la entrada de desactivacin R se pone a "1" mientras el temporizador est en


marcha. El valor de temporizacin actual queda depositado en las salidas DUAL y DEZ. El valor de temporizacin
en la salida DUAL est en cdigo binario, el valor en la salida DEZ est en formato decimal codificado en binario.
El valor de temporizacin actual equivale al valor inicial de TW menos el valor de temporizacin que ha
transcurrido desde el arranque del temporizador.

Instrucciones de Bit para Temporizadores

Con el fin de ahorrar instrucciones, es posible utilizar los


temporizadores en forma de bobina si no se desea utilizar
todas las entradas y salidas disponibles en las cajas de
temporizacin. De la misma forma, se puede consultar el
valor binario de cualquiera de ellos como si de una
entrada se tratara.

13. Byte de marcas. Generador de pulsos:


Los generadores de impulsos (que se pueden configurar en la CPU), son elementos preprogramados que
cambian de 1 a 0 con una frecuencia determinada. Para poder trabajar con estos elementos, se deben de
configurar. Procedimiento:

Administrador Equipo Simatic 300, seleccionar Hardware, y doble pulsacin con el ratn.

Seleccionamos la CPU313C, y doble pulsacin con el ratn.

IES Cavanilles. Alicante Pgina 32


Seleccionar la pestaa Ciclo/Marca de ciclo Activar la casilla Marca de ciclo y poner el byte de marca que
queramos MB255.

Ojo, se ha de compilar y guardar, y a continuacin transferir al autmata.

Nota: Podemos poner el byte de marcas que queramos del 0 al 255. Por comodidad ponemos el MB255 ya que
al ser el ltimo no corremos el riesgo de equivocarnos y utilizarlo de forma simultnea para otra cosa.

Podremos trabajar con los siguientes generadores de impulsos:

M255.0 0.05 seg. On 0.05 Seg. Off


M255.1 0.1 Seg. On 0.1 Seg. Off
M255.2 0.2 Seg. On 0.2 Seg. Off
M255.3 0.25 Seg. On 0.25 Seg. Off
M255.4 0.4 Seg. On 0.4 Seg. Off
M255.5 0.5 Seg. On 0.5 Seg. Off
M255.6 0.8 Seg. On 0.8 Seg. Off
M255.7 1 Seg. On 1 Seg. Off

Realizar el siguiente fragmento de programa para comprobar el funcionamiento.

IES Cavanilles. Alicante Pgina 33


Ejer6: CALDERA

El ejercicio consiste en utilizar una instalacin convencional de una caldera de calefaccin y mejorar el
rendimiento de la caldera (alargar la vida de la instalacin) y optimizar el ahorro de energa. El autmata
controla el encendido y apagado de la caldera a travs de su entrada de control, a la que normalmente se le
conecta el nico termostato de una instalacin. Esta entrada es conocida como entrada del termostato
ambiente. Es una entrada libre de tensin. Cuando se conecta la caldera, esta realiza dos funciones bsicas:

1) Calentar el agua que circulara por los radiadores, provocando el calentamiento de la vivienda.

2) Activar una bomba de agua que es la encargada de generar la presin necesaria para facilitar el
recorrido de agua caliente por todo el circuito.

La caldera solo est encendida cuando una o ms vlvulas estn abiertas, permitiendo de este modo la
recirculacin del circuito de agua, evitando de este modo la sobre presin. El autmata recibe la informacin
de la temperatura de cada zona mediante los contactos libres de tensin de los termostatos. Cuando un
termostato detecta una temperatura ms baja de la que tiene programada cierra el contacto.

Hay que tener en cuenta las siguientes temporizaciones:

Si no hay ninguna vlvula abierta y la caldera esta apagada, cuando un termostato indica la falta de
temperatura en su zona, el autmata abrir de forma instantnea la vlvula correspondiente, pero la
caldera ser conectada tras pasar 10 segundos. Este retardo protege a la instalacin de una posible
sobre presin. La sobre presin es producida por la lentitud con la que se abren las vlvulas, pudiendo
darse el caso de estar entregando presin la caldera al circuito y no estar abierta ninguna vlvula. En
una instalacin sin autmata se soluciona aadiendo en el circuito una vlvula de seguridad, que
puede facilitar la circulacin si se alcanzara una presin elevada en la instalacin.

En el caso de tener la caldera conectada con una o ms vlvulas abiertas y los termostatos detectan la
sobre temperatura en sus zonas, el autmata no desconectar la caldera y las vlvulas al mismo
tiempo. Cuando el ltimo de los termostatos indique al autmata que no necesita de ms temperatura
en su zona el autmata apagara en primer lugar la caldera y tras una temporizacin de 15 segundos
desconectara la ltima de las vlvulas.
IES Cavanilles. Alicante Pgina 34
Generador de impulsos programable con dos Temporizadores.

Utilizando dos temporizadores con retardo a la conexin SE, se construye un generador de seal programable,
y aadiendo otra salida obtenemos un generador de impulsos programable.

La representacin grfica seria:

Para el caso de utilizar solo el generador de impulsos, el siguiente ejemplo se realiza con un solo contador.

La representacin grfica seria:

Para poder ver con el simulador el funcionamiento de del generador de impulsos, seleccionaremos el modo
Ciclo individual, y ejecutamos el programa Ciclo a ciclo.

IES Cavanilles. Alicante Pgina 35


En el Temporizador, podemos elegir la escala, que ha de ser menor que el tiempo seleccionado. Nos aparece
de forma automtica el numero de pasos que se han de producir hasta que el temporizador decremente su
valor. Tambin tenemos la opcin de resetear el contador.

14. Remanencia en el Step7.


Determina que bits de marcas , temporizadores y contadores mantendrn su valor si se detiene el autmata.
Por defecto vienen seleccionados unos valores, pero puede configurarse en la CPU.

Administrador Equipo Simatic 300, seleccionar Hardware, y doble pulsacin con el ratn.

Seleccionamos la CPU313C, y doble pulsacin con el


ratn.

Seleccionar la pestaa Remanencia.

Solo podemos escribir una cantidad, y estas determinaran las marcas, temporizadores y contadores a partir de
0.

Ojo, se ha de compilar y guardar, y a continuacin transferir al autmata.


IES Cavanilles. Alicante Pgina 36
15. Plantillas que contienen temporizadores
Vamos a realizar una plantilla del ltimo ejemplo que hemos visto:

Primero declaramos en las entradas del Interface de la FC1, tres elementos:

Activar, de tipo Bool, para la entrada del PLC.


Tempo, de tipo Timer, para el temporizador del PLC.
Tiempo, de tipo S5Time, para el tiempo del temporizador.

Y en salida del Interface de la FC1, un elemento: Salida, de tipo Bool para la salida del PLC.

A Continuacin escribimos el programa:

Observar, como se ha insertado el Temporizador SE.

IES Cavanilles. Alicante Pgina 37


Cuando insertamos el FC1, en el OB1, nos queda como sigue: Al completar los campos vacos, nos quedara:

En el caso de que la plantilla la tengamos que utilizar posteriormente y no queramos modificar el contenido, la
podemos guardar con proteccin contra escritura. Si la depositamos en el mismo proyecto, nos pedir que
cambiemos de nombre, por ejemplo FC101.

Reloj de pulsos X segundos a ON e Y segundos a OFF

IES Cavanilles. Alicante Pgina 38


La funcin insertada en el OB1 y una vez cumplimentada con los datos necesarios

Al activarse la entrada E124.0, la salida A124.0 permanecer 1s (T1) a ON y 2s (T2) a OFF

16. Modulo de organizacin OB100 (Modulo de Arranque)


Este OB, se ejecuta 1 vez durante 1 Scan cuando el autmata pasa de STOP a RUN.

El OB100 se ejecuta antes que el OB1.

Al OB100 NO hay que llamarlo desde ningn otro mdulo, pues se ejecuta de manera automtica, pero

recuerda que hay que cargarlo a la CPU.

Solo puede haber un OB100, cuando se tenga que realizar varios acciones, se Irn aadiendo.

No se podr leer entradas en la OB100, se deben referenciar con marcas.

Para crear el OB100: Insertar nuevo objeto -> Bloque de organizacin -> seleccionar OB100

Ejer7: Control de prdida de energa.

Tenemos un proceso con dos estados de funcionamiento automtico / manual.

La seleccin de la manera de funcionamiento la haremos mediante el selector conectado a la entrada E124.5


(1=AUTOMATICO, 0=MANUAL).

Funcionamiento Automtico:

Al accionar el pulsador E124.0, se activa la salida A124.0 (electrovlvula) y la salida A124.7 (Piloto) funciona de
forma intermitente lento.

Al cabo de 15 segundos de funcionar, se desconectan las salida A124.0 y A124.7. Quedando a la espera de una
nueva pulsacin.

Funcionamiento Manual:

Mientras mantengamos accionado el pulsador E124.0, se activa la salida A124.0 (electrovlvula) y la salida
A124.7 (Piloto) funciona de forma intermitente rpido.

Al dejar el pulsador E124.0. las salidas se desconectan.

IES Cavanilles. Alicante Pgina 39


En el caso de estar en modo automtico y no se ha terminado el tiempo de 15 segundos, y se produjera un corte
del suministro energtico, el PLC al iniciar un nuevo arranque el piloto permanecer activo, y no se podr
producir una nueva temporizacin, hasta que no pasemos a modo manual y volvamos al modo automtico.

Para la realizacin del ejercicio se ha de usar una funcin para cada tipo de funcionamiento
(manual/automtico) y slo podremos utilizar remanencias en marcas.

Solucin propuesta:

Definir en el HW la marca de ciclo en el Byte M255

M255.0 Bit 0.05 s a ON y 0.05 s a OFF


M255.1 Bit 0.1 s a ON y 0.1 s a OFF
M255.2 Bit 0.2 s a ON y 0.2 s a OFF
M255.3 Bit 0.25 s a ON y 0.25 s a OFF
M255.4 Bit 0.4 s a ON y 0.4 s a OFF
M255.5 Bit 0.5 s a ON y 0.5 s a OFF
M255.6 Bit 0.8 s a ON y 0.8 s a OFF
M255.7 Bit 1 s a ON y 1 s a OFF

La condicin de reinicio en el OB100

OB1 Bloque principal

IES Cavanilles. Alicante Pgina 40


IES Cavanilles. Alicante Pgina 41
17. Contadores
En la CPU 3xx, hay un total de 256 contadores. Por defecto del contador 0 al contador 7, tienen memoria (si
queremos configurarlos de forma diferente, actuar igual que con las marcas remanentes y los temporizadores).

Existen contadores ascendentes, descendentes y ascendentes/descendentes. Se ver slo el tercero al ser los
otros dos una particularizacin de ste.

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

Contaje hacia arriba (ZV).


Contaje hacia abajo (ZR).
Carga del valor de preseleccin (SZ).
Valor de preseleccin (ZW) estar entre 0 y 999. ejemplo: C#25, el valor es 25.
Puesta a cero del valor del contador (R).
Conexin a salida (Q).
Carga del valor del contador en binario (DUAL).
Carga del valor en BCD (DEZ).

El valor al que se inicializa el contador viene dado por el dato asociado a la entrada ZW. El contador se inicializa
a este valor y estar preparado para contar cuando se produzca un flanco de subida en el valor lgico asociado
a la entrada S.

Una vez activado el contador, ZV y ZR incrementan y decrementan, respectivamente, la cuenta cuando el valor
lgico conectado a su entrada pasa de 0 a 1.

La puesta a cero del contador se puede forzar anticipadamente con un flanco de subida en la entrada R.

Con las salidas DUAL y DEZ se puede conocer el valor actual de la cuenta, tanto como nmero entero como en
cdigo BCD.

Finalmente la salida Q estar a 1 desde que se activa el contador y mientras el valor de la cuenta sea distinto de
0, y estar a 0 antes de activarlo, despus de resetearlo, o desde el momento en que la cuenta llega a cero. En
este caso, para activar de nuevo el contador, ser necesario un flanco de subida en S.

IMPORTANTE: En Q tendremos un 1 siempre que el valor del contador sea superior a 0.

IES Cavanilles. Alicante Pgina 42


Tambin podemos acceder por separado.

Ejer8: Control de piezas en una cinta transportadora

Tenemos una cinta transportadora que llena de piezas una caja.

El operario pone en marcha el proceso mediante el selector E124.0, al accionar el pulsador E124.1 carga el valor
de preseleccin, esto provoca que la cinta A124.0 se ponga en marcha al instante.

Hay un detector de piezas E124.7 que cuenta las piezas que pasan. Cuando ha contado las piezas
preseleccionadas (el contador llega a 0), se para la cinta y se pone en marcha de forma intermitente el
zumbador A124.7.

El operario retira entonces la caja llena, pone una caja vaca y acciona de nuevo el pulsador E124.1 y el ciclo
comienza de nuevo.

IES Cavanilles. Alicante Pgina 43


18. Temporizadores y contadores IEC
En la serie S7-300, aparte de los contadores y temporizadores tradicionales,
tambin estn disponibles 3 temporizadores y 3 contadores en formato IEC, a los
que accederemos a travs de la biblioteca de funciones estndar, en la ruta
Libreras > Standard Library > System Function Blocks.

Al tratarse de bloques de funcin (SFB), tendremos que obligatoriamente


llevarn asociado un bloque de datos (DB), que deberemos indicar al introducir
la funcin o se crear de forma automtica (si no existe).

Contadores IEC en S7-300


SFB0 (CTU) Contador UP SFB1 (CTD) Contador DOWN SFB2 (CTUD) Contador UP/DOWN

CU Entrada de contaje (UP) CD Entrada de contaje (DOWN) CU Entrada de contaje (UP)


R Reset de contador LOAD Entrada de carga CD Entrada de contaje (DOWN)
PV Valor de preseleccin PV Valor de preseleccin R Reset de contador
Q Salida (1 cuando alcanza o supera el Q Salida (1 cuando alcanza el valor 0 o LOAD Entrada de carga
valor PV) inferior) PV Valor de preseleccin
CV Valor actual de contaje CV Valor actual de contaje QU Salida (1 cuando alcanza o supera el
valor PV)
QD Salida (1 cuando alcanza el valor 0 o
inferior)
CV Valor actual de contaje

Ejemplo
Realizar el ejemplo del lateral, creando 3 contadores, uno de cada tipo
en una FC, a los que se asocir una DB de instancia a cada uno de ellos
en los que almacenar los datos de contaje.
Comprobar, con el PLC o con el simulador, como se comportan las
salidas en cada uno de los casos y las prioridades en caso de actuar
simultneamente sobre ms de una extrada de activacin.
Los contadores IEC utilizan una palabra (16 bits) para almacenar el valor
en entero (INT), por lo que tomarn valores entre -32768 y 32767.

IES Cavanilles. Alicante Pgina 44


Los temporizadores IEC utilizan el tipo de dato TIME, que es un entero con signo de 32 bits (Doble Word), en
unidades de 1 ms.

El rango de tiempo admisible ser de T#24D_20H_31M_23S_648MS hasta + T#24D_20H_31M_23S_647MS.

Temporizadores IEC en S7-300


SFB3 (TP) Temporizador Impulso SFB4 (TON) Retardo a la conexin SFB5 (TOF) Retardo a desconexin

IN Entrada activacin IN Entrada activacin IN Entrada activacin


PT Valor de preseleccin PT Valor de preseleccin PT Valor de preseleccin
Q Salida Q Salida Q Salida
ET Valor actual de temporizacin ET Valor actual de temporizacin ET Valor actual de temporizacin
Cronograma TP Cronograma TON Cronograma TOF

Ejemplo
Realizar el ejemplo del lateral, creando 3 temporizadores, uno de cada
tipo en una FC, a los que se asocir una DB de instancia a cada uno de
ellos en los que almacenar los datos de contaje.
Comprobar, con el PLC o con el simulador, como se comportan las
salidas en cada uno de los casos.

Observa lo que sucede en cada uno de los contadores si la entrada de


activacin se mantiene permanentemente activa o se activa mediante
un impulso o flanco.

La necesidad de un bloque de datos de instancia para cada temporizador o contador IEC, hace que
normalmente no se utilicen de forma individual, sino que se integren en un bloque de funcin (FB). Dentro del
FB definiremos todos los temporizadores o contadores que necesitemos en esa parte del programa y
almacenaremos sus datos en un nico DB de instancia asociado a ese bloque de funcin.

IES Cavanilles. Alicante Pgina 45


Desde el Administrador crearemos un nuevo bloque de funcin:

Una vez creado, lo editaremos creando las variables tipo STAT dentro del bloque,
haciendo referencia al tipo de objeto que usaremos, mediante el nmero de SFB (lo
podemos ver a travs de la biblioteca).

Esto es, SFB0 para un contador CTU, SFB1 para un contador CTD, SFB2 para un
contador CTUD, SFB03 para un temporizador de impulso TP, SFB4 para un
temporizador TON y SFB5 para un temporizador TOF.

En este ejemplo introducimos 3 temporizadores, uno de cada tipo. Si revisamos la estructura creada, veremos
que para cada temporizador se han creado las variables correspondientes del temporizador, se han asignado al
tipo de dato (BOOL, INT, REAL) y al tipo de variable IN, OUT, IN/OUT

Para utilizarlos dentro del FB navegaremos hasta la


biblioteca Multiintancias y los seleccionaremos desde
all para incluirlos en el programa, completando los
datos necesarios para activar los contadores.

Completaremos los datos de activacin de los


temporizadores y haremos la llamada al bloque de
funcin desde el OB1, que nos solicitar una DB en la
que almacenar los datos.

IES Cavanilles. Alicante Pgina 46


FB1 OB1

Tener en cuenta que NO se puede llamar ms de una vez a cada uno de los temporizadores, pero s que se
pueden crear tantos temporizadores como necesitemos y estarn todos en un nico bloque de funcin y en
una nica DB.

Comentar tambin que es posible hacer una FB parametrizable con temporizadores IEC, de forma que al ser
llamada indiquemos los bits o valores que nos pudieran interesar. Por ejemplo, si queremos poder modificar
los tiempos para cada uno de los temporizadores del ejercicio anterior, crearemos 3 variables de entrada de
tipo TIME y las asociaremos a las entradas PT de cada uno de ellos.

Ahora al hacer la llamada al bloque (que hemos


rebautizado como FB10 y al que asociamos su
DB10 de instancia) desde el OB1, nos pedir
que insertemos los 3 tiempos asociados a cada
temporizador.

IES Cavanilles. Alicante Pgina 47


19. Operaciones de salto
Los saltos a meta, son saltos condicionales. Se han de definir con un inicio (JMP) y un final (LABEL).

Las etiquetas de las metas, estn compuestas por cuatro caracteres de los cuales al menos 1 tiene que ser una
letra. Ha de coincidir (Maysculas o minsculas) la etiqueta del salto y la etiqueta de la meta.

Existen dos tipos de saltos:

JMP Realiza el salto cuando delante de JMP tengamos un 1.

JMPN Realiza el salto siempre que delante de JMPN tengamos un 0.

Estas instrucciones nos sirven para saltar a trozos de programa que se encuentren dentro del mismo bloque
en el que nos encontramos. Con estas instrucciones no podemos ir de un bloque a otro. Nos sirven para todo
tipo de bloques de programacin.

Debemos tener en cuenta que cuando realizamos un salto, dejamos de ejecutar las lneas de programa que
saltamos, por tanto si haba algo en marcha, continuar en marcha y no se podr parar hasta que se vuelvan a
ejecutar estas instrucciones.

Puede haber varios inicios hacia sus destinos.

IES Cavanilles. Alicante Pgina 48


Puede haber varios inicios hacia un mismo destino. Conseguimos una zona de evaluacin y otra de ejecucin.
Esta estructura se podra calificar como pasante.

Puede haber bucles, pero no son una buena solucin de programacin:

IES Cavanilles. Alicante Pgina 49


En el anterior fragmento de programa podremos ver dos casos diferentes:

En el instante de pasar a modo RUN, activamos E125.0, E125.1 y E125.2. En ese instante se activara la
salida A124.0 y el temporizador a la conexin T0, iniciara la temporizacin. El programa permanecer
en un bucle finito, hasta que el T0 alcance su temporizacin, instante en el que se producir la salida
del bucle y la salida A124.2 se activara, recordar que la entrada E125.2 ya se haba activado.

En el instante de pasar a modo RUN, activamos solo E125.0 y E125.2. En ese instante se activara la
salida A124.0. El programa permanecer en un bucle infinito. Tras superar el tiempo mximo
programado del ciclo de SCAN, el PLC pasara a modo de STOP, indicando con el LED SF del frontal, que
se ha producido un error de Hardware o Software.

Cuando se produce un error de Hardware o Software, el sistema operativo llama a un bloque de organizacin,
el OB80, siempre y cuando se halla cargado al PLC (el OB121 ser llamado entonces si falta un bloque). Veamos
una posible solucin al problema anterior.

IES Cavanilles. Alicante Pgina 50


Y en el OB80, escribiremos:

La explicacin es como sigue:

IES Cavanilles. Alicante Pgina 51


En el instante de pasar a modo RUN, activamos solo E125.0 y E125.2. En ese instante se activara la salida
A124.0. El programa permanecer en un bucle infinito. Tras superar el tiempo mximo programado del ciclo
de SCAN, el PLC llama a la funcin OB80, ya que ha sido cargada. En ese instante el LED SF del frontal se activa
un instante, indicando que se ha producido un error de Hardware o Software. Como con la funcin OB80 se
activa un bit que facilitara la salida del bucle infinito, al terminar la OB80 y volver a ejecutarse la OB1, se
soluciona el problema, el PLC seguir en modo RUN y el LED SF se apagara.

Ojo: la mejor solucin es el evitar utilizar estructuras de programa que provoquen bucles. La estructura
ideal es la de estructura pasante.

20. Movimiento y transferencia de datos


Tenemos 3 formatos de representacin numrica: Binario, BCD y Hexadecimal.

Tenemos 3 formatos o tamaos de nmeros: Entero (INT), doble entero (DINT) y real (REAL).

ENTERO: 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: 32767 (El 0 se considera positivo)
N negativos: -32768
DOBLE ENTERO: Los nmeros dobles enteros se denominan como D.

Son nmeros binarios de 32 bits.


Lmite: N positivos: 2 147 483 647 (El 0 se considera positivo)
N negativos: -2 147 483 648
REALES: Los nmeros reales se denominan como R.

Son nmeros binarios de 32 bits que constan de 2 partes:


Mantisa : los 3 bytes.
Exponente: el byte ms alto.
Limite: 3.402.823 e-38 a 3.402 823 e+38

IES Cavanilles. Alicante Pgina 52


Se puede expresar de forma exponencial o como quebrados.

Ejemplo: 4.83

El editor Step-7 lo pasa automticamente a la forma exponencial: 4.830000e+00

Se redondea con exactitud hasta el 6 dgito.

Ejemplo: 4780000000.0 = 4.780000e+10

El punto es obligatorio

Atendiendo a su tamao, existen diversos tipos de datos con los que el STEP7 trabaja:

1 bit 1 byte (8 bits) 1 palabra(2 bytes, 16 bits) 2 palabras(4 bytes, 32 bits)

BOOL BYTE WORD DWORD

Existen otros tipos de datos que reconoce el software de programacin:

1 bit 1 byte (8 bits) 1 palabra(2 bytes)(16 bits) 2 palabras(4 bytes)(32 bits)


BOOL BYTE WORD DWORD
CHAR
INT DINT
DATE
S5TIME
REAL
TIME
TIME_OF_DAY

En el modelo S7-300, tenemos 2048 bits de MARCAS, que se identificaran de la M0.0 a la M255.7, para poder
operar bit a bit. Cuando se requiere operar en grupos de 8 bits = 1 byte, tendremos 256 grupos de 8 bits y se
identifican como MB0 al MB255. Tambin nos permiten agrupar estos 2048 bits en grupos de 16 bits y de 32
bits, identificados como MW y MD respectivamente.

Veamos un ejemplo:

IES Cavanilles. Alicante Pgina 53


En la siguiente tabla podemos ver como se agrupan:

MB0 MB16 MB32


MW0 MW16 MW32
MB1 MB17 MB33
MD0 MD16 MD32
MB2 MB18 MB34
MW2 MW18 MW34
MB3 MB19 MB35

MB4 MB20 MB36


MW4 MW20 MW36
MB5 MB21 MB37
MD4 MD20 MD36
MB6 MB22 MB38
MW6 MW22 MW38
MB7 MB23 MB39

MB8 MB24 MB40


MW8 MW24 MW40
MB9 MB25 MB41
MD8 MD24 MD40
MB10 MB26 MB42
MW10 MW26 MW42
MB11 MB27 MB43

MB12 MB28 MB44


MW12 MW28 MW44
MB13 MB29 MB45
MD12 MD28 MD44
MB14 MB30 MB46
MW14 MW30 MW46
MB15 MB31 MB47

Luego tendremos 256 MB 128 MW 64 MD.

La transferencia es utilizada para mover datos de una posicin a otra.

La funcin MOVE es ejecutada cuando tenemos un 1 en la entrada EN, entonces el valor que hay en IN es
copiado en OUT. (El valor en IN permanece inalterable).

En ENO tendremos un 1 si la funcin se ejecuta sin errores.

Los formatos en IN y en OUT pueden ser de 8 ,16 y 32 bits. (Los formatos en IN y en OUT pueden ser
Diferentes).

Los valores a mover pueden ser:

E entrada: EB, EW
A salida: AB, AW
M marca: MB, MW
P periferia (acceso directo) PEB, PEW
L datos locales
D palabra doble (32 bits).
Constantes 25 (el valor esta en decimal)

Veamos un ejemplo de mover datos de un canal entero de entrada (8 bits) a un canal de salida (8 bits).

IES Cavanilles. Alicante Pgina 54


Veamos en el simulador que valores se le han puesto en el canal de entrada

Para poder visualizar los valores, utilizaremos la tabla de variables y repetiremos la misma variable hasta tres
veces, para poder ver el valor en Hexadecimal, Binario y Decimal.

En el siguiente ejemplo movemos tres constantes a unas variables de marca de distinto tamao.

IES Cavanilles. Alicante Pgina 55


Veamos en el simulador que valores se le han puesto en el canal.

Y en la tabla de variables veremos.

Cargar a un contador un valor a travs de una marca:

Ojo: Cuando se introduce el valor en la marca, se puede poner como C#5 o C#50, y el Sept7 lo traduce
directamente a Hexadecimal.

IES Cavanilles. Alicante Pgina 56


Cargar a un temporizador un valor a travs de una marca:

Ojo: Cuando se introduce el valor en la marca, se especifica en formato de tiempo.

IES Cavanilles. Alicante Pgina 57


21. Comparaciones
Las operaciones comparan las entradas IN1 e IN2 segn los tipos de comparacin siguientes:

== IN1 es igual a IN2


<> IN1 es diferente a IN2
> IN1 es mayor que IN2
< IN1 es menor que IN2
>= IN1 es mayor o igual a IN2
<= IN1 es menor o igual a IN2
Los valores a comparar pueden ser:

E entrada: EW, ED
A salida: AW, AD
M marca: MW, MD
P periferia (acceso directo) PEW, PED
L datos locales
D palabra doble (32 bits).
Constantes 25 (el valor esta en decimal)

NOTA: Un comparador, acta como un contacto en el que hay valor 1 cuando se cumple la comparacin.

Se dispone de tres grupos de operaciones de comparacin:

CMP I Comparar enteros (16 Bit)


CMP D Comparar enteros dobles (32 Bit)
CMP R Comparar nmeros en coma flotante

(El signo es sustituido por una de las seis posibles comparaciones)

Ejemplo de comparar: comprobar cuando es mayor el valor de 20 que el del contador.

Ejer9: Realizar la comparacin de cuando el valor de un temporizador a la conexin (SE), es mayor que un
tiempo expresado en formato S5T#xxS. Utilizar como tiempo del SE = 20S, y el valor a compara de 10S.

Puedes usar la comparacin con el valor absoluto o comparando los datos que hay en las palabra de marcas
asociada al temporizador con otra palabra.
IES Cavanilles. Alicante Pgina 58
Ejer10: Clave para abrir una cerradura:

Para poder abrir una cerradura, debo de poner en MW0 el valor 1234. Este valor seria introducido por un
terminal de operador o por un SCADA. Luego para el ejercicio utilizaremos la entrada E125.0, para cargar en el
MW0 el valor de 1234.

Si al accionar el pulsador E124.0 y la clave es correcta, funcionara la cerradura (salida A124.0 activa) durante 5
segundos y borraremos la clave correcta del MW0, cargando un cero en MW0.

Si nos equivocamos tres veces seguidas (tres pulsaciones en la entrada E124.0 y el valor del MW0 no es
1234), se bloqueara la cerradura y funcionara una sirena (salida A124.7) de forma intermitente hasta que la
paremos accionando el pulsador E124.0, habiendo colocando antes en MW0 el valor 9999.

Programar en el OB100 la carga del valor del contador de fallos.

Solucin propuesta:

OB100 Carga al arranque del PLC

OB1

IES Cavanilles. Alicante Pgina 59


Ejercicio 10b

Mejora: Hacer el programa necesario para que una vez se produzca algn fallo, demos un tiempo de 15
segundos para abrir la cerradura, en caso de no hacerlo, debe de activarse la alarma, se bloqueara la cerradura
y funcionara una sirena (salida A124.7) de forma intermitente hasta que la paremos accionando el pulsador
E124.0, habiendo colocando antes en MW0 el valor 9999.

IES Cavanilles. Alicante Pgina 60


22. Operaciones lgicas entre palabras o dobles palabras.
Existen las operaciones con 16 bits (W) y las de 32 bits (DW). El funcionamiento es idntico. Veamos las de 16
bits.

Operacin AND entre palabras WAND_W: La funcin WAND__W coge los 16 bits de IN1 y los 16 bits de IN2,
realiza la operacin AND (bit a bit) de los bits de la misma posicin (dentro de su palabra) y el resultado lo enva
a OUT. Habr un 1 cuando ambos bits tengan valor 1.

Operacin OR entre palabras WOR_W: La funcin WOR__W coge los 16 bits de IN1 y los 16 bits de IN2, realiza
la operacin OR (bit a bit) de los bits de la misma posicin (dentro de su palabra) y el resultado lo enva a OUT.
Habr un 1 cuando alguno de los bits operados sea 1.

Operacin OR exclusiva entre palabras WXOR_W: La funcin WXOR__W coge los 16 bits de IN1 y los 16 bits de
IN2, realiza la operacin OR exclusiva (bit a bit) de los bits de la misma posicin (dentro de su palabra) y el
resultado lo enva a OUT . (tendr un 1 cuando los bits de IN1 e IN2 sean diferentes).

IES Cavanilles. Alicante Pgina 61


23. Operaciones aritmticas con nmeros enteros
Suma de nmeros enteros: ADD_I suma los registros que tenga en IN1 e IN2 y enva el resultado a OUT. (OUT=
IN1+IN2). En este ejemplo se suma 1 al valor de MW0 cada vez que se activa la E124.0 y el resultado se
deposita nuevamente en MW0.

Ojo: para evitar que se incremente continuamente en cada ciclo de scan, se han de utilizar los Flancos.

Resta de nmeros enteros:

SUB_I resta los registros que tenga en IN1 e IN2 y enva el resultado a OUT. (OUT= IN1-IN2).

Multiplicacin de nmeros enteros:

MUL_I multiplica los registros que tenga en IN1 e IN2 y enva el resultado a OUT. (OUT= IN1*IN2).

Divisin de nmeros enteros:

DIV_I divide los registros que tenga en IN1 e IN2 y enva el resultado a OUT. (OUT= IN1/IN2).

La funcin MOD, recupera el resto de esa divisin (solo en dobles palabras).

En cualquier de estas cuatro operaciones, el resultado ha de estar comprendido dentro de los limites de los
nmeros enteros.

Tambin tenemos las mismas operaciones en 32 bits:

ADD_DI, SUB_DI, MUL_DI y DIV_DI

En caso de no ser as:


Se activa el bit de estado OV (desbordamiento).
El resultado obtenido en OUT NO ser vlido.
En ENO tendr un 0.

Lmites nmero enteros: (16 bits): -32.768 a +32.767


(32 bits): -2.147.483.648 a +2.147.483.647

Ejemplo: Contador de horas de funcionamiento de un motor

Cuando el motor haya funcionado durante 5000 horas, un indicador nos avisara para la realizacin de un
mantenimiento preventivo.

Solucin propuesta

El sistema se pone en marcha con la entrada E124.0, que activa el funcionamiento del motor A124.0 y se
detiene con la entrada E124.1. Resetearemos el tiempo de funcionamiento del sistema con la entrada E124.2.

Mediante un reloj de pulsos de 0,5s contaremos las horas (3600 segundos en MW0) que est el sistema en
marcha. Estas horas las acumularemos en otro registro MW2. Con una comparacin de MW2 con las horas
previstas de mantenimiento activaremos la seal de aviso.
IES Cavanilles. Alicante Pgina 62
Ejercicio 11: Realizar las modificaciones necesarias para que una vez superado el lmite de horas de
funcionamiento nos avise cada hora, durante 1 minuto, de la necesidad de realizar el mantenimiento
preventivo.

IES Cavanilles. Alicante Pgina 63


24. Operaciones aritmticas con nmeros reales en coma flotante.
Los nmeros de 32 bits en coma flotante pertenecen al tipo de datos denominado "REAL. Las operaciones
aritmticas con nmeros en coma flotante sirven para ejecutar las siguientes operaciones aritmticas con dos
nmeros en coma flotante de 32 bits:

Suma de nmeros reales: ADD_R suma los registros que tenga en IN1 e IN2 y enva el resultado a OUT.
(OUT= IN1+IN2).

Resta de nmeros reales: SUB_R resta los registros que tenga en IN1 e IN2 y enva el resultado a OUT.
(OUT= IN1-IN2).

Multiplicacin de nmeros reales: MUL_R multiplica los registros que tenga en IN1 e IN2 y enva el
resultado a OUT. (OUT= IN1*IN2).

Divisin de nmeros reales: DIV_R divide los registros que tenga en IN1 e IN2 y enva el resultado a
OUT. (OUT= IN1/IN2).

Raz cuadrada: SQRT realiza la raz cuadrada de IN y enva el resultado a OUT.

Elevar al cuadrado: SQR eleva al cuadrado el valor que hay en IN y enva el resultado a OUT.

Valor absoluto de un nmero: ABS toma el valor de IN (sea positivo o negativo) y lo enva a OUT
siempre con signo positivo.

Calcular el logaritmo natural (LN).

Calcular el valor exponencial (EXP) en base e (= 2,71828...).

Calcular las funciones trigonomtricas siguientes en un ngulo como nmero en coma flotante (32 bit)

seno (SIN) y arcoseno (ASIN).


coseno (COS) y arcocoseno (ACOS).
tangente (TAN) y arcotangente (ATAN)

Ejemplo del clculo del tanto por ciento.

IES Cavanilles. Alicante Pgina 64


25. Operaciones de desplazamiento y rotacin
Las operaciones de desplazamiento sirven para desplazar bit a bit el contenido de la entrada IN, hacia la
izquierda o hacia la derecha.

El nmero que se introduce en el parmetro de entrada N indica el nmero de bits a desplazar. Las posiciones
que quedan libres despus de ejecutar la operacin de desplazamiento se rellenan con ceros o, si es hacia la
izquierda, y con el estado de seal del bit de signo (0 significa positivo y 1 significa negativo), si es hacia
derechas.

Se dispone de las operaciones de desplazamiento siguientes:

SHR_I Desplazar entero a la derecha.


SHR_DI Desplazar entero doble a la derecha.
SHL_W Desplazar 16 bits a la izquierda.
SHR_W Desplazar 16 bits a la derecha.
SHL_DW Desplazar 32 bits a la izquierda.
SHR_DW Desplazar 32 bits a la derecha.

Veamos un ejemplo de desplazamiento de


un entero. SHR_I

Veamos otro ejemplo de desplazamiento


de W a izquierda. SHL_W

Las operaciones de rotacin sirven para rotar bit a bit todo el contenido de la entrada IN, hacia la izquierda o
hacia la derecha. Las posiciones libres de los bits se rellenan con los estados de seal de los bits que se
desplazan fuera de la entrada IN. El nmero que se introduce en el parmetro de entrada N indica el nmero
de bits que se va a rotar.

Se dispone de las siguientes operaciones de rotacin:

ROL_DW Rotar 32 bits a la izquierda.


ROR_DW Rotar 32 bits a la derecha.

IES Cavanilles. Alicante Pgina 65


Ejemplo: Registro de estado desplazable

Veamos como desplazar un bit a lo largo de una palabra a modo de registro de desplazamiento usando la
instruccin SHL_W y un reloj de pulsos de 1 segundo (0,5 s a ON y 0,5 s a OFF). El bit que se desplazar ser el
valor (0 1) que tenga la entrada E124.0 y que este desplazamiento se muestre en los bytes de salida A124 y
A125.

Activando el simulador, tendremos que el valor de la entrada E124.0 se trasladar a la salida A125.0 y se ir
desplazando 1 bit hacia la izquierda cada segundo a lo largo de los Bytes de salidas 124 y 125.

Probar el funcionamiento del programa.


IES Cavanilles. Alicante Pgina 66
Ejercicio 12: Tren de pintura

Queremos controlar el un tnel de pintura al que llegarn piezas de diferente tamao a travs de una cinta.

El sistema se pondr en servicio con un pulsador de marcha (NA)(E124.1) que har que se ponga en
funcionamiento el motor de la cinta (A124.0). Como en la zona de pintura hay condiciones que inutilizaran los
sensores, el control de la vlvula de pintura (A124.1), la resistencia de secado (A124.2) y la ventilacin (A124.3)
se ha de hacer directamente con los pulsos del encoder (usar un bit de pulsos) del motor de la cinta. La cinta
avanzar a velocidad rpida (usar pulsos de 1 segundo), en la parte inicial un sensor (NC)(E124.2) controlar la
entrada de una pieza y la longitud de la misma.

A los 9 pulsos de encoder desde la entrada de la pieza, se deber activar la vlvula de pintura y la velocidad de
la cinta pasar de rpida a lenta (usar pulsos de 2 segundos), permaneciendo en esta situacin hasta que se
haya pintado completamente. A los15 pulsos del encoder desde la entrada, la pieza entrar en la zona de
secado, donde una resistencia y un ventilador se activarn. Una vez completado el proceso (que haya pasado la
pieza completa a pintar), la velocidad de la cinta volver a ser rpida hasta que otra pieza llegue a la zona de
pintura.

En cualquier momento un pulsador de emergencia (NC) (E124.0) podr detener la instalacin, parando el motor,
cortando la vlvula de pintura, la resistencia de secado y el ventilador. El sistema deber memorizar la
posicin de las piezas y se restablecer el servicio desenclavando el pulsador de emergencia y activando un
pulsador de marcha (NA) (E124.1).

Sealizacin:

En funcionamiento: luz blanca (A125.0)

Pieza en la zona de pintura: luz blanca intermitente (A125.1)

Vlvula de pintura activa: luz verde (A125.2)

Emergencia: luz roja (A125.3)

IES Cavanilles. Alicante Pgina 67


26. Operaciones de control de programa.
El MCR: es la instruccin MASTER CONTROL RELAY. Esto viene a ser como una activacin o desactivacin de un
trozo de programa.

Esto slo sirve para operaciones de contactos. Dentro del MASTER CONTROL RELAY no podemos poner
temporizadores/contadores o llamadas a otros bloques. El programa si que nos permite hacerlo pero no
funciona correctamente.

Est pensado para utilizar contactos con asignaciones =. Viene a ser como un circuito elctrico. Lo que quede
activado cuando no se ejecuta lo que hay dentro de los parntesis del MCR, se desactiva.

Si dentro del MCR utilizamos instrucciones SET y RESET, no funciona como hemos dicho. Cuando deja de actuar
lo que hay dentro de los parntesis, si estaba activado con un SET se mantiene activado. Si no hacemos un
RESET desde fuera, no se desactiva.

Veamos cuales son las cuatro instrucciones necesarias para hacer un MCR:

MCRA Activar el Master Control Relay.


MCR< Abrir el parntesis. (Necesita una condicin previa).
MCR> Cerrar el Master Control Relay.
MCRD Desactivar el Master Control Relay.

IES Cavanilles. Alicante Pgina 68


Tenemos dos instrucciones para activar y desactivar el MCR. Dentro de estas instrucciones, podemos abrir y
cerrar hasta 8 parntesis. Los podemos hacer anidados o independientes. Siempre, delante de cada parntesis
tenemos que poner una condicin.

Vemos que cada parntesis funciona slo cuando tenemos activa su condicin. Cuando su condicin no est
activa el trozo de programa en cuestin deja de funcionar y las salidas se desactivan. Es como si realmente
quitsemos tensin a ese trozo de programa.

Call: Llamar a una FC/SFC sin parmetros. Llama a una funcin (FC) o a una funcin sistema (SFC) que no tiene
parmetros

RET: Retorno, sirve para salir de los bloques condicionalmente. Para emplear esta salida se necesita una
combinacin lgica previa.

IES Cavanilles. Alicante Pgina 69


27. Bloques de datos (DB).
Los Bloques de Datos, son reas de memoria de la CPU que se utilizan para almacenar datos. Los DB mantienen
su valor ante un corte de tensin, siempre que tengamos la pila tampn de respaldo. En las CPUs actuales que
van con Memory Card, mantienen la memoria todos los DBs

Hay dos tipos de bloques de datos:

Bloques de datos globales: Los bloques de datos globales, pueden ser utilizados por todos los mdulos
del programa. Los FB, FC y OB pueden leer o escribir datos en los DB globales. Para grabar o leer datos,
antes hay que abrir el mdulo con OPN DB.

Bloques de datos de instancia: Un DB de instancia, est asociado a un Bloque de Funcin (FB)


especifico. Los datos almacenados en el DB de instancia solo pueden ser ledos o escritos por el bloque
asociado a l.

Un DB de instancia no necesita abrirse con ninguna instruccin, se abre se lee y se escribe en l de forma
automtica. Al empezar a leer el bloque de funcin (FB), se carga del DB una copia de las variables locales en el
bloque de funcin, se ejecuta el bloque y cuando acaba, deposita el valor actual de las variables locales en el
DB de instancia.

Para guardar un dato, tenemos que poner nombre a la variable, definir el formato en el que lo queremos, y el
valor inicial.

El valor inicial siempre es el mismo. Su propio nombre ya lo indica, es el valor inicial. Cuando este valor cambie,
se almacenar en otra columna que es el valor actual. Aunque al abrir el DB no veamos esta columna, tenemos
que tener en cuenta que tambin existe.

Empezaremos por crear el DB1:

Los campos que podemos rellenar, sera el de


Nombre Simblico y Comentario de Smbolo,
el resto de valores son por defecto:

Cuando abrimos el DB1, con un doble clic, desde el


administrador del step7, nos aparece la tabla a
rellenar del DB1.

IES Cavanilles. Alicante Pgina 70


La direccin es puesta de forma automtica dependiendo del tamao de las variables declaradas, segn se
trate de bits, bytes, palabas por ello, en un bloque de datos normal debemos procurar que cada tipo de
variable se genere de forma consecutiva dentro de la DB, ya que la asignacin de memoria se realiza en
formato 8 bits. Alternando distintos tipos de variables desperdiciamos memoria de datos.

14 bytes ocupados alternando variables Slo 10 bytes agrupando los tipos de variable

En nombre, escribiremos el nombre con el que podremos identificar la variable dentro del DB1. En valor inicial,
pondremos el valor que tendr la primera vez que utilicemos el DB1. Finalmente, en el comentario aadiremos
ms informacin sobre la variable.

Introducimos las variables mediante desde el men Insertar o mediante el botn derecho Lnea de
declaracin delante o detrs de la variable actual.

Tras rellenar el nombre de la variable, seleccionamos la casilla de tipo, y pulsando con el botn derecho del
ratn (o desde la opcin del men), seleccionamos el dato a utilizar: Datos simples o datos compuestos.

IES Cavanilles. Alicante Pgina 71


Tipos de datos simples Tipos de datos compuestos

Para acceder a un dato, le llamamos DB.... Puede ser DBB si es un byte, DBW si es una palabra, DBD si es una
doble palabra o DBX 0.0 si es un bit.

Si hemos declarado los siguientes datos:

Podemos referirnos a las variables por su direccin o


como smbolo de la DB, al introducir el smbolo lo
podemos seleccionar desde la tabla de variables.

Para visualizar el programa, vigilar los datos de la DB


o crear una tabla de variables.

Veamos este ejemplo:

Nota: al probar este programa, los segmentos 3 y 5 son


incompatibles, si mantenemos ambos, el segmento 3 NO
actuar ya que al haber una llamada a ese bit en el
segmento 5, permanecer desactivado. Probarlo con slo
uno de los segmentos cada vez.

IES Cavanilles. Alicante Pgina 72


Ejercicio 13: Tenemos un proceso idntico para realizar tres tipos de mezclas de dos productos.

En ese proceso, se hace una mezcla de una cantidad del producto A con otra cantidad de otro producto B
durante un tiempo determinado.

Al accionar un pulsador se abren las dos electrovlvulas que dan paso a los productos y se pone en marcha el
mezclador. Segn van pasando los tiempos, se cierra la vlvula A, se cierra la vlvula B y se para el mezclador.

Utilizar saltos para controlar el programa.

Pondremos los datos de los tiempos de cada tipo de mezcla en un DB diferente.

Mezcla 1 (DB1) Mezcla 3 (DB2) Mezcla 3 (DB3)


Tiempo producto A= 5 segundos Tiempo producto A= 7 segundos Tiempo producto A= 8 segundos
Tiempo producto B= 8 segundos Tiempo producto B= 5 segundos Tiempo producto B= 8 segundos
Tiempo Mezclador= 12 segundos Tiempo Mezclador= 10 segundos Tiempo Mezclador= 15 segundos
Vlvula A= A124.0
Vlvula B= A124.1
Mezcladora= A124.2
Selector posicin mezcla 1= E124.0
Selector posicin mezcla 2= E124.1
Selector posicin mezcla 3= E124.2
Pulsador inicio de la mezcla= E124.3

Solucin propuesta al ejercicio 13.

Definir las 3 DBs con los tiempos establecidos.

Hay que inicializar las DB, especialmente si se


copian y pegan varias veces, ya que si no puede
mantener el valor original.

En cada DB, Men > Ver > Datos (CTRL+F4) Men > Edicin > Inicializar bloque de datos

IES Cavanilles. Alicante Pgina 73


FC1 FC2

OB1

IES Cavanilles. Alicante Pgina 74


28. Bloques de organizacin (OB).
Caractersticas de los mdulos de organizacin OB y prioridades predeterminadas

OB1 Es un mdulo que se ejecuta cclicamente

El OB1 se ejecuta en cada scan.

Es el que tiene la prioridad ms baja

OBs de alarma horaria: (OB10 a OB17) Realiza una interrupcin horaria. En el S7-300, solo tenemos la OB10.

Empieza en un momento programado

Se ejecuta a partir de ese momento cada cierto tiempo:

Una sola vez, cada minuto, cada hora, cada da, cada semana, cada mes, cada ao, a final de mes.

La mayor utilidad de este tipo de funciones es segn las utilicemos:

Arranque nico: til para avisar desde un display de un determinado evento que ocurrir en una
fecha determinada a una hora determinada.

Arranque cclico: til para labores de mantenimiento (engrase de maquinaria, aviso de revisin de
motores, etc...).

Para su programacin se tendr que programar en el hardware Alarmas Horarias.

OBs de alarma de retardo (OB20 a OB23) Realiza una interrupcin de retardo. Se ejecuta al cabo de un tiempo
de llamar al OB. En el S7-300, solo tenemos la OB20.

El OB20, permite interrumpir el OB 1 y ejecutarse despus de un tiempo de demora determinado. El OB20


arranca despus de una llamada al SFC32. El SFC32 lo podemos encontrar en Libreras > Standard Library >
System Funtion Blocks

Parmetros del SFC32:

- OB_NR Nmero del OB que arrancara con retardo.


- DTIME Duracin del retardo (1 a 60.000 ms.).
- SIGN Identificador que se pone en la informacin de arranque del OB cuando se llama al OB de
retardo.
- RET_VALUE Contiene el cdigo del error si se produjera uno mientras se procesa el OB.

IES Cavanilles. Alicante Pgina 75


Ejemplo:

OB1 OB20 Comentario

Al activar la E124.0 con un pulso,


se carga la SFC32 que llama la
OB20.

En el ejemplo, al cabo de 10
segundos de activar la E124.0, se
activar la salida A124.0

La SFC32 se localiza en:

Libreras > Standard Library >


System Function Blocks

OBs de alarmas cclicas (OB30 a OB38) Son OB que se ejecutan cada cierto tiempo prefijado y con prioridades
diferentes. En el S7-300, solo tenemos la OB35.

OB Base de tiempo Valor prefijado Prefijado para la prioridad


OB 30 5s 7
OB 31 2s 8
OB 32 1s 9
OB 33 500 ms. 10
OB 34 200 ms. 11
OB 35 100 ms. 12
OB 36 50 ms. 13
OB 37 20 ms. 14
OB 38 10 ms. 15
Los OB de ejecucin cclica (por ejemplo el OB35) se ejecutan a tiempo fijo. No dependen de la ejecucin del
OB1 ya que de hecho, el OB1 pausa su ejecucin para ejecutar este OB. Esto hace que el tiempo de ciclo del
OB1 si normalmente ya es variable dependiendo del programa, la inclusin de un OB cclico lo hace an ms
variable ya que se alargar cuando se pause para ejecutar el OB35 por ejemplo, cosa que en general, no se har
en todos los ciclos de scan del PLC (el OB35 puede estarse ejecutando cada 100ms y el OB1 ejecutndose de
media cada 20ms haciendo que 1 de cada 5 se alargue para ejecutar el OB35). Se suele utilizar la OB35 para las
llamadas a lecturas analgicas, regulacin PID, y otros procesos que requieran un tratamiento uniforme en el
tiempo, e independiente del tiempo de ciclo del programa.

Para su uso se tendr que ajustar en:

Hardware > Alarmas Cclicas.

Hay que asegurarse que el tiempo de ejecucin


del programa del OB35 es menor que el tiempo
de intervalo programado como repeticin de la
ejecucin del OB35. Si el tiempo de ejecucin del
programa incluido en la OB35 excede el tiempo
de repeticin (100 ms, en la imagen), se
producir un error de tiempo de ejecucin OB80.
Se pueden configurar tiempos de 1 a 60.000 ms.

IES Cavanilles. Alicante Pgina 76


Es recomendable introducir un desfase cuando hay varias alarmas activas. Si no hay desfase se llamara
simultneamente a las alarmas cclicas, las cuales seran procesadas sucesivamente segn su prioridad.

OBs de alarma de proceso (OB40 a OB47) Son interrupciones de proceso que se activan cuando en un proceso
o un registro ha superado unos lmites mximos o mnimos admisibles. (Entradas analgicas, contadores de alta
velocidad etc...)

En los procesos en ejecucin, pueden aparecer eventos ante


los que hay que reaccionar ms rpido de lo que es posible
en el ciclo del programa. Tambin existen eventos que no se
mantienen el tiempo suficiente para que el ciclo de
programa lo pueda reconocer.

Por ese motivo, los controles SIMATIC S7-300 disponen de la elaboracin de alarmas de proceso. Junto con las
tarjetas con capacidad para elaborar alarmas de proceso, que se puede llamar, sin prcticamente demora de
tiempo, a un programa adaptado al evento correspondiente. Las alarmas de proceso se pueden equiparar con
las interrupciones.

En los S7 400 se dispone de 8 alarmas de proceso (en los S7 300 nicamente la OB40) que se asociarn a los
eventos que generen los mdulos en cuestin. Un ejemplo sera el tratamiento de las alarmas generadas por el
desbordamiento de las entradas analgicas de un mdulo de S7.

Los datos necesarios para


configurar el OB 40 en una
CPU 31xC

Con ayuda de las SFCs 39 a 42 es posible bloquear o retardar y habilitar de nuevo las alarmas de proceso.

La parametrizacin de las alarmas de proceso de un mdulo puede efectuarse no slo con STEP 7 sino tambin
con las SFCs 55 a 57.

IES Cavanilles. Alicante Pgina 77


Datos locales de los OBs de alarma de proceso

La tabla siguiente describe las variables temporales (TEMP) de un OB de alarma de proceso. Como nombres de
variables se han elegido los nombres por defecto del OB 40.

Variable Tipo de datos Descripcin


OB40_EV_CLASS BYTE Clase de evento e identificadores:B#16#11: Alarma est activada
OB40_STRT_INF BYTE B#16#41: alarma a travs de lnea de interrupcin 1
B#16#42: alarma a travs de lnea de interrupcin 2 (slo en S7400)
B#16#43: alarma a travs de lnea de interrupcin 3 (slo en S7400)
B#16#44: alarma a travs de lnea de interrupcin 4 (slo en S7400)
B#16#45: WinAC: alarma disparada por el PC
Nota: En modo multiprocesador, las lneas de interrupcin 1 a 4 estn asignadas a
las CPUs 1 a 4.
OB40_PRIORITY BYTE Prioridad parametrizada; valores prefijados: de 16 (OB 40) a 23 (OB 47)
OB40_OB_NUMBR BYTE Nmero de OB (40 hasta 47)
OB40_RESERVED_1 BYTE Reservado
OB40_IO_FLAG BYTE Mdulo de entradas: B#16#54Mdulo de salidas: B#16#55
OB40_MDL_ADDR WORD Direccin bsica lgica del mdulo que ha activado la alarma
OB40_POINT_ADDR DWORD En los mdulos digitales:
Mapa de bits con los estados de las entradas en el mdulo que han activado la
alarma de proceso.
La asignacin de qu bit de OB40_POINT_ADDR pertenece a qu canal del mdulo
debe consultarse en la descripcin del mdulo correspondiente.
En los mdulos analgicos:
Mapa de bits con la relacin de qu canales han excedido qu lmites (Encontrar la
estructura exacta en /71/ o /101/.).
En los CPs o IMs:Estado de alarma del mdulo (no es relevante para el usuario).
OB40_DATE_TIME DATE_AND_TIME Fecha y hora a las que se solicit el OB

Ejemplo de uso del OB 40, queremos que la activacin de una entrada fsica nos dispare una accin en el PLC a
travs del OB 40. La activacin de la OB se ha de hacer en un mdulo que tenga capacidad de activar un fallo de
HW, para ello debemos entrar en la configuracin del dispositivo y configurarlo.

IES Cavanilles. Alicante Pgina 78


Seleccionamos el rea de E/S fsicas para configurar las entradas que debern activar la interrupcin

Una vez configurado el HW, deberemos programar la accin, en este caso activaremos una marca y a travs de
ella una salida fsica.

OB40

OB1

IES Cavanilles. Alicante Pgina 79


Observaciones:

Este programa slo puede probarse directamente con el PLC, las interrupciones de entrada digital no
pueden simularse.

El disparador de ejecucin del OB40 se activa con un flanco, realiza la accin programada all y despus
prosigue con la ejecucin del OB1 y el resto del programa.

Si tenemos varios dispositivos que disparan al OB40, deberemos consultar los datos de proceso de la
misma para ver que tarjeta y direccin es la que ha provocado el disparo.

Actividad:

Localizar en la informacin de variables de la OB40 la entrada que provocado el disparo de la alarma.

OBs de alarma de error asncrono (OB80 a OB87)

OB80 Error de tiempo (Tiempo de ciclo excedido). Si no est programado y detecta el error, el PLC
pasa a STOP.

OB81 Fallo de alimentacin (S7-400) o Fallo de batera.

OB82 Rotura de hilo de un mdulo que tenga capacidad de diagnostico. Si no est programado y
detecta el error, el PLC pasa a STOP.

OB83 Deteccin de presencia de mdulo (Extraer/insertar). Si no est programado y detecta el


error, el PLC pasa a STOP.

OB84 Avera de la CPU. Error de la inteface MPI o de la periferia descentralizada. Si no est


programado y detecta el error, el PLC pasa a STOP.

OB85 Evento de arranque para un OB no cargado. Si no est programado y detecta el error, el PLC
pasa a STOP.

OB86 Deteccin de fallo en un bastidor. Si no est programado y detecta el error, el PLC pasa a
STOP.

OB87 Deteccin de fallo en comunicacin.

OBs de modo de arranque (OB100 a 0B102) (solo puede estar activado uno de ellos). Se selecciona en
Hardware > Arranque.

OB100 Rearranque completo. (Arranque en Caliente). Mantiene el estado de los elementos que
tenga con memoria. Se ejecuta al pasar la CPU de STOP a RUN. Primero lee el OB100 y despus el OB1
(empezando por la primera instruccin).

OB101 Rearranque. (Solo en S7-400). Mantiene el estado de los elementos que tenga con memoria.
Se ejecuta al pasar la CPU de STOP a RUN. Primero lee el OB101 y despus sigue leyendo en el punto
donde dejo de leer al pasar al estado STOP.

OB102 Arranque en fro. Pone todos los elementos a 0 (incluso los que tienen memoria). Se ejecuta
al pasar la CPU de STOP a RUN. Primero lee el OB102 y despus el OB1 (empezando por la primera
instruccin).
IES Cavanilles. Alicante Pgina 80
OBs de error (OB121 y OB122).

OB121 Error de ejecucin de programa. Detecta errores de programacin. Si no est programado y


detecta el error, el PLC pasa a STOP.

OB122 Error al intentar acceder a un mdulo de datos (entradas, salidas, etc...) .Si no est
programado y detecta el error, el PLC pasa a STOP.

IES Cavanilles. Alicante Pgina 81


29. Fecha y hora en Step7. Uso del OB10
Para ajustar la fecha y hora desde el software Step 7, conectado al PLC (o al simulador), entrar desde el men:

Administrador Simatic > Sistema Destino > Diagnstico/configuracin > Ajustar la Hora

En el mismo podemos incluso igualar la hora de nuestro PLC con la actual del ordenador.

Los S7 300/400 disponen de las SFC0 (SET_CLK) y SFC1 (READ_CLK) para la lectura de la fecha y hora actual de
aquellas CPUs que posean reloj hardware. Antes de realizar la llamada a dicha funcin de sistema, es necesario
generar en una DB una variable de tipo DATE_AND_TIME. Dicha variable se compone de 8 bytes, en los cuales
se va a almacenar tanto la fecha como la hora actual del PLC. Las fechas admisibles abarcan:

Desde DT#1990-1-1-0:0:0.0 hasta DT#2089-12-31-23:59:59.999

La siguiente tabla contiene un ejemplo para el jueves 5 de diciembre de 2013, 1:05 horas y 5,25 segundos. Se
representan los contenidos de los Bytes que contienen la informacin de la fecha y hora.

Byte Contenido Ejemplo


0 Ao B#16#13
1 Mes B#16#12
2 Da B#16#05
3 Hora B#16#01
4 Minutos B#16#05
5 Segundos B#16#05
6 Las 2 cifras ms significativas de los milisegundos B#16#25
7 (4 MSB) Las 2 cifras menos significativas de los milisegundos B#16#0
7 (4 LSB) Da de la semana B#16#5
1: Domingo
2: Lunes
3: Martes
4: Mircoles
5: Jueves
6: Viernes
7: Sbado

IES Cavanilles. Alicante Pgina 82


Para que la lectura del reloj sea ms precisa, es conveniente no realizarla desde la OB1, cuyo perodo de
ejecucin depende del tiempo de ciclo, y acceder a la misma desde la OB35, que se ejecutar a tiempos
predefinidos (por defecto 100 ms.).

La lectura y modificacin de la fecha y hora es complicada sin usar un interfaz HMI y ser necesario usar
bloques de datos para almacenar los datos del reloj.

Sincronizacin de relojes en S7. En aquellos sistemas de automatizacin en los cuales se distribuya el control
en varios PLCs S7 conectados a un sistemas de visualizacin, suele ser interesante la sincronizacin de los
relojes de los diferentes PLCs. Esto nos permitir modificar la fecha y hora actual de uno de ellos desde la OP o
el scada, y que esta modificacin quede reflejada en los dems relojes de las restantes CPUs de la instalacin.

Para poder realizar la sincronizacin de


los diferentes relojes de los equipos,
primeramente deberemos de definir
uno de ellos como reloj maestro del
bus de comunicaciones. Esto se realiza
desde Hardware de Step 7. Con esto
hemos definido un reloj maestro y los
dems relojes de la red como esclavos.

El intervalo de tiempo entre una


sincronizacin y otra puede tomar los
siguientes valores:

1 segundo. 10 segundos. 1 minuto. 10 minutos. 1 hora. 12 horas. 24 horas.

Contar tiempo del sistema. En ciertas ocasiones puede ser interesante conocer el tiempo que transcurre entre
dos eventos dentro del sistema operativo del S7.

Un caso podra ser conocer el tiempo que tarda un telegrama de comunicaciones en ser contestado por el
receptor desde que sale de nuestra CPU. Tambin podra ser interesante el tiempo consumido por una
subrutina en procesarse.

Para estos menesteres podemos usar la SFC64, que nos indica el valor actual del reloj del sistema. Dicho reloj
cuenta desde 0 hasta 2147483647 ms. (600 horas aprox.). Transcurrido este tiempo comienza de nuevo a
contar desde 0. La precisin del cronmetro es de 10 ms. en los S7 300 y de 1 ms. en los S7 400.

Cada vez que se produce un rearranque, el cronmetro del sistema pasa a 0 y comienza a contar, hasta que el
autmata pasa a STOP.

OB10: Organizacin de alarma horaria

El OB10 interrumpe al OB1 y puede ejecutarse a intervalos determinados o en una fecha concreta, es el nico
bloque de alarmas horarias disponible para la serie 300. Las alarmas horarias se pueden activar:

Una vez, en una fecha determinada (indicacin de hora absoluta con fecha)
Peridicamente, indicando la fecha de arranque y la frecuencia de repeticin (p. ej., cada minuto,
cada hora, cada da).

IES Cavanilles. Alicante Pgina 83


Reglas para las alarmas horarias

Las alarmas horarias slo se pueden tratar si se ha parametrizado la alarma horaria y el correspondiente
bloque de organizacin est contenido en el programa de usuario. En caso contrario se escribe un aviso
de error en el bfer de diagnstico y se efecta un tratamiento asncrono del error. (OB80).
Las alarmas horarias peridicas deben corresponder a una fecha real. No ser posible la repeticin
mensual de un OB 10 cuyo tiempo de arranque sea 31.1. En este caso, el OB slo sera arrancado en los
meses que tengan realmente 31 das (por lo tanto no en febrero, ni en abril, ni en junio, etc.)
Una alarma horaria activada durante el arranque (rearranque completo (en caliente) o rearranque) se
ejecuta slo tras finalizar el arranque.
Los OBs de alarmas horarias desactivados por parametrizacin no se pueden arrancar. La CPU reconoce
un error de programacin y pasa a STOP.
Tras un rearranque completo (en caliente) ser preciso reactivar todas las alarmas horarias ajustadas
(p.ej. mediante la SFC 30 ACT_TINT en el programa de arranque).

Para trabajar mediante el OB10 podemos hacerlo de dos formas, bien configurarlo mediante el HW, indicando
la fecha y la periodicidad con la que queremos que se se realice la interrupcin o bien usando las funciones y
libreras estndar de sistema para hacerlo.

Ejemplo 1 (configurar HW)

Configuracin del HW de sistema. Entrar en el


administrador y configurar la CPU para que se
activen las alarmas horarias, ajustarlo para
que se active cada minuto a partir de la fecha
y hora actual.

Compilar, guardar y transferir la configuracin


al PLC.

Crear el OB 10 y realizar un programa que incremente una unidad en el MW10 y vigilar dicha rea de memoria
mediante una tabla de estado en decimal.

A travs de la tabla de variables o del PLCSIM se puede ver como se incrementa el valor de MW10 cada minuto

IES Cavanilles. Alicante Pgina 84


Ejemplo 2 (Funciones especiales)

Vamos a realizar el mismo ejemplo anterior usando funciones.

1 Mediante la funcin FC3 (D_TOD_DT) de Libreras de Standard Library de IEC Function Blocks pasamos la
fecha y hora a la que queremos que empiece el OB10 a la variable temporal Hora_inicio (definirla en el OB1
con formato de DATE_AND_TIME). Poner el da y hora actuales.

2 Mediante la funcin SFC28 (SET_TINT) de Libreras de Standard Library de System Function Blocks,
indicamos cual es el OB con el que queremos trabajar(OB_NR), a que hora queremos que empiece (SDT) y cual
va a ser su peridiocidad (PERIOD) y donde va el cdigo de error (RET_VAL)

PERIOD W#16#0000 = una vez


W#16#0201 = cada minuto
W#16#0401 = cada hora
W#16#1001 = diaria
W#16#1201 = semanal
W#16#1401 = mensual
W#16#1801 = anual
W#16#2001 = al final del mes
3 Mediante la funcin SFC30 (ACT_TINT) de Libreras de Standard Library de System Function Blocks,
activamos o desactivamos la ejecucin del OB10 mediante la E124.0.

4 Finalmente creamos el OB10 con la funcin de incrementar 1 unidad cada vez que sea llamado

OB1 Variable TEMP #Hora_inicio

OB10

IES Cavanilles. Alicante Pgina 85


Desactivar la alarma horaria en la configuracin del HW.

Valorar si es posible realizar estas operaciones en una OB diferente a la OB10

Ejemplo 3 Utilizacin del OB35 para la interrupcin del OB1 a intervalos fijos.

Configurar las alarmas cclicas en un intervalo de 150 ms (configurar HW)

Razona que se ha conseguido en el MW10.

IES Cavanilles. Alicante Pgina 86


Uso del reloj en OB1 y OB35

La forma ms simple de usar el reloj es hacerlo desde el OB1 u OB35, donde existe una variable temporal
(OB1_DATE-TIME y OB35_DATE_TIME) en la que se almacena el valor del reloj del PLC a partir del byte 12. Para
utilizarla puede ser llamada directamente desde cualquier instruccin en cualquiera de estos OB.

Usando las instrucciones de control de reloj podemos


hacer comparaciones u obtener fechas, tiempo entre
intervalos, da de la semana

En el ejemplo tomamos el valor de la fecha actual desde


el OB1 y con la funcin de sistema FC7 (DT TO DAY) nos
leer la fecha y nos dar como resultado el da de la
semana, que depositar en MW100.

El valor en MW100 ser un nmero entero (entre el


1=Domingo y el 7 = Sbado).

Una vez que tengamos la fecha y hora cargada en una variable ya podemos operar con los datos del reloj
usando las funciones de sistema (desde Standard Library > IEC Function Blocks) que nos permiten trabajar con
fechas y horas.

Destacamos:
FC1 (AD_DT_TM) Suma un intervalo (formato TIME) a una hora (formato DT) y
da como resultado una hora nueva (formato DT).
FC3 (D_TOD_DT) Compila los formatos de datos DATE y TIME_OF_DAY (TOD)
y los convierte al formato de datos DATE_AND_TIME (DT).
FC6 (DT_DATE) Toma la fecha y hora actual y nos da la fecha (DATE).
FC7 (DT_DAY) Toma la fecha y hora actual y nos da el da de la semana
(DAY).
FC8 (DT_TOD) Toma la fecha y hora actual y nos da la hora actual (TOD)
FC9 (EQ_DT) Compra dos fechas y devuelve un 1 si son iguales
FC12 (GE_DT) Compara dos fechas y devuelve 1 si la primera es mayor o
igual
FC14 (GT_DT) Compara dos fechas y devuelve 1 si la primera es mayor
FC18 (LE_DT) Compara dos fechas y devuelve 1 si la primera es menor o
igual
FC23 (LT_DT) Compara dos fechas y devuelve 1 si la primera es menor
FC28 (NE_DT) Compara dos fechas y devuelve 1 si son diferentes
FC34 (SB_DT_DT) Resta la diferencia entre dos fechas y da la diferencia en
formato TIME
FC35 (SB_DT_TM) Resta un tiempo a una fecha y da el resultado en formato
DATE (fecha y hora)

Sin embargo, ninguna de estas funciones nos permite trabajar con las horas de forma cmoda, ni programar
acciones a unas determinadas horas.

Una posible solucin sera usar un direccionamiento indirecto basado en un puntero y una matriz, pero
requiere hacerlo en AWL y no resulta muy intuitivo. Puedes ver un ejemplo de este tipo en la web de Siemens:

http://support.automation.siemens.com/WW/view/es/22819915

IES Cavanilles. Alicante Pgina 87


Uso en cualquier otro bloque (necesita llamar a SFC1 y depositarla en una variable del bloque)

Para utilizarla en cualquier otro bloque, (en una FC por ejemplo), ser necesario llamar la hora del PLC desde la
funcin de sistema SFC1 (READ_CLK). Por defecto no aparece en la biblioteca, pero podemos llamarla en AWL
(en la imagen) o conectarnos al sistema on-line y arrastrarlo desde el mismo. En todo caso ser necesario crear
una variable temporal #Fecha_hora (en el ejemplo) en formato DATE_AND_TIME.

Llamada a la hora del PLC con SFC1 y la almacena en la


variable temporal del bloque.

En este caso en la palabra MW100 lo que se escribe es


el resultado de la operacin y los cdigos de error que
pudieran producirse.

Una vez definida la variable ya podemos usarla en el


programa para cualquier operacin.

Una vez depositada la fecha en una variable de la FC, se trabajara de forma idntica a como se hace en la OB1
u OB35, mediante las funciones de sistema de comparacin de fechas y horas.

Nuevamente resulta poco intuitivo el trabajar con fechas. La solucin ms habitual en cualquiera de los casos
es llevar los datos a una DB, con lo que podremos acceder a ellos desde cualquier bloque o funcin.

Creacin de una DB con los datos del reloj

Para trabajar con el reloj de forma ms cmoda vamos a crear una DB en la que almacenar los datos, con la
posibilidad de acceder a los mismos desde cualquier bloque o funcin Para ello en la DB1 (por ejemplo)
tendremos que crear una estructura de [ARRAY] (matriz), de la siguiente forma:

Identificamos los datos de la DB1 con el nombre de RTC y le damos una estructura:

ARRAY [1..8] Matriz de 8 valores en formato BYTE y los colocaremos a partir del byte 0 (B#16#0)

Si lo hacemos desde el OB1 u OB35, ya tendremos los datos del reloj en la variable temporal (OB1_DATE-TIME
y OB35_DATE_TIME, a partir del byte 12), por lo que NO es necesario llamar la SFC1. En cualquier otro bloque

IES Cavanilles. Alicante Pgina 88


de funcin FC tendremos que llamar la SFC1 y definir una variable temporal en formato (DATE_TIME) en el que
almacenarlo.

Moveremos los datos de la variable temporal al DB1, pero tendremos que moverlos en dos tandas ya que la
funcin MOVE slo puede mover 4 bytes y la fecha tiene 8, esto es tendremos que hacer algo de este tipo:

Como la fecha tiene 8 bytes y la


orden MOVE puede mover como
mximo 4 (doble palabra), la
aplicamos dos veces, LD0 mueve los
bytes de la variable temporal 0 al 3
al DB1.DBD0 y LD4 mover los
bytes 4 al 7 al DB1.DBD4.

Resumiendo, movemos as los 8


bytes de fecha al array de 8 bytes
en el DB1.

Si estuviramos en el OB1 u OB35,


moveramos los datos desde LD12
en el primer MOVE y desde LD16 en
el segundo MOVE.
En vez de usar la funcin MOV, se puede usar mover bloque y llevar todos
los datos a la vez y depositarlos en la DB.

En una tabla de variables podemos ver


la fecha/hora almacenada en la DB, si lo
que queremos es visualizar la hora y
minuto, vigilaremos la DB1.DBW3
(palabra 3 de la DB1, esto es, los bytes
3 y 4)

Una vez depositados los datos del reloj,


podemos acceder a los mismos desde
cualquier bloque o funcin, sin ms que
referirlos a la DB en la que los hayamos
almacenado y al Byte o Word que
queramos valorar.

IES Cavanilles. Alicante Pgina 89


Ejemplo:

Con lo visto anteriormente, hacer un programa que active la salida A124.0 los jueves entre las 14:15 y las 18:00
horas.

La hora la hemos llamado a un bloque FC1 mediante la SFC1 depositada en la variable temporal de esa FC1 con
el nombre #Fecha_hora y la hemos llevado a un bloque de datos DB1, tal y como hemos visto anteriormente
con la funcin MOVE.

Ponemos las horas en formato W#16# y las


movemos a una marca:

W#16#1415 Hora de inicio 14:15 horas (a MW10)


W#16#1800 Hora de fin 18:00 horas (a MW12)

(Como la fecha est en BCD, la podemos escribir


directamente en hexadecimal sin necesidad de
conversin)

Valoramos el da de la semana con SFC7 poniendo el


nombre de la variable temporal #Fecha_hora (o
usando #OB1_DATE_TIME, si estamos en el OB1)
que llevamos a MW14.

Para el jueves tendr el valor 5

Una solucin, comparando con la hora exacta y


poniendo a SET (a las 14:15) RSET (a las 18:00) el
bit de salida A124.0

La comparacin slo se efectuar los jueves.

Otra opcin, slo se activar los jueves entre las


14:15 y las 18:00 horas.

IES Cavanilles. Alicante Pgina 90

También podría gustarte