> 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/communication/siemens-s7-read.md).

# Siemens S7 Read

Este bloque de función lee datos de una base de datos (DB) de un PLC Siemens S7 y entrega el valor para usarlo en otras partes de tu escenario. Soporta tipos de datos comunes de PLC y ofrece una interfaz simple para definir el número de DB, la dirección de byte y el tipo de dato. Usa la entrada `Enable` para activar las lecturas y proporciona un `S7 Client` conectado (desde un bloque de conexión).

## 📥 Entradas

* `Enable` — Entrada para activar o desactivar la lectura. Proporciona una señal booleana (por ejemplo desde un bloque `Logic Input`) para controlar cuándo se realizan las lecturas.
* `S7 Client` — Entrada que acepta un objeto cliente/conexión (normalmente provisto por un bloque `Siemens S7 Connect`). Indica al bloque con qué PLC/servidor comunicarse.

## 📤 Salidas

* `Data` — Salida que proporciona el valor leído desde el PLC. El tipo de valor depende del `DB Data Type` seleccionado (número, cadena, lista booleana, etc.).

## 🕹️ Controles

* `DB Number` — Introduce el número de DB (data block) desde el que leer.
* `DB Byte Address` — Introduce el desplazamiento en bytes dentro del DB donde empieza el valor solicitado.
* `DB Data Type` — Menú desplegable para seleccionar el tipo de dato a leer (ej.: Boolean, Int, DInt, Real, String, Word, DWord, Time, ...).
* `Connection Type` — Menú desplegable para elegir el modo de conexión (ej.: Sync o Async). Controla cómo comparte/usa el bloque la conexión al PLC con otros bloques.

## ⚙️ Cómo funciona

* Cuando la entrada `Enable` está activa, el bloque lee el valor en el `DB Number` y `DB Byte Address` configurados usando el `DB Data Type` seleccionado y lo envía inmediatamente por la salida `Data`.
* El bloque espera recibir un `S7 Client` conectado en su entrada. Si el cliente no está conectado, el bloque reporta un error de conexión y no enviará datos.
* La opción `Connection Type` determina si el bloque usa una conexión compartida (síncrona) o una conexión dedicada/asincrónica al interactuar con el PLC. Elige el modo según tu configuración.

## 🎯 Características clave

* Soporta muchos tipos comunes de PLC: arreglos booleanos, enteros (SInt/Int/DInt), tipos sin signo, valores de coma flotante (Real/LReal), cadenas, Word/DWord y tipos de tiempo.
* Controles de interfaz simples para número de DB, dirección de byte y selección de tipo de dato.
* Selección de modo de conexión para escenarios donde varios bloques acceden al mismo PLC.
* Devuelve datos en un formato listo para usar por otros bloques del entorno.

## 📝 Instrucciones de uso

1. Añade un bloque `Siemens S7 Connect` y configura allí la dirección del PLC y parámetros de conexión.
2. Conecta la salida del bloque `Siemens S7 Connect` a la entrada `S7 Client` de este bloque.
3. Ajusta `DB Number` y `DB Byte Address` con los controles.
4. Selecciona el `DB Data Type` correcto que corresponda a la variable del PLC que quieres leer.
5. Usa un `Logic Input` u otra señal booleana en la entrada `Enable` para controlar cuándo se realizan las lecturas.
6. Consume la salida `Data` para visualización, registro o para tomar decisiones en el flujo.

## 💡 Consejos y trucos

* Combínalo con `Siemens S7 Connect` para gestionar la conexión al PLC de forma centralizada — ese bloque suministra el cliente que este bloque espera en `S7 Client`.
* Usa `Logic Input` para habilitar/deshabilitar lecturas periódicas o para lecturas bajo demanda.
* Si quieres visualizar tendencias numéricas en tiempo real, conecta la salida numérica `Data` a un bloque `Scope`.
* Para guardar lecturas para análisis posteriores, envía la salida `Data` a `Data to JSON` y `CSV Export`.
* Envía telemetría conectando `Data` a `MQTT Publish` para monitoreo en la nube o a `Send Mail` para alertas (mediante un mensaje estructurado).
* Comparte resultados de lectura en el escenario usando `Data Write Global` / `Data Read Global` o bloques de memoria locales para que otras partes reaccionen sin volver a leer el PLC.
* Para depuración, usa `Debug Input` para registrar el valor de salida y verificar direcciones y tipos de datos.
* Si varios bloques leen/escriben la misma zona del DB, prueba cambiar `Connection Type` a `Sync` para evitar problemas de concurrencia.
* Al leer campos de texto, ten en cuenta la longitud y codificación en el PLC. Verifica la longitud esperada en el DB del PLC para evitar truncamientos.

(hint: Bloques útiles para combinar: `Siemens S7 Connect`, `Logic Input`, `Number Input`, `Data to JSON`, `CSV Export`, `MQTT Publish`, `Scope`, `Debug Input`, `Data Write Global`)

## 🛠️ Solución de problemas

* Sin datos o error de conexión: Verifica que el PLC sea accesible y que `Siemens S7 Connect` muestre conexión exitosa. Revisa direcciones de red, cortafuegos y estado del PLC.
* Valor incorrecto: Confirma que `DB Number`, `DB Byte Address` y `DB Data Type` coinciden con el diseño del DB en el PLC. Desplazamientos por bytes fuera de lugar o tipos incorrectos causan resultados inválidos.
* Cadena parcial o truncada: Asegúrate de que la longitud de la cadena en el PLC coincide con la esperada. Si aparece cortada, revisa la longitud configurada en el DB del PLC.
* Lecturas intermitentes o advertencias de servidor ocupado: Si el PLC está atendiendo muchas solicitudes, prueba usar `Sync` para acceso coordinado o reduce la frecuencia de lecturas.
* Resultado booleano inesperado: Algunas lecturas booleanas devuelven grupos de bits — trátalos como colecciones de valores booleanos cuando corresponda.

Si los problemas persisten, añade un bloque `Debug Input` para ver los valores crudos devueltos y envía los resultados a bloques de registro o exportación para capturar casos fallidos y analizarlos.
