SlideShare una empresa de Scribd logo
1 de 92
Descargar para leer sin conexión
PLC Siemens S7-300 con
Step7
Programación básica
Fundamentos de programación básica de Simatic S7-300 con Step 7
2015
Roberto Álvarez Sindín
IES Antonio José Cavanilles. Alicante
Curso: 2015/2016
Este trabajo se distribuye bajo licencia Creative Commons BY-NC-SA
http://creativecommons.org/licenses/by-nc-sa/4.0/
Contenido
01. Autómata S7-300 compacto............................................................................................................1
02. Elementos de trabajo.......................................................................................................................2
03. Ciclo de trabajo (SCAN)....................................................................................................................3
04. Lenguajes de programación.............................................................................................................5
05. Software de programación..............................................................................................................6
06. Estructura de la memoria del s7-300.............................................................................................16
07. Tipos de datos y visualización........................................................................................................17
07.1 Marcas de memoria.............................................................................................................17
07.2 Entradas y salidas ................................................................................................................17
07.3 Declaración de símbolos......................................................................................................18
07.4 Declaración de variables......................................................................................................19
08. Creación 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 temporización......................................................................................................28
13. Byte de marcas. Generador de pulsos:..........................................................................................32
14. Remanencia en el Step7. ...............................................................................................................36
15. Plantillas que contienen temporizadores......................................................................................37
16. Modulo de organización 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 lógicas entre palabras o dobles palabras. ................................................................61
23. Operaciones aritméticas con números enteros ............................................................................62
24. Operaciones aritméticas con números reales en coma flotante...................................................64
25. Operaciones de desplazamiento y rotación ..................................................................................65
26. Operaciones de control de programa............................................................................................68
27. Bloques de datos (DB). ..................................................................................................................70
28. Bloques de organización (OB)........................................................................................................75
29. Fecha y hora en Step7. Uso del OB10............................................................................................82
Documentación de referencia:
Grupo trabajo EDCAI http://www.iespalauausit.com/edcai/html/indexcast.htm
Blog de Íñigo Gútiez: http://programacionsiemens.com/
Web Siemens: http://siemens.es/sce
IES Cavanilles. Alicante Página 1
01. Autómata S7-300 compacto
1. Ranura de Micro Memory Card con expulsor
Estas CPU’s 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, instrucción de programa
incorrecta, asignación de parámetros de sistema erróneos, errores aritméticos internos, errores
de tiempo, Flash-Eprom externa errónea, fallo de la batería, fallo de acceso a la periferia (no para
la periferia integrada en la CPU).
• BF (rojo) Error de bus
• DC5V (verde) Alimentación de 5 Voltios para CPU y para el bus S7-300, correcta.
• FRCE(amarillo) Petición de forzado permanente activo.
• RUN (verde) CPU en estado Run .
• STOP (amarillo) CPU en estado Stop.
3. Selector de modo de operación.
• RUN El autómata ejecuta el programa.
• STOP El autómata NO ejecuta el programa.
• MRES Borrado total del programa. Requiere una secuencia especial de operación
4. Interface Multipunto MPI
• La interface MPI es el enlace entre la CPU y el ordenador (18´7 kb) o para comunicar una red MPI.
• La velocidad de transmisión es de 187’5 Kb,
5. Interface para Profibus DP
• Mediante este conector se puede conectar el autómata 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 Página 2
6. Conexión Alimentación
• En estos bornes se realiza la alimentación de la CPU a 24 V DC que le será proporcionada por una
fuente de alimentación normalmente enganchada al rack.
7. Entradas y Salidas integradas.
• Este autómata lleva integrado:
5 Entradas analógicas y 2 salidas analógicas. (configurables en tensión 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 interrupción. Si se configuran
como entradas de alarma, no se utilizarán como a entradas normales.
2, 3 o 4 Contadores de alta velocidad (según el tipo de CPU)
1 Canal para posicionamiento (según el tipo de CPU).
• La numeración de las entradas y de las salidas es configurable. Se puede cambiar su numeración.
02. Elementos de trabajo
Los elementos de trabajo de estas CPU’s 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 organización. Cada OB tiene una función determinada. El OB1 es el único bloque de ejecución
cíclica. Es el que ejecuta la CPU sin que nadie le llame. Los demás OB´s tienen una función determinada. Se
IES Cavanilles. Alicante Página 3
ejecutan cuando les corresponda sin que nadie les llame desde ningún sitio del programa. Tenemos OB´s
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 interrupción horaria.
• OB20 Realiza una interrupción de retardo.
• OB35 Se ejecuta cada 100 ms.
• OB40 Realiza una interrupción de proceso. (Entradas de alarmas, contaje)
• OB82 Se ejecuta cuando hay un error en Profibus o módulos con diagnóstico
• OB100 Se ejecuta cada vez que pasa el autómata de Stop a Run
• OB121 Se ejecuta cuando al ejecutar-se el programa se encuentra algún error.
6. Bloques FC:
Son Funciones. Son trozos de programa que crea el usuario. Realizan una función determinada dentro del
proyecto. Se ejecutan cuando se las llama desde algún punto de mi programa. Pueden ser parametrizables o
no. Además de las FC´s creadas por el usuario, existen bibliotecas con funciones predefinidas SFC´s. Se utilizan
exactamente igual, aunque no podemos entrar en ellas para ver la programación.
• Hay un total de 128, del FC0 al FC127
7. Bloques FB:
Son Bloques de función. En principio funcionan igual que las FC. La diferencia está en que las FB se guardan la
tabla de parámetros en un módulo de datos DB. Esto tiene dos ventajas. Una es que podemos acceder a los
parámetros desde cualquier punto del programa. Otra es que cada vez que llamemos a la FB no es necesario
que le demos todos los parámetros. Los parámetros que no rellenemos, se tomarán por defecto los últimos
que hayamos utilizado.
• Hay un total de 128, del FB0 al FB127
8. Bloques de datos DB:
Son Módulos 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 Página 4
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 Página 5
04. Lenguajes de programación
Por defecto en esta gama están disponibles 3 lenguajes de programación:
Adicionalmente se pueden instalar complementos que permiten además la programación en:
SCL
Lenguaje de programación en texto estructurado, de acuerdo con la norma IEC.
S7 Graph
Programación secuencial gráfica.
IES Cavanilles. Alicante Página 6
05. Software de programación
A los diferentes programas y entornos de programación de los PLC de la serie S7 300 se accede desde
el Administrador Simatic. Los PLC posteriores al año 2007 se pueden programar mediante el nuevo
paquete de programación TIA Portal.
En este apartado nos referiremos exclusivamente a la programación con Step 7.
Para crear un proyecto, se puede hacer de dos formas:
• Siguiendo las instrucciones del asistente, haciendo la configuración del hardware de
forma automática.
• Realizando de forma manual la configuración del hardware.
IES Cavanilles. Alicante Página 7
IES Cavanilles. Alicante Página 8
Veamos cómo podemos crear un proyecto de forma manual.
IES Cavanilles. Alicante Página 9
IES Cavanilles. Alicante Página 10
IES Cavanilles. Alicante Página 11
Tras la creación del programa pasamos a crear los Bloques de Organización y las Funciones
IES Cavanilles. Alicante Página 12
IES Cavanilles. Alicante Página 13
Una vez realizado el programa lo cargamos en el autómata.
IES Cavanilles. Alicante Página 14
A continuación pasamos a ver cómo funciona el Simulador.
IES Cavanilles. Alicante Página 15
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 Página 16
06. Estructura de la memoria del s7-300
La memoria del autómata está estructurada en las siguientes zonas:
• La memoria de carga: permite almacenar el programa de usuario sin asignación simbólica 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 también los datos
del sistema.
 La memoria de trabajo (RAM integrada): contiene las partes del programa S7 relevantes para la
ejecución del programa. La ejecución 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 disposición
del programa de usuario, tales como: la imagen de proceso de las entradas y salidas, marcas,
temporizadores y contadores. Contiene además las pilas de bloques y de interrupción. La memoria del
sistema de la CPU ofrece además una memoria temporal (pila de datos locales) asignada al programa
para los datos locales del bloque llamado. Estos datos sólo tienen vigencia mientras esté activo el
bloque correspondiente (la zona de la tabla de declaración 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 ampliación, 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 tamaño de la memoria de los diferentes autómatas 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 botón derecho accedemos a sus propiedades, que nos indicarán tanto el tamaño de la
memoria de carga requerida por el mismo, como el de la memoria de trabajo.
Para conocer cuánto 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 configuración Hardware del equipo, que hemos proyectado en Hardware de S7.
IES Cavanilles. Alicante Página 17
07. Tipos de datos y visualización
Los operandos de las instrucciones se componen de un dato que puede ser de distintos tipos. Los tipos de
datos estándar son:
 E entrada
 A salida
 M marca
 P periferia (acceso directo)
 L datos locales
 T temporizador
 Z contador
 DB módulo 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 lógicas (and, or, etc.) puede
que nos aparezca la necesidad de almacenar el resultado lógico 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 número de
e/s disponibles dependerá del tipo de CPU que empleemos, además de los módulos externos que tengamos
conectados. Como máximo el autómata 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 Página 18
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 Declaración de símbolos
Desde el administrador de SIMATIC seleccionar el programa, apareciendo la tabla de los símbolos.
Abrimos la tabla de símbolos y rellenamos los campos de:
• Símbolo: nombre con el cual queremos identificar el elemento.
• Dirección: la dirección del elemento que vamos a identificar.
Desde el editor podremos visualizar la representación simbólica o no.
IES Cavanilles. Alicante Página 19
07.4 Declaración de variables
IES Cavanilles. Alicante Página 20
ejer3:
Realizar el siguiente fragmento de programa, sustituyendo los grupos de contactos (OR, AND) por marcas.
Utilizar la tabla de símbolos 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 Página 21
08. Creación 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 añadir en el
“Interface” de la función, 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 continuación escribiremos el fragmento de programa, utilizando dichas
etiquetas.
El signo “#” lo pone el editor de forma automática.
El siguiente paso será insertar nuestra función (FC3), en el OB1.
Tendremos que asignar los bits de entrada y el de salida.
IES Cavanilles. Alicante Página 22
Utilizar el simulador o el PLC para comprobar el funcionamiento.
ejer4:
Crear una función (FC1) en la que se realice el siguiente programa:
El sentido del pasillo es el marcado por la flecha. Cuando la fotocélula A detecta una presencia, enciende la
lámpara 1 y el ventilador. Cuando la fotocélula B detecte presencia. Apagará la lámpara 1 y encenderá la
lámpara 2. Finalmente la fotocélula 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 lógicas con bits interpretan los estados de señal 1 y 0, y los combinan de acuerdo con la lógica
de Boole. Estas combinaciones producen un 1 ó un 0 como resultado y se denominan “resultado lógico” (RLO).
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 lógicas 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 lógico) 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 función de asignación; el conector almacena el
RLO actual (el estado de señal del flujo de corriente) en el <operando> que se haya especificado.
Si se conecta en serie con otros elementos, la operación ---( # )--- se inserta igual que un contacto.
IES Cavanilles. Alicante Página 23
El conector nunca debe conectarse a una barra de alimentación, ni colocarse directamente detrás de una rama,
y tampoco debe emplearse como final de una rama.
Se puede crear la negación del conector anteponiéndole el elemento ---|NOT|--- (invertir el resultado lógico).
Guardar ---(SAVE) (Cargar resultado lógico (RLO) en registro RB) almacena el RLO en el bit del resultado binario
(RB) de la palabra de estado.
La operación SAVE resulta especialmente útil antes de salir de un bloque, permite añadir un tratamiento de
error a continuación 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 Página 24
Estas instrucciones tienen prioridad. Dependen del orden en que las programemos. Siempre tendrá la prioridad
más alta la última que programemos.
Explicación: 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 ejecución 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. Según
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”. Sólo 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
Utilización de los Flip-flop: RS o SR:
El funcionamiento básico 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 Página 25
Utilización de FC de la librería:
En el Step7 hay una serie de librerías (funciones encapsuladas o plantillas) con las que podemos optimizar el
código de nuestros programas. En concreto existen la FC82 y FC83. Funcionamiento:
Función 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 función se ejecuta
correctamente, tendremos un 1 en ENO.
Función 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 función se ejecuta
correctamente, tendremos un 1 en ENO.
Utilizando el simulador o el PLC para comprobar las dos funciones
Ejer5: GRÚA PUENTE (ojo utilizar plantillas, marcas y símbolos)
El ejercicio consiste en realizar el programa control de una grúa puente mediante un autómata. La grúa puente
está instalada en una planta de manipulación de bloques de mármol. Mediante unos carriles instalados en el
techo, la grúa puente puede desplazar los bloques de mármol en las cuatro direcciones: Norte, Sur, Este y Oeste.
También se puede controlar la altura del gancho desde donde se enganchan los bloques de mármol.
Apartado A:
 Desde un mando controlaremos los movimientos de la grúa puente. Los pulsadores del mando están
conectados a las siguientes entradas del autómata:
1) Entrada PUL_N, la grúa puente se desplazara hacia el norte.
2) Entrada PUL_S, la grúa puente se desplazara hacia el sur.
3) Entrada PUL_E, la grúa puente se desplazara hacia el este.
4) Entrada PUL_O, la grúa puente se desplazara hacia el oeste.
IES Cavanilles. Alicante Página 26
 Cuando el operario de la grúa puente deje de pulsar, la grúa puente se detiene.
 Nunca se podrá desplazar la grúa 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 autómata:
1) Salida M1_N, accionara el contactor que produce un sentido de giro en el motor M1, que realiza el
desplazamiento de la grúa puente en la dirección norte.
2) Salida M1_S, accionara el contactor que produce un sentido de giro en el motor M1, que realiza el
desplazamiento de la grúa puente en la dirección sur.
3) Salida M2_E, accionara el contactor que produce un sentido de giro en el motor M2, que realiza el
desplazamiento de la grúa puente en la dirección este.
4) Salida M2_O, accionara el contactor que produce un sentido de giro en el motor M2, que realiza el
desplazamiento de la grúa puente en la dirección oeste.
 Para asegurar que la grúa puente no sobrepasa los limites del área de trabajo (se puede variar) se han
instalado unos finales de carrera que detectaran que la grúa puente ha llegado al limite. Se conectaran
a las siguientes entradas del autómata:
1) Entrada FC_N, detecta la llegada al límite en la dirección norte.
2) Entrada FC_S, detecta la llegada al límite en la dirección sur.
3) Entrada FC_E, detecta la llegada al límite en la dirección este.
4) Entrada FC_O, detecta la llegada al límite en la dirección oeste.
 En el momento que el final de carrera detecte que la grúa puente ha llegado al limite del área de
trabajo, la grúa puente se detiene. No pudiendo desplazarse en esa dirección aunque el operario
accione el correspondiente pulsador
Apartado B:
 En el mando de la grúa 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 están conectados a las siguientes
entradas del autómata:
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 autómata:
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 límites del carrete, se han instalado unos finales de
carrera que detectaran los extremos del carrete. Se conectaran a las siguientes entradas del autómata:
1) Entrada FC_A, detecta la llegada al límite de subida.
2) Entrada FC_B, detecta la llegada al límite de bajada.
IES Cavanilles. Alicante Página 27
11. Flancos ascendente (P) y descendente (N)
Un flanco de un elemento, convierte una señal continua en un pulso de 1 Scan de duración (1 lectura de
programa)
Flanco positivo (ascendente, manda el pulso cuando la señal 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 señal 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 acompañados 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 conexión de entradas concreto. Primero debemos accionar la E124.3 y a continuación la E124.2. En
caso de hacerlo al revés, la salida no funcionara. Razonar el circuito.
IES Cavanilles. Alicante Página 28
12. Operaciones de temporización
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 programación con KOP asiste 256 temporizadores.
El temporizador se activa por la entrada “S”, decrementando el valor de temporización en una unidad y en el
intervalo indicado por la base de tiempo hasta alcanzar el valor 0. El valor de temporización se puede cargar en
los formatos binario, hexadecimal o decimal codificado en binario (BCD).
Para cargar un valor de temporización redefinido, se observarán las siguientes reglas sintácticas.
El valor de temporización se puede cargar en cualquiera de los siguientes formatos:
 W#16#wxyz
siendo: w= la base de tiempo (es decir, intervalo de tiempo o resolución).
xyz = el valor de temporización en formato BCD.
Base de tiempos y código respectivo: 10 ms 0
100 ms 1
1 s 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 temporización.
 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 automáticamente y el valor de temporización se redondea al próximo
número 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 resolución demasiado grandes (p. ej. 2H_10MS) se redondean de tal forma que correspondan a
la tabla para el margen y la resolución.
El S7-300 ofrece tres opciones para el retardo de tiempo:
 S_EVERZ (SE) Temporizador de retardo a la
conexión. La señal de salida es 1 solamente si ha
finalizado el tiempo programado y la señal de
entrada sigue siendo 1.
IES Cavanilles. Alicante Página 29
 S_SEVERZ (SS) Temporizador de retardo a la conexión
memorizado. La señal de salida cambia de 0 a 1
solamente si ha finalizado el tiempo programado,
independientemente del tiempo en que la señal de
entrada esté a 1.
 S_AVERZ (SA) Temporizador de retardo a la
desconexión. La señal de salida es 1 cuando la señal de
entrada es 1 o cuando el temporizador está en marcha.
El temporizador arranca cuando la señal de entrada
cambia de 1 a 0.
Así como dos opciones de temporización por impulso:
 S_IMPULS (SI) Temporizador de impulso. El tiempo
máximo que la señal de salida permanece a 1
corresponde al valor de temporización t programado.
La señal de salida permanece a 1 durante un tiempo
inferior si la señal de entrada cambia a 0.
IES Cavanilles. Alicante Página 30
 S_VIMP (SV) Temporizador de impulso prolongado.
La señal de salida permanece a 1 durante el tiempo
programado, independientemente del tiempo en
que la señal de entrada esté a 1.
Los organigramas para facilitar la elección 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 señal en la entrada S sea "1", pero como máximo durante el
tiempo indicado por el valor de temporización en la entrada TW.
El estado de señal en la salida Q es "1" mientras que funcione el temporizador. Si el estado de señal 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 señal en la salida Q es "0". El temporizador se pone a 0 si la entrada de desactivación R del
temporizador se pone a "1" mientras funciona el temporizador. El valor de temporización actual y la base de
IES Cavanilles. Alicante Página 31
tiempo también 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 continúa en marcha durante el tiempo predeterminado, indicado en la entrada TW, aunque el
estado de señal en la entrada S se ponga a "0" antes de haber transcurrido el intervalo de tiempo. El estado de
señal en la salida Q es "1" mientras el temporizador esté en marcha. El temporizador vuelve a arrancar con el
valor de temporización predeterminado si el estado de señal 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 desactivación R del temporizador se
pone a "1" mientras el temporizador está funcionando. El valor de temporización actual y la base de tiempo se
ponen a “0”.
El valor de temporización actual queda depositado en las salidas DUAL y DEZ. El valor de temporización en la
salida DUAL está en código binario, el valor en la salida DEZ está en formato decimal codificado en binario. El
valor de temporización actual equivale al valor inicial de TW menos el valor de temporización 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 continúa en marcha con el valor de temporización indicado en la entrada TW mientras el estado
de señal en la entrada S sea positivo. El estado de señal en la salida Q será "1" si el tiempo ha transcurrido sin
que se produjeran errores y si el estado de señal en la entrada S es "1". Si el estado de señal en la entrada S
cambia de "1" a "0" mientras está en marcha el temporizador, éste se para. En este caso, el estado de señal en
la salida Q será "0".
El temporizador se pone a 0 si la entrada de desactivación R del temporizador se pone a "1" mientras funciona
el temporizador. El valor de temporización y la base de tiempo se ponen a 0. Entonces el estado de señal en la
salida Q es "0". El temporizador también se pone a 0 si en la entrada de desactivación R el valor es "1",
mientras el temporizador no está en marcha y el RLO en la entrada S es "1".
El valor de temporización actual queda depositado en las salidas DUAL y DEZ. El valor de temporización en la
salida DUAL está en código binario, el valor en la salida DEZ está en formato decimal codificado en binario. El
valor de temporización actual equivale al valor inicial de TW menos el valor de temporización 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 señal. El temporizador
continúa en marcha con el valor de temporización indicado en la entrada TW aunque el estado de señal en la
entrada S se ponga a "0" antes de que haya transcurrido el tiempo. El estado de señal en la salida Q será "1" si
ha transcurrido el tiempo, independientemente del estado de señal que tenga la entrada S. El temporizador
vuelve a arrancar con el valor de temporización indicado si el estado de señal 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 desactivación R del
temporizador se pone a "1", independientemente del RLO en la entrada S. Entonces el estado de señal en la
salida Q es "0".
El valor de temporización actual queda depositado en las salidas DUAL y DEZ. El valor de temporización en la
salida DUAL está en código binario, el valor en la salida DEZ está en formato decimal codificado en binario. El
valor de temporización actual equivale al valor inicial de TW menos el valor de temporización 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 señal. El estado de señal
en la salida Q será "1" si el estado de señal en la entrada S es "1", y también mientras el temporizador esté en
marcha. El temporizador se para si el estado de señal en la entrada S cambia de "0" a "1" mientras el
IES Cavanilles. Alicante Página 32
temporizador está en marcha. El temporizador sólo vuelve a arrancar si el estado de señal en la entrada S
vuelve a cambiar de "1" a "0".
El temporizador se pone a 0 si la entrada de desactivación R se pone a "1" mientras el temporizador está en
marcha. El valor de temporización actual queda depositado en las salidas DUAL y DEZ. El valor de temporización
en la salida DUAL está en código binario, el valor en la salida DEZ está en formato decimal codificado en binario.
El valor de temporización actual equivale al valor inicial de TW menos el valor de temporización 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
temporización. 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 pulsación con el ratón.
Seleccionamos la CPU313C, y doble pulsación con el ratón.
IES Cavanilles. Alicante Página 33
Seleccionar la pestaña “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 continuación transferir al autómata.
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 simultánea 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 Página 34
Ejer6: CALDERA
El ejercicio consiste en utilizar una instalación convencional de una caldera de calefacción y mejorar el
rendimiento de la caldera (alargar la vida de la instalación) y optimizar el ahorro de energía. El autómata
controla el encendido y apagado de la caldera a través de su entrada de control, a la que normalmente se le
conecta el único termostato de una instalación. Esta entrada es conocida como “entrada del termostato
ambiente”. Es una entrada libre de tensión. Cuando se conecta la caldera, esta realiza dos funciones básicas:
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 presión necesaria para facilitar el
recorrido de agua caliente por todo el circuito.
La caldera solo está encendida cuando una o más válvulas están abiertas, permitiendo de este modo la
recirculación del circuito de agua, evitando de este modo la sobre presión. El autómata recibe la información
de la temperatura de cada zona mediante los contactos libres de tensión de los termostatos. Cuando un
termostato detecta una temperatura más baja de la que tiene programada cierra el contacto.
Hay que tener en cuenta las siguientes temporizaciones:
 Si no hay ninguna válvula abierta y la caldera esta apagada, cuando un termostato indica la falta de
temperatura en su zona, el autómata abrirá de forma instantánea la válvula correspondiente, pero la
caldera será conectada tras pasar 10 segundos. Este retardo protege a la instalación de una posible
sobre presión. La sobre presión es producida por la lentitud con la que se abren las válvulas, pudiendo
darse el caso de estar entregando presión la caldera al circuito y no estar abierta ninguna válvula. En
una instalación sin autómata se soluciona añadiendo en el circuito una válvula de seguridad, que
puede facilitar la circulación si se alcanzara una presión elevada en la instalación.
 En el caso de tener la caldera conectada con una o más válvulas abiertas y los termostatos detectan la
sobre temperatura en sus zonas, el autómata no desconectará la caldera y las válvulas al mismo
tiempo. Cuando el último de los termostatos indique al autómata que no necesita de más temperatura
en su zona el autómata apagara en primer lugar la caldera y tras una temporización de 15 segundos
desconectara la última de las válvulas.
IES Cavanilles. Alicante Página 35
Generador de impulsos programable con dos Temporizadores.
Utilizando dos temporizadores con retardo a la conexión SE, se construye un generador de señal programable,
y añadiendo otra salida obtenemos un generador de impulsos programable.
La representación gráfica seria:
Para el caso de utilizar solo el generador de impulsos, el siguiente ejemplo se realiza con un solo contador.
La representación gráfica 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 Página 36
En el Temporizador, podemos elegir la escala, que ha de ser menor que el tiempo seleccionado. Nos aparece
de forma automática el numero de pasos que se han de producir hasta que el temporizador decremente su
valor. También tenemos la opción de resetear el contador.
14. Remanencia en el Step7.
Determina que bits de marcas , temporizadores y contadores mantendrán su valor si se detiene el autómata.
Por defecto vienen seleccionados unos valores, pero puede configurarse en la CPU.
Administrador Equipo Simatic 300, seleccionar Hardware, y doble pulsación con el ratón.
Seleccionamos la CPU313C, y doble pulsación con el
ratón.
Seleccionar la pestaña “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 continuación transferir al autómata.
IES Cavanilles. Alicante Página 37
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 Continuación escribimos el programa:
Observar, como se ha insertado el Temporizador SE.
IES Cavanilles. Alicante Página 38
Cuando insertamos el FC1, en el OB1, nos queda como sigue: Al completar los campos vacíos, nos quedaría:
En el caso de que la plantilla la tengamos que utilizar posteriormente y no queramos modificar el contenido, la
podemos “guardar con protección 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 Página 39
La función 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 organización OB100 (Modulo de Arranque)
Este OB, se ejecuta 1 vez durante 1 Scan cuando el autómata pasa de STOP a RUN.
El OB100 se ejecuta antes que el OB1.
Al OB100 NO hay que llamarlo desde ningún otro módulo, pues se ejecuta de manera automática, pero
recuerda que hay que cargarlo a la CPU.
Solo puede haber un OB100, cuando se tenga que realizar varios acciones, se Irán añadiendo.
No se podrá leer entradas en la OB100, se deben referenciar con marcas.
Para crear el OB100: Insertar nuevo objeto -> Bloque de organización -> seleccionar OB100
Ejer7: Control de pérdida de energía.
Tenemos un proceso con dos estados de funcionamiento automático / manual.
La selección de la manera de funcionamiento la haremos mediante el selector conectado a la entrada E124.5
(1=AUTOMATICO, 0=MANUAL).
Funcionamiento Automático:
Al accionar el pulsador E124.0, se activa la salida A124.0 (electroválvula) 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 pulsación.
Funcionamiento Manual:
Mientras mantengamos accionado el pulsador E124.0, se activa la salida A124.0 (electroválvula) y la salida
A124.7 (Piloto) funciona de forma intermitente rápido.
Al dejar el pulsador E124.0. las salidas se desconectan.
IES Cavanilles. Alicante Página 40
En el caso de estar en modo automático y no se ha terminado el tiempo de 15 segundos, y se produjera un corte
del suministro energético, el PLC al iniciar un nuevo arranque el piloto permanecerá activo, y no se podrá
producir una nueva temporización, hasta que no pasemos a modo manual y volvamos al modo automático.
Para la realización del ejercicio se ha de usar una función para cada tipo de funcionamiento
(manual/automático) y sólo podremos utilizar remanencias en marcas.
Solución 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 condición de reinicio en el OB100
OB1 Bloque principal
IES Cavanilles. Alicante Página 41
IES Cavanilles. Alicante Página 42
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á sólo el tercero al ser los
otros dos una particularización 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 preselección (SZ).
 Valor de preselección (ZW) estará entre 0 y 999. ejemplo: C#25, el valor es 25.
 Puesta a cero del valor del contador (R).
 Conexión 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 lógico asociado
a la entrada S.
Una vez activado el contador, ZV y ZR incrementan y decrementan, respectivamente, la cuenta cuando el valor
lógico 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 número entero como en
código 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, después 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 Página 43
También 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 preselección, 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 vacía y acciona de nuevo el pulsador E124.1 y el ciclo
comienza de nuevo.
IES Cavanilles. Alicante Página 44
18. Temporizadores y contadores IEC
En la serie S7-300, aparte de los contadores y temporizadores tradicionales,
también están disponibles 3 temporizadores y 3 contadores en formato IEC, a los
que accederemos a través de la biblioteca de funciones estándar, en la ruta
‘Librerías > Standard Library > System Function Blocks’.
Al tratarse de bloques de función (SFB), tendremos que obligatoriamente
llevarán asociado un bloque de datos (DB), que deberemos indicar al introducir
la función o se creará de forma automática (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)
R Reset de contador
PV Valor de preselección
Q Salida (1 cuando alcanza o supera el
valor PV)
CV Valor actual de contaje
CD Entrada de contaje (DOWN)
LOAD Entrada de carga
PV Valor de preselección
Q Salida (1 cuando alcanza el valor 0 o
inferior)
CV Valor actual de contaje
CU Entrada de contaje (UP)
CD Entrada de contaje (DOWN)
R Reset de contador
LOAD Entrada de carga
PV Valor de preselección
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
simultáneamente sobre más de una extrada de activación.
Los contadores IEC utilizan una palabra (16 bits) para almacenar el valor
en entero (INT), por lo que tomarán valores entre -32768 y 32767.
IES Cavanilles. Alicante Página 45
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 conexión SFB5 (TOF) Retardo a desconexión
IN Entrada activación
PT Valor de preselección
Q Salida
ET Valor actual de temporización
IN Entrada activación
PT Valor de preselección
Q Salida
ET Valor actual de temporización
IN Entrada activación
PT Valor de preselección
Q Salida
ET Valor actual de temporización
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
activación 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 función (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 función.
IES Cavanilles. Alicante Página 46
Desde el Administrador crearemos un nuevo bloque de función:
Una vez creado, lo editaremos creando las variables tipo STAT dentro del bloque,
haciendo referencia al tipo de objeto que usaremos, mediante el número de SFB (lo
podemos ver a través 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 activación de los
temporizadores y haremos la llamada al bloque de
función desde el OB1, que nos solicitará una DB en la
que almacenar los datos.
IES Cavanilles. Alicante Página 47
FB1 OB1
Tener en cuenta que NO se puede llamar más de una vez a cada uno de los temporizadores, pero sí que se
pueden crear tantos temporizadores como necesitemos y estarán todos en un único bloque de función y en
una única DB.
Comentar también 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 Página 48
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, están compuestas por cuatro caracteres de los cuales al menos 1 tiene que ser una
letra. Ha de coincidir (Mayúsculas o minúsculas) 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 programación.
Debemos tener en cuenta que cuando realizamos un salto, dejamos de ejecutar las líneas de programa que
saltamos, por tanto si había 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 Página 49
Puede haber varios inicios hacia un mismo destino. Conseguimos una zona de evaluación y otra de ejecución.
Esta estructura se podría calificar como “pasante”.
Puede haber bucles, pero no son una buena solución de programación:
IES Cavanilles. Alicante Página 50
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 conexión T0, iniciara la temporización. El programa permanecerá
en un “bucle finito”, hasta que el T0 alcance su temporización, 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 había 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 máximo
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 organización,
el OB80, siempre y cuando se halla cargado al PLC (el OB121 será llamado entonces si falta un bloque). Veamos
una posible solución al problema anterior.
IES Cavanilles. Alicante Página 51
Y en el OB80, escribiremos:
La explicación es como sigue:
IES Cavanilles. Alicante Página 52
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 máximo programado del ciclo
de SCAN, el PLC llama a la función 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 función 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 solución 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 representación numérica: Binario, BCD y Hexadecimal.
Tenemos 3 formatos o tamaños de números: Entero (INT), doble entero (DINT) y real (REAL).
ENTERO: Los números enteros se denominan como I (de Integer).
Un número entero es un número binario de 16 bits que tiene como signo el bit más significativo.
Límite:Nº positivos: 32767 (El 0 se considera positivo)
Nº negativos: -32768
DOBLE ENTERO: Los números dobles enteros se denominan como D.
Son números binarios de 32 bits.
Límite: Nº positivos: 2 147 483 647 (El 0 se considera positivo)
Nº negativos: -2 147 483 648
REALES: Los números reales se denominan como R.
Son números binarios de 32 bits que constan de 2 partes:
Mantisa : los 3 bytes.
Exponente: el byte más alto.
Limite: 3.402.823 e-38 a 3.402 823 e+38
IES Cavanilles. Alicante Página 53
Se puede expresar de forma exponencial o como quebrados.
Ejemplo: 4.83
El editor Step-7 lo pasa automáticamente a la forma exponencial: 4.830000e+00
Se redondea con exactitud hasta el 6 dígito.
Ejemplo: 4780000000.0 = 4.780000e+10
El punto es obligatorio
Atendiendo a su tamaño, 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 programación:
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 identificarían 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. También 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 Página 54
En la siguiente tabla podemos ver como se agrupan:
MB0
MW0
MD0
MB16
MW16
MD16
MB32
MW32
MD32
MB1 MB17 MB33
MB2
MW2
MB18
MW18
MB34
MW34
MB3 MB19 MB35
MB4
MW4
MD4
MB20
MW20
MD20
MB36
MW36
MD36
MB5 MB21 MB37
MB6
MW6
MB22
MW22
MB38
MW38
MB7 MB23 MB39
MB8
MW8
MD8
MB24
MW24
MD24
MB40
MW40
MD40
MB9 MB25 MB41
MB10
MW10
MB26
MW26
MB42
MW42
MB11 MB27 MB43
MB12
MW12
MD12
MB28
MW28
MD28
MB44
MW44
MD44
MB13 MB29 MB45
MB14
MW14
MB30
MW30
MB46
MW46
MB15 MB31 MB47
Luego tendremos 256 MB ó 128 MW ó 64 MD.
La transferencia es utilizada para mover datos de una posición a otra.
La función 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 función 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 Página 55
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 tamaño.
IES Cavanilles. Alicante Página 56
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 través 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 Página 57
Cargar a un temporizador un valor a través de una marca:
Ojo: Cuando se introduce el valor en la marca, se especifica en formato de tiempo.
IES Cavanilles. Alicante Página 58
21. Comparaciones
Las operaciones comparan las entradas IN1 e IN2 según los tipos de comparación 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, actúa como un contacto en el que hay valor 1 cuando se cumple la comparación.
Se dispone de tres grupos de operaciones de comparación:
• CMP Δ I Comparar enteros (16 Bit)
• CMP Δ D Comparar enteros dobles (32 Bit)
• CMP Δ R Comparar números 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 comparación de cuando el valor de un temporizador a la conexión (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 comparación con el valor absoluto o comparando los datos que hay en las palabra de marcas
asociada al temporizador con otra palabra.
IES Cavanilles. Alicante Página 59
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.
Solución propuesta:
OB100 Carga al arranque del PLC
OB1
IES Cavanilles. Alicante Página 60
Ejercicio 10b
Mejora: Hacer el programa necesario para que una vez se produzca algún 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 Página 61
22. Operaciones lógicas entre palabras o dobles palabras.
Existen las operaciones con 16 bits (W) y las de 32 bits (DW). El funcionamiento es idéntico. Veamos las de 16
bits.
Operación AND entre palabras WAND_W: La función WAND__W coge los 16 bits de IN1 y los 16 bits de IN2,
realiza la operación AND (bit a bit) de los bits de la misma posición (dentro de su palabra) y el resultado lo envía
a OUT. Habrá un 1 cuando ambos bits tengan valor 1.
Operación OR entre palabras WOR_W: La función WOR__W coge los 16 bits de IN1 y los 16 bits de IN2, realiza
la operación OR (bit a bit) de los bits de la misma posición (dentro de su palabra) y el resultado lo envía a OUT.
Habrá un 1 cuando alguno de los bits operados sea 1.
Operación OR exclusiva entre palabras WXOR_W: La función WXOR__W coge los 16 bits de IN1 y los 16 bits de
IN2, realiza la operación OR exclusiva (bit a bit) de los bits de la misma posición (dentro de su palabra) y el
resultado lo envía a OUT . (tendré un 1 cuando los bits de IN1 e IN2 sean diferentes).
IES Cavanilles. Alicante Página 62
23. Operaciones aritméticas con números enteros
Suma de números enteros: ADD_I suma los registros que tenga en IN1 e IN2 y envía 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 números enteros:
SUB_I resta los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1-IN2).
Multiplicación de números enteros:
MUL_I multiplica los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1*IN2).
División de números enteros:
DIV_I divide los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1/IN2).
La función MOD, recupera el resto de esa división (solo en dobles palabras).
En cualquier de estas cuatro operaciones, el resultado ha de estar comprendido dentro de los limites de los
números enteros.
También 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á válido.
• En ENO tendré un 0.
Límites número 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 realización de un
mantenimiento preventivo.
Solución 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 comparación de MW2 con las horas
previstas de mantenimiento activaremos la señal de aviso.
IES Cavanilles. Alicante Página 63
Ejercicio 11: Realizar las modificaciones necesarias para que una vez superado el límite de horas de
funcionamiento nos avise cada hora, durante 1 minuto, de la necesidad de realizar el mantenimiento
preventivo.
IES Cavanilles. Alicante Página 64
24. Operaciones aritméticas con números reales en coma flotante.
Los números de 32 bits en coma flotante pertenecen al tipo de datos denominado "REAL”. Las operaciones
aritméticas con números en coma flotante sirven para ejecutar las siguientes operaciones aritméticas con dos
números en coma flotante de 32 bits:
 Suma de números reales: ADD_R suma los registros que tenga en IN1 e IN2 y envía el resultado a OUT.
(OUT= IN1+IN2).
 Resta de números reales: SUB_R resta los registros que tenga en IN1 e IN2 y envía el resultado a OUT.
(OUT= IN1-IN2).
 Multiplicación de números reales: MUL_R multiplica los registros que tenga en IN1 e IN2 y envía el
resultado a OUT. (OUT= IN1*IN2).
 División de números reales: DIV_R divide los registros que tenga en IN1 e IN2 y envía el resultado a
OUT. (OUT= IN1/IN2).
 Raíz cuadrada: SQRT realiza la raíz cuadrada de IN y envía el resultado a OUT.
 Elevar al cuadrado: SQR eleva al cuadrado el valor que hay en IN y envía el resultado a OUT.
 Valor absoluto de un número: ABS toma el valor de IN (sea positivo o negativo) y lo envía a OUT
siempre con signo positivo.
 Calcular el logaritmo natural (LN).
 Calcular el valor exponencial (EXP) en base e (= 2,71828...).
 Calcular las funciones trigonométricas siguientes en un ángulo como número en coma flotante (32 bit)
seno (SIN) y arcoseno (ASIN).
coseno (COS) y arcocoseno (ACOS).
tangente (TAN) y arcotangente (ATAN)
Ejemplo del cálculo del tanto por ciento.
IES Cavanilles. Alicante Página 65
25. Operaciones de desplazamiento y rotación
Las operaciones de desplazamiento sirven para desplazar bit a bit el contenido de la entrada IN, hacia la
izquierda o hacia la derecha.
El número que se introduce en el parámetro de entrada N indica el número de bits a desplazar. Las posiciones
que quedan libres después de ejecutar la operación de desplazamiento se rellenan con ceros o, si es hacia la
izquierda, y con el estado de señal 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 rotación 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 señal de los bits que se
desplazan fuera de la entrada IN. El número que se introduce en el parámetro de entrada N indica el número
de bits que se va a rotar.
Se dispone de las siguientes operaciones de rotación:
ROL_DW Rotar 32 bits a la izquierda.
ROR_DW Rotar 32 bits a la derecha.
IES Cavanilles. Alicante Página 66
Ejemplo: Registro de estado desplazable
Veamos como desplazar un bit a lo largo de una palabra a modo de registro de desplazamiento usando la
instrucción 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 Página 67
Ejercicio 12: Tren de pintura
Queremos controlar el un túnel de pintura al que llegarán piezas de diferente tamaño a través 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 inutilizarían los
sensores, el control de la válvula de pintura (A124.1), la resistencia de secado (A124.2) y la ventilación (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 rápida (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 válvula de pintura y la velocidad de
la cinta pasará de rápida a lenta (usar pulsos de 2 segundos), permaneciendo en esta situación 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 activarán. Una vez completado el proceso (que haya pasado la
pieza completa a pintar), la velocidad de la cinta volverá a ser rápida hasta que otra pieza llegue a la zona de
pintura.
En cualquier momento un pulsador de emergencia (NC) (E124.0) podrá detener la instalación, parando el motor,
cortando la válvula de pintura, la resistencia de secado y el ventilador. El sistema deberá ‘memorizar’ la
posición de las piezas y se restablecerá el servicio desenclavando el pulsador de emergencia y activando un
pulsador de marcha (NA) (E124.1).
Señalización:
En funcionamiento: luz blanca (A125.0)
Pieza en la zona de pintura: luz blanca intermitente (A125.1)
Válvula de pintura activa: luz verde (A125.2)
Emergencia: luz roja (A125.3)
IES Cavanilles. Alicante Página 68
26. Operaciones de control de programa.
El MCR: es la instrucción MASTER CONTROL RELAY. Esto viene a ser como una activación o desactivación de un
trozo de programa.
Esto sólo 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 eléctrico. Lo que quede
activado cuando no se ejecuta lo que hay dentro de los paréntesis 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 paréntesis, 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 paréntesis. (Necesita una condición previa).
MCR> Cerrar el Master Control Relay.
MCRD Desactivar el Master Control Relay.
IES Cavanilles. Alicante Página 69
Tenemos dos instrucciones para activar y desactivar el MCR. Dentro de estas instrucciones, podemos abrir y
cerrar hasta 8 paréntesis. Los podemos hacer anidados o independientes. Siempre, delante de cada paréntesis
tenemos que poner una condición.
Vemos que cada paréntesis funciona sólo cuando tenemos activa su condición. Cuando su condición no está
activa el trozo de programa en cuestión deja de funcionar y las salidas se desactivan. Es como si realmente
quitásemos tensión a ese trozo de programa.
Call: Llamar a una FC/SFC sin parámetros. Llama a una función (FC) o a una función sistema (SFC) que no tiene
parámetros
RET: Retorno, sirve para salir de los bloques condicionalmente. Para emplear esta salida se necesita una
combinación lógica previa.
IES Cavanilles. Alicante Página 70
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 tensión, siempre que tengamos la pila tampón 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 módulos
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 módulo con “OPN DB”.
 Bloques de datos de instancia: Un DB de instancia, está asociado a un Bloque de Función (FB)
especifico. Los datos almacenados en el DB de instancia solo pueden ser leídos o escritos por el bloque
asociado a él.
Un DB de instancia no necesita abrirse con ninguna instrucción, se abre se lee y se escribe en él de forma
automática. Al empezar a leer el bloque de función (FB), se carga del DB una copia de las variables locales en el
bloque de función, 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 también existe.
Empezaremos por crear el DB1:
Los campos que podemos rellenar, sería el de
“Nombre Simbólico” y “Comentario de Símbolo”,
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 Página 71
La dirección es puesta de forma automática dependiendo del tamaño de las variables declaradas, según 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 asignación de memoria se realiza en
formato 8 bits. Alternando distintos tipos de variables desperdiciamos memoria de datos.
14 bytes ocupados alternando variables Sólo 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 añadiremos
más información sobre la variable.
Introducimos las variables mediante desde el menú ‘Insertar’ o mediante el botón derecho ‘Línea de
declaración’ delante o detrás de la variable actual.
Tras rellenar el nombre de la variable, seleccionamos la casilla de tipo, y pulsando con el botón derecho del
ratón (o desde la opción del menú), seleccionamos el dato a utilizar: Datos simples o datos compuestos.
IES Cavanilles. Alicante Página 72
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 dirección o
como símbolo de la DB, al introducir el símbolo 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 sólo
uno de los segmentos cada vez.
IES Cavanilles. Alicante Página 73
Ejercicio 13: Tenemos un proceso idéntico 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 electroválvulas que dan paso a los productos y se pone en marcha el
mezclador. Según van pasando los tiempos, se cierra la válvula A, se cierra la válvula 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 B= 8 segundos
Tiempo Mezclador= 12 segundos
Tiempo producto A= 7 segundos
Tiempo producto B= 5 segundos
Tiempo Mezclador= 10 segundos
Tiempo producto A= 8 segundos
Tiempo producto B= 8 segundos
Tiempo Mezclador= 15 segundos
Válvula A= A124.0
Válvula B= A124.1
Mezcladora= A124.2
Selector posición mezcla 1= E124.0
Selector posición mezcla 2= E124.1
Selector posición mezcla 3= E124.2
Pulsador inicio de la mezcla= E124.3
Solución 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ú > Edición > Inicializar bloque de datos
IES Cavanilles. Alicante Página 74
FC1 FC2
OB1
IES Cavanilles. Alicante Página 75
28. Bloques de organización (OB).
Características de los módulos de organización OB y prioridades predeterminadas
OB1 Es un módulo que se ejecuta cíclicamente
• El OB1 se ejecuta en cada scan.
• Es el que tiene la prioridad más baja
OBs de alarma horaria: (OB10 a OB17) Realiza una interrupción 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 día, cada semana, cada mes, cada año, a final de mes.
La mayor utilidad de este tipo de funciones es según 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 cíclico: útil para labores de mantenimiento (engrase de maquinaria, aviso de revisión de
motores, etc...).
Para su programación se tendrá que programar en el hardware Alarmas Horarias.
OBs de alarma de retardo (OB20 a OB23) Realiza una interrupción 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 después de un tiempo de demora determinado. El OB20
arranca después de una llamada al SFC32. El SFC32 lo podemos encontrar en “Librerías > Standard Library >
System Funtion Blocks”
Parámetros del SFC32:
- OB_NR Número del OB que arrancara con retardo.
- DTIME Duración del retardo (1 a 60.000 ms.).
- SIGN Identificador que se pone en la información de arranque del OB cuando se llama al OB de
retardo.
- RET_VALUE Contiene el código del error si se produjera uno mientras se procesa el OB.
IES Cavanilles. Alicante Página 76
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:
Librerías > Standard Library >
System Function Blocks
OBs de alarmas cíclicas (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 5 s 7
• OB 31 2 s 8
• OB 32 1 s 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 ejecución cíclica (por ejemplo el OB35) se ejecutan a tiempo fijo. No dependen de la ejecución del
OB1 ya que de hecho, el OB1 pausa su ejecución para ejecutar este OB. Esto hace que el tiempo de ciclo del
OB1 si normalmente ya es variable dependiendo del programa, la inclusión de un OB cíclico lo hace aún más
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 ejecutándose 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 analógicas, regulación 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 Cíclicas.
Hay que asegurarse que el tiempo de ejecución
del programa del OB35 es menor que el tiempo
de intervalo programado como repetición de la
ejecución del OB35. Si el tiempo de ejecución del
programa incluido en la OB35 excede el tiempo
de repetición (100 ms, en la imagen), se
producirá un error de tiempo de ejecución OB80.
Se pueden configurar tiempos de 1 a 60.000 ms.
IES Cavanilles. Alicante Página 77
Es recomendable introducir un desfase cuando hay varias alarmas activas. Si no hay desfase se llamaría
simultáneamente a las alarmas cíclicas, las cuales serían procesadas sucesivamente según 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 límites máximos o mínimos admisibles. (Entradas analógicas, contadores de alta
velocidad etc...)
En los procesos en ejecución, pueden aparecer eventos ante
los que hay que reaccionar más rápido de lo que es posible
en el ciclo del programa. También 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 elaboración de alarmas de proceso. Junto con las
tarjetas con capacidad para elaborar alarmas de proceso, que se puede llamar, sin prácticamente 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 asociarán a los
eventos que generen los módulos en cuestión. Un ejemplo sería el tratamiento de las alarmas generadas por el
desbordamiento de las entradas analógicas de un módulo 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 parametrización de las alarmas de proceso de un módulo puede efectuarse no sólo con STEP 7 sino también
con las SFCs 55 a 57.
IES Cavanilles. Alicante Página 78
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 Descripción
OB40_EV_CLASS BYTE Clase de evento e identificadores:B#16#11: Alarma está activada
OB40_STRT_INF BYTE B#16#41: alarma a través de línea de interrupción 1·
B#16#42: alarma a través de línea de interrupción 2 (sólo en S7–400)·
B#16#43: alarma a través de línea de interrupción 3 (sólo en S7–400)·
B#16#44: alarma a través de línea de interrupción 4 (sólo en S7–400)·
B#16#45: WinAC: alarma disparada por el PC
Nota: En modo multiprocesador, las líneas de interrupción 1 a 4 están 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 Número de OB (40 hasta 47)
OB40_RESERVED_1 BYTE Reservado
OB40_IO_FLAG BYTE Módulo de entradas: B#16#54Módulo de salidas: B#16#55
OB40_MDL_ADDR WORD Dirección básica lógica del módulo que ha activado la alarma
OB40_POINT_ADDR DWORD En los módulos digitales:
Mapa de bits con los estados de las entradas en el módulo que han activado la
alarma de proceso.
La asignación de qué bit de OB40_POINT_ADDR pertenece a qué canal del módulo
debe consultarse en la descripción del módulo correspondiente.·
En los módulos analógicos:
Mapa de bits con la relación de qué canales han excedido qué límites (Encontrará la
estructura exacta en /71/ o /101/.).·
En los CPs o IMs:Estado de alarma del módulo (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 activación de una entrada física nos dispare una acción en el PLC a
través del OB 40. La activación de la OB se ha de hacer en un módulo que tenga capacidad de activar un fallo de
HW, para ello debemos entrar en la configuración del dispositivo y configurarlo.
IES Cavanilles. Alicante Página 79
Seleccionamos el área de E/S físicas para configurar las entradas que deberán activar la interrupción
Una vez configurado el HW, deberemos programar la acción, en este caso activaremos una marca y a través de
ella una salida física.
OB40
OB1
IES Cavanilles. Alicante Página 80
Observaciones:
Este programa sólo puede probarse directamente con el PLC, las interrupciones de entrada digital no
pueden simularse.
El disparador de ejecución del OB40 se activa con un flanco, realiza la acción programada allí y después
prosigue con la ejecución 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 dirección es la que ha provocado el disparo.
Actividad:
Localizar en la información de variables de la OB40 la entrada que provocado el disparo de la alarma.
OBs de alarma de error asíncrono (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 alimentación (S7-400) o Fallo de batería.
• OB82 Rotura de hilo de un módulo que tenga capacidad de diagnostico. Si no está programado y
detecta el error, el PLC pasa a STOP.
• OB83 Detección de presencia de módulo (Extraer/insertar). Si no está programado y detecta el
error, el PLC pasa a STOP.
• OB84 Avería 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 Detección de fallo en un bastidor. Si no está programado y detecta el error, el PLC pasa a
STOP.
• OB87 Detección de fallo en comunicación.
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 después el OB1
(empezando por la primera instrucción).
• 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 después sigue leyendo en el punto
donde dejo de leer al pasar al estado STOP.
• OB102 Arranque en frío. 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 después el OB1 (empezando por la primera
instrucción).
IES Cavanilles. Alicante Página 81
OBs de error (OB121 y OB122).
• OB121 Error de ejecución de programa. Detecta errores de programación. Si no está programado y
detecta el error, el PLC pasa a STOP.
• OB122 Error al intentar acceder a un módulo de datos (entradas, salidas, etc...) .Si no está
programado y detecta el error, el PLC pasa a STOP.
IES Cavanilles. Alicante Página 82
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 > Diagnóstico/configuración > 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 CPU’s que posean reloj hardware. Antes de realizar la llamada a dicha función 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 información de la fecha y hora.
Byte Contenido Ejemplo
0 Año B#16#13
1 Mes B#16#12
2 Día B#16#05
3 Hora B#16#01
4 Minutos B#16#05
5 Segundos B#16#05
6 Las 2 cifras más significativas de los milisegundos B#16#25
7 (4 MSB) Las 2 cifras menos significativas de los milisegundos B#16#0
7 (4 LSB) Día de la semana
1: Domingo
2: Lunes
3: Martes
4: Miércoles
5: Jueves
6: Viernes
7: Sábado
B#16#5
IES Cavanilles. Alicante Página 83
Para que la lectura del reloj sea más precisa, es conveniente no realizarla desde la OB1, cuyo período de
ejecución 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 modificación 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.
Sincronización de relojes en S7. En aquellos sistemas de automatización en los cuales se distribuya el control
en varios PLC’s S7 conectados a un sistemas de visualización, suele ser interesante la sincronización de los
relojes de los diferentes PLC’s. Esto nos permitirá modificar la fecha y hora actual de uno de ellos desde la OP o
el scada, y que esta modificación quede reflejada en los demás relojes de las restantes CPU’s de la instalación.
Para poder realizar la sincronización 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
demás relojes de la red como esclavos.
El intervalo de tiempo entre una
sincronización 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 podría ser conocer el tiempo que tarda un telegrama de comunicaciones en ser contestado por el
receptor desde que sale de nuestra CPU. También podría 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 precisión del cronómetro es de 10 ms. en los S7 300 y de 1 ms. en los S7 400.
Cada vez que se produce un rearranque, el cronómetro del sistema pasa a 0 y comienza a contar, hasta que el
autómata pasa a STOP.
OB10: Organización 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 (indicación de hora absoluta con fecha)
 Periódicamente, indicando la fecha de arranque y la frecuencia de repetición (p. ej., cada minuto,
cada hora, cada día).
IES Cavanilles. Alicante Página 84
Reglas para las alarmas horarias
 Las alarmas horarias sólo se pueden tratar si se ha parametrizado la alarma horaria y el correspondiente
bloque de organización está contenido en el programa de usuario. En caso contrario se escribe un aviso
de error en el búfer de diagnóstico y se efectúa un tratamiento asíncrono del error. (OB80).
 Las alarmas horarias periódicas deben corresponder a una fecha real. No será posible la repetición
mensual de un OB 10 cuyo tiempo de arranque sea 31.1. En este caso, el OB sólo sería arrancado en los
meses que tengan realmente 31 días (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 sólo tras finalizar el arranque.
 Los OBs de alarmas horarias desactivados por parametrización no se pueden arrancar. La CPU reconoce
un error de programación 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 interrupción o bien usando las funciones y
librerías estándar de sistema para hacerlo.
Ejemplo 1 (configurar HW)
Configuración 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 configuración
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 través de la tabla de variables o del PLCSIM se puede ver como se incrementa el valor de MW10 cada minuto
Teoria s7 300-basico
Teoria s7 300-basico
Teoria s7 300-basico
Teoria s7 300-basico
Teoria s7 300-basico
Teoria s7 300-basico

Más contenido relacionado

La actualidad más candente

PLC: Archivo 6 de la Unidad 5 instrucciones de comparación para PLC
PLC: Archivo 6 de la Unidad 5 instrucciones de comparación para PLC PLC: Archivo 6 de la Unidad 5 instrucciones de comparación para PLC
PLC: Archivo 6 de la Unidad 5 instrucciones de comparación para PLC
SANTIAGO PABLO ALBERTO
 
PLC: Manual de Instalaciones eléctricas y automatismos Tomo II por Miguel D. ...
PLC: Manual de Instalaciones eléctricas y automatismos Tomo II por Miguel D. ...PLC: Manual de Instalaciones eléctricas y automatismos Tomo II por Miguel D. ...
PLC: Manual de Instalaciones eléctricas y automatismos Tomo II por Miguel D. ...
SANTIAGO PABLO ALBERTO
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
SANTIAGO PABLO ALBERTO
 

La actualidad más candente (20)

Electrónica de potencia: Convertidores CD-CD directos
Electrónica de potencia: Convertidores CD-CD directosElectrónica de potencia: Convertidores CD-CD directos
Electrónica de potencia: Convertidores CD-CD directos
 
Ejercicios de-programacic3b3n-resueltos-con-step-7
Ejercicios de-programacic3b3n-resueltos-con-step-7Ejercicios de-programacic3b3n-resueltos-con-step-7
Ejercicios de-programacic3b3n-resueltos-con-step-7
 
Plc (analog and special io)
Plc (analog and special io)Plc (analog and special io)
Plc (analog and special io)
 
Técnico especialista PLC
Técnico especialista PLCTécnico especialista PLC
Técnico especialista PLC
 
PLC y Electroneumática: Control de motores eléctricos
PLC y Electroneumática: Control de motores eléctricos PLC y Electroneumática: Control de motores eléctricos
PLC y Electroneumática: Control de motores eléctricos
 
Programacion de un PLC
Programacion de un PLCProgramacion de un PLC
Programacion de un PLC
 
PLC: Automatización industrial
PLC: Automatización industrial PLC: Automatización industrial
PLC: Automatización industrial
 
PLC: Archivo 6 de la Unidad 5 instrucciones de comparación para PLC
PLC: Archivo 6 de la Unidad 5 instrucciones de comparación para PLC PLC: Archivo 6 de la Unidad 5 instrucciones de comparación para PLC
PLC: Archivo 6 de la Unidad 5 instrucciones de comparación para PLC
 
Control por PLC
Control por PLCControl por PLC
Control por PLC
 
Diseño de una red industrial ethernet con PLC s7-1200
Diseño de una red industrial ethernet con PLC s7-1200Diseño de una red industrial ethernet con PLC s7-1200
Diseño de una red industrial ethernet con PLC s7-1200
 
Taller 4 josue stanley lazo rivera
Taller 4 josue stanley lazo riveraTaller 4 josue stanley lazo rivera
Taller 4 josue stanley lazo rivera
 
PLC y Electroneumática: automatismos-industriales
PLC y Electroneumática: automatismos-industrialesPLC y Electroneumática: automatismos-industriales
PLC y Electroneumática: automatismos-industriales
 
Tutor logo!
Tutor logo!Tutor logo!
Tutor logo!
 
Cam unidad 4 - tema 1 - scada y dcs.
Cam   unidad 4 - tema 1 - scada y dcs.Cam   unidad 4 - tema 1 - scada y dcs.
Cam unidad 4 - tema 1 - scada y dcs.
 
Factor de Potencia en Presencia de Armonicos
Factor de Potencia en Presencia de ArmonicosFactor de Potencia en Presencia de Armonicos
Factor de Potencia en Presencia de Armonicos
 
Manual pc simu
Manual pc simu  Manual pc simu
Manual pc simu
 
PLC: Manual de Instalaciones eléctricas y automatismos Tomo II por Miguel D. ...
PLC: Manual de Instalaciones eléctricas y automatismos Tomo II por Miguel D. ...PLC: Manual de Instalaciones eléctricas y automatismos Tomo II por Miguel D. ...
PLC: Manual de Instalaciones eléctricas y automatismos Tomo II por Miguel D. ...
 
Cuaderno de logo
Cuaderno de logoCuaderno de logo
Cuaderno de logo
 
Simbolos transductores sensores detectores
Simbolos transductores sensores detectoresSimbolos transductores sensores detectores
Simbolos transductores sensores detectores
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
 

Destacado

Simatic s7 300_plc
Simatic s7 300_plcSimatic s7 300_plc
Simatic s7 300_plc
caronte08
 

Destacado (20)

Step 7 avanzado
Step 7 avanzadoStep 7 avanzado
Step 7 avanzado
 
Programación SIEMENS S7 200
Programación SIEMENS S7 200Programación SIEMENS S7 200
Programación SIEMENS S7 200
 
Programación estructurada Siemens - TIA PORTAL
Programación estructurada Siemens - TIA PORTALProgramación estructurada Siemens - TIA PORTAL
Programación estructurada Siemens - TIA PORTAL
 
Manual manejo TIA PORTAL SIEMENS
Manual manejo TIA PORTAL SIEMENSManual manejo TIA PORTAL SIEMENS
Manual manejo TIA PORTAL SIEMENS
 
STEP 7 Funciones y operaciones
STEP 7 Funciones y operaciones STEP 7 Funciones y operaciones
STEP 7 Funciones y operaciones
 
Guia configuracion y funcionamiento tia portal v13
Guia configuracion y funcionamiento tia portal v13Guia configuracion y funcionamiento tia portal v13
Guia configuracion y funcionamiento tia portal v13
 
Manejo de avisos y alarmas en HMI
Manejo de avisos y alarmas en HMIManejo de avisos y alarmas en HMI
Manejo de avisos y alarmas en HMI
 
Simatic s7 300 caracteristicas
Simatic s7 300 caracteristicasSimatic s7 300 caracteristicas
Simatic s7 300 caracteristicas
 
Tia portal MANUAL
Tia portal MANUALTia portal MANUAL
Tia portal MANUAL
 
Profibus DP
Profibus DPProfibus DP
Profibus DP
 
Plc
PlcPlc
Plc
 
S7 1200 paso-a_paso_v1.0
S7 1200 paso-a_paso_v1.0S7 1200 paso-a_paso_v1.0
S7 1200 paso-a_paso_v1.0
 
Simulacion de fluid sim y tia portal
Simulacion de fluid sim y tia portalSimulacion de fluid sim y tia portal
Simulacion de fluid sim y tia portal
 
Profinet PN
Profinet PNProfinet PN
Profinet PN
 
Unidad 4 - Autómatas Programables en las Instalaciones Térmicas y de Fluidos
Unidad 4 - Autómatas Programables en las Instalaciones Térmicas y de FluidosUnidad 4 - Autómatas Programables en las Instalaciones Térmicas y de Fluidos
Unidad 4 - Autómatas Programables en las Instalaciones Térmicas y de Fluidos
 
Unidad 3 - Autómatas Programables en las Instalaciones Térmicas y de Fluidos
Unidad 3 - Autómatas Programables en las Instalaciones Térmicas y de FluidosUnidad 3 - Autómatas Programables en las Instalaciones Térmicas y de Fluidos
Unidad 3 - Autómatas Programables en las Instalaciones Térmicas y de Fluidos
 
Unidad 5 - Introducción al control PID e implementación en S7-1200.
Unidad 5 - Introducción al control PID e implementación en S7-1200.Unidad 5 - Introducción al control PID e implementación en S7-1200.
Unidad 5 - Introducción al control PID e implementación en S7-1200.
 
SIEMENS S7-300c.ppt
SIEMENS S7-300c.pptSIEMENS S7-300c.ppt
SIEMENS S7-300c.ppt
 
Instrucciones avanzadas v2_2
Instrucciones avanzadas v2_2Instrucciones avanzadas v2_2
Instrucciones avanzadas v2_2
 
Simatic s7 300_plc
Simatic s7 300_plcSimatic s7 300_plc
Simatic s7 300_plc
 

Similar a Teoria s7 300-basico

Investigación controlador lógico programable sergio cabrera
Investigación controlador lógico programable sergio cabreraInvestigación controlador lógico programable sergio cabrera
Investigación controlador lógico programable sergio cabrera
trota mundos
 

Similar a Teoria s7 300-basico (20)

Introducción Controlador Lógico Programable master
Introducción Controlador Lógico Programable masterIntroducción Controlador Lógico Programable master
Introducción Controlador Lógico Programable master
 
Qué es un PLC.pptx
Qué es un PLC.pptxQué es un PLC.pptx
Qué es un PLC.pptx
 
Apunte de microprocesadores pic
Apunte de microprocesadores picApunte de microprocesadores pic
Apunte de microprocesadores pic
 
1 intro automatas
1 intro automatas1 intro automatas
1 intro automatas
 
1.Teoria-I PROGRAMACION SIEMENS TIA PORTAL
1.Teoria-I PROGRAMACION SIEMENS TIA PORTAL1.Teoria-I PROGRAMACION SIEMENS TIA PORTAL
1.Teoria-I PROGRAMACION SIEMENS TIA PORTAL
 
MICROCONTROLADOR
MICROCONTROLADORMICROCONTROLADOR
MICROCONTROLADOR
 
Microcontroladores 101108114327-phpapp01
Microcontroladores 101108114327-phpapp01Microcontroladores 101108114327-phpapp01
Microcontroladores 101108114327-phpapp01
 
Microcontroladores 101108114327-phpapp01
Microcontroladores 101108114327-phpapp01Microcontroladores 101108114327-phpapp01
Microcontroladores 101108114327-phpapp01
 
Microcontroladores
MicrocontroladoresMicrocontroladores
Microcontroladores
 
PLC
PLC PLC
PLC
 
Unidad1 pl cscada
Unidad1 pl cscadaUnidad1 pl cscada
Unidad1 pl cscada
 
Unidad1 plc scada PLC Modulares
Unidad1 plc scada PLC ModularesUnidad1 plc scada PLC Modulares
Unidad1 plc scada PLC Modulares
 
Plc sis scada
Plc sis scadaPlc sis scada
Plc sis scada
 
Definicion, caracteristiticas y funcionamiento de los PLC
Definicion, caracteristiticas y funcionamiento de los PLCDefinicion, caracteristiticas y funcionamiento de los PLC
Definicion, caracteristiticas y funcionamiento de los PLC
 
SEMANA 9 TEC. PLC LOGO 202310 .pptx
SEMANA 9 TEC. PLC LOGO 202310  .pptxSEMANA 9 TEC. PLC LOGO 202310  .pptx
SEMANA 9 TEC. PLC LOGO 202310 .pptx
 
3 microcontroladores
3 microcontroladores3 microcontroladores
3 microcontroladores
 
3 microcontroladores
3 microcontroladores3 microcontroladores
3 microcontroladores
 
AUTOMATIZACIÓN INDUSTRIAL CON PLC´S.pdf
AUTOMATIZACIÓN INDUSTRIAL CON PLC´S.pdfAUTOMATIZACIÓN INDUSTRIAL CON PLC´S.pdf
AUTOMATIZACIÓN INDUSTRIAL CON PLC´S.pdf
 
Investigación controlador lógico programable sergio cabrera
Investigación controlador lógico programable sergio cabreraInvestigación controlador lógico programable sergio cabrera
Investigación controlador lógico programable sergio cabrera
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corte
 

Último

PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 

Último (20)

Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 

Teoria s7 300-basico

  • 1. PLC Siemens S7-300 con Step7 Programación básica Fundamentos de programación básica de Simatic S7-300 con Step 7 2015 Roberto Álvarez Sindín IES Antonio José Cavanilles. Alicante Curso: 2015/2016
  • 2. Este trabajo se distribuye bajo licencia Creative Commons BY-NC-SA http://creativecommons.org/licenses/by-nc-sa/4.0/ Contenido 01. Autómata S7-300 compacto............................................................................................................1 02. Elementos de trabajo.......................................................................................................................2 03. Ciclo de trabajo (SCAN)....................................................................................................................3 04. Lenguajes de programación.............................................................................................................5 05. Software de programación..............................................................................................................6 06. Estructura de la memoria del s7-300.............................................................................................16 07. Tipos de datos y visualización........................................................................................................17 07.1 Marcas de memoria.............................................................................................................17 07.2 Entradas y salidas ................................................................................................................17 07.3 Declaración de símbolos......................................................................................................18 07.4 Declaración de variables......................................................................................................19 08. Creación 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 temporización......................................................................................................28 13. Byte de marcas. Generador de pulsos:..........................................................................................32 14. Remanencia en el Step7. ...............................................................................................................36 15. Plantillas que contienen temporizadores......................................................................................37 16. Modulo de organización 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 lógicas entre palabras o dobles palabras. ................................................................61 23. Operaciones aritméticas con números enteros ............................................................................62 24. Operaciones aritméticas con números reales en coma flotante...................................................64 25. Operaciones de desplazamiento y rotación ..................................................................................65 26. Operaciones de control de programa............................................................................................68 27. Bloques de datos (DB). ..................................................................................................................70 28. Bloques de organización (OB)........................................................................................................75 29. Fecha y hora en Step7. Uso del OB10............................................................................................82 Documentación de referencia: Grupo trabajo EDCAI http://www.iespalauausit.com/edcai/html/indexcast.htm Blog de Íñigo Gútiez: http://programacionsiemens.com/ Web Siemens: http://siemens.es/sce
  • 3. IES Cavanilles. Alicante Página 1 01. Autómata S7-300 compacto 1. Ranura de Micro Memory Card con expulsor Estas CPU’s 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, instrucción de programa incorrecta, asignación de parámetros de sistema erróneos, errores aritméticos internos, errores de tiempo, Flash-Eprom externa errónea, fallo de la batería, fallo de acceso a la periferia (no para la periferia integrada en la CPU). • BF (rojo) Error de bus • DC5V (verde) Alimentación de 5 Voltios para CPU y para el bus S7-300, correcta. • FRCE(amarillo) Petición de forzado permanente activo. • RUN (verde) CPU en estado Run . • STOP (amarillo) CPU en estado Stop. 3. Selector de modo de operación. • RUN El autómata ejecuta el programa. • STOP El autómata NO ejecuta el programa. • MRES Borrado total del programa. Requiere una secuencia especial de operación 4. Interface Multipunto MPI • La interface MPI es el enlace entre la CPU y el ordenador (18´7 kb) o para comunicar una red MPI. • La velocidad de transmisión es de 187’5 Kb, 5. Interface para Profibus DP • Mediante este conector se puede conectar el autómata 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.
  • 4. IES Cavanilles. Alicante Página 2 6. Conexión Alimentación • En estos bornes se realiza la alimentación de la CPU a 24 V DC que le será proporcionada por una fuente de alimentación normalmente enganchada al rack. 7. Entradas y Salidas integradas. • Este autómata lleva integrado: 5 Entradas analógicas y 2 salidas analógicas. (configurables en tensión 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 interrupción. Si se configuran como entradas de alarma, no se utilizarán como a entradas normales. 2, 3 o 4 Contadores de alta velocidad (según el tipo de CPU) 1 Canal para posicionamiento (según el tipo de CPU). • La numeración de las entradas y de las salidas es configurable. Se puede cambiar su numeración. 02. Elementos de trabajo Los elementos de trabajo de estas CPU’s 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 organización. Cada OB tiene una función determinada. El OB1 es el único bloque de ejecución cíclica. Es el que ejecuta la CPU sin que nadie le llame. Los demás OB´s tienen una función determinada. Se
  • 5. IES Cavanilles. Alicante Página 3 ejecutan cuando les corresponda sin que nadie les llame desde ningún sitio del programa. Tenemos OB´s 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 interrupción horaria. • OB20 Realiza una interrupción de retardo. • OB35 Se ejecuta cada 100 ms. • OB40 Realiza una interrupción de proceso. (Entradas de alarmas, contaje) • OB82 Se ejecuta cuando hay un error en Profibus o módulos con diagnóstico • OB100 Se ejecuta cada vez que pasa el autómata de Stop a Run • OB121 Se ejecuta cuando al ejecutar-se el programa se encuentra algún error. 6. Bloques FC: Son Funciones. Son trozos de programa que crea el usuario. Realizan una función determinada dentro del proyecto. Se ejecutan cuando se las llama desde algún punto de mi programa. Pueden ser parametrizables o no. Además de las FC´s creadas por el usuario, existen bibliotecas con funciones predefinidas SFC´s. Se utilizan exactamente igual, aunque no podemos entrar en ellas para ver la programación. • Hay un total de 128, del FC0 al FC127 7. Bloques FB: Son Bloques de función. En principio funcionan igual que las FC. La diferencia está en que las FB se guardan la tabla de parámetros en un módulo de datos DB. Esto tiene dos ventajas. Una es que podemos acceder a los parámetros desde cualquier punto del programa. Otra es que cada vez que llamemos a la FB no es necesario que le demos todos los parámetros. Los parámetros que no rellenemos, se tomarán por defecto los últimos que hayamos utilizado. • Hay un total de 128, del FB0 al FB127 8. Bloques de datos DB: Son Módulos 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.
  • 6. IES Cavanilles. Alicante Página 4 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.
  • 7. IES Cavanilles. Alicante Página 5 04. Lenguajes de programación Por defecto en esta gama están disponibles 3 lenguajes de programación: Adicionalmente se pueden instalar complementos que permiten además la programación en: SCL Lenguaje de programación en texto estructurado, de acuerdo con la norma IEC. S7 Graph Programación secuencial gráfica.
  • 8. IES Cavanilles. Alicante Página 6 05. Software de programación A los diferentes programas y entornos de programación de los PLC de la serie S7 300 se accede desde el Administrador Simatic. Los PLC posteriores al año 2007 se pueden programar mediante el nuevo paquete de programación TIA Portal. En este apartado nos referiremos exclusivamente a la programación con Step 7. Para crear un proyecto, se puede hacer de dos formas: • Siguiendo las instrucciones del asistente, haciendo la configuración del hardware de forma automática. • Realizando de forma manual la configuración del hardware.
  • 10. IES Cavanilles. Alicante Página 8 Veamos cómo podemos crear un proyecto de forma manual.
  • 13. IES Cavanilles. Alicante Página 11 Tras la creación del programa pasamos a crear los Bloques de Organización y las Funciones
  • 15. IES Cavanilles. Alicante Página 13 Una vez realizado el programa lo cargamos en el autómata.
  • 16. IES Cavanilles. Alicante Página 14 A continuación pasamos a ver cómo funciona el Simulador.
  • 17. IES Cavanilles. Alicante Página 15 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.
  • 18. IES Cavanilles. Alicante Página 16 06. Estructura de la memoria del s7-300 La memoria del autómata está estructurada en las siguientes zonas: • La memoria de carga: permite almacenar el programa de usuario sin asignación simbólica 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 también los datos del sistema.  La memoria de trabajo (RAM integrada): contiene las partes del programa S7 relevantes para la ejecución del programa. La ejecución 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 disposición del programa de usuario, tales como: la imagen de proceso de las entradas y salidas, marcas, temporizadores y contadores. Contiene además las pilas de bloques y de interrupción. La memoria del sistema de la CPU ofrece además una memoria temporal (pila de datos locales) asignada al programa para los datos locales del bloque llamado. Estos datos sólo tienen vigencia mientras esté activo el bloque correspondiente (la zona de la tabla de declaración 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 ampliación, 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 tamaño de la memoria de los diferentes autómatas 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 botón derecho accedemos a sus propiedades, que nos indicarán tanto el tamaño de la memoria de carga requerida por el mismo, como el de la memoria de trabajo. Para conocer cuánto 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 configuración Hardware del equipo, que hemos proyectado en Hardware de S7.
  • 19. IES Cavanilles. Alicante Página 17 07. Tipos de datos y visualización Los operandos de las instrucciones se componen de un dato que puede ser de distintos tipos. Los tipos de datos estándar son:  E entrada  A salida  M marca  P periferia (acceso directo)  L datos locales  T temporizador  Z contador  DB módulo 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 lógicas (and, or, etc.) puede que nos aparezca la necesidad de almacenar el resultado lógico 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 número de e/s disponibles dependerá del tipo de CPU que empleemos, además de los módulos externos que tengamos conectados. Como máximo el autómata 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
  • 20. IES Cavanilles. Alicante Página 18 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 Declaración de símbolos Desde el administrador de SIMATIC seleccionar el programa, apareciendo la tabla de los símbolos. Abrimos la tabla de símbolos y rellenamos los campos de: • Símbolo: nombre con el cual queremos identificar el elemento. • Dirección: la dirección del elemento que vamos a identificar. Desde el editor podremos visualizar la representación simbólica o no.
  • 21. IES Cavanilles. Alicante Página 19 07.4 Declaración de variables
  • 22. IES Cavanilles. Alicante Página 20 ejer3: Realizar el siguiente fragmento de programa, sustituyendo los grupos de contactos (OR, AND) por marcas. Utilizar la tabla de símbolos 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.
  • 23. IES Cavanilles. Alicante Página 21 08. Creación 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 añadir en el “Interface” de la función, 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 continuación escribiremos el fragmento de programa, utilizando dichas etiquetas. El signo “#” lo pone el editor de forma automática. El siguiente paso será insertar nuestra función (FC3), en el OB1. Tendremos que asignar los bits de entrada y el de salida.
  • 24. IES Cavanilles. Alicante Página 22 Utilizar el simulador o el PLC para comprobar el funcionamiento. ejer4: Crear una función (FC1) en la que se realice el siguiente programa: El sentido del pasillo es el marcado por la flecha. Cuando la fotocélula A detecta una presencia, enciende la lámpara 1 y el ventilador. Cuando la fotocélula B detecte presencia. Apagará la lámpara 1 y encenderá la lámpara 2. Finalmente la fotocélula 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 lógicas con bits interpretan los estados de señal 1 y 0, y los combinan de acuerdo con la lógica de Boole. Estas combinaciones producen un 1 ó un 0 como resultado y se denominan “resultado lógico” (RLO). 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 lógicas 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 lógico) 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 función de asignación; el conector almacena el RLO actual (el estado de señal del flujo de corriente) en el <operando> que se haya especificado. Si se conecta en serie con otros elementos, la operación ---( # )--- se inserta igual que un contacto.
  • 25. IES Cavanilles. Alicante Página 23 El conector nunca debe conectarse a una barra de alimentación, ni colocarse directamente detrás de una rama, y tampoco debe emplearse como final de una rama. Se puede crear la negación del conector anteponiéndole el elemento ---|NOT|--- (invertir el resultado lógico). Guardar ---(SAVE) (Cargar resultado lógico (RLO) en registro RB) almacena el RLO en el bit del resultado binario (RB) de la palabra de estado. La operación SAVE resulta especialmente útil antes de salir de un bloque, permite añadir un tratamiento de error a continuación 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.
  • 26. IES Cavanilles. Alicante Página 24 Estas instrucciones tienen prioridad. Dependen del orden en que las programemos. Siempre tendrá la prioridad más alta la última que programemos. Explicación: 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 ejecución 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. Según 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”. Sólo 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 Utilización de los Flip-flop: RS o SR: El funcionamiento básico 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.
  • 27. IES Cavanilles. Alicante Página 25 Utilización de FC de la librería: En el Step7 hay una serie de librerías (funciones encapsuladas o plantillas) con las que podemos optimizar el código de nuestros programas. En concreto existen la FC82 y FC83. Funcionamiento: Función 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 función se ejecuta correctamente, tendremos un 1 en ENO. Función 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 función se ejecuta correctamente, tendremos un 1 en ENO. Utilizando el simulador o el PLC para comprobar las dos funciones Ejer5: GRÚA PUENTE (ojo utilizar plantillas, marcas y símbolos) El ejercicio consiste en realizar el programa control de una grúa puente mediante un autómata. La grúa puente está instalada en una planta de manipulación de bloques de mármol. Mediante unos carriles instalados en el techo, la grúa puente puede desplazar los bloques de mármol en las cuatro direcciones: Norte, Sur, Este y Oeste. También se puede controlar la altura del gancho desde donde se enganchan los bloques de mármol. Apartado A:  Desde un mando controlaremos los movimientos de la grúa puente. Los pulsadores del mando están conectados a las siguientes entradas del autómata: 1) Entrada PUL_N, la grúa puente se desplazara hacia el norte. 2) Entrada PUL_S, la grúa puente se desplazara hacia el sur. 3) Entrada PUL_E, la grúa puente se desplazara hacia el este. 4) Entrada PUL_O, la grúa puente se desplazara hacia el oeste.
  • 28. IES Cavanilles. Alicante Página 26  Cuando el operario de la grúa puente deje de pulsar, la grúa puente se detiene.  Nunca se podrá desplazar la grúa 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 autómata: 1) Salida M1_N, accionara el contactor que produce un sentido de giro en el motor M1, que realiza el desplazamiento de la grúa puente en la dirección norte. 2) Salida M1_S, accionara el contactor que produce un sentido de giro en el motor M1, que realiza el desplazamiento de la grúa puente en la dirección sur. 3) Salida M2_E, accionara el contactor que produce un sentido de giro en el motor M2, que realiza el desplazamiento de la grúa puente en la dirección este. 4) Salida M2_O, accionara el contactor que produce un sentido de giro en el motor M2, que realiza el desplazamiento de la grúa puente en la dirección oeste.  Para asegurar que la grúa puente no sobrepasa los limites del área de trabajo (se puede variar) se han instalado unos finales de carrera que detectaran que la grúa puente ha llegado al limite. Se conectaran a las siguientes entradas del autómata: 1) Entrada FC_N, detecta la llegada al límite en la dirección norte. 2) Entrada FC_S, detecta la llegada al límite en la dirección sur. 3) Entrada FC_E, detecta la llegada al límite en la dirección este. 4) Entrada FC_O, detecta la llegada al límite en la dirección oeste.  En el momento que el final de carrera detecte que la grúa puente ha llegado al limite del área de trabajo, la grúa puente se detiene. No pudiendo desplazarse en esa dirección aunque el operario accione el correspondiente pulsador Apartado B:  En el mando de la grúa 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 están conectados a las siguientes entradas del autómata: 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 autómata: 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 límites del carrete, se han instalado unos finales de carrera que detectaran los extremos del carrete. Se conectaran a las siguientes entradas del autómata: 1) Entrada FC_A, detecta la llegada al límite de subida. 2) Entrada FC_B, detecta la llegada al límite de bajada.
  • 29. IES Cavanilles. Alicante Página 27 11. Flancos ascendente (P) y descendente (N) Un flanco de un elemento, convierte una señal continua en un pulso de 1 Scan de duración (1 lectura de programa) Flanco positivo (ascendente, manda el pulso cuando la señal 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 señal 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 acompañados 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 conexión de entradas concreto. Primero debemos accionar la E124.3 y a continuación la E124.2. En caso de hacerlo al revés, la salida no funcionara. Razonar el circuito.
  • 30. IES Cavanilles. Alicante Página 28 12. Operaciones de temporización 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 programación con KOP asiste 256 temporizadores. El temporizador se activa por la entrada “S”, decrementando el valor de temporización en una unidad y en el intervalo indicado por la base de tiempo hasta alcanzar el valor 0. El valor de temporización se puede cargar en los formatos binario, hexadecimal o decimal codificado en binario (BCD). Para cargar un valor de temporización redefinido, se observarán las siguientes reglas sintácticas. El valor de temporización se puede cargar en cualquiera de los siguientes formatos:  W#16#wxyz siendo: w= la base de tiempo (es decir, intervalo de tiempo o resolución). xyz = el valor de temporización en formato BCD. Base de tiempos y código respectivo: 10 ms 0 100 ms 1 1 s 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 temporización.  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 automáticamente y el valor de temporización se redondea al próximo número 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 resolución demasiado grandes (p. ej. 2H_10MS) se redondean de tal forma que correspondan a la tabla para el margen y la resolución. El S7-300 ofrece tres opciones para el retardo de tiempo:  S_EVERZ (SE) Temporizador de retardo a la conexión. La señal de salida es 1 solamente si ha finalizado el tiempo programado y la señal de entrada sigue siendo 1.
  • 31. IES Cavanilles. Alicante Página 29  S_SEVERZ (SS) Temporizador de retardo a la conexión memorizado. La señal de salida cambia de 0 a 1 solamente si ha finalizado el tiempo programado, independientemente del tiempo en que la señal de entrada esté a 1.  S_AVERZ (SA) Temporizador de retardo a la desconexión. La señal de salida es 1 cuando la señal de entrada es 1 o cuando el temporizador está en marcha. El temporizador arranca cuando la señal de entrada cambia de 1 a 0. Así como dos opciones de temporización por impulso:  S_IMPULS (SI) Temporizador de impulso. El tiempo máximo que la señal de salida permanece a 1 corresponde al valor de temporización t programado. La señal de salida permanece a 1 durante un tiempo inferior si la señal de entrada cambia a 0.
  • 32. IES Cavanilles. Alicante Página 30  S_VIMP (SV) Temporizador de impulso prolongado. La señal de salida permanece a 1 durante el tiempo programado, independientemente del tiempo en que la señal de entrada esté a 1. Los organigramas para facilitar la elección 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 señal en la entrada S sea "1", pero como máximo durante el tiempo indicado por el valor de temporización en la entrada TW. El estado de señal en la salida Q es "1" mientras que funcione el temporizador. Si el estado de señal 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 señal en la salida Q es "0". El temporizador se pone a 0 si la entrada de desactivación R del temporizador se pone a "1" mientras funciona el temporizador. El valor de temporización actual y la base de
  • 33. IES Cavanilles. Alicante Página 31 tiempo también 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 continúa en marcha durante el tiempo predeterminado, indicado en la entrada TW, aunque el estado de señal en la entrada S se ponga a "0" antes de haber transcurrido el intervalo de tiempo. El estado de señal en la salida Q es "1" mientras el temporizador esté en marcha. El temporizador vuelve a arrancar con el valor de temporización predeterminado si el estado de señal 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 desactivación R del temporizador se pone a "1" mientras el temporizador está funcionando. El valor de temporización actual y la base de tiempo se ponen a “0”. El valor de temporización actual queda depositado en las salidas DUAL y DEZ. El valor de temporización en la salida DUAL está en código binario, el valor en la salida DEZ está en formato decimal codificado en binario. El valor de temporización actual equivale al valor inicial de TW menos el valor de temporización 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 continúa en marcha con el valor de temporización indicado en la entrada TW mientras el estado de señal en la entrada S sea positivo. El estado de señal en la salida Q será "1" si el tiempo ha transcurrido sin que se produjeran errores y si el estado de señal en la entrada S es "1". Si el estado de señal en la entrada S cambia de "1" a "0" mientras está en marcha el temporizador, éste se para. En este caso, el estado de señal en la salida Q será "0". El temporizador se pone a 0 si la entrada de desactivación R del temporizador se pone a "1" mientras funciona el temporizador. El valor de temporización y la base de tiempo se ponen a 0. Entonces el estado de señal en la salida Q es "0". El temporizador también se pone a 0 si en la entrada de desactivación R el valor es "1", mientras el temporizador no está en marcha y el RLO en la entrada S es "1". El valor de temporización actual queda depositado en las salidas DUAL y DEZ. El valor de temporización en la salida DUAL está en código binario, el valor en la salida DEZ está en formato decimal codificado en binario. El valor de temporización actual equivale al valor inicial de TW menos el valor de temporización 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 señal. El temporizador continúa en marcha con el valor de temporización indicado en la entrada TW aunque el estado de señal en la entrada S se ponga a "0" antes de que haya transcurrido el tiempo. El estado de señal en la salida Q será "1" si ha transcurrido el tiempo, independientemente del estado de señal que tenga la entrada S. El temporizador vuelve a arrancar con el valor de temporización indicado si el estado de señal 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 desactivación R del temporizador se pone a "1", independientemente del RLO en la entrada S. Entonces el estado de señal en la salida Q es "0". El valor de temporización actual queda depositado en las salidas DUAL y DEZ. El valor de temporización en la salida DUAL está en código binario, el valor en la salida DEZ está en formato decimal codificado en binario. El valor de temporización actual equivale al valor inicial de TW menos el valor de temporización 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 señal. El estado de señal en la salida Q será "1" si el estado de señal en la entrada S es "1", y también mientras el temporizador esté en marcha. El temporizador se para si el estado de señal en la entrada S cambia de "0" a "1" mientras el
  • 34. IES Cavanilles. Alicante Página 32 temporizador está en marcha. El temporizador sólo vuelve a arrancar si el estado de señal en la entrada S vuelve a cambiar de "1" a "0". El temporizador se pone a 0 si la entrada de desactivación R se pone a "1" mientras el temporizador está en marcha. El valor de temporización actual queda depositado en las salidas DUAL y DEZ. El valor de temporización en la salida DUAL está en código binario, el valor en la salida DEZ está en formato decimal codificado en binario. El valor de temporización actual equivale al valor inicial de TW menos el valor de temporización 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 temporización. 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 pulsación con el ratón. Seleccionamos la CPU313C, y doble pulsación con el ratón.
  • 35. IES Cavanilles. Alicante Página 33 Seleccionar la pestaña “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 continuación transferir al autómata. 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 simultánea 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.
  • 36. IES Cavanilles. Alicante Página 34 Ejer6: CALDERA El ejercicio consiste en utilizar una instalación convencional de una caldera de calefacción y mejorar el rendimiento de la caldera (alargar la vida de la instalación) y optimizar el ahorro de energía. El autómata controla el encendido y apagado de la caldera a través de su entrada de control, a la que normalmente se le conecta el único termostato de una instalación. Esta entrada es conocida como “entrada del termostato ambiente”. Es una entrada libre de tensión. Cuando se conecta la caldera, esta realiza dos funciones básicas: 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 presión necesaria para facilitar el recorrido de agua caliente por todo el circuito. La caldera solo está encendida cuando una o más válvulas están abiertas, permitiendo de este modo la recirculación del circuito de agua, evitando de este modo la sobre presión. El autómata recibe la información de la temperatura de cada zona mediante los contactos libres de tensión de los termostatos. Cuando un termostato detecta una temperatura más baja de la que tiene programada cierra el contacto. Hay que tener en cuenta las siguientes temporizaciones:  Si no hay ninguna válvula abierta y la caldera esta apagada, cuando un termostato indica la falta de temperatura en su zona, el autómata abrirá de forma instantánea la válvula correspondiente, pero la caldera será conectada tras pasar 10 segundos. Este retardo protege a la instalación de una posible sobre presión. La sobre presión es producida por la lentitud con la que se abren las válvulas, pudiendo darse el caso de estar entregando presión la caldera al circuito y no estar abierta ninguna válvula. En una instalación sin autómata se soluciona añadiendo en el circuito una válvula de seguridad, que puede facilitar la circulación si se alcanzara una presión elevada en la instalación.  En el caso de tener la caldera conectada con una o más válvulas abiertas y los termostatos detectan la sobre temperatura en sus zonas, el autómata no desconectará la caldera y las válvulas al mismo tiempo. Cuando el último de los termostatos indique al autómata que no necesita de más temperatura en su zona el autómata apagara en primer lugar la caldera y tras una temporización de 15 segundos desconectara la última de las válvulas.
  • 37. IES Cavanilles. Alicante Página 35 Generador de impulsos programable con dos Temporizadores. Utilizando dos temporizadores con retardo a la conexión SE, se construye un generador de señal programable, y añadiendo otra salida obtenemos un generador de impulsos programable. La representación gráfica seria: Para el caso de utilizar solo el generador de impulsos, el siguiente ejemplo se realiza con un solo contador. La representación gráfica 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”.
  • 38. IES Cavanilles. Alicante Página 36 En el Temporizador, podemos elegir la escala, que ha de ser menor que el tiempo seleccionado. Nos aparece de forma automática el numero de pasos que se han de producir hasta que el temporizador decremente su valor. También tenemos la opción de resetear el contador. 14. Remanencia en el Step7. Determina que bits de marcas , temporizadores y contadores mantendrán su valor si se detiene el autómata. Por defecto vienen seleccionados unos valores, pero puede configurarse en la CPU. Administrador Equipo Simatic 300, seleccionar Hardware, y doble pulsación con el ratón. Seleccionamos la CPU313C, y doble pulsación con el ratón. Seleccionar la pestaña “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 continuación transferir al autómata.
  • 39. IES Cavanilles. Alicante Página 37 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 Continuación escribimos el programa: Observar, como se ha insertado el Temporizador SE.
  • 40. IES Cavanilles. Alicante Página 38 Cuando insertamos el FC1, en el OB1, nos queda como sigue: Al completar los campos vacíos, nos quedaría: En el caso de que la plantilla la tengamos que utilizar posteriormente y no queramos modificar el contenido, la podemos “guardar con protección 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
  • 41. IES Cavanilles. Alicante Página 39 La función 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 organización OB100 (Modulo de Arranque) Este OB, se ejecuta 1 vez durante 1 Scan cuando el autómata pasa de STOP a RUN. El OB100 se ejecuta antes que el OB1. Al OB100 NO hay que llamarlo desde ningún otro módulo, pues se ejecuta de manera automática, pero recuerda que hay que cargarlo a la CPU. Solo puede haber un OB100, cuando se tenga que realizar varios acciones, se Irán añadiendo. No se podrá leer entradas en la OB100, se deben referenciar con marcas. Para crear el OB100: Insertar nuevo objeto -> Bloque de organización -> seleccionar OB100 Ejer7: Control de pérdida de energía. Tenemos un proceso con dos estados de funcionamiento automático / manual. La selección de la manera de funcionamiento la haremos mediante el selector conectado a la entrada E124.5 (1=AUTOMATICO, 0=MANUAL). Funcionamiento Automático: Al accionar el pulsador E124.0, se activa la salida A124.0 (electroválvula) 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 pulsación. Funcionamiento Manual: Mientras mantengamos accionado el pulsador E124.0, se activa la salida A124.0 (electroválvula) y la salida A124.7 (Piloto) funciona de forma intermitente rápido. Al dejar el pulsador E124.0. las salidas se desconectan.
  • 42. IES Cavanilles. Alicante Página 40 En el caso de estar en modo automático y no se ha terminado el tiempo de 15 segundos, y se produjera un corte del suministro energético, el PLC al iniciar un nuevo arranque el piloto permanecerá activo, y no se podrá producir una nueva temporización, hasta que no pasemos a modo manual y volvamos al modo automático. Para la realización del ejercicio se ha de usar una función para cada tipo de funcionamiento (manual/automático) y sólo podremos utilizar remanencias en marcas. Solución 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 condición de reinicio en el OB100 OB1 Bloque principal
  • 44. IES Cavanilles. Alicante Página 42 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á sólo el tercero al ser los otros dos una particularización 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 preselección (SZ).  Valor de preselección (ZW) estará entre 0 y 999. ejemplo: C#25, el valor es 25.  Puesta a cero del valor del contador (R).  Conexión 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 lógico asociado a la entrada S. Una vez activado el contador, ZV y ZR incrementan y decrementan, respectivamente, la cuenta cuando el valor lógico 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 número entero como en código 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, después 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.
  • 45. IES Cavanilles. Alicante Página 43 También 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 preselección, 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 vacía y acciona de nuevo el pulsador E124.1 y el ciclo comienza de nuevo.
  • 46. IES Cavanilles. Alicante Página 44 18. Temporizadores y contadores IEC En la serie S7-300, aparte de los contadores y temporizadores tradicionales, también están disponibles 3 temporizadores y 3 contadores en formato IEC, a los que accederemos a través de la biblioteca de funciones estándar, en la ruta ‘Librerías > Standard Library > System Function Blocks’. Al tratarse de bloques de función (SFB), tendremos que obligatoriamente llevarán asociado un bloque de datos (DB), que deberemos indicar al introducir la función o se creará de forma automática (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) R Reset de contador PV Valor de preselección Q Salida (1 cuando alcanza o supera el valor PV) CV Valor actual de contaje CD Entrada de contaje (DOWN) LOAD Entrada de carga PV Valor de preselección Q Salida (1 cuando alcanza el valor 0 o inferior) CV Valor actual de contaje CU Entrada de contaje (UP) CD Entrada de contaje (DOWN) R Reset de contador LOAD Entrada de carga PV Valor de preselección 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 simultáneamente sobre más de una extrada de activación. Los contadores IEC utilizan una palabra (16 bits) para almacenar el valor en entero (INT), por lo que tomarán valores entre -32768 y 32767.
  • 47. IES Cavanilles. Alicante Página 45 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 conexión SFB5 (TOF) Retardo a desconexión IN Entrada activación PT Valor de preselección Q Salida ET Valor actual de temporización IN Entrada activación PT Valor de preselección Q Salida ET Valor actual de temporización IN Entrada activación PT Valor de preselección Q Salida ET Valor actual de temporización 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 activación 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 función (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 función.
  • 48. IES Cavanilles. Alicante Página 46 Desde el Administrador crearemos un nuevo bloque de función: Una vez creado, lo editaremos creando las variables tipo STAT dentro del bloque, haciendo referencia al tipo de objeto que usaremos, mediante el número de SFB (lo podemos ver a través 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 activación de los temporizadores y haremos la llamada al bloque de función desde el OB1, que nos solicitará una DB en la que almacenar los datos.
  • 49. IES Cavanilles. Alicante Página 47 FB1 OB1 Tener en cuenta que NO se puede llamar más de una vez a cada uno de los temporizadores, pero sí que se pueden crear tantos temporizadores como necesitemos y estarán todos en un único bloque de función y en una única DB. Comentar también 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.
  • 50. IES Cavanilles. Alicante Página 48 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, están compuestas por cuatro caracteres de los cuales al menos 1 tiene que ser una letra. Ha de coincidir (Mayúsculas o minúsculas) 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 programación. Debemos tener en cuenta que cuando realizamos un salto, dejamos de ejecutar las líneas de programa que saltamos, por tanto si había 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.
  • 51. IES Cavanilles. Alicante Página 49 Puede haber varios inicios hacia un mismo destino. Conseguimos una zona de evaluación y otra de ejecución. Esta estructura se podría calificar como “pasante”. Puede haber bucles, pero no son una buena solución de programación:
  • 52. IES Cavanilles. Alicante Página 50 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 conexión T0, iniciara la temporización. El programa permanecerá en un “bucle finito”, hasta que el T0 alcance su temporización, 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 había 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 máximo 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 organización, el OB80, siempre y cuando se halla cargado al PLC (el OB121 será llamado entonces si falta un bloque). Veamos una posible solución al problema anterior.
  • 53. IES Cavanilles. Alicante Página 51 Y en el OB80, escribiremos: La explicación es como sigue:
  • 54. IES Cavanilles. Alicante Página 52 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 máximo programado del ciclo de SCAN, el PLC llama a la función 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 función 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 solución 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 representación numérica: Binario, BCD y Hexadecimal. Tenemos 3 formatos o tamaños de números: Entero (INT), doble entero (DINT) y real (REAL). ENTERO: Los números enteros se denominan como I (de Integer). Un número entero es un número binario de 16 bits que tiene como signo el bit más significativo. Límite:Nº positivos: 32767 (El 0 se considera positivo) Nº negativos: -32768 DOBLE ENTERO: Los números dobles enteros se denominan como D. Son números binarios de 32 bits. Límite: Nº positivos: 2 147 483 647 (El 0 se considera positivo) Nº negativos: -2 147 483 648 REALES: Los números reales se denominan como R. Son números binarios de 32 bits que constan de 2 partes: Mantisa : los 3 bytes. Exponente: el byte más alto. Limite: 3.402.823 e-38 a 3.402 823 e+38
  • 55. IES Cavanilles. Alicante Página 53 Se puede expresar de forma exponencial o como quebrados. Ejemplo: 4.83 El editor Step-7 lo pasa automáticamente a la forma exponencial: 4.830000e+00 Se redondea con exactitud hasta el 6 dígito. Ejemplo: 4780000000.0 = 4.780000e+10 El punto es obligatorio Atendiendo a su tamaño, 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 programación: 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 identificarían 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. También nos permiten agrupar estos 2048 bits en grupos de 16 bits y de 32 bits, identificados como MW y MD respectivamente. Veamos un ejemplo:
  • 56. IES Cavanilles. Alicante Página 54 En la siguiente tabla podemos ver como se agrupan: MB0 MW0 MD0 MB16 MW16 MD16 MB32 MW32 MD32 MB1 MB17 MB33 MB2 MW2 MB18 MW18 MB34 MW34 MB3 MB19 MB35 MB4 MW4 MD4 MB20 MW20 MD20 MB36 MW36 MD36 MB5 MB21 MB37 MB6 MW6 MB22 MW22 MB38 MW38 MB7 MB23 MB39 MB8 MW8 MD8 MB24 MW24 MD24 MB40 MW40 MD40 MB9 MB25 MB41 MB10 MW10 MB26 MW26 MB42 MW42 MB11 MB27 MB43 MB12 MW12 MD12 MB28 MW28 MD28 MB44 MW44 MD44 MB13 MB29 MB45 MB14 MW14 MB30 MW30 MB46 MW46 MB15 MB31 MB47 Luego tendremos 256 MB ó 128 MW ó 64 MD. La transferencia es utilizada para mover datos de una posición a otra. La función 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 función 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).
  • 57. IES Cavanilles. Alicante Página 55 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 tamaño.
  • 58. IES Cavanilles. Alicante Página 56 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 través 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.
  • 59. IES Cavanilles. Alicante Página 57 Cargar a un temporizador un valor a través de una marca: Ojo: Cuando se introduce el valor en la marca, se especifica en formato de tiempo.
  • 60. IES Cavanilles. Alicante Página 58 21. Comparaciones Las operaciones comparan las entradas IN1 e IN2 según los tipos de comparación 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, actúa como un contacto en el que hay valor 1 cuando se cumple la comparación. Se dispone de tres grupos de operaciones de comparación: • CMP Δ I Comparar enteros (16 Bit) • CMP Δ D Comparar enteros dobles (32 Bit) • CMP Δ R Comparar números 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 comparación de cuando el valor de un temporizador a la conexión (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 comparación con el valor absoluto o comparando los datos que hay en las palabra de marcas asociada al temporizador con otra palabra.
  • 61. IES Cavanilles. Alicante Página 59 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. Solución propuesta: OB100 Carga al arranque del PLC OB1
  • 62. IES Cavanilles. Alicante Página 60 Ejercicio 10b Mejora: Hacer el programa necesario para que una vez se produzca algún 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”.
  • 63. IES Cavanilles. Alicante Página 61 22. Operaciones lógicas entre palabras o dobles palabras. Existen las operaciones con 16 bits (W) y las de 32 bits (DW). El funcionamiento es idéntico. Veamos las de 16 bits. Operación AND entre palabras WAND_W: La función WAND__W coge los 16 bits de IN1 y los 16 bits de IN2, realiza la operación AND (bit a bit) de los bits de la misma posición (dentro de su palabra) y el resultado lo envía a OUT. Habrá un 1 cuando ambos bits tengan valor 1. Operación OR entre palabras WOR_W: La función WOR__W coge los 16 bits de IN1 y los 16 bits de IN2, realiza la operación OR (bit a bit) de los bits de la misma posición (dentro de su palabra) y el resultado lo envía a OUT. Habrá un 1 cuando alguno de los bits operados sea 1. Operación OR exclusiva entre palabras WXOR_W: La función WXOR__W coge los 16 bits de IN1 y los 16 bits de IN2, realiza la operación OR exclusiva (bit a bit) de los bits de la misma posición (dentro de su palabra) y el resultado lo envía a OUT . (tendré un 1 cuando los bits de IN1 e IN2 sean diferentes).
  • 64. IES Cavanilles. Alicante Página 62 23. Operaciones aritméticas con números enteros Suma de números enteros: ADD_I suma los registros que tenga en IN1 e IN2 y envía 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 números enteros: SUB_I resta los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1-IN2). Multiplicación de números enteros: MUL_I multiplica los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1*IN2). División de números enteros: DIV_I divide los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1/IN2). La función MOD, recupera el resto de esa división (solo en dobles palabras). En cualquier de estas cuatro operaciones, el resultado ha de estar comprendido dentro de los limites de los números enteros. También 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á válido. • En ENO tendré un 0. Límites número 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 realización de un mantenimiento preventivo. Solución 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 comparación de MW2 con las horas previstas de mantenimiento activaremos la señal de aviso.
  • 65. IES Cavanilles. Alicante Página 63 Ejercicio 11: Realizar las modificaciones necesarias para que una vez superado el límite de horas de funcionamiento nos avise cada hora, durante 1 minuto, de la necesidad de realizar el mantenimiento preventivo.
  • 66. IES Cavanilles. Alicante Página 64 24. Operaciones aritméticas con números reales en coma flotante. Los números de 32 bits en coma flotante pertenecen al tipo de datos denominado "REAL”. Las operaciones aritméticas con números en coma flotante sirven para ejecutar las siguientes operaciones aritméticas con dos números en coma flotante de 32 bits:  Suma de números reales: ADD_R suma los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1+IN2).  Resta de números reales: SUB_R resta los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1-IN2).  Multiplicación de números reales: MUL_R multiplica los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1*IN2).  División de números reales: DIV_R divide los registros que tenga en IN1 e IN2 y envía el resultado a OUT. (OUT= IN1/IN2).  Raíz cuadrada: SQRT realiza la raíz cuadrada de IN y envía el resultado a OUT.  Elevar al cuadrado: SQR eleva al cuadrado el valor que hay en IN y envía el resultado a OUT.  Valor absoluto de un número: ABS toma el valor de IN (sea positivo o negativo) y lo envía a OUT siempre con signo positivo.  Calcular el logaritmo natural (LN).  Calcular el valor exponencial (EXP) en base e (= 2,71828...).  Calcular las funciones trigonométricas siguientes en un ángulo como número en coma flotante (32 bit) seno (SIN) y arcoseno (ASIN). coseno (COS) y arcocoseno (ACOS). tangente (TAN) y arcotangente (ATAN) Ejemplo del cálculo del tanto por ciento.
  • 67. IES Cavanilles. Alicante Página 65 25. Operaciones de desplazamiento y rotación Las operaciones de desplazamiento sirven para desplazar bit a bit el contenido de la entrada IN, hacia la izquierda o hacia la derecha. El número que se introduce en el parámetro de entrada N indica el número de bits a desplazar. Las posiciones que quedan libres después de ejecutar la operación de desplazamiento se rellenan con ceros o, si es hacia la izquierda, y con el estado de señal 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 rotación 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 señal de los bits que se desplazan fuera de la entrada IN. El número que se introduce en el parámetro de entrada N indica el número de bits que se va a rotar. Se dispone de las siguientes operaciones de rotación: ROL_DW Rotar 32 bits a la izquierda. ROR_DW Rotar 32 bits a la derecha.
  • 68. IES Cavanilles. Alicante Página 66 Ejemplo: Registro de estado desplazable Veamos como desplazar un bit a lo largo de una palabra a modo de registro de desplazamiento usando la instrucción 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.
  • 69. IES Cavanilles. Alicante Página 67 Ejercicio 12: Tren de pintura Queremos controlar el un túnel de pintura al que llegarán piezas de diferente tamaño a través 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 inutilizarían los sensores, el control de la válvula de pintura (A124.1), la resistencia de secado (A124.2) y la ventilación (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 rápida (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 válvula de pintura y la velocidad de la cinta pasará de rápida a lenta (usar pulsos de 2 segundos), permaneciendo en esta situación 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 activarán. Una vez completado el proceso (que haya pasado la pieza completa a pintar), la velocidad de la cinta volverá a ser rápida hasta que otra pieza llegue a la zona de pintura. En cualquier momento un pulsador de emergencia (NC) (E124.0) podrá detener la instalación, parando el motor, cortando la válvula de pintura, la resistencia de secado y el ventilador. El sistema deberá ‘memorizar’ la posición de las piezas y se restablecerá el servicio desenclavando el pulsador de emergencia y activando un pulsador de marcha (NA) (E124.1). Señalización: En funcionamiento: luz blanca (A125.0) Pieza en la zona de pintura: luz blanca intermitente (A125.1) Válvula de pintura activa: luz verde (A125.2) Emergencia: luz roja (A125.3)
  • 70. IES Cavanilles. Alicante Página 68 26. Operaciones de control de programa. El MCR: es la instrucción MASTER CONTROL RELAY. Esto viene a ser como una activación o desactivación de un trozo de programa. Esto sólo 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 eléctrico. Lo que quede activado cuando no se ejecuta lo que hay dentro de los paréntesis 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 paréntesis, 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 paréntesis. (Necesita una condición previa). MCR> Cerrar el Master Control Relay. MCRD Desactivar el Master Control Relay.
  • 71. IES Cavanilles. Alicante Página 69 Tenemos dos instrucciones para activar y desactivar el MCR. Dentro de estas instrucciones, podemos abrir y cerrar hasta 8 paréntesis. Los podemos hacer anidados o independientes. Siempre, delante de cada paréntesis tenemos que poner una condición. Vemos que cada paréntesis funciona sólo cuando tenemos activa su condición. Cuando su condición no está activa el trozo de programa en cuestión deja de funcionar y las salidas se desactivan. Es como si realmente quitásemos tensión a ese trozo de programa. Call: Llamar a una FC/SFC sin parámetros. Llama a una función (FC) o a una función sistema (SFC) que no tiene parámetros RET: Retorno, sirve para salir de los bloques condicionalmente. Para emplear esta salida se necesita una combinación lógica previa.
  • 72. IES Cavanilles. Alicante Página 70 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 tensión, siempre que tengamos la pila tampón 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 módulos 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 módulo con “OPN DB”.  Bloques de datos de instancia: Un DB de instancia, está asociado a un Bloque de Función (FB) especifico. Los datos almacenados en el DB de instancia solo pueden ser leídos o escritos por el bloque asociado a él. Un DB de instancia no necesita abrirse con ninguna instrucción, se abre se lee y se escribe en él de forma automática. Al empezar a leer el bloque de función (FB), se carga del DB una copia de las variables locales en el bloque de función, 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 también existe. Empezaremos por crear el DB1: Los campos que podemos rellenar, sería el de “Nombre Simbólico” y “Comentario de Símbolo”, 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.
  • 73. IES Cavanilles. Alicante Página 71 La dirección es puesta de forma automática dependiendo del tamaño de las variables declaradas, según 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 asignación de memoria se realiza en formato 8 bits. Alternando distintos tipos de variables desperdiciamos memoria de datos. 14 bytes ocupados alternando variables Sólo 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 añadiremos más información sobre la variable. Introducimos las variables mediante desde el menú ‘Insertar’ o mediante el botón derecho ‘Línea de declaración’ delante o detrás de la variable actual. Tras rellenar el nombre de la variable, seleccionamos la casilla de tipo, y pulsando con el botón derecho del ratón (o desde la opción del menú), seleccionamos el dato a utilizar: Datos simples o datos compuestos.
  • 74. IES Cavanilles. Alicante Página 72 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 dirección o como símbolo de la DB, al introducir el símbolo 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 sólo uno de los segmentos cada vez.
  • 75. IES Cavanilles. Alicante Página 73 Ejercicio 13: Tenemos un proceso idéntico 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 electroválvulas que dan paso a los productos y se pone en marcha el mezclador. Según van pasando los tiempos, se cierra la válvula A, se cierra la válvula 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 B= 8 segundos Tiempo Mezclador= 12 segundos Tiempo producto A= 7 segundos Tiempo producto B= 5 segundos Tiempo Mezclador= 10 segundos Tiempo producto A= 8 segundos Tiempo producto B= 8 segundos Tiempo Mezclador= 15 segundos Válvula A= A124.0 Válvula B= A124.1 Mezcladora= A124.2 Selector posición mezcla 1= E124.0 Selector posición mezcla 2= E124.1 Selector posición mezcla 3= E124.2 Pulsador inicio de la mezcla= E124.3 Solución 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ú > Edición > Inicializar bloque de datos
  • 76. IES Cavanilles. Alicante Página 74 FC1 FC2 OB1
  • 77. IES Cavanilles. Alicante Página 75 28. Bloques de organización (OB). Características de los módulos de organización OB y prioridades predeterminadas OB1 Es un módulo que se ejecuta cíclicamente • El OB1 se ejecuta en cada scan. • Es el que tiene la prioridad más baja OBs de alarma horaria: (OB10 a OB17) Realiza una interrupción 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 día, cada semana, cada mes, cada año, a final de mes. La mayor utilidad de este tipo de funciones es según 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 cíclico: útil para labores de mantenimiento (engrase de maquinaria, aviso de revisión de motores, etc...). Para su programación se tendrá que programar en el hardware Alarmas Horarias. OBs de alarma de retardo (OB20 a OB23) Realiza una interrupción 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 después de un tiempo de demora determinado. El OB20 arranca después de una llamada al SFC32. El SFC32 lo podemos encontrar en “Librerías > Standard Library > System Funtion Blocks” Parámetros del SFC32: - OB_NR Número del OB que arrancara con retardo. - DTIME Duración del retardo (1 a 60.000 ms.). - SIGN Identificador que se pone en la información de arranque del OB cuando se llama al OB de retardo. - RET_VALUE Contiene el código del error si se produjera uno mientras se procesa el OB.
  • 78. IES Cavanilles. Alicante Página 76 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: Librerías > Standard Library > System Function Blocks OBs de alarmas cíclicas (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 5 s 7 • OB 31 2 s 8 • OB 32 1 s 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 ejecución cíclica (por ejemplo el OB35) se ejecutan a tiempo fijo. No dependen de la ejecución del OB1 ya que de hecho, el OB1 pausa su ejecución para ejecutar este OB. Esto hace que el tiempo de ciclo del OB1 si normalmente ya es variable dependiendo del programa, la inclusión de un OB cíclico lo hace aún más 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 ejecutándose 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 analógicas, regulación 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 Cíclicas. Hay que asegurarse que el tiempo de ejecución del programa del OB35 es menor que el tiempo de intervalo programado como repetición de la ejecución del OB35. Si el tiempo de ejecución del programa incluido en la OB35 excede el tiempo de repetición (100 ms, en la imagen), se producirá un error de tiempo de ejecución OB80. Se pueden configurar tiempos de 1 a 60.000 ms.
  • 79. IES Cavanilles. Alicante Página 77 Es recomendable introducir un desfase cuando hay varias alarmas activas. Si no hay desfase se llamaría simultáneamente a las alarmas cíclicas, las cuales serían procesadas sucesivamente según 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 límites máximos o mínimos admisibles. (Entradas analógicas, contadores de alta velocidad etc...) En los procesos en ejecución, pueden aparecer eventos ante los que hay que reaccionar más rápido de lo que es posible en el ciclo del programa. También 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 elaboración de alarmas de proceso. Junto con las tarjetas con capacidad para elaborar alarmas de proceso, que se puede llamar, sin prácticamente 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 asociarán a los eventos que generen los módulos en cuestión. Un ejemplo sería el tratamiento de las alarmas generadas por el desbordamiento de las entradas analógicas de un módulo 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 parametrización de las alarmas de proceso de un módulo puede efectuarse no sólo con STEP 7 sino también con las SFCs 55 a 57.
  • 80. IES Cavanilles. Alicante Página 78 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 Descripción OB40_EV_CLASS BYTE Clase de evento e identificadores:B#16#11: Alarma está activada OB40_STRT_INF BYTE B#16#41: alarma a través de línea de interrupción 1· B#16#42: alarma a través de línea de interrupción 2 (sólo en S7–400)· B#16#43: alarma a través de línea de interrupción 3 (sólo en S7–400)· B#16#44: alarma a través de línea de interrupción 4 (sólo en S7–400)· B#16#45: WinAC: alarma disparada por el PC Nota: En modo multiprocesador, las líneas de interrupción 1 a 4 están 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 Número de OB (40 hasta 47) OB40_RESERVED_1 BYTE Reservado OB40_IO_FLAG BYTE Módulo de entradas: B#16#54Módulo de salidas: B#16#55 OB40_MDL_ADDR WORD Dirección básica lógica del módulo que ha activado la alarma OB40_POINT_ADDR DWORD En los módulos digitales: Mapa de bits con los estados de las entradas en el módulo que han activado la alarma de proceso. La asignación de qué bit de OB40_POINT_ADDR pertenece a qué canal del módulo debe consultarse en la descripción del módulo correspondiente.· En los módulos analógicos: Mapa de bits con la relación de qué canales han excedido qué límites (Encontrará la estructura exacta en /71/ o /101/.).· En los CPs o IMs:Estado de alarma del módulo (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 activación de una entrada física nos dispare una acción en el PLC a través del OB 40. La activación de la OB se ha de hacer en un módulo que tenga capacidad de activar un fallo de HW, para ello debemos entrar en la configuración del dispositivo y configurarlo.
  • 81. IES Cavanilles. Alicante Página 79 Seleccionamos el área de E/S físicas para configurar las entradas que deberán activar la interrupción Una vez configurado el HW, deberemos programar la acción, en este caso activaremos una marca y a través de ella una salida física. OB40 OB1
  • 82. IES Cavanilles. Alicante Página 80 Observaciones: Este programa sólo puede probarse directamente con el PLC, las interrupciones de entrada digital no pueden simularse. El disparador de ejecución del OB40 se activa con un flanco, realiza la acción programada allí y después prosigue con la ejecución 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 dirección es la que ha provocado el disparo. Actividad: Localizar en la información de variables de la OB40 la entrada que provocado el disparo de la alarma. OBs de alarma de error asíncrono (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 alimentación (S7-400) o Fallo de batería. • OB82 Rotura de hilo de un módulo que tenga capacidad de diagnostico. Si no está programado y detecta el error, el PLC pasa a STOP. • OB83 Detección de presencia de módulo (Extraer/insertar). Si no está programado y detecta el error, el PLC pasa a STOP. • OB84 Avería 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 Detección de fallo en un bastidor. Si no está programado y detecta el error, el PLC pasa a STOP. • OB87 Detección de fallo en comunicación. 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 después el OB1 (empezando por la primera instrucción). • 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 después sigue leyendo en el punto donde dejo de leer al pasar al estado STOP. • OB102 Arranque en frío. 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 después el OB1 (empezando por la primera instrucción).
  • 83. IES Cavanilles. Alicante Página 81 OBs de error (OB121 y OB122). • OB121 Error de ejecución de programa. Detecta errores de programación. Si no está programado y detecta el error, el PLC pasa a STOP. • OB122 Error al intentar acceder a un módulo de datos (entradas, salidas, etc...) .Si no está programado y detecta el error, el PLC pasa a STOP.
  • 84. IES Cavanilles. Alicante Página 82 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 > Diagnóstico/configuración > 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 CPU’s que posean reloj hardware. Antes de realizar la llamada a dicha función 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 información de la fecha y hora. Byte Contenido Ejemplo 0 Año B#16#13 1 Mes B#16#12 2 Día B#16#05 3 Hora B#16#01 4 Minutos B#16#05 5 Segundos B#16#05 6 Las 2 cifras más significativas de los milisegundos B#16#25 7 (4 MSB) Las 2 cifras menos significativas de los milisegundos B#16#0 7 (4 LSB) Día de la semana 1: Domingo 2: Lunes 3: Martes 4: Miércoles 5: Jueves 6: Viernes 7: Sábado B#16#5
  • 85. IES Cavanilles. Alicante Página 83 Para que la lectura del reloj sea más precisa, es conveniente no realizarla desde la OB1, cuyo período de ejecución 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 modificación 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. Sincronización de relojes en S7. En aquellos sistemas de automatización en los cuales se distribuya el control en varios PLC’s S7 conectados a un sistemas de visualización, suele ser interesante la sincronización de los relojes de los diferentes PLC’s. Esto nos permitirá modificar la fecha y hora actual de uno de ellos desde la OP o el scada, y que esta modificación quede reflejada en los demás relojes de las restantes CPU’s de la instalación. Para poder realizar la sincronización 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 demás relojes de la red como esclavos. El intervalo de tiempo entre una sincronización 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 podría ser conocer el tiempo que tarda un telegrama de comunicaciones en ser contestado por el receptor desde que sale de nuestra CPU. También podría 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 precisión del cronómetro es de 10 ms. en los S7 300 y de 1 ms. en los S7 400. Cada vez que se produce un rearranque, el cronómetro del sistema pasa a 0 y comienza a contar, hasta que el autómata pasa a STOP. OB10: Organización 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 (indicación de hora absoluta con fecha)  Periódicamente, indicando la fecha de arranque y la frecuencia de repetición (p. ej., cada minuto, cada hora, cada día).
  • 86. IES Cavanilles. Alicante Página 84 Reglas para las alarmas horarias  Las alarmas horarias sólo se pueden tratar si se ha parametrizado la alarma horaria y el correspondiente bloque de organización está contenido en el programa de usuario. En caso contrario se escribe un aviso de error en el búfer de diagnóstico y se efectúa un tratamiento asíncrono del error. (OB80).  Las alarmas horarias periódicas deben corresponder a una fecha real. No será posible la repetición mensual de un OB 10 cuyo tiempo de arranque sea 31.1. En este caso, el OB sólo sería arrancado en los meses que tengan realmente 31 días (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 sólo tras finalizar el arranque.  Los OBs de alarmas horarias desactivados por parametrización no se pueden arrancar. La CPU reconoce un error de programación 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 interrupción o bien usando las funciones y librerías estándar de sistema para hacerlo. Ejemplo 1 (configurar HW) Configuración 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 configuración 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 través de la tabla de variables o del PLCSIM se puede ver como se incrementa el valor de MW10 cada minuto