Contadores para Todas las Entradas DIN

  • 9 Respuestas
  • 482 Vistas

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1642
  • Soporte Técnico
Contadores para Todas las Entradas DIN
« : junio 24, 2016, 14:31:21 pm »
Buenos días Jose,

Te paso adjunto ejemplos y actualizaciones para utilizar todas las entradas DIN disponibles del PLC como contadores.

Luego vamos a subir las actualizaciones oficialmente a la pagina, para descargarlas directamente con StxLadder.

Mientras tanto, para usarlas es necesario realizar el siguiente procedimiento:

STXLADDER

Copiar el archivo: din.inc que te adjunto en este mensaje en el <directorio de instalación StxLadder>\slicetex\StxLadder\pawn\include\common, que puede ser por ejemplo: C:\Program Files\slicetex\StxLadder\pawn\include\common. Quizás necesites permisos de administrador.

Sobrescribir el archivo que exista.

PLC

Actualizar el firmware del PLC a la versión 201 que te adjunto en archivo stx8091-d1-v201.sff.

Desde el menú "PLC / Actualizar firmware (AxBoot)" en StxLadder poder actualizarlo.

Para mas información leer:

http://slicetex.com/ladder/docs/files/STXLADDER-FU.pdf

EJEMPLO - 1

Una vez actualizado podes cargar en el PLC el ejemplo DinCounters.zip que adjunto con StxLadder.

Luego podes acceder con el navegador al PLC a la página (suponiendo que la IP del PLC es la utilizada por fabrica):

http://192.168.1.81/counters.shtml

La pagina se actualizará con las frecuencias, RPM y cuentas detectada en cada entrada.

Leer archivo info.txt del proyecto para mas informacion.

EJEMPLO - 2

Cargar en el PLC el ejemplo DinCountersSimple.zip que adjunto con StxLadder.

La finalidad es mostrar de forma simple las funciones utilizadas por el contador.

Este ejemplo tiene la siguiente lógica:

Si la frecuencia de cuenta en la entrada DIN1 es mayor a 20 Hz,
se activa la salida DOUT1.

Si la frecuencia de cuenta en la entrada DIN2 es mayor a 100 Hz,
se activa la salida DOUT2.

Si la frecuencia de cuenta en la entrada DIN3 es mayor a 500 Hz,
se activa la salida DOUT3.

Leer archivo info.txt del proyecto para mas informacion.

FUNCIONES DISPONIBLES

Breve resumen de las funciones disponibles:



DinCounterConfig(SampleRate): Incializa y configura los contadores para las entradas DIN.

El valor de SampleRate puede ser entre 1 y 1000, y permite establecer el intervalo de muestreo
del procesador sobre las entradas para la muestra.
El valor de SampleRate tiene una resolución de 0.1 mS, es decir, un valor de 10, se traduce
en un intervalo de muestreo de 0.1 mS x 10 = 1 mS.

Para el modelo STX8091, con DinCounterConfig(1), se lograron medir correctamente
frecuencias de conteo máximas entre 2.5 KHz y 3.5 KHz.

Conviene establecer un valor de sampleo para DinCounterConfig() lo mas grande posible,
para evitar recargar el procesador con operaciones innecesarias, por ello si la máxima frecuencia
de lectura esta entre 100 Hz y 300 Hz, utilice un valor de "10", para frecuencias menores,
puede utilizar valores mayores. Por prueba y error puede determinarlo.

Esta función debe llamarse una sola vez al inicializar el PLC o antes de usar los contadores.

Las operaciones de lectura normales de entradas se pueden seguir utilizando, excepto el evento @OnDinChange().

Ejemplo:

// Configurar todas las entradas DIN para funcionar como contadores.
// Intevalo de muestreo: 10*0.1 mS = 1 mS.
// A menor intervalo, mayor frecuencia y precision puede lograr.

DinCounterConfig(10)


Nota: No confunda contadores DIN con los contadores rápidos, que son mas eficientes pero reducidos en numero por una cuestión de hardware.




DinCounterDisable(): Desactiva la función de cuenta para las entradas DIN.



DinCounterGetValue(DinNum): Obtiene la cuenta actual del contador de la entrada DinNum (entre 1 y el numero maximo de entradas del PLC).

Ejemplo:

new Count

// Obtener cuenta del contador asignado para entrada DIN4.
Count = DinCounterGetValue(4)




DinCounterGetFreq(DinNum): Obtiene la frecuencia actual del contador de la entrada DinNum (entre 1 y el numero máximo de entradas del PLC). Precisión +/- 1 Hz.

Ejemplo:

new Freq

// Obtener frecuencia en Hz del contador asignado para entrada DIN4.
Freq = DinCounterGetFreq(4)




DinCounterGetRPM(DinNum): Obtiene la RPM actual del contador de la entrada DinNum (entre 1 y el numero máximo de entradas del PLC).

Ejemplo:

new RPM

// Obtener la RPM del contador asignado para entrada DIN4.
RPM = DinCounterGetRPM(4)




DinCounterClear(DinNum): Borra los registros del contador de la entrada DinNum (entre 1 y el numero máximo de entradas del PLC).

Ejemplo:

// Eliminar cuenta contador asignado para entrada DIN4. Resetea a 0.
DinCounterClear(4)




Se adjunta señal de prueba, imagen osciloscopio con onda cuadrada 12 Vcc - 0 Vcc aplicada a entradas DIN1 y DIN7 (181.5 Hz)
de generador de señal y medición en pagina web del PLC.

Quedamos a disposición por cualquier duda.










« Última Modificación: junio 24, 2016, 20:59:50 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1642
  • Soporte Técnico
Re:Contadores para Todas las Entradas DIN
« Respuesta #1 : junio 27, 2016, 20:17:52 pm »
Adjunto ejemplo DinCountersOffline.zip que incorpora archivo jquery-3.0.0.js localmente en la memoria del PLC.

No es necesario que el navegador este conectado a internet para que las funciones JavaScript funcionen con este ejemplo.

El archivo jquery-3.0.0.js se llama desde el archivo header.html de la siguiente manera:

Código: (HTML) [Seleccionar]
<!-- Cargar libreria jQuery desde archivo local -->
<script type="text/JavaScript" src="/jquery-3.0.0.js"></script>

PD: La desventaja es que ocupa memoria para almacenar el archivo que podría ser utilizada por el programa.
« Última Modificación: junio 28, 2016, 13:32:24 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

JoseE

  • Novato
  • *
  • Mensajes: 4
Re:Contadores para Todas las Entradas DIN
« Respuesta #2 : junio 28, 2016, 09:59:47 am »
Hola Boris.

Ante todo muchas gracias por el gran aporte que nos hiciste ya que ampliamos en una gran medida las capacidades del PLC.

Despues de hacer todas las actualizaciones del sofware StxLadder y del firmware del PLC realice las pruebas y anduvo todo bien.
El unico inconveniente fue en el ejemplo 1, DinCounters, ya que el servidor web no podia leer nada del PLC, ni el estado de las entradas, ni la fecha y la hora, pero con tu segundo posteo y con el nuevo ejemplo DinCountersOffline, pude solucionar dicho problema, ya que el error era devido a que la maquina no estaba conectada a internet como bien afirmaste

Mas tarde hice un programa y utilice el virtualHMI para mostrar las lecturas de la entrada DIN1, del contador, de la frecuencia y de las RPM y anduvo todo bien. Probe con diferentes frecuencias y siempre obtuvo una buena lectura. Adjunto una imagen con el programa y la interface del virtualHMI.

Por ultimo descargue el ejemplo DinCountersOffline, lo ejecute y obtuve nuevamente buenas lecturas con el navegador que adjunto mas abajo.

Todas las prubas realizadas se hicieron con un "generador" de onda "cuandrada" de 5V de pico y con frecuencias variables de entre 10 y 100 Hz. Las imagenes fueron tomadas ambas con frecuencias de 100 Hz


JoseE

  • Novato
  • *
  • Mensajes: 4
Re:Contadores para Todas las Entradas DIN
« Respuesta #3 : junio 28, 2016, 12:50:36 pm »
Hola Boris.

El contador es una variable de cuantos byte? o sea, hasta cuando puede contar? cuando se desborda que pasa? arranca en cero nuevamente?
Mi idea era reiniciarlo cada cierta cantidad de cuentras, pero cuando se reinicia produce un error en la funcion que da la freciuencia y en la de las RPM.

Saludos, Eduardo.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1642
  • Soporte Técnico
Re:Contadores para Todas las Entradas DIN
« Respuesta #4 : junio 28, 2016, 13:46:51 pm »
Buenas tardes Eduardo,

¿Cual es el error que te estaría dando? ¿Que medición lees?.

Cada contador tiene asignado una variable de 32-bits. Cuando desborda comienza en 0 nuevamente.

Desde el programa Pawn, al trabajar con enteros con signo, la dimensión real seria de 31 bits o el numero máximo entero 2147483647.

Nota: Actualmente, al pasar de ese valor entero (2147483647), empezarías verlos como numero negativos hasta que llegue a 0 en Pawn. Esto se puede corregir, luego te aviso cuando corrijamos ese comportamiento con una nueva actualización de firmware.

Por otro lado, según me comentas:

Citar
Todas las pruebas realizadas se hicieron con un "generador" de onda "cuadrada" de 5V de pico

Te recomendaría utilizar una tensión un poco mayor de 9V para arriba (12V seria lo ideal) ya que con +5V estas muy cerca de la tensión mínima de polarización, y para DIN7/DIN8 estas por debajo. Esto te puede hacer perder cuentas.

Ver hoja de datos, tabla 11, pagina 39:

http://slicetex.com/hw/stx8091/docs/STX8091-DS-AX_BX_CX_DX.pdf

Si necesitas, podes crear libremente un nuevo usuario en el foro con tu nombre así las notificaciones de respuestas te llegan a tu email  ;)

Saludos



« Última Modificación: junio 28, 2016, 13:56:42 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

JoseE

  • Novato
  • *
  • Mensajes: 4
Re:Contadores para Todas las Entradas DIN
« Respuesta #5 : junio 29, 2016, 09:32:35 am »
Buen dia Boris.

La comillas de la frase Todas las pruebas realizadas se hicieron con un "generador" de onda "cuadrada" de 5V de pico son porque no se que tan cuadrada es la onda ya que no tengo un osciloscopio a mano. Estoy usando como "generador" de ondas el arduino mega que alimenta la corriente de base de un transistor NPN alimentado con Vcc= 5V porque estoy usando la fuende de la misma placa, pero no habria drama en usar una fuente de 12V ya que puedo usar la del PLC.

En cuanto al error del que te comente en el post anterior, se da cuando reinicia el contador ya que la funcion que da la frecuencia y la de las RPM pierden la cuenta, entonces tardan cierta cantidad de cuentas en estabilizarse nuevamente.
No puedo darte mas detalles del error ya que no se como se programo la funcion que arroja la frecuencia medida. Las programas en pawn tambien o en otro lenguaje de menor nivel? Si las programas en paun me gustaria ver el codigo, ya que una de las señales que tengo que medir tiene una frecuencia de 5Hz y con dicha funcion, voy a tener un error muy grande, por lo tanto, tengo que hacer otra funcion usado el contador, pero que cuente mas cantidad de pulsos en mas tiempo y que despues haga la cuenta. De esta manera voy a disminuir en gran medida el error de la medicion.

Saludos, Eduardo.



Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1642
  • Soporte Técnico
Re:Contadores para Todas las Entradas DIN
« Respuesta #6 : junio 29, 2016, 11:35:03 am »
Buenos dias,

La señal de 12Vcc solo es para tener en cuenta por si no logras contar algún pulso, y para hacerlo de esa forma al final en tu producto.

Es a bajo nivel la implementación de los contadores, no es en Pawn.

Actualmente para el calculo de frecuencia, es necesario un tiempo de muestreo (máximo 2 segundos) para que se generen los datos necesario y se estabilicen los datos. Luego se actualiza cada 1 segundo la frecuencia.

Sin embargo el numero de cuenta se actualiza instantaneamente.

Para solventar el tema de medición de frecuencia podes hacer:

Al reiniciar la cuenta, deberías esperar 2 segundos antes de llamar a la función de frecuencia (así no lees datos erróneos).

La otra opción, es que bajemos un poco ese tiempo de actualización, tendría que ver pero podría disminuirse entre 0.5 a 1 segundo.

La pregunta es, si medís frecuencia, ¿por qué reinicias el contador?.


« Última Modificación: junio 29, 2016, 11:40:27 am por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

JoseE

  • Novato
  • *
  • Mensajes: 4
Re:Contadores para Todas las Entradas DIN
« Respuesta #7 : julio 01, 2016, 13:09:37 pm »
Buen dia.

La idea era obtener el dato de la frecuencia y reinicar luego el contador cada cierto, tiempo mayor a esos 2 segundos. De esta manera te aseguras de leer correctamente la frecuencia y con una variable de 16 bit alcanzaria. Porque podria pasar el caso de leer la frecuencia cuando esta desbordando el contador y reiniciandose, y obtener una medicion erronea.
Igualmente con los datos que me dio ya me sirve para obtener la frecuencia sin errores, no es necesario cambiar nada.

Saludos, Eduardo.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1642
  • Soporte Técnico
Re:Contadores para Todas las Entradas DIN
« Respuesta #8 : julio 01, 2016, 20:12:35 pm »
Buenas tardes Eduardo, muy bien, luego le aviso cuando cuando subamos la versión oficial.

Saludos

SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1642
  • Soporte Técnico
Re:Contadores para Todas las Entradas DIN
« Respuesta #9 : julio 11, 2016, 09:04:05 am »
Buenos días,

Ya esta disponible la actualización de firmware y el entorno StxLadder con las actualizaciones oficiales sobre este tema y otros:

http://www.slicetex.com/hw/stx8091/soft.html

http://www.slicetex.com/ladder/soft/

En la versión 202 del firmware se corrige el rebase de los contadores, cuando llega al valor 2147483647, vuelve automáticamente a 0 y sigue contando.

Saludos
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com