# Drivers

> Qué es un driver, dónde se listan los drivers y cómo se agrega uno a la estación, el driver fijo de un dispositivo, la tabla de todos los drivers que este producto conoce, qué documenta la página de cada driver, y la nota sobre los drivers que un paquete no trae.

Un **driver** es el protocolo con el que la estación habla con una familia de equipos: registros Modbus sobre TCP, un servidor OPC UA, un PLC Siemens. Cada dispositivo de la página Connector pertenece exactamente a un driver, y el driver decide qué campos de conexión muestra el dispositivo, cómo se direccionan sus tags, qué tipos de dato pueden llevar, si se pueden escribir, si el driver puede escanear en busca de equipos, y si la estación los sondea o el equipo le empuja los datos. Este grupo lleva una página por driver; esta página es lo que tienen en común.

## El registro {#the-registry}

El conjunto de drivers es fijo: viaja con la aplicación y no se puede ampliar desde la página. La carpeta **Drivers**, arriba del árbol de la columna Comunicación, abre el catálogo de los que trae esta instalación, cada uno con su descripción, su conteo de dispositivos, su estado de salud y **Agregar driver**, o **Abrir** y **Quitar el driver** una vez agregado; el catálogo y sus reglas están en [La lista de drivers y la página de un driver](connector-drivers).

Todo driver que trae el paquete está listo para usarse, sin ningún interruptor para encenderlo o apagarlo: la estación agrega los que usa. Bajo la carpeta Drivers, el árbol lista los drivers agregados, tengan algo debajo o no, así que la columna lleva lo que la estación está preparada para leer. Un driver se agrega con **Agregar driver** en su fila del catálogo o en el menú Nuevo… de la columna, y se quita con **Quitar el driver** en su fila del catálogo, en su propia barra o en su menú del clic derecho. Quitar no elimina nada: se rechaza mientras el driver tiene un dispositivo, una línea serie, un bróker o una carpeta, y un driver que tiene alguno de ellos siempre está agregado. Una estación nueva no tiene ningún driver agregado; una estación actualizada desde una versión anterior empieza con agregados los drivers que ya usa.

## El driver de un dispositivo es fijo {#the-driver-of-a-device-is-fixed}

Usted elige el driver cuando crea el dispositivo: en el menú Nuevo… de la columna el dispositivo se crea desde la entrada del propio driver, y Agregar dispositivo en la página de un driver crea bajo ese driver. De ahí en adelante, la tarjeta Dispositivo muestra el driver como texto de solo lectura. Para mover un dispositivo a otro protocolo, cree un dispositivo nuevo bajo el otro driver y elimine el anterior; la dirección cambia, así que hay que apuntar las referencias a los tags nuevos desde la tarjeta Usado por de cada tag.

## Todos los drivers {#every-driver}

Los drivers se agrupan por la familia de equipos a la que llegan: los mismos grupos, en el mismo orden, en que los listan el catálogo **Drivers** y la entrada **Agregar driver** del menú Nuevo… de la columna.

### Controladores {#plcs}

| Driver | Habla con |
| --- | --- |
| [Beckhoff ADS](driver-beckhoff-ads) | PLC Beckhoff TwinCAT sobre ADS/AMS. |
| [Mitsubishi MC](driver-mitsubishi) | PLC Mitsubishi con el driver MELSEC MC. |
| [Omron](driver-omron) | PLC Omron: los controladores CJ, CS y CP por dirección de memoria sobre FINS (UDP, TCP o Host Link en una línea serie), y los NJ, NX y NY por nombre de variable sobre EtherNet/IP. |
| [Rockwell EtherNet/IP](driver-rockwell) | PLC Allen-Bradley / Rockwell sobre EtherNet/IP (CIP). |
| [Siemens S7](driver-siemens-s7) | PLC Siemens S7 con el driver S7comm. |

### Protocolos industriales {#industrial-protocols}

| Driver | Habla con |
| --- | --- |
| [BACnet](driver-bacnet) | Equipos de automatización de edificios BACnet/IP. |
| [Generic serial and TCP](driver-generic-serial-tcp) | Equipos con un protocolo propio de texto o de bytes, como básculas y lectores de códigos de barras, sobre una línea serie, TCP o UDP. |
| [Modbus RTU](driver-modbus-rtu) | Registros Modbus sobre una línea serie (RS-485/232), en modo de transmisión RTU o ASCII. |
| [Modbus TCP](driver-modbus-tcp) | Registros Modbus sobre TCP/IP, en trama MBAP o como tramas RTU para un convertidor serie-Ethernet. Puerto 502 de forma predeterminada. |
| [MQTT](driver-mqtt) | Dispositivos que publican a través de un bróker MQTT externo, en MQTT simple o Sparkplug B. |
| [OCPP](driver-ocpp) | Puntos de recarga de vehículos eléctricos sobre OCPP (los puntos de recarga se conectan a esta estación). |
| [OPC DA](driver-opc-da) | Servidores OPC Data Access clásicos mediante COM/DCOM, a través de un proceso auxiliar de 32 bits propio. |
| [OPC UA](driver-opc-ua) | Cliente OPC Unified Architecture sobre opc.tcp. |
| [SNMP](driver-snmp) | Equipos de red que responden SNMP v1, v2c o v3, como no-breaks, PDU, switches y sensores de cuarto de equipos; con Redfish para los servidores, cubre el cuarto de equipos. |

### Instrumentos y adquisición {#instruments-and-acquisition}

| Driver | Habla con |
| --- | --- |
| [Fluke NetDAQ](driver-fluke-netdaq) | Equipos de adquisición de datos Fluke NetDAQ (2640A, 2645A) y 2680 Series (2680A, 2686A), configurados a partir de los tags y leídos con la biblioteca propia de Fluke en un proceso auxiliar de 32 bits. |
| [NI-DAQmx](driver-ni-daqmx) | Hardware de adquisición de datos de National Instruments (chasis cDAQ y sus módulos, dispositivos USB y PCI Express) a través del NI-DAQmx instalado en esta computadora, una muestra por lectura. |
| [SCPI instruments](driver-scpi) | Instrumentos de banco que hablan SCPI, como multímetros, fuentes de alimentación y cargas electrónicas, por TCP, por línea serie, o por USB y GPIB a través de VISA. |

### Inalámbricos {#wireless}

| Driver | Habla con |
| --- | --- |
| [LoRaWAN](driver-lorawan) | Sensores LoRaWAN y concentradores de radio a través del servidor de red Basics Station integrado. |
| [Matter](driver-matter) | Dispositivos Matter de casa inteligente (puesta en marcha por Bluetooth). |

### Web y API {#web-and-apis}

| Driver | Habla con |
| --- | --- |
| [AVEVA PI](driver-aveva-pi) | Puntos del PI System de AVEVA a través de la PI Web API, sobre HTTPS de forma predeterminada. |
| [HTTP](driver-http) | Endpoints HTTP y HTTPS genéricos sondeados como tags, con una credencial opcional. |
| [Redfish](driver-redfish) | API REST Redfish para hardware de servidor y de centro de datos. |

### Archivos y bases de datos {#files-and-databases}

| Driver | Habla con |
| --- | --- |
| [Database](driver-database) | Tablas de la base de datos de un sistema de la fábrica (SQL Server, PostgreSQL, MySQL y MariaDB, SQLite, o cualquier base de datos a través de su driver ODBC), cada tag leyendo una celda por su tabla, su columna y su fila o ejecutando una consulta propia; la celda o un comando propio del tag escritos donde un tag lo indica. |
| [File](driver-file) | Archivos que otro programa escribe en una carpeta local o de red (CSV y texto en columnas, texto libre, JSON, XML), leídos de uno en uno o desde una carpeta de entrada; líneas o archivos completos escritos para ese programa donde el dispositivo lo permite. |

### Pruebas {#test}

| Driver | Habla con |
| --- | --- |
| [Simulated](driver-simulated) | Señales sintéticas dentro de la aplicación, para probar sin hardware. |

El [servidor Modbus](connector-modbus-server) no está en esta tabla: no es un driver, sino la propia estación sirviendo sus tags y sus variables de Logic a PLC, HMI y sistemas de edificio por Modbus TCP, desde su propia fila bajo la carpeta Servidores.

## Qué tienen en común los drivers, y en qué se diferencian {#what-the-drivers-have-in-common-and-where-they-differ}

El Connector dibuja un solo editor para todos los drivers y deja que el driver decida qué partes aparecen. Esta tabla dice qué esperar antes de abrir la página de un driver:

| Driver | Campos de conexión en la página del dispositivo | Direccionamiento del tag | Intervalo de sondeo | Escrituras de tag | Descubrir |
| --- | --- | --- | --- | --- | --- |
| Simulated | ninguno | el nombre del tag, más la forma de la señal | sí | sí | sí (su catálogo) |
| Modbus TCP | Host o IP, Puerto, ID de unidad, Formato de trama (MBAP o RTU), Intervalo mínimo entre transacciones | tipado: clase y número de registro | sí | sí | sí (escaneo de host o CIDR) |
| Modbus RTU | Línea serie (fija; la línea define el modo de transmisión, RTU o ASCII), ID de unidad | tipado: clase y número de registro | sí | sí | sí (sondeo de ID de unidad en una línea) |
| OPC UA | Host o IP, Puerto, Ruta del recurso, Nombre de usuario, Contraseña | texto libre: Id de nodo | sí | sí | sí (dirección del servidor) |
| OPC DA | Host o IP, Servidor / Clave | texto libre: ID de elemento | sí | sí | sí (los servidores de una computadora) |
| Siemens S7 | Host o IP, Rack / Slot | tipado: área, DB, byte, bit | sí | sí | no |
| Rockwell EtherNet/IP | Host o IP, Slot | texto libre: Tag del controlador, más un desplazamiento | sí | sí | sí (difusión) |
| Beckhoff ADS | Host o IP, Puerto, IP local (AMS) | texto libre: Símbolo | sí | sí | no |
| Mitsubishi MC | Host o IP, Puerto | texto libre: Dirección del dispositivo | 1 s fijo | sí | no |
| BACnet | Host o IP, Puerto, Id del dispositivo | tipado: tipo de objeto e instancia | 1 s fijo | sí | sí (Who-Is) |
| OCPP | Identificador | tipado: número de conector; el nombre del tag termina en Meter, Status o Transaction | empujado por el punto de recarga | no (solo lectura) | sí (puntos de recarga conectados) |
| Redfish | Host o IP, Puerto, Nombre de usuario, Contraseña | texto libre: Ruta del recurso, más un puntero JSON | sí | sí | sí (dirección del servicio) |
| Matter | ID de nodo (solo lectura) | tipado: salida, clúster y atributo; los tags vienen del dispositivo | sí | sí (los valores que el driver sabe cambiar) | sí (nodos puestos en marcha, con los valores que publica cada uno) |
| LoRaWAN | Identificador (DevEUI), Servidor / Clave (clave de aplicación) | tipado: canal o desplazamiento, tipo LPP | empujado por el sensor | no (solo lectura) | no |
| AVEVA PI | Host o IP, Puerto, Ruta del recurso, Transporte, Nombre de usuario, Contraseña, Token de portador | texto libre: Ruta PI | sí | sí | sí (elemento AF después de la dirección del servicio) |
| HTTP | Host o IP, Puerto, Ruta del recurso | texto libre: Ruta | sí | sí | no |
| MQTT | Bróker (fijo; el bróker lleva el host, el puerto, el transporte y el inicio de sesión), Protocolo y, en Sparkplug B, los ID de grupo, de nodo de borde y de dispositivo | texto libre: Tópico, más una ruta del valor dentro de una carga útil JSON, o Métrica de Sparkplug B | entregado por el bróker | sí (en un tópico de comando, o con un comando Sparkplug B) | sí (escucha en un bróker) |
| Generic serial and TCP | Transporte (Cliente TCP o Escucha UDP), Host, Puerto, o la Línea serie (fija) en un dispositivo de línea; después las tarjetas Mensajes y Suma de verificación | tipado: modo de lectura, solicitud, filtro de mensajes y dónde está el valor en el mensaje | sí; un tag en escucha conserva lo que envía el equipo | sí (un mensaje de escritura; no por UDP) | no |
| Omron | Host o IP, Protocolo (FINS o Tags NJ/NX por nombre); por FINS, el Puerto y la tarjeta FINS (transporte, red, nodos, unidad, tiempo de espera de respuesta); en una línea serie, la Línea serie (fija), el ID de unidad (el número de unidad Host Link) y el tiempo de espera de respuesta | texto libre: Dirección de memoria (FINS) o Nombre de variable (NJ/NX) | sí | sí | sí (un sondeo FINS de un PLC, y una difusión para los controladores NJ/NX) |
| SCPI instruments | Transporte (TCP (socket LXI) o VISA), Host y Puerto o el Recurso VISA, o la Línea serie (fija) en un dispositivo de línea; después la tarjeta Instrumento (terminador, tiempo de espera de respuesta, confirmación de escritura, comandos de preparación) | texto libre: Consulta, más qué valor de una respuesta separada por comas, y un comando de escritura | sí | sí (un comando de escritura, confirmado por la cola de errores del instrumento) | sí (los instrumentos que lista VISA, y un sondeo TCP de un host) |
| NI-DAQmx | ninguno: en su lugar la tarjeta Dispositivo NI-DAQmx (Nombre del dispositivo, y el Producto que lee NI-DAQmx) | tipado: Canal físico y Medición, con el rango, el cableado, el termopar o los ajustes de contador de la medición | sí | sí (líneas de salida digital y salidas de tensión) | sí (todos los dispositivos que conoce NI MAX, con sus canales) |
| Fluke NetDAQ | Host o IP; luego la tarjeta Instrumento (Canal base, Velocidad de escaneo) | tipado: Punto (un canal analógico y su Función, una línea digital, un relé o el totalizador) | sí; el instrumento escanea al intervalo más corto entre los tags del dispositivo | sí (líneas digitales y relés, y el totalizador vuelto a cero) | no |
| SNMP | Host o IP, Puerto; después la tarjeta Agente SNMP (versión, community o usuario SNMPv3 y seguridad, tiempo de espera de respuesta, reintentos) | texto libre: OID, en números o por su nombre estándar | sí | sí (un SET que el agente acepta; un objeto estándar que su MIB declara de solo lectura sigue de solo lectura) | sí (un recorrido de los subárboles estándar de un agente) |
| File | ninguno: en su lugar la tarjeta Carpeta y archivo (Ruta de la carpeta, Nombre del archivo o el patrón de la carpeta de entrada, Leer de, Formato del archivo), y después las tarjetas Texto del archivo y Escritura | tipado: lo que lee el tag (un valor, el archivo completo o un dato del archivo) y, para un valor, una columna y una fila (CSV), una línea y sus caracteres (texto libre) o una ruta (JSON, XML) | sí | sí (en un dispositivo que permite la escritura: una línea agregada, el archivo completo reemplazado u otro archivo indicado) | sí (un archivo, el de un dispositivo o uno escrito) |
| Database | ninguno: en su lugar la tarjeta Base de datos (Tipo de base de datos, después Servidor, Puerto, Nombre de la instancia y Nombre de la base de datos, el Archivo de base de datos, o el Origen de datos o texto de conexión), después la tarjeta Inicio de sesión (Nombre de usuario y Contraseña, y en SQL Server el inicio de sesión de Windows y el Cifrado) | con campos: cómo lee el tag (una celda por Tabla, Columna del valor y Fila que leer, o el Texto de su consulta propia) | sí | sí (la celda que lee, o su comando de escritura propio) | sí (las tablas de la base de datos de un dispositivo) |

Cada driver reduce además la lista de **Tipo de dato** que ofrece un tag a lo que realmente sabe transportar; la lista exacta está en la página del driver. Donde la tabla dice "1 s fijo", el driver ignora el intervalo configurado, así que las páginas de Dispositivo y de Tag le esconden el campo Intervalo de sondeo. Donde dice "solo lectura", el campo Acceso ofrece únicamente Solo lectura y el campo de escritura no aparece nunca.

## Qué documenta la página de cada driver {#what-every-driver-page-documents}

Cada página de driver recorre las mismas secciones en el mismo orden: los campos de conexión que muestra la tarjeta Dispositivo y cómo arman el URI base; cómo se direcciona un tag (los campos tipados o el token de texto libre, y la dirección de bus de solo lectura que el panel muestra); los tipos de dato que se ofrecen; el descubrimiento, cuando el driver lo tiene; las escrituras, cuando el driver las acepta; y las particularidades del driver (credenciales, certificados, tiempos, un servidor de red que la estación levanta, el emparejamiento).

## Un driver que el paquete no trae {#a-driver-the-package-does-not-carry}

El Connector nunca lista ni ofrece un driver que el paquete en marcha no trae. Una configuración que llega con dispositivos así de todos modos (una copia de seguridad restaurada, una configuración de otra máquina) los conserva: el driver se queda en la lista, en el catálogo y bajo la carpeta Drivers, mientras esos dispositivos existan, su descripción dice "Este paquete no incluye el driver.", y la página del driver y todos los dispositivos que hay debajo llevan un aviso que dice lo mismo. Esos dispositivos se quedan sin conexión y conservan sus ajustes; se pueden eliminar, pero no copiar, y bajo ese driver no se puede arrancar ningún dispositivo nuevo ni ningún escaneo de descubrimiento.

Qué drivers trae un paquete se lee del registro de drivers de Connector, que existe solo una vez que Connector arrancó. Hasta entonces todos los drivers cuentan como presentes, así que el catálogo se asienta unos segundos después del arranque y luego se queda quieta durante la sesión, incluso mientras Connector se detiene y se vuelve a arrancar.

El código de un driver se carga una sola vez mientras la aplicación corre. Detener y arrancar la comunicación reconstruye los dispositivos en marcha y la lista de drivers a partir de esa misma carga, que es lo que mantiene plana la memoria de la estación a lo largo de un día de reinicios. La consecuencia es que reemplazar en el disco los archivos propios de un driver surte efecto solo después de reiniciar la aplicación misma.
