En esta entrada vamos a ver formas fáciles para crear marcas cíclicas que luego podamos usar a lo largo y ancho de nuestro programa.
Así podremos usar:
- Las marcas de ciclo
- Temporizadores
- Crear la marca en OB cíclicos
Como digo la idea es que podamos hacer llamadas o acciones a tiempos fijos. Normalmente, y si necesitamos una precisión alta, tendremos que realizar la acción o llamadas desde OB cíclicos cuya frecuencia habremos fijado de antemano al configurar el HW. Pero no es la única forma de realizar acciones a tiempos fijos.
Claro que tiempos fijos, más o menos, porque lo que te voy a mostrar a continuación es para ser usado desde el OB1 o FC/FB que dependan del OB1 y por tanto el error que vamos a introducir es del orden del tiempo de ciclo total del PLC. Esto implica que si queremos flancos cíclicos a tiempos de 100ms, no uses jamás el OB1 ya que el error que estás cometiendo el del orden de magnitud que la periodicidad deseada, es decir, si quieres tiempos fijos y la llamada es del OB1 cuyo tiempo de ciclo varía entre 10 y 30ms, pues hombre, menos preciso, es cualquier cosa.
Ahora bien, si tus marcas cíclicas van a ser del orden de segundos, la cosa cambia ya que el error que vas a cometer es pequeño. En cualquier caso, usaras este tiempo de marcas cíclicas en acciones en el que la precisión no sea crucial. Creo que está claro el concepto.[divider]
Contenido
Marcas cíclicas del PLC
Haciendo un corta&pega de la ayuda de Siemens, esta dice lo siguiente sobre las marcas de ciclo:
[quote]Las marcas de ciclo son marcas que cambian periódicamente su valor binario (relación impulso – pausa: 1:1)[/quote]
¿A que ahora te has quedado más tranquilo? Yo también.
Afortunadamente, tiene una segunda ayuda en la cual muestra una tabla con los periodos de estas marcas.
Como veis va desde una frecuencia de 0,5Hz hasta los 10Hz pasando por valores intermedios. Visto desde el lado del periodo, va desde valores de 0,1 segundos hasta los 2 segundos.
¿Cómo se activa?
Configurándolo desde el configurador de hardware. Tendrás que abrir el configurador de HW, abrir la CPU e ir a la pestaña de Ciclo /Marca de ciclo. Abajo tienes que seleccionar el checkbox de marca y seleccionar el número de marca que quieres usar. Ojo porque es un byte, no un word. Tenlo en cuenta. Hay 8 marcas de ciclo.
¿Y ahora?
Pues tienes que guardarlo, compilar y cargarselo al PLC. Ojo porque el PLC va a pasar a STOP, así que:
[quote]Siempre que empieces un proyecto en Step 7, selecciona y configura un byte para tu marca de ciclo[/quote]
No cuesta nada, y así no tendrás el pequeño inconveniente de que cuando lo quieras usar, pues no podrás porque la máquina estará en marcha y no la puedes parar hasta dentro de no sé cuantos millones de horas… y todo por no haber elegido una put.. marca cuando configuraste el hardware. ¿Adivinas a quién le ha podido pasar algo así alguna vez? Pues eso.[divider]
Marcas cíclicas usando temporizadores
Otra forma común de realizar ondas cuadradas es con dos temporizadores. La forma de construirlo es muy sencillo como muestra en la imagen. Ambos temporizadores se irán alternando en el contaje del segundo.
El temporizador T2 tendrá un periodo de 1s su salida a cero y un periodo de su salida a 1. El T1 por su parte estárá siempre a cero salvo un instante (un ciclo de scan) que será el desencadenante de tirar el T2 y que vuelva a empezar.
Así, haciendo la lectura del T2, tendremos una marca cíclica de periodo 1segundo en este caso. La ventaja de este, es que se puede variar la relación de tiempo ON/OFF jugando con los tiempos del T1 y del T2.[divider]
Marcas cíclicas usando un OB cíclico
Una forma de crear una marca cíclica es usar un OB cíclico. Imaginemos que queremos cada 0,5 segundos. Cargaremos un OB cíclico que fijaremos a 500ms. Luego haremos un super código. Imaginemos que queremos hacerlo con la M50.0:
UN M50.0
= M50.0
Escalofriante ¿eh? Es tan simple que da miedo. Cada 500 ms irá cambiando de estado. Brillante.
Hombre, usaremos los OB cíclicos aprovechando que ya exista, pero si te quieres pegar un lujo, es una forma de hacerlo.
Teniendo OB cíclicos, ¿no hay más formas?
Pues hombre, sí. Por ejemplo, creando contadores de 1 a 10 en el OB35 y si está fijado a 100ms por ejemplo, poniendo a uno una marca cuando el contador sea superior o igual a 5 y reseteando cuando sea igual o superior a 10.
Bueno, como ves hay muchas formas de crear marcas cíclicas. Espero que te haya sido de utilidad y que lo uses mucho en tus proyectos. [divider]
Referencias:
[divider]
Enseño a programar PLC de Siemens a través de mis cursos.
Más información sobre mi aquí
Puedes seguirme en cualquiera de las siguientes redes sociales.
15 Comentarios
A esto se llama ser didáctico, gracias Íñigo, si no empezamos por abajo, va a ser difícil subir. Un fuerte saludo.
De nada 😉
A mi juicio está bien saber este tipo de cosillas. Cómo hacer cosas básicas, pero que muchas veces si no las has visto ni te las han contado, pues no se te pasan por la cabeza.
Estaría bien que los que leeis el blog me mandarais trucos y poderlo compartir con el resto. Pero bueno, igual ya eso es demasiado pedir.
Esta semana nueva entrada…. va de displays.
Un saludo,
hola esta muy bien tu blog quisiera hacer saber si me puedes orientar en algunos temas este es uno hay alguna funcion el que pueda multiplicar un pulso y el resuldo se guarde
Hola David,
¿Podrías explicarte mejor? Porque no entiendo lo que quieres hacer.
Un saludo
hola como estas?
quisiera saber si hay algun programa ciclico de segundo a minuto por ej: que haga un sonido en 5 minutos y luego en 30, luego 5 minutos y otra vez 30 seg. desde ya gracias
Hola Cristian,
Es tan sencillo como programar el OB35 en segundos y hacer un pequeño programa que haga lo que quieras.
También lo puedes hacer con un FB llamado desde el OB1 y pasando como entrada el tiempo de scan del OB1 en ms e ir haciendo la cuenta. Si la resolución son segundos no debería haber problemas.
Un saludo
Estimado, el heho de saber y compartir el conocimiento habla muy bien de la persona, desde argentina, mis mas sinceras felicitaciones por ser profesional!!
Hola Iñigo!
Soy principiante en lo que se refiere a programación de PLCs. Actualmente estoy realizando un pequeño proyecto para la universidad. Quiero contar los strokes por minutos (SPM) de una bomba. El sistema cuenta con un sensor inductivo que envía un pulso cada vez que se ha producido un stroke en la bomba. Yo hice lo siguiente: en un FC coloque un contador que permite leer cada stroke, ese valor acumulado lo divido por el tiempo de un temporizador el cual inicia su conteo con el primer stroke. El resultado de la división lo multiplico por 60. SPM=(CONTADOR/TEMPORIZADOR)*60. El problema es que los SPM no es el correcto. Por favor si puedes ayudarme te agradecería un mundo.
Hola.
Sin ver el código es difícil de saber donde te estás equivocando.
Lo que yo haría sería contar con el inductivo en el ob35 puesto a lo que te permita la CPU. Ojo. Tienes que contar usando un pulso por delante y sumarlo a una variable entera. Un contador no te valdrá.
Por otro lado, en cada ciclo del ob35 suma el tiempo de scan del ob35 para obtener el tiempo en ms.
Luego haces las divisiones y multiplicaciones pertinentes y listo
Saludos
BUE DÍA, QUIERO ACTIVAR Y DESACTIVAR CON EL MISMO PULSADOR, COMO PUEDO HACER, TENGO UN PLC S7 1200 DE CON EL PROGRAMA TIA PORTAL V13
Puedes fabricarte un telerruptor.
Es en step 7 aunque en tía portal https://programacionsiemens.com/algebra-booleana-en-step-7/
Échale un vistazo por si te sirve.
Saludos
Buenas Íñigo,
Muchas gracias por tus publicaciones, son de gran ayuda.
Tenemos una pregunta. Necesitamos un bit con una frecuencias de 10 hz (o 5 hz , la frecuencias no es importante), pero que sea muy precisa, que nos de 0.1s 0 0.2s de forma exacta.
¿Sabes si existe alguna manera de hacerlo?
Muchas gracias de antemano,
Un saludo
Lo mejor si necesitas mucha precisión es que uses los OB cíclicos y ejecutes a tiempo fijo lo que desees.
excelente informacion,gracias. Deveria de compartir informacion de como se lee la secuencia de un proceso en linea de produccion, cuando el programa no ha sido realizado por nosotros . detectar fallas de señales. nuevamente gracias.
Para eso hay que conocer el proceso. Entenderás que si teniendo delante el programa, es complicado saber qué pasa, imagina que no hay una varita mágica genérica que haga qué debes hacer en cada caso, sin saber ni remotamente qué puede estar pasando.