> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/spanish/function-blocks/blocks-reference/input-output/outputs-exports/cycle-timer.md).

# Cycle Timer

Este bloque de función mide el tiempo transcurrido entre evaluaciones consecutivas y entrega esa duración como un valor numérico. Es útil para perfilar pasos, medir periodos de bucles o eventos, y supervisar el rendimiento en tiempo real.

## 📥 Entradas

Este bloque de función no tiene entradas.

## 📤 Salidas

`Seconds`\
Entrega el tiempo transcurrido (en segundos) desde la evaluación anterior. En la primera evaluación tras colocar o reiniciar el bloque, el valor será cero.

## 🕹️ Controles

`No Controls`\
Este bloque no tiene controles visibles para el usuario. Actualiza automáticamente su marca de tiempo interna cada vez que se ejecuta.

## ⚙️ Mecanismo de funcionamiento

* Cada vez que el bloque se evalúa en el escenario, compara el tiempo actual con la marca registrada en la evaluación anterior y devuelve la diferencia como `Seconds`.
* La primera evaluación actúa como inicialización y devuelve cero porque no hay una marca de tiempo previa.
* Como mide el tiempo de reloj real (wall-clock), ofrece resolución alta adecuada para medir intervalos cortos entre pasos o eventos.

## 🎯 Características

* Medición de intervalos automática y ligera, sin configuración.
* Temporización de alta resolución, ideal para perfiles y monitorización de ciclos.
* Valores disponibles inmediatamente para procesamiento posterior o registro.

## 📝 Instrucciones de uso

1. Coloca el bloque en tu escenario donde quieras medir el tiempo transcurrido entre evaluaciones.
2. Lee la salida `Seconds` en bloques aguas abajo para registrar, analizar o activar acciones basadas en el tiempo transcurrido.
3. Ten en cuenta que la primera medición tras colocar o reiniciar el bloque devuelve cero.

Combinaciones comunes:

* Usar con `Rising Edge` o `Logic Input` para medir el tiempo entre eventos discretos o acciones disparadas por el usuario.
* Usar con fuentes de imagen como `Camera USB`, `Stream Reader` o `Video` para medir intervalos entre frames o latencia de procesamiento.
* Enviar la salida a `Round` para una presentación numérica más limpia, o a `Scope` para mostrar un gráfico en vivo de los tiempos de ciclo.
* Registrar valores con `CSV Export` o `Image Logger` para conservar el historial de tiempos de ciclo.

## 💡 Consejos y trucos

* Para vigilar la estabilidad del procesamiento, canaliza `Seconds` a `Scope` para visualizar jitter y picos a lo largo del tiempo.
* Para registro a largo plazo, usa `CSV Export` y analiza los datos fuera de línea.
* Al medir entre acciones manuales, combínalo con `Keyboard/Barcode Reader` o `Logic Input` para capturar duraciones exactas evento a evento.
* Si necesitas una visualización formateada, aplica `Round` para reducir decimales antes de mostrar los valores en bloques de UI.

## 🛠️ Solución de problemas

* Si siempre ves ceros, verifica que el escenario esté realmente ejecutándose de forma repetida y no esté congelado; la primera evaluación tras colocar o reiniciar devuelve cero por diseño.
* Si las mediciones muestran intervalos inesperadamente pequeños, asegúrate de que el bloque no esté siendo evaluado múltiples veces por paso lógico debido a otras construcciones del flujo. Considera usar un disparador de evento (por ejemplo `Rising Edge`) para que el bloque mida solo en los momentos deseados.
* Para reducir picos ruidosos en mediciones a corto plazo, suaviza o promedia varios valores consecutivos de `Seconds` mediante procesamiento aguas abajo o registrándolos y post-procesando.
