> 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/flow-control/subsystem-in.md).

# Subsystem In

Este bloque se utiliza para importar un valor desde un escenario padre hacia un subsistema (una escena anidada) y ponerlo a disposición de los bloques dentro de ese subsistema. Actúa como un puerto de entrada numerado para el subsistema y se sincroniza automáticamente con las entradas del escenario padre.

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

Este bloque no declara entradas directas locales (recibe datos desde el escenario padre en lugar de entradas desde sockets locales).

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

`Generic`\
Esta salida proporciona el valor suministrado por el escenario padre. Dentro del subsistema, conecte esta salida a cualquier bloque que necesite el dato proveniente del padre.

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

`Title`\
El bloque muestra un número que identifica su posición entre las entradas del subsistema (por ejemplo: 1, 2, 3).

`Scene Index`\
Cada bloque tiene asignado un índice de escena que determina a qué entrada del padre se mapea. El título mostrado refleja este índice.

Nota: La numeración se gestiona automáticamente. Cuando agregue, elimine o reordene bloques de entrada del subsistema, sus números mostrados se actualizan para coincidir con el orden.

## ⚙️ Mecanismo de ejecución <a href="#running-mechanism" id="running-mechanism"></a>

* Cuando se ejecuta el subsistema, cada bloque `Subsystem In` proporciona el valor que llega desde la entrada correspondiente del escenario padre.
* En el escenario principal (padre), la entrada correspondiente suministra los datos que fluyen hacia la entrada del subsistema.
* El bloque mantiene su mapeo sincronizado con el escenario padre para que el subsistema reciba la entrada correcta incluso si se agregan o reordenan entradas en el padre.
* El bloque es compatible con contextos de prueba o respaldados por memoria (el sistema adapta el comportamiento según si el subsistema se ejecuta de forma independiente o está embebido).

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

* Numeración automática y mapeo por índice para identificar fácilmente las entradas del subsistema.
* Sincronización dinámica con las entradas del padre: los tipos de socket y el orden siguen automáticamente al escenario padre.
* Funciona sin problemas con modos de subsistema habilitado/deshabilitado (cuando use el mecanismo de habilitación del subsistema, el comportamiento de las entradas se adapta).
* Diseñado para ser ligero y no redimensionable, manteniendo un diseño compacto para el control del flujo.

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

1. Coloque un subsistema y abra su escena hija.
2. Agregue uno o más bloques `Subsystem In` dentro de la escena hija. Cada uno aparecerá con un número (1, 2, ...) que indica a qué entrada del padre se asigna.
3. En el escenario padre, suministre datos a los sockets de entrada correspondientes del subsistema. Esos datos estarán disponibles desde la salida `Generic` dentro del subsistema.
4. Dentro del subsistema, conecte la salida `Generic` a otros bloques que necesiten el valor proporcionado por el padre.

## 💡 Consejos y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Use junto con `Subsystem Out` para devolver resultados desde el subsistema al escenario padre.
* Combine con `Subsystem Enabled` cuando necesite ejecutar el subsistema de forma condicional o conmutada; el comportamiento de las entradas se adapta cuando el subsistema está habilitado/deshabilitado.
* Si desea conservar o congelar un valor de entrada dentro del subsistema, empareje la salida `Generic` con `Data Memory` para mantener el valor entre ejecuciones.
* Para depurar o inspeccionar lo que el padre envía al subsistema, conecte la salida `Generic` a `Debug Input` o muéstrela con un bloque visor/output adecuado.
* Para pasar valores de configuración (números, texto o booleanos) desde el padre, use bloques en el lado del padre como `Number Input`, `String Input` o `Logic Input` y mapee esos valores mediante el correspondiente `Subsystem In` dentro de la escena hija.

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

* Si un bloque `Subsystem In` muestra un número inesperado, intente agregar o eliminar otras entradas del subsistema; la numeración se actualizará automáticamente.
* Si el subsistema no recibe valores, verifique que el escenario padre esté suministrando datos en el socket de entrada correspondiente y que el subsistema esté correctamente agregado al padre.
* Si necesita cambiar tipos de socket, el sistema sincronizará los puertos hijos para que coincidan con el padre: reconstruya las conexiones después de cambios importantes para confirmar el comportamiento correcto.
