Saltar al contenido principal

Módulo TRDP "trdp"

Descripción​

El módulo trdp recibe telegramas del Train Real-time Data Protocol (TRDP) conforme a IEC 61375-2-3 a través de una interfaz de red. Procesa exclusivamente mensajes del tipo Process Data (PD) y pone sus datos útiles a disposición del módulo fmproducer, a través del Fast Message Dispatcher (FMD), para su posterior extracción de señales.

El módulo funciona exclusivamente como suscriptor TRDP (Sink): lee de forma pasiva los datos de proceso cíclicos y no envía por sí mismo ningún telegrama TRDP. De este modo, el tráfico de datos entre las unidades de control del vehículo (p. ej., controles de puertas, aire acondicionado, controles de tracción) puede utilizarse para la supervisión del estado y el diagnóstico sin intervenir en la comunicación del vehículo.

La captura de paquetes se realiza directamente en el nivel de capa 2 mediante PcapPlusPlus, de modo que los grupos multicast TRDP pueden escucharse en cualquier interfaz de red. Del encabezado TRDP se extrae la ComID, que se transfiere al dispatcher como messageKey. A través de ella, el fmproducer puede suscribirse de forma selectiva a mensajes de determinadas ComID y extraer señales individuales del área de datos útiles.

Flujo de datos desde la red del vehículo, a través del módulo trdp, hasta los canales del smartCORE

El puerto UDP estándar para TRDP Process Data (PD) es 17224 (conforme a IEC 61375-2-3).

Conexión a la red​

La vía estándar es la conexión directa del smartCORE a la red del vehículo o del tren, en la que el módulo recibe los telegramas TRDP como un participante de red normal. Si, en cambio, se desea observar una conexión individual físicamente sin repercusiones y con aislamiento galvánico, sin que el propio smartCORE aparezca como participante de la red, opcionalmente puede intercalarse un TAP Ethernet smartIO. En ambos casos, el módulo trdp procesa de forma idéntica los telegramas leídos.

nota

Los offsets de bits en el fmproducer deben indicarse en relación con el inicio de los datos útiles (tras el encabezado TRDP de 40 bytes), no con el inicio del telegrama completo.

Interfaces y protocolos utilizados​

  • Train Real-time Data Protocol (TRDP), IEC 61375-2-3 — Process Data (PD)
  • Fast Message Dispatching

Configuración JSON​

En la sección siguiente se describe la configuración JSON del módulo.

Ejemplo de configuración (mínima)​

{
"module": "TRDP",
"factory": "trdp",
"config": {
"networkInterface": "eth0",
"trafficFilter": [
{ "port": 17224, "groupAddress": "239.255.0.1" }
]
}
}

Ejemplo de configuración (con fmproducer, varios grupos multicast)​

El módulo trdp actúa como fuente de datos para el fmproducer. En el parámetro fmd del fmproducer se introduce el nombre del dispatcher al que suministra el módulo TRDP. Si no se indica otra cosa, este es el nombre de la instancia del módulo TRDP (aquí: "TRDP"). Como messageKey se utiliza en cada caso la ComID del encabezado TRDP.

{
"plugins": ["trdp", "fmproducer"],
"modules": [
{
"module": "TRDP",
"factory": "trdp",
"config": {
"networkInterface": "eth0",
"trafficFilter": [
{ "port": 17224, "groupAddress": "192.168.0.6", "joinGroup": true },
{ "port": 17224, "groupAddress": "192.168.0.5" }
]
}
},
{
"module": "fmproducer_trdp",
"factory": "fmproducer",
"config": {
"fmd": "TRDP",
"byteOrder": "BigEndian",
"channels": [
{
"name": "trdp.speed",
"messageKey": 45056,
"bitOffset": 144,
"bitLength": 16,
"imageType": "unsigned",
"scale": 1.0,
"offset": 0.0,
"physicalUnit": "km/h"
},
{
"name": "trdp.speed_scaled",
"messageKey": 45056,
"bitOffset": 144,
"bitLength": 16,
"imageType": "unsigned",
"scale": 0.1,
"offset": 2.2,
"physicalUnit": "km/h"
}
]
}
}
]
}

Parámetros globales del módulo​

Nombre del parámetroObligatorioTipo de datosRango de valoresValor predeterminadoDescripción
networkInterfaceNoSTRING"eth0"Nombre de la interfaz de red para la captura de paquetes
pollingIntervalMsNoINT100 – 20001000Intervalo del temporizador en milisegundos
trafficFilterNo1ARRAYLista de pares puerto/dirección multicast (recomendado)
portNo1INT0 – 65535Obsoleto — puerto UDP; utilice trafficFilter
groupAddressNo1STRINGObsoleto — dirección multicast IPv4; utilice trafficFilter
fmdNoSTRINGNombre de la instancia del móduloNombre del dispatcher estándar al que se transmiten los datos útiles
dispatchersNoARRAYDispatchers adicionales, seleccionados según la dirección IP del remitente (a partir de smartCORE 2.12, véase más abajo)

Configuración de una entrada de trafficFilter​

Nombre del parámetroObligatorioTipo de datosValor predeterminadoDescripción
portSÍINTPuerto UDP de destino del flujo multicast TRDP (estándar conforme a IEC 61375-2-3: 17224)
groupAddressSÍSTRINGDirección multicast IPv4 del flujo TRDP
joinGroupNoBOOLfalseUnirse activamente al grupo multicast mediante IGMP (véase más abajo)

De forma predeterminada, el módulo filtra únicamente el tráfico que de todos modos llega a la interfaz de red; no envía ningún IGMP join por sí mismo. Esto es suficiente si el switch inunda el tráfico multicast o si la interfaz lee a través de un puerto espejo (mirror port) o un TAP Ethernet. En cambio, si el switch está configurado con IGMP snooping, solo reenvía el grupo multicast a las interfaces que se hayan unido activamente a él; en ese caso, establezca joinGroup: true en la entrada trafficFilter correspondiente para que el smartCORE se registre como receptor mediante IGMP.

Dispatchers según la dirección del remitente​

información

La compatibilidad con dispatchers solo está disponible oficialmente a partir de smartCORE 2.12.

De forma predeterminada, el módulo reenvía todos los telegramas recibidos a un único dispatcher: el dispatcher estándar, cuyo nombre corresponde al nombre de la instancia del módulo o al valor de fmd. Si varias unidades de control utilizan las mismas ComID, sus telegramas ya no pueden distinguirse allí.

Con dispatchers se configuran dispatchers adicionales con nombre, asignados cada uno a una dirección IP de remitente. Cada telegrama se entrega exactamente a un dispatcher, según la dirección IPv4 del remitente de su paquete UDP:

  • Si la dirección del remitente coincide con una entrada sourceIp, el telegrama se dirige al dispatcher name de esa entrada.
  • Todos los demás telegramas se dirigen, como hasta ahora, al dispatcher estándar.

Para cada dispatcher se configura un módulo fmproducer propio, cuyo parámetro fmd contiene el nombre del dispatcher. De este modo, las mismas ComID de distintas unidades de control pueden asignarse a canales independientes sin tener que crear una instancia propia del módulo trdp para cada unidad de control.

Configuración de una entrada de dispatchers​

Nombre del parámetroObligatorioTipo de datosValor predeterminadoDescripción
nameSÍSTRINGNombre del dispatcher; se introduce en el parámetro fmd del fmproducer correspondiente
sourceIpSÍSTRINGDirección IPv4 del remitente de los telegramas que se dirigen a este dispatcher
nota
  • Un telegrama se entrega siempre a un único dispatcher. Un fmproducer conectado al dispatcher estándar ya no recibe los telegramas de los remitentes incluidos en dispatchers.
  • Si la misma sourceIp figura varias veces, se aplica la primera entrada coincidente.
  • Varias entradas pueden utilizar el mismo name; los telegramas de estos remitentes confluyen entonces en el mismo dispatcher.
  • Las entradas sin name o con una sourceIp no válida se omiten con una advertencia en el registro.
  • Solo se evalúan direcciones de remitente IPv4.

Ejemplo de configuración (dos unidades de control con las mismas ComID)​

Dos unidades de control envían la velocidad, cada una con la ComID 45056. Mediante dispatchers se separan sus telegramas y dos módulos fmproducer los asignan a canales propios.

{
"plugins": ["trdp", "fmproducer"],
"modules": [
{
"module": "TRDP",
"factory": "trdp",
"config": {
"networkInterface": "eth0",
"trafficFilter": [
{ "port": 17224, "groupAddress": "239.255.0.1" }
],
"dispatchers": [
{ "name": "TRDP_ECU1", "sourceIp": "192.168.1.23" },
{ "name": "TRDP_ECU2", "sourceIp": "192.168.2.23" }
]
}
},
{
"module": "fmproducer_ecu1",
"factory": "fmproducer",
"config": {
"fmd": "TRDP_ECU1",
"byteOrder": "BigEndian",
"channels": [
{
"name": "trdp.ecu1.speed",
"messageKey": 45056,
"bitOffset": 144,
"bitLength": 16,
"imageType": "unsigned",
"physicalUnit": "km/h"
}
]
}
},
{
"module": "fmproducer_ecu2",
"factory": "fmproducer",
"config": {
"fmd": "TRDP_ECU2",
"byteOrder": "BigEndian",
"channels": [
{
"name": "trdp.ecu2.speed",
"messageKey": 45056,
"bitOffset": 144,
"bitLength": 16,
"imageType": "unsigned",
"physicalUnit": "km/h"
}
]
}
}
]
}

Los telegramas de otros remitentes siguen dirigiéndose al dispatcher estándar "TRDP" y pueden ser evaluados por otro fmproducer con "fmd": "TRDP".

Notas sobre la configuración del fmproducer​

Los telegramas TRDP se transmiten siempre en formato Big-Endian. Por ello, en el fmproducer correspondiente debe establecerse globalmente "byteOrder": "BigEndian".

La ComID del encabezado TRDP se utiliza como messageKey en el fmproducer. Los offsets de bits (bitOffset) se refieren al inicio del área de datos útiles (tras el encabezado TRDP de 40 bytes).

Decodificación de la ComID: del telegrama TRDP, pasando por la ComID como messageKey, a los canales con nombre en el fmproducer

Puede encontrar más información sobre la extracción de canales (imageType, bitOffset, bitLength, addressSpec, etc.) en la documentación del fmproducer.

Información del módulo​

InformaciónValor
AutoresoptiMEAS GmbH
desde smartCORE2.11
Tipo de móduloProducer (Dispatcher)
Dependenciasfmproducer

Footnotes​

  1. Si se omiten trafficFilter, port y groupAddress, el módulo captura todo el tráfico de red de la interfaz y reenvía todos los paquetes al analizador. Esto aumenta considerablemente la carga de procesamiento y solo debe utilizarse con fines de diagnóstico. Para el funcionamiento productivo se recomienda indicar al menos una entrada de trafficFilter. ↩ ↩2 ↩3