> 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/data-logic/logic/set-reset.md).

# Set - Reset

Un bloque lógico sencillo de tipo latch que almacena un estado booleano. Úsalo cuando quieras que un disparador active algo y otro disparador lo desactive, manteniendo el último estado entre evaluaciones.

## 📥 Entradas <a href="#inputs" id="inputs"></a>

* `Set` Envía una señal TRUE para fijar la salida enclavada.
* `Reset` Envía una señal TRUE para limpiar la salida enclavada.

## 📤 Salidas <a href="#outputs" id="outputs"></a>

* `Check` Valor booleano actual enclavado (TRUE cuando está seteado, FALSE cuando está reseteado).

## 🕹️ Controles <a href="#controls" id="controls"></a>

No tiene controles o widgets interactivos. Este bloque solo utiliza sus puertos de entrada para cambiar el estado enclavado.

## 🎯 Características <a href="#features" id="features"></a>

* Comportamiento de latch que preserva la última salida hasta que cambie.
* `Reset` tiene precedencia: cuando `Reset` está activo, la salida se limpia independientemente de `Set`.
* Salida estable, adecuada para alimentar otras lógicas, contadores, indicadores o actuadores.

## 📝 Cómo usar <a href="#usage" id="usage"></a>

1. Conecta una señal momentánea o condicional a `Set` para activar el latch.
2. Conecta una señal separada a `Reset` para desactivar el latch.
3. Usa la salida `Check` como habilitación/flag persistente para procesos o salidas subsecuentes.

## 📊 Comportamiento durante la ejecución <a href="#evaluation" id="evaluation"></a>

* Si `Reset` es TRUE, la salida se vuelve FALSE.
* Sino, si `Set` es TRUE, la salida se vuelve TRUE.
* Si no, la salida permanece en su valor previo.

## 💡 Tips y Trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Usa `Logic Input` para control manual de `Set` y `Reset` durante las pruebas.
* Combínalo con `Rising Edge` o `Edge Rising` cuando tu disparador sea un pulso momentáneo para que el latch solo se active una vez por evento.
* Emplea `Delay Step`, `ON Delay` o `OFF Delay` para crear resets temporizados o implementar un simple antirrebote para señales ruidosas.
* Combínalo con `Counter` para contar ocurrencias mientras el latch está activo; alimenta la salida del latch al enable del contador.
* Usa `And`, `Or` y `Not` para construir condiciones de set/reset más complejas (por ejemplo, requerir múltiples condiciones antes de setear).
* Conduce un indicador visual con `Led Output` o envía el estado enclavado a `Output` para sistemas externos.

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* Si el latch nunca cambia, verifica que el bloque aguas arriba esté enviando un booleano cambiante y considera usar `Rising Edge` para convertir un TRUE continuo en un disparo único.
* Si el latch se limpia inmediatamente al intentar setearlo, comprueba si la entrada `Reset` está siendo llevada a TRUE por otro bloque.
* Para rebotes o disparos repetidos, añade `Delay Step` o un detector de flancos apropiado para evitar múltiples toggles no deseados.
