Zum Hauptinhalt springen

TRDP Modul "trdp"

Beschreibung​

Das trdp Modul empfängt Telegramme des Train Real-time Data Protocol (TRDP) gemäß IEC 61375-2-3 über eine Netzwerkschnittstelle. Es verarbeitet ausschließlich Nachrichten vom Typ Process Data (PD) und stellt deren Nutzdaten über den Fast Message Dispatcher (FMD) dem fmproducer Modul zur weiteren Signalextraktion bereit.

Das Modul arbeitet ausschließlich als TRDP-Subscriber (Sink): Es liest die zyklischen Prozessdaten passiv mit und sendet selbst keine TRDP-Telegramme. Dadurch lässt sich der Datenverkehr zwischen Fahrzeug-Steuergeräten (z.B. Türsteuerungen, Klimaanlagen, Antriebssteuerungen) für Zustandsüberwachung und Diagnose nutzen, ohne in die Fahrzeugkommunikation einzugreifen.

Die Paketerfassung erfolgt direkt auf Schicht-2-Ebene mittels PcapPlusPlus, sodass TRDP-Multicast-Gruppen auf beliebigen Netzwerkinterfaces abgehört werden können. Aus dem TRDP-Header wird die ComID extrahiert und als messageKey an den Dispatcher übergeben. Der fmproducer kann darüber gezielt Nachrichten bestimmter ComIDs abonnieren und einzelne Signale aus dem Nutzdatenbereich extrahieren.

Datenfluss vom Fahrzeugnetzwerk über das trdp Modul bis zu den smartCORE-Kanälen

Der Standard-UDP-Port für TRDP Process Data (PD) ist 17224 (gemäß IEC 61375-2-3).

Netzwerkanbindung​

Der Standardweg ist der direkte Anschluss von smartCORE an das Fahrzeug- oder Zugnetzwerk, auf dem das Modul als regulärer Netzwerkteilnehmer die TRDP-Telegramme empfängt. Soll eine einzelne Verbindung stattdessen physikalisch rückwirkungsfrei und galvanisch getrennt beobachtet werden, ohne dass smartCORE selbst als Netzwerkteilnehmer in Erscheinung tritt, lässt sich optional ein smartIO Ethernet-TAP vorschalten. In beiden Fällen verarbeitet das trdp Modul die mitgelesenen Telegramme identisch.

hinweis

Die Bit-Offsets im fmproducer sind relativ zum Beginn der Nutzdaten (nach dem 40-Byte-TRDP-Header) anzugeben, nicht zum Beginn des gesamten Telegramms.

Verwendete Schnittstellen & Protokolle​

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

JSON-Konfiguration​

Im folgenden Abschnitt wird die JSON-Konfiguration des Moduls beschrieben.

Beispielkonfiguration (minimal)​

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

Beispielkonfiguration (mit fmproducer, mehrere Multicast-Gruppen)​

Das trdp Modul fungiert als Datenquelle für den fmproducer. Im fmd-Parameter des fmproducer wird der Name des Dispatchers eingetragen, an den das TRDP-Modul liefert. Ohne eigene Angabe ist das der Name der TRDP-Modulinstanz (hier: "TRDP"). Als messageKey dient jeweils die ComID aus dem TRDP-Header.

{
"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"
}
]
}
}
]
}

Globale Modulparameter​

ParameternameErforderlichDatentypWertebereichDefaultBeschreibung
networkInterfaceNeinSTRING"eth0"Name des Netzwerkinterfaces für die Paketerfassung
pollingIntervalMsNeinINT100 – 20001000Timer-Intervall in Millisekunden
trafficFilterNein1ARRAYListe von Port/Multicast-Adress-Paaren (empfohlen)
portNein1INT0 – 65535Veraltet — UDP-Port; bitte trafficFilter verwenden
groupAddressNein1STRINGVeraltet — IPv4-Multicast-Adresse; bitte trafficFilter verwenden
fmdNeinSTRINGName der ModulinstanzName des Standard-Dispatchers, an den die Nutzdaten weitergegeben werden
dispatchersNeinARRAYZusätzliche Dispatcher, ausgewählt nach der IP-Adresse des Absenders (ab smartCORE 2.12, siehe unten)

Konfiguration eines trafficFilter-Eintrags​

ParameternameErforderlichDatentypDefaultBeschreibung
portJAINTUDP-Zielport des TRDP-Multicast-Stroms (Standard gemäß IEC 61375-2-3: 17224)
groupAddressJASTRINGIPv4-Multicast-Adresse des TRDP-Stroms
joinGroupNeinBOOLfalseDer Multicast-Gruppe aktiv per IGMP beitreten (siehe unten)

Standardmäßig filtert das Modul lediglich den auf dem Netzwerkinterface ohnehin eingehenden Verkehr — es sendet selbst keinen IGMP-Join. Das reicht aus, wenn der Switch Multicast-Verkehr flutet oder das Interface über einen Mirror-Port/Ethernet-TAP mitliest. Ist der Switch dagegen mit IGMP-Snooping konfiguriert, leitet er die Multicast-Gruppe nur an Interfaces weiter, die ihr aktiv beigetreten sind — in diesem Fall joinGroup: true für den betreffenden trafficFilter-Eintrag setzen, damit smartCORE per IGMP als Empfänger angemeldet wird.

Dispatcher nach Absenderadresse​

info

Die Unterstützung für dispatchers ist erst ab smartCORE 2.12 offiziell verfügbar.

Standardmäßig gibt das Modul alle empfangenen Telegramme an einen einzigen Dispatcher weiter: den Standard-Dispatcher, dessen Name dem Modulinstanznamen bzw. dem Wert von fmd entspricht. Verwenden mehrere Steuergeräte dieselben ComIDs, lassen sich ihre Telegramme dort nicht mehr unterscheiden.

Mit dispatchers werden zusätzliche, benannte Dispatcher konfiguriert, die jeweils einer Absender-IP-Adresse zugeordnet sind. Jedes Telegramm wird anhand der IPv4-Absenderadresse seines UDP-Pakets genau einem Dispatcher zugestellt:

  • Stimmt die Absenderadresse mit einem sourceIp-Eintrag überein, geht das Telegramm an den Dispatcher name dieses Eintrags.
  • Alle übrigen Telegramme gehen wie bisher an den Standard-Dispatcher.

Für jeden Dispatcher wird ein eigenes fmproducer Modul konfiguriert, dessen fmd-Parameter den Dispatcher-Namen enthält. So lassen sich gleiche ComIDs verschiedener Steuergeräte auf getrennte Kanäle abbilden, ohne für jedes Steuergerät eine eigene trdp Modulinstanz anzulegen.

Konfiguration eines dispatchers-Eintrags​

ParameternameErforderlichDatentypDefaultBeschreibung
nameJASTRINGName des Dispatchers; wird im fmd-Parameter des zugehörigen fmproducer eingetragen
sourceIpJASTRINGIPv4-Absenderadresse der Telegramme, die an diesen Dispatcher gehen
hinweis
  • Ein Telegramm wird immer nur einem Dispatcher zugestellt. Ein fmproducer am Standard-Dispatcher erhält die Telegramme der in dispatchers aufgeführten Absender nicht mehr.
  • Ist dieselbe sourceIp mehrfach eingetragen, gilt der erste passende Eintrag.
  • Mehrere Einträge dürfen denselben name verwenden; die Telegramme dieser Absender laufen dann im selben Dispatcher zusammen.
  • Einträge ohne name oder mit ungültiger sourceIp werden mit einer Warnung im Log übersprungen.
  • Es werden nur IPv4-Absenderadressen ausgewertet.

Beispielkonfiguration (zwei Steuergeräte mit gleichen ComIDs)​

Zwei Steuergeräte senden die Geschwindigkeit jeweils unter der ComID 45056. Über dispatchers werden ihre Telegramme getrennt und von zwei fmproducer Modulen auf eigene Kanäle abgebildet.

{
"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"
}
]
}
}
]
}

Telegramme anderer Absender gehen weiterhin an den Standard-Dispatcher "TRDP" und können von einem weiteren fmproducer mit "fmd": "TRDP" ausgewertet werden.

Hinweise zur fmproducer-Konfiguration​

TRDP-Telegramme werden immer im Big-Endian-Format übertragen. Im zugehörigen fmproducer sollte daher "byteOrder": "BigEndian" global gesetzt werden.

Die ComID aus dem TRDP-Header dient als messageKey im fmproducer. Die Bit-Offsets (bitOffset) beziehen sich auf den Beginn des Nutzdatenbereichs (nach dem 40-Byte-TRDP-Header).

ComID-Decodierung: vom TRDP-Telegramm über die ComID als messageKey zu benannten Kanälen im fmproducer

Weiterführende Informationen zur Kanalextraktion (imageType, bitOffset, bitLength, addressSpec usw.) sind in der fmproducer-Dokumentation beschrieben.

Modul-Informationen​

InformationWert
AutorenoptiMEAS GmbH
seit smartCORE2.11
ModultypProducer (Dispatcher)
Abhängigkeitenfmproducer

Footnotes​

  1. Werden trafficFilter, port und groupAddress alle weggelassen, erfasst das Modul den gesamten Netzwerkverkehr auf dem Interface und leitet alle Pakete an den Parser weiter. Dies erhöht den Verarbeitungsaufwand erheblich und sollte nur zu Diagnosezwecken verwendet werden. Für den produktiven Betrieb wird die Angabe mindestens eines trafficFilter-Eintrags empfohlen. ↩ ↩2 ↩3