Manual de usuario/Seguridad
OPC UA
Conectar con un PLC y publicar las variables del runtime, con certificados y cuentas del proyecto.
3 min de lectura
abSCADA incluye un cliente OPC UA para leer y escribir en un PLC y un servidor OPC UA para ofrecer sus variables a otros programas. Ambos vienen incluidos en el ejecutable de Windows.
Conectar con un PLC
- En Conexiones → + Nueva conexión, selecciona OPC UA.
- Introduce el endpoint del equipo, por ejemplo
opc.tcp://127.0.0.1:4841/latolva, y el ciclo de lectura. - Mantén Basic256Sha256, firma y cifrado salvo que el equipo requiera otra política compatible. «Sin seguridad» queda para pruebas.
- Si el servidor pide credenciales, introduce el usuario y usa Contraseña… para guardar su contraseña.
- En el enlace de cada variable escribe su NodeId, por ejemplo
nsu=urn:latolva:plc;s=FV1.Temperatura.

La forma nsu=<URI>;s=<identificador> resuelve el índice del namespace al conectar. También se admite ns=2;s=<identificador>, pero ese índice puede cambiar al reconfigurar el servidor. Obtén los NodeId de la documentación o de un explorador OPC UA externo; Studio todavía no tiene explorador de nodos.
El cliente lee periódicamente: aún no utiliza suscripciones ni lecturas por lotes. Al escribir, consulta el tipo del nodo para enviar el tipo PLC correcto. En Siemens, OPC UA permite acceder a datos que el servidor de la CPU publique, incluidos DB optimizados; comprueba las capacidades y licencias de tu CPU.
Confiar en los certificados
El primer intento contra un servidor desconocido falla y guarda su certificado en Rechazados.
- Abre Proyecto → Certificados OPC UA….
- Compara la huella con la obtenida directamente del equipo o de su administrador.
- Confía en el certificado seleccionado. Si el PLC valida clientes, acepta también el certificado de abSCADA en el PLC.
- El runtime vuelve a intentar la conexión automáticamente.

Los certificados propios y sus claves viven en pki/own/; los aceptados, en pki/trusted/; los pendientes, en pki/rejected/. La identidad es urn:abscada:<carpeta del proyecto>:client o :server. Se reutiliza el certificado en los siguientes arranques. Cambiar el nombre de la carpeta cambia el URI y genera un certificado que los otros equipos deberán aceptar de nuevo. Copiar el proyecto conservando el nombre y su PKI conserva la identidad.
Al usar un proyecto antiguo, runtime/pki/ se mueve a pki/ si este último no existe. Si el certificado conservaba el URI basado en el PC, se sustituye por uno con la identidad del proyecto.
Publicar el runtime como servidor
En Proyecto → Servidor OPC UA… activa el servidor, el puerto y sus políticas. El puerto predeterminado es 4840; la cervecería usa 4850 para separarlo del PLC simulado.

Desde otro cliente, conecta a opc.tcp://<equipo>:<puerto>/abscada. Las variables aparecen en Objects/abSCADA, agrupadas por estructura. El namespace de datos es urn:abscada:<nombre del proyecto> y cada identificador de nodo es el nombre completo de la variable. Este namespace es distinto del URI de aplicación del certificado.
- Activa la seguridad y crea una cuenta con el permiso
opcuaen Usuarios y roles. - Acepta el certificado del cliente en abSCADA y el de abSCADA en el cliente.
- Para escribir, la cuenta necesita además
operatey la variable debe ser escribible. La orden pasa por la validación y auditoría del runtime; el valor publicado cambia cuando se observa el resultado. - El acceso anónimo solo existe si se habilita expresamente y siempre es de solo lectura. Con seguridad desactivada no se autentican cuentas.
- Una cuenta obligada a cambiar su contraseña debe hacerlo en el runtime antes de usar OPC UA.
Archivos y diagnóstico
opcua_server.json guarda la configuración del servidor. El usuario de una conexión está en connections.json, pero su contraseña se guarda aparte en secrets.json, codificada en base64, no cifrada. Protege la carpeta, sus copias y la clave privada de pki/own/.
Ante un fallo, comprueba endpoint y puerto, NodeId, política compatible, confianza en ambos extremos y permisos de la cuenta. Los valores con fallo de comunicación conservan el último dato con calidad bad. El servidor todavía no impone un límite configurable de sesiones.
Consulta el ejemplo de cervecería para probar ambos extremos sin un PLC físico.