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:
STXLADDERCopiar 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.
PLCActualizar 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.pdfEJEMPLO - 1Una 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.shtmlLa pagina se actualizará con las frecuencias, RPM y cuentas detectada en cada entrada.
Leer archivo
info.txt del proyecto para mas informacion.
EJEMPLO - 2Cargar 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 DISPONIBLESBreve 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.