> 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/opc-ua-client.md).

# OPC UA Client

Este bloque de función establece y mantiene una conexión con un servidor OPC UA para que otros bloques de comunicación puedan leer o escribir en ese servidor. Proporciona campos simples para la dirección del servidor y credenciales opcionales, supervisa la salud de la conexión e intenta reconectarse automáticamente cuando es necesario.

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

`(none)`

Este bloque no requiere entradas para funcionar. Actúa como proveedor de comunicación para otros bloques.

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

`Client`\
Proporciona el objeto cliente OPC UA conectado que otros bloques de comunicación pueden usar para realizar operaciones de lectura/escritura.

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

`Username`\
Ingrese el nombre de usuario si el servidor OPC UA requiere autenticación. Dejar vacío para acceso anónimo.

`Password`\
Ingrese la contraseña asociada al nombre de usuario. Este campo oculta la entrada por privacidad.

`Server Address`\
Escriba la dirección del servidor como IP y puerto (por ejemplo 192.168.1.10:4840) o como una URL OPC UA completa (por ejemplo opc.tcp\://host:port). El bloque utilizará este valor para conectarse al servidor.

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

* Gestión automática de la conexión: el bloque se conecta cuando se establece la dirección y volverá a intentar la reconexión si la conexión se pierde o la dirección cambia.
* Soporte de autenticación: campos opcionales `Username` y `Password` para servidores seguros.
* Monitorización de la salud de la conexión: avisa o registra cuando el cliente no puede alcanzar el servidor.
* Desconexión limpia: libera la conexión cuando se elimina el bloque del espacio de trabajo para liberar recursos.

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

Cuando el escenario se ejecuta, este bloque usa el valor proporcionado en `Server Address` (y opcionalmente `Username`/`Password`) para abrir una conexión con el servidor OPC UA. Comprueba continuamente el estado de la conexión e intenta reconectarse automáticamente si hay una falla o si la dirección cambia. La conexión activa se expone a través de la salida `Client` para que otros bloques puedan realizar operaciones contra el servidor. Cuando se elimina el bloque, la conexión se cierra correctamente.

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

`OPC UA Read`\
Conecta este bloque a la salida `Client` para leer valores del servidor en tiempo de ejecución.

`OPC UA Write`\
Usa este bloque junto con la salida `Client` para escribir valores en el servidor.

`CSV Export`\
Registra valores leídos canalizando salidas hacia este bloque para guardar datos de series temporales y analizarlos después.

`SQL-DB Client Connect` + `SQL-DB Operations`\
Almacena valores históricos en una base de datos combinando el cliente OPC UA con una conexión a base de datos y bloques de escritura/consulta.

`MQTT Publish` / `MQTT Subscribe`\
Puentea datos OPC UA hacia/desde sistemas en la nube publicando lecturas en MQTT o suscribiéndote a temas de control para activar escrituras.

`REST API - Post` / `REST API - Get`\
Reenvía datos críticos o alertas a servicios web enviando solicitudes HTTP con datos OPC.

`Send Mail`\
Dispara alertas por correo (por ejemplo, ante pérdida de conexión o umbrales superados) alimentando salidas condicionales al bloque de correo.

`Debug Input`\
Utiliza este bloque para inspeccionar valores que provienen del servidor durante la configuración y la resolución de problemas.

## 📝 Uso rápido <a href="#usage" id="usage"></a>

1. Introduce la dirección del servidor en `Server Address` (IP:Port o URL OPC UA completa).
2. Si el servidor requiere autenticación, rellena `Username` y `Password`.
3. Ejecuta el escenario — el bloque se conectará y proporcionará la salida `Client` para que otros bloques de comunicación la utilicen.
4. Para detener y liberar recursos, elimina el bloque o borra la dirección; el bloque cerrará la conexión.

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

* Conexión falla o agota el tiempo de espera
  * Verifica que la dirección y el puerto del servidor sean correctos y accesibles desde la máquina que ejecuta el escenario.
  * Revisa reglas de firewall o red que puedan bloquear los puertos OPC UA.
  * Si el servidor usa un endpoint seguro, confirma credenciales y configuración de seguridad del servidor.
* Errores de autenticación
  * Asegúrate de que `Username` y `Password` sean correctos y de que el servidor permita el método de autenticación seleccionado.
* Desconexiones inesperadas o conexión inestable
  * Usa `Debug Input` con el bloque para registrar valores e identificar cuándo ocurren las desconexiones.
  * Considera enrutar lecturas importantes a `CSV Export` o a una base de datos (`SQL-DB Operations`) para persistencia.

Si los problemas persisten, consulta la documentación del servidor OPC UA y a tu administrador de red para confirmar endpoints, puertos y requisitos de seguridad del servidor.
