Ir a la página principal de PHANTOM®
El Gateway versión 2 del sistema de sensores inalámbricos ERBESSD INSTRUMENTS® PHANTOM®, y el monitor cableado DEFIANT™, incorporan un servidor OPC UA nativo. Cada sensor aparece como un objeto en el espacio de direcciones del servidor, con sus mediciones en vivo como variables OPC UA que cualquier cliente estándar —Ignition, Kepware, WinCC, FactoryTalk, Node-RED, UAExpert, opcua-asyncio— puede explorar, leer, suscribir y, en unos pocos puntos de control, escribir.
Por la forma en que funciona el protocolo OPC UA, la forma de onda completa y la FFT no están disponibles por OPC UA. Usa la integración por MQTT para los datos de forma de onda.
Puedes usar el servidor OPC UA al mismo tiempo que el resto de los protocolos que soporta el Gateway, incluidos EI-Analytic™, EI Monitor, MQTT y Modbus.
Algunas de las opciones descritas aquí se agregaron en versiones posteriores del gateway. Si no encuentras alguna en tu consola de administración, actualiza el gateway al firmware más reciente.
Resumen de capacidades del servidor
| Elemento | Qué ofrece el gateway |
|---|---|
| Rol | Servidor OPC UA. Los clientes se conectan hacia el gateway. |
| Transporte | OPC UA binario sobre TCP (opc.tcp://). No se ofrece HTTPS ni OPC UA PubSub. |
| Puerto | 4334 (fijo). |
| Ruta del endpoint | /UA/PhantomGW |
| Modelo de información | Nodeset base de OPC UA 1.05, compatible hacia atrás con clientes 1.04 y 1.03. Sin especificación complementaria (sin perfiles DI, ADI, Machinery ni MTConnect). |
| Servicios | Browse, Read, Write y Subscribe / MonitoredItems (acceso a datos). |
| Políticas de seguridad | None, Basic128Rsa15, Basic256Sha256, Aes128_Sha256_RsaOaep, Aes256_Sha256_RsaPss. |
| Modos de seguridad de mensaje | None, Sign, SignAndEncrypt. |
| Modo endurecido | Restringe el servidor a Aes128_Sha256_RsaOaep y Aes256_Sha256_RsaPss únicamente con SignAndEncrypt. |
| Autenticación de usuario | Anónima (se puede deshabilitar) y usuario + contraseña. |
| Muestreo | minimumSamplingInterval de 1000 ms en todas las variables. |
| Acceso a histórico | No soportado. Usa MQTT o EI-Analytic™ para el histórico. |
| Formas de onda / FFT | No se exponen por OPC UA. |
| Métodos | Ninguno. Las acciones se exponen como variables booleanas escribibles. |
Cómo habilitar el servidor OPC
Para habilitar el servidor OPC UA, en la consola de administración del Gateway 2 actívalo en la página de configuración General marcando la casilla “Enable OPC UA Server”. Haz clic en guardar y el Gateway se reiniciará. Cuando termine de reiniciarse, el servidor OPC estará listo.

URL del endpoint
Una vez habilitado el servidor OPC UA, puedes acceder a él con cualquier cliente OPC UA usando:
opc.tcp://192.168.1.2:4334/UA/PhantomGW
donde 192.168.1.2 se reemplaza por la dirección IP de tu gateway. Para una primera conexión usa modo de seguridad None y política de seguridad None.
El servidor publica sus endpoints bajo el nombre de host PhantomGW, y además anuncia estos nombres alternativos para que un cliente que reescribe la URL del endpoint tras el descubrimiento pueda seguir alcanzándolo:
PhantomGW-<serieDelGateway>- la dirección actual de
eth0del gateway, o la dewlan0cuando no hay dirección cableada
Sustituir el nombre de host
Algunos clientes rechazan un endpoint cuyo nombre de host no pueden resolver. Marca Override OPC hostname e ingresa un Host name —un nombre DNS o la dirección IP fija del gateway— para que el servidor anuncie ese nombre en lugar de PhantomGW.
Perfiles de seguridad
Políticas de seguridad y modos de mensaje
Por defecto el servidor ofrece el conjunto completo, para que cualquier cliente pueda conectarse sin importar lo que soporte:
| Política de seguridad | Modos de seguridad de mensaje disponibles |
|---|---|
None |
None |
Basic128Rsa15 |
Sign, SignAndEncrypt |
Basic256Sha256 |
Sign, SignAndEncrypt |
Aes128_Sha256_RsaOaep |
Sign, SignAndEncrypt |
Aes256_Sha256_RsaPss |
Sign, SignAndEncrypt |
Deshabilitar la comunicación sin cifrar de OPC UA
Marcar Disable OPC UA unencrypted communication reduce el servidor únicamente a las políticas modernas:
| Política de seguridad | Modo de seguridad de mensaje |
|---|---|
Aes128_Sha256_RsaOaep |
SignAndEncrypt |
Aes256_Sha256_RsaPss |
SignAndEncrypt |
None, Basic128Rsa15 y Basic256Sha256 quedan retiradas, y los modos None y solo Sign dejan de ofrecerse. Esta es la configuración recomendada para producción. Basic128Rsa15 y Basic256Sha256 están obsoletas según la OPC Foundation; dejarlas habilitadas solo sirve para clientes antiguos que no pueden negociar las políticas AES.
Verifica que tu cliente soporte
Aes128_Sha256_RsaOaepoAes256_Sha256_RsaPssantes de habilitar esta opción; de lo contrario dejará de poder conectarse.
Autenticación de usuarios
De fábrica el servidor acepta sesiones anónimas. Puedes restringirlo desde la misma página de configuración OPC:
| Opción | Efecto |
|---|---|
| Disable OPC UA Anonymous login | Rechaza las sesiones anónimas. Todo cliente debe presentar usuario y contraseña. |
| Add user | Agrega un par usuario + contraseña a la lista de usuarios del servidor. Agrega los que necesites; cada uno puede quitarse. |
| Export only paired sensors | Limita el espacio de direcciones a los sensores emparejados en lugar de todos los que ve el gateway. |
Los usuarios se definen por gateway. Combina Disable OPC UA Anonymous login con Disable OPC UA unencrypted communication para que las credenciales nunca viajen por un canal sin cifrar.
Espacio de direcciones
El servidor OPC UA está organizado en una estructura de árbol. Bajo la carpeta raíz hay una carpeta Objects, y dentro de ella se muestran todos los números de serie de los sensores. Bajo cada número de serie hay distintas variables según el tipo de sensor.

Todos los nodos viven en el índice de namespace 1 y usan NodeId de tipo cadena.
Root
└── Objects
├── 40217 ← sensor inalámbrico, browse name = serie del sensor
│ ├── friendlyName (String)
│ ├── isPaired (Boolean)
│ ├── type (UInt16)
│ ├── version (UInt16)
│ ├── battery (Double)
│ ├── batteryType (UInt32)
│ ├── temperature (Double)
│ ├── rms (Double[3])
│ ├── rms_element0..2 (Double)
│ ├── arms (Double[3])
│ ├── arms_element0..2 (Double)
│ ├── sensorActions
│ │ ├── triggerCollection (Boolean, escribible)
│ │ └── triggerStateUpdate (Boolean, escribible)
│ └── extendedMetrics (solo sensores triaxiales)
│ ├── 0 ← eje X
│ ├── 1 ← eje Y
│ └── 2 ← eje Z
└── WiredCH1 ← canal cableado del DEFIANT™
├── accel_rms (Double)
├── velocity_rms (Double)
└── …
Esquema de NodeId
Cada nodo tiene un NodeId de cadena determinista, así que puedes direccionar un tag directamente sin explorar el árbol:
| Nodo | NodeId |
|---|---|
| Objeto del sensor | ns=1;s=ph<phantomCode> |
| Variable del sensor | ns=1;s=ph<phantomCode>-<browseName> |
| Elemento de arreglo | ns=1;s=ph<phantomCode>-<browseName>_element<índice> |
| Nombre amigable | ns=1;s=ph<phantomCode>-friendlyName |
| Estado de emparejamiento | ns=1;s=ph<phantomCode>-isPaired |
| Carpeta de acciones | ns=1;s=ph<phantomCode>-actions |
| Disparar recolección | ns=1;s=ph<phantomCode>-actions-triggerCollection |
| Disparar actualización de estado | ns=1;s=ph<phantomCode>-actions-triggerStateUpdate |
| Carpeta de métricas extendidas | ns=1;s=ph<phantomCode>-ext |
| Eje de métricas extendidas | ns=1;s=ph<phantomCode>-ext-ch<eje> |
| Métrica extendida | ns=1;s=ph<phantomCode>-ext-ch<eje>-<métrica> |
| Objeto de canal cableado | ns=1;s=wired<n> |
| Variable de canal cableado | ns=1;s=wired<n>-<browseName> |
Para el sensor 40217, el RMS de velocidad del eje Z es ns=1;s=ph40217-rms_element2, y el arreglo completo del RMS de velocidad es ns=1;s=ph40217-rms.
Los arreglos se publican dos veces. Cada variable de arreglo (
rms,arms,tcTemperature,voltage,instCurrent,dryContactsState, …) se expone tanto como un nodo de arreglo como un nodo escalar por elemento, con el sufijo_element0,_element1, … Usa el nodo de arreglo si tu cliente maneja arreglos; usa los nodos_elementNcuando espere un tag por valor, que es lo que asumen la mayoría de los exploradores de tags de PLC y SCADA.
Marcas de tiempo y muestreo
Cada variable de medición reporta un sourceTimestamp y un serverTimestamp fijados al momento en que el gateway recibió la última actualización de ese sensor. Comparar esa marca de tiempo con la hora actual es la forma confiable de detectar un sensor que dejó de reportar: el valor simplemente conserva su última lectura.
Todas las variables declaran un minimumSamplingInterval de 1000 ms. Pedir un intervalo de publicación más rápido en una suscripción no producirá datos nuevos: los sensores inalámbricos anuncian en su propio intervalo configurado, normalmente de segundos a minutos.
Qué sensores aparecen
Por defecto se exportan todos los sensores que ve el gateway, estén emparejados o no. Marca Export only paired sensors para limitar el espacio de direcciones a los sensores emparejados. Los nodos se agregan y se quitan en vivo conforme los sensores se emparejan, se desemparejan, se descubren o se olvidan; no hace falta reiniciar el gateway. El booleano isPaired permite que un cliente que exporta todo filtre por su cuenta.
Variables
La variable type contiene el tipo de sensor según la siguiente tabla:
| Código de sensor | Tipo de sensor |
|---|---|
| 3 | Acelerómetro triaxial (KX222, rango alto) |
| 5 | Acelerómetro triaxial (KX122, rango bajo) |
| 6 | Acelerómetro triaxial (KX134) |
| 7 | Triaxial universal (vibración + termopar + corriente) |
| 8 | Triaxial PHANTOM® Gen 4, rango alto |
| 9 | Triaxial PHANTOM® Gen 4, rango bajo |
| 10 | Cámara termográfica |
| 12 | Repetidor |
| 14 | PHANTOM® MAX, rango alto |
| 15 | PHANTOM® MAX, rango bajo |
| 20 | Termopar |
| 21 | Termopar v2 |
| 22 | Termopar v3 |
| 25 | Temperatura infrarroja |
| 26 | Entrada 4-20 mA |
| 27 | Voltímetro (0-10 VCD) |
| 30 | Módulo de corriente v1 |
| 31 | Entradas de contacto seco |
| 32 | Módulo de corriente v2 (4 canales) |
| 40 | Velocidad / RPM |
| 50 | Distancia |
| 60 | Nodo de propósito general (GP) |
| 202 | Display |
Variables comunes a todos los sensores
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
friendlyName |
String |
Nombre asignado en la consola. Si no hay, se usa el número de serie. |
isPaired |
Boolean |
true cuando el sensor está emparejado con este gateway. |
type |
UInt16 |
Tipo de sensor según la tabla anterior. |
version |
UInt16 |
Versión del firmware del sensor. |
battery |
Double |
Voltaje de la batería en volts. |
batteryType |
UInt32 |
Tipo de batería. Ver la tabla de baterías más abajo. |
temperature |
Double |
Temperatura interna del sensor en grados Celsius. |
Tipos de batería:
batteryType |
Batería |
|---|---|
| 1 | ⅙ D |
| 2 | AAA |
| 3 | CR2032 |
| 4 | CR2477 |
| 5 | AA |
| 6 | D |
Acelerómetro triaxial (3, 5, 6, 8 y 9)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
rms |
Double[3] |
RMS de velocidad en mm/s correspondiente a cada eje (X, Y, Z). |
arms |
Double[3] |
RMS de aceleración en g correspondiente a cada eje (X, Y, Z). |
PHANTOM® MAX (14 y 15)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
rms |
Double[3] |
RMS de velocidad en mm/s por eje. |
arms |
Double[3] |
RMS de aceleración en g por eje. |
magneticspeed |
Double |
Velocidad de giro obtenida magnéticamente, en Hz. |
Triaxial universal (7)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
rms |
Double[3] |
RMS de velocidad en mm/s por eje. |
tcTemperature |
Double[] |
Temperatura del termopar por canal, en grados Celsius. |
instCurrent |
Double[] |
Corriente instantánea por canal, en amperes. |
averageCurrent |
Double[] |
Corriente promedio del periodo de actualización, por canal. |
minCurrent |
Double[] |
Corriente mínima del periodo de actualización, por canal. |
maxCurrent |
Double[] |
Corriente máxima del periodo de actualización, por canal. |
accumulatedCurrent |
Double[] |
Corriente acumulada desde el último reinicio, por canal. |
accumulatedStart |
UInt32 |
Inicio de la ventana de acumulación, en segundos desde 1970. |
accumulatedEnd |
UInt32 |
Fin de la ventana de acumulación, en segundos desde 1970. |
Cámara termográfica (10)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
avgImageTemperature |
Double |
Temperatura promedio de la imagen, en grados Celsius. |
La imagen térmica en sí no se publica por OPC UA. Usa MQTT.
Temperatura por termopar (20, 21 y 22)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
tcTemperature |
Double[] |
Temperatura de cada canal de termopar, en grados Celsius. |
Temperatura infrarroja (25)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
ambientTemperature |
Double |
Temperatura ambiente medida por el sensor infrarrojo, en grados Celsius. |
objectTemperature |
Double |
Temperatura del objeto al que apunta el sensor, en grados Celsius. |
emissivity |
Double |
Emisividad configurada para el objeto medido. |
Sensor 4-20 mA (26) y voltímetro (27)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
voltage |
Double[] |
Voltaje medido por canal, en volts. |
Módulo de corriente (30 y 32)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
instCurrent |
Double[] |
Corriente instantánea de cada uno de los cuatro canales del sensor, en amperes. |
averageCurrent |
Double[] |
Corriente promedio del periodo de actualización por canal, en amperes. |
minCurrent |
Double[] |
Corriente mínima del periodo de actualización por canal, en amperes. |
maxCurrent |
Double[] |
Corriente máxima del periodo de actualización por canal, en amperes. |
accumulatedCurrent |
Double[] |
Corriente acumulada desde el último reinicio, por canal. |
accumulatedStart |
UInt32 |
Inicio de la ventana de acumulación, en segundos desde 1970. |
accumulatedEnd |
UInt32 |
Fin de la ventana de acumulación, en segundos desde 1970. |
currentProbeType |
UInt16[] |
Tipo de sonda configurada en cada canal. |
currentOffsets |
Double[] |
Offset de calibración aplicado a cada canal. |
currentMultiplier |
Double[] |
Multiplicador de calibración aplicado a cada canal. |
Sensor de contactos secos (31)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
dryContactsState |
Boolean[] |
Estado de cada entrada. true significa contacto cerrado, false significa abierto. |
Sensor de velocidad (RPM) (40)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
rpm |
Double |
Velocidad actual en RPM. |
Distancia (50)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
distance |
UInt16 |
Distancia medida, en mm. |
Nodo de propósito general (60)
| Nombre de variable | Tipo de dato OPC UA | Descripción |
|---|---|---|
rms |
Double[] |
Valor RMS por eje. Velocidad en mm/s, o aceleración en g, según la configuración. |
Repetidor (12)
Solo se publican type y version.
Métricas extendidas (sensores triaxiales)
Cuando un sensor triaxial entrega una forma de onda completa, el gateway calcula estadísticas por eje a partir de ella y las publica bajo extendedMetrics, en subobjetos llamados 0 (X), 1 (Y) y 2 (Z):
| Métrica | Unidades | Descripción |
|---|---|---|
vrms |
mm/s | RMS de velocidad calculado desde la forma de onda (10-1000 Hz). |
arms |
g | RMS de aceleración en todo el espectro. |
apeak |
g | Pico de aceleración. |
acf |
— | Factor de cresta de aceleración (apeak / arms). |
highfreq |
g | RMS de aceleración en la banda de 5-10 kHz. |
maxfreq |
Hz | Frecuencia del pico espectral más alto. |
dcoffset |
g | Componente de CD de la señal. |
Estos nodos aparecen la primera vez que se recolecta una forma de onda de ese sensor, y sus marcas de tiempo reflejan la última forma de onda, no la última actualización de estado.
Acciones del sensor (variables escribibles)
Cada objeto de sensor incluye una carpeta sensorActions con variables booleanas escribibles. Escribir en una de ellas encola la acción correspondiente en el gateway; el valor que se lee de vuelta indica si hay una acción pendiente.
| Variable | Disponible en | Efecto al escribir |
|---|---|---|
triggerCollection |
Sensores triaxiales, GP y cámara termográfica | Solicita una forma de onda completa o una imagen térmica en el siguiente contacto. |
triggerStateUpdate |
Todos los sensores | Solicita una actualización de estado inmediata, en sensores que soportan la actualización forzada. |
Por ejemplo, escribir true en ns=1;s=ph40217-actions-triggerCollection dispara una recolección en el sensor 40217. La forma de onda resultante no se devuelve por OPC UA: se almacena y se reenvía a EI-Analytic™, EI Monitor y/o MQTT según tu configuración.
Canales cableados del DEFIANT™
En un DEFIANT™, cada canal cableado se agrega como un objeto llamado WiredCH1, WiredCH2, … con los valores globales calculados para ese canal como variables Double. El browse name del objeto y su NodeId empiezan en 1 (WiredCH1 es el primer canal, ns=1;s=wired1).
| Grupo | Browse names |
|---|---|
| Aceleración | accel_rms, accel_truepeak, accel_peaktopeak, accel_lowfreq, accel_medfreq, accel_highfreq, accel_kurtosis, accel_skewness |
| Velocidad | velocity_rms, velocity_truepeak, velocity_peaktopeak, velocity_lowfreq, velocity_medfreq, velocity_highfreq, velocity_kurtosis, velocity_skewness |
| Envolvente de aceleración | gE, ge_truepeak, ge_peaktopeak, ge_lowfreq, ge_medfreq, ge_highfreq, ge_kurtosis, ge_skewness |
| Desplazamiento | displacement_rms, displacement_truepeak, displacement_peaktopeak, displacement_offset |
| Velocidad de giro | rpm |
| Analógicas / discretas | voltage_discrete, voltage_average, discrete_value |
| Fase entre canales | phase_channel_1 … phase_channel_16 |
Conexión: ejemplos prácticos
UAExpert
- Server → Add → Custom Discovery → Double click to add server.
- Ingresa
opc.tcp://192.168.1.2:4334/UA/PhantomGW. - Expande el servidor descubierto y elige el endpoint: None / None para una primera prueba, o Aes256_Sha256_RsaPss / Sign & Encrypt en producción.
- Si deshabilitaste el acceso anónimo, entra a Authentication Settings → Username e ingresa las credenciales que creaste en la consola.
- Confía en el certificado del gateway cuando te lo pida, luego conéctate y explora Objects.
Python (opcua-asyncio)
import asyncio
from asyncua import Client
URL = "opc.tcp://192.168.1.2:4334/UA/PhantomGW"
async def main():
async with Client(url=URL) as client:
# Leer el arreglo completo del RMS de velocidad
rms = await client.get_node("ns=1;s=ph40217-rms").read_value()
print("RMS de velocidad x/y/z (mm/s):", rms)
# Leer un solo eje
rms_z = await client.get_node("ns=1;s=ph40217-rms_element2").read_value()
print("RMS de velocidad Z (mm/s):", rms_z)
# Leer el valor junto con su marca de tiempo de origen
dv = await client.get_node("ns=1;s=ph40217-temperature").read_data_value()
print("temperatura:", dv.Value.Value, "a las", dv.SourceTimestamp)
asyncio.run(main())
Con autenticación y cifrado habilitados:
client = Client(url=URL)
client.set_user("scada")
client.set_password("tu-contrasena")
await client.set_security_string(
"Aes256Sha256RsaPss,SignAndEncrypt,client-cert.der,client-key.pem"
)
Suscribirse en lugar de sondear
Como todas las variables declaran un intervalo mínimo de muestreo de 1000 ms, pide un intervalo de publicación de 1000 ms o más lento. Un intervalo más rápido se acepta pero no entrega datos adicionales.
class Handler:
def datachange_notification(self, node, value, data):
print(node, value, data.monitored_item.Value.SourceTimestamp)
sub = await client.create_subscription(1000, Handler())
await sub.subscribe_data_change(client.get_node("ns=1;s=ph40217-rms_element2"))
Solución de problemas
| Síntoma | Causa y solución |
|---|---|
| El cliente no descubre ningún endpoint | Confirma que el servidor esté habilitado y que el gateway se haya reiniciado; verifica que el puerto TCP 4334 sea alcanzable. |
| El descubrimiento funciona pero la conexión falla | El cliente está reescribiendo el endpoint a un nombre de host que no puede resolver. Habilita Override OPC hostname y pon un nombre resoluble o la IP del gateway. |
BadSecurityPolicyRejected o ningún endpoint compatible |
Disable OPC UA unencrypted communication está activo y tu cliente no soporta las políticas AES. Usa un cliente que las soporte, o desactiva la opción. |
BadIdentityTokenRejected |
El acceso anónimo está deshabilitado. Proporciona uno de los pares usuario/contraseña definidos en la consola. |
| Falta un sensor en el árbol | Export only paired sensors está activo y el sensor no está emparejado, o el gateway aún no lo ha visto. Revisa isPaired. |
| Los valores nunca cambian | El intervalo de actualización del sensor es mayor que tu periodo de sondeo, o el sensor dejó de reportar. Compara sourceTimestamp con la hora actual. |