Está en la página 1de 203

FORMACIÓN CENTRO AT

EJERCICIOS
SIMATIC STEP 7 PROGRAMACIÓN AVANZADA
DEPARTAMENTO ELÉCTRICO

AUTÓMATAS PROGRAMABLES
Este manual de ejercicios resueltos y explicados intenta reforzar los
conocimientos teóricos de las instrucciones básicas de programa-
ción de los autómatas de SIEMENS para los modelos S7 300 y 400,
utilizando ejemplos de aplicación a distintos procesos en donde se
podría utilizar un autómata. Los ejercicios se encuentran resueltos
tomando como referencia S7 300 con CPU 315-2 DP con un modu-
lo de entradas y salidas digitales y un modulo de entradas y salidas
analógicas.

Los ejercicios resueltos evidentemente pueden ser resueltos de for-


ma distinta a la realizada, nunca hay una única forma de realiza-
ción, por lo cada uno podrá realizar las modificaciones que conside-
re oportunas según su forma de ver el problema.
EJERCICIOS S7-300

ÍNDICE DE EJERCICIOS RESUELTOS

Titulo Página

1. Control de un semáforo automóviles-peatones con petición de paso 3

2. Ejemplo de contadores 11

3. Sala de exposición con capacidad máxima 19

4. Acceso a un garaje publico 23

5. Particularidades de programación con temporizadores, compara-


25
dores y contadores

6. FC´s Parametrizables I 31

7. FC´s Parametrizables II 39

8. FB´s Parametrizables 43

9. FB´s de Multiinstancia. Programación de una multiinstancia 53

10. Mezclador de líquidos. Saltos a metas. Bloques de datos 67

11. Selección de funcionamiento automático/manual 77

12. Desplazamientos y rotaciones. Expulsión de botellas defectuosas 81

13. Programación con registros del sistema 89

14. Operaciones aritméticas con números enteros y reales. Conversión


99
de formatos

15. Operaciones aritméticas con números en coma flotante 107

16. Módulos de organización. Módulo de arranque OB100 121

17. Programación de un temporizador con preselección variable y ba-


se de tiempos fija, con control de un contador tiempos. OB121 131
Error de programación

18. Tratamiento de señales analógicas. Función Scale y Unscale 139

19. Utilización de bloques estándar de librerías 151

20. Alarmas horarias 163

Departamento Eléctrico. AT FORMACIÓN Página 1


EJERCICIOS S7-300

Titulo Página

21. Alarmas de retardo y alarmas cíclicas 173

22. Programación del OB 121 197

Página 2 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 1. CONTROL DE UN SEMÁFORO AUTOMÓVILES - PEATONES
CON PETICIÓN DE PASO.
Diseñar un circuito de control para un semáforo, que será utilizado por los peatones de
manera esporádica.
La luz verde, que controla el paso de coches, se hallará normalmente activada, debiendo
solicitar el peatón, mediante un pulsador, el permiso de paso.
Cuando el peatón solicita permiso de paso, accionando el pulsador, se pone en marcha
una secuencia de activación y desactivación de las diferentes luces que componen el
semáforo, como indica la figura.

La secuencia temporal tiene como valores de tiempos los indicados a continuación:


 Una vez activado el pulsador de peatones, la luz verde de coches debe permanecer
activada cuatro segundos más, desactivándose una vez transcurridos éstos y acti-
vando la luz ámbar.

Departamento Eléctrico. AT FORMACIÓN Página 3


EJERCICIOS S7-300
 La luz ámbar debe permanecer activada, durante cuatro segundos, con luz fija, y
cinco segundos, con luz parpadeante. Transcurridos estos nueve segundos se des-
activará y se procederá a la activación de la luz roja de coches.
 La luz roja de coches permanecerá activada durante treinta segundos.
 La luz verde de peatones, se activará dos segundos después de haberlo hecho la
luz roja de coches, permaneciendo activada, durante veintidós segundos, con luz
fija, y, cuatro segundos, con luz parpadeante. Concluido este tiempo, se desacti-
vará y pasará a activarse la luz roja de peatones.
 La luz roja de peatones se desactivará, cuando se active la luz verde de peatones.
 La luz roja de coches se desactivará dos segundos después de haberlo hecho la luz
verde de peatones, momento en el que se activará la luz verde de coches.
La frecuencia de oscilación es de 2 Hz, tanto en la luz ámbar de coches como en la luz
verde de peatones.
Si se efectuara una demanda de paso, cuando esté en marcha el cumplimiento de una peti-
ción anterior, se tendrá en cuenta, activándose la luz de ESPERE si es pertinente, pero no
se admitirá la misma hasta que no llegue a su fin la secuencia anterior, debiendo transcu-
rrir entre dos demandas un mínimo de sesenta y ocho segundos, (petición memorizada).
Un cuadro luminoso, rojo, situado cerca del pulsador, con el texto, ESPERE, debe acti-
varse, cuando se haya hecho una solicitud de paso y no se pueda pasar, desactivándose
cuando empiece a ser atendida la demanda por darse las condiciones de paso peatonal.

Página 4 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
RESOLUCIÓN.
En condiciones normales tendremos la luz verde de automóviles y rojo de peatones,
cuando se realiza una entrada de peatón, esas serán las condiciones iníciales, a partir de
las cuales se produce el ciclo de 68 segundos. Se pueden dar a partir de este instante las
siguientes situaciones.
1. Durante los 13 primeros segundos la luz roja de peatones está encendida, así como
la luz de espere, que se activara con la demanda del peatón.
2. Durante los siguientes 26 segundos, correspondientes con el verde de peatones y
no roja, se puede admitir una demanda de peatón (no lógica pues tienen el verde
de paso), por error. En este caso no se detectara la demanda de ciclo.
3. Durante el tiempo restante donde tenemos nuevamente el rojo de peatones, en
donde si se produce una demanda de peatones se activara la luz de espere, hasta
que finalice el ciclo de 68 segundos.
En el primer caso si se produce una segunda demanda de peatones durante este periodo
no se produce ningún cambio porque la memoria ya se encuentra activada, y el tempori-
zador esta temporizando los 68 segundos.
En el segundo caso la memoria de petición esta reseteada por No tengo la luz roja de pea-
tones, por lo que la demanda de los peatones no activa la memoria.
En el tercer caso la memoria de petición se activa y memoriza la misma para que una vez
acabada la temporización empiece nuevamente el ciclo.

PROGRAMACIÓN FC1.
En este FC se programara la petición de ciclo explicada anteriormente y su temporiza-
ción.

Departamento Eléctrico. AT FORMACIÓN Página 5


EJERCICIOS S7-300

PROGRAMACIÓN FC2.
En este FC se programan las distintas comparaciones utilizadas para ir acotando los dis-
tintos tiempos de activación de las luces del semáforo.
Como se realizo en ejercicios anteriores nos basaremos en el siguiente diagrama de tiem-
pos, obtenidos con las comparaciones de mayor e igual.

Página 6 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Departamento Eléctrico. AT FORMACIÓN Página 7


EJERCICIOS S7-300
PROGRAMACIÓN FC3.
En este FC se programan las salidas, en función de las marcas obtenidas en el FC2 me-
diante las comparaciones.

Página 8 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Para la obtención de las señales de parpadeo de las luces ámbar y verde se ha programado
la marca de ciclo de la CPU 255, como la frecuencia de parpadeo es la de 2 Hz, se ha uti-
lizado su tercer bit.
En la siguiente figura tenemos el simbólico utilizado en este programa.

Departamento Eléctrico. AT FORMACIÓN Página 9


EJERCICIOS S7-300

Página 10 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 2. EJEMPLOS DE CONTADORES.
CONTADORES.
Se disponen de 3 contadores, que son:
 ZAEHLER. Contador incrementa/decremento.
 Z_VORD. Contador incrementa.
 Z_RUECK. Contador decremento.
Vamos a comentar las entradas del primero de ellos, siendo los otros idénticamente igua-
les.
 En la parte superior como dato obligatorio se in-
dicara el número del mismo, con la síntesis Zxxx,
siendo xxx numero entero que oscila entre 0 y 63.
 ZV. Entrada Incrementos.
 ZR. Entrada Decrementos.
 S. Entrada para poner el contador a un valor de
preselección, cuando toma el valor 1.
 ZW. Valor de preselección que puede tener un
valor máximo de 999. Su sintaxis seria C#999. El
contador tomara este valor cuando se detecte un
flanco positivo en la entrada S. Si no se tiene valor de preselección el contador
empezara en 0.
 R. Entrada de reset, que nos coloca el contador a 0.
Las salidas del contador, son:
 DUAL. Valor de contaje actual en hexadecimal.
 DEZ. Valor de contaje actual en BCD.
Ambas salidas como ocurre en el caso de los temporizadores explicados anteriormente, el
valor de contaje ocupa 16 bits, siendo por lo tanto necesario utilizar una PALABRA para
almacenar su valor.
 Q. Estado del contador. Esta salida se encontrara con valor 1, siempre que el valor
de contaje sea mayor de 1.
PARTICULARIDADES.
 Los contadores no son reversibles al llegar a 0 paran los decrementos y al estable-
cerse en 999 los incrementos.
 Si ZV y ZR se activaran a la vez el contador permanece igual.
 Si el reset se encuentra activado, no se produce ningún contaje de incremento ni
decremento.
 Si ZV y ZR se encuentran en valor 1, se activa la entrada S, el contador tomara el
valor de preselección.

Departamento Eléctrico. AT FORMACIÓN Página 11


EJERCICIOS S7-300
EJEMPLO 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
interruptor E0.0, al accionar el pulsador E0.1 carga
el valor de preselección (de valor 10), y esto provo-
ca que la cinta transportadora A4.0 se ponga en mar-
cha al instante.
Hay un detector de piezas E0.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 A4.7.
El operario retira entonces la caja llena, pone una ca-
ja vacía y acciona de nuevo el pulsador E0.1 y el ci-
clo comienza de nuevo.
Hemos utilizado un contador de decremento, de tal
forma que el operario activa el proceso
con el interruptor E0.0 de configura-
ción NA.
El contador al tener inicialmente valor
0, no permite según vemos en el seg-
mento 2, que la cinta transportadora
empiece su movimiento.
Con el contador a 0 (cinta parada), el
zumbador, según vemos en el segmen-
to 3, estará funcionando.
Cuando el operario activa el pulsador
E0.1 (también NA) el contador toma el
valor 10 de preselección, y su valor al
ser distinto de 0, Z0 toma el valor de 1,
determinando que la cinta transporta-
dora empiece a funcionar, y que el
zumbador deje de funcionar.
Según vayan pasando las piezas el de-
tector E0.7, provoca flancos en la en-
trada de decremento y cuando el contador vuelva a tener el valor de contaje 0, Z0 toma
otra vez el valor de 0, parando la cinta
transportadora y activando el zumba-
dor, permitiendo que el operario retire
la caja llena y coloque una nueva para
llenarla activando nuevamente la en-
trada E0.1
El bit M255.5 se corresponde con la
marca de ciclo con frecuencia de 1 Hz.

Página 12 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJEMPLO CONTROL DE PRODUCCIÓN DE UN PROCESO
Queremos controlar la cantidad de piezas que pasan por un proceso de producción. Que-
remos controlar cuantas piezas hemos fabricado, cuantas han sido defectuosas y cuantas
han sido buenas.
 Tendremos tres contadores:
o Un contador con solo contaje hacia arriba para contar las piezas totales.
(Z1)
o Un contador con solo contaje hacia arriba para contar las piezas defectuo-
sas (Z2)
o Un contador con contaje hacia arriba (cuenta todas las piezas) y contaje
hacia abajo (descuenta las malas) que contara las piezas buenas. (Z3)
 Tenemos dos detectores.
o Uno detectara todas las piezas que pasen (E0.2)
o Otro detectara solo las piezas malas que pasen (E0.3).
 Tendremos un pulsador de reset E0.4. Al acabar la jornada, el responsable de pro-
ducción mirara el valor de los contadores y accionando el reset, los pondrá a 0,
quedando preparados para la siguiente jornada.

Ejemplo sencillo, en donde en cada uno de


los segmentos colocamos un contador de
las características descritas, activados y
reseteados con las entradas comentadas en
su descripción.
El primer contador nos cuenta las piezas
totales, el segundo las defectuosas y la ul-
tima la diferencia.

EJEMPLO DE CONTROL DE MANTENIMIENTO DE UNA BOMBA.


Queremos que cuando una bomba lleve acumulado un cierto tiempo de funcionamiento
(200 segundos en este caso) nos dé una señal intermitente en una lámpara que me indicara
que debo de hacerle un mantenimiento.

Departamento Eléctrico. AT FORMACIÓN Página 13


EJERCICIOS S7-300
Con el E1.0 y el E1.1, ponemos en marcha y paramos el motor A5.0.
Cada vez que funcione el motor, hacemos que el generador de impulsos M255.5 actúe so-
bre el contador. Cuando lleve acumulado un total de 200 segundos la salida A5.1 se acti-
vara intermitente.
Para que el motor pueda funcionar será necesario que el contador se encuentre inicializa-
do.
Una vez hecho el mantenimiento, accionaremos el pulsador de reset E1.7, con lo cual el
contador queda preparado para controlar el siguiente mantenimiento.
Si al cabo de 10 segundos de cumplir el tiempo de funcionamiento, el motor no se le ha
parado para realizar su mantenimiento, haremos que este se pare.

En el primer segmento hemos colocado el arranque del motor condicionado a que el valor
del contador se encuentre inicializado en su valor de 200, y al activar la marcha activamos
la salida correspondiente del motor. El reset del mismo depende del pulsador de paro
(contacto NC), ó del temporizador que se activa transcurrido 10 seg., después de que el
contador llegue a 0. Si el motor parara se da por supuesto que se le ha realizado el mante-

Página 14 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
nimiento, de tal forma que se inicializa nuevamente el contador para otro funcionamiento
de 200 segundos.
En el segundo segmento tenemos el contador descendente, que inicializamos con un flan-
co del pulsador de inicialización, y en la entrada de decremento, tenemos que con el mo-
tor en funcionamiento la marca de ciclo M255.5 de frecuencia 1 segundo provoca cada
segundo un pulso que nos descuenta el contaje en una unidad, por lo tanto al cabo de 200
segundos llegara a 0.
En el segmento 3, se tiene que en reposo al no funcionar el motor (A5.0 vale 0) la señali-
zación no se encuentra activada y al inicializar el contador a 200, Z4 toma el valor de 1 y
al activarse el motor la señalización se activa, al llegar el contador a 0, Z4 toma el valor
de 0 y con el motor en funcionamiento la señalización parpadea con una frecuencia de
1Hz.
En el cuarto segmento tenemos que al llegar el contador a 0, se arranca el temporizador
que al cabo de 10 seg., nos resetea la memoria del motor, y por tanto desactiva la señali-
zación, hasta que una vez realizado el mantenimiento inicialicemos nuevamente el conta-
dor.

EJEMPLO DE CONTROL DE FUNCIONAMIENTO DE UN MOTOR.


Queremos controlar el funcionamiento de un motor:
Tendremos un contador, que nos indicara las veces que salta el relé térmico mientras el
motor está funcionando (si disparo el térmico manualmente mientras el motor está para-
do, NO contara.)
Tendremos otro contador que contara las veces que ponemos en marcha el motor.

Departamento Eléctrico. AT FORMACIÓN Página 15


EJERCICIOS S7-300
Tendremos una sola lámpara que nos indicara el estado del motor:
 Motor parado sin avería→ Lámpara encendida fija
 Motor parado por avería→ Lámpara intermitente rápida.
 Motor en marcha→ Lámpara intermitente lenta
Las entradas y salidas a considerar en este caso son:
Relé térmico, contacto normalmente cerrado E1.2
Pulsador de paro, contacto normalmente cerrado E1.4
Pulsador de marcha, contacto normalmente abierto E1.5
Motor A5.2, lámpara de señalización A5.3 y pulsador de reset de contadores E1.3, nor-
malmente abierto.

En el primer segmento se tiene un contador incremental, donde la entrada de incremento


se activa cuando estando el motor en funcionamiento el contacto del térmico se abre.
En el segundo segmento con un contador idéntico, la entrada de contaje se activa con los
flancos positivos de la salida de funcionamiento del motor.
Ambos contadores se resetean con el pulsador E1.3.
En el último segmento establecemos el arranque del motor, siempre que se tenga el térmi-
co y el paro cerrados (no accionados), y activemos el pulsador de marcha.

Página 16 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

La señalización correspondiente a las indicaciones del enunciado se programa en el últi-


mo segmento.

Con el térmico cerrado (no fallo) y el motor (A5.2) en parado luz fija.
Con el motor en funcionamiento, la luz parpadea con frecuencia de 1 Hz.
Con el térmico abierto (fallo), la luz parpadea con frecuencia de 10 Hz.

TODOS ESTOS EJEMPLOS SE PUEDEN REALIZAR EN UN MISMO PRO-


GRAMA UTILIZANDO DISTINTOS FC´s. SE HAN UTILIZADO EN CADA
EJEMPLO DISTINTAS ENTRADAS Y SALIDAS PARA NO OCASIONAR CON-
FLICTOS DE FUNCIONAMIENTO.

Departamento Eléctrico. AT FORMACIÓN Página 17


EJERCICIOS S7-300

Página 18 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 3. SALA DE EXPOSICIÓN CON CAPACIDAD MÁXIMA.
El siguiente automatismo nos será útil para practicar el manejo de contadores en sentido
ascendente y descendente. El programador desarrollará un programa que permita al autó-
mata detectar la cantidad de personas que se encuentran en una sala.
Disponemos de dos barreras luminosas a la entrada de la sala, "A" y "B", situadas de tal
forma que al entrar una persona en la sala, interrumpa primero la barrera "A" y luego la
"B". La distancia física entre ellas es la mínima, de manera que siempre se interrumpirán
también simultáneamente durante la entrada. De forma semejante sucede cuando una per-
sona sale de la sala. Primero interrumpirá la barrera "B" y después la "A".
El número máximo de personas será de 15. Cuando en la sala se encuentren menos de 13
personas lucirá un indicador luminoso verde y cuando el número de personas sea más de
13 y menos de 15 lucirá un indicador luminoso rojo que parpadea con una frecuencia de 5
Hz., si el número de personas es de 15 la luz roja se mantendrá fija. Si el número de per-
sonas aumentara se activara un zumbador que obligara teóricamente a la persona en exce-
so a retroceder devolviendo el contador a 15 personas.
Dispondremos de un pulsador de reset para inicializar el contador a 0 en cualquier mo-
mento.

Los sensores fotoeléctricos utilizados para dicha aplicación se pueden considerar como
contactos normalmente abiertos, al igual que el pulsador de reset.

Departamento Eléctrico. AT FORMACIÓN Página 19


EJERCICIOS S7-300

RESOLUCIÓN.
Cuando una persona entra la secuencia de activación de las células de entrada, es la si-
guiente:
1. Se activa el sensor A.
2. Se activa el sensor B.
3. Se desactiva sensor A.
4. Se desactiva sensor B.
La proximidad comentada en el enunciado es el determinante que los dos sensores estén
activados antes de desactivarse el sensor A.
Para la salida la circunstancia es similar, invirtiendo simplemente el orden de los senso-
res.

PROGRAMACIÓN FC1.

En este FC se programara la detección de entrada y salida de personas de la sala. La idea


de programación será que activadas las 2 células de entrada, cuando se produce un flanco
negativo de la célula A, la persona ya se encuentra dentro de la sala.

De forma similar se detecta la salida, con A activado se produce un flanco negativo de B.

Estas señales serán las utilizadas para poder contabilizar el número de personas reales que
se encuentran dentro de la sala, siendo necesario un contador que pueda incrementar y
decrementar.

PROGRAMACIÓN FC2.
En este FC vamos a colocar el contador.

Página 20 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

PROGRAMACIÓN FC3.
Dentro de este FC se programaran las salidas de señalización con que dispone el sistema,
según el enunciado anterior.

Departamento Eléctrico. AT FORMACIÓN Página 21


EJERCICIOS S7-300
Como vemos en el segmento 3 se ha utilizado nuevamente la marca de ciclo 255.1, que
nos otorga directamente una oscilación con frecuencia de 5 Hz.

Como hemos podido comprobar la utilización de contadores no es problemático, porque


su funcionamiento es muy claro.

Página 22 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 4. ACCESO A UN GARAJE PÚBLICO.
Se pretende controlar el acceso al garaje que aparece representado en la figura:

El garaje tiene una capacidad máxima de 100 vehículos. Para poder acceder al interior del
mismo deberá de existir al menos una plaza libre. Se conocerá el número de vehículos
que hay en el interior por medio de una indicación luminosa con lámparas de diferentes
colores.
La demanda de entrada se realiza mediante el pulsador de petición de entrada PE. Con
cada impulso que se dé en él se solicita una entrada pero ésta no será atendida hasta que
no termine de realizarse la entrada pedida anteriormente.
Una vez solicitada la entrada, si hay plaza libre, la barrera sube hasta accionar el final de
carrera correspondiente. El vehículo comienza a entrar y lo detecta el sensor de entrada
SE. Tres segundos después de que el vehículo haya entrado se baja la barrera. Además se
deberá de tener en cuenta que si existe petición de entrada y el vehículo no entra en 10
segundos, la barrera deberá de bajarse.
La demanda de salida se realiza mediante el pulsador de petición de salida PS. Con cada
impulso que se dé en él se solicita una salida pero ésta no será atendida hasta que no ter-
mine de realizarse la salida pedida anteriormente.
Una vez solicitada la salida, la barrera sube hasta accionar el final de carrera correspon-
diente. El vehículo comienza a salir y lo detecta el sensor de salida SS. Tres segundos
después de que el vehículo haya salido se baja la barrera. Además se deberá de tener en
cuenta que si existe petición de salida y el vehículo no sale en 10 segundos la barrera de-
berá de bajarse.

Departamento Eléctrico. AT FORMACIÓN Página 23


EJERCICIOS S7-300
Tanto la barrera de entrada como la de salida se accionan mediante motores con doble
sentido de giro. Estos motores están controlados con finales de carrera para detener la su-
bida y con finales de carrera para detener la bajada.
La indicación del número de vehículos que hay dentro del garaje se realizará de la si-
guiente forma:
 Entre 0 y 50 vehículos lucirá una lámpara verde.
 Entre 51 y 90 vehículos lucirá una lámpara azul.
 Entre 91 y 99 vehículos lucirá una lámpara ámbar.
Cuando el garaje tenga 100 vehículos lucirá una lámpara roja prohibiendo el acceso al
parking. En este momento una petición de entrada no tendrá efecto.

Página 24 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 5. PARTICULARIDADES DE PROGRAMACIÓN CON TEMPORI-
ZADORES, COMPARADORES Y CONTADORES.

1. EJEMPLO DE CONTROL DE INICIO DE UN PROCESO POR COMPA-


RACIÓN.
Supongamos que para poner en funcionamiento un proceso se tuviera un número con-
creto de entradas que deben encontrase en unas determinadas condiciones de ON ó
OFF. Desde la programación clásica será necesario programar todas estas entradas en
un circuito serie ó una puerta &.
Se puede contemplar la opción de tomar todas estas entradas asociadas a un byte,
Word ó Dword, y mediante una comparación comprobar todas las entradas.
Consideremos como ejemplo 16 bits de entradas que asociamos a la entrada EW20,
compuesta por los bytes EB20 y EB21, cuyos valores deben ser los siguientes:

EB 20 EB 21

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1

En este estado, podemos comprobar que estos bits de entrada tienen un valor decimal
es -22163, y en hexadecimal A96D.
De esta forma vamos a realizar un programa que lea todas estas entradas al activar un
pulsador (E0.5) y si se cumplen nos active la salida A5.5 y A5.6, y si no se cumple la
salida A5.6 se activa intermitentemente.
Ambas salidas las podemos resetear con la entrada del pulsador E0.6.

Departamento Eléctrico. AT FORMACIÓN Página 25


EJERCICIOS S7-300

En el primer segmento se activa la memoria del proceso si se cumple la condición de


igualdad, del contenido de los 16 bits de entrada agrupados en la palabra EW20, al ac-
tivar el pulsador de marcha E0.5.
En el segundo segmento se activa la marca M100.0 con una memoria SR, si no se
cumplen la condición, que se utiliza más tarde en el siguiente segmento para activar la
señal intermitente como consigna de fallo, y fija si se cumple la condición de arranque
del proceso.
Para su comprobación podemos
utilizar el simulador PLCSIM.
En las siguientes figuras pode-
mos ver que variables debemos
utilizar.
En este caso el valor de igualdad
no se cumple, y la salida A5.6
veremos que parpadea.

En la siguiente podemos ver su cumplimiento.

2. COMPARACIONES DE BYTE O NÚMEROS EN HEXADECIMAL.


Si se quiere realizar una comparación de un byte o de números en formato hexadecimal se
deberá de hacer la comparación en AWL.
Supongamos que queremos realizar la siguiente operación:
 Que cuando el valor EW10 sea igual a 2A4D (hexadecimal), que se corresponde
en decimal con 10829, se active la salida A4.0.
 Que cuando el valor del EB12 sea igual a 73 se desactive la salida a4.0.

Página 26 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
PROGRAMACIÓN EN AWL.

La explicación de la programación en AWL de estas líneas de comparación podría ser, la


siguiente:
 Cargar el contenido de EW10 (entero de 16 bits)
 Cargar el valor hexadecimal 2A4D.
 Comparar si ambos valores son iguales.
 Si lo son activamos la memoria A4.0.
De la misma forma podemos leer las líneas siguientes, y si se cumple la condición de
igual de byte se borra la memoria de la salida.
Podemos realizar las comprobaciones utilizando el simulador PLCSIM. En las siguientes
figuras tenemos capturas de pantalla de las distintas situaciones.

Se activa la memoria al cumplirse la condición de SET.

Departamento Eléctrico. AT FORMACIÓN Página 27


EJERCICIOS S7-300

Se desactiva la memoria al cumplirse la condición del RESET.

3. TEMPORIZADORES IEC.
Los temporizadores son un tipo de datos especial de STEP 7, que son gestionados direc-
tamente por el propio PLC, y que su número está limitado por la potencia del mismo.
Pero ¿Qué ocurre si llegamos al máximo? ¿Y si la aplicación de control requiere más
temporizadores de los que me deja utilizar el PLC?
Es posible utilizar temporizadores ―software‖, que consisten en un bloque de función que
en el momento de la activación lee la fecha y la hora del PLC, le suma el retardo deseado,
y en cada ciclo de PLC compara la fecha y hora con el resultado de esa suma. Si es mayor
o igual, entonces ya ha pasado el tiempo y tendrá que realizar la acción correspondiente.
Estos temporizadores se llaman ―temporizadores IEC‖ porque se limitan a los tipos de
temporizadores recogidos en el estándar IEC1131-3. En el PLC están implementados en
ROM como Bloques de Función de Sistema (SFB), por lo que para utilizarlos hay que
crear un DB DE INSTANCIA diferente para cada llamada.
El límite de temporizadores IEC lo pone el tiempo de ciclo y la capacidad de memoria del
PLC, puesto que en realidad no son más que instrucciones de programa adicionales.

A cada llamada de un bloque de función que transfiere parámetros está asignado un blo-
que de datos de instancia. En el DB de instancia están depositados los parámetros actuales
y los datos estáticos del FB. Las variables declaradas en el FB definen la estructura del
bloque de datos de instancia. La instancia define la llamada de un bloque de función. Si,
por ejemplo, un bloque de función se llama cinco veces en el programa de usuario S7,
existen cinco instancias de dicho bloque.
Crear un DB de instancia. Antes de crear un bloque de datos de instancia debe existir el
FB asociado. El número de dicho FB se debe indicar al crear el bloque de datos de instan-
cia.
Para crear los DBs de instancia, dentro de la carpeta bloques del administrador SIMATIC,
Insertar Nuevo Objeto > Bloque de datos

Página 28 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Según vemos en la figura será necesario el bloque de función asociado al DB.


Un DB de instancia para cada instancia. Si se asignan varios bloques de datos de ins-
tancia a un bloque de función (FB) que controla una maquina, se puede utilizar este FB
para controlar varias máquinas. Los diversos datos de cada uno de las máquinas (p.ej.
número de revoluciones, tiempo total de servicio) se memorizan en los diversos bloques
de datos.
Dependiendo de qué DB se asigne al FB al efectuar la llamada, se puede controlar una
máquina diferente. De esta manera se utiliza un solo bloque de función para varios moto-
res como se puede apreciar en la siguiente figura.

Se puede acceder a estos bloques de dos formas: O bien nos ponemos ONLINE con el
PLC y copiamos de él (son los SFB 3, 4 y 5), o bien utilizamos la librería ―Standard Li-
brary‖ y vamos a la carpeta ―System Function Blocks‖.
A modo de ejemplo, este es el temporizador IEC con retardo a la conexión (SFB4
―TON‖):

Departamento Eléctrico. AT FORMACIÓN Página 29


EJERCICIOS S7-300

Así se programaría un generador de onda rectangular con temporizadores IEC:

Existen tres temporizadores IEC: SFB3 ―TP‖, SFB4 ―TON‖ y SFB5 ―TOFF‖, que son
respectivamente el temporizador Impulso, retardo a la conexión y retardo a la desco-
nexión.
Todos ellos se programan de la misma manera.
MUY IMPORTANTE: Antes de cargar en el PLC cualquier bloque que utilice un DB o
un DB de instancia (o en general, que llame a un bloque), hay que asegurarse de que el
bloque llamado ya se ha cargado previamente. En este caso, habría que cargar los DBs 14
y 24 antes que la modificación del OB1.

Página 30 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 6. FC´s PARAMETRIZABLES I.
1. ARRANQUE DIRECTO.
Se quiere realizar un arranque directo en el FCs parametrizable 1 (FC1). Dicho FC con-
tendrá los parámetros siguientes:

Una vez creado el FC parametrizable se harán 3 llamadas de este dentro del OB1.

2. INVERSIÓN DE GIRO.
Se quiere realizar un arranque con inversión de giro en el FC parametrizable 2 (FC2). Di-
cho FC contendrá los parámetros siguientes.

Una vez creado el FC parametrizable se harán 2 llamadas de este dentro del OB1.

3. ARRANQUE ESTRELLA TRIÁNGULO.

Se quiere realizar un arranque estrella-triángulo en el FC parametrizable 3 (FC3). Dicho


FC contendrá los parámetros siguientes.

Una vez creado el FC parametrizable se harán 2 llamadas de este dentro del OB1.

Departamento Eléctrico. AT FORMACIÓN Página 31


EJERCICIOS S7-300
RESOLUCIÓN.
Cuando se necesite utilizar una misma estructura varias veces, pero con elementos dife-
rentes, se puede realizar una plantilla y después realizar una llamada cada vez que se ne-
cesite.
En el primer caso se pretende realizar el arranque directo de 3 motores cuyo funciona-
miento es idéntico. Crearemos por lo tanto una plantilla en el FC1.
Para trabajar con una plantilla (FC parametrizable), debemos de tener en cuenta las si-
guientes consideraciones:
 Primero debemos de definir los parámetros que utilizaremos en la plantilla, en
nuestro caso las entradas de marcha, paro y térmico. Y como salida la correspon-
diente al contactor del motor.
 A continuación realizamos el programa de arranque de los motores utilizando los
parámetros asignados en la tabla de declaración.
 En el OB1, realizamos la llamada a este FC parametrizable tantas veces como sea
necesario.

ARRANQUE DIRECTO DE UN MOTOR.

Como se indico en primer lugar introducimos los parámetros de entrada seleccionan-


do IN. (Estos sirven para transferir los datos al bloque llamado para procesarlos).

Seleccionamos a continuación IN_OUT para introducir el parámetro de conexión del mo-


tor. (Con estos parámetros se transfieren los datos al bloque llamado, allí son procesados,
y los resultados se vuelven a depositar a continuación en la misma variable).

A continuación realizamos el programa, que nos servirá para arrancar cualquiera de los 3
motores, utilizando como entradas los parámetros asignados anteriormente en la tabla de
declaración. Como se puede observar la sintaxis exige empezar con el símbolo #.

Página 32 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Una vez realizada esta programación en el FC1


parametrizado, realizamos su llamada desde el
OB1, como se realiza normalmente en otras
ocasiones. En esta ocasión al hacer la llamada
nos aparece el FC1, con la forma de la figura,
en donde se irán asignando a cada una de las en-
tradas una dirección de ejecución distinta, para
cada uno de los motores.
En nuestro caso las direcciones de entrada y sa-
lida utilizadas son las expresadas en cada uno
de los tres segmentos siguientes.

Recordemos que las entradas de paro y


térmico son normalmente cerradas y la
marcha normalmente abiertas.
Tener en cuenta que las entradas son dis-
tintas, porque cada motor lógicamente
tiene sus elementos de control y protec-
ción propios.
En resumen podemos ver que se hace un
solo programa al que se le llama 3 veces,
en lugar de realizar 3 programas al que se llama cada uno de ellos para su ejecución.

Departamento Eléctrico. AT FORMACIÓN Página 33


EJERCICIOS S7-300
ARRANQUE CON INVERSIÓN DE GIRO.

El siguiente caso correspondiente a la inversión de giro de un motor es idéntico al ante-


rior, sus variables de entrada y salida son idénticas, de tipo booleano, por lo que lo reali-
zaremos de forma completamente idéntica al anterior.
En primer lugar definimos los parámetros para la inversión de giro de un motor, las entra-
das en IN, y las salidas en OUT.

A través de los parámetros de salida se transfieren los resultados al bloque que se está
llamando.
En segundo lugar realizamos el programa de ejecución para la inversión de giro de los
motores dentro del FC1 parametrizado.

Mediante 2 memorias activamos la marcha a derecha (km1), y la marcha a izquierdas


(km2), realizando un enclavamiento entre ambos movimientos.

Página 34 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
La programación realizada se ha realizado de forma sencilla, sin utilizar enclavamientos
electromecánicos, que en este momento es segundario, importándonos mas la idea de la
creación de FC´s parametrizables.
Solo nos falta realizar las llamadas correspondientes para los 2 motores desde el bloque
de organización OB1.

En cada uno de los segmentos realizamos la llamada al FC1 y asignamos las entradas y
salidas correspondientes al control y protección de cada uno de los motores.
Podemos de esta forma realizar la comprobación correcta del funcionamiento del progra-
ma transfiriendo los bloques al autómata, o al simulador.

ARRANQUE ESTRELLA-TRIÁNGULO.

En esta ocasión además de las entradas lógicas de los pulsadores de marcha y paro, así
como el contacto del térmico, deberemos utilizar un temporizador para introducir la co-
nexión triangulo y eliminar la conexión estrella.
Como vemos en el enunciado deberemos de utilizar 2 parámetros, para ello:
 TIEMPO con tipo de dato S5TIME, utilizado para introducir el valor de tempori-
zación de paso de estrella a triangulo.

Departamento Eléctrico. AT FORMACIÓN Página 35


EJERCICIOS S7-300
 TEMPORIZADOR con tipo de dato TIMER, para utilización del temporizador.
Quedando la tabla de parametrización de las entradas como se muestra en la figura si-
guiente:

Como salidas utilizaremos, las salidas a contactor de línea km1, contactor de estrella km2,
y el contactor de triangulo km3.

A continuación realizamos la programación en el FC1, del arranque estrella triángulo, uti-


lizando los parámetros declarados.

En el primer segmento el contactor de línea se activa con la marcha, y se desconecta con


el paro ó el térmico.
En el segundo segmento utilizamos un temporizador a la conexión que se activa con el
contactor de línea. Como se puede observar el temporizador no se numera, utilizamos el
parámetro #TEMPORIZADOR, que nos servirá para numerar los distintos temporizado-
res que vayamos a utilizar.

Página 36 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Tampoco introducimos el valor del tiempo a temporizar, utilizamos el parámetro #TIEM-
PO, que nos servirá para introducir los valores de tiempo del paso de estrella a triangulo
de los distintos motores.

En el segmento 3 mediante una memoria activamos el contactor estrella con la marcha, y


se resetea con el paro, térmico y con el temporizador y el contactor de línea. (Estos últi-
mos son redundantes).

En el último segmento se activa el contactor triangulo con el temporizador, y se resetea


con el paro y el térmico.
Los contactores estrella y triangulo se encuentran cruzados para evitar su posible coinci-
dencia de alimentación. (Recordemos que es más efectivo utilizar un contacto auxiliar de
dichos contactores).
Finalmente desde el bloque de organización OB1 realizamos una llamada, para cada uno
de los motores a controlar.

Como vemos el MOTOR 1 utili-


za el temporizador 1 con una
temporización de 5 segundos.

El MOTOR 2 se temporiza con


el temporizador 2, y el tiempo de
temporización es en este caso de
10 segundos.

Departamento Eléctrico. AT FORMACIÓN Página 37


EJERCICIOS S7-300

Página 38 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 7. FC´s PARAMETRIZABLES II.

Crear un FC parametrizable para obtener un generador de impulsos estándar con las si-
guientes características:
1. Un generador de impulsos con un tiempo fijo de conexión de 1 segundo y 2 se-
gundos de desconexión.
2. Un generador de impulsos con preselección variable. Los tiempos en este caso se
podrían cambiar desde un terminal de operador o un sistema SCADA. En nuestro
caso podemos realizar una tabla de variables desde donde podemos forzar estos
valores.
Estas oscilaciones serán activadas mediante una entrada de interruptor.

Departamento Eléctrico. AT FORMACIÓN Página 39


EJERCICIOS S7-300
RESOLUCIÓN.

En primer lugar se parametriza las variables de entrada y salida, donde se necesitaran 2


temporizadores a desconexión y una salida para la generación de impulsos. La tabla de
parámetros de entrada y salida son, por lo tanto:

A continuación realizamos la programación utilizando los parámetros anteriores.

La programación como vemos tiene


un temporizador que inicialmente
empieza a temporizar (no tenemos
T2) y una vez finalizado el tiempo,
nos inicia la temporización del segun-
do temporizador durante el tiempo de
ON, manteniéndose durante este
tiempo el temporizador 1 activado.
Una vez finalizada la temporización
del segundo temporizador este nos da
un 1, reseteando el primer temporiza-
dor este resetea el segundo.
Por lo tanto el temporizador 1, nos
dará la oscilación del tiempo ON y
OFF que queramos obtener.
A continuación podemos realizar las
llamadas pertinentes desde el bloque
de organización OB1, para las 2 osci-
laciones que deseamos obtener.

Página 40 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

En el primer segmento del OB1


hacemos la primera llamada pa-
ra la oscilación variable, en
donde utilizamos para los valo-
res tiempo las palabras MW0 y
MW2 con los temporizadores 10
y 11.
Los valores de temporización
recordemos que utilizan 16 bits
por cuyo motivo hemos utiliza-
do las 2 palabras anteriores.
La salida del generador la vol-
camos sobre la marca M10.0,
para poder hacer en el segundo
segmento, que si tenemos la en-
trada de interruptor E0.0 activa-
da, la salida A4.0 tenga la osci-
lación marcada por las palabras
que controlan el tiempo OFF y
ON.

La oscilación fija se realiza de forma idéntica


a la anterior, con la única diferencia de que
los tiempos son fijos, correspondientes a 2 se-
gundos para el tiempo OFF Y 1 segundo para
el tiempo ON.
La salida de la oscilación se recibe en la sali-
da A5.0, mientras se tenga activada la entrada
E0.1.

Podemos comprobar el funcionamiento del


programa transfiriendo los bloques al autóma-
ta o al simulador.
Para comprobar el funcionamiento de la osci-
lación variable, insertamos una tabla de varia-
bles donde simplemente necesitaremos crear
las palabras MW0 y MW2.
Al crearlas como formato de visualización uti-
lizaremos TIEMPO_SIMATIC, que podemos
colocar situándonos en la celda correspon-
diente, y presionando el botón derecho del
ratón, seleccionar dicho formato en el menú contextual.

Departamento Eléctrico. AT FORMACIÓN Página 41


EJERCICIOS S7-300

Para introducir valores podemos colocar en el valor forzado los tiempos por ejemplo de
0,5 segundos, y observando variables y forzando variables, podemos comprobar el fun-
cionamiento de esta oscilación variable.
Podemos de esta forma introducir otros valores consiguiendo de esta forma la oscilación
que deseemos.
Forzando variables

Observar variable

Página 42 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 8. FB´s PARAMETRIZABLES.
1. ARRANQUE DIRECTO.
Se quiere realizar un arranque directo en el FB‘s parametrizable 1 (FB1). Dicho FB con-
tendrá los parámetros siguientes:

Una vez creado el FB parametrizable se harán 3 llamadas de este dentro del OB1.

2. INVERSIÓN DE GIRO.
Se quiere realizar un arranque con inversión de giro en el FB parametrizable 2 (FB2). Di-
cho FB contendrá los parámetros siguientes.

Una vez creado el FB parametrizable se harán 2 llamadas de este dentro del OB1.

3. ESTRELLA TRIÁNGULO.
Se quiere realizar un arranque estrella-triángulo en el FB parametrizable 3 (FB3). Dicho
FB contendrá los parámetros siguientes.

Una vez creado el FB parametrizable se harán 2 llamadas de este dentro del OB1.

Departamento Eléctrico. AT FORMACIÓN Página 43


EJERCICIOS S7-300
RESOLUCIÓN.
Los Bloques de Función (FB´s) tienen la misma funcionalidad que las funciones (FC´s),
la diferencia es que tienen su propia área de memoria en forma de bloques de datos de
instancia.
Los bloques de función FB´s son por lo tanto bloques programables. Un FB es un bloque
con memoria, que dispone de un bloque de datos DB asignado como memoria, que se de-
nomina bloque de datos de instancia.
Los parámetros que se transfieren al FB, así como las variables estáticas, se memorizan
en el DB de instancia. Las variables temporales se memorizan en la pila de datos locales.
Los datos memorizados en el DB de instancia no se pierden al concluir el tratamiento del
FB, pero los datos memorizados en la pila de datos locales se pierden al concluir el trata-
miento del FB.
Un mismo FB puede estar asociado a varios DB´s, a estos DB´s se les llama instancias, y
cada una de estas instancias contiene distintos datos.
Por ejemplo en nuestro caso se asignaran varios bloques de datos de instancia a un bloque
de función FB que controla un motor, donde utilizamos el mismo FB para controlar va-
rios motores.

Vamos a realizar los 3 ejercicios de la práctica, viendo paso por paso, cómo funcionan los
FB´s parametrizables.

ARRANQUE DIRECTO DE UN MOTOR.


En primer lugar deberemos de crear el FB, para lo cual hacemos clic con el botón iz-
quierdo del ratón en la carpeta de bloques, y seleccionando ―Insertar nuevo objeto‖, to-
mamos ―Bloque de función‖.

Abrimos el bloque haciendo doble clic sobre el mismo, y rellenamos su tabla de declara-
ción de variables. Las variables son las indicadas en el enunciado del texto.
Parámetros de entrada.

Página 44 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Parámetros de salida.

Podemos a continuación realizar la programación dentro del bloque FB, la programación


para el control del motor con
un arranque directo.
Como vemos hasta ahora los
pasos a seguir son idénticos
a los realizados con los FC´s
parametrizables.
Cerramos el bloque de fun-
ción, e insertamos un bloque
de datos seleccionando esta opción al hacer clic con el botón izquierdo del ratón en la
carpeta de Bloques.
Recordemos que el bloque debe ser un DB de instancia y asignada al bloque FB1.

Al asociar el DB al FB, el DB será una tabla de variables copia exacta de la tabla de de-
claración de variables del FB.

El último paso, consiste en realizar la llamada al


FB desde el bloque de organización OB1. Abri-
mos el bloque OB1, e insertamos en el primer
segmento el bloque FB1, apareciendo con la si-
guiente apariencia:
En los parámetros declarados asignaremos las en-
tradas y salidas que queramos disponer y en el en-
cabezado deberemos asignar el DB1 creado ante-

Departamento Eléctrico. AT FORMACIÓN Página 45


EJERCICIOS S7-300
riormente, de esta forma el primer segmento nos quedara como vemos en la siguiente fi-
gura.

Como queremos controlar 3 motores insertaremos un segundo segmento donde inserta-


mos nuevamente el bloque
FB1. En este caso vamos a
asignar este FB a un boque de
datos no creado, de tal forma
que al asignar a un DB2, como
no está creado, nos indica si
queremos crearlo, indicándole
que lo realice.
De esta forma podemos realizar también la última llamada, para el control del último mo-
tor. Dichos segmentos nos quedaran como se ve en la siguiente figura.

Página 46 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Guardamos y transferimos todos los bloques al autómata o simulador, y comprobamos su
funcionamiento.
Si abrimos OB1, y nos ponemos ―online‖, visionando los 2 primeros segmentos, lógica-
mente los 2 motores se encuentran parados, vamos activar el motor numero 2 y vamos a
comprobar en los DB´s como actúa como memoria del FB.

Activamos la entrada E0.3 y abrimos los bloques de datos DB1 y DB2, poniéndonos ―on-
line‖, en ambos casos.

Como podemos observar la salida km1 del segundo bloque de datos se encuentra activada
(motor 2), mientras el primero esta desactivado.
En resumen tenemos un FB parametrizable, al cual se le realizan 3 llamadas, y cada una
de ellas esta asignada a un DB distinto.

FB1, DB1→ Datos del motor 1.


FB1, DB2→ Datos del motor 2.
FB1, DB3→ Datos del motor 3.

Departamento Eléctrico. AT FORMACIÓN Página 47


EJERCICIOS S7-300
ARRANQUE CON INVERSIÓN DE GIRO.
Nuevamente realizaremos las mismas operaciones que en el caso anterior, que resumien-
do son:
1. Creación del FB.
2. Rellenar su tabla de declaración de variables.
3. Realizar el programa correspondiente al arranque con inversión, utilizando los
parámetros anteriores.
4. Realizar desde el bloque de organización OB1, 2 llamadas al FB para el control de
los 2 motores, asignando a cada uno de ellos un DB distinto, que al no haberlo
creado anteriormente, nos pedirá crearlo desde la escritura del OB1.
5. Finalmente transferir todos los bloques al autómata.

Creación del FB y tabla de declaración.

Programación del FB1

Página 48 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Programación del OB1.

Bloques de datos.

Con estas referencias, realizadas ya podemos comprobar el funcionamiento del pro-


grama.

Departamento Eléctrico. AT FORMACIÓN Página 49


EJERCICIOS S7-300
ARRANQUE ESTRELLA TRIANGULO.
Las operaciones son idénticas a las realizadas en los ejercicios anteriores, en donde los ti-
pos de datos de entrada son los mismos que los vistos en el arranque mediante FC´s pa-
rametrizables. Por lo tanto solo se expondrá en este problema las figuras de los bloques.
Parámetros del FB1

Segmentos del FB1.

Página 50 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Segmentos del OB1.

Departamento Eléctrico. AT FORMACIÓN Página 51


EJERCICIOS S7-300

Página 52 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 9. FB´s DE MULTIINSTANCIA. PROGRAMACIÓN DE UNA
MULTIINSTANCIA.
Al realizar un FB parametrizable cada vez que se realice una llamada a este bloque desde
el bloque de organización OB1, estará asociado a un nuevo bloque de datos.

Esta estructura determina para instalaciones con muchas llamadas un gran número de
bloques de datos, que nos obliga a tener abiertos en ocasiones dificultando la visión y el
trabajo con los bloques de función.

La idea en estos casos es crear una multiinstancia, en donde solo se tendrá un bloque de
datos en donde se asociaran todas las llamadas que se realicen al bloque de organización.

EJERCICIO 1.

Vamos a proponer un ejercicio de arranques de 4 motores que se realizan en cascada, con


un intervalo de 5 segundos, desde el accionamiento del pulsador de marcha.

El funcionamiento de la aplicación será el siguiente:

Al activar la entrada del pulsador de marcha (NO/E0.0) se activara el motor numero 1


transcurridos 5 segundos, 5 segundos más tarde lo hará el motor numero 2, y así sucesi-
vamente hasta llegar al último motor.

Cada motor tendrá lógicamente su propio térmico de protección y su propio pulsador de


paro, pudiendo de esta forma detener el motor individualmente, pero no activarlo.

Existirá un pulsador de paro general, que nos detendrá todos los motores a la vez.

Las entradas y salidas a declarar por lo tanto en el FB serán las siguientes:

Pulsador de marcha.
Pulsador de paro General (Seta de emergencia).
ENTRADAS
Pulsador de paro individual.
Protección térmica.
SALIDAS Salida de relé a contactor

Departamento Eléctrico. AT FORMACIÓN Página 53


EJERCICIOS S7-300
EJERCICIO 2.

Crear un FB de multinistancia, para arrancar 4 motores, en donde 2 de ellos tienen un


arranque directo y otros 2 tienen un arranque con inversión de giro.

Programar una salida de acuse de funcionamiento de los 4 motores a la vez.

La idea es que se realice un FB1 para la programación del arranque directo y un FB2 para
los motores del arranque con inversión de giro.

En un FB10 se realiza la multiinstancia de los 4 motores asociados a un único bloque de


datos DB10.

La estructura en este caso sería por lo tanto la siguiente:

Página 54 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
RESOLUCIÓN EJERCICIO 1.

En primer lugar creamos un proyecto nuevo, en el que insertaremos un nuevo objeto SI-
MATIC 300, en el Hardware importaremos el fichero del bastidor habitual, con que se
tendrá como siempre la configuración clásica del hardware.

Los pasos a seguir, deben de realizarse en el siguiente orden:

1. Creación del bloque de función FB1. Se declararan los interfaces de entrada y sa-
lida que se utilizaran en la programación del arranque de los motores.
2. Creación del bloque de función FB10. Se declaran las llamadas de los FB´s en el
interface STAT, creando de esta forma la multiinstancia. De esta forma se podrá
realizar la llamada y programación de las entradas y salidas del FB1.
3. Creación del bloque de datos DB10. Este bloque se asociara al bloque de función
FB10, y contendra las entradas y salidas de los 4 motores con los que estamos tra-
bajando.
4. Llamada al bloque de función FB10, desde OB1, asociándolo al bloque de datos
creado anteriormente.
El paso 3, se puede evitar, porque al realizar la llamada al FB10 desde el OB1, y asociarlo
a un bloque de datos no existente, se crea automáticamente, como ocurre en cualquier
bloque de función.

1. Así pues en Bloques de programa insertamos en primer lugar el bloque de función


FB1, con multiinstancia.

Si abrimos el bloque de función, crearemos en primer lugar en el interface, las entradas y


salidas.

Las entradas de marcha, paro y protección serán de tipo BOOLEANO, y se declarara un


temporizador de tipo TIMER (numero del temporizador), y una de tiempo del temporiza-
dor de tipo S5TIME.

La salida a relé será de tipo BOOL.

Departamento Eléctrico. AT FORMACIÓN Página 55


EJERCICIOS S7-300
En el interface IN_OUT, introducimos una variable (MEMORIA), de tipo booleano, para
detectar la activación del pulsador de marcha.

NOTA: Las entradas de la marcha y del paro general, no sería necesario parametrizar,
puesto que siempre es la misma entrada del autómata.

Podemos crear en este momento una tabla de símbolos con las entradas y salidas que va-
mos a utilizar.

Abrimos el editor de símbolos y creamos las siguientes entradas y salidas:

Página 56 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

A continuación realizamos la programación en los siguientes segmentos:

Segmento 1.

En este segmento utilizamos


una marca que memoriza la
activación del pulsador de
marcha para cada uno de los
motores, y que se resetea con
su térmico, su pulsador de pa-
ro ó el pulsador de paro gene-
ral.

Segmento 2.

La temporización de arran-
que de cada uno de los mo-
tores con retardo a la co-
nexión se realiza con la me-
moria de la marcha general y
se desactiva únicamente con
su pulsador de paro o su pro-
tección térmica.

Segmento 3.

La salida de relé de cada uno


de los motores se activara con
su temporizador, y se resetea
con el pulsador de paro gene-
ral, individual ó bien su pro-
tección térmica.

Guardamos y cerramos el bloque de función FB1.

2. Insertamos ahora el bloque de función FB10, también de multiinstancia, como se


realizo anteriormente el bloque FB1, y lo abrimos.
En el interface, seleccionamos STAT, y en su contenido creamos las multiinstancias de
los 4 motores con tipo de datos FB 1. Como podemos observar, para cada motor reserva

Departamento Eléctrico. AT FORMACIÓN Página 57


EJERCICIOS S7-300
unas direcciones de 10 bytes (pueden ser más o menos en función de las variables para-
metrizadas en el FB 1 del tipo de datos), que se distribuyen entre todas las entradas y sali-
das que tuviéramos declaradas en el FB1.

Para verlas podemos seleccionar las entradas (IN) del MOTOR1, o de cualquiera de los
otros motores.

Dentro del FB10, las direcciones son las mismas en cada uno de los motores, puesto que
la llamada de la multiinstancia es distinta en cada uno de los casos.

Ahora programaremos el FB de la multinistancia, para ello


se deberá de realizar 4 llamadas de multiinstancia al FB1, co-
rrespondiente respectivamente a cada uno de los motores.

Si vamos a la vista general, a la sección de Multiinstancia


nos encontramos con las cuatro multinstancias creadas, y que
arrastraremos a un segmento, en donde se le asignaran las
entradas, salidas y marcas a utilizar.

Página 58 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

De esta forma en el FB10, nos quedaran 4 segmentos con las siguientes referencias:

A continuación podemos guardar y cerrar el bloque de función FB10.

3. Si insertamos el bloque de datos, este debe de ser de instancia y estar asociado al


bloque de función FB10.

Departamento Eléctrico. AT FORMACIÓN Página 59


EJERCICIOS S7-300

Si abrimos el bloque de datos podemos ver que en su estructura aparecen todos los pará-
metros de cada uno de los motores.

En este DB las direcciones de cada una de las llamadas de las multiinstancias están refe-
ridas, como anteriormente se crearon a partir de los bytes 0, 10, 20 y 30.

Página 60 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
4. Abrimos el bloque de organización OB1, y en primer segmento realizamos una
llamada al bloque de función FB10, y lo asociamos al bloque de datos creado
DB10.

Podemos guardar y cerrar el bloque de organización, dando por finalizada la aplicación


del ejercicio 1.

Para su comprobación cargaremos todos los bloques al autómata y si abrimos el bloque de


función FB10 y el bloque de datos DB10, podemos ir comprobando el funcionamiento del
programa.

Como ejemplo podemos ver a continuación los siguientes ONLINE.

Departamento Eléctrico. AT FORMACIÓN Página 61


EJERCICIOS S7-300

La aplicación se puede comprobar que tiene el siguiente funcionamiento:

1. Si todos los térmicos y pulsadores de paro tienen su estado de reposo, es decir ce-
rrados (por lo tanto 1), al activar la entrada E0.0, se produce el arranque de los
cuatro motores con un intervalo de 5 segundos.
2. Si algún térmico o pulsador de paro estuviera abierto o se abriera antes de produ-
cirse el arranque este motor no arrancaría.
3. Si una vez arrancado se activa algún pulsador de paro individual ó el térmico el
motor se parara, si se desea volver arrancar el motor será necesario volver activar
el pulsador de marcha general E0.0.

Página 62 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
RESOLUCIÓN EJERCICIO 2.

En primer lugar creamos un proyecto nuevo y configuramos el hardware, como se realizo


en el ejemplo importando el fichero de configuración de nuestro equipo.

Una vez creado, en bloques de programa de S7, realizamos los siguientes pasos:

1. Insertamos 2 bloques de función multiinstancia FB1 y FB2, en los cuales parame-


trizamos las variables a utilizar en cada uno de los arranques y realizamos la pro-
gramación correspondiente para el arranque del motor en las condiciones indica-
das (arranque directo y arranque con inversión de giro).

En la programación se pondrá un cruzamiento con las salidas para que si se quiere cam-
biar el sentido de giro se tenga que pasar obligatoriamente por el paro.

Departamento Eléctrico. AT FORMACIÓN Página 63


EJERCICIOS S7-300

2. Insertamos el bloque de función FB10 y declaramos en STATE las llamadas a los


2 FB´s.

A continuación insertamos de las multinstancias, los 4 bloques en los segmentos del FB10
y asignamos las direcciones de las entradas y salidas utilizadas.

Hemos creado también una tabla de símbolos con las entradas y salidas utilizadas.

Página 64 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

3. Abrimos el bloque de organización OB1, y hacemos una llamada al bloque de


función FB10, asociándolo al bloque de datos DB10, que como no está creado nos
preguntara si queremos crearlo.

4. La programación del acuse de los 4 motores a la vez, la realizamos en el siguiente


segmento haciendo lectura del área de memoria del bloque de datos, simplemente
tenemos que mirar las direcciones correspondientes a la marcha de los motores.

La sintaxis para obtener la lectura de estos datos booleanos es DB10.DBX2.0, es decir in-
dicar el numero del DB y a continuación con DBX indicar el numero del bit que se quiere
leer.

De esta forma el segmento quedaría de la siguiente forma:

Departamento Eléctrico. AT FORMACIÓN Página 65


EJERCICIOS S7-300
Si cargamos en el autómata los bloques generados en la programación podemos compro-
bar el funcionamiento de los 4 motores, en donde en el DB10, se tienen recogidas en este
área de memoria todas las variables utilizadas.

En la siguiente figura podemos ver el estado de estas variables ONLINE en el DB10.

Página 66 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 10. MEZCLADOR DE LÍQUIDOS. SALTOS A METAS. BLOQUES
DE DATOS.
Tenemos un proceso industrial consistente en la mezcla de 2 productos para realizar 3 ti-
pos de mezclas.
En ese proceso, se hace una mezcla de una cantidad de un material con otra cantidad de
otro material durante un tiempo determinado.
La única diferencia que existe en el proceso, la cantidad del producto A (tiempo de aper-
tura de la válvula A), la cantidad del producto B (tiempo de apertura de la válvula B), y el
tiempo de mezclado de los 2 productos.
Al accionar el pulsador E1.0 previa selección de la mezcla se abren las 2 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.
Los datos de los tiempos de cada tipo de mezcla de colocaran en un DB diferente.

Tiempo producto A 5 segundos

MEZCLA 1 DB1 Tiempo producto B 8 segundos

Tiempo Mezclador 12 segundos

Tiempo producto A 7 segundos

MEZCLA 2 DB2 Tiempo producto B 5 segundos

Tiempo Mezclador 10 segundos

Tiempo producto A 8 segundos

MEZCLA 3 DB3 Tiempo producto B 8 segundos

Tiempo Mezclador 15 segundos

Departamento Eléctrico. AT FORMACIÓN Página 67


EJERCICIOS S7-300
SALTOS A METAS.
Los saltos a metas, son saltos condicionales o incondicionales, que se definen con una
instrucción de inicio y una instrucción de final.
Las etiquetas de las metas, están compuestas por cuatro caracteres como máximo de los
cuales el primero tiene que ser una letra.
Ha de coincidir mayúsculas o minúsculas en las etiquetas del salto y de la meta.
Las instrucciones en KOP y FUP, son las siguientes:
 JMP. Salto incondicional.
 JMP. Salto condicional.
 JMPN. Salto condicional negado.
 LABEL. Meta del salto absoluto y condicional.

EJEMPLOS:

En este caso tenemos un salto absoluto, esto quiere decir que siempre se ejecuta, por lo
tanto el segmento 2, nunca se ejecuta, y si la entrada E0.0 no se encuentra activada, se ac-
tiva la salida A4.0.
Podemos hacer que el salto sea condicionado, por una entrada, cambiando simplemente el
segmento 1.
Esta condición puede ser ejecutada con valor de la entrada a 1, ó a 0.

Página 68 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

En este caso si la entrada E0.1 se encuentra desactivada, no se ejecuta el salto

Este caso es el contrario con la entrada E0.1 desactivada, se ejecuta el salto.


Las instrucciones en AWL, son las siguientes:
 SPA. Salto incondicional. Siempre que sea leída la instrucción, se realiza el salto.
 SPB. Salto condicional. Siempre que tenga un 1 antes de esta instrucción, se reali-
za el salto.
 SPBN. Salto condicional negado. Siempre que tenga un 0 antes de esta instruc-
ción, se realiza el salto.
Estas instrucciones son idénticas a las que tienen los dos lenguajes anteriores, pero en este
caso se tienen otras 2 instrucciones más, que no se pueden utilizar ni en KOP, ni en FUP.
 BEA. Retorno absoluto (final de modulo absoluto). Cuando es leída, provoca que
el programa retorne desde este punto al modulo de donde venia.
 BEB. Retorno condicional (Final de modulo condicional). Cuando hay un 1 delan-
te de esta instrucción, provoca que el programa retorne desde este punto al modulo
de donde venia.

BLOQUES DE DATOS.
Los bloques de datos, también llamados DB‘s, son áreas de datos donde se almacenan da-
tos de usuario. Un DB no contiene instrucciones S7.
Hay dos tipos de bloques de datos:
 Bloques de datos globales: A sus datos pueden acceder todos los bloques.
 Bloques de datos de instancia: Asociados a un bloque de función FB.
Los bloques de datos de instancia ya han sido utilizados en el ejercicio anterior, por lo
tanto vamos a trabajar únicamente con los datos globales.
Los DB Globales sirven para depositar datos con los que puede trabaja el programa que
estuviéramos realizando. Estos datos los puede utilizar cualquier tipo de bloque (OB, FC
y FB) para leer datos o escribir datos que se conservan dentro del DB.

Departamento Eléctrico. AT FORMACIÓN Página 69


EJERCICIOS S7-300

Al contrario de los datos en el área de datos locales, los datos contenidos en un DB no son
borrados al cerrar el DB o al concluir el tratamiento del correspondiente bloque lógico.
Un DB global y un DB de instancia pueden estar abiertos al mismo tiempo.
Un DB no tiene área de instrucciones S7, sino que es una tabla de datos que forma una es-
tructura:

Dirección. La dirección absoluta es asignada por STEP 7, cada vez que se valida un re-
gistro con ENTER, y no es modificable. El formato de la dirección puede ser BIT, BYTE,
WORD,....
Se puede acceder también a este elemento a través de su dirección absoluta (después de
haber compilado y cargado el DB).
Nombre. Nombre simbólico con el que se accede a la dirección absoluta asignada.
Tipo. Tipo de dato asignado a la variable BOOL, INT, WORD, DWORD, ARRAY,
S5TIME….
Valor inicial. Valor inicial de la variable en formato compatible con el tipo de dato. Indi-
caremos el valor inicial en el caso que no coincida con el predeterminado.
Comentario. Campo para poder documentar la variable con un máximo de 80 caracteres.
Acceso a los datos de un DB.

Para acceder a los datos de un DB global, existen 2 métodos.


1. Método 1. Consiste el abrir en primer lugar el DB, para esto utilizaremos la ins-
trucción ―AUF‖.

Programación en KOP

Página 70 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Programación en FUP

Programación en AWL.

Una vez abierto el DB el acceso se realiza mediante carga (L) y transferencia (T).
No existe ninguna instrucción para cerrar un DB, solo se cierra abriendo otro DB.

EJEMPLOS:

U DBX3.1 Consulta el bit 3.1 del bloque de datos abierto

L DBB1 Carga en ACU1 el byte 1 del DB abierto

L 5 Cargo 5 en ACU1

T DBW4 y lo transfiero a la palabra 4 del DB abierto

L L#3 Cargo el doble entero 3

T DBD2 y lo transfiero a la doble palabra 2 del DB abierto

AUF DB5 Abro DB5

L DBW8 Carga en ACU1 la palabra 8 del DB5

AUF DB7 Abro DB5

Transfiero el contenido de ACU1 a la palabra 6 del


T DBW6
DB7

2. Método 2. La forma más sencilla consiste en acceder a los datos del DB indican-
do en la misma instrucción el número del DB. En este caso no es necesario abrir el
DB.

EJEMPLOS:

U DB1.DBX3.0 Consulto el bit 3.0 del DB1

L DB1.DBB7 Carga en ACU1 el byte 7 del DB1

L DB2.DBW4 Carga la palabra 4 del DB2

L DB1.DBD4 Cargo la doble palabra 4 del DB1

L Datos.Dato Cargo la variable ―Dato‖ del DB llamado ―Datos‖

Departamento Eléctrico. AT FORMACIÓN Página 71


EJERCICIOS S7-300
RESOLUCIÓN.
Vamos a realizar el ejercicio, explicando todos los pasos a realizar y explicando las nue-
vas instrucciones que nos van apareciendo.
En primer lugar una vez creado el proyecto, crearemos el primer DB, en donde incluire-
mos los datos de la mezcla 1.
Creación de un DB: Hacer clic con el botón izquierdo del ratón en la carpeta de Bloques
e ―Insertar nuevo objeto...‖ ―Bloque de datos‖. Se le puede dar un nombre simbólico. Pa-
ra abrirlo hacer doble clic sobre él.
1. Seleccione el bloque de datos global.
2. Active la vista "Declaración" (en menú ―Ver‖) del bloque de datos en caso de que
ésta no se visualice todavía.
3. Defina la estructura rellenando la tabla visualizada conforme a los datos de la
mezcla 1.
Para introducir el tipo de datos, además de escribir el mismo, podemos acceder a través
de un menú contextual, con el botón derecho del ratón, donde podemos seleccionar el tipo
de dato de tiempo, u otro que pudiéramos utilizar.

Una vez introducidos los datos, debemos ir al menú ―Ver‖→‖Datos‖, de esta forma el va-
lor inicial se copiara en el valor actual, podemos en las figuras anteriores la diferencia.
―Ver‖→‖Declaración‖

―Ver‖→‖Datos‖

Página 72 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Si el valor inicial hubiese sido modificado y quisiéramos que coincidiera con el valor ini-
cial, podemos ir al menú ―Edición‖→‖Inicializar bloque de datos‖.
Repetimos el mismo proceso con los 2 bloques de datos siguientes para las mezclas 2 y 3.

PROGRAMACIÓN:
Insertamos en la carpeta de bloques 2 bloques función, que denominaremos respectiva-
mente por defecto como FC1 y FC2.
Abrimos el bloque FC1 y realizamos los siguientes segmentos:

En este segmento programamos la se-


lección de las mezclas que se desean
realizar, y en función de la selecciona-
da se realiza la apertura del bloque de
datos correspondiente.
 Si NO tenemos seleccionada la
entrada E0.0 (mezcla1) se eje-
cuta el salto al segmento 3.
 Si NO tenemos seleccionada la
entrada E0.1 (mezcla1) se eje-
cuta el salto al segmento 5.
 Si NO tenemos seleccionada la
entrada E0.2 (mezcla1) se eje-
cuta el salto al segmento 7.
En este caso por lo tanto al no tener
ninguna selección no se ejecuta tampo-
co el bloque FC2, y por lo tanto el pro-
grama no realiza ninguna función.
Al ejecutarse los saltos a meta, no se
ejecutan los segmentos 2, 4 y 6, y por
lo tanto no se abren los bloques de da-
tos para su posible lectura.
Así pues se deberá de seleccionar al-
guna de las opciones, supongamos que
sea E0.0, dándose el siguiente funcio-
namiento:
 El salto de meta M1 no se eje-
cuta y se abre el bloque de da-
tos DB1.
 Se ejecutan los saltos de metas
M2 y M3, y no se abren los
bloques de datos DB2 y DB3.

Departamento Eléctrico. AT FORMACIÓN Página 73


EJERCICIOS S7-300
 Se hace una llamada al FC2.
Lo mismo ocurriría si seleccionamos
otra de las entradas, es decir no se eje-
cuta su salto a meta abriéndose su blo-
que de datos, y se realizan los otros
saltos a meta.

En cualquiera de los 3 casos se realiza


la llamada al bloque función FC2.

Abrimos el bloque FC2 y realizamos los siguientes segmentos:

En este bloque simplemente se realiza una


transferencia de los datos del bloque de
datos que hubiéramos activado, con las
entradas de selección de mezcla.
 DBW0 dirección de producto A se
transfiere a MW0
 DBW2 dirección de producto A se
transfiere a MW2
 DBW4 dirección de producto A se
transfiere a MW4

Con estos 2 segmentos podemos decir por lo tanto que simplemente en función de la se-
lección realizada se cargan los datos de la selección en las palabras MW0, MW2 y MW4.
Para que realmente se ejecute será necesario como siempre realizar la llamada desde el
bloque de organización OB1, por lo tanto abrimos el bloque y en el primer segmento car-
gamos el bloque función FC1.
La llamada al FC2, recordemos que se realiza desde el FC1.
En el resto de los segmentos se programaran los temporizadores con los tiempos de selec-
ción y la apertura de las válvulas.

Página 74 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Para comprobar su funcionamiento se cargaran todos los bloques en el autómata.

Podemos ver en el autómata


activadas las entradas E0.0 y
E1.0, que dan lugar a la pri-
mera mezcla, de tal forma que
inicialmente se activan las dos
válvulas y el mezclador como
se puede ver en el modulo de
salidas.
Módulo entradas Módulo salidas

Departamento Eléctrico. AT FORMACIÓN Página 75


EJERCICIOS S7-300

Transcurridos 5 segundos se desactiva la salida de la válvula correspondiente al producto A.

Transcurridos 3 segundos más, (8 desde el inicio) se desactiva la salida correspondiente al


producto B.

A los 12 segundos desde su activación se para el mezclador, por lo que podemos desac-
tivar las entradas en espera de una nueva activación.

CUESTIONES:

1. ¿Es necesario mantener las entradas de selección, hasta que finalice el ciclo de
funcionamiento?
2. ¿Qué sucederá si una vez realizada una selección, se escoge una segunda mezcla?
¿Cuál de las 2 se hace efectiva?

Página 76 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 11. SELECCIÓN DE FUNCIONAMIENTO AUTOMÁTICO-
MANUAL.
La selección de la manera de funcionamiento se realizara
mediante el selector E0.0, si se encuentra en 0 se realizara
en forma manual, y con valor 1 en forma automática.
El funcionamiento del sistema automático y manual es el
siguiente:
Funcionamiento Automático.
Al accionar el pulsador E1.0, se activa la salida A5.0 co-
rrespondiente a una electroválvula, y la salida A4.0 funcio-
na de forma intermitente con una frecuencia de 2 Hz.
Al cabo de 10 segundos de estar funcionando, se desconec-
tan las 2 salidas.

Funcionamiento Manual.
Mientras tengamos accionado el pulsador E1.0, se activa la salida A5.0 de la electrovál-
vula y la correspondiente a la señalización A4.0, funcionando de forma intermitente, en
este caso a una frecuencia de 1 Hz.
Al dejar el pulsador E1.0, las salidas se desconectan.
Realizar dos programas con las siguientes indicaciones:

1. En primer lugar realizar el programa de forma podríamos decir clásica, utilizando


solamente bloque función.
2. Realizar el programa en un solo FC, utilizando saltos a meta.

Departamento Eléctrico. AT FORMACIÓN Página 77


EJERCICIOS S7-300
RESOLUCIÓN.
RESOLUCIÓN 1. Vamos desarrollar la programación en un FC1 para el funcionamiento
automático, y un FC2 para el funcionamiento manual.

Para generar las frecuencias de oscilación de la lámpara de señalización A4.0, utilizare-


mos una marca de ciclo en el byte 255.

Programación de FC1.

Funcionamiento Automático.

Al accionar la entrada E0.1, el tempori-


zador recibe u pulso positivo que lo hace
activar durante un tiempo de 10 segun-
dos.
Por lo tanto durante este tiempo se man-
tiene activada la salida A5.0 y también
la A4.0, con la frecuencia generada por
la marca de ciclo M255.3 de valor 2 Hz.

Programación de FC2.

Funcionamiento Manual.

Mientras este activada la entrada E0.1


se activa la salida A5.0, y también la sa-
lida A4.0, con la oscilación de la marca
M255.5 de valor 1 Hz.

El funcionamiento de uno u otro bloque lo podemos realizar desde el bloque de organiza-


ción OB1, realizando su llamada y ejecución en función de la posición del selector E0.0.

Página 78 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Programación OB1.

Recordemos de carga el hardware al autómata o simulador, así como todos para compro-
bación de su funcionamiento.

RESOLUCIÓN 2. Vamos a realizar a continuación el mismo ejercicio realizándolo en


un solo bloque y utilizando salto de meta, tal como nos indica el enunciado. Creamos para
ello un FC1, en lenguaje de progra-
mación FUP.

De los segmentos a programar uno


de ellos precisa la programación
AWL, en cuyo momento se cambia-
ra. Simplemente el menú de Ver
cambiamos a AWL, una vez escrito
el segmento podemos volver a FUP.
Los segmentos programados son los siguientes:

En el segmento 1 y 2 realizamos unos


saltos a meta, en función del valor de
selección del interruptor E0.0, con va-
lor 1 se realiza el salto AUTO, y con
valor 0, se realiza a MANU.
La programación automática se realiza
en los segmentos 3, 4 y 5, y es la mis-
ma que la realizada con el formato an-
terior, es decir el FC1 de la resolución
anterior.
Lo mismo sucede con la programación
MANU, que se realiza en los segmen-
tos 7 y 8.

El funcionamiento por bloques es el si-


guiente:
Si la selección realizada es la AUTO,
se realiza el salto y al salir del segmen-
to 5, nos encontramos en el segmento
6, con la instrucción BEA, que nos de-
vuelve otra vez al principio.

Departamento Eléctrico. AT FORMACIÓN Página 79


EJERCICIOS S7-300

Si la opción seleccionada es la MANU, se realiza directamente el salto a los segmentos 7


y 8, y finalizado este se vuelve al segmento 1.

Recordemos por lo comentado en este ejercicio


que la instrucción BEA solo se realiza en pro-
gramación AWL.

Solamente nos quedara realizar la llamada al FC1, desde el bloque de organización OB1 y
cargar el hardware (tenemos marca de ciclo) y evidentemente los bloques, al autómata o
simulador.
Realizadas estas cargas se puede comprobar el funcionamiento.

Página 80 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 12. DESPLAZAMIENTOS Y ROTACIONES. EXPULSIÓN DE BO-
TELLAS DEFECTUOSAS.
Se trata de extraer las botellas defectuosas de un proceso de colocación de etiquetas, por
motivos de construcción no es posible colocar el dispositivo extractor y la derivación de
la cinta transportadora en el lugar de la detección de la etiqueta, es por ello que se deberá
registrar la botella defectuosa (sin etiqueta) y después de haber contabilizado la segunda
botella después de la detectada como defectuosa, realizar la extracción de la misma me-
diante la actuación de un cilindro.
En la siguiente figura se muestra el dispositivo utilizado para esta maniobra.

Las entradas y salidas utilizadas son:

ENTRADAS SALIDAS

E0.0 Pulsador de paro A4.0 Activación cilindro abrir


E0.1 Pulsador de marcha A4.1 Activación cilindro recoger
E0.2 Detector de etiqueta
E0.3 Detector de botella
E0.4 Detector cilindro mínimo
E0.5 Detector cilindro máximo

Departamento Eléctrico. AT FORMACIÓN Página 81


EJERCICIOS S7-300
RESOLUCIÓN.
Las instrucciones que tenemos en la carpeta de desplazamientos y rotación, son las si-
guientes:

SHR_I Desplazar entero de 16 bit a la derecha


SHR_DI Desplazar entero de 32 bit a la derecha
SHL_W Desplazar 16 bit a la izquierda
SHR_W Desplazar 16 bit a la derecha
SHL_DW Desplazar 32 bit a la izquierda
SHR_DW Desplazar 32 bit a la derecha
ROL_DW Rotar 32 bits a la izquierda
ROR_DW Rotar 32 bits a la derecha.
SHR_I. Desplazar entero de 16 bit a la derecha.

EN Entrada de habilitación

IN Valor a desplazar

N Número de posiciones (bits) a desplazar

OUT Resultado de la operación de desplazamiento

ENO Salida de habilitación

Los parámetros de entradas y salidas de todas estas instrucciones son las mismas, por
lo que en las siguientes instrucciones no las vamos a repetir.
Descripción
Un estado de señal de 1 en la entrada de habilitación (EN) activa la operación Desplazar
entero a la derecha. Esta operación desplaza los bits 0 a 15 de la entrada IN bit a bit a la
derecha. La entrada N indica el número de bits a desplazar. Si N es superior a 16, la ope-
ración se comporta como si N fuera 16. Las posiciones que quedan libres a la izquierda se
rellenan con el estado de señal del bit 15 (que corresponde al signo de un entero), es de-
cir, se rellenan con ceros si el número es positivo o se rellenan con unos si es negativo. El
resultado de la operación de desplazamiento se determina consultando la salida OUT.

En la siguiente figura podemos ver un ejemplo de aplicación.

Página 82 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
La operación se activa cuando E 0.0 = 1.
La palabra de marcas MW0 se desplaza a la derecha
tantos bits como se hayan indicado en MW2.
El resultado se almacena en MW4. La salida A 4.0 se
pone a ―1".

SHR_I. Desplazar entero de 32 bit a la derecha.


Su funcionamiento es exacto al anterior aplicado en este caso a una doble palabra. Las en-
tradas y salidas son idénticamente las mismas.
Descripción
Un estado de señal de "1" en la entrada de habilitación (EN)
activa la operación Desplazar entero doble a la derecha. Esta
operación desplaza todo el contenido de la entrada IN bit a
bit a la derecha. La entrada N indica el número de bits a
desplazar. Si es superior a 32, la operación se comporta co-
mo si N fuera 32. Las posiciones que quedan libres a la iz-
quierda se rellenan con el estado de señal del bit 15 (que es
el signo de un número entero), es decir, se rellenan con ceros si el número es positivo y
con unos si es negativo. El resultado de la operación de desplazamiento se determina con-
sultando la salida OUT
SHL_W. Desplazar 16 bit a la izquierda
Descripción

Un estado de señal de "1" en la entrada de habilitación (EN)


activa la operación Desplazar palabra a la izquierda. Esta ope-
ración desplaza los bits 0 a 15 de la entrada IN bit a bit a la iz-
quierda.

La entrada N indica el número de bits a desplazar. Si N es superior a 16, la operación es-


cribe un 0 en la salida OUT y pone los bits A0 y OV de la palabra de estado a "0". Las
posiciones que quedan libres a la derecha se rellenan con ceros. El resultado de la opera-
ción de desplazamiento se determina consultando la salida O.

Departamento Eléctrico. AT FORMACIÓN Página 83


EJERCICIOS S7-300
SHR_W. Desplazar 16 bit a la derecha.
Descripción
Su funcionamiento es idéntico al anterior.
Un estado de señal de "1" en la entrada de habilitación (EN)
activa la operación Desplazar palabra a la derecha. Esta opera-
ción desplaza los bits 0 a 15 de la entrada IN bit a bit a la dere-
cha. Los bits 16 a 31 no son afectados. La entrada N indica el
número de bits a desplazar. Si N es superior a 16, la operación
escribe un 0 en la salida OUT y pone los bits A0 y OV de la
palabra de estado a 0. Las posiciones que quedan libres a la izquierda se rellenan con ce-
ros. El resultado de la operación de desplazamiento se determina consultando la salida
OUT.
SHR_DW. Desplazar 32 bit a la derecha / SHL_DW. Desplazar 32 bit a la izquierda.
Su funcionamiento es idéntico a las 2 instrucciones anteriores aplicables en este caso a las
dobles palabras de 32 bits.

Descripción
Un estado de señal de "1" en la entrada de habilitación (EN) activa la operación Desplazar
palabra doble a la derecha. Esta operación desplaza los bits 0 a 31 de la entrada IN bit a
bit a la derecha. La entrada N indica el número de bits a desplazar. Si N es superior a 32,
la operación escribe un 0 en la salida OUT y pone los bits A0 y OV de la palabra de esta-
do a "0". Las posiciones que quedan libres a la izquierda se rellenan con ceros. El resulta-
do de la operación de desplazamiento se determina consultando la salida OUT.

Descripción
Un estado de señal de "1" en la entrada de habilitación (EN) activa la operación Desplazar
palabra doble a la izquierda. Esta operación desplaza los bits 0 a 31 de la entrada IN bit a
bit a la izquierda. La entrada N indica el número de bits a desplazar. Si N es superior a 32,
la operación escribe un 0 en la salida OUT y pone los bits A0 y OV de la palabra de esta-
do a "0". Las posiciones que quedan libres a la derecha se rellenan con ceros. El resultado
de la operación de desplazamiento se determina consultando la salida OUT.

Página 84 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
ROL_DW.Rotar 32 bits a la izquierda.
Descripción
Un estado de señal de 1 en la entrada de habilitación (EN) acti-
va la operación Rotar palabra doble a la izquierda. Esta opera-
ción rota todo el contenido de la salida IN bit a bit a la izquier-
da. La entrada N indica el número de bits a rotar. Si N es supe-
rior a 32, la palabra doble rota (((N-1) módulo 32) + 1) posi-
ciones. Las posiciones que quedan libres a la derecha se relle-
nan con los estados de señal de los bits rotados. El resultado de
la operación de rotación se determina consultando la salida OUT.

ROR_DW.Rotar 32 bits a la derecha.


Descripción
Un estado de señal de 1 en la entrada de habilitación (EN) activa la operación Rotar pala-
bra doble a la derecha. Esta operación hace rotar todo el conte-
nido de la entrada IN bit a bit a la derecha. La entrada N indica
el número de bits a rotar. Si N es superior a 32, la palabra do-
ble rota (((N-1) modulo 32) +1) posiciones. Las posiciones que
quedan libres a la izquierda se rellenan con los estados de señal
de los bits rotados. El resultado de la operación de rotación se
determina consultando la salida OUT.

Para la resolución del problema vamos a crear un FC1, donde vamos a utilizar el despla-
zamiento de 1 bit a la izquierda para poder detectar, la posición de la segunda botella des-
pués de la defectuosa.
En el primer segmento simplemente vamos a utilizar una memoria para activar el tren de
botellas activada con la marcha (NA) y desactivado con el pulsador de paro (NC).

Departamento Eléctrico. AT FORMACIÓN Página 85


EJERCICIOS S7-300

En el segundo segmento mediante un flanco positivo, detectamos que no hay etiqueta


SB1=0, y que tenemos botella SB2=1, que es indicativo por lo tanto, que tenemos una bo-
tella defectuosa. Por lo tanto la marca M11.0 se coloca a 1. La palabra MW10 tendrá la
estructura de la siguiente figura.

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
MB11
MB10

En el tercer segmento al de-


tectar la botella defectuosa,
se produce un desplaza-
miento de 1 bit a la izquier-
da, por lo que la salida de la
palabra MW10, tomara el
valor de 2, es decir M11.0
se desplaza a la izquierda
haciendo que M11.1= 1 y
M11.0 se rellene con 0.
(Mirar SHL_W)

Por lo tanto la palabra MW10, tiene los siguientes valores:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0

MB10 M11.3 M11.2 M11.1 M11.0

MB11

Página 86 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
En los siguientes segmentos se programa la activación de cilindro, para expulsar las bote-
llas defectuosas, para lo cual deben de pasar 2 botellas más, después de la defectuosa.

Al pasar la primera bote-


lla después de la defec-
tuosa, (segundo ciclo del
bloque), se produce un
nuevo desplazamiento de
1 bit a la izquierda, sien-
do por tanto la marca
M11.2 la que toma el va-
lor de 1.
Al pasar la segunda bote-
lla después de la defec-
tuosa, el nuevo desplazamiento del bit a la izquierda determina que el bit M11.3 vale 1.
Es en este momento cuando la botella sin etiqueta se encuentra en posición para poder
expulsarla, por lo que activamos la expulsión del cilindro, que se para con el detector de
posición máxima E0.5.
Este sensor nos para el avance del cilindro y también nos activa el retroceso del brazo,
hasta llegar a su posición de recogida, detectado por el sensor E0.4.

Cuando el cilindro ha expulsado la botella defectuosa, (E0.5=1), en el segmento 6, rese-


teamos el valor del bit M11.3, de esta forma el programa está en disposición de detectar
una nueva botella defectuosa.
Podemos finalmente realizar la llamada al bloque FC1, desde el bloque de organización
OB1, y cargar ambos bloques al autómata o simulador.

Departamento Eléctrico. AT FORMACIÓN Página 87


EJERCICIOS S7-300
En estas tres figuras podemos ver la si-
mulación de la detección de botella de-
fectuosa sin etiqueta.
1. Figura 1. SB1=0 SB2=1. Botella
defectuosa, la palabra MW10 toma
el valor de 2.

2. Figura 2 SB1=1 SB2=1. Botella no


defectuosa, la palabra MW10 toma
el valor de 4.

3. SB1=1 SB2=1. Botella no defectuo-


sa, la palabra MW10 toma el valor
de 8, es decir el bit M11.3 toma el
valor de 1, y por lo tanto se activa el
avance del cilindro, para expulsar la
botella defectuosa.

CUESTIONES.

1. ¿Qué sucedería si se produce la lle-


gada de una serie (tres o más de tres)
de botellas defectuosas? ¿Funciona-
ra correctamente el programa?

2. Si se corrige el etiquetado de bote-


llas después de una serie defectuosa,
el programa tiene un funcionamiento
correcto.

Página 88 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 13. PROGRAMACIÓN CON REGISTROS DEL SISTEMA.

Ejercicio 1.
En un sistema de riego de una plantación, queremos que el sistema funcione a las 13:05
minutos, y que se pare a las 13:06 minutos.
Programar también la posibilidad que el sistema funcione solamente de lunes a viernes.
Ejercicio 2.
Queremos que en una fábrica de lunes a viernes una sirena funcione desde la 13:30 de la
tarde hasta la 13:32.
Ejercicio 3.
Crear una plantilla para poder realizar la conexión y desconexión de la sirena anterior pa-
ra que funciones entre unas horas determinadas.
Desde un terminal de operador o un sistema SCADA podremos programar ese reloj para
que la salida funcione cuando nos interese.

Departamento Eléctrico. AT FORMACIÓN Página 89


EJERCICIOS S7-300
RESOLUCIÓN.
PROGRAMACIÓN DEL RELOJ.
La hora y fecha, se pueden cambiar en el editor o en el administrador en:
”Sistema de destino” →”Diagnostico/configuración” →”ajustar la hora”.
Cuando se pone la fecha y hora nueva, se valida pulsando ―Aplicar‖.
Para poder realizar estas funciones creamos un proyecto y desde la carpeta de bloques
arrancamos el simulador PLCSIM, ó realizamos conexión con el autómata.
Al ejecutar las órdenes anteriores obtenemos la siguiente pantalla (la pantalla de cambio
de ajuste de hora esta ampliada).

Para trabajar con los datos del reloj, se puede hacer de dos formas:
 Una de ellas es la de trabajar con funciones especiales SFC.
 Otra de las formas, es recuperar los datos del reloj del OB1

Datos del reloj del OB1


 Hay un registro temporal en el OB1, el ―OB1_DATE_TIME‖ donde se carga la
fecha y hora actual en la que se está ejecutando el OB1 (variable 12.0 y la compo-

Página 90 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
nen 12 bytes) las variables de lectura son del LB12 al LB19. Si entramos en el
OB1, podemos ver en el entorno interface los registros temporales.

 Si quiero trabajar con el reloj solo en el OB1, puedo trabajar con esas variables
temporales. En caso que quiera trabajar en otro módulo, tendré que cargar esas va-
riables temporales en unos registros (por ejemplo en un DB).
Los datos del reloj están en BCD, por lo tanto se deberá leerlos en hexadecimal.

RESOLUCIÓN EJERCICIO 1.
Creamos en primer lugar un bloque de datos con un tipo de dato ARRAY, que le damos
por nombre RELOJ, y como valor inicial B#16#0, (cero), y con longitud de Byte. Por lo
tanto tenemos 64 bits para la información de fechas, que cargaremos desde el LB12 hasta
el LB19.

Si vemos los datos, serán los siguientes:

Departamento Eléctrico. AT FORMACIÓN Página 91


EJERCICIOS S7-300
A continuación creamos un bloque función y abrimos el bloque de organización OB1,
realizando los 2 siguientes segmentos:

En el primer segmento
vamos a realizar la lla-
mada al FC1 donde se va
a realzar el programa pa-
ra la ejecución de la
alarma.
En el segundo segmento
cargamos los primeros
32 bits en el DB1, a par-
tir del byte 0, y los si-
guientes 32 bits a partir
del byte 4.

De esta forma si el reloj del modulo se encuentra en hora, al ponernos ON LINE en el


DB1, se nos marca la fecha con la siguiente estructura.

Al realizar este programa en OB1, los datos del reloj estarán en:

DB1.DBB0 LB0 Año


DB1.DBB1 LB1 Mes
LD12
DB1.DBB2 LB2 Día
DB1.DBB3 LB3 Hora
DB1.DBB4 LB4 Minuto
DB1.DBB5 LB5 Segundos
LD16
DB1.DBB6 LB6 Decimas y centésimas
DB1.DBB7 LB7 Milésima, día de la semana
A continuación abrimos el bloque FC1 y realizamos el siguiente programa en AWL:

Las horas y los minutos se encuentran en


los bytes 3 y 4, por lo tanto cargamos la
palabra 3 del DB1, y el valor13:05, en una
comparación de igual.

Si son iguales los valores nos activa la


memoria SET, en la salida A4.0.

Página 92 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Comparamos otra vez la palabra 3, con el valor 13:06, y si son iguales nos resetea la sa-
lida anterior.

RESOLUCIÓN EJERCICIO 2.
Antes de realizar el programa vamos a ver algunas instrucciones, de las cuales utilizare-
mos alguna de ellas.
OPERACIONES LÓGICAS ENTRE PALABRAS O DOBLES PALABRAS.
En la lista de comandos situados como siempre en la parte izquierda en programación
KOP ó FUP, encontramos una carpeta con las instrucciones de operaciones lógicas con
palabras.

Si la entrada E0.0 se encuentra activada, la instrucción


coge los 16 bits de la marca palabra MW0 y MW2, y rea-
liza la operación serie (tenemos un 1 si los dos bits valen
1) de los bits de la misma posición de ambas palabras (bit
a bit), y el resultado lo envía a la marca MW4.

Si la entrada E0.0 se encuentra activada, la instrucción


coge los 16 bits de la marca palabra MW0 y MW2, y
realiza la operación paralelo (tenemos un 1 cuando algu-
no de los bits valen 1) de los bits de la misma posición
de ambas palabras (bit a bit), y el resultado lo envía a la
marca MW4.

Departamento Eléctrico. AT FORMACIÓN Página 93


EJERCICIOS S7-300

Si la entrada E0.0 se encuentra activada, la instrucción


coge los 16 bits de la marca palabra MW0 y MW2, y
realiza la operación paralelo exclusiva (tenemos un 1
cuando los bits son diferentes) de los bits de la misma
posición de ambas palabras (bit a bit), y el resultado lo
envía a la marca MW4.

Tenemos también las instrucciones WAND_DW,


WOR_DW, WXOR_DW, idénticas en su funciona-
miento a las explicadas, utilizadas para formato de
dobles palabras, es decir para 32 bits.

RESOLUCIÓN.
Para este caso realzamos un programa con el mismo OB1, que el ejercicio anterior y con
el mismo DB1, de tal forma que la información de hora la tenemos alojada en las mismas
direcciones.

DB1.DBB0 LB0 Año


DB1.DBB1 LB1 Mes
LD12
DB1.DBB2 LB2 Día
DB1.DBB3 LB3 Hora
DB1.DBB4 LB4 Minuto
DB1.DBB5 LB5 Segundos
LD16
DB1.DBB6 LB6 Decimas y centésimas
DB1.DBB7 LB7 Milésima, día de la semana
De tal forma que la hora y los minutos los tenemos DBB3 y DBB4, y el día de la semana
DBB7. Para realizar la alarma deberemos de filtrar el día de la se-
mana en una palabra (también valdría un byte) para poder realizar
comparaciones con él.
El día de la semana como se dijo anteriormente vienen codificados
según la tabla de la figura.
Por lo tanto con valor 1 y 7 no se deberá de activar la alarma, y el

Página 94 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
resto de los días si se debe activar.
Abrimos el bloque función FC1, y en primer lugar transferimos el día de la semana a una
palabra.

PROGRAMACIÓN EN FUP PROGRAMACIÓN EN AWL

La primera entrada recoge los datos de reloj del byte 6 y 7, y realiza la operación con 16
bits de valor 1 (F), por lo tanto cuando un bit de la entrada de DBW6 valga 1 el resultado
es 1(serie de 1 y 1), y si el bit de entrada es 0, el resultado será 0 (serie de 0 y 1). Pode-
mos decir por lo tanto que la marca palabra MW0 tenemos el valor de la fecha.

En el segundo segmento hacemos una


comparación de igualdad de la palabra
MW0, con el valor 7 (Sábado), que nos
activa la marca M10.0.
De la misma forma, cuando valga 1
(Domingo), nos activa la marca M10.1.

Por lo tanto con M10.0 ó con M10.1 ac-


tivados la alarma de sirena no deberá de
funcionar.

En los segmentos 4 y 5 programamos el valor horario de


activación de la sirena. En el segmento 4 se realiza una
comparación de igualdad del valor horario (hora y mi-
nutos, bytes 3 y 4, es decir DBW3), con la hora de co-
mienzo de la señal las 13:30. Que memorizamos con la
marca M10.2.
Dicha marca se resetea cuando la hora sea 13:32, que en
segmento 5 se programa como en el caso anterior con
una comparación de igualdad, sobre un reset en dicha
marca.
Finalmente en el último segmento programamos la sali-
da de la sirena.

Departamento Eléctrico. AT FORMACIÓN Página 95


EJERCICIOS S7-300
M10.2 marca de valor horario activada
entre 13:30 y las 13:32.
M10.0 marca activada los sábados.
M10.1 marca activada los domingos.
A4.0 salida de sirena.

Para poder ver su comprobación transferimos todos los bloques al autómata y podemos
realizar una tabla de variables donde se pueda forzar los valores de fechas horarias y día
de la semana.

El forzado del día de la semana, no es visible, porque al ejecutarse el 2 segmento del


OB1, se vuelve a machacar, el valor de las marcas con el reloj de la CPU. Podemos reali-
zar una ligera modificación simplemente para ver, correcto funcionamiento del programa
colocando unas memorias, que podemos resetear con una entrada digital. Modificar para
ello, el segmento 2 y 3, por los siguientes:

Página 96 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
RESOLUCIÓN EJERCICIO 3.
Mantenemos de los ejercicios anteriores el bloque de datos, y creamos un bloque función
FC1, donde realizaremos las parametrizaciones, y el programa habitual de los otros ejer-
cicios para activar una alarma entre unos valores horarios.
Los valores de entradas y salidas utilizados son los siguientes:

El programa lo resolvemos en los 2 siguientes segmentos:

En el segmento 1, si el valor de la hora de la base datos es igual a la hora de inicio, se


memoriza la salida.
En el segmento 2, si el valor de la hora de la base de datos es igual a la hora de fin, se re-
setea la salida.
Abrimos el bloque de organización y en el primer segmento se realiza una llamada al
FC1, donde utilizamos como marcas y salidas.
MW10. Hora de Inicio. MW20 Hora de Final. A4.0 Señal de salida.

Departamento Eléctrico. AT FORMACIÓN Página 97


EJERCICIOS S7-300
Transferimos los bloques al autómata y realizamos las comprobaciones, forzando las va-
riables de la hora de inicio y hora final.

Según la tabla de variables la hora actual son las17:35, la hora de inicio 17:36 y la hora
final 17:37.
Activación y desactivación de la salida.

Página 98 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 14. OPERACIONES ARITMÉTICAS CON NÚMEROS ENTEROS
REALES Y CONVERSIONES DE FORMATOS.

1. Calculo de la media aritmética.

Realizar en un FCs parametrizable que nos calcule la media de cuatro números. Los
números de entrada serán en formato de tipo entero y la media será un real. En la siguien-
te figura se puede ver cómo sería la parametrización del FC.

2. Realización de una sencilla regla de tres.

Realizar un FC parametrizable que nos devuelva el resultado de aplicar una regla de tres.
Para esto definiremos una serie de parámetros de entrada y de salida, como se muestra en
la figura siguiente se puede ver los parámetros que son necesarios para la resolución del
problema.

Departamento Eléctrico. AT FORMACIÓN Página 99


EJERCICIOS S7-300

RESOLUCIÓN.
Las operaciones de enteros y dobles enteros, las tenemos en la
carpeta de instrucciones ―Números en coma fija‖, que se co-
rresponden con la suma, resta, multiplicación y división, para
números enteros y doble enteros. También se tiene en doble
entero la operación MOD_DI que nos obtiene el resto de una
división.
Todas las instrucciones tienen 3 entradas:
EN. Entrada de validación por defecto valor 1, siempre se eje-
cuta la operación.
IN1 y IN2. Primer y segundo valor a sumar, que puede tener
formato E, A, M, D, L o constante.
En cualquiera de las operaciones, el resultado ha de estar comprendido dentro de los lími-
tes de los números enteros.
Límites número enteros de 16 bits: -32.768 a +32.767
Límites número enteros de 32 bits: -2.147.483.648 a
+2.147.483.647
En caso de no ser así, se producirá:
 Se activa el bit de estado OV (desbordamiento).
 El resultado obtenido en OUT no será válido.
 En ENO tendremos un cero.
Como ejemplo vamos a realizar una operación suma con en-
teros, asignando como entradas y salidas unas marcas.
También hemos utilizado el bit del sistema de desborda-
miento, que podemos encontrar en la carpeta de instruccio-
nes ―Bits de estado‖.

Como bits de estado de desbordamiento tenemos dos:

Página 100 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
 OV. Bit de desbordamiento que se actualiza en cada operación.
 OS. Bit de desbordamiento memorizado, mantiene el valor durante todo el scan,
aunque en otras operaciones no hubiera desbordamiento, indicaría que lo hay.
Según la programación del segmento con la entrada E0.0 se realiza la operación suma de
las entradas MW10 y MW20, y se guarda en MW30.
Si la suma de las entradas, es mayor que el límite de los enteros, y tenemos activada la en-
trada E0.2, se nos activara la salida a4.0.
Podemos mediante una tabla de valores una vez transferidos los bloques comprobar su
funcionamiento.

Sin desbordamiento.

Con desbordamiento.
Si nos ponemos ONLINE dentro del FC1, podremos ver que en el primer caso la entrada
de OV esta desactivada y en segundo caso activada.
Para el resto de operaciones no hay ninguna diferencia, salvo la correspondiente a la pro-
pia operación, pero su programación es idéntica en todos los casos.
RESOLUCIÓN EJERCICIOS.
Vamos a realizar, por lo tanto el ejercicio propuesto, que confeccionamos en dos FC´s pa-
rametrizables, con las entradas y salidas, indicadas en el enunciado. Para el FC1:

Departamento Eléctrico. AT FORMACIÓN Página 101


EJERCICIOS S7-300
La programación será:

Resulta bastante claro que se realizan las sumas de los 4 números, mediante dos opera-
ciones que se vuelcan sobre la marca MW4, la cual se divide por 4, dándonos como salida
la media aritmética.
Para el FC2:

Valor1 Es_a

Valor2 resultado

La programación será:

Las instrucciones son sencillamente las operaciones correspondientes a una regla de tres
directa.

Página 102 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Ahora lo que debemos hacer es realizar la llamada desde el bloque de organización OB1.

Podemos transferir los bloques y realizar una tabla de variables, para poder introducir va-
lores y comprobar, las operaciones realizadas en ambos casos.
En este caso vamos a utilizar el simulador, en lugar del autómata, por lo tanto ejecutamos
el PLCSIM , y realizamos una nueva simulación . Podemos fijar la posición para
que el simulador se encuentre siempre visible .
Insertamos marcas, y asignamos a cada una de ellas, la palabra asignada a cada uno de los
números de entrada, y también para la salida de la media aritmética, y abrimos la tabla de
valores con las marcas utilizadas.

Si nos ponemos ONLINE, y forzamos las variables, vemos en el simulador y también en


la tabla de valores, el resultado de la media aritmética, en la marca MW18.

Departamento Eléctrico. AT FORMACIÓN Página 103


EJERCICIOS S7-300
Si añadimos a la tabla de valores las marcas utilizadas para realizar la regla de tres, y las
situamos también en el simulador, al forzar las variables, comprobaremos el resultado de
la operación, en la marca MW26.

Debemos de comentar que estamos operando con números enteros, por lo que si la opera-
ción no es entera, nos devuelve solo la parte entera. Por ejemplo en caso siguiente 200/3,
tiene como cociente 66, que es resultado que obtenemos en la marca MW26.

Podríamos calcular para el caso del cálculo de la media aritmética el resto, añadiendo un
segmento más que nos calcule este valor.
Esta operación se debe realizar con un formato de numero de doble entero, y recordemos
que en nuestro programa la suma de los 4 números de entradas se recogen en una palabra,
concretamente en la MW4, es decir que no podemos utilizar este valor como entrada de la
operación.

Página 104 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Dentro de las instrucciones tenemos una carpeta denominada ―Conver-
sión‖, donde podemos utilizar estas instrucciones para poder realizar
conversiones entre distintos formatos.
En nuestro caso I_DI, nos servirá para convertir nuestro entero a doble
entero.
Si quisiéramos convertir un entero a real, deberemos de realizar 2 con-
versiones, primero se pasa a doble entero (I_DI) y posteriormente a re-
al (DI_R).
Dentro de estas conversiones también tenemos una serie de operacio-
nes, que vamos a comentar:
INV_I / INV_DI. Con esta instrucción se calcula el complemento a 1
del entero ó doble entero del valor de entrada. Recordemos que el
complemento a 1, consiste en invertir el valor de todos los bits.
MW8 = 01000001 10000001 MW10 = 10111110 01111110
NEG_I / NEG_DI / NEG_R. Con esta instrucción se calcula el complemento a 2 del en-
tero, doble entero y valor real del valor de entrada, es decir nos invierte el signo del valor
de entrada.
ROUND. La operación Redondear a entero doble lee el número en coma flotante conte-
nido en el parámetro de entrada IN y convierte este valor en un entero doble redondeán-
dolo al número entero más próximo. El resultado es el componente entero más próximo.
Si el componente fraccionario = x,5 se devuelve el número par (ejemplo: 2,5 →2, 1,5 →
2). Si se produce un desbordamiento, ENO = 0. Si la entrada no es un número en coma
flotante, los bits OV y OS toman el valor ―1", y ENO el valor ―0".
TRUNC. La operación Truncar a entero doble lee el número en coma flotante contenido
en el parámetro de entrada IN y lo convierte en un entero doble (ejemplo: 1,5 → 1). El re-
sultado se emite en el parámetro de salida OUT. En caso de desbordamiento, ENO = 0. Si
la entrada no es un número en coma flotante, los bits OV y OS toman el valor ―1", y ENO
el valor ―0".
CEIL. La operación Redondear número en coma flotante a entero superior lee el número
en coma flotante contenido en el parámetro de entrada IN y convierte este número en un
entero doble (ejemplo: +1,5 → +2; -1,5 → -1). El resultado es entero más pequeño,
mayor o igual al número en coma flotante indicado. El resultado se encuentra en el pará-
metro de salida OUT. En caso de desbordamiento, ENO = 0. Si la entrada no es un núme-
ro en coma flotante, los bits OV y OS toman el valor ―1", y ENO el valor ―0".
FLOOR. La operación Redondear número en coma flotante a entero inferior lee el núme-
ro en coma flotante contenido en el parámetro de entrada IN y convierte este número en
un entero doble (ejemplo: +1,5 → +1; -1,5 → -2). El resultado es el entero más grande,
menor o igual al número en coma flotante indicado. El resultado se encuentra en el pará-
metro de salida OUT. En caso de desbordamiento, ENO = 0. Si la entrada no es un núme-
ro en coma flotante, los bits OV y OS toman el valor ―1", y ENO el valor ―0".
En nuestro ejemplo como hemos dicho anteriormente, convertiremos el entero a doble en-
tero y posteriormente calcularemos el resto de la operación. Así pues añadimos al ejerci-
cio 1, los siguientes segmentos:

Departamento Eléctrico. AT FORMACIÓN Página 105


EJERCICIOS S7-300
En el segmento 5, convertimos el ente-
ro a doble entero que volcamos en la
marca MD30, por lo tanto en esta mar-
ca tenemos la suma de los 4 números
enteros.
En el segmento 6, calculamos el resto,
al dividir la suma por 4.
Para distinguir una constante entera de
la doble entera se realiza con la sintaxis
expresada en la figura.
L#constante
Hemos añadido un último segmento
que nos compara (distinto de) el resto
con la constante 0, de tal forma que si
el resto es distinto de 0, se activa la sa-
lida A4.0.

Podemos comprobar con el simulador los resultados del añadido.

Página 106 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 15. OPERACIONES ARITMÉTICAS CON NÚMEROS EN COMA
FLOTANTE.
Ejercicio 1.
Tenemos 2 dispositivos de presencia situados una distancia de 2 metros, en una cadena de
producción, por donde van circulando una serie de piezas de gran volumen y de longitud
la distancia de los sensores.
Con ellos se desea controlar la velocidad de la cadena de producción, de tal forma que
medimos el tiempo que tarda la pieza desde la activación del primer sensor al segundo, y
si la velocidad es superior a 1m por cada 10 segundos, se activa una señal de alarma, has-
ta que se acuse, a través de un pulsador.
Podemos considerar todas las entradas como contactos normalmente abiertos.
Ejercicio 2.

COMBUSTIBLE PRECIO/LITRO

Gasolinas sin plomo 95 0,941 euro

Gasolina sin plomo 98 1,054 euros

Gasoil 0,871 euros


Simular el funcionamiento de un surtidor de una gasolinera, de tal
forma que introducimos la cantidad de dinero mediante 3 pulsadores y seleccionamos el
tipo de combustible a utilizar cuyo precio es el siguiente:
Al coger la manguera correspondiente, se activa el tipo de combustible (simulado con
pulsador), y al accionar el gatillo de la manguera (simulado con otro pulsador) empeza-
remos a suministrar los litros de combustible que simularemos con un temporizador. Con-
siderar que la velocidad del caudal de combustible es de 80 l/min.

ENTRADAS SALIDAS

BOTÓN DE 10 EUROS E0.0 SALIDA COMBUSTIBLE A4.0

BOTÓN DE 5 EUROS E0.1 LUZ GASOLINA 95 A5.0

BOTÓN DE 1 EURO E0.2 LUZ GASOLINA 98 A5.1

PULSADOR DE ANULAR E0.3 LUZ GASOIL A5.2

PULSADOR GASOLINA 95 E1.0 EXCESO DE DINERO A5.7

PULSADOR GASOLINA 98 E1.1

PULSADOR GASOIL E1.2

PULSADOR MANGUERA E1.3

El valor máximo de combustible a introducir de una vez se establece en un máximo de


110 euros

Departamento Eléctrico. AT FORMACIÓN Página 107


EJERCICIOS S7-300
RESOLUCIÓN.
Coma flotante o punto flotante es un método de representación de números reales que se
puede adaptar al orden de magnitud del valor a representar, usualmente trasladando la
coma decimal —mediante un exponente— hacia la posición de la primera cifra significa-
tiva del valor, es por lo tanto similar a lo que conocemos en sistema decimal, como expre-
sión científica.
2.000.000 = 2.106
De esta forma, con un número dado de dígitos representativos se obtiene mayor precisión
que con la coma fija, debido a que el valor de estos dígitos es siempre significativo sea el
que sea el orden de magnitud del número a representar. Debido a esta adaptación, permite
representar un rango mucho mayor de números (determinado por los valores límite que
puede tomar el exponente).
El estándar de la IEEE para aritmética en coma flotante (IEEE 754) es el estándar más ex-
tendido. IEEE 754 especifica cuatro formatos para la representación de valores en punto
flotante:
 Precisión simple (32 bits),
 Precisión doble (64 bits),
 Precisión simple extendida (≥ 43 bits, no usada normalmente)
 Precisión doble extendida (≥ 79 bits, usualmente implementada con 80 bits).
Sólo los valores de 32 bits son requeridos por el estándar, los otros son opcionales.
Precisión simple 32-bits.
Un número en punto flotante de precisión simple se almacena en una palabra de 32 bits.

S 8 bits - Exponente 23 bits - Mantisa


31 30 29 28 27 26 25 24 23 22 21 20 19 ………………………………… 3 2 1 0

Donde S es el bit de signo para el signo: 0=Positivo; 1=


Negativo.

Nuestros números reales utilizan este tipo de representa-


ción estándar, son por lo tanto números de 32 bits, como
las dobles palabras o dobles enteros. La sintaxis utilizada
es por lo tanto la misma.
En este formato el número de operaciones que se pueden
realizar es muy superior, podemos ver en las carpetas de
instrucciones, una denominada ―números en como flotan-
te‖.
Como podemos ver son las operaciones básicas, y otro tipo
de operaciones científicas, incluidas algunas de carácter
trigonométrico, en estas últimas tener en cuenta el trabajo
en radianes.

Página 108 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Las funciones a utilizar son sencillas, puesto que disponen simplemente de una entrada y
una salida, además de la entrada de habilitación. Por
ejemplo podemos ver la función SQR, que nos cal-
cula el cuadrado de un número. La entrada puede
ser una marca, pero también puede ser una constan-
te en cuyo caso deberemos escribir el número a pe-
sar de que sea entero como 4.0, al aceptar el valor
esta toma la forma representada en la figura.

RESOLUCIÓN.
Ejercicio 1.
Vamos a crear en primer lugar un simbólico con las entradas y salidas a utilizar.

Con los dos primeros segmentos pro-


gramamos una memoria que se activa
con un flanco positivo del detector de
presencia inicial y se resetea con otro
flanco positivo del sensor final.
Para contabilizar el tiempo que tarda
en recorrer la distancia entre ellos que
es de 2 metros, utilizamos un tempori-
zador a la desconexión, que por lo tan-
to estará temporizando mientras la
memoria anterior esta activada, por lo
tanto teóricamente temporiza el tiem-
po que tarda el componente entre los 2
sensores.
El valor del tiempo que hemos colo-
cado es de 50 segundos, muy superior
al tiempo teórico que tiene que tardar.

El temporizador se resetea (poner a cero), cuando se vuelve activar la memoria, aunque


también se puede realizar con el pulsador de acuse, cuando la velocidad sea superior a 0,1
m/seg.

Departamento Eléctrico. AT FORMACIÓN Página 109


EJERCICIOS S7-300
Hay que tener en cuenta que el temporiza-
dor es descendente, por lo tanto para cono-
cer el tiempo transcurrido debemos del
tiempo total el tiempo transcurrido.
Según la base de tiempos restamos a 500,
el tiempo transcurrido que tenemos en la
marca MW20, y el resultado lo guardamos
en MW22.

Para calcular la velocidad debemos dividir el espacio (2 m) entre el tiempo, que nos dará
un número no entero, por lo que debemos trabajar con números reales, por lo tanto en los
segmentos 4 y 5 convertimos el entero en doble entero y luego se convierte a real.

Calculamos ahora la velocidad como


cociente entre el espacio y el tiempo.
Este cálculo solo se realiza una vez
que el objeto haya llegado al final de
su recorrido, es decir cuando la memo-
ria M10.0 este desactivada.
De esta forma el tiempo no va varian-
do según avanza el objeto.
Finalmente activamos una memoria
comparando el valor real de la veloci-
dad con la velocidad máxima estimada
en 0,1 m/seg, si es mayor se activa la
salida de acuse A4.0, que se resetea
con el pulsador de acuse S3.

Este acuse también resetea el temporizador, por de lo contrario el valor de MD58 sigue
manteniendo su valor y al soltar el pulsador S3, la memoria de acuse se volvería activar.

Página 110 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
RESOLUCIÓN.
Ejercicio 2.
Para la realización del ejercicio vamos a considerar las siguientes instrucciones de uso:

Valor máximo de de dinero 110 Euros.


En caso de rebasar este valor presionar el botón de ANULAR

Para echar combustible realizar las siguientes operaciones:


1. Sin descolgar la manguera introducir la cuantía mediante los botones de 10,
5 y 1 euro.
2. En caso de error, pulsar ANULAR y volver a introducir la cantidad.
3. Una vez introducida la cantidad descolgar la manguera.
4. Introducir la manguera en el depósito, pulsar el gatillo de la manguera. Una
vez finalizado sacar la manguera y volverla a su posición.

La tabla de símbolos de entradas y salidas, se corresponde con la siguiente figura. En ella


podemos ver que el programa se desarrolla en 4 bloques, y que disponemos de un bloque
de datos, para los valores variables, como pueden ser los precios de los combustibles y el
caudal del dispensador.

El bloque de datos es:

Insertamos el primer bloque función, en el cual programaremos el control para la intro-


ducción de dinero, para el consumo de combustible.
En el primer segmento utilizaremos un contador ascendente para contar el número de ve-
ces que se pulsa el botón de 10 euros, la cual se puede resetear por el pulsador de ANU-
LAR, o bien al haber acabado el suministro de combustible y también cuando se supere el
valor de 110 euros que se tiene por valor máximo.

Departamento Eléctrico. AT FORMACIÓN Página 111


EJERCICIOS S7-300

Procedemos de la misma forma para las otras cantidades:

Página 112 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
A continuación en los siguientes 3 segmentos se transforman las entradas de las pulsacio-
nes de los botones en la cantidad representativa.

Mediante una operación de producto de ente-


ros se multiplica el número de entradas reci-
bidas en el contador, por el valor de la mone-
da correspondiente.
En los siguientes segmentos, sumaremos las
salidas de estas operaciones, obteniendo de
esta forma el valor del dinero que pensamos
echar de cualquiera de los combustibles que
utilicemos.

En el siguiente segmento vamos a crear la marca que nos pone a cero los contadores en el
caso de que el cliente introduzca un valor monetario superior a 110 euros.

Simplemente a través de una memoria que se


activa si el valor de MW14 (Total del dinero)
es mayor de 110 euros.
Dicha memoria se resetea con el botón de
ANULAR, mientras tanto no será posible
marcar una nueva demanda.

Departamento Eléctrico. AT FORMACIÓN Página 113


EJERCICIOS S7-300
El valor total del di-
nero marcado, será
representativo del
número de litros de
combustible que se
quiere echar, en don-
de al ser el precio de
este un número no
entero, deberemos de
operar con números
reales, por lo tanto en
los siguientes seg-
mentos convertimos
el valor en doble entero y posteriormente en real.
En resumen en este bloque obtenemos MD20 como valor del DINERO MARCADO.

En el siguiente Bloque FC2 se va a programar el número de litros, que se echaran en el


vehículo.

Se efectúa a través del pulsador corres-


pondiente, activando una memoria que se
resetea cuando ha finalizado el proceso
total incluido el suministro.
En caso de error se deberá de ANULAR
la operación y empezar de nuevo.
Una vez pulsada una elección no se
podrá marcar otra, será necesario ANU-
LAR la operación, y empezar de nuevo.
Los tres segmento son idénticos, los si-
guiente podemos verlos en KOP y AWL
como se hizo en el anterior bloque con la
entrada de dinero.

Página 114 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

A continuación se calcula el número de litros de cada unos de los combustibles, cada vez
que se realice la selección de cada uno de ellos.

La operación se realiza si se encuentra ac-


tivada la selección (M100.0), y se divide
el valor real MD20 de la entrada de dine-
ro, entre el valor correspondiente del pre-
cio de la gasolina que se encuentra alma-
cenado en la dirección 0, del DB1, es de-
cir DB1.DBD0.
Las 3 operaciones son idénticas, como
puede verse en las siguientes figuras.

Departamento Eléctrico. AT FORMACIÓN Página 115


EJERCICIOS S7-300

Por último vamos a guardar estos valores en una única dirección, para luego poder seguir
operando con él.

En función de la selección realizada con la


función MOVE guardamos el valor calculado
de litros de gasolina 95, 98 y diesel en la mar-
ca MD36.
En el último segmento reseteamos esta marca
una vez acabado el temporizador, que simula
el funcionamiento del surtidor.

En resumen en este bloque obtenemos MD36 como valor de LITROS DE COM-


BUSTIBLE.
En el tercer bloque FC3, vamos a programar el cálculo del número de segundos de fun-
cionamiento del dispensador de combustible, partiendo inicialmente de una velocidad de
80 l/seg. que se encuentra guardado también el DB1. Para calcular el número de segun-
dos aplicamos un cálculo de regla de tres, por lo que simplemente se debe multiplicar el
número de litros por 60 seg. y dividir por el caudal del surtidor.

Página 116 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
MD44 numero de segundos de funcionamiento del surtidor.

Para poder trabajar con el valor del


tiempo apreciando un decimal, y tenien-
do en cuenta que este valor debe ser un
numero entero en código BCD, el valor
calculado se multiplica inicialmente por
10, guardándolo en la marca MD48.

En los siguientes segmentos se realizan las


siguientes operaciones:
Segmento 4. Se convierte el valor real cal-
culado a doble entero, redondeando el
número despreciando la parte fraccionaria.
Segmento 5. Se convierte el doble entero en
entero. No se produce ningún problema,
porque este número con los precios actuales
del combustible, nunca será superior a 990,
al estar limitada la entrada de dinero a 110
euros.
Segmento 6. Se convierte el cálculo ante-
rior a código BCD.
Recordemos que formato tiene el valor de
tiempo de un temporizador en S7.
De los bits 0 a 11 en código BCD se guarda el valor del tiempo, que podrá tener como
máximo el valor de 999. Valor que nosotros tenemos guardado en la posición MW58.

Los bits 12 y 13 se utilizan para identificar el valor de la base de tiempos, que en nuestro
caso es 01 al trabajar en decimas de segundo.
Para modificar estos bits utilizaremos la instrucción WOR_W, en donde al valor MW58
le sumamos en la entrada IN2 el valor 2#0001000000000000. Recordemos que esta ope-

Departamento Eléctrico. AT FORMACIÓN Página 117


EJERCICIOS S7-300
ración realiza una operación O bit a bit, de tal forma que los 12 primeros bits siguen man-
teniendo su valor, y de lo bits restantes cambiamos el valor de bit 12.

En el último segmento in-


troducimos este valor en un
temporizador tipo a la co-
nexión (S_EVEREZ) que se
activa a través de una me-
moria con el pulsador de la
manguera, y que se resetea
cuando finalice el tempori-
zador. El temporizador no
es necesario resetear, por-
que al desactivar el set, el
temporizador se desactiva.
En el último bloque FC4 se
programan las salidas de los acuses de selec-
ción.
En primer lugar se programa la salida de com-
bustible que estará activada si hemos pulsado
el pulsador de la manguera y el temporizador
no se encuentra activado.
Cuando el temporizador T1, finalice se desac-
tiva la memoria M101.0 y el propio temporiza-
dor.
En los tres siguientes segmentos se programan las luces de acuse del producto marcado.

La activación depende de las memorias


programadas anteriormente a través de los
pulsadores correspondientes, y que se des-

Página 118 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
activan al finalizar el temporizador T1 ó mediante el pulsador de ANULAR.

En el último segmento se programa la sa-


lida de aviso de exceso de dinero, que se
activa con la marca M101.2 programada
anteriormente, la cual se resetea con el
pulsador de ANULAR.

En estas figuras podemos ver los paneles


de entradas y salidas de las que disponen
los surtidores.
Las entradas de pulsador de tipo de com-
bustible se activan automáticamente al
descolgar la manguera.

Departamento Eléctrico. AT FORMACIÓN Página 119


EJERCICIOS S7-300

Página 120 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 16. MÓDULOS DE ORGANIZACIÓN. MÓDULO DE ARRANQUE
OB100.
Ejercicio 1.
Realizar un programa que tenga el siguiente funcionamiento:
 Mediante un OB100, hacer que después de un corte de tensión, se active la marca
M200.0.
 Dicha marca, en el bloque de programa, pondrá en funcionamiento un temporiza-
dor que al cabo de 20 segundos provoque la desconexión de esta marca.
 Mientras funcione esta marca, no se podrá arrancar el proceso (una salida) y
además tendremos una señalización luminosa que nos indicara que ha vuelto la
tensión.
Ejercicio 2.
Deseamos controlar una cerradura electrónica, con las siguientes condiciones de funcio-
namiento:

 Para poder abrir una cerradura debemos introducir un valor numérico en la marca
MW0, (1234) el cual será introducido por un terminal de operador o a través de un
SCADA.
 Si al accionar el pulsador E0.0, una vez introducida la clave, si esta es correcta la
cerradura se abrirá durante 5 segundos y se borrara la clave en la marca MW0.
 Si nos equivocamos 3 veces, se bloqueara la cerradura y funcionara una sirena de
forma intermitente hasta que la paremos accionando el pulsador E0.0 habiendo co-
locado antes en la marca MW0 el valor 9999.
 Programar en el OB100 la carga del valor de preselección 3 en el contador.
 Hacer el programa necesario para que una vez marque algún fallo se dé un tiempo
de 15 segundos para abrir la cerradura, en caso de no hacerlo, se debe de activar la
alarma.

Departamento Eléctrico. AT FORMACIÓN Página 121


EJERCICIOS S7-300
RESOLUCIÓN.
Vamos a describir en las siguientes tablas cuales son las principales características de los
distintos módulos OB, son:

OB1 OB10 a OB17

 Es un módulo que se ejecuta cíclicamente  Realiza una interrupción horaria.


 El OB1 se ejecuta en cada scan.  Empieza en un momento programado
 Es el que tiene la prioridad más baja  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

OB20 a OB23

 Realiza una interrupción de retardo.


 Se ejecuta Al cabo de un tiempo de llamar al OB.

OB30 a OB38

Son OB que se ejecutan cada cierto tiempo prefijado y con prioridades diferentes

OB40 a OB47

Son interrupciones de proceso. Se activa cuando en un proceso un registro ha superado unos lími-
tes máximos o mínimos admisibles. (Entradas analógicas, contadores de alta velocidad etc...)

Página 122 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

OB80 a OB87 Error Asíncrono.

 OB80 Error de tiempo (Tiempo de ciclo  OB84 Avería de la CPU. Error de la inter-
excedido).Si no está programado y detecta face MPI o de la periferia descentralizada.
el error, el PLC pasa a STOP 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  OB85 Evento de arranque para un OB no
cargado. Si no está programado y detecta
 OB82 Rotura de hilo de un módulo que
el error, el PLC pasa a STOP.
tenga capacidad de diagnostico. Si no está
programado y detecta el error, el PLC pasa  OB86 Detección de fallo en un bastidor. Si
a STOP 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  OB87 Detección de fallo en comunicación.
detecta el error, el PLC pasa a STOP

OB100 a 0B102

OB`s de modo de arranque (solo puede estar activado uno de ellos). Se selecciona en Admi-
nistrador→Hardware→CPU (picar dos veces) →pestaña ‗arranque‘.

OB100 OB101 Rearranque. (Solo en S7-400)


 Rearranque completo. (Arranque en Ca-  Mantiene el estado de los elementos que ten-
liente) ga con memoria.
 Mantiene el estado de los elementos que  Se ejecuta al pasar la CPU de STOP a RUN.
tenga con memoria. Primero lee el OB101 y después sigue leyendo
 Se ejecuta al pasar la CPU de STOP a en el punto donde dejo de leer al pasar al estado
RUN. STOP.
Primero lee el OB100 y después el OB1
(empezando por la primera instrucción).

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).

Departamento Eléctrico. AT FORMACIÓN Página 123


EJERCICIOS S7-300

OB121 y OB122 OB`s de error

OB121 OB122
 Error de ejecución de programa.  Error al intentar acceder a un módulo de datos
(entradas, salidas, etc...).
 Detecta errores de programación.
 Si no está programado y detecta el error,  Si no está programado y detecta el error, el PLC
pasa a STOP.
el PLC pasa a STOP.

MÓDULOS DE ARRANQUE.
 Rearranque (no en S7-300 y S7-400H)
 Rearranque completo
 Arranque en frío
En la tabla siguiente se indica qué OB llama al sistema operativo durante el arranque.

Tipo de arranque OB correspondiente

Rearranque OB 101

Rearranque completo OB 100

Arranque en frío OB 102

Eventos de arranque de los OBs de arranque


La CPU realiza un arranque en los siguientes casos:
 Tras CONEXIÓN.
 Al cambiar el selector de modos de operación de STOP a "RUN"/"RUN-P".
 Por petición por una función de comunicación, tras sincronización en modo multi-
procesador o en un sistema H tras acoplar (sólo en CPU de reserva).
El OB de arranque (OB 100, OB 101 u OB 102) se invoca dependiendo del evento de
arranque, de la CPU existente y de los parámetros ajustados en la misma.
Programa de arranque
Las condiciones para el comportamiento durante el arranque (valores de inicialización pa-
ra RUN, valores de arranque para módulos de periferia) de la CPU se pueden definir de-
positando el programa para el arranque en el bloque de organización OB 100 para el re-
arranque completo, el OB 101 para el rearranque u OB 102 para el arranque en frío.
El programa de arranque puede tener una longitud discrecional, su ejecución no tiene
límite de tiempo y la vigilancia del tiempo de ciclo no está activa. La ejecución controla-
da por tiempo o por alarma no es posible en el programa de arranque. En el arranque, to-
das las salidas digitales tienen el estado de señal 0.

Página 124 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Modo de arranque tras arranque manual
En las CPUs S7-300 sólo se puede efectuar un rearranque completo manual o un arranque
en frío (sólo CPU 318-2).
Las CPUs S7-400 permiten efectuar un rearranque manual a través del selector de modos
de operación y del selector de modos de arranque (CRST/WRST), siempre y cuando se
haya parametrizado correspondientemente con STEP 7. El rearranque completo manual
también es posible sin parametrización previa.
Modo de arranque tras arranque automático
En las CPUs S7-300 sólo es posible efectuar un rearranque completo tras CONEXIÓN.
En las CPUs S7-400 se puede definir si, tras CONEXIÓN, el arranque automático debe
provocar un rearranque completo o un rearranque normal.
Borrar la imagen de proceso
Durante el rearranque de una CPU S7-400 se borra, por defecto, la imagen de proceso de
las salidas tras la ejecución del ciclo residual. El borrado de la imagen de proceso se pue-
de inhibir si se desea que el programa de usuario continúe utilizando los valores que eran
actuales antes de dicho rearranque.
Vigilancia de la configuración teórica/real de los módulos
A través de la parametrización se puede definir si, antes de efectuar el arranque, se debe
comprobar si todos los módulos listados en la tabla de configuración están insertados re-
almente y si el tipo de módulo es correcto. Si la vigilancia de módulos está activa, el
arranque no se ejecuta en caso que se detecte una diferencia entre las configuraciones teó-
rica y real.
Tiempos de vigilancia
Para garantizar un arranque sin errores del sistema de automatización, se han de parame-
trizar los siguientes tiempos de vigilancia:
 El tiempo máximo admisible para la transmisión de parámetros a los módulos
 El tiempo máximo admisible para el mensaje "ready" de los módulos tras CO-
NEXIÓN
 En las CPUs S7-400, el tiempo máximo de interrupción en el cual puede ejecutar-
se aún un rearranque.
Transcurridos los tiempos de vigilancia, la CPU pasa a STOP o sólo es posible efectuar
un rearranque completo.

Departamento Eléctrico. AT FORMACIÓN Página 125


EJERCICIOS S7-300
RESOLUCIÓN.
Ejercicio 1.
Recordemos de lo leído anteriormente, los siguientes puntos fundamentales:
1. El OB1, se ejecuta 1 vez durante 1 scan cuando el autómata pasa de STOP a RUN.
2. El OB100 se ejecuta antes que el OB1.
3. Al OB100 NO hay que llamarlo desde ningún otro modulo, pues se ejecuta de
manera automática, pero recordemos que debemos cargarlo en la CPU.
Podemos empezar por lo tanto la ejecución del ejercicio insertando un nuevo objeto, blo-
que de organización, asignando a este bloque el término OB100.
En el segmento 1, escribimos la siguiente instrucción:

De esta forma simplemente se consigue que en el momento de arrancar el PLC, se conec-


te la marca M200.0 de manera permanente, para que después se pueda desconectar en
función del programa.
El programa lo realizamos en un bloque FC1, que insertamos a continuación.

En los 2 primeros segmentos se programa


que al haberse ejecuta en primer lugar el
OB100, la marca M200.0 estará activada
(valor 1) y por lo tanto nos arrancara el
temporizador T0, que al contabilizar los 20
segundos del temporizador, nos resetea di-
cha marca.

En el segmento 3 programamos que mien-


tras dicha marca este activada no podrá ser
activado el proceso (que representamos me-
diante la salida A4.0), mediante el pulsador
de marcha E0.0.
Dicho proceso se puede resetear con el pul-
sador de paro (NC) E1.0.

Página 126 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
En el segmento último tenemos la señalización representada por la salida A4.7, que se en-
contrara activada de forma intermitente (a través de la marca de ciclo M255.3), cuando
vuelva la tensión, o cuan-
do el autómata pase de
STOP a RUN.
Dicha marca estará tam-
bién activada cuando el
proceso este en funcio-
namiento, pero en este ca-
so no lo hará en forma in-
termitente.
Podemos realizar la comprobación utilizando el simulador, para ello podemos insertar los
módulos de entradas y salidas, así como el modulo de marcas y el temporizador.

Cargamos los 3 bloques y los datos del sistema. Si pasamos a continuación la CPU a
RUN ó RUN-P, podemos ver como automáticamente la marca M200.0 se activa y tam-
bién el temporizador, y que cuando este llega a 0, la marca M200.0 se desactiva.
Si durante este tiempo intentamos activar el proceso E0.0, este no se activa, haciéndolo
una vez que se hubiera desactivado M200.0.
Las salidas se activaran según lo programado.
Cada vez que pasemos el autómata de STOP a RUN ó RUN-P, veremos que el proceso se
repite.
También podemos ver el funcionamiento cargando el programa en el autómata y compro-
bando que con el autómata en RUN, el proceso se realiza de la misma forma al quitar ten-
sión al autómata.

Departamento Eléctrico. AT FORMACIÓN Página 127


EJERCICIOS S7-300
RESOLUCIÓN.
Ejercicio 2.
Utilizamos en este caso el bloque de organización para poner el contador Z1 al valor de
número de veces que se puede introducir la clave que hemos fijado en 3, para ello utili-
zamos el propio contador Z1. Tener en cuenta que el valor de Z1 es 0 cuando el contador
tiene el valor de 0, de lo contrario tiene el valor de 1.

De esta forma cuando se cargue el programa el


contador se pondrá a 3, y si se produce un corte de
tensión como el contador no se encuentre a 0, sigue
manteniendo el valor que tenia.
Solo será posible volver actualizar el contador a
través del terminal de operador.
La programación de la apertura de la cerradura la
efectuamos en el bloque FC1 insertado a continua-
ción.

En el primer segmento se progra-


ma que la cerradura se activa si la
clave es 1234, siempre que el con-
tador Z1 tenga valor 1 (siempre
que el valor del contador sea dis-
tinto de 0) y activemos el pulsador
de aceptación E0.0.
Dicha salida queda memorizada
con un SET, y esta memoria nos
activa un temporizador a la des-
conexión (SE) durante un tiempo
de 5 segundos, en donde una vez
temporizado, este temporizador T0, nos resetea la salida A4.0, y nos borra la marca MW0
con una instrucción MOVE.

En la instrucción MOVE cuando el temporizador toma el valor 1, se realiza la transferen-


cia y la salida ENO se activa resteando la salida A4.0.
Con estos 3 segmentos tendríamos programado el funcionamiento normal, es decir que la
clave introducida sea la correcta.

Página 128 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Si se produce una entrada incorrecta de clave activamos una marca M50.3, que utilizare-
mos para provocar las distintas consecuencias de este error.
En primer lugar lo que se tiene que producir es que en el contador se descuente esta en-
trada errónea.
Para ello utilizamos el contador de decremento (ZR) con asignación de Z1, que nos des-
cuenta una unidad cada vez que se cometa un error.

Esta marca también nos activa una


memoria que nos arranca una tempo-
rización de 15 segundos, de tal forma
que si durante este tiempo no introdu-
cimos nuevamente la clave correcta
nos dará una señal de alarma.

Si se introduce la clave correcta la memoria se resetea y el temporizador se desactiva.


También se tiene en cuenta que si se agotan los 3 intentos, esta memoria también se debe
de resetear, a través del terminal del operador al introducir la clave de desbloque de la ce-
rradura (9999).

Departamento Eléctrico. AT FORMACIÓN Página 129


EJERCICIOS S7-300
Con el siguiente segmento ponemos el contador nuevamente en condiciones iníciales de 3
intentos de introducción de clave, que se produce en 2 casos:
1. Cuando se activa la cerradura antes de que se hubieran producido 3 intentos.
2. También cuando a través del panel de operador se introduce la clave de desblo-
queo de la cerradura. Esta entrada solo se puede producir cuando estén agotados
los 3 intentos de introducción de clave.
Por último activamos la salida de alarma, que se produce cuando se han agotado los 3 in-
tentos, ó cuando después de haber cometido un error han transcurrido 15 segundos sin
que hubiéramos introducido de nuevo, en este caso la clave correcta.

Cargamos todos los bloques a la CPU, y realizamos las pruebas pertinentes.

Podemos hacer las pruebas mediante el simulador, insertando los módulos de la figura,
con lo que se pueden hacer todas las pruebas precisas, que el alumno quiera practicar.

Página 130 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 17. PROGRAMACIÓN DE UN TEMPORIZADOR CON PRESE-
LECCIÓN VARIABLE Y BASE DE TIEMPOS FIJA, CON CONTROL DE UN
CONTADOR DE TIEMPOS. OB121 ERROR DE PROGRAMACIÓN.
Se desea controlar el número de horas de funcionamiento de un proceso, teniendo en
cuenta que mediante un contador el número máximo con el que se puede trabajar es de
999, vamos a desarrollar un contador de tiempos mediante comparadores.

Las condiciones las vamos a plantear mediante la activación de una salida A4.0, que re-
presentara por ejemplo un proceso que se activa con un pulsador de marcha NA, y se des-
activa con un pulsador de paro NC.

 Por causas de funcionamiento del proceso la activación de la salida se encuentra


temporizada a la conexión desde un panel de operador a través de una palabra
MW2, que se introduce en formato de número entero.
 Este tiempo es variable y puede estar comprendido entre 1 segundo y 16 minutos
39 segundos.
 Al activar el pulsador de marcha, el proceso empezara a funcionar con retardo del
tiempo marcado.
o Se activara una salida intermitente, mientras el proceso esta temporizando.
o La salida anterior dejara de ser intermitente en el momento en que el pro-
ceso este en funcionamiento.
 Cuando el motor lleve un número de horas igual a 5000, se activara una alarma
A4.7.
 Comprobar que sucede cuando a la palabra MW2, se le da un valor mayor de 999.
 Se puede realizar algún tipo de instrucción u operación para evitar lo sucedido.

Departamento Eléctrico. AT FORMACIÓN Página 131


EJERCICIOS S7-300
RESOLUCIÓN.

En primer lugar vamos a insertar un bloque FC1, donde vamos a programar la parte co-
rrespondiente a un temporizador con tiempo variable y base de tiempos fija.
La base de tiempos fija recordemos que se controla con 2 bits, que pueden tener por valo-
res de 0 a 3. En función de estos valores el tiempo queda definido, con los siguientes va-
lores:

VALOR DE BIT 0 a 11 en BCD


MULT BIT 13 BIT 12 RANGO
VALOR MIN. VALOR MAX.

0,01 seg 0 0 1 999 De 0,01 a 9,99 seg

0,1 seg 0 1 1 999 De 0,1 a 99,9 seg

1 seg 1 0 1 999 De 1 a 999 seg

10 seg 1 1 1 999 De 10 a 9990 seg

En nuestro caso el valor de la temporización debe estar comprendida entre 1 y 16‘39‖ ó lo


que es lo mismo 999 seg. por lo que nuestra base de tiempos es 2, y el valor del tiempo de
la marca MW10 estará comprendido entre 0 y 999 en código BCD.
En el primer segmento se activa una
memoria con el pulsador de marcha
(NA), y se resetea con el pulsador de
paro (NC).
Esta memoria la utilizaremos para la
activación del proceso, en las condi-
ciones que se han establecido.
Al activar el pulsador de marcha, en el siguien-
te segmento se convierte el valor entero intro-
ducido desde el panel de operador en MW2 a
MW0.
A continuación se realiza una operación O de
bits con la palabra MW0, que contiene el valor
del tiempo a temporizar, en código BCD, y con valor comprendido entre 1 y 999.
A este valor le sumamos el valor
2#0010 0000 0000 0000
(W#16#2000), de esta forma los
12 primeros bits correspondien-
tes al valor del tiempo en BCD,
siguen teniendo el mismo valor y
la base de tiempos de los bits 12
y 13 toman el valor de 2.
Tener en cuenta que en una suma binaria de dos bits, si el segundo de ellos es cero, el re-
sultado es igual al primero.

Página 132 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Por lo tanto podemos decir que en MW4, tenemos el valor de tiempo y la base de tiempos
fija con la que estamos trabajando.

En el segmento 4 realizamos la temporización a la conexión, que se activa con la marcha,


y siempre que el valor introducido sea distinto de cero, de esta forma tratamos de evitar
que el proceso entre de forma inmediata, por olvido del operador de introducir el valor de
retardo.
Una vez acabada la temporización el tempo-
rizador se activa y se mantiene activado,
hasta que pulsemos el pulsador de paro, en
cuyo momento se borra la entrada del tiem-
po en MW2 y se resetea la memoria, por lo
que el temporizador se pone a 0.
En el último segmento programamos la salida, con las siguientes funciones:

Si la salida A4.0 se encuentra activada en forma intermitente, será indicación de que el


proceso de arranque se encuentra en marcha.
 Entrada de tiempo distinto de 0.
 M50.0 activado, por el pulsador de marcha.
 T0, con valor 0, no acabo la temporización.
 M255.3 bit de ciclo que provoca la intermitencia.
Si la salida A4.0 se encuentra activada sin intermitencia, es indicativo de que el proceso
está en funcionamiento, circunstancia que se da cuando el temporizador esta activado.
Insertamos un segundo bloque FC2, donde se programara el control de un contador de
tiempo, para indicarnos que el proceso está en funcionamiento durante un tiempo de 5000
horas.

Departamento Eléctrico. AT FORMACIÓN Página 133


EJERCICIOS S7-300

Si a la palabra MW2 se le da un valor superior a 999, lógicamente se debe de dar algún


tipo de error, puesto que el valor del tiempo como hemos dicho dispone únicamente de 3
dígitos codificados de código BCD, por lo tanto al suministrar 4 dígitos el PLC nos da
un ERROR y se va STOP.
Podemos hacer la prueba con el simulador. En la siguiente pantalla podemos ver los
módulos necesarios para realizar las comprobaciones necesarias.

Si realizamos la prueba cargando a un autómata, crearemos una tabla de variables, para


poder introducir el valor de MW2 y forzar el valor.

Si pasamos el autómata a STOP y volvemos a ponerlo en RUN ó RUN-P, podemos vol-


ver a introducir un valor entre 1 y 999 y el programa vuelve a funcionar correctamente.
Una de las funciones que podemos realizar para evitar este problema es enviar al PLC el
OB121 aunque sea en vacio, el PLC no se irá a STOP aunque indicara con el leed SF
que hay un error.

Página 134 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Como podemos ver en la figura el valor de MW2 asume el valor de 1000, pero el tempo-
rizador no asume el valor introducido, como se puede ver el autómata no pasa a STOP si-
gue en RUN, por lo tanto si introducimos un valor aceptable sigue en funcionamiento.
Podemos comprobar que la salida A4.0 funciona de forma intermitente al cumplirse las
condiciones de ejecución, lo que nos demuestra por lo tanto que el programa sigue en
funcionamiento.
Vamos a realizar ahora la parte del programa correspondiente al contador de tiempos, pa-
ra lo cual insertamos un nuevo bloque FC2.
Empezaremos por construir un contador de segundos, para ello utilizaremos la marca de
ciclo M255.5 con frecuencia 1 segundo.
Recordemos que el proceso funciona con T0, por lo tanto cada segundo se activa la entra-
da de habilitación, y por lo tanto MW10 se incrementa en 1 unidad cada segundo, por lo
tanto podemos decir que nos contabiliza el número de segundos de funcionamiento del
proceso.

Para contabilizar el número de horas simplemente tendremos en cuenta que cada 3.600
segundos aumentamos en 1 unidad la marca MW12 y ponemos la marca MW10 a 0.
De esta forma podemos decir que la marca MW12 nos contabiliza el número de horas en
funcionamiento.

Departamento Eléctrico. AT FORMACIÓN Página 135


EJERCICIOS S7-300

Cuando esta marca MW12 sea


igual o mayor a 5.000 horas se
activa la salida de alarma de
tiempo, de forma intermitente.
Dicha alarma seguirá en fun-
cionamiento hasta que no se
anule el funcionamiento del
proceso, en cuyo momento se
podría realizar la revisión del
sistema, y al realizar nueva-
mente la marcha del proceso deberemos volver a contabilizar 5.000 horas.
Por lo tanto en el últi-
mo segmento con el
pulsador de paro po-
nemos a 0, las marcas
que nos contabilizan el
número de segundos y
de horas.
Cargaremos en el OB1,
los bloques FC1 y FC2
y transferimos todos los
bloques (incluido el
OB121), así como los
datos del sistema.
Recordemos crear la marca de ciclo en la CPU del hardware, para poder obtener todas las
marcas de frecuencia con las que se trabajan.
Para poder realizar las comprobaciones de funcionamiento correcto de todas las partes del
programa, vamos a convertir las 5.000 horas en 1 minuto.
Sera necesario cambiar por lo tanto los valores en el bloque FC2, según vemos en la si-
guiente figura
Cada 6 segundos MW12 aumenta en una unidad, por lo tanto al llegar a 10 han transcu-
rrido 60 segundos.

Página 136 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

En la siguiente figura se muestra el FC2 y la tabla de variables OnLine, donde se puede


ver cómo van cambiando los valores del tiempo de las marcas de contaje, hasta llegar a 1
minuto, en donde se activara la alarma de tiempo.

Departamento Eléctrico. AT FORMACIÓN Página 137


EJERCICIOS S7-300

PANEL
DE
TRABAJO

En el panel de entradas tenemos:


 Pulsador de marcha (NA).
 Pulsador de paro (NC).
 Panel de operador para entrada del tiempo de retardo.
En el panel de salidas se tiene:
 Lámpara de proceso.
o Cuando esta intermitente el proceso esta arrancado.
o Cuando esta fija el proceso está funcionando.
 Lámpara de alarma de tiempo parpadea cuando sea cumplido el tiempo máximo
de funcionamiento.

Página 138 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 18. TRATAMIENTO DE SEÑALES ANALÓGICAS. FUNCIÓN
SCALE Y UNSCALE.

Ejercicio 1.
Realizar un contador analógico de 0 a 27 pasos
que se visualice en el voltímetro de 0 10V.

Realizar las siguientes variaciones sobre lo pro-


gramado.
1. Se pretenderá en este caso que la salida
del voltímetro alcance inicialmente los
10 voltios y esta tensión disminuya al
valor de 0 voltios en 27 pasos, repitién-
dose nuevamente el ciclo.
Utilizaremos un temporizador a la conexión con un tiempo de 27 segundos, teniendo
en cuenta las siguientes consideraciones:
a. Los temporizadores son descendentes, por cuyo motivo, el valor de su sa-
lida empieza en los 27 segundos.
b. Teniendo en cuenta el formato de su base de tiempos, el valor entero que
se maneja es en este caso 270, por lo que si queremos que el descenso se
produzca en un tiempo de 27 segundos, deberemos dividir por 10 dicha sa-
lida.
2. Conseguir que la tensión sea 5 Voltios en lugar de los 10 V, manteniendo cons-
tante los pasos en los que se obtiene la tensión.

Ejercicio 2:
Onda ―diente de sierra‖
Simular una salida analógica en
diente de sierra, pero utilizando
instrucciones digitales (no entradas
analógicas).

Departamento Eléctrico. AT FORMACIÓN Página 139


EJERCICIOS S7-300
RESOLUCIÓN.

DIRECCIONAMIENTO DE LAS SEÑALES ANALÓGICAS.

La dirección depende de la posición de los módulos analógicos en los slots de configura-


ción del hardware del equipo. Se pueden posicionar como sabemos a partir de la posición
4, siendo sus direcciones las expresadas en la siguiente tabla:

Slot 4 Slot 5 Slot 6 Slot 7 Slot 8


256 272 288 304 Se incrementa en 16
En nuestro caso disponemos en el slot 6, de un modulo con 4 entradas analógicas y 2 sali-
das analógicas de 8 bits, cuyas direcciones son:

Dirección de entrada 288…295

Dirección de salida 288…291

Como se ve se tienen las mismas direcciones iníciales para los canales de entrada y salida
analógicos.

En el modulo de formación se tienen cableadas las entradas y salidas, que tienen que ser
palabras (16 bits).

EW288, se encuentra cableado el potenciómetro.

EW 290,292 y 294 son el resto de las entradas situadas debajo de la anterior.

AW288, cableada al voltímetro de 0 a 10V. También se dispone de esta salida cableada


inferiormente junto con la AW290.

TRATAMIENTO DE SEÑALES ANALÓGICAS.

Para el tratamiento de las señales analógicas se dispone de 2 funciones que se encuentran


en:

LIBRERÍAS → STANDARD LIBRARY→TI-S7CONVERTING BLOKS

 FUNCIÓN SCALE FC105. ESCALAR UNA ENTRADA ANALÓGICA.


 FUNCIÓN UNSCALE FC106. DESESCALAR UNA SALIDA ANALÓGICA.

Para su explicación vamos a crear un proyecto (Analógicas), en donde insertaremos estas


funciones para ver su funcionamiento.

FUNCIÓN SCALE

Creado el proyecto, insertamos el bloque Función FC1. En el primer segmento insertamos


la función SCALE que sirve para escalar el valor de una entrada analógica entre dos valo-
res (máximo y mínimo), con los parámetros indicados en la figura, en donde a continua-
ción indicamos el significado de cada uno de los parámetros:

Página 140 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Cuando tengamos un 1 se ejecuta la función. Si hay un 0, la


EN
función es saltada (no se ejecuta).Por defecto vale 1.

Valor de entrada (número de entrada analógica). Formato en-


IN
tero 16 bits INT.

Valor máximo deseado de salida (OUT). Número REAL,


HI_LIM
doble palabra o constante.

Valor mínimo deseado de salida (OUT). Número REAL, do-


LOW_LIM
ble palabra o constante.

Si vale 0 (trabajamos con valores entre 0 y 27648). Entrada


analógica de 0 a 10 V. Si vale 1 (trabajamos con valores en-
BIPOLAR
tre –27648 y +27648) Entrada analógica de valor de –10V a
+10 V. Por defecto vale 0.

Registro de error. Vale W#16#0000 si el escalado se ha


RET_VALUE hecho correctamente. Vale W#16#0008 si IN sale de los li-
mites máximo o mínimo.

Valor de salida escalado entre el valor máximo y mínimo.


OUT
Formato REAL.

Vale 0 si el valor de IN es superior o inferior al límite (-


27648 o + 27648). En este caso, además en OUT sale el va-
ENO
lor máximo o el mínimo según se rebase en positivo o en ne-
gativo
En este caso, el ejemplo podría consistir en que se quiere controlar el valor de temperatu-
ra de una sonda que da 0 Voltios a 0ºC y 10 Voltios a 100ºC y queremos tener en MD10
el valor real de esta temperatura.

Departamento Eléctrico. AT FORMACIÓN Página 141


EJERCICIOS S7-300

SONDA DE TEMPERATURA RESULTADO ESCALADO

Si activamos la entrada E0.0 (poner a 1),


podemos comprobar el funcionamiento bi-
polar.

FUNCIÓN UNSCALE

Insertamos ahora un bloque FC2, en cual


vamos a insertar la función UNSCALE
que sirve para desescalar el valor (máximo
y mínimo) de un registro sobre una salida
analógica, con los parámetros indicados en
la figura, en donde a continuación indica-
mos el significado de cada uno de los
parámetros:

Página 142 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Cuando tengamos un 1 se ejecuta la función. Si hay un 0, la


EN
función es saltada. Por defecto vale 1.

IN Valor de entrada .Registro en formato REAL 32 bits.

Valor máximo deseado del valor de entrada (IN). Número RE-


HI_LIM
AL, doble palabra o constante

Valor mínimo deseado del valor de entrada (IN). Número RE-


LOW_LIM
AL, doble palabra o constante

Si vale 0, daremos valores de salida entre 0 y 27648). Salida


analógica de 0 a 10 V.
BIPOLAR
Si vale 1, daremos valores de salida entre –27648 y +27648)
.Salida analógica de –10V a +10 V. Por defecto vale 0.

Registro de error. Vale W#16#0000 si el escalado se ha hecho


RET_VALUE correctamente.
Vale W#16#0008 si IN sale de los limites máximo o mínimo.

OUT Valor de salida escalado. Formato INT 16 bits.

Vale 0 si el valor de IN es superior al límite inferior o al supe-


rior (HI_LIM o LOW_LIMIT). En este caso, además en OUT
ENO
sale el valor máximo o el mínimo según se rebase en por enci-
ma o por debajo. ( 0 o 27648).

En este caso el ejemplo podría consistir, en que se pretende controlar la velocidad de un


motor mediante un convertidor de frecuencia. El variador tiene una consigna de 0- 10
Voltios.
Con 0 voltios, el motor ira a 0 rpm y con 10 voltios, irá a 1500 rpm
Iremos dando un valor a MD50 entre 0 y 1500, ese valor se convertirá en un valor en la
salida analógica entre 0 y 27648, que a su vez hará que la salida analógica de una señal
entre 0 y 10 Voltios.
Como ejemplo, de las funciones anteriores, vamos a realizar el siguiente supuesto:
Queremos tener una alarma de mínimo y una de máximo de una temperatura. La tempera-
tura la lee la entrada analógica PEW288.
 Debe de activarse la alarma de máxima cuando el valor de la temperatura supere
los 90ºC.
 Debe de activarse la alarma de mínima cuando el valor de la temperatura este por
debajo de 40ºC.
 El E1.0 es el pulsador de enterado. Al accionarlo se borra la alarma de mínimo y
de máximo –Las alarmas de mínimo o máximo, no volverán a activarse hasta que
su valor no suba (mínima) o baje (máxima) del valor de la consigna y se den de
nuevo las condiciones de activación de las alarmas.

Departamento Eléctrico. AT FORMACIÓN Página 143


EJERCICIOS S7-300
En este caso, utilizando la función SCALE, ya tengo en MD10 en formato REAL el valor
de la temperatura que lee el PEW288, con lo cual puedo realizar la comparación de forma
directa.
Si en lugar de poner las constantes 90.0 y 40.0 ponemos dos registros en formato Real,
desde un terminal de operador o desde un sistema Scada podríamos cambiar los valor de
consigna con solo forzar los valores que nos interesen a MD20 (consigna de máxima) y
MD30 (Consigna de mínima).

Página 144 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
RESOLUCIÓN
EJERCICIO 1.
Para la realización de este ejercicio deberemos de utilizar la función UNSCALE, en don-
de utilizaremos una marca MD6, como valor real de entrada.
Los limites superior e inferior deberán ser respectivamente 27 y 0, condicionado por el
enunciado del ejercicio que nos indica que el valor máximo de tensión (10V) se produzca
en 27 pasos en el voltímetro.
Límite inferior 0 → PAW288 - 0 Voltios.
Límite superior 27 → PAW288 - 10 Voltios.
Para generar la marca MD6, podemos realizarlo de distintas formas, nosotros vamos a
coger una solución rápida, que será utilizar una marca de ciclo cualquiera, porque no nos
importa la velocidad con que se consigan los 10 V, lo que nos importa es que esta tensión
se consiga en 27 pasos.
Por lo tanto cogeremos un contador que nos cuente 27 pulsos y alcanzados estos se pro-
voque un reset, y vuelva a empezar el ciclo.

Si no reseteamos el contador, la entrada MD6 seguiría aumentando, provocando la salida


fuera de los límites superiores, manteniéndose el voltímetro en los 10 V.
Como la entrada de UNSCALE debe ser un numero REAL, deberemos de convertir la pa-
labra de salida del contador en número real, por lo tanto en la carpeta de comparaciones,
vemos que se puede convertir ENTERO a DOBLE ENTERO, y posteriormente el DO-
BLE ENTERO a REAL.

Finalmente utilizaremos la función que nos des escala el valor de entrada, en la señal de
salida de 0 a 10 V, en los 27 pasos indicado en el enunciado.

Departamento Eléctrico. AT FORMACIÓN Página 145


EJERCICIOS S7-300

Podemos utilizar el simulador para ver el funcionamiento del programa realizado, para
ello podemos insertar los módulos de marca MW0 y MD6 que van aumentando ambos
de la misma forma de 0 a 27, el primero en formato entero y el segundo en formato re-
al.
Insertamos también un modulo de salida analógica PAW288 en formato entero o regu-
lación de entero. Esta salida nos ira variando desde 0 a 27648, en 27 pulsos, por lo tan-
to el primer valor que veremos es (27648/27=1024) 1024, e incrementándose en este
valor hasta los 27648.

Si disponemos de un modulo de formación ó de un autómata podríamos comprobar


que la salida PAW288, nos está dando una salida física entre 0 y 10 voltios.
La variación de la tensión de salida entre 0 y 10 voltios se alcanza en 27 pulsos.

Página 146 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Realizar las siguientes variaciones sobre lo programado.


Para realizar estas modificaciones vamos a crear un nuevo bloque FC2, que cargare-
mos sustituyendo al bloque anterior FC1.
1. Se pretenderá en este caso que la salida del voltímetro alcance inicialmente los
10 voltios y esta tensión disminuya al valor de 0 voltios en 27 pasos, repitién-
dose nuevamente el ciclo.
Utilizaremos un temporizador a la conexión con un tiempo de 27 segundos, teniendo
en cuenta las siguientes consideraciones:
a. Los temporizadores son descendentes, por cuyo motivo, el valor de su sali-
da empieza en los 27 segundos.
b. Teniendo en cuenta el formato de su base de tiempos, el valor entero que se
maneja es en este caso 270, por lo que si queremos que el descenso se pro-
duzca en un tiempo de 27 segundos, deberemos dividir por 10 dicha salida.

En el primer segmento ponemos el


temporizador que se reinicia al lle-
gar a 0, en donde la salida MW0
alcanza inicialmente el valor de 270
y disminuye a 0 en 27 segundos.
En el segundo segmento dividimos
dicho valor por 10, de tal forma que
la marca MW50 oscila entre 27 y 0.
A partir de este segmento la pro-
gramación sigue siendo la misma,
convertimos la marca MW50 (Ente-
ro) a doble entero y posteriormente
a real.

Departamento Eléctrico. AT FORMACIÓN Página 147


EJERCICIOS S7-300

2. Conseguir que la tensión sea 5 Voltios en lugar de los 10 V, manteniendo cons-


tante los pasos en los que se obtiene la tensión.
Si tomamos el ejercicio inicial, el cambio en este caso es bastante simple, solo deberemos
pensar que si aumentamos el límite superior de la función UNSCALE a 54, en este valor
se alcanzarían los 10 voltios, por lo tanto cuando la marca tenga por valor 27, la tensión
seria de 5 voltios. Por lo tanto la modificación se realiza en el último segmento, según
vemos en figura.

Las pruebas a realizar son idénticas al caso anterior, bien sea con el simulador ó con el
autómata.

Página 148 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 2.
Ejercicio similar a los anteriores en donde la entrada de carácter digital, se obtiene a partir
de un temporizados
que se realimenta,
con la condición de
una entrada E0.0.
Como consecuencia
de la base de tiempos
del temporizador, la
salida MW0 es un en-
tero que oscila de 400 a 0, por lo tanto
para poder obtener el valor de 4 se-
gundos procedemos a dividir esta sa-
lida por 100.
Los siguientes pasos consisten en
convertir el entero a real, como se
realizo en los casos anteriores, para
poder obtener la entrada a la función UNSCALE.

De esta forma MD6 es un valor real que se encuentra comprendido entre 4 y 0, con perio-
dos de segundo.
Esta entrada se convierte en un valor
entre 10 y 0 en la salida analógica
PAW288.
Para realizar las comprobaciones, se
realizan como en los casos anteriores.

Departamento Eléctrico. AT FORMACIÓN Página 149


EJERCICIOS S7-300

Página 150 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 19. UTILIZACIÓN DE BLOQUES ESTÁNDAR DE LIBRERÍAS

1. GRABACIÓN DE UN TABLA EN UN BLOQUE DE DATOS. FUNCIÓN


ATT.

Se desea tener un bloque de datos de 12 palabras en formato INT, donde queremos que la
primera tenga por valor 10.

 En el primer registro nos indica el número de registros que se podrá grabar en esta
tabla.
 En el segundo registro, se nos indicará el numero de registros llenos (cada vez que
grabemos un valor en la tabla, ese registro incrementara en 1 su valor).
 Cuando el primer y segundo registro de la tabla sean iguales (la tabla estará llena),
ya no se grabara ningún registro mas.
 Cada vez que se accione la entrada E0.0, el valor que tenga en este momento la
entrada analógica PEW290 irá al primer registro libre de la tabla.
 Cuando la tabla este llena funcionara de forma intermitente la salida A4.0.

2. LECTURA DE DATOS GRABADOS EN UNA TABLA. FUNCIÓN LI-


FO.

De la tabla creada anteriormente extraer en la marca MW10 el último registro introduci-


do cada vez que se active la entrada E0.1.

3. GRABACIÓN DE UNA TABLA DE DATOS. SOBRESCRIBIR DATOS.

A partir de la tabla creada en la primera parte del ejercicio, realizar una programación que
nos permita, que una vez que está llena la tabla, empecemos a sobrescribir, empezando
por el primer registro, de tal forma que tengamos siempre los últimos 10 datos grabados.

4. GRABACIÓN DE UNA TABLA DE DATOS. BORRADO DE DATOS.


FUNCIÓN FILL.

En este parte se realizara la modificación de tal forma que según lo realizado en la parte
1, cuando la tabla está llena tenemos una salida que nos avisa de esta circunstancia.

A partir de este momento podremos borrar todos los datos guardados, mediante la activa-
ción de la entrada E0.4 de tal forma que podamos seguir adquiriendo nuevos datos, de la
forma programada.

5. GUARDAR DATOS DEL RELOJ Y DE UNA ENTRADA ANALÓGICA.

Se quiere guardar el valor de una entrada analógica y al mismo tiempo que nos quede re-
gistrado de forma paralela a qué hora, minuto, segundos y centésimas se ha grabado el da-
to.

Departamento Eléctrico. AT FORMACIÓN Página 151


EJERCICIOS S7-300
RESOLUCIÓN.
1. Vamos a crear en primer lugar un bloque de datos, para lo cual desde el adminis-
trador, insertamos un bloque de datos con el nombre de DB1. Editamos dicho blo-
que de datos:

Vamos aponer en nombre ―TEMPERATURAS‖, en suposición de que los datos reco-


gidos fueran por ejemplo la toma de temperaturas de un huerto agrícola solar, automa-
tizado.
Como hemos dicho,
este bloque de da-
tos queremos que
disponga de 10 re-
gistros, con uno
más que nos indi-
que el número de
registros rellena-
dos. Por lo tanto en
el campo Tipo, lo
rellenamos con el
siguiente formato. Si damos botón derecho del ratón, seleccionamos, Datos compues-
tos → ARRAY, y entre los corchetes escribimos 1..2.
Como comentario podemos indicar Temperaturas de huerto1, y si ACEPTAMOS, en
Tipo ponemos como tipo de dato INT (Entero).
De esta forma estamos indicando que el bloque de datos tiene la estructura que pode-
mos ver, si vamos a VER→Datos.

Número de registros

Número registros grabados

10 registros

Página 152 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
La primera dirección nos indica el número de registros que vamos a guardar. La se-
gunda dirección nos indica el número de registros grabados, y el resto de las direccio-
nes, hasta la 22.0, son las 10 direcciones de los registros que vamos a guardar.
Para indicar el numero de registros, Edición → Inicializar bloque de datos → pone-
mos 10 en el valor actual de la dirección de palabra 0.0 y guardando, salimos del blo-
que de datos.
Insertamos a continuación un bloque función FC1, en el cual vamos a realizar el pro-
grama para grabar datos de una entrada analógica.
En el primer segmento, colocaremos:

La función "Añadir un elemento a


una tabla" ATT añade el contenido
del parámetro DATA como si-
guiente elemento de una tabla, e in-
crementa en uno el registro que in-
dica la cantidad de elementos de
esa tabla. La tabla está compuesta
por palabras.
La función FC84, la encontraremos en Librerías → Standard library → TI-S7 Conver-
ting Blocks → FC84.
 En la entrada EN, que como siempre es la de habilitación, ponemos como en-
trada la E0.0 a través de un flanco positivo. Es importante que la entrada vaya
a través de un flaco, porque de lo contrario al activar la entrada en 10 scanes
quedaría la tabla llena, es decir los 10 registros tendrían el mismo dato.
 La entrada DATA son los datos que se grabaran, cada vez que activemos la
entrada E0.0.
 La entrada TABLE, se indica el primer registro a partir de la cual se rellena la
tabla. En realidad el primer registro será DBW4, por que la palabra 0 y 2 con-
tienen como ya hemos dicho el número de registros totales y el número de re-
gistros grabados.
En el segundo segmento realizamos simplemente una comparación para saber en qué
momento el bloque de datos está totalmente grabado, es decir cuando los valores de las
palabras 0 y 2, tengan el mismo valor, es decir 10. Con la marca de ciclo M255.5, la sali-
da A4.0 parpadea con un periodo de 1 segundo.

Departamento Eléctrico. AT FORMACIÓN Página 153


EJERCICIOS S7-300
Cargamos el bloque FC1, en el bloque de organización OB1 y realizamos la transferencia
al autómata o simulador.
En las siguientes figuras podemos ver los bloques a utilizar si utilizáramos el simulador.

Si modificamos con el puntero deslizante la entrada PEW290, y activamos la entrada


E0.0, el valor se graba en la tabla. Cuando se graben 10 datos, la salida A4.0 se activa de
forma intermitente.

2. Insertamos un nuevo bloque FC2, en donde utilizaremos la función LIFO dado


por el bloque FC87.
Dicha función la encontraremos también en Librerías → Standard Library → TI-S7
Converting Blocks → FC87.
Las entradas de este bloque en el segmento, serán las de la siguiente figura:

Página 154 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

La función "Extraer el
elemento más reciente de
una tabla" LIFO (del
inglés Last In / First Out)
extrae el elemento más
nuevo de una tabla LIFO,
devolviéndolo como valor
de respuesta de la función. La cantidad de elementos de la tabla se decrementa en una
unidad.
La instrucción LIFO igual que ATT debe ir siempre con flanco, porque de no hacerlo
en 10 scanes nos enviara los 10 valores de la tabla a la salida MW10, quedando por lo
tanto solo el primer valor grabado.
En la entrada EN situamos la entrada de habilitación E0.1 a través de un flaco positi-
vo.
En la entrada de TABLE, indicamos cual es el primer registro de la tabla.
En La salida RET_VALUE, indicamos la marca en donde hacemos lectura de los va-
lores de la tabla.
El funcionamiento, será que si nosotros activamos la entrada E0.1, la marca MW10
tomara por valor el dato del registro 22.0 (8321) de la tabla de datos, y el valor de la
dirección 2.0 toma el valor de 9. (Estaba a 10 y disminuye en una unidad).
Si volvemos a activar la entrada E0.1, la marca tomara el valor de 7801de la dirección
20.0, y se descuenta en el registro 2.0 una unidad más, situándose en 8.
De esta forma se pueden ir extrayendo los distintos registros cada vez que se activa la
entrada E0.1, hasta llegar al primero de ellos.
Podemos ver en esta imagen del simulador en donde se insertado el bloque MW10,
como va tomando los
distintos valores de
la tabla.
En nuestra figura
tiene el valor del
último registro.
Lógicamente como
podemos fácilmente
comprender al extra-
er un dato podríamos
volver a grabar nue-
vamente otro dato en su lugar, mediante la función realizada en el bloque FC1.

Departamento Eléctrico. AT FORMACIÓN Página 155


EJERCICIOS S7-300
3. Para poder sobrescribir la tabla de datos, sería necesario simplemente, que el re-
gistro que nos está indicando el número de registros llenos al llegar a 10, se ponga
de nuevo a 0.

Número registros grabados

Para poner este valor a 0, modificaríamos el 2º segmento del FC1, de tal forma
que cuando se cumpla la comparación de que las direcciones 0.0 y 2.0 sean igual a
10, con una instrucción de transferencia (MOVE) ponemos DB1.DBW2 a valor 0.

4. Para poder borrar los datos de la tabla de datos, podemos utilizar la función de sis-
tema FILL (SFC21), que podemos encontrarla en Librerías → Standard Library
→ System Funtion.
Estas funciones NO podremos transferirlas, ni hace falta, porque al ser funciones
del sistema ya se encuentran incluidas en la CPU.
Con la SFC 21 FILL es posible inicializar un área de memoria (ARRAY de desti-
no) con el contenido de otra área de memoria (ARRAY de origen). La SFC copia
el contenido en el ARRAY de destino indicado hasta que el área de memoria está
escrita por completo.

 El campo fuente y el campo de destino no debe solaparse.


 Si el campo de destino a inicializar no es un múltiplo entero de la longitud
del parámetro de entrada BVAL, el campo de destino se escribirá de todos
modos hasta el último byte.
 Si el campo de destino a inicializar es menor que el campo de origen, se
copiará solamente la cantidad de datos que pueda acoger el campo de des-
tino.
 Si el campo de destino u origen realmente existente es menor que el tama-
ño del área de memoria parametrizada para el campo de origen o de desti-
no (parámetros BVAL, BLK) no se transferirán datos.

BVAL . El parámetro BVAL contiene el valor o la descripción del campo (campo


fuente) con cuyo contenido se ha de inicializar el campo de destino.
RET_VAL. Si ocurre un error al procesar la función, el valor de retorno contiene
un código de error.

Página 156 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
BLK. El parámetro BLK contiene la descripción del campo que ha de ser iniciali-
zado (campo de destino).
Por lo tanto para borrar los datos insertamos un tercer segmento con la siguiente
instrucción:

Esta instrucción se activa con la entrada E0.4, que nos pone la marca MW20 a 0, y
nos transfiere este valor al área de memoria del DB1, desde la posición 2.0 a los
siguientes 11 enteros contando desde esta posición. La sintaxis siempre deberá
empezar por P#.
De esta forma se borran los datos grabados incluyendo la posición 2.0 que nos in-
dica el número de ellos grabados.
Al estar todos a 0, podremos nuevamente grabar otros 10 datos, cada vez que acti-
vemos la entrada E0.0.

5. Creamos en primer lugar un bloque de datos DB2 que le damos por nombre RE-
LOJ, para almacenar los valores de tiempo.
También deberemos crear un bloque de datos DB3 donde grabar los datos del re-
loj.
En resumen los 3 bloques de datos son:
 DB1. Bloque de datos donde se almacenan los datos de entrada analógicos
PEW288.
 DB2.Bloque de datos donde se almacenan los valores de la hora y minutos.
 DB3.Bloque de datos donde guardamos la hora, minutos, segundos y
centésimas de segundos en los cuales se almacena el dato en el bloque
DB1.
A continuación vamos a describir las características de los 3 bloques de datos.
BLOQUE DB1.

En este bloque de datos se crear una matriz ―ARRAY‖ de 12 registros de tipo


ENTERO. Estos datos son los recogidos por la entrada analógica PEW288.

Departamento Eléctrico. AT FORMACIÓN Página 157


EJERCICIOS S7-300
El número máximo de datos es de 10, a partir de este instante, no se guardará nin-
guno más.
BLOQUE DB2.

En este bloque de datos se almacena el valor de las horas, minutos, segundos y


centésimas de segundo del reloj. Para ello se crea una matriz de 4 registros para
las cuatro unidades de tiempo.
El tipo de dato es de BYTE, y con valor inicial 0, que escribimos con la sintaxis
B#16#0 en hexadecimal.

BLOQUE DB3.

En este caso se crean 2 matrices similares de 10 registros, más los 2 primeros que
nos indican el número de registros a grabar y el número de registros grabados.
El tipo de dato es WORD, y el valor inicial que nos indica el numero de registros
es de 10, es decir W#16#A.
Así pues de la dirección de palabra 4.0 hasta la 22.0. se grabaran la horas y
minutos de los datos analógicos almacenados.
De la dirección 28.0 hasta la 46.0 se guardaran los segundos y centésimas de se-
gundo.
En primer lugar programamos el bloque FUNCIÓN FC3, en donde utilizamos la
función FC84, que encontremos en Standard Librery TI-S7 Converting Blocks
FC84 ATT TABLE.
En el primer segmento vamos a programar las tres transferencias de datos que
vamos a realizar. Estas se realizaran cada vez que se activa la entrada E1.7, que
llevamos a través de un flaco positivo.

En el segundo segmento, vamos a programar una salida, que nos avise de que ya
se han grabado 10 datos, y que el bloque de datos de registros está lleno.

Página 158 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Las funciones de transferencia


programadas, son las siguientes:

1. En este caso se añade el


contenido del parámetro DATA,
consistente en la entrada analó-
gica utilizada PEW288 y se aña-
de a la tabla del bloque de datos
DB1, aumentando sucesivamente
en una unidad el registro de al-
macenamiento, desde la direc-
ción 4.0 hasta la 22.0
2. En este segundo caso se
realiza una transferencia desde la
tabla del bloque de datos DB2 a
la tabla DB3. Los datos que se
copian son la primera palabra
que contiene los 2 primeros by-
tes correspondientes a la hora y
el minuto del RELOJ.
3. Esta ultima transferencia
idéntica a la anterior, con la dife-
rencia que los bytes son los si-
guientes a los anteriores es decir
los correspondientes a los se-
gundos y centésimas de segundo,
que se copian al final de los registros de de hora y minutos.
El segundo segmento nos activa la salida A5.7, cuando el número de datos hayan al-
canzado el valor de 10.

En el OB1, realizamos la llamada al bloque FC3, y en los siguientes segmentos se co-


pian los datos desde el OB1_DATE_TIME a la tabla del bloque de datos db2.
Los bytes que se mueven a la tabla son LB15, LB16, LB17 y LB18.

Departamento Eléctrico. AT FORMACIÓN Página 159


EJERCICIOS S7-300

Transferimos el Hardware con la marca de ciclo añadida a las propiedades de su


CPU, y los bloques OB1, FC3, FC84 y los bloques de datos DB1, DB2 y DB3.
Para comprobar su funcionamiento vamos a utilizar el simulador, en donde abri-
mos el modulo de entradas digital y analógico.

En la entrada PEW288 seleccionamos


tipo de dato regulación: entero, en donde
desplazando la barra cambiamos el va-
lor, que podemos registrar picando sobre
la entrada E1.7.
Podemos registrar varios datos y com-
probar su almacenamiento en los blo-
ques de datos.
Abrimos los tres bloques de datos y en
el menú Ver, seleccionamos en cada ca-
so la opción de Datos.

Página 160 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
A continuación ponemos las ―gafas‖ de observar, para poder ver los registros al-
macenados. En este ejemplo hemos almacenado 4 datos, y los bloques de datos
serán los siguientes:

BLOQUE DE DATOS DB1. Tabla de entrada analógica.

BLOQUE DE DATOS DB2. Tabla de reloj.

BLOQUE DE DATOS DB3. Tabla de tiempo en que se han producido los


almacenamientos de los registros analógicos.

Departamento Eléctrico. AT FORMACIÓN Página 161


EJERCICIOS S7-300
En la tabla anterior podemos ver que las direcciones 0.0, 2.0, 24.0 y 26.0 son las corres-
pondientes al número de registros y los registros guardados.

Si miramos las tablas 1 y 3 podemos sacar como conclusión:

1. El primer valor almacenado es el 20804 y se almaceno a las 23 horas, 28 minutos,


0 segundos y 0 centésimas de segundo.
2. El último valor registrado es el -15084 y se almaceno a las 23 horas, 28 minutos,
22 segundos y 00 centésimas de segundo.

De esta forma podemos comprobar los registros de entrada que se almacenan y la hora en
el que se produce.

Página 162 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
EJERCICIO 20. ALARMAS HORARIAS.

PROBLEMA 1.

Vamos a partir de que en un bloque función FC1, tenemos una programación para el fun-
cionamiento de un motor.

Programar el bloque de organización OB10, de tal forma que a partir de una fecha y de
una hora determinada, se pueda dar funcionamiento al mismo a través de su pulsador de
marcha.

PROBLEMA 2.

Realizar el mismo ejercicio utilizando las funciones incorporadas en las librerías Standard
Library.

Departamento Eléctrico. AT FORMACIÓN Página 163


EJERCICIOS S7-300
RESOLUCIÓN PROBLEMA 1.

El OB10, permite interrumpir el OB 1 y ejecutarse en una fecha determinada o a diferen-


tes intervalos a partir de una fecha determinada.

Se puede programar para que se ejecute en los siguientes intervalos:

 Una vez: Se ejecutara solo una vez en el momento especificado.


 Cada minuto: Se ejecutara 1 vez cada minuto a partir del momento especificado.
 Cada hora: Se ejecutara 1 vez cada hora a partir del momento especificado.
 Cada día : Se ejecutara una vez al día a partir del momento especificado
 Cada mes: Se ejecutara una vez al mes a partir del momento especificado.
 Cada año : Se ejecutara una vez al año a partir del momento especificado
 Al final de mes: Se ejecutara una vez al final del mes a partir del momento especifi-
cado.
Tenemos dos formas de programarlo:

Primera forma:

1. Ir al Administrador →Hardware (Picar dos veces sobre el) → Picar dos veces so-
bre CPU→ Seleccionar la pestaña ―Alarmas horarias‖.

 En periodicidad seleccionar cada cuanto tiempo queremos que actúe (1 minu-


to)
 En fecha y hora poner a partir de qué momento queremos que empiece (fecha
31/01/10, hora 21:15)

Página 164 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
 Compilar y transferir el Hardware a la CPU.
2. Programar el OB10.

3. En los bloques FC1 y OB1, realizamos las siguientes programaciones:

Tenemos una memoria que se activa con un flanco positivo del pulsador de marcha E1.0,
y se desactiva con el pulsador de paro E1.1 ó con el térmico E1.2.

Tenemos en el RESET la marca M0.0 que se encuentra activa hasta que la marca MW10
tome el valor de 6, como podemos ver programado en el OB1.

Departamento Eléctrico. AT FORMACIÓN Página 165


EJERCICIOS S7-300
En el primer segmento podemos hacer la llamada al bloque FC1, y en el segundo segmen-
to la comparación comentada que nos mantiene activada la marca M0.0, hasta que la mar-
ca MW10 tome el valor de 6.

La marca MW10 inicialmente vale 0, y con la activación de la alarma horaria, en el día y


hora seleccionada con la periodicidad seleccionada de 1 minuto, el OB10 interrumpe el
OB1 y ejecuta su contenido, es decir la marca MW10 se incrementa en una unidad.

Por lo tanto transcurridos 5 minutos de la fecha y hora marcadas, si se activa el pulsador


de marcha, la salida A5.0 se activa, mientras tanto no sería posible su activación.

Para su comprobación cargamos el hardware y todos los bloques, utilizando el simulador


PLCSIM.

Podremos comprobar que hasta que la marca MW10 tome un valor de 6, la salida no se
puede activar.

Página 166 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
RESOLUCIÓN PROBLEMA 2.

 Función FC3 de Librerías de Standard Librery de IEC Function Blocks.

La función FC 3 compila los formatos de da-


tos DATE y TIME_OF_DAY (TOD) y los
convierte al formato de datos DA-
TE_AND_TIME (DT). El valor introducido
IN1 debe estar comprendido entre DA-
TE#1990-01-01 y DATE#2089-12-31 (no se
comprueba). La función no indica errores.

Al valor de respuesta sólo se le puede asignar


una variable simbólica.

Los tipos de datos de la entrada IN1, pueden ser:

Los tipos de datos de la entrada IN2, pueden ser:

Los tipos de datos de la salida RET_VAL, pueden ser:

Existen otros FC`s dentro de la familia de bloques IEC, que nos permiten realizar conver-
siones, en la siguiente tabla podemos ver sus conversiones:

Departamento Eléctrico. AT FORMACIÓN Página 167


EJERCICIOS S7-300

Las funciones del sistema SFC 28 a SFC 31, que se describen a continuación, se utilizan
para alarmas horarias.

 Ajustar (SFC 28 "SET_TINT")


 Anular (SFC 29 "CAN_TINT")
 Activar (SFC 30 "ACT_TINT") y
 Consultar (SFC 31 "QRY_TINT")

Comportamiento en caso de rearranque completo (arranque en caliente)

Al efectuar un rearranque completo (arranque en caliente), se borran todas las alarmas


horarias ajustadas con las SFCs en el programa de usuario. En este caso siguen vigentes
los parámetros ajustados con STEP 7.

 Función SFC28 (SET_TINT) de Librerías de Standard Librery de System


Function Blocks.

Con la función del sistema SFC 28


"SET_TINT" (set time-of-day interrupt) se
pueden ajustar la fecha y la hora de arranque
de los bloques de organización de alarma hora-
ria. De la hora de arranque que se haya especi-
ficado se ignoran los segundos y los milise-
gundos y se ponen a cero.

Página 168 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Los códigos de error son:

 Función SFC30 (ACT_TINT) de Librerías de Standard Librery de System


Function Blocks.
Con la función del sistema SFC 30
"ACT_TINT" (activate time-of-day interrupt) se
puede activar un bloque de organización de
alarma horaria.

Departamento Eléctrico. AT FORMACIÓN Página 169


EJERCICIOS S7-300
Tipo
Parámetro Declaración de Área de memoria Descripción
datos
E, A, M, D, L, Número del OB que se desea ac-
OB_NR INPUT INT
Const. tivar (habilitar) (OB10 a OB17).
Si ocurre un error al procesar la
función, el parámetro actual de
RET_VAL OUTPUT INT E, A, M, D, L
RET_VAL contiene un código de
error.

Código de error (W#16#...) Descripción


0000 No ha ocurrido ningún error
8090 Parámetro OB_NR erróneo
No se ha ajustado la fecha y la hora de arranque para el OB
80A0
de alarma horaria correspondiente.
El tiempo activado se encuentra en el pasado; el error ocurre
80A1
solamente en caso de ejecución única.
Información general sobre errores, consulte Evaluación de
8xyy
errores con el parámetro de salida RET_VAL

Vamos a realizar por lo tanto la programación utilizando los bloques comentados ante-
riormente.

En primer lugar podemos programar el FC1, donde tenemos la programación del arranque
del motor, con una memoria en donde en el reset colocamos una marca M20.0, que se en-
contrara activada hasta la fecha que nosotros programemos imposibilitando el arranque
del motor.

A continuación abrimos el bloque de organización OB1, y lo primero que realizaremos es


una llamada al bloque FC1.

A continuación pasamos la fecha y la hora a la que queremos que empiece el OB1, para
ello será necesario definir en el OB1 una variable temporal con formato DA-
TE_AND_TIME, y a continuación en el primer segmento realizamos la instrucción.

Página 170 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Las entradas nos indican que la fecha de


ejecución es 1 de febrero del 2010, a las
12 horas, 0 minutos, 0 segundos. Esta
fecha y hora se pasa a la variable tem-
poral #hora_empezar.

En el tercer segmento se indicara el OB


a ejecutar y la fecha y hora a realizar.
En la entrada PERIOD indicaremos la
periodicidad a realizar, que es de cada
minuto, con la sintaxis W#16#201.

En la salida de error direccionamos la


marca palabra MW0.

En el cuarto segmento activamos o desactivamos el bloque de organización OB10, el


código de error se guarda en la dirección MW2.

Departamento Eléctrico. AT FORMACIÓN Página 171


EJERCICIOS S7-300
En el quinto segmento hacemos una comparación, que se encontrara activada hasta que la
marca MW10 tome el valor de 6, en este momento la marca M20.0 se desactivara y po-
dremos activar la salida A5.0 correspondiente al motor de la aplicación.

Esta marca MW10 la programamos dentro del bloque de organización OB10, que inser-
tamos en el administrador.

Al realizarse la ejecución del OB1 en la fecha


y hora indicada, con la periodicidad de un mi-
nuto, el OB10 interrumpe la ejecución del
OB1, y la marca MW10 aumenta en 1 unidad
cada minuto, de tal forma que al tomar el valor
de 6, la marca anterior M20.0 se desactiva
permitiendo el funcionamiento de la memoria
del bloque FC1.

Para poder comprobar su funcionamiento lo realizamos a través del simulador de la mis-


ma forma a como se realizo anteriormente.

Página 172 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
PROBLEMA 21. ALARMAS DE RETARDO Y ALARMAS CÍCLICAS

Ejercicio 1.

Programar el OB20, para que un motor asíncrono que se encuentra en funcionamiento, y


que dispone de una alarma de visualización de fallo del térmico, se active 60 segundos
después de su fallo.

Si se rearma automáticamente antes de los 60, el térmico no se activara y si no se rearma-


ra se activara como se dijo a los 60 segundos y al rearmarse se apagara.

Ejercicio 2.

Una planta de producción agrícola debe controlar la temperatura de unos almacenes de


fruta, para ello dispone de un sistema que introduce un valor analógico a la entrada
PEW288 del autómata.

Queremos controlar esta temperatura como un valor entero comprendido entre 0 y 60º
centígrados, y almacenar en un bloque de datos las últimas 50 temperaturas tomadas cada
60 segundos.

Cuando la temperatura alcance el valor de 35º grados, se activaran de forma inmediata 2


ventiladores colocados en los puntos de almacenaje, y se abren 2 ventanas automática si-
tuadas en la parte superior del almacén.

Cuando la temperatura vuelva a 22 grados las ventanas se cerraran y 10 minutos después


los ventiladores pararan automáticamente.

Los ventiladores están accionados por motores asíncronos que disponen de un arranque
directo, sin inversión de giro.

Las ventanas se encuentran accionadas por pequeños motores asíncronos con inversión de
giro, y la posición de abierto o cerrado se detecta a través de finales de carrera.

Los ventiladores dispondrán de un mando manual con pulsadores de marcha y paro.

Las ventanas pueden funcionar de forma manual o automática, para ello se dispone de un
interruptor de 2 posiciones, siendo su funcionamiento:

 Posición 1. Funcionamiento manual. En este funcionamiento se podrá realizar una


apertura parcial, o total.
 Posición 0. Funcionamiento automático. En este funcionamiento se acciona por
control de temperatura, siendo la apertura total.

Este proceso funcionara de forma completa las 24 horas del día.

Para facilitar la realización del ejercicio las entradas y salidas a tener en cuenta son las si-
guientes:

Departamento Eléctrico. AT FORMACIÓN Página 173


EJERCICIOS S7-300
ENTRADAS DIRECCIÓN ESTADO
Marcha manual ventilador 1 E 0.0 NO
Paro manual ventilador 1 E 0.1 NC
Marcha manual ventilador 2 E 0.2 NO
Paro manual ventilador 2 E 0.3 NC

Ventana 1 FC abierto E 0.4 NO


Ventana 1 FC cerrado E 0.5 NO
Ventana 1 manual abrir E 0.6 NO
Ventana 1 manual cerrar E 0.7 NO
Ventana 1 paro abrir/cerrar E 1.1 NC

Ventana 2 FC abierto E 1.2 NO


Ventana 2 FC cerrado E 1.3 NO
Ventana 2 manual abrir E 1.4 NO
Ventana 2 manual cerrar E 1.5 NO
Ventana 2 paro abrir/cerrar E 1.6 NC

Selector manual/automático E 1.7

SALIDAS DIRECCIÓN ESTADO


Ventilador 1 A 4.1 CONTACTOR KM1
Ventilador 2 A 4.2 CONTACTOR KM2

Ventana 1 ABRIR A 5.0 CONTACTOR KM3


Ventana 1 CERRAR A 5.1 CONTACTOR KM4

Ventana 2 ABRIR A 5.6 CONTACTOR KM5


Ventana 2 CERRAR A 5.7 CONTACTOR KM6

Para no realizar esperas innecesarias en la comprobación del ejercicio, se van a cambiar


los tiempos de ejecución del OB35 y la del temporizador.

Se pueden tomar los siguientes valores:

 OB35. Tiempo de alarma cíclica de 15 segundos.


 Temporización para apagado de ventiladores 10segundos.

Página 174 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
RESOLUCIÓN.

Resolución Ejercicio 1.

Si vamos a propiedades de la CPU dentro de hardware, podemos ver en la pestaña de


alarmas, que existen alarmas de 3 tipos, que se denominan:

 Alarmas de proceso. En nuestra CPU OB40.


 Alarmas de retardo. En nuestra CPU OB20.
 Alarmas de error asíncrono. En nuestra CPU OB81, OB82, OB85, OB86 y
OB87.

En el mismo menú contextual, en la pestaña de alarmas cíclicas podemos ver otro tipo de
alarma, denominada cíclica, que es el OB35.

Departamento Eléctrico. AT FORMACIÓN Página 175


EJERCICIOS S7-300
En este ejercicio vamos a ver la programación de la alarma de retardo OB20 y la alarma
cíclica OB35.

Programación del OB20.

El OB20, permite interrumpir el OB1 y ejecutarse después de un tiempo de demora de-


terminado. El OB20 arranca después de una llamada al SFC32.

El SFC32 lo podemos encontrar en Librerías → Standard Library → System Funtion


Blocks.

Para que una alarma de retardo pueda ser llamada por el sistema operativo, se han de
cumplir las siguientes condiciones:

 El OB de alarma de retardo tiene que haber sido arrancado con la SFC 32


"SRT_DINT".
 El OB de alarma de retardo no debe estar in-
hibido con STEP7.
 El OB de alarma de retardo debe estar con-
tenido en la CPU.

Con la función del sistema SFC 32 "SRT_DINT"


(start time-delay interrupt) se puede lanzar una
alarma de retardo que, al transcurrir el tiempo de re-
tardo parametrizado (parámetro DTIME), llama a un
OB de alarma de retardo.

El tiempo transcurrido entre la llamada a la SFC 32 "SRT_DINT" y el lanzamiento del


OB de alarma de retardo es como máximo un milisegundo menor que el tiempo parame-
trizado, siempre que no existan eventos de interrupción que retarde la llamada.

Los códigos de error de la salida RET_VAL, son:

Página 176 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Para realizar el ejercicio planteado anteriormente, insertamos un bloque función FC1, y el


bloque de organización OB2.

En el bloque FC1, programamos el arranque del motor que se activa con un pulsador de
marcha y se desactiva con el pulsador de paro ó el térmico.

En el bloque OB1, en el primer segmento realizamos una llamada al bloque FC1, para
realizar el arranque del motor.

En el segundo segmento se realiza una llamada al bloque de organización OB20, para ello
insertamos de la librería de System Funtion Blocks, el bloque SFC32.

La entrada de habilitación
EN, se activa con un flan-
co negativo del contacto
normalmente cerrado del
térmico.

De esta forma cuando el


térmico salte, se realiza
una llamada al OB20, al
cabo del tiempo marcado
de 60 segundos.

El signo que aparece en la


información de eventos de arranque del OB, es el marcado como W#16#1. En el segmen-
to tercero se resetea la señalización de la lámpara de acuse que se activo en el OB20,
transcurrido 1 minuto después de la ejecución del bloque SFC32.

Departamento Eléctrico. AT FORMACIÓN Página 177


EJERCICIOS S7-300
En este segmento simplemente se resetea la
memoria del SET de la salida A4.1, cuando
el contacto del térmico se cierre.

En el bloque de organización OB20 como


ya se comento, tenemos la activación de la
memoria de la salida H1 del térmico con la negación del contacto cerrado del térmico.

Si cargamos todos los bloques al autómata o simulador podremos comprobar fácilmente


su funcionamiento.

Para realizar la comprobación, partiendo de la posición marcada en el simulador, realiza-


mos las siguientes operaciones:

1. Activamos el pulsador de marcha PM. La salida del motor A4.0 se activara.


2. Se cambia el contacto del térmico, es decir se abre. Antes de que transcurra 1 mi-
nuto se vuelve a rearmar. El acuse del térmico H1 no se activa.
3. Se vuelve a cambiar el estado del térmico, y no se rearma de forma inmediata.
Transcurridos 60 segundos la salida de acuse del térmico se activa.
4. Transcurrido este tiempo, se rearma el térmico, y lógicamente el acuse de fallo
desaparece.

Página 178 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Programación del OB35.

En S7 hay nueve OB´s de


alarma cíclica que van desde el OB´s de alarma cíclica Base de tiempos Prioridad
OB 30 al OB 38. Con ellos es OB 30 5s 7
OB 31 2s 8
posible arrancar programas a
OB 32 1s 9
intervalos temporales equidis- OB 33 500 ms 10
tantes. La tabla siguiente OB 34 200 ms 11
muestra los valores pre ajusta- OB 35 100 ms 12
dos para las bases de tiempo y OB 36 50 ms 13
las prioridades de los OB‘s de OB 37 20 ms 14
alarma cíclica. OB 38 10 ms 15

En nuestra CPU 315-2 DP solo se dispone del OB 35. Para comprobarlo podemos ir
Hardware, y en propiedades de la CPU comprobar las alarmas cíclicas de las que dispo-
nemos.

La periodicidad de este OB puede ir desde 1 hasta 60.000 ms.

El funcionamiento de estos OB`s son idénticas, variando solamente en la periodicidad y


en la prioridad de interrupción.

El OB 35, permite interrumpir la ejecución del OB1 a intervalos fijos de 100ms y ser eje-
cutado, este intervalo de tiempo se cuenta a partir de poner en RUN la CPU.

Es necesario procurar que el tiempo de ejecución de cada OB de alarma cíclica sea menor
que el tiempo de intervalo programado como repetición de la ejecución del OB35.

En caso de que no haya concluido todavía un OB de alarma cíclica, estando sin embargo
a punto de ser ejecutado de nuevo por haber transcurrido la cadencia temporal, se activa
el OB de error de tiempo OB 80. A continuación se produce la alarma cíclica causante del
error.

Resolución Ejercicio 2.

En primer lugar programaremos la obtención de datos del sensor de temperatura, en un


FC1, en donde en el primer segmento vamos a escalar el valor analógico de entrada, entre
el valor mínimo de 0 y 60ºC.

No siendo necesaria la utilización de decimales en el manejo de la temperatura, el valor


de salida se convierte en entero, con el cual trabajaremos en el resto del programa.

Departamento Eléctrico. AT FORMACIÓN Página 179


EJERCICIOS S7-300

La entrada PEW288 se SCALE entre


los limites 0 y 60, con carácter unipo-
lar, es decir con M0.0 iguala 0.
La salida escalada se obtiene en la
marca de salida MD10.
En el segundo segmento esta marca,
se convierte a doble entero, redon-
deada en la salida MD14.

En el tercer segmento se realiza una traslación desde la


MD14 a la MW16, al realizar esta transferencia se pierden
16 bits, que tienen por valor 0, tengamos en cuenta que el
numero más grande que manejamos es 60, por lo que con
los primeros 16 bits son suficientes.

A continuación insertamos un bloque de datos con el nombre DB1, con la siguiente es-
tructura:

Insertamos una variable de tipo ARRAY, que ponemos por nombre SENSOR. El número
de registros van desde 1 a 52, de tipo ENTERO.

En el menú de Ver, seleccionamos la op-


ción de Datos, en lugar de la vista de De-
claración.

En el primer registro ponemos en Valor actual la cantidad de 50, para indicar que el
número de registros que tenemos es de 50. Recordemos que en segundo registro tendre-
mos el número de registros grabados.

Página 180 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Insertamos el bloque de organización OB35, con una periodicidad de 60segundos. Una
vez insertado vamos a Hardware y en propiedades de la CPU, en Alarmas cíclicas, modi-
ficamos el valor de periodicidad por 60.000 ms.

RECORDAR: Que deberemos cargar el hardware para que la modificación tenga efecto.

De esta forma el OB35 interrumpe la ejecución del OB1, cada minuto ejecutándose. La
ejecución a realizar consta de 4 segmentos.

PROGRAMACIÓN OB 35

En el primer segmento utilizamos la función FC84,


que encontramos en Standard Library → TI-S7 Con-
verting Blocks → FC84 ATT TABLE.

Con esta función que se ejecuta cada minuto, reco-


gemos el valor de la marca MW16, correspondiente
al valor analógico transformado, y se envía al bloque
de datos DB1, a partir de la dirección 0.

De esta forma cada minuto se toma el valor de la


temperatura de entrada, y se almacena en el registro
siguiente hasta llegar al último.

Departamento Eléctrico. AT FORMACIÓN Página 181


EJERCICIOS S7-300
En el segundo segmento comparamos el valor del número de registros a grabar (dirección
0 del DB1), con el número de registros grabados (dirección 2 del DB1), y cuando son
iguales ponemos a 0, el valor de los registros grabados, con lo cual se siguen grabando
datos de temperatura.

Es decir siempre se tienen las últimas 50 lecturas.

También ponemos a 1 el valor de la marca MW100, que utilizamos posteriormente en el


siguiente segmento, y que explicamos su sentido, mas tarde.

En el tercer segmento utilizaremos la función FC89, que encontramos también en Stan-


dard Library → TI-S7 Converting Blocks → FC89 TBL_WRD TABLE, que nos servirá
para extrae el último dato escrito en la tabla de datos por la función FC84 programada en
el primer segmento.

Copiar un valor de una tabla (TBL_WRD): FC89


La función ‖Copiar un valor de una tabla‖
(TBL_WRD) copia el registro indicado por
el parámetro INDX desde la tabla SRC al
registro destino al que indica el puntero
DEST; a continuación incrementa el valor
de INDX siempre que éste fuera menor que
la longitud máxima de la tabla, indicada en
la primera palabra de la misma, SRC [0].

En caso de que INDX indique el último


elemento de la tabla cuando se llama a la
función, el bit de la salida Q se pone a cero
tras ejecutarse la función.

El primer registro de la tabla indica la cantidad máxima de elementos que puede tener
(longitud de tabla), y el segundo registro indica el primer elemento de la tabla. Los pará-
metros de la función, son los siguientes:

Página 182 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

ERRORES DE PROGRAMACIÓN

La función no será ejecutada si se da una de las condiciones enumeradas en la siguiente


tabla. En esos casos, el estado de señal de la salida de habilitación (ENO) se pone a 0 y el
valor de respuesta (RET_VAL) se ajusta como corresponde.

En nuestro caso estamos trabajando con una tabla en donde la dirección 0, se corresponde
con el numero de registros a grabar, y en la segunda dirección, el numero de registros
grabados.

Por lo tanto el primer registro a copiar es el de la dirección 4.0, circunstancia que debe-
remos de tener en cuenta a la hora de parametrizar el bloque de FC.

Como nos dice el manual el valor de


SRC, debe ser el valor correspondiente
de la tabla donde se tiene el número de
elementos de la tabla, por lo tanto de-
signamos el valor DB1.DBW0.

DEST. Es la dirección donde queremos


copiar el valor que se coge de la tabla,
que en nuestro caso se copia a la direc-
ción MW20.

El tipo de dato copiado es Entero (IN-


T), por lo que E_TYPE se le asigna el
valor indicado en el manual B#16#5.

Departamento Eléctrico. AT FORMACIÓN Página 183


EJERCICIOS S7-300
INDX. Este valor debe empezar en 2, de tal forma que transcurridos los primeros 60 se-
gundos, tome el valor de 3, y nos copie en la dirección MW20 el valor de la dirección 4
de la tabla de datos.

En los valores de salida RET_VAL y Q situamos las direcciones indicadas en la figura,


con la utilidad expresada anteriormente.
Para poner a 2 el valor de la marca MW100, programaremos un OB100, que se ejecutara
por lo tanto al inicio, con una operación aritmética,
que puede ser suma, multiplicación, o cualquier otra
operación que tenga como resultado el valor de 2.
En nuestro caso hemos realizado una operación de
multiplicación.
También vamos hacer que al reiniciarse el sistema el
bloque de datos DB1, se reinicie con todos los valo-
res a 0. Utilizaremos la función SFC21, explicada an-
teriormente con la misma particularidad.

PROGRAMACIÓN OB100

Esta marca se debe de poner por lo tanto con el valor de 2, una vez que se hubiera leído el
último dato grabado, por este motivo en el segmento anterior, cuando se rellena la tabla
de 50 datos, esta marca se coloca a 1 para que con el avance del puntero se ponga a 2.
Se puede comprobar que el valor de MW100, debe ser siempre superior en 2 unidades al
contador de datos registrados.

Si pusiéramos a 2 la marca MW100, des-


pués de una primera tabla esta diferencia
sería de 3 unidades.

En resumen en la marca MW20, se está


haciendo lectura del último dato guardado
en la tabla, y que utilizaremos como refe-
rencia para determinar en qué momento se
deben activar los ventiladores y abrir las
ventanas.

Página 184 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
En el cuarto segmento vamos por lo tanto a realizar unas comparaciones, que nos activan
y resetean una memoria, con una marca, que nos servirá para el mando automático de los
dispositivos a manejar.

Cuando la temperatura sea mayor e igual a 35 grados se activa la memoria y cuando sea
menor e igual a 22 se resetea la memoria.

Los ventiladores deben de parar 10 segundos después de que las ventanas se cierren, es
decir cuando la temperatura baje por debajo de los 22 grados, las ventanas cerraran y 10
segundos después pararan los ventiladores.

Por lo tanto programaremos un temporizado a la conexión con memoria, que se activara


una vez que M52.1 se resetee (temperatura inferior a 22º) y se reciba un flanco positivo
de los finales de carrera de cerrado de las dos ventanas. (Los finales de carrera pasan de 0
a 1). El temporizador funciona con flanco por lo tanto, si las 2 ventanas no cerraran a la
par el tiempo de temporización es la suma de 10 segundos más el tiempo transcurrido
desde que cerró la primera ventana.

Esta temporización NO la programaremos dentro del OB35, por que este bloque se eje-
cuta de forma cíclica y nos podría dar problemas temporales, por lo tanto se programara
en el FC1.

Departamento Eléctrico. AT FORMACIÓN Página 185


EJERCICIOS S7-300
PROGRAMACIÓN FC 2

Insertamos un nuevo bloque FC2, que vamos a realizar de forma parametrizada para el
funcionamiento de los 2 ventiladores.

Los ventiladores se accionan por mando manual o automático y se paran también de for-
ma manual o automática.

Las entradas y salidas parametrizadas en el interface son:

En el segmento 1, programaremos con una memoria el arranque directo parametrizado,


para los 2 ventiladores.

La salida de los contactores de fuerza,


se activan con el pulsador de marcha
(Mando manual), ó con la memoria de
temperatura superior a 35 grados
(Mando automático).

La memoria se resetea con el pulsador


de paro (Mando manual), ó con la tem-
peratura inferior a 22 grados (Mando
automático).

Nos queda por lo tanto la programación


de las ventanas por mando manual y
automático, para ello vamos a insertar 2
nuevos FC´s, el FC3 para el mando
manual y el FC4 para el mando automático.

PROGRAMACIÓN FC 3

El mando manual lo programaremos en 4 segmentos con 4 memorias.

La ventana 1 se activa (SET) con el mando manual con su final de carrera de cerrado pi-
sado y con el final de carrera de abrir sin pisar, ó con el mando manual y los dos finales
de carrera no pisados. (Hay que tener en cuenta que se debe admitir la ventana parcial-
mente abierta, y que por lo tanto en una posición intermedia se puede abrir más, hasta la
apertura total, parándolo su final de carrera de abrir).

Página 186 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
Se puede parar (RESET) con el pulsador de paro, ó con el final de carrera de abrir cuando
la ventana llegue a su posición final.

En el reset se coloca un enclavamiento por software con la salida de cerrar, aunque a la


hora de realizar la instalación será necesario hacer un enclavamiento eléctrico del giro a
derechas con el de izquierdas mediante dos contactos normalmente cerrados de los con-
tactores de fuerza.

En el segundo segmento se programa el cierre de esta ventana.

El cierre de la ventana se realiza con el pulsador de marcha de cierre con el final de carre-
ra de abrir pisado y el final de carrera no pisado, ó con el pulsador de cierre y los 2 finales
de carrera no pisados, para cuando este ocupando una posición intermedia, al igual que
ocurría con su apertura.

La memoria de cierre se resetea con el pulsador de paro, ó con el final de carrera cuando
la ventana llegue al final de su recorrido.

Departamento Eléctrico. AT FORMACIÓN Página 187


EJERCICIOS S7-300
También hemos colocado la salida del contactor de abrir para el cruzamiento explicado
anteriormente, para que no se puedan dar los 2 movimientos a la vez.

No obstante colocaríamos como hemos dicho anteriormente un enclavamiento eléctrico.

Para el control de la ventana 2, la programación es exactamente idéntica a la de la ventana


1, por lo tanto simplemente expondremos los segmentos, donde comprobaremos que es la
misma programación cambiando las entradas y las salidas correspondientes a esta venta-
na.

Vamos a colocar estos segmentos en lenguaje AWL, que nos ocupara un poco menos y de
paso nos valdrá para conocer un poco más este lenguaje de programación.

En el segmento 3 se programa la apertura de la ventana y en cuarto segmento su cierre.

Página 188 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Si comparamos el segmento 1 y el 3 podemos comprender más fácilmente las instruccio-


nes en AWL. Primero se leen las entradas en serie E1.2(N), E1.3 y E1.4, con el paralelo
de E1.2(N), E1.3(N) y E1.4 y se actúa sobre el SET.

De la misma forma se realizan las demás entradas y salidas de las memorias utilizadas.

PROGRAMACIÓN FC 4

En el FC4, como se dijo se programara el accionamiento automático de las ventanas, uti-


lizando como en la forma anterior 4 segmentos con 4 memorias.

En primer lugar programamos el abrir y cerrar la ventana 1 y posteriormente la ventana 2


se realizará de la misma forma.

Departamento Eléctrico. AT FORMACIÓN Página 189


EJERCICIOS S7-300

El mando de temperatura se activa con


el mando de la memoria M52.1 corres-
pondiente al exceso de temperatura, con
el final de carrera de cerrar pisado y el
de abrir no pisado, abandona el movi-
miento al llegar al final de su movi-
miento con el final de carrear de abrir
pisado.
También se realiza un enclavamiento
del giro con las salidas de abrir y cerrar
las ventanas.

El cerrado de la ventana se produce con el final de carrera de abrir pisado y el de cerrar


no pisado, cuando se
produzca un flanco
negativo de la memo-
ria de temperatura por
debajo de los 22 gra-
dos.

Se resetea cuando la
ventana llega al final
de su recorrido detec-
tado con el final de
carrera de cerrar.

Al colocar un flanco
negativo, estamos
obligando a que la
memoria M52.1 este
activada y se desacti-
ve, es decir que la
temperatura venga de
35 a 22 grados.

Página 190 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Los segmentos anteriores correspondientes a la ventana 2, son idénticos a los de la venta-


na 1, por lo que hemos colocado su programación en AWL, como en el caso anterior.

PROGRAMACIÓN OB 1

En primer lugar realizamos la llamada al FC1, en donde se programa la lectura del dato
analógico de temperatura y la temporización del paro automático de los ventiladores.

A continuación se realizan 2 llamadas al FC 2 parametrizable correspondiente al funcio-


namiento de los 2 ventiladores.

Podemos ver las entradas y salidas asignadas a cada variable parametrizada en bloque de
ventiladores.

Las entradas automáticas se corresponden en la activación con la memoria de temperatura


y el reset con el temporizador T0.

Departamento Eléctrico. AT FORMACIÓN Página 191


EJERCICIOS S7-300

Página 192 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

En el segmento 4 se realiza la llamada


al FC 3 correspondiente a las ventanas
en su funcionamiento manual, que se
ejecuta con la entrada de validación
(EN) correspondiente a la entrada E1.7
con valor 1.

En el segmento 5 se realiza la llamada


al FC 3 correspondiente a las ventanas
en su funcionamiento manual, que se
ejecuta con la entrada de validación
(EN) correspondiente a la entrada E1.7
con valor 0.

En resumida cuenta el árbol de llamadas del programa


S7, que podemos obtener si vamos al administrador y
con botón derecho del ratón seleccionamos Comprobar
Coherencia.

Departamento Eléctrico. AT FORMACIÓN Página 193


EJERCICIOS S7-300
Podemos cargar todos los bloques y realizar las comprobaciones correspondientes.

Vamos a comprobar otras cuestiones que podemos analizar, para comprobar informacio-
nes que nos pueden detectar en algunas ocasiones errores en la programación, para ello
volvemos al administrador y con el botón derecho del ratón desplegamos el menú contex-
tual y seleccionamos Datos de Referencia.

Podemos inicialmente Seleccionar Generar, seleccionando en el menú contextual la op-


ción de generar nuevamente, los datos de referencia.

Una vez finalizada la lectura de todos


los bloques, e informado de los posi-
bles errores detectados, volvemos al
menú anterior y seleccionamos en este
caso la opción de Mostrar.

De esta forma se abre el programa de


mostrar datos de referencia S7.

Seleccionamos en Preferencias Refe-


rencias cruzadas y aceptamos.

De esta forma podremos ver la totali-


dad de entradas, salidas, bloques,
FC´s, o cualquier otro tipo de bloque
utilizado.

También podemos ver las caracterís-


ticas de cada uno de estos términos.

Por ejemplo en la captura anterior po-


demos ver algunos de los operandos
utilizados, donde se informa del blo-
que, acceso, lenguaje y punto de apli-
cación.

Página 194 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Los tipos son:

R. Acceso de lectura. W. Acceso de escritura. RW. Acceso de lectura/escritura.

Si vamos al menú de Ver, seleccionamos en este caso la opción de Ocupación. Podemos


observar en este caso todas las entradas, salidas y marcas utilizadas en la programación de
nuestro ejercicio.

También se pueden ver los temporizadores y contadores utilizados.

Los términos marcados con ―X‖ se corresponden a señales o marcas de bit, mientras que
las líneas laterales según se indican en la cabecera se corresponden con marcas de byte,
palabras o doble palabras.

Departamento Eléctrico. AT FORMACIÓN Página 195


EJERCICIOS S7-300
En nuestro caso podemos ver que tenemos los bytes 16 y 17 pisados por las marcas
MD14 y MW16. Esto nos podría crear algún conflicto en la programación, pero si anali-
zamos su utilización vemos que no nos produce ningún problema.

La doble palabra MD14 (32 bits) contiene un numero real redondeado cuyo valor máximo
es de 60, y que por lo tanto ocupa espacio en los bytes 16 y 17, que es adonde se transfie-
re con la instrucción MOVE, por lo tanto se han eliminado 16 bits que tenían por valor
cero, sin modificar el valor de la entrada.

Se puede ver también que se está utilizando el temporizador T0 y ningún contador.

Página 196 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300
PROBLEMA 22. PROGRAMACIÓN DEL OB121.

Como ya hemos comentado anteriormente el OB121, es un bloque de organización que la


CPU llama cuando aparece un error durante la ejecución del programa.

Vamos a ver con un mayor detalle este bloque, analizando alguna de sus posibilidades.

El OB 121 funciona en la misma prioridad que el bloque que ha sido interrumpido.

Si no está programado el OB 121, la CPU pasará de RUN a STOP.

S7 dispone de las SFC´s siguientes que permiten enmascarar y desenmascarar eventos de


arranque del OB 121, mientras se ejecuta el programa:

 La SFC 36 "MSK_FLT" enmascara determinados códigos de error.


 La SFC 37 "DMSK_FLT" desenmascara los códigos de error enmascarados
por la SFC 36.
 La SFC 38 "READ_ERR" lee el registro de estado de eventos.

La tabla siguiente contiene las variables temporales (TEMP) del OB de error de progra-
mación. Como nombres de variable se han elegido los nombres por defecto del OB 121.

Las variables dependientes del código de error tienen el siguiente significado:

Departamento Eléctrico. AT FORMACIÓN Página 197


EJERCICIOS S7-300

Página 198 Departamento Eléctrico. AT FORMACIÓN


EJERCICIOS S7-300

Vamos a tomar uno de los programas realizados anteriormente y vamos a realizar algún
fallo a propósito, para poder ver el funcionamiento del OB121.

Para ello vamos a insertar este bloque de organización y programamos los siguientes
segmentos:

Departamento Eléctrico. AT FORMACIÓN Página 199

También podría gustarte