Desde Argentina, me ha llegado una solicitud de ayuda para calcular la frecuencia de una señal digital.
El correo, dice así:
Estimado Iñigo
Déjame contarte que soy un admirador de tu trabajo, por el enfoque y la practicidad que le das a tus cursos.
Te quería consultar unas cosa, para ver si me podes echar una mano.
Tengo que contar las revoluciones de un eje a través de un pulso en una entrada digital.
Estoy trabajando con una CPU siemens 315
Como máximo serian una 50 Hz unos 40 Hz aprox
Como podría medir el tiempo entre los flancos ?
Agradecería mucho tu ayuda
Muchas Gracias
Saludos !!
Contenido
Planteamiento del cálculo de la frecuencia de una señal digital
Entiendo que la entrada que cuenta los pulsos, está conectada a una tarjeta digital normal y no podemos utilizar interrupción de hardware.
Tenemos que pensar, por tanto, que la precisión no vas a ser super alta.
Aunque tampoco parece que sea necesario.
Realmente, lo que queremos obtener es la frecuencia del motor, y para ello, no necesitamos saber el tiempo entre flancos, sino tener la frecuencia en hercios.
Como no tengo más información, he tomado estos parámetros para realizar el cálculo de la frecuencia de una señal digital:
- Con tener una precisión de hercio, será suficiente.
- La obtención de la frecuencia de la señal digital, será cada segundo (en principio).
Sabemos, que la frecuencia va a estar entre los 40 y 50Hz.
Por tanto, como muy rápido, tendremos un ciclo completo de la señal que cuenta los pulsos, cada 20ms.
El OB35
Vamos a usar un bloque cíclico para realizar los cálculos.
Cómo no, será una vez más, a través del OB35
Lo vamos a configurar a 5ms. De esa forma, estamos seguros de que capturaremos todos los pulsos sin perder ninguno.
La frecuencia de la señal digital.
Así pues, lo que vamos a hacer es contar el numero de contactos en 1 segundo, de tal forma que tendremos la velocidad en hercios.
Cada segundo, obtendremos la frecuencia, la guardaremos, y comenzaremos a calcular el nuevo valor de la frecuencia.
Chupao, ¿a que sí?
Para ello, vamos a crear un FB, donde le vamos a pasar los siguientes parámetros:
- Señal actualizada que nos dará los pulsos.
- Frecuencia de escaneo
- El periodo de muestreo
Y nos devolverá la frecuencia en hercios.
La razón de dar la frecuencia y el periodo es para saber cada cuánto vamos a tomar una muestra del estado de la señal y cuánto tiempo.
En principio, si la frecuencia de la señal es alta, con un segundo será suficiente.
Pero si tenemos señales por debajo del hercio, tendremos que hacer muestreos más largos para poder definir esta frecuencia de la señal.
Con este bloque de función, además, podremos realizar más cálculos similares haciendo más instancias de él.
El vídeo de cómo calcular la frecuencia de una señal digital
Te dejo con el vídeo explicativo de lo que he realizado para que calcule los hercios
Espero tus comentarios.
Este tipo de problemas se presentan con bastante frecuencia, y las soluciones suelen ser siempre parecidas.
Está claro que se puede realizar esto mismo de muchas formas. Esta es solamente una, y con las premisas de la aplicación en cuestión.
En otro caso, con otras velocidades, seguramente habría que tomar una solución diferente.
Este ejemplo, para los flamantes poseedores de Cómo programar Step 7 y no morir en el intento, lo dejo en el anexo del curso que he creado dentro de la plataforma.
Ahí, tienes a tu disposición el proyecto para su descarga y el enlace al vídeo para que en un futuro puedas consultarlo y esté todo ordenadito y en su sitio.
Si no has entrado nunca siendo estudiante de este curso, lo tienes disponible en Aula Virtual -> Curso de Step 7 5.x
Además, he añadido una serie de entradas con sus proyectos para que los puedas descargar.
Recuerda que puedes apuntarte en Guorker.com donde por una cuota mensual, tendrás tarifa plana en todos los cursos disponibles en la plataforma.
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.
16 Comentarios
hola mr España . donde puedo obtener un tia portal que se simule sin plc , versión . aquí en panamá no hay eso solo el descontinuado s 7200 solo conocen ese vejestorio aquí .s7 1200 te miran como si fueras de otro planeta , ni el logo v8 lo conocen solo la versión v6 de cable . aquí comprar uno sale muy caro . yo tengo uno pero v6 de cable . cuanto cuesta eso en dólares s71200 mr España. los profes aquí se aferran ese s 7200 … descontinuado ya otra cuanto periodo de vida le queda al logo v6 de cable , cuando lo compre a un vendedor de simens me djo que le daban un periodo de vida de unos cuantos años después no le daban soporte … en eso apenas llegaba el logo v8 .
Lo siento, pero en el tema del software no puedo ayudarte. Las licencias son de pago.
a demás estoy bloqueado ostias cada vez sale un actualización de win10 algo se desconfigura
Por eso mismo, yo me volvi a windows 7.
Saludos!
Hola iñigo, como estas, te felicito por el tiempo que le dedicas a esta gran iniciativa de compartir tus conocimientos y experiencias con nosotros (los que ya entienden y los que recien empiezan con la programacion en siemens), bueno quiero consultarte si existe una version de winncc para window 7 o quizas alguna forma de hacerlo compatible (no quiero usar maquinas virtuales o lo peor, cambiar mi SO a window xp) espero puedas ayudarme con esto, un saludo coordial desde peru.
Hola Iñigo tengo el curso de step 7, el ejemplo dices que lo dejas para descargar, ¿donde esta el anexo al que te refieres?
Muy bueno
muy buen tutorial me quedo muy claro para step7, se puede hacer los mismo en tia portal y cual es la equivalencia en las intrucciones?.
gracias
sí, puedes hacer lo mismo en TIA Portal sin problemas.
Saludos
Excelente, me ha servido muchísimo este ejemplo
Hola Iñigo, te escribo desde Nicaragua, estoy intentando medir la velocidad de un eje, la máxima velocidad es de 4500RPM.
Tengo una CPU 214 de la familia S71200 de siemens, también tengo un sensor inductivo de 1.5 KHZ, he configurado el contador rápido HSC1 pero no logro medir nada, podrías darme una idea de como hacer este proyecto????
Tienes que usas posteriormente las funciones de contaje del 1200.
Gracias Por los ejemplos. Queria consultar si al ser la señal menor a 1HZ, el bloque funcionaria correctamente con la señal de la entrada digital? por ejemplo si colocamos la E1.0 o siempre debemos ralizar el volcado de la periferia para forzar la lectura.
Un hz es muy poco, la verá siempre ya que un PLC tiene un ciclo de refresco mucho mayor.
Buen dia Mr. Una consulta: Qué tipo de taos usó para el Numero de ciclos?. Veo que realiza un contaje rapido. Puede por favor explicarme esa parte?
Perdon, quise decir, qué tipo de dato usó (data type):