PDA

Ver la versión completa : Siemens s7-300



Javier_PP
09/03/2010, 21:26
Buenas tardes, soy estudiante de SRCA y estoy implementando un intermitente con un solo temporizador de 1 segundo, es decir, 1 segundo encendido y 1 segundo apagado. Con un S7-300
El problema que tengo es que el temporizador solo me cuenta una vez y no se porque no sigue contando ciclicamente.

En el OB1
""Cargo el temporizador.
SET
L S5T#1S
SE T 1
""Cuando entra el temporizador incrementa 1 el valor.
U T 1
ZV Z 1
"" Si el valor del contador es 1 activa la salida.
L Z 1
L 1
==I
S A 124.0
""Si el valor del contador es 2 desactiva la salida y resetea el contador.
L Z 1
L 2
==I
R A 124.0
R Z 1

Txispo
09/03/2010, 22:34
Hola,
lo más sencillo es que utilices dos temporizadores encadenados con realimentación negativa.

Voy a generar una intermitencia de 1s sobre la marca M100.0:

UN T2 // Realimentación negativa: T1 se activará cuando T2 lleve 1s a FALSE
L s5t#1s // Tiempo a OFF: puedes cambiarlo si quieres
SE T1 // además, cuando T2 se ponga a TRUE, T1 se irá a FALSE

U T1 // M100.0 es mi marca de intermitencia
= M100.0

U M100.0 // Cuando T1 lleve 1 segundo a 1, se activa T2, lo que provocará la
L s5t#1s // desactivación de T1. Este es el tiempo a TRUE
SE T2

Ahora, si quieres que cualquier variable (por ejemplo una salida) parpadee, solo tienes que hacerla una AND con esa marca.

Javier_PP
09/03/2010, 22:36
Pero es que lo tengo que hacer a la fuerza con un solo temporizador.
Mi problema es porque el temporizador no cuenta ciclicamente, es decir, cuenta una vez 1 segundo y no vuelve a empezar de nuevo a contar.
Un saludo Gracias

Txispo
09/03/2010, 22:40
Perdona, no he explicado por qué no te funciona:
Lo que estás haciendo es arrancar el temporizador en la primera ejecución del OB1. Esto hace que 1s después, se active T1, y por lo tanto incremente el contador.
El problema es que no tienes nada que te vuelva a desactivar T1 para que vuelva a empezar el ciclo.
En lugar de ese SET, yo consultaría un bit a 0 (por ejemplo, UN m10.0) y al final, después del R Z1, asignaría T1 a ese bit( U T1 ; = M10.0)
No obstante, es más simple la solución que te he dado antes.

Javier_PP
09/03/2010, 22:54
Ok gracias pero es que necesito hacerlo asi porque la practica lo exige un saludo gracias

Jocker1979
10/03/2010, 02:54
Tienes que usar obligatoriamente un temporizador? lo pregunto porque sino con el bit 5 de la marca de ciclo da un impulso cada segundo.

Ferrani
10/03/2010, 11:25
Supongo que lo que te piden sea un temporizador, pero lo más práctico es lo que dice Jocker!

elhames
10/03/2010, 11:42
Yo utilizaria una OB de interrupcion, la OB35, esta se ejecuta ciclicamente, según tu la configures suele venir por defecto a 0,1s, yo la suelo utilizar para establecer un reloj del sistema. Un saludo.

Javier_PP
10/03/2010, 21:42
Ya consegui ayer hacerlo.
He quitado el SET y he puesto una marca antes del SE T 1 para que me reseteo el temporizador en el momento que sus contactos conmuten. Muchas gracias un saludo