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.

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.
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ámetro | Obligatorio | Tipo de datos | Rango de valores | Valor predeterminado | Descripción |
|---|---|---|---|---|---|
| networkInterface | No | STRING | "eth0" | Nombre de la interfaz de red para la captura de paquetes | |
| pollingIntervalMs | No | INT | 100 – 2000 | 1000 | Intervalo del temporizador en milisegundos |
| trafficFilter | No1 | ARRAY | Lista de pares puerto/dirección multicast (recomendado) | ||
| port | No1 | INT | 0 – 65535 | Obsoleto — puerto UDP; utilice trafficFilter | |
| groupAddress | No1 | STRING | Obsoleto — dirección multicast IPv4; utilice trafficFilter | ||
| fmd | No | STRING | Nombre de la instancia del módulo | Nombre del dispatcher estándar al que se transmiten los datos útiles | |
| dispatchers | No | ARRAY | Dispatchers 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ámetro | Obligatorio | Tipo de datos | Valor predeterminado | Descripción |
|---|---|---|---|---|
| port | SÍ | INT | Puerto UDP de destino del flujo multicast TRDP (estándar conforme a IEC 61375-2-3: 17224) | |
| groupAddress | SÍ | STRING | Dirección multicast IPv4 del flujo TRDP | |
| joinGroup | No | BOOL | false | Unirse 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
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 dispatchernamede 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ámetro | Obligatorio | Tipo de datos | Valor predeterminado | Descripción |
|---|---|---|---|---|
| name | SÍ | STRING | Nombre del dispatcher; se introduce en el parámetro fmd del fmproducer correspondiente | |
| sourceIp | SÍ | STRING | Dirección IPv4 del remitente de los telegramas que se dirigen a este dispatcher |
- 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
sourceIpfigura 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
nameo con unasourceIpno 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).

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ón | Valor |
|---|---|
| Autores | optiMEAS GmbH |
| desde smartCORE | 2.11 |
| Tipo de módulo | Producer (Dispatcher) |
| Dependencias | fmproducer |